From b34327e4f293210d02e2598f7842f3720f59f961 Mon Sep 17 00:00:00 2001
From: dh_heyart <pheyart@dh-software.de>
Date: Do, 02 Jul 2026 17:39:52 +0200
Subject: [PATCH] new build of client, removed config folder since theme.json now is part of the configuration json (layout1.json and layout2.json)

---
 /dev/null                                |    1 
 client/fv.DeOhu3H1.js                    |    3 
 configurations/14243/public/layout1.json |  202 ++++++++++++++++++++++++++++++++++++++++++++++++++
 client/vendor/wui.chunk.js               |    3 
 configurations/14243/public/layout2.json |   10 ++
 client/vendor/dh.chunk.js                |    5 
 client/vendor/vendor.chunk.js            |    3 
 7 files changed, 215 insertions(+), 12 deletions(-)

diff --git a/client/config/theme.json b/client/config/theme.json
deleted file mode 100644
index f78b7c5..0000000
--- a/client/config/theme.json
+++ /dev/null
@@ -1,200 +0,0 @@
-{
-	"colors": {
-		"--primary-text-color": {
-			"type": "color",
-			"default": "#000000",
-			"name": "Text Primärfarbe",
-			"description": "Dies ist die Primärfarbe der Oberfläche."
-		},
-		"--primary-button-text-color": {
-			"type": "color",
-			"default": "#000000",
-			"name": "Button-Text Primärfarbe",
-			"description": "Dies ist die Primärfarbe der Buttons der Oberfläche."
-		},
-		"--primary-color": {
-			"type": "color",
-			"default": "#e4322b",
-			"name": "Primärfarbe",
-			"description": "Dies ist die Primärfarbe der Oberfläche."
-		},
-		"--primary-background-color": {
-			"type": "color",
-			"default": "#e4322b",
-			"name": "Hintergrund Primärfarbe",
-			"description": "Dies ist die Hintergrund Primärfarbe der Elemente."
-		},
-		"--hover-background-color": {
-			"type": "color",
-			"default": "#e4322b",
-			"name": "Button Variante 1 Hover",
-			"description": "Dies ist die Hoverfarbe 1 der Buttons, falls vorhanden."
-		},
-		"--hover-background-color-secondary": {
-			"type": "color",
-			"default": "#dedede",
-			"name": "Button Variante 2 Hover",
-			"description": "Dies ist die Hoverfarbe 2 der Buttons, falls vorhanden."
-		},
-		"--click-background-color-secondary": {
-			"type": "color",
-			"default": "#f0f0f0",
-			"name": "Button Variante 2 Click",
-			"description": "Dies ist die Clickfarbe 2 der Buttons, falls vorhanden."
-		},
-		"--bordered-color": {
-			"type": "color",
-			"default": "#e4322b",
-			"name": "Kantenlinienfarbe",
-			"description": "Dies ist die Kantenlinienfarbe der Elemente."
-		}
-	},
-	"template": {
-		"page-title": {
-			"type": "string",
-			"value": "Furnview",
-			"description": "Title der Seite",
-			"name": "Seitentitle"
-		},
-		"privacy-link": {
-			"type": "attribute",
-			"attribute": "privacylink",
-			"varType": "string",
-			"default": "https://www.dh-software.de/kontakt/datenschutz/",
-			"name": "Datenschutzbestimmungslink",
-			"description": "Link zur Datenschutzbestimmung"
-		},
-		"shopping-cart": {
-			"type": "boolean",
-			"default": false,
-			"name": "Warenkorb",
-			"description": "Warenkorb-Button anzeigen."
-		},
-		"save-pdf": {
-			"type": "boolean",
-			"default": true,
-			"name": "PDF Speichern",
-			"description": "PDF-Speichern Button anzeigen."
-		},
-		"save-obj": {
-			"type": "boolean",
-			"default": false,
-			"name": "OBJ Speichern",
-			"description": "OBJ-Speichern Button anzeigen.",
-			"manufactureronly": true
-		},
-		"save-skp": {
-			"type": "boolean",
-			"default": false,
-			"name": "SKP Speichern",
-			"description": "SKP-Speichern Button anzeigen.",
-			"manufactureronly": true
-		},
-		"save-dxf": {
-			"type": "boolean",
-			"default": false,
-			"name": "DXF Speichern",
-			"description": "DXF-Speichern Button anzeigen.",
-			"manufactureronly": true
-		},
-		"save-xml": {
-			"type": "boolean",
-			"default": false,
-			"name": "XML Speichern",
-			"description": "XML-Speichern Button anzeigen.",
-			"manufactureronly": true
-		},
-		"save-xls": {
-			"type": "boolean",
-			"default": false,
-			"name": "XLS Speichern",
-			"description": "XLS-Speichern Button anzeigen."
-		},
-		"send-inquiry": {
-			"type": "boolean",
-			"default": false,
-			"name": "Anfrage senden",
-			"description": "Anfrage senden Button anzeigen."
-		},
-		"properties-container": [
-			{
-				"type": "attribute",
-				"attribute": "disableNotSettable",
-				"varType": "boolean",
-				"default": false,
-				"name": "Nicht änderbare Ausführungen deaktivieren",
-				"description": ""
-			},
-			{
-				"type": "attribute",
-				"attribute": "mode-selection",
-				"varType": "boolean",
-				"default": true,
-				"name": "Pick-Level Dropdown anzeigen",
-				"description": ""
-			}
-		],
-		"enable-programselection": {
-			"type": "boolean",
-			"default": false,
-			"name": "Modellauswahl aktivieren",
-			"description": "Modellauswahl vor der Konfiguration anzeigen."
-		},
-		"language_picker": {
-			"type": "boolean",
-			"default": false,
-			"name": "Sprachauswahl aktivieren",
-			"description": "Sprachauswahl während der Konfiguration möglich"
-		},
-		"program-selection": [
-			{
-				"type": "attribute",
-				"attribute": "override-initial-article",
-				"varType": "boolean",
-				"default": false,
-				"name": "Konfigurator-Artikel automatisch platzieren",
-				"description": "Wenn kein Intial-Artikel angegeben, ersten Konfigurator-Artikel laden"
-			},
-			{
-				"type": "attribute",
-				"attribute": "prevent-confirmation-modal",
-				"varType": "boolean",
-				"default": false,
-				"name": "Es dürfen mehrere Modelle kombiniert werden",
-				"description": "Zeigt eine bestätigung beim wechseln des Programs an"
-			}
-		],
-		"card_container_dimension_filter": {
-			"type": "boolean",
-			"default": true,
-			"name": "Dimensionsfilter anzeigen",
-			"description": "Dimensionsfilter für die Artikelübersicht ein/ausschalten"
-		},
-		"filter-popup": {
-			"type": "boolean",
-			"default": true,
-			"name": "Filter popup",
-			"description": "Filter als Popup oder inline der Artikelliste anzeigen"
-		},
-		"enable-article-list": {
-			"type": "boolean",
-			"default": true,
-			"name": "Artikelauflistung anzeigen",
-			"description": "Step Artikelauflistung anzeigen."
-		},
-		"enable-equipment-list": {
-			"type": "boolean",
-			"default": true,
-			"name": "Zubehör anzeigen",
-			"description": "Step Zubehör anzeigen."
-		}
-	},
-	"mail": {
-		"to": {
-			"type": "string",
-			"default": "",
-			"name": "Auftrags E-Mail Adresse",
-			"description": "Standard Auftrags E-Mail Empfänger."
-		}
-	}
-}
\ No newline at end of file
diff --git a/client/fv.DeOhu3H1.js b/client/fv.DeOhu3H1.js
index aee0b05..7d81173 100644
--- a/client/fv.DeOhu3H1.js
+++ b/client/fv.DeOhu3H1.js
@@ -1,2 +1 @@
-import"./vendor/dh.chunk.js";import{h as e,y as t}from"./vendor/wui.chunk.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),document.addEventListener(`readystatechange`,async()=>{await e.Initialized,await t.IsAppReady;let n=document.querySelector(`.catalog-content`);document.body.classList.toggle(`catalog-hidden`,n.childElementCount===0)});
-//# sourceMappingURL=fv.DeOhu3H1.js.map
\ No newline at end of file
+import"./vendor/dh.chunk.js";import{h as e,y as t}from"./vendor/wui.chunk.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),document.addEventListener(`readystatechange`,async()=>{await e.Initialized,await t.IsAppReady;let n=document.querySelector(`.catalog-content`);document.body.classList.toggle(`catalog-hidden`,n.childElementCount===0)});
\ No newline at end of file
diff --git a/client/fv.DeOhu3H1.js.map b/client/fv.DeOhu3H1.js.map
deleted file mode 100644
index df0d79f..0000000
--- a/client/fv.DeOhu3H1.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"fv.DeOhu3H1.js","names":[],"sources":["../src/script/hide-catalog.ts"],"sourcesContent":["import {RequestService, WebViewerService} from \"@dh-software/webui-api\";\r\n\r\ndocument.addEventListener(\"readystatechange\", async () => {\r\n    await RequestService.Initialized;\r\n    await WebViewerService.IsAppReady;\r\n    const catalogContent = document.querySelector(\".catalog-content\");\r\n    document.body.classList.toggle(\"catalog-hidden\", catalogContent.childElementCount === 0);\r\n})\r\n"],"mappings":"wwBAEA,SAAS,iBAAiB,mBAAoB,SAAY,CACtD,MAAM,EAAe,YACrB,MAAM,EAAiB,WACvB,IAAM,EAAiB,SAAS,cAAc,kBAAkB,EAChE,SAAS,KAAK,UAAU,OAAO,iBAAkB,EAAe,oBAAsB,CAAC,CAC3F,CAAC"}
\ No newline at end of file
diff --git a/client/vendor/dh.chunk.js b/client/vendor/dh.chunk.js
index 26ff9a3..1ac8208 100644
--- a/client/vendor/dh.chunk.js
+++ b/client/vendor/dh.chunk.js
@@ -14450,7 +14450,7 @@
       </div>
     `}};Ui.styles=o`
     ${g(zi)}
-  `,Hi([c({type:Boolean,attribute:`open`,reflect:!0})],Ui.prototype,`open`,2),Hi([c({type:String,attribute:`button-variant`,reflect:!0})],Ui.prototype,`btnVariant`,2),Hi([a(`#menu-container`)],Ui.prototype,`menuContainer`,2),Hi([M({bubbles:!0,cancelable:!0,composed:!0},`sidebarOpen`)],Ui.prototype,`sidebarOpen`,2),Ui=Hi([p(`dh-sidebar`)],Ui),Ae(!0);var Wi=!0;try{Wi=!1}catch{}Wi&&(console.log=()=>{},console.debug=()=>{},console.info=()=>{});var R=new class{constructor(){this._components=new Map}get(e){let t=this._components.get(e.toUpperCase());return t===void 0?[]:t}valid(e,t){return e&&e.matches(t)}isElement(e){for(let[t,n]of this._components)for(let t of n)if(t==e)return!0;return!1}register(e){let t=this.get(e.tagName);t??=[],t.includes(e)==0&&t.push(e),this._components.set(e.tagName.toUpperCase(),t)}findAll(e,t=``){let n=this.get(e);if(t.length<1)return n;let r=[];return n.forEach(e=>{this.valid(e,t)&&r.push(e)}),r}find(e,t=``){let n=this.get(e);return t.length<1&&n.length>0?n[0]:n.find(e=>!!(e&&e.matches(t)))}findScrollableParent(e){if(e==null)return;let t=getComputedStyle(e).getPropertyValue(`overflow`);if((e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth)&&!t.includes(`hidden`)&&!t.includes(`visible`)||t.includes(`auto`)||t.includes(`scroll`))return e;let n=this.getParent(e);if(n)return this.findScrollableParent(n)}getParent(e){if(e==null)return;if(e.assignedSlot)return this.getParent(e.assignedSlot);if(e.parentElement)return e.parentElement;let t=e.getRootNode();if(t&&t.host)return t.host}getParentComponent(e){let t=this.getParent(e);if(t!=null)return this.isElement(t)?t:this.getParentComponent(t)}isPartOfHiddenSubtree(e){return e==null?!1:e.hideElement?!0:this.isPartOfHiddenSubtree(this.getParentComponent(e))}doActionRecursiveOnChildren(e,t){for(let r=0;r<e.children.length;++r){let i=e.children.item(r);i&&(i instanceof n&&t(i),this.doActionRecursiveOnChildren(i,t))}if(e instanceof n&&e.renderRoot&&e.renderRoot.children)for(let r=0;r<e.renderRoot.children.length;++r){let i=e.renderRoot.children.item(r);i&&(i instanceof n&&t(i),this.doActionRecursiveOnChildren(i,t))}}getParentShadowRoot(e,t){let n=e;for(;n;){if(n.tagName===t.toUpperCase())return n.shadowRoot;let e=n.getRootNode();n=e instanceof ShadowRoot?e.host:n.parentElement}return null}async waitForAllChildren(e){e.CheckFetchPromise&&await e.CheckFetchPromise(),e.updateComplete&&await e.updateComplete;for(let t=0;t<e.children.length;++t){let n=e.children.item(t);n&&await this.waitForAllChildren(n)}if(e instanceof n&&e.renderRoot&&e.renderRoot.children)for(let t=0;t<e.renderRoot.children.length;++t){let n=e.renderRoot.children.item(t);n&&await this.waitForAllChildren(n)}}},Gi=`.close-symbol{position:relative;cursor:pointer;width:100%;height:100%}.close-symbol.loading{z-index:999}.close-symbol.loading:after,.close-symbol.loading:before{background:#fff}.close-symbol:after,.close-symbol:before{content:" ";position:absolute;width:100%;height:1px;top:50%;background:var(--close-symbol-background, #888);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0}.close-symbol:after:hover,.close-symbol:before:hover{background:var(--close-symbol-background-hover, #333)}.close-symbol:after{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);transform:rotate(-45deg)}.close-symbol:before{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);transform:rotate(45deg)}:host(.active) .circle-number-symbol{border:var(--circle-number-symbol-border-active, 2px solid #000000)}.circle-number-symbol{position:relative;width:var(--circle-number-symbol-size, 30px);height:var(--circle-number-symbol-size, 30px);border-radius:50%;border:var(--circle-number-symbol-border, 2px solid white);box-shadow:var(--circle-number-symbol-box-shadow, 1px 2px 5px 0 black);background:var(--circle-number-symbol-background, var(--primary-color, red));color:var(--circle-number-symbol-color, var(--primary-text-color, black));display:flex;justify-content:center;align-items:center}.custom-symbol{position:relative;cursor:pointer;left:10px;display:flex}.custom-symbol.up:after{background-image:var(--custom-symbol-image-down, url(/webui/images/minus.svg));content:"";height:18px}.custom-symbol.down:after{background-image:var(--custom-symbol-image-down, url(/webui/images/plus.svg));content:"";height:18px}.custom-symbol:after{color:#1e1e1e;padding:0 0 2px;margin:auto 0;pointer-events:none;transform:translate(-15px);width:18px}.accordion-symbol{position:relative;cursor:pointer;left:10px;display:flex}.accordion-symbol.up:after{content:"-";font-size:xx-large;transform:scaleX(2) translate(-4px)}.accordion-symbol.down:after{content:"+";font-size:xx-large}.accordion-symbol:after{color:#1e1e1e;padding:0 0 2px;margin:auto 0;pointer-events:none;transform:translate(-15px);width:18px}.chevron-symbol{position:relative;cursor:pointer;left:10px}.chevron-symbol.up:after{content:"<"}.chevron-symbol.down:after{content:">"}.chevron-symbol:after{font:17px Consolas,monospace;color:inherit;-webkit-transform:rotate(90deg) translateX(-100%);-moz-transform:rotate(90deg) translateX(-100%);-ms-transform:rotate(90deg) translateX(-100%);transform:rotate(90deg) translate(-100%);padding:0 0 2px;position:absolute;pointer-events:none}@media(width>=980px){.only-mobile{display:none!important}}@media(width<=980px){.only-desktop{display:none!important}}.bold{font-weight:var(--global-font-weight-bold, 600)}*{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-family:var(--global-font, Roboto, sans-serif);font-weight:var(--global-font-weight, 400)}.container{display:flex;margin:10px 0}.container.column{flex-direction:column}.container.column.reverse{flex-direction:column-reverse}.container.row{flex-direction:row}.container.row.reverse{flex-direction:row-reverse}.fluid{flex:1}.fluid.space-after{margin-right:55px}.hidden{display:none!important}:host(.mobile-mode-hide),.mobile-mode-hide{display:none!important}.invisible{visibility:hidden!important}:host(.invisible-scroll),.invisible-scroll{overflow:hidden;margin-right:-22px}:host(.invisible-scroll)>:first-child,.invisible-scroll>:first-child{overflow-y:scroll;overflow-x:hidden;padding-right:22px;box-sizing:content-box}:host(.invisible-scroll.bottom),.invisible-scroll.bottom{overflow:hidden;margin-right:unset}:host(.invisible-scroll.bottom)>:first-child,.invisible-scroll.bottom>:first-child{overflow-x:scroll;overflow-y:hidden;padding-right:unset;padding-bottom:22px;margin-bottom:-22px;box-sizing:content-box}:host([disabled]){pointer-events:none;filter:contrast(.5) grayscale(1)}*{scrollbar-color:#5c5c5c hsla(0,0%,100%,.0039215686);scrollbar-width:thin}*[disabled][isfv]{pointer-events:none;filter:contrast(.5) grayscale(1)}::-webkit-scrollbar{height:8px;width:8px;background:#fff0}::-webkit-scrollbar-corner{background:#fff0}::-webkit-scrollbar-thumb{background:#5c5c5c;-webkit-border-radius:8px}::-webkit-scrollbar-button:vertical:start:increment,::-webkit-scrollbar-button:vertical:end:decrement,::-webkit-scrollbar-button:horizontal:end:increment,::-webkit-scrollbar-button:horizontal:end:decrement,::-webkit-scrollbar-button{background-color:#0000;color:#0000;border:none}:host{scrollbar-color:var(--base-scrollbar-color, unset);scrollbar-width:var(--base-scrollbar-width, unset)}:host(.invisible){visibility:hidden}:host(:focus-visible){outline:2px solid Highlight;outline-offset:-2px}@media(width<=520px){:host([mobile-mode=hide]){display:none!important}}@media(width>=520px)and (width<=980px){:host([mobile-mode=hide]){display:none!important}}@media(width>=981px){:host([mobile-mode=show]){display:none!important}}
+  `,Hi([c({type:Boolean,attribute:`open`,reflect:!0})],Ui.prototype,`open`,2),Hi([c({type:String,attribute:`button-variant`,reflect:!0})],Ui.prototype,`btnVariant`,2),Hi([a(`#menu-container`)],Ui.prototype,`menuContainer`,2),Hi([M({bubbles:!0,cancelable:!0,composed:!0},`sidebarOpen`)],Ui.prototype,`sidebarOpen`,2),Ui=Hi([p(`dh-sidebar`)],Ui),Ae(!0);var Wi=!0;try{Wi=!0}catch{}Wi&&(console.log=()=>{},console.debug=()=>{},console.info=()=>{});var R=new class{constructor(){this._components=new Map}get(e){let t=this._components.get(e.toUpperCase());return t===void 0?[]:t}valid(e,t){return e&&e.matches(t)}isElement(e){for(let[t,n]of this._components)for(let t of n)if(t==e)return!0;return!1}register(e){let t=this.get(e.tagName);t??=[],t.includes(e)==0&&t.push(e),this._components.set(e.tagName.toUpperCase(),t)}findAll(e,t=``){let n=this.get(e);if(t.length<1)return n;let r=[];return n.forEach(e=>{this.valid(e,t)&&r.push(e)}),r}find(e,t=``){let n=this.get(e);return t.length<1&&n.length>0?n[0]:n.find(e=>!!(e&&e.matches(t)))}findScrollableParent(e){if(e==null)return;let t=getComputedStyle(e).getPropertyValue(`overflow`);if((e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth)&&!t.includes(`hidden`)&&!t.includes(`visible`)||t.includes(`auto`)||t.includes(`scroll`))return e;let n=this.getParent(e);if(n)return this.findScrollableParent(n)}getParent(e){if(e==null)return;if(e.assignedSlot)return this.getParent(e.assignedSlot);if(e.parentElement)return e.parentElement;let t=e.getRootNode();if(t&&t.host)return t.host}getParentComponent(e){let t=this.getParent(e);if(t!=null)return this.isElement(t)?t:this.getParentComponent(t)}isPartOfHiddenSubtree(e){return e==null?!1:e.hideElement?!0:this.isPartOfHiddenSubtree(this.getParentComponent(e))}doActionRecursiveOnChildren(e,t){for(let r=0;r<e.children.length;++r){let i=e.children.item(r);i&&(i instanceof n&&t(i),this.doActionRecursiveOnChildren(i,t))}if(e instanceof n&&e.renderRoot&&e.renderRoot.children)for(let r=0;r<e.renderRoot.children.length;++r){let i=e.renderRoot.children.item(r);i&&(i instanceof n&&t(i),this.doActionRecursiveOnChildren(i,t))}}getParentShadowRoot(e,t){let n=e;for(;n;){if(n.tagName===t.toUpperCase())return n.shadowRoot;let e=n.getRootNode();n=e instanceof ShadowRoot?e.host:n.parentElement}return null}async waitForAllChildren(e){e.CheckFetchPromise&&await e.CheckFetchPromise(),e.updateComplete&&await e.updateComplete;for(let t=0;t<e.children.length;++t){let n=e.children.item(t);n&&await this.waitForAllChildren(n)}if(e instanceof n&&e.renderRoot&&e.renderRoot.children)for(let t=0;t<e.renderRoot.children.length;++t){let n=e.renderRoot.children.item(t);n&&await this.waitForAllChildren(n)}}},Gi=`.close-symbol{position:relative;cursor:pointer;width:100%;height:100%}.close-symbol.loading{z-index:999}.close-symbol.loading:after,.close-symbol.loading:before{background:#fff}.close-symbol:after,.close-symbol:before{content:" ";position:absolute;width:100%;height:1px;top:50%;background:var(--close-symbol-background, #888);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0}.close-symbol:after:hover,.close-symbol:before:hover{background:var(--close-symbol-background-hover, #333)}.close-symbol:after{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);transform:rotate(-45deg)}.close-symbol:before{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);transform:rotate(45deg)}:host(.active) .circle-number-symbol{border:var(--circle-number-symbol-border-active, 2px solid #000000)}.circle-number-symbol{position:relative;width:var(--circle-number-symbol-size, 30px);height:var(--circle-number-symbol-size, 30px);border-radius:50%;border:var(--circle-number-symbol-border, 2px solid white);box-shadow:var(--circle-number-symbol-box-shadow, 1px 2px 5px 0 black);background:var(--circle-number-symbol-background, var(--primary-color, red));color:var(--circle-number-symbol-color, var(--primary-text-color, black));display:flex;justify-content:center;align-items:center}.custom-symbol{position:relative;cursor:pointer;left:10px;display:flex}.custom-symbol.up:after{background-image:var(--custom-symbol-image-down, url(/webui/images/minus.svg));content:"";height:18px}.custom-symbol.down:after{background-image:var(--custom-symbol-image-down, url(/webui/images/plus.svg));content:"";height:18px}.custom-symbol:after{color:#1e1e1e;padding:0 0 2px;margin:auto 0;pointer-events:none;transform:translate(-15px);width:18px}.accordion-symbol{position:relative;cursor:pointer;left:10px;display:flex}.accordion-symbol.up:after{content:"-";font-size:xx-large;transform:scaleX(2) translate(-4px)}.accordion-symbol.down:after{content:"+";font-size:xx-large}.accordion-symbol:after{color:#1e1e1e;padding:0 0 2px;margin:auto 0;pointer-events:none;transform:translate(-15px);width:18px}.chevron-symbol{position:relative;cursor:pointer;left:10px}.chevron-symbol.up:after{content:"<"}.chevron-symbol.down:after{content:">"}.chevron-symbol:after{font:17px Consolas,monospace;color:inherit;-webkit-transform:rotate(90deg) translateX(-100%);-moz-transform:rotate(90deg) translateX(-100%);-ms-transform:rotate(90deg) translateX(-100%);transform:rotate(90deg) translate(-100%);padding:0 0 2px;position:absolute;pointer-events:none}@media(width>=980px){.only-mobile{display:none!important}}@media(width<=980px){.only-desktop{display:none!important}}.bold{font-weight:var(--global-font-weight-bold, 600)}*{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-family:var(--global-font, Roboto, sans-serif);font-weight:var(--global-font-weight, 400)}.container{display:flex;margin:10px 0}.container.column{flex-direction:column}.container.column.reverse{flex-direction:column-reverse}.container.row{flex-direction:row}.container.row.reverse{flex-direction:row-reverse}.fluid{flex:1}.fluid.space-after{margin-right:55px}.hidden{display:none!important}:host(.mobile-mode-hide),.mobile-mode-hide{display:none!important}.invisible{visibility:hidden!important}:host(.invisible-scroll),.invisible-scroll{overflow:hidden;margin-right:-22px}:host(.invisible-scroll)>:first-child,.invisible-scroll>:first-child{overflow-y:scroll;overflow-x:hidden;padding-right:22px;box-sizing:content-box}:host(.invisible-scroll.bottom),.invisible-scroll.bottom{overflow:hidden;margin-right:unset}:host(.invisible-scroll.bottom)>:first-child,.invisible-scroll.bottom>:first-child{overflow-x:scroll;overflow-y:hidden;padding-right:unset;padding-bottom:22px;margin-bottom:-22px;box-sizing:content-box}:host([disabled]){pointer-events:none;filter:contrast(.5) grayscale(1)}*{scrollbar-color:#5c5c5c hsla(0,0%,100%,.0039215686);scrollbar-width:thin}*[disabled][isfv]{pointer-events:none;filter:contrast(.5) grayscale(1)}::-webkit-scrollbar{height:8px;width:8px;background:#fff0}::-webkit-scrollbar-corner{background:#fff0}::-webkit-scrollbar-thumb{background:#5c5c5c;-webkit-border-radius:8px}::-webkit-scrollbar-button:vertical:start:increment,::-webkit-scrollbar-button:vertical:end:decrement,::-webkit-scrollbar-button:horizontal:end:increment,::-webkit-scrollbar-button:horizontal:end:decrement,::-webkit-scrollbar-button{background-color:#0000;color:#0000;border:none}:host{scrollbar-color:var(--base-scrollbar-color, unset);scrollbar-width:var(--base-scrollbar-width, unset)}:host(.invisible){visibility:hidden}:host(:focus-visible){outline:2px solid Highlight;outline-offset:-2px}@media(width<=520px){:host([mobile-mode=hide]){display:none!important}}@media(width>=520px)and (width<=980px){:host([mobile-mode=hide]){display:none!important}}@media(width>=981px){:host([mobile-mode=show]){display:none!important}}
 `,Ki=Object.defineProperty,qi=(e,t,n,r)=>{for(var i=void 0,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=o(t,n,i)||i);return i&&Ki(t,n,i),i},Ji=class extends CustomEvent{constructor(e){super(`hide-state-updated-event`,{detail:e,bubbles:!1})}},Yi=(e=>{let t=class t extends e{constructor(){super(...arguments),this.hideElement=!1,this.hiddenClasses=[`hidden`]}dispatchHideStateUpdatedEvent(){this.dispatchEvent(new Ji({value:this.hideElement,"parent-state-changed":!1})),t.dispatchEventRecursiveToChildren(this,new Ji({value:this.hideElement,"parent-state-changed":!0}))}addHideStateUpdatedEventListener(e){let t=t=>{t.detail?.value!==void 0&&t.detail[`parent-state-changed`]!==void 0&&e(t.detail.value,t.detail[`parent-state-changed`])};return this.addEventListener(`hide-state-updated-event`,t),()=>this.removeEventListener(`hide-state-updated-event`,t)}anyHiddenClassInArray(e){return this.hiddenClasses.some(t=>e.includes(t))}connectedCallback(){super.connectedCallback?.(),this.hiddenClasses.some(e=>this.classList.contains(e))&&(this.hideElement=!0)}attributeChangedCallback(e,t,n){if(super.attributeChangedCallback?.(e,t,n),e===`hidden-classes`&&t!=null){let e=JSON.parse(t);this.classList.remove(...e),this.hideElement&&this.classList.add(...this.hiddenClasses)}e===`hide-element`&&(this.hideElement?(this.classList.add(...this.hiddenClasses),this.ariaHidden=`true`):(this.classList.remove(...this.hiddenClasses),this.ariaHidden=null),this.dispatchHideStateUpdatedEvent()),e===`hide-element`&&(this.hideElement?this.ariaHidden=`true`:this.ariaHidden=null)}static dispatchEventRecursiveToChildren(e,t){R.doActionRecursiveOnChildren(e,e=>{e.dispatchEvent(t)})}};return qi([T({type:Boolean,reflect:!0,attribute:`hide-element`})],t.prototype,`hideElement`),qi([T({type:Array,reflect:!0,attribute:`hidden-classes`})],t.prototype,`hiddenClasses`),t})(n),Xi=class extends CustomEvent{constructor(e,t){super(e,{detail:{state:e,data:t},bubbles:!1}),this._pending=[]}waitUntil(e){e&&typeof e.then==`function`&&this._pending.push(e)}whenSettled(){return this._pending.length===0?Promise.resolve():Promise.allSettled(this._pending)}},Zi=class{constructor(e,t){this._counters=[],this._maxIncrements=0,this._maxIncrements=t,(typeof this._maxIncrements!=`number`||this._maxIncrements<=0||Math.floor(this._maxIncrements)!==this._maxIncrements)&&(this._maxIncrements=10),(typeof e!=`number`||e<0)&&(e=0);for(var n=0;n<e;n++)this._counters.push(0)}increment(){if(this.size===0)return!1;var e,t=1;for(e=this.size-1;e>=0&&t>0;e--)this._counters[e]+=t,this._counters[e]>=this._maxIncrements?(this._counters[e]-=this._maxIncrements,t=1):t=0;if(t>0){for(e=0;e<this.size;e++)this._counters[e]=0;return!1}return!0}get(e){if(!(e>this.size))return this._counters[e]}getAll(){return JSON.stringify(this._counters)}get size(){return this._counters.length}get empty(){return this.size<1}accumulateAfterIndex(e){let t=0;for(let n=e;n<this.size;++n){let e=this.get(n);e!=null&&(t+=e)}return t}get fullLoopCount(){return this.empty?1:this._maxIncrements**+this.size}},z=new class{constructor(){this._data={},this._groups=[],this._dataRequestStateHolder=void 0,this._dataRequest=void 0,this.SetCounter=0}async Fetch(e,t){return await j.IsAppReady,this._dataRequestStateHolder==null?(this._dataRequest=ve.GetApiData(e,t),this._dataRequestStateHolder=this._dataRequest,this._data=await this._dataRequest,this._dataRequestStateHolder=void 0,this._data):await this._dataRequestStateHolder}get DataPromise(){return this._dataRequest==null?Promise.resolve(this.Data):this._dataRequest}get Data(){return this._data}set Data(e){this._data=e}get Groups(){return this._groups=Object.keys(this._data),this._groups}get Valid(){return!(this.Data==null||this.Groups.length<1)}GetGroup(e,t,n){if(n!=null&&n!=``&&e!=n){let r=n.split(`#`),i=t;for(let e of r){let t=i[e];t!==void 0&&t!==`list`&&t.type!==void 0&&t.type==`list`&&(i=t)}return Object.keys(i).includes(e)?i[e]:{type:``}}let r=Object.keys(t);if(r.includes(e))return t[e];for(let i of r){let r=t[i];if(r.type!=`list`)continue;let a=this.GetGroup(e,r,n);if(!(a==null||a.type!=`list`))return a}return{type:``}}Get(e,t,n){let r=this.GetGroup(e,this.Data,t);if(r.type==``)return{type:``};if(e==n||n==null)return r;let i={type:``};return this.ForEachRecursive(r,(e,t)=>n==t?(i=e,!0):!1)?i:{type:``}}GetGroupValuesCount(e,t,n){let r=z.Get(e,t,n);if(r==null||r.type===``)return 0;let i=Object.keys(r);return i.length<8?(console.error(`ConfiguratorApi Data wrong! incomplete!`,r),0):i.length-8}GetValueInfoList(e,t){let n=z.Get(e,t);return n==null?{}:n[`info-list`]??{}}GetValueInfo(e,t,n){let r=this.GetValueInfoList(e,t),i=[];return n.forEach(e=>{r[e]!=null&&i.push(r[e])}),i}ForEachRecursive(e,t){let n=e??this.Data,r=e==null?this.Groups:Object.keys(e);for(let e of r){let r=n[e];if(r.type==null||r.type==``)continue;let i=t(r,e);if(r.type==`list`&&!i&&this.ForEachRecursive(r,t)&&(i=!0),i)return!0}return!1}Exists(e){return this.ForEachRecursive(void 0,(t,n)=>e==n)}CreateFormElementCounterStack(e,t,n){let r=0,i=0;if(this.FindCountersInDefinition(t).length>0){let t=Object.keys(e);for(let e of t){let t=e.replace(n,``).match(/\d+/g);if(t){i<t.length&&(i=t.length);for(let e of t){let t=parseInt(e);t>r&&(r=t)}}}}return r+=1,new Zi(i,r)}GetElementsToCreateFromElementDefinition(e,t,n,r,i){let a=this.CreateFormElementCounterStack(t,n,r),o=a.fullLoopCount,s=[];for(let t=0;t<o;++t){for(let t of n){if(t.tag===void 0){let n=t,o=!1;for(let t of n.elements){let[n,s]=this.FindElementDataFromFormElementInfo(t,e,a,r,i);s===void 0&&n===void 0||(o=!0)}o&&s.push(n);continue}let n=t;if(n.name===void 0&&n.names==null)continue;let[o,c]=this.FindElementDataFromFormElementInfo(n,e,a,r,i);c===void 0&&o===void 0||s.push({tag:n.tag,name:o,names:c,attributes:n.attributes,styleVars:n.styleVars})}a.increment()}return s}FindCountersInDefinition(e){let t=[];for(let n of e){if(n.tag===void 0){let e=n;this.FindCountersInDefinition(e.elements).length>0&&t.push(e);continue}let e=n;if(!(e.name===void 0&&e.names==null)){if(e.name!=null){e.name.includes(`|>counter-`)&&t.push(e);continue}if(e.names!=null)for(let n of e.names)n.includes(`|>counter-`)&&t.push(e)}}return t}CheckDefinitionAgainstvalueElementName(e,t){let n=[],r=e.split(`|>counter-`);if(r.length>1)for(let e of r){let t=e,r=e.indexOf(`<|`);if(r>0){let n=e.slice(0,r+2);t=e.replace(n,``)}t.length>0&&n.push(t)}else return t==e;let i=!0,a=t;for(let e of n){if(!a.includes(e)){i=!1;break}a=a.replace(e,``)}return i}FindElementDataFromFormElementInfo(e,t,n,r,i){let a;if(e.name!==void 0){let o=this.FindElementData(e.name,t,n,r,i);o!==void 0&&(a=o.type===`list`?e.name:o.name)}let o;if(e.names!==void 0){let a=[];for(let o of e.names)this.FindElementData(o,t,n,r,i)!=null&&a.push(o);a.length>0&&(o=a)}return[a,o]}FindElementData(e,t,n,r,i){let a=this.GetGroup(t,this.Data,i);if(a.type==``)return{type:``};if(n==null||n.empty){let t=a[r+e];if(t!=null)return t;let n;return this.ForEachRecursive(a,(t,i)=>t.type==`list`?(n=t[r+e],!0):!1),n}let o={type:``};if(this.ForEachRecursive(a,(t,i)=>{let a=i.replace(r,``);if(!this.CheckDefinitionAgainstvalueElementName(e,a))return!1;let s=a.match(/\d+/g);if(!s)return o=t,!0;let c=e.match(/\|>counter-\d+<\|/g);if(c!=null&&c.length!=s.length||s.length<n.size&&n.accumulateAfterIndex(s.length)>0)return!1;let l=0;for(let e=0;e<s.length;++e){let t=n.get(e);if(parseInt(s[e])!=t)break;++l}return l==s.length?(o=t,!0):!1}))return o.type===``?void 0:o}CreateFullTargetGroupReference(e,t){return t==e||t.length<1?e:t+`#`+e}async Set(e,t=!1,n=!1){if(this.SetCounter>0)return!1;this.SetCounter++,this.SetCounter>1&&console.warn(`ConfiguratorApiDataService> multiple set called at the same time!`);let r=await ve.SetApiData({groups:e,"prevent-regen-all":t},n);return this.Data=r,--this.SetCounter,!0}GetModificationType(e){return e==`int`?`int`:e==`float`?`float`:e==`button`?`button`:e==`checkbox`?`int`:e==`option-selection`||e==`string`?`string`:`error`}},Qi={width:`v5`,depth:`v6`,height:`v7`},$i={[Qi.width]:`extraWidth`,[Qi.depth]:`extraDepth`,[Qi.height]:`extraHeight`},ea=new class{constructor(){this._pending=!1,this.isInitialized=new Promise((e,t)=>e([])),this._manufacturer=``,this._program=``}async GetCatConfig(){return await this.isInitialized}async parseCatConfig(e,t){return(await O.getCatConfig(e,t))?.cat_config?.map(e=>({category:e[0],attributes:e[1].split(`#`),defaultArt:e[2],module:e[3],group:e[4]}))||[]}async retrieveCatConfig(e,t){return this._pending&&await this.isInitialized,this._pending=!0,this.isInitialized=this.parseCatConfig(e,t),this.isInitialized.then(e=>this._pending=!1),this._manufacturer=e,this._program=t,await this.isInitialized}async filterArticlesList(e){let t=await this.isInitialized;return t?.length>0?e.filter(e=>t[0]?.defaultArt!==e.ArtNr):e}async filterKataModules(e){let t=await this.isInitialized;return t?.length>0?e.filter(e=>t[0]?.category!=e.id):e}async getInitialArticle(e,t){let n=await this.isInitialized,r=this._manufacturer;t||=this._program;let i=this.getConfigurationDefaultArticle(r,t);return i.length>0?i:n[0]?.defaultArt||e}async shouldDisableOnSceneEmpty(e){await j.IsAppReady;let t=await O.getPlannedArticles();return t=t.filter(e=>e.articlenumber),e&&t.length===0}getMinMaxByParamName(e,t,n=1){let r=0,i=0;switch(e){case`v5`:r=Number(t.dxmi),i=Number(t.dxma);break;case`v6`:r=Number(t.dymi),i=Number(t.dyma);break;case`v7`:r=Number(t.dzmi),i=Number(t.dzma);break}let a=[r,i];return a.forEach((e,t,r)=>{r[t]=Math.abs(r[t])*n}),a}getAdditionalParamByKey(e,t){return $i[e]||t}getVarKeyForDimension(e){return Qi[e]}getAdditionalProperties(e,t){let n={};return n[this.getAdditionalParamByKey(e)]=t,n}getConfigurationDefaultArticle(e,t){if(window.g_configuration.defaultArticleList){let n=`${e}_${t}`;for(let e of window.g_configuration.defaultArticleList.keys)if(e.key===n.toLowerCase())return e.articleNumber}return``}},ta=new class{constructor(){this._pending=!1,this.isInitialized=new Promise((e,t)=>e()),this._manufacturer=``,this._calcManufacturer=``,this._program=``,this.isInitialized=this.initialize()}async initialize(){await j.IsAppReady,this._manufacturer=window.g_article?.manu||window.g_configuration.selectedManufacturer,this._program=window.g_article?.prog?window.g_article.prog.toUpperCase():window.g_configuration.selectedProgram.toUpperCase(),this._calcManufacturer=this._manufacturer,await ea.retrieveCatConfig(this._manufacturer,this._program)}async getManufacturer(){return await this.isInitialized,this._manufacturer}async getCalcManufacturer(){return await this.isInitialized,this._calcManufacturer}async getProgram(){return await this.isInitialized,this._program}async setManuProg(e,t,n,r=!0){if(this._pending)return await this.isInitialized;this._pending=!0,this.isInitialized=O.setManuProg(e,t,n),await ea.retrieveCatConfig(e,n),this.isInitialized.then(e=>this._pending=!1),await this.isInitialized,r&&pe.emit(`set-manu-prog`,{manu:e,calcManu:t,prog:n}),this._manufacturer=e,this._calcManufacturer=t,this._program=n}},na=new class{async getFurncloudFile(e,t,n){let r=await O.getErpFiles(e,{dhp:1,xml:2,pdf:4}[t],n,!0);if(window.dispatchEvent(new CustomEvent(`furncloud-status`,{detail:r,bubbles:!0,composed:!0})),r.httpStatus!==200||!r.fileName){if(r.responseBody)try{return JSON.parse(r.responseBody)}catch{}return}return{url:`${r.server}/downloadExport/${r.sessionId}/${r.fileName}/${t}`}}async generateExport(e){let t=await O.generateExport(e);return{url:`${t.server}/downloadExport/${t.sessionId}/${t.file}/${e}`,cloudID:t.cloudId}}async getPDF(e=!1){let t=await O.printPDF(e);return{url:`${t.server}/downloadPDF/${t.sessionId}/${t.pdf}`,cloudID:t.cloudId}}async openCloudId(e,t=!1){e&&(t&&await O.resetCurrentUserinterfaceManuProg(),await O.openCloudId(e),pe.emitAsync(`close-modal`,{}))}async delay(e){return new Promise(t=>setTimeout(t,e))}querySelectorAllWithShadowRoots(e,t=document){let n=Array.from(t.querySelectorAll(e)),r=Array.from(document.querySelectorAll(`*`)).filter(e=>e.shadowRoot).reduce((t,n)=>{let r=n.shadowRoot?.querySelectorAll(e)||[];return[...t,...Array.from(r)]},[]);return[...n,...r]}querySelectorWithShadowRoots(e,t=document){return this.querySelectorAllWithShadowRoots(e,t)[0]}replaceValueInObject(e,t,n){let r=Object.keys(e);for(let i of r){let r=e[i];if(r===t)e[i]=n;else if(r&&typeof r==`object`)this.replaceValueInObject(r,t,n);else if(r&&Array.isArray(r))for(let e of r)e&&typeof e==`object`&&this.replaceValueInObject(e,t,n)}}checkCssQuerySyntax(e){return/^(\*|#[\w-]+|\.[\w-]+|[\w-]+|\[\w+(=\w+)?\])(:\w+)?(>\w+)?(\s\w+)?$/.test(e)}ncrToUTF8(e){return e&&e.length>0?e.replace(/&#([0-9]+);/g,function(e){return String.fromCodePoint(parseInt(e.slice(2,-1)))}):e}sanitizeKey(e){return`${e}`.replace(/\s+/g,`_`)}},ra=new class{constructor(){this.cloudIdRegex=/^(?:\s*[a-z0-9]\s*){8}$/i,this._pending=!1,this._cloudIdPromise=new Promise((e,t)=>e(``))}async getCloudId(){return this._cloudIdPromise}async createCloudId(){return this._pending?await this._cloudIdPromise:(this._pending=!0,this._cloudIdPromise=O.createCloudID(),this._cloudIdPromise.then(e=>this._pending=!1),await this._cloudIdPromise)}isCloudIdValid(e){return this.cloudIdRegex.test(e)}},ia=new class{constructor(){this._prefix=`SSS_`}update(e,t){if(e.length>0){let n=JSON.stringify(t),r=btoa(n);sessionStorage.setItem(this._prefix+e,r)}return t}get(e){if(e.length>0){let t=sessionStorage.getItem(this._prefix+e);if(t){let e=atob(t);try{return JSON.parse(e)}catch{return null}}}}has(e){if(e.length>0)return!!sessionStorage.getItem(this._prefix+e)}remove(e){sessionStorage.removeItem(this._prefix+e)}},aa=new class{constructor(){this._CardContainerTagNames=[]}get CardContainerTagNames(){return this._CardContainerTagNames}AddTagName(e){this._CardContainerTagNames.includes(e)||this._CardContainerTagNames.push(e)}get AllContainers(){let e=[];for(let t of this._CardContainerTagNames)e.push(...R.findAll(t));return e}};function oa(e){return`value`in e&&`name`in e}var sa=(e=>(e.ArticlesByCategories=`articles-by-categories`,e.ArticlesByCategoriesConfiguratorForm=`articles-by-categories-configurator-form`,e.ArticlesByCategoriesDimensions=`articles-by-categories-dimensions`,e.ArticlesByCategoriesCategorySelection=`articles-by-categories-category-selection`,e.CrossArticleHostSelection=`cross-article-host-selection`,e.KataPageSelection=`kata-page-selection`,e.PropertySelection=`property-selection`,e.PropertyValueSelection=`property-value-selection`,e.PropertyContextSelection=`property-context-selection`,e.PropertyContextValueSelection=`property-context-value-selection`,e.PropertyUiGroupSelection=`property-group-selection`,e.LandingPageView=`landing-page-view`,e.CardsFromConfiguration=`cards-from-configuration`,e.WallElements=`wall-elements`,e.WallSelection=`wall-selection`,e.ConfiguratorFormFilter=`configurator-form-filter`,e.ProgramSelection=`program-selection`,e.PlacerGroupSelection=`placer-group-selection`,e.MaterialSelection=`material-selection`,e.NONE=``,e))(sa||{}),ca=(e=>(e.OR=`or`,e.AND=`and`,e.NONE=`none`,e))(ca||{}),B=(e=>(e.FETCH=`fetch`,e.FILTER=`filter`,e.NONE=`none`,e))(B||{}),la=(e=>(e.ENABLED=`enabled`,e.DISABLED=`disabled`,e.NONE=`none`,e.ERROR=`error`,e))(la||{}),ua=`fixed-card-click-events`,da=`card-view-key`,fa=`magnify`,pa=`magnify-query`,ma=(e=>(e.CardContainerPreFill=`cardcontainerprefill`,e.CardContainerPostFill=`cardcontainerpostfill`,e.Updated=`updated`,e.Back=`cardcontainerback`,e.TriggerCardClick=`cardcontainertriggercardclick`,e.BackToStart=`cardcontainerbacktostart`,e.UpdateAdditionalData=`updateadditionaldata`,e.ResetFilter=`resetfilter`,e.Refetch=`refetch`,e.CardMagnified=`cardmagnified`,e))(ma||{}),ha=class{constructor(e){this._dispatchFn=e}async dispatch(e){return new Promise(t=>{let n;n=e(async()=>{t(!n.defaultPrevented)}),this._dispatchFn(n)})}callPostEvent(e){e.detail===void 0||e.detail[`post-event`]===void 0||e.detail[`post-event`]()}},ga=class extends CustomEvent{constructor(e,t){super(e,{detail:t,bubbles:!0})}},_a=class extends ga{constructor(e){super(`cardcontainerprefill`,{"post-event":e})}},va=class extends ga{constructor(e){super(`cardcontainerpostfill`,{"post-event":e})}},ya=class extends ga{constructor(e,t){super(`updated`,{"post-event":e,container:t})}},ba=class extends ga{constructor(e){super(`cardcontainerback`,{"post-event":e})}},xa=class extends ga{constructor(e){super(`cardcontainerbacktostart`,{"post-event":e})}},Sa=class extends ga{constructor(e,t){super(`cardcontainertriggercardclick`,{"keys-to-open":e,"post-event":t})}},Ca=class extends ga{constructor(e,t){super(`updateadditionaldata`,{"post-event":t,key:e})}},wa=class extends ga{constructor(e){super(`resetfilter`,e)}},Ta=class extends ga{constructor(e,t,n=()=>{}){super(`cardmagnified`,{"post-event":n,data:e,target:t})}},V=(e=>(e.LastPOLoaded=`last-po-loaded`,e.RefreshPropertyPanel=`refresh-property-panel`,e.SelectionChanged=`selection-changed`,e.DeleteLO_after=`delete-lo-after`,e.PropTransfer_afterDelete=`prop-transfer-after-delete`,e.PropTransfer_afterSet=`prop-transfer-after-set`,e.PropTransfer_beforeDelete=`prop-transfer-before-delete`,e.PropTransfer_beforeSet=`prop-transfer-before-set`,e.WallFitting_begin=`wall-fitting-begin`,e.WallFitting_end=`wall-fitting-end`,e.WallFitting_cancel=`wall-fitting-cancel`,e.ChangePrice=`change-price`,e.DeleteLO_before=`delete-lo-before`,e.CameraOnDirty=`camera-on-dirty`,e.CameraOnStart=`camera-on-start`,e.CameraOnEnd=`camera-on-end`,e.SendEvent=`send-event`,e.ModalWindowShown=`modal-window-shown`,e.ModalWindowHidden=`modal-window-hidden`,e.CustomIcon_ExecuteCustomEvent=`custom-icon-execute-custom-event`,e.OpenModal=`open-modal`,e.CardContainerVisible=`card-container-visible`,e.VPlacerCancel=`vplacer-cancel`,e))(V||{}),Ea=(e=>(e.CheckUpdate=`CheckUpdate`,e.Fetch=`Fetch`,e.Filter=`Filter`,e.CreateCards=`CreateCards`,e.GetFilterSelectionAdditionalParams=`GetFilterSelectionAdditionalParams`,e.GetFilterSelectionStrategy=`GetFilterSelectionStrategy`,e.InitFilterSelectionParams=`InitFilterSelectionParams`,e.ClickCard=`ClickCard`,e.ClickCardButton=`ClickCardButton`,e.TextFieldChanged=`TextFieldChanged`,e.CheckSpecialInteractionContext=`CheckSpecialInteractionContext`,e))(Ea||{}),H=new class{constructor(){this._Connections=new Map,this._Containers=[],this._dragActive=!1,this._RegisterUpdateEvents()}async _RegisterUpdateEvents(){let e=async(e,t)=>{if(!this._dragActive)for(let n of this._Containers){let r=this._Connections.get(n.Settings.Fetch.method);if(r==null)continue;let i=await r.CheckUpdate(e,t,n.Context);await n.CheckUpdate(i)}},t=(t,n,r)=>{t.register(t=>{e(n,t),r&&r(t)})};await j.IsAppReady,j.on(`webui.start-drag`,()=>{console.log(`drag start`),this._dragActive=!0}),j.on(`webui.end-drag`,()=>{console.log(`drag end`),this._dragActive=!1}),t(k.LastPOLoaded,V.LastPOLoaded),t(k.VPlacerCancel,V.VPlacerCancel),t(k.RefreshPropertyPanel,V.RefreshPropertyPanel),t(k.SelectionChanged,V.SelectionChanged,async e=>{for(let t of this._Containers){if(t.Settings.Behaviour[`connection-defined-interaction-on-selection-change`]==0)continue;let n=this._Connections.get(t.Settings.Fetch.method);if(n==null)continue;let r=t.Settings.Card[`app-connection-settings`][`pre-selection-change-events`];if(r&&r.length>0)for(let e of r)await pe.emitAsync(e.id,e.data??{});n.InteractionOnSelectionChange(t.Context,e);let i=t.Settings.Card[`app-connection-settings`][`post-selection-change-events`];if(i&&i.length>0)for(let e of i)await pe.emitAsync(e.id,e.data??{})}}),t(k.CustomIcon_ExecuteCustomEvent,V.CustomIcon_ExecuteCustomEvent,async e=>{for(let t of this._Containers){if(t.Settings.Behaviour[`connection-defined-interaction-on-icon-button`]==0)continue;let n=this._Connections.get(t.Settings.Fetch.method);if(n==null)continue;let r=t.Settings.Card[`app-connection-settings`][`pre-icon-button-events`],i=t.Settings.Card[`app-connection-settings`][`post-icon-button-events`];n.InteractionOnIconButton(t.Context,e,r,i)}}),t(k.DeleteLO_after,V.DeleteLO_after),t(k.PropTransfer_afterDelete,V.PropTransfer_afterDelete),t(k.PropTransfer_afterSet,V.PropTransfer_afterSet),t(k.PropTransfer_beforeDelete,V.PropTransfer_beforeDelete),t(k.PropTransfer_beforeSet,V.PropTransfer_beforeSet),t(k.WallFitting_begin,V.WallFitting_begin),t(k.WallFitting_end,V.WallFitting_end),t(k.WallFitting_cancel,V.WallFitting_cancel),t(k.ChangePrice,V.ChangePrice),t(k.DeleteLO_before,V.DeleteLO_before),t(k.CameraOnDirty,V.CameraOnDirty),t(k.CameraOnStart,V.CameraOnStart),t(k.CameraOnEnd,V.CameraOnEnd),t(k.SendEvent,V.SendEvent),t(k.ModalWindowShown,V.ModalWindowShown),t(k.ModalWindowHidden,V.ModalWindowHidden)}get Containers(){return this._Containers}Register(e){this._Containers.includes(e)||this._Containers.push(e)}Remove(e){let t=this._Containers.indexOf(e);t<0||this._Containers.splice(t,1)}RegisterAppConnection(e){if(this._Connections.has(e.Method)){console.error(`CardDataService> RegisterAppConnection failed! The same AppConnection can not be registered twice!`);return}this._Connections.set(e.Method,e)}GetAppConnection(e){return this._Connections.get(e)}TriggerAction(e,t,n){if(e==null||typeof e!=`string`)return;let r=this.GetAppConnection(e);if(r!=null)switch(t){case`CheckUpdate`:return this.TriggerCheckUpdate(r,n);case`Fetch`:return this.TriggerFetch(r,n);case`Filter`:return this.TriggerFilter(r,n);case`CreateCards`:return this.TriggerCreateCards(r,n);case`GetFilterSelectionAdditionalParams`:return this.TriggerGetFilterSelectionAdditionalParams(r,n);case`GetFilterSelectionStrategy`:return this.TriggerGetFilterSelectionStrategy(r,n);case`InitFilterSelectionParams`:return this.TriggerInitFilterSelectionParams(r,n);case`ClickCard`:return this.TriggerClickCard(r,n);case`ClickCardButton`:return this.TriggerClickCardButton(r,n);case`TextFieldChanged`:return this.TriggerTextFieldChanged(r,n);case`CheckSpecialInteractionContext`:return this.TriggerCheckSpecialInteractionContext(r,n);default:return}}async TriggerCheckUpdate(e,t){return await e.CheckUpdate(t.event,t.eventParameters,t.context)}async TriggerFetch(e,t){return await e.Fetch(t.context)}TriggerFilter(e,t){return e.Filter(t.unfiltered,t.context,t.active)}TriggerCreateCards(e,t){return e.CreateCards(t.filtered,t.context)}TriggerGetFilterSelectionAdditionalParams(e,t){return e.GetFilterSelectionAdditionalParams(t.context)}TriggerGetFilterSelectionStrategy(e,t){return e.GetFilterSelectionStrategy(t.context)}TriggerInitFilterSelectionParams(e,t){return e.InitFilterSelectionParams(t.context)}TriggerClickCard(e,t){return e.Click(t.card,t.context)}TriggerClickCardButton(e,t){return e.ClickCardButton(t.data,t.card,t.context)}TriggerTextFieldChanged(e,t){return e.TextFieldChanged(t.card,t.context,t.field)}async TriggerCheckSpecialInteractionContext(e,t){return await e.CheckSpecialInteractionContext(t.context)}GetMethod(e){return e.settings.Fetch.method==sa.ConfiguratorFormFilter&&e.settings.Fetch.parameters.method!=null&&e.settings.Fetch.parameters.method.length>0?e.settings.Fetch.parameters.method:e.settings.Fetch.method}async CheckUpdate(e,t,n){let r=this._Connections.get(n.settings.Fetch.method);return r==null?B.NONE:r.CheckUpdate(e,t,n)}async Fetch(e){let t=this._Connections.get(e.settings.Fetch.method);if(t==null)return console.error(`Fetch Method does not exist!: `+e.settings.Fetch.method),{};try{return await t.Fetch(e)}catch(e){console.warn(`Fetch Failed! error: `+e)}return{}}Filter(e,t,n){let r=this._Connections.get(t.settings.Fetch.method);return r==null?{}:r.Filter(e,t,n)}CreateCards(e,t){let n=this._Connections.get(t.settings.Fetch.method);return n==null?new Map:n.CreateCards(e,t)}GetFilterSelectionAdditionalParams(e){let t=this._Connections.get(e.settings.Fetch.method);if(t!=null)return t.GetFilterSelectionAdditionalParams(e)}GetFilterSelectionStrategy(e){let t=this._Connections.get(e.settings.Fetch.method);return t==null?ca.NONE:t.GetFilterSelectionStrategy(e)}InitFilterSelectionParams(e){let t=this._Connections.get(e.settings.Fetch.method);t&&t.InitFilterSelectionParams(e)}async WaitForAllCardContainerFetchPromises(){for(let e of this._Containers)await e.CheckFetchPromise(),await e.updateComplete}GetFormattedCardDragData(e,t){if(t.settings.Fetch.method.length<1){console.error(`FetchCardDragData Error! No method in fetch settings!`,`settings:`,t.settings,`card:`,e);return}let n=this._Connections.get(t.settings.Fetch.method);if(n)return n.GetFormattedDragData(e,t)}async ClickCard(e,t){if(!t.states.PreventAppConnectionClick){let n=this._Connections.get(t.settings.Fetch.method);n&&await n.Click(e,t)}}async ClickCardButton(e,t,n){let r=this._Connections.get(n.settings.Fetch.method);r&&await r.ClickCardButton(e,t,n)}async TextFieldChanged(e,t,n){let r=this._Connections.get(t.settings.Fetch.method);r&&await r.TextFieldChanged(e,t,n)}MakeCardClickString(e){return e==null?``:typeof e==`object`&&e?JSON.stringify(e):typeof e==`string`?e:e.toString()}PrepareClickedCardEventData(e,t,n){if(t==null)return e;let r=t,i=[`level-key`,`next-level-key`,`previous-level-key`,`priority`,`strategy`];if(n!=null)for(let e of n)i.push(e.key),r[e.key]=e.data;let a=JSON.stringify(e);for(let e of i)a=a.replaceAll(`|`+e+`|`,this.MakeCardClickString(t[e]));return a=a.replaceAll(RegExp(`[|][a-z]+[|]`,`gi`),``),e=JSON.parse(a),e}PrepareClickedCardEventsData(e,t,n){let r=[];for(let i of e)i.data&&r.push({id:i.id,data:this.PrepareClickedCardEventData(i.data,t,n)});return r}async CheckSpecialInteractionContext(e){if(e.states.HandleAppConnectionPlanningSituationState){let t=this._Connections.get(e.settings.Fetch.method);if(t)return t.CheckSpecialInteractionContext(e)}return la.ERROR}},Da=class{static async RefreshAll(e){let{refetch:t,awaitFetches:n=!0,includeHidden:r,forceSwapSelectedProgramBeforeRefetch:i=``,selectionResultFilterResetTargets:a=[],selectionResultFilterResetExcludes:o=[]}=e;n&&await H.WaitForAllCardContainerFetchPromises();let s=aa.AllContainers;if(a){let e=[];for(let t of a)e.push(...R.findAll(t.tag,t.query));for(let t of e)t.Filter!=null&&t.Filter.Reset(!1,t.Context)}if(o){let e=[];for(let t of o)e.push(...R.findAll(t.tag,t.query));s=s.filter(t=>!e.includes(t))}for(let e of s)e.hideElement&&r==0||(t?(i!==void 0&&i!==``&&(e.Settings.Program=i),e.Refetch()):e.requestUpdate())}static RefreshBackButtons(){let e=R.findAll(`fv-card-container-back-button`);for(let t of e)t.requestUpdate()}static ResetSelectionResultFilter(e){let t=e.query?e.query:void 0,n=R.find(e.tag,t);n&&n.Filter!=null&&n.Filter.Reset(!0,n.Context)}static SetShowBeforeSlot(e){let t=e.query?e.query:void 0,n=R.find(e.tag,t);n&&(n.ShowBeforeSlot=e.state)}static SetShowIdSlot(e){let t=e.query?e.query:void 0,n=R.find(e.tag,t);n&&(n.ShowIdSlot=e.state)}static Clear(e){let t=e.query?e.query:void 0,n=R.findAll(e.tag,t);if(n)for(let e of n)e.Filter&&e.Filter.Reset(!0,e.Context),e.requestUpdate()}static ReTriggerSingleEntrySkip(e){let t=e.query?e.query:void 0,n=R.findAll(e.tag,t);if(n)for(let e of n)e.ReTriggerSingleEntrySkip&&e.ReTriggerSingleEntrySkip()}static Refetch(e){let t=e.query?e.query:void 0,n=R.findAll(e.tag,t);if(n)for(let t of n){let n=t?.Context?.settings?.Fetch?.parameters[`clear-cache`];e[`clear-cache`]&&(t.Context.settings.Fetch.parameters[`clear-cache`]=!0),t.Refetch().then(()=>{e[`clear-cache`]&&(t.Context.settings.Fetch.parameters[`clear-cache`]=n)})}}static ClickCard(e){if(e.indexInList==null){console.warn(`triggered card-containers:click-card without providing the card-index to click!`);return}let t=e.indexInList,n=e.query?e.query:void 0,r=R.findAll(e.tag,n);if(r&&r.length>0){for(let n of r)n.TriggerCardClick(t,e[`ensure-inactive`]);return}console.warn(`[card-containers:click-card]: Target(s) could not be found! tag:`,e.tag,`query:`,e.query)}},Oa=(e=>(e[e.DISABLED=0]=`DISABLED`,e[e.SELECTED=1]=`SELECTED`,e[e.IMPLICIT=2]=`IMPLICIT`,e[e.EXPLICIT=3]=`EXPLICIT`,e))(Oa||{}),ka=(e=>(e[e.ARTICLE=0]=`ARTICLE`,e[e.PROPTRANSFER=1]=`PROPTRANSFER`,e[e.BY_MODE=2]=`BY_MODE`,e[e.FITTING=3]=`FITTING`,e[e.WALL_FITTING=4]=`WALL_FITTING`,e[e.PROGPROPERTY=5]=`PROGPROPERTY`,e))(ka||{}),Aa=`11205`,ja=(e=>(e[e.ALL=0]=`ALL`,e[e.GLOBAL=1]=`GLOBAL`,e[e.LOCAL=2]=`LOCAL`,e))(ja||{}),Ma=(e=>(e[e.ZOOMAUTO_EXTENDEDAPOINT=0]=`ZOOMAUTO_EXTENDEDAPOINT`,e[e.ZOOMAUTO_EXTENDEDDIR=1]=`ZOOMAUTO_EXTENDEDDIR`,e[e.ZOOMAUTO_FRONTCLIP=2]=`ZOOMAUTO_FRONTCLIP`,e[e.ZOOMAUTO_ROTATE2PI=3]=`ZOOMAUTO_ROTATE2PI`,e[e.ZOOMAUTO_ORTHOCLIP=4]=`ZOOMAUTO_ORTHOCLIP`,e[e.ZOOMAUTO_ZOOMFACTOR=5]=`ZOOMAUTO_ZOOMFACTOR`,e[e.ZOOMAUTO_ORTHOFRONT=6]=`ZOOMAUTO_ORTHOFRONT`,e[e.ZOOMAUTO_PANUPDOWN=7]=`ZOOMAUTO_PANUPDOWN`,e[e.ZOOMAUTO_EXTENDEDCURDIR=8]=`ZOOMAUTO_EXTENDEDCURDIR`,e[e.ZOOMAUTO_CAM_ROTATEMPV=9]=`ZOOMAUTO_CAM_ROTATEMPV`,e[e.ZOOMAUTO_CAM_ROTATEMPH=10]=`ZOOMAUTO_CAM_ROTATEMPH`,e[e.ZOOMAUTO_CAM_ROTATEABOUTMARKED=11]=`ZOOMAUTO_CAM_ROTATEABOUTMARKED`,e[e.ZOOMAUTO_CAM_ROTATEEYELEFTRIGHT=12]=`ZOOMAUTO_CAM_ROTATEEYELEFTRIGHT`,e[e.ZOOMAUTO_CAM_ROTATEEYEUPDOWN=13]=`ZOOMAUTO_CAM_ROTATEEYEUPDOWN`,e[e.ZOOMAUTO_CAM_ROTATELEFTRIGHT=14]=`ZOOMAUTO_CAM_ROTATELEFTRIGHT`,e[e.ZOOMAUTO_CAM_MOVELEFTRIGHT=15]=`ZOOMAUTO_CAM_MOVELEFTRIGHT`,e[e.ZOOMAUTO_CAM_MOVEAXIS3D=16]=`ZOOMAUTO_CAM_MOVEAXIS3D`,e[e.ZOOMAUTO_CAM_MOVEUPDOWN=17]=`ZOOMAUTO_CAM_MOVEUPDOWN`,e[e.ZOOMAUTO_CAM_SETVIEWPOINTMODE=18]=`ZOOMAUTO_CAM_SETVIEWPOINTMODE`,e))(Ma||{}),Na=(e=>(e[e.TopLeftFront=-1000109]=`TopLeftFront`,e[e.TopRightFront=-1000110]=`TopRightFront`,e[e.TopLeftBack=-1000108]=`TopLeftBack`,e[e.TopRightBack=-1000107]=`TopRightBack`,e[e.Left=-1000102]=`Left`,e[e.Right=-1000101]=`Right`,e[e.Front=-1000106]=`Front`,e[e.Back=-1000105]=`Back`,e[e.Top=-1000103]=`Top`,e))(Na||{}),Pa={TopLeftFront:Na.TopLeftFront,TopRightFront:Na.TopRightFront,TopLeftBack:Na.TopLeftBack,TopRightBack:Na.TopRightBack,Left:Na.Left,Right:Na.Right,Front:Na.Front,Back:Na.Back,Top:Na.Top};function Fa(e,t){return pe.emitAsync(e,t)}var Ia=new Map([[`toggle-front-state`,async e=>Fa(`front-state`,e)],[`save-current-scene-settings`,async()=>Fa(`notice-list-mask:save-current-scene-settings`,{data:{},target:{tag:`fv-notice-list-mask`}})],[`show-ar-modal`,async()=>Fa(`fv-ar-modal:show`,{data:{},target:{tag:`fv-ar-modal`}})],[`notify-step-stage-changed`,e=>Fa(`fv-step:notify-stage-changed`,{data:e,target:{tag:`fv-step`,all:!0}})],[`webcab-refresh-cabinets-toggle-ui`,async()=>Fa(`fv-webcab-ui-cabinets-toggle:refresh`,{data:{},target:{tag:`fv-webcab-ui-cabinets-toggle`,all:!0}})],[`refresh-all-configurator-forms`,async()=>Fa(`fv-configurator-form:refetch`,{data:{},target:{tag:`fv-configurator-form`,all:!0}})],[`refresh-all-filtered-catalogs`,async()=>Fa(`fv-filtered-catalog:update`,{data:{force:!0},target:{tag:`fv-filtered-catalog`,all:!0}})],[`configurator-form-page-open-view-mode`,async e=>Fa(`fv-configurator-form-page:open-view-mode`,{data:e,target:{tag:`fv-configurator-form-page`,all:!0}})],[`open-modal`,async e=>Fa(`fv-modal:open`,{data:e,target:{tag:e?.tag||`fv-modal`,query:e?.query}})],[`close-modal`,async e=>Fa(`fv-modal:close`,{data:e,target:{tag:e?.tag||`fv-modal`,query:e?.query}})],[`toggle-modal`,async e=>Fa(`fv-modal:toggle`,{data:e,target:{tag:e?.tag||`fv-modal`,query:e?.query}})],[`toggle-toolbar`,async e=>Fa(`fv-toggle-toolbar:toggle`,{data:{},target:{tag:`fv-toggle-toolbar`,query:e?.selector||``}})],[`steps-next`,async e=>Fa(`fv-steps:next`,{data:e})],[`steps-previous`,async e=>Fa(`fv-steps:previous`,{data:e})],[`steps-first`,async e=>Fa(`fv-steps:activate-first`,{data:e})],[`activate-step`,async e=>Fa(`fv-steps:activate`,{data:e})],[`activate-current-step`,async e=>Fa(`fv-steps:activate-current`,{data:e})],[`update-filtered-catalogs`,async e=>Fa(`fv-filtered-catalog:update`,{data:e})],[`update-accordion-heights`,async e=>Fa(`fv-accordion-item:update-height`,{data:e})],[`update-slider-ranges`,async e=>Fa(`fv-slider:update-range`,{data:e})],[`toolbar-button-set-active`,async e=>Fa(`fv-toolbar-button:set-active`,{data:e})],[`add-classes`,async e=>Fa(`fv:add-class`,{data:e})],[`remove-classes`,async e=>Fa(`fv:remove-class`,{data:e})],[`toggle-classes`,async e=>Fa(`fv:toggle-class`,{data:e})],[`set-attribute`,async e=>Fa(`fv:set-attribute`,{data:e})],[`toggle-attribute`,async e=>Fa(`fv:toggle-attribute`,{data:e})],[`update-visibility`,async e=>Fa(`fv:update-visibility`,{data:e})]]),La=new class{constructor(){this.accessoires=!1,this.front=!0}async sendCloudIdToOwner(){let e=window;for(;e.parent&&e!==e.parent;)e=e.parent;e.postMessage((await na.getPDF(!0)).cloudID,`*`)}async sendToOwner(e){let t=window;for(;t.parent&&t!==t.parent;)t=t.parent;t.postMessage(e.message,`*`)}async downloadGeneratedFile(e){let t=e.currentTarget;if(t?.classList.add(`loading`),e.fileType){let t=e.fileType,n={dxf:`dxf`,obj:`zip`,skp:`skp`,xml:`xml`,xls:`xls`,xlsx:`xlsx`}[t],{url:r,cloudID:i}=n?await na.generateExport(t):await na.getPDF(!!e.lastCloudID);de?.SaveToDisk(r,`planning_${i}.${n??`pdf`}`)}t?.classList.remove(`loading`)}async downloadFurncloudFile(e){let t=e.sessionStorageKey;if(ia.has(t)){let n=await ra.getCloudId(),r=ia.get(t)?.password,i=await na.getFurncloudFile(n,e.fileType,r);i&&i.url&&i.url.length>0&&de?.SaveToDisk(i.url,`planning_${n}.${e.fileType}`)}}async frontState(e){e[`default-state`]!=null&&this.front==null&&(this.front=e[`default-state`]);let t=e.value===void 0?!this.front:e.value;e[`prioritise-accessoires`]&&(t=!this.accessoires),await O.frontState(t),this.front=e[`prioritise-accessoires`]?void 0:t}async toggleAccessoires(e){let t=this.accessoires;e[`prioritise-front-state`]&&this.front!=null&&(t=this.front),await O.frontState(t),this.front=this.front==null?void 0:t,this.accessoires=!this.accessoires,await O.setAccessories(this.accessoires)}async communicatorMessage(e){let t={command:e.command,args:e.parameters?e.parameters:[]};if(t.command)return await j.postMessage(t.command,...t.args)}async updateAnimationToolbarButton(){let e=await O.getAnimationStatus();e!=null&&await pe.emitAsync(`fv-animation-toolbar-button:sync-active`,{data:{mode:e.mode},target:{tag:`fv-animation-toolbar-button`,all:!0}})}async webcabToggleDimensionVisuals(){R.findAll(`fv-webcab-ui`).length>0?await pe.emitAsync(`fv-webcab-ui:toggle-dimension-visuals`,{data:{},target:{tag:`fv-webcab-ui`,all:!0}}):await pe.emitAsync(`configurator-api-state-toggle`,{data:{group:`webcab-global-states`,target:`WEBCAB_DIMENSION_VISUALS_DISABLED_L`}})}async deleteFitting(e){e.level!=null&&await O.dhTodo([`1`,{params:[(e.level+1).toString()],manu:window.g_article.manu,kataManu:window.g_article.manu}])}async moveFitting(e){e.level!=null&&await O.dhTodo([`1`,{params:[(e.level+2).toString()],manu:window.g_article.manu,kataManu:window.g_article.manu}])}async setSelectable(e){if(e.type&&Array.isArray(e.type)){await O.setSelectableMultiTypes(e.type);return}e.type&&e.type.length>0?(await O.setSelectable(e.type),e.action&&e.action.length>0&&await O.setSelectionActionGroup(e.action)):await O.setSelectable()}async openLink(e){if(e[`new-tab`]&&e.link){window.open(e.link);return}e.link&&(window.location=e.link)}async sendToCart(e){let t=e?.[`external-parameters`],n=[];t&&(n=t.map(e=>{let t=R.find(e.tag);return{parameter:e.name,value:t[e.property]}})),await O.addToCart(n)}async refreshAllCardContainers(e){let t=e.refetch==null?!1:e.refetch,n=e[`include-hidden`]==null?!1:e[`include-hidden`],r=e[`selection-result-filter-reset-targets`],i=e[`selection-result-filter-reset-excludes`];Da.RefreshAll({refetch:t,includeHidden:n,selectionResultFilterResetTargets:r,selectionResultFilterResetExcludes:i})}async toggleApiStateResetCameraSave(e){if(e.group&&e.target){let t=e.group,n=e.target,r=z.Data[t];if(r){let i=r[n];i&&i.state!==void 0&&(await ve.SetApiData({groups:[{name:t,modifications:[{target:n,type:`int`,value:1}]}]}),await O.resetCameraView(!1),setTimeout(async()=>{await O.frontState(!0),await O.downloadPDF(e&&e.custom?e.custom:!1),await ve.SetApiData({groups:[{name:t,modifications:[{target:n,type:`int`,value:+!!i.state}]}]})},1e3))}}}async configuratorSetApiState(e){if(e.group&&e.target){let t=e.group,n=e.target,r=z.Data[t];r&&Object.keys(r).includes(n)&&await ve.SetApiData({groups:[{name:t,modifications:[{target:n,type:`int`,value:+!!e.state}]}]})}}async configuratorApiStateToggle(e){if(e.group&&e.target){let t=e.group,n=e.target,r=z.Data[t];if(r){let e=r[n];e&&e.state!==void 0&&(await ve.SetApiData({groups:[{name:t,modifications:[{target:n,type:`int`,value:+!e.state}]}]}),await pe.emitAsync(`refresh-all-configurator-forms`))}}}async reloadWindow(e){e&&e.preventLeaveConfirmation!==void 0&&(we.PreventLeaveConfirmation=e.preventLeaveConfirmation),window.location.reload()}async setFpVariable(e){await j.IsAppReady,await O.dhTodo([`3`,{params:[`-1`,`0`,e.key,e.type,e.value],manu:window.g_article.manu,kataManu:window.g_article.manu}])}async setAttributeOnUrlWithCloudId(e){new URL(window.location.href).searchParams.has(`cloudId`)&&await pe.emitAsync(`set-attribute`,e)}async gtmPush(e){let t={event:e.event};Object.keys(e).forEach(n=>{if(n!==`event`){let r=e[n].split(`.`),i=window.g_dataInterface[r[0]];r=r.slice(1),r.forEach(e=>{i&&=i[e]}),t[n]=i||e[n]}}),ye?.push(t)}async setCameraZoom(e){let t=e.zoom;if(typeof t.Perspective==`string`){let e=Pa[t.Perspective];e&&(t.Perspective=e)}await O.setCameraZoom(t)}async setLanguage(e){let t=e?.langCode;t&&(await O.setLanguage(t),await A.setLanguage(t),Da.RefreshAll({refetch:!0,includeHidden:!1}),await H.WaitForAllCardContainerFetchPromises(),await pe.emitAsync(`fv-equipment-list:reload`,{data:{},target:{tag:`fv-equipment-list`,query:`*`}}),window.dispatchEvent(new CustomEvent(`language-changed`,{detail:t,bubbles:!0,composed:!0})))}async requestFullscreen(e){let t;if(e.query&&(t=document.querySelector(e.query)))try{document.fullscreenElement?await document.exitFullscreen():await t.requestFullscreen()}catch(e){e instanceof Error&&console.error(`Error attempting to enable full-screen mode: ${e.message}`)}}async dispatchStateEvent(e){!e||!e.state||await pe.emitAsync(e.state,{data:e.data,target:e.target})}scrollToTop(e){let t=t=>{let n={top:0,left:0,behavior:e.behavior?e.behavior:`auto`};t.scrollTo(n)};if(e.tag&&e.tag.length>0){if(e.selector&&e.selector.length>0){let n=R.findAll(e.tag,e.selector);for(let e of n)t(e)}}else if(e.selector&&e.selector.length>0){let n=document.querySelector(e.selector);n&&t(n)}}},Ra=new Map([[`send-cloud-id-to-owner`,()=>La.sendCloudIdToOwner()],[`send-to-owner`,e=>La.sendToOwner(e)],[`camera-zoom-in`,async()=>{await O.cameraZoom(1)}],[`camera-zoom-out`,async()=>{await O.cameraZoom(-1)}],[`reset-camera`,async e=>{await O.resetCameraView(e&&e.animate!==void 0?e.animate:!0)}],[`undo`,async()=>{await O.undo()}],[`redo`,async()=>{alert(`TODO: implement redo!`)}],[`save`,async e=>{await O.downloadPDF(e&&e.custom?e.custom:!1)}],[`download-generated-file`,e=>La.downloadGeneratedFile(e)],[`download-furncloud-file`,e=>La.downloadFurncloudFile(e)],[`trigger-animation`,async()=>{await O.triggerAnimation()}],[`front-state`,e=>La.frontState(e)],[`toggle-accessoires`,e=>La.toggleAccessoires(e)],[`toggle-dimensions`,async()=>{await O.toggleMeasurement()}],[`take-screenshot`,async e=>{await O.downloadScreenshot(e.logo?e.logo:void 0)}],[`show-share-component`,async()=>{await O.showShareComponent()}],[`communicator-message`,e=>La.communicatorMessage(e)],[`update-animation-toolbar-button`,()=>La.updateAnimationToolbarButton()],[`webcab-toggle-dimension-visuals`,()=>La.webcabToggleDimensionVisuals()],[`delete-fitting`,e=>La.deleteFitting(e)],[`move-fitting`,e=>La.moveFitting(e)],[`set-selectable`,e=>La.setSelectable(e)],[`open-link`,e=>La.openLink(e)],[`send-to-cart`,e=>La.sendToCart(e)],[`toggle-api-state-reset-camera-save`,e=>La.toggleApiStateResetCameraSave(e)],[`configurator-set-api-state`,e=>La.configuratorSetApiState(e)],[`configurator-api-state-toggle`,e=>La.configuratorApiStateToggle(e)],[`configurator-api-fetch`,async()=>{}],[`reload-window`,e=>La.reloadWindow(e)],[`set-fp-variable`,e=>La.setFpVariable(e)],[`set-property`,async e=>{await O.modifyProperty(JSON.stringify(e.property),e.options)}],[`set-attribute-on-url-with-cloud-id`,e=>La.setAttributeOnUrlWithCloudId(e)],[`gtm-push`,e=>La.gtmPush(e)],[`set-camera-zoom`,e=>La.setCameraZoom(e)],[`fit-camera-viewport`,async e=>{await O.fitCamera(e)}],[`place-article`,async e=>{await O.placePO({manufacturer:window.g_article.manu,program:e.program,extParameter:{},articleNumber:e[`article-number`]})}],[`execute-custom-event`,async e=>{await O.executeCustomEvent(e?.command,e?.instanceIdent,e?.parameters)}],[`set-element-selected`,async e=>{await O.selectObjectInScene(e.instanceIdent)}],[`set-language`,e=>La.setLanguage(e)],[`reset-scene-action`,async()=>{await O.resetSceneAction()}],[`set-manu-prog`,async e=>{await ta.setManuProg(e?.manu,e?.calcManu,e?.prog,!1)}],[`disable-3d-text`,async e=>{await O.setDisable3DText(e.value==null?!1:e.value)}],[`request-fullscreen`,e=>La.requestFullscreen(e)],[`dispatch-state`,e=>La.dispatchStateEvent(e)],[`switch-transfer-level`,async e=>{O.switchTransferLevel(e)}],[`scroll-to-top`,e=>La.scrollToTop(e)],[`refresh-all-card-containers`,async e=>La.refreshAllCardContainers(e)],[`card-container-set-show-before-slot`,e=>Da.SetShowBeforeSlot(e)],[`card-container-set-show-id-slot`,e=>Da.SetShowIdSlot(e)],[`card-containers-reset-selection-result-filter`,e=>Da.ResetSelectionResultFilter(e)],[`clear-card-container`,e=>Da.Clear(e)],[`refetch-card-container`,e=>Da.Refetch(e)],[`card-containers:click-card`,e=>Da.ClickCard(e)],[`trigger-root-level-selection-single-entry-skip`,async e=>Da.ReTriggerSingleEntrySkip(e)]]),U=new class{async _dispatchPostEvents(e){if(e&&e[`post-events`]){let t=e[`post-events`];for(let n=0;n<t.length;++n){let r=t[n];if(e[`dispatch-post-events-synchronized-in-order`]||e[`post-events-sync`]){await this.dispatchAsyncEvent(r.id,r.data?r.data:{});continue}return this.dispatch(r.id,r.data?r.data:{})}}}_readLegacySelection(e){if(!e)return;let t=e=>typeof e==`string`&&e.length>0?e:void 0,n=(...n)=>{for(let r of n){let n=t(e[r]);if(n)return n}},r=[];if(e.components&&Array.isArray(e.components))for(let t of e.components)r.push({tag:t.name,query:t.selector,all:t.all});let i=n(`tag`,`component`,`steps-component`);if(!i)return r;let a=e.all==null?void 0:e.all,o=n(`query`,`selector`);return r.push({tag:i,query:o,all:a}),r}_unwrapEnvelope(e){if(e&&typeof e==`object`&&!Array.isArray(e)){let t=Object.keys(e);if(t.length===2&&t.includes(`data`)&&t.includes(`target`))return e.data}return e}constructor(){window.addEventListener(`triggereventhandlereventevent`,e=>{e.detail&&e.detail.events&&U.dispatchEventList(e.detail.events,e.detail.async)}),pe.on(`shared:event-fired`,async e=>{await this._dispatchPostEvents(e.data.data)});for(let[e,t]of Ra)pe.on(e,async e=>await t(this._unwrapEnvelope(e)));for(let[e,t]of Ia){if(pe.has(e)){console.warn(`duplicate event in LegacyEventAliases`);continue}pe.on(e,async e=>{await t(this._unwrapEnvelope(e))})}}async dispatchAsyncEvent(e,t){await pe.emitAsync(e,t)}dispatch(e,t){return pe.has(e)?(pe.emitAsync(e,t),!0):!1}async dispatchEventList(e,t){if(e&&e.length>0){if(t){for(let t of e)this.dispatch(t.id,t.data?t.data:{});return}for(let t of e)await this.dispatchAsyncEvent(t.id,t.data?t.data:{})}}async dispatchState(e,t,n){let r=[],i=n=>{if(n.ListensToState!=null&&!n.ListensToState(e)){console.warn(`event triggered on element that does not listen to it! element:`,n,`event:`,e,`data:`,t);return}let i=new Xi(e,t);n.dispatchEvent(i),r.push(i)};if(n==null)i(window);else if(typeof n.dispatchEvent==`function`)i(n);else{let r=n;if(!r.tag||r.tag.length<1){console.warn(`target tag for state empty!`,e,t,n);return}let a=R.findAll(r.tag,r.query??``);if(a.length<1){console.warn(`no valid target elements for state`,e,t,n);return}r.all?a.forEach(e=>i(e)):i(a[0])}await Promise.allSettled(r.map(e=>e.whenSettled()))}RegisterStateHandler(e){pe.has(e)||pe.on(e,async t=>{let n=t;if(n.data&&n.data.data&&(n=n.data),n.target==null||n.target.tag==null){let t=this._readLegacySelection(n.data);if(t!=null){for(let r of t)await this.dispatchState(e,n.data,r);return}}let r=Array.isArray(n.target)?n.target:[n.target];for(let t of r)await this.dispatchState(e,n.data,t)})}},za=`@charset "UTF-8";[dh-button]{display:inline-block;height:auto;width:auto;vertical-align:middle;font-family:Roboto,system-ui,sans-serif}[dh-button]::part(root),[dh-infobox]::part(dh-button-root),[dh-merge-dialog]::part(dh-button-root),[dh-merge-dialog]::part(dh-button-nav-root),[dh-table-old]::part(dh-button-root),[dh-table]::part(dh-button-root),[dh-window]::part(dh-button-root),[dh-multi-selectbox]::part(dh-button-root),[dh-multi-selectbox]::part(item-dh-button-root),[dh-multi-selectbox-item]::part(dh-button-root){display:inline-flex;align-items:center;justify-content:center;user-select:none;-webkit-user-select:none;gap:var(--dh-button-gap, 8px);min-height:var(--dh-button-height, 40px);height:auto;min-width:var(--dh-button-min-width, 64px);padding-inline:var(--dh-button-padding-inline, 24px);padding-block:4px;border:none;border-radius:var(--dh-button-radius, 9999px);cursor:pointer;position:relative;box-sizing:border-box;text-align:center;width:auto;transition:background-color .2s cubic-bezier(.2,0,0,1),box-shadow .2s cubic-bezier(.2,0,0,1),border-color .2s cubic-bezier(.2,0,0,1),transform .2s cubic-bezier(.2,0,0,1)}[dh-button]::part(label),[dh-infobox]::part(dh-button-label),[dh-merge-dialog]::part(dh-button-label),[dh-merge-dialog]::part(dh-button-nav-label),[dh-table-old]::part(dh-button-label),[dh-table]::part(dh-button-label),[dh-window]::part(dh-button-label),[dh-multi-selectbox]::part(dh-button-label),[dh-multi-selectbox]::part(item-dh-button-label),[dh-multi-selectbox-item]::part(dh-button-label){font-family:Roboto,system-ui,sans-serif;font-size:.875rem;font-weight:500;line-height:1.25rem;letter-spacing:.00625rem;white-space:normal;overflow-wrap:break-word}[dh-button]::part(icon),[dh-infobox]::part(dh-button-icon),[dh-merge-dialog]::part(dh-button-icon),[dh-merge-dialog]::part(dh-button-nav-icon),[dh-table-old]::part(dh-button-icon),[dh-table]::part(dh-button-icon),[dh-window]::part(dh-button-icon),[dh-multi-selectbox]::part(dh-button-icon),[dh-multi-selectbox]::part(item-dh-button-icon),[dh-multi-selectbox-item]::part(dh-button-icon){width:var(--dh-button-icon-size, 18px);height:var(--dh-button-icon-size, 18px);object-fit:contain;flex-shrink:0}[dh-button][variant=filled]::part(root),[dh-infobox]::part(dh-button-root),[dh-merge-dialog]::part(dh-button-root),[dh-merge-dialog]::part(dh-button-nav-root),[dh-window]::part(dh-button-root),[dh-multi-selectbox]::part(dh-button-root),[dh-multi-selectbox]::part(item-dh-button-root),[dh-multi-selectbox-item]::part(dh-button-root){background-color:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);box-shadow:none}[dh-button][variant=filled]::part(label),[dh-infobox]::part(dh-button-label),[dh-merge-dialog]::part(dh-button-label),[dh-merge-dialog]::part(dh-button-nav-label),[dh-window]::part(dh-button-label),[dh-multi-selectbox]::part(dh-button-label),[dh-multi-selectbox]::part(item-dh-button-label),[dh-multi-selectbox-item]::part(dh-button-label){color:var(--md-sys-color-on-primary)}[dh-button][variant=filled]:not([disabled]):hover::part(root),[dh-infobox]::part(dh-button-root):hover,[dh-merge-dialog]::part(dh-button-root):hover,[dh-merge-dialog]::part(dh-button-nav-root):hover,[dh-window]::part(dh-button-root):hover,[dh-multi-selectbox]::part(dh-button-root):hover,[dh-multi-selectbox]::part(item-dh-button-root):hover,[dh-multi-selectbox-item]::part(dh-button-root):hover{box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-primary-rgb),.08),0 1px 2px #0000004d,0 1px 3px 1px #00000026}[dh-button][variant=filled]:not([disabled]):focus-within::part(root),[dh-infobox]::part(dh-button-root):focus-within,[dh-merge-dialog]::part(dh-button-root):focus-within,[dh-merge-dialog]::part(dh-button-nav-root):focus-within,[dh-window]::part(dh-button-root):focus-within,[dh-multi-selectbox]::part(dh-button-root):focus-within,[dh-multi-selectbox]::part(item-dh-button-root):focus-within,[dh-multi-selectbox-item]::part(dh-button-root):focus-within{box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-primary-rgb),.12);outline:2px solid var(--md-sys-color-primary);outline-offset:2px}[dh-button][variant=filled]:not([disabled]):active::part(root),[dh-infobox]::part(dh-button-root):active,[dh-merge-dialog]::part(dh-button-root):active,[dh-merge-dialog]::part(dh-button-nav-root):active,[dh-window]::part(dh-button-root):active,[dh-multi-selectbox]::part(dh-button-root):active,[dh-multi-selectbox]::part(item-dh-button-root):active,[dh-multi-selectbox-item]::part(dh-button-root):active{box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-primary-rgb),.12);transform:scale(.97)}[dh-button][variant=outlined]::part(root),[dh-table-old]::part(dh-button-root),[dh-table]::part(dh-button-root){background-color:transparent;color:var(--md-sys-color-primary);border:1px solid var(--md-sys-color-outline-variant);box-shadow:none}[dh-button][variant=outlined]::part(label),[dh-table-old]::part(dh-button-label),[dh-table]::part(dh-button-label){color:var(--md-sys-color-primary)}[dh-button][variant=outlined]::part(icon),[dh-table-old]::part(dh-button-icon),[dh-table]::part(dh-button-icon){filter:none}[dh-button][variant=outlined]:not([disabled]):hover::part(root),[dh-table-old]::part(dh-button-root):hover,[dh-table]::part(dh-button-root):hover{background-color:rgba(var(--md-sys-color-primary-rgb),.08);border-color:var(--md-sys-color-outline)}[dh-button][variant=outlined]:not([disabled]):focus-within::part(root),[dh-table-old]::part(dh-button-root):focus-within,[dh-table]::part(dh-button-root):focus-within{border-color:var(--md-sys-color-primary);background-color:rgba(var(--md-sys-color-primary-rgb),.12);outline:2px solid var(--md-sys-color-primary);outline-offset:2px}[dh-button][variant=outlined]:not([disabled]):active::part(root),[dh-table-old]::part(dh-button-root):active,[dh-table]::part(dh-button-root):active{border-color:var(--md-sys-color-outline);background-color:rgba(var(--md-sys-color-primary-rgb),.12);transform:scale(.97)}[dh-button][variant=standard]::part(root){background-color:transparent;color:var(--md-sys-color-primary);border:none;box-shadow:none;padding-inline:12px;min-width:auto}[dh-button][variant=standard]::part(label){color:var(--md-sys-color-primary)}[dh-button][variant=standard]::part(icon){filter:none}[dh-button][variant=standard]:not([disabled]):hover::part(root){background-color:rgba(var(--md-sys-color-primary-rgb),.08)}[dh-button][variant=standard]:not([disabled]):focus-within::part(root){background-color:rgba(var(--md-sys-color-primary-rgb),.12);outline:2px solid var(--md-sys-color-primary);outline-offset:2px}[dh-button][variant=standard]:not([disabled]):active::part(root){background-color:rgba(var(--md-sys-color-primary-rgb),.12);transform:scale(.97)}[dh-button][variant=elevated]::part(root){background-color:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-primary);border:none;box-shadow:0 1px 2px #0000004d,0 1px 3px 1px #00000026}[dh-button][variant=elevated]::part(label){color:var(--md-sys-color-primary)}[dh-button][variant=elevated]::part(icon){filter:none}[dh-button][variant=elevated]:not([disabled]):hover::part(root){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-primary-rgb),.08),0 1px 2px #0000004d,0 2px 6px 2px #00000026}[dh-button][variant=elevated]:not([disabled]):focus-within::part(root){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-primary-rgb),.12),0 1px 2px #0000004d,0 1px 3px 1px #00000026;outline:2px solid var(--md-sys-color-primary);outline-offset:2px}[dh-button][variant=elevated]:not([disabled]):active::part(root){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-primary-rgb),.12),0 1px 2px #0000004d,0 1px 3px 1px #00000026;transform:scale(.97)}[dh-button][variant=tonal]::part(root){background-color:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);border:none;box-shadow:none}[dh-button][variant=tonal]::part(label){color:var(--md-sys-color-on-secondary-container)}[dh-button][variant=tonal]::part(icon){filter:none}[dh-button][variant=tonal]:not([disabled]):hover::part(root){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-secondary-container-rgb),.08),0 1px 2px #0000004d,0 1px 3px 1px #00000026}[dh-button][variant=tonal]:not([disabled]):focus-within::part(root){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-secondary-container-rgb),.12);outline:2px solid var(--md-sys-color-primary);outline-offset:2px}[dh-button][variant=tonal]:not([disabled]):active::part(root){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-secondary-container-rgb),.12);transform:scale(.97)}[dh-button][variant=dashed]::part(root){background-color:transparent;color:var(--md-sys-color-primary);border:1px dashed var(--md-sys-color-primary);box-shadow:none}[dh-button][variant=dashed]::part(label){color:var(--md-sys-color-primary)}[dh-button][variant=dashed]:not([disabled]):hover::part(root){background-color:var(--md-sys-color-primary-container);border-style:solid}[dh-button][variant=dashed]:not([disabled]):focus-within::part(root){background-color:var(--md-sys-color-primary-container);outline:2px solid var(--md-sys-color-primary);outline-offset:2px}[dh-button][variant=dashed]:not([disabled]):active::part(root){background-color:var(--md-sys-color-primary-container);transform:scale(.97)}[dh-button][disabled]::part(root),[dh-button][disabled][variant=filled]::part(root){background-color:rgba(var(--md-sys-color-on-surface-rgb),.12);color:rgba(var(--md-sys-color-on-surface-rgb),.38);box-shadow:none;cursor:not-allowed;pointer-events:none}[dh-button][disabled]::part(label),[dh-button][disabled][variant=filled]::part(label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-button][disabled]::part(icon),[dh-button][disabled][variant=filled]::part(icon){opacity:.38;filter:none}[dh-button][disabled][variant=outlined]::part(root){background-color:transparent;border-color:rgba(var(--md-sys-color-on-surface-rgb),.12);color:rgba(var(--md-sys-color-on-surface-rgb),.38);box-shadow:none;cursor:not-allowed;pointer-events:none}[dh-button][disabled][variant=outlined]::part(label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-button][disabled][variant=outlined]::part(icon){opacity:.38}[dh-button][disabled][variant=standard]::part(root){background-color:transparent;color:rgba(var(--md-sys-color-on-surface-rgb),.38);box-shadow:none;cursor:not-allowed;pointer-events:none}[dh-button][disabled][variant=standard]::part(label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-button][disabled][variant=standard]::part(icon){opacity:.38}[dh-button][disabled][variant=elevated]::part(root){background-color:rgba(var(--md-sys-color-on-surface-rgb),.12);color:rgba(var(--md-sys-color-on-surface-rgb),.38);box-shadow:none;cursor:not-allowed;pointer-events:none}[dh-button][disabled][variant=elevated]::part(label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-button][disabled][variant=elevated]::part(icon){opacity:.38}[dh-button][disabled][variant=tonal]::part(root){background-color:rgba(var(--md-sys-color-on-surface-rgb),.12);color:rgba(var(--md-sys-color-on-surface-rgb),.38);box-shadow:none;cursor:not-allowed;pointer-events:none}[dh-button][disabled][variant=tonal]::part(label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-button][disabled][variant=tonal]::part(icon){opacity:.38}[dh-button][img]:not([img=""])::part(root),[dh-button][variant=filled][img]:not([img=""])::part(root),[dh-button][variant=outlined][img]:not([img=""])::part(root),[dh-button][variant=elevated][img]:not([img=""])::part(root),[dh-button][variant=tonal][img]:not([img=""])::part(root){padding-inline-start:16px;padding-inline-end:24px}[dh-button][variant=standard][img]:not([img=""])::part(root){padding-inline-start:12px;padding-inline-end:16px}[dh-button][icon-button]::part(root),[dh-table-old]::part(dh-icon-button-root),[dh-table]::part(dh-icon-button-root),[dh-merge-dialog]::part(dh-icon-button-nav-root){width:40px;max-width:100%;min-width:0;height:40px;max-height:100%;min-height:0;aspect-ratio:1/1;padding:0;gap:0;border:none;border-radius:9999px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box}[dh-button][icon-button][variant=standard]::part(root){background-color:transparent;color:var(--md-sys-color-on-surface-variant);box-shadow:none}[dh-button][icon-button][variant=filled]::part(root),[dh-merge-dialog]::part(dh-icon-button-nav-root){background-color:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);box-shadow:none}[dh-button][icon-button][variant=tonal]::part(root){background-color:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);box-shadow:none}[dh-button][icon-button][variant=outlined]::part(root){background-color:transparent;color:var(--md-sys-color-on-surface-variant);box-shadow:inset 0 0 0 1px var(--md-sys-color-outline-variant)}[dh-table-old]::part(dh-icon-button-root),[dh-table]::part(dh-icon-button-root){background-color:transparent;color:var(--md-sys-color-primary);box-shadow:inset 0 0 0 1px var(--md-sys-color-outline)}[dh-button][icon-button][variant=elevated]::part(root){background-color:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-primary);box-shadow:0 1px 2px #0000004d,0 1px 3px 1px #00000026}[dh-button][icon-button][variant=standard]:not([disabled]):hover::part(root){background-color:rgba(var(--md-sys-color-on-surface-rgb),.08)}[dh-button][icon-button][variant=filled]:not([disabled]):hover::part(root),[dh-merge-dialog]::part(dh-icon-button-nav-root):hover{box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-primary-rgb),.08)}[dh-button][icon-button][variant=tonal]:not([disabled]):hover::part(root){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-secondary-container-rgb),.08)}[dh-button][icon-button][variant=outlined]:not([disabled]):hover::part(root){background-color:rgba(var(--md-sys-color-on-surface-rgb),.08);box-shadow:inset 0 0 0 1px var(--md-sys-color-outline)}[dh-table-old]::part(dh-icon-button-root):hover,[dh-table]::part(dh-icon-button-root):hover{background-color:rgba(var(--md-sys-color-primary-rgb),.08);box-shadow:inset 0 0 0 1px var(--md-sys-color-outline)}[dh-button][icon-button][variant=elevated]:not([disabled]):hover::part(root){box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026,inset 0 0 0 100vmax rgba(var(--md-sys-color-primary-rgb),.08)}[dh-button][icon-button]:not([disabled]):focus-within::part(root),[dh-table-old]::part(dh-icon-button-root):focus-within,[dh-table]::part(dh-icon-button-root):focus-within,[dh-merge-dialog]::part(dh-icon-button-nav-root):focus-within{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}[dh-button][icon-button]:not([disabled]):active::part(root),[dh-table-old]::part(dh-icon-button-root):active,[dh-table]::part(dh-icon-button-root):active,[dh-merge-dialog]::part(dh-icon-button-nav-root):active{transform:scale(.92)}[dh-button][icon-button][disabled][variant=filled]::part(root),[dh-button][icon-button][disabled][variant=tonal]::part(root),[dh-button][icon-button][disabled][variant=elevated]::part(root){background-color:rgba(var(--md-sys-color-on-surface-rgb),.12);color:rgba(var(--md-sys-color-on-surface-rgb),.38);box-shadow:none;cursor:not-allowed;pointer-events:none}[dh-button][icon-button][disabled][variant=standard]::part(root){background-color:transparent;color:rgba(var(--md-sys-color-on-surface-rgb),.38);cursor:not-allowed;pointer-events:none}[dh-button][icon-button][disabled][variant=outlined]::part(root),[dh-table-old]::part(dh-icon-button-root) [disabled],[dh-table]::part(dh-icon-button-root) [disabled]{background-color:transparent;color:rgba(var(--md-sys-color-on-surface-rgb),.38);box-shadow:inset 0 0 0 1px rgba(var(--md-sys-color-on-surface-rgb),.12);cursor:not-allowed;pointer-events:none}[dh-checkbox]{display:inline-flex;vertical-align:middle}[dh-checkbox]::part(root),[dh-settings-grid]::part(dh-checkbox-root),[dh-setting-item]::part(dh-checkbox-root),[dh-table-old]::part(dh-checkbox-root),[dh-table]::part(dh-checkbox-root){display:inline-flex;align-items:center;justify-content:center;cursor:pointer}[dh-checkbox]::part(input),[dh-settings-grid]::part(dh-checkbox-input),[dh-setting-item]::part(dh-checkbox-input),[dh-table-old]::part(dh-checkbox-input),[dh-table]::part(dh-checkbox-input){appearance:none;-webkit-appearance:none;width:20px;height:20px;border:2px solid var(--md-sys-color-on-surface-variant);border-radius:4px;background-color:transparent;background-size:contain;background-position:center;background-repeat:no-repeat;cursor:pointer;margin:0;padding:0;outline:none;box-sizing:border-box;transition:background-color .2s cubic-bezier(.2,0,0,1),border-color .2s cubic-bezier(.2,0,0,1),box-shadow .2s cubic-bezier(.2,0,0,1)}[dh-checkbox]:not([disabled]):not([checked]):hover::part(input),[dh-settings-grid]::part(dh-checkbox-input):not(:checked):not(:disabled):hover,[dh-setting-item]::part(dh-checkbox-input):not(:checked):not(:disabled):hover,[dh-table-old]::part(dh-checkbox-input):not(:checked):not(:disabled):hover,[dh-table]::part(dh-checkbox-input):not(:checked):not(:disabled):hover{border-color:var(--md-sys-color-on-surface)}[dh-checkbox]:not([disabled]):not([checked]):focus-within::part(input),[dh-settings-grid]::part(dh-checkbox-input):not(:checked):not(:disabled):focus-visible,[dh-setting-item]::part(dh-checkbox-input):not(:checked):not(:disabled):focus-visible,[dh-table-old]::part(dh-checkbox-input):not(:checked):not(:disabled):focus-visible,[dh-table]::part(dh-checkbox-input):not(:checked):not(:disabled):focus-visible{border-color:var(--md-sys-color-on-surface);box-shadow:0 0 0 2px rgba(var(--md-sys-color-on-surface-rgb),.12)}[dh-checkbox][checked]::part(input),[dh-settings-grid]::part(dh-checkbox-input):checked,[dh-setting-item]::part(dh-checkbox-input):checked,[dh-table-old]::part(dh-checkbox-input):checked,[dh-table]::part(dh-checkbox-input):checked{background-color:var(--md-sys-color-primary);border-color:var(--md-sys-color-primary);background-image:var(--md-comp-checkbox-mark)}[dh-checkbox][checked]:not([disabled]):hover::part(input),[dh-settings-grid]::part(dh-checkbox-input):checked:not(:disabled):hover,[dh-setting-item]::part(dh-checkbox-input):checked:not(:disabled):hover,[dh-table-old]::part(dh-checkbox-input):checked:not(:disabled):hover,[dh-table]::part(dh-checkbox-input):checked:not(:disabled):hover{box-shadow:0 0 0 2px rgba(var(--md-sys-color-primary-rgb),.12)}[dh-checkbox][checked]:not([disabled]):focus-within::part(input),[dh-settings-grid]::part(dh-checkbox-input):checked:not(:disabled):focus-visible,[dh-setting-item]::part(dh-checkbox-input):checked:not(:disabled):focus-visible,[dh-table-old]::part(dh-checkbox-input):checked:not(:disabled):focus-visible,[dh-table]::part(dh-checkbox-input):checked:not(:disabled):focus-visible{box-shadow:0 0 0 2px rgba(var(--md-sys-color-primary-rgb),.2)}[dh-checkbox][indeterminate]::part(input),[dh-settings-grid]::part(dh-checkbox-input):indeterminate,[dh-setting-item]::part(dh-checkbox-input):indeterminate,[dh-table-old]::part(dh-checkbox-input):indeterminate,[dh-table]::part(dh-checkbox-input):indeterminate{background-color:var(--md-sys-color-primary);border-color:var(--md-sys-color-primary);background-image:linear-gradient(var(--md-sys-color-on-primary),var(--md-sys-color-on-primary));background-size:10px 2px;background-position:center;background-repeat:no-repeat}[dh-checkbox][indeterminate]:not([disabled]):hover::part(input),[dh-settings-grid]::part(dh-checkbox-input):indeterminate:not(:disabled):hover,[dh-setting-item]::part(dh-checkbox-input):indeterminate:not(:disabled):hover,[dh-table-old]::part(dh-checkbox-input):indeterminate:not(:disabled):hover,[dh-table]::part(dh-checkbox-input):indeterminate:not(:disabled):hover{box-shadow:0 0 0 2px rgba(var(--md-sys-color-primary-rgb),.12)}[dh-checkbox][disabled]:not([checked])::part(root){cursor:not-allowed;pointer-events:none}[dh-checkbox][disabled]:not([checked])::part(input),[dh-settings-grid]::part(dh-checkbox-input):disabled:not(:checked),[dh-setting-item]::part(dh-checkbox-input):disabled:not(:checked),[dh-table-old]::part(dh-checkbox-input):disabled:not(:checked),[dh-table]::part(dh-checkbox-input):disabled:not(:checked){border-color:rgba(var(--md-sys-color-on-surface-rgb),.38);cursor:not-allowed}[dh-checkbox][disabled][checked]::part(root){cursor:not-allowed;pointer-events:none}[dh-checkbox][disabled][checked]::part(input),[dh-settings-grid]::part(dh-checkbox-input):disabled:checked,[dh-setting-item]::part(dh-checkbox-input):disabled:checked,[dh-table-old]::part(dh-checkbox-input):disabled:checked,[dh-table]::part(dh-checkbox-input):disabled:checked{background-color:rgba(var(--md-sys-color-on-surface-rgb),.38);border-color:rgba(var(--md-sys-color-on-surface-rgb),.38);cursor:not-allowed}[dh-settings-grid]::part(dh-checkbox-root),[dh-setting-item]::part(dh-checkbox-root){margin-left:16px}[dh-checkbox][variant=switch]::part(root),[dh-table]::part(dh-switch-root){position:relative;display:inline-flex;align-items:center;width:48px;height:28px}[dh-checkbox][variant=switch]::part(input),[dh-table]::part(dh-switch-track){appearance:none;-webkit-appearance:none;width:48px;height:28px;border:2px solid var(--md-sys-color-outline-variant);border-radius:14px;background-color:var(--md-sys-color-surface-container-highest);background-image:none;cursor:pointer;margin:0;padding:0;outline:none;box-sizing:border-box;transition:background-color .2s cubic-bezier(.2,0,0,1),border-color .2s cubic-bezier(.2,0,0,1)}[dh-checkbox][variant=switch]::part(handle),[dh-table]::part(dh-switch-handle){position:absolute;top:50%;left:5px;width:14px;height:14px;border-radius:50%;background-color:var(--md-sys-color-outline);transform:translateY(-50%);pointer-events:none;transition:left .2s cubic-bezier(.2,0,0,1),width .2s cubic-bezier(.2,0,0,1),height .2s cubic-bezier(.2,0,0,1),background-color .2s cubic-bezier(.2,0,0,1)}[dh-checkbox][variant=switch]:not([disabled]):not([checked]):hover::part(input),[dh-table]::part(dh-switch-track):not(:checked):not(:disabled):hover{border-color:var(--md-sys-color-on-surface-variant)}[dh-checkbox][variant=switch]:not([disabled]):not([checked]):hover::part(handle){background-color:var(--md-sys-color-on-surface-variant)}[dh-checkbox][variant=switch][checked]::part(input),[dh-table]::part(dh-switch-track):checked{background-color:var(--md-sys-color-primary);border-color:var(--md-sys-color-primary);background-image:none}[dh-checkbox][variant=switch][checked]:not([disabled]):hover::part(handle){background-color:var(--md-sys-color-primary-container)}[dh-checkbox][variant=switch][disabled]:not([checked])::part(input),[dh-table]::part(dh-switch-track):disabled:not(:checked){border-color:rgba(var(--md-sys-color-on-surface-rgb),.12);background-color:rgba(var(--md-sys-color-on-surface-rgb),.06)}[dh-checkbox][variant=switch][disabled]:not([checked])::part(handle){background-color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-checkbox][variant=switch][disabled][checked]::part(input),[dh-table]::part(dh-switch-track):disabled:checked{background-color:rgba(var(--md-sys-color-on-surface-rgb),.12);border-color:transparent}[dh-checkbox][variant=switch][disabled][checked]::part(handle){background-color:var(--md-sys-color-surface)}[dh-radio]::part(control){width:var(--dh-radio-control-size, 32px);height:var(--dh-radio-control-size, 32px);border-radius:50%;position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;transition:background-color .2s cubic-bezier(.2,0,0,1)}[dh-radio][disabled]::part(control){cursor:not-allowed}[dh-radio]:not([disabled])::part(control):hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.08)}[dh-radio]:not([disabled])[checked]::part(control):hover{background-color:rgba(var(--md-sys-color-primary-rgb),.08)}[dh-radio]:not([disabled])::part(control):active{background-color:rgba(var(--md-sys-color-on-surface-rgb),.12)}[dh-radio]:not([disabled])[checked]::part(control):active{background-color:rgba(var(--md-sys-color-primary-rgb),.12)}[dh-radio]::part(input){width:20px;height:20px;border-radius:50%;border:2px solid var(--md-sys-color-on-surface);background-color:transparent;cursor:pointer;transition:border-color .2s cubic-bezier(.2,0,0,1),background-color .2s cubic-bezier(.2,0,0,1)}[dh-radio][disabled]::part(input){border-color:rgba(var(--md-sys-color-on-surface-rgb),.38);cursor:not-allowed}[dh-radio][checked]::part(input){border-color:var(--md-sys-color-primary);background:radial-gradient(circle,var(--md-sys-color-primary) 0 5px,transparent 5px 100%)}[dh-radio][checked][disabled]::part(input){border-color:rgba(var(--md-sys-color-on-surface-rgb),.38);background:radial-gradient(circle,rgba(var(--md-sys-color-on-surface-rgb),.38) 0 5px,transparent 5px 100%)}[dh-radio]:not([disabled])::part(input):focus-visible{outline:none}[dh-radio]:not([disabled]):has(:focus-visible)::part(control){background-color:rgba(var(--md-sys-color-on-surface-rgb),.12)}[dh-radio]:not([disabled])[checked]:has(:focus-visible)::part(control){background-color:rgba(var(--md-sys-color-primary-rgb),.12)}[dh-radio]::part(label){font-family:Roboto,system-ui,sans-serif;font-size:.875rem;line-height:1.25rem;color:var(--md-sys-color-on-surface)}[dh-radio][disabled]::part(label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-infobox]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-infobox]::part(root){background-color:var(--md-sys-color-surface-container-low);border:1px solid var(--md-sys-color-outline-variant);border-radius:28px;box-shadow:0 2px 6px #0000001f,0 8px 24px #00000029;padding:24px;min-width:280px;max-width:560px}[dh-infobox]::part(header){padding:0 0 16px;justify-content:flex-start;font-size:1.5rem;font-weight:400}[dh-infobox]::part(label){font-size:1.5rem;font-weight:400;line-height:2rem;color:var(--md-sys-color-on-surface)}[dh-infobox]::part(content){padding:0 0 24px;justify-content:flex-start;align-items:flex-start;font-size:.875rem;font-weight:400;line-height:1.25rem;color:var(--md-sys-color-on-surface-variant)}[dh-infobox]::part(footer){padding:0;justify-content:flex-end;gap:8px}[dh-input]::part(trailing-icon){width:40px;height:40px;margin-right:4px;border-radius:50%;color:var(--md-sys-color-on-surface-variant);font-size:1.125rem;transition:background-color .2s cubic-bezier(.2,0,0,1),color .2s cubic-bezier(.2,0,0,1)}[dh-input]:not([disabled])::part(trailing-icon):hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.08);color:var(--md-sys-color-on-surface)}[dh-input]:not([disabled])::part(trailing-icon):focus-visible{outline:none;background-color:rgba(var(--md-sys-color-on-surface-rgb),.12);color:var(--md-sys-color-on-surface)}[dh-input][disabled]::part(trailing-icon){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-input][toggle-password][type=password]::part(input){padding-right:48px}[dh-input][type=checkbox]{display:inline-flex;width:auto;height:auto}[dh-input]:not([type=checkbox])::part(root),[dh-settings-grid]::part(dh-input-root),[dh-setting-item]::part(dh-input-root),[dh-table-old]::part(dh-filter-root),[dh-table]::part(dh-filter-root),[dh-table-old]::part(dh-input-root),[dh-table]::part(dh-input-root),[dh-multi-selectbox]::part(dh-input-root){display:flex;align-items:center;width:100%;min-height:40px;box-sizing:border-box;transition:border-color .2s cubic-bezier(.2,0,0,1),background-color .2s cubic-bezier(.2,0,0,1)}[dh-input]:not([type=checkbox])::part(input),[dh-settings-grid]::part(dh-input-input),[dh-setting-item]::part(dh-input-input),[dh-table-old]::part(dh-filter-input),[dh-table]::part(dh-filter-input),[dh-table-old]::part(dh-input-input),[dh-table]::part(dh-input-input),[dh-multi-selectbox]::part(dh-input-input){font-family:Roboto,system-ui,sans-serif;font-size:var(--dh-input-input-size, .875rem);font-weight:400;line-height:var(--dh-input-input-line-height, 1.25rem);letter-spacing:.015625rem;color:var(--md-sys-color-on-surface);caret-color:var(--md-sys-color-primary);padding:var(--dh-input-input-padding, 0 12px);border:none;outline:none;background:transparent;width:100%;height:100%;box-sizing:border-box;margin:0}[dh-input][type=checkbox]::part(root){width:auto;height:auto;border:none}[dh-input][type=checkbox]::part(input){padding:0;width:auto;height:auto}[dh-input]::part(root),[dh-input][variant=outlined]::part(root),[dh-table-old]::part(dh-filter-root),[dh-table]::part(dh-filter-root){border:var(--dh-input-root-border, 1px solid var(--md-sys-color-outline-variant));border-radius:var(--dh-input-root-radius, 4px);background-color:var(--dh-input-root-bg, transparent)}[dh-input]:not([variant]):not([disabled]):hover::part(root),[dh-input][variant=outlined]:not([disabled]):hover::part(root),[dh-table-old]::part(dh-filter-root):hover,[dh-table]::part(dh-filter-root):hover{border-color:var(--md-sys-color-outline)}[dh-input]:not([variant]):not([disabled]):focus-within::part(root),[dh-input][variant=outlined]:not([disabled]):focus-within::part(root),[dh-table-old]::part(dh-filter-root):focus-within,[dh-table]::part(dh-filter-root):focus-within{border-color:var(--md-sys-color-primary)}[dh-input][invalid]::part(root){border-color:var(--md-sys-color-error)}[dh-input][invalid]:focus-within::part(root){border-color:var(--md-sys-color-error)}[dh-input][invalid]::part(label){color:var(--md-sys-color-error)}[dh-input][invalid]::part(supporting-text){color:var(--md-sys-color-error)}[dh-input][variant=filled]::part(root){border:var(--dh-input-root-border, none);border-bottom:var(--dh-input-root-border-bottom, 1px solid var(--md-sys-color-on-surface-variant));border-radius:var(--dh-input-root-radius, 4px 4px 0 0);background-color:var(--dh-input-root-bg, var(--md-sys-color-surface-container-highest))}[dh-input][variant=filled]::part(input){padding:20px 16px 8px}[dh-input][variant=filled]:not([disabled]):hover::part(root){border-bottom-color:var(--md-sys-color-on-surface);box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-surface-rgb),.08)}[dh-input][variant=filled]:not([disabled]):focus-within::part(root){border-bottom-color:var(--md-sys-color-primary);box-shadow:var(--dh-input-root-focus-shadow, inset 0 -1px 0 0 var(--md-sys-color-primary))}[dh-input]{--dh-input-label-top: 50%;--dh-input-label-transform: translateY(-50%);--dh-input-label-font-size: .875rem;--dh-input-label-line-height: 1.25rem;--dh-input-label-bg: transparent}[dh-input]::part(label){position:absolute;left:12px;font-family:Roboto,system-ui,sans-serif;letter-spacing:.015625rem;color:var(--md-sys-color-on-surface-variant);pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 24px);transition:top .2s cubic-bezier(.2,0,0,1),transform .2s cubic-bezier(.2,0,0,1),font-size .2s cubic-bezier(.2,0,0,1),line-height .2s cubic-bezier(.2,0,0,1),color .2s cubic-bezier(.2,0,0,1),background-color .2s cubic-bezier(.2,0,0,1)}[dh-input]:not([variant])::part(label),[dh-input][variant=outlined]::part(label){left:12px;padding:0 4px}[dh-input]:not([variant]),[dh-input][variant=outlined]{--dh-input-label-floating-bg: var(--md-sys-color-surface)}[dh-input][variant=filled]{--dh-input-label-floating-top: 6px;--dh-input-label-floating-transform: translateY(0);--dh-input-label-floating-bg: transparent}[dh-input]:focus-within::part(label){color:var(--md-sys-color-primary)}[dh-input]::part(supporting-text),[dh-settings-grid]::part(dh-input-supporting-text),[dh-setting-item]::part(dh-input-supporting-text),[dh-table-old]::part(dh-input-supporting-text),[dh-table]::part(dh-input-supporting-text),[dh-table-old]::part(dh-filter-supporting-text),[dh-table]::part(dh-filter-supporting-text),[dh-multi-selectbox]::part(dh-input-supporting-text){font-family:Roboto,system-ui,sans-serif;font-size:.75rem;font-weight:400;line-height:1rem;letter-spacing:.025rem;color:var(--md-sys-color-on-surface-variant);padding:4px 16px 0}[dh-input][disabled]::part(root),[dh-input][disabled][variant=outlined]::part(root){border-color:rgba(var(--md-sys-color-on-surface-rgb),.12);box-shadow:none}[dh-input][disabled]::part(input),[dh-input][disabled][variant=outlined]::part(input){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-input][disabled][variant=filled]::part(root){background-color:rgba(var(--md-sys-color-on-surface-rgb),.04);border-bottom-color:rgba(var(--md-sys-color-on-surface-rgb),.12);box-shadow:none}[dh-input][disabled][variant=filled]::part(input){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-input][disabled]::part(label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-input][disabled]::part(supporting-text){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-input][readonly]:not([disabled])::part(root),[dh-input][readonly]:not([disabled])[variant=outlined]::part(root){border-color:var(--md-sys-color-outline-variant)}[dh-input][readonly]:not([disabled])[variant=filled]::part(root){border-bottom-color:var(--md-sys-color-outline-variant)}[dh-input][readonly]:not([disabled])::part(input){color:var(--md-sys-color-on-surface-variant);cursor:default}[dh-input][variant=classic],[dh-settings-grid],[dh-setting-item],[dh-table]{--dh-input-placeholder-color: var(--md-sys-color-on-surface-variant);--dh-input-placeholder-opacity: 1}[dh-input][variant=classic]::part(root),[dh-settings-grid]::part(dh-input-root),[dh-setting-item]::part(dh-input-root){border:var(--dh-input-root-border, 1px solid var(--md-sys-color-outline-variant));border-radius:var(--dh-input-root-radius, 4px);background-color:var(--dh-input-root-bg, transparent)}[dh-input][variant=classic]:not([disabled]):hover::part(root),[dh-settings-grid]::part(dh-input-root):hover,[dh-setting-item]::part(dh-input-root):hover{border-color:var(--md-sys-color-outline)}[dh-input][variant=classic]:not([disabled]):focus-within::part(root),[dh-settings-grid]::part(dh-input-root):focus-within,[dh-setting-item]::part(dh-input-root):focus-within{border-color:var(--md-sys-color-primary)}[dh-input][disabled][variant=classic]::part(root){border-color:rgba(var(--md-sys-color-on-surface-rgb),.12);box-shadow:none}[dh-input][disabled][variant=classic]::part(input){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-input][disabled][variant=classic]{--dh-input-placeholder-color: var(--md-sys-color-on-surface);--dh-input-placeholder-opacity: .38}[dh-input][readonly]:not([disabled])[variant=classic]::part(root){border-color:var(--md-sys-color-outline-variant)}[dh-input][readonly]:not([disabled])[variant=classic]::part(input){color:var(--md-sys-color-on-surface-variant);cursor:default}[dh-settings-grid]::part(dh-input-root),[dh-setting-item]::part(dh-input-root){border:var(--dh-input-root-border, 1px solid var(--md-sys-color-outline-variant));border-radius:var(--dh-input-root-radius, 4px);background-color:var(--dh-input-root-bg, var(--md-sys-color-surface))}[dh-settings-grid]::part(dh-input-root):hover,[dh-setting-item]::part(dh-input-root):hover{border-color:var(--md-sys-color-outline)}[dh-settings-grid]::part(dh-input-root):focus-within,[dh-setting-item]::part(dh-input-root):focus-within{border-color:var(--md-sys-color-primary)}[dh-select]::part(dh-input-root){border:none;border-radius:0;background-color:transparent}[dh-select]::part(dh-input-root):hover{border:none;box-shadow:none}[dh-select]::part(dh-input-root):focus-within{border:none;box-shadow:none}[dh-input][type=file]::part(root){border:none;box-shadow:none;background:transparent;height:auto}[dh-input][type=file]::part(file-button){height:var(--dh-button-height, 40px);padding-inline:var(--dh-button-padding-inline, 24px);border-radius:var(--dh-button-radius, 20px);border:1px solid var(--md-sys-color-outline);background:transparent;color:var(--md-sys-color-primary);font-family:Roboto,system-ui,sans-serif;font-size:var(--md-sys-typescale-label-large-size, .875rem);font-weight:var(--md-sys-typescale-label-large-weight, 500);letter-spacing:var(--md-sys-typescale-label-large-tracking, .00625rem);cursor:pointer;transition:background .2s cubic-bezier(.2,0,0,1)}[dh-input][type=file]:not([disabled])::part(file-button):hover{background:rgba(var(--md-sys-color-primary-rgb),.08)}[dh-input][type=file]:not([disabled])::part(file-button):focus-visible{outline:none;background:rgba(var(--md-sys-color-primary-rgb),.12)}[dh-input][type=file][disabled]::part(file-button){border-color:rgba(var(--md-sys-color-on-surface-rgb),.12);color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-input][type=file]::part(file-name){font-family:Roboto,system-ui,sans-serif;font-size:.875rem;font-weight:400;line-height:1.25rem;letter-spacing:.015625rem;color:var(--md-sys-color-on-surface-variant)}[dh-table-old]::part(dh-input-root),[dh-table]::part(dh-input-root){height:100%;min-height:0;border:none;border-radius:0;background-color:transparent}[dh-table-old]::part(dh-input-input),[dh-table]::part(dh-input-input){padding:0;font-size:.875rem;line-height:1.25rem}[dh-table-old]::part(dh-input-root):hover,[dh-table]::part(dh-input-root):hover{border:none;box-shadow:none}[dh-table-old]::part(dh-input-root):focus-within,[dh-table]::part(dh-input-root):focus-within{border:none;box-shadow:none}[dh-list-item]{display:block;font-family:Roboto,system-ui,sans-serif;--dh-list-item-title-color: var(--md-sys-color-on-surface);--dh-list-item-meta-color: var(--md-sys-color-on-surface-variant);--dh-list-item-status-color: var(--md-sys-color-primary)}[dh-list-item]::part(root){border:1px solid var(--md-sys-color-outline-variant);border-radius:.5rem;overflow:visible;background-color:var(--md-sys-color-surface);transition:border-color .2s cubic-bezier(.2,0,0,1),box-shadow .2s cubic-bezier(.2,0,0,1)}[dh-list-item]:hover::part(root){border-color:var(--md-sys-color-outline)}[dh-list-item][expanded]::part(root){border-color:var(--md-sys-color-primary);box-shadow:0 1px 3px #00000014}[dh-list-item]::part(row){padding:.75rem 1rem;border-radius:.5rem}[dh-list-item][expanded]::part(row){background-color:var(--md-sys-color-primary-container);border-bottom-left-radius:0;border-bottom-right-radius:0}[dh-list-item]::part(expanded){border-top:1px solid var(--md-sys-color-outline-variant);padding:1rem;background-color:var(--md-sys-color-surface);border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}[dh-form-grid]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-form-field]{--dh-form-field-label-color: var(--md-sys-color-on-surface-variant)}[dh-section]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-section]::part(header){border-bottom:1px solid var(--md-sys-color-outline-variant)}[dh-section]::part(title){font-size:1rem;font-weight:600;color:var(--md-sys-color-on-surface)}[dh-section]::part(badge){font-size:.75rem;font-weight:500;background-color:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container);padding:.125rem .5rem;border-radius:999px}[dh-section][divider]{border-top-color:var(--md-sys-color-outline-variant)}[dh-textarea]{display:block;font-family:Roboto,system-ui,sans-serif;width:100%}[dh-textarea]::part(input){padding:.5rem .75rem;border:1px solid var(--md-sys-color-outline);border-radius:4px;font-size:.875rem;font-family:inherit;color:var(--md-sys-color-on-surface);background-color:var(--md-sys-color-surface);resize:vertical;min-height:60px;outline:none;transition:border-color .2s cubic-bezier(.2,0,0,1),box-shadow .2s cubic-bezier(.2,0,0,1)}[dh-textarea]:not([disabled])::part(input):hover{border-color:var(--md-sys-color-on-surface)}[dh-textarea]::part(input):focus{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px rgba(var(--md-sys-color-primary-rgb),.12)}[dh-textarea][disabled]::part(input){border-color:rgba(var(--md-sys-color-on-surface-rgb),.12);background-color:rgba(var(--md-sys-color-on-surface-rgb),.04);color:rgba(var(--md-sys-color-on-surface-rgb),.38);cursor:not-allowed}[dh-color-picker]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-color-picker]::part(preview){border:1px solid var(--md-sys-color-outline)}[dh-mainbar]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-mainbar]::part(root){background-color:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface)}[dh-mainbar]::part(brand){font-size:1.375rem;font-weight:400;line-height:1.75rem;letter-spacing:0;color:var(--md-sys-color-on-surface)}[dh-mainbar]::part(content){font-size:.875rem;font-weight:400;line-height:1.25rem;letter-spacing:.015625rem;color:var(--md-sys-color-on-surface-variant)}[dh-mainbar]::part(actions){color:var(--md-sys-color-on-surface-variant)}[dh-merge-dialog]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-merge-dialog]::part(root){background-color:var(--md-sys-color-surface-container-low);border:1px solid var(--md-sys-color-outline-variant);border-radius:28px;box-shadow:0 2px 6px #0000001f,0 8px 24px #00000029;padding:24px;min-width:280px;max-width:640px}[dh-merge-dialog]::part(header){padding:0 0 16px;justify-content:flex-start;font-size:1.5rem;font-weight:400;line-height:2rem;color:var(--md-sys-color-on-surface)}[dh-merge-dialog]::part(content){padding:0 0 16px;font-size:.875rem;font-weight:400;line-height:1.25rem;color:var(--md-sys-color-on-surface-variant)}[dh-merge-dialog]::part(footer){padding:0;justify-content:space-between;align-items:center;gap:8px}[dh-merge-dialog]::part(page-root){color:var(--md-sys-color-on-surface)}[dh-merge-dialog]::part(page-label){font-size:.875rem;font-weight:500;line-height:1.25rem;color:var(--md-sys-color-on-surface);padding:8px 0}[dh-merge-dialog]::part(page-content){font-size:.875rem;line-height:1.25rem;color:var(--md-sys-color-on-surface);border:1px solid var(--md-sys-color-outline-variant);border-radius:12px;overflow:hidden;accent-color:var(--md-sys-color-primary)}[dh-merge-dialog]::part(page-header){background-color:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface);font-weight:500;border-color:var(--md-sys-color-outline-variant)}[dh-merge-dialog]::part(page-column-left),[dh-merge-dialog]::part(page-column-right){background-color:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface);font-weight:500;border-color:var(--md-sys-color-outline-variant);accent-color:var(--md-sys-color-primary)}[dh-merge-dialog]::part(page-item){color:var(--md-sys-color-on-surface-variant);font-weight:400;border-color:var(--md-sys-color-outline-variant)}[dh-merge-dialog]::part(dh-button-nav-root){padding-inline:8px;min-width:auto;height:36px}[dh-merge-dialog]::part(dh-button-nav-icon){width:14px;height:14px}[dh-multi-selectbox]{display:block}[dh-multi-selectbox]::part(root),[dh-settings-grid]::part(dh-multiselect-root),[dh-setting-item]::part(dh-multiselect-root){display:flex;flex-direction:row;align-items:center;gap:8px;padding:4px 8px;border-radius:8px;background-color:var(--md-sys-color-surface)}[dh-multi-selectbox]::part(trigger),[dh-settings-grid]::part(dh-multiselect-trigger),[dh-setting-item]::part(dh-multiselect-trigger){gap:4px;flex:1;min-width:0}[dh-multi-selectbox]::part(item-root),[dh-multi-selectbox-item]::part(root),[dh-settings-grid]::part(dh-multiselect-item-root),[dh-setting-item]::part(dh-multiselect-item-root){display:inline-flex;align-items:center;height:32px;padding:0 4px 0 12px;border-radius:8px;border:1px solid var(--md-sys-color-outline-variant);background-color:transparent;gap:8px;box-sizing:border-box;transition:background-color .2s cubic-bezier(.2,0,0,1),border-color .2s cubic-bezier(.2,0,0,1)}[dh-multi-selectbox]::part(item-label),[dh-multi-selectbox-item]::part(label),[dh-settings-grid]::part(dh-multiselect-item-label),[dh-setting-item]::part(dh-multiselect-item-label){font-family:Roboto,system-ui,sans-serif;font-size:.875rem;font-weight:500;line-height:1.25rem;letter-spacing:.00625rem;color:var(--md-sys-color-on-surface);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[dh-multi-selectbox]::part(item-dh-button-root),[dh-multi-selectbox-item]::part(dh-button-root),[dh-settings-grid]::part(dh-multiselect-item-trigger),[dh-setting-item]::part(dh-multiselect-item-trigger){width:24px;height:24px;min-width:auto;min-height:auto;border:none;background:none;border-radius:50%;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;transition:background-color .2s cubic-bezier(.2,0,0,1)}[dh-multi-selectbox]::part(item-icon),[dh-multi-selectbox-item]::part(icon),[dh-settings-grid]::part(dh-multiselect-item-icon),[dh-setting-item]::part(dh-multiselect-item-icon){font-size:18px;color:var(--md-sys-color-on-surface-variant)}[dh-multi-selectbox]:not([noteditable])::part(item-root):hover,[dh-multi-selectbox-item]:not([noteditable])::part(root):hover,[dh-settings-grid]::part(dh-multiselect-item-root):hover,[dh-setting-item]::part(dh-multiselect-item-root):hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.08)}[dh-multi-selectbox]:not([noteditable])::part(item-dh-button-root):hover,[dh-multi-selectbox-item]:not([noteditable])::part(dh-button-root):hover,[dh-settings-grid]::part(dh-multiselect-item-trigger):hover,[dh-setting-item]::part(dh-multiselect-item-trigger):hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.08)}[dh-multi-selectbox]:not([noteditable])::part(item-root):focus-within,[dh-multi-selectbox-item]:not([noteditable])::part(root):focus-within,[dh-settings-grid]::part(dh-multiselect-item-root):focus-within,[dh-setting-item]::part(dh-multiselect-item-root):focus-within{border-color:var(--md-sys-color-on-surface);background-color:rgba(var(--md-sys-color-on-surface-rgb),.12)}[dh-multi-selectbox]::part(dh-button-root),[dh-settings-grid]::part(dh-multiselect-icon),[dh-setting-item]::part(dh-multiselect-icon){width:32px;height:32px;min-width:auto;min-height:auto;border-radius:50%;background-color:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container);border:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:1.125rem;padding:0;box-shadow:none;transition:background-color .2s cubic-bezier(.2,0,0,1),box-shadow .2s cubic-bezier(.2,0,0,1)}[dh-multi-selectbox]:not([noteditable])::part(dh-button-root):hover,[dh-settings-grid]::part(dh-multiselect-icon):hover,[dh-setting-item]::part(dh-multiselect-icon):hover{box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-secondary-container-rgb),.08),0 1px 2px #0000004d,0 1px 3px 1px #00000026}[dh-multi-selectbox]:not([noteditable])::part(dh-button-root):focus-within,[dh-settings-grid]::part(dh-multiselect-icon):focus-visible,[dh-setting-item]::part(dh-multiselect-icon):focus-visible{box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-secondary-container-rgb),.12);outline:none}[dh-multi-selectbox]:not([noteditable])::part(dh-button-root):active,[dh-settings-grid]::part(dh-multiselect-icon):active,[dh-setting-item]::part(dh-multiselect-icon):active{box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-secondary-container-rgb),.12)}[dh-multi-selectbox]::part(content),[dh-settings-grid]::part(dh-multiselect-content),[dh-setting-item]::part(dh-multiselect-content),[dh-form-field]::part(dh-multiselect-content){background-color:var(--md-sys-color-surface);border-radius:12px;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026;padding:8px 0;min-width:200px}[dh-multi-selectbox]::part(input),[dh-settings-grid]::part(dh-multiselect-input),[dh-setting-item]::part(dh-multiselect-input){display:block;width:calc(100% - 16px);margin:0 8px 4px}[dh-multi-selectbox]::part(dh-input-root){height:auto;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;background-color:var(--md-sys-color-surface-container-low);box-shadow:none}[dh-multi-selectbox]::part(dh-input-input){font-size:.875rem;line-height:1.25rem;padding:8px 12px}[dh-multi-selectbox]::part(item),[dh-settings-grid]::part(dh-multiselect-item),[dh-setting-item]::part(dh-multiselect-item){padding:12px 16px;font-family:Roboto,system-ui,sans-serif;font-size:.875rem;line-height:1.25rem;color:var(--md-sys-color-on-surface);cursor:pointer;transition:background-color .15s cubic-bezier(.2,0,0,1)}[dh-multi-selectbox]::part(item):hover,[dh-settings-grid]::part(dh-multiselect-item):hover,[dh-setting-item]::part(dh-multiselect-item):hover{background-color:rgba(var(--md-sys-color-primary-rgb),.08)}[dh-multi-selectbox]::part(item):focus,[dh-settings-grid]::part(dh-multiselect-item):focus,[dh-setting-item]::part(dh-multiselect-item):focus{background-color:rgba(var(--md-sys-color-primary-rgb),.12);outline:none}[dh-multi-selectbox]::part(item):active,[dh-settings-grid]::part(dh-multiselect-item):active,[dh-setting-item]::part(dh-multiselect-item):active{background-color:rgba(var(--md-sys-color-primary-rgb),.12)}[dh-multi-selectbox]::part(selected),[dh-settings-grid]::part(dh-multiselect-selected),[dh-setting-item]::part(dh-multiselect-selected){background-color:rgba(var(--md-comp-multiselect-selected-rgb),.12);color:var(--md-comp-multiselect-selected);font-weight:700}[dh-multi-selectbox]::part(selected):hover,[dh-settings-grid]::part(dh-multiselect-selected):hover,[dh-setting-item]::part(dh-multiselect-selected):hover{background-color:rgba(var(--md-comp-multiselect-selected-rgb),.2)}[dh-multi-selectbox][noteditable]::part(root){opacity:.38;pointer-events:none}[dh-multi-selectbox][noteditable]::part(item-root){border-color:rgba(var(--md-sys-color-on-surface-rgb),.12);background-color:transparent}[dh-multi-selectbox][noteditable]::part(item-label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-select]::part(root),[dh-settings-grid]::part(dh-select-root),[dh-setting-item]::part(dh-select-root),[dh-table-old]::part(dh-select-root),[dh-table]::part(dh-select-root){position:relative;height:100%}[dh-select]::part(trigger),[dh-settings-grid]::part(dh-select-trigger),[dh-setting-item]::part(dh-select-trigger),[dh-table-old]::part(dh-select-trigger),[dh-table]::part(dh-select-trigger){display:flex;align-items:center;justify-content:space-between;height:var(--dh-select-trigger-height, 40px);padding:var(--dh-select-trigger-padding, 0 12px);border-radius:var(--dh-select-trigger-radius, var(--md-sys-shape-corner-extra-small, 4px));cursor:pointer;box-sizing:border-box;overflow:hidden;gap:8px;transition:background-color .2s cubic-bezier(.2,0,0,1),box-shadow .2s cubic-bezier(.2,0,0,1),border-color .2s cubic-bezier(.2,0,0,1),transform .2s cubic-bezier(.2,0,0,1)}[dh-select]::part(trigger),[dh-select][variant=outlined]::part(trigger),[dh-settings-grid]::part(dh-select-trigger),[dh-setting-item]::part(dh-select-trigger),[dh-table-old]::part(dh-select-trigger),[dh-table]::part(dh-select-trigger){border:var(--dh-select-trigger-border, 1px solid var(--md-sys-color-outline-variant));background-color:transparent}[dh-select]:not([disabled]):not([variant=filled]):not([open]):not(:focus-within):hover::part(trigger),[dh-select][variant=outlined]:not([disabled]):not([open]):not(:focus-within):hover::part(trigger),[dh-settings-grid]::part(dh-select-trigger):not(:focus-within):hover,[dh-setting-item]::part(dh-select-trigger):not(:focus-within):hover,[dh-table-old]::part(dh-select-trigger):not(:focus-within):hover,[dh-table]::part(dh-select-trigger):not(:focus-within):hover{border-color:var(--md-sys-color-outline)}[dh-select]:not([disabled]):not([variant=filled]):focus-within::part(trigger),[dh-select][variant=outlined]:not([disabled]):focus-within::part(trigger),[dh-settings-grid]::part(dh-select-trigger):focus-within,[dh-setting-item]::part(dh-select-trigger):focus-within,[dh-table-old]::part(dh-select-trigger):focus-within,[dh-table]::part(dh-select-trigger):focus-within{border-color:var(--md-sys-color-primary)}[dh-select]:not([disabled]):not([variant=filled]):active::part(trigger),[dh-select][variant=outlined]:not([disabled]):active::part(trigger){transform:scale(.97)}[dh-select]:not([variant=filled])[open]::part(trigger),[dh-select][variant=outlined][open]::part(trigger){border-color:var(--md-sys-color-primary)}[dh-select][variant=filled]::part(trigger){border:none;background-color:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}[dh-select][variant=filled]:not([disabled]):hover::part(trigger){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-primary-rgb),.08),0 1px 2px #0000004d,0 1px 3px 1px #00000026}[dh-select][variant=filled]:not([disabled]):focus-within::part(trigger){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-primary-rgb),.12);outline:none}[dh-select][variant=filled]:not([disabled]):active::part(trigger){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-primary-rgb),.12);transform:scale(.97)}[dh-select][variant=filled][open]::part(trigger){box-shadow:inset 0 0 0 100vmax rgba(var(--md-sys-color-on-primary-rgb),.12)}[dh-select]::part(floating-label){color:var(--md-sys-color-primary);font-family:Roboto,system-ui,sans-serif}[dh-select][variant=filled]::part(floating-label){color:var(--md-sys-color-on-primary)}[dh-select]::part(label),[dh-settings-grid]::part(dh-select-label),[dh-setting-item]::part(dh-select-label),[dh-table-old]::part(dh-select-label),[dh-table]::part(dh-select-label){font-family:Roboto,system-ui,sans-serif;font-size:var(--dh-select-label-size, .875rem);font-weight:500;line-height:var(--dh-select-label-line-height, 1.25rem);letter-spacing:.00625rem;color:var(--md-sys-color-on-surface);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}[dh-select][variant=filled]::part(label){color:var(--md-sys-color-on-primary)}[dh-select]::part(icon),[dh-settings-grid]::part(dh-select-icon),[dh-setting-item]::part(dh-select-icon),[dh-table-old]::part(dh-select-icon),[dh-table]::part(dh-select-icon){color:var(--md-sys-color-on-surface-variant);font-size:.75rem;flex-shrink:0;transform:rotate(0);transition:transform .2s cubic-bezier(.2,0,0,1)}[dh-select][open]::part(icon),[dh-settings-grid] [dh-select][open]::part(dh-select-icon),[dh-setting-item] [dh-select][open]::part(dh-select-icon),[dh-table-old] [dh-select][open]::part(dh-select-icon),[dh-table] [dh-select][open]::part(dh-select-icon){transform:rotate(180deg)}[dh-select][variant=filled]::part(icon){color:var(--md-sys-color-on-primary)}[dh-select]::part(menu),[dh-settings-grid]::part(dh-select-menu),[dh-setting-item]::part(dh-select-menu),[dh-table-old]::part(dh-select-menu),[dh-table]::part(dh-select-menu){background-color:var(--md-sys-color-surface-container);border-radius:12px;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026;margin-top:4px;overflow:hidden}[dh-select]::part(search-bar),[dh-settings-grid]::part(dh-select-search-bar),[dh-setting-item]::part(dh-select-search-bar),[dh-table-old]::part(dh-select-search-bar),[dh-table]::part(dh-select-search-bar){padding:12px;border-bottom:1px solid var(--md-sys-color-outline-variant)}[dh-select]::part(search-input-wrapper),[dh-settings-grid]::part(dh-select-search-input-wrapper),[dh-setting-item]::part(dh-select-search-input-wrapper),[dh-table-old]::part(dh-select-search-input-wrapper),[dh-table]::part(dh-select-search-input-wrapper){display:flex;align-items:center;gap:8px;background-color:var(--md-sys-color-surface-container-highest);border-radius:9999px;height:40px;padding:0 14px}[dh-select]::part(search-icon),[dh-settings-grid]::part(dh-select-search-icon),[dh-setting-item]::part(dh-select-search-icon),[dh-table-old]::part(dh-select-search-icon),[dh-table]::part(dh-select-search-icon){color:var(--md-sys-color-on-surface-variant);font-size:20px;flex-shrink:0;line-height:1}[dh-select]::part(input),[dh-settings-grid]::part(dh-select-input),[dh-setting-item]::part(dh-select-input),[dh-table-old]::part(dh-select-input),[dh-table]::part(dh-select-input){font-family:Roboto,system-ui,sans-serif;font-size:.875rem;line-height:1.25rem;padding:0;border:none;border-bottom:none;outline:none;background:transparent;color:var(--md-sys-color-on-surface);flex:1;min-width:0;box-sizing:border-box}[dh-select]::part(content),[dh-settings-grid]::part(dh-select-content),[dh-setting-item]::part(dh-select-content),[dh-table-old]::part(dh-select-content),[dh-table]::part(dh-select-content){padding:4px 0}[dh-select]::part(item),[dh-settings-grid]::part(dh-select-item),[dh-setting-item]::part(dh-select-item),[dh-table-old]::part(dh-select-item),[dh-table]::part(dh-select-item){min-height:48px;padding:0 16px;font-family:Roboto,system-ui,sans-serif;font-size:.875rem;font-weight:400;line-height:1.25rem;letter-spacing:.015625rem;color:var(--md-sys-color-on-surface);transition:background-color .15s cubic-bezier(.2,0,0,1)}[dh-select]::part(item):hover,[dh-settings-grid]::part(dh-select-item):hover,[dh-setting-item]::part(dh-select-item):hover,[dh-table-old]::part(dh-select-item):hover,[dh-table]::part(dh-select-item):hover{background-color:rgba(var(--md-sys-color-primary-rgb),.08)}[dh-select]::part(item):focus,[dh-settings-grid]::part(dh-select-item):focus,[dh-setting-item]::part(dh-select-item):focus,[dh-table-old]::part(dh-select-item):focus,[dh-table]::part(dh-select-item):focus{background-color:rgba(var(--md-sys-color-primary-rgb),.12);outline:none}[dh-select]::part(item):active,[dh-settings-grid]::part(dh-select-item):active,[dh-setting-item]::part(dh-select-item):active,[dh-table-old]::part(dh-select-item):active,[dh-table]::part(dh-select-item):active{background-color:rgba(var(--md-sys-color-primary-rgb),.12)}[dh-select]::part(selected),[dh-settings-grid]::part(dh-select-selected),[dh-setting-item]::part(dh-select-selected),[dh-table-old]::part(dh-select-selected),[dh-table]::part(dh-select-selected){background-color:rgba(var(--md-sys-color-primary-rgb),.08);color:var(--md-sys-color-primary);font-weight:500}[dh-select]::part(selected):hover,[dh-settings-grid]::part(dh-select-selected):hover,[dh-setting-item]::part(dh-select-selected):hover,[dh-table-old]::part(dh-select-selected):hover,[dh-table]::part(dh-select-selected):hover{background-color:rgba(var(--md-sys-color-primary-rgb),.16)}[dh-select][disabled]::part(trigger),[dh-select][disabled][variant=outlined]::part(trigger){border-color:rgba(var(--md-sys-color-on-surface-rgb),.12);background-color:transparent;box-shadow:none;cursor:not-allowed;pointer-events:none}[dh-select][disabled][variant=filled]::part(trigger){border:none;background-color:rgba(var(--md-sys-color-on-surface-rgb),.12);box-shadow:none;cursor:not-allowed;pointer-events:none}[dh-select][disabled]::part(label){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-select][disabled]::part(icon){color:rgba(var(--md-sys-color-on-surface-rgb),.38)}[dh-settings-grid]::part(dh-select-trigger),[dh-setting-item]::part(dh-select-trigger){border:none;border-radius:0}[dh-settings-grid]::part(dh-select-trigger):hover,[dh-setting-item]::part(dh-select-trigger):hover{border:none;box-shadow:none}[dh-settings-grid]::part(dh-select-trigger):focus-within,[dh-setting-item]::part(dh-select-trigger):focus-within{border:none;box-shadow:none}[dh-table-old]::part(dh-select-root),[dh-table]::part(dh-select-root){height:100%}[dh-table-old]::part(dh-select-trigger),[dh-table]::part(dh-select-trigger){border:none;border-radius:0;height:100%;padding:0}[dh-table-old]::part(dh-select-trigger):hover,[dh-table]::part(dh-select-trigger):hover{border:none;box-shadow:none}[dh-table-old]::part(dh-select-trigger):focus-within,[dh-table]::part(dh-select-trigger):focus-within{border:none;box-shadow:none}[dh-mainbar] [dh-select]{width:auto;min-width:0}[dh-settings-grid],[dh-setting-item]{--dh-input-root-border: 1px solid var(--md-sys-color-outline-variant);--dh-input-root-radius: 4px;--dh-input-root-bg: var(--md-sys-color-surface);--dh-input-root-focus-shadow: inset 0 0 0 2px var(--md-sys-color-primary);--dh-input-input-padding: 0 8px;--dh-select-display: block;--dh-select-trigger-border: 1px solid var(--md-sys-color-outline-variant);--dh-select-trigger-radius: 4px;--dh-select-trigger-focus-shadow: inset 0 0 0 2px var(--md-sys-color-primary)}[dh-settings-grid]{font-family:Roboto,system-ui,sans-serif}[dh-settings-grid]::part(root){background-color:var(--md-sys-color-surface);padding:16px;border-radius:12px}[dh-settings-grid],[dh-grid-item]{--dh-grid-hover-bg: rgba(var(--md-sys-color-on-surface-rgb), .06)}[dh-grid-item]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-grid-item]::part(root),[dh-grid-item]::part(grid-item-root),[dh-settings-grid]::part(grid-item-root){margin:2px 0;border-radius:20px;transition:background-color .2s cubic-bezier(.2,0,0,1),outline-color .2s cubic-bezier(.2,0,0,1)}[dh-grid-item].selected::part(root),[dh-grid-item].selected::part(grid-item-root),[dh-settings-grid] [dh-grid-item].selected::part(grid-item-root){outline:1px solid var(--md-sys-color-outline-variant);outline-offset:0}[dh-grid-item]::part(header),[dh-grid-item]::part(grid-item-header),[dh-settings-grid]::part(grid-item-header){padding:4px 8px 4px 4px;min-height:40px;cursor:pointer;transition:background-color .2s cubic-bezier(.2,0,0,1);position:relative}[dh-grid-item]::part(header):hover,[dh-grid-item]::part(grid-item-header):hover,[dh-settings-grid]::part(grid-item-header):hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.06)}[dh-grid-item]::part(header):active,[dh-grid-item]::part(grid-item-header):active,[dh-settings-grid]::part(grid-item-header):active{background-color:rgba(var(--md-sys-color-on-surface-rgb),.12)}[dh-grid-item].selected::part(header),[dh-grid-item].selected::part(grid-item-header),[dh-settings-grid] [dh-grid-item].selected::part(grid-item-header){background-color:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container);border-radius:20px 20px 4px 4px}[dh-grid-item]::part(label),[dh-grid-item]::part(grid-item-label),[dh-settings-grid]::part(grid-item-label){font-size:1rem;font-weight:500;line-height:1.5rem;letter-spacing:.009375rem;color:var(--md-sys-color-on-surface)}[dh-grid-item].selected::part(label),[dh-grid-item].selected::part(grid-item-label),[dh-settings-grid] [dh-grid-item].selected::part(grid-item-label),[dh-grid-item].selected::part(icon),[dh-grid-item].selected::part(grid-item-icon),[dh-settings-grid] [dh-grid-item].selected::part(grid-item-icon),[dh-grid-item].selected::part(icon-reset),[dh-grid-item].selected::part(grid-item-icon-reset),[dh-settings-grid] [dh-grid-item].selected::part(grid-item-icon-reset){color:var(--md-sys-color-on-primary-container)}[dh-grid-item]::part(icon),[dh-grid-item]::part(grid-item-icon),[dh-settings-grid]::part(grid-item-icon){width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:var(--md-sys-color-on-surface-variant);font-size:1.125rem;margin:0;transform:rotate(0);transition:transform .28s cubic-bezier(.2,0,0,1),background-color .15s cubic-bezier(.2,0,0,1)}[dh-grid-item]:not(.selected)::part(icon),[dh-grid-item]:not(.selected)::part(grid-item-icon),[dh-settings-grid] [dh-grid-item]:not(.selected)::part(grid-item-icon){transform:rotate(0)}[dh-grid-item].selected::part(icon),[dh-grid-item].selected::part(grid-item-icon),[dh-settings-grid] [dh-grid-item].selected::part(grid-item-icon){transform:rotate(180deg)}[dh-grid-item]::part(icon):hover,[dh-grid-item]::part(grid-item-icon):hover,[dh-settings-grid]::part(grid-item-icon):hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.08);color:var(--md-sys-color-on-surface)}[dh-grid-item]::part(icon-reset),[dh-grid-item]::part(grid-item-icon-reset),[dh-settings-grid]::part(grid-item-icon-reset){width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;color:var(--md-sys-color-on-surface-variant);cursor:pointer;border-radius:50%;font-size:1rem;transition:background-color .15s cubic-bezier(.2,0,0,1),color .15s cubic-bezier(.2,0,0,1)}[dh-grid-item]::part(icon-reset):hover,[dh-grid-item]::part(grid-item-icon-reset):hover,[dh-settings-grid]::part(grid-item-icon-reset):hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.08);color:var(--md-sys-color-on-surface)}[dh-settings-grid]{--dh-grid-item-content-columns: 1fr;--dh-grid-item-content-column-gap: 0;--dh-grid-item-content-padding-right: 0;--dh-grid-item-selected-header-bg: var(--md-sys-color-primary-container);--dh-grid-item-selected-color: var(--md-sys-color-on-primary-container);--dh-grid-item-selected-header-radius: 20px 20px 4px 4px;--dh-grid-item-selected-outline: 1px solid var(--md-sys-color-outline-variant);--dh-grid-item-selected-outline-offset: 0}[dh-settings-grid][multicolumn]{--dh-grid-item-content-columns: repeat(auto-fit, minmax(480px, 1fr));--dh-grid-item-content-column-gap: 16px;--dh-grid-item-content-padding-right: 8px}[dh-grid-item][open]::part(content),[dh-grid-item][open]::part(grid-item-content),[dh-settings-grid] [dh-grid-item][open]::part(grid-item-content){display:grid;grid-template-columns:var(--dh-grid-item-content-columns);column-gap:var(--dh-grid-item-content-column-gap);row-gap:0;padding:0 var(--dh-grid-item-content-padding-right) 0 0;align-items:start}[dh-setting-item][type=BitList],[dh-setting-item][type=note],[dh-setting-item][type=Path]{grid-column:1/-1}[dh-grid-item]::part(submenu),[dh-grid-item]::part(grid-item-submenu),[dh-settings-grid]::part(grid-item-submenu){padding:4px 0 4px 24px}[dh-setting-item]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-setting-item]::part(root),[dh-settings-grid]::part(setting-item-root){background-color:transparent;min-height:32px;border-radius:6px;transition:background-color .15s cubic-bezier(.2,0,0,1)}[dh-setting-item]:hover::part(root),[dh-settings-grid]::part(setting-item-root):hover{background-color:rgba(var(--md-sys-color-primary-rgb),.06)}[dh-setting-item]::part(label),[dh-settings-grid]::part(setting-item-label){font-size:.875rem;font-weight:400;line-height:1.25rem;letter-spacing:.015625rem;color:var(--md-sys-color-on-surface-variant);padding:8px 12px}[dh-setting-item]::part(icon),[dh-settings-grid]::part(setting-item-icon){color:var(--md-sys-color-on-surface-variant);cursor:pointer;border-radius:50%;padding:4px;transition:background-color .15s cubic-bezier(.2,0,0,1)}[dh-setting-item]::part(icon):hover,[dh-settings-grid]::part(setting-item-icon):hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.08)}[dh-setting-item]::part(input),[dh-settings-grid]::part(setting-item-input){border:none;outline:none;resize:vertical}:host([dh-setting-item]) dh-checkbox[variant=switch]::part(root){transform:scale(.8);transform-origin:right center}[dh-snackbar]::part(root){background-color:var(--md-sys-color-inverse-surface);color:var(--md-sys-color-inverse-on-surface);box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}[dh-snackbar][variant=loading]::part(root){background-color:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}[dh-snackbar][variant=success]::part(root){background-color:var(--md-sys-color-success-container);color:var(--md-sys-color-on-success-container)}[dh-snackbar][variant=error]::part(root){background-color:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}[dh-snackbar][variant=info]::part(root){background-color:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}[dh-snackbar]::part(action){color:var(--md-sys-color-inverse-primary);background-color:transparent}[dh-snackbar]::part(action):hover{background-color:#ffffff14}[dh-snackbar]::part(action):focus-visible{background-color:#ffffff1f;outline:none}[dh-snackbar][variant=loading]::part(action),[dh-snackbar][variant=success]::part(action),[dh-snackbar][variant=error]::part(action),[dh-snackbar][variant=info]::part(action){color:inherit;font-weight:600}[dh-snackbar][variant=loading]::part(action):hover,[dh-snackbar][variant=success]::part(action):hover,[dh-snackbar][variant=error]::part(action):hover,[dh-snackbar][variant=info]::part(action):hover{background-color:#0000000f}[dh-snackbar]::part(message){color:inherit}[dh-tab]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-tab]::part(root){background-color:transparent;overflow:hidden}[dh-tab]::part(header){background-color:transparent;border-bottom:1px solid var(--md-sys-color-outline)}[dh-tab]::part(content){padding:12px;color:var(--md-sys-color-on-surface-variant);background-color:transparent;font-size:14px}[dh-tab]>[slot=tab-head]{position:relative;display:inline-flex;align-items:center;justify-content:center;height:48px;min-width:64px;padding:0 16px;font-family:Roboto,system-ui,sans-serif;font-size:.875rem;font-weight:500;line-height:1.25rem;letter-spacing:.00625rem;color:var(--md-sys-color-on-surface-variant);cursor:pointer;user-select:none;white-space:nowrap;border:none;background:transparent;transition:color .2s cubic-bezier(.2,0,0,1),background-color .2s cubic-bezier(.2,0,0,1)}[dh-tab]>[slot=tab-head]:after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;border-radius:3px 3px 0 0;background-color:var(--md-sys-color-primary);transform:scaleX(0);transition:transform .2s cubic-bezier(.2,0,0,1)}[dh-tab]>[slot=tab-head]:hover{background-color:rgba(var(--md-sys-color-on-surface-rgb),.08);color:var(--md-sys-color-on-surface)}[dh-tab]>[slot=tab-head]:focus-visible{background-color:rgba(var(--md-sys-color-on-surface-rgb),.12);outline:none}[dh-tab]>[slot=tab-head]:active{background-color:rgba(var(--md-sys-color-on-surface-rgb),.12)}[dh-tab]>[slot=tab-head].selected{color:var(--md-sys-color-primary)}[dh-tab]>[slot=tab-head].selected:after{transform:scaleX(1)}[dh-tab]>[slot=tab-head].selected:hover{background-color:rgba(var(--md-sys-color-primary-rgb),.06);color:var(--md-sys-color-primary)}[dh-tab]>[slot=tab-head].selected:focus-visible{background-color:rgba(var(--md-sys-color-primary-rgb),.12);color:var(--md-sys-color-primary)}[dh-tab]>[slot=tab-head].selected:active{background-color:rgba(var(--md-sys-color-primary-rgb),.12);color:var(--md-sys-color-primary)}[dh-table-old],[dh-table-row-old],[dh-table-head-cell-old],[dh-table-body-cell-old]{--dh-state-hover-bg: rgba(var(--md-sys-color-on-surface-rgb), .08);--dh-state-selected-bg: var(--md-sys-color-secondary-container);--dh-border-color: var(--md-sys-color-outline-variant)}[dh-table-old],[dh-table-row-old],[dh-table-head-cell-old],[dh-table-body-cell-old]{--dh-resize-width: 4px;--dh-resize-bg: transparent;--dh-resize-hover-bg: var(--md-sys-color-primary);--dh-header-weight: 500;--dh-header-color: var(--md-sys-color-on-surface-variant);--dh-inactive-opacity: .38;--dh-error-color: var(--md-sys-color-error)}[dh-table-old]{display:flex;font-family:Roboto,system-ui,sans-serif;color:var(--md-sys-color-on-surface);border:1px solid var(--md-sys-color-outline-variant);border-radius:16px;overflow:hidden;--dh-button-height: 32px;--dh-button-min-width: auto;--dh-button-padding-inline: 8px;--dh-button-radius: 16px;--dh-button-gap: 4px;--dh-button-icon-size: 24px}[dh-table-old]::part(header){padding:8px 16px;gap:8px;align-items:center;border-bottom:1px solid var(--md-sys-color-outline-variant)}[dh-table-old]::part(scroll){scrollbar-gutter:stable}[dh-table-old]::part(content){background-color:transparent}[dh-table-row-old]{font-family:Roboto,system-ui,sans-serif;transition:background-color .2s cubic-bezier(.2,0,0,1);--dh-head-cell-padding: 0 16px;--dh-body-cell-padding: 0 16px;--dh-select-display: block;--dh-select-root-height: 100%;--dh-select-trigger-height: 100%;--dh-select-trigger-border: none;--dh-select-trigger-radius: 0;--dh-select-trigger-padding: 0;--dh-select-trigger-focus-shadow: none;--dh-select-label-size: .875rem;--dh-select-label-line-height: 1.25rem}[dh-table-head-cell-old]{font-family:Roboto,system-ui,sans-serif;padding:0 16px}[dh-table-head-cell-old]::part(label){font-family:Roboto,system-ui,sans-serif;font-size:.875rem;font-weight:500;line-height:1.25rem;letter-spacing:.00625rem;color:var(--md-sys-color-on-surface-variant)}[dh-table-head-cell-old]::part(root){align-items:center;height:100%}[dh-table-head-cell-old]::part(icon){color:var(--md-sys-color-on-surface-variant);font-size:1.125rem}[dh-table-head-cell-old]::part(divider){background-color:transparent;transition:background-color .2s cubic-bezier(.2,0,0,1)}[dh-table-head-cell-old]::part(divider):hover{background-color:var(--md-sys-color-outline)}[dh-table-body-cell-old]{font-family:Roboto,system-ui,sans-serif;padding:0 16px}[dh-table-body-cell-old]::part(root){height:100%}[dh-table-body-cell-old]::part(content){font-family:Roboto,system-ui,sans-serif;font-size:.875rem;font-weight:400;line-height:1.25rem;color:var(--md-sys-color-on-surface)}[dh-table-old]::part(dh-button-root){height:32px;min-width:auto;padding:0 8px;border-radius:16px;gap:4px;justify-content:center}[dh-table-old]::part(dh-button-icon){width:24px;height:24px}[dh-table-old]::part(dh-filter-root){height:36px}[dh-table]{font-family:Roboto,system-ui,sans-serif;color:var(--md-sys-color-on-surface);border:1px solid var(--md-sys-color-outline-variant);border-radius:16px;overflow:clip;box-sizing:border-box}:where([dh-table],[dh-table-row]){--dh-state-selected-bg: var(--md-sys-color-secondary-container);--dh-state-copy-bg: #ffffff;--dh-border-color: var(--md-sys-color-outline-variant);--dh-header-weight: 500;--dh-header-color: var(--md-sys-color-on-surface-variant);--dh-resize-width: 4px;--dh-resize-bg: transparent;--dh-resize-hover-bg: var(--md-sys-color-primary);--dh-body-cell-bg: transparent}[dh-table]::part(header){padding:8px;border-bottom:1px solid var(--md-sys-color-outline-variant);background-color:var(--md-sys-color-surface-container);gap:4px}[dh-table-head-cell]{background-color:var(--md-sys-color-surface-container);border-bottom:1px solid var(--md-sys-color-outline-variant);font-family:Roboto,system-ui,sans-serif;font-weight:500;font-size:.875rem;color:var(--md-sys-color-on-surface-variant);cursor:pointer;user-select:none}[dh-table-head-cell]::part(root){gap:4px}[dh-table-head-cell]::part(icon){color:var(--md-sys-color-on-surface-variant);font-size:.875rem}[dh-table-head-cell]::part(divider){background-color:transparent;transition:background-color .2s cubic-bezier(.2,0,0,1)}[dh-table-head-cell]::part(divider):hover{background-color:var(--md-sys-color-primary)}[dh-table-body-cell]{font-family:Roboto,system-ui,sans-serif;font-size:.875rem;color:var(--md-sys-color-on-surface);height:36px;border-bottom:1px solid var(--md-sys-color-outline-variant)}[dh-table-body-cell]::part(root){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[dh-table-row].selected [dh-table-body-cell]{background-color:var(--md-sys-color-secondary-container)}[dh-tree],[dh-tree-item]{--dh-tree-hover-bg: rgba(var(--md-sys-color-on-surface-rgb), .08);--dh-tree-hover-color: var(--md-sys-color-on-surface-variant);--dh-tree-selected-bg: var(--md-sys-color-secondary-container);--dh-tree-selected-color: var(--md-sys-color-on-secondary-container);--dh-tree-selected-label-weight: 500;--dh-tree-selected-hover-shadow: none;--dh-tree-item-radius: 28px}[dh-tree]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-tree]::part(root){border-radius:16px;box-shadow:none;padding:8px 0;overflow:hidden}[dh-tree-item]{display:block;font-family:Roboto,system-ui,sans-serif}[dh-tree-item]::part(content){display:flex;align-items:center;height:46px;padding:0 12px 0 16px;margin:2px 8px;border-radius:28px;background-color:transparent;cursor:pointer;gap:10px;box-sizing:border-box;position:relative;overflow:hidden;transition:background-color .2s cubic-bezier(.2,0,0,1)}[dh-tree-item]::part(label){font-family:Roboto,system-ui,sans-serif;font-size:13.5px;font-weight:400;line-height:1.25rem;letter-spacing:.15px;color:var(--md-sys-color-on-surface-variant);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}[dh-tree-item]::part(icon-expand){color:var(--md-sys-color-on-surface-variant);font-size:16px;flex-shrink:0;transition:transform .3s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.2,0,0,1)}[dh-tree-item]::part(icon-folder){color:var(--md-sys-color-on-surface-variant);font-size:18px;flex-shrink:0}[dh-tree-item]::part(icon-file){color:var(--md-sys-color-on-surface-variant);font-size:18px;flex-shrink:0}[dh-tree-item]::part(content):hover{background-color:var(--dh-tree-hover-bg)}[dh-tree-item]:hover::part(label){color:var(--dh-tree-hover-color)}[dh-tree-item]:hover::part(icon-expand){color:var(--dh-tree-hover-color)}[dh-tree-item].selected::part(content){background-color:var(--dh-tree-selected-bg)}[dh-tree-item].selected::part(content):hover{background-color:var(--dh-tree-selected-bg);box-shadow:var(--dh-tree-selected-hover-shadow)}[dh-tree-item].selected::part(label){color:var(--dh-tree-selected-color);font-weight:var(--dh-tree-selected-label-weight)}[dh-tree-item].selected::part(icon-expand){color:var(--dh-tree-selected-color)}[dh-tree][compact] [dh-tree-item]::part(content){height:32px;padding:0 8px 0 12px;margin:1px 4px;border-radius:16px;gap:6px}[dh-tree][compact] [dh-tree-item]::part(label){font-size:12.5px}[dh-tree][compact] [dh-tree-item]::part(icon-folder),[dh-tree][compact] [dh-tree-item]::part(icon-file){font-size:16px}[dh-tree][compact] [dh-tree-item]::part(icon-expand){font-size:14px}[dh-tree][compact]::part(root){padding:4px 0}[dh-tree-item]::part(submenu){padding-left:0;margin-left:0}[dh-card]{display:block;font-family:Roboto,system-ui,sans-serif;color:var(--md-sys-color-on-surface)}[dh-card][variant=elevated]::part(root),[dh-card][variant=filled]::part(root),[dh-card][variant=outlined]::part(root),[dh-card][variant=floating]::part(root){border-radius:16px;padding:16px;overflow:hidden;position:relative;cursor:pointer;transition:background-color .2s cubic-bezier(.2,0,0,1),box-shadow .2s cubic-bezier(.2,0,0,1),border-color .2s cubic-bezier(.2,0,0,1),transform .2s cubic-bezier(.2,0,0,1)}[dh-card][no-click-effect]::part(root){cursor:default}[dh-card][variant=elevated]:not([no-click-effect]):active:not(:has(dh-button:active,button:active,a:active,input:active))::part(root){background-color:var(--md-sys-color-surface-container-high)}[dh-card][variant=filled]:not([no-click-effect]):active:not(:has(dh-button:active,button:active,a:active,input:active))::part(root){background-color:var(--md-sys-color-surface-container-highest)}[dh-card][variant=outlined]:not([no-click-effect]):active:not(:has(dh-button:active,button:active,a:active,input:active))::part(root){border-color:var(--md-sys-color-outline);background-color:var(--md-sys-color-surface-container)}[dh-card][variant=elevated]::part(root){border:1px solid var(--md-sys-color-outline-variant);background-color:transparent;box-shadow:none}[dh-card][variant=elevated]:not([no-click-effect]):not([no-hover-effect]):hover::part(root){background-color:var(--md-sys-color-surface-container-low)}[dh-card][variant=filled]::part(root){border:none;background-color:var(--md-sys-color-surface-container-highest);box-shadow:none}[dh-card][variant=filled]:not([no-click-effect]):not([no-hover-effect]):hover::part(root){background-color:var(--md-sys-color-surface-container-high)}[dh-card][variant=outlined]::part(root){border:1px solid var(--md-sys-color-outline-variant);background-color:transparent;box-shadow:none}[dh-card][variant=outlined]:not([no-click-effect]):not([no-hover-effect]):hover::part(root){border-color:var(--md-sys-color-outline);background-color:var(--md-sys-color-surface-container-low)}[dh-card][variant=floating]::part(root){border:none;background-color:var(--md-sys-color-surface-container-lowest);border-radius:var(--md-sys-shape-corner-medium, 12px);box-shadow:0 1px 2px #0000004d,0 1px 3px 1px #00000026}[dh-card][variant=floating]:not([no-click-effect]):not([no-hover-effect]):hover::part(root){box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}[dh-card][variant=floating]:not([no-click-effect]):active:not(:has(dh-button:active,button:active,a:active,input:active))::part(root){background-color:var(--md-sys-color-surface-container-low)}[dh-card].selected::part(root),[dh-card][variant=elevated].selected::part(root),[dh-card][variant=filled].selected::part(root),[dh-card][variant=outlined].selected::part(root){outline:2px solid var(--md-sys-color-primary);outline-offset:-2px;box-shadow:none}[dh-card].selected:not([no-click-effect]):not([no-hover-effect]):hover::part(root),[dh-card][variant=elevated].selected:not([no-click-effect]):not([no-hover-effect]):hover::part(root),[dh-card][variant=filled].selected:not([no-click-effect]):not([no-hover-effect]):hover::part(root),[dh-card][variant=outlined].selected:not([no-click-effect]):not([no-hover-effect]):hover::part(root){background-color:var(--md-sys-color-surface-container-low)}[dh-card]::part(header){font-family:Roboto,system-ui,sans-serif;font-size:1rem;font-weight:500;line-height:1.5rem;letter-spacing:.009375rem;color:var(--md-sys-color-on-surface);padding-bottom:8px}[dh-card][headerstyle=primary]::part(header){background-color:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);padding:.5rem 1rem;margin:-.5rem -.5rem .5rem;border-radius:0;font-weight:600}[dh-card]::part(content){font-family:Roboto,system-ui,sans-serif;font-size:.875rem;font-weight:400;line-height:1.25rem;letter-spacing:.015625rem;color:var(--md-sys-color-on-surface-variant);padding-bottom:8px}[dh-card]::part(actions){gap:8px;padding-top:12px}[dh-window]{display:inline-block;font-family:Roboto,system-ui,sans-serif}[dh-window]::part(root){background-color:var(--md-sys-color-surface-container);border:1px solid var(--md-sys-color-outline-variant);border-radius:28px;box-shadow:0 2px 6px #0000001f,0 8px 24px #00000029;padding:24px}[dh-window]{--dh-input-label-bg: var(--md-sys-color-surface-container)}[dh-window]::part(header){padding:0 0 16px;align-items:center}[dh-window]::part(label){font-family:Roboto,system-ui,sans-serif;font-size:1.5rem;font-weight:400;line-height:2rem;color:var(--md-sys-color-on-surface)}[dh-window]::part(trigger){display:flex;align-items:center;justify-content:center;width:40px;height:40px;min-width:40px;min-height:40px;border-radius:50%;padding:0;background-color:transparent;border:none;box-shadow:none;cursor:pointer;transition:background-color .2s cubic-bezier(.2,0,0,1)}[dh-window]::part(trigger):hover{background-color:rgba(var(--md-sys-color-on-surface-variant-rgb, var(--md-sys-color-on-surface-rgb)),.08)}[dh-window]::part(trigger):focus-within{background-color:rgba(var(--md-sys-color-on-surface-variant-rgb, var(--md-sys-color-on-surface-rgb)),.12);outline:none}[dh-window]::part(trigger):active{background-color:rgba(var(--md-sys-color-on-surface-variant-rgb, var(--md-sys-color-on-surface-rgb)),.12)}[dh-window]::part(close-icon){font-size:24px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;opacity:.7;transition:opacity .2s cubic-bezier(.2,0,0,1);color:var(--md-sys-color-on-surface-variant)}[dh-window]:hover::part(close-icon){opacity:1}[dh-window]::part(content){padding:0;font-size:.875rem;font-weight:400;line-height:1.25rem;color:var(--md-sys-color-on-surface-variant)}
 `,Ba=Object.defineProperty,Va=(e,t,n,r)=>{for(var i=void 0,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=o(t,n,i)||i);return i&&Ba(t,n,i),i};Ae(!0);var Ha=class extends CustomEvent{constructor(e){super(`willupdate`,{detail:e,bubbles:!0})}},Ua=class extends CustomEvent{constructor(e){super(`updated`,{detail:e,bubbles:!0})}},W=(e=>{let t=class t extends e{constructor(...e){super(...e),this.baseOptions={registerLocalesModel:!0,updateWhileDisconnected:!1},this.domEvents={},this.mobileMode=``,this._connectedCallbackActions=[],this.furnviewLoaded=!1,this._installedStateListeners=new Set,this._builtinStateHandlers={"fv:add-class":({classes:e})=>{for(let t of e)this.classList.add(t)},"fv:remove-class":({classes:e})=>{for(let t of e)this.classList.remove(t)},"fv:toggle-class":({classes:e})=>{for(let t of e)this.classList.contains(t)?this.classList.remove(t):this.classList.add(t)},"fv:set-attribute":({attribute:e,value:t})=>{typeof t==`boolean`&&t?this.setAttribute(e,``):typeof t==`boolean`&&!t?this.removeAttribute(e):typeof t==`object`?this.setAttribute(e,JSON.stringify(t)):this.setAttribute(e,t)},"fv:toggle-attribute":({attribute:e,value:t})=>{if(typeof t==`boolean`&&t){this.toggleAttribute(e);return}let n=t;typeof t==`object`&&(n=JSON.stringify(t)),this.getAttribute(e)==n?this.removeAttribute(e):this.setAttribute(e,n)},"fv:update-visibility":()=>{this.updateVisibility()},"fv:scroll-to-top":({behavior:e})=>{this.scrollTo({top:0,left:0,behavior:e??`auto`})}},R.register(this),this.addEventListener(`keydown`,(e=>{e.key===`Enter`&&e.composedPath()[0]===this&&(e.preventDefault(),e.stopPropagation(),this.click())})),this.TriggerLocalesModelLoaded()}static{this.styles=[r(Gi),r(`${Ee}${De}${Oe}`),r(za)]}fireDOMEvents(e){let t=this.domEvents?.[e]||[];t.length>0&&t.forEach(({id:e,data:t})=>{pe.emit(e,t)})}static{this._mobile=void 0}get mobile(){return t._mobile===void 0&&(t._mobile=de.isMobileDevice()),t._mobile||!1}static{this._isIOS=void 0}get isIOS(){return t._isIOS===void 0&&(t._isIOS=/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform===`MacIntel`&&navigator.maxTouchPoints>1),t._isIOS}AddConnectedCallbackAction(e){this._connectedCallbackActions.push(e)}ResetConnectedCallbackAction(){this._connectedCallbackActions=[]}async TriggerConnectedCallbackActions(){for(let e of this._connectedCallbackActions)await e()}async TriggerLocalesModelLoaded(){await A.IsFileRead(),this.localesModelLoaded()}localesModelLoaded(){}connectedCallback(){this.baseOptions.registerLocalesModel&&A.Register(this),super.connectedCallback?.(),this.setAttribute(`isfv`,``),this.isIOS&&this.setAttribute(`ios`,``),this.TriggerConnectedCallbackActions(),this._installDeclaredStateHandlers(),this.fireDOMEvents(`connected`)}disconnectedCallback(){this.fireDOMEvents(`disconnected`),super.disconnectedCallback?.()}addEventListener(e,t,n){e===`click`&&this.AddConnectedCallbackAction(async()=>{this.tabIndex=0,this.role=`button`}),super.addEventListener(e,t,n)}willUpdate(e){super.willUpdate?.(e),this.dispatchEvent(new Ha(this))}updated(e){super.updated?.(e),this.dispatchEvent(new Ua(this))}async checkFurnview(){await j.IsAppReady,this.furnviewLoaded=!0}firstUpdated(e){super.firstUpdated?.(e),this.checkFurnview()}isEmpty(){let e=0;if(this.shadowRoot)for(let t of Array.from(this.shadowRoot.children))t.tagName!==`SLOT`&&e++;return this.children.length+e<=0}static{this._dimensionScale=void 0}get Unit(){switch(t._dimensionScale){case 1:return`mm`;case .1:return`cm`;case .01:return`dm`;case .001:return`m`;default:return`error`}}get DimensionScale(){return t._dimensionScale??.1}static{this._dimensionDigits=void 0}get Digits(){return t._dimensionDigits??1}isPartOfHiddenSubtree(){return R.isPartOfHiddenSubtree(this)}shouldUpdate(e){return!this.baseOptions.updateWhileDisconnected&&!this.isConnected?!1:super.shouldUpdate?.(e)??!0}async scheduleUpdate(){if(this.furnviewLoaded&&(await j.IsAppReady,t._dimensionScale??=await O.getDimensionScale(),t._dimensionDigits??=await O.getDimensionDigits()),!(!this.baseOptions.updateWhileDisconnected&&!this.isConnected))return super.scheduleUpdate?.()}updateVisibility(){if(this.visibleSelectors){let e=[],t=this.visibleSelectors.element;if(!t[`ignore-default-target-content`]){let n=(t.all?R.findAll(t.name,t.selector):[R.find(t.name,t.selector)]).filter(Boolean);e.push(...n)}for(let n of t[`additional-target-contents`]||[]){let t=R.find(n.name,n.selector);t&&e.push(t)}this.hideElement=e.every(e=>e.isEmpty())}}ListensToState(e){return this._installedStateListeners.has(e)}onState(e,t){U.RegisterStateHandler(e),this.addEventListener(e,(e=>{let n=e,r=n.detail;try{n.waitUntil(t(r?.data))}catch(e){n.waitUntil(Promise.reject(e))}})),this._installedStateListeners.add(e)}_installDeclaredStateHandlers(){for(let e of[this._builtinStateHandlers,this.stateHandlers])if(e)for(let t of Object.keys(e)){if(this._installedStateListeners.has(t))continue;let n=e[t];n&&this.onState(t,n)}}VerifyStepStageChange(){return!0}async ApplyStepStage(e){}async DetermineStepStageEnvironment(){}};return Va([T({type:Object,reflect:!0})],t.prototype,`domEvents`),Va([T({type:String,reflect:!0,attribute:`mobile-mode`})],t.prototype,`mobileMode`),Va([T({type:Object,reflect:!0,attribute:`visible-selectors`})],t.prototype,`visibleSelectors`),t})(Yi),Wa=`:host{padding-top:1rem}:host fv-labeled-input{--input-outer-width: 100%;flex:.5}:host .currency-name{display:flex;flex-direction:column;justify-content:center}:host .overview{display:flex;flex-direction:column}:host .overview .row{padding-left:1px;display:flex;flex-direction:row;gap:.5rem}:host .overview .row.space-between{justify-content:space-between}:host .overview .row:not(:first-child){padding-top:1rem}:host .overview .column{display:flex;flex-direction:column}:host .overview .column.content{flex:1}:host .overview .icon-container{display:flex}:host .overview .icon-container fv-icon{color:red}
 `,Ga=Object.defineProperty,Ka=Object.getOwnPropertyDescriptor,qa=Object.getPrototypeOf,Ja=Reflect.get,Ya=(e,t,n,r)=>{for(var i=r>1?void 0:r?Ka(t,n):t,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&Ga(t,n,i),i},Xa=(e,t,n)=>Ja(qa(e),n,t),Za=class extends W{constructor(){super(),this.additionalPositions={articles:[]},this.currency=``,j?.on(`furnview.changePrice`,async e=>{let t=e;this.currency=t.currency})}render(){return h`
@@ -18705,5 +18705,4 @@
             </div>
             <slot name="after" class="${b(t)}"></slot>
         `}};az.styles=[iz(az,az,`styles`)||[],i`${r(QR)}`],rz([T({type:Number,reflect:!0})],az.prototype,`current`,2),rz([T({type:Number,reflect:!0})],az.prototype,`total`,2),rz([T({type:Boolean,reflect:!0,attribute:`auto-hide-slots`})],az.prototype,`autoHideSlots`,2),rz([T({type:Object,reflect:!1})],az.prototype,`events`,2),rz([T({type:Boolean,reflect:!0,attribute:`prevent-empty-handler-selection`})],az.prototype,`preventEmptyHandlers`,2),rz([T({type:Boolean,reflect:!0,attribute:`prevent-default-handler`})],az.prototype,`preventDefaultHandlers`,2),az=rz([m(`fv-pagination`)],az);var oz=`.close-symbol{position:relative;cursor:pointer;width:100%;height:100%}.close-symbol.loading{z-index:999}.close-symbol.loading:after,.close-symbol.loading:before{background:#fff}.close-symbol:after,.close-symbol:before{content:" ";position:absolute;width:100%;height:1px;top:50%;background:var(--close-symbol-background, #888);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0}.close-symbol:after:hover,.close-symbol:before:hover{background:var(--close-symbol-background-hover, #333)}.close-symbol:after{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);transform:rotate(-45deg)}.close-symbol:before{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);transform:rotate(45deg)}:host(.active) .circle-number-symbol{border:var(--circle-number-symbol-border-active, 2px solid #000000)}.circle-number-symbol{position:relative;width:var(--circle-number-symbol-size, 30px);height:var(--circle-number-symbol-size, 30px);border-radius:50%;border:var(--circle-number-symbol-border, 2px solid white);box-shadow:var(--circle-number-symbol-box-shadow, 1px 2px 5px 0 black);background:var(--circle-number-symbol-background, var(--primary-color, red));color:var(--circle-number-symbol-color, var(--primary-text-color, black));display:flex;justify-content:center;align-items:center}.custom-symbol{position:relative;cursor:pointer;left:10px;display:flex}.custom-symbol.up:after{background-image:var(--custom-symbol-image-down, url(/webui/images/minus.svg));content:"";height:18px}.custom-symbol.down:after{background-image:var(--custom-symbol-image-down, url(/webui/images/plus.svg));content:"";height:18px}.custom-symbol:after{color:#1e1e1e;padding:0 0 2px;margin:auto 0;pointer-events:none;transform:translate(-15px);width:18px}.accordion-symbol{position:relative;cursor:pointer;left:10px;display:flex}.accordion-symbol.up:after{content:"-";font-size:xx-large;transform:scaleX(2) translate(-4px)}.accordion-symbol.down:after{content:"+";font-size:xx-large}.accordion-symbol:after{color:#1e1e1e;padding:0 0 2px;margin:auto 0;pointer-events:none;transform:translate(-15px);width:18px}.chevron-symbol{position:relative;cursor:pointer;left:10px}.chevron-symbol.up:after{content:"<"}.chevron-symbol.down:after{content:">"}.chevron-symbol:after{font:17px Consolas,monospace;color:inherit;-webkit-transform:rotate(90deg) translateX(-100%);-moz-transform:rotate(90deg) translateX(-100%);-ms-transform:rotate(90deg) translateX(-100%);transform:rotate(90deg) translate(-100%);padding:0 0 2px;position:absolute;pointer-events:none}@media(width>=980px){.only-mobile{display:none!important}}@media(width<=980px){.only-desktop{display:none!important}}.bold{font-weight:var(--global-font-weight-bold, 600)}*{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-family:var(--global-font, Roboto, sans-serif);font-weight:var(--global-font-weight, 400)}.container{display:flex;margin:10px 0}.container.column{flex-direction:column}.container.column.reverse{flex-direction:column-reverse}.container.row{flex-direction:row}.container.row.reverse{flex-direction:row-reverse}.fluid{flex:1}.fluid.space-after{margin-right:55px}.hidden{display:none!important}:host(.mobile-mode-hide),.mobile-mode-hide{display:none!important}.invisible{visibility:hidden!important}:host(.invisible-scroll),.invisible-scroll{overflow:hidden;margin-right:-22px}:host(.invisible-scroll)>:first-child,.invisible-scroll>:first-child{overflow-y:scroll;overflow-x:hidden;padding-right:22px;box-sizing:content-box}:host(.invisible-scroll.bottom),.invisible-scroll.bottom{overflow:hidden;margin-right:unset}:host(.invisible-scroll.bottom)>:first-child,.invisible-scroll.bottom>:first-child{overflow-x:scroll;overflow-y:hidden;padding-right:unset;padding-bottom:22px;margin-bottom:-22px;box-sizing:content-box}:host([disabled]){pointer-events:none;filter:contrast(.5) grayscale(1)}*{scrollbar-color:#5c5c5c hsla(0,0%,100%,.0039215686);scrollbar-width:thin}*[disabled][isfv]{pointer-events:none;filter:contrast(.5) grayscale(1)}::-webkit-scrollbar{height:8px;width:8px;background:#fff0}::-webkit-scrollbar-corner{background:#fff0}::-webkit-scrollbar-thumb{background:#5c5c5c;-webkit-border-radius:8px}::-webkit-scrollbar-button:vertical:start:increment,::-webkit-scrollbar-button:vertical:end:decrement,::-webkit-scrollbar-button:horizontal:end:increment,::-webkit-scrollbar-button:horizontal:end:decrement,::-webkit-scrollbar-button{background-color:#0000;color:#0000;border:none}:host{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:var(--pagination-item-size, 2.25em);height:var(--pagination-item-size, 2.25em);border-radius:50%;border:var(--pagination-item-border-width, 1.5px) solid var(--pagination-item-border-color, #ccc);background-color:var(--pagination-item-background, transparent);color:var(--pagination-item-color, var(--primary-text-color, black));font-size:var(--pagination-item-font-size, .875rem);cursor:pointer;user-select:none;transition:var(--pagination-item-transition, background-color .2s ease, border-color .2s ease, color .2s ease);flex-shrink:0}:host .label{line-height:1;font-size:inherit}:host([active]){background-color:var(--pagination-item-active-background, var(--primary-color, red));border-color:var(--pagination-item-active-border-color, var(--primary-color, red));color:var(--pagination-item-active-color, var(--primary-button-text-color, white));cursor:default;pointer-events:none}:host(:hover:not([active])){border-color:var(--pagination-item-hover-border-color, var(--primary-color, red))}
-`,sz=Object.defineProperty,cz=Object.getOwnPropertyDescriptor,lz=Object.getPrototypeOf,uz=Reflect.get,dz=(e,t,n,r)=>{for(var i=r>1?void 0:r?cz(t,n):t,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&sz(t,n,i),i},fz=(e,t,n)=>uz(lz(e),n,t),pz=class extends W{constructor(){super(...arguments),this.value=0,this.active=!1}render(){return h`<span class="label">${this.value}</span>`}};pz.styles=[fz(pz,pz,`styles`)||[],i`${r(oz)}`],dz([T({type:Number,reflect:!0})],pz.prototype,`value`,2),dz([T({type:Boolean,reflect:!0})],pz.prototype,`active`,2),pz=dz([m(`fv-pagination-item`)],pz),window.g_dataInterface={};
-//# sourceMappingURL=dh.chunk.js.map
\ No newline at end of file
+`,sz=Object.defineProperty,cz=Object.getOwnPropertyDescriptor,lz=Object.getPrototypeOf,uz=Reflect.get,dz=(e,t,n,r)=>{for(var i=r>1?void 0:r?cz(t,n):t,a=e.length-1,o;a>=0;a--)(o=e[a])&&(i=(r?o(t,n,i):o(i))||i);return r&&i&&sz(t,n,i),i},fz=(e,t,n)=>uz(lz(e),n,t),pz=class extends W{constructor(){super(...arguments),this.value=0,this.active=!1}render(){return h`<span class="label">${this.value}</span>`}};pz.styles=[fz(pz,pz,`styles`)||[],i`${r(oz)}`],dz([T({type:Number,reflect:!0})],pz.prototype,`value`,2),dz([T({type:Boolean,reflect:!0})],pz.prototype,`active`,2),pz=dz([m(`fv-pagination-item`)],pz),window.g_dataInterface={};
\ No newline at end of file
diff --git a/client/vendor/dh.chunk.js.map b/client/vendor/dh.chunk.js.map
deleted file mode 100644
index 03fa4bb..0000000
--- a/client/vendor/dh.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"dh.chunk.js","names":["style$E","property","__defProp$C","__getOwnPropDesc$E","__decorateClass$E","LitElement","unsafeCSS","state","customElement","style$D","__defProp$B","__getOwnPropDesc$D","__decorateClass$D","style$C","__defProp$A","__getOwnPropDesc$C","__decorateClass$C","style$B","__defProp$z","__getOwnPropDesc$B","__decorateClass$B","queryAsync","style$A","__defProp$y","__getOwnPropDesc$A","__decorateClass$A","guard","choose","mouseEvent","query","style$z","__defProp$x","__getOwnPropDesc$z","__decorateClass$z","style$y","__defProp$w","__getOwnPropDesc$y","__decorateClass$y","style$x","__defProp$v","__getOwnPropDesc$x","__decorateClass$x","classMap","ifDefined","keyboardEvent","style$w","__defProp$u","__getOwnPropDesc$w","__decorateClass$w","repeat","style$v","__defProp$t","__getOwnPropDesc$v","__decorateClass$v","style$u","__defProp$s","__getOwnPropDesc$u","__decorateClass$u","nothing","style$t","__defProp$r","__getOwnPropDesc$t","__decorateClass$t","style$s","__defProp$q","__getOwnPropDesc$s","__decorateClass$s","style$r","__getOwnPropDesc$r","__decorateClass$r","style$q","__defProp$p","__getOwnPropDesc$q","__decorateClass$q","style$p","__defProp$o","__getOwnPropDesc$p","__decorateClass$p","style$o","__defProp$n","__getOwnPropDesc$o","__decorateClass$o","style$n","__defProp$m","__getOwnPropDesc$n","__decorateClass$n","style$m","style$l","__defProp$l","__getOwnPropDesc$m","__decorateClass$m","__defProp$k","__getOwnPropDesc$l","__decorateClass$l","style$k","__defProp$j","__getOwnPropDesc$k","__getProtoOf","__reflectGet","__decorateClass$k","__superGet","style$j","__defProp$i","__getOwnPropDesc$j","__decorateClass$j","style$i","__defProp$h","__getOwnPropDesc$i","__decorateClass$i","style$h","__defProp$g","__getOwnPropDesc$h","__decorateClass$h","keyed","style$g","__defProp$f","__getOwnPropDesc$g","__decorateClass$g","style$f","__defProp$e","__getOwnPropDesc$f","__decorateClass$f","style$e","__defProp$d","__getOwnPropDesc$e","__decorateClass$e","style$d","__defProp$c","__getOwnPropDesc$d","__decorateClass$d","style$c","__defProp$b","__getOwnPropDesc$c","__decorateClass$c","style$b","__defProp$a","__getOwnPropDesc$b","__decorateClass$b","style$a","__defProp$9","__getOwnPropDesc$a","__decorateClass$a","style$9","__defProp$8","__getOwnPropDesc$9","__decorateClass$9","style$8","__defProp$7","__getOwnPropDesc$8","__decorateClass$8","style$7","__defProp$6","__getOwnPropDesc$7","__decorateClass$7","style$6","__getOwnPropDesc$6","__decorateClass$6","style$5","__defProp$5","__getOwnPropDesc$5","__decorateClass$5","style$4","__defProp$4","__getOwnPropDesc$4","__decorateClass$4","style$3","__defProp$3","__getOwnPropDesc$3","__decorateClass$3","style$2","rgbToHsv","__defProp$2","__getOwnPropDesc$2","__decorateClass$2","style$1","__defProp$1","__getOwnPropDesc$1","__decorateClass$1","style","__defProp","__getOwnPropDesc","__decorateClass","__decorateClass","groups","elementInfo","nameToUse","names","CardFetchMethod","FilterSelectionStrategy","CardContainerUpdate","CardContainerSpecialInteractionContext","CardContainerEvents","CardDataUpdateEvent","CardDataServiceAction","data","eCatalogFilterState","DragType","ContextFilterStrategy","ZoomType","Perspectives","targets","style","__superGet","event","convertDecimalNCRtoUTF8","context","component","property","options","query","html","h","a","c","d","g","b","DEFAULT_DEFINES","e","PPTheme","PPMode","PTThemeIndexClass","s","value","range","UpdatedEvent","unittxt","existing","result","resultMap","FilterSelectionData","doesNotInclude","components","params","onSelectionEvents","elementData_","target","name","pieces","ZoomStyle","RenderMode","items","EasingType","EasingDirection","dataValue","category","button","buttons","currentOptionsCount"],"sources":["../../../../node_modules/.pnpm/@dh-software+furnview-icons@1.0.19/node_modules/@dh-software/furnview-icons/dist/furnview-icons.mjs","../../../../node_modules/.pnpm/@dh-software+dh-components@_b198ffda93d49d78691259e4fd4a2a30/node_modules/@dh-software/dh-components/dist/dh-components.mjs","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+env@0.0.1/node_modules/@dh-software/env/dist/env.mjs","../../../../../../furnview-components/src/utils/logging.ts","../../../../../../furnview-components/src/utils/component.service.ts","../../../../../../furnview-components/src/components/standard/base/hide.base.ts","../../../../../../furnview-components/src/models/event-handler/component-state-event.ts","../../../../../../furnview-components/src/utils/configurator-api.data.service.ts","../../../../../../furnview-components/src/utils/catalog.service.ts","../../../../../../furnview-components/src/utils/manu-prog.service.ts","../../../../../../furnview-components/src/utils/util.service.ts","../../../../../../furnview-components/src/utils/cloud-id.service.ts","../../../../../../furnview-components/src/utils/session-storage.service.ts","../../../../../../furnview-components/src/components/standard/card-container/internals/card-containers-shared-data.ts","../../../../../../furnview-components/src/models/card-container/card-container-definitions.ts","../../../../../../furnview-components/src/models/card-container/card-container-events.ts","../../../../../../furnview-components/src/models/card-container/card-data-service-update-events.ts","../../../../../../furnview-components/src/utils/card.data.service.ts","../../../../../../furnview-components/src/utils/card-container-event.service.ts","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+webui-types@fi_816d39e6d80e49f23392bc0d94cfa22c/node_modules/@dh-software/webui-types/src/types/catalog.types.ts","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+webui-types@fi_816d39e6d80e49f23392bc0d94cfa22c/node_modules/@dh-software/webui-types/src/types/drag-drop.types.ts","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+webui-types@fi_816d39e6d80e49f23392bc0d94cfa22c/node_modules/@dh-software/webui-types/src/types/placer.types.ts","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+webui-types@fi_816d39e6d80e49f23392bc0d94cfa22c/node_modules/@dh-software/webui-types/src/types/property-context.types.ts","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+webui-types@fi_816d39e6d80e49f23392bc0d94cfa22c/node_modules/@dh-software/webui-types/src/types/zoom.types.ts","../../../../../../furnview-components/src/models/perspective/search-perspectives.ts","../../../../../../furnview-components/src/models/event-handler/global-events.ts","../../../../../../furnview-components/src/utils/event.handler.service.ts","../../../../../../furnview-components/src/components/standard/base/base.component.ts","../../../../../../furnview-components/src/components/additional-positions/additonal-positons.ts","../../../../../../furnview-components/src/components/standard/dropdown/dropdown-item/dropdown-item.component.ts","../../../../../../furnview-components/src/components/standard/dropdown/dropdown/dropdown.component.ts","../../../../../../furnview-components/src/utils/image.service.ts","../../../../../../furnview-components/src/components/catalog/article-item/article-item.component.ts","../../../../../../furnview-components/src/components/catalog/article-list/article-list.component.ts","../../../../../../furnview-components/src/components/catalog/fitting-item/fitting-item.component.ts","../../../../../../furnview-components/src/components/catalog/proptrans-item/proptrans-item.component.ts","../../../../../../furnview-components/src/components/catalog/shoppingcart-item/shoppingcart-item.component.ts","../../../../../../furnview-components/src/utils/style.helper.ts","../../../../../../furnview-components/src/components/standard/button/button.component.ts","../../../../../../furnview-components/src/components/standard/button/confirming-button.component.ts","../../../../../../furnview-components/src/components/standard/base/step-child.component.ts","../../../../../../furnview-components/src/models/event-handler/event.handler.model.ts","../../../../../../furnview-components/src/components/catalog/equipment-list/equipment-list.component.ts","../../../../../../furnview-components/src/components/catalog-selector/catalog-selector.component.ts","../../../../../../furnview-components/src/components/catalog-selector/catalog-selector-option.component.ts","../../../../../../furnview-components/src/utils/price-format.service.ts","../../../../../../furnview-components/src/components/price/total-price/total-price.component.ts","../../../../../../furnview-components/src/components/price/price-summary/price-summary.component.ts","../../../../../../furnview-components/src/utils/scene-helper.service.ts","../../../../../../furnview-components/src/components/price/price-item-base/base-price-item.ts","../../../../../../furnview-components/src/components/price/price-item/price-item.component.ts","../../../../../../furnview-components/src/components/price/price-item-2/price-item-2.component.ts","../../../../../../furnview-components/src/components/price/price-item-3/price-item-3.component.ts","../../../../../../furnview-components/src/components/price/price-item-4/price-item-4.component.ts","../../../../../../furnview-components/src/components/price/price-item-5/price-item-5.component.ts","../../../../../../furnview-components/src/components/price/price-item-6/price-item-6.component.ts","../../../../../../furnview-components/src/utils/dimension-helper.class.ts","../../../../../../furnview-components/src/components/price/price-item-fp/price-item-fp.component.ts","../../../../../../furnview-components/src/components/price/price-list/price-list.component.ts","../../../../../../furnview-components/src/components/price/price-level-accordion/price-level-accordion.component.ts","../../../../../../furnview-components/src/components/price/price-level-accordion/price-accordion-item.ts","../../../../../../furnview-components/src/components/price/price-dimensions-item/price-dimensions-item.component.ts","../../../../../../furnview-components/src/components/standard/dimmer/dimmer.component.ts","../../../../../../furnview-components/src/components/standard/loading/loading.component.ts","../../../../../../furnview-components/src/utils/key-frame-effect.service.ts","../../../../../../furnview-components/src/components/standard/modal/modal.component.ts","../../../../../../furnview-components/src/components/standard/base/mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/information/information.mask.component.ts","../../../../../../furnview-components/src/components/price/price-overview/price-overview.component.ts","../../../../../../furnview-components/src/components/price/price-display/price-display.component.ts","../../../../../../furnview-components/src/components/standard/arrange/flex-container/flex-container.component.ts","../../../../../../furnview-components/src/components/standard/tab-control/tab-control.component.ts","../../../../../../furnview-components/src/components/standard/label/label.component.ts","../../../../../../furnview-components/src/components/standard/dimension-change/dimension-change.component.ts","../../../../../../furnview-components/src/components/standard/input/basic-slider/basic.slider.component.ts","../../../../../../furnview-components/src/components/standard/input/contrained-input/constrained.input.component.ts","../../../../../../furnview-components/src/components/standard/input/base/base-input.ts","../../../../../../furnview-components/src/components/standard/input/input/input.component.ts","../../../../../../furnview-components/src/components/standard/input/labeled-input/labeled-input.component.ts","../../../../../../furnview-components/src/components/standard/input/range-slider/range.slider.input.component.ts","../../../../../../furnview-components/src/components/standard/input/range-slider/shared.range.slider.input.component.ts","../../../../../../furnview-components/src/components/standard/input/slider/slider.component.ts","../../../../../../furnview-components/src/components/standard/input/validating-input/validating-input.component.ts","../../../../../../furnview-components/src/components/standard/text-box/text-box.component.ts","../../../../../../furnview-components/src/components/standard/list/list-box.component.ts","../../../../../../furnview-components/src/components/standard/icon/icon.component.ts","../../../../../../furnview-components/src/components/dealer/dealer.component.ts","../../../../../../furnview-components/src/components/standard/modal-step/modal.step.component.ts","../../../../../../furnview-components/src/components/standard/modal/message/message.component.ts","../../../../../../furnview-components/src/components/dealer/search-dealer/search-dealer.component.ts","../../../../../../furnview-components/src/components/standard/checkbox/checkbox.component.ts","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+request-config_d6f3a00eeafef8db17d0b9b347e93803/node_modules/@dh-software/request-configurator-ui/dist/request-configurator-ui.mjs","../../../../../../furnview-components/src/components/dealer/request/request.component.ts","../../../../../../furnview-components/src/components/standard/loading/loader/dot-flashing/dot-flashing-loader.component.ts","../../../../../../furnview-components/src/components/standard/loading/controller/clock.controller.ts","../../../../../../furnview-components/src/utils/defer-helper.class.ts","../../../../../../furnview-components/src/components/standard/loading/modal/loading-modal.component.ts","../../../../../../furnview-components/src/components/standard/loading/loader/rotating-dots/rotating-dots-loader.component.ts","../../../../../../furnview-components/src/components/standard/loading/form-loading-modal/configurator-form-loading.component.ts","../../../../../../furnview-components/src/components/standard/loading/progress/progress.component.ts","../../../../../../furnview-components/src/components/standard/popup/popup.component.ts","../../../../../../furnview-components/src/components/standard/popup/popup-closer.component.ts","../../../../../../furnview-components/src/components/hr/hr-item.component.ts","../../../../../../furnview-components/src/models/hr/hr-theme.model.ts","../../../../../../furnview-components/src/components/hr/hr-list.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/pp-container.component.ts","../../../../../../furnview-components/src/components/properties/prop-transfer/furnview_theme/pt-property-item.component.ts","../../../../../../furnview-components/src/components/properties/prop-transfer/furnview_theme/pt-property-group.component.ts","../../../../../../furnview-components/src/components/properties/prop-transfer/furnview_theme/pt-theme.index.ts","../../../../../../furnview-components/src/models/color-picker/color-picker.model.ts","../../../../../../furnview-components/src/utils/transition.helper.ts","../../../../../../furnview-components/src/components/colorpicker/ral/ral-picker.component.ts","../../../../../../furnview-components/src/components/colorpicker/ncs/ncs-picker.component.ts","../../../../../../furnview-components/src/components/colorpicker/sikkens/sikkens-picker.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/furnview_theme/pp-property-value.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/furnview_theme/pp-property-values.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/furnview_theme/pp-property.component.ts","../../../../../../furnview-components/src/components/properties/prop-transfer/combine_theme/pt-theme.index.ts","../../../../../../furnview-components/src/components/properties/prop-transfer/pt-container.component.ts","../../../../../../furnview-components/src/components/language-picker/language-picker.component.ts","../../../../../../furnview-components/src/components/datepicker/datepicker.component.ts","../../../../../../furnview-components/src/components/delivery-datepicker/delivery-datepicker.component.ts","../../../../../../furnview-components/src/models/ar/ar-upload.model.ts","../../../../../../furnview-components/src/components/ar/ar-modal.component.ts","../../../../../../furnview-components/src/components/standard/modal/info-modal.component.ts","../../../../../../furnview-components/src/components/standard/modal/option-selection-modal.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/input-mask/input.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/restart-check/restart-check.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/open-cloud-id/open-cloud-id.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/share-link-per-mail/share-link-per-mail.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/request-appointment/request-appointment.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/select-property/select-property.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/select-article/select-article.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/perspective-control/perspective-control.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/reset-modal/reset.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/step-based/step-based.mask.component.ts","../../../../../../furnview-components/src/components/standard/controllers/SlotHideStateController.ts","../../../../../../furnview-components/src/components/standard/modal/masks/synchronised-hide-state/synchronised-hide-state-mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/program-selection-confirmation/program-selection-confirmation.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/container-mask/container-mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/messageNoCalc/messageNoCalc.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/iwoFurn/iwoFurn.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/save-dialog/save-dialog.mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/send-offer-request/send-offer-request-mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/file-upload-mask/file-upload-mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/password-mask/password-mask.component.ts","../../../../../../furnview-components/src/components/standard/modal/masks/dimension-change/dimension-change.mask.component.ts","../../../../../../furnview-components/src/components/action-buttons/base/base-action-button.ts","../../../../../../furnview-components/src/components/action-buttons/show-on-target-scrollable/show-on-target-scrollable-action-button.ts","../../../../../../furnview-components/src/components/standard/base/async.base.component.ts","../../../../../../furnview-components/src/components/standard/cards/base/base.card.ts","../../../../../../furnview-components/src/components/standard/card-container/internals/card-container-filter-selection.ts","../../../../../../furnview-components/src/components/standard/card-container/internals/card-container-settings.ts","../../../../../../furnview-components/src/components/standard/card-container/internals/internal-card-container-list.ts","../../../../../../furnview-components/src/components/standard/card-container/internals/card-element-creator.ts","../../../../../../furnview-components/src/components/standard/card-container/internals/card-container-states.ts","../../../../../../furnview-components/src/components/standard/card-container/internals/card-container-additional-data.ts","../../../../../../furnview-components/src/components/standard/card-container/base/base-card-container.ts","../../../../../../furnview-components/src/components/standard/card-container/containers/card-container.component.ts","../../../../../../furnview-components/src/components/standard/card-container/containers/root-level-selection-card-container.component.ts","../../../../../../furnview-components/src/components/standard/card-container/containers/card-accordion-container.component.ts","../../../../../../furnview-components/src/components/standard/card-container/containers/card-container-slider-filter.component.ts","../../../../../../furnview-components/src/components/standard/card-container/containers/card-container-add-dialog.container.component.ts","../../../../../../furnview-components/src/components/standard/card-container/controls/card-container-back-button.component.ts","../../../../../../furnview-components/src/components/standard/card-container/containers/level-pages-card-container.component.ts","../../../../../../furnview-components/src/components/standard/card-container/containers/multi-level-card-container.component.ts","../../../../../../furnview-components/src/components/standard/informationals/landscape-info.component.ts","../../../../../../furnview-components/src/components/standard/informationals/catalog-information.component.ts","../../../../../../furnview-components/src/components/standard/informationals/dimension-information.component.ts","../../../../../../furnview-components/src/components/standard/informationals/dimension-label.component.ts","../../../../../../furnview-components/src/components/standard/informationals/dimensions-information.component.ts","../../../../../../furnview-components/src/components/standard/informationals/dimension-inputs.component.ts","../../../../../../furnview-components/src/components/standard/card-container/management/card-container-filter-manager.component.ts","../../../../../../furnview-components/src/components/standard/card-container/management/card-container-input-manager.component.ts","../../../../../../furnview-components/src/components/standard/card-container/views/card-container-view.model.ts","../../../../../../furnview-components/src/components/standard/card-container/views/card-container-view.filters.ts","../../../../../../furnview-components/src/components/standard/card-container/views/card-container-view.slide.controller.ts","../../../../../../furnview-components/src/components/standard/card-container/views/card-container-view.component.ts","../../../../../../furnview-components/src/components/standard/card-container/views/card-magnifier-view.component.ts","../../../../../../furnview-components/src/components/standard/cards/basic.card/card.component.ts","../../../../../../furnview-components/src/components/standard/cards/article-card/article-card.component.ts","../../../../../../furnview-components/src/components/standard/cards/color-picker-card/color-picker-card.component.ts","../../../../../../furnview-components/src/utils/card-app-connections/base.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/old-generated-catalog-base.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/kata-page-selection.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/articles-by-categories.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/articles-by-categories-configurator-form.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/articles-by-categories-dimension.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/articles-by-categories-category-selection.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/base-property-card-app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/property-selection.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/property-value-selection.card.app.connection.ts","../../../../../../furnview-components/src/components/standard/steps/steps.component.ts","../../../../../../furnview-components/src/utils/program-selection.helper.ts","../../../../../../furnview-components/src/utils/card-app-connections/program-selection.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/placer-group-selection.card.app.connection.ts","../../../../../../furnview-components/src/utils/landing-page.service.ts","../../../../../../furnview-components/src/utils/card-app-connections/landing-page.card.app.connection.ts","../../../../../../furnview-components/src/utils/media.service.ts","../../../../../../furnview-components/src/utils/card-app-connections/material-selection.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/cards.from.configuration.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/property-context-selection.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/property-context-value-selection.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/property-ui-group-selection.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/wall-elements.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/wall-selection.card.app.connection.ts","../../../../../../furnview-components/src/components/configurator/configurator.form.base.ts","../../../../../../furnview-components/src/utils/card-app-connections/configurator-form-filter.card.app.connection.ts","../../../../../../furnview-components/src/utils/card-app-connections/cross-article-host-selection.card.app.connection.ts","../../../../../../furnview-components/src/components/standard/program-selection/program-selection-program.component.ts","../../../../../../furnview-components/src/components/standard/program-selection/program-selection-level.component.ts","../../../../../../furnview-components/src/components/standard/program-selection/program-selection.component.ts","../../../../../../furnview-components/src/components/standard/arrange/page/page-controller.component.ts","../../../../../../furnview-components/src/components/standard/image/image.component.ts","../../../../../../furnview-components/src/components/standard/image/logo.component.ts","../../../../../../furnview-components/src/components/standard/image/program-image.component.ts","../../../../../../furnview-components/src/components/standard/program-selection/program-information.component.ts","../../../../../../furnview-components/src/components/standard/program-selection/program-information-img.component.ts","../../../../../../furnview-components/src/components/configurator/configurator.form.component.ts","../../../../../../furnview-components/src/components/configurator/configurator.form.page.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.base.element.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.button.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.checkbox.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.list.base.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.images.aligned.inputs.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.list.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.number.input.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.option.selection.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.option.selection.dropdown.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.range.slider.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.shared.range.slider.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-elements/configurator.form.element.text.input.component.ts","../../../../../../furnview-components/src/components/configurator/configurator-form-internal-elements/configurator.form.wrapper.component.ts","../../../../../../furnview-components/src/components/webcab/base/webcab-enable-disable-button.component.ts","../../../../../../furnview-components/src/components/webcab/base/webcab-option-selection.component.ts","../../../../../../furnview-components/src/components/webcab/base/webcab-display-option-selection.component.ts","../../../../../../furnview-components/src/components/webcab/base/webcab-value-input.component.ts","../../../../../../furnview-components/src/components/webcab/base/webcab-ui.component.ts","../../../../../../furnview-components/src/components/webcab/implementations/cabinets-toggle/webcab-ui-cabinets-toggle.ts","../../../../../../furnview-components/src/components/webcab/additional-components/webcab-overview.component.ts","../../../../../../furnview-components/src/components/standard/toolbar/containers/toolbar.component.ts","../../../../../../furnview-components/src/components/standard/toolbar/containers/toggle-toolbar.component.ts","../../../../../../furnview-components/src/components/standard/embedded-svg-icon/svg-icon.component.ts","../../../../../../furnview-components/src/components/standard/toolbar/buttons/toolbar.button.component.ts","../../../../../../furnview-components/src/components/standard/toolbar/buttons/hr-mode.toolbar.button.component.ts","../../../../../../furnview-components/src/components/standard/toolbar/buttons/animation.toolbar.button.component.ts","../../../../../../furnview-components/src/components/standard/step/step.component.ts","../../../../../../furnview-components/src/components/standard/step/icon.step.component.ts","../../../../../../furnview-components/src/components/standard/pill-steps/pill-step.component.ts","../../../../../../furnview-components/src/components/standard/info_button/info.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/accordion_theme/image/titled-image.component.ts","../../../../../../furnview-components/src/components/standard/accordion/accordion-item/accordion-item.component.ts","../../../../../../furnview-components/src/components/standard/accordion/accordion/accordion.component.ts","../../../../../../furnview-components/src/components/standard/accordion/accordion-layer/accordion-layer.component.ts","../../../../../../furnview-components/src/components/standard/accordion/accordion-content/accordion-content.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/accordion_theme/image/property-list.component.ts","../../../../../../furnview-components/src/components/standard/radio/radio.component.ts","../../../../../../furnview-components/src/components/properties/pp-layer/pp-layer.component.ts","../../../../../../furnview-components/src/components/properties/pp-layer/base-accordion.theme.ts","../../../../../../furnview-components/src/components/properties/prop-context/accordion-theme/pp-context-accordion-layer.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/furnview_theme/pp-furnview-accordion-layer.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/webui_theme/pp-menu.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/webui_theme/pp-item.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/webui_theme/pp-items.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/webui_theme/pp-webui-accordion-layer.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/combine_theme/pp-combine-accordion-layer.component.ts","../../../../../../furnview-components/src/components/standard/color/single-color.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/finish-params/finish-params-container.component.ts","../../../../../../furnview-components/src/components/properties/prog-property/accordion_theme/pp-accordion-layer.component.ts","../../../../../../furnview-components/src/components/notice/notice-utils.ts","../../../../../../furnview-components/src/components/standard/property-info/property-info.component.ts","../../../../../../furnview-components/src/components/standard/separator/separator.component.ts","../../../../../../furnview-components/src/components/standard/menu/dockable/dockable-menu.component.ts","../../../../../../furnview-components/src/components/finish/modal/finish-modal.component.ts","../../../../../../furnview-components/src/components/notice/modal/notice-accordion-item.component.ts","../../../../../../furnview-components/src/components/notice/notice-carousel.components.ts","../../../../../../furnview-components/src/utils/local-storage.service.ts","../../../../../../furnview-components/src/components/notice/modal/notice-table-row.component.ts","../../../../../../furnview-components/src/utils/notice-storage.service.ts","../../../../../../furnview-components/src/components/notice/modal/notice-list.component.ts","../../../../../../furnview-components/src/components/notice/modal/notice-list-item.component.ts","../../../../../../furnview-components/src/components/customer/request-modal/request-modal.component.ts","../../../../../../furnview-components/src/components/cloud/cloud-id-display/cloud-id-display.component.ts","../../../../../../furnview-components/src/utils/animation-easing.service.ts","../../../../../../furnview-components/src/components/standard/arrange/animated/animated.container.ts","../../../../../../furnview-components/src/components/standard/arrange/container/container.component.ts","../../../../../../furnview-components/src/components/standard/arrange/grid-container/grid-container.component.ts","../../../../../../furnview-components/src/components/standard/arrange/image-container/image.aligned.container.component.ts","../../../../../../furnview-components/src/components/standard/arrange/layout/layout.component.ts","../../../../../../furnview-components/src/components/standard/arrange/scene-button-page/scene-button-page.component.ts","../../../../../../furnview-components/src/components/standard/arrange/container/scroll.aware.container.component.ts","../../../../../../furnview-components/src/components/standard/control/cam-control-overlay/cam-control-overlay.component.ts","../../../../../../furnview-components/src/components/configurable-icons/arrow.component.ts","../../../../../../furnview-components/src/components/filtered-catalog/filtered-catalog.component.ts","../../../../../../furnview-components/src/components/filtered-catalog/filtered-catalog-toggle-button.component.ts","../../../../../../furnview-components/src/components/filtered-catalog/catalog-options/base/base-filtered-catalog-option.component.ts","../../../../../../furnview-components/src/components/filtered-catalog/catalog-options/implementations/labled-img-option/filtered-catalog-labled-img-option.component.ts","../../../../../../furnview-components/src/components/filtered-catalog/filtered-catalog-filter-buttons.component.ts","../../../../../../furnview-components/src/components/pdf-viewer/pdf-viewer.components.ts","../../../../../../furnview-components/src/components/extension/cloud-id/cloud-id.component.ts","../../../../../../furnview-components/src/components/extension/download/download.component.ts","../../../../../../furnview-components/src/components/legend/legend.component.ts","../../../../../../furnview-components/src/components/external-widget/external-widget.component.ts","../../../../../../furnview-components/src/components/standard/info/manu-prog-info.component.ts","../../../../../../furnview-components/src/components/standard/select/select.component.ts","../../../../../../furnview-components/src/components/standard/select/select-option.component.ts","../../../../../../furnview-components/src/components/webviewer/webviewer.component.ts","../../../../../../furnview-components/src/components/pagination/pagination/pagination.component.ts","../../../../../../furnview-components/src/components/pagination/pagination-item/pagination-item.component.ts","../../../../../../furnview-components/src/index.ts"],"sourcesContent":["var Fonts = \"@font-face{font-family:furnview-icons-simple;src:url(data:font/woff2;base64,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) format(\\\"woff2\\\"),url(data:font/woff;base64,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) format(\\\"woff\\\"),url(data:font/ttf;base64,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AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAh4ZngE4CQkBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQECJxsTFcLBwsISFAkgBgoGCQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIkKJ4BNgUE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AHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAABHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuAABoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAABodHRwOi8vZm9udGVsbG8uY29tAAACAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJIAAAABAAIBAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOADvATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQAOAUoBSwFMAU0BTgFPAIgBUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNBGluZm8Fc3RhcnQFZW50ZXIMaW5zcGlyYXRpb25zCnByb2dpbWFnZXMOZHJvcGRvd24tYXJyb3cIZG93bmxvYWQGdXBsb2FkBmNpcmNsZQlkaW1jaGFuZ2UKZG9vcmNoYW5nZQZkZWxldGURYXVnbWVudGVkX3JlYWxpdHkHY2xvdGhlcwdtZWFzdXJlBW9ub2ZmBHBsYXkKc2NyZWVuc2hvdA9mYV9jYW1lcmFfcmV0cm8JZmFfY2FtZXJhB2ZhX3BsYXkLZmFfem9vbV9vdXQKZmFfem9vbV9pbgdmYV91bmRvF2Fycm93X3JpZ2h0X3VwX3BvaW50aW5nGGFycm93X2xlZnRfZG93bl9wb2ludGluZwxhcnJvd19kb3duXzIDZXllBHVuZG8Ec2F2ZQ9zaG9wcGluZ19jYXJ0XzEPc2hvcHBpbmdfY2FydF8yBXNoYXJlA3BkZgVleWVfMgpleWVfY2xvc2VkBmZvbGRlcgVhcnJvdwRyb29tCGFuYWx5c2lzBnN3aXRjaAhiaWd0aWxlcwVjbG91ZAZjb2xvcnMKZGVjb3JhdGlvbghkZWNvdXBsZQZmaWx0ZXIGZmluaXNoB2ZpdHRpbmcFZmxvb3ICaHIEbG9hZAZsb2dvdXQGbWFnbmV0CG1heGltaXplBm1vdmUzZANuZXcJcGFuc3dpdGNoBnBmZWlsZQhwaWNrbW9kZQZ6b29taW4FcHJpbnQOcHJvamVjdG1hbmFnZXIEcmVkbwZyZWxvYWQIcm90YXRlM2QIc2V0dGluZ3MIc2hvd3Jvb20FdGlsZXMMdHJlZXVwcmVtb3ZlBHdhbGwGcmV3aW5kCmFycm93X2Rvd24NYXJyb3dfdXBfZG93bgZsZXR0ZXILbW9lYmVscGlsb3QHaXdvZnVybgR3YXdpCGxhbmd1YWdlDWxldHRlcl9maWxsZWQKYXJyb3dfbGVmdAZ0b2dnbGUHeW91dHViZQVDRlRfMQhDRlRfMV9GUghDRlRfMV9GUwVDRlRfMghDRlRfMl9CUwdDRlRfNV9MB0NGVF81X1IFQ0ZUXzYFQ0ZUXzcFQ0ZUXzgHQ0ZUXzZfTAdDRlRfNl9SEnBsYW5uaW5nLXR5cGUtZnJlZRRwbGFubmluZy10eXBlLWNvcm5lchZwbGFubmluZy10eXBlLXN0cmFpZ2h0CG5vdGUtYWRkBmNoYW5nZQxjb250ZW50LWNvcHkOY2xvdWQtZG93bmxvYWQPcGxhbm5pbmctdHlwZS11D3BsYW5uaW5nLXR5cGUtbQ9wbGFubmluZy10eXBlLXQdcGxhbm5pbmctdHlwZS1jb3JuZXItbWlycm9yZWQPY2FtZXJhLXNldHRpbmdzEmRlbGV0ZS1maXR0aW5nLWFsbBJkZWxldGUtZml0dGluZy1vbmUFZXJyb3IHZnVybnJheQptb3JlLWhvcml6DXF1ZXN0aW9uLW1hcmsJcmVzZXQtYWxsCXJlc2V0LW9uZQZyb3RhdGUPZG9vci1oaW5nZS1sZWZ0EGRvb3ItaGluZ2UtcmlnaHQTZmEtY2FtZXJhLXJpZ2h0LXRvcA9mYS1jYW1lcmEtZnJvbnQNZmEtY2FtZXJhLXRvcAlmYS0yZC10b3ALZmEtMmQtZnJvbnQFY2hlY2sFY2xvc2UMY2hlY2stY2lyY2xlBXRvb2xzB2FycmFuZ2UKYXBwbGlhbmNlcw9zd2FwLWhvcml6b250YWwWc3dhcC1ob3Jpem9udGFsLWNpcmNsZQdhZGQtYm94C3BsdXMtY2lyY2xlC2Rlc2NyaXB0aW9uB2ZvbGRlcjIFZHJhZnQEbWVudQltZW51LW9wZW4QcmVzZXQtdG8tZGVmYXVsdAVzaG92ZQAAAAAAAAH//wACAAEAAAAMAAAAHAAAAAIAAgADAAsAAQAPAJEAAQAEAAAAAgAAAAAAAQAAAADf1ssxAAAAAN8XeeEAAAAA5lAaYw==) format(\\\"ttf\\\");font-weight:400;font-style:bold}@font-face{font-family:furnview-icons-multi;src:url(data:font/woff2;base64,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) format(\\\"woff2\\\"),url(data:font/woff;base64,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) format(\\\"woff\\\"),url(data:font/ttf;base64,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) format(\\\"ttf\\\");font-weight:400;font-style:bold}\\n\";\n\nvar SimpleIcons = \"[class*=fv-icon]{text-align:center;font-size:var(--fv-icons-font-size, initital);line-height:var(--fv-icons-line-height, var(--fv-icons-font-size, initital))}[class*=fv-icon]:before{display:flex;font-family:furnview-icons-simple;font-style:normal;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:auto;text-align:center;justify-content:center;align-items:center;height:100%;line-height:inherit}.mirrored-x:before{transform:scaleX(-1)}.mirrored-y:before{transform:scaleY(-1)}.fv-icon-info:before{content:\\\"!\\\"/\\\"\\\"}.fv-icon-start:before{content:\\\"0\\\"/\\\"\\\"}.fv-icon-enter:before{content:\\\"1\\\"/\\\"\\\"}.fv-icon-inspirations:before{content:\\\"2\\\"/\\\"\\\"}.fv-icon-progimages:before{content:\\\"3\\\"/\\\"\\\"}.fv-icon-dropdown-arrow:before{content:\\\"4\\\"/\\\"\\\"}.fv-icon-download:before{content:\\\"5\\\"/\\\"\\\"}.fv-icon-upload:before{content:\\\"6\\\"/\\\"\\\"}.fv-icon-circle:before{content:\\\"7\\\"/\\\"\\\"}.fv-icon-dimchange:before{content:\\\"A\\\"/\\\"\\\"}.fv-icon-doorchange:before{content:\\\"B\\\"/\\\"\\\"}.fv-icon-delete:before{content:\\\"C\\\"/\\\"\\\"}.fv-icon-augmented-reality:before{content:\\\"D\\\"/\\\"\\\"}.fv-icon-clothes:before{content:\\\"E\\\"/\\\"\\\"}.fv-icon-measure:before{content:\\\"F\\\"/\\\"\\\"}.fv-icon-onoff:before{content:\\\"G\\\"/\\\"\\\"}.fv-icon-play:before{content:\\\"H\\\"/\\\"\\\"}.fv-icon-screenshot:before{content:\\\"I\\\"/\\\"\\\"}.fv-icon-fa-camera-retro:before{content:\\\"J\\\"/\\\"\\\"}.fv-icon-fa-camera:before{content:\\\"K\\\"/\\\"\\\"}.fv-icon-fa-play:before{content:\\\"L\\\"/\\\"\\\"}.fv-icon-fa-zoom-out:before{content:\\\"M\\\"/\\\"\\\"}.fv-icon-fa-zoom-in:before{content:\\\"N\\\"/\\\"\\\"}.fv-icon-fa-undo:before{content:\\\"O\\\"/\\\"\\\"}.fv-icon-arrow-right-up-pointing:before{content:\\\"P\\\"/\\\"\\\"}.fv-icon-arrow-left-down-pointing:before{content:\\\"Q\\\"/\\\"\\\"}.fv-icon-arrow-down-2:before{content:\\\"R\\\"/\\\"\\\"}.fv-icon-eye:before{content:\\\"S\\\"/\\\"\\\"}.fv-icon-undo:before{content:\\\"T\\\"/\\\"\\\"}.fv-icon-save:before{content:\\\"U\\\"/\\\"\\\"}.fv-icon-shopping-cart-1:before{content:\\\"V\\\"/\\\"\\\"}.fv-icon-shopping-cart-2:before{content:\\\"W\\\"/\\\"\\\"}.fv-icon-share:before{content:\\\"X\\\"/\\\"\\\"}.fv-icon-pdf:before{content:\\\"Y\\\"/\\\"\\\"}.fv-icon-eye-2:before{content:\\\"Z\\\"/\\\"\\\"}.fv-icon-eye-closed:before{content:\\\"[\\\"/\\\"\\\"}.fv-icon-folder:before{content:\\\"\\\\\\\\\\\"/\\\"\\\"}.fv-icon-arrow:before{content:\\\"]\\\"/\\\"\\\"}.fv-icon-room:before{content:\\\"^\\\"/\\\"\\\"}.fv-icon-analysis:before{content:\\\"_\\\"/\\\"\\\"}.fv-icon-switch:before{content:\\\"`\\\"/\\\"\\\"}.fv-icon-bigtiles:before{content:\\\"a\\\"/\\\"\\\"}.fv-icon-cloud:before{content:\\\"b\\\"/\\\"\\\"}.fv-icon-colors:before{content:\\\"c\\\"/\\\"\\\"}.fv-icon-decoration:before{content:\\\"d\\\"/\\\"\\\"}.fv-icon-decouple:before{content:\\\"e\\\"/\\\"\\\"}.fv-icon-filter:before{content:\\\"f\\\"/\\\"\\\"}.fv-icon-finish:before{content:\\\"g\\\"/\\\"\\\"}.fv-icon-fitting:before{content:\\\"h\\\"/\\\"\\\"}.fv-icon-floor:before{content:\\\"i\\\"/\\\"\\\"}.fv-icon-hr:before{content:\\\"j\\\"/\\\"\\\"}.fv-icon-load:before{content:\\\"k\\\"/\\\"\\\"}.fv-icon-logout:before{content:\\\"l\\\"/\\\"\\\"}.fv-icon-magnet:before{content:\\\"m\\\"/\\\"\\\"}.fv-icon-maximize:before{content:\\\"n\\\"/\\\"\\\"}.fv-icon-minus:before{content:\\\"o\\\"/\\\"\\\"}.fv-icon-move3d:before{content:\\\"p\\\"/\\\"\\\"}.fv-icon-new:before{content:\\\"q\\\"/\\\"\\\"}.fv-icon-panswitch:before{content:\\\"r\\\"/\\\"\\\"}.fv-icon-pfeile:before{content:\\\"s\\\"/\\\"\\\"}.fv-icon-pickmode:before{content:\\\"t\\\"/\\\"\\\"}.fv-icon-zoomin:before{content:\\\"v\\\"/\\\"\\\"}.fv-icon-print:before{content:\\\"w\\\"/\\\"\\\"}.fv-icon-projectmanager:before{content:\\\"x\\\"/\\\"\\\"}.fv-icon-redo:before{content:\\\"y\\\"/\\\"\\\"}.fv-icon-reload:before{content:\\\"z\\\"/\\\"\\\"}.fv-icon-rotate3d:before{content:\\\"{\\\"/\\\"\\\"}.fv-icon-settings:before{content:\\\"|\\\"/\\\"\\\"}.fv-icon-showroom:before{content:\\\"}\\\"/\\\"\\\"}.fv-icon-tiles:before{content:\\\"~\\\"/\\\"\\\"}.fv-icon-treeupremove:before{content:\\\"\\\\a9\\\"/\\\"\\\"}.fv-icon-wall:before{content:\\\"\\\\ac\\\"/\\\"\\\"}.fv-icon-rewind:before{content:\\\"\\\\ae\\\"/\\\"\\\"}.fv-icon-plus:before{content:\\\"\\\\af\\\"/\\\"\\\"}.fv-icon-arrow-down:before{content:\\\"\\\\b0\\\"/\\\"\\\"}.fv-icon-arrow-up-down:before{content:\\\"\\\\b1\\\"/\\\"\\\"}.fv-icon-letter:before{content:\\\"\\\\b2\\\"/\\\"\\\"}.fv-icon-moebelpilot:before{content:\\\"\\\\b3\\\"/\\\"\\\"}.fv-icon-iwofurn:before{content:\\\"\\\\b4\\\"/\\\"\\\"}.fv-icon-wawi:before{content:\\\"\\\\b5\\\"/\\\"\\\"}.fv-icon-paragraph:before{content:\\\"\\\\b6\\\"/\\\"\\\"}.fv-icon-language:before{content:\\\"\\\\b7\\\"/\\\"\\\"}.fv-icon-letter-filled:before{content:\\\"\\\\b8\\\"/\\\"\\\"}.fv-icon-arrow-left:before{content:\\\"\\\\b9\\\"/\\\"\\\"}.fv-icon-toggle:before{content:\\\"\\\\ba\\\"/\\\"\\\"}.fv-icon-youtube:before{content:\\\"\\\\bb\\\"/\\\"\\\"}.fv-icon-CFT-1:before{content:\\\"\\\\bc\\\"/\\\"\\\"}.fv-icon-CFT-1-FR:before{content:\\\"\\\\bd\\\"/\\\"\\\"}.fv-icon-CFT-1-FS:before{content:\\\"\\\\be\\\"/\\\"\\\"}.fv-icon-CFT-2:before{content:\\\"\\\\bf\\\"/\\\"\\\"}.fv-icon-CFT-2-BS:before{content:\\\"\\\\c0\\\"/\\\"\\\"}.fv-icon-CFT-5-L:before{content:\\\"\\\\c1\\\"/\\\"\\\"}.fv-icon-CFT-5-R:before{content:\\\"\\\\c2\\\"/\\\"\\\"}.fv-icon-CFT-6:before{content:\\\"\\\\c3\\\"/\\\"\\\"}.fv-icon-CFT-7:before{content:\\\"\\\\c4\\\"/\\\"\\\"}.fv-icon-CFT-8:before{content:\\\"\\\\c5\\\"/\\\"\\\"}.fv-icon-CFT-6-L:before{content:\\\"\\\\c6\\\"/\\\"\\\"}.fv-icon-CFT-6-R:before{content:\\\"\\\\c7\\\"/\\\"\\\"}.fv-icon-planning-type-free:before{content:\\\"\\\\c8\\\"/\\\"\\\"}.fv-icon-planning-type-corner:before{content:\\\"\\\\c9\\\"/\\\"\\\"}.fv-icon-planning-type-straight:before{content:\\\"\\\\ca\\\"/\\\"\\\"}.fv-icon-note-add:before{content:\\\"\\\\cb\\\"/\\\"\\\"}.fv-icon-change:before{content:\\\"\\\\cc\\\"/\\\"\\\"}.fv-icon-content-copy:before{content:\\\"\\\\cd\\\"/\\\"\\\"}.fv-icon-cloud-download:before{content:\\\"\\\\ce\\\"/\\\"\\\"}.fv-icon-planning-type-u:before{content:\\\"\\\\cf\\\"/\\\"\\\"}.fv-icon-planning-type-m:before{content:\\\"\\\\d0\\\"/\\\"\\\"}.fv-icon-planning-type-t:before{content:\\\"\\\\d1\\\"/\\\"\\\"}.fv-icon-planning-type-corner-mirrored:before{content:\\\"\\\\d2\\\"/\\\"\\\"}.fv-icon-camera-settings:before{content:\\\"\\\\d3\\\"/\\\"\\\"}.fv-icon-delete-fitting-all:before{content:\\\"\\\\d4\\\"/\\\"\\\"}.fv-icon-delete-fitting-one:before{content:\\\"\\\\d5\\\"/\\\"\\\"}.fv-icon-error:before{content:\\\"\\\\d6\\\"/\\\"\\\"}.fv-icon-furnray:before{content:\\\"\\\\d7\\\"/\\\"\\\"}.fv-icon-more-horiz:before{content:\\\"\\\\d8\\\"/\\\"\\\"}.fv-icon-question-mark:before{content:\\\"\\\\d9\\\"/\\\"\\\"}.fv-icon-reset-all:before{content:\\\"\\\\da\\\"/\\\"\\\"}.fv-icon-reset-one:before{content:\\\"\\\\db\\\"/\\\"\\\"}.fv-icon-rotate:before{content:\\\"\\\\dc\\\"/\\\"\\\"}.fv-icon-door-hinge-left:before{content:\\\"\\\\dd\\\"/\\\"\\\"}.fv-icon-door-hinge-right:before{content:\\\"\\\\de\\\"/\\\"\\\"}.fv-icon-fa-camera-right-top:before{content:\\\"\\\\df\\\"/\\\"\\\"}.fv-icon-fa-camera-front:before{content:\\\"\\\\e0\\\"/\\\"\\\"}.fv-icon-fa-camera-top:before{content:\\\"\\\\e1\\\"/\\\"\\\"}.fv-icon-fa-2d-top:before{content:\\\"\\\\e2\\\"/\\\"\\\"}.fv-icon-fa-2d-front:before{content:\\\"\\\\e3\\\"/\\\"\\\"}.fv-icon-check:before{content:\\\"\\\\e4\\\"/\\\"\\\"}.fv-icon-close:before{content:\\\"\\\\e5\\\"/\\\"\\\"}.fv-icon-check-circle:before{content:\\\"\\\\e7\\\"/\\\"\\\"}.fv-icon-tools:before{content:\\\"\\\\e8\\\"/\\\"\\\"}.fv-icon-arrange:before{content:\\\"\\\\e9\\\"/\\\"\\\"}.fv-icon-appliances:before{content:\\\"\\\\ea\\\"/\\\"\\\"}.fv-icon-swap-horizontal:before{content:\\\"\\\\eb\\\"/\\\"\\\"}.fv-icon-swap-horizontal-circle:before{content:\\\"\\\\ec\\\"/\\\"\\\"}.fv-icon-add-box:before{content:\\\"\\\\ed\\\"/\\\"\\\"}.fv-icon-plus-circle:before{content:\\\"\\\\ee\\\"/\\\"\\\"}.fv-icon-description:before{content:\\\"\\\\ef\\\"/\\\"\\\"}.fv-icon-folder2:before{content:\\\"\\\\f0\\\"/\\\"\\\"}.fv-icon-draft:before{content:\\\"\\\\f1\\\"/\\\"\\\"}.fv-icon-menu:before{content:\\\"\\\\f2\\\"/\\\"\\\"}.fv-icon-menu-open:before{content:\\\"\\\\f3\\\"/\\\"\\\"}.fv-icon-reset-to-default:before{content:\\\"\\\\f4\\\"/\\\"\\\"}.fv-icon-shove:before{content:\\\"\\\\f5\\\"/\\\"\\\"}\\n\";\n\nvar MultiIcons = \"[class*=fv-icon-multi]{font-size:var(--fv-icons-font-size, initital);line-height:var(--fv-icons-line-height, var(--fv-icons-font-size, initital));text-align:center}[class*=fv-icon-multi]:before,[class*=fv-icon-multi]:after{display:flex;font-family:furnview-icons-multi;font-style:normal;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:auto;text-align:center;justify-content:center;align-items:center;height:100%;line-height:0}.mirrored-x:before{transform:scaleX(-1)}.mirrored-y:before{transform:scaleY(-1)}.fv-icon-multi-letter-filled:before{content:\\\"\\\\93\\\"}.fv-icon-multi-arrow-left:before{content:\\\"\\\\94\\\"}.fv-icon-multi-chain-bold:before{content:\\\"0\\\"}.fv-icon-multi-no-chain-bold{display:flex}.fv-icon-multi-no-chain-bold:before{content:\\\"0\\\";letter-spacing:-2em}.fv-icon-multi-no-chain-bold:after{content:\\\"1\\\"}.fv-icon-multi-chain-arrow-left-bold{display:flex}.fv-icon-multi-chain-arrow-left-bold:before{content:\\\";\\\";letter-spacing:-2em}.fv-icon-multi-chain-arrow-left-bold:after{content:\\\"=\\\"}.fv-icon-multi-no-chain-arrow-left-bold{display:flex;justify-content:center;position:relative!important}.fv-icon-multi-no-chain-arrow-left-bold:before{content:\\\"=\\\\a;\\\";min-width:var(--fv-icons-multicolor-min-width, 2em);min-height:var(--fv-icons-multicolor-min-height, 1em);background:linear-gradient(to right,var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%,var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);max-width:min-content}.fv-icon-multi-no-chain-arrow-left-bold:after{content:\\\"<\\\";position:absolute!important}.fv-icon-multi-chain-arrow-right-bold{display:flex}.fv-icon-multi-chain-arrow-right-bold:before{content:\\\"8\\\";letter-spacing:-2em}.fv-icon-multi-chain-arrow-right-bold:after{content:\\\":\\\"}.fv-icon-multi-no-chain-arrow-right-bold{display:flex;justify-content:center;position:relative!important}.fv-icon-multi-no-chain-arrow-right-bold:before{content:\\\":\\\\a 8\\\";min-width:var(--fv-icons-multicolor-min-width, 2em);min-height:var(--fv-icons-multicolor-min-height, 1em);background:linear-gradient(to right,var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%,var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);max-width:min-content}.fv-icon-multi-no-chain-arrow-right-bold:after{content:\\\"9\\\";position:absolute!important}\\n\";\n\nfunction appendStylesheet(name, content) {\n  const scriptFound = document.head.querySelectorAll(`#${name}`) === null;\n  if (!scriptFound) {\n    document.head.appendChild(Object.assign(document.createElement(\"style\"), { id: name, innerText: content }));\n  }\n}\nfunction injectStylesheets(options) {\n  appendStylesheet(\"fv-icon-font\", Fonts);\n  if (typeof options === \"object\" && options.simple || options) {\n    appendStylesheet(\"fv-icon-simple\", SimpleIcons);\n  }\n  if (typeof options === \"object\" && options.multi || options) {\n    appendStylesheet(\"fv-icon-multi\", MultiIcons);\n  }\n}\n\nexport { Fonts, MultiIcons, SimpleIcons, injectStylesheets };\n","import { injectStylesheets } from '@dh-software/furnview-icons';\nimport { unsafeCSS, css, LitElement, html, nothing } from 'lit';\nimport { property, state, customElement, queryAsync, query } from 'lit/decorators.js';\nimport { choose } from 'lit/directives/choose.js';\nimport { guard } from 'lit/directives/guard.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { keyed } from 'lit/directives/keyed.js';\n\nvar style$E = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n  text-align: center;\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n  display: flex;\\n  font-family: \\\"furnview-icons-simple\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n  content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n  content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n  content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n  content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n  content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n  content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n  content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n  content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n  content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n  content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n  content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n  content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n  content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n  content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n  content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n  content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n  content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n  content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n  content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n  content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n  content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n  content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n  content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n  content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n  content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n  content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n  content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n  content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n  content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n  content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n  content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n  content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n  content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n  content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n  content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n  content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n  content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n  content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n  content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n  content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n  content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n  content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n  content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n  content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n  content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n  content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n  content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n  content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n  content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n  content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n  content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n  content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n  content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n  content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n  content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n  content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n  content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n  content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n  content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n  content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n  content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n  content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n  content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n  content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n  content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n  content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n  content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n  content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n  content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n  content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n  content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n  content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n  content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n  content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n  content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n  content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n  content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n  content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n  content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n  content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n  content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n  content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n  content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n  content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n  content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n  content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n  content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n  content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n  content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n  content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n  content: \\\"�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n  content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n  content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n  content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n  content: \\\"Å\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n  content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n  content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n  content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n  content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n  content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n  content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n  content: \\\"Ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n  content: \\\"�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n  content: \\\"Î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n  content: \\\"�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n  content: \\\"�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n  content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n  content: \\\"Ò\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n  content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n  content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n  content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n  content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n  content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n  content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n  content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n  content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n  content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n  content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n  content: \\\"�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n  content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n  content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n  content: \\\"à\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n  content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n  content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n  content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n  content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n  content: \\\"å\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n  content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n  content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n  content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n  content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n  content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n  content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n  content: \\\"í\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n  content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n  content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n  content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n  content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n  text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n  display: flex;\\n  font-family: \\\"furnview-icons-multi\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n  content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n  content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n  content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n  content: \\\"0\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n  content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n  content: \\\";\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n  content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n  content: \\\"=\\\\a;\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n  content: \\\"<\\\";\\n  position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n  content: \\\"8\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n  content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n  content: \\\":\\\\a 8\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n  content: \\\"9\\\";\\n  position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: block;\\n  height: auto;\\n  width: auto;\\n}\\n\\n.merge-grid {\\n  display: flex;\\n  flex-direction: column;\\n  min-width: 280px;\\n  max-width: 640px;\\n  padding: 16px;\\n  border: 1px solid #ccc;\\n  border-radius: 8px;\\n  background-color: #fafafa;\\n  box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n\\n.caption {\\n  width: 100%;\\n  display: flex;\\n  justify-content: flex-start;\\n  padding: 8px 8px 0;\\n  font-size: 1.125rem;\\n  font-weight: 500;\\n}\\n\\n#container {\\n  width: 100%;\\n  display: flex;\\n  flex-direction: column;\\n  padding: 8px;\\n}\\n\\n.button-container {\\n  width: 100%;\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center;\\n  padding: 8px;\\n}\\n\\n.direction-container {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  gap: 4px;\\n}\\n.direction-container dh-button:first-child .fv-icon-arrow-down {\\n  transform: rotate(90deg);\\n}\\n.direction-container dh-button:last-child .fv-icon-arrow-down {\\n  transform: rotate(-90deg);\\n}\\n\\n.not-selected {\\n  opacity: var(--dh-inactive-opacity, 1);\\n}\\n\\n.hidden {\\n  display: none;\\n}\";\n\nclass PropertyValidator {\n  static {\n    this.templates = /* @__PURE__ */ new WeakMap();\n  }\n  _getNestedOptions(key, options) {\n    return options?.subkeyValidation?.[key] ?? void 0;\n  }\n  _log(propertyName, value) {\n    console.warn(\n      `[ValidatedProperty] Key '${String(propertyName)}' was set to 'undefined'. Reverting to`,\n      value ?? `'empty'`\n    );\n    return value;\n  }\n  _validateObject(object, template, options, initialize) {\n    let changed = false;\n    for (const key in template) {\n      if (!Object.prototype.hasOwnProperty.call(template, key)) {\n        continue;\n      }\n      const currentNestedOptions = this._getNestedOptions(key, options);\n      const templateValue = template[key];\n      const currentValue = object[key];\n      if (currentValue === void 0) {\n        let templateToUse = currentNestedOptions ?? templateValue;\n        if (currentNestedOptions && templateToUse !== void 0) {\n          const nestedResult = this.validateObjectProperty(key, Array.isArray(templateToUse) ? [] : {}, templateToUse, options, false);\n          templateToUse = nestedResult.result;\n        } else {\n          templateToUse = templateValue;\n        }\n        object[key] = this._log(key, templateToUse);\n        changed = true;\n      } else if (currentNestedOptions) {\n        const nestedResult = this.validateObjectProperty(key, currentValue, currentNestedOptions, options, false);\n        if (nestedResult.changed) {\n          object[key] = this._log(key, nestedResult.result);\n          changed = true;\n        }\n      }\n    }\n    return {\n      changed,\n      result: object\n    };\n  }\n  _validateArray(array, validationTemplate, options, initialize) {\n    let changed = false;\n    const arrayToValidate = initialize ? [] : array;\n    const elementTemplate = Array.isArray(validationTemplate) ? validationTemplate[0] : validationTemplate;\n    if (!elementTemplate) {\n      return { changed: false, result: array };\n    }\n    const validatedArray = arrayToValidate.map((x) => {\n      const result = this._validateObject(x, elementTemplate, options, initialize);\n      if (result.changed) changed = true;\n      return result.result;\n    });\n    return {\n      changed,\n      result: validatedArray\n    };\n  }\n  _getValidatedValue(value, template, options, initialize = false) {\n    if (Array.isArray(value)) {\n      return this._validateArray([...value], template, options, initialize);\n    } else {\n      return this._validateObject({ ...value }, template, options, initialize);\n    }\n  }\n  validateObjectProperty(propertyName, value, template, options, initialize = false, depth = 0) {\n    if (value === void 0) {\n      return { changed: true, result: JSON.parse(JSON.stringify(this._log(propertyName, template))) };\n    }\n    if (typeof value !== \"object\" || value === null) {\n      return { changed: false, result: value };\n    }\n    return this._getValidatedValue(value, template, options, initialize);\n  }\n  static getTemplate(prototype, propertyKey) {\n    return this.templates.get(prototype)?.get(propertyKey);\n  }\n  static setTemplate(prototype, propertyKey, val) {\n    if (typeof val === \"object\" && val !== null && val !== void 0 && !Array.isArray(val)) {\n      if (!this.templates.has(prototype)) {\n        this.templates.set(prototype, /* @__PURE__ */ new Map());\n      }\n      this.templates.get(prototype).set(propertyKey, JSON.parse(JSON.stringify(val)));\n    }\n  }\n}\n\nconst validator = new PropertyValidator();\nfunction createValidatedDecorator(baseDecorator) {\n  return function(options) {\n    return function(target, propertyKey, descriptor) {\n      const elementPrototype = target;\n      const privateKey = Symbol(`__default_val_${String(propertyKey)}`);\n      Object.defineProperty(elementPrototype, propertyKey, {\n        configurable: true,\n        enumerable: true,\n        set(val) {\n          PropertyValidator.setTemplate(elementPrototype, propertyKey, val);\n          this[privateKey] = val;\n          delete this[propertyKey];\n        },\n        get() {\n          return this[privateKey];\n        }\n      });\n      baseDecorator(options)(target, propertyKey);\n      const litDescriptor = Object.getOwnPropertyDescriptor(elementPrototype, propertyKey);\n      if (litDescriptor && litDescriptor.set) {\n        const originalLitSetter = litDescriptor.set;\n        if (options?.fallback && !PropertyValidator.getTemplate(target, propertyKey)) {\n          target[privateKey] = options?.fallback;\n        }\n        Object.defineProperty(elementPrototype, propertyKey, {\n          ...litDescriptor,\n          set(newValue) {\n            const template = PropertyValidator.getTemplate(target, propertyKey) ?? options?.fallback;\n            let validatedValue = newValue;\n            if (template) {\n              validatedValue = validator.validateObjectProperty(propertyKey, newValue, template, options).result;\n            }\n            const oldValue = this[privateKey];\n            this[privateKey] = validatedValue;\n            originalLitSetter.call(this, validatedValue);\n            this.requestUpdate(propertyKey, oldValue);\n          },\n          get() {\n            return this[privateKey];\n          }\n        });\n      }\n    };\n  };\n}\nfunction validatedProperty(options) {\n  return createValidatedDecorator(property)(options);\n}\n\nclass EventRefImpl {\n  constructor(element, name, env) {\n    this.element = element;\n    this.name = name;\n    this.env = env;\n  }\n  /**\n   * Composes the event to be dispatched.\n   * If the detail is an Event of the correct type, it is returned directly.\n   * Otherwise, a new CustomEvent is created with the detail.\n   * @param detail The event detail or the event itself.\n   * @returns The event to dispatch.\n   */\n  composeEvent(detail) {\n    if (detail instanceof Event && detail.type == this.name) {\n      return detail;\n    }\n    return new CustomEvent(this.name, { ...this.env, detail });\n  }\n  /**\n   * Dispatches the event on the element.\n   * @param detail The event detail or the event itself.\n   */\n  dispatch(detail) {\n    this.element.dispatchEvent(this.composeEvent(detail));\n  }\n  /**\n   * Adds an event listener to the element for this event.\n   * @param callback The function to be called when the event is dispatched.\n   * @param options Options for the event listener.\n   */\n  addListener(callback, options) {\n    this.element.addEventListener(this.name, callback, options);\n  }\n  /**\n   * Removes an event listener from the element for this event.\n   * @param callback The function to remove.\n   * @param options Options for the event listener.\n   */\n  removeListener(callback, options) {\n    this.element.removeEventListener(this.name, callback, options);\n  }\n  handleEvent(object) {\n    this.dispatch();\n  }\n  detail(object) {\n    const _this = this;\n    return {\n      handleEvent(_event) {\n        _this.dispatch(object);\n      }\n    };\n  }\n}\nfunction event(options, eventName) {\n  return (protoOrDescriptor, propertyKey) => {\n    eventName = eventName || propertyKey.toString().toLowerCase();\n    if (eventName.endsWith(\"event\")) {\n      eventName = eventName.replace(\"event\", \"\");\n    }\n    const privateKey = Symbol(`__${String(propertyKey)}_eventRef`);\n    Object.defineProperty(protoOrDescriptor, propertyKey, {\n      get() {\n        if (!this[privateKey]) {\n          this[privateKey] = new EventRefImpl(\n            this,\n            eventName,\n            options\n          );\n        }\n        return this[privateKey];\n      },\n      enumerable: true,\n      configurable: true\n    });\n  };\n}\n\nvar __defProp$C = Object.defineProperty;\nvar __getOwnPropDesc$E = Object.getOwnPropertyDescriptor;\nvar __decorateClass$E = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$E(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$C(target, key, result);\n  return result;\n};\nlet DhMergeDialog = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.currentConflictNumber = 1;\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-merge-dialog\")) {\n      this.setAttribute(\"dh-merge-dialog\", \"\");\n    }\n  }\n  render() {\n    return html` <div class=\"background merge-grid\" part=\"root\">\n      <div class=\"caption\" part=\"header\">${this.mergeDialogObjects.dialogCaption || \"Mergedialog\"}</div>\n      <div id=\"container\" part=\"content\">\n        ${this.mergeDialogObjects ? this.mergeDialogObjects.conflictedObjects.map(\n      (object, index) => html`\n                  <dh-merge-dialog-page\n                    exportparts=\"root: page-root, label: page-label, content: page-content, header: page-header, column-left: page-column-left, column-right: page-column-right, item: page-item\"\n                    id=\"${object.id}\"\n                    .columnCaption=\"${this.mergeDialogObjects.columnCaption}\"\n                    .conflictCount=\"${this.mergeDialogObjects.conflictedObjects.length}\"\n                    .conflictNumber=\"${index + 1}\"\n                    .conflictedObject=\"${object}\"\n                    conflict-number=\"${index + 1}\"\n                    class=\"${index + 1 == this.currentConflictNumber ? \"\" : \"hidden\"}\"\n                    part=\"item\"\n                  ></dh-merge-dialog-page>\n                `\n    ) : null}\n      </div>\n      <div class=\"button-container\" part=\"footer\">\n        <div class=\"direction-container back\">\n          <dh-button\n            icon-button\n            variant=\"filled\"\n            ?disabled=\"${this.currentConflictNumber <= 1}\"\n            @click=\"${this.showPreviousConflict}\"\n            exportparts=\"root: dh-icon-button-nav-root, label: dh-icon-button-nav-label, icon: dh-icon-button-nav-icon\"\n            ><div slot=\"img\" class=\"fv-icon-arrow-down-2\" style=\"transform: rotate(90deg)\"></div\n          ></dh-button>\n          <dh-button\n            icon-button\n            variant=\"filled\"\n            ?disabled=\"${this.currentConflictNumber >= this.mergeDialogObjects.conflictedObjects.length}\"\n            @click=\"${this.showNextConflict}\"\n            exportparts=\"root: dh-icon-button-nav-root, label: dh-icon-button-nav-label, icon: dh-icon-button-nav-icon\"\n            ><div slot=\"img\" class=\"fv-icon-arrow-down-2\" style=\"transform: rotate(-90deg)\"></div\n          ></dh-button>\n        </div>\n        <dh-button\n          .buttonText=\"${this.mergeDialogObjects.buttonText || \"apply\"}\"\n          @click=\"${this.applyMerge}\"\n          exportparts=\"root: dh-button-root, label: dh-button-label, icon: dh-button-icon\"\n        ></dh-button>\n      </div>\n    </div>`;\n  }\n  applyMerge(event2) {\n    const pages = this.renderRoot.querySelectorAll(\"dh-merge-dialog-page\");\n    pages.forEach((page) => {\n      const id = page.getAttribute(\"id\");\n      const sameConflicts = this.mergeDialogObjects.conflictedObjects.find((object) => object.id == id);\n      const sameConflictsKeys = [];\n      if (sameConflicts) {\n        sameConflicts.conflicts.forEach((conflict) => sameConflictsKeys.push(conflict.key));\n      }\n      sameConflictsKeys.forEach((key) => {\n        const inputs = page.getConflictInputs(key);\n        const selectedInput = inputs.find((input) => input.checked);\n        if (selectedInput) {\n          const fieldName = page.getNameField(key);\n          fieldName.classList.remove(\"unsolved\");\n          if (sameConflicts) {\n            const sameConflict = sameConflicts.conflicts.find((conflict) => conflict.key == key);\n            if (sameConflict) {\n              sameConflict.selectedValue = selectedInput.value;\n            }\n          }\n        } else {\n          const fieldName = page.getNameField(key);\n          fieldName.classList.add(\"unsolved\");\n        }\n      });\n    });\n    let openConflicts = 0;\n    this.mergeDialogObjects.conflictedObjects.forEach((object) => {\n      const unresolvedConflicts = object.conflicts.filter((conflict) => {\n        return conflict.selectedValue == \"\";\n      });\n      if (unresolvedConflicts.length > 0) {\n        openConflicts++;\n        unresolvedConflicts.forEach((conflict) => {\n          const key = conflict.key;\n          const columnSpan = this.renderRoot.querySelector(`span#${key}`);\n          if (columnSpan) {\n            columnSpan.classList.add(\"not-selected\");\n          }\n        });\n      }\n    });\n    if (openConflicts <= 0) {\n      this.applyMergeEvent.dispatch(this.mergeDialogObjects);\n    }\n  }\n  showNextConflict(event2) {\n    if (this.currentConflictNumber < this.mergeDialogObjects.conflictedObjects.length) {\n      const pages = Array.from(this.renderRoot.querySelectorAll(\"dh-merge-dialog-page\"));\n      pages.forEach((page) => page.classList.add(\"hidden\"));\n      this.currentConflictNumber = this.currentConflictNumber + 1;\n      const currentPage = pages.find((page) => {\n        const conflictNumber = page.getAttribute(\"conflict-number\");\n        if (conflictNumber) {\n          const isSame = parseInt(conflictNumber) == this.currentConflictNumber;\n          if (isSame) {\n            return page;\n          }\n        }\n      });\n      currentPage?.classList.remove(\"hidden\");\n    } else {\n      return;\n    }\n  }\n  showPreviousConflict(event2) {\n    if (this.currentConflictNumber > 1) {\n      const pages = Array.from(this.renderRoot.querySelectorAll(\"dh-merge-dialog-page\"));\n      pages.forEach((page) => page.classList.add(\"hidden\"));\n      this.currentConflictNumber = this.currentConflictNumber - 1;\n      const currentPage = pages.find((page) => {\n        const conflictNumber = page.getAttribute(\"conflict-number\");\n        if (conflictNumber) {\n          const isSame = parseInt(conflictNumber) == this.currentConflictNumber;\n          if (isSame) {\n            return page;\n          }\n        }\n      });\n      currentPage?.classList.remove(\"hidden\");\n    } else {\n      return;\n    }\n  }\n};\nDhMergeDialog.styles = css`\n    ${unsafeCSS(style$E)}\n  `;\n__decorateClass$E([\n  validatedProperty({\n    type: Object,\n    fallback: {\n      conflictedObjects: [],\n      columnCaption: [],\n      dialogCaption: \"\",\n      buttonText: \"\"\n    }\n  })\n], DhMergeDialog.prototype, \"mergeDialogObjects\", 2);\n__decorateClass$E([\n  state()\n], DhMergeDialog.prototype, \"currentConflictNumber\", 2);\n__decorateClass$E([\n  event({ bubbles: true, cancelable: true, composed: true }, \"applyMerge\")\n], DhMergeDialog.prototype, \"applyMergeEvent\", 2);\nDhMergeDialog = __decorateClass$E([\n  customElement(\"dh-merge-dialog\")\n], DhMergeDialog);\n\nvar style$D = \"*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: block;\\n}\\n\\n.info {\\n  padding: 8px;\\n  font-size: 0.875rem;\\n  font-weight: 500;\\n}\\n\\n.merge-grid {\\n  display: grid;\\n  grid-template-columns: auto 1fr 1fr;\\n}\\n\\n.captures-column-one {\\n  grid-column: 1;\\n  grid-row: 1;\\n}\\n\\n.captures-column-two {\\n  grid-column: 2;\\n  grid-row: 1;\\n}\\n\\n.captures-column-three {\\n  grid-column: 3;\\n  grid-row: 1;\\n}\\n\\n.flex {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n}\\n\\n.border {\\n  border-bottom: 1px solid var(--dh-border-color, transparent);\\n}\\n\\n.border-right {\\n  border-right: 1px solid var(--dh-border-color, transparent);\\n}\\n\\n.padding {\\n  padding: 4px 8px;\\n}\\n\\ninput {\\n  margin: 4px;\\n  cursor: pointer;\\n}\\n\\ninput[type=radio] {\\n  accent-color: var(--dh-radio-color, currentColor);\\n  width: 16px;\\n  height: 16px;\\n}\\n\\n.bold {\\n  font-weight: var(--dh-header-weight, 500);\\n}\\n\\n.field-name {\\n  display: flex;\\n  align-items: center;\\n}\\n\\n.unsolved {\\n  background-color: var(--dh-error-color, transparent);\\n  color: #FFFFFF;\\n}\\n\\n.hidden {\\n  display: none;\\n}\";\n\nvar __defProp$B = Object.defineProperty;\nvar __getOwnPropDesc$D = Object.getOwnPropertyDescriptor;\nvar __decorateClass$D = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$D(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$B(target, key, result);\n  return result;\n};\nlet DhMergeDialogPage = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.conflictNumber = 0;\n    this.conflictCount = 0;\n    this.columnCaption = [];\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-merge-dialog-page\")) {\n      this.setAttribute(\"dh-merge-dialog-page\", \"\");\n    }\n  }\n  render() {\n    return html`<div part=\"root\">\n      <div class=\"info\" part=\"label\">${this.conflictNumber} / ${this.conflictCount} - ${this.conflictedObject.objectInformation}</div>\n      <div id=\"merge-container\" class=\"merge-grid\" @input=${this.removeNotSelected} part=\"content\">\n        <div class=\"captures-column-one border border-right padding bold\" part=\"header\">${this.columnCaption[0]}</div>\n        <div class=\"captures-column-two border border-right padding bold\" part=\"column-left\">${this.columnCaption[1]}</div>\n        <div class=\"captures-column-three border padding bold\" part=\"column-right\">${this.columnCaption[2]}</div>\n        ${this.conflictedObject ? this.conflictedObject.conflicts.map(\n      (conflict) => html`\n                <span class=\"border border-right padding field-name\" id=\"${conflict.key}\" part=\"item\">${conflict.translatedKey || conflict.key}</span>\n                <div class=\"flex border border-right padding\" part=\"column-left\">\n                  <input type=\"radio\" name=\"${conflict.key}\" key=\"${conflict.key}\" value=\"${conflict.myValue}\"></input>\n                  <span>${conflict.myValue}</span>\n                </div>\n                <div class=\"flex border padding\" part=\"column-right\">\n                  <input type=\"radio\" name=\"${conflict.key}\" key=\"${conflict.key}\" value=\"${conflict.newValue}\"></input>\n                  <span>${conflict.newValue}</span>\n                </div>\n              `\n    ) : null}\n      </div>\n    </div>`;\n  }\n  getConflictInputs(key) {\n    return Array.from(this.renderRoot.querySelectorAll(`input[key=${key}]`));\n  }\n  getNameField(key) {\n    const nameField = this.renderRoot.querySelector(`.field-name#${key}`);\n    if (nameField) {\n      return nameField;\n    }\n    return null;\n  }\n  removeNotSelected(event) {\n    const target = event.target;\n    if (target) {\n      const key = target.getAttribute(\"key\");\n      if (key) {\n        const columnSpan = this.renderRoot.querySelector(`span#${key}`);\n        if (columnSpan) {\n          columnSpan.classList.remove(\"unsolved\");\n        }\n      }\n    }\n  }\n};\nDhMergeDialogPage.styles = css`\n    ${unsafeCSS(style$D)}\n  `;\n__decorateClass$D([\n  validatedProperty({\n    type: Object,\n    fallback: {\n      conflicts: [],\n      objectInformation: \"\",\n      id: \"\"\n    }\n  })\n], DhMergeDialogPage.prototype, \"conflictedObject\", 2);\n__decorateClass$D([\n  property()\n], DhMergeDialogPage.prototype, \"conflictNumber\", 2);\n__decorateClass$D([\n  property()\n], DhMergeDialogPage.prototype, \"conflictCount\", 2);\n__decorateClass$D([\n  property()\n], DhMergeDialogPage.prototype, \"columnCaption\", 2);\nDhMergeDialogPage = __decorateClass$D([\n  customElement(\"dh-merge-dialog-page\")\n], DhMergeDialogPage);\n\nvar style$C = \":host {\\n  display: block;\\n  user-select: none;\\n}\\n\\n.treeview {\\n  margin: 0;\\n  padding: 0;\\n}\";\n\nvar __defProp$A = Object.defineProperty;\nvar __getOwnPropDesc$C = Object.getOwnPropertyDescriptor;\nvar __decorateClass$C = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$C(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$A(target, key, result);\n  return result;\n};\nlet DhTree = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.theTreeItems = [];\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-tree\")) {\n      this.setAttribute(\"dh-tree\", \"\");\n    }\n  }\n  set treeItems(treeItems) {\n    this.theTreeItems = this.validateTreeItems(treeItems);\n  }\n  render() {\n    return html` <div id=\"tree-container\" part=\"root\" @treeitemclicked=${this.selectedItem}>\n      <slot id=\"treemenu\" class=\"treeview\" name=\"tree\">\n        ${this.theTreeItems.map((item, index) => {\n      return html`\n            <dh-tree-item\n              class=\"${index === 0 ? \"selected\" : \"\"}\"\n              name=\"${item.itemName}\"\n              .treeItem=\"${Object.assign({}, item)}\"\n              .iconFolderOpen=\"${item.iconFolderOpen}\"\n              .iconFolderClose=\"${item.iconFolderClose}\"\n              .iconFile=\"${item.iconFile}\"\n              ?highlighted=\"${item.highlighted}\"\n              ?isDirectory=\"${item.subitems.length > 0}\"\n            ></dh-tree-item>\n          `;\n    })}\n      </slot>\n    </div>`;\n  }\n  firstUpdated(_changedProperties) {\n    super.firstUpdated(_changedProperties);\n    let selectedElement = Array.from(this.renderRoot.querySelectorAll(\"dh-tree-item\")).find((element) => {\n      return element.classList.contains(\"selected\");\n    });\n    if (!selectedElement) {\n      selectedElement = Array.from(document.querySelectorAll(\"dh-tree-item[slot=tree]\")).find((element) => {\n        return element.classList.contains(\"selected\");\n      });\n    }\n    if (selectedElement) {\n      this.currentSelectedItem = selectedElement;\n    }\n  }\n  setCurrentSelectedItem(item) {\n    this.currentSelectedItem?.classList.remove(\"selected\");\n    item.classList.add(\"selected\");\n    this.currentSelectedItem = item;\n  }\n  selectedItem(event) {\n    const item = event.detail;\n    this.currentSelectedItem?.classList.remove(\"selected\");\n    item.classList.add(\"selected\");\n    this.currentSelectedItem = item;\n  }\n  validateTreeItems(treeItems) {\n    treeItems.forEach((item) => {\n      if (item.iconFolderOpen == void 0) {\n        item.iconFolderOpen = \"\";\n      }\n      if (item.iconFolderClose == void 0) {\n        item.iconFolderClose = \"\";\n      }\n      if (item.iconFile == void 0) {\n        item.iconFile = \"\";\n      }\n      if (item.subitems == void 0) {\n        item.subitems = [];\n      }\n      if (item.highlighted == void 0) {\n        item.highlighted = false;\n      }\n      item.subitems = this.validateTreeItems(item.subitems);\n    });\n    return treeItems;\n  }\n};\nDhTree.styles = css`\n    ${unsafeCSS(style$C)}\n  `;\n__decorateClass$C([\n  state()\n], DhTree.prototype, \"theTreeItems\", 2);\nDhTree = __decorateClass$C([\n  customElement(\"dh-tree\")\n], DhTree);\n\nvar style$B = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n  text-align: center;\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n  display: flex;\\n  font-family: \\\"furnview-icons-simple\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n  content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n  content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n  content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n  content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n  content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n  content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n  content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n  content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n  content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n  content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n  content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n  content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n  content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n  content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n  content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n  content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n  content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n  content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n  content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n  content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n  content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n  content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n  content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n  content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n  content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n  content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n  content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n  content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n  content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n  content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n  content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n  content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n  content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n  content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n  content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n  content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n  content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n  content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n  content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n  content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n  content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n  content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n  content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n  content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n  content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n  content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n  content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n  content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n  content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n  content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n  content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n  content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n  content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n  content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n  content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n  content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n  content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n  content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n  content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n  content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n  content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n  content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n  content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n  content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n  content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n  content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n  content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n  content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n  content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n  content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n  content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n  content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n  content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n  content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n  content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n  content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n  content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n  content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n  content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n  content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n  content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n  content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n  content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n  content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n  content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n  content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n  content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n  content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n  content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n  content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n  content: \\\"�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n  content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n  content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n  content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n  content: \\\"Å\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n  content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n  content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n  content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n  content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n  content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n  content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n  content: \\\"Ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n  content: \\\"�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n  content: \\\"Î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n  content: \\\"�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n  content: \\\"�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n  content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n  content: \\\"Ò\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n  content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n  content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n  content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n  content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n  content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n  content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n  content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n  content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n  content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n  content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n  content: \\\"�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n  content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n  content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n  content: \\\"à\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n  content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n  content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n  content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n  content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n  content: \\\"å\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n  content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n  content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n  content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n  content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n  content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n  content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n  content: \\\"í\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n  content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n  content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n  content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n  content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n  text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n  display: flex;\\n  font-family: \\\"furnview-icons-multi\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n  content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n  content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n  content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n  content: \\\"0\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n  content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n  content: \\\";\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n  content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n  content: \\\"=\\\\a;\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n  content: \\\"<\\\";\\n  position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n  content: \\\"8\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n  content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n  content: \\\":\\\\a 8\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n  content: \\\"9\\\";\\n  position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: block;\\n  width: 100%;\\n  font-family: Roboto, system-ui, sans-serif;\\n}\\n\\n#item {\\n  cursor: pointer !important;\\n}\\n\\n#folder, #file {\\n  --fv-icons-font-size: 14px;\\n  --fv-icons-line-height: 14px;\\n  font-size: 14px;\\n  line-height: 1;\\n  width: 14px;\\n  height: 14px;\\n  flex-shrink: 0;\\n  cursor: pointer;\\n  color: var(--md-sys-color-on-surface-variant, #666);\\n}\\n\\n#folder:not(.hidden), #file:not(.hidden) {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n}\\n\\n#arrow {\\n  --fv-icons-font-size: 8px;\\n  --fv-icons-line-height: 8px;\\n  font-size: 8px;\\n  line-height: 1;\\n  width: 8px;\\n  height: 8px;\\n  flex-shrink: 0;\\n  position: absolute;\\n  right: 12px;\\n  color: var(--md-sys-color-on-surface-variant, #666);\\n  transition: transform 220ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n#item-name {\\n  font-size: 12px;\\n  font-weight: 400;\\n  line-height: 1.25rem;\\n  letter-spacing: 0.15px;\\n  color: var(--md-sys-color-on-surface-variant, #666);\\n  flex: 1;\\n  min-width: 0;\\n  overflow: hidden;\\n  text-overflow: ellipsis;\\n  white-space: nowrap;\\n}\\n\\n.container {\\n  display: flex;\\n  align-items: center;\\n  padding: 0 28px 0 16px;\\n  gap: 10px;\\n}\\n\\n#submenu {\\n  display: grid;\\n  grid-template-rows: 1fr;\\n  transition: grid-template-rows 220ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n#submenu.hidden {\\n  display: grid;\\n  grid-template-rows: 0fr;\\n}\\n\\n#submenu-inner {\\n  overflow: hidden;\\n  min-height: 0;\\n}\\n\\n::slotted([slot=submenu]) {\\n  padding-left: 2rem;\\n}\\n\\n.intern {\\n  padding-left: 2rem;\\n}\\n\\n.padding {\\n  padding: 0;\\n}\\n\\n.row {\\n  display: flex;\\n  align-items: center;\\n  position: relative;\\n  height: 32px;\\n  border-radius: var(--dh-tree-item-radius, 28px);\\n  margin: 2px 8px;\\n  overflow: hidden;\\n  transition: background-color 200ms cubic-bezier(0.2, 0, 0, 1), box-shadow 200ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n.row:hover {\\n  background-color: var(--dh-tree-hover-bg, rgba(0, 0, 0, 0.04));\\n}\\n\\n.row:hover #item-name {\\n  color: var(--dh-tree-hover-color, inherit);\\n}\\n\\n.row:hover #arrow {\\n  color: var(--dh-tree-hover-color, inherit);\\n}\\n\\n:host(.selected) .row {\\n  background-color: var(--dh-tree-selected-bg, rgba(0, 0, 0, 0.08));\\n}\\n\\n:host(.selected) .row:hover {\\n  background-color: var(--dh-tree-selected-bg, rgba(0, 0, 0, 0.08));\\n  box-shadow: var(--dh-tree-selected-hover-shadow, none);\\n}\\n\\n:host(.selected) #item-name {\\n  color: var(--dh-tree-selected-color, inherit);\\n  font-weight: var(--dh-tree-selected-label-weight, 500);\\n}\\n\\n:host(.selected) #arrow {\\n  color: var(--dh-tree-selected-color, inherit);\\n}\\n\\n:host([highlighted]) #item-name {\\n  color: var(--dh-tree-item-highlight-color, var(--md-sys-color-primary, #FF8014));\\n}\\n\\n:host([highlighted]) ::slotted([slot=name]) {\\n  color: var(--dh-tree-item-highlight-color, var(--md-sys-color-primary, #FF8014));\\n}\\n\\n.inline {\\n  display: flex;\\n  align-items: center;\\n  gap: 10px;\\n  flex: 1;\\n  min-width: 0;\\n}\\n\\n.hidden {\\n  display: none;\\n}\\n\\n.right {\\n  transform: rotate(-90deg);\\n}\\n\\n.visibility {\\n  visibility: hidden;\\n}\";\n\nvar __defProp$z = Object.defineProperty;\nvar __getOwnPropDesc$B = Object.getOwnPropertyDescriptor;\nvar __decorateClass$B = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$B(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$z(target, key, result);\n  return result;\n};\nlet DhTreeItem = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this._iconFolderOpen = \"fv-icon-folder\";\n    this._iconFolderClose = \"fv-icon-folder2\";\n    this._iconFile = \"fv-icon-description\";\n    this.isDirectory = false;\n    this.highlighted = false;\n    this.timer = 0;\n    this.delay = 200;\n    this.prevent = false;\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-tree-item\")) {\n      this.setAttribute(\"dh-tree-item\", \"\");\n    }\n  }\n  get iconFolderOpen() {\n    return this._iconFolderOpen;\n  }\n  set iconFolderOpen(value) {\n    const oldValue = this._iconFolderOpen;\n    this._iconFolderOpen = value || \"fv-icon-folder\";\n    this.requestUpdate(\"iconFolderOpen\", oldValue);\n  }\n  get iconFolderClose() {\n    return this._iconFolderClose;\n  }\n  set iconFolderClose(value) {\n    const oldValue = this._iconFolderClose;\n    this._iconFolderClose = value || \"fv-icon-folder2\";\n    this.requestUpdate(\"iconFolderClose\", oldValue);\n  }\n  get iconFile() {\n    return this._iconFile;\n  }\n  set iconFile(value) {\n    const oldValue = this._iconFile;\n    this._iconFile = value || \"fv-icon-description\";\n    this.requestUpdate(\"iconFile\", oldValue);\n  }\n  render() {\n    return html` <div id=\"item\" part=\"root\" @mousedown=\"${this.oneClick}\" @dblclick=\"${this.doubleClick}\">\n      <div class=\"row\" part=\"content\">\n        <div class=\"container\">\n          <div id=\"folder\" class=\"hidden folder ${this.iconFolderClose}\" part=\"icon-folder\"></div>\n          <div class=\"inline\">\n            <div id=\"file\" class=\"hidden folder ${this.iconFile}\" part=\"icon-file\"></div>\n            <span id=\"item-name\" class=\"padding\" part=\"label\"><slot id=\"name\" name=\"name\">${this.treeItem?.itemName}</slot></span>\n          </div>\n          <div id=\"arrow\" class=\"fv-icon-arrow-down-2 right visibility arrow folder\" part=\"icon-expand\"></div>\n        </div>\n      </div>\n      <div id=\"submenu\" class=\"submenu hidden\" part=\"submenu\">\n        <div id=\"submenu-inner\">\n          <slot id=\"submenu\" name=\"submenu\">\n            ${this.treeItem?.subitems.map((item) => {\n      return this.renderDhTreeItem(item);\n    })}\n          </slot>\n        </div>\n      </div>\n    </div>`;\n  }\n  renderDhTreeItem(item) {\n    return html`\n      <dh-tree-item\n        name=\"${item.itemName}\"\n        class=\"submenu intern\"\n        .treeItem=\"${Object.assign({}, item)}\"\n        .iconFolderOpen=\"${item.iconFolderOpen || this.iconFolderOpen}\"\n        .iconFolderClose=\"${item.iconFolderClose || this.iconFolderClose}\"\n        .iconFile=\"${item.iconFile || this.iconFile}\"\n        ?highlighted=\"${item.highlighted}\"\n        ?isDirectory=\"${item.subitems.length > 0}\"\n      ></dh-tree-item>\n    `;\n  }\n  firstUpdated(_changedProperties) {\n    super.firstUpdated(_changedProperties);\n    this.showFolderOrFileImage();\n    const config = { attributes: true, childList: true, subtree: true };\n    const callback = (mutationList, observer2) => {\n      for (const mutation of mutationList) {\n        if (mutation.type === \"childList\") {\n          this.showFolderOrFileImage();\n        }\n      }\n    };\n    const observer = new MutationObserver(callback);\n    observer.observe(this, config);\n  }\n  async showFolderOrFileImage() {\n    const folder = await this.folder;\n    const file = await this.file;\n    const arrow = await this.arrow;\n    if (this.isDirectory) {\n      folder.classList.remove(\"hidden\");\n      file.classList.add(\"hidden\");\n    } else {\n      file.classList.remove(\"hidden\");\n      folder.classList.add(\"hidden\");\n    }\n    if (this.isDirectory) {\n      arrow.classList.remove(\"visibility\");\n    } else {\n      arrow.classList.add(\"visibility\");\n    }\n  }\n  isHidden() {\n    const item = this.renderRoot.querySelector(\"#item\");\n    const childList = item?.children;\n    let isHidden = false;\n    if (childList) {\n      isHidden = Array.from(childList).some((child) => {\n        return child.classList.contains(\"submenu\") && child.classList.contains(\"hidden\");\n      });\n    }\n    return isHidden;\n  }\n  openCloseTree(element) {\n    if (element.tagName.toLowerCase() == \"dh-tree-item\") {\n      const newTarget = this.renderRoot.querySelector(\"#arrow\");\n      if (newTarget) {\n        element = newTarget;\n      }\n    }\n    const elementId = element.id;\n    if (elementId == \"folder\" || elementId == \"arrow\") {\n      this.openOrCloseMenu(element);\n    } else {\n      this.itemClicked();\n    }\n  }\n  async toggleFolderImage(target) {\n    let isHidden = false;\n    let childList;\n    let parentElement = target.parentElement;\n    if (parentElement) {\n      parentElement = parentElement.parentElement;\n      if (parentElement) {\n        parentElement = parentElement.parentElement;\n      }\n    }\n    if (parentElement) {\n      childList = parentElement.children;\n      isHidden = Array.from(childList).some((child) => {\n        return child.classList.contains(\"submenu\") && child.classList.contains(\"hidden\");\n      });\n      if (target.getAttribute(\"id\") == \"folder\") {\n        const arrow = await this.arrow;\n        if (isHidden) {\n          target.classList.remove(this.iconFolderOpen);\n          target.classList.add(this.iconFolderClose);\n          arrow.classList.add(\"right\");\n        } else {\n          target.classList.remove(this.iconFolderClose);\n          target.classList.add(this.iconFolderOpen);\n          arrow.classList.remove(\"right\");\n        }\n      } else {\n        const folder = await this.folder;\n        if (isHidden) {\n          target.classList.add(\"right\");\n          folder.classList.remove(this.iconFolderOpen);\n          folder.classList.add(this.iconFolderClose);\n        } else {\n          target.classList.remove(\"right\");\n          folder.classList.remove(this.iconFolderClose);\n          folder.classList.add(this.iconFolderOpen);\n        }\n      }\n    }\n  }\n  doubleClick(event2) {\n    event2.stopPropagation();\n    clearTimeout(this.timer);\n    this.prevent = true;\n    this.openFolderAfterDoubleClick(event2);\n  }\n  oneClick(event2) {\n    event2.stopPropagation();\n    const eventTarget = event2.target;\n    this.timer = window.setTimeout(() => {\n      if (!this.prevent) {\n        this.itemClick(eventTarget);\n      }\n    }, this.delay);\n    this.prevent = false;\n  }\n  async itemClick(target) {\n    if (this.isDirectory) {\n      const arrow = await this.arrow;\n      const wasAlreadySelected = this.classList.contains(\"selected\");\n      const isCurrentlyOpen = this.isMenuOpen();\n      if (wasAlreadySelected || !isCurrentlyOpen) {\n        this.openOrCloseMenu(arrow);\n      }\n    }\n    this.itemClicked();\n  }\n  isMenuOpen() {\n    const submenuElement = this.renderRoot.querySelector(\"#submenu\");\n    return submenuElement ? !submenuElement.classList.contains(\"hidden\") : false;\n  }\n  async openFolderAfterDoubleClick(event2) {\n    event2.stopPropagation();\n    const arrow = await this.arrow;\n    this.openOrCloseMenu(arrow);\n  }\n  async openOrCloseMenu(target) {\n    if (!this.isDirectory) {\n      return;\n    }\n    let parentElement = target.parentElement?.parentElement;\n    if (parentElement) {\n      parentElement = parentElement.parentElement;\n      if (parentElement) {\n        const childList = Array.from(parentElement.children).filter((item) => item.classList.contains(\"submenu\"));\n        childList.forEach((child) => {\n          child.classList.toggle(\"hidden\");\n        });\n      }\n    }\n    this.toggleFolderImage(target);\n  }\n  itemClicked() {\n    this.treeitemclicked.dispatch(this);\n  }\n};\nDhTreeItem.styles = css`\n    ${unsafeCSS(style$B)}\n  `;\n__decorateClass$B([\n  queryAsync(\"#file\")\n], DhTreeItem.prototype, \"file\", 2);\n__decorateClass$B([\n  queryAsync(\"#folder\")\n], DhTreeItem.prototype, \"folder\", 2);\n__decorateClass$B([\n  queryAsync(\"#arrow\")\n], DhTreeItem.prototype, \"arrow\", 2);\n__decorateClass$B([\n  state()\n], DhTreeItem.prototype, \"treeItem\", 2);\n__decorateClass$B([\n  property()\n], DhTreeItem.prototype, \"iconFolderOpen\", 1);\n__decorateClass$B([\n  property()\n], DhTreeItem.prototype, \"iconFolderClose\", 1);\n__decorateClass$B([\n  property()\n], DhTreeItem.prototype, \"iconFile\", 1);\n__decorateClass$B([\n  property({ type: Boolean })\n], DhTreeItem.prototype, \"isDirectory\", 2);\n__decorateClass$B([\n  property({ type: Boolean, reflect: true })\n], DhTreeItem.prototype, \"highlighted\", 2);\n__decorateClass$B([\n  event({ bubbles: true, cancelable: true, composed: true }, \"treeitemclicked\")\n], DhTreeItem.prototype, \"treeitemclicked\", 2);\nDhTreeItem = __decorateClass$B([\n  customElement(\"dh-tree-item\")\n], DhTreeItem);\n\nvar style$A = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n  text-align: center;\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n  display: flex;\\n  font-family: \\\"furnview-icons-simple\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n  content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n  content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n  content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n  content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n  content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n  content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n  content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n  content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n  content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n  content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n  content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n  content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n  content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n  content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n  content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n  content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n  content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n  content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n  content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n  content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n  content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n  content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n  content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n  content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n  content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n  content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n  content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n  content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n  content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n  content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n  content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n  content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n  content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n  content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n  content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n  content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n  content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n  content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n  content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n  content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n  content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n  content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n  content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n  content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n  content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n  content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n  content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n  content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n  content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n  content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n  content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n  content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n  content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n  content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n  content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n  content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n  content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n  content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n  content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n  content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n  content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n  content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n  content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n  content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n  content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n  content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n  content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n  content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n  content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n  content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n  content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n  content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n  content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n  content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n  content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n  content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n  content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n  content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n  content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n  content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n  content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n  content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n  content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n  content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n  content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n  content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n  content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n  content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n  content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n  content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n  content: \\\"�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n  content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n  content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n  content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n  content: \\\"Å\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n  content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n  content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n  content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n  content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n  content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n  content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n  content: \\\"Ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n  content: \\\"�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n  content: \\\"Î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n  content: \\\"�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n  content: \\\"�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n  content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n  content: \\\"Ò\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n  content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n  content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n  content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n  content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n  content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n  content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n  content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n  content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n  content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n  content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n  content: \\\"�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n  content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n  content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n  content: \\\"à\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n  content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n  content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n  content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n  content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n  content: \\\"å\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n  content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n  content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n  content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n  content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n  content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n  content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n  content: \\\"í\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n  content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n  content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n  content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n  content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n  text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n  display: flex;\\n  font-family: \\\"furnview-icons-multi\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n  content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n  content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n  content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n  content: \\\"0\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n  content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n  content: \\\";\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n  content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n  content: \\\"=\\\\a;\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n  content: \\\"<\\\";\\n  position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n  content: \\\"8\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n  content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n  content: \\\":\\\\a 8\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n  content: \\\"9\\\";\\n  position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  position: relative;\\n  display: flex;\\n  flex-direction: column;\\n  max-height: 100%;\\n  overflow: auto;\\n}\\n\\n#horizontal-scroll-wrapper {\\n  display: flex;\\n  flex-direction: column;\\n  width: 100%;\\n  flex: 1;\\n  overflow-x: auto;\\n  overflow-y: clip;\\n  scrollbar-gutter: stable;\\n}\\n\\n#scroll-container {\\n  flex: 1;\\n  overflow-y: auto;\\n  overflow-x: visible;\\n  scrollbar-gutter: stable;\\n  min-width: fit-content;\\n}\\n\\n#scroll-container {\\n  scrollbar-width: thin;\\n  scrollbar-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2)) var(--dh-scrollbar-track, transparent);\\n}\\n\\n#scroll-container::-webkit-scrollbar {\\n  width: var(--dh-scrollbar-width, 8px);\\n  height: var(--dh-scrollbar-width, 8px);\\n}\\n\\n#scroll-container::-webkit-scrollbar-thumb {\\n  background-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2));\\n  border-radius: var(--dh-scrollbar-radius, 4px);\\n}\\n\\n#scroll-container::-webkit-scrollbar-thumb:hover {\\n  background-color: var(--dh-scrollbar-thumb-hover, rgba(0, 0, 0, 0.35));\\n}\\n\\n#scroll-container::-webkit-scrollbar-track {\\n  background: var(--dh-scrollbar-track, transparent);\\n}\\n\\n#horizontal-scroll-wrapper {\\n  scrollbar-width: thin;\\n  scrollbar-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2)) var(--dh-scrollbar-track, transparent);\\n}\\n\\n#horizontal-scroll-wrapper::-webkit-scrollbar {\\n  width: var(--dh-scrollbar-width, 8px);\\n  height: var(--dh-scrollbar-width, 8px);\\n}\\n\\n#horizontal-scroll-wrapper::-webkit-scrollbar-thumb {\\n  background-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2));\\n  border-radius: var(--dh-scrollbar-radius, 4px);\\n}\\n\\n#horizontal-scroll-wrapper::-webkit-scrollbar-thumb:hover {\\n  background-color: var(--dh-scrollbar-thumb-hover, rgba(0, 0, 0, 0.35));\\n}\\n\\n#horizontal-scroll-wrapper::-webkit-scrollbar-track {\\n  background: var(--dh-scrollbar-track, transparent);\\n}\\n\\n#table-container {\\n  min-width: fit-content;\\n}\\n\\n.table {\\n  display: table;\\n  table-layout: fixed;\\n  min-width: 100%;\\n}\\n\\n.th {\\n  display: table;\\n  table-layout: fixed;\\n  min-width: calc(100% - var(--_header-gutter, 0px));\\n  max-width: calc(100% - var(--_header-gutter, 0px));\\n  flex-shrink: 0;\\n  z-index: 10;\\n  overflow: hidden;\\n}\\n\\n.th > dh-table-row {\\n  display: table-row;\\n}\\n\\n.tb {\\n  display: table-row-group;\\n}\\n\\n#manipulation-container {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  gap: 4px;\\n}\\n\\n.up-down-container {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  gap: 0.1rem;\\n}\\n\\n.flex-row {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n}\\n\\n#filter-container {\\n  position: sticky;\\n  top: 0;\\n}\\n\\nbutton {\\n  cursor: pointer !important;\\n  background: none;\\n  border: none;\\n  display: flex;\\n  align-items: center;\\n}\\n\\n.article-button-container {\\n  display: flex;\\n  width: 100%;\\n  justify-content: center;\\n}\\n\\n.pointer {\\n  cursor: pointer !important;\\n}\\n\\n.button:hover {\\n  background-color: var(--dh-state-hover-bg, transparent);\\n}\\n\\n::slotted([slot=table-head]) {\\n  display: table-row;\\n}\\n\\n#table-head > dh-table-row {\\n  display: table-row;\\n}\\n\\n::slotted([slot=table-body].selected) {\\n  background-color: var(--dh-state-selected-bg, transparent);\\n}\\n\\n#table-body > dh-table-row.selected {\\n  background-color: var(--dh-state-selected-bg, transparent);\\n}\\n\\n.tb > dh-table-row.selected {\\n  background-color: var(--dh-state-selected-bg, transparent);\\n}\\n\\n::slotted([slot=table-body]:hover) {\\n  background-color: var(--dh-state-hover-bg, transparent);\\n}\\n\\n#table-body > dh-table-row:hover {\\n  background-color: var(--dh-state-hover-bg, transparent);\\n}\\n\\n.tb > dh-table-row:hover {\\n  background-color: var(--dh-state-hover-bg, transparent);\\n}\\n\\n::slotted([slot=table-body].hidden) {\\n  display: none;\\n}\\n\\n#table-body > dh-table-row.hidden {\\n  display: none !important;\\n}\\n\\n#infobox-container {\\n  position: absolute;\\n  top: 50%;\\n  left: 50%;\\n  z-index: 1000;\\n  transform: translateX(-50%) translateY(-50%);\\n}\\n\\n#table-dimmer {\\n  position: absolute;\\n  top: 50%;\\n  left: 50%;\\n  transform: translateX(-50%) translateY(-50%);\\n}\\n\\n.manipulation-img {\\n  width: 2rem;\\n}\\n\\n.position-img {\\n  width: 1rem;\\n}\\n\\n#position-up, #position-down {\\n  padding: 0rem;\\n}\\n\\n.checkedAll {\\n  background-color: var(--dh-state-selected-bg, transparent);\\n}\\n\\n.img {\\n  height: 100%;\\n}\\n\\n.hidden {\\n  display: none !important;\\n}\";\n\nclass TableRowArray extends Array {\n  constructor(...args) {\n    super(...args);\n    this.isNewCopy = false;\n    this.isNewRow = false;\n    this.isSelected = false;\n    this.isModified = false;\n    this.notDeletable = false;\n    this.notEditable = false;\n    this.notCloneable = false;\n    this.id = \"\";\n    this.modifiedFields = [];\n    this.position = 0;\n    this.active = true;\n    this.hasChildren = false;\n    this.isChild = false;\n  }\n  clone() {\n    const clonedRow = new TableRowArray();\n    for (const cell of this) {\n      const clonedCell = { ...cell };\n      clonedCell.objectValues = cell.objectValues ? cell.objectValues.map((option) => ({ ...option, suboptions: option.suboptions ? [...option.suboptions] : [] })) : [];\n      clonedCell.attributes = cell.attributes ? [...cell.attributes] : [];\n      clonedRow.push(clonedCell);\n    }\n    clonedRow.isSelected = this.isSelected;\n    clonedRow.isNewCopy = this.isNewCopy;\n    clonedRow.isNewRow = this.isNewRow;\n    clonedRow.isModified = this.isModified;\n    clonedRow.notCloneable = this.notCloneable;\n    clonedRow.notDeletable = this.notDeletable;\n    clonedRow.notEditable = this.notEditable;\n    clonedRow.modifiedFields = [...this.modifiedFields];\n    clonedRow.active = this.active;\n    clonedRow.hasChildren = this.hasChildren;\n    clonedRow.isChild = this.isChild;\n    clonedRow.id = crypto.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;\n    clonedRow.userDetails = this.userDetails;\n    return clonedRow;\n  }\n}\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction commonjsRequire(path) {\n\tthrow new Error('Could not dynamically require \"' + path + '\". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');\n}\n\nvar cputils$1 = {exports: {}};\n\nvar cptable$2 = {exports: {}};\n\n/*! cptable.js (C) 2013-present SheetJS -- http://sheetjs.com */\n\nvar hasRequiredCptable;\n\nfunction requireCptable () {\n\tif (hasRequiredCptable) return cptable$2.exports;\n\thasRequiredCptable = 1;\n\t(function (module) {\n\t\t/*jshint -W100 */\n\t\tvar cptable = {version:\"1.15.0\"};\n\t\tcptable[37] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—�Ž\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013�…\\b‡\\u0018\\u0019’�\\u001c\\u001d\\u001e\\u001f€�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäàáãåçñ¢.<(+|&éêëèíîïìß!$*);¬-/ÂÄÀ�ÃÅÇѦ,%_>?øÉÊËÈ�Î�Ì`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿��Þ®^£¥·©§¶¼½¾[]¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[437] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿�¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗�╜╛�└┴┬├─┼╞╟╚╔╩╦╠�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌�▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√�²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[500] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—�Ž\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013�…\\b‡\\u0018\\u0019’�\\u001c\\u001d\\u001e\\u001f€�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäàáãåçñ[.<(+!&éêëèíîïìß]$*);^-/ÂÄÀ�ÃÅÇѦ,%_>?øÉÊËÈ�Î�Ì`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿��Þ®¢£¥·©§¶¼½¾¬|¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[737] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ΑΒΓΔΕΖΗΘΙΚΛΜ�ΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπ�σςτυφχψ░▒▓│┤╡╢╖╕╣║╗�╜╛�└┴┬├─┼╞╟╚╔╩╦╠�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌�▀ωάέήϊίό�ϋώΆΈΉΊΌΎ�±≥≤ΪΫ÷≈°∙·√�²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[775] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ćüé�äģåćłēŖŗīŹÄÅÉæÆ�öĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź�¦©®¬½¼�«»░▒▓│┤ĄČĘĖ╣║╗�ĮŠ�└┴┬├─┼ŲŪ╚╔╩╦╠�╬Žą�ęėįšųūž┘┌█▄▌�▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[850] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤�ÂÀ©╣║╗�¢¥�└┴┬├─┼ãÃ╚╔╩╦╠�╬¤ð�ÊËÈı�Î�┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙý�¯´­±‗¾¶§÷¸°¨·¹³²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[852] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Çüéâäůćçłë�őîŹÄĆÉĹĺôöĽľŚśÖÜŤť�×�áíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤�ÂĚŞ╣║╗�Żż�└┴┬├─┼Ăă╚╔╩╦╠�╬¤đ�ĎË�Ň�Îě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰý�ţ´­�˛ˇ˘§÷¸°¨˙űŘř■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[855] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ђЂѓЃё�єЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџ�юЮъЪа�бБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗�йЙ�└┴┬├─┼кК╚╔╩╦╠�╬¤лЛмМн�оОп┘┌█▄П�▀ЯрР�СтТуУжЖвВьЬ№­ыЫзЗшШ�ЭщЩчЧ§■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[857] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤�ÂÀ©╣║╗�¢¥�└┴┬├─┼ãÃ╚╔╩╦╠�╬¤ºªÊËÈ��Î�┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[860] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Çüéâãà�çêÊè�ÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗�╜╛�└┴┬├─┼╞╟╚╔╩╦╠�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌�▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√�²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[861] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Çüéâäàåçêëè�ðÞÄÅÉæÆôöþû�ýÖÜø£Ø₧ƒáíóú��ÓÚ¿�¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗�╜╛�└┴┬├─┼╞╟╚╔╩╦╠�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌�▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√�²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[862] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�בגדהוזחטיךכל�מןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿�¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗�╜╛�└┴┬├─┼╞╟╚╔╩╦╠�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌�▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√�²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[863] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâÂà¶çêëèïî‗À§ÉÈÊôË�ûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î�¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗�╜╛�└┴┬├─┼╞╟╚╔╩╦╠�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌�▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√�²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[864] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴�┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎ�ﺕﺙ،�ﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀ�ﺃﺅﻊﺋ�ﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿ�ﻅﻋ�¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎ�ﻡﹽّﻥﻩﻬﻰﻲ�ﻕﻵﻶ�ﻙﻱ■�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[865] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿�¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗�╜╛�└┴┬├─┼╞╟╚╔╩╦╠�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌�▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√�²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[866] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�БВГДЕЖЗИЙКЛМ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗�╜╛�└┴┬├─┼╞╟╚╔╩╦╠�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌�▀р�туфхцчшщъыь�ю��ёЄєЇїЎў°∙·√№¤■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[869] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©�²³ά£έήίϊ�ό�ΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜ�╣║╗�ΞΟ�└┴┬├─┼ΠΡ╚╔╩╦╠�╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπ�σςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[874] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����…�����������‘’“�•–—�������� �ขฃคฅฆงจฉชซฌ�ฎ��ฑฒณดตถทธนบปผ�พฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เ�โใไๅๆ็่้๊๋์�๎��๑๒๓๔๕๖๗๘๙๚๛����\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[875] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—�Ž\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013�…\\b‡\\u0018\\u0019’�\\u001c\\u001d\\u001e\\u001f€�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a ΑΒΓΔΕΖΗΘΙ[.<(+!&ΚΛΜ�ΞΟΠΡΣ]$*);^-/ΤΥΦΧΨΩΪΫ|,%_>?¨ΆΈΉ ΊΌΎ�`:#@'=\\\"΅abcdefghiαβγδεζ°jklmnopqrηθικλμ´~stuvwxyzνξοπ�σ£άέήϊίό�ϋώςτυφχψ{ABCDEFGHI­ω�ΰ‘―}JKLMNOPQR±½\\u001a·’¦\\\\\\u001aSTUVWXYZ²§\\u001a\\u001a«¬0123456789³©\\u001a\\u001a»Ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[932] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタ�ツテトナニヌネノハヒフ�ホ��ムメモヤユヨラリルレロワ�゙゚��������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"���������������������������������������������������������������� �。,.・:;?�゛゜´`¨^ ̄_ヽヾ�ゞ〃�々〆〇ー―��\~∥|…‥‘’“�()〔〕[]{�〈〉《》「�『��】+�±×�÷�≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○�◎◇◆□■△▲▽▼※〒→�↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽�∵∫∬�������ʼn♯♭♪†‡¶����◯���\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"��������������������������������������������������������������������������������123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ��������bcdefghijkl�n��qrstuvwxyz�������������������������������������������������������������������む�もゃやゅゆょよらりるれ�ゎ��ゑをん��������������\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダ�ヂッツヅテデトドナニヌ�ノ��パヒビピフブプヘベペホボ�マミ�ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ��������ΑΒΓΔΕΖΗΘΙΚΛΜ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπ�στυφχψω�����������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"�����������������������������������������������������������������БВГДЕ�ЖЗИЙКЛМ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмн�опр�туфхцчшщъыь�ю��������������─│┌�┘└├┬┤┴┼�┃�┓┛┗┣┳┫┻╋┠┯┨┷┿�┰┥┸╂�����������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[135] = \"����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ��㌔㌢�㌘㌧㌃㌶���㌦㌣㌫�㌻㎜�㎞㎎��㎡�����������〟№�℡㊤㊥㊦㊧㊨㈱㈲㈹���≒≡∫∮∑√⊥∠∟⊿∵∩∪���������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"���������������������������������������������������������������������������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜�悪�渥旭葦芦鯵梓圧斡扱宛�虻飴絢綾鮎或粟袷安庵按暗案闇��以伊���囲夷委�尉惟�慰易椅為�異移維緯胃�衣謂��医井亥域育�磯一壱溢逸稲茨芋鰯��咽員因姻引飲淫胤蔭���\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"����������������������������������������������������������������院陰隠韻��宇�羽迂雨�鵜窺丑碓臼渦嘘唄�蔚鰻姥厩浦瓜�噂云�雲�餌�営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦�越閲榎厭円�園堰奄宴延怨掩�沿演炎焔煙燕猿�艶苑薗�鉛鴛塩於汚甥凹央奥往応押旺横欧殴王�襖鴬鴎黄岡沖�億屋憶臆桶牡乙俺��温�音下化仮何伽価佳加�嘉��家寡科暇果架歌河���禾稼箇花苛茄����課嘩貨迦�霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔��戒�改���\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"�����������������������������������������������������������������晦械海�界皆絵芥蟹開階�凱劾外咳害崖慨概涯�蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇�廓拡撹格核殻�確穫覚角赫較郭閣隔�学岳楽�顎掛笠樫�橿梶�潟割��括活渇滑葛�轄且鰹�椛樺鞄株兜竃蒲釜鎌噛鴨栢茅�粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾�敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰�艦莞観諌貫還鑑間閑関陥韓館舘丸�岸巌玩癌眼岩翫贋�頑顔願�伎�喜器基奇嬉寄�希幾忌�机旗既期棋棄���\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"����������������������������������������������������������������機帰毅気汽畿祈季稀紀徽�記貴起軌�飢騎鬼亀�儀妓宜戯技擬欺犠疑祇義蟻誼議掬�鞠��喫桔橘詰砧���客脚�逆丘久仇休��宮弓急救�朽求汲泣��究窮笈級糾給旧牛去居巨拒拠挙渠虚許�鋸�禦魚亨享京供侠僑兇競共凶�匡��喬境峡強彊怯��挟教橋�狂狭矯胸脅興蕎郷�響饗驚仰�尭�業局曲極玉��僅勤�巾錦斤欣欽��禽筋緊芹�衿襟謹近金�銀�倶�区狗玖矩苦躯駆駈駒具愚虞喰空�寓�隅串櫛釧屑屈���\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"����������������������������������������������������������������掘窟沓�轡窪熊隈粂栗繰桑�勲�薫訓群�郡�袈�係傾刑兄啓圭�型契形径�慶慧憩掲�敬景桂渓畦稽系経継繋罫茎��計詣警軽頚�芸迎鯨�劇戟撃激隙�傑欠決潔穴�血訣月件倹倦�兼券剣喧�堅嫌建憲懸拳�検権牽犬献研硯絹県肩見謙賢軒��険顕験鹸元原厳幻弦減�玄�絃舷言諺�乎個�呼固姑孤己庫弧戸故枯湖�糊袴股胡�虎誇跨鈷雇顧鼓五互��呉�娯後御悟梧檎瑚�語誤護�乞鯉交佼侯候倖光公功効勾厚�����\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"�����������������������������������������������������������������喉�垢好孔��工巧巷幸広庚康弘�慌抗拘控攻昂晃更�校梗構江洪浩港�甲皇硬稿糠紅紘絞綱耕考肯肱腔�航�行衡講貢購郊酵鉱砿鋼閤��項香高鴻剛劫��壕拷濠豪轟麹克刻告国穀酷鵠黒�漉腰甑忽惚骨狛込此頃今困�墾婚�懇�昆根梱混痕紺艮魂些��唆嵯左差査沙瑳砂�鎖裟�座挫債催�最哉塞妻宰彩�採栽歳済�采犀砕砦祭斎細��載際剤在�罪財冴�阪堺榊肴咲崎埼碕鷺作削咋�昨朔柵窄策索錯桜鮭笹匙冊刷���\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"����������������������������������������������������������������察拶撮擦札殺薩雑�鯖�錆鮫皿晒三傘�山惨撒散桟燦�産算纂蚕讃賛酸�斬暫残仕仔伺使刺��嗣四士始姉姿��市師志�指支孜斯施旨�止�死��祉�糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似��字寺慈�時次滋治爾璽痔�示而耳自蒔辞�鹿�識鴫竺軸�雫七�執失嫉室悉湿漆疾質実蔀篠�柴�屡蕊縞舎写射�赦斜煮社紗者�車�蛇邪借勺尺��爵酌釈錫若寂弱惹主�守手朱殊狩�種腫趣酒首儒�呪寿授樹綬需囚�周���\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"����������������������������������������������������������������宗就州修�拾洲秀秋終�習臭舟�衆襲�蹴輯週酋酬集醜什�充�従戎柔�渋�縦�銃�夙宿淑�縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳�準潤盾純巡�醇順処�所暑曙渚庶緒署書薯藷諸助�女���鋤除傷償�匠��哨商唱嘗奨妾娼宵将�少尚庄床廠彰承抄招掌�昇昌昭晶�梢樟樵沼消渉湘焼焦照症���祥称章笑粧紹肖�蒋蕉�裳訟証詔詳象賞醤鉦��障鞘上丈丞乗冗剰城場壌嬢常情擾��浄状畳穣蒸譲醸錠嘱埴飾���\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"����������������������������������������������������������������拭�殖燭織�色触食�辱尻伸信侵唇娠�審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進�震人�刃塵壬尋甚尽腎訊迅陣�笥�須酢図厨�逗�垂帥推水炊�粋翠衰�酔�錘�瑞髄崇嵩数枢趨雛��椙�頗雀裾澄摺寸世瀬�是凄制勢姓�性�政整星晴棲栖正清牲生盛精�声製西誠誓請�醒��斉税脆隻席惜戚斥昔�石��績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌�仙先��宣専尖�戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線���\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"����������������������������������������������������������������繊羨腺舛船薦詮賎践��銭銑閃鮮�善漸然全禅繕膳糎噌塑岨措曾曽楚狙�疎礎祖租粗素組蘇訴阻�鼠僧創��倉喪壮�爽宋層�惣想�掃挿掻��早曹巣�槽漕燥争痩相窓糟�綜���葬蒼藻装走��鎗霜騒�増憎臓蔵贈造促�則����測足速俗属賊�続�袖其�存孫尊���他多太汰詑唾堕妥惰打�舵楕陀駄騨体堆対�岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代�大第�題鷹�瀧�啄宅托択拓沢濯�託��諾茸凧蛸����\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"�����������������������������������������������������������������但�辰奪脱巽竪辿棚谷狸鱈樽誰丹�嘆�担探旦歎淡湛炭短端箪綻耽胆蛋誕�団壇弾断暖檀段男談値知地弛�智池痴稚置致蜘�馳築畜竹筑蓄��秩窒茶嫡�中仲宙忠抽昼柱注虫衷註酎鋳�樗瀦猪苧著貯�兆凋喋寵帖帳�弔張彫徴懲挑暢�潮牒町眺�脹腸�調諜超跳銚長頂鳥勅�直朕沈�賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴�椿潰�壷嬬紬爪�釣鶴亭低��剃貞呈堤定�底庭廷弟悌抵挺�梯汀碇禎程締艇訂諦蹄逓���\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"����������������������������������������������������������������邸鄭釘鼎泥摘擢敵滴的笛��溺哲徹撤�迭鉄典填天展店添�甜貼転顛点�殿澱田電兎�堵塗妬屠徒斗�渡登�賭途都�砥砺努度土奴怒倒党冬��刀�塔塘套宕島嶋悼投��桃梼棟盗淘湯涛�燈当痘祷等答筒糖統到董蕩藤討謄豆�逃��陶頭騰闘�動�堂導憧撞洞瞳童胴��銅峠鴇匿得徳涜特�禿篤毒独読栃橡凸�椴届鳶苫寅酉瀞噸屯惇敦沌豚�頓呑曇�奈那内�凪薙謎���楢馴縄畷�楠軟難�二尼�迩匂賑肉虹廿日乳入���\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"����������������������������������������������������������������如尿韮任妊��濡禰祢寧葱猫熱年念�撚燃粘乃廼之埜嚢悩濃�能脳膿農覗蚤巴把播覇�波派�破婆罵芭馬俳廃�排敗�盃牌背肺輩��培媒梅�楳煤狽買売賠陪這�秤矧�伯剥���泊白箔粕舶薄迫�漠爆縛莫�麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪�罰抜�閥鳩噺塙蛤隼伴判���帆�斑�氾汎版犯�畔�般藩販範釆煩頒飯挽晩番盤�蕃蛮匪��妃庇彼悲扉批披�比泌疲皮碑秘緋罷肥被誹費��飛樋簸備尾微枇毘�眉美���\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"����������������������������������������������������������������鼻柊稗匹疋髭彦��肘弼必畢筆逼桧姫媛�百謬俵彪標氷漂瓢票表評豹廟�病秒苗錨鋲蒜蛭鰭�彬斌浜瀕貧賓頻�瓶�付埠夫婦富冨布府怖扶敷�斧普浮父符�膚芙譜負賦赴阜附侮撫武舞葡蕪部�楓風葺蕗�副復幅��腹複覆淵弗払沸�物鮒分�噴墳憤扮焚奮粉糞紛雰文�丙併兵塀幣平弊柄並蔽閉陛米�僻�癖碧別瞥蔑箆�変片篇編辺返�便勉娩�鞭�舗鋪圃�歩甫補輔穂募墓慕戊暮�簿�倣俸包呆報奉�峰峯崩庖抱�放方朋���\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"����������������������������������������������������������������法泡烹砲縫胞芳�蓬蜂褒訪豊邦鋒飽鳳鵬�亡�剖�妨帽忘忙房暴望�棒冒紡肪膨謀貌貿鉾防�頬北僕�墨撲朴牧�穆釦勃没殆堀幌奔本翻凡盆�摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒�亦俣�抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙�民眠務夢無牟矛霧鵡椋婿娘冥�命明盟迷銘鳴姪�滅�棉綿緬�麺摸模茂妄孟毛猛盲網耗蒙儲木黙目�勿餅尤戻籾貰�悶紋門�也冶夜爺耶野弥矢厄役約薬訳��柳薮鑓愉愈油癒���\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"����������������������������������������������������������������諭輸唯佑優勇�宥幽悠憂�有柚湧涌猶猷由�裕誘�邑郵雄�夕予余与誉輿�傭幼妖容庸���曜楊様洋溶熔用窯羊耀葉蓉�謡踊�陽養慾抑欲�沃浴翌翼淀羅螺裸�莱頼雷洛絡�酪乱��欄濫�蘭覧利�履�梨�璃痢�裡里離陸律率立葎掠略劉�溜�留硫粒隆竜�侶慮旅虜了亮僚両凌寮料�涼猟療瞭稜糧良諒��陵領力緑倫厘林淋��臨輪隣鱗麟瑠�涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉��漣煉簾練����\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"����������������������������������������������������������������蓮連錬呂魯櫓炉賂路露労�廊弄朗楼榔浪�牢狼篭���郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘�詫�蕨椀湾碗腕��������������������������������������������弌�丕个丱丶丼丿乂乖乘亂亅豫亊舒�于亞亟亠亢亰亳亶从�仄仆仂仗仞仭仟价伉佚估佛�佗佇佶侈�侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚�俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆��會�������傀傚傅傴傲���\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"����������������������������������������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉�儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉�冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭�凰凵凾刄刋刔刎刧刪刮刳刹�剄剋剌剞剔剪剴剩剳剿剽�劔劒剱劈劑辨辧劬劭劼劵��勗勞勣勦飭勠勳勵勸勹匆匈甸���匕匚匣匯匱匳匸���丗��凖���夘��厂厖厠厦厥厮厰厶�簒雙�曼燮������呀�������呎�呵咎呟呱呷呰咒呻咀呶咄�咆哇咢咸咥咬哄哈咨���\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"����������������������������������������������������������������咫哂咤咾咼哘哥哦�唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳�喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎�營嘴嘶嘲嘸�噫噤嘯噬噪嚆嚀嚊嚠嚔�嚥嚮嚶嚴囂嚼�囃囀囈囎囑囓囗囮囹圀囿圄圉圈國�圓團圖嗇圜圦圷圸�圻���埀垈��垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙�塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊�夛梦夥夬夭夲夸夾竒奕�奎奚奘奢奠奧奬奩���\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"����������������������������������������������������������������奸��佞侫妣妲姆姨姜�姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲�嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀�它宦宸寃寇寉寔�寤實寢寞寥寫寰寶寳尅將專�尓尠尢尨尸尹�屆屎屓��孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢�嶬嶮嶽�嶷嶼巉�巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠�廂廈�����\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"����������������������������������������������������������������廖廣�廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉�彜弋弑弖弩弭弸�彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱�悳忿怡��怙�怩怎怱怛怕怫怦�怺�����������������惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘�愕愆惶惷愀惴惺愃愡惻惱�愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟�慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹�懦懣懶懺懴懿懽懼懾戀戈戉�戌戔戛���\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"����������������������������������������������������������������戞戡截戮戰戲戳�扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻�拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵�挾���掖掎掀掫�掣�掉掟掵���掾������������������摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕�敘敞�敲數斂斃變斛斟斫斷旃旆�旄旌旒旛旙无旡旱�昊昃旻�昵昶昴昜�晄晉�晞�晤晧晨晟晢晰暃暈暎暉暄暘��暹曉暾暼���\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"����������������������������������������������������������������曄暸曖曚曠昿曦曩曰曵曷�朖朞朦朧霸朮朿朶�朸朷������枉�枩��枌枋枦枡枅枷柯枴柬枳柩枸柤柞�柢柮枹柎柆柧檜栞框栩桀�栲桎�梳栫桙档桷桿梟�梭梔�梛梃檮梹桴梵梠梺��桾�棊椈棘椢椦棡椌�棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞��楪榲榮�榿�槓榾槎寨槊�榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒�樣樓橄樌橲樶橸橇橢橙橦橈樸樢��檠檄檢檣���\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"����������������������������������������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉�歙歔歛歟歡歸歹歿殀殄殃�殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯�麾氈氓气氛氤氣汞汕汢汪沂�沚�沛汾汨汳沒�泄泱泓沽泗泅�沮沱沾沺泛泯泙泪洟�洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶�渟湃渺湎渤滿�游溂溪溘滉溷滓溽溯滄溲滔滕�溥滂溟�漑�滬滸滾漿滲漱滯漲滌���\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[224] = \"����������������������������������������������������������������漾漓滷澆潺潸�澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑��濾瀛瀚潴�瀘瀟瀰瀾瀲��炙炒炯烱炬炸炳炮烟烋��烙焉烽焜焙煥煕熈煦煢煌煖煬�燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿��爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂�犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷�猗猊猜猖�猴猯猩猥猾��默���������玳�玻����璢�瑯����瑕�瑟瑙�瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊�瓔����\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"����������������������������������������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎�甕甓甞甦甬甼畄�畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚�疥疣痂疳痃疵疽疸疼疱�痊痒痙痣痞痾痿�痼�痰痺痲痳瘋�瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂�盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸���������瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇�矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬���\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"����������������������������������������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊�禧齋禪禮禳禹禺秉秕秧秬秡秣稈�稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩�穰穹穽窈窗窕窘窖窩竈窰�窶竅竄窿邃竇竊��竕竓站竚�竡竢竦竭竰笂�笊笆笳笘笙笞笵笨笶�筺笄�笋筌筅筵筥筴筧筰筱筬筮�箘箟�箜箚箋箒��箙篋�篌�箴篆�篩簑簔篦篥籠簀簇簓篳篷簗�篶簣簧簪簟簷簫簽籌籃籔�籀�籘籟籤籖籥籬籵粃�粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆���\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"����������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮�絣經綉絛�絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘�緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷�縲縺繧�繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒�纓纔纖纎纛纜缸缺罅罌�罎�网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞�羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻���������������肄肆肅肛肓肚肭�肬胛胥胙�胄胚胖脉胯胱脛脩脣脯腋���\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"����������������������������������������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉�臑臙臘臈臚臟臠臧臺臻臾�舂舅與舊��舖舩舫舸舳艀艙艘�艚艟艤�艢艨艪艫舮艱艷艸艾�芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱�茹��茯茫茗茘莅莚莪莟莢莖茣莎莇莊�莵��莠莉莨����������������莽�蔆�葭��蕚蒄葷葫蒭葮蒂葩葆�葯葹�蓊葢蒹蒿蒟蓙�蒻蓚��蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈���\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�����������������������������������������������������������������蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾�藉薺�薹�藕�藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿�乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬�蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉�蛹蜊蜴蜿蜷蜻蜥蜩蜚�������������蠅螢螟螂螯蟋螽蟀�雖螫蟄螳蟇蟆螻蟯蟲蟠��蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫�衾袞衵衽袵衲袂袗袒袮袙袢�袤袰袿袱裃裄裔裘裙�裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫�襄褻褶褸襌�襠襞���\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"����������������������������������������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜�觧觴觸訃訖�訌訛�訥訶�詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄�諂諚諫諳諧�諤諱謔諠諢諷諞諛謌謇謚諡謖�謗謠謳鞫謦謫謾謨�譌�譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺�谿豈豌豎�豕豢豬豸豺貂貉貅貊�貎貔豼貘�貭貪貽貲貳貮貶賈�賤賣賚賽賺賻贄贅贊贇���齎贓�贔贖赧赭赱赳�趙跂趾趺�跚跖跌跛跋跪跫跟跣跼踈踉跿�踞�踟蹂踵踰踴蹊���\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"����������������������������������������������������������������蹇蹉蹌�蹈蹙蹤蹠踪蹣蹕蹶蹲蹼�躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜�轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡�逞逖逋逧逶逵逹迸����逎�逾������隨�邂��邀邊邉�邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀�釉釋�釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋�銜銖銓銛鉚�銹銷鋩�鋺�錮���\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"����������������������������������������������������������������錙錢錚錣錺錵錻�����鎰鎬鎭鎔鎹����������������������鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾�鑿閂閇閊閔閖閘閙�閠閨閧閭閼閻閹閾闊濶闃�闌闕闔闖關闡闥闢阡阨阮阯陂陌�陋陷陜陞�陟陦陲陬�隘隕隗險隧隱隲隰隴隶隸隹雎雋雉��雜�雕雹霄霆霈霓霎霑�霖霙霤霪霰霹霽霾����������勒���鞅���鞆鞋��鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭�韲竟韶韵�頌頸頤頡頷頽顆�顋顫顯顰���\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"����������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡�餞餤餠餬餮餽餾饂饉饅�饋饑饒饌饕馗馘馥馭馮馼駟駛�駘駑駭駮駱駲駻駸��騅駢騙騫騷驅驂驀驃�騾驕�驛驗驟驢驥驤驩驫驪骭骰骼髀�髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃��魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆�鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒�鴿鴾鵆鵈���\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"�����������������������������������������������������������������鵞鵤鵑�鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄�鶻鶸鶺鷆�鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽�麈麋麌麒麕麑�麥麩麸麪麭�黌黎��黔黜點�黠黥黨黯�黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇�瑤凜熙�������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[237] = \"����������������������������������������������������������������纊褜�銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔��倢俿倞���傔僴僘兊兤�冾凬刕劜劦勀勛匀匇匤�厓厲�﨎咜咊咩哿喆��垬埈埇���增墲夋奓奛�奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹�弡弴彧德忞�悅悊惞惕愠惲愑愷愰憘戓抦�摠�擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗�枻桒柀�桄�﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬�淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫�焄煜煆煇凞�燾犱���\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"����������������������������������������������������������������犾猤猪�玽����������瑢璉璟�畯皂皜皞皛皦益�劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞�絈絜綷綠緖繒罇羡羽�����葈蒴蕓蕙�蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣�﨤逸�郞都鄕鄧釚釗釞釭釮釤釥鈆�鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙�﨧鋕鋠鋓錥錡鋻﨨錞鋿�錂��鎤����鑅鑈閒隆﨩�隯霳霻�����顗顥飯飼餧館馞驎髙髜魵魲�鮱鮻鰀鵰鵫鶴鸙黑��ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ¬¦'"���\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[250] = \"����������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ¬¦'"㈱№℡∵纊褜�銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔��倢俿倞���傔僴僘兊�兤�冾凬刕劜劦勀勛匀匇匤�厓厲�﨎咜咊咩哿喆��垬埈埇��增墲夋奓奛�奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹�弡弴彧德忞�悅悊惞惕愠惲愑愷愰憘戓抦�摠�擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗�枻桒柀�桄�﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯���\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"����������������������������������������������������������������涖涬�淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫�焄煜煆煇凞�燾犱犾猤猪�玽����������瑢璉璟�畯皂皜皞皛皦益�劯砡硎硤硺礰礼神�祥禔福禛竑竧靖竫箞�絈絜綷綠緖繒罇羡羽�����葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣�﨤逸�郞都鄕鄧釚釗釞釭釮釤釥鈆�鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙�﨧鋕鋠鋓錥錡鋻﨨錞鋿�錂��鎤����鑅鑈閒隆﨩�隯霳霻�����顗顥飯飼餧館馞驎髙���\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"����������������������������������������������������������������髜魵魲�鮱鮻鰀鵰鵫鶴鸙黑������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[936] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"����������������������������������������������������������������丂丄丅丆�丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀�乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀�亂亃亄亅亇亊��亖亗亙亜�亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌��仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜�伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀�佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀�侂侅來侇侊侌侎�侒侓侕侖侘侙侚侜侞侟価侢�\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀�係俆俇俈俉俋俌�俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀�倂倃倄倅倆倇倈倉倊�個倎�們倓倕倖倗倛�倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿�������������������������������������������������傂傃傄傆傇傉傊傋傌傎��傑傒傓傔傕傖傗傘備傚傛傜�傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"����������������������������������������������������������������傽傾傿僀�僂僃僄僅僆僇僈僉僊僋僌�僎�僑僒僓僔僕僗僘僙僛僜�僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀�儂儃億儅儈�儉儊儌�儎��儑儓儔儕儖儗儘儙儚儛儜�儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎��兒兓兗兘兙兛�兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎��冑冓冔冘冚�冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿�凂凃凅凈凊�凎�凒凓凔凕凖凗�\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌��刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎�剒剓剕剗剘�剙剚剛�剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌�劎�劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀�勂勄勅勆勈勊勌�勎�勑勓勔動勗務勚勛勜�勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽�匂匃匄匇匉匊匋匌匎�\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[133] = \"����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽�������������������������厀�厃厇厈厊厎���厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾���������������������������������������������呂呄呅呇呉呌�呎�呑呚�呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿�咃咅咇咈咉咊�咑咓咗咘咜咞咟咠咡�\".split(\"\");\n\t\tfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\n\t\tD[134] = \"����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌�唎唒唓唕唖唗唘唙唚唜�唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌�啎�啑啒啓啔啗啘啙啚啛�啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌�喎�喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀�嗂嗃嗆嗇嗈嗊嗋嗎��嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�\".split(\"\");\n\t\tfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\n\t\tD[135] = \"����������������������������������������������������������������嘆嘇嘊嘋��嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜�嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀�噂噃噄噅噆噇噈噉噊噋��噑噒噓噕噖噚噛�噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀�嚂嚃嚄嚇嚈嚉嚊嚋嚌��嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜�嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀�囂囃囄囅囆囇囈囉囋囌�囎��囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀�圂圅圇國圌�圎��圑�\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"����������������������������������������������������������������園圓圔圕圖圗團圙圚圛�圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿��������������������������������垀��垇垈垉垊�垎��垑垔垕垖垗垘垙垚垜�垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀�埄埅埆埇埈埉埊埌��埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿�堃堄堅堈堉堊堌堎��堒堓堔堖堗堘堚堛堜�堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"����������������������������������������������������������������堾堿塀�塂塃塅塆塇塈塉塊塋塎��塒塓塕塖塗塙塚塛塜�塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌��墎��墑墔墕墖増墘墛墜�墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌�壎��壒壓壔壖壗壘壙壚壛壜�壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀�夃夅夆夈変夊夋夌夎�夑夒夓夗夘夛�夞夠夡夢夣夦夨夬夰夲夳夵夶夻�\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"����������������������������������������������������������������夽夾夿奀奃奅奆奊奌��奒奓奙奛奜�奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎��妑妔妕妘妚妛妜�妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀�姂姃姄姅姇姈姉姌�姎�姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋�娎��娒娔娕娖娗娙娚娛�娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿�婂婃婄婅婇婈婋婌�婎��婑婒婓婔婖婗婘婙婛婜�婞婟婠�\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀�媂媃媄媅媆媇媈媉媊媋媌�媎��媑媓媔媕媖媗媘媙媜�媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋�嫎��嫑嫓嫕嫗嫙嫚嫛�嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀�嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌�嬎��嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜�嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿�孂孃孄孅孆孇�\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"����������������������������������������������������������������孈孉孊孋孌�孎�孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊�宎�宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀�寃寈寉寊寋�寎��寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌�導�尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌�屒屓屔屖屗屘屚屛屜�屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎�岒岓岕�岞岟岠岡岤岥岦岧岨�\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌�峎��峑峓峔峕峖峗峘峚峛峜�峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀��崄崅崈崉崊崋崌���崑崒崓崕崗崘崙崚崜�崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀�嵂嵃嵄嵅嵆嵈嵉�嵎��嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀�嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌�嶎��嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀�巂巃巄巆巇巈巉巊巋巌巎��巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋�帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀�幃幆幇幈幉幊幋�幎��幑幒幓幖幗幘幙幚幜�幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾�庂広庅庈庉庌�庎庒庘庛�庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀�廂廃廄廅�\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"����������������������������������������������������������������廆廇廈廋廌�廎��廔廕廗廘廙廚廜�廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌�弎�弒弔弖弙弚弜�弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿�彂彃彄彅彆彇彈彉彊彋彌�彎�彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆�徎�徑従徔徖徚徛�從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀�忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"����������������������������������������������������������������怈怉怋怌�怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾��������������������������������悀��悂悅悆悇悈悊悋悎��悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀�惂惃惄惇惈惉惌�惎��惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌�愑愒愓愔愖愗愘愙愛愜�愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀�慂慃慄慅慆�\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"����������������������������������������������������������������慇慉態���慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀�憂憃憄憅憆憇憈憉憊憌���憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀�懃懄懅懆懇應懌�懎��懓懕懖懗懘懙懚懛懜�懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀�戂戃戄戅戇戉戓戔戙戜�戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"������������������������������������������������������������������払扖扗扙扚扜�扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽�抂抃抅抆抇抈抋抌�抎��抔抙抜�択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀��拃拋�拑拕�拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌���挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿���������������������������������������掃掄掅掆掋�掑掓掔掕掗掙掚掛掜�掞掟採掤掦掫掯掱掲掵掶掹掻掽掿��\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"���������������������������������������������������������������������������������������������������������������������������������������������������摀摂摃摉摋摌�摎��摑摓摕摖摗摙摚摛摜�摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀�撃撆撈撉撊撋撌�撎��撓撔撗撘撚撛撜�撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿�擃擄擆擇擈擉擊擋擌�擑擓擔擕擖擙據�\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"����������������������������������������������������������������擛擜�擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿�攂攃攄攅攆攇攈攊攋攌�攎��攑攓攔攕攖攗攙攚攛攜�攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀�敂敃敄敆敇敊敋�敎�敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀�斂斃斄斅斆斈斉斊�斎�斒斔斕斖斘斚�斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊��旑旓旔旕旘旙旚旛旜�旞旟旡旣旤旪旫�\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿�昄昅昇昈昉昋��昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊�晎�晑晘�晙晛晜�晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀�暃暅暆暈暉暊暋�暎��暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀�曂曃曄曅曆曇曈曉曊曋曌�曎��曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽�朂會�\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"����������������������������������������������������������������朄朅朆朇朌朎�朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿���������������������������������枀枂枃枅枆枈枊枌�枎�枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌�柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾�栂栃栄栆��栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋��桒桖桗桘桙桚桛�\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"����������������������������������������������������������������桜�桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌�梎�梑梒梔梕梖梘梙梚梛梜�梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿�棃棄棅棆棇棈棊棌棎��棑棓棔棖棗棙棛棜�棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌�椑椓椔椕椖椗椘椙椚椛検�椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀�楃楄楅楆楇楈楉楊楋楌�楎��楑楒楓楕楖楘楙楛楜楟�\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿�榃榅榊榋榌榎��榑榒榓榖榗榙榚�榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構��槑槒槓槕槖槗様槙槚槜�槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀�樂樃樄樅樆樇樈樉樋樌�樎��樑樒樓樔樕樖標樚樛樜�樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀�橂橃橅橆橈橉橊橋橌�橎�橑橒橓橔橕橖橗橚�\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"����������������������������������������������������������������橜�橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿�檂檃檅檆檇檈檉檊檋檌��檒檓檔檕檖檘檙檚檛檜�檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀�櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌�櫎��櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜�櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀�欂欃欄欅欆欇欈欉權欋欌�欎��欑欒欓欔欕欖欗欘欙欚欛欜�欞欟欥欦欨欩欪欫欬欭欮�\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀�歂歄歅歈歊歋�歎��歑歒歓歔歕歖歗歘歚歛歜�歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎��殑殔殕殗殘殙殜�殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎�毑毘毚毜�毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀�氂氃氄氈氉氊氋氌氎氒気氜�氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌�汎�汑汒汓汖汘�\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋�沎沑沒沕沖沗沘沚沜�沞沠沢沨沬沯沰沴沵沶沷沺泀�泂泃泆泇泈泋�泎�泑泒泘�泙泚泜�泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊���洑洓洔洕洖洘洜�洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌�浕浖浗浘浛�浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀�涃涄涆涇涊涋���涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾�淂淃淈淉淊�\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"�����������������������������������������������������������������淎��淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀�渂渃渄渆渇済渉渋�渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀�湂湅湆湇湈湉湊湋湌��湑湒湕湗湙湚湜�湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満�溂溄溇溈溊溋溌�溎溑溒溓溔溕準溗溙溚溛�溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌�滎�滒滖滘滙滛滜�滣滧滪滫滬滭滮滯�\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀�漃漄漅漇漈漊漋漌�漎�漑漒漖漗漘漙漚漛漜�漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀�潂�潃潄潅潈潉潊潌潎��潑潒潓潔潕潖潗潙潚潛�潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀�澂澃澅澆澇澊澋��澑澒澓澔澕澖澗澘澙澚澛�澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿�濃濄濅濆濇濈濊濋濌�濎��濓濔濕濖濗濘濙濚濛濜�濟濢濣濤濥�\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀�瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌�瀎��瀒瀓瀔瀕瀖瀗瀘瀙瀜�瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿���������������������������������������������������炂炃炄炆炇炈炋炌���炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌�烎��烑烒烓烔烕烖烗烚�\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"����������������������������������������������������������������烜�烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀�焂焃焄焅焆焇焈焋焌�焎�焑焒焔焗焛焜�焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀�煂煃煄煆煇煈煉煋���煑煒煓煔煕煖煗煘煙煚煛�煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀�熂熃熅熆熇熈熉熋熌�熎�熑熒熓熕熖熗熚熛熜�熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀�燂燄燅燆燇燈燉燊燋燌���燑燒燓�\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"����������������������������������������������������������������燖燗燘燙燚燛燜�燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀�爂爃爄爅爇爈爉爊爋爌�爎��爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀�牂牃牄牅牆牉牊牋牎��牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎�犑犓犔犕犖犗犘犙犚犛犜�犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌�狑狓狔狕狖狘狚狛�\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� �。·ˉˇ¨〃々—~‖…‘’“�〔〕〈〉《》「�『�〖〗�】±×÷∶∧∨∑�∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽�≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○�◎◇◆□■△▲※→�↑↓〓�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ������⒈⒉⒊⒋⒌�⒎��⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀�⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������"#¥%&'()*+,�.��123456789:;<�>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`�bcdefghijkl�n��qrstuvwxyz{|� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������む�もゃやゅゆょよらりるれ�ゎ��ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダ�ヂッツヅテデトドナニヌ�ノ��パヒビピフブプヘベペホボ�マミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπ�στυφχψω�������︵︶︹︺︿﹀︽︾�﹂﹃﹄��︻︼︷︸︱�︳︴����������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������БВГДЕ�ЖЗИЙКЛМ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопр�туфхцчшщъыь�ю���������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿�║╒╓╔╕╖╗╘╙╚╛╜�╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳�▂▃▄▅▆▇�█▉▊▋▌�▎�▓▔▕▼▽◢◣◤◥☉⊕〒�〞������������áǎàēéěèīí�ì�óǒòūúǔùǖǘǚǜüêɑ�ńň�ɡ����ㄅㄆㄇㄈㄉㄊㄋㄌ�ㄎ��ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜ�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎�㎜�㎞㎡�����︰¬¦�℡㈱�����ー゛゜ヽヾ〆�ゞ﹉﹊﹋﹌�﹎��﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜�﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫�������������〇�������������─�│┃┄┅┆┇┈┉┊┋┌�┎��┑┒┓└┕┖┗┘┙┚┛├�┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀�╂╃╄╅╆╇╈╉╊╋����������������\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"����������������������������������������������������������������狜�狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌���猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"�����������������������������������������������������������������������������玀�玂玃玅玆玈玊玌���玒玓玔玕玗玘玙玚玜�玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿���������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"������������������������������������������������������������������������������������������������������������������瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌��瑎��瑑瑒瑓瑔瑖瑘�瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌��璑璒璓璔璕璖璗璘璙璚璛�璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀�瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌�瓎��瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛�瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀�甂甃甅甆甇甈甉甊甋甌甎�甒甔甕甖甗甛�甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿�畂畃畄畆畇畉畊��畑畒畓畕畖畗畘��畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀�疂疄疅疇�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"����������������������������������������������������������������疈疉疊疌�疎�疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀�痆痋痌痎��痑痓痗痙痚痜�痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋�瘎�瘑瘒瘓瘔瘖瘚瘜�瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽�療癄�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"����������������������������������������������������������������癅癆癇癈癉癊癋癎��癑癒癓癕癗癘癙癚癛�癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀�皃皅皉皊皌���皒皔皕皗皘皚皛�皜�皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀�盃啊阿埃挨哎唉哀皑癌蔼矮艾�爱隘�氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭�扒��笆八疤巴拔跋�把耙�霸罢爸白�百摆佰败拜稗斑��扳般��版扮拌伴瓣�办绊邦帮梆榜膀绑棒磅蚌镑�谤苞胞包褒剥�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜�盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎��眑眒眓眔眕眖眗眘眛眜�眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿���������������������薄雹�堡饱�抱报暴豹�爆�碑悲�北辈背�钡�狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖�庇痹闭�弊必辟�臂�陛鞭边编贬�便��辨辩辫�标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"����������������������������������������������������������������������������������������瞂瞃瞆瞇瞈瞉瞊瞋��瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜�瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀�矂矃矄矅矆矇矈矉矊矋矌矎��矑矒矓矔矕矖矘矙矚�矞矟矠矡矤病并玻�播拨钵波�勃�铂箔伯帛舶脖膊渤泊驳��哺补埠�布步簿部怖擦猜���财�踩采彩�蔡��蚕残惭惨��舱仓沧��糙槽曹�厕策侧册测层蹭��茬茶查碴�察岔差诧拆柴豺�掺�馋谗缠铲产�颤昌猖�\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎��砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿�硂硃硄硆硈硉硊硋��硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀�碂碃场�常长�肠厂敞畅唱倡超抄钞�嘲潮巢�炒车扯撤掣彻澈郴臣辰尘晨忱沉陈�衬撑称城橙�呈乘程惩澄诚承逞骋秤�痴�匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠�筹仇绸瞅丑臭�出橱厨躇锄��除楚�\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"����������������������������������������������������������������碄碅碆碈碊碋��碒碔碕碖碙�碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌�磎�磑磒磓磖磗磘磚磛磜�磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗�触处��穿椽传船喘串疮窗幢床闯创�炊�锤垂春椿醇唇淳纯蠢戳绰疵茨�雌辞慈瓷�此刺�次�葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆�粹淬翠�存寸磋撮�措挫错�达答瘩打大呆歹傣戴带殆代贷袋待逮�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�����������������������������������������������������������������礎��礑礒礔礕礖礗礘礙礚礛礜�礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌�祎��祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌�禎�禑禒怠耽担丹�郸掸胆旦氮但惮淡诞弹蛋当挡党�档刀�蹈倒岛祷导到稻悼�盗德得的蹬�登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第�弟递缔颠掂滇碘点典�垫电佃甸店惦奠淀殿碉�雕凋�掉�钓调跌爹碟�迭���\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"����������������������������������������������������������������禓禔禕禖禗禘禙禛禜�禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎��秓秔秖秗秙秚秛秜�秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿�稄稅稇稈稉稊稌��稑稒稓稕稖稘稙稛稜�盯�钉顶鼎锭定订丢东冬董懂动栋侗�冻洞兜抖斗陡豆逗痘都�毒犊独读堵�赌�镀肚度渡妒端短锻段断缎堆兑队对墩�蹲敦顿囤�盾�掇哆多夺垛躲朵跺舵�惰堕蛾峨鹅俄�讹娥�厄扼�鄂饿�而儿耳尔饵洱二�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"�����������������������������������������������������������������稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀�穂穃穄穅穇穈穉穊穋穌�穎��穒穓穔穕穖穘穙穚穛穜�穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎��窓窔窙窚窛窞窡窢贰�罚���阀法�藩帆番翻樊矾钒�凡烦�返范贩犯饭泛�芳方肪房防妨仿访纺放��啡飞肥匪诽�肺废沸费芬酚�氛分纷�焚汾粉奋份忿愤粪丰�枫蜂峰锋风疯烽逢冯�讽奉凤佛�夫敷肤孵扶拂�幅氟符�俘��\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀�竂竃竄竅竆竇竈竉竊竌�竎��竑竒竓竔竕竗竘竚竛竜�竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀�笂笅笇笉笌�笎�笒笓笖笗笘笚笜�笟笡笢笣笧笩笭浮涪�袱弗甫抚辅俯釜斧脯腑府�赴副覆赋�傅付阜父腹负富讣附妇缚�噶嘎该改概钙盖溉干甘�柑竿�赶感秆敢赣冈刚钢缸肛纲岗港�篙皋高�羔糕��稿告哥歌�戈鸽胳疙割�葛格蛤�隔铬个�给根跟耕更庚羹�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀�筂筃筄筆筈筊�筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿�箂箃箄箆箇箈箉箊箋箌箎��箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功�龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜�咕�估沽孤姑鼓�蛊骨谷股故顾固雇刮瓜�寡挂褂乖�怪棺关官冠观管馆�惯�贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚�锅郭国果裹过哈�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"����������������������������������������������������������������篅篈築篊篋�篎��篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀�簂簃簄簅簆簈簉簊�簎�簑簒簓簔簕簗簘簙�簚簛簜�簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩�涵寒函喊罕翰撼�旱憾�焊汗汉夯�航壕嚎豪毫�好耗�浩呵���核禾和何�盒貉阂河涸赫�鹤贺嘿黑痕很狠�哼亨横衡�轰哄烘虹鸿洪�弘红喉侯猴�厚候�呼乎忽瑚壶葫胡��糊湖�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎��籑籒籓籔籕籖籗籘籙籚籛籜�籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀�粂粃粄粅粆粇�粈粊粋粌�粎��粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗�猾滑画划化��徊怀淮�欢环桓还缓�患唤痪豢焕涣宦幻�慌黄磺�簧皇凰惶煌晃幌�谎�挥辉徽�蛔回�悔慧�惠晦贿秽会烩汇讳诲绘��婚魂浑混�活伙�获或惑�货祸击圾基机畸稽积箕�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"����������������������������������������������������������������粿糀糂糃糄糆糉糋糎��糑糒糓糔糘糚糛�糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀�紂紃約紅紆紇紈紉紋紌�紎���紑紒紓純紕紖紗紘紙級紛紜�紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉��棘辑�集�急疾汲�嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加�颊贾甲钾�稼价架驾�歼监�尖笺间煎兼肩艰奸缄茧检柬碱硷拣�简俭剪��槛鉴践贱�键箭件�\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀�終絃組絅絆絇絈絉絊絋経�絎��絑絒絓絔絕絖絗絘絙絚絛絜�絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀�綂綃綄綅綆綇綈綉綊綋綌�綎��綑綒經綔綕綖綗綘�舰剑饯�溅涧建僵姜将浆江疆蒋桨奖讲匠酱�蕉椒�焦胶交郊浇骄娇嚼�铰矫侥脚狡角饺缴绞剿教酵轿较�窖�接皆秸街阶截劫节桔���竭�结解�戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进�晋�近烬浸�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"����������������������������������������������������������������継続綛綜�綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀�緂緃緄緅緆緇緈緉緊緋緌�緎��緑緒緓緔緕緖緗緘緙�線緛緜�緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲�兢茎�晶鲸京惊精粳�井警景颈�境敬镜径痉�竟竞净炯窘�究纠玖韭久��酒厩救旧臼舅咎就疚鞠拘狙疽居驹�局咀矩举沮�拒�巨具�踞锯俱�惧炬剧�鹃娟倦眷�绢撅攫抉掘倔爵觉决诀���钧军�峻�\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"����������������������������������������������������������������緻緼緽緾緿縀�縂縃縄縅縆縇縈縉縊縋縌�縎��縑縒縓縔縕縖縗縘縙縚縛縜�縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌�繎��繑繒繓織繕繖繗繘繙繚繛繜�俊竣浚郡�喀咖�咯开�楷凯慨刊堪勘��看康慷糠扛抗亢炕考拷烤��苛柯棵磕颗科壳咳�渴克刻客课肯啃垦���空�孔控抠�扣寇枯哭窟苦酷库裤夸垮挎跨胯�筷侩快宽款匡�狂框矿眶旷况�盔岿窥葵奎�傀�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀�纃纄纅纆纇纈纉纊纋續�纎��纑纒纓纔纕纖纗纘纙纚纜�纞�纮纴纻纼绖绤绬绹缊�缞缷缹缻缼缽缾缿罀�罃罆罇罈罉罊罋罌�罎�罒罓馈愧溃�昆�困括扩廓阔垃拉喇蜡腊辣啦莱�赖�婪�拦篮阑兰澜谰�览懒缆烂滥�榔狼廊郎朗浪�劳牢�佬姥酪烙�勒�雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨�黎篱狸离漓��里鲤礼莉��栗丽厉励砾历利傈例��\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"����������������������������������������������������������������罖罙罛罜�罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋���羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋���翑習翓翖翗翙翚翛翜�翞翢翣痢立粒沥隶力璃哩俩�莲连镰廉怜涟帘敛脸链�炼练粮凉�粱良两辆�晾亮谅撩�僚疗燎寥辽潦了撂镣廖料列裂烈劣猎�林磷霖临邻鳞淋凛��拎玲�零龄铃伶羚凌�陵岭领�令溜�榴硫�留刘瘤�柳六龙�咙笼窿�\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎�耑耓耚耛�耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾�������������������������������������������������隆垄拢陇楼娄�篓�陋芦�颅�炉掳���麓碌露路赂鹿潞禄录陆戮驴��侣旅履屡缕虑氯律率滤绿峦挛孪滦�乱掠略抡轮伦仑沦纶论�螺罗逻锣箩骡裸�洛骆络妈麻玛�蚂马骂嘛�埋买麦�迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"������������������������������������������������������������������肂肅肈肊�肎��肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋��胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀�脃脄脅脇脈脋�脌脕脗脙脛脜�脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆�茂冒帽貌贸么玫枚梅酶霉煤没眉媒��美昧�妹媚门闷们�蒙檬盟锰猛梦孟眯醚�糜迷谜弥米秘觅泌蜜密幂棉眠绵冕�勉娩缅�苗�瞄�秒渺庙妙蔑�民抿皿�悯闽明螟鸣铭�命谬摸�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"����������������������������������������������������������������腀�腂腃腄腅腇腉�腎�腒腖腗腘腛腜�腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸�膃膄膅膆膇膉膋膌�膎�膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋�臎��臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟�拇牡亩姆�墓暮幕募慕木目�牧穆拿哪�钠那娜纳氖乃奶�奈�男难囊挠脑�闹淖呢�内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵�念娘酿鸟尿��孽啮镊�涅您柠狞���\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"����������������������������������������������������������������臔臕臖臗臘臙臚臛臜�臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎�舑舓舕舖舗舘舙舚�舠舤舥舦舧舩舮舲舺舼舽舿�艀�艂艃艅艆艈艊艌�艎�艑艒艓艔艕艖艗艙艛艜�艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖�疟挪懦糯诺哦欧鸥殴藕呕�沤啪趴爬帕怕��排牌徘湃派攀潘盘�盼畔判�乓庞�耪胖抛咆刨炮�跑泡呸胚培裴赔陪�佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋��碰�砒霹批披劈�毗�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀�芃芅芆芇芉芌�芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉�苖苙苚�苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋��茒茓茖茘茙�茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻�譬篇�片骗飘漂瓢票撇瞥拼频贫��乒�苹�平凭瓶评��泼颇婆破魄迫粕剖扑铺仆莆葡�蒲埔朴圃普浦谱�瀑期欺栖戚妻七凄漆柒�其棋奇歧畦崎��旗祈�骑起岂乞��契砌器气迄弃汽泣讫��\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"����������������������������������������������������������������茾茿�����������������������������莀�莂莃莄莇莈莊莋莌���莑莔莕莖莗莙莚�莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿�����������������������������洽牵扦钎铅��签仟谦乾黔钱钳�潜�浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭��切茄且怯窃钦侵亲秦�勤芹擒禽���轻氢倾�清擎晴氰情顷请庆�穷秋丘邱�求囚酋泅趋区蛆曲躯屈驱渠�\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"����������������������������������������������������������������������������������������������������������������������葀�葂葃葄葅葇葈葉�葊葋葌�葎��葒葓葔葕葖葘�葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼�娶龋趣去圈颧�醛泉全痊拳犬券�缺炔瘸�鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬�人�韧任认刃妊纫扔�日戎茸蓉��熔溶容绒冗�柔肉茹蠕儒孺如辱乳�入褥软阮蕊瑞�闰润若弱撒洒�腮鳃塞赛三��\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"����������������������������������������������������������������葽葾葿蒀�蒃蒄蒅蒆蒊���蒑蒒蒓蒔蒕蒖蒘蒚蒛�蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎�蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀�蔂伞散桑嗓丧�骚扫嫂瑟色涩森僧莎砂�刹沙纱傻啥煞筛晒�苫�山删煽衫闪陕擅赡膳善汕扇缮墒伤商�晌上尚裳梢��烧�勺韶少哨邵�奢赊蛇舌�赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲�绳�\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋�蔎��蔒蔔蔕蔖蔘蔙蔛蔜�蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀�蕂蕄蕅蕆蕇蕋蕌�蕎��蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜�蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀��盛剩胜圣师失狮施湿诗尸虱�石拾时什食蚀实识�矢使屎驶始�示士世柿事拭誓�势是嗜噬适仕�释饰�市�室视试收手首守寿授售�瘦兽蔬枢梳殊抒输�舒淑�书赎孰熟薯暑曙署蜀�鼠属术述树��竖墅庶数漱�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"����������������������������������������������������������������薂薃薆薈薉薊薋薌�薎�薑薒薓薔薕薖薗薘薙薚�薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌�藎藑藒�藔藖藗藘藙藚藛�藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸�刷�摔衰甩帅栓拴霜�爽�水�税�瞬顺舜说硕朔�斯撕嘶����死肆寺嗣四伺似饲巳�耸怂颂�宋讼诵�艘擞嗽�酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋�绥髓碎�穗�隧祟孙�笋蓑梭唆缩�索�所塌他它她塔�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"����������������������������������������������������������������藹藺藼藽藾蘀�蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌�蘎��蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜�蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀��虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜�號虠虡虣虤虥虦虧虨虩虪�挞蹋�胎苔抬�泰酞太�汰�摊贪瘫滩�檀痰潭谭谈�毯袒碳探�炭汤塘�堂棠膛�糖倘躺淌趟烫�涛滔绦�桃逃淘陶讨套特藤腾疼誊梯剔踢锑�题蹄啼体替�惕涕剃屉天添填田甜�舔腆挑�迢眺跳贴�帖厅�烃�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎��蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿�蛂蛃蛅蛈蛌�蛒蛓蛕蛖蛗蛚蛜��蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿�蜄蜅蜆蜋蜌蜎��蜑蜔蜖汀廷�亭庭挺艇通�酮瞳�铜彤童桶�筒统痛�投头�凸秃�图徒途涂屠土�兔�团推颓腿蜕褪退�屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄��\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"����������������������������������������������������������������蜙蜛�蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽���������������������������������������������螀�螄螆螇螉螊螌螎��螑螒螔螕螖螘螙螚螛螜�螞螠螡螢螣螤�微�韦�桅围唯惟为�维苇�委伟伪尾纬未蔚味�胃喂��渭谓尉慰�瘟温蚊文闻纹�稳紊问嗡�瓮�蜗涡�我斡��沃巫呜钨乌污诬屋无芜梧��毋武五��舞�侮�戊雾晤物勿务悟误昔熙�西硒矽晰嘻�锡牺�\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿�蟂蟃蟄蟅蟇蟈蟉蟌�蟎��蟔蟕蟖蟗蟘蟙蟚蟜�蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀�蠂蠄蠅蠆蠇蠈蠉蠋蠌�蠎��蠑蠒蠔蠗蠘蠙蠚蠜�蠞蠟蠠蠣稀�希悉�夕惜熄烯溪�犀檄袭席习媳喜铣洗系隙�细瞎虾匣霞辖暇峡侠狭下厦��掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷�线相厢镶香箱襄湘乡翔祥详想�享项巷橡��象��霄削哮嚣销消宵淆晓�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿�衂衃衆衇衈衉衊衋衎��衑衒術衕衖衘衚衛衜�衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎��袑袓袔袕袗袘袙袚袛�袞袟袠袡袣袥袦袧袨袩袪��校肖啸笑效楔些歇�鞋�挟�邪斜��写械�蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸�性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须�许蓄酗�旭�畜�絮婿绪续轩喧宣悬旋玄�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌���裑裓裖裗裚裛補�裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀�褃褄褅褆複褈�褉褋褌�褎�褑褔褕褖褗褘褜�褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚�薛学穴雪血勋�循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹�严研蜒岩延言颜阎炎沿奄掩眼�演艳堰燕厌砚��彦焰宴谚验殃央鸯秧�扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌�襎��襑襒襓襔襕襖襗襘襙襚襛襜�襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌�覎��覑覒覓覔覕視覗覘覙覚覛覜�覞覟覠覡摇尧�窑谣姚咬舀��耀椰噎耶爷野冶也页掖业�曳腋夜液一壹医�铱�伊衣�夷�移仪胰疑沂宜姨�椅�倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔�毅忆义益溢诣议谊译异翼翌绎茵�因殷音阴姻�银淫寅饮尹引��\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃�觓觔觕觗觘觙觛�觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿�訂訃訄訅訆計訉訊訋訌�討��訑訒訓訔訕訖託記訙訚訛訜��英樱婴鹰应缨莹����迎赢盈影颖硬映哟拥佣臃痈庸�踊蛹�泳涌永�勇用幽优悠忧尤由邮铀犹油游酉有��佑釉诱�幼迂淤于盂榆虞愚舆余俞逾鱼愉�渔隅予娱雨与屿禹宇语羽玉域芋���喻峪御愈欲狱育誉�\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀�詂詃詄詅詆詇詉詊詋詌�詎��詑詒詓詔評詖詗詘詙詚詛詜�詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣�原�辕园员圆猿�缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨��蕴�晕韵孕�砸�栽哉�宰载�在咱攒暂赞赃�葬�糟凿藻枣早澡蚤�噪造皂�燥责择则泽贼怎增憎曾赠扎喳渣札轧�\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"�����������������������������������������������������������������誂誃誄誅誆誇誈誋誌�誎��誑誒誔誕誖誗誘誙誚誛誜�語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀�諂�諃諄諅諆談諈諉諊請諌�諎��諑諒諓諔諕論諗諘諙諚諛諜�諞諟諠諡諢諣铡闸眨栅榨咋�炸诈摘斋宅窄债寨瞻毡詹粘沾�斩辗崭展蘸栈�战站湛绽樟章彰漳张掌涨�丈�账仗胀瘴障招昭找沼赵照罩兆肇��折哲蛰辙者锗蔗这浙�斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣��狰争怔整拯正政�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀�謂謃謄謅謆謈謉謊謋謌�謎��謑謒謓謔謕謖謗謘謙謚講謜�謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀�譂譃譄譅帧症郑���支�蜘知肢脂�之织�直�殖执值侄�指止趾�旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终�肿�仲众舟周州洲诌粥轴肘帚咒皱宙昼骤�株蛛朱猪诸诛�竹烛煮拄瞩嘱主著柱助蛀贮铸筑�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"����������������������������������������������������������������譆譇譈證譊譋譌�譎��譑譒譓譔譕譖譗識譙譚譛譜�譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀�讂讃讄讅讆�讇讈讉變讋讌�讎��讑讒讓讔讕讖讗讘讙讚讛讜�讞讟讬讱讻诇�诪谉谞�注�驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘�缀谆准�拙�桌��酌啄��浊兹咨资姿滋淄孜紫仔籽滓�自�字鬃棕踪宗综总纵邹走��租足��祖诅阻组钻纂嘴醉最罪尊�昨左�柞�作�座������\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋�豎��豑豒豓豔豖豗豘豙豛豜�豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀�貃貄貆貇�貈貋�貎��貑貒貓貕貖貗貙貚貛貜�貞貟負財貢貣貤貥貦貧貨販貪貫責貭�丌兀�廿�丕亘丞鬲孬噩丨禺丿匕乇夭爻��囟胤馗毓�鼗丶亟�乜乩亓芈孛啬�仄��厣厥厮��匚�匦匮匾赜��刂刈刎刭刳刿剀剌剞剡剜蒯剽劂��劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚��\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀�賂賃賄賅賆資賈賉賊賋賌�賎��賑賒賓賔賕賖賗賘賙賚賛賜�賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀�贂贃贄贅贆贇贈贉贊贋贌�佟佗伲伽佶佴侑侉侃�佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩�俳倬�倮倭俾倜倌倥倨�������傥傧傩傺僖儆僭僬僦僮儇儋�氽佘佥俎龠汆籴兮巽黉馘�夔勹�訇�凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"����������������������������������������������������������������贎��贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌�趎��趒趓趕趖趗趘趙趚趛趜�趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀�跂跅跇跈跉跊��跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋�诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌�谑谒谔谕谖谙谛谘�谟谠谡谥谧谪谫谮谯谲谳谵谶���阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈�隗隰邗邛�邙邬邡邴邳邶邺�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀�踂踃踄踆踇踈踋�踎�踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌�蹎��蹓蹔蹕蹖蹗蹘蹚蹛蹜�蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰�郅邾�郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆�奂劢劬劭劾哿�勖勰�燮�廴凵凼鬯厶�畚巯�垩垡塾墼壅壑圩圬圪圳圹圮圯�圻��垅�垆������垭垤垌垲�垧垴垓垠埕埘埚埙埒垸埴埯埸埤��\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌�躎躑躒躓躕躖躗躘躙躚躛�躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀�軂�軃軄軅軆軇軈軉車軋軌���軑軒軓軔軕軖軗軘軙軚軛軜�軞軟軠軡転軣軤堋�埽埭堀堞堙塄堠塥塬�墉墚墀馨鼙懿艹艽艿�芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌�芩芴芡芪芟苄苎芤苡茉苷苤�茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜���茈莒茼茴茱莛�茯�����茗�茭茺茳���\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀�輂較輄輅輆輇輈載輊輋輌�輎��輑輒輓輔輕輖輗輘輙輚輛輜�輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀�轂轃轄�茛�����莰�莳莴莠莪莓莜莅�莶莩�莸�莘莞莨莺莼����堇���������������������葜葑葚葙葳蒇蒈葺蒉葸�葆葩葶蒌蒎�葭���蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌�蔸蓰蔹蔟蔺�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"����������������������������������������������������������������轅轆轇轈轉轊轋轌�轎��轑轒轓轔轕轖轗轘轙轚轛轜�轞轟轠轡轢轣轤轥轪辀辌辒�辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌��迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇�蕹薮薜薅薹薷薰藓�藜藿蘧蘅蘩蘖蘼廾弈夼�耷奕奚奘�尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹��掭���掎掴�掬掊�掮掼�������摒�掾摅�������摞撄摭撖�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿�������������������������������������������還邅邆邇邉邊邌�邎��邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀�擗擤擢攉攥攮弋忒甙弑���������呋呒呓呔呖呃�呗呙��咂咔呷呱呤咚咛咄呶呦��咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤��哞唛哧唠哽唔哳唢唣�唑唧唪啧�喵啉啭�啕唿�唼�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"����������������������������������������������������������������郂郃郆郈郉郋郌�郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀�鄃鄅鄆鄇鄈鄉鄊鄋鄌�鄎��鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜��鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀�酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈�喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦�嗄嗯嗥嗲嗳嗌�嗨嗵嗤辔嘞嘈嘌�嘤嘣嗾嘀嘧嘭噘嘹噗嘬�噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗�囡囵囫囹囿圄圊圉圜�帙帔帑帱帻帼�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀�醂醃醄醆醈醊醎�醓醔醕醖醗醘醙醜�醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀�釂釃釄釅釆釈釋�釒釓釔釕釖釗釘釙釚釛�釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺��岖岈岘岙岑岚岜岵岢岽岬岫岱岣�岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯�嵫嵋嵊嵩嵴嶂嶙�豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃�狎�狒狨狯狩狲狴狷�狳猃狺�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀�鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌�鈎��鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜�鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀�鉂鉃鉄鉅狻猗猓猡猊猞�猕猢猹猥猬猸猱�������舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊��馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖�怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛��怩怫怊怿怡������\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌�鉎��鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜�鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀�銂銃銄銅�銆銇銈銉銊銋銌���銑銒銓銔銕銖銗銘銙銚銛銜�銞銟銠銡銢銣銤銥銦銧��悖悚悭�悃悒悌悛惬悻悱�惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵�隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌��阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅�沔沌汨汩汴汶沆沩�泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀�鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌�鋎��鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜�鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀�錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫�洮洵洚�浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦�淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴��滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉�澌潸潲潼潺濑�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"����������������������������������������������������������������錊錋錌�錎��錑錒錓錔錕錖錗錘錙錚錛錜�錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿��������������������������������������������濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵��宀宄宕宓宥宸甯骞�寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑�逖逡逵逶逭逯��������暹��邂邈邃邋�彗彖彘尻咫�屙孱屣屦羼弪弩弭艴弼鬻屮�妃�妩妪妣�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"������������������������������������������������������������������������������������鎀�鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌�鎎�鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜�鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿�������������妗姊妫妞妤姒妲妯姗妾娅娆�娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀�骅骈骊�骒骓骖骘骛骜�骟骠骢骣骥骧纟纡纣纥纨纩�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������纭纰纾绀�绂绉绋绌�绔绗绛绠绡绨绫绮绯绱绲�绶绺绻绾�缂缃缇缈缋缌�缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟���玷玳�����顼����玺���瑛�������\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"��������������������������������������������������������������������������������鑀�鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌�鑎��鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜�鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀�钂钃钄钑钖钘铇�铓铔铚铦铻锜锠���瑜瑗瑕瑙瑷瑭瑾璜璎璀�璇璋璞璨璩�璧瓒璺韪韫韬�����枥枇��枘枧�枨枞枭枋��柰栉柘栊柩枰栌柙枵柚枳�栀柃枸柢栎�柽栲栳桠桡桎桢桄桤梃�桕桦�桧桀栾桊桉栩梵�桴桷梓桫棂楮棼椟椠棹�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門�閂閃閄閅閆閇閈閉閊開閌�閎��閑閒間閔閕閖閗閘閙閚閛閜�閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀�闂闃闄闅闆闇闈闉闊闋椤棰椋�楗棣�楱椹楠楂�榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱�槊槟榕槠�槿樯槭樗樘橥槲橄樾檠�橛樵檎橹樽樨橘橼檑�檩檗檫猷��殂殇殄殒殓�殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾�辂辄辇辋�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"����������������������������������������������������������������闌�闎��闑闒闓闔闕闖闗闘闙闚闛關�闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾�陃陊陎�陑陒陓陖陗�陘陙陚陜�陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀�隂隃隄隇隉隊�辎�辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿�甑甓攴旮旯旰昊昙�昃昕昀炅曷�昴昱昶昵耆晟晔��晖晡晗晷暄暌暧�暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇�赕赙觇觊觋觌觎��觑牮犟�牦牯牾牿犄犋��犒挈挲掰�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"����������������������������������������������������������������隌階隑隒隓隕隖隚際�隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋�雑雓雔雖雗雘雙雚雛雜�雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌�霑霒霔霕霗霘霙霚霛�霟霠�擘耄毪毳毽毵毹氅氇氆�氕氘氙氚氡氩氤氪氲攵敕敫�牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙�胗��胫胱胴胭�脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧�媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿��������������������������������������������������鞀�鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎��鞓鞕鞖鞗鞙鞚鞛鞜��膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳�齑斓於旆旄旃旌旎旒旖炀炜炖�炻烀炷炫炱烨烊�焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹�爨�焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑��\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀�韂韃韄韅韆韇韈韉韊韋韌�韎��韑韒韓韔韕韖韗韘韙韚韛韜�韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀�頂頃頄項順頇須頉頊頋頌�頎怼������悫愆��憩�懋懑戆肀�沓泶淼矶矸砀砉砗砘砑斫砭砜�砹砺砻砟砼砥砬砣砩硎硭硖硗砦�硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄�盹眇眈眚眢眙眭眦眵眸�������\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"������������������������������������������������������������������頑頒頓頔頕頖頗領頙頚頛頜�頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀�顂顃顄顅顆顇顈顉顊顋題��顎��顑顒顓顔顕顖顗願顙顚顛顜�類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮�����瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹�罾�盥蠲钅钆钇钋钊钌���钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌�铎�铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀�飂飃飄飅飆飇飈飉飊飋飌���飔飖飗飛飜�飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀�餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊�锎�锒锓锔锕锖锘锛�锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎�镒镓镔镖镗镘镙镛镞镟�镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"����������������������������������������������������������������餈餉養餋餌餎�餑餒餓餔餕餖餗餘餙餚餛餜�餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀�饂饃饄饅饆饇饈饉�饊饋饌�饎��饑饒饓饖饗饘饙饚饛饜�饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑�馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾�鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠�疬疣疳疴疸痄疱疰痃痂痖�痣痨痦痤痫痧瘃痱痼痿�瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"����������������������������������������������������������������馌馎馚馛馜�馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀�駂駃駄駅駆駇駈駉駊駋駌�駎��駑駒駓駔駕駖駗駘�駙駚駛駜�駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳�癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶�襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵������覃顸颀颃�\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"����������������������������������������������������������������駺駻駼駽駾駿騀�騂騃騄騅騆騇騈騉騊騋騌�騎��騑騒験騔騕騖騗騘騙騚騛騜�騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀�驂驃驄驅驆驇驈驉驊驋驌�驎��驑驒驓驔驕驖驗驘驙颉颌��颔颚颛颞颟颡颢颥颦�虔虬虮虿虺虼虻蚨�蚋蚬�蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉�蚴蛩蛱蛲蛭蛳�蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊�蜉蜣蜻蜞蜥蜮蜚蜾�蜴蜱蜩蜷蜿螂蜢�������螋������螓螯螨蟒�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"����������������������������������������������������������������驚驛驜�驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉�骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊�髎��髒體髕髖髗髙髚髛髜��髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀�鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅�竺竽笈笃笄笕笊笫�筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌�筠筮筻筢筲筱�箦箧箸箬�箨箅箪箜箢箫箴篑�篌�篚篥篦篪簌篾篼�簖簋�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"����������������������������������������������������������������鬇鬉鬊鬋鬌�鬎�鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜�鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎�魒魓魕魖魗魘魙魚�魛魜�魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸�籀臾�舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋�艚艟艨衾袅袈裘裟襞�羟羧羯羰羲籼敉粑�粜粞粢粲粼粽�糇糌�糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊�酎�酤�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"����������������������������������������������������������������魼魽魾魿鮀�鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌�鮎��鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜�鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀�鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌�鯎��鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅��醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎�跛跆跬跷跸跣跹跻跤踉跽踔�踟踬踮踣踯踺蹀踹踵踽踱蹉�蹂蹑蹒蹊蹰蹶蹼蹯蹴躅�躔�躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"����������������������������������������������������������������鯜�鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀�鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌�鰎��鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜�鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦�雩雳雯霆�霈�霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋�隹隼隽雎雒瞿雠銎銮鋈錾����鑫鱿鲂鲅鲆鲇鲈稣鲋鲎�鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"����������������������������������������������������������������鰼鰽鰾鰿鱀�鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌�鱎��鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜�鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌�鲓鲖鲗鲘鲙�鲪鲬鲯鲹鲾鲿鳀�鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌�鳎��鳓鳔鳕鳗鳘鳙鳜�鳟鳢�鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼�髀髅髂髋髌髑魅魃魇魉魈�魑飨�餮饕饔髟髡髦髯髫髻髭髹鬈�鬓鬟鬣麽麾縻麂麇麈麋麒��麟黛黜�黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀�鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌�鴎��鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜�鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀�鵂�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌�鵎��鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜�鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀��鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌�鶎��鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜�鶞鶟鶠鶡鶢�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀�鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌�鷎��鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜�鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀�鸂�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌�鸎��鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜�鸞鸤鸧鸮鸰鸴鸻鸼鹀��鹒鹓鹔鹖鹙�鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀��麃麄麅麆麉麊麌�麎��麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀�黂黃黅黆黇黈黊黋黌�黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀�鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌�鼑鼒鼔鼕鼖鼘鼚鼛鼜�鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀�齂齃齅齆齇齈齉齊齋齌�齎�齒齓齔齕齖齗齘齙齚齛齜�齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾�龂�龎��龑龒龓龔龕龖龗龘龜�龞龡龢龣龤龥郎凉秊裏隣�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\tD[254] = \"����������������������������������������������������������������兀�﨎�﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[949] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"�����������������������������������������������������������������갂갃갅갆갋갌�갎�갘갞갟갡갢갣갥갦갧갨갩갪갫갮갲갳갴������갵갶갷갺갻갽갾갿�걂걃걄걅걆걇걈걉걊걌걎��걑걒걓걕������걖걗걙걚걛�걞걟걠걡걢걣걤걥걦걧걨걩걪걫걬걭걮걯걲걳걵걶걹걻걼걽걾걿겂겇겈�겎�겑겒겓겕겖겗겘겙겚겛겞겢겣겤겥겦겧겫겭겮겱겲겳겴겵겶겷겺겾겿곀곂곃곅곆곇곉곊곋�곎��곑곒곓곔곖곘곙곚곛곜�곞곟곢곣곥곦곩곫곭곮곲곴곷곸곹곺곻곾곿�괂괃괅괇괈괉괊괋괎�괒괓�\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"�����������������������������������������������������������������괔괕괖괗괙괚괛�괞괟괡괢괣괤괥괦괧괨괪괫괮괯괰괱괲괳������괶괷괹괺괻괽괾괿굀�굂굃굆굈굊굋굌�굎�굑굒굓굕굖굗������굙굚굛굜�굞굟굠굢굤굥굦굧굨굩굪굫굮굯굱굲굷굸굹굺굾궀궃궄궅궆궇궊궋�궎�궑궒궓궔궕궖궗궘궙궚궛궞궟궠궡궢궣궥궦궧궨궩궪궫궬궭궮궯궰궱궲궳궴궵궶궸궹궺궻궼궽궾궿귂귃귅귆귇귉귊귋귌�귎�귒귔귕귖귗귘귙귚귛�귞귟귡귢귣귥귦귧귨귩귪귫귬귭귮귯귰귱귲귳귴귵귶귷�\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"�����������������������������������������������������������������귺귻귽귾긂긃긄긅긆긇긊긌긎��긑긒긓긕긖긗긘긙긚긛긜�������긞긟긠긡긢긣긤긥긦긧긨긩긪긫긬긭긮긯긲긳긵긶긹긻긼������긽긾긿깂깄깇깈깉깋�깑깒깓깕깗깘깙깚깛깞깢깣깤깦깧깪깫깭깮깯깱깲깳깴깵깶깷깺깾깿꺀�꺂꺃꺆꺇꺈꺉꺊꺋�꺎��꺑꺒꺓꺔꺕꺖꺗꺘꺙꺚꺛꺜�꺞꺟꺠꺡꺢꺣꺤꺥꺦꺧꺨꺩꺪꺫꺬꺭꺮꺯꺰꺱꺲꺳꺴꺵꺶꺷꺸꺹꺺꺻꺿�껂껃껅껆껇껈껉껊껋껎껒껓껔껕껖껗껚껛�껞껟껠껡껢껣껤껥�\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"�����������������������������������������������������������������껦껧껩껪껬껮껯껰껱껲껳껵껶껷껹껺껻껽껾껿꼀�꼂꼃꼄꼅������꼆꼉꼊꼋꼌꼎�꼑꼒꼓꼔꼕꼖꼗꼘꼙꼚꼛꼜�꼞꼟꼠꼡꼢꼣������꼤꼥꼦꼧꼨꼩꼪꼫꼮꼯꼱꼳꼵꼶꼷꼸꼹꼺꼻꼾꽀꽄꽅꽆꽇꽊꽋꽌�꽎�꽑꽒꽓꽔꽕꽖꽗꽘꽙꽚꽛꽞꽟꽠꽡꽢꽣꽦꽧꽨꽩꽪꽫꽬꽭꽮꽯꽰꽱꽲꽳꽴꽵꽶꽷꽸꽺꽻꽼꽽꽾꽿�꾂꾃꾅꾆꾇꾉꾊꾋꾌�꾎�꾒꾓꾔꾖꾗꾘꾙꾚꾛�꾞꾟꾠꾡꾢꾣꾤꾥꾦꾧꾨꾩꾪꾫꾬꾭꾮꾯꾰꾱꾲꾳꾴꾵꾶꾷꾺꾻꾽꾾�\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[133] = \"�����������������������������������������������������������������꾿�꿂꿃꿄꿅꿆꿊꿌��꿑꿒꿓꿕꿖꿗꿘꿙꿚꿛�꿞꿟꿠꿡������꿢꿣꿤꿥꿦꿧꿪꿫꿬꿭꿮꿯꿲꿳꿵꿶꿷꿹꿺꿻꿼꿽꿾꿿뀂뀃������뀅뀆뀇뀈뀉뀊뀋�뀎�뀑뀒뀓뀕뀖뀗뀘뀙뀚뀛뀞뀟뀠뀡뀢뀣뀤뀥뀦뀧뀩뀪뀫뀬뀭뀮뀯뀰뀱뀲뀳뀴뀵뀶뀷뀸뀹뀺뀻뀼뀽뀾뀿���������������������������������������������������낂낃낅낆낇낈낉낊낋낎�낒낓낔낕낖낗낛�낞낣낤�\".split(\"\");\n\t\tfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\n\t\tD[134] = \"�����������������������������������������������������������������낥낦낧낪낰낲낶낷낹낺낻낽낾낿냀�냂냃냆냊냋냌�냎�냒������냓냕냖냗냙냚냛냜�냞냟냡냢냣냤냦냧냨냩냪냫냬냭냮냯냰������냱냲냳냴냵냶냷냸냹냺냻냼냽냾냿넀�넂넃넄넅넆넇넊�넎�넑넔넕넖넗넚넞넟넠넡넢넦넧넩넪넫넭넮넯넰넱넲넳넶넺넻넼넽넾넿녂녃녅녆녇녉녊녋녌�녎�녒녓녖녗녙녚녛�녞녟녡녢녣녤녥녦녧녨녩녪녫녬녭녮녯녰녱녲녳녴녵녶녷녺녻녽녾녿�놃놄놅놆놇놊놌놎��놑놕놖놗놙놚놛��\".split(\"\");\n\t\tfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\n\t\tD[135] = \"�����������������������������������������������������������������놞놟놠놡놢놣놤놥놦놧놩놪놫놬놭놮놯놰놱놲놳놴놵놶놷놸������놹놺놻놼놽놾놿뇀�뇂뇃뇄뇅뇆뇇뇈뇉뇊뇋�뇎�뇑뇒뇓뇕������뇖뇗뇘뇙뇚뇛뇞뇠뇡뇢뇣뇤뇥뇦뇧뇪뇫뇭뇮뇯뇱뇲뇳뇴뇵뇶뇷뇸뇺뇼뇾뇿눀�눂눃눆눇눉눊�눎��눑눒눓눖눘눚눛눜�눞눟눡눢눣눤눥눦눧눨눩눪눫눬눭눮눯눰눱눲눳눵눶눷눸눹눺눻눽눾눿뉀�뉂뉃뉄뉅뉆뉇뉈뉉뉊뉋뉌�뉎��뉑뉒뉓뉔뉕뉖뉗뉙뉚뉛�뉞뉟뉡뉢뉣뉤뉥뉦뉧뉪뉫뉬뉭뉮�\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"�����������������������������������������������������������������뉯뉰뉱뉲뉳뉶뉷뉸뉹뉺뉻뉽뉾뉿늀�늂늃늆늇늈늊늋늌�늎�������늒늓늕늖늗늛늜�늞늟늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷������늸늹늺늻늼늽늾늿닀�닂닃닄닅닆닇닊닋�닎�닑닓닔닕닖닗닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉댊댋댌�댎�댒댖댗댘댙댚댛�댞댟댠댡댢댣댤댥댦댧댨댩댪댫댬댭댮댯댰댱댲댳댴댵댶댷댸댹댺댻댼댽댾댿�����������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"�����������������������������������������������������������������������������������뎂뎆뎇뎈뎉뎊뎋�������뎎�뎑뎒뎓뎕뎖뎗뎘뎙뎚뎛뎜�뎞뎟뎢뎣뎤뎥뎦뎧뎩뎪뎫뎭������뎮뎯뎰뎱뎲뎳뎴뎵뎶뎷뎸뎹뎺뎻뎼뎽뎾뎿�������������������������������������������������������������������������������������������������������둀�둂둃둄�\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"�����������������������������������������������������������������둅둆둇둈둉둊둋둌�둎�둒둓둕둖둗둙둚둛둜�둞둟둢둤둦������둧둨둩둪둫둭둮둯둰둱둲둳둴둵둶둷둸둹둺둻둼둽둾둿�뒂������뒃뒄뒅뒆뒇뒉뒊뒋뒌�뒎��뒑뒒뒓뒔뒕뒖뒗뒘뒙뒚뒛뒜뒞뒟뒠뒡뒢뒣뒥뒦뒧뒩뒪뒫뒭뒮뒯뒰뒱뒲뒳뒴뒶뒸뒺뒻뒼뒽뒾뒿�듂듃듅듆듇듉듊듋듌�듎�듑듒듓듔듖듗듘듙듚듛듞듟듡듢듥듧듨듩듪듫듮듰듲듳듴듵듶듷듹듺듻듼듽듾듿딀�딂딃딄딅딆딇딈딉딊딋딌�딎��딑딒딓딖딗딙딚��\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"�����������������������������������������������������������������딞딟딠딡딢딣딦딫딬딭딮딯딲딳딵딶딷딹딺딻딼딽딾딿땂땆������땇땈땉땊땎�땑땒땓땕땖땗땘땙땚땛땞땢땣땤땥땦땧땨땩땪������땫땬땭땮땯땰땱땲땳땴땵땶땷땸땹땺땻땼땽땾땿떀�떂떃떄떅떆떇떈떉떊떋떌�떎��떑떒떓떔떕떖떗떘떙떚떛떜�떞떟떢떣떥떦떧떩떬떭떮떯떲떶떷떸떹떺떾떿�뗂뗃뗅뗆뗇뗈뗉뗊뗋뗎뗒뗓뗔뗕뗖뗗뗙뗚뗛뗜�뗞뗟뗠뗡뗢뗣뗤뗥뗦뗧뗨뗩뗪뗫뗭뗮뗯뗰뗱뗲뗳뗴뗵뗶뗷뗸뗹뗺뗻뗼뗽뗾뗿�\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"�����������������������������������������������������������������똀�똂똃똄똅똆똇똈똉똊똋똌�똎�똒똓똕똖똗똙똚똛똜�������똞똟똠똡똢똣똤똦똧똨똩똪똫똭똮똯똰똱똲똳똵똶똷똸똹똺������똻똼똽똾똿뙀�뙂뙃뙄뙅뙆뙇뙉뙊뙋뙌�뙎��뙑뙒뙓뙔뙕뙖뙗뙘뙙뙚뙛뙜�뙞뙟뙠뙡뙢뙣뙥뙦뙧뙩뙪뙫뙬뙭뙮뙯뙰뙱뙲뙳뙴뙵뙶뙷뙸뙹뙺뙻뙼뙽뙾뙿뚀�뚂뚃뚄뚅뚆뚇뚈뚉뚊뚋뚌�뚎��뚑뚒뚓뚔뚕뚖뚗뚘뚙뚚뚛뚞뚟뚡뚢뚣뚥뚦뚧뚨뚩뚪뚭뚮뚯뚰뚲뚳뚴뚵뚶뚷뚸뚹뚺뚻뚼뚽뚾뚿뛀�뛂�\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"�����������������������������������������������������������������뛃뛄뛅뛆뛇뛈뛉뛊뛋뛌�뛎��뛑뛒뛓뛕뛖뛗뛘뛙뛚뛛뛜�������뛞뛟뛠뛡뛢뛣뛤뛥뛦뛧뛨뛩뛪뛫뛬뛭뛮뛯뛱뛲뛳뛵뛶뛷뛹뛺������뛻뛼뛽뛾뛿뜂뜃뜄뜆뜇뜈뜉뜊뜋뜌�뜎��뜑뜒뜓뜔뜕뜖뜗뜘뜙뜚뜛뜜�뜞뜟뜠뜡뜢뜣뜤뜥뜦뜧뜪뜫뜭뜮뜱뜲뜳뜴뜵뜶뜷뜺뜼뜽뜾뜿���������������������������������������������������랂랃랅랆랇랈랉랊랋랎랓랔랕랚랛�랞�\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"�����������������������������������������������������������������랟랡랢랣랤랥랦랧랪랮랯랰랱랲랳랶랷랹랺랻랼랽랾랿럀�������럂럃럄럅럆럈럊럋럌�럎��럑럒럓럔럕럖럗럘럙럚럛럜�������럞럟럠럡럢럣럤럥럦럧럨럩럪럫럮럯럱럲럳럵럶럷럸럹럺럻럾렂렃렄렅렆렊렋�렎�렑렒렓렔렕렖렗렚렜렞렟렠렡렢렣렦렧렩렪렫렭렮렯렰렱렲렳렶렺렻렼렽렾렿�롂롃롅롆롇롈롉롊롋롌�롎��롒롔롕롖롗롘롙롚롛롞롟롡롢롣롥롦롧롨롩롪롫롮롰롲롳롴롵롶롷롹롺롻롽롾롿뢀�뢂뢃뢄�\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"�����������������������������������������������������������������뢅뢆뢇뢈뢉뢊뢋뢌뢎��뢑뢒뢓뢔뢕뢖뢗뢘뢙뢚뢛뢜�뢞뢟������뢠뢡뢢뢣뢤뢥뢦뢧뢩뢪뢫뢬뢭뢮뢯뢱뢲뢳뢵뢶뢷뢹뢺뢻뢼뢽������뢾뢿룂룄룆룇룈룉룊룋�룎�룑룒룓룕룖룗룘룙룚룛룜룞룠룢룣룤룥룦룧룪룫룭룮룯룱룲룳룴룵룶룷룺룼룾룿뤀�뤂뤃뤅뤆뤇뤈뤉뤊뤋뤌�뤎��뤑뤒뤓뤔뤕뤖뤗뤙뤚뤛뤜�뤞뤟뤡뤢뤣뤤뤥뤦뤧뤨뤩뤪뤫뤬뤭뤮뤯뤰뤱뤲뤳뤴뤵뤶뤷뤸뤹뤺뤻뤾뤿�륂륃륅륆륇륈륉륊륋�륎�륒륓륔륕륖륗�\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"�����������������������������������������������������������������륚륛�륞륟륡륢륣륤륥륦륧륪륬륮륯륰륱륲륳륶륷륹륺륻륽������륾륿릀�릂릃릆릈릋릌��릑릒릓릔릕릖릗릘릙릚릛릜�릞������릟릠릡릢릣릤릥릦릧릨릩릪릫릮릯릱릲릳릵릶릷릸릹릺릻릾맀맂맃맄맅맆맇맊맋�맓맔맕맖맗맚맜맟맠맢맦맧맩맪맫맭맮맯맰맱맲맳맶맻맼맽맾맿먂먃먄먅먆먇먉먊먋먌�먎��먑먒먓먔먖먗먘먙먚먛먜�먞먟먠먡먢먣먤먥먦먧먨먩먪먫먬먭먮먯먰먱먲먳먴먵먶먷먺먻먽먾먿�멃멄멅멆�\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"�����������������������������������������������������������������멇멊멌��멑멒멖멗멙멚멛�멞멟멠멡멢멣멦멪멫멬멭멮멯������멲멳멵멶멷멹멺멻멼멽멾멿몀�몂몆몈몉몊몋�몎��몑몒������몓몔몕몖몗몘몙몚몛몜�몞몟몠몡몢몣몤몥몦몧몪몭몮몯몱몳몴몵몶몷몺몼몾몿뫀�뫂뫃뫅뫆뫇뫉뫊뫋뫌�뫎��뫑뫒뫓뫔뫕뫖뫗뫚뫛뫜�뫞뫟뫠뫡뫢뫣뫤뫥뫦뫧뫨뫩뫪뫫뫬뫭뫮뫯뫰뫱뫲뫳뫴뫵뫶뫷뫸뫹뫺뫻뫽뫾뫿�묂묃묅묆묇묈묉묊묋묌묎�묒묓묔묕묖묗묙묚묛�묞묟묡묢묣묤묥묦묧�\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"�����������������������������������������������������������������묨묪묬묭묮묯묰묱묲묳묷묹묺묿뭀�뭂뭃뭆뭈뭊뭋뭌뭎뭑뭒������뭓뭕뭖뭗뭙뭚뭛뭜�뭞뭟뭠뭢뭤뭥뭦뭧뭨뭩뭪뭫뭭뭮뭯뭰뭱������뭲뭳뭴뭵뭶뭷뭸뭹뭺뭻뭼뭽뭾뭿뮀�뮂뮃뮄뮅뮆뮇뮉뮊뮋�뮎�뮑뮒뮓뮔뮕뮖뮗뮘뮙뮚뮛뮜�뮞뮟뮠뮡뮢뮣뮥뮦뮧뮩뮪뮫뮭뮮뮯뮰뮱뮲뮳뮵뮶뮸뮹뮺뮻뮼뮽뮾뮿�믂믃믅믆믇믉믊믋믌�믎�믑믒믔믕믖믗믘믙믚믛믜�믞믟믠믡믢믣믤믥믦믧믨믩믪믫믬믭믮믯믰믱믲믳믴믵믶믷믺믻믽믾��\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"�����������������������������������������������������������������밃밄밅밆밇밊밎�밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵������밶밷밹밺밻밼밽밾밿뱂뱆뱇뱈뱊뱋뱎�뱑뱒뱓뱔뱕뱖뱗뱘뱙������뱚뱛뱜뱞뱟뱠뱡뱢뱣뱤뱥뱦뱧뱨뱩뱪뱫뱬뱭뱮뱯뱰뱱뱲뱳뱴뱵뱶뱷뱸뱹뱺뱻뱼뱽뱾뱿벀�벂벃벆벇벉벊���벑벒벓벖벘벛벜�벞벟벢벣벥벦벩벪벫벬벭벮벯벲벶벷벸벹벺벻벾벿�볂볃볅볆볇볈볉볊볋볌볎볒볓볔볖볗볙볚볛�볞볟볠볡볢볣볤볥볦볧볨볩볪볫볬볭볮볯볰볱볲볳볷볹볺볻볽�\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"�����������������������������������������������������������������볾볿봀�봂봃봆봈봊봋봌�봎�봑봒봓봕봖봗봘봙봚봛봜�������봞봟봠봡봢봣봥봦봧봨봩봪봫봭봮봯봰봱봲봳봴봵봶봷봸봹������봺봻봼봽봾봿�뵂뵃뵄뵅뵆뵇뵊뵋�뵎�뵑뵒뵓뵔뵕뵖뵗뵚뵛뵜�뵞뵟뵠뵡뵢뵣뵥뵦뵧뵩뵪뵫뵬뵭뵮뵯뵰뵱뵲뵳뵴뵵뵶뵷뵸뵹뵺뵻뵼뵽뵾뵿붂붃붅붆붋붌�붎�붒붔붖붗붘붛�붞붟붠붡붢붣붥붦붧붨붩붪붫붬붭붮붯붱붲붳붴붵붶붷붹붺붻붼붽붾붿뷀�뷂뷃뷄뷅뷆뷇뷈뷉뷊뷋뷌�뷎��뷑�\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"�����������������������������������������������������������������뷒뷓뷖뷗뷙뷚뷛�뷞뷟뷠뷡뷢뷣뷤뷥뷦뷧뷨뷪뷫뷬뷭뷮뷯뷱������뷲뷳뷵뷶뷷뷹뷺뷻뷼뷽뷾뷿�븂븄븆븇븈븉븊븋븎�븑븒븓������븕븖븗븘븙븚븛븞븠븡븢븣븤븥븦븧븨븩븪븫븬븭븮븯븰븱븲븳븴븵븶븷븸븹븺븻븼븽븾븿빀�빂빃빆빇빉빊빋���빑빒빓빖빘빜�빞빟빢빣빥빦빧빩빫빬빭빮빯빲빶빷빸빹빺빾빿�뺂뺃뺅뺆뺇뺈뺉뺊뺋뺎뺒뺓뺔뺕뺖뺗뺚뺛뺜�뺞뺟뺠뺡뺢뺣뺤뺥뺦뺧뺩뺪뺫뺬뺭뺮뺯뺰뺱뺲뺳뺴뺵뺶뺷�\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"�����������������������������������������������������������������뺸뺹뺺뺻뺼뺽뺾뺿뻀�뻂뻃뻄뻅뻆뻇뻈뻉뻊뻋뻌�뻎�뻒뻓������뻕뻖뻙뻚뻛뻜�뻞뻟뻡뻢뻦뻧뻨뻩뻪뻫뻭뻮뻯뻰뻱뻲뻳뻴뻵������뻶뻷뻸뻹뻺뻻뻼뻽뻾뻿뼀뼂뼃뼄뼅뼆뼇뼊뼋뼌�뼎��뼑뼒뼓뼔뼕뼖뼗뼚뼞뼟뼠뼡뼢뼣뼤뼥뼦뼧뼨뼩뼪뼫뼬뼭뼮뼯뼰뼱뼲뼳뼴뼵뼶뼷뼸뼹뼺뼻뼼뼽뼾뼿뽂뽃뽅뽆뽇뽉뽊뽋뽌�뽎�뽒뽓뽔뽖뽗뽘뽙뽚뽛뽜�뽞뽟뽠뽡뽢뽣뽤뽥뽦뽧뽨뽩뽪뽫뽬뽭뽮뽯뽰뽱뽲뽳뽴뽵뽶뽷뽸뽹뽺뽻뽼뽽뽾뽿뾀�뾂�\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"�����������������������������������������������������������������뾃뾄뾅뾆뾇뾈뾉뾊뾋뾌�뾎��뾑뾒뾓뾕뾖뾗뾘뾙뾚뾛뾜�������뾞뾟뾠뾡뾢뾣뾤뾥뾦뾧뾨뾩뾪뾫뾬뾭뾮뾯뾱뾲뾳뾴뾵뾶뾷뾸������뾹뾺뾻뾼뾽뾾뾿뿀�뿂뿃뿄뿆뿇뿈뿉뿊뿋뿎�뿑뿒뿓뿕뿖뿗뿘뿙뿚뿛�뿞뿠뿢뿣뿤뿥뿦뿧뿨뿩뿪뿫뿬뿭뿮뿯뿰뿱뿲뿳뿴뿵뿶뿷뿸뿹뿺뿻뿼뿽뿾뿿쀀�쀂쀃쀄쀅쀆쀇쀈쀉쀊쀋쀌�쀎��쀑쀒쀓쀔쀕쀖쀗쀘쀙쀚쀛쀜�쀞쀟쀠쀡쀢쀣쀤쀥쀦쀧쀨쀩쀪쀫쀬쀭쀮쀯쀰쀱쀲쀳쀴쀵쀶쀷쀸쀹쀺쀻쀽쀾쀿�\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"���������������������������������������������������������������������������������������������������������������������������������������삀�삂삃삄삅삆삇삈삉삊삋삌�삎�삒삓삕삖삗삙삚삛삜�삞삟삢삤삦삧삨삩삪삫삮삱삲삷삸삹삺삻삾샂샃샄샆샇샊샋�샎�샑샒샓샔샕샖샗샚샞샟샠샡샢샣샦샧샩샪샫샭샮샯샰샱샲샳샶샸샺샻샼샽샾샿�섂섃섅섆섇섉섊섋섌�섎�섑섒섓섔섖섗섘섙섚섛섡섢섥섨섩섪섫섮�\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"�����������������������������������������������������������������섲섳섴섵섷섺섻섽섾섿�셂셃셄셅셆셇셊셎��셑셒셓셖셗������셙셚셛�셞셟셠셡셢셣셦셪셫셬셭셮셯셱셲셳셵셶셷셹셺셻������셼셽셾셿솀�솂솃솄솆솇솈솉솊솋�솑솒솓솕솗솘솙솚솛솞솠솢솣솤솦솧솪솫솭솮솯솱솲솳솴솵솶솷솸솹솺솻솼솾솿쇀�쇂쇃쇅쇆쇇쇉쇊쇋�쇎��쇑쇒쇓쇕쇖쇙쇚쇛쇜�쇞쇟쇡쇢쇣쇥쇦쇧쇩쇪쇫쇬쇭쇮쇯쇲쇴쇵쇶쇷쇸쇹쇺쇻쇾쇿�숂숃숅숆숇숈숉숊숋숎�숒숓숔숕숖숗숚숛�숞숡숢숣�\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"�����������������������������������������������������������������숤숥숦숧숪숬숮숰숳숵숶숷숸숹숺숻숼숽숾숿쉀�쉂쉃쉄쉅������쉆쉇쉉쉊쉋쉌�쉎�쉒쉓쉕쉖쉗쉙쉚쉛쉜�쉞쉟쉡쉢쉣쉤쉦������쉧쉨쉩쉪쉫쉮쉯쉱쉲쉳쉵쉶쉷쉸쉹쉺쉻쉾슀슂슃슄슅슆슇슊슋슌�슎�슑슒슓슔슕슖슗슙슚슜슞슟슠슡슢슣슦슧슩슪슫슮슯슰슱슲슳슶슸슺슻슼슽슾슿싀�싂싃싄싅싆싇싈싉싊싋싌�싎��싑싒싓싔싕싖싗싘싙싚싛싞싟싡싢싥싦싧싨싩싪싮싰싲싳싴싵싷싺싽싾싿�쌂쌃쌄쌅쌆쌇쌊쌋쌎��\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"������������������������������������������������������������������쌑쌒쌖쌗쌙쌚쌛�쌞쌟쌠쌡쌢쌣쌦쌧쌪쌫쌬쌭쌮쌯쌰쌱쌲������쌳쌴쌵쌶쌷쌸쌹쌺쌻쌼쌽쌾쌿������������������������������������������������������������쎀�쎂쎃쎅쎆쎇쎉쎊쎋�쎎��쎑쎒쎓쎔쎕쎖쎗쎘쎙쎚쎛쎜�쎞쎟쎠쎡쎢쎣쎤쎥쎦쎧쎨쎩쎪쎫쎬쎭쎮쎯쎰쎱쎲쎳쎴쎵쎶쎷쎸쎹쎺쎻쎼쎽쎾쎿�������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������쑀�쑂쑃쑄쑅쑆쑇쑉쑊쑋쑌�쑎��쑑쑒쑓쑔쑕쑖쑗쑘쑙쑚쑛쑜�쑞쑟쑠쑡쑢쑣쑦쑧쑩쑪쑫쑭쑮쑯쑰쑱쑲쑳쑶쑷쑸쑺쑻쑼쑽쑾쑿�쒂쒃쒄쒅쒆쒇쒈쒉쒊쒋쒌�쒎��쒑쒒쒓쒕쒖쒗쒘쒙쒚쒛�쒞쒟쒠쒡쒢쒣쒤쒥쒦쒧쒨쒩�\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"�����������������������������������������������������������������쒪쒫쒬쒭쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷쒹쒺쒻쒽쒾쒿쓀�쓂쓃쓄쓅������쓆쓇쓈쓉쓊쓋쓌�쓎��쓑쓒쓓쓔쓕쓖쓗쓘쓙쓚쓛쓜�쓞쓟������쓠쓡쓢쓣쓤쓥쓦쓧쓨쓪쓫쓬쓭쓮쓯쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂씃씄씅씆씇씈씉씊씋�씎�씑씒씓씕씖씗씘씙씚씛�씞씟씠씡씢씣씤씥씦씧씪씫씭씮씯씱씲씳씴씵씶씷씺씼씾씿앀�앂앃앆앇앋��앑앒앖앚앛앜앟앢앣앥앦앧앩앪앫앬앭앮앯앲앶앷앸앹앺앻앾앿�얂얃얅얆얈얉얊얋얎�얒얓얔�\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"�����������������������������������������������������������������얖얙얚얛�얞얟얡얢얣얤얥얦얧얨얪얫얬얭얮얯얰얱얲얳얶������얷얺얿엀�엂엃엋��엒엓엕엖엗엙엚엛엜�엞엟엢엤엦엧������엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋�옎�옑옒옓옔옕옖옗옚�옞옟옠옡옢옣옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉왊왋왌�왎�왒왖왗왘왙왚왛왞왟왡왢왣왤왥왦왧왨왩왪왫왭왮왰왲왳왴왵왶왷왺왻왽왾왿�욂욃욄욅욆욇욊욌욎��욑욒욓욖욗욙욚욛�욞욟욠욡욢욣욦�\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"�����������������������������������������������������������������욨욪욫욬욭욮욯욲욳욵욶욷욻욼욽욾욿웂웄웆웇웈웉웊웋웎�������웑웒웓웕웖웗웘웙웚웛웞웟웢웣웤웥웦웧웪웫웭웮웯웱웲������웳웴웵웶웷웺웻웼웾웿윀�윂윃윆윇윉윊윋�윎��윑윒윓윖윘윚윛윜�윞윟윢윣윥윦윧윩윪윫윬윭윮윯윲윴윶윸윹윺윻윾윿����������������������������������������잀�잂잆잋잌��잒잓잕잙잛잜�잞잟잢잧잨잩잪잫잮잯잱잲잳잵잶잷�\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"�����������������������������������������������������������������잸잹잺잻잾쟂쟃쟄쟅쟆쟇쟊쟋��쟑쟒쟓쟔쟕쟖쟗쟙쟚쟛쟜������쟞쟟쟠쟡쟢쟣쟥쟦쟧쟩쟪쟫쟭쟮쟯쟰쟱쟲쟳쟴쟵쟶쟷쟸쟹쟺������쟻쟼쟽쟾쟿젂젃젅젆젇젉젋젌�젎�젒젔젗젘젙젚젛젞젟젡젢젣젥젦젧젨젩젪젫젮젰젲젳젴젵젶젷젹젺젻젽젾젿�졂졃졄졅졆졇졊졋졎��졑졒졓졕졖졗졘졙졚졛졜�졞졟졠졡졢졣졤졥졦졧졨졩졪졫졬졭졮졯졲졳졵졶졷졹졻졼졽졾졿좂좄좈좉좊좎��좑좒좓좕좖좗좘좙좚좛좜좞좠좢좣좤�\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"�����������������������������������������������������������������좥좦좧좩좪좫좬좭좮좯좰좱좲좳좴좵좶좷좸좹좺좻좾좿죀�������죂죃죅죆죇죉죊죋�죎��죑죒죓죖죘죚죛죜�죞죟죢죣죥������죦죧죨죩죪죫죬죭죮죯죰죱죲죳죴죶죷죸죹죺죻죾죿�줂줃줇줈줉줊줋줎 �。·‥…¨〃­―∥\∼‘’“�〔〕〈〉《》「�『��】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○�◎◇◆□■△▲▽▼→�↑↓↔〓≪≫√∽�∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"������������������������������������������������������������������줒줓줔줕줖줗줙줚줛줜�줞줟줠줡줢줣줤줥줦줧줨줩줪줫������줭줮줯줰줱줲줳줵줶줷줸줹줺줻줼줽줾줿쥀�쥂쥃쥄쥅쥆쥇������쥈쥉쥊쥋쥌�쥎�쥒쥓쥕쥖쥗쥙쥚쥛쥜�쥞쥟쥢쥤쥥쥦쥧쥨쥩쥪쥫쥭쥮쥯⇒⇔∀∃´~ˇ˘�˚˙¸˛¡¿�∮∑�¤℉‰�◀▷▶♤♠♡♥♧♣⊙◈▣�◑▒▤▥▨▧▦▩♨�☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№�™��℡€®������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"�����������������������������������������������������������������쥱쥲쥳쥵쥶쥷쥸쥹쥺쥻쥽쥾쥿즀�즂즃즄즅즆즇즊즋�즎�������즑즒즓즔즕즖즗즚즜즞즟즠즡즢즣즤즥즦즧즨즩즪즫즬즭즮������즯즰즱즲즳즴즵즶즷즸즹즺즻즼즽즾즿짂짃짅짆짉짋짌�짎�짒짔짗짘짛�"#$%&'()*+,�.��123456789:;<�>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`�bcdefghijkl�n��qrstuvwxyz{|� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������짞짟짡짣짥짦짨짩짪짫짮짲짳짴짵짶짷짺짻짽짾짿�쨂쨃쨄������쨅쨆쨇쨊쨎��쨑쨒쨓쨕쨖쨗쨙쨚쨛쨜�쨞쨟쨠쨡쨢쨣쨤쨥������쨦쨧쨨쨪쨫쨬쨭쨮쨯쨰쨱쨲쨳쨴쨵쨶쨷쨸쨹쨺쨻쨼쨽쨾쨿쩀�쩂쩃쩄쩅쩆ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀ�ㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌ�ㅎ��ㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜ�ㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀ�ㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌ�ㆎ�\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"�����������������������������������������������������������������쩇쩈쩉쩊쩋쩎�쩑쩒쩓쩕쩖쩗쩘쩙쩚쩛쩞쩢쩣쩤쩥쩦쩧쩩쩪������쩫쩬쩭쩮쩯쩰쩱쩲쩳쩴쩵쩶쩷쩸쩹쩺쩻쩼쩾쩿쪀�쪂쪃쪅쪆������쪇쪈쪉쪊쪋쪌�쪎��쪑쪒쪓쪔쪕쪖쪗쪙쪚쪛쪜�쪞쪟쪠쪡쪢쪣쪤쪥쪦쪧ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπ�στυφχψω�������\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������쪨쪩쪪쪫쪬쪭쪮쪯쪰쪱쪲쪳쪴쪵쪶쪷쪸쪹쪺쪻쪾쪿�쫂쫃쫅������쫆쫇쫈쫉쫊쫋쫎�쫒쫔쫕쫖쫗쫚쫛쫜�쫞쫟쫡쫢쫣쫤쫥쫦쫧������쫨쫩쫪쫫쫭쫮쫯쫰쫱쫲쫳쫵쫶쫷쫸쫹쫺쫻쫼쫽쫾쫿쬀�쬂쬃쬄쬅쬆쬇쬉쬊─│┌�┘└├┬┤┴┼�┃�┓┛┗┣┳┫┻╋┠┯┨┷┿�┰┥┸╂┒┑┚┙┖┕┎�┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀�╃╄╅╆╇╈╉╊���������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������쬋쬌�쬎�쬑쬒쬓쬕쬖쬗쬙쬚쬛쬜�쬞쬟쬢쬣쬤쬥쬦쬧쬨쬩������쬪쬫쬬쬭쬮쬯쬰쬱쬲쬳쬴쬵쬶쬷쬸쬹쬺쬻쬼쬽쬾쬿쭀쭂쭃쭄������쭅쭆쭇쭊쭋�쭎�쭑쭒쭓쭔쭕쭖쭗쭚쭛쭜쭞쭟쭠쭡쭢쭣쭥쭦쭧쭨쭩쭪쭫쭬㎕㎖㎗ℓ㎘�㎣㎤㎥㎦㎙㎚㎛㎜�㎞㎟㎠㎡㎢��㎎��㎈㎉�㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀�㎂㎃㎄㎺㎻㎼㎽㎾㎿�㎑㎒㎓㎔Ω��㎊㎋㎌��㎭㎮㎯�㎩㎪㎫㎬�����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"�����������������������������������������������������������������쭭쭮쭯쭰쭱쭲쭳쭴쭵쭶쭷쭺쭻쭼쭽쭾쭿쮀�쮂쮃쮄쮅쮆쮇쮈������쮉쮊쮋쮌�쮎��쮑쮒쮓쮔쮕쮖쮗쮘쮙쮚쮛�쮞쮟쮠쮡쮢쮣������쮤쮥쮦쮧쮨쮩쮪쮫쮬쮭쮮쮯쮰쮱쮲쮳쮴쮵쮶쮷쮹쮺쮻쮼쮽쮾쮿쯀�쯂쯃쯄Æ�ªĦ�IJ�Ŀ�ØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻�ⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜ�ⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜�⅞�\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"�����������������������������������������������������������������쯅쯆쯇쯈쯉쯊쯋쯌�쯎��쯑쯒쯓쯕쯖쯗쯘쯙쯚쯛쯜�쯞쯟������쯠쯡쯢쯣쯥쯦쯨쯪쯫쯬쯭쯮쯯쯰쯱쯲쯳쯴쯵쯶쯷쯸쯹쯺쯻쯼������쯽쯾쯿찀�찂찃찄찅찆찇찈찉찊찋찎�찑찒찓찕찖찗찘찙찚찛찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀�㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌�㈎��㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜�⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀�⒂¹²³���₂₃₄�\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"�����������������������������������������������������������������찥찦찪찫찭찯찱찲찳찴찵찶찷찺찿챀�챂챃챆챇챉챊챋�챎��������챑챒챓챖챚챛챜�챞챟챡챢챣챥챧챩챪챫챬챭챮챯챱챲������챳챴챶챷챸챹챺챻챼챽챾챿첀�첂첃첄첅첆첇첈첉첊첋첌�첎��첑첒첓���������������������������������������������������������������む�もゃやゅゆょよらりるれ�ゎ��ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"�����������������������������������������������������������������첔첕첖첗첚첛�첞첟첡첢첣첤첥첦첧첪첮첯첰첱첲첳첶첷첹������첺첻첽첾첿쳀�쳂쳃쳆쳈쳊쳋쳌�쳎�쳑쳒쳓쳕쳖쳗쳘쳙쳚������쳛쳜�쳞쳟쳠쳡쳢쳣쳥쳦쳧쳨쳩쳪쳫쳭쳮쳯쳱쳲쳳쳴쳵쳶쳷쳸쳹쳺쳻쳼쳽ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダ�ヂッツヅテデトドナニヌ�ノ��パヒビピフブプヘベペホボ�マミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"�����������������������������������������������������������������쳾쳿촀촂촃촄촅촆촇촊촋�촎�촑촒촓촔촕촖촗촚촜촞촟촠������촡촢촣촥촦촧촩촪촫촭촮촯촰촱촲촳촴촵촶촷촸촺촻촼촽촾������촿쵀�쵂쵃쵄쵅쵆쵇쵈쵉쵊쵋쵌�쵎��쵑쵒쵓쵔쵕쵖쵗쵘쵙쵚쵛�쵞쵟�БВГДЕ�ЖЗИЙКЛМ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопр�туфхцчшщъыь�ю���������������\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"�����������������������������������������������������������������쵡쵢쵣쵥쵦쵧쵨쵩쵪쵫쵮쵰쵲쵳쵴쵵쵶쵷쵹쵺쵻쵼쵽쵾쵿춀�������춂춃춄춅춆춇춉춊춋춌�춎��춑춒춓춖춗춙춚춛�춞춟������춠춡춢춣춦춨춪춫춬춭춮춯춱춲춳춴춵춶춷춸춹춺춻춼춽춾춿췀�췂췃췅�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"�����������������������������������������������������������������췆췇췈췉췊췋�췎�췑췒췓췔췕췖췗췘췙췚췛췜�췞췟췠췡������췢췣췤췥췦췧췩췪췫췭췮췯췱췲췳췴췵췶췷췺췼췾췿츀�츂������츃츅츆츇츉츊츋�츎��츑츒츓츕츖츗츘츚츛츜�츞츟츢츣츥츦츧츩츪츫�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"�����������������������������������������������������������������츬츭츮츯츲츴츶츷츸츹츺츻츼츽츾츿칀�칂칃칄칅칆칇칈칉������칊칋칌�칎��칑칒칓칔칕칖칗칚칛�칞칢칣칤칥칦칧칪칬������칮칯칰칱칲칳칶칷칹칺칻칽칾칿캀�캂캃캆캈캊캋캌�캎�캒캓캕캖캗캙�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"�����������������������������������������������������������������캚캛캜�캞캟캢캦캧캨캩캪캫캮캯캰캱캲캳캴캵캶캷캸캹캺������캻캼캽캾캿컀컂컃컄컅컆컇컈컉컊컋컌�컎��컑컒컓컔컕������컖컗컘컙컚컛컜�컞컟컠컡컢컣컦컧컩컪컭컮컯컰컱컲컳컶컺컻컼컽컾컿가�간갇갈갉갊�갑값갓갔강갖갗같갚갛개�갠갤갬갭갯갰갱갸갹갼걀걋�걔걘걜거걱건걷걸걺검�것겄겅겆겉겊겋게�겔겜�겟겠겡겨격겪견겯결겸겹겻겼경�계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"�����������������������������������������������������������������켂켃켅켆켇켉켊켋켌�켎�켒켔켖켗켘켙켚켛�켞켟켡켢켣������켥켦켧켨켩켪켫켮켲켳켴켵켶켷켹켺켻켼켽켾켿콀�콂콃콄������콅콆콇콈콉콊콋콌�콎��콑콒콓콖콗콙콚콛�콞콟콠콡콢콣콦콨콪콫콬괌��광괘괜괠괩괬괭괴괵괸괼굄굅굇굉�굔굘굡굣구국군굳굴굵굶굻굼굽굿�궂궈궉권�궜�궤궷귀�귄귈�귑귓규균귤그극근귿글�금급긋�긔기긱긴긷길긺김�깃깅깆깊까�깎�깔깖깜�깟깠깡깥깨깩깬깰깸�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"�����������������������������������������������������������������콭콮콯콲콳콵콶콷콹콺콻콼콽콾콿�쾂쾃쾄쾆쾇쾈쾉쾊쾋�������쾎��쾑쾒쾓쾔쾕쾖쾗쾘쾙쾚쾛쾜�쾞쾟쾠쾢쾣쾤쾥쾦쾧쾩������쾪쾫쾬쾭쾮쾯쾱쾲쾳쾴쾵쾶쾷쾸쾹쾺쾻쾼쾽쾾쾿쿀�쿂쿃쿅쿆쿇쿈쿉쿊쿋깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌���껑께껙껜껨껫껭껴껸껼꼇꼈��꼬꼭꼰꼲꼴꼼꼽꼿�꽂꽃꽈꽉�꽜�꽤꽥꽹꾀꾄꾈�꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋�꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀�뀄뀌�뀔뀜�뀨������������\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"�����������������������������������������������������������������쿌�쿎��쿑쿒쿓쿔쿕쿖쿗쿘쿙쿚쿛쿜�쿞쿟쿢쿣쿥쿦쿧쿩������쿪쿫쿬쿭쿮쿯쿲쿴쿶쿷쿸쿹쿺쿻쿽쿾쿿�퀂퀃퀅퀆퀇퀈퀉퀊������퀋퀌�퀎��퀒퀓퀔퀕퀖퀗퀙퀚퀛퀜�퀞퀟퀠퀡퀢퀣퀤퀥퀦퀧퀨퀩퀪퀫퀬���낀낄낌��낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉�냑냔냘냠냥너넉넋넌�넒넓넘넙넛넜�넣네넥넨넬넴넵넷넸넹녀�년녈�녑녔녕녘녜녠노녹논놀놂놈놉놋�높놓놔놘놜놨뇌�뇔뇜��\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"�����������������������������������������������������������������퀮퀯퀰퀱퀲퀳퀶퀷퀹퀺퀻퀽퀾퀿��������������������������������������������������������������킀킂킃킄킅킆킇킈킉킊킋킌�킎��킑킒킓킔뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉�늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌�닒님닙닛�닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대�댄댈�댑댓댔댕댜�����������\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�����������������������������������������������������������������킕킖킗킘킙킚킛킜�킞킟킠킡킢킣킦킧킩킪킫킭킮킯킰킱킲������킳킶킸킺킻킼킽킾킿탂탃탅탆탇탊탋탌�탎�탒탖탗탘탙탚������탛탞탟탡탢탣탥탦탧탨탩탪탫탮탲탳탴탵탶탷탹탺탻탼탽탾탿턀�턂턃턄��������뎀�뎃뎄뎅뎌�뎔뎠뎡뎨뎬��������������������������둑둔둘둠둡둣둥둬뒀뒈�뒤뒨뒬뒵뒷뒹듀듄듈�듕드�든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"�����������������������������������������������������������������턅턆턇턈턉턊턋턌턎��턑턒턓턔턕턖턗턘턙턚턛턜�턞턟������턠턡턢턣턤턥턦턧턨턩턪턫턬턭턮턯턲턳턵턶턷턹턻턼턽턾������턿텂텆텇텈텉텊텋텎�텑텒텓텕텖텗텘텙텚텛텞텠텢텣텤텥텦텧텩텪텫텭땀�땃땄땅땋때��땔땜�땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌���뗑뗘뗬�똑똔똘똥똬똴뙈뙤뙨뚜�뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀�뜅뜨뜩뜬뜯뜰뜸뜹뜻��������������란랄람���랑랒랖랗�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"�����������������������������������������������������������������텮텯텰텱텲텳텴텵텶텷텸텹텺텻텽텾텿톀�톂톃톅톆톇톉톊������톋톌�톎��톑톒톓톔톕톖톗톘톙톚톛톜�톞톟톢톣톥톦톧������톩톪톫톬톭톮톯톲톴톶톷톸톹톻톽톾톿�퇂퇃퇄퇅퇆퇇퇈퇉퇊퇋퇌�퇎�래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀�렇레렉렌�렘렙렛�려력련렬렴렵렷렸령례롄롑롓로�론롤롬롭롯롱롸롼�뢨뢰뢴뢸룀�룃룅료�룔�룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌�륑류륙륜률륨륩�\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"������������������������������������������������������������������퇑퇒퇓퇔퇕퇖퇗퇙퇚퇛퇜�퇞퇟퇠퇡퇢퇣퇤퇥퇦퇧퇨퇩퇪������퇫퇬퇭퇮퇯퇰퇱퇲퇳퇵퇶퇷퇹퇺퇻퇼퇽퇾퇿툀�툂툃툄툅툆������툈툊툋툌�툎�툑툒툓툔툕툖툗툘툙툚툛툜�툞툟툠툡툢툣툤툥툦툧툨툩륫륭르륵른를름릅릇릉릊�릎리릭린릴림립릿�마막만많��맑맒맘맙맛�맞맡맣매맥맨맬맴맵맷맸맹맺먀�먈먕머먹먼멀멂멈멉멋�멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"�����������������������������������������������������������������툪툫툮툯툱툲툳툵툶툷툸툹툺툻툾퉀퉂퉃퉄퉅퉆퉇퉉퉊퉋퉌�������퉎��퉑퉒퉓퉔퉕퉖퉗퉘퉙퉚퉛�퉞퉟퉠퉡퉢퉣퉥퉦퉧퉨������퉩퉪퉫퉬퉭퉮퉯퉰퉱퉲퉳퉴퉵퉶퉷퉸퉹퉺퉻퉼퉽퉾퉿튂튃튅튆튇튉튊튋튌묀묄��묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉���뭔뭘뭡뭣뭬뮈뮌�뮤뮨뮬뮴뮷므믄믈�믓미믹민믿밀밂밈밉밋밌��밑바박밖밗반받발�밞밟밤밥밧방밭배백밴밸뱀�뱃뱄뱅뱉뱌���버벅번벋벌벎범법벗�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"������������������������������������������������������������������튎�튒튓튔튖튗튘튙튚튛�튞튟튡튢튣튥튦튧튨튩튪튫튭������튮튯튰튲튳튴튵튶튷튺튻튽튾�틃틄틅틆틇틊틌�틎��틑������틒틓틕틖틗틙틚틛�틞틟틠틡틢틣틦틧틨틩틪틫틬틭틮틯틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별���병볕볘볜보복볶본볼봄봅봇봉�봔봤봬뵀뵈뵉뵌�뵘뵙뵤뵨부�분붇불붉붊�붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브��블븜�븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"�����������������������������������������������������������������틻틼틽틾틿팂팄팆팇팈팉팊팋�팑팒팓팕팗팘팙팚팛팞팢팣������팤팦팧팪팫팭팮팯팱팲팳팴팵팶팷팺팾팿����������������������������������������������빨빪빰빱빳빴빵빻빼빽뺀뺄뺌���뺑뺘뺙뺨�뻑뻔뻗뻘뻠뻣뻤뻥뻬�뼈뼉뼘뼙뼛뼜�뽀�뽄뽈�뽑뽕뾔뾰뿅뿌��뿔뿜뿟뿡쀼�������삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀�샅새색샌�샘샙샛샜�샤�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"��������������������������������������������������������������������������������������펂펃펅펆펇������펈펉펊펋펎펒펓펔펕펖펗펚펛�펞펟펡펢펣펤펥펦펧펪펬펮������펯펰펱펲펳펵펶펷펹펺펻펽펾펿������������������샥샨샬샴샵샷샹섀섄섈�섕서�섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌�셔셕션셜셤셥셧셨셩셰셴셸솅소�솎�솔솖솜�솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌��숑수숙순숟술숨숩숫숭�\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������숯숱숲숴쉈�쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿�슈슉�슘슛�스슥슨슬슭슴습슷승시�신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌�쌓쌔쌕쌘쌜쌤쌥쌨쌩����������쎄쎈쎌�������������������\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"��������������������������������������������������������������������������푂푃푅푆푇푈푉푊푋푌�푎��푑푒푓������푔푕푖푗푘푙푚푛�푞푟푡푢푣푥푦푧푨푩푪푫푬푮푰푱푲������푳푴푵푶푷푺푻푽푾�풃풄풅풆풇풊풌풎��풑풒풓풕풖풗풘풙풚풛풜����쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀�씌�씔씜씨씩씬씰씸씹씻씽아악안앉않알�앎앓암압앗았앙�앞애액앤앨앰앱앳앴앵야약얀얄얇얌��양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"�����������������������������������������������������������������풞풟풠풡풢풣풤풥풦풧풨풪풫풬풭풮풯풰풱풲풳풴풵풶풷풸������풹풺풻풼풽풾풿퓀�퓂퓃퓄퓅퓆퓇퓈퓉퓊퓋�퓎�퓑퓒퓓퓕������퓖퓗퓘퓙퓚퓛�퓞퓠퓡퓢퓣퓤퓥퓦퓧퓩퓪퓫퓭퓮퓯퓱퓲퓳퓴퓵퓶퓷퓹퓺퓼�엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였�옅옆옇예옌�옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와�완왈�왑왓왔왕왜�왠왬왯왱외왹왼욀욈욉욋�요욕욘욜욤욥욧용우욱운울욹욺움�웃웅워��월웜�웠웡웨�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������퓾퓿픀�픂픃픅픆픇픉픊픋�픎��픑픒픓픖픘픙픚픛픜�������픞픟픠픡픢픣픤픥픦픧픨픩픪픫픬픭픮픯픰픱픲픳픴픵픶픷������픸픹픺픻픾픿�핂핃핅핆핇핈핉핊핋핎�핒핓핔핕핖핗핚핛�핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽������������������������잃임입잇있잉잊잎�작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀�쟈쟉쟌쟎�쟘�쟤쟨쟬저�전절젊�\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"�����������������������������������������������������������������핤핦핧핪핬핮핯핰핱핲핳핶핷핹핺핻핽핾핿햀�햂햃햆햊햋������햌�햎�햑햒햓햔햕햖햗햘햙햚햛햜�햞햟햠햡햢햣햤햦햧������햨햩햪햫햬햭햮햯햰햱햲햳햴햵햶햷햸햹햺햻햼햽햾햿헀�헂헃헄헅헆헇�접젓정젖제�젠젤젬젭젯젱져젼졀졈졉졌�졔조족존졸졺좀�좃종좆좇좋좌�좔�좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌��중줘줬줴�쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌�즘즙즛�지�진짇질짊�집짓�\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"�����������������������������������������������������������������헊헋�헎�헑헓헔헕헖헗헚헜헞헟헠헡헢헣헦헧헩헪헫헭헮������헯헰헱헲헳헶헸헺헻헼헽헾헿혂혃혅혆혇혉혊혋혌�혎�혒������혖혗혘혙혚혛�혞혟혡혢혣혥혦혧혨혩혪혫혬혮혯혰혱혲혳혴혵혶혷혺혻징짖짙짚짜�짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌�쨔쨘쨩쩌��쩔쩜�쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌��쫑쫓쫘쫙쫠쫬쫴쬈�쬔쬘쬠쬡�쭈쭉쭌�쭘쭙�쭤쭸쭹쮜쮸쯔쯤쯧쯩찌��찔찜�찡찢찧차착찬찮찰참찹찻�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"�����������������������������������������������������������������혽혾혿�홂홃홄홆홇홊홌홎��홒홓홖홗홙홚홛�홞홟홠홡������홢홣홤홥홦홨홪홫홬홭홮홯홲홳홵홶홷홸홹홺홻홼홽홾홿횀�������횂횄횆횇횈횉횊횋횎�횑횒횓횕횖횗횘횙횚횛횜횞횠횢횣횤횥횦횧횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉�쳔쳤쳬쳰�초촉촌�촘촙촛�촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌�취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"�����������������������������������������������������������������횫횭횮횯횱횲횳횴횵횶횷횸횺횼횽횾횿훀�훂훃훆훇훉훊훋�������훎��훒훓훕훖훘훚훛훜�훞훟훡훢훣훥훦훧훩훪훫훬훭������훮훯훱훲훳훴훶훷훸훹훺훻훾훿�휂휃휅휆휇휈휉휊휋휌�휎��휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉�캑캔캘캠캡캣캤캥캬캭�커컥컨컫컬컴컵컷컸컹케�켄켈�켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"�����������������������������������������������������������������휕휖휗휚휛�휞휟휡휢휣휤휥휦휧휪휬휮휯휰휱휲휳휶휷휹������휺휻휽휾휿��������������������������������������������������힀힂힃힄힅힆힇힊힋���������������키킥킨킬킴킵킷킹타�탄탈탉�탑탓탔탕태�탠탤탬탭탯탰탱탸�터턱턴털턺텀�텃텄텅테��텔템�텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉�투툭툰툴툼툽툿�퉈퉜�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"������������������������������������������������������������������힎�힑힒힓힔힕힖힗힚힜힞힟힠힡힢힣������������������������������������������������������������������������������퉤튀�튄튈�튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀�팃팅파�팎�팔팖팜�팟팠팡팥패팩팬팰팸팹팻팼팽����펀펄펌���펑페펙펜펠펨펩펫펭펴편펼�����������������\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"�������������������������������������������������������������������������������������������������������������������������������������������������������������������푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋�풔풩퓌�퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌��핑하학한할핥함합핫항해핵핸핼햄햅햇했행�향허헉헌�헒험헙헛�헤헥헨헬헴헵헷헹혀�현혈�협혓혔형혜혠�\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋�홑화확환활홧황홰홱홴횃횅회��횔�횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼���������������������히힉힌�힘힙힛��\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳�價加�呵哥嘉�家暇架枷柯歌�痂稼苛茄街袈訶賈�軻迦駕刻���慤殼�脚覺角閣侃刊墾奸姦干幹懇��柬桿澗癎看磵稈竿簡�艮艱諫間乫�曷渴碣竭葛��鞨勘�堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑�講鋼�鱇介价個凱�愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客��粳羹醵倨去居巨拒�據擧渠炬祛�踞車�鉅鋸乾件�巾建愆楗腱虔蹇�騫乞傑�桀儉�劒檢�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼�黔劫怯迲�憩�擊格檄激膈覡隔堅牽犬甄絹繭肩見譴�鵑抉決潔�缺訣兼慊�謙鉗鎌京俓倞傾儆����境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕�頃頸驚鯨係啓堺契季屆悸戒桂械�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄��告呱固姑孤尻庫拷攷故敲暠枯�沽痼��稿羔考股�苦苽��蠱袴誥賈辜錮雇顧高鼓哭斛曲�穀谷鵠困�崑昆梱�滾�袞鯤汨滑骨供公共功孔工��拱控攻�空蚣貢�串寡戈果瓜�\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������科�誇課跨��顆廓槨藿郭串冠官寬慣棺款��瓘管��觀貫關館刮�括适侊光匡壙廣曠洸炚狂��胱鑛�掛罫乖傀塊壞怪愧����紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久�仇俱具勾�\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������咎嘔�垢寇嶇�懼拘救枸柩構�毆毬求��狗玖�瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局�鞠鞫麴�窘群裙�郡堀屈掘窟宮弓穹窮芎躬倦券勸�圈拳�權淃眷厥�蕨蹶闕机櫃潰詭軌饋句晷歸貴�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜�圭奎�槻�硅窺竅糾葵�赳逵閨勻�畇筠�鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹�覲謹近饉契今妗擒昑檎��禽芩衾衿襟金錦伋�急扱汲級給亘兢矜肯�伎其冀嗜器圻基埼夔奇妓寄�崎己幾忌技旗旣�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期�棋棄機欺氣汽沂淇玘��璂璣畸畿�磯�祇祈祺箕紀綺羈耆耭肌記�豈起錡錤飢饑騎�驥麒緊佶�拮桔金喫儺喇奈娜懦��拿癩��螺裸邏那樂洛烙珞落諾酪駱亂卵暖�煖爛蘭難鸞���嵐�楠湳濫男藍襤拉�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������臘蠟衲囊娘廊朗浪狼郎乃來內奈柰�冷女年撚秊念�拈�寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿�壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓�漏��陋嫩訥��勒肋凜凌稜綾能菱陵尼泥匿溺多茶�\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段�短端簞緞蛋袒鄲�撻澾�疸�啖�憺擔曇淡湛潭澹痰�膽�覃談譚錟沓畓答���堂塘幢戇撞棠當糖螳黨代垈�大�岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉�桃�\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜�禱稻�覩賭跳蹈逃途�都�陶韜毒瀆牘犢��禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭��冬�動�憧��棟洞潼疼瞳童胴董銅兜斗�枓痘竇�讀豆逗頭屯臀芚���得�橙燈登等藤謄鄧騰喇懶拏癩羅�\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸�樂洛烙�絡��酪駱丹亂�欄欒瀾爛蘭鸞剌辣�擥攬欖濫籃纜�襤覽拉臘蠟廊朗浪狼�瑯螂郞來�徠�冷掠略亮倆兩凉�樑粮粱糧良諒輛�侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷�礫轢��戀攣漣�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練�蓮輦連�冽列劣洌烈裂廉斂殮濂簾�令伶囹寧岺嶺怜玲笭羚翎�逞鈴零�領齡例澧禮醴隷勞怒撈擄櫓潞瀘�盧�蘆虜路輅露魯鷺鹵碌祿綠�錄鹿麓論壟弄朧瀧�籠�儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭�蓼�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������鬧�壘�屢樓淚�瘻累縷蔞褸�陋劉旒柳榴�溜��瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾�陵俚利厘�唎履悧�梨浬�狸�璃異痢籬罹羸莉�裡里�離鯉�潾�璘藺躪隣鱗麟林淋�臨霖砬�\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万�娩巒彎慢挽晩曼滿漫�瞞�蔓蠻輓饅鰻唜抹末沫茉襪�亡妄忘忙望網罔芒茫莽輞邙埋妹媒�昧枚梅�煤罵買賣�魅脈貊陌驀麥孟氓猛盲盟�冪覓�冕勉棉沔眄眠綿緬�麵滅�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥�命明�椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮�模�毛牟牡�眸矛耗芼茅謀謨貌木�牧目�穆鶩歿沒夢朦蒙�墓妙廟�昴�渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無��繆舞茂蕪誣貿霧鵡墨默們刎��文�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋�蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷�黴岷悶�憫�旻旼民泯玟�緡閔密蜜�����撲朴樸泊�璞箔粕縛膊舶薄迫雹�伴���拌�攀斑槃泮潘�畔瘢盤盼�磻礬絆般蟠返頒飯勃拔撥渤潑�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣��妨尨幇彷房放方�昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防��俳北培徘拜排�湃焙盃背胚裴裵褙賠輩�陪伯佰帛�栢白百魄幡樊煩燔番磻�蕃藩飜��罰閥凡帆梵氾汎泛犯範范法�僻劈�擘檗璧癖�\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便��變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳�病秉�輧餠騈�堡報寶普步洑湺潽�甫�補褓譜輔�僕��宓復��腹茯蔔複覆輹輻馥鰒本乶俸奉�峯峰�棒烽熢�縫蓬蜂逢鋒鳳�付俯傅剖副��埠夫婦�\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶�腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分�噴墳奔奮忿憤扮�汾焚盆粉糞紛芬�雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪�妃婢庇悲憊扉批�枇榧比毖毗毘沸泌�痺砒碑秕秘粃緋翡肥�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂�蜚裨誹譬費鄙�飛鼻嚬嬪彬斌檳殯浜濱瀕�玭貧賓頻憑氷���事些仕伺似使俟僿��唆嗣四士奢娑寫寺射巳師徙��斜斯柶査梭死沙泗渣瀉�砂社祀祠�篩紗絲肆�莎蓑蛇裟�詞�賜赦辭邪飼駟�削數朔索�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕�産�算蒜酸霰乷撒殺煞薩三參�森渗芟蔘衫��鈒颯上傷�償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼�庶��抒��暑曙書栖棲犀瑞筮絮緖署�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓�鋤�鼠夕奭席惜昔晳��淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽�瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣�銑��鮮�屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾�閃��涉燮葉城姓宬性惺�星晟猩�盛�筬�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"�������������������������������������������������������������������������������������������������������������������������������������������������������������������腥誠醒世勢歲洗稅笹細說貰�嘯塑宵�少巢所掃�昭梳沼消溯瀟炤燒甦�疎瘙笑篠簫素紹蔬蕭蘇訴��邵銷韶騷俗屬�涑粟續謖贖速孫巽�蓀�飡率宋悚�淞訟誦�頌刷殺�碎鎖衰釗修�嗽囚垂壽嫂守岫峀帥��\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������手授�收數樹殊水洙漱燧狩��璲瘦�秀穗竪粹�綬繡羞脩茱�蓚藪袖誰�輸�邃酬銖銹隋隧隨雖需須首髓鬚�塾夙孰宿淑潚熟�璹肅�巡徇循�旬栒楯橓殉洵淳�盾瞬�純脣舜�蓴蕣詢諄醇錞順馴戌術述鉥崇崧�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟��濕拾習褶襲丞乘僧��承昇繩蠅陞�匙嘶始媤尸屎�市弑�施是時枾柴猜矢示翅蒔�視試詩諡豕豺埴寔��拭�殖湜熄篒�識軾食飾伸�信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心��\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什�拾雙�亞俄兒啞娥峨我牙芽莪蛾衙�阿雅餓鴉�堊岳嶽幄惡愕�樂渥鄂�顎�齷安岸按�案眼��顔鮟斡�軋閼唵岩巖庵暗癌�闇壓押狎鴨仰央�昻殃秧鴦厓哀埃崖愛曖涯�艾隘�厄扼掖液縊腋��\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹�椰爺耶若野弱掠略約若葯蒻藥�亮佯兩凉壤孃��攘敭暘梁楊樣洋�煬痒�禳穰糧羊良襄諒讓釀陽量養圄御於�瘀禦語馭魚齬億憶抑�臆�堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂�如廬�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟�濾璵礖礪與艅茹輿�閭餘驪麗黎亦力域役易曆歷疫繹譯�逆驛嚥堧姸娟宴年延���挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉�硯秊筵緣練縯聯�軟輦蓮連鉛鍊鳶列�咽悅涅烈熱裂說閱厭廉念捻染殮炎焰�艶苒�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵�葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶�濚瀛瀯�營�玲瑛瑩瓔盈穎纓羚聆英詠迎鈴�零霙靈領乂倪例刈�曳汭濊猊�穢芮�蘂禮裔詣譽豫醴銳隸霓�五�俉傲���嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������熬�筽蜈誤鰲鼇屋沃�玉鈺溫瑥瘟穩縕蘊兀壅�瓮甕癰�邕�饔渦瓦窩窪臥蛙�訛婉完宛梡椀浣玩��碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬�猥�了僚僥凹堯夭妖姚寥寮尿嶢拗�撓擾料曜樂橈燎燿瑤��\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯�謠�遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬�茸蓉踊鎔�龍于佑�優���宇寓尤愚憂旴牛玗瑀盂�禑禹紆羽芋藕虞迂�郵釪隅雨雩勖彧旭昱栯煜稶�頊云暈橒殞�熉耘芸蕓�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������隕雲韻蔚鬱�熊雄元原員圓園垣媛嫄寃怨愿�沅洹湲�爰猿瑗苑�轅�阮院願鴛月越鉞��僞��委�尉慰�渭爲瑋緯胃�葦蔿�衛褘謂�韋�乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉�攸有杻柔柚柳楡楢油洧流游溜�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由�癒硫�維臾�裕誘諛諭踰蹂�逾�酉釉��六堉戮毓肉育陸倫�奫尹崙淪潤玧胤贇輪鈗�律慄栗率�戎瀜絨�隆垠�慇殷誾銀隱乙�淫蔭陰音飮�泣邑�應膺鷹�倚儀宜�懿擬椅毅疑矣義艤�蟻衣誼�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊�吏夷姨履已弛彛怡易李梨泥爾�理異�痢移罹而耳肄苡�裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人�刃�吝咽因姻寅引�湮燐璘絪茵藺蚓�隣��鱗麟一佚佾壹日溢逸鎰馹任壬妊姙�林淋稔臨�賃入��\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒�剩孕芿仔刺咨姉姿�字孜�慈滋炙煮玆瓷疵�紫者自茨蔗藉諮資雌作勺嚼斫昨�炸爵綽�酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲�樟檣欌漿牆狀�璋章粧腸臟臧莊葬蔣薔��贓醬長�\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������障�哉在宰��栽梓渽滓�縡�財載齋齎爭��錚佇低儲咀�底抵�楮樗沮渚狙猪疽箸紵苧�著藷詛貯躇這邸雎齟勣�嫡寂摘敵滴狄炙的�笛�績翟�謫賊赤跡蹟迪迹��佃佺傳全典�剪塡塼奠專展廛悛戰栓殿氈澱�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎�田甸畑癲筌箋箭篆�詮輾轉鈿銓錢�電顚顫餞切截折浙癤竊節絶�岾店漸点粘霑鮎點接摺��井亭��呈姃定幀庭廷�情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎�町�碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆��\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������頂鼎制劑啼堤�弟悌�梯濟祭第�薺製諸蹄�除際霽題齊俎兆凋助嘲弔彫措�早�曺曹��棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙�造�釣阻雕鳥�簇足�存尊�拙�倧宗從悰慫棕淙�種終綜縱腫�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵����左座挫罪主����胄呪周嗾�宙州廚�朱柱株注洲湊�炷�疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄�竹粥俊�准埈寯峻晙樽浚準濬焌畯竣蠢逡�雋駿�中仲衆��櫛楫�葺增憎曾拯�甑症繒蒸證贈之��\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地�志�指摯支旨智�枳止池沚漬知砥祉祗紙肢脂至�芷蜘誌識贄趾�直稙稷織�唇嗔塵振�晉晋桭榛殄津溱�瑨璡畛疹盡眞瞋秦縉�臻蔯袗診賑軫辰進鎭陣陳震侄�姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗�輯�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������集徵懲澄且侘借�嗟嵯差次此磋箚茶蹉車����窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽�饌刹察擦札紮僭�塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢�滄漲猖瘡窓脹艙�蒼債埰寀寨彩採砦綵�蔡采釵冊柵策�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟�喘天�擅泉淺玔穿舛薦賤��釧闡阡韆凸哲喆徹撤澈綴輟��僉尖沾添甛瞻簽籤詹諂堞妾帖�牒疊�諜貼輒廳晴淸��請�鯖切剃替涕滯締諦逮�體�剿哨憔抄招梢�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦��礎秒�肖艸苕�蕉貂超酢醋醮促囑燭矗蜀觸寸忖�邨�塚寵悤�摠總�蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻��趨追鄒酋醜�錘鎚雛騶�丑畜�竺筑築縮蓄蹙蹴軸�春椿瑃出朮黜充忠沖蟲�衷悴膵��\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅��嘴娶就炊翠�脆臭趣醉驟鷲�仄厠惻測層侈値嗤峙幟�梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸�砧��蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱�倬�啄��托拓擢晫��濯��託�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������呑嘆�彈憚歎�炭綻誕奪脫探眈耽貪塔�榻宕帑湯糖蕩兌�太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎�土討慟桶洞痛筒統通堆槌腿褪退頹�套妬投�鬪�特闖�婆巴把播擺�波派爬�破罷芭跛頗判��版瓣販辦鈑�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八��佩唄悖敗沛浿牌狽稗覇�彭澎烹膨愎便��片篇編翩�鞭騙貶�平枰�評�嬖幣廢弊斃肺蔽閉陛佈包��咆哺圃布怖抛抱�暴泡浦疱砲胞脯苞葡蒲�褒逋鋪飽鮑幅暴�瀑爆輻俵剽彪慓�標漂瓢票表豹飇飄驃�\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������稟楓諷豊風馮彼披疲皮被�陂匹弼必泌�畢疋筆苾��逼下何厦�廈昰河瑕��賀�霞鰕壑學�謔鶴寒��旱汗漢澣瀚罕翰閑閒�韓割轄函�咸啣喊檻涵緘艦銜陷鹹�哈盒蛤閤闔陜亢伉姮嫦巷�抗��沆港缸肛航�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥�咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸��行享�嚮�鄕響餉饗香噓墟虛許憲櫶�軒歇險驗奕爀赫�俔峴弦懸晛泫炫玄玹�眩�絃絢縣舷衒見賢鉉顯孑穴血�嫌俠�夾峽挾浹狹脅脇莢�頰亨兄刑型�\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅�炯熒�瑩�螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩�湖滸澔濠濩���瑚瓠皓祜糊縞胡芦葫蒿虎號�護豪鎬頀顥惑或酷婚�混渾�魂忽惚�哄弘汞泓洪烘紅虹訌鴻化和嬅樺�畵�\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������禾花�話�貨�廓擴攫確碻穫丸喚�宦幻患�歡晥桓渙煥環紈還驩鰥活滑猾�闊凰幌徨�惶愰慌晃晄榥�湟滉潢煌璜皇�簧����黃匯回廻徊�悔懷晦會檜淮澮��繪膾茴蛔誨賄劃�宖橫�哮嚆�效斅曉梟�淆�\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵�侯候厚��喉嗅帿後朽煦�逅勛勳塤壎焄�燻薰訓暈薨喧暄煊��喙�彙徽�暉煇諱�麾休�烋畦虧�譎鷸兇凶匈洶胸黑昕欣炘痕�屹紇訖欠欽歆��洽翕興僖凞喜噫�姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[950] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"���������������������������������������������������������������� ,�。.‧;:?�︰…‥�﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴�()︵︶{�︷︸〔〕︹︺�】︻︼《》︽︾〈〉︿﹀「��﹂『�﹃﹄﹙﹚����������������������������������﹛﹜�﹞‘’“��〞‵′#&*※§〃○�△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_�﹉﹊�﹎﹋﹌﹟﹠﹡+�×÷±√<>�≦≧≠∞≒≡﹢﹣﹤﹥﹦~∩∪⊥∠∟⊿��∫∮∵∴♀♂⊕⊙↑↓�→↖↗↙↘∥∣��\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"����������������������������������������������������������������\∕﹨$¥〒¢£%@℃℉﹩﹪﹫�㎜�㎞�㎡㎎��°兙兛兞�兡兣嗧瓩糎�▂▃▄▅▆▇█�▎�▌▋▊▉┼┴┬┤├▔─│▕┌�└┘╭����������������������������������╮╰╯�╞╪╡◢◣◥◤╱╲╳�123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩���ABCDEFGHIJKLMNOPQRSTUVWXYZ�bcdefghijkl�n��qrstuv�\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"����������������������������������������������������������������wxyzΑΒΓΔΕΖΗΘΙΚΛΜ�ΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπ�στυφχψωㄅㄆㄇㄈㄉㄊㄋㄌ�ㄎ������������������������������������ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜ�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙ˉˊˇˋ���������������������������������€������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"����������������������������������������������������������������一乙�七乃�了二人儿入八几刀�力匕���三下丈上丫丸凡久么也乞于亡兀刃勺���土士夕大女�孑孓寸�尢尸山�工己已巳巾干廾弋弓�����������������������������������丑��中丰丹之尹予云井互五亢�什仃仆仇�今介仄元�內六兮公冗凶分切刈勻勾勿化匹����厄���壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛�水�爪父爻片牙牛犬王丙�\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"����������������������������������������������������������������世丕且丘主��乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北�仟������去�������������������四囚外����������������������������������央失奴奶孕它尼巨巧左市布平幼�弘弗必戊打扔扒扑斥旦朮本未末札正�民�永�汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕��休�仲件任仰仳份�伋光兇兆先全�\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"����������������������������������������������������������������共�冰列刑划刎刖劣匈匡匠�����������������因回�圳地在圭圬圯圩夙多夷夸妄奸妃好她如�字存宇守宅安寺尖屹州帆并年�����������������������������������弛忙忖戎戌��扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖�汗汙江池�汕污汛�汎�牟�百竹米糸缶羊羽�考而耒耳�肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨��佇佗佞伴佛何估�佑伽伺伸佃佔似但佣�\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"����������������������������������������������������������������作你伯低伶余�佈佚兌克�兵冶冷別判利刪刨劫助努劬匣�������呎�呆呃�呈呂��告��������呀����囪困囤囫����������������������������������������圾��圻壯夾�妒妨妞妣妙妖�妤妓妊妥�孜孚孛完宋�尬局�尿尾�岑岔岌巫希�庇床廷弄弟彤形彷役忘忌志�忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"������������������������������������������������������������������步�求汞沙�沈沉沅沛汪決�汰沌汨沖沒汽沃汲汾汴沆汶�沔沘沂����牢牡牠狄狂玖甬甫男甸皂盯矣�秀禿究系罕肖肓�肘肛肚育良芒����������������������������������芋�見角言谷豆豕�赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯��佳使佬供例來侃佰併侈佩佻侖佾�侑佺兔兒兕兩具其典冽函刻券刷刺到刮制�劾劻�����������味呵�\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"����������������������������������������������������������������咖呸咕咀呻呷咄咒咆呼�呱呶和咚呢周咋命咎固垃�������夜奉奇奈奄奔妾妻委妹妮姑姆��始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居����������������������������������屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往�彿彼�忠忽念忿�怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押�拙拇�抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀�昕昊�\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"����������������������������������������������������������������昇�朋�枋枕�果��枇�林���枉���枚枓���欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油�沮泗泅泱沿治泡泛泊沬泯泜泖泠����������������������������������炕炎炒炊炙爬爭爸版牧物狀狎狙狗�玩玨玟玫玥甽�疙疚的盂盲直知矽社祀�秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾�芳�芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱�表軋迎返近邵邸邱邶采金長門阜陀阿阻附�\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"����������������������������������������������������������������陂隹雨��亟亭亮信侵侯便俠俑��促侶俘俟俊俗侮�俄係俚俎俞侷兗冒冑冠剎剃削�剌剋則勇勉勃����厚�咬哀咨哎哉咸咦咳哇哂咽咪�����������������������������������哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契�奎�姜姘姿姣姨娃姥姪姚姦�姻孩宣宦室客宥�屎��屋峙峒巷�帥帟幽庠度建弈弭彥很待徊律徇後徉怒�怠急怎怨�����������拜挖按拼拭�拮拽指拱拷�\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"����������������������������������������������������������������拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔�柬架枯柵柩柯柄柑枴柚查枸�柞柳枰柙柢�柒歪殃殆段毒毗氟泉洋洲洪�津洌洱洞洗����������������������������������活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷�玻玲��玳甚甭�界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅�盹相眉看盾盼眇矜砂研砌�祆祉祈祇禹禺科秒秋穿�竿竽籽紂紅紀紉紇約紆缸美羿耄�\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"������������������������������������������������������������������耑耶胖胥胚胃胄背胡胛胎胞胤�致舢苧范茅苣苛苦茄若茂茉苒苗英�苜苔苑苞苓苟苯茆�虹虻虺�衫�觔計訂訃貞負赴赳趴�軌述迦迢迪迥����������������������������������迭迫迤迨郊郎�郃酋酊�閂�陋陌���韋韭音�風飛食首香乘亳倌�倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢�凌准凋剖剜剔剛�匪�原��哨��唷哼哥哲唆哺唔哩哭員唉哮哪�\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"����������������������������������������������������������������哦唧唇哽�圃圄埂埔埋埃堉�套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展�峭峽峻峪峨峰島�峴差席師庫庭座弱徒徑�������������������������������������������悄悟悚�悔悌悅悖扇拳挈拿�挾振�����挺�挽挪挫挨��效敉料�旅時晉�晃晒晌晅�書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴�桀格桃株桅栓栘�殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓�\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"����������������������������������������������������������������浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈�爹特狼狹狽狸狷玆������畔�畜畚留疾病症疲疳疽疼疹痂疸皋皰益�盎眩真眠眨矩砰砧砸�破砷����������������������������������砥砭砠砟砲祕�祠祟祖神�祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純�紕級紜�紙紛缺罟羔翅�耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀�航舫舨般芻茫���茸��茵茴�茲茹茶茗�茱茨��\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"����������������������������������������������������������������虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷�袂衽衹記�討訌訕訊託訓訖�訑豈豺豹財貢起躬軒軔�辱�逆迷退迺迴逃追逅迸邕郡�郢酒�酌釘�釗釜釙閃院陣陡����������������������������������陛�除陘陞隻飢馬骨高鬥鬲鬼乾�������������������兜冕凰剪副勒務勘動��匙匿�匾�曼商啪啦啄啞啡啃啊唱啖�啕唯啤唸售啜唬啣唳�啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶�婉婦婪婀�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"����������������������������������������������������������������娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜�崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜�患悉悠您惋悴惦悽����������������������������������情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控�掖探接��掘措�掩掉掃掛�推掄授掙採掬排�掀�����敖救教敗啟�敘敕敔斜斛斬�旋旌旎�晚晤晨晦晞曹勗望�梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔�梨梟梡梂欲殺�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"����������������������������������������������������������������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽�猜猛猖猓猙率������瓠瓶����������������������������������瓷甜產略畦畢異�痔痕疵痊�皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜��脯脖脣脫脩脰脤舂舵舷舶船莎莞莘�莢莖莽莫莒莊莓莉莠����\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"����������������������������������������������������������������莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖�袋覓�訪�訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這�通逗連速��逕逞造�逢逖逛途����������������������������������部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢�傅備傑傀傖傘傚最凱割剴創剩勞�勛�厥啻喀喧啼喊�喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙�堯堪場堤堰報堡�堠壹壺奠�\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"����������������������������������������������������������������婷媚婿媒媛媧孳孱寒富寓�尊尋就嵌�崴嵇巽幅帽幀幃幾廊�廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌���������������������������������������������������摒��敞敦敢散斑�斯普晰晴晶景暑智晾晷曾替期�棺棕棠棘棗椅棟棵森棧棹棒棲棣棋��椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴�渺測湃�渾滋�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"����������������������������������������������������������������溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩������������甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜�短�硬硯�稈程稅稀窘����������������������������������窗窖童竣等策筆�筒答�筋�筑粟粥絞�絨絕紫絮絲絡給絢絰絳善翔翕耋�肅腕腔腋腑腎脹腆脾腌腓腴舒舜�����������著��������������虛蛟蛙蛭蛔蛛蛤�蛞街�裂袱覃視註詠評詞証��\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"����������������������������������������������������������������詔詛�詆訴診訶詖象貂貯貼貳貽�費賀貴買貶貿貸越超�跎�跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥�鈔鈕鈣鈉鈞��鈇鈑閔�開閑����������������������������������間閒閎隊階隋陽隅隆�陲隄�雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃�黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧�嫉嫌媾媽媼�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"����������������������������������������������������������������媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚�慈感想愛惹�愈慎慌慄�愾愴愧�愆愷戡戢���������������敬斟新暗暉暇暈暖暄暘�會榔業����������������������������������楚楷楠楔極椰概楊楨楫楞楓楹榆�楣楛歇歲毀殿毓毽溢溯滓溶滂��滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷�猿猾瑯瑚瑕瑟瑞��瑙瑛瑜當畸瘀痰�痲痱痺痿痴痳盞盟������\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"�����������������������������������������������������������������������矮碎碰碗碘碌碉硼碑碓硿祺祿��禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑��絛置罩罪署義羨群��肆肄腱腰腸腥腮腳腫����������������������������������腹腺腦舅艇蒂葷��葵葦葫葉葬葛��葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘�裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"����������������������������������������������������������������辟農�����逼�������逾�鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉�鉅鈹鈿鉚閘隘隔隕�雋雉雊雷電雹零����頑頓頊頒頌飼飴����������������������������������飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕�僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉�嘎嗷嘖嘟嘈�嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察�屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"����������������������������������������������������������������愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧�摭摻敲斡旗旖暢暨�榜榨榕�榮槓構榛榷榻榫榴��榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬�漂漢����������������������������������滿滯漆漱漸漲漣漕漫漯澈漪滬�滲滌滷熔熙煽熊熄熒爾犒犖��瑤瑣瑪瑰瑭甄疑瘧�瘋瘉瘓盡監瞄����碟碧碳碩碣禎��種稱窪窩竭端管箕箋筵算�箔�箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"����������������������������������������������������������������罰翠翡翟��肇�膀�膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓�蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘�蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣�誡誓誤����������������������������������說誥誨誘誑誚誧豪�貌賓賑賒赫趙趕跼輔輒輕輓辣���������鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需�鞅韶頗領颯颱餃餅餌餉�骯骰髦�魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"����������������������������������������������������������������劇劈劉�劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履�嶔幢幟幡廢廚廟�廣廠彈影德徵慶慧慮�慕憂����������������������������������慼慰慫慾憧�憫憎憬憚憤憔憮戮摩摯摹撞撲撈�撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨�樞標槽模樓樊槳樂樅槭樑�歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛��瑩璋璃�\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"����������������������������������������������������������������瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼�稿稼穀稽稷稻窯窮箭箱範箴篆篇�箠篌糊締練緯緻緘緬�編緣線緞緩綞緙緲緹罵罷羯����������������������������������翩耦膛膜�膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂����������衛��複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論�誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫��踢�踩踟踡踞躺�輛輟輩輦輪輜輞�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"����������������������������������������������������������������輥�����鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤�銳銼鋒鋇鋰銲閭閱霄霆震霉��鞋�頡頫頜颳養餓餒餘��駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉����������������������������������鴃麩麾黎墨齒儒儘儔�儕冀冪�劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶�墾壇壅奮�嬴學寰導彊憲憑憩憊�憶憾懊懈戰擅�擋撻撼據擄擇擂�撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡�\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"����������������������������������������������������������������濃澤�澧澳激澹澶澦澠澴熾燉�燒燈燕熹燎燙燜燃燄�璜璣璘璟璞瓢甌�瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦�穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊����������������������������������縑縈縛縣縞�縉�罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢�衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾�謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦������鄴醒錠錶鋸錳錯錢鋼錫錄錚�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������錦錡錕錮錙閻隧隨險雕霎霑霖�霓����鞘頰頸頻頷頭頹頤�館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔�龜優償儡儲勵嚎嚀�嚅嚇�����������������������������������壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗�檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆��璩環璦璨癆療癌盪瞳瞪瞰瞬�\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"����������������������������������������������������������������瞧瞭矯磷磺磴磯�禧禪穗窿簇�篾篷簌篠糠糜糞糢糟糙�縮績繆縷縲繃縫總縱繅�縴縹繈縵縿縯罄翳翼�����臆臃膺臂臀膿膽臉膾臨舉艱薪����������������������������������薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠�謄��谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿��還�邂邀鄹醣醞醜�鎂錨����錘������闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵��\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"����������������������������������������������������������������駿鮮鮫鮪鮭鴻鴿麋�點黜�黛鼾齋�嚕嚮壙壘嬸�懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑�燻燼燾燸��璧璿甕癖癘����������������������������������癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻����舊�薩��藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫�贅蹙蹣蹦蹤蹟蹕軀轉�邇邃邈醫醬�鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖�闕離雜雙雛雞霤鞣鞦�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"����������������������������������������������������������������鞭韹��題顎顓颺餾餿餽餮馥騎�鬃鬆�魎�鯊鯉鯽鯈鯀鵑�鵠黠鼕鼬儳嚥壞壟壢寵�廬懲懷懶懵攀�曠�櫥�櫚櫓瀛瀟瀨瀚�瀕瀘爆�牘犢������������������������������������璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩�藪藕藤藥藷蟻蠅�蟹蟾襠襟襖襞�譜識證譚譎�譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮��������������關隴難霪霧�韜韻類�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"����������������������������������������������������������������願顛颼饅饉騖騙�鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲���癢癥礦礪礬礫竇競籌籃�糯糰辮繽繼����������������������������������纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫��躉�躅躂醴釋���闡霰飄饒饑馨騫騰騷騵鰓�鹹麵黨鼯齟齣齡儷儸�囀囂夔屬�懼懾�攜斕曩櫻欄櫺殲�爛犧瓖瓔癩矓��續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴�\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"����������������������������������������������������������������護譽贓躊�躋轟辯醺�������闢霸霹露響顧顥饗驅驃驀騾�魔魑鰭鰥鶯鶴鷂鶸�黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡��玀瓤疊癮癬����������������������������������禳籠籟��臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃�顫饕驕�髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬�瓚竊籤籣籥纓纖纔臢蘸蘿蠱變��鑣鑠鑤�顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬�癱癲矗�羈蠶蠹衢讓讒�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"����������������������������������������������������������������讖艷贛釀鑪���韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖�籬籮蠻觀躡�鑲鑰顱饞髖鬣黌�矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲���������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[201] = \"����������������������������������������������������������������乂乜凵匚厂万丌乇�囗兀屮彳�冇与丮亓仂仉仈冘勼�厹圠夃夬�巿旡殳毌气爿丱丼仨仜仩仡�仚刌匜�圢圣夗夯�宄尒尻屴屳帄庀庂忉戉�氕����������������������������������氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈�伂伅伢伓伄仴伒冱刓刉�劦匢匟�厊�囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔�扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜�汊汔汋�\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"����������������������������������������������������������������汌�牞犴犵玎甪癿穵网艸艼芀艽艿�襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟�佘伭伳伿佡�冹刜刞刡劭劮匉��厎����呔呅�������������������������������������������呇囮囧囥������夆奀妦妘妠妗妎妢��妧妡宎宒尨尪��岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈�弅�彸彶忒忑�忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎�抔抇扱扻扺扰�抈扷扽扲扴攷旰旴旳旲旵���\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"�������������������������������������������������������������������������氙氚汸汧汫沄沋�汱汯汩沚汭沇沕沜汦汳汥汻沎��牣犿犽狃狆�犺狅玕玗玓玔玒町甹疔疕�礽耴肕肙�肒肜��芅芎芑芓����������������������������������芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹�佸�侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿�咑咂咈呫呺呾呥呬呴呦�呯呡呠咘呣呧呤囷囹�������垀������\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"������������������������������������������������������������������夌奅妵妺�姎妲姌�妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧�岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋����������������������������������怴怊怗怳怚怞怬怢��怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋�昅旽昑�曶朊枅�枎枒��枘枆构��枌�枟枑枙枃����枔欥殀歾毞�沓泬泫泮泙沶泔沭泧沷�泂沺泃泆泭泲�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"����������������������������������������������������������������泒�沴沊�沀泞泀洰�泇沰泹�泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬��瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺����������������������������������矷祂礿秅穸穻竻籵糽耵�肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓�迖迕迗邲邴邯邳邰阹阽阼阺陃�俅俓侲俉俋�俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽�厗厖厙厘咺咡咭咥��\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"����������������������������������������������������������������哃�咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗�垛垔垘�垙垥垚垕壴�奓姡姞姮娀姱�姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌�峘峌峗峋峛����������������������������������峞峚峉峇峊峖峓峔�峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹������������怤����扂扃��挋拵挎挃拫拹�挌拸拶挀挓挔拺挕拻拰�敃斪斿昶昡昲昵昜昦昢昳昫昺�昴昹昮���柲柈枺�\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"����������������������������������������������������������������柜枻柸柘柀枷柅柫柤柟枵�枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀�浂�����������������������������������洘洷洃�浀洇洠洬洈洢洉�炷炟炾炱炰炡炴炵炩�牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅����玹玶玵玴�玿�玾��玸�瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅��砎砉砃砓祊祌祋祅祄秕��秖秎窀�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"����������������������������������������������������������������穾竑笀�籺籸籹籿粀�紃紈�罘羑�羾耇耎�耔耷胘胇胠胑胈胂�胅胣胙胜胊胕胉�胗胦�臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪����������������������������������苤苠苺苳苭虷虴虼虳�衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔�陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢�匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"����������������������������������������������������������������唊哻哷哸哠唎唃唋�圂埌堲埕埒垺埆垽垼垸垶垿埇�垹�夎奊娙娖娭娮娕�娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧��������������������������������������悢悈悀悒��悃悕悛悗悇悜悎戙扆拲��挬��挶��挹��挼挩�挴���挭�挳��挸���敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋�栖栱栜栵栫栭栯桎桄栴�栒栔栦栨栮�栺栥栠欬欯欭欱欴歭肂殈毦毤�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"����������������������������������������������������������������毨毣毢毧氥浺浣浤浶�浡涒浘浢浭浯涑�淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵�烜烓烑�烋缹烢烗烒烞烠烔�烅烆烇烚烎烡牂牸����������������������������������牷牶猀狺狴狾狶狳狻�����玼������������瓞瓟瓴瓵甡畛畟疰�疻痄痀疿疶疺皊盉�眛�眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛�祜祓祒祑秫秬秠秮秭秪秜秞�窆窉窅窋窌窊窇竘��\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"����������������������������������������������������������������笄笓笅�笈笊笎笉笒粄粑粊粌粈�粅紞�紑紎紘紖紓紟紒�紌罜罡罞罠�罛羖羒翃翂翀耖耾耹胺胲胹胵�胻脀�舯舥茳茭�茙�茥�茿�茦茜茢������������������������������������茛茪茈茼�茖茤茠茷茯茩����茞茬�茧�虓虒蚢蚨蚖�蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎��蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤��\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"����������������������������������������������������������������酎�釕釢釚陜陟隼飣髟鬯乿���������������倕�������������剫剭剬剮勖勓匭厜啵啶唼��唴唪啑啢唶唵唰啒啅����������������������������������唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳�堇埮埣埲埥埬埡堎埼�埧�堌埱埩埰�堄奜婠婘婕婧婞娸娵婭�婟婥婬婓婤婗婃�婒婄婛婈媎娾�娹婌婰婩婇婑婖婂婜孲孮�寀屙崞崋�崚崠崌崨�崦崥��\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"����������������������������������������������������������������崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊�悆悾悰悺惓惔�惤惙�惈悱惛悷惊悿惃�惀挲�掊掂�掽掞掭�掗掫掎�掇��掯�掜�掮�掤挻掟�����������������������������������掅�掑��敓�晥晡晛晙晜晢朘桹梇�梜桭桮梮梫楖桯梣梬梩桵桴梲�桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑��殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜�淛淴淊涽淭淰涺淕淂�淉�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"�����������������������������������������������������������������淲淓淽淗�淣涻烺�烷焗烴焌烰焄烳�烼烿焆焓焀烸烶焋焂焎牾牻牼牿�猗猇猑猘猊猈狿�猞玈���������������畤畣痎痒�����������������������������������痋痌痑��皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉�硊硌砦硅�祤祧祩祪祣祫祡离秺秸秶秷�窔�笵筇笴笥笰笢笤笳笘笪�笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩�絇紾紿絊紻紨罣羕羜�羛翊翋��翑翇�翉耟�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"����������������������������������������������������������������耞耛���脘脥脙脛脭脟脬脞脡脕脧�脢舑舸舳舺舴舲艴�莣莨���莤���莕莙�莔莩�莃莌�莛莪莋�莥莯莈莗莰�莦莇莮�莚虙虖蚿蚷����������������������������������蛂�蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜�豽貥赽赻赹趼跂趹趿�軘軞�軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪�\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"����������������������������������������������������������������釫釷釨釮镺閆閈陼陭陫陱陯隿�頄飥馗傛傕傔傞傋傣傃傌傎��傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈�喵�喣喒喤啽喌喦啿喕喡喎圌堩堷����������������������������������堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜�媓�寪�寋寔寑寊寎尌尰崷嵃嵫�嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄�彘徦徥徫惉悹惌惢惎惄愔�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"����������������������������������������������������������������惲愊愖愅惵愓惸惼惾�愃愘��惿愄愋扊掔掱掰�������������摡�掾�������������攲敧敪敤敜敨敥斌�斞斮�旒����������������������������������晼晬晻暀晱晹晪晲�椌棓椄棜椪棬棪棱�棖棷棫棤棶椓�棳棡椇棌椈楰梴椑棯棆椔棸�棽棼棨椋椊椗棎棈�棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿��湳渜渳湋湀湑渻渃渮湞�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"����������������������������������������������������������������湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌�������������������������������������������������瓻甯畯畬痧痚痡痦�痟痤痗皕皒盚���������矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪�絭絜絫絒絔絩絑絟絎缾缿罥�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"����������������������������������������������������������������罦羢羠羡翗���胾胔腃腊腒�腇脽�脺臦臮臷臸臹舄舼舽舿艵茻���������������莿��������������������������������������������������������������������蛘蛢蛦蛓蛣蛚蛪�蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲�裉覕覘覗�觚觛詎�訹詙詀詗詘詄詅詒詈詑詊詌�豟�貀貺貾貰貹貵趄趀趉跘跓�跇跖跜�跕跙跈跗跅軯軷軺�\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"����������������������������������������������������������������軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻�鄀鄇鄅鄃酡酤酟酢酠�鈊鈥鈃鈚鈦�鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻�閌�隇陾隈����������������������������������隉隃隀雂雈雃雱雰���頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰�傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌�嗋嗊�嗀嗔嗄嗩喿嗒��嗕嗢嗖嗈嗲�嗙嗂圔塓塨塤��塉塯塕塎�塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆�\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"����������������������������������������������������������������媷嫀嫊媴媶�媹�寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰�幎幊�幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯�愩慀戠酨戣戥戤�������������������������������������������摃����������������摀��������敯斒旓暆暌暕�暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘�楴楌椻楋椷楜�楑椲楒椯楻椼歆歅歃歂歈�殛�毻毼�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"����������������������������������������������������������������毹毷毸溛滖滈�滀溟溓溔溠溱溹滆滒溽�溞滉溷溰�溦�溲溾滃滜滘溙溒溎�溤溡溿溳�滊溗溮溣煇煔煒煣煠��煢煲煸煪煡煂煘煃煋煰煟�煓����������������������������������煄�煚��犌犑�犎猼�猻猺���瑄瑊瑋瑒瑑瑗瑀��瑎瑂瑆�瑔瓡瓿瓾瓽�畹畷榃痯�瘃痷痾痼痹痸�痻痶痭痵痽皙皵������������矠碇碚碔�碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"����������������������������������������������������������������稛�窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀�絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯����������������������������������腄腡�艉艄艀艂艅蓱�葖葶葹��葥葑葀蒆葧��葽葚葙葴葳�蔇葞���葺葃葸�葅��葋�葂�葟葰�葎葌葒葯蓅蒎�葇��葨葾葄�葠葔葮�蜋蜄蛷蜌蛺蛖蛵�蛸蜎蜉�蛶�蜅裖裋�裎裞裛裚裌�覅覛觟觥觤�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"����������������������������������������������������������������觡觠觢觜触詶誆詿詡訿詷誂誄詵誃�詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎��趓趔�趒跰跠跬跱跮�跩跣跢跧跲跫跴輆軿�輀輅輇輈輂輋�逿������������������������������������逽���鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬�鉠鉧鉯鈶鉡鉰鈱鉔鉣�鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵������頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪�僤僓僬僰僯僣僠�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"����������������������������������������������������������������凘劀�勩勫匰厬嘧嘕嘌嘒嗼�嘜�嘓嘂嗺�嘄嗿嗹墉塼�墘墆�塿塴墋塺墇墑墎塶墂墈塻墔�壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞�嫙嫨嫟孷寠����������������������������������寣屣嶂嶀嵽嶆嵺�嵷嶊嶉嶈嵾嵼�嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨�慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫��摛�摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠�摿�摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"����������������������������������������������������������������榠槎榖榰榬榼榑榙榎榧�榩榾榯榿槄榽榤槔榹槊榚�榳榓榪榡榞槙榗�槂榵榥槆歊�歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊����������������������������������漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟�漞漈漡熇�熉熀熅熂�煻熆�熗牄牓犗犕犓����瑢瑳瑱瑵瑲瑧瑮甀甂甃畽�瘖瘈瘌瘕瘑瘊瘔皸��瞅瞂�瞀��瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"����������������������������������������������������������������禗禈禒�稫穊稰稯稨稦窨窫窬竮箈箜箊箑�箖�箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪�緀緅�緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞����������������������������������耤��膉膆膃膇�膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴��蒪蒚蒱��蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶�蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨��蜮蜞蜡蜙蜛�蜬�蜾�蜠蜲蜪蜭蜼蜒蜺蜱蜵�蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻�\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"����������������������������������������������������������������裰裬裫�覡覟覞觩觫觨誫誙誋誒�誖谽豨豩賕�賗趖踉踂跿�跽踊踃踇踆踅跾踀踄�輑輎�鄣鄜鄠鄢鄟�鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪�����������������������������������銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩�銋鈭隞隡雿����鞃鞀鞂�鞄��韎�頖颭颮餂餀餇�馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵�噊噉噆噘�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"����������������������������������������������������������������噚噀嘳嘽嘬嘾嘸嘪嘺圚墫�墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹�嬇嬅�屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩�幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉����������������������������������憛憓憯憭憟憒憪憡�慦憳戭摮摰撖撠撅撗撜�撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛�槾樧槲槮樔槷槧橀樈槦槻�槼槫樉樄樘樥�槶樦樇槴樖歑殥殣殢殦�氀毿氂�漦潾澇濆澒�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"�����������������������������������������������������������������澉澌潢�澅潚澖潶潬澂潕潲潒�潗澔澓�漀潡潫潽潧�潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵�熥熞熤熡熪熜熧熳犘犚���������������������������������������������璇璉璊璆�瑽璅璈瑼瑹甈甇畾瘥瘞瘙�瘜瘣瘚瘨瘛皜�皞皛��瞉瞈�碻�磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨��膣膟�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"����������������������������������������������������������������膞膕膢膙膗舖�艓艒�艎艑蔤蔻�蔀蔩蔎蔉�蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨�蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢��������������������������������������蟡���������������������������衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬�諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾��賥賟賙賨賚�賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"����������������������������������������������������������������踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗�����鄯鄫鄩鄪鄲鄦鄮醅醆醊�醂醄醀�鋃鋄鋀鋙銶�鋱鋟鋘鋩鋗�鋌鋯鋂鋨鋊鋈鋎鋦�鋕鋉鋠鋞鋧鋑鋓����������������������������������銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂�鞊鞎鞈��頞�頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜��駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓��儜儓儗儚儑凞匴�噰噠噮�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"����������������������������������������������������������������噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓�嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼�憨憖懅憴懆�懌憺����������������������������������憿憸憌擗擖��擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋�暽暻暺曌朣樴橦橉橧樲橨樾�橭橶橛橑樨橚樻樿�橪橤��橔橯橩橠樼橞橖橕�橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪�澿澸�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"����������������������������������������������������������������澢濉澫�澯澲澰燅燂熿熸燖燀�燋燔燊燇�熽燘熼燆燚燛�犞�������瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚�瞡瞜瞛瞢瞣瞕瞙����������������������������������瞗�磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧�篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗�糑縒縡縗縌縟縠縓縎縜縕縚縢縋�縖�縔縥縤罃罻罼罺羱翯耪耩�膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫�蕓蕡蕘�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"����������������������������������������������������������������蕀蕆蕤�蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦�蕔蕥蕬虣虥虤螛�螗螓螒螈�螖螘�螇螣螅�螑�螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠����������������������������������諢諲諴諵�謔諤諟諰諈諞諡諨諿諯諻貑貒�賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽�踰踿躽輶輮輵輲輹輷輴���邆郺鄳鄵鄶醓�醑��錧錞錈錟錆��錸錼錛錣錒��錭錎�鋋�鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"����������������������������������������������������������������錋鋾錉錀鋻錖閼�閾閹閺閶閿閵閽隩雔霋霒�鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒�魺鮕����������������������������������魽鮈鴥鴗鴠鴞鴔鴩�鴘鴢�鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌�嚆嚄嚃噾嚂噿�壖壔�壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨�斀斶旚曒�檖�檥檉檟檛檡檞檇檓檎�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"����������������������������������������������������������������檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲�濢濨燡燱燨燲燤燰燢���璗璲璫�璪璭璱璥璯�甑甒�疄癃癈癉癇皤盩瞵瞫瞲瞷瞶����������������������������������瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀�簅�篲簀篿篻簎篴簋篳簂簉簃�篸篽簆篰篱�簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀�薧薕薠薋薣蕻薤薚薞�\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"����������������������������������������������������������������蕷蕼薉薡蕺蕸蕗薎薖薆�薙��薢薂薈薅蕹蕶薘�薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾�襒褷襂覭覯覮觲觳謞����������������������������������謘謖謑謅謋謢�謒謕謇�謈謆謜謓謚�豰豲豱豯貕貔賹赯蹎�蹓�蹌蹇轃轀邅�鄸醚醢醛醙醟醡�醠鎡鎃鎯���������������������������鎀��闇闀闉闃闅閷隮隰隬霠霟霘�霙鞚鞡鞜�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"����������������������������������������������������������������鞞�韕韔韱�顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽�髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳�鵧鴶鴮鴯鴱鴸鴰����������������������������������鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉�麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚�嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸�攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌��瀅瀔瀎濿瀀濻瀦濼濷瀊�燿燹爃燽��\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"����������������������������������������������������������������璸瓀璵�璾璶璻瓂甔甓癜癤癙�癓癗癚皦皽盬矂瞺磿礌礓礔礉�礒礑禭禬穟簜簩簙簠簟簭�簦簨簢簥簰繜�繖繣繘繢繟繑繠繗繓羵羳翷翸�臑臒�����������������������������������艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙�蟴蟨�襓襋�襌襆�襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"����������������������������������������������������������������蹛蹚蹡�蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛�鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟�鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘�霣霢霥鞬鞮鞨鞫鞤鞪����������������������������������鞢鞥韗韙韖韘韺�顑顒颸�餼餺�騋騉�騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿�鮵鮸鯓鮶鯄鮹鮽鵜鵓�鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟�鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚�壛夒嬽嬾嬿巃幰�\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"����������������������������������������������������������������徿懻攇��攉攌攎斄旞�曞櫧櫠櫌櫑櫙櫋櫟櫜�櫫��櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱�礛����������������������������������礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾�臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘�襙覈覷覶觶�譈譊譀譓譖譔譋譕�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"����������������������������������������������������������������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑��轓辴酀鄿醰醭����������鎩�����������镽闚闛雡霩霫霬霨霦����������������������������������鞳鞷鞶�韞韟顜顙�顗颿颽颻颾饈饇饃馦馧騚騕騥�騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷�鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀��齖齗齘匷嚲�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"����������������������������������������������������������������嚵嚳壣孅巆巇廮廯忀�懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱�瀸瀿瀺瀹�瀻瀳�爓爔犨��璺皫皪皾盭矌矎��矲礥礣礧礨礤礩����������������������������������禲穮穬穭竷籉籈籊籇籅糮繻繾�纀羺翿�臛臙舋艨艩蘢藿�藾蘛蘀藶蘄蘉蘅蘌藽蠙�蠑蠗蠓蠖襣襦覹觷譠譪�譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚�酃�醷醵醲醳�������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"���������������������������������������������������������������������闞闠闟霮霯鞹鞻韽韾顠顢顣顟�飂�饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆�鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤�鶒鶘�鶛����������������������������������鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞�齙龑儺儹劘劗囃嚽嚾孈孇巋�廱懽攛欂櫼欃櫸欀��������爚爙�甗癪�礭礱礯籔籓糲纊纇纈纋纆��羻耰�蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥�\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"����������������������������������������������������������������蠩�蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻�贔趯躎躌轞轛�酆酄酅醹�����������鑀�闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂�騺����������������������������������騿�鬕鬗鬘鬖鬺魒鰫�鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼�鷇鷊�鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳�鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉�����爞爟犩�瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"����������������������������������������������������������������糴糱纑�羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒�躖躗轠轢酇鑌�鑊鑋�鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌�驈驊����������������������������������驉驒��鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳�鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋�鷜鷑鷟鷩鷙鷘鷖鷵鷕�麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲�巘蠯��戃戄攩攥斖曫欑欒�毊��爢玂�玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"����������������������������������������������������������������讌讎讋讈豅贙躘轤轣醼鑢鑕�鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘�鱊�鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂�黲黳鼆鼜鼸鼷鼶齃�����������������������������������齱齰齮齯囓�孎屭攭曭曮欓����爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠�醾醽釂鑫鑨鑩雥���韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀�鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚�爦犪矘矙礹籩籫糶纚�\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"����������������������������������������������������������������纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳�顲饟鱨鱮鱭鸋���鸒鸑麡黵鼉齇齸齻齺齹圞�籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊����������������������������������龤��糷虪蠾蠽蠿讞貜躩軉�顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀�驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺���麤齾齉龘�銹�墻�粧嫺╔╦╗╠╬╣╚╩�╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║�╭╮╰╯▓�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[1026] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—�Ž\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013�…\\b‡\\u0018\\u0019’�\\u001c\\u001d\\u001e\\u001f€�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäàáãå{ñÇ.<(+!&éêëèíîïìßĞİ*);^-/ÂÄÀ�ÃÅ[Ñş,%_>?øÉÊËÈ�Î�Ìı:ÖŞ'=ÜØabcdefghi«»}`¦±°jklmnopqrªºæ¸Æ¤µöstuvwxyz¡¿]$@®¢£¥·©§¶¼½¾¬|¯¨´×çABCDEFGHI­ô~òóõğJKLMNOPQR¹û\\\\ùúÿü÷STUVWXYZ²Ô#ÒÓÕ0123456789³Û\\\"Ùڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1250] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“�•–—�™š›śťžź ˇ˘�¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ�ľżŔ�ÂĂÄĹĆÇČÉĘËĚ�ÎĎ�ŃŇÓÔ�Ö×ŘŮÚŰÜ�Ţßŕáâăäĺćç�éęëěíî�đńňóôőö÷řůúűüýţ˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1251] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋ�ђ‘’“�•–—�™љ›њќћџ ЎўЈ¤�¦§�©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕї�БВГДЕЖЗИЙКЛМ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопр�туфхцчшщъыь�ю�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1252] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“�•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿À�ÂÃÄÅÆÇÈÉÊËÌ�Î��ÑÒÓÔÕÖרÙÚÛÜ�Þßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1253] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡�‰�‹�����‘’“�•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½Ύ��ΑΒΓΔΕΖΗΘΙΚΛΜ�ΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπ�ςστυφχψωϊϋό�ώ�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1254] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“�•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿À�ÂÃÄÅÆÇÈÉÊËÌ�Î�ĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1255] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹�����‘’“�•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹ�ֻּֽ־ֿ׀�ׂ׃װױײ׳״��������בגדהוזחטיךכל�מןנסעףפץצקרשת��‎��\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1256] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“�•–—ک™ڑ›œ‌�ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟�ءآأؤإئابةتثجحخدذرزسشصض×طظعغـ�قكàلâمنهوçèéêëىيîïًٌ�َô��÷ّùْûü‎�ے\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1257] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“�•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×Ų�ŚŪÜŻŽßąį�ćäåęē�éźėģķīļšńņó�õö÷ųłśūüżž˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1258] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“�•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿À�ÂĂÄÅÆÇÈÉÊË̀�Î��Ñ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë�íîïđṇ̃óôơö÷øùúûüư₫ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[47451] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥ßƒáíóúñѪº¿�¬½¼¡«»ãõØøœŒÀÃÕ¨´†¶©®™ijIJ�בגדהוזחטיכלמנסעפצקרשתןך�ףץ§∧∞αβΓπΣσµτΦΘΩδ∮φ∈∩≡±≥≤⌠⌡÷≈°∙·√�²³¯\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10000] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑�π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“�‘’÷◊ÿŸ�¤‹›�fl‡·‚„‰ÂÊ�ËÈ�Î�ÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸�˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10006] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩά�¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“�‘’÷ΉΊΌΎέήίό��αβψδεφγηιξκλμνοπώ�στθωςχυζϊϋ�ΰ�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10007] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�БВГДЕЖЗИЙКЛМ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“�‘’÷„Ўў�џ№�ё�абвгдежзийклмнопр�туфхцчшщъыь�ю¤\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10029] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄĀ�ÉĄÖÜáąČä�Ćć鏟Ďí�ĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ň�ÕőŌ–—“�‘’÷◊�ŔŕŘ‹›řŖŗŠ‚„šŚś�Ťť�ŽžŪÓÔūŮÚůŰűŲų�ýķŻ�żĢˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10079] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü�°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑�π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“�‘’÷◊ÿŸ�¤�ðÞþý·‚„‰ÂÊ�ËÈ�Î�ÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸�˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10081] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑�π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“�‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊ�ËÈ�Î�ÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸�˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28591] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿À�ÂÃÄÅÆÇÈÉÊËÌ�Î��ÑÒÓÔÕÖרÙÚÛÜ�Þßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28592] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ Ą˘�¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź�žżŔ�ÂĂÄĹĆÇČÉĘËĚ�ÎĎ�ŃŇÓÔ�Ö×ŘŮÚŰÜ�Ţßŕáâăäĺćç�éęëěíî�đńňóôőö÷řůúűüýţ˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28593] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�ݰħ²³´µĥ·¸ışğĵ½�żÀ�Â�ÄĊĈÇÈÉÊËÌ�Î��ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷�ùúûüŭ�˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28594] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ĄĸŖ¤Ĩϧ¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩšēģŧŊžŋĀ�ÂÃÄÅÆĮČÉĘËĖ�ÎĪ�ŅŌĶÔÕÖרŲÚÛÜŨŪß�áâãäåæį�éęëėíîīđņ�ķôõö÷øųúûüũū˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28595] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ �ЂЃЄЅІЇЈЉЊЋЌ­Ў��БВГДЕЖЗИЙКЛМ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопр�туфхцчшщъыь�ю�№ёђѓєѕіїјљњћќ§ўџ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28596] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـ�قكلمنهوىيًٌ�َ��ّْ�������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28597] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½Ύ��ΑΒΓΔΕΖΗΘΙΚΛΜ�ΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπ�ςστυφχψωϊϋό�ώ�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28598] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗�בגדהוזחטיךכל�מןנסעףפץצקרשת��‎��\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28599] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿À�ÂÃÄÅÆÇÈÉÊËÌ�Î�ĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28600] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ĄĒĢĪĨͧĻ�ŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀ�ÂÃÄÅÆĮČÉĘËĖ�Î��ŅŌÓÔÕÖŨØŲÚÛÜ�Þß�áâãäåæį�éęëėíîïðņ�óôõöũøųúûüýþĸ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28601] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ �ขฃคฅฆงจฉชซฌ�ฎ��ฑฒณดตถทธนบปผ�พฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เ�โใไๅๆ็่้๊๋์�๎��๑๒๓๔๕๖๗๘๙๚๛����\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28603] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ �¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×Ų�ŚŪÜŻŽßąį�ćäåęē�éźėģķīļšńņó�õö÷ųłśūüżž’\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28604] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀ�¶Ṗ�ṗẃṠỳẄẅṡÀ�ÂÃÄÅÆÇÈÉÊËÌ�Î�ŴÑÒÓÔÕÖṪØÙÚÛÜ�Ŷßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28605] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿À�ÂÃÄÅÆÇÈÉÊËÌ�Î��ÑÒÓÔÕÖרÙÚÛÜ�Þßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[28606] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ Ąą�€„Чš©Ș«Ź­źŻ°±ČłŽ�¶·ž�ș»ŒœŸżÀ�ÂĂÄĆÆÇÈÉÊËÌ�Î��ŃÒÓÔ�ÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[708] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~│┤éâ╡à╢çêëèïî╖╕╣║╗�ô╜╛ûù�└š›œ�žŸ�┴┬├¤─┼╞╟╚╔╩،╦«»░▒▓╠�╬╧╨╤╥╙؛╘╒╓؟╫ءآأؤإئابةتثجحخدذرزسشصضطظعغ█▄▌�▀ـ�قكلمنهوىيًٌ�َ��ّْ╪┘┌µ£■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[720] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�éâ„à†çêëèïî�Ž��ّْô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗�╜╛�└┴┬├─┼╞╟╚╔╩╦╠�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌�▀ضطظعغ�µقكلمنهوىي≡ًٌ�َ��≈°∙·√�²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[808] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�БВГДЕЖЗИЙКЛМ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗�╜╛�└┴┬├─┼╞╟╚╔╩╦╠�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌�▀р�туфхцчшщъыь�ю��ёЄєЇїЎў°∙·√№€■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[858] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤�ÂÀ©╣║╗�¢¥�└┴┬├─┼ãÃ╚╔╩╦╠�╬¤ð�ÊËÈ€�Î�┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙý�¯´­±‗¾¶§÷¸°¨·¹³²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[870] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—�Ž\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013�…\\b‡\\u0018\\u0019’�\\u001c\\u001d\\u001e\\u001f€�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäţáă�çć[.<(+!&éęëůíîľĺß]$*);^-/ÂÄ��ĂČÇĆ|,%_>?ˇÉĘËŮ�ÎĽĹ`:#@'=\\\"˘abcdefghiśňđýřş°jklmnopqrłńš¸˛¤ą~stuvwxyzŚŇ��ŘŞ˙ĄżŢݧžźŽŹ�ŃŠ¨´×{ABCDEFGHI­ôöŕóő}JKLMNOPQRĚűüťúě\\\\÷STUVWXYZ�ÔÖŔÓ�0123456789ĎŰܫڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[872] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ђЂѓЃё�єЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџ�юЮъЪа�бБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗�йЙ�└┴┬├─┼кК╚╔╩╦╠�╬€лЛмМн�оОп┘┌█▄П�▀ЯрР�СтТуУжЖвВьЬ№­ыЫзЗшШ�ЭщЩчЧ§■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1010] = (function(){ var d = \"�\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"£$%&’()*+,-./0123456789:;<=>?àABCDEFGHIJKLMNOPQRSTUVWXYZ°ç§ˆ_µabcdefghijklmnopqrstuvwxyzéùè¨���������������������������������������������������������������������������������������������������������������������������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1047] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—�Ž\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013�\\n\\b‡\\u0018\\u0019’�\\u001c\\u001d\\u001e\\u001f€�‚ƒ„…\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäàáãåçñ¢.<(+|&éêëèíîïìß!$*);^-/ÂÄÀ�ÃÅÇѦ,%_>?øÉÊËÈ�Î�Ì`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿�[Þ®¬£¥·©§¶¼½¾�¨¯]´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1132] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~����������������������������������ຂຄງຈສຊ�ດຕຖທນບປຜ�ພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເ�ໂໃໄ່້໊໋໌�ໆ�ໜ�₭�����������������໑໒໓໔໕໖໗໘໙��¢¬¦ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1140] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—�Ž\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013�…\\b‡\\u0018\\u0019’�\\u001c\\u001d\\u001e\\u001f€�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäàáãåçñ¢.<(+|&éêëèíîïìß!$*);¬-/ÂÄÀ�ÃÅÇѦ,%_>?øÉÊËÈ�Î�Ì`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ~stuvwxyz¡¿��Þ®^£¥·©§¶¼½¾[]¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1141] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—�Ž\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013�…\\b‡\\u0018\\u0019’�\\u001c\\u001d\\u001e\\u001f€�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  â{àáãåçñÄ.<(+!&éêëèíîïì~Ü$*);^-/Â[À�ÃÅÇÑö,%_>?øÉÊËÈ�Î�Ì`:#§'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µßstuvwxyz¡¿��Þ®¢£¥·©@¶¼½¾¬|¯¨´×äABCDEFGHI­ô¦òóõüJKLMNOPQR¹û}ùúÿÖ÷STUVWXYZ²Ô\\\\ÒÓÕ0123456789³Û]Ùڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1142] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—�Ž\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013�…\\b‡\\u0018\\u0019’�\\u001c\\u001d\\u001e\\u001f€�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäàáã}çñ#.<(+!&éêëèíîïì߀Å*);^-/ÂÄÀ�Ã$ÇÑø,%_>?¦ÉÊËÈ�Î�Ì`:ÆØ'=\\\"@abcdefghi«»ðýþ±°jklmnopqrªº{¸[]µüstuvwxyz¡¿��Þ®¢£¥·©§¶¼½¾¬|¯¨´×æABCDEFGHI­ôöòóõåJKLMNOPQR¹û~ùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1143] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—�Ž\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013�…\\b‡\\u0018\\u0019’�\\u001c\\u001d\\u001e\\u001f€�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  â{àáã}çñ§.<(+!&`êëèíîïì߀Å*);^-/Â#À�Ã$ÇÑö,%_>?ø\\\\ÊËÈ�Î�Ìé:ÄÖ'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ]µüstuvwxyz¡¿��Þ®¢£¥·©[¶¼½¾¬|¯¨´×äABCDEFGHI­ô¦òóõåJKLMNOPQR¹û~ùúÿÉ÷STUVWXYZ²Ô@ÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1144] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—�Ž\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013�…\\b‡\\u0018\\u0019’�\\u001c\\u001d\\u001e\\u001f€�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âä{áãå\\\\ñ°.<(+!&]êë}íîï~ßé$*);^-/ÂÄÀ�ÃÅÇÑò,%_>?øÉÊËÈ�Î�Ìù:£§'=\\\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ€µìstuvwxyz¡¿��Þ®¢#¥·©@¶¼½¾¬|¯¨´×àABCDEFGHI­ôö¦óõèJKLMNOPQR¹ûü`úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1145] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—�Ž\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013�…\\b‡\\u0018\\u0019’�\\u001c\\u001d\\u001e\\u001f€�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäàáãåç¦[.<(+|&éêëèíîïìß]$*);¬-/ÂÄÀ�ÃÅÇ#ñ,%_>?øÉÊËÈ�Î�Ì`:Ñ@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ¨stuvwxyz¡¿��Þ®¢£¥·©§¶¼½¾^!¯~´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1146] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—�Ž\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013�…\\b‡\\u0018\\u0019’�\\u001c\\u001d\\u001e\\u001f€�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäàáãåçñ$.<(+|&éêëèíîïìß!£*);¬-/ÂÄÀ�ÃÅÇѦ,%_>?øÉÊËÈ�Î�Ì`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ¯stuvwxyz¡¿��Þ®¢[¥·©§¶¼½¾^]~¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1147] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—�Ž\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013�…\\b‡\\u0018\\u0019’�\\u001c\\u001d\\u001e\\u001f€�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âä@áãå\\\\ñ°.<(+!&{êë}íîïìß§$*);^-/ÂÄÀ�ÃÅÇÑù,%_>?øÉÊËÈ�Î�̵:£à'=\\\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ€`¨stuvwxyz¡¿��Þ®¢#¥·©]¶¼½¾¬|¯~´×éABCDEFGHI­ôöòóõèJKLMNOPQR¹ûü¦úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1148] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—�Ž\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013�…\\b‡\\u0018\\u0019’�\\u001c\\u001d\\u001e\\u001f€�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäàáãåçñ[.<(+!&éêëèíîïìß]$*);^-/ÂÄÀ�ÃÅÇѦ,%_>?øÉÊËÈ�Î�Ì`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ~stuvwxyz¡¿��Þ®¢£¥·©§¶¼½¾¬|¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1149] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003œ\\t†—�Ž\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013�…\\b‡\\u0018\\u0019’�\\u001c\\u001d\\u001e\\u001f€�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäàáãåçñÞ.<(+!&éêëèíîïì߯$*);Ö-/ÂÄÀ�ÃÅÇѦ,%_>?øÉÊËÈ�Î�Ìð:#�'=\\\"Øabcdefghi«»`ý{±°jklmnopqrªº}¸]€µöstuvwxyz¡¿@�[®¢£¥·©§¶¼½¾¬|¯¨\\\\×þABCDEFGHI­ô~òóõæJKLMNOPQR¹ûüùúÿ´÷STUVWXYZ²Ô^ÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[1361] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ�����������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[132] = \"������������������������������������������������������������������ᆨᆩᆪᆫᆬᆭᆮᆯᆰᆱᆲᆳᆴᆵᆶᆷ�ᆸᆹᆺᆻᆼᆽᆾᆿᇀ�ᇂ���ᅡ�������������������������������ᅢ�������������������������������ᅣ�������������������������������ᅤ�������������������������������ᅥ������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[133] = \"�����������������������������������������������������������������ᅦ�������������������������������ᅧ�������������������������������ᅨ�������������������������������ᅩ�������������������������������ᅪ�������������������������������ᅫ������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\n\t\tD[134] = \"�����������������������������������������������������������������ᅬ�������������������������������ᅭ�������������������������������ᅮ�������������������������������ᅯ�������������������������������ᅰ�������������������������������ᅱ������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\n\t\tD[135] = \"�����������������������������������������������������������������ᅲ�������������������������������ᅳ�������������������������������ᅴ�������������������������������ᅵ����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"�����������������������������������������������������������������ᄀ�������������������������������가�갂갃간갅갆갇갈갉갊갋갌�갎���갑값갓갔강갖갗갘같갚갛���개�갞갟갠갡갢갣갤갥갦갧갨갩갪갫갬�갭갮갯갰갱갲갳갴갵갶갷���갸갹갺갻갼갽갾갿걀�걂걃걄걅걆걇걈�걉걊걋걌�걎��걑걒걓���걔걕걖걗걘걙걚걛걜�걞걟걠걡걢걣걤�걥걦걧걨걩걪걫걬걭걮걯���거걱걲걳건걵걶걷걸걹걺걻걼걽걾걿검��겂것겄겅겆겇겈겉겊겋��\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"�����������������������������������������������������������������게�겎��겑겒겓겔겕겖겗겘겙겚겛겜��겞겟겠겡겢겣겤겥겦겧���겨격겪겫견겭겮겯결겱겲겳겴겵겶겷겸�겹겺겻겼경겾겿곀�곂곃���계곅곆곇곈곉곊곋곌�곎��곑곒곓곔�곕곖곗곘곙곚곛곜�곞곟���고곡곢곣곤곥곦곧골곩곪곫곬곭곮곯곰�곱곲곳곴공곶곷곸곹곺곻���과곽곾곿관�괂괃괄괅괆괇괈괉괊괋괌��괎��광괒괓괔괕괖괗���괘괙괚괛괜�괞괟괠괡괢괣괤괥괦괧괨�괩괪괫괬괭괮괯괰괱괲괳��\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"�����������������������������������������������������������������괴괵괶괷괸괹괺괻괼괽괾괿굀�굂굃굄�굅굆굇굈굉굊굋굌�굎�����굑굒굓굔굕굖굗굘굙굚굛굜�굞굟굠�굡굢굣굤굥굦굧굨굩굪굫���구국굮굯군굱굲굳굴굵굶굷굸굹굺굻굼�굽굾굿궀�궂궃궄궅궆궇���궈궉궊궋권�궎��궑궒궓궔궕궖궗궘�궙궚궛궜�궞궟궠궡궢궣���궤궥궦궧궨궩궪궫궬궭궮궯궰궱궲궳궴�궵궶궷궸궹궺궻궼궽궾궿���귀�귂귃귄귅귆귇귈귉귊귋귌�귎���귑귒귓귔귕귖귗귘귙귚귛��\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"�����������������������������������������������������������������규�귞귟균귡귢귣귤귥귦귧귨귩귪귫귬�귭귮귯귰귱귲귳귴귵귶귷���그극귺귻근귽귾귿글�긂긃긄긅긆긇금�급긊긋긌�긎��긑긒긓���긔긕긖긗긘긙긚긛긜�긞긟긠긡긢긣긤�긥긦긧긨긩긪긫긬긭긮긯���기긱긲긳긴긵긶긷길긹긺긻긼긽긾긿김��깂깃깄깅깆깇깈깉깊깋������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"�������������������������������������������������������������������������������������������������까�깎��깑깒깓깔깕깖깗깘깙깚깛깜��깞깟깠깡깢깣깤깥깦깧���깨깩깪깫깬깭깮깯깰깱깲깳깴깵깶깷깸�깹깺깻깼깽깾깿꺀�꺂꺃���꺄꺅꺆꺇꺈꺉꺊꺋꺌�꺎��꺑꺒꺓꺔�꺕꺖꺗꺘꺙꺚꺛꺜�꺞꺟���꺠꺡꺢꺣꺤꺥꺦꺧꺨꺩꺪꺫꺬꺭꺮꺯꺰�꺱꺲꺳꺴꺵꺶꺷꺸꺹꺺꺻���꺼꺽꺾꺿껀�껂껃껄껅껆껇껈껉껊껋껌��껎��껑껒껓껔껕껖껗��\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"�����������������������������������������������������������������께껙껚껛껜�껞껟껠껡껢껣껤껥껦껧껨�껩껪껫껬껭껮껯껰껱껲껳���껴껵껶껷껸껹껺껻껼껽껾껿꼀�꼂꼃꼄�꼅꼆꼇꼈꼉꼊꼋꼌�꼎�����꼑꼒꼓꼔꼕꼖꼗꼘꼙꼚꼛꼜�꼞꼟꼠�꼡꼢꼣꼤꼥꼦꼧꼨꼩꼪꼫���꼬꼭꼮꼯꼰꼱꼲꼳꼴꼵꼶꼷꼸꼹꼺꼻꼼�꼽꼾꼿꽀�꽂꽃꽄꽅꽆꽇���꽈꽉꽊꽋꽌�꽎��꽑꽒꽓꽔꽕꽖꽗꽘�꽙꽚꽛꽜�꽞꽟꽠꽡꽢꽣���꽤꽥꽦꽧꽨꽩꽪꽫꽬꽭꽮꽯꽰꽱꽲꽳꽴�꽵꽶꽷꽸꽹꽺꽻꽼꽽꽾꽿��\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"�����������������������������������������������������������������꾀�꾂꾃꾄꾅꾆꾇꾈꾉꾊꾋꾌�꾎���꾑꾒꾓꾔꾕꾖꾗꾘꾙꾚꾛���꾜�꾞꾟꾠꾡꾢꾣꾤꾥꾦꾧꾨꾩꾪꾫꾬�꾭꾮꾯꾰꾱꾲꾳꾴꾵꾶꾷���꾸꾹꾺꾻꾼꾽꾾꾿꿀�꿂꿃꿄꿅꿆꿇꿈�꿉꿊꿋꿌�꿎��꿑꿒꿓���꿔꿕꿖꿗꿘꿙꿚꿛꿜�꿞꿟꿠꿡꿢꿣꿤�꿥꿦꿧꿨꿩꿪꿫꿬꿭꿮꿯���꿰꿱꿲꿳꿴꿵꿶꿷꿸꿹꿺꿻꿼꿽꿾꿿뀀��뀂뀃뀄뀅뀆뀇뀈뀉뀊뀋���뀌�뀎��뀑뀒뀓뀔뀕뀖뀗뀘뀙뀚뀛뀜��뀞뀟뀠뀡뀢뀣뀤뀥뀦뀧��\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"�����������������������������������������������������������������뀨뀩뀪뀫뀬뀭뀮뀯뀰뀱뀲뀳뀴뀵뀶뀷뀸�뀹뀺뀻뀼뀽뀾뀿���������������������������������������������������������������������������낀�낂낃낄낅낆낇낈낉낊낋낌��낎��낑낒낓낔낕낖낗������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"�����������������������������������������������������������������ᄂ�������������������������������나낙낚낛난�낞낟날낡낢낣낤낥낦낧남�납낪낫났낭낮낯낰낱낲낳���내낵낶낷낸낹낺낻낼낽낾낿냀�냂냃냄�냅냆냇냈냉냊냋냌�냎�����냑냒냓냔냕냖냗냘냙냚냛냜�냞냟냠�냡냢냣냤냥냦냧냨냩냪냫���냬냭냮냯냰냱냲냳냴냵냶냷냸냹냺냻냼�냽냾냿넀�넂넃넄넅넆넇���너넉넊넋넌�넎��넑넒넓넔넕넖넗넘�넙넚넛넜�넞넟넠넡넢넣��\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"�����������������������������������������������������������������네넥넦넧넨넩넪넫넬넭넮넯넰넱넲넳넴�넵넶넷넸넹넺넻넼넽넾넿���녀�녂녃년녅녆녇녈녉녊녋녌�녎���녑녒녓녔녕녖녗녘녙녚녛���녜�녞녟녠녡녢녣녤녥녦녧녨녩녪녫녬�녭녮녯녰녱녲녳녴녵녶녷���노녹녺녻논녽녾녿놀�놂놃놄놅놆놇놈�놉놊놋놌�놎��놑높놓���놔놕놖놗놘놙놚놛놜�놞놟놠놡놢놣놤�놥놦놧놨놩놪놫놬놭놮놯���놰놱놲놳놴놵놶놷놸놹놺놻놼놽놾놿뇀��뇂뇃뇄뇅뇆뇇뇈뇉뇊뇋��\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"�����������������������������������������������������������������뇌�뇎��뇑뇒뇓뇔뇕뇖뇗뇘뇙뇚뇛뇜��뇞뇟뇠뇡뇢뇣뇤뇥뇦뇧���뇨뇩뇪뇫뇬뇭뇮뇯뇰뇱뇲뇳뇴뇵뇶뇷뇸�뇹뇺뇻뇼뇽뇾뇿눀�눂눃���누눅눆눇눈눉눊눋눌�눎��눑눒눓눔�눕눖눗눘눙눚눛눜�눞눟���눠눡눢눣눤눥눦눧눨눩눪눫눬눭눮눯눰�눱눲눳눴눵눶눷눸눹눺눻���눼눽눾눿뉀�뉂뉃뉄뉅뉆뉇뉈뉉뉊뉋뉌��뉎��뉑뉒뉓뉔뉕뉖뉗���뉘뉙뉚뉛뉜�뉞뉟뉠뉡뉢뉣뉤뉥뉦뉧뉨�뉩뉪뉫뉬뉭뉮뉯뉰뉱뉲뉳��\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"�����������������������������������������������������������������뉴뉵뉶뉷뉸뉹뉺뉻뉼뉽뉾뉿늀�늂늃늄�늅늆늇늈늉늊늋늌�늎�����늑늒늓는늕늖늗늘늙늚늛늜�늞늟늠�늡늢늣늤능늦늧늨늩늪늫���늬늭늮늯늰늱늲늳늴늵늶늷늸늹늺늻늼�늽늾늿닀�닂닃닄닅닆닇���니닉닊닋닌�닎��닑닒닓닔닕닖닗님�닙닚닛닜�닞닟닠닡닢닣������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"�����������������������������������������������������������������ᄃ�������������������������������다닥닦닧단닩닪닫달닭닮닯닰닱닲닳담�답닶닷닸당닺닻닼닽닾닿���대�댂댃댄댅댆댇댈댉댊댋댌�댎���댑댒댓댔댕댖댗댘댙댚댛���댜�댞댟댠댡댢댣댤댥댦댧댨댩댪댫댬�댭댮댯댰댱댲댳댴댵댶댷���댸댹댺댻댼댽댾댿�������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"���������������������������������������������������������������������������������뎀��뎂뎃뎄뎅뎆뎇뎈뎉뎊뎋���뎌�뎎��뎑뎒뎓뎔뎕뎖뎗뎘뎙뎚뎛뎜��뎞뎟뎠뎡뎢뎣뎤뎥뎦뎧���뎨뎩뎪뎫뎬뎭뎮뎯뎰뎱뎲뎳뎴뎵뎶뎷뎸�뎹뎺뎻뎼뎽뎾뎿������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"�������������������������������������������������������������������������������������������������������������둀�둂둃둄�둅둆둇둈둉둊둋둌�둎�����둑둒둓둔둕둖둗둘둙둚둛둜�둞둟둠�둡둢둣둤둥둦둧둨둩둪둫���둬둭둮둯둰둱둲둳둴둵둶둷둸둹둺둻둼�둽둾둿뒀�뒂뒃뒄뒅뒆뒇���뒈뒉뒊뒋뒌�뒎��뒑뒒뒓뒔뒕뒖뒗뒘�뒙뒚뒛뒜�뒞뒟뒠뒡뒢뒣���뒤뒥뒦뒧뒨뒩뒪뒫뒬뒭뒮뒯뒰뒱뒲뒳뒴�뒵뒶뒷뒸뒹뒺뒻뒼뒽뒾뒿��\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"�����������������������������������������������������������������듀�듂듃듄듅듆듇듈듉듊듋듌�듎���듑듒듓듔듕듖듗듘듙듚듛���드�듞듟든듡듢듣들듥듦듧듨듩듪듫듬�듭듮듯듰등듲듳듴듵듶듷���듸듹듺듻듼듽듾듿딀�딂딃딄딅딆딇딈�딉딊딋딌�딎��딑딒딓���디딕딖딗딘딙딚딛딜�딞딟딠딡딢딣딤�딥딦딧딨딩딪딫딬딭딮딯������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"�����������������������������������������������������������������ᄄ�������������������������������따딱딲딳딴딵딶딷딸딹딺딻딼딽딾딿땀��땂땃땄땅땆땇땈땉땊땋���때�땎��땑땒땓땔땕땖땗땘땙땚땛땜��땞땟땠땡땢땣땤땥땦땧���땨땩땪땫땬땭땮땯땰땱땲땳땴땵땶땷땸�땹땺땻땼땽땾땿떀�떂떃���떄떅떆떇떈떉떊떋떌�떎��떑떒떓떔�떕떖떗떘떙떚떛떜�떞떟���떠떡떢떣떤떥떦떧떨떩떪떫떬떭떮떯떰�떱떲떳떴떵떶떷떸떹떺떻��\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"�����������������������������������������������������������������떼떽떾떿뗀�뗂뗃뗄뗅뗆뗇뗈뗉뗊뗋뗌��뗎��뗑뗒뗓뗔뗕뗖뗗���뗘뗙뗚뗛뗜�뗞뗟뗠뗡뗢뗣뗤뗥뗦뗧뗨�뗩뗪뗫뗬뗭뗮뗯뗰뗱뗲뗳���뗴뗵뗶뗷뗸뗹뗺뗻뗼뗽뗾뗿똀�똂똃똄�똅똆똇똈똉똊똋똌�똎�����똑똒똓똔똕똖똗똘똙똚똛똜�똞똟똠�똡똢똣똤똥똦똧똨똩똪똫���똬똭똮똯똰똱똲똳똴똵똶똷똸똹똺똻똼�똽똾똿뙀�뙂뙃뙄뙅뙆뙇���뙈뙉뙊뙋뙌�뙎��뙑뙒뙓뙔뙕뙖뙗뙘�뙙뙚뙛뙜�뙞뙟뙠뙡뙢뙣��\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"�����������������������������������������������������������������뙤뙥뙦뙧뙨뙩뙪뙫뙬뙭뙮뙯뙰뙱뙲뙳뙴�뙵뙶뙷뙸뙹뙺뙻뙼뙽뙾뙿���뚀�뚂뚃뚄뚅뚆뚇뚈뚉뚊뚋뚌�뚎���뚑뚒뚓뚔뚕뚖뚗뚘뚙뚚뚛���뚜�뚞뚟뚠뚡뚢뚣뚤뚥뚦뚧뚨뚩뚪뚫뚬�뚭뚮뚯뚰뚱뚲뚳뚴뚵뚶뚷���뚸뚹뚺뚻뚼뚽뚾뚿뛀�뛂뛃뛄뛅뛆뛇뛈�뛉뛊뛋뛌�뛎��뛑뛒뛓���뛔뛕뛖뛗뛘뛙뛚뛛뛜�뛞뛟뛠뛡뛢뛣뛤�뛥뛦뛧뛨뛩뛪뛫뛬뛭뛮뛯���뛰뛱뛲뛳뛴뛵뛶뛷뛸뛹뛺뛻뛼뛽뛾뛿뜀��뜂뜃뜄뜅뜆뜇뜈뜉뜊뜋��\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"�����������������������������������������������������������������뜌�뜎��뜑뜒뜓뜔뜕뜖뜗뜘뜙뜚뜛뜜��뜞뜟뜠뜡뜢뜣뜤뜥뜦뜧���뜨뜩뜪뜫뜬뜭뜮뜯뜰뜱뜲뜳뜴뜵뜶뜷뜸�뜹뜺뜻뜼뜽뜾뜿��������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"�����������������������������������������������������������������ᄅ�����������������������������������란�랂랃랄랅랆랇랈랉랊랋람��랎��랑랒랓랔랕랖랗���래랙랚랛랜�랞랟랠랡랢랣랤랥랦랧램�랩랪랫랬랭랮랯랰랱랲랳���랴략랶랷랸랹랺랻랼랽랾랿럀�럂럃럄�럅럆럇럈량럊럋럌�럎�����럑럒럓럔럕럖럗럘럙럚럛럜�럞럟럠�럡럢럣럤럥럦럧럨럩럪럫���러럭럮럯런럱럲럳럴럵럶럷럸럹럺럻럼�럽럾럿렀�렂렃렄렅렆렇��\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"�����������������������������������������������������������������레렉렊렋렌�렎��렑렒렓렔렕렖렗렘�렙렚렛렜�렞렟렠렡렢렣���려력렦렧련렩렪렫렬렭렮렯렰렱렲렳렴�렵렶렷렸령렺렻렼렽렾렿���례�롂롃롄롅롆롇롈롉롊롋롌�롎���롑롒롓롔롕롖롗롘롙롚롛���로�롞롟론롡롢롣롤롥롦롧롨롩롪롫롬�롭롮롯롰롱롲롳롴롵롶롷���롸롹롺롻롼롽롾롿뢀�뢂뢃뢄뢅뢆뢇뢈�뢉뢊뢋뢌�뢎��뢑뢒뢓���뢔뢕뢖뢗뢘뢙뢚뢛뢜�뢞뢟뢠뢡뢢뢣뢤�뢥뢦뢧뢨뢩뢪뢫뢬뢭뢮뢯��\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"�����������������������������������������������������������������뢰뢱뢲뢳뢴뢵뢶뢷뢸뢹뢺뢻뢼뢽뢾뢿룀��룂룃룄룅룆룇룈룉룊룋���료�룎��룑룒룓룔룕룖룗룘룙룚룛룜��룞룟룠룡룢룣룤룥룦룧���루룩룪룫룬룭룮룯룰룱룲룳룴룵룶룷룸�룹룺룻룼룽룾룿뤀�뤂뤃���뤄뤅뤆뤇뤈뤉뤊뤋뤌�뤎��뤑뤒뤓뤔�뤕뤖뤗뤘뤙뤚뤛뤜�뤞뤟���뤠뤡뤢뤣뤤뤥뤦뤧뤨뤩뤪뤫뤬뤭뤮뤯뤰�뤱뤲뤳뤴뤵뤶뤷뤸뤹뤺뤻���뤼뤽뤾뤿륀�륂륃륄륅륆륇륈륉륊륋륌��륎��륑륒륓륔륕륖륗��\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"�����������������������������������������������������������������류륙륚륛륜�륞륟률륡륢륣륤륥륦륧륨�륩륪륫륬륭륮륯륰륱륲륳���르륵륶륷른륹륺륻를륽륾륿릀�릂릃름�릅릆릇릈릉릊릋릌�릎�����릑릒릓릔릕릖릗릘릙릚릛릜�릞릟릠�릡릢릣릤릥릦릧릨릩릪릫���리릭릮릯린릱릲릳릴릵릶릷릸릹릺릻림�립릾릿맀�맂맃맄맅맆맇������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"�����������������������������������������������������������������ᄆ�������������������������������마막맊맋만�많��맑맒맓맔맕맖맗맘�맙맚맛맜�맞맟맠맡맢맣���매맥맦맧맨맩맪맫맬맭맮맯맰맱맲맳맴�맵맶맷맸맹맺맻맼맽맾맿���먀�먂먃먄먅먆먇먈먉먊먋먌�먎���먑먒먓먔먕먖먗먘먙먚먛���먜�먞먟먠먡먢먣먤먥먦먧먨먩먪먫먬�먭먮먯먰먱먲먳먴먵먶먷���머먹먺먻먼먽먾먿멀�멂멃멄멅멆멇멈�멉멊멋멌�멎��멑멒멓��\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"�����������������������������������������������������������������메멕멖멗멘멙멚멛멜�멞멟멠멡멢멣멤�멥멦멧멨멩멪멫멬멭멮멯���며멱멲멳면멵멶멷멸멹멺멻멼멽멾멿몀��몂몃몄명몆몇몈몉몊몋���몌�몎��몑몒몓몔몕몖몗몘몙몚몛몜��몞몟몠몡몢몣몤몥몦몧���모목몪몫몬몭몮몯몰몱몲몳몴몵몶몷몸�몹몺못몼몽몾몿뫀�뫂뫃���뫄뫅뫆뫇뫈뫉뫊뫋뫌�뫎��뫑뫒뫓뫔�뫕뫖뫗뫘뫙뫚뫛뫜�뫞뫟���뫠뫡뫢뫣뫤뫥뫦뫧뫨뫩뫪뫫뫬뫭뫮뫯뫰�뫱뫲뫳뫴뫵뫶뫷뫸뫹뫺뫻��\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"�����������������������������������������������������������������뫼뫽뫾뫿묀�묂묃묄묅묆묇묈묉묊묋묌��묎��묑묒묓묔묕묖묗���묘묙묚묛묜�묞묟묠묡묢묣묤묥묦묧묨�묩묪묫묬묭묮묯묰묱묲묳���무묵묶묷문묹묺묻물묽묾묿뭀�뭂뭃뭄�뭅뭆뭇뭈뭉뭊뭋뭌�뭎�����뭑뭒뭓뭔뭕뭖뭗뭘뭙뭚뭛뭜�뭞뭟뭠�뭡뭢뭣뭤뭥뭦뭧뭨뭩뭪뭫���뭬뭭뭮뭯뭰뭱뭲뭳뭴뭵뭶뭷뭸뭹뭺뭻뭼�뭽뭾뭿뮀�뮂뮃뮄뮅뮆뮇���뮈뮉뮊뮋뮌�뮎��뮑뮒뮓뮔뮕뮖뮗뮘�뮙뮚뮛뮜�뮞뮟뮠뮡뮢뮣��\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"�����������������������������������������������������������������뮤뮥뮦뮧뮨뮩뮪뮫뮬뮭뮮뮯뮰뮱뮲뮳뮴�뮵뮶뮷뮸뮹뮺뮻뮼뮽뮾뮿���므�믂믃믄믅믆믇믈믉믊믋믌�믎���믑믒믓믔믕믖믗믘믙믚믛���믜�믞믟믠믡믢믣믤믥믦믧믨믩믪믫믬�믭믮믯믰믱믲믳믴믵믶믷���미믹믺믻민믽믾믿밀�밂밃밄밅밆밇밈�밉밊밋밌�밎��밑밒밓������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������ᄇ�������������������������������바박밖밗반밙밚받발�밞밟밠밡밢밣밤�밥밦밧밨방밪밫밬밭밮밯���배백밲밳밴밵밶밷밸밹밺밻밼밽밾밿뱀��뱂뱃뱄뱅뱆뱇뱈뱉뱊뱋���뱌�뱎��뱑뱒뱓뱔뱕뱖뱗뱘뱙뱚뱛뱜��뱞뱟뱠뱡뱢뱣뱤뱥뱦뱧���뱨뱩뱪뱫뱬뱭뱮뱯뱰뱱뱲뱳뱴뱵뱶뱷뱸�뱹뱺뱻뱼뱽뱾뱿벀�벂벃���버벅벆벇번벉벊벋벌�벎��벑벒벓범�법벖벗벘벙벚벛벜�벞벟��\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"�����������������������������������������������������������������베벡벢벣벤벥벦벧벨벩벪벫벬벭벮벯벰�벱벲벳벴벵벶벷벸벹벺벻���벼벽벾벿변�볂볃별볅볆볇볈볉볊볋볌��볎��병볒볓볔볕볖볗���볘볙볚볛볜�볞볟볠볡볢볣볤볥볦볧볨�볩볪볫볬볭볮볯볰볱볲볳���보복볶볷본볹볺볻볼볽볾볿봀�봂봃봄�봅봆봇봈봉봊봋봌�봎�����봑봒봓봔봕봖봗봘봙봚봛봜�봞봟봠�봡봢봣봤봥봦봧봨봩봪봫���봬봭봮봯봰봱봲봳봴봵봶봷봸봹봺봻봼�봽봾봿뵀�뵂뵃뵄뵅뵆뵇��\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������뵈뵉뵊뵋뵌�뵎��뵑뵒뵓뵔뵕뵖뵗뵘�뵙뵚뵛뵜�뵞뵟뵠뵡뵢뵣���뵤뵥뵦뵧뵨뵩뵪뵫뵬뵭뵮뵯뵰뵱뵲뵳뵴�뵵뵶뵷뵸뵹뵺뵻뵼뵽뵾뵿���부�붂붃분붅붆붇불붉붊붋붌�붎���붑붒붓붔붕붖붗붘붙붚붛���붜�붞붟붠붡붢붣붤붥붦붧붨붩붪붫붬�붭붮붯붰붱붲붳붴붵붶붷���붸붹붺붻붼붽붾붿뷀�뷂뷃뷄뷅뷆뷇뷈�뷉뷊뷋뷌�뷎��뷑뷒뷓���뷔뷕뷖뷗뷘뷙뷚뷛뷜�뷞뷟뷠뷡뷢뷣뷤�뷥뷦뷧뷨뷩뷪뷫뷬뷭뷮뷯��\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������뷰뷱뷲뷳뷴뷵뷶뷷뷸뷹뷺뷻뷼뷽뷾뷿븀��븂븃븄븅븆븇븈븉븊븋���브�븎��븑븒븓블븕븖븗븘븙븚븛븜��븞븟븠븡븢븣븤븥븦븧���븨븩븪븫븬븭븮븯븰븱븲븳븴븵븶븷븸�븹븺븻븼븽븾븿빀�빂빃���비빅빆빇빈빉빊빋빌�빎��빑빒빓빔�빕빖빗빘빙빚빛빜�빞빟������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"�����������������������������������������������������������������ᄈ�������������������������������빠빡빢빣빤빥빦빧빨빩빪빫빬빭빮빯빰�빱빲빳빴빵빶빷빸빹빺빻���빼빽빾빿뺀�뺂뺃뺄뺅뺆뺇뺈뺉뺊뺋뺌��뺎��뺑뺒뺓뺔뺕뺖뺗���뺘뺙뺚뺛뺜�뺞뺟뺠뺡뺢뺣뺤뺥뺦뺧뺨�뺩뺪뺫뺬뺭뺮뺯뺰뺱뺲뺳���뺴뺵뺶뺷뺸뺹뺺뺻뺼뺽뺾뺿뻀�뻂뻃뻄�뻅뻆뻇뻈뻉뻊뻋뻌�뻎�����뻑뻒뻓뻔뻕뻖뻗뻘뻙뻚뻛뻜�뻞뻟뻠�뻡뻢뻣뻤뻥뻦뻧뻨뻩뻪뻫��\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"�����������������������������������������������������������������뻬뻭뻮뻯뻰뻱뻲뻳뻴뻵뻶뻷뻸뻹뻺뻻뻼�뻽뻾뻿뼀�뼂뼃뼄뼅뼆뼇���뼈뼉뼊뼋뼌�뼎��뼑뼒뼓뼔뼕뼖뼗뼘�뼙뼚뼛뼜�뼞뼟뼠뼡뼢뼣���뼤뼥뼦뼧뼨뼩뼪뼫뼬뼭뼮뼯뼰뼱뼲뼳뼴�뼵뼶뼷뼸뼹뼺뼻뼼뼽뼾뼿���뽀�뽂뽃뽄뽅뽆뽇뽈뽉뽊뽋뽌�뽎���뽑뽒뽓뽔뽕뽖뽗뽘뽙뽚뽛���뽜�뽞뽟뽠뽡뽢뽣뽤뽥뽦뽧뽨뽩뽪뽫뽬�뽭뽮뽯뽰뽱뽲뽳뽴뽵뽶뽷���뽸뽹뽺뽻뽼뽽뽾뽿뾀�뾂뾃뾄뾅뾆뾇뾈�뾉뾊뾋뾌�뾎��뾑뾒뾓��\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"�����������������������������������������������������������������뾔뾕뾖뾗뾘뾙뾚뾛뾜�뾞뾟뾠뾡뾢뾣뾤�뾥뾦뾧뾨뾩뾪뾫뾬뾭뾮뾯���뾰뾱뾲뾳뾴뾵뾶뾷뾸뾹뾺뾻뾼뾽뾾뾿뿀��뿂뿃뿄뿅뿆뿇뿈뿉뿊뿋���뿌�뿎��뿑뿒뿓뿔뿕뿖뿗뿘뿙뿚뿛뿜��뿞뿟뿠뿡뿢뿣뿤뿥뿦뿧���뿨뿩뿪뿫뿬뿭뿮뿯뿰뿱뿲뿳뿴뿵뿶뿷뿸�뿹뿺뿻뿼뿽뿾뿿쀀�쀂쀃���쀄쀅쀆쀇쀈쀉쀊쀋쀌�쀎��쀑쀒쀓쀔�쀕쀖쀗쀘쀙쀚쀛쀜�쀞쀟���쀠쀡쀢쀣쀤쀥쀦쀧쀨쀩쀪쀫쀬쀭쀮쀯쀰�쀱쀲쀳쀴쀵쀶쀷쀸쀹쀺쀻��\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"�����������������������������������������������������������������쀼쀽쀾쀿������������������������������������������������������������������������삀�삂삃삄�삅삆삇삈삉삊삋삌�삎�����삑삒삓삔삕삖삗삘삙삚삛삜�삞삟삠�삡삢삣삤삥삦삧삨삩삪삫������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"�����������������������������������������������������������������ᄉ�������������������������������사삭삮삯산삱삲삳살삵삶삷삸삹삺삻삼�삽삾삿샀�샂샃샄샅샆샇���새색샊샋샌�샎��샑샒샓샔샕샖샗샘�샙샚샛샜�샞샟샠샡샢샣���샤샥샦샧샨샩샪샫샬샭샮샯샰샱샲샳샴�샵샶샷샸샹샺샻샼샽샾샿���섀�섂섃섄섅섆섇섈섉섊섋섌�섎���섑섒섓섔섕섖섗섘섙섚섛���서�섞섟선섡섢섣설섥섦섧섨섩섪섫섬�섭섮섯섰성섲섳섴섵섶섷��\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"�����������������������������������������������������������������세섹섺섻센섽섾섿셀�셂셃셄셅셆셇셈�셉셊셋셌�셎��셑셒셓���셔셕셖셗션셙셚셛셜�셞셟셠셡셢셣셤�셥셦셧셨셩셪셫셬셭셮셯���셰셱셲셳셴셵셶셷셸셹셺셻셼셽셾셿솀��솂솃솄솅솆솇솈솉솊솋���소�솎��솑솒솓솔솕솖솗솘솙솚솛솜��솞솟솠송솢솣솤솥솦솧���솨솩솪솫솬솭솮솯솰솱솲솳솴솵솶솷솸�솹솺솻솼솽솾솿쇀�쇂쇃���쇄쇅쇆쇇쇈쇉쇊쇋쇌�쇎��쇑쇒쇓쇔�쇕쇖쇗쇘쇙쇚쇛쇜�쇞쇟��\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"�����������������������������������������������������������������쇠쇡쇢쇣쇤쇥쇦쇧쇨쇩쇪쇫쇬쇭쇮쇯쇰�쇱쇲쇳쇴쇵쇶쇷쇸쇹쇺쇻���쇼쇽쇾쇿숀�숂숃숄숅숆숇숈숉숊숋숌��숎��숑숒숓숔숕숖숗���수숙숚숛순�숞숟술숡숢숣숤숥숦숧숨�숩숪숫숬숭숮숯숰숱숲숳���숴숵숶숷숸숹숺숻숼숽숾숿쉀�쉂쉃쉄�쉅쉆쉇쉈쉉쉊쉋쉌�쉎�����쉑쉒쉓쉔쉕쉖쉗쉘쉙쉚쉛쉜�쉞쉟쉠�쉡쉢쉣쉤쉥쉦쉧쉨쉩쉪쉫���쉬쉭쉮쉯쉰쉱쉲쉳쉴쉵쉶쉷쉸쉹쉺쉻쉼�쉽쉾쉿슀�슂슃슄슅슆슇��\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"�����������������������������������������������������������������슈슉슊슋슌�슎��슑슒슓슔슕슖슗슘�슙슚슛슜�슞슟슠슡슢슣���스슥슦슧슨슩슪슫슬슭슮슯슰슱슲슳슴�습슶슷슸승슺슻슼슽슾슿���싀�싂싃싄싅싆싇싈싉싊싋싌�싎���싑싒싓싔싕싖싗싘싙싚싛���시�싞싟신싡싢싣실싥싦싧싨싩싪싫심�십싮싯싰싱싲싳싴싵싶싷������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"�����������������������������������������������������������������ᄊ�������������������������������싸싹싺싻싼싽싾싿쌀�쌂쌃쌄쌅쌆쌇쌈�쌉쌊쌋쌌�쌎��쌑쌒쌓���쌔쌕쌖쌗쌘쌙쌚쌛쌜�쌞쌟쌠쌡쌢쌣쌤�쌥쌦쌧쌨쌩쌪쌫쌬쌭쌮쌯���쌰쌱쌲쌳쌴쌵쌶쌷쌸쌹쌺쌻쌼쌽쌾쌿�������������������������������������������������������������������������쎀�쎂쎃��\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"�����������������������������������������������������������������쎄쎅쎆쎇쎈쎉쎊쎋쎌�쎎��쎑쎒쎓쎔�쎕쎖쎗쎘쎙쎚쎛쎜�쎞쎟���쎠쎡쎢쎣쎤쎥쎦쎧쎨쎩쎪쎫쎬쎭쎮쎯쎰�쎱쎲쎳쎴쎵쎶쎷쎸쎹쎺쎻���쎼쎽쎾쎿���������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"��������������������������������������������������������������������������������������쑀�쑂쑃쑄쑅쑆쑇���쑈쑉쑊쑋쑌�쑎��쑑쑒쑓쑔쑕쑖쑗쑘�쑙쑚쑛쑜�쑞쑟쑠쑡쑢쑣���쑤쑥쑦쑧쑨쑩쑪쑫쑬쑭쑮쑯쑰쑱쑲쑳쑴�쑵쑶쑷쑸쑹쑺쑻쑼쑽쑾쑿���쒀�쒂쒃쒄쒅쒆쒇쒈쒉쒊쒋쒌�쒎���쒑쒒쒓쒔쒕쒖쒗쒘쒙쒚쒛���쒜�쒞쒟쒠쒡쒢쒣쒤쒥쒦쒧쒨쒩쒪쒫쒬�쒭쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷���쒸쒹쒺쒻쒼쒽쒾쒿쓀�쓂쓃쓄쓅쓆쓇쓈�쓉쓊쓋쓌�쓎��쓑쓒쓓��\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"�����������������������������������������������������������������쓔쓕쓖쓗쓘쓙쓚쓛쓜�쓞쓟쓠쓡쓢쓣쓤�쓥쓦쓧쓨쓩쓪쓫쓬쓭쓮쓯���쓰쓱쓲쓳쓴쓵쓶쓷쓸쓹쓺쓻쓼쓽쓾쓿씀��씂씃씄씅씆씇씈씉씊씋���씌�씎��씑씒씓씔씕씖씗씘씙씚씛씜��씞씟씠씡씢씣씤씥씦씧���씨씩씪씫씬씭씮씯씰씱씲씳씴씵씶씷씸�씹씺씻씼씽씾씿앀�앂앃������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"�����������������������������������������������������������������ᄋ�������������������������������아악앆앇안앉않앋알�앎��앑앒앓암�압앖앗았앙앚앛앜�앞앟���애액앢앣앤앥앦앧앨앩앪앫앬앭앮앯앰�앱앲앳앴앵앶앷앸앹앺앻���야약앾앿얀�얂얃얄얅얆얇얈얉얊얋얌��얎��양얒얓얔얕얖얗���얘얙얚얛얜�얞얟얠얡얢얣얤얥얦얧얨�얩얪얫얬얭얮얯얰얱얲얳���어억얶얷언얹얺얻얼얽얾얿엀�엂엃엄�업없엇었엉엊엋엌�엎���\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"������������������������������������������������������������������엑엒엓엔엕엖엗엘엙엚엛엜�엞엟엠�엡엢엣엤엥엦엧엨엩엪엫���여역엮엯연엱엲엳열엵엶엷엸엹엺엻염�엽엾엿였�옂옃옄옅옆옇���예옉옊옋옌�옎��옑옒옓옔옕옖옗옘�옙옚옛옜�옞옟옠옡옢옣���오옥옦옧온옩옪옫올옭옮옯옰옱옲옳옴�옵옶옷옸옹옺옻옼옽옾옿���와�왂왃완왅왆왇왈왉왊왋왌�왎���왑왒왓왔왕왖왗왘왙왚왛���왜�왞왟왠왡왢왣왤왥왦왧왨왩왪왫왬�왭왮왯왰왱왲왳왴왵왶왷��\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"�����������������������������������������������������������������외왹왺왻왼왽왾왿욀�욂욃욄욅욆욇욈�욉욊욋욌�욎��욑욒욓���요욕욖욗욘욙욚욛욜�욞욟욠욡욢욣욤�욥욦욧욨용욪욫욬욭욮욯���우욱욲욳운욵욶욷울욹욺욻욼욽욾욿움��웂웃웄웅웆웇웈웉웊웋���워�웎��웑웒웓월웕웖웗웘웙웚웛웜��웞웟웠웡웢웣웤웥웦웧���웨웩웪웫웬웭웮웯웰웱웲웳웴웵웶웷웸�웹웺웻웼웽웾웿윀�윂윃���위윅윆윇윈윉윊윋윌�윎��윑윒윓윔�윕윖윗윘윙윚윛윜�윞윟��\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"�����������������������������������������������������������������유육윢윣윤윥윦윧율윩윪윫윬윭윮윯윰�윱윲윳윴융윶윷윸윹윺윻���으윽윾윿������������������������������������������������������������������������잀�잂잃임�입잆잇있잉잊잋잌�잎�������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"�����������������������������������������������������������������ᄌ��������������������������������작잒잓잔잕잖잗잘잙잚잛잜�잞잟잠�잡잢잣잤장잦잧잨잩잪잫���재잭잮잯잰잱잲잳잴잵잶잷잸잹잺잻잼�잽잾잿쟀�쟂쟃쟄쟅쟆쟇���쟈쟉쟊쟋쟌�쟎��쟑쟒쟓쟔쟕쟖쟗쟘�쟙쟚쟛쟜�쟞쟟쟠쟡쟢쟣���쟤쟥쟦쟧쟨쟩쟪쟫쟬쟭쟮쟯쟰쟱쟲쟳쟴�쟵쟶쟷쟸쟹쟺쟻쟼쟽쟾쟿���저�젂젃전젅젆젇절젉젊젋젌�젎���접젒젓젔정젖젗젘젙젚젛��\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"�����������������������������������������������������������������제�젞젟젠젡젢젣젤젥젦젧젨젩젪젫젬�젭젮젯젰젱젲젳젴젵젶젷���져젹젺젻젼젽젾젿졀�졂졃졄졅졆졇졈�졉졊졋졌�졎��졑졒졓���졔졕졖졗졘졙졚졛졜�졞졟졠졡졢졣졤�졥졦졧졨졩졪졫졬졭졮졯���조족졲졳존졵졶졷졸졹졺졻졼졽졾졿좀��좂좃좄종좆좇좈좉좊좋���좌�좎��좑좒좓좔좕좖좗좘좙좚좛좜��좞좟좠좡좢좣좤좥좦좧���좨좩좪좫좬좭좮좯좰좱좲좳좴좵좶좷좸�좹좺좻좼좽좾좿죀�죂죃��\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"�����������������������������������������������������������������죄죅죆죇죈죉죊죋죌�죎��죑죒죓죔�죕죖죗죘죙죚죛죜�죞죟���죠죡죢죣죤죥죦죧죨죩죪죫죬죭죮죯죰�죱죲죳죴죵죶죷죸죹죺죻���주죽죾죿준�줂줃줄줅줆줇줈줉줊줋줌��줎��중줒줓줔줕줖줗���줘줙줚줛줜�줞줟줠줡줢줣줤줥줦줧줨�줩줪줫줬줭줮줯줰줱줲줳���줴줵줶줷줸줹줺줻줼줽줾줿쥀�쥂쥃쥄�쥅쥆쥇쥈쥉쥊쥋쥌�쥎�����쥑쥒쥓쥔쥕쥖쥗쥘쥙쥚쥛쥜�쥞쥟쥠�쥡쥢쥣쥤쥥쥦쥧쥨쥩쥪쥫��\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"�����������������������������������������������������������������쥬쥭쥮쥯쥰쥱쥲쥳쥴쥵쥶쥷쥸쥹쥺쥻쥼�쥽쥾쥿즀�즂즃즄즅즆즇���즈즉즊즋즌�즎��즑즒즓즔즕즖즗즘�즙즚즛즜�즞즟즠즡즢즣���즤즥즦즧즨즩즪즫즬즭즮즯즰즱즲즳즴�즵즶즷즸즹즺즻즼즽즾즿���지�짂짃진짅짆짇질짉짊짋짌�짎���집짒짓짔징짖짗짘짙짚짛������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"�������������������������������������������������������������������������������������������������짜�짞짟짠짡짢짣짤짥짦짧짨짩짪짫짬�짭짮짯짰짱짲짳짴짵짶짷���째짹짺짻짼짽짾짿쨀�쨂쨃쨄쨅쨆쨇쨈�쨉쨊쨋쨌�쨎��쨑쨒쨓���쨔쨕쨖쨗쨘쨙쨚쨛쨜�쨞쨟쨠쨡쨢쨣쨤�쨥쨦쨧쨨쨩쨪쨫쨬쨭쨮쨯���쨰쨱쨲쨳쨴쨵쨶쨷쨸쨹쨺쨻쨼쨽쨾쨿쩀��쩂쩃쩄쩅쩆쩇쩈쩉쩊쩋���쩌�쩎��쩑쩒쩓쩔쩕쩖쩗쩘쩙쩚쩛쩜��쩞쩟쩠쩡쩢쩣쩤쩥쩦쩧��\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������������������������������������쩨쩩쩪쩫쩬쩭쩮쩯쩰쩱쩲쩳쩴쩵쩶쩷쩸�쩹쩺쩻쩼쩽쩾쩿쪀�쪂쪃���쪄쪅쪆쪇쪈쪉쪊쪋쪌�쪎��쪑쪒쪓쪔�쪕쪖쪗쪘쪙쪚쪛쪜�쪞쪟���쪠쪡쪢쪣쪤쪥쪦쪧쪨쪩쪪쪫쪬쪭쪮쪯쪰�쪱쪲쪳쪴쪵쪶쪷쪸쪹쪺쪻���쪼쪽쪾쪿쫀�쫂쫃쫄쫅쫆쫇쫈쫉쫊쫋쫌��쫎��쫑쫒쫓쫔쫕쫖쫗���쫘쫙쫚쫛쫜�쫞쫟쫠쫡쫢쫣쫤쫥쫦쫧쫨�쫩쫪쫫쫬쫭쫮쫯쫰쫱쫲쫳���쫴쫵쫶쫷쫸쫹쫺쫻쫼쫽쫾쫿쬀�쬂쬃쬄�쬅쬆쬇쬈쬉쬊쬋쬌�쬎���\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"������������������������������������������������������������������쬑쬒쬓쬔쬕쬖쬗쬘쬙쬚쬛쬜�쬞쬟쬠�쬡쬢쬣쬤쬥쬦쬧쬨쬩쬪쬫���쬬쬭쬮쬯쬰쬱쬲쬳쬴쬵쬶쬷쬸쬹쬺쬻쬼�쬽쬾쬿쭀�쭂쭃쭄쭅쭆쭇���쭈쭉쭊쭋쭌�쭎��쭑쭒쭓쭔쭕쭖쭗쭘�쭙쭚쭛쭜�쭞쭟쭠쭡쭢쭣���쭤쭥쭦쭧쭨쭩쭪쭫쭬쭭쭮쭯쭰쭱쭲쭳쭴�쭵쭶쭷쭸쭹쭺쭻쭼쭽쭾쭿���쮀�쮂쮃쮄쮅쮆쮇쮈쮉쮊쮋쮌�쮎���쮑쮒쮓쮔쮕쮖쮗쮘쮙쮚쮛���쮜�쮞쮟쮠쮡쮢쮣쮤쮥쮦쮧쮨쮩쮪쮫쮬�쮭쮮쮯쮰쮱쮲쮳쮴쮵쮶쮷��\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"�����������������������������������������������������������������쮸쮹쮺쮻쮼쮽쮾쮿쯀�쯂쯃쯄쯅쯆쯇쯈�쯉쯊쯋쯌�쯎��쯑쯒쯓���쯔쯕쯖쯗쯘쯙쯚쯛쯜�쯞쯟쯠쯡쯢쯣쯤�쯥쯦쯧쯨쯩쯪쯫쯬쯭쯮쯯���쯰쯱쯲쯳쯴쯵쯶쯷쯸쯹쯺쯻쯼쯽쯾쯿찀��찂찃찄찅찆찇찈찉찊찋���찌�찎��찑찒찓찔찕찖찗찘찙찚찛찜��찞찟찠찡찢찣찤찥찦찧������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������ᄎ�������������������������������차착찪찫찬찭찮찯찰찱찲찳찴찵찶찷참�찹찺찻찼창찾찿챀�챂챃���채책챆챇챈챉챊챋챌�챎��챑챒챓챔�챕챖챗챘챙챚챛챜�챞챟���챠챡챢챣챤챥챦챧챨챩챪챫챬챭챮챯챰�챱챲챳챴챵챶챷챸챹챺챻���챼챽챾챿첀�첂첃첄첅첆첇첈첉첊첋첌��첎��첑첒첓첔첕첖첗���처척첚첛천�첞첟철첡첢첣첤첥첦첧첨�첩첪첫첬청첮첯첰첱첲첳��\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"�����������������������������������������������������������������체첵첶첷첸첹첺첻첼첽첾첿쳀�쳂쳃쳄�쳅쳆쳇쳈쳉쳊쳋쳌�쳎�����쳑쳒쳓쳔쳕쳖쳗쳘쳙쳚쳛쳜�쳞쳟쳠�쳡쳢쳣쳤쳥쳦쳧쳨쳩쳪쳫���쳬쳭쳮쳯쳰쳱쳲쳳쳴쳵쳶쳷쳸쳹쳺쳻쳼�쳽쳾쳿촀�촂촃촄촅촆촇���초촉촊촋촌�촎��촑촒촓촔촕촖촗촘�촙촚촛촜�촞촟촠촡촢촣���촤촥촦촧촨촩촪촫촬촭촮촯촰촱촲촳촴�촵촶촷촸촹촺촻촼촽촾촿���쵀�쵂쵃쵄쵅쵆쵇쵈쵉쵊쵋쵌�쵎���쵑쵒쵓쵔쵕쵖쵗쵘쵙쵚쵛��\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"�����������������������������������������������������������������최�쵞쵟쵠쵡쵢쵣쵤쵥쵦쵧쵨쵩쵪쵫쵬�쵭쵮쵯쵰쵱쵲쵳쵴쵵쵶쵷���쵸쵹쵺쵻쵼쵽쵾쵿춀�춂춃춄춅춆춇춈�춉춊춋춌�춎��춑춒춓���추축춖춗춘춙춚춛출�춞춟춠춡춢춣춤�춥춦춧춨충춪춫춬춭춮춯���춰춱춲춳춴춵춶춷춸춹춺춻춼춽춾춿췀��췂췃췄췅췆췇췈췉췊췋���췌�췎��췑췒췓췔췕췖췗췘췙췚췛췜��췞췟췠췡췢췣췤췥췦췧���취췩췪췫췬췭췮췯췰췱췲췳췴췵췶췷췸�췹췺췻췼췽췾췿츀�츂츃��\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"�����������������������������������������������������������������츄츅츆츇츈츉츊츋츌�츎��츑츒츓츔�츕츖츗츘츙츚츛츜�츞츟���츠측츢츣츤츥츦츧츨츩츪츫츬츭츮츯츰�츱츲츳츴층츶츷츸츹츺츻���츼츽츾츿칀�칂칃칄칅칆칇칈칉칊칋칌��칎��칑칒칓칔칕칖칗���치칙칚칛친�칞칟칠칡칢칣칤칥칦칧침�칩칪칫칬칭칮칯칰칱칲칳������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"�������������������������������������������������������������������������������������������������카칵칶칷칸칹칺칻칼칽칾칿캀�캂캃캄�캅캆캇캈캉캊캋캌�캎�����캑캒캓캔캕캖캗캘캙캚캛캜�캞캟캠�캡캢캣캤캥캦캧캨캩캪캫���캬캭캮캯캰캱캲캳캴캵캶캷캸캹캺캻캼�캽캾캿컀�컂컃컄컅컆컇���컈컉컊컋컌�컎��컑컒컓컔컕컖컗컘�컙컚컛컜�컞컟컠컡컢컣���커컥컦컧컨컩컪컫컬컭컮컯컰컱컲컳컴�컵컶컷컸컹컺컻컼컽컾컿��\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"�����������������������������������������������������������������케�켂켃켄켅켆켇켈켉켊켋켌�켎���켑켒켓켔켕켖켗켘켙켚켛���켜�켞켟켠켡켢켣켤켥켦켧켨켩켪켫켬�켭켮켯켰켱켲켳켴켵켶켷���켸켹켺켻켼켽켾켿콀�콂콃콄콅콆콇콈�콉콊콋콌�콎��콑콒콓���코콕콖콗콘콙콚콛콜�콞콟콠콡콢콣콤�콥콦콧콨콩콪콫콬콭콮콯���콰콱콲콳콴콵콶콷콸콹콺콻콼콽콾콿쾀��쾂쾃쾄쾅쾆쾇쾈쾉쾊쾋���쾌�쾎��쾑쾒쾓쾔쾕쾖쾗쾘쾙쾚쾛쾜��쾞쾟쾠쾡쾢쾣쾤쾥쾦쾧��\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"�����������������������������������������������������������������쾨쾩쾪쾫쾬쾭쾮쾯쾰쾱쾲쾳쾴쾵쾶쾷쾸�쾹쾺쾻쾼쾽쾾쾿쿀�쿂쿃���쿄쿅쿆쿇쿈쿉쿊쿋쿌�쿎��쿑쿒쿓쿔�쿕쿖쿗쿘쿙쿚쿛쿜�쿞쿟���쿠쿡쿢쿣쿤쿥쿦쿧쿨쿩쿪쿫쿬쿭쿮쿯쿰�쿱쿲쿳쿴쿵쿶쿷쿸쿹쿺쿻���쿼쿽쿾쿿퀀�퀂퀃퀄퀅퀆퀇퀈퀉퀊퀋퀌��퀎��퀑퀒퀓퀔퀕퀖퀗���퀘퀙퀚퀛퀜�퀞퀟퀠퀡퀢퀣퀤퀥퀦퀧퀨�퀩퀪퀫퀬퀭퀮퀯퀰퀱퀲퀳���퀴퀵퀶퀷퀸퀹퀺퀻퀼퀽퀾퀿�������������������\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"����������������������������������������������������������������������������������������������������������������������킀�킂킃킄킅킆킇���킈킉킊킋킌�킎��킑킒킓킔킕킖킗킘�킙킚킛킜�킞킟킠킡킢킣���키킥킦킧킨킩킪킫킬킭킮킯킰킱킲킳킴�킵킶킷킸킹킺킻킼킽킾킿������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"�������������������������������������������������������������������������������������������������타�탂탃탄탅탆탇탈탉탊탋탌�탎���탑탒탓탔탕탖탗탘탙탚탛���태�탞탟탠탡탢탣탤탥탦탧탨탩탪탫탬�탭탮탯탰탱탲탳탴탵탶탷���탸탹탺탻탼탽탾탿턀�턂턃턄턅턆턇턈�턉턊턋턌�턎��턑턒턓���턔턕턖턗턘턙턚턛턜�턞턟턠턡턢턣턤�턥턦턧턨턩턪턫턬턭턮턯���터턱턲턳턴턵턶턷털턹턺턻턼턽턾턿텀��텂텃텄텅텆텇텈텉텊텋��\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"�����������������������������������������������������������������테�텎��텑텒텓텔텕텖텗텘텙텚텛템��텞텟텠텡텢텣텤텥텦텧���텨텩텪텫텬텭텮텯텰텱텲텳텴텵텶텷텸�텹텺텻텼텽텾텿톀�톂톃���톄톅톆톇톈톉톊톋톌�톎��톑톒톓톔�톕톖톗톘톙톚톛톜�톞톟���토톡톢톣톤톥톦톧톨톩톪톫톬톭톮톯톰�톱톲톳톴통톶톷톸톹톺톻���톼톽톾톿퇀�퇂퇃퇄퇅퇆퇇퇈퇉퇊퇋퇌��퇎��퇑퇒퇓퇔퇕퇖퇗���퇘퇙퇚퇛퇜�퇞퇟퇠퇡퇢퇣퇤퇥퇦퇧퇨�퇩퇪퇫퇬퇭퇮퇯퇰퇱퇲퇳��\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"�����������������������������������������������������������������퇴퇵퇶퇷퇸퇹퇺퇻퇼퇽퇾퇿툀�툂툃툄�툅툆툇툈툉툊툋툌�툎�����툑툒툓툔툕툖툗툘툙툚툛툜�툞툟툠�툡툢툣툤툥툦툧툨툩툪툫���투툭툮툯툰툱툲툳툴툵툶툷툸툹툺툻툼�툽툾툿퉀�퉂퉃퉄퉅퉆퉇���퉈퉉퉊퉋퉌�퉎��퉑퉒퉓퉔퉕퉖퉗퉘�퉙퉚퉛퉜�퉞퉟퉠퉡퉢퉣���퉤퉥퉦퉧퉨퉩퉪퉫퉬퉭퉮퉯퉰퉱퉲퉳퉴�퉵퉶퉷퉸퉹퉺퉻퉼퉽퉾퉿���튀�튂튃튄튅튆튇튈튉튊튋튌�튎���튑튒튓튔튕튖튗튘튙튚튛��\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"�����������������������������������������������������������������튜�튞튟튠튡튢튣튤튥튦튧튨튩튪튫튬�튭튮튯튰튱튲튳튴튵튶튷���트특튺튻튼튽튾튿틀�틂틃틄틅틆틇틈�틉틊틋틌�틎��틑틒틓���틔틕틖틗틘틙틚틛틜�틞틟틠틡틢틣틤�틥틦틧틨틩틪틫틬틭틮틯���티틱틲틳틴틵틶틷틸틹틺틻틼틽틾틿팀��팂팃팄팅팆팇팈팉팊팋������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"�����������������������������������������������������������������ᄑ�������������������������������파�팎��팑팒팓팔팕팖팗팘팙팚팛팜��팞팟팠팡팢팣팤팥팦팧���패팩팪팫팬팭팮팯팰팱팲팳팴팵팶팷팸�팹팺팻팼팽팾팿���������������������������������������������������������������������������펀�펂펃펄펅펆펇펈펉펊펋펌��펎��펑펒펓펔펕펖펗��\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"�����������������������������������������������������������������페펙펚펛펜�펞펟펠펡펢펣펤펥펦펧펨�펩펪펫펬펭펮펯펰펱펲펳���펴펵펶펷편펹펺펻펼펽펾펿���������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"�����������������������������������������������������������������푀�푂푃푄푅푆푇푈푉푊푋푌�푎���푑푒푓푔푕푖푗푘푙푚푛���표�푞푟푠푡푢푣푤푥푦푧푨푩푪푫푬�푭푮푯푰푱푲푳푴푵푶푷���푸푹푺푻푼푽푾푿풀�풂풃풄풅풆풇품�풉풊풋풌�풎��풑풒풓���풔풕풖풗풘풙풚풛풜�풞풟풠풡풢풣풤�풥풦풧풨풩풪풫풬풭풮풯���풰풱풲풳풴풵풶풷풸풹풺풻풼풽풾풿퓀��퓂퓃퓄퓅퓆퓇퓈퓉퓊퓋���퓌�퓎��퓑퓒퓓퓔퓕퓖퓗퓘퓙퓚퓛퓜��퓞퓟퓠퓡퓢퓣퓤퓥퓦퓧��\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"�����������������������������������������������������������������퓨퓩퓪퓫퓬퓭퓮퓯퓰퓱퓲퓳퓴퓵퓶퓷퓸�퓹퓺퓻퓼퓽퓾퓿픀�픂픃���프픅픆픇픈픉픊픋플�픎��픑픒픓픔�픕픖픗픘픙픚픛픜�픞픟���픠픡픢픣픤픥픦픧픨픩픪픫픬픭픮픯픰�픱픲픳픴픵픶픷픸픹픺픻���피픽픾픿핀�핂핃필핅핆핇핈핉핊핋핌��핎��핑핒핓핔핕핖핗������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"�����������������������������������������������������������������ᄒ�������������������������������하학핚핛한�핞핟할핡핢핣핤핥핦핧함�합핪핫핬항핮핯핰핱핲핳���해핵핶핷핸핹핺핻핼핽핾핿햀�햂햃햄�햅햆햇했행햊햋햌�햎�����햑햒햓햔햕햖햗햘햙햚햛햜�햞햟햠�햡햢햣햤향햦햧햨햩햪햫���햬햭햮햯햰햱햲햳햴햵햶햷햸햹햺햻햼�햽햾햿헀�헂헃헄헅헆헇���허헉헊헋헌�헎��헑헒헓헔헕헖헗험�헙헚헛헜�헞헟헠헡헢헣��\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"�����������������������������������������������������������������헤헥헦헧헨헩헪헫헬헭헮헯헰헱헲헳헴�헵헶헷헸헹헺헻헼헽헾헿���혀�혂혃현혅혆혇혈혉혊혋혌�혎���협혒혓혔형혖혗혘혙혚혛���혜�혞혟혠혡혢혣혤혥혦혧혨혩혪혫혬�혭혮혯혰혱혲혳혴혵혶혷���호혹혺혻혼혽혾혿홀�홂홃홄홅홆홇홈�홉홊홋홌�홎��홑홒홓���화확홖홗환홙홚홛활�홞홟홠홡홢홣홤�홥홦홧홨황홪홫홬홭홮홯���홰홱홲홳홴홵홶홷홸홹홺홻홼홽홾홿횀��횂횃횄횅횆횇횈횉횊횋��\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"�����������������������������������������������������������������회�횎��횑횒횓횔횕횖횗횘횙횚횛횜��횞횟횠횡횢횣횤횥횦횧���효횩횪횫횬횭횮횯횰횱횲횳횴횵횶횷횸�횹횺횻횼횽횾횿훀�훂훃���후훅훆훇훈훉훊훋훌�훎��훑훒훓훔�훕훖훗훘훙훚훛훜�훞훟���훠훡훢훣훤훥훦훧훨훩훪훫훬훭훮훯훰�훱훲훳훴훵훶훷훸훹훺훻���훼훽훾훿휀�휂휃휄휅휆휇휈휉휊휋휌��휎��휑휒휓휔휕휖휗���휘휙휚휛휜�휞휟휠휡휢휣휤휥휦휧휨�휩휪휫휬휭휮휯휰휱휲휳��\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"�����������������������������������������������������������������휴휵휶휷휸휹휺휻휼휽휾휿�������������������������������������������������������������������������힀�힂힃힄힅힆힇���히힉힊힋힌�힎��힑힒힓힔힕힖힗힘�힙힚힛힜�힞힟힠힡힢힣������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[216] = \"����������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"������������������������������������������������� �。·‥…¨〃­―∥\∼‘’“�〔〕〈〉《》「�『��】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○�◎◇◆□■△▲▽▼→�↑↓↔〓≪≫√������������������∽�∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬⇒⇔∀∃´~ˇ˘�˚˙¸˛¡¿�∮∑�¤℉‰�◀▷▶♤♠♡♥♧♣⊙◈▣�◑▒▤▥▨▧▦▩♨�☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№�™��℡€®������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"��������������������������������������������������"#$%&'()*+,�.��123456789:;<�>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`�bcdefghijkl�n��������������������qrstuvwxyz{|� ̄���������������������������������������������������ᅟᄔᄕᇇᇈᇌᇎᇓᇗᇙᄜ�ᇟ�ᄞᄠᄢᄣᄧᄨᄫᄬᄭᄮᄯᄲᄶᅀᅇᅌᅅᅆᅗᅘᅙᆄᆅᆈᆑᆒᆔᆞᆡ�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"�������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξ������������������οπ�στυφχψω������─│┌�┘└├┬┤┴┼�┃�┓┛┗┣┳┫┻╋┠┯┨┷┿�┰┥┸╂┒┑┚┙┖┕┎�┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀�╃╄╅╆╇╈╉╊���������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�������������������������������������������������㎕㎖㎗ℓ㎘�㎣㎤㎥㎦㎙㎚㎛㎜�㎞㎟㎠㎡㎢��㎎��㎈㎉�㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀�㎂㎃㎄㎺㎻㎼㎽㎾㎿�㎑㎒㎓㎔Ω��㎊㎋㎌��㎭㎮㎯�㎩㎪㎫㎬����������������������������������������Æ�ªĦ�IJ�Ŀ�ØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻�ⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜ�ⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜�⅞�\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"�������������������������������������������������æđðħıijĸŀłøœßþŧŋʼn㈀�㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌�㈎��㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜�⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻������������������⑼⑽⑾⑿⒀�⒂¹²³���₂₃₄���������������������������������������������������������������む�もゃやゅゆょよらりるれ�ゎ��ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"�������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダ�ヂッツヅテデトドナニヌ�ノ��パヒビピフブプヘベペホボ�マミムメモャヤュユョヨラリルレロヮ������������������ワヰヱヲンヴヵヶ���������БВГДЕ�ЖЗИЙКЛМ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопр�туфхцчшщъыь�ю���������������\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[224] = \"�������������������������������������������������伽佳�價加�呵哥嘉�家暇架枷柯歌�痂稼苛茄街袈訶賈�軻迦駕刻���慤殼�脚覺角閣侃刊墾奸姦干幹懇��柬桿澗癎看磵稈竿簡�艮艱諫間乫�曷渴碣竭葛��鞨勘�堪嵌������������������感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑�講鋼�鱇介价個凱�愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客��粳羹醵倨去居巨拒�據擧渠炬祛�踞車�鉅鋸乾件�巾建愆楗腱虔蹇�騫乞傑�桀儉�劒檢�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"�������������������������������������������������瞼�黔劫怯迲�憩�擊格檄激膈覡隔堅牽犬甄絹繭肩見譴�鵑抉決潔�缺訣兼慊�謙鉗鎌京俓倞傾儆����境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕������������������逕�頃頸驚鯨係啓堺契季屆悸戒桂械棨溪界癸磎稽系繫繼計誡谿階鷄��告呱固姑孤尻庫拷攷故敲暠枯�沽痼��稿羔考股�苦苽��蠱袴誥賈辜錮雇顧高鼓哭斛曲�穀谷鵠困�崑昆梱�滾�袞鯤汨滑骨供公共功孔工��拱控攻�空蚣貢�串寡戈果瓜�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"�������������������������������������������������科�誇課跨��顆廓槨藿郭串冠官寬慣棺款��瓘管��觀貫關館刮�括适侊光匡壙廣曠洸炚狂��胱鑛�掛罫乖傀塊壞怪愧����紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹������������������膠蕎蛟較轎郊餃驕鮫丘久�仇俱具勾���咎嘔�垢寇嶇�懼拘救枸柩構�毆毬求��狗玖�瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局�鞠鞫麴�窘群裙�郡堀屈掘窟宮弓穹窮芎躬倦券勸�圈拳�權淃眷厥�蕨蹶闕机櫃潰詭軌饋句晷歸貴�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"�������������������������������������������������鬼龜�圭奎�槻�硅窺竅糾葵�赳逵閨勻�畇筠�鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹�覲謹近饉契今妗擒昑檎��禽芩衾衿襟金錦伋�急扱汲級給亘兢矜肯�伎其冀嗜������������������器圻基埼夔奇妓寄�崎己幾忌技旗旣朞期�棋棄機欺氣汽沂淇玘��璂璣畸畿�磯�祇祈祺箕紀綺羈耆耭肌記�豈起錡錤飢饑騎�驥麒緊佶�拮桔金喫儺喇奈娜懦��拿癩��螺裸邏那樂洛烙珞落諾酪駱亂卵暖�煖爛蘭難鸞���嵐�楠湳濫男藍襤拉�\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"��������������������������������������������������臘蠟衲囊娘廊朗浪狼郎乃來內奈柰�冷女年撚秊念�拈�寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿�壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓�漏��陋嫩訥��������������������勒肋凜凌稜綾能菱陵尼泥匿溺多茶丹亶但單團壇彖斷旦檀段�短端簞緞蛋袒鄲�撻澾�疸�啖�憺擔曇淡湛潭澹痰�膽�覃談譚錟沓畓答���堂塘幢戇撞棠當糖螳黨代垈�大�岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉�桃�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�������������������������������������������������棹櫂淘渡滔濤燾盜�禱稻�覩賭跳蹈逃途�都�陶韜毒瀆牘犢��禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭��冬�動�憧��棟洞潼疼瞳童胴董銅兜斗�枓痘竇�讀豆逗頭屯臀芚���������������������得�橙燈登等藤謄鄧騰喇懶拏癩羅蘿螺裸�樂洛烙�絡��酪駱丹亂�欄欒瀾爛蘭鸞剌辣�擥攬欖濫籃纜�襤覽拉臘蠟廊朗浪狼�瑯螂郞來�徠�冷掠略亮倆兩凉�樑粮粱糧良諒輛�侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷�礫轢��戀攣漣�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"�������������������������������������������������煉璉練�蓮輦連�冽列劣洌烈裂廉斂殮濂簾�令伶囹寧岺嶺怜玲笭羚翎�逞鈴零�領齡例澧禮醴隷勞怒撈擄櫓潞瀘�盧�蘆虜路輅露魯鷺鹵碌祿綠�錄鹿麓論壟弄朧瀧�籠�儡瀨������������������牢磊賂賚賴雷了僚寮廖料燎療瞭�蓼�鬧�壘�屢樓淚�瘻累縷蔞褸�陋劉旒柳榴�溜��瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾�陵俚利厘�唎履悧�梨浬�狸�璃異痢籬罹羸莉�裡里�離鯉�潾�璘藺躪隣鱗麟林淋�臨霖砬�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"�������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万�娩巒彎慢挽晩曼滿漫�瞞�蔓蠻輓饅鰻唜抹末沫茉襪�亡妄忘忙望網罔芒茫莽輞邙埋妹媒�昧枚梅�煤罵買賣�魅脈貊陌驀麥孟氓猛盲������������������盟�冪覓�冕勉棉沔眄眠綿緬�麵滅蔑冥�命明�椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮�模�毛牟牡�眸矛耗芼茅謀謨貌木�牧目�穆鶩歿沒夢朦蒙�墓妙廟�昴�渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無��繆舞茂蕪誣貿霧鵡墨默們刎��文�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"�������������������������������������������������汶紊紋�蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷�黴岷悶�憫�旻旼民泯玟�緡閔密蜜�����撲朴樸泊�璞箔粕縛膊舶薄迫雹�伴���拌�攀斑槃泮潘�畔瘢������������������盤盼�磻礬絆般蟠返頒飯勃拔撥渤潑發跋醱鉢髮魃倣��妨尨幇彷房放方�昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防��俳北培徘拜排�湃焙盃背胚裴裵褙賠輩�陪伯佰帛�栢白百魄幡樊煩燔番磻�蕃藩飜��罰閥凡帆梵氾汎泛犯範范法�僻劈�擘檗璧癖�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"�������������������������������������������������碧蘗闢霹便��變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳�病秉�輧餠騈�堡報寶普步洑湺潽�甫�補褓譜輔�僕��宓復��腹茯蔔複覆輹輻馥鰒本乶俸奉�峯峰�棒烽熢�縫������������������蓬蜂逢鋒鳳�付俯傅剖副��埠夫婦孚孵富府復扶敷斧浮溥父符簿缶�腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分�噴墳奔奮忿憤扮�汾焚盆粉糞紛芬�雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪�妃婢庇悲憊扉批�枇榧比毖毗毘沸泌�痺砒碑秕秘粃緋翡肥�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"�������������������������������������������������脾臂�蜚裨誹譬費鄙�飛鼻嚬嬪彬斌檳殯浜濱瀕�玭貧賓頻憑氷���事些仕伺似使俟僿��唆嗣四士奢娑寫寺射巳師徙��斜斯柶査梭死沙泗渣瀉�砂社祀祠�篩紗絲肆�莎蓑������������������蛇裟�詞�賜赦辭邪飼駟�削數朔索傘刪山散汕�産�算蒜酸霰乷撒殺煞薩三參�森渗芟蔘衫��鈒颯上傷�償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼�庶��抒��暑曙書栖棲犀瑞筮絮緖署�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�������������������������������������������������胥舒薯西誓�鋤�鼠夕奭席惜昔晳��淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽�瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣�銑��鮮�屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾�閃��������������������涉燮葉城姓宬性惺�星晟猩�盛�筬��腥誠醒世勢歲洗稅笹細說貰�嘯塑宵�少巢所掃�昭梳沼消溯瀟炤燒甦�疎瘙笑篠簫素紹蔬蕭蘇訴��邵銷韶騷俗屬�涑粟續謖贖速孫巽�蓀�飡率宋悚�淞訟誦�頌刷殺�碎鎖衰釗修�嗽囚垂壽嫂守岫峀帥��\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"��������������������������������������������������手授�收數樹殊水洙漱燧狩��璲瘦�秀穗竪粹�綬繡羞脩茱�蓚藪袖誰�輸�邃酬銖銹隋隧隨雖需須首髓鬚�塾夙孰宿淑潚熟�璹肅�巡徇循�旬栒楯橓殉洵淳�盾瞬�純脣������������������舜�蓴蕣詢諄醇錞順馴戌術述鉥崇崧嵩瑟��濕拾習褶襲丞乘僧��承昇繩蠅陞�匙嘶始媤尸屎�市弑�施是時枾柴猜矢示翅蒔�視試詩諡豕豺埴寔��拭�殖湜熄篒�識軾食飾伸�信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心��\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"�������������������������������������������������沈深瀋甚芯諶什�拾雙�亞俄兒啞娥峨我牙芽莪蛾衙�阿雅餓鴉�堊岳嶽幄惡愕�樂渥鄂�顎�齷安岸按�案眼��顔鮟斡�軋閼唵岩巖庵暗癌�闇壓押狎鴨仰央�昻殃秧鴦厓哀������������������埃崖愛曖涯�艾隘�厄扼掖液縊腋�櫻罌鶯鸚也倻冶夜惹�椰爺耶若野弱掠略約若葯蒻藥�亮佯兩凉壤孃��攘敭暘梁楊樣洋�煬痒�禳穰糧羊良襄諒讓釀陽量養圄御於�瘀禦語馭魚齬億憶抑�臆�堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂�如廬�\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�������������������������������������������������旅歟�濾璵礖礪與艅茹輿�閭餘驪麗黎亦力域役易曆歷疫繹譯�逆驛嚥堧姸娟宴年延���挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉�硯秊筵緣練縯聯�軟輦蓮連鉛鍊鳶列�咽悅涅������������������烈熱裂說閱厭廉念捻染殮炎焰�艶苒簾閻髥鹽曄獵�葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶�濚瀛瀯�營�玲瑛瑩瓔盈穎纓羚聆英詠迎鈴�零霙靈領乂倪例刈�曳汭濊猊�穢芮�蘂禮裔詣譽豫醴銳隸霓�五�俉傲���嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"��������������������������������������������������熬�筽蜈誤鰲鼇屋沃�玉鈺溫瑥瘟穩縕蘊兀壅�瓮甕癰�邕�饔渦瓦窩窪臥蛙�訛婉完宛梡椀浣玩��碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬�猥�了僚僥凹堯夭妖姚������������������寥寮尿嶢拗�撓擾料曜樂橈燎燿瑤�窈窯繇繞耀腰蓼蟯�謠�遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬�茸蓉踊鎔�龍于佑�優���宇寓尤愚憂旴牛玗瑀盂�禑禹紆羽芋藕虞迂�郵釪隅雨雩勖彧旭昱栯煜稶�頊云暈橒殞�熉耘芸蕓�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"��������������������������������������������������隕雲韻蔚鬱�熊雄元原員圓園垣媛嫄寃怨愿�沅洹湲�爰猿瑗苑�轅�阮院願鴛月越鉞��僞��委�尉慰�渭爲瑋緯胃�葦蔿�衛褘謂�韋�乳侑儒兪劉唯喩孺宥幼幽庾悠惟������������������愈愉�攸有杻柔柚柳楡楢油洧流游溜濡猶猷琉瑜由�癒硫�維臾�裕誘諛諭踰蹂�逾�酉釉��六堉戮毓肉育陸倫�奫尹崙淪潤玧胤贇輪鈗�律慄栗率�戎瀜絨�隆垠�慇殷誾銀隱乙�淫蔭陰音飮�泣邑�應膺鷹�倚儀宜�懿擬椅毅疑矣義艤�蟻衣誼�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"�������������������������������������������������議醫二以伊�吏夷姨履已弛彛怡易李梨泥爾�理異�痢移罹而耳肄苡�裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人�刃�吝咽因姻寅引�湮燐璘絪茵藺蚓�隣��鱗麟一佚佾壹日溢������������������逸鎰馹任壬妊姙�林淋稔臨�賃入�立笠粒�剩孕芿仔刺咨姉姿�字孜�慈滋炙煮玆瓷疵�紫者自茨蔗藉諮資雌作勺嚼斫昨�炸爵綽�酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲�樟檣欌漿牆狀�璋章粧腸臟臧莊葬蔣薔��贓醬長�\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�������������������������������������������������障�哉在宰��栽梓渽滓�縡�財載齋齎爭��錚佇低儲咀�底抵�楮樗沮渚狙猪疽箸紵苧�著藷詛貯躇這邸雎齟勣�嫡寂摘敵滴狄炙的�笛�績翟�謫賊赤跡蹟迪迹��佃佺傳������������������全典�剪塡塼奠專展廛悛戰栓殿氈澱煎�田甸畑癲筌箋箭篆�詮輾轉鈿銓錢�電顚顫餞切截折浙癤竊節絶�岾店漸点粘霑鮎點接摺��井亭��呈姃定幀庭廷�情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎�町�碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆��\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"��������������������������������������������������頂鼎制劑啼堤�弟悌�梯濟祭第�薺製諸蹄�除際霽題齊俎兆凋助嘲弔彫措�早�曺曹��棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙�造�釣阻雕鳥�簇足�存尊�������������������拙�倧宗從悰慫棕淙�種終綜縱腫踪踵����左座挫罪主����胄呪周嗾�宙州廚�朱柱株注洲湊�炷�疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄�竹粥俊�准埈寯峻晙樽浚準濬焌畯竣蠢逡�雋駿�中仲衆��櫛楫�葺增憎曾拯�甑症繒蒸證贈之��\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"�������������������������������������������������咫地�志�指摯支旨智�枳止池沚漬知砥祉祗紙肢脂至�芷蜘誌識贄趾�直稙稷織�唇嗔塵振�晉晋桭榛殄津溱�瑨璡畛疹盡眞瞋秦縉�臻蔯袗診賑軫辰進鎭陣陳震侄�姪嫉帙桎������������������瓆疾秩窒膣蛭質跌迭斟朕什執潗�輯�集徵懲澄且侘借�嗟嵯差次此磋箚茶蹉車����窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽�饌刹察擦札紮僭�塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢�滄漲猖瘡窓脹艙�蒼債埰寀寨彩採砦綵�蔡采釵冊柵策�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟�喘天�擅泉淺玔穿舛薦賤��釧闡阡韆凸哲喆徹撤澈綴輟��僉尖沾添甛瞻簽籤詹諂堞妾帖�牒疊�諜貼輒廳晴淸��請�鯖切������������������剃替涕滯締諦逮�體�剿哨憔抄招梢椒楚樵炒焦��礎秒�肖艸苕�蕉貂超酢醋醮促囑燭矗蜀觸寸忖�邨�塚寵悤�摠總�蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻��趨追鄒酋醜�錘鎚雛騶�丑畜�竺筑築縮蓄蹙蹴軸�春椿瑃出朮黜充忠沖蟲�衷悴膵��\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"�������������������������������������������������贅��嘴娶就炊翠�脆臭趣醉驟鷲�仄厠惻測層侈値嗤峙幟�梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸�砧��蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱�������������������倬�啄��托拓擢晫��濯��託�呑嘆�彈憚歎�炭綻誕奪脫探眈耽貪塔�榻宕帑湯糖蕩兌�太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎�土討慟桶洞痛筒統通堆槌腿褪退頹�套妬投�鬪�特闖�婆巴把播擺�波派爬�破罷芭跛頗判��版瓣販辦鈑�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"�������������������������������������������������阪八��佩唄悖敗沛浿牌狽稗覇�彭澎烹膨愎便��片篇編翩�鞭騙貶�平枰�評�嬖幣廢弊斃肺蔽閉陛佈包��咆哺圃布怖抛抱�暴泡浦疱砲胞脯苞葡蒲�褒逋鋪飽鮑幅暴�瀑������������������爆輻俵剽彪慓�標漂瓢票表豹飇飄驃�稟楓諷豊風馮彼披疲皮被�陂匹弼必泌�畢疋筆苾��逼下何厦�廈昰河瑕��賀�霞鰕壑學�謔鶴寒��旱汗漢澣瀚罕翰閑閒�韓割轄函�咸啣喊檻涵緘艦銜陷鹹�哈盒蛤閤闔陜亢伉姮嫦巷�抗��沆港缸肛航�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"�������������������������������������������������行降項亥�咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸��行享�嚮�鄕響餉饗香噓墟虛許憲櫶�軒歇險驗奕爀赫�俔峴弦懸晛泫炫玄玹�眩�絃絢縣舷衒見賢鉉顯孑穴血�嫌������������������俠�夾峽挾浹狹脅脇莢�頰亨兄刑型形泂滎瀅�炯熒�瑩�螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩�湖滸澔濠濩���瑚瓠皓祜糊縞胡芦葫蒿虎號�護豪鎬頀顥惑或酷婚�混渾�魂忽惚�哄弘汞泓洪烘紅虹訌鴻化和嬅樺�畵�\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"��������������������������������������������������禾花�話�貨�廓擴攫確碻穫丸喚�宦幻患�歡晥桓渙煥環紈還驩鰥活滑猾�闊凰幌徨�惶愰慌晃晄榥�湟滉潢煌璜皇�簧����黃匯回廻徊�悔懷晦會檜淮澮��繪膾茴蛔������������������誨賄劃�宖橫�哮嚆�效斅曉梟�淆爻肴酵�侯候厚��喉嗅帿後朽煦�逅勛勳塤壎焄�燻薰訓暈薨喧暄煊��喙�彙徽�暉煇諱�麾休�烋畦虧�譎鷸兇凶匈洶胸黑昕欣炘痕�屹紇訖欠欽歆��洽翕興僖凞喜噫�姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[10001] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€������������������������������� 。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタ�ツテトナニヌネノハヒフ�ホ��ムメモヤユヨラリルレロワ�゙゚�����������������������������©™�\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"���������������������������������������������������������������� �。,.・:;?�゛゜´`¨^ ̄_ヽヾ�ゞ〃�々〆〇ー―��\~∥|…‥‘’“�()〔〕[]{�〈〉《》「�『��】+�±×�÷�≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○�◎◇◆□■△▲▽▼※〒→�↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽�∵∫∬�������ʼn♯♭♪†‡¶����◯���\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"��������������������������������������������������������������������������������123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ��������bcdefghijkl�n��qrstuvwxyz�������������������������������������������������������������������む�もゃやゅゆょよらりるれ�ゎ��ゑをん��������������\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダ�ヂッツヅテデトドナニヌ�ノ��パヒビピフブプヘベペホボ�マミ�ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ��������ΑΒΓΔΕΖΗΘΙΚΛΜ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπ�στυφχψω�����������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"�����������������������������������������������������������������БВГДЕ�ЖЗИЙКЛМ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмн�опр�туфхцчшщъыь�ю��������������─│┌�┘└├┬┤┴┼�┃�┓┛┗┣┳┫┻╋┠┯┨┷┿�┰┥┸╂�����������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[133] = \"����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳���������������������������������������������������������������������������ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ����������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\n\t\tD[134] = \"����������������������������������������������������������������㎜�����㎡�㎞�㎎��������������������������������������������������������������������������������№�℡��������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\n\t\tD[135] = \"���������������������������������������������������������������������������㈹�㈱��㈲������������������������������������������������〟�����������������㊤㊥㊦㊧㊨��������㌢�㌔����㌃㌶㌘�㌧������㌣㌦㌻㌫��������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"����������������������������������������������������������������∮∟⊿��������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜�悪�渥旭葦芦鯵梓圧斡扱宛�虻飴絢綾鮎或粟袷安庵按暗案闇��以伊���囲夷委�尉惟�慰易椅為�異移維緯胃�衣謂��医井亥域育�磯一壱溢逸稲茨芋鰯��咽員因姻引飲淫胤蔭���\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"����������������������������������������������������������������院陰隠韻��宇�羽迂雨�鵜窺丑碓臼渦嘘唄�蔚鰻姥厩浦瓜�噂云�雲�餌�営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦�越閲榎厭円�園堰奄宴延怨掩�沿演炎焔煙燕猿�艶苑薗�鉛鴛塩於汚甥凹央奥往応押旺横欧殴王�襖鴬鴎黄岡沖�億屋憶臆桶牡乙俺��温�音下化仮何伽価佳加�嘉��家寡科暇果架歌河���禾稼箇花苛茄����課嘩貨迦�霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔��戒�改���\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"�����������������������������������������������������������������晦械海�界皆絵芥蟹開階�凱劾外咳害崖慨概涯�蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇�廓拡撹格核殻�確穫覚角赫較郭閣隔�学岳楽�顎掛笠樫�橿梶�潟割��括活渇滑葛�轄且鰹�椛樺鞄株兜竃蒲釜鎌噛鴨栢茅�粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾�敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰�艦莞観諌貫還鑑間閑関陥韓館舘丸�岸巌玩癌眼岩翫贋�頑顔願�伎�喜器基奇嬉寄�希幾忌�机旗既期棋棄���\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"����������������������������������������������������������������機帰毅気汽畿祈季稀紀徽�記貴起軌�飢騎鬼亀�儀妓宜戯技擬欺犠疑祇義蟻誼議掬�鞠��喫桔橘詰砧���客脚�逆丘久仇休��宮弓急救�朽求汲泣��究窮笈級糾給旧牛去居巨拒拠挙渠虚許�鋸�禦魚亨享京供侠僑兇競共凶�匡��喬境峡強彊怯��挟教橋�狂狭矯胸脅興蕎郷�響饗驚仰�尭�業局曲極玉��僅勤�巾錦斤欣欽��禽筋緊芹�衿襟謹近金�銀�倶�区狗玖矩苦躯駆駈駒具愚虞喰空�寓�隅串櫛釧屑屈���\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"����������������������������������������������������������������掘窟沓�轡窪熊隈粂栗繰桑�勲�薫訓群�郡�袈�係傾刑兄啓圭�型契形径�慶慧憩掲�敬景桂渓畦稽系経継繋罫茎��計詣警軽頚�芸迎鯨�劇戟撃激隙�傑欠決潔穴�血訣月件倹倦�兼券剣喧�堅嫌建憲懸拳�検権牽犬献研硯絹県肩見謙賢軒��険顕験鹸元原厳幻弦減�玄�絃舷言諺�乎個�呼固姑孤己庫弧戸故枯湖�糊袴股胡�虎誇跨鈷雇顧鼓五互��呉�娯後御悟梧檎瑚�語誤護�乞鯉交佼侯候倖光公功効勾厚�����\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"�����������������������������������������������������������������喉�垢好孔��工巧巷幸広庚康弘�慌抗拘控攻昂晃更�校梗構江洪浩港�甲皇硬稿糠紅紘絞綱耕考肯肱腔�航�行衡講貢購郊酵鉱砿鋼閤��項香高鴻剛劫��壕拷濠豪轟麹克刻告国穀酷鵠黒�漉腰甑忽惚骨狛込此頃今困�墾婚�懇�昆根梱混痕紺艮魂些��唆嵯左差査沙瑳砂�鎖裟�座挫債催�最哉塞妻宰彩�採栽歳済�采犀砕砦祭斎細��載際剤在�罪財冴�阪堺榊肴咲崎埼碕鷺作削咋�昨朔柵窄策索錯桜鮭笹匙冊刷���\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"����������������������������������������������������������������察拶撮擦札殺薩雑�鯖�錆鮫皿晒三傘�山惨撒散桟燦�産算纂蚕讃賛酸�斬暫残仕仔伺使刺��嗣四士始姉姿��市師志�指支孜斯施旨�止�死��祉�糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似��字寺慈�時次滋治爾璽痔�示而耳自蒔辞�鹿�識鴫竺軸�雫七�執失嫉室悉湿漆疾質実蔀篠�柴�屡蕊縞舎写射�赦斜煮社紗者�車�蛇邪借勺尺��爵酌釈錫若寂弱惹主�守手朱殊狩�種腫趣酒首儒�呪寿授樹綬需囚�周���\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"����������������������������������������������������������������宗就州修�拾洲秀秋終�習臭舟�衆襲�蹴輯週酋酬集醜什�充�従戎柔�渋�縦�銃�夙宿淑�縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳�準潤盾純巡�醇順処�所暑曙渚庶緒署書薯藷諸助�女���鋤除傷償�匠��哨商唱嘗奨妾娼宵将�少尚庄床廠彰承抄招掌�昇昌昭晶�梢樟樵沼消渉湘焼焦照症���祥称章笑粧紹肖�蒋蕉�裳訟証詔詳象賞醤鉦��障鞘上丈丞乗冗剰城場壌嬢常情擾��浄状畳穣蒸譲醸錠嘱埴飾���\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"����������������������������������������������������������������拭�殖燭織�色触食�辱尻伸信侵唇娠�審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進�震人�刃塵壬尋甚尽腎訊迅陣�笥�須酢図厨�逗�垂帥推水炊�粋翠衰�酔�錘�瑞髄崇嵩数枢趨雛��椙�頗雀裾澄摺寸世瀬�是凄制勢姓�性�政整星晴棲栖正清牲生盛精�声製西誠誓請�醒��斉税脆隻席惜戚斥昔�石��績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌�仙先��宣専尖�戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線���\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"����������������������������������������������������������������繊羨腺舛船薦詮賎践��銭銑閃鮮�善漸然全禅繕膳糎噌塑岨措曾曽楚狙�疎礎祖租粗素組蘇訴阻�鼠僧創��倉喪壮�爽宋層�惣想�掃挿掻��早曹巣�槽漕燥争痩相窓糟�綜���葬蒼藻装走��鎗霜騒�増憎臓蔵贈造促�則����測足速俗属賊�続�袖其�存孫尊���他多太汰詑唾堕妥惰打�舵楕陀駄騨体堆対�岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代�大第�題鷹�瀧�啄宅托択拓沢濯�託��諾茸凧蛸����\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"�����������������������������������������������������������������但�辰奪脱巽竪辿棚谷狸鱈樽誰丹�嘆�担探旦歎淡湛炭短端箪綻耽胆蛋誕�団壇弾断暖檀段男談値知地弛�智池痴稚置致蜘�馳築畜竹筑蓄��秩窒茶嫡�中仲宙忠抽昼柱注虫衷註酎鋳�樗瀦猪苧著貯�兆凋喋寵帖帳�弔張彫徴懲挑暢�潮牒町眺�脹腸�調諜超跳銚長頂鳥勅�直朕沈�賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴�椿潰�壷嬬紬爪�釣鶴亭低��剃貞呈堤定�底庭廷弟悌抵挺�梯汀碇禎程締艇訂諦蹄逓���\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"����������������������������������������������������������������邸鄭釘鼎泥摘擢敵滴的笛��溺哲徹撤�迭鉄典填天展店添�甜貼転顛点�殿澱田電兎�堵塗妬屠徒斗�渡登�賭途都�砥砺努度土奴怒倒党冬��刀�塔塘套宕島嶋悼投��桃梼棟盗淘湯涛�燈当痘祷等答筒糖統到董蕩藤討謄豆�逃��陶頭騰闘�動�堂導憧撞洞瞳童胴��銅峠鴇匿得徳涜特�禿篤毒独読栃橡凸�椴届鳶苫寅酉瀞噸屯惇敦沌豚�頓呑曇�奈那内�凪薙謎���楢馴縄畷�楠軟難�二尼�迩匂賑肉虹廿日乳入���\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"����������������������������������������������������������������如尿韮任妊��濡禰祢寧葱猫熱年念�撚燃粘乃廼之埜嚢悩濃�能脳膿農覗蚤巴把播覇�波派�破婆罵芭馬俳廃�排敗�盃牌背肺輩��培媒梅�楳煤狽買売賠陪這�秤矧�伯剥���泊白箔粕舶薄迫�漠爆縛莫�麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪�罰抜�閥鳩噺塙蛤隼伴判���帆�斑�氾汎版犯�畔�般藩販範釆煩頒飯挽晩番盤�蕃蛮匪��妃庇彼悲扉批披�比泌疲皮碑秘緋罷肥被誹費��飛樋簸備尾微枇毘�眉美���\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"����������������������������������������������������������������鼻柊稗匹疋髭彦��肘弼必畢筆逼桧姫媛�百謬俵彪標氷漂瓢票表評豹廟�病秒苗錨鋲蒜蛭鰭�彬斌浜瀕貧賓頻�瓶�付埠夫婦富冨布府怖扶敷�斧普浮父符�膚芙譜負賦赴阜附侮撫武舞葡蕪部�楓風葺蕗�副復幅��腹複覆淵弗払沸�物鮒分�噴墳憤扮焚奮粉糞紛雰文�丙併兵塀幣平弊柄並蔽閉陛米�僻�癖碧別瞥蔑箆�変片篇編辺返�便勉娩�鞭�舗鋪圃�歩甫補輔穂募墓慕戊暮�簿�倣俸包呆報奉�峰峯崩庖抱�放方朋���\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"����������������������������������������������������������������法泡烹砲縫胞芳�蓬蜂褒訪豊邦鋒飽鳳鵬�亡�剖�妨帽忘忙房暴望�棒冒紡肪膨謀貌貿鉾防�頬北僕�墨撲朴牧�穆釦勃没殆堀幌奔本翻凡盆�摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒�亦俣�抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙�民眠務夢無牟矛霧鵡椋婿娘冥�命明盟迷銘鳴姪�滅�棉綿緬�麺摸模茂妄孟毛猛盲網耗蒙儲木黙目�勿餅尤戻籾貰�悶紋門�也冶夜爺耶野弥矢厄役約薬訳��柳薮鑓愉愈油癒���\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"����������������������������������������������������������������諭輸唯佑優勇�宥幽悠憂�有柚湧涌猶猷由�裕誘�邑郵雄�夕予余与誉輿�傭幼妖容庸���曜楊様洋溶熔用窯羊耀葉蓉�謡踊�陽養慾抑欲�沃浴翌翼淀羅螺裸�莱頼雷洛絡�酪乱��欄濫�蘭覧利�履�梨�璃痢�裡里離陸律率立葎掠略劉�溜�留硫粒隆竜�侶慮旅虜了亮僚両凌寮料�涼猟療瞭稜糧良諒��陵領力緑倫厘林淋��臨輪隣鱗麟瑠�涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉��漣煉簾練����\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"����������������������������������������������������������������蓮連錬呂魯櫓炉賂路露労�廊弄朗楼榔浪�牢狼篭���郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘�詫�蕨椀湾碗腕��������������������������������������������弌�丕个丱丶丼丿乂乖乘亂亅豫亊舒�于亞亟亠亢亰亳亶从�仄仆仂仗仞仭仟价伉佚估佛�佗佇佶侈�侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚�俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆��會�������傀傚傅傴傲���\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"����������������������������������������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉�儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉�冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭�凰凵凾刄刋刔刎刧刪刮刳刹�剄剋剌剞剔剪剴剩剳剿剽�劔劒剱劈劑辨辧劬劭劼劵��勗勞勣勦飭勠勳勵勸勹匆匈甸���匕匚匣匯匱匳匸���丗��凖���夘��厂厖厠厦厥厮厰厶�簒雙�曼燮������呀�������呎�呵咎呟呱呷呰咒呻咀呶咄�咆哇咢咸咥咬哄哈咨���\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"����������������������������������������������������������������咫哂咤咾咼哘哥哦�唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳�喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎�營嘴嘶嘲嘸�噫噤嘯噬噪嚆嚀嚊嚠嚔�嚥嚮嚶嚴囂嚼�囃囀囈囎囑囓囗囮囹圀囿圄圉圈國�圓團圖嗇圜圦圷圸�圻���埀垈��垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙�塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊�夛梦夥夬夭夲夸夾竒奕�奎奚奘奢奠奧奬奩���\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"����������������������������������������������������������������奸��佞侫妣妲姆姨姜�姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲�嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀�它宦宸寃寇寉寔�寤實寢寞寥寫寰寶寳尅將專�尓尠尢尨尸尹�屆屎屓��孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢�嶬嶮嶽�嶷嶼巉�巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠�廂廈�����\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"����������������������������������������������������������������廖廣�廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉�彜弋弑弖弩弭弸�彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱�悳忿怡��怙�怩怎怱怛怕怫怦�怺�����������������惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘�愕愆惶惷愀惴惺愃愡惻惱�愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟�慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹�懦懣懶懺懴懿懽懼懾戀戈戉�戌戔戛���\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"����������������������������������������������������������������戞戡截戮戰戲戳�扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻�拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵�挾���掖掎掀掫�掣�掉掟掵���掾������������������摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕�敘敞�敲數斂斃變斛斟斫斷旃旆�旄旌旒旛旙无旡旱�昊昃旻�昵昶昴昜�晄晉�晞�晤晧晨晟晢晰暃暈暎暉暄暘��暹曉暾暼���\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"����������������������������������������������������������������曄暸曖曚曠昿曦曩曰曵曷�朖朞朦朧霸朮朿朶�朸朷������枉�枩��枌枋枦枡枅枷柯枴柬枳柩枸柤柞�柢柮枹柎柆柧檜栞框栩桀�栲桎�梳栫桙档桷桿梟�梭梔�梛梃檮梹桴梵梠梺��桾�棊椈棘椢椦棡椌�棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞��楪榲榮�榿�槓榾槎寨槊�榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒�樣樓橄樌橲樶橸橇橢橙橦橈樸樢��檠檄檢檣���\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"����������������������������������������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉�歙歔歛歟歡歸歹歿殀殄殃�殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯�麾氈氓气氛氤氣汞汕汢汪沂�沚�沛汾汨汳沒�泄泱泓沽泗泅�沮沱沾沺泛泯泙泪洟�洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶�渟湃渺湎渤滿�游溂溪溘滉溷滓溽溯滄溲滔滕�溥滂溟�漑�滬滸滾漿滲漱滯漲滌���\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[224] = \"����������������������������������������������������������������漾漓滷澆潺潸�澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑��濾瀛瀚潴�瀘瀟瀰瀾瀲��炙炒炯烱炬炸炳炮烟烋��烙焉烽焜焙煥煕熈煦煢煌煖煬�燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿��爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂�犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷�猗猊猜猖�猴猯猩猥猾��默���������玳�玻����璢�瑯����瑕�瑟瑙�瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊�瓔����\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"����������������������������������������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎�甕甓甞甦甬甼畄�畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚�疥疣痂疳痃疵疽疸疼疱�痊痒痙痣痞痾痿�痼�痰痺痲痳瘋�瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂�盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸���������瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇�矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬���\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"����������������������������������������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊�禧齋禪禮禳禹禺秉秕秧秬秡秣稈�稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩�穰穹穽窈窗窕窘窖窩竈窰�窶竅竄窿邃竇竊��竕竓站竚�竡竢竦竭竰笂�笊笆笳笘笙笞笵笨笶�筺笄�笋筌筅筵筥筴筧筰筱筬筮�箘箟�箜箚箋箒��箙篋�篌�箴篆�篩簑簔篦篥籠簀簇簓篳篷簗�篶簣簧簪簟簷簫簽籌籃籔�籀�籘籟籤籖籥籬籵粃�粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆���\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"����������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮�絣經綉絛�絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘�緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷�縲縺繧�繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒�纓纔纖纎纛纜缸缺罅罌�罎�网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞�羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻���������������肄肆肅肛肓肚肭�肬胛胥胙�胄胚胖脉胯胱脛脩脣脯腋���\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"����������������������������������������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉�臑臙臘臈臚臟臠臧臺臻臾�舂舅與舊��舖舩舫舸舳艀艙艘�艚艟艤�艢艨艪艫舮艱艷艸艾�芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱�茹��茯茫茗茘莅莚莪莟莢莖茣莎莇莊�莵��莠莉莨����������������莽�蔆�葭��蕚蒄葷葫蒭葮蒂葩葆�葯葹�蓊葢蒹蒿蒟蓙�蒻蓚��蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈���\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�����������������������������������������������������������������蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾�藉薺�薹�藕�藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿�乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬�蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉�蛹蜊蜴蜿蜷蜻蜥蜩蜚�������������蠅螢螟螂螯蟋螽蟀�雖螫蟄螳蟇蟆螻蟯蟲蟠��蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫�衾袞衵衽袵衲袂袗袒袮袙袢�袤袰袿袱裃裄裔裘裙�裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫�襄褻褶褸襌�襠襞���\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"����������������������������������������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜�觧觴觸訃訖�訌訛�訥訶�詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄�諂諚諫諳諧�諤諱謔諠諢諷諞諛謌謇謚諡謖�謗謠謳鞫謦謫謾謨�譌�譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺�谿豈豌豎�豕豢豬豸豺貂貉貅貊�貎貔豼貘�貭貪貽貲貳貮貶賈�賤賣賚賽賺賻贄贅贊贇���齎贓�贔贖赧赭赱赳�趙跂趾趺�跚跖跌跛跋跪跫跟跣跼踈踉跿�踞�踟蹂踵踰踴蹊���\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"����������������������������������������������������������������蹇蹉蹌�蹈蹙蹤蹠踪蹣蹕蹶蹲蹼�躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜�轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡�逞逖逋逧逶逵逹迸����逎�逾������隨�邂��邀邊邉�邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀�釉釋�釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋�銜銖銓銛鉚�銹銷鋩�鋺�錮���\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"����������������������������������������������������������������錙錢錚錣錺錵錻�����鎰鎬鎭鎔鎹����������������������鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾�鑿閂閇閊閔閖閘閙�閠閨閧閭閼閻閹閾闊濶闃�闌闕闔闖關闡闥闢阡阨阮阯陂陌�陋陷陜陞�陟陦陲陬�隘隕隗險隧隱隲隰隴隶隸隹雎雋雉��雜�雕雹霄霆霈霓霎霑�霖霙霤霪霰霹霽霾����������勒���鞅���鞆鞋��鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭�韲竟韶韵�頌頸頤頡頷頽顆�顋顫顯顰���\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"����������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡�餞餤餠餬餮餽餾饂饉饅�饋饑饒饌饕馗馘馥馭馮馼駟駛�駘駑駭駮駱駲駻駸��騅駢騙騫騷驅驂驀驃�騾驕�驛驗驟驢驥驤驩驫驪骭骰骼髀�髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃��魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆�鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒�鴿鴾鵆鵈���\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"�����������������������������������������������������������������鵞鵤鵑�鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄�鶻鶸鶺鷆�鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽�麈麋麌麒麕麑�麥麩麸麪麭�黌黎��黔黜點�黠黥黨黯�黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇�瑤凜熙�������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[240] = \"����������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"�����������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�����������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�����������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"����������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"�����������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"�����������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"����������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"�������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"�������������������������������������������������������������������������������������¦'"����纊褜�銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔��倢俿倞���傔僴僘兊�兤�冾凬刕劜劦勀勛匀匇匤�厓厲�﨎咜咊咩哿喆��垬埈埇��增墲夋奓奛�奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹�弡弴彧德忞�悅悊惞惕愠惲愑愷愰憘戓抦�摠�擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗�枻桒柀�桄�﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯���\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"����������������������������������������������������������������涖涬�淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫�焄煜煆煇凞�燾犱犾猤猪�玽����������瑢璉璟�畯皂皜皞皛皦益�劯砡硎硤硺礰礼神�祥禔福禛竑竧靖竫箞�絈絜綷綠緖繒罇羡羽�����葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣�﨤逸�郞都鄕鄧釚釗釞釭釮釤釥鈆�鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙�﨧鋕鋠鋓錥錡鋻﨨錞鋿�錂��鎤����鑅鑈閒隆﨩�隯霳霻�����顗顥飯飼餧館馞驎髙���\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"����������������������������������������������������������������髜魵魲�鮱鮻鰀鵰鵫鶴鸙黑������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[10002] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����������������������������������������������������������������������������������������������������������������������������©™…\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"��������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"�����������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"��������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[133] = \"�����������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\n\t\tD[134] = \"�������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\n\t\tD[135] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"�����������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"��������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"�����������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"�������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"�����������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"�������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"�����������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"��������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"����������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"���������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"��������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"�����������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"��������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"�����������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"�������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"�����������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"��������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"�����������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"��������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"����������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"��������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"�����������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"��������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"���������������������������������������������������������������� ,�。.‧;:?�︰�‥�﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴�()︵︶{�︷︸〔〕︹︺�】︻︼《》︽︾〈〉︿﹀「��﹂『�﹃﹄﹙﹚����������������������������������﹛﹜�﹞‘’“��〞‵′#&*※§〃○�△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_�﹉﹊�﹎﹋﹌﹟﹠﹡+�×÷±√<>�≦≧≠∞≒≡﹢﹣﹤﹥﹦~∩∪⊥∠∟⊿��∫∮∵∴♀♂⊕⊙↑↓�→↖↗↙↘∥∣��\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"����������������������������������������������������������������\∕﹨$¥〒¢£%@℃℉﹩﹪﹫�㎜�㎞�㎡㎎��°兙兛兞�兡兣嗧瓩糎�▂▃▄▅▆▇█�▎�▌▋▊▉┼┴┬┤├▔─│▕┌�└┘╭����������������������������������╮╰╯����◢◣◥◤╱╲╳�123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩���ABCDEFGHIJKLMNOPQRSTUVWXYZ�bcdefghijkl�n��qrstuv�\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"����������������������������������������������������������������wxyzΑΒΓΔΕΖΗΘΙΚΛΜ�ΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπ�στυφχψωㄅㄆㄇㄈㄉㄊㄋㄌ�ㄎ������������������������������������ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜ�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙ˉˊˇˋ����������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"����������������������������������������������������������������一乙�七乃�了二人儿入八几刀�力匕���三下丈上丫丸凡久么也乞于亡兀刃勺���土士夕大女�孑孓寸�尢尸山�工己已巳巾干廾弋弓�����������������������������������丑��中丰丹之尹予云井互五亢�什仃仆仇�今介仄元�內六兮公冗凶分切刈勻勾勿化匹����厄���壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛�水�爪父爻片牙牛犬王丙�\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"����������������������������������������������������������������世丕且丘主��乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北�仟������去�������������������四囚外����������������������������������央失奴奶孕它尼巨巧左市布平幼�弘弗必戊打扔扒扑斥旦朮本未末札正�民�永�汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕��休�仲件任仰仳份�伋光兇兆先全�\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"����������������������������������������������������������������共�冰列刑划刎刖劣匈匡匠�����������������因回�圳地在圭圬圯圩夙多夷夸妄奸妃好她如�字存宇守宅安寺尖屹州帆并年�����������������������������������弛忙忖戎戌��扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖�汗汙江池�汕污汛�汎�牟�百竹米糸缶羊羽�考而耒耳�肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨��佇佗佞伴佛何估�佑伽伺伸佃佔似但佣�\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"����������������������������������������������������������������作你伯低伶余�佈佚兌克�兵冶冷別判利刪刨劫助努劬匣�������呎�呆呃�呈呂��告��������呀����囪困囤囫����������������������������������������圾��圻壯夾�妒妨妞妣妙妖�妤妓妊妥�孜孚孛完宋�尬局�尿尾�岑岔岌巫希�庇床廷弄弟彤形彷役忘忌志�忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"������������������������������������������������������������������步�求汞沙�沈沉沅沛汪決�汰沌汨沖沒汽沃汲汾汴沆汶�沔沘沂����牢牡牠狄狂玖甬甫男甸皂盯矣�秀禿究系罕肖肓�肘肛肚育良芒����������������������������������芋�見角言谷豆豕�赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯��佳使佬供例來侃佰併侈佩佻侖佾�侑佺兔兒兕兩具其典冽函刻券刷刺到刮制�劾劻�����������味呵�\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"����������������������������������������������������������������咖呸咕咀呻呷咄咒咆呼�呱呶和咚呢周咋命咎固垃�������夜奉奇奈奄奔妾妻委妹妮姑姆��始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居����������������������������������屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往�彿彼�忠忽念忿�怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押�拙拇�抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀�昕昊�\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"����������������������������������������������������������������昇�朋�枋枕�果��枇�林���枉���枚枓���欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油�沮泗泅泱沿治泡泛泊沬泯泜泖泠����������������������������������炕炎炒炊炙爬爭爸版牧物狀狎狙狗�玩玨玟玫玥甽�疙疚的盂盲直知矽社祀�秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾�芳�芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱�表軋迎返近邵邸邱邶采金長門阜陀阿阻附�\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"����������������������������������������������������������������陂隹雨��亟亭亮信侵侯便俠俑��促侶俘俟俊俗侮�俄係俚俎俞侷兗冒冑冠剎剃削�剌剋則勇勉勃����厚�咬哀咨哎哉咸咦咳哇哂咽咪�����������������������������������哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契�奎�姜姘姿姣姨娃姥姪姚姦�姻孩宣宦室客宥�屎��屋峙峒巷�帥帟幽庠度建弈弭彥很待徊律徇後徉怒�怠急怎怨�����������拜挖按拼拭�拮拽指拱拷�\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"����������������������������������������������������������������拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔�柬架枯柵柩柯柄柑枴柚查枸�柞柳枰柙柢�柒歪殃殆段毒毗氟泉洋洲洪�津洌洱洞洗����������������������������������活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷�玻玲��玳甚甭�界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅�盹相眉看盾盼眇矜砂研砌�祆祉祈祇禹禺科秒秋穿�竿竽籽紂紅紀紉紇約紆缸美羿耄�\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"������������������������������������������������������������������耑耶胖胥胚胃胄背胡胛胎胞胤�致舢苧范茅苣苛苦茄若茂茉苒苗英�苜苔苑苞苓苟苯茆�虹虻虺�衫�觔計訂訃貞負赴赳趴�軌述迦迢迪迥����������������������������������迭迫迤迨郊郎�郃酋酊�閂�陋陌���韋韭音�風飛食首香乘亳倌�倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢�凌准凋剖剜剔剛�匪�原��哨��唷哼哥哲唆哺唔哩哭員唉哮哪�\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"����������������������������������������������������������������哦唧唇哽�圃圄埂埔埋埃堉�套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展�峭峽峻峪峨峰島�峴差席師庫庭座弱徒徑�������������������������������������������悄悟悚�悔悌悅悖扇拳挈拿�挾振�����挺�挽挪挫挨��效敉料�旅時晉�晃晒晌晅�書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴�桀格桃株桅栓栘�殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓�\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"����������������������������������������������������������������浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈�爹特狼狹狽狸狷玆������畔�畜畚留疾病症疲疳疽疼疹痂疸皋皰益�盎眩真眠眨矩砰砧砸�破砷����������������������������������砥砭砠砟砲祕�祠祟祖神�祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純�紕級紜�紙紛缺罟羔翅�耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀�航舫舨般芻茫���茸��茵茴�茲茹茶茗�茱茨��\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"����������������������������������������������������������������虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷�袂衽衹記�討訌訕訊託訓訖�訑豈豺豹財貢起躬軒軔�辱�逆迷退迺迴逃追逅迸邕郡�郢酒�酌釘�釗釜釙閃院陣陡����������������������������������陛�除陘陞隻飢馬骨高鬥鬲鬼乾�������������������兜冕凰剪副勒務勘動��匙匿�匾�曼商啪啦啄啞啡啃啊唱啖�啕唯啤唸售啜唬啣唳�啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶�婉婦婪婀�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"����������������������������������������������������������������娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜�崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜�患悉悠您惋悴惦悽����������������������������������情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控�掖探接��掘措�掩掉掃掛�推掄授掙採掬排�掀�����敖救教敗啟�敘敕敔斜斛斬�旋旌旎�晚晤晨晦晞曹勗望�梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔�梨梟梡梂欲殺�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"����������������������������������������������������������������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽�猜猛猖猓猙率������瓠瓶����������������������������������瓷甜產略畦畢異�痔痕疵痊�皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜��脯脖脣脫脩脰脤舂舵舷舶船莎莞莘�莢莖莽莫莒莊莓莉莠����\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"����������������������������������������������������������������莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖�袋覓�訪�訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這�通逗連速��逕逞造�逢逖逛途����������������������������������部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢�傅備傑傀傖傘傚最凱割剴創剩勞�勛�厥啻喀喧啼喊�喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙�堯堪場堤堰報堡�堠壹壺奠�\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"����������������������������������������������������������������婷媚婿媒媛媧孳孱寒富寓�尊尋就嵌�崴嵇巽幅帽幀幃幾廊�廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌���������������������������������������������������摒��敞敦敢散斑�斯普晰晴晶景暑智晾晷曾替期�棺棕棠棘棗椅棟棵森棧棹棒棲棣棋��椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴�渺測湃�渾滋�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"����������������������������������������������������������������溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩������������甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜�短�硬硯�稈程稅稀窘����������������������������������窗窖童竣等策筆�筒答�筋�筑粟粥絞�絨絕紫絮絲絡給絢絰絳善翔翕耋�肅腕腔腋腑腎脹腆脾腌腓腴舒舜�����������著��������������虛蛟蛙蛭蛔蛛蛤�蛞街�裂袱覃視註詠評詞証��\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"����������������������������������������������������������������詔詛�詆訴診訶詖象貂貯貼貳貽�費賀貴買貶貿貸越超�跎�跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥�鈔鈕鈣鈉鈞��鈇鈑閔�開閑����������������������������������間閒閎隊階隋陽隅隆�陲隄�雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃�黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧�嫉嫌媾媽媼�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"����������������������������������������������������������������媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚�慈感想愛惹�愈慎慌慄�愾愴愧�愆愷戡戢���������������敬斟新暗暉暇暈暖暄暘�會榔業����������������������������������楚楷楠楔極椰概楊楨楫楞楓楹榆�楣楛歇歲毀殿毓毽溢溯滓溶滂��滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷�猿猾瑯瑚瑕瑟瑞��瑙瑛瑜當畸瘀痰�痲痱痺痿痴痳盞盟������\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"�����������������������������������������������������������������������矮碎碰碗碘碌碉硼碑碓硿祺祿��禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑��絛置罩罪署義羨群��肆肄腱腰腸腥腮腳腫����������������������������������腹腺腦舅艇蒂葷��葵葦葫葉葬葛��葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘�裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"����������������������������������������������������������������辟農�����逼�������逾�鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉�鉅鈹鈿鉚閘隘隔隕�雋雉雊雷電雹零����頑頓頊頒頌飼飴����������������������������������飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕�僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉�嘎嗷嘖嘟嘈�嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察�屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"����������������������������������������������������������������愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧�摭摻敲斡旗旖暢暨�榜榨榕�榮槓構榛榷榻榫榴��榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬�漂漢����������������������������������滿滯漆漱漸漲漣漕漫漯澈漪滬�滲滌滷熔熙煽熊熄熒爾犒犖��瑤瑣瑪瑰瑭甄疑瘧�瘋瘉瘓盡監瞄����碟碧碳碩碣禎��種稱窪窩竭端管箕箋筵算�箔�箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"����������������������������������������������������������������罰翠翡翟��肇�膀�膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓�蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘�蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣�誡誓誤����������������������������������說誥誨誘誑誚誧豪�貌賓賑賒赫趙趕跼輔輒輕輓辣���������鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需�鞅韶頗領颯颱餃餅餌餉�骯骰髦�魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"����������������������������������������������������������������劇劈劉�劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履�嶔幢幟幡廢廚廟�廣廠彈影德徵慶慧慮�慕憂����������������������������������慼慰慫慾憧�憫憎憬憚憤憔憮戮摩摯摹撞撲撈�撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨�樞標槽模樓樊槳樂樅槭樑�歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛��瑩璋璃�\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"����������������������������������������������������������������瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼�稿稼穀稽稷稻窯窮箭箱範箴篆篇�箠篌糊締練緯緻緘緬�編緣線緞緩綞緙緲緹罵罷羯����������������������������������翩耦膛膜�膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂����������衛��複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論�誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫��踢�踩踟踡踞躺�輛輟輩輦輪輜輞�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"����������������������������������������������������������������輥�����鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤�銳銼鋒鋇鋰銲閭閱霄霆震霉��鞋�頡頫頜颳養餓餒餘��駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉����������������������������������鴃麩麾黎墨齒儒儘儔�儕冀冪�劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶�墾壇壅奮�嬴學寰導彊憲憑憩憊�憶憾懊懈戰擅�擋撻撼據擄擇擂�撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡�\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"����������������������������������������������������������������濃澤�澧澳激澹澶澦澠澴熾燉�燒燈燕熹燎燙燜燃燄�璜璣璘璟璞瓢甌�瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦�穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊����������������������������������縑縈縛縣縞�縉�罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢�衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾�謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦������鄴醒錠錶鋸錳錯錢鋼錫錄錚�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������錦錡錕錮錙閻隧隨險雕霎霑霖�霓����鞘頰頸頻頷頭頹頤�館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔�龜優償儡儲勵嚎嚀�嚅嚇�����������������������������������壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗�檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆��璩環璦璨癆療癌盪瞳瞪瞰瞬�\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"����������������������������������������������������������������瞧瞭矯磷磺磴磯�禧禪穗窿簇�篾篷簌篠糠糜糞糢糟糙�縮績繆縷縲繃縫總縱繅�縴縹繈縵縿縯罄翳翼�����臆臃膺臂臀膿膽臉膾臨舉艱薪����������������������������������薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠�謄��谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿��還�邂邀鄹醣醞醜�鎂錨����錘������闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵��\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"����������������������������������������������������������������駿鮮鮫鮪鮭鴻鴿麋�點黜�黛鼾齋�嚕嚮壙壘嬸�懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑�燻燼燾燸��璧璿甕癖癘����������������������������������癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻����舊�薩��藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫�贅蹙蹣蹦蹤蹟蹕軀轉�邇邃邈醫醬�鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖�闕離雜雙雛雞霤鞣鞦�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"����������������������������������������������������������������鞭韹��題顎顓颺餾餿餽餮馥騎�鬃鬆�魎�鯊鯉鯽鯈鯀鵑�鵠黠鼕鼬儳嚥壞壟壢寵�廬懲懷懶懵攀�曠�櫥�櫚櫓瀛瀟瀨瀚�瀕瀘爆�牘犢������������������������������������璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩�藪藕藤藥藷蟻蠅�蟹蟾襠襟襖襞�譜識證譚譎�譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮��������������關隴難霪霧�韜韻類�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"����������������������������������������������������������������願顛颼饅饉騖騙�鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲���癢癥礦礪礬礫竇競籌籃�糯糰辮繽繼����������������������������������纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫��躉�躅躂醴釋���闡霰飄饒饑馨騫騰騷騵鰓�鹹麵黨鼯齟齣齡儷儸�囀囂夔屬�懼懾�攜斕曩櫻欄櫺殲�爛犧瓖瓔癩矓��續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴�\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"����������������������������������������������������������������護譽贓躊�躋轟辯醺�������闢霸霹露響顧顥饗驅驃驀騾�魔魑鰭鰥鶯鶴鷂鶸�黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡��玀瓤疊癮癬����������������������������������禳籠籟��臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃�顫饕驕�髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬�瓚竊籤籣籥纓纖纔臢蘸蘿蠱變��鑣鑠鑤�顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬�癱癲矗�羈蠶蠹衢讓讒�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"����������������������������������������������������������������讖艷贛釀鑪���韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖�籬籮蠻觀躡�鑲鑰顱饞髖鬣黌�矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲�������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"��������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"����������������������������������������������������������������乂乜凵匚厂万丌乇�囗兀屮彳�冇与丮亓仂仉仈冘勼�厹圠夃夬�巿旡殳毌气爿丱丼仨仜仩仡�仚刌匜�圢圣夗夯�宄尒尻屴屳帄庀庂忉戉�氕����������������������������������氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈�伂伅伢伓伄仴伒冱刓刉�劦匢匟�厊�囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔�扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜�汊汔汋�\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"����������������������������������������������������������������汌�牞犴犵玎甪癿穵网艸艼芀艽艿�襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟�佘伭伳伿佡�冹刜刞刡劭劮匉��厎����呔呅�������������������������������������������呇囮囧囥������夆奀妦妘妠妗妎妢��妧妡宎宒尨尪��岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈�弅�彸彶忒忑�忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎�抔抇扱扻扺扰�抈扷扽扲扴攷旰旴旳旲旵���\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"�������������������������������������������������������������������������氙氚汸汧汫沄沋�汱汯汩沚汭沇沕沜汦汳汥汻沎��牣犿犽狃狆�犺狅玕玗玓玔玒町甹疔疕�礽耴肕肙�肒肜��芅芎芑芓����������������������������������芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹�佸�侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿�咑咂咈呫呺呾呥呬呴呦�呯呡呠咘呣呧呤囷囹�������垀������\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"������������������������������������������������������������������夌奅妵妺�姎妲姌�妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧�岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋����������������������������������怴怊怗怳怚怞怬怢��怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋�昅旽昑�曶朊枅�枎枒��枘枆构��枌�枟枑枙枃����枔欥殀歾毞�沓泬泫泮泙沶泔沭泧沷�泂沺泃泆泭泲�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"����������������������������������������������������������������泒�沴沊�沀泞泀洰�泇沰泹�泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬��瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺����������������������������������矷祂礿秅穸穻竻籵糽耵�肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓�迖迕迗邲邴邯邳邰阹阽阼阺陃�俅俓侲俉俋�俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽�厗厖厙厘咺咡咭咥��\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"����������������������������������������������������������������哃�咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗�垛垔垘�垙垥垚垕壴�奓姡姞姮娀姱�姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌�峘峌峗峋峛����������������������������������峞峚峉峇峊峖峓峔�峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹������������怤����扂扃��挋拵挎挃拫拹�挌拸拶挀挓挔拺挕拻拰�敃斪斿昶昡昲昵昜昦昢昳昫昺�昴昹昮���柲柈枺�\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"����������������������������������������������������������������柜枻柸柘柀枷柅柫柤柟枵�枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀�浂�����������������������������������洘洷洃�浀洇洠洬洈洢洉�炷炟炾炱炰炡炴炵炩�牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅����玹玶玵玴�玿�玾��玸�瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅��砎砉砃砓祊祌祋祅祄秕��秖秎窀�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"����������������������������������������������������������������穾竑笀�籺籸籹籿粀�紃紈�罘羑�羾耇耎�耔耷胘胇胠胑胈胂�胅胣胙胜胊胕胉�胗胦�臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪����������������������������������苤苠苺苳苭虷虴虼虳�衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔�陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢�匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"����������������������������������������������������������������唊哻哷哸哠唎唃唋�圂埌堲埕埒垺埆垽垼垸垶垿埇�垹�夎奊娙娖娭娮娕�娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧��������������������������������������悢悈悀悒��悃悕悛悗悇悜悎戙扆拲��挬��挶��挹��挼挩�挴���挭�挳��挸���敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋�栖栱栜栵栫栭栯桎桄栴�栒栔栦栨栮�栺栥栠欬欯欭欱欴歭肂殈毦毤�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"����������������������������������������������������������������毨毣毢毧氥浺浣浤浶�浡涒浘浢浭浯涑�淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵�烜烓烑�烋缹烢烗烒烞烠烔�烅烆烇烚烎烡牂牸����������������������������������牷牶猀狺狴狾狶狳狻�����玼������������瓞瓟瓴瓵甡畛畟疰�疻痄痀疿疶疺皊盉�眛�眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛�祜祓祒祑秫秬秠秮秭秪秜秞�窆窉窅窋窌窊窇竘��\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"����������������������������������������������������������������笄笓笅�笈笊笎笉笒粄粑粊粌粈�粅紞�紑紎紘紖紓紟紒�紌罜罡罞罠�罛羖羒翃翂翀耖耾耹胺胲胹胵�胻脀�舯舥茳茭�茙�茥�茿�茦茜茢������������������������������������茛茪茈茼�茖茤茠茷茯茩����茞茬�茧�虓虒蚢蚨蚖�蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎��蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤��\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"����������������������������������������������������������������酎�釕釢釚陜陟隼飣髟鬯乿���������������倕�������������剫剭剬剮勖勓匭厜啵啶唼��唴唪啑啢唶唵唰啒啅����������������������������������唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳�堇埮埣埲埥埬埡堎埼�埧�堌埱埩埰�堄奜婠婘婕婧婞娸娵婭�婟婥婬婓婤婗婃�婒婄婛婈媎娾�娹婌婰婩婇婑婖婂婜孲孮�寀屙崞崋�崚崠崌崨�崦崥��\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"����������������������������������������������������������������崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊�悆悾悰悺惓惔�惤惙�惈悱惛悷惊悿惃�惀挲�掊掂�掽掞掭�掗掫掎�掇��掯�掜�掮�掤挻掟�����������������������������������掅�掑��敓�晥晡晛晙晜晢朘桹梇�梜桭桮梮梫楖桯梣梬梩桵桴梲�桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑��殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜�淛淴淊涽淭淰涺淕淂�淉�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"�����������������������������������������������������������������淲淓淽淗�淣涻烺�烷焗烴焌烰焄烳�烼烿焆焓焀烸烶焋焂焎牾牻牼牿�猗猇猑猘猊猈狿�猞玈���������������畤畣痎痒�����������������������������������痋痌痑��皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉�硊硌砦硅�祤祧祩祪祣祫祡离秺秸秶秷�窔�笵筇笴笥笰笢笤笳笘笪�笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩�絇紾紿絊紻紨罣羕羜�羛翊翋��翑翇�翉耟�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"����������������������������������������������������������������耞耛���脘脥脙脛脭脟脬脞脡脕脧�脢舑舸舳舺舴舲艴�莣莨���莤���莕莙�莔莩�莃莌�莛莪莋�莥莯莈莗莰�莦莇莮�莚虙虖蚿蚷����������������������������������蛂�蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜�豽貥赽赻赹趼跂趹趿�軘軞�軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪�\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"����������������������������������������������������������������釫釷釨釮镺閆閈陼陭陫陱陯隿�頄飥馗傛傕傔傞傋傣傃傌傎��傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈�喵�喣喒喤啽喌喦啿喕喡喎圌堩堷����������������������������������堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜�媓�寪�寋寔寑寊寎尌尰崷嵃嵫�嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄�彘徦徥徫惉悹惌惢惎惄愔�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"����������������������������������������������������������������惲愊愖愅惵愓惸惼惾�愃愘��惿愄愋扊掔掱掰�������������摡�掾�������������攲敧敪敤敜敨敥斌�斞斮�旒����������������������������������晼晬晻暀晱晹晪晲�椌棓椄棜椪棬棪棱�棖棷棫棤棶椓�棳棡椇棌椈楰梴椑棯棆椔棸�棽棼棨椋椊椗棎棈�棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿��湳渜渳湋湀湑渻渃渮湞�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"����������������������������������������������������������������湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌�������������������������������������������������瓻甯畯畬痧痚痡痦�痟痤痗皕皒盚���������矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪�絭絜絫絒絔絩絑絟絎缾缿罥�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"����������������������������������������������������������������罦羢羠羡翗���胾胔腃腊腒�腇脽�脺臦臮臷臸臹舄舼舽舿艵茻���������������莿��������������������������������������������������������������������蛘蛢蛦蛓蛣蛚蛪�蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲�裉覕覘覗�觚觛詎�訹詙詀詗詘詄詅詒詈詑詊詌�豟�貀貺貾貰貹貵趄趀趉跘跓�跇跖跜�跕跙跈跗跅軯軷軺�\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"����������������������������������������������������������������軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻�鄀鄇鄅鄃酡酤酟酢酠�鈊鈥鈃鈚鈦�鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻�閌�隇陾隈����������������������������������隉隃隀雂雈雃雱雰���頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰�傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌�嗋嗊�嗀嗔嗄嗩喿嗒��嗕嗢嗖嗈嗲�嗙嗂圔塓塨塤��塉塯塕塎�塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆�\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"����������������������������������������������������������������媷嫀嫊媴媶�媹�寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰�幎幊�幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯�愩慀戠酨戣戥戤�������������������������������������������摃����������������摀��������敯斒旓暆暌暕�暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘�楴楌椻楋椷楜�楑椲楒椯楻椼歆歅歃歂歈�殛�毻毼�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"����������������������������������������������������������������毹毷毸溛滖滈�滀溟溓溔溠溱溹滆滒溽�溞滉溷溰�溦�溲溾滃滜滘溙溒溎�溤溡溿溳�滊溗溮溣煇煔煒煣煠��煢煲煸煪煡煂煘煃煋煰煟�煓����������������������������������煄�煚��犌犑�犎猼�猻猺���瑄瑊瑋瑒瑑瑗瑀��瑎瑂瑆�瑔瓡瓿瓾瓽�畹畷榃痯�瘃痷痾痼痹痸�痻痶痭痵痽皙皵������������矠碇碚碔�碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"����������������������������������������������������������������稛�窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀�絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯����������������������������������腄腡�艉艄艀艂艅蓱�葖葶葹��葥葑葀蒆葧��葽葚葙葴葳�蔇葞���葺葃葸�葅��葋�葂�葟葰�葎葌葒葯蓅蒎�葇��葨葾葄�葠葔葮�蜋蜄蛷蜌蛺蛖蛵�蛸蜎蜉�蛶�蜅裖裋�裎裞裛裚裌�覅覛觟觥觤�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"����������������������������������������������������������������觡觠觢觜触詶誆詿詡訿詷誂誄詵誃�詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎��趓趔�趒跰跠跬跱跮�跩跣跢跧跲跫跴輆軿�輀輅輇輈輂輋�逿������������������������������������逽���鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬�鉠鉧鉯鈶鉡鉰鈱鉔鉣�鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵������頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪�僤僓僬僰僯僣僠�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"����������������������������������������������������������������凘劀�勩勫匰厬嘧嘕嘌嘒嗼�嘜�嘓嘂嗺�嘄嗿嗹墉塼�墘墆�塿塴墋塺墇墑墎塶墂墈塻墔�壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞�嫙嫨嫟孷寠����������������������������������寣屣嶂嶀嵽嶆嵺�嵷嶊嶉嶈嵾嵼�嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨�慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫��摛�摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠�摿�摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"����������������������������������������������������������������榠槎榖榰榬榼榑榙榎榧�榩榾榯榿槄榽榤槔榹槊榚�榳榓榪榡榞槙榗�槂榵榥槆歊�歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊����������������������������������漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟�漞漈漡熇�熉熀熅熂�煻熆�熗牄牓犗犕犓����瑢瑳瑱瑵瑲瑧瑮甀甂甃畽�瘖瘈瘌瘕瘑瘊瘔皸��瞅瞂�瞀��瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"����������������������������������������������������������������禗禈禒�稫穊稰稯稨稦窨窫窬竮箈箜箊箑�箖�箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪�緀緅�緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞����������������������������������耤��膉膆膃膇�膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴��蒪蒚蒱��蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶�蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨��蜮蜞蜡蜙蜛�蜬�蜾�蜠蜲蜪蜭蜼蜒蜺蜱蜵�蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻�\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"����������������������������������������������������������������裰裬裫�覡覟覞觩觫觨誫誙誋誒�誖谽豨豩賕�賗趖踉踂跿�跽踊踃踇踆踅跾踀踄�輑輎�鄣鄜鄠鄢鄟�鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪�����������������������������������銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩�銋鈭隞隡雿����鞃鞀鞂�鞄��韎�頖颭颮餂餀餇�馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵�噊噉噆噘�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"����������������������������������������������������������������噚噀嘳嘽嘬嘾嘸嘪嘺圚墫�墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹�嬇嬅�屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩�幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉����������������������������������憛憓憯憭憟憒憪憡�慦憳戭摮摰撖撠撅撗撜�撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛�槾樧槲槮樔槷槧橀樈槦槻�槼槫樉樄樘樥�槶樦樇槴樖歑殥殣殢殦�氀毿氂�漦潾澇濆澒�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"�����������������������������������������������������������������澉澌潢�澅潚澖潶潬澂潕潲潒�潗澔澓�漀潡潫潽潧�潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵�熥熞熤熡熪熜熧熳犘犚���������������������������������������������璇璉璊璆�瑽璅璈瑼瑹甈甇畾瘥瘞瘙�瘜瘣瘚瘨瘛皜�皞皛��瞉瞈�碻�磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨��膣膟�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"����������������������������������������������������������������膞膕膢膙膗舖�艓艒�艎艑蔤蔻�蔀蔩蔎蔉�蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨�蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢��������������������������������������蟡���������������������������衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬�諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾��賥賟賙賨賚�賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"����������������������������������������������������������������踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗�����鄯鄫鄩鄪鄲鄦鄮醅醆醊�醂醄醀�鋃鋄鋀鋙銶�鋱鋟鋘鋩鋗�鋌鋯鋂鋨鋊鋈鋎鋦�鋕鋉鋠鋞鋧鋑鋓����������������������������������銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂�鞊鞎鞈��頞�頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜��駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓��儜儓儗儚儑凞匴�噰噠噮�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"����������������������������������������������������������������噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓�嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼�憨憖懅憴懆�懌憺����������������������������������憿憸憌擗擖��擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋�暽暻暺曌朣樴橦橉橧樲橨樾�橭橶橛橑樨橚樻樿�橪橤��橔橯橩橠樼橞橖橕�橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪�澿澸�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"����������������������������������������������������������������澢濉澫�澯澲澰燅燂熿熸燖燀�燋燔燊燇�熽燘熼燆燚燛�犞�������瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚�瞡瞜瞛瞢瞣瞕瞙����������������������������������瞗�磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧�篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗�糑縒縡縗縌縟縠縓縎縜縕縚縢縋�縖�縔縥縤罃罻罼罺羱翯耪耩�膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫�蕓蕡蕘�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"����������������������������������������������������������������蕀蕆蕤�蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦�蕔蕥蕬虣虥虤螛�螗螓螒螈�螖螘�螇螣螅�螑�螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠����������������������������������諢諲諴諵�謔諤諟諰諈諞諡諨諿諯諻貑貒�賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽�踰踿躽輶輮輵輲輹輷輴���邆郺鄳鄵鄶醓�醑��錧錞錈錟錆��錸錼錛錣錒��錭錎�鋋�鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"����������������������������������������������������������������錋鋾錉錀鋻錖閼�閾閹閺閶閿閵閽隩雔霋霒�鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒�魺鮕����������������������������������魽鮈鴥鴗鴠鴞鴔鴩�鴘鴢�鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌�嚆嚄嚃噾嚂噿�壖壔�壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨�斀斶旚曒�檖�檥檉檟檛檡檞檇檓檎�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"����������������������������������������������������������������檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲�濢濨燡燱燨燲燤燰燢���璗璲璫�璪璭璱璥璯�甑甒�疄癃癈癉癇皤盩瞵瞫瞲瞷瞶����������������������������������瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀�簅�篲簀篿篻簎篴簋篳簂簉簃�篸篽簆篰篱�簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀�薧薕薠薋薣蕻薤薚薞�\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"����������������������������������������������������������������蕷蕼薉薡蕺蕸蕗薎薖薆�薙��薢薂薈薅蕹蕶薘�薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾�襒褷襂覭覯覮觲觳謞����������������������������������謘謖謑謅謋謢�謒謕謇�謈謆謜謓謚�豰豲豱豯貕貔賹赯蹎�蹓�蹌蹇轃轀邅�鄸醚醢醛醙醟醡�醠鎡鎃鎯���������������������������鎀��闇闀闉闃闅閷隮隰隬霠霟霘�霙鞚鞡鞜�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"����������������������������������������������������������������鞞�韕韔韱�顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽�髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳�鵧鴶鴮鴯鴱鴸鴰����������������������������������鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉�麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚�嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸�攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌��瀅瀔瀎濿瀀濻瀦濼濷瀊�燿燹爃燽��\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"����������������������������������������������������������������璸瓀璵�璾璶璻瓂甔甓癜癤癙�癓癗癚皦皽盬矂瞺磿礌礓礔礉�礒礑禭禬穟簜簩簙簠簟簭�簦簨簢簥簰繜�繖繣繘繢繟繑繠繗繓羵羳翷翸�臑臒�����������������������������������艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙�蟴蟨�襓襋�襌襆�襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"����������������������������������������������������������������蹛蹚蹡�蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛�鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟�鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘�霣霢霥鞬鞮鞨鞫鞤鞪����������������������������������鞢鞥韗韙韖韘韺�顑顒颸�餼餺�騋騉�騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿�鮵鮸鯓鮶鯄鮹鮽鵜鵓�鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟�鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚�壛夒嬽嬾嬿巃幰�\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"����������������������������������������������������������������徿懻攇��攉攌攎斄旞�曞櫧櫠櫌櫑櫙櫋櫟櫜�櫫��櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱�礛����������������������������������礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾�臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘�襙覈覷覶觶�譈譊譀譓譖譔譋譕�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"����������������������������������������������������������������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑��轓辴酀鄿醰醭����������鎩�����������镽闚闛雡霩霫霬霨霦����������������������������������鞳鞷鞶�韞韟顜顙�顗颿颽颻颾饈饇饃馦馧騚騕騥�騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷�鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀��齖齗齘匷嚲�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"����������������������������������������������������������������嚵嚳壣孅巆巇廮廯忀�懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱�瀸瀿瀺瀹�瀻瀳�爓爔犨��璺皫皪皾盭矌矎��矲礥礣礧礨礤礩����������������������������������禲穮穬穭竷籉籈籊籇籅糮繻繾�纀羺翿�臛臙舋艨艩蘢藿�藾蘛蘀藶蘄蘉蘅蘌藽蠙�蠑蠗蠓蠖襣襦覹觷譠譪�譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚�酃�醷醵醲醳�������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"���������������������������������������������������������������������闞闠闟霮霯鞹鞻韽韾顠顢顣顟�飂�饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆�鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤�鶒鶘�鶛����������������������������������鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞�齙龑儺儹劘劗囃嚽嚾孈孇巋�廱懽攛欂櫼欃櫸欀��������爚爙�甗癪�礭礱礯籔籓糲纊纇纈纋纆��羻耰�蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥�\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"����������������������������������������������������������������蠩�蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻�贔趯躎躌轞轛�酆酄酅醹�����������鑀�闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂�騺����������������������������������騿�鬕鬗鬘鬖鬺魒鰫�鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼�鷇鷊�鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳�鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉�����爞爟犩�瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"����������������������������������������������������������������糴糱纑�羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒�躖躗轠轢酇鑌�鑊鑋�鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌�驈驊����������������������������������驉驒��鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳�鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋�鷜鷑鷟鷩鷙鷘鷖鷵鷕�麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲�巘蠯��戃戄攩攥斖曫欑欒�毊��爢玂�玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"����������������������������������������������������������������讌讎讋讈豅贙躘轤轣醼鑢鑕�鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘�鱊�鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂�黲黳鼆鼜鼸鼷鼶齃�����������������������������������齱齰齮齯囓�孎屭攭曭曮欓����爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠�醾醽釂鑫鑨鑩雥���韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀�鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚�爦犪矘矙礹籩籫糶纚�\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"����������������������������������������������������������������纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳�顲饟鱨鱮鱭鸋���鸒鸑麡黵鼉齇齸齻齺齹圞�籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊����������������������������������龤��糷虪蠾蠽蠿讞貜躩軉�顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀�驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺���麤齾齉龘�銹�墻�粧嫺╔╦╗╠╬╣╚╩�╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║�����▓�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"�����������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"��������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"���������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[10003] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� �。·‥…¨〃­―∥\∼‘’“�〔〕〈〉《》「�『��】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○�◎◇◆□■△▲▽▼→�↑↓↔〓≪≫√∽�∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������⇒⇔∀∃´~ˇ˘�˚˙¸˛¡¿�∮∑�¤℉‰�◀▷▶♤♠♡♥♧♣⊙◈▣�◑▒▤▥▨▧▦▩♨�☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№�™��℡€®������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������"#$%&'()*+,�.��123456789:;<�>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`�bcdefghijkl�n��qrstuvwxyz{|� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀ�ㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌ�ㅎ��ㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜ�ㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀ�ㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌ�ㆎ�\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπ�στυφχψω�������\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌�┘└├┬┤┴┼�┃�┓┛┗┣┳┫┻╋┠┯┨┷┿�┰┥┸╂┒┑┚┙┖┕┎�┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀�╃╄╅╆╇╈╉╊���������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������㎕㎖㎗ℓ㎘�㎣㎤㎥㎦㎙㎚㎛㎜�㎞㎟㎠㎡㎢��㎎��㎈㎉�㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀�㎂㎃㎄㎺㎻㎼㎽㎾㎿�㎑㎒㎓㎔Ω��㎊㎋㎌��㎭㎮㎯�㎩㎪㎫㎬�����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������Æ�ªĦ�IJ�Ŀ�ØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻�ⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜ�ⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜�⅞�\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æđðħıijĸŀłøœßþŧŋʼn㈀�㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌�㈎��㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜�⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀�⒂¹²³���₂₃₄�\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������む�もゃやゅゆょよらりるれ�ゎ��ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダ�ヂッツヅテデトドナニヌ�ノ��パヒビピフブプヘベペホボ�マミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������БВГДЕ�ЖЗИЙКЛМ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопр�туфхцчшщъыь�ю���������������\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������가�간갇갈갉갊�갑값갓갔강갖갗같갚갛개�갠갤갬갭갯갰갱갸갹갼걀걋�걔걘걜거걱건걷걸걺검�것겄겅겆겉겊겋게�겔겜�겟겠겡겨격겪견겯결겸겹겻겼경�계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������괌��광괘괜괠괩괬괭괴괵괸괼굄굅굇굉�굔굘굡굣구국군굳굴굵굶굻굼굽굿�궂궈궉권�궜�궤궷귀�귄귈�귑귓규균귤그극근귿글�금급긋�긔기긱긴긷길긺김�깃깅깆깊까�깎�깔깖깜�깟깠깡깥깨깩깬깰깸�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌���껑께껙껜껨껫껭껴껸껼꼇꼈��꼬꼭꼰꼲꼴꼼꼽꼿�꽂꽃꽈꽉�꽜�꽤꽥꽹꾀꾄꾈�꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋�꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀�뀄뀌�뀔뀜�뀨������������\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������낀낄낌��낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉�냑냔냘냠냥너넉넋넌�넒넓넘넙넛넜�넣네넥넨넬넴넵넷넸넹녀�년녈�녑녔녕녘녜녠노녹논놀놂놈놉놋�높놓놔놘놜놨뇌�뇔뇜��\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉�늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌�닖님닙닛�닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대�댄댈�댑댓댔댕댜�����������\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�������������������������������������������������������������������������������������������������������������������������������������������������������������������������뎀�뎃뎄뎅뎌�뎔뎠뎡뎨뎬��������������������������둑둔둘둠둡둣둥둬뒀뒈�뒤뒨뒬뒵뒷뒹듀듄듈�듕드�든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������땀�땃땄땅땋때��땔땜�땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌���뗑뗘뗬�똑똔똘똥똬똴뙈뙤뙨뚜�뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀�뜅뜨뜩뜬뜯뜰뜸뜹뜻��������������란랄람���랑랒랖랗�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀�렇레렉렌�렘렙렛�려력련렬렴렵렷렸령례롄롑롓로�론롤롬롭롯롱롸롼�뢨뢰뢴뢸룀�룃룅료�룔�룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌�륑류륙륜률륨륩�\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������륫륭르륵른를름릅릇릉릊�릎리릭린릴림립릿�마막만많��맑맒맘맙맛�맞맡맣매맥맨맬맴맵맷맸맹맺먀�먈먕머먹먼멀멂멈멉멋�멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������묀묄��묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉���뭔뭘뭡뭣뭬뮈뮌�뮤뮨뮬뮴뮷므믄믈�믓미믹민믿밀밂밈밉밋밌��밑바박밖밗반받발�밞밟밤밥밧방밭배백밴밸뱀�뱃뱄뱅뱉뱌���버벅번벋벌벎범법벗�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������벙벚베벡벤벧벨벰벱벳벴벵벼벽변별���병볕볘볜보복볶본볼봄봅봇봉�봔봤봬뵀뵈뵉뵌�뵘뵙뵤뵨부�분붇불붉붊�붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브��블븜�븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������빨빪빰빱빳빴빵빻빼빽뺀뺄뺌���뺑뺘뺙뺨�뻑뻔뻗뻘뻠뻣뻤뻥뻬�뼈뼉뼘뼙뼛뼜�뽀�뽄뽈�뽑뽕뾔뾰뿅뿌��뿔뿜뿟뿡쀼�������삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀�샅새색샌�샘샙샛샜�샤�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������샥샨샬샴샵샷샹섀섄섈�섕서�섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌�셔셕션셜셤셥셧셨셩셰셴셸솅소�솎�솔솖솜�솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌��숑수숙순숟술숨숩숫숭�\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������숯숱숲숴쉈�쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿�슈슉�슘슛�스슥슨슬슭슴습슷승시�신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌�쌓쌔쌕쌘쌜쌤쌥쌨쌩����������쎄쎈쎌�������������������\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀�씌�씔씜씨씩씬씰씸씹씻씽아악안앉않알�앎앓암압앗았앙�앞애액앤앨앰앱앳앴앵야약얀얄얇얌��양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였�옅옆옇예옌�옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와�완왈�왑왓왔왕왜�왠왬왯왱외왹왼욀욈욉욋�요욕욘욜욤욥욧용우욱운울욹욺움�웃웅워��월웜�웠웡웨�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽������������������������잃임입잇있잉잊잎�작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀�쟈쟉쟌쟎�쟘�쟤쟨쟬저�전절젊�\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������접젓정젖제�젠젤젬젭젯젱져젼졀졈졉졌�졔조족존졸졺좀�좃종좆좇좋좌�좔�좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌��중줘줬줴�쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌�즘즙즛�지�진짇질짊�집짓�\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������징짖짙짚짜�짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌�쨔쨘쨩쩌��쩔쩜�쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌��쫑쫓쫘쫙쫠쫬쫴쬈�쬔쬘쬠쬡�쭈쭉쭌�쭘쭙�쭤쭸쭹쮜쮸쯔쯤쯧쯩찌��찔찜�찡찢찧차착찬찮찰참찹찻�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉�쳔쳤쳬쳰�초촉촌�촘촙촛�촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌�취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉�캑캔캘캠캡캣캤캥캬캭�커컥컨컫컬컴컵컷컸컹케�켄켈�켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������키킥킨킬킴킵킷킹타�탄탈탉�탑탓탔탕태�탠탤탬탭탯탰탱탸�터턱턴털턺텀�텃텄텅테��텔템�텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉�투툭툰툴툼툽툿�퉈퉜�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������퉤튀�튄튈�튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀�팃팅파�팎�팔팖팜�팟팠팡팥패팩팬팰팸팹팻팼팽����펀펄펌���펑페펙펜펠펨펩펫펭펴편펼�����������������\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"�������������������������������������������������������������������������������������������������������������������������������������������������������������������푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋�풔풩퓌�퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌��핑하학한할핥함합핫항해핵핸핼햄햅햇했행�향허헉헌�헒험헙헛�헤헥헨헬헴헵헷헹혀�현혈�협혓혔형혜혠�\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋�홑화확환활홧황홰홱홴횃횅회��횔�횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼���������������������히힉힌�힘힙힛��\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳�價加�呵哥嘉�家暇架枷柯歌�痂稼苛茄街袈訶賈�軻迦駕刻���慤殼�脚覺角閣侃刊墾奸姦干幹懇��柬桿澗癎看磵稈竿簡�艮艱諫間乫�曷渴碣竭葛��鞨勘�堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑�講鋼�鱇介价個凱�愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客��粳羹醵倨去居巨拒�據擧渠炬祛�踞車�鉅鋸乾件�巾建愆楗腱虔蹇�騫乞傑�桀儉�劒檢�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼�黔劫怯迲�憩�擊格檄激膈覡隔堅牽犬甄絹繭肩見譴�鵑抉決潔�缺訣兼慊�謙鉗鎌京俓倞傾儆����境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕�頃頸驚鯨係啓堺契季屆悸戒桂械�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄��告呱固姑孤尻庫拷攷故敲暠枯�沽痼��稿羔考股�苦苽��蠱袴誥賈辜錮雇顧高鼓哭斛曲�穀谷鵠困�崑昆梱�滾�袞鯤汨滑骨供公共功孔工��拱控攻�空蚣貢�串寡戈果瓜�\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������科�誇課跨��顆廓槨藿郭串冠官寬慣棺款��瓘管��觀貫關館刮�括适侊光匡壙廣曠洸炚狂��胱鑛�掛罫乖傀塊壞怪愧����紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久�仇俱具勾�\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������咎嘔�垢寇嶇�懼拘救枸柩構�毆毬求��狗玖�瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局�鞠鞫麴�窘群裙�郡堀屈掘窟宮弓穹窮芎躬倦券勸�圈拳�權淃眷厥�蕨蹶闕机櫃潰詭軌饋句晷歸貴�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜�圭奎�槻�硅窺竅糾葵�赳逵閨勻�畇筠�鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹�覲謹近饉契今妗擒昑檎��禽芩衾衿襟金錦伋�急扱汲級給亘兢矜肯�伎其冀嗜器圻基埼夔奇妓寄�崎己幾忌技旗旣�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期�棋棄機欺氣汽沂淇玘��璂璣畸畿�磯�祇祈祺箕紀綺羈耆耭肌記�豈起錡錤飢饑騎�驥麒緊佶�拮桔金喫儺喇奈娜懦��拿癩��螺裸邏那樂洛烙珞落諾酪駱亂卵暖�煖爛蘭難鸞���嵐�楠湳濫男藍襤拉�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������臘蠟衲囊娘廊朗浪狼郎乃來內奈柰�冷女年撚秊念�拈�寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿�壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓�漏��陋嫩訥��勒肋凜凌稜綾能菱陵尼泥匿溺多茶�\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段�短端簞緞蛋袒鄲�撻澾�疸�啖�憺擔曇淡湛潭澹痰�膽�覃談譚錟沓畓答���堂塘幢戇撞棠當糖螳黨代垈�大�岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉�桃�\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜�禱稻�覩賭跳蹈逃途�都�陶韜毒瀆牘犢��禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭��冬�動�憧��棟洞潼疼瞳童胴董銅兜斗�枓痘竇�讀豆逗頭屯臀芚���得�橙燈登等藤謄鄧騰喇懶拏癩羅�\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸�樂洛烙�絡��酪駱丹亂�欄欒瀾爛蘭鸞剌辣�擥攬欖濫籃纜�襤覽拉臘蠟廊朗浪狼�瑯螂郞來�徠�冷掠略亮倆兩凉�樑粮粱糧良諒輛�侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷�礫轢��戀攣漣�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練�蓮輦連�冽列劣洌烈裂廉斂殮濂簾�令伶囹寧岺嶺怜玲笭羚翎�逞鈴零�領齡例澧禮醴隷勞怒撈擄櫓潞瀘�盧�蘆虜路輅露魯鷺鹵碌祿綠�錄鹿麓論壟弄朧瀧�籠�儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭�蓼�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������鬧�壘�屢樓淚�瘻累縷蔞褸�陋劉旒柳榴�溜��瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾�陵俚利厘�唎履悧�梨浬�狸�璃異痢籬罹羸莉�裡里�離鯉�潾�璘藺躪隣鱗麟林淋�臨霖砬�\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万�娩巒彎慢挽晩曼滿漫�瞞�蔓蠻輓饅鰻唜抹末沫茉襪�亡妄忘忙望網罔芒茫莽輞邙埋妹媒�昧枚梅�煤罵買賣�魅脈貊陌驀麥孟氓猛盲盟�冪覓�冕勉棉沔眄眠綿緬�麵滅�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥�命明�椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮�模�毛牟牡�眸矛耗芼茅謀謨貌木�牧目�穆鶩歿沒夢朦蒙�墓妙廟�昴�渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無��繆舞茂蕪誣貿霧鵡墨默們刎��文�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋�蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷�黴岷悶�憫�旻旼民泯玟�緡閔密蜜�����撲朴樸泊�璞箔粕縛膊舶薄迫雹�伴���拌�攀斑槃泮潘�畔瘢盤盼�磻礬絆般蟠返頒飯勃拔撥渤潑�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣��妨尨幇彷房放方�昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防��俳北培徘拜排�湃焙盃背胚裴裵褙賠輩�陪伯佰帛�栢白百魄幡樊煩燔番磻�蕃藩飜��罰閥凡帆梵氾汎泛犯範范法�僻劈�擘檗璧癖�\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便��變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳�病秉�輧餠騈�堡報寶普步洑湺潽�甫�補褓譜輔�僕��宓復��腹茯蔔複覆輹輻馥鰒本乶俸奉�峯峰�棒烽熢�縫蓬蜂逢鋒鳳�付俯傅剖副��埠夫婦�\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶�腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分�噴墳奔奮忿憤扮�汾焚盆粉糞紛芬�雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪�妃婢庇悲憊扉批�枇榧比毖毗毘沸泌�痺砒碑秕秘粃緋翡肥�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂�蜚裨誹譬費鄙�飛鼻嚬嬪彬斌檳殯浜濱瀕�玭貧賓頻憑氷���事些仕伺似使俟僿��唆嗣四士奢娑寫寺射巳師徙��斜斯柶査梭死沙泗渣瀉�砂社祀祠�篩紗絲肆�莎蓑蛇裟�詞�賜赦辭邪飼駟�削數朔索�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕�産�算蒜酸霰乷撒殺煞薩三參�森渗芟蔘衫��鈒颯上傷�償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼�庶��抒��暑曙書栖棲犀瑞筮絮緖署�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓�鋤�鼠夕奭席惜昔晳��淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽�瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣�銑��鮮�屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾�閃��涉燮葉城姓宬性惺�星晟猩�盛�筬�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"�������������������������������������������������������������������������������������������������������������������������������������������������������������������腥誠醒世勢歲洗稅笹細說貰�嘯塑宵�少巢所掃�昭梳沼消溯瀟炤燒甦�疎瘙笑篠簫素紹蔬蕭蘇訴��邵銷韶騷俗屬�涑粟續謖贖速孫巽�蓀�飡率宋悚�淞訟誦�頌刷殺�碎鎖衰釗修�嗽囚垂壽嫂守岫峀帥��\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������手授�收數樹殊水洙漱燧狩��璲瘦�秀穗竪粹�綬繡羞脩茱�蓚藪袖誰�輸�邃酬銖銹隋隧隨雖需須首髓鬚�塾夙孰宿淑潚熟�璹肅�巡徇循�旬栒楯橓殉洵淳�盾瞬�純脣舜�蓴蕣詢諄醇錞順馴戌術述鉥崇崧�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟��濕拾習褶襲丞乘僧��承昇繩蠅陞�匙嘶始媤尸屎�市弑�施是時枾柴猜矢示翅蒔�視試詩諡豕豺埴寔��拭�殖湜熄篒�識軾食飾伸�信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心��\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什�拾雙�亞俄兒啞娥峨我牙芽莪蛾衙�阿雅餓鴉�堊岳嶽幄惡愕�樂渥鄂�顎�齷安岸按�案眼��顔鮟斡�軋閼唵岩巖庵暗癌�闇壓押狎鴨仰央�昻殃秧鴦厓哀埃崖愛曖涯�艾隘�厄扼掖液縊腋��\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹�椰爺耶若野弱掠略約若葯蒻藥�亮佯兩凉壤孃��攘敭暘梁楊樣洋�煬痒�禳穰糧羊良襄諒讓釀陽量養圄御於�瘀禦語馭魚齬億憶抑�臆�堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂�如廬�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟�濾璵礖礪與艅茹輿�閭餘驪麗黎亦力域役易曆歷疫繹譯�逆驛嚥堧姸娟宴年延���挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉�硯秊筵緣練縯聯�軟輦蓮連鉛鍊鳶列�咽悅涅烈熱裂說閱厭廉念捻染殮炎焰�艶苒�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵�葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶�濚瀛瀯�營�玲瑛瑩瓔盈穎纓羚聆英詠迎鈴�零霙靈領乂倪例刈�曳汭濊猊�穢芮�蘂禮裔詣譽豫醴銳隸霓�五�俉傲���嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������熬�筽蜈誤鰲鼇屋沃�玉鈺溫瑥瘟穩縕蘊兀壅�瓮甕癰�邕�饔渦瓦窩窪臥蛙�訛婉完宛梡椀浣玩��碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬�猥�了僚僥凹堯夭妖姚寥寮尿嶢拗�撓擾料曜樂橈燎燿瑤��\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯�謠�遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬�茸蓉踊鎔�龍于佑�優���宇寓尤愚憂旴牛玗瑀盂�禑禹紆羽芋藕虞迂�郵釪隅雨雩勖彧旭昱栯煜稶�頊云暈橒殞�熉耘芸蕓�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������隕雲韻蔚鬱�熊雄元原員圓園垣媛嫄寃怨愿æ�´æ²…洹湲æº�爰猿瑗苑è¢�è½…é� ï§†é™¢é¡˜é´›æœˆè¶Šé‰žä½�å�‰åƒžå�±åœ�å§”å¨�尉慰æš�渭爲瑋緯胃è�Žè‘¦è”¿è�Ÿè¡›è¤˜è¬‚é�•韋é­�乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉æ�„攸有杻柔柚柳楡楢油洧流游溜�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由ï§�ç™’ï§Žï§�維臾è�¸è£•誘諛諭踰蹂é�Šé€¾é�ºé…‰é‡‰é�®ï§�六堉戮毓肉育陸倫å…�奫尹崙淪潤玧胤贇輪鈗é–�律慄栗率è�¿æˆŽç€œçµ¨èž�隆垠æ�©æ…‡æ®·èª¾éŠ€éš±ä¹™å�Ÿæ·«è”­é™°éŸ³é£®æ�–泣邑å‡�應膺鷹ä¾�倚儀宜æ„�懿擬椅毅疑矣義艤è–�蟻衣誼�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊ï§�吏夷姨履已弛彛怡易李梨泥爾ç�¥ï§¤ç•°ç—�痢移罹而耳肄苡è�‘裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人ä»�刃å�°ï§­å’½å› å§»å¯…引å¿�湮燐璘絪茵藺蚓èª�ï§±é�­é�·ï§²ï§³ä¸€ä½šä½¾å£¹æ—¥æº¢é€¸éŽ°é¦¹ä»»å£¬å¦Šå§™æ��林淋稔臨è��賃入å�„�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒ä»�剩孕芿仔刺咨姉姿å­�å­—å­œæ�£æ…ˆæ»‹ç‚™ç…®çŽ†ç“·ç–µç£�紫者自茨蔗藉諮資雌作勺嚼斫昨ç�¼ç‚¸çˆµç¶½èŠ�酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲æ�–樟檣欌漿牆狀ç��璋章粧腸臟臧莊葬蔣薔è—�è£�贓醬長�\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������障å†�哉在宰æ‰�æ��栽梓渽滓ç�½ç¸¡è£�財載齋齎爭ç®�è«�錚佇低儲咀å§�底抵æ�µæ¥®æ¨—沮渚狙猪疽箸紵苧è�¹è‘—藷詛貯躇這邸雎齟勣å�Šå«¡å¯‚摘敵滴狄炙的ç©�笛ç±�績翟è�»è¬«è³Šèµ¤è·¡è¹Ÿè¿ªè¿¹é�©é�‘佃佺傳全典å‰�剪塡塼奠專展廛悛戰栓殿氈澱�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎ç� ç”°ç”¸ç•‘癲筌箋箭篆çº�詮輾轉鈿銓錢é�«é›»é¡šé¡«é¤žåˆ‡æˆªæŠ˜æµ™ç™¤ç«Šç¯€çµ¶å� å²¾åº—漸点粘霑鮎點接摺è�¶ä¸�井亭å�œå�µå‘ˆå§ƒå®šå¹€åº­å»·å¾�情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎ç�½ç”ºç�›ç¢‡ç¦Žç¨‹ç©½ç²¾ç¶Žè‰‡è¨‚諪貞鄭酊釘鉦鋌錠霆é�–�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�œé ‚鼎制劑啼堤å¸�弟悌æ��梯濟祭第è‡�薺製諸蹄é†�除際霽題齊俎兆凋助嘲弔彫措æ“�æ—©æ™�曺曹æœ�æ¢�棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙èº�造é�­é‡£é˜»é›•é³¥æ—�簇足é�ƒå­˜å°Šå�’æ‹™çŒ�倧宗從悰慫棕淙ç�®ç¨®çµ‚綜縱腫�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵é�¾é�˜ä½�å��左座挫罪主ä½�ä¾�å�šå§�胄呪周嗾å¥�宙州廚æ™�朱柱株注洲湊æ¾�ç‚·ç� ç–‡ç±Œç´‚紬綢舟蛛註誅走躊輳週酎酒鑄é§�竹粥俊å„�准埈寯峻晙樽浚準濬焌畯竣蠢逡é�µé›‹é§¿èŒ�中仲衆é‡�å�½æ«›æ¥«æ±�葺增憎曾拯çƒ�甑症繒蒸證贈之å�ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地å�€å¿—æŒ�指摯支旨智æž�枳止池沚漬知砥祉祗紙肢脂至èŠ�芷蜘誌識贄趾é�²ç›´ç¨™ç¨·ç¹”è�·å”‡å—”塵振æ�¢æ™‰æ™‹æ¡­æ¦›æ®„津溱ç��瑨璡畛疹盡眞瞋秦縉ç¸�臻蔯袗診賑軫辰進鎭陣陳震侄å�±å§ªå«‰å¸™æ¡Žç“†ç–¾ç§©çª’膣蛭質跌迭斟朕什執潗ç·�輯�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¶é›†å¾µæ‡²æ¾„且侘借å�‰å—Ÿåµ¯å·®æ¬¡æ­¤ç£‹ç®šï§¾è¹‰è»Šé�®æ�‰æ�¾ç�€çª„錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽é¤�饌刹察擦札紮僭å�ƒå¡¹æ…˜æ…™æ‡ºæ–¬ç«™è®’讖倉倡創唱娼廠彰愴敞昌昶暢æ§�滄漲猖瘡窓脹艙è�–蒼債埰寀寨彩採砦綵è�œè”¡é‡‡é‡µå†ŠæŸµç­–�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟å�ƒå–˜å¤©å·�擅泉淺玔穿舛薦賤è¸�é�·é‡§é—¡é˜¡éŸ†å‡¸å“²å–†å¾¹æ’¤æ¾ˆç¶´è¼Ÿè½�é�µåƒ‰å°–沾添甛瞻簽籤詹諂堞妾帖æ�·ç‰’ç–Šç�«è«œè²¼è¼’廳晴淸è�½è��è«‹é�‘鯖切剃替涕滯締諦逮é�žé«”åˆ�剿哨憔抄招梢�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦ç¡�ç¤�礎秒ç¨�肖艸苕è�‰è•‰è²‚超酢醋醮促囑燭矗蜀觸寸忖æ�‘邨å�¢å¡šå¯µæ‚¤æ†�摠總è�°è”¥éŠƒæ’®å‚¬å´”æœ€å¢œæŠ½æŽ¨æ¤Žæ¥¸æ¨žæ¹«çšºç§‹èŠ»è�©è«�趨追鄒酋醜éŒ�錘鎚雛騶é°�丑畜ç¥�竺筑築縮蓄蹙蹴軸é€�春椿瑃出朮黜充忠沖蟲è¡�衷悴膵è�ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅å�–å�¹å˜´å¨¶å°±ç‚Šç¿ è�šè„†è‡­è¶£é†‰é©Ÿé·²å�´ä»„厠惻測層侈値嗤峙幟æ�¥æ¢”治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸ç�›ç §é‡�é�¼èŸ„秤稱快他咤唾墮妥惰打拖朶楕舵陀馱é§�倬å�“å•„å�¼ï¨�托拓擢晫æŸ�æ¿�濯ç�¢ç�¸è¨—�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¸å‘‘嘆å�¦å½ˆæ†šæ­Žç�˜ç‚­ç¶»èª•奪脫探眈耽貪塔æ�­æ¦»å®•帑湯糖蕩兌å�°å¤ªæ€ æ…‹æ®†æ±°æ³°ç¬žèƒŽè‹”跆邰颱宅擇澤撑攄兎å��土討慟桶洞痛筒統通堆槌腿褪退頹å�¸å¥—妬投é€�鬪æ…�特闖å�¡å©†å·´æŠŠæ’­æ“ºæ�·æ³¢æ´¾çˆ¬ç�¶ç ´ç½·èŠ­è·›é —åˆ¤å�‚æ�¿ç‰ˆç“£è²©è¾¦éˆ‘�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八å�­æ�Œä½©å”„悖敗沛浿牌狽稗覇è²�彭澎烹膨愎便å��æ‰�片篇編翩é��鞭騙貶å�ªå¹³æž°è��è©•å� å¬–幣廢弊斃肺蔽閉陛佈包åŒ�åŒ�咆哺圃布怖抛抱æ�•暴泡浦疱砲胞脯苞葡蒲è¢�褒逋鋪飽鮑幅暴æ›�瀑爆輻俵剽彪慓æ�“標漂瓢票表豹飇飄驃�\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å“�稟楓諷豊風馮彼披疲皮被é�¿é™‚匹弼必泌ç�Œç•¢ç–‹ç­†è‹¾é¦�ä¹�逼下何厦å¤�廈昰河瑕è�·è�¦è³€é��霞鰕壑學è™�謔鶴寒æ�¨æ‚�旱汗漢澣瀚罕翰閑閒é™�韓割轄函å�«å’¸å•£å–Šæª»æ¶µç·˜è‰¦éŠœé™·é¹¹å�ˆå“ˆç›’蛤閤闔陜亢伉姮嫦巷æ�’抗æ�­æ¡�沆港缸肛航�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥å�•咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸æ��è�‡è¡Œäº«å�‘åš®ç�¦é„•響餉饗香噓墟虛許憲櫶ç�»è»’歇險驗奕爀赫é�©ä¿”峴弦懸晛泫炫玄玹ç�¾çœ©ç��絃絢縣舷衒見賢鉉顯孑穴血é �嫌俠å�”夾峽挾浹狹脅脇莢é‹�頰亨兄刑型�\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅ç��炯熒ç�©ç‘©è�Šèž¢è¡¡é€ˆé‚¢éŽ£é¦¨å…®å½—æƒ æ…§æš³è•™è¹Šé†¯éž‹ä¹Žäº’å‘¼å£•å£ºå¥½å²µå¼§æˆ¶æ‰ˆæ˜Šæ™§æ¯«æµ©æ·�湖滸澔濠濩ç��ç‹�ç�¥ç‘šç“ çš“祜糊縞胡芦葫蒿虎號è�´è­·è±ªéŽ¬é €é¡¥æƒ‘æˆ–é…·å©šæ˜�混渾ç�¿é­‚忽惚ç¬�哄弘汞泓洪烘紅虹訌鴻化和嬅樺ç�«ç•µï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç¦�禾花è�¯è©±è­�貨é�´ï¨‹æ“´æ”«ç¢ºç¢»ç©«ä¸¸å–šå¥�宦幻患æ�›æ­¡æ™¥æ¡“渙煥環紈還驩鰥活滑猾è±�闊凰幌徨æ��惶愰慌晃晄榥æ³�湟滉潢煌璜皇ç¯�ç°§è�’è�—é�‘éš�黃匯回廻徊æ�¢æ‚”懷晦會檜淮澮ç�°ç�ªç¹ªè†¾èŒ´è›”誨賄劃ç�²å®–æ©«é�„哮嚆å­�效斅曉梟æ¶�淆�\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵é©�侯候厚å�Žå�¼å–‰å—…帿後朽煦ç��逅勛勳塤壎焄ç†�燻薰訓暈薨喧暄煊è�±å�‰å–™æ¯�彙徽æ�®æš‰ç…‡è«±è¼�麾休æ�ºçƒ‹ç•¦è™§æ�¤è­Žé·¸å…‡å‡¶åŒˆæ´¶èƒ¸é»‘昕欣炘痕å�ƒå±¹ç´‡è¨–欠欽歆å�¸æ�°æ´½ç¿•興僖凞喜噫å›�姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[10004] = (function(){ var d = \"Û’Û’\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ä ÇÉÑÖÜáàâäں«çéèêëí…îïñó»ôö÷úùûü٪،٠١٢٣٤٥٦٧٨٩؛؟٭ءآأؤإئابةتثجحخدذرزسشصضطظعغـÙ�قكلمنهوىيًٌÙ�ÙŽÙ�Ù�ّْپٹچەڤگڈڑژے\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10005] = (function(){ var d = \"\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü¤₪ï �ï �ï Žï �ï �„ï �ּֽ… �ִֵֶַ–—“â€�‘’־ְֱֲֻ×�Ö¸Ö³×�בגדהוזחטיךכל×�מןנסעףפץצקרשת\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10008] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€ï£����������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� ã€�。・ˉˇ¨〃々―~�…‘’“â€�〔〕〈〉《》「ã€�『ã€�〖〗ã€�】±×÷∶∧∨∑âˆ�∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽âˆ�≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○â—�◎◇◆□■△▲※→â†�↑↓〓�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������⒈⒉⒊⒋⒌â’�â’Žâ’�â’�⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀â’�⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ï¼�"#¥%&'()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz{|ï½� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�­ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω���������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������Ä�áǎàēéěèīíÇ�ìÅ�óǒòūúǔùǖǘǚǜüê����������ㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������─â”�│┃┄┅┆┇┈┉┊┋┌â”�┎â”�â”�┑┒┓└┕┖┗┘┙┚┛├â”�┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀â•�╂╃╄╅╆╇╈╉╊╋����������������\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������啊阿埃挨哎唉哀皑癌蔼矮艾ç¢�爱隘éž�氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭æ�Œæ‰’å�­å�§ç¬†å…«ç–¤å·´æ‹”è·‹é�¶æŠŠè€™å��霸罢爸白æŸ�百摆佰败拜稗斑ç�­æ�¬æ‰³èˆ¬é¢�æ�¿ç‰ˆæ‰®æ‹Œä¼´ç“£å�ŠåŠžç»Šé‚¦å¸®æ¢†æ¦œè†€ç»‘æ£’ç£…èšŒé•‘å‚�谤苞胞包褒剥�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������薄雹ä¿�堡饱å®�抱报暴豹é²�爆æ�¯ç¢‘悲å�‘北辈背è´�é’¡å€�狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖å¸�庇痹闭æ•�弊必辟å£�臂é�¿é™›éž­è¾¹ç¼–è´¬æ‰�便å�˜å�žè¾¨è¾©è¾«é��标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������病并玻è� æ’­æ‹¨é’µæ³¢å�šå‹ƒæ��铂箔伯帛舶脖膊渤泊驳æ�•å�œå“ºè¡¥åŸ ä¸�布步簿部怖擦猜è£�æ��æ‰�è´¢ç�¬è¸©é‡‡å½©è�œè”¡é¤�å�‚蚕残惭惨ç�¿è‹�舱仓沧è—�æ“�糙槽曹è�‰åŽ•ç­–ä¾§å†Œæµ‹å±‚è¹­æ�’å�‰èŒ¬èŒ¶æŸ¥ç¢´æ�½å¯Ÿå²”差诧拆柴豺æ�€æŽºè�‰é¦‹è°—缠铲产é˜�颤昌猖�\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������场å°�常长å�¿è‚ åŽ‚æ•žç•…å”±å€¡è¶…æŠ„é’žæœ�嘲潮巢å�µç‚’车扯撤掣彻澈郴臣辰尘晨忱沉陈è¶�衬撑称城橙æˆ�呈乘程惩澄诚承逞骋秤å�ƒç—´æŒ�匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠æ„�筹仇绸瞅丑臭åˆ�出橱厨躇锄é›�æ»�除楚�\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������础储矗æ��触处æ�£å·�穿椽传船喘串疮窗幢床闯创å�¹ç‚Šæ�¶é”¤åž‚春椿醇唇淳纯蠢戳绰疵茨ç£�雌辞慈瓷è¯�此刺èµ�次è�ªè‘±å›±åŒ†ä»Žä¸›å‡‘粗醋簇促蹿篡窜摧崔催脆ç˜�粹淬翠æ�‘存寸磋撮æ�“措挫错æ�­è¾¾ç­”瘩打大呆歹傣戴带殆代贷袋待逮�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������怠耽担丹å�•郸掸胆旦氮但惮淡诞弹蛋当挡党è�¡æ¡£åˆ€æ�£è¹ˆå€’岛祷导到稻悼é�“盗德得的蹬ç�¯ç™»ç­‰çžªå‡³é‚“堤低滴迪敌笛狄涤翟嫡抵底地蒂第å¸�弟递缔颠掂滇碘点典é�›åž«ç”µä½ƒç”¸åº—惦奠淀殿碉å�¼é›•凋åˆ�掉å�Šé’“调跌爹碟è�¶è¿­è°�å� ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ä¸�盯å�®é’‰é¡¶é¼Žé”­å®šè®¢ä¸¢ä¸œå†¬è‘£æ‡‚动栋侗æ�«å†»æ´žå…œæŠ–斗陡豆逗痘都ç�£æ¯’犊独读堵ç�¹èµŒæ�œé•€è‚šåº¦æ¸¡å¦’端短锻段断缎堆兑队对墩å�¨è¹²æ•¦é¡¿å›¤é’�盾é��掇哆多夺垛躲朵跺舵å‰�惰堕蛾峨鹅俄é¢�讹娥æ�¶åŽ„æ‰¼é��鄂饿æ�©è€Œå„¿è€³å°”饵洱二�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贰å�‘罚ç­�ä¼�ä¹�阀法ç��藩帆番翻樊矾钒ç¹�凡烦å��返范贩犯饭泛å�ŠèŠ³æ–¹è‚ªæˆ¿é˜²å¦¨ä»¿è®¿çººæ”¾è�²é�žå•¡é£žè‚¥åŒªè¯½å� è‚ºåºŸæ²¸è´¹èŠ¬é…šå�©æ°›åˆ†çº·å�Ÿç„šæ±¾ç²‰å¥‹ä»½å¿¿æ„¤ç²ªä¸°å°�枫蜂峰锋风疯烽逢冯ç¼�讽奉凤佛å�¦å¤«æ•·è‚¤å­µæ‰¶æ‹‚è¾�幅氟符ä¼�俘æœ��\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������浮涪ç¦�袱弗甫抚辅俯釜斧脯腑府è…�赴副覆赋å¤�傅付阜父腹负富讣附妇缚å’�噶嘎该改概钙盖溉干甘æ�†æŸ‘ç«¿è‚�赶感秆敢赣冈刚钢缸肛纲岗港æ� ç¯™çš‹é«˜è†�羔糕æ�žé•�稿告哥歌æ��戈鸽胳疙割é�©è‘›æ ¼è›¤é˜�隔铬个å�„给根跟耕更庚羹�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������埂耿梗工攻功æ�­é¾šä¾›èº¬å…¬å®«å¼“巩汞拱贡共钩勾沟苟狗垢构购够辜è�‡å’•ç®�估沽孤姑鼓å�¤è›Šéª¨è°·è‚¡æ•…顾固雇刮瓜å‰�寡挂褂乖æ‹�怪棺关官冠观管馆ç½�惯ç�Œè´¯å…‰å¹¿é€›ç‘°è§„圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚æ£�锅郭国果裹过哈�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������骸孩海氦亥害骇酣憨邯韩å�«æ¶µå¯’函喊罕翰撼æ��旱憾æ‚�焊汗汉夯æ�­èˆªå£•嚎豪毫éƒ�好耗å�·æµ©å‘µå–�è�·è��核禾和何å�ˆç›’貉阂河涸赫è¤�鹤贺嘿黑痕很狠æ�¨å“¼äº¨æ¨ªè¡¡æ�’轰哄烘虹鸿洪å®�弘红喉侯猴å�¼åŽšå€™å�Žå‘¼ä¹Žå¿½ç‘šå£¶è‘«èƒ¡è�´ç‹�糊湖�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������弧虎唬护互沪户花哗å�ŽçŒ¾æ»‘画划化è¯�æ§�徊怀淮å��欢环桓还缓æ�¢æ‚£å”¤ç—ªè±¢ç„•涣宦幻è�’慌黄磺è�—簧皇凰惶煌晃幌æ��è°Žç�°æŒ¥è¾‰å¾½æ�¢è›”回æ¯�悔慧å�‰æƒ æ™¦è´¿ç§½ä¼šçƒ©æ±‡è®³è¯²ç»˜è�¤æ˜�婚魂浑混è±�活伙ç�«èŽ·æˆ–æƒ‘éœ�货祸击圾基机畸稽积箕�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������肌饥迹激讥鸡姬绩缉å�‰æž�棘辑ç±�集å�Šæ€¥ç–¾æ±²å�³å«‰çº§æŒ¤å‡ è„Šå·±è“ŸæŠ€å†€å­£ä¼Žç¥­å‰‚悸济寄寂计记既忌际妓继纪嘉枷夹佳家加è�šé¢Šè´¾ç”²é’¾å�‡ç¨¼ä»·æž¶é©¾å«�歼监å�šå°–笺间煎兼肩艰奸缄茧检柬碱硷拣æ�¡ç®€ä¿­å‰ªå‡�è��槛鉴践贱è§�键箭件�\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�¥èˆ°å‰‘饯æ¸�溅涧建僵姜将浆江疆蒋桨奖讲匠酱é™�蕉椒ç¤�焦胶交郊浇骄娇嚼æ�…铰矫侥脚狡角饺缴绞剿教酵轿较å�«çª–æ�­æŽ¥çš†ç§¸è¡—阶截劫节桔æ�°æ�·ç�«ç«­æ´�结解å§�戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进é�³æ™‹ç¦�近烬浸�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������尽劲è�†å…¢èŒŽç�›æ™¶é²¸äº¬æƒŠç²¾ç²³ç»�井警景颈é�™å¢ƒæ•¬é•œå¾„ç—‰é�–竟竞净炯窘æ�ªç©¶çº çŽ–éŸ­ä¹…ç�¸ä¹�酒厩救旧臼舅咎就疚鞠拘狙疽居驹è�Šå±€å’€çŸ©ä¸¾æ²®è�šæ‹’æ�®å·¨å…·è·�踞锯俱å�¥æƒ§ç‚¬å‰§æ��鹃娟倦眷å�·ç»¢æ’…攫抉掘倔爵觉决诀ç»�å�‡è�Œé’§å†›å�›å³»ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������俊竣浚郡éª�喀咖å�¡å’¯å¼€æ�©æ¥·å‡¯æ…¨åˆŠå ªå‹˜å�Žç �看康慷糠扛抗亢炕考拷烤é� å�·è‹›æŸ¯æ£µç£•颗科壳咳å�¯æ¸´å…‹åˆ»å®¢è¯¾è‚¯å•ƒåž¦æ�³å�‘å�­ç©ºæ��孔控抠å�£æ‰£å¯‡æž¯å“­çªŸè‹¦é…·åº“裤夸垮挎跨胯å�—筷侩快宽款匡ç­�狂框矿眶旷况äº�盔岿窥葵奎é­�傀�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������馈愧溃å�¤æ˜†æ�†å›°æ‹¬æ‰©å»“阔垃拉喇蜡腊辣啦莱æ�¥èµ–è“�婪æ �拦篮阑兰澜谰æ�½è§ˆæ‡’缆烂滥ç�…榔狼廊郎朗浪æ�žåŠ³ç‰¢è€�佬姥酪烙æ¶�å‹’ä¹�雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨çŠ�黎篱狸离漓ç�†æ�Žé‡Œé²¤ç¤¼èމè�”å��栗丽厉励砾历利傈例ä¿��\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢立粒沥隶力璃哩俩è�”莲连镰廉怜涟帘敛脸链æ�‹ç‚¼ç»ƒç²®å‡‰æ¢�粱良两辆é‡�晾亮谅撩è�Šåƒšç–—燎寥辽潦了撂镣廖料列裂烈劣猎ç�³æž—磷霖临邻鳞淋凛èµ�å��拎玲è�±é›¶é¾„铃伶羚凌ç�µé™µå²­é¢†å�¦ä»¤æºœç�‰æ¦´ç¡«é¦�留刘瘤æµ�柳六龙è�‹å’™ç¬¼çª¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������隆垄拢陇楼娄æ�‚篓æ¼�陋芦å�¢é¢…åº�炉掳å�¤è™�é²�麓碌露路赂鹿潞禄录陆戮驴å�•é“�侣旅履屡缕虑氯律率滤绿峦挛孪滦å�µä¹±æŽ ç•¥æŠ¡è½®ä¼¦ä»‘沦纶论è��螺罗逻锣箩骡裸è�½æ´›éª†ç»œå¦ˆéº»çŽ›ç �蚂马骂嘛å�—埋买麦å�–迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������谩芒茫盲氓忙莽猫茅锚毛矛铆å�¯èŒ‚冒帽貌贸么玫枚梅酶霉煤没眉媒é•�æ¯�美昧å¯�妹媚门闷们è�Œè’™æª¬ç›Ÿé”°çŒ›æ¢¦å­Ÿçœ¯é†šé�¡ç³œè¿·è°œå¼¥ç±³ç§˜è§…泌蜜密幂棉眠绵冕å…�勉娩缅é�¢è‹—æ��çž„è—�秒渺庙妙蔑ç�­æ°‘抿皿æ•�悯闽明螟鸣铭å��命谬摸�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟æŸ�拇牡亩姆æ¯�墓暮幕募慕木目ç�¦ç‰§ç©†æ‹¿å“ªå‘�钠那娜纳氖乃奶è€�奈å�—男难囊挠脑æ�¼é—¹æ·–å‘¢é¦�内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵æ�»å¿µå¨˜é…¿é¸Ÿå°¿æ��è�‚孽啮镊é•�涅您柠狞å‡�å®��\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������拧泞牛扭钮纽脓浓农弄奴努怒女暖è™�疟挪懦糯诺哦欧鸥殴藕呕å�¶æ²¤å•ªè¶´çˆ¬å¸•怕ç�¶æ‹�排牌徘湃派攀潘盘ç£�盼畔判å�›ä¹“庞æ—�耪胖抛咆刨炮è¢�跑泡呸胚培裴赔陪é…�佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋é¹�æ�§ç¢°å�¯ç ’霹批披劈ç�µæ¯—�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������啤脾疲皮匹痞僻å±�譬篇å��片骗飘漂瓢票撇瞥拼频贫å“�è�˜ä¹’å�ªè‹¹è��平凭瓶评å±�å�¡æ³¼é¢‡å©†ç ´é­„迫粕剖扑铺仆莆葡è�©è’²åŸ”朴圃普浦谱æ›�瀑期欺栖戚妻七凄漆柒æ²�其棋奇歧畦崎è„�é½�旗祈ç¥�骑起岂乞ä¼�å�¯å¥‘砌器气迄弃汽泣讫æŽ��\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æ�°æ´½ç‰µæ‰¦é’Žé“…å�ƒè¿�签仟谦乾黔钱钳å‰�潜é�£æµ…谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭ä¿�çª�切茄且怯窃钦侵亲秦ç�´å‹¤èŠ¹æ“’ç¦½å¯�æ²�é�’轻氢倾å�¿æ¸…擎晴氰情顷请庆ç�¼ç©·ç§‹ä¸˜é‚±ç�ƒæ±‚囚酋泅趋区蛆曲躯屈驱渠�\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�–娶龋趣去圈颧æ�ƒé†›æ³‰å…¨ç—Šæ‹³çŠ¬åˆ¸åŠ�缺炔瘸å�´é¹Šæ¦·ç¡®é›€è£™ç¾¤ç„¶ç‡ƒå†‰æŸ“瓤壤攘嚷让饶扰绕惹热壬ä»�人å¿�韧任认刃妊纫扔ä»�日戎茸蓉è�£èž�熔溶容绒冗æ�‰æŸ”肉茹蠕儒孺如辱乳æ±�入褥软阮蕊瑞é”�闰润若弱撒洒è�¨è…®é³ƒå¡žèµ›ä¸‰å���\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伞散桑嗓丧æ�”骚扫嫂瑟色涩森僧莎砂æ�€åˆ¹æ²™çº±å‚»å•¥ç…žç­›æ™’ç�Šè‹«æ�‰å±±åˆ ç…½è¡«é—ªé™•擅赡膳善汕扇缮墒伤商èµ�晌上尚裳梢æ�Žç¨�烧èŠ�勺韶少哨邵ç»�奢赊蛇舌èˆ�赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲å�‡ç»³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������çœ�盛剩胜圣师失狮施湿诗尸虱å��石拾时什食蚀实识å�²çŸ¢ä½¿å±Žé©¶å§‹å¼�示士世柿事拭誓é€�势是嗜噬适仕ä¾�释饰æ°�市æ�ƒå®¤è§†è¯•收手首守寿授售å�—瘦兽蔬枢梳殊抒输å�”舒淑ç–�书赎孰熟薯暑曙署蜀é»�鼠属术述树æ�Ÿæˆ�竖墅庶数漱�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æ�•刷è€�摔衰甩帅栓拴霜å�Œçˆ½è°�æ°´ç�¡ç¨Žå�®çž¬é¡ºèˆœè¯´ç¡•朔çƒ�斯撕嘶æ€�ç§�å�¸ä¸�死肆寺嗣四伺似饲巳æ�¾è€¸æ€‚颂é€�宋讼诵æ�œè‰˜æ“žå—½è‹�酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋éš�绥髓碎å²�ç©—é�‚隧祟孙æ�Ÿç¬‹è“‘梭唆缩ç��ç´¢é”�所塌他它她塔�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç�­æŒžè¹‹è¸�胎苔抬å�°æ³°é…žå¤ªæ€�æ±°å��摊贪瘫滩å�›æª€ç—°æ½­è°­è°ˆå�¦æ¯¯è¢’碳探å�¹ç‚­æ±¤å¡˜æ�ªå ‚棠膛å”�糖倘躺淌趟烫æŽ�涛滔绦è�„桃逃淘陶讨套特藤腾疼誊梯剔踢锑æ��题蹄啼体替åš�惕涕剃屉天添填田甜æ�¬èˆ”腆挑æ�¡è¿¢çœºè·³è´´é“�帖厅å�¬çƒƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汀廷å�œäº­åº­æŒºè‰‡é€šæ¡�酮瞳å�Œé“œå½¤ç«¥æ¡¶æ�…筒统痛å�·æŠ•头é€�凸秃çª�图徒途涂屠土å��å…”æ¹�团推颓腿蜕褪退å�žå±¯è‡€æ‹–托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄å¨��\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å·�å¾®å�±éŸ¦è¿�桅围唯惟为æ½�维苇è�Žå§”伟伪尾纬未蔚味ç•�胃喂é­�ä½�渭谓尉慰å�«ç˜Ÿæ¸©èšŠæ–‡é—»çº¹å�»ç¨³ç´Šé—®å—¡ç¿�ç“®æŒ�蜗涡çª�我斡å�§æ�¡æ²ƒå·«å‘œé’¨ä¹Œæ±¡è¯¬å±‹æ— èŠœæ¢§å�¾å�´æ¯‹æ­¦äº”æ�‚å�ˆèˆžä¼�ä¾®å�žæˆŠé›¾æ™¤ç‰©å‹¿åŠ¡æ‚Ÿè¯¯æ˜”ç†™æž�西硒矽晰嘻å�¸é”¡ç‰ºï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������稀æ�¯å¸Œæ‚‰è†�夕惜熄烯溪æ±�犀檄袭席习媳喜铣洗系隙æˆ�细瞎虾匣霞辖暇峡侠狭下厦å¤�å�“掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷é™�线相厢镶香箱襄湘乡翔祥详想å“�享项巷橡åƒ�å�‘象è�§ç¡�霄削哮嚣销消宵淆晓�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å°�å­�校肖啸笑效楔些歇è�Žéž‹å��挟æ�ºé‚ªæ–œèƒ�è°�写械å�¸èŸ¹æ‡ˆæ³„泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸æ��性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须å¾�许蓄酗å�™æ—­åº�畜æ�¤çµ®å©¿ç»ªç»­è½©å–§å®£æ‚¬æ—‹çŽ„ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������选癣眩绚é�´è–›å­¦ç©´é›ªè¡€å‹‹ç†�循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹ç›�严研蜒岩延言颜阎炎沿奄掩眼è¡�演艳堰燕厌砚é›�å”�彦焰宴谚验殃央鸯秧æ�¨æ‰¬ä½¯ç–¡ç¾Šæ´‹é˜³æ°§ä»°ç—’养样漾邀腰妖瑶�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摇尧é�¥çª‘谣姚咬舀è�¯è¦�耀椰噎耶爷野冶也页掖业å�¶æ›³è…‹å¤œæ¶²ä¸€å£¹åŒ»æ�–铱ä¾�伊衣é¢�夷é�—移仪胰疑沂宜姨å½�椅èš�倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔æ„�毅忆义益溢诣议谊译异翼翌绎茵è�«å› æ®·éŸ³é˜´å§»å�Ÿé“¶æ·«å¯…饮尹引éš��\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�°è‹±æ¨±å©´é¹°åº”缨莹è�¤è�¥è�§è�‡è¿Žèµ¢ç›ˆå½±é¢–硬映哟拥佣臃痈庸é›�踊蛹å’�泳涌永æ�¿å‹‡ç”¨å¹½ä¼˜æ‚ å¿§å°¤ç”±é‚®é“€çŠ¹æ²¹æ¸¸é…‰æœ‰å�‹å�³ä½‘釉诱å�ˆå¹¼è¿‚淤于盂榆虞愚舆余俞逾鱼愉æ¸�渔隅予娱雨与屿禹宇语羽玉域芋éƒ�å��é�‡å–»å³ªå¾¡æ„ˆæ¬²ç‹±è‚²èª‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������浴寓裕预豫驭鸳渊冤元垣è¢�原æ�´è¾•园员圆猿æº�缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨å…�è¿�è•´é…�晕韵孕åŒ�ç ¸æ�‚栽哉ç�¾å®°è½½å†�在咱攒暂赞赃è„�葬é�­ç³Ÿå‡¿è—»æž£æ—©æ¾¡èš¤èº�噪造皂ç�¶ç‡¥è´£æ‹©åˆ™æ³½è´¼æ€Žå¢žæ†Žæ›¾èµ æ‰Žå–³æ¸£æœ­è½§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������铡闸眨栅榨咋ä¹�炸诈摘斋宅窄债寨瞻毡詹粘沾ç›�斩辗崭展蘸栈å� æˆ˜ç«™æ¹›ç»½æ¨Ÿç« å½°æ¼³å¼ æŽŒæ¶¨æ�–丈å¸�账仗胀瘴障招昭找沼赵照罩兆肇å�¬é�®æŠ˜å“²è›°è¾™è€…锗蔗这浙ç��斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣ç��å¾�狰争怔整拯正政�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帧症郑è¯�èŠ�æž�支å�±èœ˜çŸ¥è‚¢è„‚æ±�之织è�Œç›´æ¤�殖执值侄å�€æŒ‡æ­¢è¶¾å�ªæ—¨çº¸å¿—挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终ç§�è‚¿é‡�仲众舟周州洲诌粥轴肘帚咒皱宙昼骤ç� æ ªè››æœ±çŒªè¯¸è¯›é€�竹烛煮拄瞩嘱主著柱助蛀贮铸筑�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ä½�注ç¥�驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘å� ç¼€è°†å‡†æ�‰æ‹™å�“桌ç�¢èŒ�酌啄ç�€ç�¼æµŠå…¹å’¨èµ„姿滋淄孜紫仔籽滓å­�自æ¸�字鬃棕踪宗综总纵邹走å¥�æ��ç§Ÿè¶³å�’æ—�祖诅阻组钻纂嘴醉最罪尊é�µæ˜¨å·¦ä½�柞å�šä½œå��座������\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������äº�丌兀ä¸�廿å�…丕亘丞鬲孬噩丨禺丿匕乇夭爻å�®æ°�囟胤馗毓ç�¾é¼—丶亟é¼�乜乩亓芈孛啬å˜�仄åŽ�åŽ�厣厥厮é�¥èµ�匚å�µåŒ¦åŒ®åŒ¾èµœå�¦å�£åˆ‚刈刎刭刳刿剀剌剞剡剜蒯剽劂åŠ�åŠ�劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚ä½��\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������佟佗伲伽佶佴侑侉侃ä¾�佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩å�Œä¿³å€¬å€�倮倭俾倜倌倥倨å�¾å�ƒå�•å�ˆå�Žå�¬å�»å‚¥å‚§å‚©å‚ºåƒ–儆僭僬僦僮儇儋ä»�氽佘佥俎龠汆籴兮巽黉馘å†�夔勹åŒ�訇åŒ�凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������凇冖冢冥讠讦讧讪讴讵讷诂诃诋è¯�诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌è°�谑谒谔谕谖谙谛谘è°�谟谠谡谥谧谪谫谮谯谲谳谵谶å�©å�ºé˜�阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈éš�éš—éš°é‚—é‚›é‚�邙邬邡邴邳邶邺�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸邰éƒ�郅邾éƒ�郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆åˆ�奂劢劬劭劾哿å‹�å‹–å‹°å�Ÿç‡®çŸ�廴凵凼鬯厶å¼�畚巯å�Œåž©åž¡å¡¾å¢¼å£…壑圩圬圪圳圹圮圯å�œåœ»å�‚å�©åž…å�«åž†å�¼å�»å�¨å�­å�¶å�³åž­åž¤åžŒåž²åŸ�垧垴垓垠埕埘埚埙埒垸埴埯埸埤åŸ��\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������堋å �埽埭堀堞堙塄堠塥塬å¢�墉墚墀馨鼙懿艹艽艿èŠ�芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌è‹�芩芴芡芪芟苄苎芤苡茉苷苤èŒ�茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜è�‘è�›è�œèŒˆèŽ’èŒ¼èŒ´èŒ±èŽ›è�žèŒ¯è��è�‡è�ƒè�Ÿè�€èŒ—è� èŒ­èŒºèŒ³è�¦è�¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è�¨èŒ›è�©è�¬è�ªè�­è�®èްè�¸èŽ³èŽ´èŽ èŽªèŽ“èŽœèŽ…è�¼èŽ¶èŽ©è�½èޏè�»èŽ˜èŽžèŽ¨èŽºèŽ¼è��è��è�¥è�˜å ‡è�˜è�‹è��è�½è�–è�œè�¸è�‘è�†è�”è�Ÿè��è�ƒè�¸è�¹è�ªè�…è�€è�¦è�°è�¡è‘œè‘‘葚葙葳蒇蒈葺蒉葸è�¼è‘†è‘©è‘¶è’Œè’Žè�±è‘­è“�è“�è“�蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌ç”�蔸蓰蔹蔟蔺�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇è–�蕹薮薜薅薹薷薰藓è—�藜藿蘧蘅蘩蘖蘼廾弈夼å¥�耷奕奚奘åŒ�尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹æ�‹æ�ƒæŽ­æ�¶æ�±æ�ºæŽŽæŽ´æ�­æŽ¬æŽŠæ�©æŽ®æŽ¼æ�²æ�¸æ� æ�¿æ�„æ�žæ�Žæ‘’æ�†æŽ¾æ‘…æ‘�æ�‹æ�›æ� æ�Œæ�¦æ�¡æ‘žæ’„摭撖�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摺撷撸撙撺擀æ“�擗擤擢攉攥攮弋忒甙弑å�Ÿå�±å�½å�©å�¨å�»å�’å�–å�†å‘‹å‘’呓呔呖呃å�¡å‘—å‘™å�£å�²å’‚咔呷呱呤咚咛咄呶呦å’�å“�咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤å“�å“�哞唛哧唠哽唔哳唢唣å”�唑唧唪啧å–�喵啉啭å•�啕唿å•�唼�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������唷啖啵啶啷唳唰啜喋嗒喃喱喹喈å–�喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦å—�嗄嗯嗥嗲嗳嗌å—�嗨嗵嗤辔嘞嘈嘌å˜�嘤嘣嗾嘀嘧嘭噘嘹噗嘬å™�噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗å›�囡囵囫囹囿圄圊圉圜å¸�帙帔帑帱帻帼�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帷幄幔幛幞幡岌屺å²�å²�岖岈岘岙岑岚岜岵岢岽岬岫岱岣å³�岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯åµ�嵫嵋嵊嵩嵴嶂嶙å¶�豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃ç‹�狎ç‹�狒狨狯狩狲狴狷çŒ�狳猃狺�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������狻猗猓猡猊猞çŒ�猕猢猹猥猬猸猱ç��ç��ç�—ç� ç�¬ç�¯ç�¾èˆ›å¤¥é£§å¤¤å¤‚饣饧饨饩饪饫饬饴饷饽馀馄馇馊é¦�é¦�馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖å¿�怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛æ€�æ€�怩怫怊怿怡æ�¸æ�¹æ�»æ�ºæ�‚�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æ�ªæ�½æ‚–悚悭æ‚�悃悒悌悛惬悻悱æƒ�惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵å¿�隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌é˜�é˜�阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅æ²�沔沌汨汩汴汶沆沩æ³�泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������洹洧洌浃浈洇洄洙洎洫æµ�洮洵洚æµ�浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦æ·�淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴æ»�æº�滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉æ¾�澌潸潲潼潺濑�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵ç��ç�žå®€å®„宕宓宥宸甯骞æ�´å¯¤å¯®è¤°å¯°è¹‡è¬‡è¾¶è¿“迕迥迮迤迩迦迳迨逅逄逋逦逑é€�逖逡逵逶逭逯é�„é�‘é�’é��é�¨é�˜é�¢é�›æš¹é�´é�½é‚‚邈邃邋å½�彗彖彘尻咫å±�屙孱屣屦羼弪弩弭艴弼鬻屮å¦�妃å¦�妩妪妣�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������妗姊妫妞妤姒妲妯姗妾娅娆å§�娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀éª�骅骈骊éª�骒骓骖骘骛骜éª�骟骠骢骣骥骧纟纡纣纥纨纩�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������纭纰纾绀ç»�绂绉绋绌ç»�绔绗绛绠绡绨绫绮绯绱绲ç¼�绶绺绻绾ç¼�缂缃缇缈缋缌ç¼�缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟ç��ç�‚ç�‘玷玳ç�€ç�‰ç�ˆç�¥ç�™é¡¼ç�Šç�©ç�§ç�žçŽºç�²ç��ç�ªç‘›ç�¦ç�¥ç�¨ç�°ç�®ç�¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç�›ç�šç‘�瑜瑗瑕瑙瑷瑭瑾璜璎璀ç’�璇璋璞璨璩ç’�璧瓒璺韪韫韬æ�Œæ�“æ�žæ�ˆæ�©æž¥æž‡æ�ªæ�³æž˜æž§æ�µæž¨æžžæž­æž‹æ�·æ�¼æŸ°æ ‰æŸ˜æ ŠæŸ©æž°æ ŒæŸ™æžµæŸšæž³æŸ�栀柃枸柢栎æŸ�柽栲栳桠桡桎桢桄桤梃æ �桕桦æ¡�桧桀栾桊桉栩梵æ¢�桴桷梓桫棂楮棼椟椠棹�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椤棰椋æ¤�楗棣æ¤�楱椹楠楂æ¥�榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱æ§�槊槟榕槠æ¦�槿樯槭樗樘橥槲橄樾檠æ©�橛樵檎橹樽樨橘橼檑æª�檩檗檫猷ç�’æ®�殂殇殄殒殓æ®�殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾è¾�辂辄辇辋�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è¾�辎è¾�辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿ç”�甑甓攴旮旯旰昊昙æ�²æ˜ƒæ˜•昀炅曷æ˜�昴昱昶昵耆晟晔æ™�æ™�晖晡晗晷暄暌暧æš�暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇èµ�赕赙觇觊觋觌觎è§�è§�觑牮犟ç‰�牦牯牾牿犄犋çŠ�çŠ�犒挈挲掰�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æ�¿æ“˜è€„毪毳毽毵毹氅氇氆æ°�氕氘氙氚氡氩氤氪氲攵敕敫ç‰�牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙èƒ�胗æœ�èƒ�胫胱胴胭è„�脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧å¡�媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è‡�膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳æ–�齑斓於旆旄旃旌旎旒旖炀炜炖ç‚�炻烀炷炫炱烨烊ç„�焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹çˆ�爨ç�¬ç„˜ç…¦ç†¹æˆ¾æˆ½æ‰ƒæ‰ˆæ‰‰ç¤»ç¥€ç¥†ç¥‰ç¥›ç¥œç¥“祚祢祗祠祯祧祺禅禊禚禧禳忑å¿��\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������怼æ��æ�šæ�§æ��æ�™æ�£æ‚«æ„†æ„�æ…�憩æ†�懋懑戆肀è�¿æ²“泶淼矶矸砀砉砗砘砑斫砭砜ç �砹砺砻砟砼砥砬砣砩硎硭硖硗砦ç¡�硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄çœ�盹眇眈眚眢眙眭眦眵眸ç��ç�‘ç�‡ç�ƒç�šç�¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç�¢ç�¥ç�¿çž�ç�½çž€çžŒçž‘瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹ç¾�ç½¾ç›�盥蠲钅钆钇钋钊钌é’�é’�é’�钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌é“�铎é“�铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊é”�锎é”�锒锓锔锕锖锘锛é”�锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎é•�镒镓镔镖镗镘镙镛镞镟é•�镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������稹稷穑é»�馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾é¹�鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠ç–�疬疣疳疴疸痄疱疰痃痂痖ç—�痣痨痦痤痫痧瘃痱痼痿ç˜�瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳ç™�癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶è¥�襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵è�ƒè�†è��è�’è�©è�±è¦ƒé¡¸é¢€é¢ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������颉颌é¢�é¢�颔颚颛颞颟颡颢颥颦è™�虔虬虮虿虺虼虻蚨èš�蚋蚬èš�蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉è›�蚴蛩蛱蛲蛭蛳è›�蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊èœ�蜉蜣蜻蜞蜥蜮蜚蜾è�ˆèœ´èœ±èœ©èœ·èœ¿èž‚蜢è�½è�¾è�»è� è�°è�Œè�®èž‹è�“è�£è�¼è�¤è�™è�¥èž“螯螨蟒�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅èˆ�竺竽笈笃笄笕笊笫ç¬�筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌ç­�筠筮筻筢筲筱ç®�箦箧箸箬ç®�箨箅箪箜箢箫箴篑ç¯�篌ç¯�篚篥篦篪簌篾篼ç°�簖簋�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簟簪簦簸ç±�籀臾èˆ�舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋è‰�艚艟艨衾袅袈裘裟襞ç¾�羟羧羯羰羲籼敉粑ç²�粜粞粢粲粼粽ç³�糇糌ç³�糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊é…�é…Žé…�酤�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������酢酡酰酩酯酽酾酲酴酹醌醅é†�é†�醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎è·�跛跆跬跷跸跣跹跻跤踉跽踔è¸�踟踬踮踣踯踺蹀踹踵踽踱蹉è¹�蹂蹑蹒蹊蹰蹶蹼蹯蹴躅èº�躔èº�躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������觥觫觯訾謦é�“雩雳雯霆éœ�霈éœ�霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋é¼�隹隼隽雎雒瞿雠銎銮鋈錾é�ªé�ŠéŽ�é�¾é‘«é±¿é²‚鲅鲆鲇鲈稣鲋鲎é²�鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鳌é³�鳎é³�é³�鳓鳔鳕鳗鳘鳙鳜é³�鳟鳢é�¼éž…鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼é«�髀髅髂髋髌髑魅魃魇魉魈é­�魑飨é¤�餮饕饔髟髡髦髯髫髻髭髹鬈é¬�鬓鬟鬣麽麾縻麂麇麈麋麒é�–éº�麟黛黜é»�黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[10010] = (function(){ var d = \"ˇˇ\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑âˆ�π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“â€�‘’÷◊ÿŸâ�„¤‹›Ţţ‡·‚„‰ÂÊÃ�ËÈÃ�ÃŽÃ�ÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸Ë�˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10017] = (function(){ var d = \"¤¤\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ð�БВГДЕЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ò�£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“â€�‘’÷„ЎўÐ�ÑŸâ„–Ð�Ñ‘Ñ�абвгдежзийклмнопрÑ�туфхцчшщъыьÑ�ю¤\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10021] = (function(){ var d = \"��\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�«»…����������“â€���•�����������‘’� à¸�ขฃคฅฆงจฉชซฌà¸�ฎà¸�à¸�ฑฒณดตถทธนบปผà¸�พฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เà¹�โใไๅๆ็่้๊๋์à¹�â„¢à¹�à¹�๑๒๓๔๕๖๗๘๙®©����\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[10082] = (function(){ var d = \"ˇˇ\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑âˆ�š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœÄ�—“â€�‘’÷◊©â�„¤‹›Æ»–·‚„‰ÂćÃ�Ä�ÈÃ�ÃŽÃ�ÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20000] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"���������������������������������乂乜凵匚厂万丌乇äº�囗屮彳ä¸�冇与丮亓仂仉仈冘勼å�¬åŽ¹åœ å¤ƒå¤¬å°�巿旡殳毌气爿丱丼仨仜仩仡ä»�仚刌刉匜å�Œåœ¢åœ£å¤—夯å®�宄尒尻屴屳帄庀庂忉戉æ‰�氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈ä¼�伂伅伢伓伄仴伒冱刓åˆ�劦���������������������������������� ,ã€�。․•;:?ï¼�︰…‥ï¹�﹑‧﹒﹔﹕﹖﹗︱–︲—︳_︴ï¹�()︵︶{ï½�︷︸〔〕︹︺ã€�】︻︼《》︽︾〈〉︿﹀「ã€�ï¹�﹂『ã€�﹃﹄﹙﹚﹛﹜ï¹�﹞‘’“â€�ã€�〞′‵#&*※§〃○â—�△▲◎☆★◇◆□■▽▼�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"���������������������������������匢匟å��厊å�‡å›¡å›Ÿåœ®åœªåœ´å¤¼å¦€å¥¼å¦…奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔å¿�扜扞扤扡扦扢扙扠扚扥攷旯旮朾朹朸朻机朿朼朳氘汆汒汜æ±�汊汔汋汌ç�±ç‰žçŠ´çŠµçŽŽç”ªç™¿ç©µç½‘è‰¸è‰¼èŠ€è‰½è‰¿è™�襾邙邗邘邛邔阢阤阠阣佖伻佢佉体����������������������������������㊣℅‾ ̄��﹉﹊ï¹�﹎﹋﹌﹟﹠﹡+ï¼�×÷±√<>ï¼�≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿ã�’ã�‘∫∮∵∴♀♂⊕⊙↑↓→â†�↖↗↙↘∥∣ï¼�\�﹨$¥〒¢£%@℃℉﹩﹪﹫ã�•㎜ãŽ�㎞ã�ŽãŽ¡ãŽŽãŽ�ã�„゜兙兛兞å…�兡兣�\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"���������������������������������佤伾佧佒佟ä½�佘伭伳伿佡å†�冹刜刞刡劭劮匉å�£å�²åŽŽåŽ�å�°å�·å�ªå‘”å‘…å�™å�œå�¥å�˜å�½å‘�å‘�å�¨å�¤å‘‡å›®å›§å›¥å��å�…å�Œå�‰å�‹å�’夆奀妦妘妠妗妎妢å¦�å¦�妧妡宎宒尨尪å²�å²�岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈åº�å¼…å¼�彸彶忒忑å¿�忭忨忮忳忡忤����������������������������������嗧瓩糎â–�▂▃▄▅▆▇█â–�â–Žâ–�▌▋▊▉┼┴┬┤├▔─│▕┌â”�└┘╭╮╰╯â•�╞╪╡◢◣◥◤╱╲╳¨˄ヽヾã‚�ゞ�〄々〆〇ー[]✽ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"���������������������������������忣忺忯忷忻怀忴戺抃抌抎æŠ�抔抇扱扻扺扰æŠ�抈扷扽扲扴旰旴旳旲旵æ�…æ�‡æ�™æ�•æ�Œæ�ˆæ��æ��æ�šæ�‹æ¯�氙氚汸汧汫沄沋æ²�汱汯汩沚汭沇沕沜汦汳汥汻沎ç�´ç�ºç‰£çŠ¿çŠ½ç‹ƒç‹†ç‹�犺狅玕玗玓玔玒町甹疔疕çš�礽耴肕肙è‚�肒肜èŠ�èŠ�芅芎芑芓����������������������������������ï¼�123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�å�„�ABCDEFGHIJKLMNOPQRSTUVWXYZï½�bcdefghijklï½�nï½�ï½�qrstuvwxyzΑΒΓΔΕΖΗΘΙΚ�\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"���������������������������������芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹ä¾�佸ä¾�侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿å’�咑咂咈呫呺呾呥呬呴呦å’�呯呡呠咘呣呧呤囷囹å�¯å�²å�­å�«å�±å�°å�¶åž€å�µå�»å�³å�´å�¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Î›ÎœÎ�ΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπÏ�στυφχψωㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�­ã�®ã�¯ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"���������������������������������å�¨å�½å¤Œå¥…妵妺å§�姎妲姌å§�妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧å²�岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢æ€�æ€�怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰����������������������������������①②③④⑤⑥⑦⑧⑨⑩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼ�\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"���������������������������������抸攽斨斻昉旼昄昒昈旻昃昋æ˜�昅旽昑æ˜�曶朊枅æ�¬æžŽæž’æ�¶æ�»æž˜æž†æž„æ�´æž�枌æ�ºæžŸæž‘枙枃æ�½æž�æ�¸æ�¹æž”欥殀歾毞æ°�沓泬泫泮泙沶泔沭泧沷æ³�泂沺泃泆泭泲泒æ³�沴沊æ²�沀泞泀洰æ³�泇沰泹æ³�泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘������������������������������������丶丿�亅�亠����冂冖冫����勹��匸��å�©ï¿½åŽ¶ï¿½ï¿½ï¿½ï¿½ï¿½å¤‚ï¿½ï¿½ï¿½ï¿½å®€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å·›ï¿½ï¿½ï¿½ï¿½å¹ºå¹¿å»´ï¿½ï¿½ï¿½å½�彡������攴����无�������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"���������������������������������狉狜狒狔狚狌狑玤玡玭玦玢玠玬çŽ�ç“�瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵è‚�肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓è¿�迖迕迗邲邴邯邳邰阹阽阼阺陃ä¿�俅������������������������������������������疒癶��������������������������������������������������������辵��������隶�������������������\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"���������������������������������俓侲俉俋ä¿�俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽å�¼åŽ—åŽ–åŽ™åŽ˜å’ºå’¡å’­å’¥å“�哃èŒ�咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗åž�垛垔垘åž�垙垥垚垕壴å¤�奓姡姞姮娀姱å§�姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌å³�峘峌峗峋���������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"���������������������������������峛峞峚峉峇峊峖峓峔å³�峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹æ�”æ�²æ�žæ�…æ�“æ�‡æ�‰æ�›æ�Œæ�€æ�‚æ�Ÿæ€¤æ�„æ�˜æ�¦æ�®æ‰‚扃æ‹�æŒ�挋拵挎挃拫拹æŒ�挌拸拶挀挓挔拺挕拻拰æ•�敃斪斿昶昡昲昵昜昦昢昳昫昺æ˜�昴昹昮æœ�æœ�æŸ�柲柈����������������������������������î’�î’�î’Žî’�î’�î’�î“��\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"���������������������������������枺柜枻柸柘柀枷柅柫柤柟枵æŸ�枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀æ´�浂æ´�洘洷洃æ´�浀洇洠洬洈洢洉æ´�炷炟炾炱炰炡炴炵炩ç‰�牉牊牬牰牳牮狊����������������������������������î“�î“�î“�î“�î”�î”�î”�î”�î”��\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"���������������������������������狤狨狫狟狪狦狣玅ç�Œç�‚ç�ˆç�…玹玶玵玴ç�«çŽ¿ç�‡ç޾ç�ƒç�†çޏç�‹ç“¬ç“®ç”®ç•‡ç•ˆç–§ç–ªç™¹ç›„眈眃眄眅眊盷盻盺矧矨砆砑砒砅ç �ç �砎砉砃砓祊祌祋祅祄秕ç§�ç§�秖秎窀穾竑笀ç¬�籺籸籹籿粀ç²�紃紈ç´�罘羑ç¾�羾耇耎è€�耔耷胘胇胠胑胈胂èƒ�胅����������������������������������î•�î•�î•�î•�î•�î–��\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"���������������������������������胣胙胜胊胕胉èƒ�胗胦èƒ�臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺苳苭虷虴虼虳è¡�衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔é™�陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎����������������������������������î–�î–Žî–�î–�î–�î—�î—�î—Žî—�î—�î—��\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"���������������������������������党冔冓凊凄凅凈凎剡剚剒剞剟剕剢å‹�匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋åœ�圂埌堲埕埒垺埆垽垼垸垶垿埇åŸ�åž¹åŸ�夎奊娙娖娭娮娕å¨�娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧æ������������������������������������î˜�î˜�î˜�î˜�î˜��\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"���������������������������������æ�šæ�§æ��悢悈悀悒æ‚�æ‚�悃悕悛悗悇悜悎戙扆拲æŒ�æ�–挬æ�„æ�…挶æ�ƒæ�¤æŒ¹æ�‹æ�ŠæŒ¼æŒ©æ��挴æ�˜æ�”æ�™æŒ­æ�‡æŒ³æ�šæ�‘挸æ�—æ�€æ�ˆæ•Šæ•†æ—†æ—ƒæ—„旂晊晟晇晑朒朓栟栚桉栲栳栻桋æ¡�栖栱栜栵栫栭栯桎桄栴æ �栒栔栦栨栮æ¡�栺栥栠欬欯欭欱欴歭肂殈����������������������������������î™�î™�î™�î™�î™�îš�îš�îš�îš��\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"���������������������������������毦毤毨毣毢毧氥浺浣浤浶æ´�浡涒浘浢浭浯涑æ¶�淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵æ¶�烜烓烑çƒ�烋缹烢烗烒烞烠烔çƒ�烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻çŒ�ç�“ç�™ç�¥ç�–玼ç�§ç�£ç�©ç�œç�’ç�›ç�”ç��ç�šç�—ç�˜ç�¨ç“žç“Ÿï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îšœîš�î›�î›�î›�î›�î›��\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"���������������������������������瓴瓵甡畛畟疰ç—�疻痄痀疿疶疺皊盉çœ�眛çœ�眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛ç¥�祜祓祒祑秫秬秠秮秭秪秜秞ç§�窆窉窅窋窌窊窇竘ç¬�笄笓笅ç¬�笈笊笎笉笒粄粑粊粌粈ç²�ç²…ç´žç´�紑紎紘紖紓紟紒ç´�紌罜罡����������������������������������îœ�îœ�îœ�îœ�îœ�î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"���������������������������������罞罠ç½�罛羖羒翃翂翀耖耾耹胺胲胹胵è„�胻脀èˆ�舯舥茳茭è�„茙è�‘茥è�–茿è��茦茜茢è�‚è�ŽèŒ›èŒªèŒˆèŒ¼è��茖茤茠茷茯茩è�‡è�…è�Œè�“茞茬è�‹èŒ§è�ˆè™“虒蚢蚨蚖èš�蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎èš�èš�蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼����������������������������������î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îž€îž�îž�îž�îž�îž��\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"���������������������������������訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤é…�é…Žé…�釕釢釚陜陟隼飣髟鬯乿å�°å�ªå�¡å�žå� å�“å�‹å��å�²å�ˆå��å��å�›å�Šå�¢å€•å�…å�Ÿå�©å�«å�£å�¤å�†å�€å�®å�³å�—å�‘å‡�剫剭剬剮勖勓匭厜啵啶唼å•�å•�唴唪啑啢唶唵����������������������������������îŸ�îŸ�îŸ�îŸ�îŸ�î �î �î Žî �î ��\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"���������������������������������唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳åŸ�堇埮埣埲埥埬埡堎埼å �埧å �堌埱埩埰å �堄奜婠婘婕婧婞娸娵婭å©�婟婥婬婓婤婗婃å©�婒婄婛婈媎娾å©�娹婌婰婩婇婑婖婂婜孲孮å¯�寀屙崞崋å´�崚崠崌崨å´�����������������������������������î �î¡�î¡�î¡�î¡�î¡��\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"���������������������������������崦崥å´�崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊æ‚�悆悾悰悺惓惔æƒ�惤惙æƒ�惈悱惛悷惊悿惃æƒ�惀挲æ�¥æŽŠæŽ‚æ�½æŽ½æŽžæŽ­æŽ�掗掫掎æ�¯æŽ‡æŽ�æ�®æŽ¯æ�µæŽœæ�­æŽ®æ�¼æŽ¤æŒ»æŽŸæ�¸æŽ…æŽ�掑æŽ�æ�°æ•“æ—�晥晡晛晙晜晢朘桹梇æ¢�梜桭桮梮梫楖桯梣梬梩����������������������������������î¢�î¢�î¢�î¢�î¢�î£�î£�î£��\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"���������������������������������桵桴梲æ¢�桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑æ®�æ®�殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜æ·�淛淴淊涽淭淰涺淕淂æ·�æ·‰æ·�淲淓淽淗æ·�淣涻烺ç„�烷焗烴焌烰焄烳ç„�烼烿焆焓焀烸烶焋焂焎����������������������������������î£�î£�î¤�î¤�î¤�î¤�î¤��\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"���������������������������������牾牻牼牿çŒ�猗猇猑猘猊猈狿çŒ�猞玈ç�¶ç�¸ç�µç�„ç��ç�½ç�‡ç�€ç�ºç�¼ç�¿ç�Œç�‹ç�´ç�ˆç•¤ç•£ç—Žç—’ç—�痋痌痑ç—�çš�皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉ç¡�硊硌砦硅ç¡�祤祧祩祪祣祫祡离秺秸秶秷çª�窔çª�笵笻笴笥笰笢笤笳笘笪ç¬�笱笫笭笯笲笸����������������������������������î¥�î¥�î¥�î¥�î¥�î¦��\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"���������������������������������笚笣粔粘粖粣紵紽紸紶紺絅紬紩çµ�絇紾紿絊紻紨罣羕羜ç¾�羛翊翋ç¿�ç¿�翑翇ç¿�翉耟耞耛è�‡è�ƒè�ˆè„˜è„¥è„™è„›è„­è„Ÿè„¬è„žè„¡è„•è„§è„�脢舑舸舳舺舴舲艴èŽ�莣莨èŽ�è�ºè�³èޤè�´èŽ�èŽ�莕莙è�µèŽ”èŽ©è�½èŽƒèŽŒèŽ�莛莪莋è�¾èŽ¥èŽ¯èŽˆèŽ—èŽ°è�¿èŽ¦èŽ‡èŽ®è�¶è™™ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î¦Œî¦�î¦�î¦�î¦�î§�î§�î§Žî§�î§�î§��\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"���������������������������������虖蚿蚷蛂è›�蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜è±�豽貥赽赻赹趼跂趹趿è·�軘軞è»�軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸����������������������������������î¨�î¨�î¨�î¨�î¨�î©��\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"���������������������������������釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿é�ªé „飥馗傛傕傔傞傋傣傃傌傎å‚�å�¨å‚œå‚’傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈å–�å–µå–�喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦����������������������������������î©�î©�î©�î©�îª�îª�îª�îª�îª��\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"���������������������������������婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜åª�媓åª�寪å¯�寋寔寑寊寎尌尰崷嵃嵫åµ�嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄å¹�彘徦徥徫惉悹惌惢惎惄愔惲愊愖愅惵愓惸惼惾æƒ�愃愘æ„�æ„�惿愄愋扊掔掱掰æ�Žæ�¥æ�¨æ�¯æ�ƒæ’�æ�³ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îª¦îª§îª¨îª©îªªîª«îª¬îª­îª®îª¯îª°îª±îª²îª³îª´îªµîª¶îª·îª¸îª¹îªºîª»îª¼îª½îª¾îª¿î«€î«�î«�î«�î«�î«�î¬��\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"���������������������������������æ�Šæ� æ�¶æ�•æ�²æ�µæ‘¡æ�ŸæŽ¾æ��æ�œæ�„æ�˜æ�“æ�‚æ�‡æ�Œæ�‹æ�ˆæ�°æ�—æ�™æ”²æ•§æ•ªæ•¤æ•œæ•¨æ•¥æ–Œæ–�æ–žæ–®æ—�旒晼晬晻暀晱晹晪晲æœ�椌棓椄棜椪棬棪棱æ¤�棖棷棫棤棶椓æ¤�棳棡椇棌椈楰梴椑棯棆椔棸æ£�棽棼棨椋椊椗棎棈æ£�棞棦棴棑椆棔棩椕椥棇欹欻����������������������������������î¬�î¬�î¬�î¬�î­�î­�î­Žî­�î­�î­��\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"���������������������������������欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿æ¹�æ¹�湳渜渳湋湀湑渻渃渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌ç�®ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î­¢î­£î­¤î­¥î­¦î­§î­¨î­©î­ªî­«î­¬î­­î­®î­¯î­°î­±î­²î­³î­´î­µî­¶î­·î­¸î­¹î­ºî­»î­¼î­½î­¾î­¿î®€î®�î®�î®�î®�î®��\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"���������������������������������ç�¬ç�°ç�«ç�–ç�šç�¡ç�­ç�±ç�¤ç�£ç��ç�©ç� ç�²ç“»ç”¯ç•¯ç•¬ç—§ç—šç—¡ç—¦ç—�痟痤痗皕皒盚ç�†ç�‡ç�„ç��ç�…ç�Šç�Žç�‹ç�ŒçŸžçŸ¬ç¡ ç¡¤ç¡¥ç¡œç¡­ç¡±ç¡ªç¡®ç¡°ç¡©ç¡¨ç¡žç¡¢ç¥´ç¥³ç¥²ç¥°ç¨‚稊稃稌稄窙竦竤筊筇筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪çµ�絭絜絫絒絔絩絑絟����������������������������������î¯�î¯�î¯�î¯�î¯�î°�î°�î°Žî°�î°�î°��\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"���������������������������������絎缾缿罥罦羢羠羡翗è�‘è��è��胾胔腃腊腒è…�腇脽è…�脺臦臮臷臸臹舄舼舽舿艵茻è��è�¹è�£è�€è�¨è�’è�§è�¤è�¼è�¶è��è�†è�ˆè�«è�£èŽ¿è��è��è�¥è�˜è�¿è�¡è�‹è�Žè�–è�µè�‰è�‰è��è�žè�‘è�†è�‚è�³è�•è�ºè�‡è�‘è�ªè�“莚è�ƒè�¬è�®è�„è�»è�—è�¢è�›è�›è�¾è›˜è›¢è›¦è›“蛣蛚蛪è›�蛫蛜����������������������������������î±�î±�î±�î±�î±��\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"���������������������������������蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲è¤�裉覕覘覗è§�觚觛詎è©�訹詙詀詗詘詄詅詒詈詑詊詌è©�豟è²�貀貺貾貰貹貵趄趀趉跘跓è·�跇跖跜è·�跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻é„�鄀����������������������������������î²�î²�î²�î²�î²�î³�î³�î³�î³��\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"���������������������������������鄇鄅鄃酡酤酟酢酠éˆ�鈊鈥鈃鈚鈦éˆ�鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻é–�é–Œé–�隇陾隈隉隃隀雂雈雃雱雰é�¬é�°é�®é ‡é¢©é£«é³¦é»¹äºƒäº„亶傽傿僆傮僄僊傴僈僂傰åƒ�傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌å—�å—‹å—Šå—�嗀嗔嗄嗩喿嗒å–�å—�嗕����������������������������������î³�î´�î´�î´Žî´�î´�î´��\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"���������������������������������嗢嗖嗈嗲å—�嗙嗂圔塓塨塤å¡�å¡�塉塯塕塎å¡�塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶å«�媹åª�寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰å¹�幎幊å¹�幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯æ…�愩慀戠酨戣戥戤æ�…æ�±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î´¸î´¹î´ºî´»î´¼î´½î´¾î´¿îµ€îµ�îµ�îµ�îµ�¬¦��㈱№℡�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"���������������������������������æ�«æ��æ�’æ�‰æ� æ�¤æ�³æ‘ƒæ�Ÿæ�•æ�˜æ�¹æ�·æ�¢æ�£æ�Œæ�¦æ�°æ�¨æ‘�æ�µæ�¯æ�Šæ�šæ‘€æ�¥æ�§æ�‹æ�§æ�›æ�®æ�¡æ�Žæ•¯æ–’旓暆暌暕æš�暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘æ¥�楴楌椻楋椷楜æ¥�楑椲楒椯楻椼歆歅歃歂����������������������������������î¶�î¶�î¶Žî¶�î¶�î¶�î·�î·�î·Žî·�î·��\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"���������������������������������歈æ­�殛毻毼毹毷毸溛滖滈æº�滀溟溓溔溠溱溹滆滒溽æ»�溞滉溷溰æ»�溦æ»�溲溾滃滜滘溙溒溎æº�溤溡溿溳æ»�滊溗溮溣煇煔煒煣煠ç…�ç…�煢煲煸煪煡煂煘煃煋煰煟ç…�ç…“ç…„ç…�ç…šç‰�çŠ�犌犑çŠ�犎猼ç�‚猻猺ç�€ç�Šç�‰ç‘„瑊瑋瑒瑑瑗瑀ç‘�ç‘�瑎����������������������������������一乙ä¸�七乃ä¹�了二人儿入八几刀åˆ�力匕å��å�œå�ˆä¸‰ä¸‹ä¸ˆä¸Šä¸«ä¸¸å‡¡ä¹…么也乞于亡兀刃勺å�ƒå�‰å�£åœŸå£«å¤•大女å­�孑孓寸å°�尢尸山å·�工己已巳巾干廾弋弓æ‰�丑ä¸�ä¸�中丰丹之尹予云井互五亢ä»�什仃仆仇ä»�今介仄元å…�內六兮公冗凶�\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"���������������������������������瑂瑆ç‘�瑔瓡瓿瓾瓽ç”�畹畷榃痯ç˜�瘃痷痾痼痹痸ç˜�痻痶痭痵痽皙皵ç›�ç�•ç�Ÿç� ç�’ç�–ç�šç�©ç�§ç�”ç�™ç�­çŸ ç¢‡ç¢šç¢”ç¢�碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓稛ç¨�窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀����������������������������������分切刈勻勾勿化匹å�ˆå�‡å�…å�žåŽ„å�‹å�Šå��壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛æ°�æ°´ç�«çˆªçˆ¶çˆ»ç‰‡ç‰™ç‰›çŠ¬çŽ‹ä¸™ä¸–ä¸•ä¸”ä¸˜ä¸»ä¹�ä¹�乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"���������������������������������ç¶�絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡èˆ�艉艄艀艂艅蓱è�¿è‘–葶葹è’�è’�葥葑葀蒆葧è�°è‘�葽葚葙葴葳è‘�蔇葞è�·è�ºè�´è‘ºè‘ƒè‘¸è�²è‘…è�©è�™è‘‹è�¯è‘‚è�­è‘Ÿè‘°è�¹è‘Žè‘Œè‘’葯蓅蒎è�»è‘‡è�¶è�³ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åŒ—åŒ�仟å�Šå�‰å�¡å� å�¯å�®åŽ»å�¯å�¤å�³å�¬å�®å�©å�¨å�¼å�¸å�µå�«å�¦å�ªå�²å�±å�°å�¥å�­å�»å››å›šå¤–央失奴奶孕它尼巨巧左市布平幼å¼�弘弗必戊打扔扒扑斥旦朮本未末札正æ¯�æ°‘æ°�æ°¸æ±�汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴�\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"���������������������������������葨葾葄è�«è‘ è‘”è‘®è‘�蜋蜄蛷蜌蛺蛖蛵è��蛸蜎蜉èœ�è›¶èœ�蜅裖裋è£�裎裞裛裚裌è£�覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃èª�詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎è¶�è¶�è¶“è¶”è¶�趒跰跠跬跱跮è·�跩跣跢跧跲跫跴輆軿è¼�輀輅����������������������������������立丞丟乒乓乩亙交亦亥仿伉伙伊伕ä¼�ä¼�休ä¼�仲件任仰仳份ä¼�伋光兇兆先全共å†�冰列刑划刎刖劣匈匡匠å�°å�±å�‰å��å�Œå�Šå��å��å�‹å�„å�‘å��å�ˆå�ƒå�Žå�†å�’因回å›�圳地在圭圬圯圩夙多夷夸妄奸妃好她如å¦�字存宇守宅安寺尖屹州帆并�\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"���������������������������������輇輈輂輋é�’逿é�„é�‰é€½é„�é„�é„�鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬é‰�鉠鉧鉯鈶鉡鉰鈱鉔鉣é‰�鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵é�³é�·é�¸é�²é �é �頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪åƒ�僤����������������������������������年å¼�弛忙忖戎戌æˆ�æˆ�扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖æ±�汗汙江池æ±�汕污汛æ±�汎ç�°ç‰Ÿç‰�百竹米糸缶羊羽è€�考而耒耳è�¿è‚‰è‚‹è‚Œè‡£è‡ªè‡³è‡¼èˆŒèˆ›èˆŸè‰®è‰²è‰¾è™«è¡€è¡Œè¡£è¥¿é˜¡ä¸²äº¨ä½�ä½�佇佗佞伴佛何估ä½�佑伽伺伸佃佔似但�\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"���������������������������������僓僬僰僯僣僠凘劀åŠ�勩勫匰厬嘧嘕嘌嘒嗼å˜�嘜å˜�嘓嘂嗺å˜�嘄嗿嗹墉塼å¢�墘墆å¢�塿塴墋塺墇墑墎塶墂墈塻墔å¢�壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞å«�嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺å¶�嵷嶊嶉嶈嵾嵼å¶�嵹嵿幘幙幓廘廑廗廎廜����������������������������������佣作你伯低伶余ä½�佈佚兌克å…�兵冶冷別判利刪刨劫助努劬匣å�³å�µå��å�­å�žå�¾å�¦å‘Žå�§å‘†å‘ƒå�³å‘ˆå‘‚å�›å�©å‘Šå�¹å�»å�¸å�®å�µå�¶å� å�¼å‘€å�±å�«å�Ÿå�¬å›ªå›°å›¤å›«å�Šå�‘å�€å��å�‡å�Žåœ¾å��å��圻壯夾å¦�妒妨妞妣妙妖å¦�妤妓妊妥å­�孜孚孛完宋å®�尬局å±��\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"���������������������������������廕廙廒廔彄彃彯徶愬愨æ…�慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫æ�«æ‘�æ‘›æ‘�摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠æ‘�æ‘¿æ�¿æ‘¬æ‘«æ‘™æ‘¥æ‘·æ•³æ– æš¡æš æšŸæœ…朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧æ¦�榩榾榯榿槄榽榤槔榹槊榚æ§�榳榓����������������������������������尿尾å²�岑岔岌巫希åº�庇床廷弄弟彤形彷役忘忌志å¿�忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更æ�Ÿæ�Žæ��æ��æ�‘æ�œæ�–æ�žæ�‰æ�†æ� æ�“æ�—æ­¥æ¯�求汞沙æ²�沈沉沅沛汪決æ²�汰沌汨沖沒汽沃汲汾汴沆汶æ²�沔沘�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"���������������������������������榪榡榞槙榗æ¦�槂榵榥槆歊æ­�歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟æ¼�漞漈漡熇ç†�熉熀熅熂ç†�煻熆ç†�熗牄牓犗犕犓ç�ƒç��ç�‘ç�Œç‘¢ç‘³ç‘±ç‘µç‘²ç‘§ç‘®ç”€ç”‚甃畽����������������������������������沂ç�¶ç�¼ç�½ç�¸ç‰¢ç‰¡ç‰ ç‹„狂玖甬甫男甸皂盯矣ç§�秀禿究系罕肖肓è‚�肘肛肚育良芒芋èŠ�見角言谷豆豕è²�赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯ä¾�ä¾�佳使佬供例來侃佰併侈佩佻侖佾ä¾�侑�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"���������������������������������ç–�瘖瘈瘌瘕瘑瘊瘔皸çž�ç�¼çž…çž‚ç�®çž€ç�¯ç�¾çžƒç¢²ç¢ªç¢´ç¢­ç¢¨ç¡¾ç¢«ç¢žç¢¥ç¢ ç¢¬ç¢¢ç¢¤ç¦˜ç¦Šç¦‹ç¦–禕禔禓禗禈禒ç¦�稫穊稰稯稨稦窨窫窬竮箈箜箊箑ç®�ç®–ç®�箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪ç·�緀緅ç¶�緎緄緆緋緌綯綹綖綼綟綦綮綩����������������������������������佺兔兒兕兩具其典冽函刻券刷刺到刮制å‰�劾劻å�’å�”å�“å�‘å�¦å�·å�¸å�¹å�–å�”å�—味呵咖呸咕咀呻呷咄咒咆呼å’�呱呶和咚呢周咋命咎固垃å�·å�ªå�©å�¡å�¦å�¤å�¼å¤œå¥‰å¥‡å¥ˆå¥„奔妾妻委妹妮姑姆å§�å§�始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"���������������������������������綡緉罳翢翣翥翞耤è��è�œè†‰è††è†ƒè†‡è†�膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴è“�è“�蒪蒚蒱è“�è’�蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶è“�蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨è�«è�€èœ®èœžèœ¡èœ™èœ›è�ƒèœ¬è��蜾è�†èœ èœ²èœªèœ­èœ¼èœ’蜺蜱蜵è�‚蜦蜧蜸蜤蜚蜰蜑裷裧裱����������������������������������屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往å¾�彿彼å¿�忠忽念忿æ€�怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押æ‹�拙拇æ‹�抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀æ˜��\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"���������������������������������裲裺裾裮裼裶裻裰裬裫è¦�覡覟覞觩觫觨誫誙誋誒èª�誖谽豨豩賕è³�賗趖踉踂跿è¸�跽踊踃踇踆踅跾踀踄è¼�輑輎è¼�鄣鄜鄠鄢鄟é„�鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪éŠ�銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩éŠ�����������������������������������昕昊昇æœ�朋æ�­æž‹æž•æ�±æžœæ�³æ�·æž‡æž�æž—æ�¯æ�°æ�¿æž‰æ�¾æž�æ�µæžšæž“æ�¼æ�ªæ�²æ¬£æ­¦æ­§æ­¿æ°“氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油æ³�沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗ç‹�玩玨玟玫玥甽ç–�疙疚的盂盲直�\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"���������������������������������銋鈭隞隡雿é�˜é�½é�ºé�¾éžƒéž€éž‚é�»éž„éž�é�¿éŸŽéŸ�頖颭颮餂餀餇é¦�馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵å™�噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫å¢�墱墠墣墯墬墥墡壿嫿嫴嫽嫷����������������������������������知矽社祀ç¥�秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾èˆ�芳èŠ�芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱åˆ�表軋迎返近邵邸邱邶采金長門阜陀阿阻附陂隹雨é�’é�žäºŸäº­äº®ä¿¡ä¾µä¾¯ä¾¿ä¿ ä¿‘ä¿�ä¿�促侶俘俟俊俗侮ä¿�俄係俚俎俞�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"���������������������������������嫶嬃嫸嬂嫹å¬�嬇嬅å¬�屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩å¹�幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡æ†�慦憳戭摮摰撖撠撅撗撜æ’�撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛æ¨�����������������������������������侷兗冒冑冠剎剃削å‰�剌剋則勇勉勃å‹�åŒ�å�—å�»åŽšå�›å’¬å“€å’¨å“Žå“‰å’¸å’¦å’³å“‡å“‚咽咪å“�哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契å¥�奎å¥�姜姘姿姣姨娃姥姪姚姦å¨�姻孩宣宦室客宥å°�屎å±�å±�屋峙峒巷å¸�帥帟幽庠度建弈弭彥很�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"���������������������������������槾樧槲槮樔槷槧橀樈槦槻æ¨�槼槫樉樄樘樥æ¨�槶樦樇槴樖歑殥殣殢殦æ°�氀毿氂æ½�漦潾澇濆澒æ¾�澉澌潢æ½�澅潚澖潶潬澂潕潲潒æ½�潗澔澓æ½�漀潡潫潽潧æ¾�潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵ç†�熥熞熤熡熪熜熧熳犘犚ç�˜ç�’����������������������������������待徊律徇後徉怒æ€�怠急怎怨æ��æ�°æ�¨æ�¢æ�†æ�ƒæ�¬æ�«æ�ªæ�¤æ‰�拜挖按拼拭æŒ�拮拽指拱拷拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔æŸ�柬架枯柵柩柯柄柑枴柚查枸æŸ�柞柳枰柙柢æŸ�柒歪殃殆段毒毗氟泉洋洲洪æµ�津洌�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"���������������������������������ç�žç�Ÿç� ç��ç�›ç�¡ç�šç�™ç�¢ç’‡ç’‰ç’Šç’†ç’�瑽璅璈瑼瑹甈甇畾瘥瘞瘙ç˜�瘜瘣瘚瘨瘛皜çš�çšžçš›çž�çž�瞉瞈ç£�碻ç£�磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫����������������������������������洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷ç�ŠçŽ»çŽ²ç��ç�€çŽ³ç”šç”­ç•�界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅çœ�盹相眉看盾盼眇矜砂研砌ç �祆祉祈祇禹禺科秒秋穿çª�竿竽籽紂紅紀紉紇約紆缸�\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"���������������������������������翪翬翦翨è�¤è�§è†£è†Ÿè†žè†•膢膙膗舖è‰�艓艒è‰�艎艑蔤蔻è”�蔀蔩蔎蔉è”�蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨è”�蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢è�–è�£è�¤è�·èŸ¡è�³è�˜è�”è�›è�’è�¡è�šè�‘è�žè�­è�ªè��è�Žè�Ÿè��è�¯è�¬è�ºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¾Žç¾¿è€�è€�耑耶胖胥胚胃胄背胡胛胎胞胤èƒ�致舢苧范茅苣苛苦茄若茂茉苒苗英èŒ�苜苔苑苞苓苟苯茆è™�虹虻虺è¡�è¡«è¦�觔計訂訃貞負赴赳趴è»�軌述迦迢迪迥迭迫迤迨郊郎éƒ�郃酋酊é‡�é–‚é™�陋陌é™�é�¢é�©éŸ‹éŸ­éŸ³é �風飛食首香乘亳�\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"���������������������������������è�®è�œè�¥è��è�»è�µè�¢è�§è�©è¡šè¤…褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬è«�諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾è±�è²�賥賟賙賨賚è³�賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗é�³é�°é�¯é�§é�«é„¯é„«é„©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å€Œå€�倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢å‡�凌准凋剖剜剔剛å‰�匪å�¿åŽŸåŽ�å�Ÿå“¨å”�å”�唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽å”�圃圄埂埔埋埃堉å¤�套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉�\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"���������������������������������鄪鄲鄦鄮醅醆醊é†�醂醄醀é‹�鋃鋄鋀鋙銶é‹�鋱鋟鋘鋩鋗é‹�鋌鋯鋂鋨鋊鋈鋎鋦é‹�鋕鋉鋠鋞鋧鋑鋓銵鋡錥鋆銴镼閬閫閮閰隤隢雓霅霈霂é�šéžŠéžŽéžˆéŸ�éŸ�é žé �頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜é§�é§�駓駔駎駉駖駘駋駗駌骳髬髫髳����������������������������������孫屘宰害家宴宮宵容宸射屑展å±�峭峽峻峪峨峰島å´�峴差席師庫庭座弱徒徑å¾�æ�™æ�£æ�¥æ��æ�•æ�­æ�©æ�¯æ‚„悟悚æ‚�悔悌悅悖扇拳挈拿æ�ŽæŒ¾æŒ¯æ�•æ�‚æ�†æ��æ�‰æŒºæ��挽挪挫挨æ��æ�Œæ•ˆæ•‰æ–™æ—�旅時晉æ™�晃晒晌晅æ™�書朔朕朗校核案框桓根桂桔�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"���������������������������������髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓é¼�é¼�儜儓儗儚儑凞匴å�¡å™°å™ å™®å™³å™¦å™£å™­å™²å™žå™·åœœåœ›å£ˆå¢½å£‰å¢¿å¢ºå£‚墼壆嬗嬙嬛嬡嬔嬓å¬�嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋����������������������������������栩梳栗桌桑栽柴æ¡�桀格桃株桅栓栘æ¡�殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈çƒ�爹特狼狹狽狸狷玆ç�­ç�‰ç�®ç� ç�ªç�žç•”ç•�畜畚留疾病症疲疳疽疼疹痂疸皋皰益ç›�盎眩真眠眨矩砰砧砸�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"���������������������������������徼徻æ†�憨憖懅憴懆æ‡�懌憺憿憸憌擗擖æ“�æ“�擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋æ›�暽暻暺曌朣樴橦橉橧樲橨樾æ©�橭橶橛橑樨橚樻樿æ©�橪橤æ©�æ©�橔橯橩橠樼橞橖橕æ©�橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞����������������������������������ç �破砷砥砭砠砟砲祕ç¥�祠祟祖神ç¥�祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純ç´�ç´•ç´šç´œç´�紙紛缺罟羔翅ç¿�耆耄耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀èˆ�航舫舨般芻茫è�’è�”è�ŠèŒ¸è��è�‰èŒµèŒ´è��茲茹茶茗�\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"���������������������������������濊澨瀄澥澮澺澬澪æ¿�澿澸澢濉澫æ¿�澯澲澰燅燂熿熸燖燀ç‡�燋燔燊燇ç‡�熽燘熼燆燚燛çŠ�犞ç�©ç�¦ç�§ç�¬ç�¥ç�«ç�ªç‘¿ç’šç’ ç’”璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚çž�瞡瞜瞛瞢瞣瞕瞙瞗ç£�磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵����������������������������������è�€èŒ±èŒ¨è�ƒè™”蚊蚪蚓蚤蚩蚌蚣蚜衰衷è¢�袂衽衹記è¨�討訌訕訊託訓訖è¨�訑豈豺豹財貢起躬軒軔è»�è¾±é€�逆迷退迺迴逃追逅迸邕郡éƒ�郢酒é…�酌釘é‡�釗釜釙閃院陣陡陛é™�除陘陞隻飢馬骨高鬥鬲鬼乾å�ºå�½å�œå�‡å�ƒå�Œå�šå�‰å�¥å�¶å�Žå�•å�µï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"���������������������������������窱窷篞篣篧ç¯�篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗ç³�糑縒縡縗縌縟縠縓縎縜縕縚縢縋ç¸�縖ç¸�縔縥縤罃罻罼罺羱翯耪耩è�¬è†±è†¦è†®è†¹è†µè†«è†°è†¬è†´è†²è†·è†§è‡²è‰•艖艗蕖蕅蕫è•�蕓蕡蕘蕀蕆蕤è•�蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦����������������������������������å�´å�·å��å€�å�¯å�­å…œå†•凰剪副勒務勘動åŒ�åŒ�匙匿å�€åŒ¾å�ƒæ›¼å•†å•ªå•¦å•„啞啡啃啊唱啖å•�啕唯啤唸售啜唬啣唳å•�啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶å©�婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜å±�崇崆崎崛崖崢崑崩崔�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"���������������������������������è•�蕔蕥蕬虣虥虤螤螛èž�螗螓螒螈èž�螖螘è�¹èž‡èž£èž…èž�èž‘èž�螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵è«�謔諤諟諰諈諞諡諨諿諯諻貑貒è²�賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽è¹�踰踿躽輶輮輵輲輹輷輴é�¶é�¹é�»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å´™å´¤å´§å´—巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜æ�¿æ‚£æ‚‰æ‚ æ‚¨æƒ‹æ‚´æƒ¦æ‚½æƒ…悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控æ�²æŽ–探接æ�·æ�§æŽ˜æŽªæ�±æŽ©æŽ‰æŽƒæŽ›æ�«æŽ¨æŽ„授掙採掬排æŽ�掀æ�»æ�©æ�¨æ�ºæ•�敖救教敗啟æ•�敘敕敔斜斛斬æ—��\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"���������������������������������邆郺鄳鄵鄶醓é†�醑é†�é†�錧錞錈錟錆éŒ�é�ºéŒ¸éŒ¼éŒ›éŒ£éŒ’éŒ�é�†éŒ­éŒŽéŒ�é‹‹éŒ�鋺錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼é—�閾閹閺閶閿閵閽隩雔霋霒éœ�鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳����������������������������������旋旌旎æ™�晚晤晨晦晞曹勗望æ¢�梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔æ¢�梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽çŠ�猜猛猖猓猙率ç�…ç�Šç�ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"���������������������������������鮀鮅鮇魼魾魻鮂鮓鮒é®�魺鮕魽鮈鴥鴗鴠鴞鴔鴩é´�鴘鴢é´�鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌åš�嚆嚄嚃噾嚂噿åš�壖壔å£�壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨æ–�斀斶旚曒æª�����������������������������������ç�†ç�¾ç��瓠瓶瓷甜產略畦畢異ç–�痔痕疵痊ç—�皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜è�Šè�†è„¯è„–脣脫脩脰脤舂舵舷舶船莎莞莘è�¸èŽ¢èŽ–èŽ½èŽ«èŽ’èŽŠèŽ“ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"���������������������������������檖æª�檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲æ¿�濢濨燡燱燨燲燤燰燢ç�³ç�®ç�¯ç’—璲璫ç’�璪璭璱璥璯ç”�甑甒ç”�疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磿磲礅磹磾礄禫禨穜穛穖����������������������������������莉莠è�·è�»è�¼èŽ†èŽ§è™•å½ªè›‡è›€èš¶è›„èšµè›†è›‹èš±èš¯è›‰è¡“è¢žè¢ˆè¢«è¢’è¢–è¢�袋覓è¦�訪è¨�訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這é€�通逗連速é€�é€�逕逞造é€�逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"���������������������������������穘穔穚窾竀ç«�ç°…ç°�篲簀篿篻簎篴簋篳簂簉簃ç°�篸篽簆篰篱ç°�簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀è–�薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆è–�è–™è–�è–�薢薂薈薅蕹����������������������������������頂頃魚鳥鹵鹿麥麻傢å‚�傅備傑傀傖傘傚最凱割剴創剩勞å‹�å‹›å�šåŽ¥å•»å–€å–§å•¼å–Šå–�喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙åœ�堯堪場堤堰報堡å �堠壹壺奠婷媚婿媒媛媧孳孱寒富寓å¯�尊尋就嵌åµ�崴嵇巽幅帽幀幃幾廊�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"���������������������������������蕶薘è–�薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾è¥�襒褷襂覭覯覮觲觳謞謘謖謑謅謋謢è¬�謒謕謇è¬�謈謆謜謓謚è±�豰豲豱豯貕貔賹赯蹎è¹�蹓è¹�蹌蹇轃轀邅é�¾é„¸é†šé†¢é†›é†™é†Ÿé†¡é†�醠鎡鎃鎯é�¤é�–é�‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å»�廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌æ��æ�€æ�©æ�‰æ�†æ��æ�’æ�£æ��æ�¡æ�–æ�­æ�®æ�¶æ�´æ�ªæ�›æ‘’æ�šæ�¹æ•žæ•¦æ•¢æ•£æ–‘æ–�斯普晰晴晶景暑智晾晷曾替期æœ�棺棕棠棘棗椅棟棵森棧棹棒棲棣棋æ£�æ¤�椒椎棉棚楮棻�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"���������������������������������é�¼é�˜é�œé�¶é�‰é��é�‘é� é�­éŽ�é�Œé�ªé�¹é�—é�•é�’é��é�±é�·é�»é�¡é�žé�£é�§é�Žé�™é—‡é—€é—‰é—ƒé—…閷隮隰隬霠霟霘éœ�霙鞚鞡鞜鞞éž�韕韔韱é¡�顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽é¬�髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆����������������������������������款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴æ¹�渺測湃æ¸�渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩ç�ºç�ªç�³ç�¢ç�¥ç�µç�¶ç�´ç�¯ç�›ç�¦ç�¨ç”¥ç”¦ç•«ç•ªç—¢ç—›ç—£ç—™ç—˜ç—žç— ç™»ç™¼çš–皓皴盜ç��短ç¡�硬硯�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"���������������������������������鮢鮠鮯鴳éµ�鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉éº�麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚åš�嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸æ”�攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌ç€�ç€�瀅瀔瀎濿����������������������������������ç¨�稈程稅稀窘窗窖童竣等策筆ç­�ç­’ç­”ç­�ç­‹ç­�筑粟粥絞çµ�絨絕紫絮絲絡給絢絰絳善翔翕耋è�’肅腕腔腋腑腎脹腆脾腌腓腴舒舜è�©è�ƒè�¸è��è� è�…è�‹è��è�¯è�±è�´è‘—è�Šè�°è�Œè�Œè�½è�²è�Šè�¸è�Žè�„è�œè�‡è�”è�Ÿè™›è›Ÿè›™è›­è›”蛛蛤è›�蛞街è£�裂袱覃視�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"���������������������������������瀀濻瀦濼濷瀊çˆ�燿燹爃燽ç�¶ç’¸ç“€ç’µç“�璾璶璻瓂甔甓癜癤癙ç™�癓癗癚皦皽盬矂瞺礌礓礔礉ç¤�礒礑禭禬穟簜簩簙簠簟簭ç°�簦簨簢簥簰繜ç¹�繖繣繘繢繟繑繠繗繓羵羳翷翸è�µè‡‘臒è‡�艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶����������������������������������註詠評詞証è©�詔詛è©�詆訴診訶詖象貂貯貼貳貽è³�費賀貴買貶貿貸越超è¶�è·Žè·�跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥é‡�鈔鈕鈣鈉鈞éˆ�éˆ�鈇鈑閔é–�開閑間閒閎隊階隋陽隅隆éš�陲隄é›�雅雄集雇雯雲韌項順須飧飪�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"���������������������������������藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣蟗蟙è �蟴蟨èŸ�襓襋è¥�襌襆è¥�襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡è¹�蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌����������������������������������飯飩飲飭馮馭黃é»�黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧å«�嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚æ„�慈感想愛惹æ„�愈慎慌慄�\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"���������������������������������鎒鎷鎛éŽ�鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎀éŽ�鎱鎑鎲鎤鎨鎴鎣闒闓闑隳雗雚巂雟雘é›�霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺é¡�顑顒颸é¥�餼餺é¨�騋騉é¨�騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿é¯�鮵鮸鯓鮶鯄鮹鮽鵜鵓éµ�鵊鵛鵋����������������������������������æ…�愾愴愧æ„�愆愷戡戢æ�“æ�¾æ�žæ�ªæ�­æ�½æ�¬æ��æ�œæ�”æ��æ�¶æ�–æ�—æ�†æ•¬æ–Ÿæ–°æš—暉暇暈暖暄暘æš�會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆æ¥�楣楛歇歲毀殿毓毽溢溯滓溶滂æº�æº�滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"���������������������������������鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟é¼�鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚å£�壛夒嬽嬾嬿巃幰徿懻攇æ”�æ”�攉攌攎斄旞æ—�曞櫧櫠櫌櫑櫙櫋櫟櫜æ«�æ««æ«�æ«�櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜爌爊爇爂爅犥犦犤犣犡瓋瓅����������������������������������煞煆煨煖爺牒猷ç�…猿猾瑯瑚瑕瑟瑞ç‘�ç�¿ç‘™ç‘›ç‘œç•¶ç•¸ç˜€ç—°ç˜�痲痱痺痿痴痳盞盟ç�›ç�«ç�¦ç�žç�£ç�¹ç�ªç�¬ç�œç�¥ç�¨ç�¢çŸ®ç¢Žç¢°ç¢—碘碌碉硼碑碓硿祺祿ç¦�è�¬ç¦½ç¨œç¨šç¨ ç¨”稟稞窟窠筷節筠筮筧粱粳粵經絹綑ç¶�ç¶�絛置罩罪署義羨群è�–è�˜è‚†è‚„�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"���������������������������������璷瓃甖癠矉矊矄矱ç¤�礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾è�¸è‡—臕舋艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘è¥�襙覈覷����������������������������������腱腰腸腥腮腳腫腹腺腦舅艇蒂葷è�½è�±è‘µè‘¦è‘«è‘‰è‘¬è‘›è�¼è�µè‘¡è‘£è‘©è‘­è‘†è™žè™œè™Ÿè›¹èœ“蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘è£�裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"���������������������������������覶觶è­�譈譊譀譓譖譔譋譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑è½�è½�轓辴酀鄿醰醭é�žé�‡é��é�‚é�šé��é�¹é�¬é�Œé�™éŽ©é�¦é�Šé�”é�®é�£é�•é�„é�Žé�€é�’鎥é�§é•½é—šé—›é›¡éœ©éœ«éœ¬éœ¨éœ¦éž³éž·éž¶éŸ�韞韟顜顙é¡�顗颿颽颻颾饈饇饃馦馧����������������������������������跤跦躲較載軾輊辟農é�‹é�Šé�“é�‚é�”逼é�•é��é�‡é��é�Žé��é�‘逾é��鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉é‰�鉅鈹鈿鉚閘隘隔隕é›�雋雉雊雷電雹零é�–é�´é�¶é �頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕åƒ�僑僱僎僩兢�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"���������������������������������騚騕騥é¨�騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷é¶�鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀é½�é½�齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀å¿�懹攗攖攕攓旟曨曣曤����������������������������������凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉å˜�嘎嗷嘖嘟嘈å˜�嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察å°�屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧æ�´æ‘­æ‘»æ•²æ–¡ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"���������������������������������櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱ç�‚瀸瀿瀺瀹瀪ç�€ç€»ç€³ç��爓爔犨ç�½ç�¼ç’ºçš«çšªçš¾ç›­çŸŒçŸŽçŸ�çŸ�矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾çº�纀羺翿è�¹è‡›è‡™è‰¨è‰©è˜¢è—¿è˜�藾蘛蘀藶蘄蘉蘅蘌藽蠙è �蠑蠗蠓蠖襣襦覹觷譠譪è­�譨譣����������������������������������旗旖暢暨æš�榜榨榕æ§�榮槓構榛榷榻榫榴æ§�æ§�榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬æ¼�漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬æ¼�滲滌滷熔熙煽熊熄熒爾犒犖ç�„ç��瑤瑣瑪瑰瑭甄疑瘧ç˜�瘋瘉瘓盡監瞄ç�½ç�¿ç�¡ç£�碟碧碳碩碣禎ç¦�ç¦��\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"���������������������������������譥譧譭趮躆躈躄轙轖轗轕轘轚é‚�é…ƒé…�醷醵醲醳é�‹é�“é�»é� é��é�”é�¾é�•é��é�¨é�™é��é�µé�€é�·é�‡é�Žé�–é�’é�ºé�‰é�¸é�¼é�Šé�¿é�¼é�Œé�¶é�‘é�†é—žé— é—Ÿéœ®éœ¯éž¹éž»éŸ½éŸ¾é¡ é¡¢é¡£é¡Ÿé£�飂é¥�饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆é¬�鬒鬑鰋鰈鯷鰅鰒鯸鱀����������������������������������種稱窪窩竭端管箕箋筵算ç®�ç®”ç®�箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟è�žè�šè‚‡è…�膀è†�膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓è’�蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘è�•蜷蜩裳褂裴裹裸製裨褚裯�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"���������������������������������鰇鰎鰆鰗鰔鰉鶟鶙鶤é¶�鶒鶘é¶�鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞é½�齙龑儺儹劘劗囃嚽嚾孈孇巋å·�廱懽攛欂櫼欃櫸欀ç�ƒç�„ç�Šç�ˆç�‰ç�…ç�†çˆ�爚爙ç�¾ç”—癪çŸ�礭礱礯籔籓糲纊纇纈纋纆çº�ç½�羻耰è‡�����������������������������������誦誌語誣èª�誡誓誤說誥誨誘誑誚誧豪è²�貌賓賑賒赫趙趕跼輔輒輕輓辣é� é�˜é�œé�£é�™é�žé�¢é��é�›é„™é„˜é„žé…µé…¸é…·é…´é‰¸éŠ¬éŠ€éŠ…éŠ˜éŠ–é‰»éŠ“éŠœéŠ¨é‰¼éŠ‘é–¡é–¨é–©é–£é–¥é–¤éš™éšœéš›é›Œé›’éœ€é�¼éž…韶頗領颯颱餃餅餌餉é§�骯骰髦é­�魂鳴鳶鳳麼鼻齊億�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"���������������������������������蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩è �蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻è´�贔趯躎躌轞轛è½�酆酄酅醹é�¿é�»é�¶é�©é�½é�°é�¹é�ªé�·é�¬é‘€é�±é—¥é—¤é—£éœµéœºéž¿éŸ¡é¡¤é£‰é£†é£€é¥˜é¥–騹騽驆驄驂é©�騺騿é«�鬕鬗鬘鬖鬺魒鰫é°�鰜鰬鰣鰨鰩鰤鰡鶷����������������������������������儀僻僵價儂儈儉儅凜劇劈劉åŠ�劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履å¶�嶔幢幟幡廢廚廟å»�廣廠彈影德徵慶慧慮æ…�慕憂慼慰慫慾憧æ†�憫憎憬憚憤憔憮戮摩摯摹撞撲撈æ’�撰�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"���������������������������������鶶鶼é·�鷇鷊é·�鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳é·�鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉æ°�ç�•ç�–ç�—ç�’爞爟犩ç�¿ç“˜ç“•瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑ç½�羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥����������������������������������撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨æ¨�樞標槽模樓樊槳樂樅槭樑æ­�歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛ç�Žç�—瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊�\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"���������������������������������襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒èº�躖躗轠轢酇鑌é‘�鑊鑋é‘�鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌é©�驈驊驉驒é©�é«�鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳é±�鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋é·�鷜鷑鷟鷩鷙鷘鷖鷵鷕é·�麶黰鼵鼳鼲齂齫龕龢儽劙����������������������������������碾磕碼ç£�稿稼穀稽稷稻窯窮箭箱範箴篆篇ç¯�箠篌糊締練緯緻緘緬ç·�編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜è†�膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂è�´è�¶è� è�¦è�¸è�¨è�™è�—è�Œè�“è¡›è¡�è¤�複褒褓褕褊誼諒談諄誕請諸課諉諂調�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"���������������������������������壨壧奲å­�巘蠯å½�æˆ�戃戄攩攥斖曫欑欒æ¬�毊ç�›ç�šçˆ¢çŽ‚çŽ�玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕é‘�鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘é±�鱊é±�鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴����������������������������������誰論è«�誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫è¸�è¸�踢è¸�踩踟踡踞躺è¼�輛輟輩輦輪輜輞輥é�©é�®é�¨é�­é�·é„°é„­é„§é„±é†‡é†‰é†‹é†ƒé‹…銻銷鋪鋤é‹�銳銼鋒鋇鋰銲閭閱霄霆震霉é� éž�éž‹éž�頡頫頜颳養餓餒餘é§�é§�駟駛駑駕駒駙骷�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"���������������������������������鷳鷨鷭黂é»�黲黳鼆鼜鼸鼷鼶齃é½�齱齰齮齯囓å›�孎屭攭曭曮欓ç�Ÿç�¡ç��ç� çˆ£ç“›ç“¥çŸ•礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠èº�醾醽釂鑫鑨鑩雥é�†é�ƒé�‡éŸ‡éŸ¥é©žé«•魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀é¸�鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸����������������������������������髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔å„�儕冀冪å‡�劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶å£�墾壇壅奮å¬�嬴學寰導彊憲憑憩憊æ‡�憶憾懊懈戰擅æ“�擋撻撼據擄擇擂æ“�撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"���������������������������������欘欙欗欚ç�¢çˆ¦çŠªçŸ˜çŸ™ç¤¹ç±©ç±«ç³¶çºšçº˜çº›çº™è‡ è‡¡è™†è™‡è™ˆè¥¹è¥ºè¥¼è¥»è§¿è®˜è®™èº¥èº¤èº£é‘®é‘­é‘¯é‘±é‘³é�‰é¡²é¥Ÿé±¨é±®é±­é¸‹é¸�é¸�é¸�鸒鸑麡黵鼉齇齸齻齺齹圞ç�¦ç±¯è ¼è¶²èº¦é‡ƒé‘´é‘¸é‘¶é‘µé© é¬®é±´é±³é±±é±µé¸”鸓黶鼊龤ç�¨ç�¥ç³·è™ªè ¾è ½è ¿è®žè²œèº©è»‰é�‹é¡³é¡´é£Œï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ¨µæ©Ÿæ©ˆæ­™æ­·æ°…濂澱澡濃澤æ¿�澧澳激澹澶澦澠澴熾燉ç‡�燒燈燕熹燎燙燜燃燄ç�¨ç’œç’£ç’˜ç’Ÿç’žç“¢ç”Œç”�瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦ç©�穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞ç¸�縉ç¸�罹羲翰翱翮耨膳膩膨臻興艘艙蕊�\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"���������������������������������饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀é’�驩驨鸙虋讟钃鱹麷癵驫鱺é¸�ç�©ç�ªçˆ©éº¤é½¾é½‰é¾˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è•™è•ˆè•¨è•©è•ƒè•‰è•­è•ªè•žèžƒèžŸèžžèž¢èž�衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾è¬�謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦é�µé�´é�¸é�²é�¼é�ºé„´é†’錠錶鋸錳錯錢鋼錫錄錚éŒ�錦錡錕錮錙閻隧隨險雕霎霑霖éœ�霓éœ�é�›é�œé�¦éž˜é °ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"���������������������������������î€�î€�î€�î€�î€�î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî������������������������������������頸頻頷頭頹頤é¤�館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔é¾�龜優償儡儲勵嚎嚀åš�嚅嚇åš�壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗æª�檠歜殮毚�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"���������������������������������î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚�î‚�î‚�î‚�î‚�����������������������������������氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆ç�°ç�²ç’©ç’°ç’¦ç’¨ç™†ç™‚癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯ç¤�禧禪穗窿簇ç°�篾篷簌篠糠糜糞糢糟糙ç³�縮績繆縷縲繃縫總縱繅ç¹�縴縹繈縵縿縯罄翳翼è�±è�²è�°è�¯è�³è‡†è‡ƒè†ºï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"���������������������������������îƒ�îƒ�îƒ�îƒ�îƒ�î„�î„�î„�î„�����������������������������������臂臀膿膽臉膾臨舉艱薪薄蕾薜薑薔薯薛薇薨薊薦虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠è¬�謄è¬�è±�谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿é�¿é�½é‚„é‚�邂邀鄹醣醞醜é��鎂錨é�µé�Šé�¥é�‹éŒ˜é�¾é�¬é�›é�°é�šé�”闊闋闌闈闆�\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"���������������������������������î„�î…�î…�î…Žî…�î…�î…�����������������������������������隱隸雖霜霞鞠韓顆颶餵é¨�駿鮮鮫鮪鮭鴻鴿麋é»�點黜é»�黛鼾齋å�¢åš•嚮壙壘嬸å½�懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑ç€�燻燼燾燸ç�·ç�µç’§ç’¿ç”•癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"���������������������������������î†�î†�î†�î†�î†�î‡�î‡�î‡�î‡�����������������������������������繕繞繚繡繒繙罈翹翻è�·è�¶è‡�è‡�舊è—�è–©è—�è—�藉薰薺薹蟯蟬蟲蟠覆覲觴謨謹謬謫è±�贅蹙蹣蹦蹤蹟蹕軀轉è½�邇邃邈醫醬é‡�鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖é—�闕離雜雙雛雞霤鞣鞦鞭韹é¡�é¡�題顎顓颺餾餿餽餮馥騎é«�鬃鬆é­�é­Žé­�鯊�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"���������������������������������î‡�îˆ�îˆ�îˆ�îˆ�îˆ�����������������������������������鯉鯽鯈鯀鵑éµ�鵠黠鼕鼬儳嚥嚨壞壟壢寵é¾�廬懲懷懶懵攀æ”�æ› æ›�æ«¥æ«�櫚櫓瀛瀟瀨瀚ç€�瀕瀘爆çˆ�牘犢ç�¸ç�ºç’½ç“Šç“£ç–‡ç–†ç™Ÿç™¡çŸ‡ç¤™ç¦±ç©«ç©©ç°¾ç°¿ç°¸ç°½ç°·ç±€ç¹«ç¹­ç¹¹ç¹©ç¹ªç¹³ç¾…羶羹羸臘藩è—�藪藕藤藥藷蟻蠅è �蟹蟾襠襟襖襞è­�譜識證譚�\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"���������������������������������î‰�î‰�î‰�î‰�î‰�îŠ�îŠ�îŠ�îŠ�����������������������������������譎è­�譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮é�¡é�‘é�Ÿé�ƒé�ˆé�œé��é�–é�¢é��é�˜é�¤é�—é�¨é—œéš´é›£éœªéœ§é�¡éŸœéŸ»é¡žé¡˜é¡›é¢¼é¥…饉騖騙é¬�鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲çˆ�ç�»ç“�癢癥礦礪礬�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"���������������������������������îŠ�î‹�î‹�î‹�î‹�î‹�����������������������������������礫竇競籌籃ç±�糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫è´�è´�躉èº�躅躂醴釋é�˜é�ƒé�½é—¡éœ°é£„饒饑馨騫騰騷騵鰓é°�鹹麵黨鼯齟齣齡儷儸å›�囀囂夔屬å·�懼懾æ”�攜斕曩櫻欄櫺殲ç�Œçˆ›çŠ§ç“–ç“”ç™©çŸ“ç±�çº�續羼�\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"���������������������������������îŒ�îŒ�îŒ�îŒ�îŒ�î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî������������������������������������蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊èº�躋轟辯醺é�®é�³é�µé�ºé�¸é�²é�«é—¢éœ¸éœ¹éœ²éŸ¿é¡§é¡¥é¥—驅驃驀騾é«�魔魑鰭鰥鶯鶴鷂鶸éº�黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡ç�‘ç�˜çŽ€ç“¤ç–Šç™®ç™¬ç¦³ç± ç±Ÿè�¾è�½è‡Ÿè¥²è¥¯è§¼è®€è´–贗躑躓轡酈鑄鑑鑒霽�\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"���������������������������������î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€îŽ�îŽ�îŽ�îŽ�îŽ�����������������������������������霾韃éŸ�顫饕驕é©�髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬æ¬�瓚竊籤籣籥纓纖纔臢蘸蘿蠱變é‚�é‚�鑣鑠鑤é�¨é¡¯é¥œé©šé©›é©—髓體髑鱔鱗鱖鷥麟黴囑壩攬ç�žç™±ç™²çŸ—ç½�羈蠶蠹衢讓讒讖艷贛釀鑪é�‚é�ˆé�„韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷�\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"���������������������������������î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é½²å»³æ¬–ç�£ç±¬ç±®è »è§€èº¡é‡�鑲鑰顱饞髖鬣黌ç�¤çŸšè®šé‘·éŸ‰é©¢é©¥çºœè®œèºªé‡…鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲ソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレロヮワ�\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\tD[254] = \"���������������������������������î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‘€î‘�î‘�î‘�î‘�î‘�����������������������������������ヰヱヲンヴヵヶÐ�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ�⇧↸↹��䅚ク刂�冈������������\".split(\"\");\n\t\tfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20001] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"������������������������������������������������ ,ã€�。․•;:?ï¼��������︰…‥ï¹�﹑‧﹒﹔﹕﹖﹗︱–︲—︳_︴ï¹�()︵︶{ï½�︷������︸〔〕︹︺ã€�】︻︼《》︽︾〈〉︿﹀「ã€�ï¹�﹂『ã€�﹃﹄﹙�����﹚﹛﹜ï¹�﹞‘’“â€�ã€�〞′‵#&*※§〃○â—�△▲◎☆★◇◆□■▽▼㊣℅‾ ̄��﹉﹊ï¹�﹎﹋﹌﹟﹠﹡+ï¼�×÷±√<>ï¼�≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿ã�’ã�‘∫∮∵∴♀♂⊕⊙↑↓→â†�↖↗↙↘∥∣ï¼�\�﹨$¥〒¢£%@℃℉﹩﹪﹫ã�•㎜ãŽ�㎞ã�ŽãŽ¡ãŽŽãŽ�ã�„゜兙兛兞å…�兡兣��\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"������������������������������������������������嗧瓩糎â–�▂▃▄▅▆▇�������█â–�â–Žâ–�▌▋▊▉┼┴┬┤├▔─│▕┌â”�└┘╭╮╰╯â•�������╞╪╡◢◣◥◤╱╲╳¨˄ヽヾã‚�ゞ�〄々〆〇ー[]✽ã�������ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ï¼�123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�å�„�ABCDEFGHIJKLMNOPQRSTUVWXYZï½�bcdefghijklï½�nï½�ï½�qrstuvwxyzΑΒΓΔΕΖΗΘΙΚ��\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"������������������������������������������������ΛΜÎ�ΞΟΠΡΣΤΥ�������ΦΧΨΩαβγδεζηθικλμνξοπÏ�στυφχ������ψωㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜ�����ã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�­ã�®ã�¯â‘ â‘¡â‘¢â‘£â‘¤â‘¥â‘¦â‘§â‘¨â‘©â‘´â‘µâ‘¶â‘·â‘¸â‘¹â‘ºâ‘»â‘¼â‘½â…°â…±â…²â…³â…´â…µâ…¶â…·â…¸â…¹ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼ��\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"��������������������������������������������������丶丿�亅�亠�����������冂冖冫����勹��匸��å�©ï¿½åŽ¶ï¿½ï¿½ï¿½ï¿½ï¿½å¤‚ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å®€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å·›ï¿½ï¿½ï¿½ï¿½å¹ºå¹¿å»´ï¿½ï¿½ï¿½å½�彡�����������攴����无��������������������������������疒癶��������������������������������������������������������辵��������隶��������������������\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[145] = \"���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������¬¦��㈱№℡������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������一乙ä¸�七乃ä¹�了二人儿入八几刀åˆ�力匕å��å�œå�ˆä¸‰ä¸‹ä¸ˆä¸Šä¸«ä¸¸å‡¡ä¹…么也乞于亡兀刃勺å�ƒå�‰å�£åœŸå£«å¤•大女å­�孑孓寸å°�尢尸山å·�工己已巳巾干廾弋弓æ‰�丑ä¸�ä¸�中丰丹之尹予云井互五亢ä»�什仃仆仇ä»�今介仄元å…�內六兮公冗凶��\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"������������������������������������������������分切刈勻勾勿化匹å�ˆå�‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�…å�žåŽ„å�‹å�Šå��壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎������支文斗斤方日曰月木欠止歹毋比毛æ°�æ°´ç�«çˆªçˆ¶çˆ»ç‰‡ç‰™ç‰›çŠ¬çŽ‹ï¿½ï¿½ï¿½ï¿½ï¿½ä¸™ä¸–ä¸•ä¸”ä¸˜ä¸»ä¹�ä¹�乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北åŒ�仟å�Šå�‰å�¡å� å�¯å�®åŽ»å�¯å�¤å�³å�¬å�®å�©å�¨å�¼å�¸å�µå�«å�¦å�ªå�²å�±å�°å�¥å�­å�»å››å›šå¤–央失奴奶孕它尼巨巧左市布平幼å¼�弘弗必戊打扔扒扑斥旦朮本未末札正æ¯�æ°‘æ°�æ°¸æ±�汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴��\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"������������������������������������������������立丞丟乒乓乩亙交亦亥�������仿伉伙伊伕ä¼�ä¼�休ä¼�仲件任仰仳份ä¼�伋光兇兆先全共å†�冰列������刑划刎刖劣匈匡匠å�°å�±å�‰å��å�Œå�Šå��å��å�‹å�„å�‘å��å�ˆå�ƒå�Žå�†å�’因�����回å›�圳地在圭圬圯圩夙多夷夸妄奸妃好她如å¦�字存宇守宅安寺尖屹州帆并年å¼�弛忙忖戎戌æˆ�æˆ�扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖æ±�汗汙江池æ±�汕污汛æ±�汎ç�°ç‰Ÿç‰�百竹米糸缶羊羽è€�考而耒耳è�¿è‚‰è‚‹è‚Œè‡£è‡ªè‡³è‡¼èˆŒèˆ›èˆŸè‰®è‰²è‰¾è™«è¡€è¡Œè¡£è¥¿é˜¡ä¸²äº¨ä½�ä½�佇佗佞伴佛何估ä½�佑伽伺伸佃佔似但��\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"������������������������������������������������佣作你伯低伶余ä½�佈佚�������兌克å…�兵冶冷別判利刪刨劫助努劬匣å�³å�µå��å�­å�žå�¾å�¦å‘Žå�§å‘†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å‘ƒå�³å‘ˆå‘‚å�›å�©å‘Šå�¹å�»å�¸å�®å�µå�¶å� å�¼å‘€å�±å�«å�Ÿå�¬å›ªå›°å›¤å›«å�Šå�‘�����å�€å��å�‡å�Žåœ¾å��å��圻壯夾å¦�妒妨妞妣妙妖å¦�妤妓妊妥å­�孜孚孛完宋å®�尬局å±�å°¿å°¾å²�岑岔岌巫希åº�庇床廷弄弟彤形彷役忘忌志å¿�忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更æ�Ÿæ�Žæ��æ��æ�‘æ�œæ�–æ�žæ�‰æ�†æ� æ�“æ�—æ­¥æ¯�求汞沙æ²�沈沉沅沛汪決æ²�汰沌汨沖沒汽沃汲汾汴沆汶æ²�沔沘��\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"������������������������������������������������沂ç�¶ç�¼ç�½ç�¸ç‰¢ç‰¡ç‰ ç‹„狂�������玖甬甫男甸皂盯矣ç§�秀禿究系罕肖肓è‚�肘肛肚育良芒芋èŠ�見������角言谷豆豕è²�赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里�����防阮阱阪阬並乖乳事些亞享京佯ä¾�ä¾�佳使佬供例來侃佰併侈佩佻侖佾ä¾�侑佺兔兒兕兩具其典冽函刻券刷刺到刮制å‰�劾劻å�’å�”å�“å�‘å�¦å�·å�¸å�¹å�–å�”å�—味呵咖呸咕咀呻呷咄咒咆呼å’�呱呶和咚呢周咋命咎固垃å�·å�ªå�©å�¡å�¦å�¤å�¼å¤œå¥‰å¥‡å¥ˆå¥„奔妾妻委妹妮姑姆å§�å§�始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚��\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"������������������������������������������������屈居屆岷岡岸岩岫岱岳�������帘帚帖帕帛帑幸庚店府底庖延弦弧弩往å¾�彿彼å¿�忠忽念忿æ€�������怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披�����拓拔拋拈抨抽押æ‹�拙拇æ‹�抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀æ˜�昕昊昇æœ�朋æ�­æž‹æž•æ�±æžœæ�³æ�·æž‡æž�æž—æ�¯æ�°æ�¿æž‰æ�¾æž�æ�µæžšæž“æ�¼æ�ªæ�²æ¬£æ­¦æ­§æ­¿æ°“氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油æ³�沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗ç‹�玩玨玟玫玥甽ç–�疙疚的盂盲直��\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"������������������������������������������������知矽社祀ç¥�秉秈空穹竺�������糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾èˆ�芳èŠ�芙芭芽芟芹花������芬芥芯芸芣芰芾芷虎虱åˆ�表軋迎返近邵邸邱邶采金長門阜陀�����阿阻附陂隹雨é�’é�žäºŸäº­äº®ä¿¡ä¾µä¾¯ä¾¿ä¿ ä¿‘ä¿�ä¿�促侶俘俟俊俗侮ä¿�俄係俚俎俞侷兗冒冑冠剎剃削å‰�剌剋則勇勉勃å‹�åŒ�å�—å�»åŽšå�›å’¬å“€å’¨å“Žå“‰å’¸å’¦å’³å“‡å“‚咽咪å“�哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契å¥�奎å¥�姜姘姿姣姨娃姥姪姚姦å¨�姻孩宣宦室客宥å°�屎å±�å±�屋峙峒巷å¸�帥帟幽庠度建弈弭彥很��\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"������������������������������������������������待徊律徇後徉怒æ€�怠急�������怎怨æ��æ�°æ�¨æ�¢æ�†æ�ƒæ�¬æ�«æ�ªæ�¤æ‰�拜挖按拼拭æŒ�拮拽指拱拷拯括������拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔æŸ�柬架�����枯柵柩柯柄柑枴柚查枸æŸ�柞柳枰柙柢æŸ�柒歪殃殆段毒毗氟泉洋洲洪æµ�津洌洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷ç�ŠçŽ»çŽ²ç��ç�€çŽ³ç”šç”­ç•�界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅çœ�盹相眉看盾盼眇矜砂研砌ç �祆祉祈祇禹禺科秒秋穿çª�竿竽籽紂紅紀紉紇約紆缸��\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"������������������������������������������������美羿è€�è€�耑耶胖胥胚胃�������胄背胡胛胎胞胤èƒ�致舢苧范茅苣苛苦茄若茂茉苒苗英èŒ�苜苔������苑苞苓苟苯茆è™�虹虻虺è¡�è¡«è¦�觔計訂訃貞負赴赳趴è»�軌述迦�����迢迪迥迭迫迤迨郊郎éƒ�郃酋酊é‡�é–‚é™�陋陌é™�é�¢é�©éŸ‹éŸ­éŸ³é �風飛食首香乘亳倌å€�倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢å‡�凌准凋剖剜剔剛å‰�匪å�¿åŽŸåŽ�å�Ÿå“¨å”�å”�唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽å”�圃圄埂埔埋埃堉å¤�套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉��\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"������������������������������������������������孫屘宰害家宴宮宵容宸�������射屑展å±�峭峽峻峪峨峰島å´�峴差席師庫庭座弱徒徑å¾�æ�™æ�£æ�¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ��æ�•æ�­æ�©æ�¯æ‚„悟悚æ‚�悔悌悅悖扇拳挈拿æ�ŽæŒ¾æŒ¯æ�•æ�‚æ�†æ��æ�‰æŒºï¿½ï¿½ï¿½ï¿½ï¿½æ��挽挪挫挨æ��æ�Œæ•ˆæ•‰æ–™æ—�旅時晉æ™�晃晒晌晅æ™�書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴æ¡�桀格桃株桅栓栘æ¡�殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈çƒ�爹特狼狹狽狸狷玆ç�­ç�‰ç�®ç� ç�ªç�žç•”ç•�畜畚留疾病症疲疳疽疼疹痂疸皋皰益ç›�盎眩真眠眨矩砰砧砸��\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"������������������������������������������������ç �破砷砥砭砠砟砲祕ç¥��������祠祟祖神ç¥�祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索������純ç´�ç´•ç´šç´œç´�紙紛缺罟羔翅ç¿�耆耄耘耕耙耗耽耿胱脂胰脅胭�����胴脆胸胳脈能脊胼胯臭臬舀èˆ�航舫舨般芻茫è�’è�”è�ŠèŒ¸è��è�‰èŒµèŒ´è��茲茹茶茗è�€èŒ±èŒ¨è�ƒè™”蚊蚪蚓蚤蚩蚌蚣蚜衰衷è¢�袂衽衹記è¨�討訌訕訊託訓訖è¨�訑豈豺豹財貢起躬軒軔è»�è¾±é€�逆迷退迺迴逃追逅迸邕郡éƒ�郢酒é…�酌釘é‡�釗釜釙閃院陣陡陛é™�除陘陞隻飢馬骨高鬥鬲鬼乾å�ºå�½å�œå�‡å�ƒå�Œå�šå�‰å�¥å�¶å�Žå�•å�µï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"������������������������������������������������å�´å�·å��å€�å�¯å�­å…œå†•凰剪�������副勒務勘動åŒ�åŒ�匙匿å�€åŒ¾å�ƒæ›¼å•†å•ªå•¦å•„啞啡啃啊唱啖å•�啕唯������啤唸售啜唬啣唳å•�啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶�����å©�婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜å±�崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜æ�¿æ‚£æ‚‰æ‚ æ‚¨æƒ‹æ‚´æƒ¦æ‚½æƒ…悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控æ�²æŽ–探接æ�·æ�§æŽ˜æŽªæ�±æŽ©æŽ‰æŽƒæŽ›æ�«æŽ¨æŽ„授掙採掬排æŽ�掀æ�»æ�©æ�¨æ�ºæ•�敖救教敗啟æ•�敘敕敔斜斛斬æ—���\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"������������������������������������������������旋旌旎æ™�晚晤晨晦晞曹�������勗望æ¢�梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔æ¢�梨梟梡梂欲殺������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒�����渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽çŠ�猜猛猖猓猙率ç�…ç�Šç�ƒç�†ç�¾ç��瓠瓶瓷甜產略畦畢異ç–�痔痕疵痊ç—�皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜è�Šè�†è„¯è„–脣脫脩脰脤舂舵舷舶船莎莞莘è�¸èŽ¢èŽ–èŽ½èŽ«èŽ’èŽŠèŽ“ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"������������������������������������������������莉莠è�·è�»è�¼èŽ†èŽ§è™•å½ªè›‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è›€èš¶è›„èšµè›†è›‹èš±èš¯è›‰è¡“è¢žè¢ˆè¢«è¢’è¢–è¢�袋覓è¦�訪è¨�訣訥許設訟������訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這é€�通逗連速é€�é€�逕逞�����造é€�逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢å‚�傅備傑傀傖傘傚最凱割剴創剩勞å‹�å‹›å�šåŽ¥å•»å–€å–§å•¼å–Šå–�喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙åœ�堯堪場堤堰報堡å �堠壹壺奠婷媚婿媒媛媧孳孱寒富寓å¯�尊尋就嵌åµ�崴嵇巽幅帽幀幃幾廊��\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"������������������������������������������������å»�廂廄弼彭復循徨惑惡�������悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌æ��æ�€æ�©æ�‰æ�†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ��æ�’æ�£æ��æ�¡æ�–æ�­æ�®æ�¶æ�´æ�ªæ�›æ‘’æ�šæ�¹æ•žæ•¦æ•¢æ•£æ–‘æ–�斯普晰晴晶�����景暑智晾晷曾替期æœ�棺棕棠棘棗椅棟棵森棧棹棒棲棣棋æ£�æ¤�椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴æ¹�渺測湃æ¸�渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩ç�ºç�ªç�³ç�¢ç�¥ç�µç�¶ç�´ç�¯ç�›ç�¦ç�¨ç”¥ç”¦ç•«ç•ªç—¢ç—›ç—£ç—™ç—˜ç—žç— ç™»ç™¼çš–皓皴盜ç��短ç¡�硬硯��\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"������������������������������������������������ç¨�稈程稅稀窘窗窖童竣�������等策筆ç­�ç­’ç­”ç­�ç­‹ç­�筑粟粥絞çµ�絨絕紫絮絲絡給絢絰絳善翔������翕耋è�’肅腕腔腋腑腎脹腆脾腌腓腴舒舜è�©è�ƒè�¸è��è� è�…è�‹è��è�¯ï¿½ï¿½ï¿½ï¿½ï¿½è�±è�´è‘—è�Šè�°è�Œè�Œè�½è�²è�Šè�¸è�Žè�„è�œè�‡è�”è�Ÿè™›è›Ÿè›™è›­è›”蛛蛤è›�蛞街è£�裂袱覃視註詠評詞証è©�詔詛è©�詆訴診訶詖象貂貯貼貳貽è³�費賀貴買貶貿貸越超è¶�è·Žè·�跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥é‡�鈔鈕鈣鈉鈞éˆ�éˆ�鈇鈑閔é–�開閑間閒閎隊階隋陽隅隆éš�陲隄é›�雅雄集雇雯雲韌項順須飧飪��\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"������������������������������������������������飯飩飲飭馮馭黃é»�黑亂�������傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜������嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋�����奧å«�嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚æ„�慈感想愛惹æ„�愈慎慌慄æ…�愾愴愧æ„�愆愷戡戢æ�“æ�¾æ�žæ�ªæ�­æ�½æ�¬æ��æ�œæ�”æ��æ�¶æ�–æ�—æ�†æ•¬æ–Ÿæ–°æš—暉暇暈暖暄暘æš�會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆æ¥�楣楛歇歲毀殿毓毽溢溯滓溶滂æº�æº�滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥��\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"������������������������������������������������煞煆煨煖爺牒猷ç�…猿猾�������瑯瑚瑕瑟瑞ç‘�ç�¿ç‘™ç‘›ç‘œç•¶ç•¸ç˜€ç—°ç˜�痲痱痺痿痴痳盞盟ç�›ç�«ç�¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�žç�£ç�¹ç�ªç�¬ç�œç�¥ç�¨ç�¢çŸ®ç¢Žç¢°ç¢—碘碌碉硼碑碓硿祺祿ç¦�è�¬ç¦½ç¨œï¿½ï¿½ï¿½ï¿½ï¿½ç¨šç¨ ç¨”稟稞窟窠筷節筠筮筧粱粳粵經絹綑ç¶�ç¶�絛置罩罪署義羨群è�–è�˜è‚†è‚„腱腰腸腥腮腳腫腹腺腦舅艇蒂葷è�½è�±è‘µè‘¦è‘«è‘‰è‘¬è‘›è�¼è�µè‘¡è‘£è‘©è‘­è‘†è™žè™œè™Ÿè›¹èœ“蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘è£�裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪��\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"������������������������������������������������跤跦躲較載軾輊辟農é�‹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é�Šé�“é�‚é�”逼é�•é��é�‡é��é�Žé��é�‘逾é��鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾������鉛鉋鉤鉑鈴鉉é‰�鉅鈹鈿鉚閘隘隔隕é›�雋雉雊雷電雹零é�–é�´é�¶ï¿½ï¿½ï¿½ï¿½ï¿½é �頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕åƒ�僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉å˜�嘎嗷嘖嘟嘈å˜�嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察å°�屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧æ�´æ‘­æ‘»æ•²æ–¡ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"������������������������������������������������旗旖暢暨æš�榜榨榕æ§�榮�������槓構榛榷榻榫榴æ§�æ§�榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬������æ¼�漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬æ¼�滲滌滷熔熙煽熊熄熒�����爾犒犖ç�„ç��瑤瑣瑪瑰瑭甄疑瘧ç˜�瘋瘉瘓盡監瞄ç�½ç�¿ç�¡ç£�碟碧碳碩碣禎ç¦�ç¦�種稱窪窩竭端管箕箋筵算ç®�ç®”ç®�箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟è�žè�šè‚‡è…�膀è†�膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓è’�蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘è�•蜷蜩裳褂裴裹裸製裨褚裯��\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"������������������������������������������������誦誌語誣èª�誡誓誤說誥�������誨誘誑誚誧豪è²�貌賓賑賒赫趙趕跼輔輒輕輓辣é� é�˜é�œé�£é�™é�žï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é�¢é��é�›é„™é„˜é„žé…µé…¸é…·é…´é‰¸éŠ¬éŠ€éŠ…éŠ˜éŠ–é‰»éŠ“éŠœéŠ¨é‰¼éŠ‘é–¡é–¨é–©é–£ï¿½ï¿½ï¿½ï¿½ï¿½é–¥é–¤éš™éšœéš›é›Œé›’éœ€é�¼éž…韶頗領颯颱餃餅餌餉é§�骯骰髦é­�魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉åŠ�劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履å¶�嶔幢幟幡廢廚廟å»�廣廠彈影德徵慶慧慮æ…�慕憂慼慰慫慾憧æ†�憫憎憬憚憤憔憮戮摩摯摹撞撲撈æ’�撰��\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"������������������������������������������������撥撓撕撩撒撮播撫撚撬�������撙撢撳敵敷數暮暫暴暱樣樟槨æ¨�樞標槽模樓樊槳樂樅槭樑æ­�������歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟�����熬熱熨牖犛ç�Žç�—瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼ç£�稿稼穀稽稷稻窯窮箭箱範箴篆篇ç¯�箠篌糊締練緯緻緘緬ç·�編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜è†�膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂è�´è�¶è� è�¦è�¸è�¨è�™è�—è�Œè�“è¡›è¡�è¤�複褒褓褕褊誼諒談諄誕請諸課諉諂調��\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"������������������������������������������������誰論è«�誶誹諛豌豎豬賠�������賞賦賤賬賭賢賣賜質賡赭趟趣踫è¸�è¸�踢è¸�踩踟踡踞躺è¼�輛輟������輩輦輪輜輞輥é�©é�®é�¨é�­é�·é„°é„­é„§é„±é†‡é†‰é†‹é†ƒé‹…銻銷鋪鋤é‹�銳�����銼鋒鋇鋰銲閭閱霄霆震霉é� éž�éž‹éž�頡頫頜颳養餓餒餘é§�é§�駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔å„�儕冀冪å‡�劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶å£�墾壇壅奮å¬�嬴學寰導彊憲憑憩憊æ‡�憶憾懊懈戰擅æ“�擋撻撼據擄擇擂æ“�撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇��\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"������������������������������������������������樵機橈歙歷氅濂澱澡濃�������澤æ¿�澧澳激澹澶澦澠澴熾燉ç‡�燒燈燕熹燎燙燜燃燄ç�¨ç’œç’£ç’˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç’Ÿç’žç“¢ç”Œç”�瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦ç©�穎穆穌穋窺篙�����簑築篤篛篡篩篦糕糖縊縑縈縛縣縞ç¸�縉ç¸�罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢èž�衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾è¬�謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦é�µé�´é�¸é�²é�¼é�ºé„´é†’錠錶鋸錳錯錢鋼錫錄錚éŒ�錦錡錕錮錙閻隧隨險雕霎霑霖éœ�霓éœ�é�›é�œé�¦éž˜é °ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"������������������������������������������������頸頻頷頭頹頤é¤�館餞餛�������餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔é¾�龜優償儡儲勵������嚎嚀åš�嚅嚇åš�壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇�����懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗æª�檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆ç�°ç�²ç’©ç’°ç’¦ç’¨ç™†ç™‚癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯ç¤�禧禪穗窿簇ç°�篾篷簌篠糠糜糞糢糟糙ç³�縮績繆縷縲繃縫總縱繅ç¹�縴縹繈縵縿縯罄翳翼è�±è�²è�°è�¯è�³è‡†è‡ƒè†ºï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"������������������������������������������������臂臀膿膽臉膾臨舉艱薪�������薄蕾薜薑薔薯薛薇薨薊薦虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸������褽覬謎謗謙講謊謠è¬�謄è¬�è±�谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾�����轂轅輿é�¿é�½é‚„é‚�邂邀鄹醣醞醜é��鎂錨é�µé�Šé�¥é�‹éŒ˜é�¾é�¬é�›é�°é�šé�”闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵é¨�駿鮮鮫鮪鮭鴻鴿麋é»�點黜é»�黛鼾齋å�¢åš•嚮壙壘嬸å½�懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑ç€�燻燼燾燸ç�·ç�µç’§ç’¿ç”•癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織��\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"������������������������������������������������繕繞繚繡繒繙罈翹翻è�·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è�¶è‡�è‡�舊è—�è–©è—�è—�藉薰薺薹蟯蟬蟲蟠覆覲觴謨謹謬謫è±�贅蹙������蹣蹦蹤蹟蹕軀轉è½�邇邃邈醫醬é‡�鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔�����闖é—�闕離雜雙雛雞霤鞣鞦鞭韹é¡�é¡�題顎顓颺餾餿餽餮馥騎é«�鬃鬆é­�é­Žé­�鯊鯉鯽鯈鯀鵑éµ�鵠黠鼕鼬儳嚥嚨壞壟壢寵é¾�廬懲懷懶懵攀æ”�æ› æ›�æ«¥æ«�櫚櫓瀛瀟瀨瀚ç€�瀕瀘爆çˆ�牘犢ç�¸ç�ºç’½ç“Šç“£ç–‡ç–†ç™Ÿç™¡çŸ‡ç¤™ç¦±ç©«ç©©ç°¾ç°¿ç°¸ç°½ç°·ç±€ç¹«ç¹­ç¹¹ç¹©ç¹ªç¹³ç¾…羶羹羸臘藩è—�藪藕藤藥藷蟻蠅è �蟹蟾襠襟襖襞è­�譜識證譚��\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"������������������������������������������������譎è­�譆譙贈贊蹼蹲躇蹶�������蹬蹺蹴轔轎辭邊邋醱醮é�¡é�‘é�Ÿé�ƒé�ˆé�œé��é�–é�¢é��é�˜é�¤é�—é�¨é—œéš´ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é›£éœªéœ§é�¡éŸœéŸ»é¡žé¡˜é¡›é¢¼é¥…饉騖騙é¬�鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗�����麓麴勸嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲çˆ�ç�»ç“�癢癥礦礪礬礫竇競籌籃ç±�糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫è´�è´�躉èº�躅躂醴釋é�˜é�ƒé�½é—¡éœ°é£„饒饑馨騫騰騷騵鰓é°�鹹麵黨鼯齟齣齡儷儸å›�囀囂夔屬å·�懼懾æ”�攜斕曩櫻欄櫺殲ç�Œçˆ›çŠ§ç“–ç“”ç™©çŸ“ç±�çº�續羼��\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"������������������������������������������������蘗蘭蘚蠣蠢蠡蠟襪襬覽�������譴護譽贓躊èº�躋轟辯醺é�®é�³é�µé�ºé�¸é�²é�«é—¢éœ¸éœ¹éœ²éŸ¿é¡§é¡¥é¥—驅������驃驀騾é«�魔魑鰭鰥鶯鶴鷂鶸éº�黯鼙齜齦齧儼儻囈囊囉孿巔巒�����彎懿攤權歡ç�‘ç�˜çŽ€ç“¤ç–Šç™®ç™¬ç¦³ç± ç±Ÿè�¾è�½è‡Ÿè¥²è¥¯è§¼è®€è´–贗躑躓轡酈鑄鑑鑒霽霾韃éŸ�顫饕驕é©�髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬æ¬�瓚竊籤籣籥纓纖纔臢蘸蘿蠱變é‚�é‚�鑣鑠鑤é�¨é¡¯é¥œé©šé©›é©—髓體髑鱔鱗鱖鷥麟黴囑壩攬ç�žç™±ç™²çŸ—ç½�羈蠶蠹衢讓讒讖艷贛釀鑪é�‚é�ˆé�„韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷��\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"������������������������������������������������齲廳欖ç�£ç±¬ç±®è »è§€èº¡é‡��������鑲鑰顱饞髖鬣黌ç�¤çŸšè®šé‘·éŸ‰é©¢é©¥çºœè®œèºªé‡…鑽鑾鑼鱷鱸黷豔鑿������鸚爨驪鬱鸛鸞籲ソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ������ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶÐ�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ�⇧↸↹��䅚ク刂�冈�������������\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"������������������������������������������������乂乜凵匚厂万丌乇äº�囗�������屮彳ä¸�冇与丮亓仂仉仈冘勼å�¬åŽ¹åœ å¤ƒå¤¬å°�巿旡殳毌气爿丱丼������仨仜仩仡ä»�仚刌刉匜å�Œåœ¢åœ£å¤—夯å®�宄尒尻屴屳帄庀庂忉戉æ‰������氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈ä¼�伂伅伢伓伄仴伒冱刓åˆ�劦匢匟å��厊å�‡å›¡å›Ÿåœ®åœªåœ´å¤¼å¦€å¥¼å¦…奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔å¿�扜扞扤扡扦扢扙扠扚扥攷旯旮朾朹朸朻机朿朼朳氘汆汒汜æ±�汊汔汋汌ç�±ç‰žçŠ´çŠµçŽŽç”ªç™¿ç©µç½‘è‰¸è‰¼èŠ€è‰½è‰¿è™�襾邙邗邘邛邔阢阤阠阣佖伻佢佉体��\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"������������������������������������������������佤伾佧佒佟ä½�佘伭伳伿�������佡å†�冹刜刞刡劭劮匉å�£å�²åŽŽåŽ�å�°å�·å�ªå‘”å‘…å�™å�œå�¥å�˜å�½å‘�å‘�å�¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�¤å‘‡å›®å›§å›¥å��å�…å�Œå�‰å�‹å�’夆奀妦妘妠妗妎妢å¦�å¦�妧妡宎宒尨�����尪å²�å²�岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈åº�å¼…å¼�彸彶忒忑å¿�忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎æŠ�抔抇扱扻扺扰æŠ�抈扷扽扲扴旰旴旳旲旵æ�…æ�‡æ�™æ�•æ�Œæ�ˆæ��æ��æ�šæ�‹æ¯�氙氚汸汧汫沄沋æ²�汱汯汩沚汭沇沕沜汦汳汥汻沎ç�´ç�ºç‰£çŠ¿çŠ½ç‹ƒç‹†ç‹�犺狅玕玗玓玔玒町甹疔疕çš�礽耴肕肙è‚�肒肜èŠ�èŠ�芅芎芑芓��\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"������������������������������������������������芊芃芄豸迉辿邟邡邥邞�������邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹ä¾�佸ä¾�������侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿å’�咑�����咂咈呫呺呾呥呬呴呦å’�呯呡呠咘呣呧呤囷囹å�¯å�²å�­å�«å�±å�°å�¶åž€å�µå�»å�³å�´å�¢å�¨å�½å¤Œå¥…妵妺å§�姎妲姌å§�妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧å²�岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢æ€�æ€�怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰��\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"������������������������������������������������抸攽斨斻昉旼昄昒昈旻�������昃昋æ˜�昅旽昑æ˜�曶朊枅æ�¬æžŽæž’æ�¶æ�»æž˜æž†æž„æ�´æž�枌æ�ºæžŸæž‘枙枃������æ�½æž�æ�¸æ�¹æž”欥殀歾毞æ°�沓泬泫泮泙沶泔沭泧沷æ³�泂沺泃泆泭�����泲泒æ³�沴沊æ²�沀泞泀洰æ³�泇沰泹æ³�泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬çŽ�ç“�瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵è‚�肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓è¿�迖迕迗邲邴邯邳邰阹阽阼阺陃ä¿�俅��\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"������������������������������������������������俓侲俉俋ä¿�俔俜俙侻侳�������俛俇俖侺俀侹俬剄剉勀勂匽å�¼åŽ—åŽ–åŽ™åŽ˜å’ºå’¡å’­å’¥å“�哃èŒ�咷咮������哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗åž�垛垔垘åž�垙垥垚�����垕壴å¤�奓姡姞姮娀姱å§�姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌å³�峘峌峗峋峛峞峚峉峇峊峖峓峔å³�峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹æ�”æ�²æ�žæ�…æ�“æ�‡æ�‰æ�›æ�Œæ�€æ�‚æ�Ÿæ€¤æ�„æ�˜æ�¦æ�®æ‰‚扃æ‹�æŒ�挋拵挎挃拫拹æŒ�挌拸拶挀挓挔拺挕拻拰æ•�敃斪斿昶昡昲昵昜昦昢昳昫昺æ˜�昴昹昮æœ�æœ�æŸ�柲柈��\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"������������������������������������������������枺柜枻柸柘柀枷柅柫柤�������柟枵æŸ�枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪������柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀�����æ´�浂æ´�洘洷洃æ´�浀洇洠洬洈洢洉æ´�炷炟炾炱炰炡炴炵炩ç‰�牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅ç�Œç�‚ç�ˆç�…玹玶玵玴ç�«çŽ¿ç�‡ç޾ç�ƒç�†çޏç�‹ç“¬ç“®ç”®ç•‡ç•ˆç–§ç–ªç™¹ç›„眈眃眄眅眊盷盻盺矧矨砆砑砒砅ç �ç �砎砉砃砓祊祌祋祅祄秕ç§�ç§�秖秎窀穾竑笀ç¬�籺籸籹籿粀ç²�紃紈ç´�罘羑ç¾�羾耇耎è€�耔耷胘胇胠胑胈胂èƒ�胅��\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"������������������������������������������������胣胙胜胊胕胉èƒ�胗胦èƒ��������臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺������苳苭虷虴虼虳è¡�衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇�����郋郈釔釓陔é™�陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢å‹�匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋åœ�圂埌堲埕埒垺埆垽垼垸垶垿埇åŸ�åž¹åŸ�夎奊娙娖娭娮娕å¨�娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧æ����\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"������������������������������������������������æ�šæ�§æ��悢悈悀悒æ‚�æ‚�悃�������悕悛悗悇悜悎戙扆拲æŒ�æ�–挬æ�„æ�…挶æ�ƒæ�¤æŒ¹æ�‹æ�ŠæŒ¼æŒ©æ��挴æ�˜æ�”������æ�™æŒ­æ�‡æŒ³æ�šæ�‘挸æ�—æ�€æ�ˆæ•Šæ•†æ—†æ—ƒæ—„旂晊晟晇晑朒朓栟栚桉栲�����栳栻桋æ¡�栖栱栜栵栫栭栯桎桄栴æ �栒栔栦栨栮æ¡�栺栥栠欬欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶æ´�浡涒浘浢浭浯涑æ¶�淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵æ¶�烜烓烑çƒ�烋缹烢烗烒烞烠烔çƒ�烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻çŒ�ç�“ç�™ç�¥ç�–玼ç�§ç�£ç�©ç�œç�’ç�›ç�”ç��ç�šç�—ç�˜ç�¨ç“žç“Ÿï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"������������������������������������������������瓴瓵甡畛畟疰ç—�疻痄痀�������疿疶疺皊盉çœ�眛çœ�眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡������砩砳砪砱祔祛ç¥�祜祓祒祑秫秬秠秮秭秪秜秞ç§�窆窉窅窋窌窊�����窇竘ç¬�笄笓笅ç¬�笈笊笎笉笒粄粑粊粌粈ç²�ç²…ç´žç´�紑紎紘紖紓紟紒ç´�紌罜罡罞罠ç½�罛羖羒翃翂翀耖耾耹胺胲胹胵è„�胻脀èˆ�舯舥茳茭è�„茙è�‘茥è�–茿è��茦茜茢è�‚è�ŽèŒ›èŒªèŒˆèŒ¼è��茖茤茠茷茯茩è�‡è�…è�Œè�“茞茬è�‹èŒ§è�ˆè™“虒蚢蚨蚖èš�蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎èš�èš�蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼��\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"������������������������������������������������訒豇豗豻貤貣赶赸趵趷�������趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤é…�é…Žé…�������釕釢釚陜陟隼飣髟鬯乿å�°å�ªå�¡å�žå� å�“å�‹å��å�²å�ˆå��å��å�›å�Šå�¢å€•�����å�…å�Ÿå�©å�«å�£å�¤å�†å�€å�®å�³å�—å�‘å‡�剫剭剬剮勖勓匭厜啵啶唼å•�å•�唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳åŸ�堇埮埣埲埥埬埡堎埼å �埧å �堌埱埩埰å �堄奜婠婘婕婧婞娸娵婭å©�婟婥婬婓婤婗婃å©�婒婄婛婈媎娾å©�娹婌婰婩婇婑婖婂婜孲孮å¯�寀屙崞崋å´�崚崠崌崨å´���\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"������������������������������������������������崦崥å´�崰崒崣崟崮帾帴�������庱庴庹庲庳弶弸徛徖徟悊æ‚�悆悾悰悺惓惔æƒ�惤惙æƒ�惈悱惛悷������惊悿惃æƒ�惀挲æ�¥æŽŠæŽ‚æ�½æŽ½æŽžæŽ­æŽ�掗掫掎æ�¯æŽ‡æŽ�æ�®æŽ¯æ�µæŽœæ�­æŽ®ï¿½ï¿½ï¿½ï¿½ï¿½æ�¼æŽ¤æŒ»æŽŸæ�¸æŽ…æŽ�掑æŽ�æ�°æ•“æ—�晥晡晛晙晜晢朘桹梇æ¢�梜桭桮梮梫楖桯梣梬梩桵桴梲æ¢�桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑æ®�æ®�殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜æ·�淛淴淊涽淭淰涺淕淂æ·�æ·‰æ·�淲淓淽淗æ·�淣涻烺ç„�烷焗烴焌烰焄烳ç„�烼烿焆焓焀烸烶焋焂焎��\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"������������������������������������������������牾牻牼牿çŒ�猗猇猑猘猊�������猈狿çŒ�猞玈ç�¶ç�¸ç�µç�„ç��ç�½ç�‡ç�€ç�ºç�¼ç�¿ç�Œç�‹ç�´ç�ˆç•¤ç•£ç—Žç—’ç—�痋������痌痑ç—�çš�皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉ç¡�硊硌砦硅ç¡������祤祧祩祪祣祫祡离秺秸秶秷çª�窔çª�笵笻笴笥笰笢笤笳笘笪ç¬�笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩çµ�絇紾紿絊紻紨罣羕羜ç¾�羛翊翋ç¿�ç¿�翑翇ç¿�翉耟耞耛è�‡è�ƒè�ˆè„˜è„¥è„™è„›è„­è„Ÿè„¬è„žè„¡è„•è„§è„�脢舑舸舳舺舴舲艴èŽ�莣莨èŽ�è�ºè�³èޤè�´èŽ�èŽ�莕莙è�µèŽ”èŽ©è�½èŽƒèŽŒèŽ�莛莪莋è�¾èŽ¥èŽ¯èŽˆèŽ—èŽ°è�¿èŽ¦èŽ‡èŽ®è�¶è™™ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"������������������������������������������������虖蚿蚷蛂è›�蛅蚺蚰蛈蚹�������蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬������袌袓袎覂觖觙觕訰訧訬訞谹谻豜è±�豽貥赽赻赹趼跂趹趿è·�軘�����軞è»�軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿é�ªé „飥馗傛傕傔傞傋傣傃傌傎å‚�å�¨å‚œå‚’傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈å–�å–µå–�喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦��\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"������������������������������������������������婼媥媬媕媮娷媄媊媗媃�������媋媩婻婽媌媜åª�媓åª�寪å¯�寋寔寑寊寎尌尰崷嵃嵫åµ�嵋崿崵嵑������嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄å¹�彘徦徥徫惉悹惌�����惢惎惄愔惲愊愖愅惵愓惸惼惾æƒ�愃愘æ„�æ„�惿愄愋扊掔掱掰æ�Žæ�¥æ�¨æ�¯æ�ƒæ’�æ�³æ�Šæ� æ�¶æ�•æ�²æ�µæ‘¡æ�ŸæŽ¾æ��æ�œæ�„æ�˜æ�“æ�‚æ�‡æ�Œæ�‹æ�ˆæ�°æ�—æ�™æ”²æ•§æ•ªæ•¤æ•œæ•¨æ•¥æ–Œæ–�æ–žæ–®æ—�旒晼晬晻暀晱晹晪晲æœ�椌棓椄棜椪棬棪棱æ¤�棖棷棫棤棶椓æ¤�棳棡椇棌椈楰梴椑棯棆椔棸æ£�棽棼棨椋椊椗棎棈æ£�棞棦棴棑椆棔棩椕椥棇欹欻��\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"������������������������������������������������欿欼殔殗殙殕殽毰毲毳�������氰淼湆湇渟湉溈渼渽湅湢渫渿æ¹�æ¹�湳渜渳湋湀湑渻渃渮湞湨������湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯�����烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌ç�®ç�¬ç�°ç�«ç�–ç�šç�¡ç�­ç�±ç�¤ç�£ç��ç�©ç� ç�²ç“»ç”¯ç•¯ç•¬ç—§ç—šç—¡ç—¦ç—�痟痤痗皕皒盚ç�†ç�‡ç�„ç��ç�…ç�Šç�Žç�‹ç�ŒçŸžçŸ¬ç¡ ç¡¤ç¡¥ç¡œç¡­ç¡±ç¡ªç¡®ç¡°ç¡©ç¡¨ç¡žç¡¢ç¥´ç¥³ç¥²ç¥°ç¨‚稊稃稌稄窙竦竤筊筇筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪çµ�絭絜絫絒絔絩絑絟��\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"������������������������������������������������絎缾缿罥罦羢羠羡翗è�‘�������è��è��胾胔腃腊腒è…�腇脽è…�脺臦臮臷臸臹舄舼舽舿艵茻è��è�¹è�£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è�€è�¨è�’è�§è�¤è�¼è�¶è��è�†è�ˆè�«è�£èŽ¿è��è��è�¥è�˜è�¿è�¡è�‹è�Žè�–è�µè�‰è�‰è�������è�žè�‘è�†è�‚è�³è�•è�ºè�‡è�‘è�ªè�“莚è�ƒè�¬è�®è�„è�»è�—è�¢è�›è�›è�¾è›˜è›¢è›¦è›“蛣蛚蛪è›�蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲è¤�裉覕覘覗è§�觚觛詎è©�訹詙詀詗詘詄詅詒詈詑詊詌è©�豟è²�貀貺貾貰貹貵趄趀趉跘跓è·�跇跖跜è·�跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻é„�鄀��\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"������������������������������������������������鄇鄅鄃酡酤酟酢酠éˆ�鈊�������鈥鈃鈚鈦éˆ�鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻é–�é–Œé–�隇陾������隈隉隃隀雂雈雃雱雰é�¬é�°é�®é ‡é¢©é£«é³¦é»¹äºƒäº„亶傽傿僆傮僄僊�����傴僈僂傰åƒ�傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌å—�å—‹å—Šå—�嗀嗔嗄嗩喿嗒å–�å—�嗕嗢嗖嗈嗲å—�嗙嗂圔塓塨塤å¡�å¡�塉塯塕塎å¡�塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶å«�媹åª�寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰å¹�幎幊å¹�幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯æ…�愩慀戠酨戣戥戤æ�…æ�±ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"������������������������������������������������æ�«æ��æ�’æ�‰æ� æ�¤æ�³æ‘ƒæ�Ÿæ�•�������æ�˜æ�¹æ�·æ�¢æ�£æ�Œæ�¦æ�°æ�¨æ‘�æ�µæ�¯æ�Šæ�šæ‘€æ�¥æ�§æ�‹æ�§æ�›æ�®æ�¡æ�Žæ•¯æ–’旓������暆暌暕æš�暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉�����椵楬椳椽楥棰楸椴楩楀楯楄楶楘æ¥�楴楌椻楋椷楜æ¥�楑椲楒椯楻椼歆歅歃歂歈æ­�殛毻毼毹毷毸溛滖滈æº�滀溟溓溔溠溱溹滆滒溽æ»�溞滉溷溰æ»�溦æ»�溲溾滃滜滘溙溒溎æº�溤溡溿溳æ»�滊溗溮溣煇煔煒煣煠ç…�ç…�煢煲煸煪煡煂煘煃煋煰煟ç…�ç…“ç…„ç…�ç…šç‰�çŠ�犌犑çŠ�犎猼ç�‚猻猺ç�€ç�Šç�‰ç‘„瑊瑋瑒瑑瑗瑀ç‘�ç‘�瑎��\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"������������������������������������������������瑂瑆ç‘�瑔瓡瓿瓾瓽ç”�畹�������畷榃痯ç˜�瘃痷痾痼痹痸ç˜�痻痶痭痵痽皙皵ç›�ç�•ç�Ÿç� ç�’ç�–ç�šç�©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�§ç�”ç�™ç�­çŸ ç¢‡ç¢šç¢”ç¢�碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘�����稙稒稗稕稢稓稛ç¨�窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀ç¶�絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡èˆ�艉艄艀艂艅蓱è�¿è‘–葶葹è’�è’�葥葑葀蒆葧è�°è‘�葽葚葙葴葳è‘�蔇葞è�·è�ºè�´è‘ºè‘ƒè‘¸è�²è‘…è�©è�™è‘‹è�¯è‘‚è�­è‘Ÿè‘°è�¹è‘Žè‘Œè‘’葯蓅蒎è�»è‘‡è�¶è�³ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"������������������������������������������������葨葾葄è�«è‘ è‘”è‘®è‘�蜋蜄�������蛷蜌蛺蛖蛵è��蛸蜎蜉èœ�è›¶èœ�蜅裖裋è£�裎裞裛裚裌è£�覅覛觟觥������觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃èª�詴詺谼豋豊豥豤豦貆�����貄貅賌赨赩趑趌趎è¶�è¶�è¶“è¶”è¶�趒跰跠跬跱跮è·�跩跣跢跧跲跫跴輆軿è¼�輀輅輇輈輂輋é�’逿é�„é�‰é€½é„�é„�é„�鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬é‰�鉠鉧鉯鈶鉡鉰鈱鉔鉣é‰�鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵é�³é�·é�¸é�²é �é �頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪åƒ�僤��\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"������������������������������������������������僓僬僰僯僣僠凘劀åŠ�勩�������勫匰厬嘧嘕嘌嘒嗼å˜�嘜å˜�嘓嘂嗺å˜�嘄嗿嗹墉塼å¢�墘墆å¢�塿塴������墋塺墇墑墎塶墂墈塻墔å¢�壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬�����嫞å«�嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺å¶�嵷嶊嶉嶈嵾嵼å¶�嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨æ…�慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫æ�«æ‘�æ‘›æ‘�摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠æ‘�æ‘¿æ�¿æ‘¬æ‘«æ‘™æ‘¥æ‘·æ•³æ– æš¡æš æšŸæœ…朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧æ¦�榩榾榯榿槄榽榤槔榹槊榚æ§�榳榓��\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"������������������������������������������������榪榡榞槙榗æ¦�槂榵榥槆�������歊æ­�歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒������滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟æ¼�漞漈�����漡熇ç†�熉熀熅熂ç†�煻熆ç†�熗牄牓犗犕犓ç�ƒç��ç�‘ç�Œç‘¢ç‘³ç‘±ç‘µç‘²ç‘§ç‘®ç”€ç”‚甃畽ç–�瘖瘈瘌瘕瘑瘊瘔皸çž�ç�¼çž…çž‚ç�®çž€ç�¯ç�¾çžƒç¢²ç¢ªç¢´ç¢­ç¢¨ç¡¾ç¢«ç¢žç¢¥ç¢ ç¢¬ç¢¢ç¢¤ç¦˜ç¦Šç¦‹ç¦–禕禔禓禗禈禒ç¦�稫穊稰稯稨稦窨窫窬竮箈箜箊箑ç®�ç®–ç®�箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪ç·�緀緅ç¶�緎緄緆緋緌綯綹綖綼綟綦綮綩��\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"������������������������������������������������綡緉罳翢翣翥翞耤è��è�œï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è†‰è††è†ƒè†‡è†�膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴è“�è“�蒪蒚蒱è“�������è’�蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶è“�蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨�����è�«è�€èœ®èœžèœ¡èœ™èœ›è�ƒèœ¬è��蜾è�†èœ èœ²èœªèœ­èœ¼èœ’蜺蜱蜵è�‚蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫è¦�覡覟覞觩觫觨誫誙誋誒èª�誖谽豨豩賕è³�賗趖踉踂跿è¸�跽踊踃踇踆踅跾踀踄è¼�輑輎è¼�鄣鄜鄠鄢鄟é„�鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪éŠ�銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩éŠ���\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"������������������������������������������������銋鈭隞隡雿é�˜é�½é�ºé�¾éžƒï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éž€éž‚é�»éž„éž�é�¿éŸŽéŸ�頖颭颮餂餀餇é¦�馜駃馹馻馺駂馽駇骱髣髧������鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈�����噂噌嘵å™�噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫å¢�墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹å¬�嬇嬅å¬�屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩å¹�幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡æ†�慦憳戭摮摰撖撠撅撗撜æ’�撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛æ¨���\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"������������������������������������������������槾樧槲槮樔槷槧橀樈槦�������槻æ¨�槼槫樉樄樘樥æ¨�槶樦樇槴樖歑殥殣殢殦æ°�氀毿氂æ½�漦潾������澇濆澒æ¾�澉澌潢æ½�澅潚澖潶潬澂潕潲潒æ½�潗澔澓æ½�漀潡潫潽�����潧æ¾�潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵ç†�熥熞熤熡熪熜熧熳犘犚ç�˜ç�’ç�žç�Ÿç� ç��ç�›ç�¡ç�šç�™ç�¢ç’‡ç’‰ç’Šç’†ç’�瑽璅璈瑼瑹甈甇畾瘥瘞瘙ç˜�瘜瘣瘚瘨瘛皜çš�çšžçš›çž�çž�瞉瞈ç£�碻ç£�磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫��\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"������������������������������������������������翪翬翦翨è�¤è�§è†£è†Ÿè†žè†•�������膢膙膗舖è‰�艓艒è‰�艎艑蔤蔻è”�蔀蔩蔎蔉è”�蔟蔊蔧蔜蓻蔫蓺蔈������蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨è”�蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰�����蓯蓹蔘蔠蔰蔋蔙蔯虢è�–è�£è�¤è�·èŸ¡è�³è�˜è�”è�›è�’è�¡è�šè�‘è�žè�­è�ªè��è�Žè�Ÿè��è�¯è�¬è�ºè�®è�œè�¥è��è�»è�µè�¢è�§è�©è¡šè¤…褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬è«�諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾è±�è²�賥賟賙賨賚è³�賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗é�³é�°é�¯é�§é�«é„¯é„«é„©ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"������������������������������������������������鄪鄲鄦鄮醅醆醊é†�醂醄�������醀é‹�鋃鋄鋀鋙銶é‹�鋱鋟鋘鋩鋗é‹�鋌鋯鋂鋨鋊鋈鋎鋦é‹�鋕鋉鋠������鋞鋧鋑鋓銵鋡錥鋆銴镼閬閫閮閰隤隢雓霅霈霂é�šéžŠéžŽéžˆéŸ�éŸ������頞é �頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜é§�é§�駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓é¼�é¼�儜儓儗儚儑凞匴å�¡å™°å™ å™®å™³å™¦å™£å™­å™²å™žå™·åœœåœ›å£ˆå¢½å£‰å¢¿å¢ºå£‚墼壆嬗嬙嬛嬡嬔嬓å¬�嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋��\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"������������������������������������������������徼徻æ†�憨憖懅憴懆æ‡�懌�������憺憿憸憌擗擖æ“�æ“�擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋æ›�暽������暻暺曌朣樴橦橉橧樲橨樾æ©�橭橶橛橑樨橚樻樿æ©�橪橤æ©�æ©�橔�����橯橩橠樼橞橖橕æ©�橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪æ¿�澿澸澢濉澫æ¿�澯澲澰燅燂熿熸燖燀ç‡�燋燔燊燇ç‡�熽燘熼燆燚燛çŠ�犞ç�©ç�¦ç�§ç�¬ç�¥ç�«ç�ªç‘¿ç’šç’ ç’”璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚çž�瞡瞜瞛瞢瞣瞕瞙瞗ç£�磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵��\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"������������������������������������������������窱窷篞篣篧ç¯�篕篥篚篨�������篹篔篪篢篜篫篘篟糒糔糗ç³�糑縒縡縗縌縟縠縓縎縜縕縚縢縋������ç¸�縖ç¸�縔縥縤罃罻罼罺羱翯耪耩è�¬è†±è†¦è†®è†¹è†µè†«è†°è†¬è†´è†²è†·ï¿½ï¿½ï¿½ï¿½ï¿½è†§è‡²è‰•艖艗蕖蕅蕫è•�蕓蕡蕘蕀蕆蕤è•�蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦è•�蕔蕥蕬虣虥虤螤螛èž�螗螓螒螈èž�螖螘è�¹èž‡èž£èž…èž�èž‘èž�螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵è«�謔諤諟諰諈諞諡諨諿諯諻貑貒è²�賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽è¹�踰踿躽輶輮輵輲輹輷輴é�¶é�¹é�»ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"������������������������������������������������邆郺鄳鄵鄶醓é†�醑é†�é†��������錧錞錈錟錆éŒ�é�ºéŒ¸éŒ¼éŒ›éŒ£éŒ’éŒ�é�†éŒ­éŒŽéŒ�é‹‹éŒ�鋺錓鋹鋷錴錂錤������鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼é—�閾閹閺閶閿閵閽隩雔霋霒�����éœ�鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒é®�魺鮕魽鮈鴥鴗鴠鴞鴔鴩é´�鴘鴢é´�鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌åš�嚆嚄嚃噾嚂噿åš�壖壔å£�壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨æ–�斀斶旚曒æª���\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"������������������������������������������������檖æª�檥檉檟檛檡檞檇檓�������檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲������æ¿�濢濨燡燱燨燲燤燰燢ç�³ç�®ç�¯ç’—璲璫ç’�璪璭璱璥璯ç”�甑甒ç”������疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磿磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀ç«�ç°…ç°�篲簀篿篻簎篴簋篳簂簉簃ç°�篸篽簆篰篱ç°�簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀è–�薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆è–�è–™è–�è–�薢薂薈薅蕹��\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"������������������������������������������������蕶薘è–�薟虨螾螪螭蟅螰�������螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾è¥�襒������褷襂覭覯覮觲觳謞謘謖謑謅謋謢è¬�謒謕謇è¬�謈謆謜謓謚è±�豰�����豲豱豯貕貔賹赯蹎è¹�蹓è¹�蹌蹇轃轀邅é�¾é„¸é†šé†¢é†›é†™é†Ÿé†¡é†�醠鎡鎃鎯é�¤é�–é�‡é�¼é�˜é�œé�¶é�‰é��é�‘é� é�­éŽ�é�Œé�ªé�¹é�—é�•é�’é��é�±é�·é�»é�¡é�žé�£é�§é�Žé�™é—‡é—€é—‰é—ƒé—…閷隮隰隬霠霟霘éœ�霙鞚鞡鞜鞞éž�韕韔韱é¡�顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽é¬�髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆��\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"������������������������������������������������鮢鮠鮯鴳éµ�鵧鴶鴮鴯鴱�������鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉éº�麰黈黚黻黿鼤鼣鼢齔龠儱儭������儮嚘嚜嚗嚚åš�嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄�����擽擸æ”�攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌ç€�ç€�瀅瀔瀎濿瀀濻瀦濼濷瀊çˆ�燿燹爃燽ç�¶ç’¸ç“€ç’µç“�璾璶璻瓂甔甓癜癤癙ç™�癓癗癚皦皽盬矂瞺礌礓礔礉ç¤�礒礑禭禬穟簜簩簙簠簟簭ç°�簦簨簢簥簰繜ç¹�繖繣繘繢繟繑繠繗繓羵羳翷翸è�µè‡‘臒è‡�艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶��\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"������������������������������������������������藒蘤薸薷薾虩蟧蟦蟢蟛�������蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣蟗蟙è �蟴蟨èŸ�襓襋è¥�襌襆è¥�襑襉������謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾�����贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡è¹�蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛éŽ�鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎀éŽ�鎱鎑鎲鎤鎨鎴鎣闒闓闑隳雗雚巂雟雘é›�霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺é¡�顑顒颸é¥�餼餺é¨�騋騉é¨�騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿é¯�鮵鮸鯓鮶鯄鮹鮽鵜鵓éµ�鵊鵛鵋��\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"������������������������������������������������鵙鵖鵌鵗鵒鵔鵟鵘鵚麎�������麌黟é¼�鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚å£�壛������夒嬽嬾嬿巃幰徿懻攇æ”�æ”�攉攌攎斄旞æ—�曞櫧櫠櫌櫑櫙櫋櫟櫜�����æ«�æ««æ«�æ«�櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱ç¤�礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾è�¸è‡—臕舋艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘è¥�襙覈覷��\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"������������������������������������������������覶觶è­�譈譊譀譓譖譔譋�������譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑è½�������è½�轓辴酀鄿醰醭é�žé�‡é��é�‚é�šé��é�¹é�¬é�Œé�™éŽ©é�¦é�Šé�”é�®é�£é�•é�„é�Žï¿½ï¿½ï¿½ï¿½ï¿½é�€é�’鎥é�§é•½é—šé—›é›¡éœ©éœ«éœ¬éœ¨éœ¦éž³éž·éž¶éŸ�韞韟顜顙é¡�顗颿颽颻颾饈饇饃馦馧騚騕騥é¨�騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷é¶�鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀é½�é½�齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀å¿�懹攗攖攕攓旟曨曣曤��\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"������������������������������������������������櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵�������瀯瀷瀴瀱ç�‚瀸瀿瀺瀹瀪ç�€ç€»ç€³ç��爓爔犨ç�½ç�¼ç’ºçš«çšªçš¾ç›­çŸŒçŸŽï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çŸ�çŸ�矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾çº�纀羺翿�����è�¹è‡›è‡™è‰¨è‰©è˜¢è—¿è˜�藾蘛蘀藶蘄蘉蘅蘌藽蠙è �蠑蠗蠓蠖襣襦覹觷譠譪è­�譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚é‚�é…ƒé…�醷醵醲醳é�‹é�“é�»é� é��é�”é�¾é�•é��é�¨é�™é��é�µé�€é�·é�‡é�Žé�–é�’é�ºé�‰é�¸é�¼é�Šé�¿é�¼é�Œé�¶é�‘é�†é—žé— é—Ÿéœ®éœ¯éž¹éž»éŸ½éŸ¾é¡ é¡¢é¡£é¡Ÿé£�飂é¥�饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆é¬�鬒鬑鰋鰈鯷鰅鰒鯸鱀��\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"������������������������������������������������鰇鰎鰆鰗鰔鰉鶟鶙鶤é¶��������鶒鶘é¶�鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧������黦鼰鼮齛齠齞é½�齙龑儺儹劘劗囃嚽嚾孈孇巋å·�廱懽攛欂櫼欃�����櫸欀ç�ƒç�„ç�Šç�ˆç�‰ç�…ç�†çˆ�爚爙ç�¾ç”—癪çŸ�礭礱礯籔籓糲纊纇纈纋纆çº�ç½�羻耰è‡�蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩è �蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻è´�贔趯躎躌轞轛è½�酆酄酅醹é�¿é�»é�¶é�©é�½é�°é�¹é�ªé�·é�¬é‘€é�±é—¥é—¤é—£éœµéœºéž¿éŸ¡é¡¤é£‰é£†é£€é¥˜é¥–騹騽驆驄驂é©�騺騿é«�鬕鬗鬘鬖鬺魒鰫é°�鰜鰬鰣鰨鰩鰤鰡鶷��\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"������������������������������������������������鶶鶼é·�鷇鷊é·�鶾鷅鷃鶻�������鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳é·�鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹������囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉æ°�ç�•ç�–ç�—ç�’爞爟犩ç�¿ç“˜ï¿½ï¿½ï¿½ï¿½ï¿½ç“•瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑ç½�羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒èº�躖躗轠轢酇鑌é‘�鑊鑋é‘�鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌é©�驈驊驉驒é©�é«�鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳é±�鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋é·�鷜鷑鷟鷩鷙鷘鷖鷵鷕é·�麶黰鼵鼳鼲齂齫龕龢儽劙��\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"������������������������������������������������壨壧奲å­�巘蠯å½�æˆ�戃戄�������攩攥斖曫欑欒æ¬�毊ç�›ç�šçˆ¢çŽ‚çŽ�玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻������蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕é‘�鑗鑞韄韅�����頀驖驙鬞鬟鬠鱒鱘é±�鱊é±�鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂é»�黲黳鼆鼜鼸鼷鼶齃é½�齱齰齮齯囓å›�孎屭攭曭曮欓ç�Ÿç�¡ç��ç� çˆ£ç“›ç“¥çŸ•礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠èº�醾醽釂鑫鑨鑩雥é�†é�ƒé�‡éŸ‡éŸ¥é©žé«•魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀é¸�鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸��\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"������������������������������������������������欘欙欗欚ç�¢çˆ¦çŠªçŸ˜çŸ™ç¤¹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç±©ç±«ç³¶çºšçº˜çº›çº™è‡ è‡¡è™†è™‡è™ˆè¥¹è¥ºè¥¼è¥»è§¿è®˜è®™èº¥èº¤èº£é‘®é‘­é‘¯é‘±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é‘³é�‰é¡²é¥Ÿé±¨é±®é±­é¸‹é¸�é¸�é¸�鸒鸑麡黵鼉齇齸齻齺齹圞ç�¦ç±¯è ¼è¶²ï¿½ï¿½ï¿½ï¿½ï¿½èº¦é‡ƒé‘´é‘¸é‘¶é‘µé© é¬®é±´é±³é±±é±µé¸”鸓黶鼊龤ç�¨ç�¥ç³·è™ªè ¾è ½è ¿è®žè²œèº©è»‰é�‹é¡³é¡´é£Œé¥¡é¦«é©¤é©¦é©§é¬¤é¸•鸗齈戇欞爧虌躨钂钀é’�驩驨鸙虋讟钃鱹麷癵驫鱺é¸�ç�©ç�ªçˆ©éº¤é½¾é½‰é¾˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[223] = \"������������������������������������������������î€��������î€�î€�î€�î€������������î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚�î‚�î‚�î‚�î‚���\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"������������������������������������������������îƒ��������îƒ�îƒ�îƒ�îƒ������������î„�î„�î„�î„�î„�î…�î…�î…Žî…�î…�î…���\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"������������������������������������������������î†��������î†�î†�î†�������î†������î‡�î‡�î‡�î‡�î‡�îˆ�îˆ�îˆ�îˆ�îˆ���\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"�������������������������������������������������������î‰�î‰�î‰�î‰�������î‰������îŠ�îŠ�îŠ�îŠ�îŠ�î‹�î‹�î‹�î‹�î‹���\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"�������������������������������������������������������îŒ�îŒ�îŒ�îŒ�������îŒ������î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€îŽ�îŽ�îŽ�îŽ�îŽ���\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�������������������������������������������������������î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��������î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©ï¿½ï¿½ï¿½ï¿½ï¿½î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‘€î‘�î‘�î‘�î‘�î‘���\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�������������������������������������������������������î’�������î’�î’Žî’�î’�î’������î“�î“�î“�î“�î“�î”�î”�î”�î”�î”���\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"�������������������������������������������������������î•�������î•�î•�î•�î•������î–�î–�î–Žî–�î–�î–�î—�î—�î—Žî—�î—�î—���\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"�������������������������������������������������������î˜�������î˜�î˜�î˜�î˜������î™�î™�î™�î™�î™�îš�îš�îš�îš���\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"������������������������������������������������îš��������������î›�î›�î›�î›������î›�îœ�îœ�îœ�îœ�îœ�î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—��\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"������������������������������������������������î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�¼î�½î�¾î�¿îž€îž�îž�îž�îž������îž�îŸ�îŸ�îŸ�îŸ�îŸ�î �î �î Žî �î ���\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"������������������������������������������������î ��������������î¡�î¡�î¡�î¡������î¡�î¢�î¢�î¢�î¢�î¢�î£�î£�î£���\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"������������������������������������������������î£��������î£�������î¤�î¤������î¤�î¤�î¤�î¥�î¥�î¥�î¥�î¥�î¦���\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"������������������������������������������������î¦�î¦�î¦��������î¦�������î§������î§�î§Žî§�î§�î§�î¨�î¨�î¨�î¨�î¨�î©���\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"������������������������������������������������î©�î©�î©��������î©�������îª������îª�îª�îª�îª�î«�î«�î«�î«�î«�î¬���\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"������������������������������������������������î¬��������î¬�î¬�î¬�������î­������î­�î­Žî­�î­�î­�î®�î®�î®�î®�î®���\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"������������������������������������������������î¯��������î¯�î¯�î¯�î¯������������î°�î°�î°Žî°�î°�î°�î±�î±�î±�î±�î±���\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"������������������������������������������������î²��������î²�î²�î²�î²������������î³�î³�î³�î³�î³�î´�î´�î´Žî´�î´�î´���\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"������������������������������������������������îµ��������îµ�îµ�îµ�������îµ������î¶�î¶�î¶Žî¶�î¶�î¶�î·�î·�î·Žî·�î·�î·���\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�������������������������������������������������������î¸�î¸�î¸�î¸�������î¸������î¹�î¹�î¹�î¹�î¹�îº�îº�îº�îº�îº���\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�������������������������������������������������������î»�î»�î»�î»�������î»������î¼�î¼�î¼�î¼�î¼�î½�î½�î½�î½�î½���\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"�������������������������������������������������������î¾�î¾�î¾�������î¾�î¾������î¿�î¿�î¿�î¿�î¿�ï€�ï€�ï€�ï€�ï€���\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�������������������������������������������������������ï�€ï��ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï�Œï��ï�Žï��ï��ï�‘ï�’ï�“ï�”ï�•ï�–ï�—ï�˜ï�™ï�šï�›ï�œï��ï�žï�Ÿï� ï�¡ï�¢ï�£ï�¤ï�¥ï¿½ï¿½ï¿½ï¿½ï¿½ï�¦ï�§ï�¨ï�©ï�ªï�«ï�¬ï�­ï�®ï�¯ï�°ï�±ï�²ï�³ï�´ï�µï�¶ï�·ï�¸ï�¹ï�ºï�»ï�¼ï�½ï�¾ï�¿ï‚€ï‚�ï‚�ï‚�ï‚�ï‚�ïƒ�ïƒ�ïƒ�ïƒ�ïƒ���\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"�������������������������������������������������������ï„�������ï„�ï„�ï„�ï„������ï…�ï…�ï…Žï…�ï…�ï…�ï†�ï†�ï†�ï†�ï†���\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"�������������������������������������������������������ï‡�������ï‡�ï‡�ï‡�ï‡������ïˆ�ïˆ�ïˆ�ïˆ�ïˆ�ï‰�ï‰�ï‰�ï‰���\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"������������������������������������������������ï‰��������������ïŠ�ïŠ�ïŠ�ïŠ������ïŠ�ï‹�ï‹�ï‹�ï‹�ï‹�ïŒ�ïŒ�ïŒ�ïŒ���\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"������������������������������������������������ïŒ��������������ï�€ï��ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï�Œï��ï�Žï��ï��ï�‘ï�’ï�“ï�”ï�•�����ï�–ï�—ï�˜ï�™ï�šï�›ï�œï��ï�žï�Ÿï� ï�¡ï�¢ï�£ï�¤ï�¥ï�¦ï�§ï�¨ï�©ï�ªï�«ï�¬ï�­ï�®ï�¯ï�°ï�±ï�²ï�³ï�´ï�µï�¶ï�·ï�¸ï�¹ï�ºï�»ï�¼ï�½ï�¾ï�¿ïŽ€ïŽ�ïŽ�ïŽ�ïŽ�ïŽ�ï�€ï��ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï�Œï��ï�Žï��ï��ï�‘ï�’ï�“��\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"������������������������������������������������ï�”ï�•ï�–ï�—ï�˜ï�™ï�šï�›ï�œï���������ï�žï�Ÿï� ï�¡ï�¢ï�£ï�¤ï�¥ï�¦ï�§ï�¨ï�©ï�ªï�«ï�¬ï�­ï�®ï�¯ï�°ï�±ï�²ï�³ï�´ï�µï�¶ï�·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï�¸ï�¹ï�ºï�»ï�¼ï�½ï�¾ï�¿ï�€ï��ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï�Œï��ï�Žï��ï��ï�‘�����ï�’ï�“ï�”ï�•ï�–ï�—ï�˜ï�™ï�šï�›ï�œï��ï�žï�Ÿï� ï�¡ï�¢ï�£ï�¤ï�¥ï�¦ï�§ï�¨ï�©ï�ªï�«ï�¬ï�­ï�®ï�¯ï�°ï�±ï�²ï�³ï�´ï�µï�¶ï�·ï�¸ï�¹ï�ºï�»ï�¼ï�½ï�¾ï�¿ï‘€ï‘�ï‘�ï‘�ï‘�ï‘�ï’�ï’�ï’Žï’���\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"������������������������������������������������ï’��������ï’�������ï“�ï“������ï“�ï“�ï“�ï”�ï”�ï”�ï”�ï”�ï•���\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"������������������������������������������������ï•�ï•�ï•��������ï•�������ï–������ï–�ï–Žï–�ï–�ï–�ï—�ï—�ï—Žï—�ï—�ï—�ï˜���\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20002] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�����������������������������������������������ï£�ï£�ï£�ï£�ï£�����������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"������������������������������������������������ ,ã€�。․•;:?ï¼��������︰…‥ï¹�﹑‧﹒﹔﹕﹖﹗︱–︲—︳_︴ï¹�()︵︶{ï½�︷������︸〔〕︹︺ã€�】︻︼《》︽︾〈〉︿﹀「ã€�ï¹�﹂『ã€�﹃﹄﹙�����﹚﹛﹜ï¹�﹞‘’“â€�ã€�〞′‵#&*※§〃○â—�△▲◎☆★◇◆□■▽▼㊣℅‾ ̄��﹉﹊ï¹�﹎﹋﹌﹟﹠﹡+ï¼�×÷±√<>ï¼�≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿ã�’ã�‘∫∮∵∴♀♂⊕⊙↑↓→â†�↖↗↙↘∥∣ï¼�\�﹨$¥〒¢£%@℃℉﹩﹪﹫ã�•㎜ãŽ�㎞ã�ŽãŽ¡ãŽŽãŽ�ã�„゜兙兛兞å…�兡兣��\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"������������������������������������������������嗧瓩糎â–�▂▃▄▅▆▇�������█â–�â–Žâ–�▌▋▊▉┼┴┬┤├▔─│▕┌â”�└┘╭╮╰╯â•�������╞╪╡◢◣◥◤╱╲╳¨˄ヽヾã‚�ゞ�〄々〆〇ー[]✽ã�������ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ï¼�123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�å�„�ABCDEFGHIJKLMNOPQRSTUVWXYZï½�bcdefghijklï½�nï½�ï½�qrstuvwxyzΑΒΓΔΕΖΗΘΙΚ��\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"������������������������������������������������ΛΜÎ�ΞΟΠΡΣΤΥ�������ΦΧΨΩαβγδεζηθικλμνξοπÏ�στυφχ������ψωㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜ�����ã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�­ã�®ã�¯â‘ â‘¡â‘¢â‘£â‘¤â‘¥â‘¦â‘§â‘¨â‘©â‘´â‘µâ‘¶â‘·â‘¸â‘¹â‘ºâ‘»â‘¼â‘½â…°â…±â…²â…³â…´â…µâ…¶â…·â…¸â…¹ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼ��\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"��������������������������������������������������丶丿�亅�亠�����������冂冖冫����勹��匸��å�©ï¿½åŽ¶ï¿½ï¿½ï¿½ï¿½ï¿½å¤‚ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å®€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å·›ï¿½ï¿½ï¿½ï¿½å¹ºå¹¿å»´ï¿½ï¿½ï¿½å½�彡�����������攴����无��������������������������������疒癶��������������������������������������������������������辵��������隶��������������������\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[133] = \"��������������������������������������������������������������������������������鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌������黟é¼�鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚å£�壛夒�����嬽嬾嬿巃幰徿懻攇æ”�æ”�攉攌攎斄旞æ—�曞櫧櫠櫌櫑櫙櫋櫟櫜æ«�æ««æ«�æ«�櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱ç¤�礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾è�¸è‡—臕舋艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢��\".split(\"\");\n\t\tfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\n\t\tD[134] = \"������������������������������������������������蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼�������蠈蟿蠊蠂襢襚襛襗襡襜襘è¥�襙覈覷覶觶è­�譈譊譀譓譖譔譋譕������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑è½�è½������轓辴酀鄿醰醭é�žé�‡é��é�‚é�šé��é�¹é�¬é�Œé�™éŽ©é�¦é�Šé�”é�®é�£é�•é�„é�Žé�€é�’鎥é�§é•½é—šé—›é›¡éœ©éœ«éœ¬éœ¨éœ¦éž³éž·éž¶éŸ�韞韟顜顙é¡�顗颿颽颻颾饈饇饃馦馧騚騕騥é¨�騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷é¶�鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀é½���\".split(\"\");\n\t\tfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\n\t\tD[135] = \"������������������������������������������������é½�齖齗齘匷嚲嚵嚳壣孅�������巆巇廮廯忀å¿�懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯������瀷瀴瀱ç�‚瀸瀿瀺瀹瀪ç�€ç€»ç€³ç��爓爔犨ç�½ç�¼ç’ºçš«çšªçš¾ç›­çŸŒçŸŽçŸ������çŸ�矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾çº�纀羺翿è�¹è‡›è‡™è‰¨è‰©è˜¢è—¿è˜�藾蘛蘀藶蘄蘉蘅蘌藽蠙è �蠑蠗蠓蠖襣襦覹觷譠譪è­�譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚é‚�é…ƒé…�醷醵醲醳é�‹é�“é�»é� é��é�”é�¾é�•é��é�¨é�™é��é�µé�€é�·é�‡é�Žé�–é�’é�ºé�‰é�¸é�¼é�Šé�¿é�¼é�Œé�¶é�‘é�†é—žé— é—Ÿéœ®éœ¯éž¹éž»éŸ½éŸ¾é¡ é¡¢é¡£é¡Ÿé£�飂é¥�饎饙饌��\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"������������������������������������������������饋饓騲騴騱騬騪騶騩騮�������騸騭髇髊髆é¬�鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤é¶�鶒������鶘é¶�鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦�����鼰鼮齛齠齞é½�齙龑儺儹劘劗囃嚽嚾孈孇巋å·�廱懽攛欂櫼欃櫸欀ç�ƒç�„ç�Šç�ˆç�‰ç�…ç�†çˆ�爚爙ç�¾ç”—癪çŸ�礭礱礯籔籓糲纊纇纈纋纆çº�ç½�羻耰è‡�蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩è �蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻è´�贔趯躎躌轞轛è½�酆酄酅醹é�¿é�»é�¶é�©é�½é�°é�¹é�ªé�·é�¬é‘€é�±é—¥é—¤é—£éœµéœºéž¿éŸ¡é¡¤é£‰é£†é£€é¥˜é¥–��\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"������������������������������������������������騹騽驆驄驂é©�騺騿é«�鬕�������鬗鬘鬖鬺魒鰫é°�鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼é·�鷇鷊é·�鶾鷅鷃鶻鶵������鷎鶹鶺鶬鷈鶱鶭鷌鶳é·�鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆�����囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉æ°�ç�•ç�–ç�—ç�’爞爟犩ç�¿ç“˜ç“•瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑ç½�羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒èº�躖躗轠轢酇鑌é‘�鑊鑋é‘�鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌é©�驈驊驉驒é©�é«�鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳é±�鰼鰷鰴鰲鰽鰶鷛鷒��\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"������������������������������������������������鷞鷚鷋é·�鷜鷑鷟鷩鷙鷘�������鷖鷵鷕é·�麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲å­�巘蠯å½�æˆ�戃戄攩������攥斖曫欑欒æ¬�毊ç�›ç�šçˆ¢çŽ‚çŽ�玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾�����蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕é‘�鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘é±�鱊é±�鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂é»�黲黳鼆鼜鼸鼷鼶齃é½�齱齰齮齯囓å›�孎屭攭曭曮欓ç�Ÿç�¡ç��ç� çˆ£ç“›ç“¥çŸ•礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠èº�醾醽釂鑫鑨鑩雥é�†é�ƒé�‡éŸ‡éŸ¥é©žé«•魙鱣鱧��\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"������������������������������������������������鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅�������鸀é¸�鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚ç�¢çˆ¦çŠªçŸ˜çŸ™ç¤¹ç±©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç±«ç³¶çºšçº˜çº›çº™è‡ è‡¡è™†è™‡è™ˆè¥¹è¥ºè¥¼è¥»è§¿è®˜è®™èº¥èº¤èº£é‘®é‘­é‘¯é‘±é‘³ï¿½ï¿½ï¿½ï¿½ï¿½é�‰é¡²é¥Ÿé±¨é±®é±­é¸‹é¸�é¸�é¸�鸒鸑麡黵鼉齇齸齻齺齹圞ç�¦ç±¯è ¼è¶²èº¦é‡ƒé‘´é‘¸é‘¶é‘µé© é¬®é±´é±³é±±é±µé¸”鸓黶鼊龤ç�¨ç�¥ç³·è™ªè ¾è ½è ¿è®žè²œèº©è»‰é�‹é¡³é¡´é£Œé¥¡é¦«é©¤é©¦é©§é¬¤é¸•鸗齈戇欞爧虌躨钂钀é’�驩驨鸙虋讟钃鱹麷癵驫鱺é¸�ç�©ç�ªçˆ©éº¤é½¾é½‰é¾˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"��������������������������������������������������������î€��������î€�î€�î€�������î€������î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚�î‚�î‚�î‚�î‚���\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"�������������������������������������������������������îƒ�îƒ�îƒ�îƒ�������îƒ������î„�î„�î„�î„�î„�î…�î…�î…Žî…�î…�î…���\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"�������������������������������������������������������î†�î†�î†�î†�������î†������î‡�î‡�î‡�î‡�î‡�îˆ�îˆ�îˆ�îˆ�îˆ���\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"�������������������������������������������������������î‰�î‰�î‰�������î‰�î‰������îŠ�îŠ�îŠ�îŠ�îŠ�î‹�î‹�î‹�î‹�î‹���\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"�������������������������������������������������������îŒ�������îŒ�îŒ�îŒ�îŒ������î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€îŽ�îŽ�îŽ�îŽ�îŽ���\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"�������������������������������������������������������î�€î��î�‚î�ƒî�„î�…î�†î�‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡ï¿½ï¿½ï¿½ï¿½ï¿½î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î�€î�������������������������������������������������������������������¬¦��㈱№℡������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������一乙ä¸�七乃ä¹�了二人儿入八几刀åˆ�力匕å��å�œå�ˆä¸‰ä¸‹ä¸ˆä¸Šä¸«ä¸¸å‡¡ä¹…么也乞于亡兀刃勺å�ƒå�‰å�£åœŸå£«å¤•大女å­�孑孓寸å°�尢尸山å·�工己已巳巾干廾弋弓æ‰�丑ä¸�ä¸�中丰丹之尹予云井互五亢ä»�什仃仆仇ä»�今介仄元å…�內六兮公冗凶��\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"������������������������������������������������分切刈勻勾勿化匹å�ˆå�‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�…å�žåŽ„å�‹å�Šå��壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎������支文斗斤方日曰月木欠止歹毋比毛æ°�æ°´ç�«çˆªçˆ¶çˆ»ç‰‡ç‰™ç‰›çŠ¬çŽ‹ï¿½ï¿½ï¿½ï¿½ï¿½ä¸™ä¸–ä¸•ä¸”ä¸˜ä¸»ä¹�ä¹�乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北åŒ�仟å�Šå�‰å�¡å� å�¯å�®åŽ»å�¯å�¤å�³å�¬å�®å�©å�¨å�¼å�¸å�µå�«å�¦å�ªå�²å�±å�°å�¥å�­å�»å››å›šå¤–央失奴奶孕它尼巨巧左市布平幼å¼�弘弗必戊打扔扒扑斥旦朮本未末札正æ¯�æ°‘æ°�æ°¸æ±�汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴��\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"������������������������������������������������立丞丟乒乓乩亙交亦亥�������仿伉伙伊伕ä¼�ä¼�休ä¼�仲件任仰仳份ä¼�伋光兇兆先全共å†�冰列������刑划刎刖劣匈匡匠å�°å�±å�‰å��å�Œå�Šå��å��å�‹å�„å�‘å��å�ˆå�ƒå�Žå�†å�’因�����回å›�圳地在圭圬圯圩夙多夷夸妄奸妃好她如å¦�字存宇守宅安寺尖屹州帆并年å¼�弛忙忖戎戌æˆ�æˆ�扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖æ±�汗汙江池æ±�汕污汛æ±�汎ç�°ç‰Ÿç‰�百竹米糸缶羊羽è€�考而耒耳è�¿è‚‰è‚‹è‚Œè‡£è‡ªè‡³è‡¼èˆŒèˆ›èˆŸè‰®è‰²è‰¾è™«è¡€è¡Œè¡£è¥¿é˜¡ä¸²äº¨ä½�ä½�佇佗佞伴佛何估ä½�佑伽伺伸佃佔似但��\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"������������������������������������������������佣作你伯低伶余ä½�佈佚�������兌克å…�兵冶冷別判利刪刨劫助努劬匣å�³å�µå��å�­å�žå�¾å�¦å‘Žå�§å‘†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å‘ƒå�³å‘ˆå‘‚å�›å�©å‘Šå�¹å�»å�¸å�®å�µå�¶å� å�¼å‘€å�±å�«å�Ÿå�¬å›ªå›°å›¤å›«å�Šå�‘�����å�€å��å�‡å�Žåœ¾å��å��圻壯夾å¦�妒妨妞妣妙妖å¦�妤妓妊妥å­�孜孚孛完宋å®�尬局å±�å°¿å°¾å²�岑岔岌巫希åº�庇床廷弄弟彤形彷役忘忌志å¿�忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更æ�Ÿæ�Žæ��æ��æ�‘æ�œæ�–æ�žæ�‰æ�†æ� æ�“æ�—æ­¥æ¯�求汞沙æ²�沈沉沅沛汪決æ²�汰沌汨沖沒汽沃汲汾汴沆汶æ²�沔沘��\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"������������������������������������������������沂ç�¶ç�¼ç�½ç�¸ç‰¢ç‰¡ç‰ ç‹„狂�������玖甬甫男甸皂盯矣ç§�秀禿究系罕肖肓è‚�肘肛肚育良芒芋èŠ�見������角言谷豆豕è²�赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里�����防阮阱阪阬並乖乳事些亞享京佯ä¾�ä¾�佳使佬供例來侃佰併侈佩佻侖佾ä¾�侑佺兔兒兕兩具其典冽函刻券刷刺到刮制å‰�劾劻å�’å�”å�“å�‘å�¦å�·å�¸å�¹å�–å�”å�—味呵咖呸咕咀呻呷咄咒咆呼å’�呱呶和咚呢周咋命咎固垃å�·å�ªå�©å�¡å�¦å�¤å�¼å¤œå¥‰å¥‡å¥ˆå¥„奔妾妻委妹妮姑姆å§�å§�始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚��\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"������������������������������������������������屈居屆岷岡岸岩岫岱岳�������帘帚帖帕帛帑幸庚店府底庖延弦弧弩往å¾�彿彼å¿�忠忽念忿æ€�������怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披�����拓拔拋拈抨抽押æ‹�拙拇æ‹�抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀æ˜�昕昊昇æœ�朋æ�­æž‹æž•æ�±æžœæ�³æ�·æž‡æž�æž—æ�¯æ�°æ�¿æž‰æ�¾æž�æ�µæžšæž“æ�¼æ�ªæ�²æ¬£æ­¦æ­§æ­¿æ°“氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油æ³�沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗ç‹�玩玨玟玫玥甽ç–�疙疚的盂盲直��\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"������������������������������������������������知矽社祀ç¥�秉秈空穹竺�������糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾èˆ�芳èŠ�芙芭芽芟芹花������芬芥芯芸芣芰芾芷虎虱åˆ�表軋迎返近邵邸邱邶采金長門阜陀�����阿阻附陂隹雨é�’é�žäºŸäº­äº®ä¿¡ä¾µä¾¯ä¾¿ä¿ ä¿‘ä¿�ä¿�促侶俘俟俊俗侮ä¿�俄係俚俎俞侷兗冒冑冠剎剃削å‰�剌剋則勇勉勃å‹�åŒ�å�—å�»åŽšå�›å’¬å“€å’¨å“Žå“‰å’¸å’¦å’³å“‡å“‚咽咪å“�哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契å¥�奎å¥�姜姘姿姣姨娃姥姪姚姦å¨�姻孩宣宦室客宥å°�屎å±�å±�屋峙峒巷å¸�帥帟幽庠度建弈弭彥很��\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"������������������������������������������������待徊律徇後徉怒æ€�怠急�������怎怨æ��æ�°æ�¨æ�¢æ�†æ�ƒæ�¬æ�«æ�ªæ�¤æ‰�拜挖按拼拭æŒ�拮拽指拱拷拯括������拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔æŸ�柬架�����枯柵柩柯柄柑枴柚查枸æŸ�柞柳枰柙柢æŸ�柒歪殃殆段毒毗氟泉洋洲洪æµ�津洌洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷ç�ŠçŽ»çŽ²ç��ç�€çŽ³ç”šç”­ç•�界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅çœ�盹相眉看盾盼眇矜砂研砌ç �祆祉祈祇禹禺科秒秋穿çª�竿竽籽紂紅紀紉紇約紆缸��\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"������������������������������������������������美羿è€�è€�耑耶胖胥胚胃�������胄背胡胛胎胞胤èƒ�致舢苧范茅苣苛苦茄若茂茉苒苗英èŒ�苜苔������苑苞苓苟苯茆è™�虹虻虺è¡�è¡«è¦�觔計訂訃貞負赴赳趴è»�軌述迦�����迢迪迥迭迫迤迨郊郎éƒ�郃酋酊é‡�é–‚é™�陋陌é™�é�¢é�©éŸ‹éŸ­éŸ³é �風飛食首香乘亳倌å€�倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢å‡�凌准凋剖剜剔剛å‰�匪å�¿åŽŸåŽ�å�Ÿå“¨å”�å”�唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽å”�圃圄埂埔埋埃堉å¤�套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉��\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"������������������������������������������������孫屘宰害家宴宮宵容宸�������射屑展å±�峭峽峻峪峨峰島å´�峴差席師庫庭座弱徒徑å¾�æ�™æ�£æ�¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ��æ�•æ�­æ�©æ�¯æ‚„悟悚æ‚�悔悌悅悖扇拳挈拿æ�ŽæŒ¾æŒ¯æ�•æ�‚æ�†æ��æ�‰æŒºï¿½ï¿½ï¿½ï¿½ï¿½æ��挽挪挫挨æ��æ�Œæ•ˆæ•‰æ–™æ—�旅時晉æ™�晃晒晌晅æ™�書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴æ¡�桀格桃株桅栓栘æ¡�殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈çƒ�爹特狼狹狽狸狷玆ç�­ç�‰ç�®ç� ç�ªç�žç•”ç•�畜畚留疾病症疲疳疽疼疹痂疸皋皰益ç›�盎眩真眠眨矩砰砧砸��\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"������������������������������������������������ç �破砷砥砭砠砟砲祕ç¥��������祠祟祖神ç¥�祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索������純ç´�ç´•ç´šç´œç´�紙紛缺罟羔翅ç¿�耆耄耘耕耙耗耽耿胱脂胰脅胭�����胴脆胸胳脈能脊胼胯臭臬舀èˆ�航舫舨般芻茫è�’è�”è�ŠèŒ¸è��è�‰èŒµèŒ´è��茲茹茶茗è�€èŒ±èŒ¨è�ƒè™”蚊蚪蚓蚤蚩蚌蚣蚜衰衷è¢�袂衽衹記è¨�討訌訕訊託訓訖è¨�訑豈豺豹財貢起躬軒軔è»�è¾±é€�逆迷退迺迴逃追逅迸邕郡éƒ�郢酒é…�酌釘é‡�釗釜釙閃院陣陡陛é™�除陘陞隻飢馬骨高鬥鬲鬼乾å�ºå�½å�œå�‡å�ƒå�Œå�šå�‰å�¥å�¶å�Žå�•å�µï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"������������������������������������������������å�´å�·å��å€�å�¯å�­å…œå†•凰剪�������副勒務勘動åŒ�åŒ�匙匿å�€åŒ¾å�ƒæ›¼å•†å•ªå•¦å•„啞啡啃啊唱啖å•�啕唯������啤唸售啜唬啣唳å•�啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶�����å©�婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜å±�崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜æ�¿æ‚£æ‚‰æ‚ æ‚¨æƒ‹æ‚´æƒ¦æ‚½æƒ…悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控æ�²æŽ–探接æ�·æ�§æŽ˜æŽªæ�±æŽ©æŽ‰æŽƒæŽ›æ�«æŽ¨æŽ„授掙採掬排æŽ�掀æ�»æ�©æ�¨æ�ºæ•�敖救教敗啟æ•�敘敕敔斜斛斬æ—���\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"������������������������������������������������旋旌旎æ™�晚晤晨晦晞曹�������勗望æ¢�梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔æ¢�梨梟梡梂欲殺������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒�����渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽çŠ�猜猛猖猓猙率ç�…ç�Šç�ƒç�†ç�¾ç��瓠瓶瓷甜產略畦畢異ç–�痔痕疵痊ç—�皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜è�Šè�†è„¯è„–脣脫脩脰脤舂舵舷舶船莎莞莘è�¸èŽ¢èŽ–èŽ½èŽ«èŽ’èŽŠèŽ“ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"������������������������������������������������莉莠è�·è�»è�¼èŽ†èŽ§è™•å½ªè›‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è›€èš¶è›„èšµè›†è›‹èš±èš¯è›‰è¡“è¢žè¢ˆè¢«è¢’è¢–è¢�袋覓è¦�訪è¨�訣訥許設訟������訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這é€�通逗連速é€�é€�逕逞�����造é€�逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢å‚�傅備傑傀傖傘傚最凱割剴創剩勞å‹�å‹›å�šåŽ¥å•»å–€å–§å•¼å–Šå–�喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙åœ�堯堪場堤堰報堡å �堠壹壺奠婷媚婿媒媛媧孳孱寒富寓å¯�尊尋就嵌åµ�崴嵇巽幅帽幀幃幾廊��\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"������������������������������������������������å»�廂廄弼彭復循徨惑惡�������悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌æ��æ�€æ�©æ�‰æ�†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ��æ�’æ�£æ��æ�¡æ�–æ�­æ�®æ�¶æ�´æ�ªæ�›æ‘’æ�šæ�¹æ•žæ•¦æ•¢æ•£æ–‘æ–�斯普晰晴晶�����景暑智晾晷曾替期æœ�棺棕棠棘棗椅棟棵森棧棹棒棲棣棋æ£�æ¤�椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴æ¹�渺測湃æ¸�渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩ç�ºç�ªç�³ç�¢ç�¥ç�µç�¶ç�´ç�¯ç�›ç�¦ç�¨ç”¥ç”¦ç•«ç•ªç—¢ç—›ç—£ç—™ç—˜ç—žç— ç™»ç™¼çš–皓皴盜ç��短ç¡�硬硯��\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"������������������������������������������������ç¨�稈程稅稀窘窗窖童竣�������等策筆ç­�ç­’ç­”ç­�ç­‹ç­�筑粟粥絞çµ�絨絕紫絮絲絡給絢絰絳善翔������翕耋è�’肅腕腔腋腑腎脹腆脾腌腓腴舒舜è�©è�ƒè�¸è��è� è�…è�‹è��è�¯ï¿½ï¿½ï¿½ï¿½ï¿½è�±è�´è‘—è�Šè�°è�Œè�Œè�½è�²è�Šè�¸è�Žè�„è�œè�‡è�”è�Ÿè™›è›Ÿè›™è›­è›”蛛蛤è›�蛞街è£�裂袱覃視註詠評詞証è©�詔詛è©�詆訴診訶詖象貂貯貼貳貽è³�費賀貴買貶貿貸越超è¶�è·Žè·�跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥é‡�鈔鈕鈣鈉鈞éˆ�éˆ�鈇鈑閔é–�開閑間閒閎隊階隋陽隅隆éš�陲隄é›�雅雄集雇雯雲韌項順須飧飪��\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"������������������������������������������������飯飩飲飭馮馭黃é»�黑亂�������傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜������嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋�����奧å«�嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚æ„�慈感想愛惹æ„�愈慎慌慄æ…�愾愴愧æ„�愆愷戡戢æ�“æ�¾æ�žæ�ªæ�­æ�½æ�¬æ��æ�œæ�”æ��æ�¶æ�–æ�—æ�†æ•¬æ–Ÿæ–°æš—暉暇暈暖暄暘æš�會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆æ¥�楣楛歇歲毀殿毓毽溢溯滓溶滂æº�æº�滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥��\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"������������������������������������������������煞煆煨煖爺牒猷ç�…猿猾�������瑯瑚瑕瑟瑞ç‘�ç�¿ç‘™ç‘›ç‘œç•¶ç•¸ç˜€ç—°ç˜�痲痱痺痿痴痳盞盟ç�›ç�«ç�¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�žç�£ç�¹ç�ªç�¬ç�œç�¥ç�¨ç�¢çŸ®ç¢Žç¢°ç¢—碘碌碉硼碑碓硿祺祿ç¦�è�¬ç¦½ç¨œï¿½ï¿½ï¿½ï¿½ï¿½ç¨šç¨ ç¨”稟稞窟窠筷節筠筮筧粱粳粵經絹綑ç¶�ç¶�絛置罩罪署義羨群è�–è�˜è‚†è‚„腱腰腸腥腮腳腫腹腺腦舅艇蒂葷è�½è�±è‘µè‘¦è‘«è‘‰è‘¬è‘›è�¼è�µè‘¡è‘£è‘©è‘­è‘†è™žè™œè™Ÿè›¹èœ“蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘è£�裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪��\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"������������������������������������������������跤跦躲較載軾輊辟農é�‹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é�Šé�“é�‚é�”逼é�•é��é�‡é��é�Žé��é�‘逾é��鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾������鉛鉋鉤鉑鈴鉉é‰�鉅鈹鈿鉚閘隘隔隕é›�雋雉雊雷電雹零é�–é�´é�¶ï¿½ï¿½ï¿½ï¿½ï¿½é �頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕åƒ�僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉å˜�嘎嗷嘖嘟嘈å˜�嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察å°�屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧æ�´æ‘­æ‘»æ•²æ–¡ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"������������������������������������������������旗旖暢暨æš�榜榨榕æ§�榮�������槓構榛榷榻榫榴æ§�æ§�榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬������æ¼�漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬æ¼�滲滌滷熔熙煽熊熄熒�����爾犒犖ç�„ç��瑤瑣瑪瑰瑭甄疑瘧ç˜�瘋瘉瘓盡監瞄ç�½ç�¿ç�¡ç£�碟碧碳碩碣禎ç¦�ç¦�種稱窪窩竭端管箕箋筵算ç®�ç®”ç®�箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟è�žè�šè‚‡è…�膀è†�膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓è’�蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘è�•蜷蜩裳褂裴裹裸製裨褚裯��\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"������������������������������������������������誦誌語誣èª�誡誓誤說誥�������誨誘誑誚誧豪è²�貌賓賑賒赫趙趕跼輔輒輕輓辣é� é�˜é�œé�£é�™é�žï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é�¢é��é�›é„™é„˜é„žé…µé…¸é…·é…´é‰¸éŠ¬éŠ€éŠ…éŠ˜éŠ–é‰»éŠ“éŠœéŠ¨é‰¼éŠ‘é–¡é–¨é–©é–£ï¿½ï¿½ï¿½ï¿½ï¿½é–¥é–¤éš™éšœéš›é›Œé›’éœ€é�¼éž…韶頗領颯颱餃餅餌餉é§�骯骰髦é­�魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉åŠ�劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履å¶�嶔幢幟幡廢廚廟å»�廣廠彈影德徵慶慧慮æ…�慕憂慼慰慫慾憧æ†�憫憎憬憚憤憔憮戮摩摯摹撞撲撈æ’�撰��\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"������������������������������������������������撥撓撕撩撒撮播撫撚撬�������撙撢撳敵敷數暮暫暴暱樣樟槨æ¨�樞標槽模樓樊槳樂樅槭樑æ­�������歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟�����熬熱熨牖犛ç�Žç�—瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼ç£�稿稼穀稽稷稻窯窮箭箱範箴篆篇ç¯�箠篌糊締練緯緻緘緬ç·�編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜è†�膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂è�´è�¶è� è�¦è�¸è�¨è�™è�—è�Œè�“è¡›è¡�è¤�複褒褓褕褊誼諒談諄誕請諸課諉諂調��\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"������������������������������������������������誰論è«�誶誹諛豌豎豬賠�������賞賦賤賬賭賢賣賜質賡赭趟趣踫è¸�è¸�踢è¸�踩踟踡踞躺è¼�輛輟������輩輦輪輜輞輥é�©é�®é�¨é�­é�·é„°é„­é„§é„±é†‡é†‰é†‹é†ƒé‹…銻銷鋪鋤é‹�銳�����銼鋒鋇鋰銲閭閱霄霆震霉é� éž�éž‹éž�頡頫頜颳養餓餒餘é§�é§�駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔å„�儕冀冪å‡�劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶å£�墾壇壅奮å¬�嬴學寰導彊憲憑憩憊æ‡�憶憾懊懈戰擅æ“�擋撻撼據擄擇擂æ“�撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇��\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"������������������������������������������������樵機橈歙歷氅濂澱澡濃�������澤æ¿�澧澳激澹澶澦澠澴熾燉ç‡�燒燈燕熹燎燙燜燃燄ç�¨ç’œç’£ç’˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç’Ÿç’žç“¢ç”Œç”�瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦ç©�穎穆穌穋窺篙�����簑築篤篛篡篩篦糕糖縊縑縈縛縣縞ç¸�縉ç¸�罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢èž�衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾è¬�謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦é�µé�´é�¸é�²é�¼é�ºé„´é†’錠錶鋸錳錯錢鋼錫錄錚éŒ�錦錡錕錮錙閻隧隨險雕霎霑霖éœ�霓éœ�é�›é�œé�¦éž˜é °ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"������������������������������������������������頸頻頷頭頹頤é¤�館餞餛�������餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔é¾�龜優償儡儲勵������嚎嚀åš�嚅嚇åš�壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇�����懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗æª�檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆ç�°ç�²ç’©ç’°ç’¦ç’¨ç™†ç™‚癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯ç¤�禧禪穗窿簇ç°�篾篷簌篠糠糜糞糢糟糙ç³�縮績繆縷縲繃縫總縱繅ç¹�縴縹繈縵縿縯罄翳翼è�±è�²è�°è�¯è�³è‡†è‡ƒè†ºï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"������������������������������������������������臂臀膿膽臉膾臨舉艱薪�������薄蕾薜薑薔薯薛薇薨薊薦虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸������褽覬謎謗謙講謊謠è¬�謄è¬�è±�谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾�����轂轅輿é�¿é�½é‚„é‚�邂邀鄹醣醞醜é��鎂錨é�µé�Šé�¥é�‹éŒ˜é�¾é�¬é�›é�°é�šé�”闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵é¨�駿鮮鮫鮪鮭鴻鴿麋é»�點黜é»�黛鼾齋å�¢åš•嚮壙壘嬸å½�懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑ç€�燻燼燾燸ç�·ç�µç’§ç’¿ç”•癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織��\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"������������������������������������������������繕繞繚繡繒繙罈翹翻è�·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è�¶è‡�è‡�舊è—�è–©è—�è—�藉薰薺薹蟯蟬蟲蟠覆覲觴謨謹謬謫è±�贅蹙������蹣蹦蹤蹟蹕軀轉è½�邇邃邈醫醬é‡�鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔�����闖é—�闕離雜雙雛雞霤鞣鞦鞭韹é¡�é¡�題顎顓颺餾餿餽餮馥騎é«�鬃鬆é­�é­Žé­�鯊鯉鯽鯈鯀鵑éµ�鵠黠鼕鼬儳嚥嚨壞壟壢寵é¾�廬懲懷懶懵攀æ”�æ› æ›�æ«¥æ«�櫚櫓瀛瀟瀨瀚ç€�瀕瀘爆çˆ�牘犢ç�¸ç�ºç’½ç“Šç“£ç–‡ç–†ç™Ÿç™¡çŸ‡ç¤™ç¦±ç©«ç©©ç°¾ç°¿ç°¸ç°½ç°·ç±€ç¹«ç¹­ç¹¹ç¹©ç¹ªç¹³ç¾…羶羹羸臘藩è—�藪藕藤藥藷蟻蠅è �蟹蟾襠襟襖襞è­�譜識證譚��\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"������������������������������������������������譎è­�譆譙贈贊蹼蹲躇蹶�������蹬蹺蹴轔轎辭邊邋醱醮é�¡é�‘é�Ÿé�ƒé�ˆé�œé��é�–é�¢é��é�˜é�¤é�—é�¨é—œéš´ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é›£éœªéœ§é�¡éŸœéŸ»é¡žé¡˜é¡›é¢¼é¥…饉騖騙é¬�鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗�����麓麴勸嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲çˆ�ç�»ç“�癢癥礦礪礬礫竇競籌籃ç±�糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫è´�è´�躉èº�躅躂醴釋é�˜é�ƒé�½é—¡éœ°é£„饒饑馨騫騰騷騵鰓é°�鹹麵黨鼯齟齣齡儷儸å›�囀囂夔屬å·�懼懾æ”�攜斕曩櫻欄櫺殲ç�Œçˆ›çŠ§ç“–ç“”ç™©çŸ“ç±�çº�續羼��\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"������������������������������������������������蘗蘭蘚蠣蠢蠡蠟襪襬覽�������譴護譽贓躊èº�躋轟辯醺é�®é�³é�µé�ºé�¸é�²é�«é—¢éœ¸éœ¹éœ²éŸ¿é¡§é¡¥é¥—驅������驃驀騾é«�魔魑鰭鰥鶯鶴鷂鶸éº�黯鼙齜齦齧儼儻囈囊囉孿巔巒�����彎懿攤權歡ç�‘ç�˜çŽ€ç“¤ç–Šç™®ç™¬ç¦³ç± ç±Ÿè�¾è�½è‡Ÿè¥²è¥¯è§¼è®€è´–贗躑躓轡酈鑄鑑鑒霽霾韃éŸ�顫饕驕é©�髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬æ¬�瓚竊籤籣籥纓纖纔臢蘸蘿蠱變é‚�é‚�鑣鑠鑤é�¨é¡¯é¥œé©šé©›é©—髓體髑鱔鱗鱖鷥麟黴囑壩攬ç�žç™±ç™²çŸ—ç½�羈蠶蠹衢讓讒讖艷贛釀鑪é�‚é�ˆé�„韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷��\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"������������������������������������������������齲廳欖ç�£ç±¬ç±®è »è§€èº¡é‡��������鑲鑰顱饞髖鬣黌ç�¤çŸšè®šé‘·éŸ‰é©¢é©¥çºœè®œèºªé‡…鑽鑾鑼鱷鱸黷豔鑿������鸚爨驪鬱鸛鸞籲ソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ������ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶÐ�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ�⇧↸↹��䅚ク刂�冈�������������\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[221] = \"������������������������������������������������乂乜凵匚厂万丌乇äº�囗�������屮彳ä¸�冇与丮亓仂仉仈冘勼å�¬åŽ¹åœ å¤ƒå¤¬å°�巿旡殳毌气爿丱丼������仨仜仩仡ä»�仚刌刉匜å�Œåœ¢åœ£å¤—夯å®�宄尒尻屴屳帄庀庂忉戉æ‰������氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈ä¼�伂伅伢伓伄仴伒冱刓åˆ�劦匢匟å��厊å�‡å›¡å›Ÿåœ®åœªåœ´å¤¼å¦€å¥¼å¦…奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔å¿�扜扞扤扡扦扢扙扠扚扥攷旯旮朾朹朸朻机朿朼朳氘汆汒汜æ±�汊汔汋汌ç�±ç‰žçŠ´çŠµçŽŽç”ªç™¿ç©µç½‘è‰¸è‰¼èŠ€è‰½è‰¿è™�襾邙邗邘邛邔阢阤阠阣佖伻佢佉体��\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"������������������������������������������������佤伾佧佒佟ä½�佘伭伳伿�������佡å†�冹刜刞刡劭劮匉å�£å�²åŽŽåŽ�å�°å�·å�ªå‘”å‘…å�™å�œå�¥å�˜å�½å‘�å‘�å�¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�¤å‘‡å›®å›§å›¥å��å�…å�Œå�‰å�‹å�’夆奀妦妘妠妗妎妢å¦�å¦�妧妡宎宒尨�����尪å²�å²�岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈åº�å¼…å¼�彸彶忒忑å¿�忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎æŠ�抔抇扱扻扺扰æŠ�抈扷扽扲扴旰旴旳旲旵æ�…æ�‡æ�™æ�•æ�Œæ�ˆæ��æ��æ�šæ�‹æ¯�氙氚汸汧汫沄沋æ²�汱汯汩沚汭沇沕沜汦汳汥汻沎ç�´ç�ºç‰£çŠ¿çŠ½ç‹ƒç‹†ç‹�犺狅玕玗玓玔玒町甹疔疕çš�礽耴肕肙è‚�肒肜èŠ�èŠ�芅芎芑芓��\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"������������������������������������������������芊芃芄豸迉辿邟邡邥邞�������邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹ä¾�佸ä¾�������侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿å’�咑�����咂咈呫呺呾呥呬呴呦å’�呯呡呠咘呣呧呤囷囹å�¯å�²å�­å�«å�±å�°å�¶åž€å�µå�»å�³å�´å�¢å�¨å�½å¤Œå¥…妵妺å§�姎妲姌å§�妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧å²�岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢æ€�æ€�怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰��\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"������������������������������������������������抸攽斨斻昉旼昄昒昈旻�������昃昋æ˜�昅旽昑æ˜�曶朊枅æ�¬æžŽæž’æ�¶æ�»æž˜æž†æž„æ�´æž�枌æ�ºæžŸæž‘枙枃������æ�½æž�æ�¸æ�¹æž”欥殀歾毞æ°�沓泬泫泮泙沶泔沭泧沷æ³�泂沺泃泆泭�����泲泒æ³�沴沊æ²�沀泞泀洰æ³�泇沰泹æ³�泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬çŽ�ç“�瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵è‚�肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓è¿�迖迕迗邲邴邯邳邰阹阽阼阺陃ä¿�俅��\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"������������������������������������������������俓侲俉俋ä¿�俔俜俙侻侳�������俛俇俖侺俀侹俬剄剉勀勂匽å�¼åŽ—åŽ–åŽ™åŽ˜å’ºå’¡å’­å’¥å“�哃èŒ�咷咮������哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗åž�垛垔垘åž�垙垥垚�����垕壴å¤�奓姡姞姮娀姱å§�姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌å³�峘峌峗峋峛峞峚峉峇峊峖峓峔å³�峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹æ�”æ�²æ�žæ�…æ�“æ�‡æ�‰æ�›æ�Œæ�€æ�‚æ�Ÿæ€¤æ�„æ�˜æ�¦æ�®æ‰‚扃æ‹�æŒ�挋拵挎挃拫拹æŒ�挌拸拶挀挓挔拺挕拻拰æ•�敃斪斿昶昡昲昵昜昦昢昳昫昺æ˜�昴昹昮æœ�æœ�æŸ�柲柈��\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"������������������������������������������������枺柜枻柸柘柀枷柅柫柤�������柟枵æŸ�枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪������柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀�����æ´�浂æ´�洘洷洃æ´�浀洇洠洬洈洢洉æ´�炷炟炾炱炰炡炴炵炩ç‰�牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅ç�Œç�‚ç�ˆç�…玹玶玵玴ç�«çŽ¿ç�‡ç޾ç�ƒç�†çޏç�‹ç“¬ç“®ç”®ç•‡ç•ˆç–§ç–ªç™¹ç›„眈眃眄眅眊盷盻盺矧矨砆砑砒砅ç �ç �砎砉砃砓祊祌祋祅祄秕ç§�ç§�秖秎窀穾竑笀ç¬�籺籸籹籿粀ç²�紃紈ç´�罘羑ç¾�羾耇耎è€�耔耷胘胇胠胑胈胂èƒ�胅��\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"������������������������������������������������胣胙胜胊胕胉èƒ�胗胦èƒ��������臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺������苳苭虷虴虼虳è¡�衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇�����郋郈釔釓陔é™�陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢å‹�匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋åœ�圂埌堲埕埒垺埆垽垼垸垶垿埇åŸ�åž¹åŸ�夎奊娙娖娭娮娕å¨�娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧æ����\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"������������������������������������������������æ�šæ�§æ��悢悈悀悒æ‚�æ‚�悃�������悕悛悗悇悜悎戙扆拲æŒ�æ�–挬æ�„æ�…挶æ�ƒæ�¤æŒ¹æ�‹æ�ŠæŒ¼æŒ©æ��挴æ�˜æ�”������æ�™æŒ­æ�‡æŒ³æ�šæ�‘挸æ�—æ�€æ�ˆæ•Šæ•†æ—†æ—ƒæ—„旂晊晟晇晑朒朓栟栚桉栲�����栳栻桋æ¡�栖栱栜栵栫栭栯桎桄栴æ �栒栔栦栨栮æ¡�栺栥栠欬欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶æ´�浡涒浘浢浭浯涑æ¶�淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵æ¶�烜烓烑çƒ�烋缹烢烗烒烞烠烔çƒ�烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻çŒ�ç�“ç�™ç�¥ç�–玼ç�§ç�£ç�©ç�œç�’ç�›ç�”ç��ç�šç�—ç�˜ç�¨ç“žç“Ÿï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"������������������������������������������������瓴瓵甡畛畟疰ç—�疻痄痀�������疿疶疺皊盉çœ�眛çœ�眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡������砩砳砪砱祔祛ç¥�祜祓祒祑秫秬秠秮秭秪秜秞ç§�窆窉窅窋窌窊�����窇竘ç¬�笄笓笅ç¬�笈笊笎笉笒粄粑粊粌粈ç²�ç²…ç´žç´�紑紎紘紖紓紟紒ç´�紌罜罡罞罠ç½�罛羖羒翃翂翀耖耾耹胺胲胹胵è„�胻脀èˆ�舯舥茳茭è�„茙è�‘茥è�–茿è��茦茜茢è�‚è�ŽèŒ›èŒªèŒˆèŒ¼è��茖茤茠茷茯茩è�‡è�…è�Œè�“茞茬è�‹èŒ§è�ˆè™“虒蚢蚨蚖èš�蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎èš�èš�蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼��\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"������������������������������������������������訒豇豗豻貤貣赶赸趵趷�������趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤é…�é…Žé…�������釕釢釚陜陟隼飣髟鬯乿å�°å�ªå�¡å�žå� å�“å�‹å��å�²å�ˆå��å��å�›å�Šå�¢å€•�����å�…å�Ÿå�©å�«å�£å�¤å�†å�€å�®å�³å�—å�‘å‡�剫剭剬剮勖勓匭厜啵啶唼å•�å•�唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳åŸ�堇埮埣埲埥埬埡堎埼å �埧å �堌埱埩埰å �堄奜婠婘婕婧婞娸娵婭å©�婟婥婬婓婤婗婃å©�婒婄婛婈媎娾å©�娹婌婰婩婇婑婖婂婜孲孮å¯�寀屙崞崋å´�崚崠崌崨å´���\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"������������������������������������������������崦崥å´�崰崒崣崟崮帾帴�������庱庴庹庲庳弶弸徛徖徟悊æ‚�悆悾悰悺惓惔æƒ�惤惙æƒ�惈悱惛悷������惊悿惃æƒ�惀挲æ�¥æŽŠæŽ‚æ�½æŽ½æŽžæŽ­æŽ�掗掫掎æ�¯æŽ‡æŽ�æ�®æŽ¯æ�µæŽœæ�­æŽ®ï¿½ï¿½ï¿½ï¿½ï¿½æ�¼æŽ¤æŒ»æŽŸæ�¸æŽ…æŽ�掑æŽ�æ�°æ•“æ—�晥晡晛晙晜晢朘桹梇æ¢�梜桭桮梮梫楖桯梣梬梩桵桴梲æ¢�桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑æ®�æ®�殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜æ·�淛淴淊涽淭淰涺淕淂æ·�æ·‰æ·�淲淓淽淗æ·�淣涻烺ç„�烷焗烴焌烰焄烳ç„�烼烿焆焓焀烸烶焋焂焎��\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"������������������������������������������������牾牻牼牿çŒ�猗猇猑猘猊�������猈狿çŒ�猞玈ç�¶ç�¸ç�µç�„ç��ç�½ç�‡ç�€ç�ºç�¼ç�¿ç�Œç�‹ç�´ç�ˆç•¤ç•£ç—Žç—’ç—�痋������痌痑ç—�çš�皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉ç¡�硊硌砦硅ç¡������祤祧祩祪祣祫祡离秺秸秶秷çª�窔çª�笵笻笴笥笰笢笤笳笘笪ç¬�笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩çµ�絇紾紿絊紻紨罣羕羜ç¾�羛翊翋ç¿�ç¿�翑翇ç¿�翉耟耞耛è�‡è�ƒè�ˆè„˜è„¥è„™è„›è„­è„Ÿè„¬è„žè„¡è„•è„§è„�脢舑舸舳舺舴舲艴èŽ�莣莨èŽ�è�ºè�³èޤè�´èŽ�èŽ�莕莙è�µèŽ”èŽ©è�½èŽƒèŽŒèŽ�莛莪莋è�¾èŽ¥èŽ¯èŽˆèŽ—èŽ°è�¿èŽ¦èŽ‡èŽ®è�¶è™™ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"������������������������������������������������虖蚿蚷蛂è›�蛅蚺蚰蛈蚹�������蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬������袌袓袎覂觖觙觕訰訧訬訞谹谻豜è±�豽貥赽赻赹趼跂趹趿è·�軘�����軞è»�軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿é�ªé „飥馗傛傕傔傞傋傣傃傌傎å‚�å�¨å‚œå‚’傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈å–�å–µå–�喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦��\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"������������������������������������������������婼媥媬媕媮娷媄媊媗媃�������媋媩婻婽媌媜åª�媓åª�寪å¯�寋寔寑寊寎尌尰崷嵃嵫åµ�嵋崿崵嵑������嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄å¹�彘徦徥徫惉悹惌�����惢惎惄愔惲愊愖愅惵愓惸惼惾æƒ�愃愘æ„�æ„�惿愄愋扊掔掱掰æ�Žæ�¥æ�¨æ�¯æ�ƒæ’�æ�³æ�Šæ� æ�¶æ�•æ�²æ�µæ‘¡æ�ŸæŽ¾æ��æ�œæ�„æ�˜æ�“æ�‚æ�‡æ�Œæ�‹æ�ˆæ�°æ�—æ�™æ”²æ•§æ•ªæ•¤æ•œæ•¨æ•¥æ–Œæ–�æ–žæ–®æ—�旒晼晬晻暀晱晹晪晲æœ�椌棓椄棜椪棬棪棱æ¤�棖棷棫棤棶椓æ¤�棳棡椇棌椈楰梴椑棯棆椔棸æ£�棽棼棨椋椊椗棎棈æ£�棞棦棴棑椆棔棩椕椥棇欹欻��\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"������������������������������������������������欿欼殔殗殙殕殽毰毲毳�������氰淼湆湇渟湉溈渼渽湅湢渫渿æ¹�æ¹�湳渜渳湋湀湑渻渃渮湞湨������湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯�����烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌ç�®ç�¬ç�°ç�«ç�–ç�šç�¡ç�­ç�±ç�¤ç�£ç��ç�©ç� ç�²ç“»ç”¯ç•¯ç•¬ç—§ç—šç—¡ç—¦ç—�痟痤痗皕皒盚ç�†ç�‡ç�„ç��ç�…ç�Šç�Žç�‹ç�ŒçŸžçŸ¬ç¡ ç¡¤ç¡¥ç¡œç¡­ç¡±ç¡ªç¡®ç¡°ç¡©ç¡¨ç¡žç¡¢ç¥´ç¥³ç¥²ç¥°ç¨‚稊稃稌稄窙竦竤筊筇筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪çµ�絭絜絫絒絔絩絑絟��\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"������������������������������������������������絎缾缿罥罦羢羠羡翗è�‘�������è��è��胾胔腃腊腒è…�腇脽è…�脺臦臮臷臸臹舄舼舽舿艵茻è��è�¹è�£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è�€è�¨è�’è�§è�¤è�¼è�¶è��è�†è�ˆè�«è�£èŽ¿è��è��è�¥è�˜è�¿è�¡è�‹è�Žè�–è�µè�‰è�‰è�������è�žè�‘è�†è�‚è�³è�•è�ºè�‡è�‘è�ªè�“莚è�ƒè�¬è�®è�„è�»è�—è�¢è�›è�›è�¾è›˜è›¢è›¦è›“蛣蛚蛪è›�蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲è¤�裉覕覘覗è§�觚觛詎è©�訹詙詀詗詘詄詅詒詈詑詊詌è©�豟è²�貀貺貾貰貹貵趄趀趉跘跓è·�跇跖跜è·�跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻é„�鄀��\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"������������������������������������������������鄇鄅鄃酡酤酟酢酠éˆ�鈊�������鈥鈃鈚鈦éˆ�鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻é–�é–Œé–�隇陾������隈隉隃隀雂雈雃雱雰é�¬é�°é�®é ‡é¢©é£«é³¦é»¹äºƒäº„亶傽傿僆傮僄僊�����傴僈僂傰åƒ�傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌å—�å—‹å—Šå—�嗀嗔嗄嗩喿嗒å–�å—�嗕嗢嗖嗈嗲å—�嗙嗂圔塓塨塤å¡�å¡�塉塯塕塎å¡�塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶å«�媹åª�寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰å¹�幎幊å¹�幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯æ…�愩慀戠酨戣戥戤æ�…æ�±ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"������������������������������������������������æ�«æ��æ�’æ�‰æ� æ�¤æ�³æ‘ƒæ�Ÿæ�•�������æ�˜æ�¹æ�·æ�¢æ�£æ�Œæ�¦æ�°æ�¨æ‘�æ�µæ�¯æ�Šæ�šæ‘€æ�¥æ�§æ�‹æ�§æ�›æ�®æ�¡æ�Žæ•¯æ–’旓������暆暌暕æš�暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉�����椵楬椳椽楥棰楸椴楩楀楯楄楶楘æ¥�楴楌椻楋椷楜æ¥�楑椲楒椯楻椼歆歅歃歂歈æ­�殛毻毼毹毷毸溛滖滈æº�滀溟溓溔溠溱溹滆滒溽æ»�溞滉溷溰æ»�溦æ»�溲溾滃滜滘溙溒溎æº�溤溡溿溳æ»�滊溗溮溣煇煔煒煣煠ç…�ç…�煢煲煸煪煡煂煘煃煋煰煟ç…�ç…“ç…„ç…�ç…šç‰�çŠ�犌犑çŠ�犎猼ç�‚猻猺ç�€ç�Šç�‰ç‘„瑊瑋瑒瑑瑗瑀ç‘�ç‘�瑎��\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"������������������������������������������������瑂瑆ç‘�瑔瓡瓿瓾瓽ç”�畹�������畷榃痯ç˜�瘃痷痾痼痹痸ç˜�痻痶痭痵痽皙皵ç›�ç�•ç�Ÿç� ç�’ç�–ç�šç�©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�§ç�”ç�™ç�­çŸ ç¢‡ç¢šç¢”ç¢�碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘�����稙稒稗稕稢稓稛ç¨�窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀ç¶�絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡èˆ�艉艄艀艂艅蓱è�¿è‘–葶葹è’�è’�葥葑葀蒆葧è�°è‘�葽葚葙葴葳è‘�蔇葞è�·è�ºè�´è‘ºè‘ƒè‘¸è�²è‘…è�©è�™è‘‹è�¯è‘‚è�­è‘Ÿè‘°è�¹è‘Žè‘Œè‘’葯蓅蒎è�»è‘‡è�¶è�³ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"������������������������������������������������葨葾葄è�«è‘ è‘”è‘®è‘�蜋蜄�������蛷蜌蛺蛖蛵è��蛸蜎蜉èœ�è›¶èœ�蜅裖裋è£�裎裞裛裚裌è£�覅覛觟觥������觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃èª�詴詺谼豋豊豥豤豦貆�����貄貅賌赨赩趑趌趎è¶�è¶�è¶“è¶”è¶�趒跰跠跬跱跮è·�跩跣跢跧跲跫跴輆軿è¼�輀輅輇輈輂輋é�’逿é�„é�‰é€½é„�é„�é„�鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬é‰�鉠鉧鉯鈶鉡鉰鈱鉔鉣é‰�鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵é�³é�·é�¸é�²é �é �頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪åƒ�僤��\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"������������������������������������������������僓僬僰僯僣僠凘劀åŠ�勩�������勫匰厬嘧嘕嘌嘒嗼å˜�嘜å˜�嘓嘂嗺å˜�嘄嗿嗹墉塼å¢�墘墆å¢�塿塴������墋塺墇墑墎塶墂墈塻墔å¢�壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬�����嫞å«�嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺å¶�嵷嶊嶉嶈嵾嵼å¶�嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨æ…�慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫æ�«æ‘�æ‘›æ‘�摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠æ‘�æ‘¿æ�¿æ‘¬æ‘«æ‘™æ‘¥æ‘·æ•³æ– æš¡æš æšŸæœ…朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧æ¦�榩榾榯榿槄榽榤槔榹槊榚æ§�榳榓��\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"������������������������������������������������榪榡榞槙榗æ¦�槂榵榥槆�������歊æ­�歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒������滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟æ¼�漞漈�����漡熇ç†�熉熀熅熂ç†�煻熆ç†�熗牄牓犗犕犓ç�ƒç��ç�‘ç�Œç‘¢ç‘³ç‘±ç‘µç‘²ç‘§ç‘®ç”€ç”‚甃畽ç–�瘖瘈瘌瘕瘑瘊瘔皸çž�ç�¼çž…çž‚ç�®çž€ç�¯ç�¾çžƒç¢²ç¢ªç¢´ç¢­ç¢¨ç¡¾ç¢«ç¢žç¢¥ç¢ ç¢¬ç¢¢ç¢¤ç¦˜ç¦Šç¦‹ç¦–禕禔禓禗禈禒ç¦�稫穊稰稯稨稦窨窫窬竮箈箜箊箑ç®�ç®–ç®�箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪ç·�緀緅ç¶�緎緄緆緋緌綯綹綖綼綟綦綮綩��\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"������������������������������������������������綡緉罳翢翣翥翞耤è��è�œï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è†‰è††è†ƒè†‡è†�膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴è“�è“�蒪蒚蒱è“�������è’�蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶è“�蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨�����è�«è�€èœ®èœžèœ¡èœ™èœ›è�ƒèœ¬è��蜾è�†èœ èœ²èœªèœ­èœ¼èœ’蜺蜱蜵è�‚蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫è¦�覡覟覞觩觫觨誫誙誋誒èª�誖谽豨豩賕è³�賗趖踉踂跿è¸�跽踊踃踇踆踅跾踀踄è¼�輑輎è¼�鄣鄜鄠鄢鄟é„�鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪éŠ�銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩éŠ���\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"������������������������������������������������銋鈭隞隡雿é�˜é�½é�ºé�¾éžƒï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éž€éž‚é�»éž„éž�é�¿éŸŽéŸ�頖颭颮餂餀餇é¦�馜駃馹馻馺駂馽駇骱髣髧������鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈�����噂噌嘵å™�噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫å¢�墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹å¬�嬇嬅å¬�屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩å¹�幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡æ†�慦憳戭摮摰撖撠撅撗撜æ’�撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛æ¨���\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"������������������������������������������������槾樧槲槮樔槷槧橀樈槦�������槻æ¨�槼槫樉樄樘樥æ¨�槶樦樇槴樖歑殥殣殢殦æ°�氀毿氂æ½�漦潾������澇濆澒æ¾�澉澌潢æ½�澅潚澖潶潬澂潕潲潒æ½�潗澔澓æ½�漀潡潫潽�����潧æ¾�潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵ç†�熥熞熤熡熪熜熧熳犘犚ç�˜ç�’ç�žç�Ÿç� ç��ç�›ç�¡ç�šç�™ç�¢ç’‡ç’‰ç’Šç’†ç’�瑽璅璈瑼瑹甈甇畾瘥瘞瘙ç˜�瘜瘣瘚瘨瘛皜çš�çšžçš›çž�çž�瞉瞈ç£�碻ç£�磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫��\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"������������������������������������������������翪翬翦翨è�¤è�§è†£è†Ÿè†žè†•�������膢膙膗舖è‰�艓艒è‰�艎艑蔤蔻è”�蔀蔩蔎蔉è”�蔟蔊蔧蔜蓻蔫蓺蔈������蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨è”�蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰�����蓯蓹蔘蔠蔰蔋蔙蔯虢è�–è�£è�¤è�·èŸ¡è�³è�˜è�”è�›è�’è�¡è�šè�‘è�žè�­è�ªè��è�Žè�Ÿè��è�¯è�¬è�ºè�®è�œè�¥è��è�»è�µè�¢è�§è�©è¡šè¤…褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬è«�諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾è±�è²�賥賟賙賨賚è³�賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗é�³é�°é�¯é�§é�«é„¯é„«é„©ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"������������������������������������������������鄪鄲鄦鄮醅醆醊é†�醂醄�������醀é‹�鋃鋄鋀鋙銶é‹�鋱鋟鋘鋩鋗é‹�鋌鋯鋂鋨鋊鋈鋎鋦é‹�鋕鋉鋠������鋞鋧鋑鋓銵鋡錥鋆銴镼閬閫閮閰隤隢雓霅霈霂é�šéžŠéžŽéžˆéŸ�éŸ������頞é �頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜é§�é§�駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓é¼�é¼�儜儓儗儚儑凞匴å�¡å™°å™ å™®å™³å™¦å™£å™­å™²å™žå™·åœœåœ›å£ˆå¢½å£‰å¢¿å¢ºå£‚墼壆嬗嬙嬛嬡嬔嬓å¬�嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋��\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"������������������������������������������������徼徻æ†�憨憖懅憴懆æ‡�懌�������憺憿憸憌擗擖æ“�æ“�擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋æ›�暽������暻暺曌朣樴橦橉橧樲橨樾æ©�橭橶橛橑樨橚樻樿æ©�橪橤æ©�æ©�橔�����橯橩橠樼橞橖橕æ©�橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪æ¿�澿澸澢濉澫æ¿�澯澲澰燅燂熿熸燖燀ç‡�燋燔燊燇ç‡�熽燘熼燆燚燛çŠ�犞ç�©ç�¦ç�§ç�¬ç�¥ç�«ç�ªç‘¿ç’šç’ ç’”璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚çž�瞡瞜瞛瞢瞣瞕瞙瞗ç£�磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵��\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"������������������������������������������������窱窷篞篣篧ç¯�篕篥篚篨�������篹篔篪篢篜篫篘篟糒糔糗ç³�糑縒縡縗縌縟縠縓縎縜縕縚縢縋������ç¸�縖ç¸�縔縥縤罃罻罼罺羱翯耪耩è�¬è†±è†¦è†®è†¹è†µè†«è†°è†¬è†´è†²è†·ï¿½ï¿½ï¿½ï¿½ï¿½è†§è‡²è‰•艖艗蕖蕅蕫è•�蕓蕡蕘蕀蕆蕤è•�蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦è•�蕔蕥蕬虣虥虤螤螛èž�螗螓螒螈èž�螖螘è�¹èž‡èž£èž…èž�èž‘èž�螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵è«�謔諤諟諰諈諞諡諨諿諯諻貑貒è²�賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽è¹�踰踿躽輶輮輵輲輹輷輴é�¶é�¹é�»ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"������������������������������������������������邆郺鄳鄵鄶醓é†�醑é†�é†��������錧錞錈錟錆éŒ�é�ºéŒ¸éŒ¼éŒ›éŒ£éŒ’éŒ�é�†éŒ­éŒŽéŒ�é‹‹éŒ�鋺錓鋹鋷錴錂錤������鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼é—�閾閹閺閶閿閵閽隩雔霋霒�����éœ�鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒é®�魺鮕魽鮈鴥鴗鴠鴞鴔鴩é´�鴘鴢é´�鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌åš�嚆嚄嚃噾嚂噿åš�壖壔å£�壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨æ–�斀斶旚曒æª���\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"������������������������������������������������檖æª�檥檉檟檛檡檞檇檓�������檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲������æ¿�濢濨燡燱燨燲燤燰燢ç�³ç�®ç�¯ç’—璲璫ç’�璪璭璱璥璯ç”�甑甒ç”������疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磿磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀ç«�ç°…ç°�篲簀篿篻簎篴簋篳簂簉簃ç°�篸篽簆篰篱ç°�簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀è–�薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆è–�è–™è–�è–�薢薂薈薅蕹��\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"������������������������������������������������蕶薘è–�薟虨螾螪螭蟅螰�������螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾è¥�襒������褷襂覭覯覮觲觳謞謘謖謑謅謋謢è¬�謒謕謇è¬�謈謆謜謓謚è±�豰�����豲豱豯貕貔賹赯蹎è¹�蹓è¹�蹌蹇轃轀邅é�¾é„¸é†šé†¢é†›é†™é†Ÿé†¡é†�醠鎡鎃鎯é�¤é�–é�‡é�¼é�˜é�œé�¶é�‰é��é�‘é� é�­éŽ�é�Œé�ªé�¹é�—é�•é�’é��é�±é�·é�»é�¡é�žé�£é�§é�Žé�™é—‡é—€é—‰é—ƒé—…閷隮隰隬霠霟霘éœ�霙鞚鞡鞜鞞éž�韕韔韱é¡�顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽é¬�髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆��\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"������������������������������������������������鮢鮠鮯鴳éµ�鵧鴶鴮鴯鴱�������鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉éº�麰黈黚黻黿鼤鼣鼢齔龠儱儭������儮嚘嚜嚗嚚åš�嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄�����擽擸æ”�攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌ç€�ç€�瀅瀔瀎濿瀀濻瀦濼濷瀊çˆ�燿燹爃燽ç�¶ç’¸ç“€ç’µç“�璾璶璻瓂甔甓癜癤癙ç™�癓癗癚皦皽盬矂瞺礌礓礔礉ç¤�礒礑禭禬穟簜簩簙簠簟簭ç°�簦簨簢簥簰繜ç¹�繖繣繘繢繟繑繠繗繓羵羳翷翸è�µè‡‘臒è‡�艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶��\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\tD[254] = \"������������������������������������������������藒蘤薸薷薾虩蟧蟦蟢蟛�������蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣蟗蟙è �蟴蟨èŸ�襓襋è¥�襌襆è¥�襑襉������謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾�����贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡è¹�蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛éŽ�鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎀éŽ�鎱鎑鎲鎤鎨鎴鎣闒闓闑隳雗雚巂雟雘é›�霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺é¡�顑顒颸é¥�餼餺é¨�騋騉é¨�騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿é¯�鮵鮸鯓鮶鯄鮹鮽鵜鵓éµ�鵊鵛鵋��\".split(\"\");\n\t\tfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20003] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€��������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"���������������������������������������������������������������� ã€�。,․•:;?ï¼���‵′¨˄‾_ヽヾã‚�ゞ〃〄々〆〇ー–—ï¼�\∼∥∣…‥‘’“â€�()〔〕[]{ï½�〈〉《》「ã€�『ã€�ã€�】+ï¼�±×�÷ï¼�≠<>≦≧∞∴♂♀゜��℃¥$¢£%#&✽@§☆★○â—�◎◇◆□■△▲▽▼※〒→â†�↑↓������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"�������������������������������������������������������������������������������ï¼�123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ�������ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz����ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�­ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん��������������\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミ�ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ��������ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω�����������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"����������������������������������������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмн�опрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[135] = \"������������������������������������������������������������������丶丿�亅�亠����冂冖冫����勹��匸��å�©ï¿½åŽ¶ï¿½ï¿½ï¿½ï¿½ï¿½å¤‚ï¿½ï¿½ï¿½ï¿½å®€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å·›ï¿½ï¿½ï¿½ï¿½å¹ºå¹¿å»´ï¿½ï¿½ï¿½å½�彡�������攴����无��������������������������������疒癶��������������������������������������������������������辵��������隶���������������������\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[137] = \"����������������������������������������������������������������〡〢〣〤〥〦〧〨〩�å�„�����˟ˊˇˋ˙ㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ��������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩������⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽�����â–�▂▃▄▅▆▇█â–�â–Žâ–�▌▋▊▉┼┴┬┤├▔─│▕┌â”�└┘╭╮╰╯�â•�╞╪╡◢◣◥◤╱╲╳��������������������ï¹�﹂﹃﹄︻︼�︲︳�︴ï¹�︵︶︷︸︹︺︽︾︿﹀��*"㊣℅��﹉﹊ï¹�﹎﹋﹌﹡√≒≡∩∪⊥∠∟⊿ã�’ã�‘∫∮⊕⊙↖↗↙↘∵��℉ã�•㎜ãŽ�㎞ã�ŽãŽ¡ãŽŽãŽ�ã�„﹒���ã€�〞���⇧↸↹兙兛兞å…�兡兣嗧瓩糎�������\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"�����������������������������������������������������������������ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ¬¦��㈱№℡��������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"����������������������������������������������������������������一乙ä¸�七乃ä¹�了二人儿入八几刀åˆ�力匕å��å�œå�ˆä¸‰ä¸‹ä¸ˆä¸Šä¸«ä¸¸å‡¡ä¹…么也乞于亡兀刃勺å�ƒå�‰å�£åœŸå£«å¤•大女å­�孑孓寸å°�尢尸山å·�工己已巳巾干廾弋弓æ‰��丑ä¸�ä¸�中丰丹之尹予云井互五亢ä»�什仃仆仇ä»�今介仄元å…�內六兮公冗凶分切刈勻勾勿化匹å�ˆå�‡å�…å�žåŽ„å�‹å�Šå��壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛æ°�æ°´ç�«çˆªçˆ¶çˆ»ç‰‡ç‰™ç‰›çŠ¬çŽ‹ä¸™ä¸–ä¸•ä¸”ä¸˜ä¸»ä¹�ä¹�乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆���\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"����������������������������������������������������������������北åŒ�仟å�Šå�‰å�¡å� å�¯å�®åŽ»å�¯å�¤å�³å�¬å�®å�©å�¨å�¼å�¸å�µå�«å�¦å�ªå�²å�±å�°å�¥å�­å�»å››å›šå¤–央失奴奶孕它尼巨巧左市布平幼å¼�弘弗必戊打扔扒扑斥旦朮本未末札正�æ¯�æ°‘æ°�æ°¸æ±�汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕ä¼�ä¼�休ä¼�仲件任仰仳份ä¼�伋光兇兆先全共å†�冰列刑划刎刖劣匈匡匠å�°å�±å�‰å��å�Œå�Šå��å��å�‹å�„å�‘å��å�ˆå�ƒå�Žå�†å�’因回å›�圳地在圭圬圯圩夙多夷夸妄奸妃好她如å¦�字存宇守宅安寺尖屹州帆并���\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"����������������������������������������������������������������年å¼�弛忙忖戎戌æˆ�æˆ�扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖æ±�汗汙江池æ±�汕污汛æ±�汎ç�°ç‰Ÿç‰�百竹米糸缶羊羽è€�考而耒耳è�¿è‚‰è‚‹è‚Œè‡£è‡ªè‡³è‡¼èˆŒï¿½èˆ›èˆŸè‰®è‰²è‰¾è™«è¡€è¡Œè¡£è¥¿é˜¡ä¸²äº¨ä½�ä½�佇佗佞伴佛何估ä½�佑伽伺伸佃佔似但佣作你伯低伶余ä½�佈佚兌克å…�兵冶冷別判利刪刨劫助努劬匣å�³å�µå��å�­å�žå�¾å�¦å‘Žå�§å‘†å‘ƒå�³å‘ˆå‘‚å�›å�©å‘Šå�¹å�»å�¸å�®å�µå�¶å� å�¼å‘€å�±å�«å�Ÿå�¬å›ªå›°å›¤å›«å�Šå�‘å�€å��å�‡å�Žåœ¾å��å��圻壯夾å¦�妒妨妞妣妙妖å¦�妤妓妊妥å­�孜孚孛完宋å®�尬局å±����\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"����������������������������������������������������������������尿尾å²�岑岔岌巫希åº�庇床廷弄弟彤形彷役忘忌志å¿�忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更æ�Ÿæ�Žæ��æ��æ�‘æ�œæ�–æ�žæ�‰æ�†ï¿½æ� æ�“æ�—æ­¥æ¯�求汞沙æ²�沈沉沅沛汪決æ²�汰沌汨沖沒汽沃汲汾汴沆汶æ²�沔沘沂ç�¶ç�¼ç�½ç�¸ç‰¢ç‰¡ç‰ ç‹„狂玖甬甫男甸皂盯矣ç§�秀禿究系罕肖肓è‚�肘肛肚育良芒芋èŠ�見角言谷豆豕è²�赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯ä¾�ä¾�佳使佬供例來侃佰併侈佩佻侖佾ä¾�侑���\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"����������������������������������������������������������������佺兔兒兕兩具其典冽函刻券刷刺到刮制å‰�劾劻å�’å�”å�“å�‘å�¦å�·å�¸å�¹å�–å�”å�—味呵咖呸咕咀呻呷咄咒咆呼å’�呱呶和咚呢周咋命咎固垃å�·å�ªå�©å�¡å�¦å�¤å�¼å¤œï¿½å¥‰å¥‡å¥ˆå¥„奔妾妻委妹妮姑姆å§�å§�始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往å¾�彿彼å¿�忠忽念忿æ€�怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押æ‹�拙拇æ‹�抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀æ˜����\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"����������������������������������������������������������������昕昊昇æœ�朋æ�­æž‹æž•æ�±æžœæ�³æ�·æž‡æž�æž—æ�¯æ�°æ�¿æž‰æ�¾æž�æ�µæžšæž“æ�¼æ�ªæ�²æ¬£æ­¦æ­§æ­¿æ°“氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油æ³�沮泗泅泱沿治泡泛泊沬泯泜�泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗ç‹�玩玨玟玫玥甽ç–�疙疚的盂盲直知矽社祀ç¥�秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾èˆ�芳èŠ�芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱åˆ�表軋迎返近邵邸邱邶采金長門阜陀阿阻附陂隹雨é�’é�žäºŸäº­äº®ä¿¡ä¾µä¾¯ä¾¿ä¿ ä¿‘ä¿�ä¿�促侶俘俟俊俗侮ä¿�俄係俚俎俞���\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"����������������������������������������������������������������侷兗冒冑冠剎剃削å‰�剌剋則勇勉勃å‹�åŒ�å�—å�»åŽšå�›å’¬å“€å’¨å“Žå“‰å’¸å’¦å’³å“‡å“‚咽咪å“�哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契å¥�奎å¥�姜姘姿姣姨娃�姥姪姚姦å¨�姻孩宣宦室客宥å°�屎å±�å±�屋峙峒巷å¸�帥帟幽庠度建弈弭彥很待徊律徇後徉怒æ€�怠急怎怨æ��æ�°æ�¨æ�¢æ�†æ�ƒæ�¬æ�«æ�ªæ�¤æ‰�拜挖按拼拭æŒ�拮拽指拱拷拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔æŸ�柬架枯柵柩柯柄柑枴柚查枸æŸ�柞柳枰柙柢æŸ�柒歪殃殆段毒毗氟泉洋洲洪æµ�津洌���\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"����������������������������������������������������������������洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷ç�ŠçŽ»çŽ²ç��ç�€çŽ³ç”šç”­ç•�界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅çœ�盹相眉�看盾盼眇矜砂研砌ç �祆祉祈祇禹禺科秒秋穿çª�竿竽籽紂紅紀紉紇約紆缸美羿耄è€�è€�耑耶胖胥胚胃胄背胡胛胎胞胤èƒ�致舢苧范茅苣苛苦茄若茂茉苒苗英èŒ�苜苔苑苞苓苟苯茆è™�虹虻虺è¡�è¡«è¦�觔計訂訃貞負赴赳趴è»�軌述迦迢迪迥迭迫迤迨郊郎éƒ�郃酋酊é‡�é–‚é™�陋陌é™�é�¢é�©éŸ‹éŸ­éŸ³é �風飛食首香乘���\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"����������������������������������������������������������������亳倌å€�倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢å‡�凌准凋剖剜剔剛å‰�匪å�¿åŽŸåŽ�å�Ÿå“¨å”�å”�唷哼哥哲唆哺唔哩哭員�唉哮哪哦唧唇哽å”�圃圄埂埔埋埃堉å¤�套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展å±�峭峽峻峪峨峰島å´�峴差席師庫庭座弱徒徑å¾�æ�™æ�£æ�¥æ��æ�•æ�­æ�©æ�¯æ‚„悟悚æ‚�悔悌悅悖扇拳挈拿æ�ŽæŒ¾æŒ¯æ�•æ�‚æ�†æ��æ�‰æŒºæ��挽挪挫挨æ��æ�Œæ•ˆæ•‰æ–™æ—�旅時晉æ™�晃晒晌晅æ™�書朔朕朗校核案框桓根桂���\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"����������������������������������������������������������������桔栩梳栗桌桑栽柴æ¡�桀格桃株桅栓栘æ¡�殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈çƒ�爹特狼狹狽狸狷玆ç�­ç�‰ï¿½ç�®ç� ç�ªç�žç•”ç•�畜畚留疾病症疲疳疽疼疹痂疸皋皰益ç›�盎眩真眠眨矩砰砧砸ç �破砷砥砭砠砟砲祕ç¥�祠祟祖神ç¥�祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純ç´�ç´•ç´šç´œç´�紙紛缺罟羔翅ç¿�耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀èˆ�航舫舨般芻茫è�’è�”è�ŠèŒ¸è��è�‰èŒµèŒ´è��茲茹茶茗���\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"����������������������������������������������������������������è�€èŒ±èŒ¨è�ƒè™”蚊蚪蚓蚤蚩蚌蚣蚜衰衷è¢�袂衽衹記è¨�討訌訕訊託訓訖è¨�訑豈豺豹財貢起躬軒軔è»�è¾±é€�逆迷退迺迴逃追逅迸邕郡éƒ�郢酒é…�酌釘é‡�釗釜釙�閃院陣陡陛é™�除陘陞隻飢馬骨高鬥鬲鬼乾å�ºå�½å�œå�‡å�ƒå�Œå�šå�‰å�¥å�¶å�Žå�•å�µå�´å�·å��å€�å�¯å�­å…œå†•凰剪副勒務勘動åŒ�åŒ�匙匿å�€åŒ¾å�ƒæ›¼å•†å•ªå•¦å•„啞啡啃啊唱啖å•�啕唯啤唸售啜唬啣唳å•�啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶å©�婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜å±�崇崆崎崛崖崢崑崩崔���\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"����������������������������������������������������������������崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜æ�¿æ‚£æ‚‰æ‚ æ‚¨æƒ‹æ‚´æƒ¦æ‚½æƒ…悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控æ�²æŽ–探接æ�·æ�§æŽ˜æŽªæ�±æŽ©ï¿½æŽ‰æŽƒæŽ›æ�«æŽ¨æŽ„授掙採掬排æŽ�掀æ�»æ�©æ�¨æ�ºæ•�敖救教敗啟æ•�敘敕敔斜斛斬æ—�旋旌旎æ™�晚晤晨晦晞曹勗望æ¢�梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔æ¢�梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽çŠ�猜猛猖猓猙率ç�…ç�Šç�ƒï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"����������������������������������������������������������������ç�†ç�¾ç��瓠瓶瓷甜產略畦畢異ç–�痔痕疵痊ç—�皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽�羞羚翌翎習耜è�Šè�†è„¯è„–脣脫脩脰脤舂舵舷舶船莎莞莘è�¸èŽ¢èŽ–èŽ½èŽ«èŽ’èŽŠèŽ“èŽ‰èŽ è�·è�»è�¼èŽ†èŽ§è™•å½ªè›‡è›€èš¶è›„èšµè›†è›‹èš±èš¯è›‰è¡“è¢žè¢ˆè¢«è¢’è¢–è¢�袋覓è¦�訪è¨�訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這é€�通逗連速é€�é€�逕逞造é€�逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟���\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"����������������������������������������������������������������頂頃魚鳥鹵鹿麥麻傢å‚�傅備傑傀傖傘傚最凱割剴創剩勞å‹�å‹›å�šåŽ¥å•»å–€å–§å•¼å–Šå–�喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙åœ�堯堪場堤堰報堡�å �堠壹壺奠婷媚婿媒媛媧孳孱寒富寓å¯�尊尋就嵌åµ�崴嵇巽幅帽幀幃幾廊å»�廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌æ��æ�€æ�©æ�‰æ�†æ��æ�’æ�£æ��æ�¡æ�–æ�­æ�®æ�¶æ�´æ�ªæ�›æ‘’æ�šæ�¹æ•žæ•¦æ•¢æ•£æ–‘æ–�斯普晰晴晶景暑智晾晷曾替期æœ�棺棕棠棘棗椅棟棵森棧棹棒棲棣棋æ£�æ¤�椒椎棉棚楮棻���\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"����������������������������������������������������������������款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴æ¹�渺測湃æ¸�渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩ç�ºç�ªç�³ï¿½ç�¢ç�¥ç�µç�¶ç�´ç�¯ç�›ç�¦ç�¨ç”¥ç”¦ç•«ç•ªç—¢ç—›ç—£ç—™ç—˜ç—žç— ç™»ç™¼çš–皓皴盜ç��短ç¡�硬硯ç¨�稈程稅稀窘窗窖童竣等策筆ç­�ç­’ç­”ç­�ç­‹ç­�筑粟粥絞çµ�絨絕紫絮絲絡給絢絰絳善翔翕耋è�’肅腕腔腋腑腎脹腆脾腌腓腴舒舜è�©è�ƒè�¸è��è� è�…è�‹è��è�¯è�±è�´è‘—è�Šè�°è�Œè�Œè�½è�²è�Šè�¸è�Žè�„è�œè�‡è�”è�Ÿè™›è›Ÿè›™è›­è›”蛛蛤è›�蛞街è£�裂袱覃視���\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"����������������������������������������������������������������註詠評詞証è©�詔詛è©�詆訴診訶詖象貂貯貼貳貽è³�費賀貴買貶貿貸越超è¶�è·Žè·�跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥é‡�鈔鈕鈣鈉鈞éˆ�éˆ��鈇鈑閔é–�開閑間閒閎隊階隋陽隅隆éš�陲隄é›�雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃é»�黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧å«�嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚æ„�慈感想愛惹æ„�愈慎慌慄���\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"����������������������������������������������������������������æ…�愾愴愧æ„�愆愷戡戢æ�“æ�¾æ�žæ�ªæ�­æ�½æ�¬æ��æ�œæ�”æ��æ�¶æ�–æ�—æ�†æ•¬æ–Ÿæ–°æš—暉暇暈暖暄暘æš�會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆æ¥�楣楛歇歲毀殿毓毽溢溯�滓溶滂æº�æº�滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷ç�…猿猾瑯瑚瑕瑟瑞ç‘�ç�¿ç‘™ç‘›ç‘œç•¶ç•¸ç˜€ç—°ç˜�痲痱痺痿痴痳盞盟ç�›ç�«ç�¦ç�žç�£ç�¹ç�ªç�¬ç�œç�¥ç�¨ç�¢çŸ®ç¢Žç¢°ç¢—碘碌碉硼碑碓硿祺祿ç¦�è�¬ç¦½ç¨œç¨šç¨ ç¨”稟稞窟窠筷節筠筮筧粱粳粵經絹綑ç¶�ç¶�絛置罩罪署義羨群è�–è�˜è‚†è‚„���\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"����������������������������������������������������������������腱腰腸腥腮腳腫腹腺腦舅艇蒂葷è�½è�±è‘µè‘¦è‘«è‘‰è‘¬è‘›è�¼è�µè‘¡è‘£è‘©è‘­è‘†è™žè™œè™Ÿè›¹èœ“蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘è£�裡裊裕裒覜解詫該詳試詩詰誇�詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊辟農é�‹é�Šé�“é�‚é�”逼é�•é��é�‡é��é�Žé��é�‘逾é��鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉é‰�鉅鈹鈿鉚閘隘隔隕é›�雋雉雊雷電雹零é�–é�´é�¶é �頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕åƒ�僑僱僎僩兢���\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"����������������������������������������������������������������凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉å˜�嘎嗷嘖嘟嘈å˜�嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察å°�屢嶄嶇幛幣幕幗幔�廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧æ�´æ‘­æ‘»æ•²æ–¡æ——旖暢暨æš�榜榨榕æ§�榮槓構榛榷榻榫榴æ§�æ§�榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬æ¼�漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬æ¼�滲滌滷熔熙煽熊熄熒爾犒犖ç�„ç��瑤瑣瑪瑰瑭甄疑瘧ç˜�瘋瘉瘓盡監瞄ç�½ç�¿ç�¡ç£�碟碧碳碩碣禎ç¦�ç¦����\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"����������������������������������������������������������������種稱窪窩竭端管箕箋筵算ç®�ç®”ç®�箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟è�žè�šè‚‡è…�膀è†�膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄�蒙蒞蒲蒜蓋蒸蓀蓓è’�蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘è�•蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣èª�誡誓誤說誥誨誘誑誚誧豪è²�貌賓賑賒赫趙趕跼輔輒輕輓辣é� é�˜é�œé�£é�™é�žé�¢é��é�›é„™é„˜é„žé…µé…¸é…·é…´é‰¸éŠ€éŠ…éŠ˜éŠ–é‰»éŠ“éŠœéŠ¨é‰¼éŠ‘é–¡é–¨é–©é–£é–¥é–¤éš™éšœéš›é›Œé›’éœ€é�¼éž…韶頗領颯颱餃餅餌餉é§�骯骰髦é­�魂鳴鳶鳳麼鼻齊億儀���\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"����������������������������������������������������������������僻僵價儂儈儉儅凜劇劈劉åŠ�劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履å¶�嶔幢幟幡廢廚廟å»�廣廠彈影�德徵慶慧慮æ…�慕憂慼慰慫慾憧æ†�憫憎憬憚憤憔憮戮摩摯摹撞撲撈æ’�撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨æ¨�樞標槽模樓樊槳樂樅槭樑æ­�歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛ç�Žç�—瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾���\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"����������������������������������������������������������������磕碼ç£�稿稼穀稽稷稻窯窮箭箱範箴篆篇ç¯�箠篌糊締練緯緻緘緬ç·�編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜è†�膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆�螂è�´è�¶è� è�¦è�¸è�¨è�™è�—è�Œè�“è¡›è¡�è¤�複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論è«�誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫è¸�è¸�踢è¸�踩踟踡踞躺è¼�輛輟輩輦輪輜輞輥é�©é�®é�¨é�­é�·é„°é„­é„§é„±é†‡é†‰é†‹é†ƒé‹…銻銷鋪銬鋤é‹�銳銼鋒鋇鋰銲閭閱霄霆震霉é� éž�éž‹éž�頡頫頜颳養餓餒餘é§�é§�駟駛駑駕駒駙骷���\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"����������������������������������������������������������������髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔å„�儕冀冪å‡�劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶å£�墾壇壅奮å¬�嬴學寰導彊憲憑憩憊æ‡�憶憾懊懈戰擅æ“��擋撻撼據擄擇擂æ“�撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡濃澤æ¿�澧澳激澹澶澦澠澴熾燉ç‡�燒燈燕熹燎燙燜燃燄ç�¨ç’œç’£ç’˜ç’Ÿç’žç“¢ç”Œç”�瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦ç©�穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞ç¸�縉ç¸�罹羲翰翱翮耨膳膩膨臻興艘艙蕊���\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"����������������������������������������������������������������蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢èž�衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾è¬�謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦é�µé�´é�¸é�²é�¼é�ºé„´é†’錠�錶鋸錳錯錢鋼錫錄錚éŒ�錦錡錕錮錙閻隧隨險雕霎霑霖éœ�霓éœ�é�›é�œé�¦éž˜é °é ¸é »é ·é ­é ¹é ¤é¤�館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔é¾�龜優償儡儲勵嚎嚀åš�嚅嚇åš�壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗æª�檠歜殮毚���\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"����������������������������������������������������������������氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆ç�°ç�²ç’©ç’°ç’¦ç’¨ç™†ç™‚癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯ç¤�禧禪穗窿簇ç°�篾篷簌篠糠糜糞糢�糟糙ç³�縮績繆縷縲繃縫總縱繅ç¹�縴縹繈縵縿縯罄翳翼è�±è�²è�°è�¯è�³è‡†è‡ƒè†ºè‡‚臀膿膽臉膾臨舉艱薪薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠è¬�謄è¬�è±�谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿é�¿é�½é‚„é‚�邂邀鄹醣醞醜é��鎂錨é�µé�Šé�¥é�‹éŒ˜é�¾é�¬é�›é�°é�šé�”闊闋闌闈闆隱���\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"����������������������������������������������������������������隸雖霜霞鞠韓顆颶餵é¨�駿鮮鮫鮪鮭鴻鴿麋é»�點黜é»�黛鼾齋å�¢åš•嚮壙壘嬸å½�懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑ç€�燻�燼燾燸ç�·ç�µç’§ç’¿ç”•癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻è�·è�¶è‡�è‡�舊è—�è–©è—�è—�藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫è±�贅蹙蹣蹦蹤蹟蹕軀轉è½�邇邃邈醫醬é‡�鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖é—�闕離雜雙雛雞霤鞣鞦鞭韹é¡�é¡�題顎顓颺餾餿餽餮馥騎é«�鬃鬆é­�é­Žé­�鯊���\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"����������������������������������������������������������������鯉鯽鯈鯀鵑éµ�鵠黠鼕鼬儳嚥壞壟壢寵é¾�廬懲懷懶懵攀æ”�æ› æ›�æ«¥æ«�櫚櫓瀛瀟瀨瀚ç€�瀕瀘爆çˆ�牘犢ç�¸ç�ºç’½ç“Šç“£ç–‡ç–†ç™Ÿç™¡çŸ‡ç¤™ç¦±ç©«ç©©ç°¾ç°¿ç°¸ç°½ç°·ç±€ç¹«ç¹­ï¿½ç¹¹ç¹©ç¹ªç¾…繳羶羹羸臘藩è—�藪藕藤藥藷蟻蠅è �蟹蟾襠襟襖襞è­�譜識證譚譎è­�譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮é�¡é�‘é�Ÿé�ƒé�ˆé�œé��é�–é�¢é��é�˜é�¤é�—é�¨é—œéš´é›£éœªéœ§é�¡éŸœéŸ»é¡žé¡˜é¡›é¢¼é¥…饉騖騙é¬�鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲çˆ�ç�»ç“�癢癥礦礪礬���\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"����������������������������������������������������������������礫竇競籌籃ç±�糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫è´�è´�躉èº�躅躂醴釋é�˜é�ƒé�½é—¡éœ°é£„饒饑馨騫騰騷騵鰓é°�鹹麵黨鼯齟�齣齡儷儸å›�囀囂夔屬å·�懼懾æ”�攜斕曩櫻欄櫺殲ç�Œçˆ›çŠ§ç“–ç“”ç™©çŸ“ç±�çº�續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊èº�躋轟辯醺é�®é�³é�µé�ºé�¸é�²é�«é—¢éœ¸éœ¹éœ²éŸ¿é¡§é¡¥é¥—驅驃驀騾é«�魔魑鰭鰥鶯鶴鷂鶸éº�黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡ç�‘ç�˜çŽ€ç“¤ç–Šç™®ç™¬ç¦³ç± ç±Ÿè�¾è�½è‡Ÿè¥²è¥¯è§¼è®€è´–贗躑躓轡酈鑄鑑鑒霽���\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"����������������������������������������������������������������霾韃éŸ�顫饕驕é©�髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬æ¬�瓚竊籤籣籥纓纖纔臢蘸蘿蠱變é‚�é‚�鑣鑠鑤é�¨é¡¯é¥œé©šé©›é©—髓體髑鱔鱗鱖鷥麟黴囑壩攬�ç�žç™±ç™²çŸ—ç½�羈蠶蠹衢讓讒讖艷贛釀鑪é�‚é�ˆé�„韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖ç�£ç±¬ç±®è »è§€èº¡é‡�鑲鑰顱饞髖鬣黌ç�¤çŸšè®šé‘·éŸ‰é©¢é©¥çºœè®œèºªé‡…鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"����������������������������������������������������������������乂乜凵匚厂万丌乇äº�囗兀屮彳ä¸�冇与丮亓仂仉仈冘勼å�¬åŽ¹åœ å¤ƒå¤¬å°�巿旡殳毌气爿丱丼仨仜仩仡ä»�仚刌匜å�Œåœ¢åœ£å¤—夯å®�宄尒尻屴屳帄庀庂忉戉æ‰�氕�氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈ä¼�伂伅伢伓伄仴伒冱刓刉åˆ�劦匢匟å��厊å�‡å›¡å›Ÿåœ®åœªåœ´å¤¼å¦€å¥¼å¦…奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔å¿�扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜æ±�汊汔汋汌ç�±ç‰žçŠ´çŠµçŽŽç”ªç™¿ç©µç½‘è‰¸è‰¼èŠ€è‰½è‰¿è™�襾邙邗邘邛邔阢阤阠阣佖伻佢佉体���\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"����������������������������������������������������������������佤伾佧佒佟ä½�佘伭伳伿佡å†�冹刜刞刡劭劮匉å�£å�²åŽŽåŽ�å�°å�·å�ªå‘”å‘…å�™å�œå�¥å�˜å�½å‘�å‘�å�¨å�¤å‘‡å›®å›§å›¥å��å�…å�Œå�‰å�‹å�’夆奀妦妘妠妗妎妢å¦�å¦�妧妡宎宒尨尪�å²�å²�岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈åº�å¼…å¼�彸彶忒忑å¿�忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎æŠ�抔抇扱扻扺扰æŠ�抈扷扽扲扴攷旰旴旳旲旵æ�…æ�‡æ�™æ�•æ�Œæ�ˆæ��æ��æ�šæ�‹æ¯�氙氚汸汧汫沄沋æ²�汱汯汩沚汭沇沕沜汦汳汥汻沎ç�´ç�ºç‰£çŠ¿çŠ½ç‹ƒç‹†ç‹�犺狅玕玗玓玔玒町甹疔疕çš�礽耴肕肙è‚�肒肜èŠ�èŠ�芅芎芑���\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"����������������������������������������������������������������芓芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹ä¾�佸ä¾�侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿å’�咑�咂咈呫呺呾呥呬呴呦å’�呯呡呠咘呣呧呤囷囹å�¯å�²å�­å�«å�±å�°å�¶åž€å�µå�»å�³å�´å�¢å�¨å�½å¤Œå¥…妵妺å§�姎妲姌å§�妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧å²�岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢æ€�æ€�怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩���\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"����������������������������������������������������������������抰抸攽斨斻昉旼昄昒昈旻昃昋æ˜�昅旽昑æ˜�曶朊枅æ�¬æžŽæž’æ�¶æ�»æž˜æž†æž„æ�´æž�枌æ�ºæžŸæž‘枙枃æ�½æž�æ�¸æ�¹æž”欥殀歾毞æ°�沓泬泫泮泙沶泔沭泧沷æ³�泂沺泃泆泭�泲泒æ³�沴沊æ²�沀泞泀洰æ³�泇沰泹æ³�泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬çŽ�ç“�瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵è‚�肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓è¿�迖迕迗邲邴邯邳邰阹阽阼阺陃ä¿����\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"����������������������������������������������������������������俅俓侲俉俋ä¿�俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽å�¼åŽ—åŽ–åŽ™åŽ˜å’ºå’¡å’­å’¥å“�哃èŒ�咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗åž�垛垔垘åž�垙垥垚�垕壴å¤�奓姡姞姮娀姱å§�姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌å³�峘峌峗峋峛峞峚峉峇峊峖峓峔å³�峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹æ�”æ�²æ�žæ�…æ�“æ�‡æ�‰æ�›æ�Œæ�€æ�‚æ�Ÿæ€¤æ�„æ�˜æ�¦æ�®æ‰‚扃æ‹�æŒ�挋拵挎挃拫拹æŒ�挌拸拶挀挓挔拺挕拻拰æ•�敃斪斿昶昡昲昵昜昦昢昳昫昺æ˜�昴昹昮æœ�æœ�æŸ�柲���\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"����������������������������������������������������������������柈枺柜枻柸柘柀枷柅柫柤柟枵æŸ�枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀�æ´�浂æ´�洘洷洃æ´�浀洇洠洬洈洢洉æ´�炷炟炾炱炰炡炴炵炩ç‰�牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅ç�Œç�‚ç�ˆç�…玹玶玵玴ç�«çŽ¿ç�‡ç޾ç�ƒç�†çޏç�‹ç“¬ç“®ç”®ç•‡ç•ˆç–§ç–ªç™¹ç›„眈眃眄眅眊盷盻盺矧矨砆砑砒砅ç �ç �砎砉砃砓祊祌祋祅祄秕ç§�ç§�秖秎窀穾竑笀ç¬�籺籸籹籿粀ç²�紃紈ç´�罘羑ç¾�羾耇耎è€�耔耷胘胇胠胑胈胂èƒ����\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"����������������������������������������������������������������胅胣胙胜胊胕胉èƒ�胗胦èƒ�臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺苳苭虷虴虼虳è¡�衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇�郋郈釔釓陔é™�陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢å‹�匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋åœ�圂埌堲埕埒垺埆垽垼垸垶垿埇åŸ�åž¹åŸ�夎奊娙娖娭娮娕å¨�娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧���\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"����������������������������������������������������������������æ��æ�šæ�§æ��悢悈悀悒æ‚�æ‚�悃悕悛悗悇悜悎戙扆拲æŒ�æ�–挬æ�„æ�…挶æ�ƒæ�¤æŒ¹æ�‹æ�ŠæŒ¼æŒ©æ��挴æ�˜æ�”æ�™æŒ­æ�‡æŒ³æ�šæ�‘挸æ�—æ�€æ�ˆæ•Šæ•†æ—†æ—ƒæ—„旂晊晟晇晑朒朓栟栚桉栲�栳栻桋æ¡�栖栱栜栵栫栭栯桎桄栴æ �栒栔栦栨栮æ¡�栺栥栠欬欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶æ´�浡涒浘浢浭浯涑æ¶�淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵æ¶�烜烓烑çƒ�烋缹烢烗烒烞烠烔çƒ�烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻çŒ�ç�“ç�™ç�¥ç�–玼ç�§ç�£ç�©ç�œç�’ç�›ç�”ç��ç�šç�—ç�˜ç�¨ç“žï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"����������������������������������������������������������������瓟瓴瓵甡畛畟疰ç—�疻痄痀疿疶疺皊盉çœ�眛çœ�眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛ç¥�祜祓祒祑秫秬秠秮秭秪秜秞ç§�窆窉窅窋窌窊�窇竘ç¬�笄笓笅ç¬�笈笊笎笉笒粄粑粊粌粈ç²�ç²…ç´žç´�紑紎紘紖紓紟紒ç´�紌罜罡罞罠ç½�罛羖羒翃翂翀耖耾耹胺胲胹胵è„�胻脀èˆ�舯舥茳茭è�„茙è�‘茥è�–茿è��茦茜茢è�‚è�ŽèŒ›èŒªèŒˆèŒ¼è��茖茤茠茷茯茩è�‡è�…è�Œè�“茞茬è�‹èŒ§è�ˆè™“虒蚢蚨蚖èš�蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎èš�èš�蚔衃衄衭衵衶衲袀衱衿衯袃衾衴���\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"����������������������������������������������������������������衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤é…�é…Žé…�釕釢釚陜陟隼飣髟鬯乿å�°å�ªå�¡å�žå� å�“å�‹å��å�²å�ˆå��å��å�›å�Šå�¢å€•�å�…å�Ÿå�©å�«å�£å�¤å�†å�€å�®å�³å�—å�‘å‡�剫剭剬剮勖勓匭厜啵啶唼å•�å•�唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳åŸ�堇埮埣埲埥埬埡堎埼å �埧å �堌埱埩埰å �堄奜婠婘婕婧婞娸娵婭å©�婟婥婬婓婤婗婃å©�婒婄婛婈媎娾å©�娹婌婰婩婇婑婖婂婜孲孮å¯�寀屙崞崋å´�崚崠崌崨���\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"����������������������������������������������������������������å´�崦崥å´�崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊æ‚�悆悾悰悺惓惔æƒ�惤惙æƒ�惈悱惛悷惊悿惃æƒ�惀挲æ�¥æŽŠæŽ‚æ�½æŽ½æŽžæŽ­æŽ�掗掫掎æ�¯æŽ‡æŽ�æ�®æŽ¯æ�µæŽœæ�­æŽ®ï¿½æ�¼æŽ¤æŒ»æŽŸæ�¸æŽ…æŽ�掑æŽ�æ�°æ•“æ—�晥晡晛晙晜晢朘桹梇æ¢�梜桭桮梮梫楖桯梣梬梩桵桴梲æ¢�桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑æ®�æ®�殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜æ·�淛淴淊涽淭淰涺淕淂æ·�æ·‰æ·�淲淓淽淗æ·�淣涻烺ç„�烷焗烴焌烰焄烳ç„�烼烿焆焓焀烸烶焋焂���\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"����������������������������������������������������������������焎牾牻牼牿çŒ�猗猇猑猘猊猈狿çŒ�猞玈ç�¶ç�¸ç�µç�„ç��ç�½ç�‡ç�€ç�ºç�¼ç�¿ç�Œç�‹ç�´ç�ˆç•¤ç•£ç—Žç—’ç—�痋痌痑ç—�çš�皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉ç¡�硊硌砦硅ç¡��祤祧祩祪祣祫祡离秺秸秶秷çª�窔çª�笵筇笴笥笰笢笤笳笘笪ç¬�笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩çµ�絇紾紿絊紻紨罣羕羜ç¾�羛翊翋ç¿�ç¿�翑翇ç¿�翉耟耞耛è�‡è�ƒè�ˆè„˜è„¥è„™è„›è„­è„Ÿè„¬è„žè„¡è„•è„§è„�脢舑舸舳舺舴舲艴èŽ�莣莨èŽ�è�ºè�³èޤè�´èŽ�èŽ�莕莙è�µèŽ”èŽ©è�½èŽƒèŽŒèŽ�莛莪莋è�¾èŽ¥èŽ¯èŽˆèŽ—èŽ°è�¿èŽ¦èŽ‡èŽ®è�¶ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"����������������������������������������������������������������莚虙虖蚿蚷蛂è›�蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜è±�豽貥赽赻赹趼跂趹趿è·��軘軞è»�軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿é�ªé „飥馗傛傕傔傞傋傣傃傌傎å‚�å�¨å‚œå‚’傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈å–�å–µå–�喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞���\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"����������������������������������������������������������������婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜åª�媓åª�寪å¯�寋寔寑寊寎尌尰崷嵃嵫åµ�嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄å¹�彘徦徥徫惉悹�惌惢惎惄愔惲愊愖愅惵愓惸惼惾æƒ�愃愘æ„�æ„�惿愄愋扊掔掱掰æ�Žæ�¥æ�¨æ�¯æ�ƒæ’�æ�³æ�Šæ� æ�¶æ�•æ�²æ�µæ‘¡æ�ŸæŽ¾æ��æ�œæ�„æ�˜æ�“æ�‚æ�‡æ�Œæ�‹æ�ˆæ�°æ�—æ�™æ”²æ•§æ•ªæ•¤æ•œæ•¨æ•¥æ–Œæ–�æ–žæ–®æ—�旒晼晬晻暀晱晹晪晲æœ�椌棓椄棜椪棬棪棱æ¤�棖棷棫棤棶椓æ¤�棳棡椇棌椈楰梴椑棯棆椔棸æ£�棽棼棨椋椊椗棎棈æ£�棞棦棴棑椆棔棩椕椥棇���\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"����������������������������������������������������������������欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿æ¹�æ¹�湳渜渳湋湀湑渻渃渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞�焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌ç�®ç�¬ç�°ç�«ç�–ç�šç�¡ç�­ç�±ç�¤ç�£ç��ç�©ç� ç�²ç“»ç”¯ç•¯ç•¬ç—§ç—šç—¡ç—¦ç—�痟痤痗皕皒盚ç�†ç�‡ç�„ç��ç�…ç�Šç�Žç�‹ç�ŒçŸžçŸ¬ç¡ ç¡¤ç¡¥ç¡œç¡­ç¡±ç¡ªç¡®ç¡°ç¡©ç¡¨ç¡žç¡¢ç¥´ç¥³ç¥²ç¥°ç¨‚稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪çµ�絭絜絫絒絔絩���\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"����������������������������������������������������������������絑絟絎缾缿罥罦羢羠羡翗è�‘è��è��胾胔腃腊腒è…�腇脽è…�脺臦臮臷臸臹舄舼舽舿艵茻è��è�¹è�£è�€è�¨è�’è�§è�¤è�¼è�¶è��è�†è�ˆè�«è�£èŽ¿è��è��è�¥è�˜è�¿è�¡è�‹è�Žè�–è�µè�‰è�‰ï¿½è��è�žè�‘è�†è�‚è�³è�•è�ºè�‡è�‘è�ªè�“è�ƒè�¬è�®è�„è�»è�—è�¢è�›è�›è�¾è›˜è›¢è›¦è›“蛣蛚蛪è›�蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲è¤�裉覕覘覗è§�觚觛詎è©�訹詙詀詗詘詄詅詒詈詑詊詌è©�豟è²�貀貺貾貰貹貵趄趀趉跘跓è·�跇跖跜è·�跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻é„����\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"����������������������������������������������������������������鄀鄇鄅鄃酡酤酟酢酠éˆ�鈊鈥鈃鈚鈦éˆ�鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻é–�é–Œé–�隇陾隈隉隃隀雂雈雃雱雰é�¬é�°é�®é ‡é¢©é£«é³¦é»¹äºƒäº„亶傽傿僆傮僄僊�傴僈僂傰åƒ�傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌å—�å—‹å—Šå—�嗀嗔嗄嗩喿嗒å–�å—�嗕嗢嗖嗈嗲å—�嗙嗂圔塓塨塤å¡�å¡�塉塯塕塎å¡�塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶å«�媹åª�寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰å¹�幎幊å¹�幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯æ…�愩慀戠酨戣戥戤æ�…���\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"����������������������������������������������������������������æ�±æ�«æ��æ�’æ�‰æ� æ�¤æ�³æ‘ƒæ�Ÿæ�•æ�˜æ�¹æ�·æ�¢æ�£æ�Œæ�¦æ�°æ�¨æ‘�æ�µæ�¯æ�Šæ�šæ‘€æ�¥æ�§æ�‹æ�§æ�›æ�®æ�¡æ�Žæ•¯æ–’旓暆暌暕æš�暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉�椵楬椳椽楥棰楸椴楩楀楯楄楶楘æ¥�楴楌椻楋椷楜æ¥�楑椲楒椯楻椼歆歅歃歂歈æ­�æ®›ï¨�毻毼毹毷毸溛滖滈æº�滀溟溓溔溠溱溹滆滒溽æ»�溞滉溷溰æ»�溦æ»�溲溾滃滜滘溙溒溎æº�溤溡溿溳æ»�滊溗溮溣煇煔煒煣煠ç…�ç…�煢煲煸煪煡煂煘煃煋煰煟ç…�ç…“ç…„ç…�ç…šç‰�çŠ�犌犑çŠ�犎猼ç�‚猻猺ç�€ç�Šç�‰ç‘„瑊瑋瑒瑑瑗瑀ç‘����\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"����������������������������������������������������������������ç‘�瑎瑂瑆ç‘�瑔瓡瓿瓾瓽ç”�畹畷榃痯ç˜�瘃痷痾痼痹痸ç˜�痻痶痭痵痽皙皵ç›�ç�•ç�Ÿç� ç�’ç�–ç�šç�©ç�§ç�”ç�™ç�­çŸ ç¢‡ç¢šç¢”ç¢�碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑�稘稙稒稗稕稢稓稛ç¨�窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀ç¶�絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡èˆ�艉艄艀艂艅蓱è�¿è‘–葶葹è’�è’�葥葑葀蒆葧è�°è‘�葽葚葙葴葳è‘�蔇葞è�·è�ºè�´è‘ºè‘ƒè‘¸è�²è‘…è�©è�™è‘‹è�¯è‘‚è�­è‘Ÿè‘°è�¹è‘Žè‘Œè‘’葯蓅蒎è�»è‘‡ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"����������������������������������������������������������������è�¶è�³è‘¨è‘¾è‘„è�«è‘ è‘”è‘®è‘�蜋蜄蛷蜌蛺蛖蛵è��蛸蜎蜉èœ�è›¶èœ�蜅裖裋è£�裎裞裛裚裌è£�覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃èª�詴詺谼豋豊豥豤豦�貆貄貅賌赨赩趑趌趎è¶�è¶�è¶“è¶”è¶�趒跰跠跬跱跮è·�跩跣跢跧跲跫跴輆軿è¼�輀輅輇輈輂輋é�’逿é�„é�‰é€½é„�é„�é„�鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬é‰�鉠鉧鉯鈶鉡鉰鈱鉔鉣é‰�鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵é�³é�·é�¸é�²é �é �頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪���\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"����������������������������������������������������������������åƒ�僤僓僬僰僯僣僠凘劀åŠ�勩勫匰厬嘧嘕嘌嘒嗼å˜�嘜å˜�嘓嘂嗺å˜�嘄嗿嗹墉塼å¢�墘墆å¢�塿塴墋塺墇墑墎塶墂墈塻墔å¢�壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛�嫬嫞å«�嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺å¶�嵷嶊嶉嶈嵾嵼å¶�嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨æ…�慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫æ�«æ‘�æ‘›æ‘�摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠æ‘�æ‘¿æ�¿æ‘¬æ‘«æ‘™æ‘¥æ‘·æ•³æ– æš¡æš æšŸæœ…朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧æ¦�榩榾榯榿槄榽榤槔榹槊榚æ§����\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"����������������������������������������������������������������榳榓榪榡榞槙榗æ¦�槂榵榥槆歊æ­�歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟æ¼�漞�漈漡熇ç†�熉熀熅熂ç†�煻熆ç†�熗牄牓犗犕犓ç�ƒç��ç�‘ç�Œç‘¢ç‘³ç‘±ç‘µç‘²ç‘§ç‘®ç”€ç”‚甃畽ç–�瘖瘈瘌瘕瘑瘊瘔皸çž�ç�¼çž…çž‚ç�®çž€ç�¯ç�¾çžƒç¢²ç¢ªç¢´ç¢­ç¢¨ç¡¾ç¢«ç¢žç¢¥ç¢ ç¢¬ç¢¢ç¢¤ç¦˜ç¦Šç¦‹ç¦–禕禔禓禗禈禒ç¦�稫穊稰稯稨稦窨窫窬竮箈箜箊箑ç®�ç®–ç®�箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪ç·�緀緅ç¶�緎緄緆緋緌綯綹綖綼綟綦���\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"����������������������������������������������������������������綮綩綡緉罳翢翣翥翞耤è��è�œè†‰è††è†ƒè†‡è†�膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴è“�è“�蒪蒚蒱è“�è’�蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶è“�蒠蓗蓔蓒蓛蒰蒑虡蜳蜣�蜨è�«è�€èœ®èœžèœ¡èœ™èœ›è�ƒèœ¬è��蜾è�†èœ èœ²èœªèœ­èœ¼èœ’蜺蜱蜵è�‚蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫è¦�覡覟覞觩觫觨誫誙誋誒èª�誖谽豨豩賕è³�賗趖踉踂跿è¸�跽踊踃踇踆踅跾踀踄è¼�輑輎è¼�鄣鄜鄠鄢鄟é„�鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪éŠ�銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇���\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"����������������������������������������������������������������銩éŠ�銋鈭隞隡雿é�˜é�½é�ºé�¾éžƒéž€éž‚é�»éž„éž�é�¿éŸŽéŸ�頖颭颮餂餀餇é¦�馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯�噈噂噌嘵å™�噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫å¢�墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹å¬�嬇嬅å¬�屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩å¹�幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡æ†�慦憳戭摮摰撖撠撅撗撜æ’�撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢���\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"����������������������������������������������������������������樛æ¨�槾樧槲槮樔槷槧橀樈槦槻æ¨�槼槫樉樄樘樥æ¨�槶樦樇槴樖歑殥殣殢殦æ°�氀毿氂æ½�漦潾澇濆澒æ¾�澉澌潢æ½�澅潚澖潶潬澂潕潲潒æ½�潗澔澓æ½�漀潡潫�潽潧æ¾�潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵ç†�熥熞熤熡熪熜熧熳犘犚ç�˜ç�’ç�žç�Ÿç� ç��ç�›ç�¡ç�šç�™ç�¢ç’‡ç’‰ç’Šç’†ç’�瑽璅璈瑼瑹甈甇畾瘥瘞瘙ç˜�瘜瘣瘚瘨瘛皜çš�çšžçš›çž�çž�瞉瞈ç£�碻ç£�磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭���\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"����������������������������������������������������������������翭翫翪翬翦翨è�¤è�§è†£è†Ÿè†žè†•膢膙膗舖è‰�艓艒è‰�艎艑蔤蔻è”�蔀蔩蔎蔉è”�蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨è”�蔮蔂蓽蔞蓶蔱蔦蓧蓨�蓰蓯蓹蔘蔠蔰蔋蔙蔯虢è�–è�£è�¤è�·èŸ¡è�³è�˜è�”è�›è�’è�¡è�šè�‘è�žè�­è�ªè��è�Žè�Ÿè��è�¯è�¬è�ºè�®è�œè�¥è��è�»è�µè�¢è�§è�©è¡šè¤…褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬è«�諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾è±�è²�賥賟賙賨賚è³�賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗é�³é�°é�¯é�§é�«é„¯ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"����������������������������������������������������������������鄫鄩鄪鄲鄦鄮醅醆醊é†�醂醄醀é‹�鋃鋄鋀鋙銶é‹�鋱鋟鋘鋩鋗é‹�鋌鋯鋂鋨鋊鋈鋎鋦é‹�鋕鋉鋠鋞鋧鋑鋓銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂é�šéžŠéžŽéžˆéŸ�éŸ��頞é �頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜é§�é§�駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓é¼�é¼�儜儓儗儚儑凞匴å�¡å™°å™ å™®å™³å™¦å™£å™­å™²å™žå™·åœœåœ›å£ˆå¢½å£‰å¢¿å¢ºå£‚墼壆嬗嬙嬛嬡嬔嬓å¬�嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥���\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"����������������������������������������������������������������彋徼æ†�憨憖懅憴懆æ‡�懌憺憿憸憌擗擖æ“�æ“�擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋æ›�暽暻暺曌朣樴橦橉橧樲橨樾æ©�橭橶橛橑樨橚樻樿æ©�橪橤æ©�æ©�橔橯�橩橠樼橞橖橕æ©�橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪æ¿�澿澸澢濉澫æ¿�澯澲澰燅燂熿熸燖燀ç‡�燋燔燊燇ç‡�熽燘熼燆燚燛çŠ�犞ç�©ç�¦ç�§ç�¬ç�¥ç�«ç�ªç‘¿ç’šç’ ç’”璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚çž�瞡瞜瞛瞢瞣瞕瞙瞗ç£�磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵���\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"����������������������������������������������������������������窱窷篞篣篧ç¯�篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗ç³�糑縒縡縗縌縟縠縓縎縜縕縚縢縋ç¸�縖ç¸�縔縥縤罃罻罼罺羱翯耪耩è�¬è†±è†¦è†®è†¹è†µè†«è†°è†¬è†´è†²è†·è†§ï¿½è‡²è‰•艖艗蕖蕅蕫è•�蕓蕡蕘蕀蕆蕤è•�蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦è•�蕔蕥蕬虣虥虤螛èž�螗螓螒螈èž�螖螘è�¹èž‡èž£èž…èž�èž‘èž�螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵è«�謔諤諟諰諈諞諡諨諿諯諻貑貒è²�賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽è¹�踰踿躽輶輮輵輲輹輷輴é�¶é�¹é�»é‚†ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"����������������������������������������������������������������郺鄳鄵鄶醓é†�醑é†�é†�錧錞錈錟錆éŒ�é�ºéŒ¸éŒ¼éŒ›éŒ£éŒ’éŒ�é�†éŒ­éŒŽéŒ�é‹‹éŒ�鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼é—�閾閹閺閶閿閵閽隩雔霋霒éœ��鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒é®�魺鮕魽鮈鴥鴗鴠鴞鴔鴩é´�鴘鴢é´�鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌åš�嚆嚄嚃噾嚂噿åš�壖壔å£�壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨æ–�斀斶旚曒���\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"����������������������������������������������������������������æª�檖æª�檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲æ¿�濢濨燡燱燨燲燤燰燢ç�³ç�®ç�¯ç’—璲璫ç’�璪璭璱璥璯ç”�甑甒ç”��疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀ç«�ç°…ç°�篲簀篿篻簎篴簋篳簂簉簃ç°�篸篽簆篰篱ç°�簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀è–�薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆è–�è–™è–�è–�薢薂薈薅蕹���\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"����������������������������������������������������������������蕶薘è–�薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾è¥�襒褷襂覭覯覮觲觳謞謘謖謑謅謋謢è¬�謒謕謇è¬�謈謆謜謓謚è±�豰豲�豱豯貕貔賹赯蹎è¹�蹓è¹�蹌蹇轃轀邅é�¾é„¸é†šé†¢é†›é†™é†Ÿé†¡é†�醠鎡鎃鎯é�¤é�–é�‡é�¼é�˜é�œé�¶é�‰é��é�‘é� é�­éŽ�é�Œé�ªé�¹é�—é�•é�’é��é�±é�·é�»é�¡é�žé�£é�§éŽ€é�Žé�™é—‡é—€é—‰é—ƒé—…閷隮隰隬霠霟霘éœ�霙鞚鞡鞜鞞éž�韕韔韱é¡�顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽é¬�髼魈鮚鮨鮞鮛鮦鮡鮥鮤���\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"����������������������������������������������������������������鮆鮢鮠鮯鴳éµ�鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉éº�麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚åš�嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄�擽擸æ”�攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌ç€�ç€�瀅瀔瀎濿瀀濻瀦濼濷瀊çˆ�燿燹爃燽ç�¶ç’¸ç“€ç’µç“�璾璶璻瓂甔甓癜癤癙ç™�癓癗癚皦皽盬矂瞺磿礌礓礔礉ç¤�礒礑禭禬穟簜簩簙簠簟簭ç°�簦簨簢簥簰繜ç¹�繖繣繘繢繟繑繠繗繓羵羳翷翸è�µè‡‘臒è‡�艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅���\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"����������������������������������������������������������������薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙è �蟴蟨èŸ�襓襋è¥�襌襆è¥�襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘�貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡è¹�蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛éŽ�鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟éŽ�鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘é›�霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺é¡�顑顒颸é¥�餼餺é¨�騋騉é¨�騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿é¯�鮵鮸鯓鮶鯄鮹鮽鵜鵓éµ����\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"����������������������������������������������������������������鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟é¼�鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚å£�壛夒嬽嬾嬿巃幰徿懻攇æ”�æ”�攉攌攎斄旞æ—�曞櫧櫠櫌櫑櫙櫋�櫟櫜æ«�æ««æ«�æ«�櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱ç¤�礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾è�¸è‡—臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘è¥����\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"����������������������������������������������������������������襙覈覷覶觶è­�譈譊譀譓譖譔譋譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑è½�è½�轓辴酀鄿醰醭é�žé�‡é��é�‚é�šé��é�¹é�¬é�Œé�™éŽ©é�¦é�Šé�”é�®é�£é�•�é�„é�Žé�€é�’é�§é•½é—šé—›é›¡éœ©éœ«éœ¬éœ¨éœ¦éž³éž·éž¶éŸ�韞韟顜顙é¡�顗颿颽颻颾饈饇饃馦馧騚騕騥é¨�騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷é¶�鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀é½�é½�齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀å¿�懹攗攖攕攓旟曨���\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"����������������������������������������������������������������曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱ç�‚瀸瀿瀺瀹ç�€ç€»ç€³ç��爓爔犨ç�½ç�¼ç’ºçš«çšªçš¾ç›­çŸŒçŸŽçŸ�çŸ�矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾çº�纀羺翿�è�¹è‡›è‡™èˆ‹è‰¨è‰©è˜¢è—¿è˜�藾蘛蘀藶蘄蘉蘅蘌藽蠙è �蠑蠗蠓蠖襣襦覹觷譠譪è­�譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚é‚�é…ƒé…�醷醵醲醳é�‹é�“é�»é� é��é�”é�¾é�•é��é�¨é�™é��é�µé�€é�·é�‡é�Žé�–é�’é�ºé�‰é�¸é�Šé�¿é�¼é�Œé�¶é�‘é�†é—žé— é—Ÿéœ®éœ¯éž¹éž»éŸ½éŸ¾é¡ é¡¢é¡£é¡Ÿé£�飂é¥�饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆é¬�鬒鬑鰋鰈鯷鰅鰒鯸���\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"����������������������������������������������������������������鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤é¶�鶒鶘é¶�鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞é½�齙龑儺儹劘劗囃嚽嚾孈孇巋å·�廱懽攛欂櫼欃�櫸欀ç�ƒç�„ç�Šç�ˆç�‰ç�…ç�†çˆ�爚爙ç�¾ç”—癪çŸ�礭礱礯籔籓糲纊纇纈纋纆çº�ç½�羻耰è‡�蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩è �蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻è´�贔趯躎躌轞轛è½�酆酄酅醹é�¿é�»é�¶é�©é�½é�¼é�°é�¹é�ªé�·é�¬é‘€é�±é—¥é—¤é—£éœµéœºéž¿éŸ¡é¡¤é£‰é£†é£€é¥˜é¥–騹騽驆驄驂é©�騺騿é«�鬕鬗鬘鬖鬺魒鰫é°�鰜鰬鰣鰨鰩鰤���\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"����������������������������������������������������������������鰡鶷鶶鶼é·�鷇鷊é·�鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳é·�鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉æ°�ç�•ç�–ç�—ç�’爞爟犩ç�¿ï¿½ç“˜ç“•瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑ç½�羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒èº�躖躗轠轢酇鑌é‘�鑊鑋é‘�鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌é©�驈驊驉驒é©�é«�鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳é±�鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋é·�鷜鷑鷟鷩鷙鷘鷖鷵鷕é·�麶黰鼵鼳鼲齂齫龕龢���\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"����������������������������������������������������������������儽劙壨壧奲å­�巘蠯å½�æˆ�戃戄攩攥斖曫欑欒æ¬�毊ç�›ç�šçˆ¢çŽ‚çŽ�玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕é‘�鑗鑞韄�韅頀驖驙鬞鬟鬠鱒鱘é±�鱊é±�鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂é»�黲黳鼆鼜鼸鼷鼶齃é½�齱齰齮齯囓å›�孎屭攭曭曮欓ç�Ÿç�¡ç��ç� çˆ£ç“›ç“¥çŸ•礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠èº�醾醽釂鑫鑨鑩雥é�†é�ƒé�‡éŸ‡éŸ¥é©žé«•魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀é¸�鸉鷿鷽鸄麠鼞齆齴齵齶囔���\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"����������������������������������������������������������������攮斸欘欙欗欚ç�¢çˆ¦çŠªçŸ˜çŸ™ç¤¹ç±©ç±«ç³¶çºšçº˜çº›çº™è‡ è‡¡è™†è™‡è™ˆè¥¹è¥ºè¥¼è¥»è§¿è®˜è®™èº¥èº¤èº£é‘®é‘­é‘¯é‘±é‘³é�‰é¡²é¥Ÿé±¨é±®é±­é¸‹é¸�é¸�é¸�鸒鸑麡黵鼉齇齸齻齺齹圞ç�¦ç±¯è ¼ï¿½è¶²èº¦é‡ƒé‘´é‘¸é‘¶é‘µé© é±´é±³é±±é±µé¸”鸓黶鼊龤ç�¨ç�¥ç³·è™ªè ¾è ½è ¿è®žè²œèº©è»‰é�‹é¡³é¡´é£Œé¥¡é¦«é©¤é©¦é©§é¬¤é¸•鸗齈戇欞爧虌躨钂钀é’�驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺é¸�ç�©ç�ªéº¤é½¾é½‰é¾˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"����������������������������������������������������������������î‰�î‰�î‰�î‰�î‰��îŠ�îŠ�îŠ�îŠ�îŠ�î‹�î‹�î‹�î‹�î‹����\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"����������������������������������������������������������������îŒ�îŒ�îŒ�îŒ�îŒ��î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€îŽ�îŽ�îŽ�îŽ�îŽ����\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"����������������������������������������������������������������î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªï¿½î�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‘€î‘�î‘�î‘�î‘�î‘����\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"����������������������������������������������������������������î’�î’�î’Žî’�î’�î’��î“�î“�î“�î“�î“�î”�î”�î”�î”�î”����\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"����������������������������������������������������������������î•�î•�î•�î•�î•��î–�î–�î–Žî–�î–�î–�î—�î—�î—Žî—�î—�î—����\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"����������������������������������������������������������������î˜�î˜�î˜�î˜�î˜��î™�î™�î™�î™�î™�îš�îš�îš�îš����\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"����������������������������������������������������������������îš�î›�î›�î›�î›��î›�îœ�îœ�îœ�îœ�îœ�î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—���\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"����������������������������������������������������������������î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îž€îž�îž�îž�îž��îž�îŸ�îŸ�îŸ�îŸ�îŸ�î �î �î Žî �î ����\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"����������������������������������������������������������������î �î¡�î¡�î¡�î¡��î¡�î¢�î¢�î¢�î¢�î¢�î£�î£�î£����\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"����������������������������������������������������������������î£�î£�î¤�î¤��î¤�î¤�î¤�î¥�î¥�î¥�î¥�î¥�î¦����\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"����������������������������������������������������������������î¦�î¦�î¦�î¦�î§��î§�î§Žî§�î§�î§�î¨�î¨�î¨�î¨�î¨�î©����\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"����������������������������������������������������������������î©�î©�î©�î©�îª��îª�îª�îª�îª�î«�î«�î«�î«�î«�î¬����\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"����������������������������������������������������������������î¬�î¬�î¬�î¬�î­��î­�î­Žî­�î­�î­�î®�î®�î®�î®�î®����\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"����������������������������������������������������������������î¯�î¯�î¯�î¯�î¯��î°�î°�î°Žî°�î°�î°�î±�î±�î±�î±�î±����\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"����������������������������������������������������������������î²�î²�î²�î²�î²��î³�î³�î³�î³�î³�î´�î´�î´Žî´�î´�î´����\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"����������������������������������������������������������������îµ�îµ�îµ�îµ�îµ��î¶�î¶�î¶Žî¶�î¶�î¶�î·�î·�î·Žî·�î·�î·����\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"����������������������������������������������������������������î¸�î¸�î¸�î¸�î¸��î¹�î¹�î¹�î¹�î¹�îº�îº�îº�îº�îº����\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"����������������������������������������������������������������î»�î»�î»�î»�î»��î¼�î¼�î¼�î¼�î¼�î½�î½�î½�î½�î½����\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"����������������������������������������������������������������î¾�î¾�î¾�î¾�î¾��î¿�î¿�î¿�î¿�î¿�ï€�ï€�ï€�ï€�ï€����\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"����������������������������������������������������������������ï�€ï��ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï�Œï��ï�Žï��ï��ï�‘ï�’ï�“ï�”ï�•ï�–ï�—ï�˜ï�™ï�šï�›ï�œï��ï�žï�Ÿï� ï�¡ï�¢ï�£ï�¤ï�¥ï�¦ï¿½ï�§ï�¨ï�©ï�ªï�«ï�¬ï�­ï�®ï�¯ï�°ï�±ï�²ï�³ï�´ï�µï�¶ï�·ï�¸ï�¹ï�ºï�»ï�¼ï�½ï�¾ï�¿ï‚€ï‚�ï‚�ï‚�ï‚�ï‚�ïƒ�ïƒ�ïƒ�ïƒ�ïƒ����\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"����������������������������������������������������������������ï„�ï„�ï„�ï„�ï„��ï…�ï…�ï…Žï…�ï…�ï…�ï†�ï†�ï†�ï†�ï†����\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"����������������������������������������������������������������ï‡�ï‡�ï‡�ï‡�ï‡��ïˆ�ïˆ�ïˆ�ïˆ�ïˆ�ï‰�ï‰�ï‰�ï‰����\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"����������������������������������������������������������������ï‰�ïŠ�ïŠ�ïŠ�ïŠ��ïŠ�ï‹�ï‹�ï‹�ï‹�ï‹�ïŒ�ïŒ�ïŒ�ïŒ����\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[249] = \"����������������������������������������������������������������î€�î€�î€�î€�î€��î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚�î‚�î‚�î‚�î‚����\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"����������������������������������������������������������������îƒ�îƒ�îƒ�îƒ�îƒ��î„�î„�î„�î„�î„�î…�î…�î…Žî…�î…�î…����\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"����������������������������������������������������������������î†�î†�î†�î†�î†��î‡�î‡�î‡�î‡�î‡�îˆ�îˆ�îˆ�îˆ�îˆ����\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20004] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€ï¢�ï¢�ï¢�ï¢�����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"����������������������������������万丌ä¸�冇与丘�丮丳么�乒乓�亄�äº�亓��������仈��仜仨仩���仚�伔伀伕伈仱优伬��伓�������ä¼�仴�������伂伭���伿�伳��佖佢佉体佤佡佧佒ä½�佇ä½�伾佣侅侀佴侄佷佌侚�����������������������������������一ä¸�七丈三上下ä¸�ä¸�丑且丕世丙丞丟並���丫中丰丱串�丶�丸丹主�丿乂乃久之ä¹�乎ä¹�乖乘�乙乜ä¹�乞也乩乳乾亂�亅了予事�二于云互五井亙�些亞亟�亠亡亢交亥亦亨享京亭亮亳亶亹�人什ä»�仃仄仆仇今�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"���������������������������������佹ä¾�ä¾�侞侇侒侕�佫佬侘佼侉佰侜�����������俬�侺����俙ä¿�俓侲俉俋ä¿�俜侻侳俇�俖侹���倓倢倞倇倰倛俴倳倷俷倗倠倧倵倯倱�倔��������倎�å�¯å�ºå�¤å�°å�†å�¡å�žå� å�‹å��å�›å�Šå��å�¢å€•�����������������������������������介ä»�仂仉仔仕他仗付仙ä»�仞仡仟代令以仰仲仳仵件价任份仿ä¼�伉伊伋ä¼�伎ä¼�ä¼�休伙伯估你伴伶伸伺伻似伽佃但佈ä½�低ä½�ä½�佑佔何佗余佘佚佛作佞佟佺佽佩佪佯佳併佶佸佻佾使侃來侈例ä¾�ä¾�侑侔侖侗供ä¾�侷俔俅侮侯侵�\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"���������������������������������å�­å�“�å�€ï¿½ï¿½ï¿½ï¿½å�£ï¿½ï¿½ï¿½å�®ï¿½å�³ï¿½å�…å�Ÿå�©å�Œå�·ï¿½å‚£å‚‹å‚‚�傌傢傛傃傕å‚�å�¨å‚œï¿½å‚‡ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å‚¸ï¿½å‚½å‚»å‚ºåƒˆï¿½å‚¿åƒ†å‚®åƒ„傯傰åƒ�傱僋�僣������僬åƒ�僤僓僛僪僔僿儃儰僸僽僶儅����儊儜儑�儚儓�������������������������������������侶便係促俄俊俎ä¿�ä¿�俑俗俘俚俛ä¿�俟俠俞�信修俶倀倅倌倬俯俱俳俵俸俺俾倉個å€�倆å€�們倒倖倘候倚倜�借倡倣值倥倦倨倩倪倫倭å�ˆå�Žå�²å��å�ƒå�‡å�‰å��å�•å�šå�œå�¥å�ªå�´å�µå�¶å‚Žå‚”傖傀傅å‚�å‚‘å‚’å�«å‚˜å‚™å‚šå‚žï¿½å‚¬å‚­å‚²å‚³å‚´å‚µå‚·ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"���������������������������������儩儠儦儥儡儢��������儱儭儴儵��儹儺儸儽��兙党兛兞å…�兟�����������冔冘������������冼��冾����凅���å‡����凔凘�����������刌刉刓åˆ�刜刞刡�����������������������������������傾僂僅僇僉僊åƒ�僱僎僦僨僩僑僕僖僚å�½åƒ¥åƒ§åƒ­åƒ®ï¿½åƒµåƒ¹åƒ»åƒ¾å„€å„‚億儆儈儉�儌僰儋儇å„�儒儔儕儗儘儤償優儲儳儷儻儼兡儿兀å…�元兄充兆先光兇克兌å…�兔兒兕兗兜兢兣入內全兩��八公六兮共兵其具典兼冀�冂冉冊å†��\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"����������������������������������刱�剆��剎剌����剚剒剟剕剫剭剬剷剺剻剼劀åŠ�劋��劗劘劙劦勀��������勛���勴�匆��匋匑�匢����匰匴匷匼匽å�Œï¿½ï¿½å�¹ï¿½å�¼ï¿½ï¿½åŽ’åŽ—åŽ–ï¿½ï¿½åŽžåŽœåŽ¤ï¿½åŽ¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å†�冓冑冒冕�冖冗冞冠冢冤冥冪�冫冬冰�冱冶冷�冽�凄准凈�凊凋凌å‡����凜å‡��几凡�凱凳凰�凵凶凸凹�出函�刀åˆ�刃分切刈刊刎刑划刖列刨åˆ�刪判別�利å‰�刮到刲刳刵制刷券�刺剋剃剄則剉削刻å‰�剜剞�\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"����������������������������������å�¼ï¿½ï¿½ï¿½ï¿½å�†å�‹ï¿½å�‡ï¿½ï¿½ï¿½ï¿½å�±å‘Žå�§ï¿½ï¿½å‘…�呔å�¬å�¨å�°å�·å�˜å�½ï¿½å�œå�¥å’‡å‘¿å’�咑咖呸咕咚呾呥呬呴�呠呺呤����呯�呡��咶哅�������咦咪哎咭咮哖咩咾咠呰咼å“�哃哞哸��唑唅唦唇唔哪唷哢唗唒哧哳����������������������������������剡剔剖�剛å‰�剩剪剮副割剴創剸剽剿劂劃劄劇劈劉劊劌åŠ�劑劓劖��力功加劣助努劫劬劭�劻劾劼å‹�勃�勇勉å‹�勒動勖勘務å‹�勞�募勢勣勤勦勩勰勳勱勵勷勸�勹勺勻勿�包匈匊åŒ�åŒ�åŒ�勾匕化北匙�匚匜åŒ�匟匠匡匣�\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"���������������������������������唚哫�唋�唃唊��啡啃啊啪啦啤å•�唭唴啵啶唌唲啥啎啑啢唶唵����啕唸唬�唻�������唹�唰啒啅������啿�喡喣喳喲喱喨喥喒噅喢�啽喌�喵啷嗡嗨嗦嗄嗩喿å—�嗕嗢嗖嗈嗲嗌å—�å–�嗧��嗋嗊å—�����������������������������������匪匯匱匭���匸匹匾匿å�€ï¿½å��å�ƒå»¾å�…å�‡å�ˆå�‰å�Šå�‘å�’å�“å�”å�—å�šå��å�œå�žå� å�¡å�£å�¦ï¿½å�©å�¬ï¿½å�¯å�°å�±å�²ï¿½å�µå�·å�¸ï¿½å�»å�®å�³ï¿½å�¿ï¿½åŽ‚åŽ„åŽŽï¿½åŽ”åŽ˜åŽ™åŽšåŽ�原�厥�厭�厲��厶厹去�å�ƒï¿½ï¿½å�ˆå�‰å�Šå�‹å��å�”å�–å�—�å�›å�Ÿå�¡å�¢ï¿½å�£å�¤ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"���������������������������������嗀嗥嗯�����������嘌嘓嗼嗺å˜�嘟å˜�嘀嘛嘜å˜�嘄嘧嘕噘噚噀嘳嘽噆嘾嘸嘺噈噂å™�噊嘪嘮噗�������噙噹噞噰噠噣噭噮噳嚎åš�嚓嚌åš�嚆嚄嚃嚂噾���åš����嚕嚘嚜嚗�������嚦嚧嚪嚫嚭嚵����������������������������������å�¥å�¦å�¨å�©å�ªå�«å�¬å�­å�®å�±å�¯å�°å�²å�³å�µï¿½å�¸å��å�ƒå�„å�ˆå�‰å�Šå�Œå��å�Žå��å��å�‘�å�’å�›å��å�žå�Ÿå� å�¦å�©å’�å�ªå�«å�­å�®å‘ˆå�³å�µå�¶å�¸å�¹å‘Šå�»å�¼å�¾å‘€å‘‚呃呆咂呢呦呧周咒�呱呫味呵呶呷呻呼命咀咄咆咈和咎�咋å’�咡�咢咥咧咨咫咬咯咱咳咷�\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"�����������������������������������囃嚽嚾囆囋��囌�囔å›�囡��囟囧�囥��������åœ�圊圌圔圚圛�圞圠�圣�圮��圴��圪���å��å�‹ï¿½å�’�����å�…圾����������å�½å�´å�¶åž€å�²å�±åžƒå�©å�¯å�¨å�¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åžµåž˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å’¸å’ºå’½å“€å“�哂哄哆哇哈哉咻咿員哥唎哦哩哭哮哲哺哼哽哿å”�唆唈唉å”�哤哨唄å”�售唯唱唳唾å•�啣啄商å•�啟啖啗啜啞唪唼å•�啻啼å–�喀喂喃善�喇喈喉喊å–�喓喋喑喘喙喚喜å–�唧喧喻喪喬單啾嗃嗅嗎嗇嗑嗓嗔嗚嗛嗜嗟嗣嗤喔�\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"���������������������������������垮垔åž�垗�垥垙垟垌�������垕����垸埌垶垿埕埔埆垽垼�埇���垹垺�������埥埬埣埲埮埽埼埻堔堈埢埜埳�埧堀堌埱堎埩埰å �å „å ‹å ‰å �����������堩堷堥堣堭堬å �堨堛堮堿�堸�����������������������������������喟喤喫喭嗆嗉嗒嗿�嘆嘈嘉å˜�å˜��嘒嘖嘗噓嗹嘂嘎嘔嗷嗽嗾嘬嘩嗶嘰嘯嘲嘴嘵嘶�嘹嘻嘿噉噌�噎噢�噤器噩噪噫噬噯噲噴噶噥噦噸噱嚀嚅嚇åš�嚙嚚嚲囅嚥嚬嚮嚳嚴嚨嚶嚼囀å›�囂嚷囉囊囈囑囓å�»å›—回囚四囪因囤困囫�\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"�����������������������������������������������堳��塥塭塨塣å¡�塙塉塯塕��������堽���墆塻墔å¢�墇塶墘墑墂墈塽塴墋塺��墎����������墥��������墡�墣墯墬墱�������壆墽壂�壔壒�����������������������������������囷囹固囿圃圄圈圉國�圇圂囮åœ�園圓圖團圜�土在圩圬圭圯地圻å�€å�»ï¿½å�‡å�Šå��å�Žå��å��å�‘�å�Œå�¡å�¤å�¦å�­å�µå�·å�¼åž‚å�ªå�«å�°å�³åž‹åž“åž�垠垢垣垞垤垛垚埃埋城埒埂åŸ�域埠�埭埶執培基堂堅堆堊埤埴埵埸�堙堞堡堠堤堪堯報堲�\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"��������������������������������������壢å£�壛�������壨壧��壴�壾�夃夌å¤�夎夒夗����夼奅奊�奜���奫��奰�奲奿�奻奾她妅妀奼���妧妘妠妦妡�å¦�妎妢å¦������������妵妺å§�姎妽姈妱姃�妶妴姌å§��妼����������������������������������場堵堧堰�å¡�塊塋塌塑塔墓塚塗塘塞填塢å¡�塤塒塎塓塵塹塼塾塿墀å¢�境墅墉墊�塈å¢�墜å¢�增墟墨墩墮墺墳墠墫墦墾å£�壅壇壈壎壑壓壕壖壘壙壞壟壚�壤壩圳士壬壯壹壺�壽壼��夆�夂å¤��夔�夕外夙多夜夠夢夤夥�\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"���������������������������������姀妳姠���姲�姩姳姵姺姽娀姶姴�姛�姘姡娖å¨�娗娳����娭�������娊��娕婠婘婀婧娸å©�媎�婰�娹�娾婃��婂�婑å©������婟婥婬婒婛�婩婇��婈婌婓婤婗�������媃媄���������������������������������������大夭天太夫夬央失夯夷夸夾奄奇奈奉奎å¥�å¥�契奔奕奓套奚�奘奠奡奢奧奩奪�奭奮奀女奴奶奸好å¦�如妃妄妊妒å¦�妓妖妗妙å¦�妣妤妥妨妯妹妻妾姆姊始å§�å§�姑姒姓妲妮委姚姜å§�姞�姣姤姥姨姦姪姬姅姻娃姿å¨�娉姮姱�\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"�����������������������������������婿媌媜婻媦åª�媞婸�媓���媋���åª�媮娷媔婼媥媬媗�嫇媱嫈媻媰嫀嫊�嫆��åª�媹��媷媴媶��嫮嫥嫕嫭嫛嫳嫢嫬��嬞�嫨��嫿嫴嫽嫷嫶�嬅嫸�嫻�嫵����å¬�嬔嬓å¬�嬠��嬚�嬡���嬨�����������������������������������娌娑娘娛娜娟娠娣娥娩娓娼�娶å©�婆婉婊婕婚婢�婦婪婭娵å©�婞婷婺媒媚媛媟媢媧媊媕�媳媵媸媼媽媾媿å«�嫂嫄嫉嫋嫌媲媺嫖嫗嫠嫡嫣嫦嫩嫪嫘嫚嫜嫫�媯嬈嬉嬋嬌嬃嬖嬗嬙嬛嬴嬪嬤嬭嬲嬾嬰嬸孀孅孌妞å­�孑孔孕孖�\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"���������������������������������嬦嬮�嬯���嬬嬥嬧�嬽嬿�����孃��孈孇孋�å­�孎��孓����孢孬屘孮孲�孷�孻���宒宎����宨�宭��������寑寪å¯�寋寊������寯寲寱����尃�尌�尒å°��尳尷屇��屄����������������������������������字存孚孛孜å­�孟季孤孥孩孫孰孱孳學孺�孿孵宀å®�它宄�宅宇守安宋完å®�宓宕宗官宙定宛宜客宣室宥宦宬宮宰害宴宵家宸容�寀宿å¯�寂�寄寅密寇寧富å¯�寒寓寔寖寘寎寞察寡寢寤寥實寨寠寙審寫寬寮寰寵寶宧寸寺å°��\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"���������������������������������屌�屖屔�屙屜�屪�屴�屾���岓����å²�å²�岈岋岉岒岊�������岥�岶��岮岤岠岭岪岧岬岟岦岯å²�å³�峘峌峛峞峚峖峗峎�峉峇峊�����峟���å³��峪�峿峮峱峷�峰��崀��å´�峬崞崋å´�崤����������������������������������射�將專尉尊尋å°�導�å°�少�尖尚�尟尕尢尤尨尪就尰�尬�尸尹尺尻尼尾尿局å±�居屆屈�屋å±�屎å±�屑展å±�å±�屠屢屣層履屧屨屩屬屭�屮屯岳山屹屺屼岌å²�岑岔�岡岢岨岩岫岱岵岷岸岣峒峙峋峨峭�島峻峽峓峴峹��\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"���������������������������������崥崠崌崨å´��崆å´�崰崒崣崟������崮��崷嵃��嵕崳崺崴崵嵑åµ�崽�嵙嵂����嵧嵢嵨�����嵱嵣嵥嵲嵞�嶀嵽嶆嵺��嵷嶊嶉嶈嵹���嵿嵼嶜嶟��嶢å¶�嶓嶕嶡嶚�������������嶵����������������������������������崇崎�崑崔崖崙崗崛崢崩崚崧崦嵇崿嵋嵫嵊嵌崶嵎åµ�喦崱嵩å¶�嵬嵯嵾嶂嶄嶇嶒嶔嶸嶠嶞嶧嶙嶷嶺嶼嶽巉巋å·�巒巘巔巖嶗巛å·�州巡巢�工左巧巨巫差�己巳已巴�巷巽�巾�市布帆�帑帕希帖帗帘帙帚帛帔å¸�帡帟帥師�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"���������������������������������嶰嶮嶪嶨嶬嶱嶭嶩嶴��巀�巃����巆巇��å·��巕巑�巟巠�巰��巹�帊帢帣帠帤��帩帾帴�å¹�幎�幙幓幩å¹�幠�幧幨幦�幵�庂�庉庌庈����庰庤庢庛庣庨庮庪��庹庲庱����廄��廅廆廇�����������������������������������席帨帳帶帷常帽幃幄幅幀幋幌幔幕幗幘幟幡幢幣幪幫幬幭幯幰幛干平年并幸幹�幺幻幼幽幾�广庀庄庇床庋åº�底庖店庚府庠庥度座庫庭庳庵庶康庸庾庬庴å»�廂廌廑廈廉廊廋�廓廖廚廕å»�廛廟廠廡廢廣廨廩廬廱廳é¾���\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"����������������������������������廗廎廜廔廒廙廘��緳廞�廧廦廥��廮廯�廲蠯�异�弅������弚å¼���弮弳弶�彃彆彉彋�å½�彔�����彯虨彴�彸彶�彾彽�徛徖�徟�徫��徦徥��徲�徻徾�徿忀å¿������忔忕忷忨忞忥����������������������������������廴延廷�建���廿å¼�弄弇弈弊�弋�å¼�弒�弓弔引弗弛弟弢弣弦弧弩弤弨弭弱弰張彄強弸弼彀彈彊彌彎弘å½�彖彗彘彙å½���彡形彤彥彧彩彪彫彬彭彰影��彳彷役彼彿往å¾�徂待徇很徉徊律後å¾�徑徒得徘徙徜從徠御�\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"���������������������������������������怀���忣忺忯忳怜�怭怲怋怴怊怚怞怬怢æ€�怌怮怓怷怹�怉����æ�€æ�Ÿæ�¬ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ�”æ�²æ�žæ�…æ�“æ�›ï¿½ï¿½ï¿½ï¿½æ‚Žï¿½ï¿½æ‚•悗悢悈悀悇悊æ‚�悆æ�¿æ‚¨æƒ¦æƒˆæƒ”悺æƒ�æƒ�惤惌惢悷惉悹�æƒ�������惊�������������������������������������徨復循徬徭微徯徵德徹徼徽�心必忉忌å¿�忒忖志忘å¿�å¿‘å¿™å¿�忠忡忪快忭忮念忱忸忤忻忽忿æ€�怎æ€�怒怕怖怗怙怛æ€�怠怡急怦性怨怩怪怫怯�怵�怳怔æ��æ�‚æ�ƒæ�†æ�‡æ�Œæ��æ��æ�•æ�™æ�šæ��æ�¢æ�£æ�¤æ�¥æ�§æ�¨æ�©æ�ªæ�«æ�­æ�¯æ�°æ‚ƒæ�‰æ‚„悅悌�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"������������������������������������悿�����愘���惼惾惷愖愅惵�愓愃æ„�愣��愋惿���æ„�愄����慅愶愲慉愩愨愯愮���慦�慔慺慛慲慒慱慬憀慞�慖��憋憃慹��憱憰憪憡憭憟憢憉憛憓��憌��憳��������������������������������������������æ‚�悒悔悖悚悉悛æ‚��悟悠患�æ‚�悱�悲悴悵悶悸悻悼悽悾惄情惆惇惎惑惓惕惘惙惚惛惜æƒ�惟惠惡悰惋惰惱惲想惴惶惸惹惺惻愀æ„�愆愈愉愊æ„�愎æ„�愒愔愕愚愛愜感æ…�愧�愫愬愴愷慎愾愿�慄慆慇慈慊態慌æ…�慓慕慘�æ…��\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"������������������������������������憺憿懅憴æ‡�憵憼���懖���懧懠懤懨懞懘�懭懮懱懪懰懫�懩懻懹��戃戄������戠酨���戫戧戭����戺扂扔扜扞�扡���扚�扺抈�扲����扽扴æŠ�抌抎æŠ�抇扻�抸�抭拎抮抿抴抾抪����������������������������������慚慟慢慣�慧慨慫慮慰慳慴慵慶慷慼慾�憂慥憊æ†�憑憔憚憎æ†�憤憧憨憩憬憫憮憯憲æ†�憶憸憾懃懆懂懇懈應懊懋懌æ‡��憒憖��懟懣懥懦懲懿懵懶懷懸懺懼懽懾戀æˆ�戇�戈戊戌æˆ�戎æˆ�我戒戔戕或戚戛戟戢戥戡戣戩截戳�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"�������������������������������������抰抩挋拵挎挃拫拹æŒ�挌拸拶挀拲æŒ�挕���挓�����挔�æ�–挬æ�…æ�ƒæ�¤æŒ©æ��æ�˜æ�”挭æ�€æ�����挴æ�‚�æ�‡æŒ¸ï¿½ï¿½ï¿½ï¿½æ�—æ�µæŽœæŽ®æŽ°æ�¼æŽ¤æŒ»æŽ±ï¿½ï¿½ï¿½ï¿½ï¿½æŽŸï¿½ï¿½æŽ�æ�¥æŽ‚掭æŽ�掗æ�ºæ�¯æŽ™ï¿½ï¿½æŽ…���æ�Žæ�¥æ�¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æˆ®æˆ°æˆ²æˆ´æˆ¤æˆ¶æˆ¾æˆ¿æ‰€æˆ½æ‰�扃�扆扇扈扉扊�手æ‰�扎扑扒打æ‰�托扛扠扢扦扣扭扮扯扱扳扶批抵扼找承技抃抄抆抉把抑抒抓抔投抖抗折抨披抬抱抶抹押抽拂拄拆拇�拈拉拊拋拌æ‹�æ‹�æ‹�拑拒拓拔�拖拗拘拙拚招拜扤拮拭括�\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"���������������������������������æ��æ�¯æ�ƒæ�³æ�Šæ�¶æ�‡æ�™ï¿½æ�µæ‘¡æ�Ÿæ�¹æ�•æ�˜æ�±æ��æ�¾æ�‰æ�¤æ�³æ‘ƒæ�Ÿï¿½ï¿½ï¿½æ�Žæ�•æ�¹æ�·æ�£æ�Œæ�°æ‘�æ�¯æ�šæ‘€æ�žæ�§æ�‹æ�¿æ�«ï¿½ï¿½æ�¡æ�›ï¿½ï¿½ï¿½ï¿½æ‘�摲摵摦撦摎撂摞摜摔æ‘��摋摻摓æ‘�摿摮摰摫����摬���摷������撢撳撟撖撠撗撜æ’�撋����������������������������������拱拯拳拴拷拽拾拿æŒ�挂指挈按æŒ�挑挖拼挨挪挫振挶挹挺挼挽挾æ�„æ�†æ�‰æ�‹æ�Œæ��æ�šæ���æ�•挲æ�Žæ�§æ�¨æ�©æ�«ï¿½æ�­æ�®æ�²æ�±ï¿½æ�¶æ�·ï¿½æ�»æ�½æŽ€æŽƒæŽ‡æŽˆæŽ‰æŽŠæŽŒæŽ�掎æŽ�排掖掘掛掠採探掣接控推掩措掬掯掄掞掔掫æ�€æ�„æ�†æ�‰æ���æ��æ�’æ�–æ�šæ�›ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"���������������������������������撊撌撣�������撘�����摨��撽撿�擃�擖æ“�擉���擩擤擨��擰�æ”�攎攆擽擸攇�擿æ”�æ”�攉攌æ”���攗攕攓�攛攡攠攦����攭�攮��攳攽æ•�敃��敊敆��敓敧敪敤敜敯��敳�敹敿斀������������������������������������æ�œæ� æ�½æ�¡æ�£æ�©æ�ªæ�­æ�®æ�²æ�´æŽ½æŽ¾æ�…æ�—æ�°æ�«æ�†ï¿½æ��æ��æ�’æ�“æ�”æ�–æ�—æ�œæ� æ�¢æ�¥æ�¦æ�¨æ�ªæ�¬æ�­æ�´æ�µæ�¶æ���æ�Šæ�˜æ‘˜æ‘Ÿæ‘ æ‘§æ‘©æ‘­æ‘¯æ‘³æ‘¶æ‘¸æ‘¹æ‘ºæ‘‘摒摛撅摴摽撩撇撈æ’�撒撓撕撙撚æ’�撞撤撥撫播撮撰撲撬擫撱撻撼撾æ“�擂擄擅擇擊擋æ“�擎æ“��\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"���������������������������������斄�斒斔斖�斞斠斪斲斳斶�斻��æ—���旓旗�旚旞�旯旮�旳旲�æ˜�昑炚�旼昄昒æ˜�昈旻昊昋���昺昳昫����昤�昹�昡昲昜昦昢�������晒晅晊晟晇�����晥晙晜晢�����晼晾晻暀晪晱����������������������������������擒擔擗擘據擷攙擠�擢擣擦擬擯擱�擭擲擴擺擻擾攀攄攔攖攘攜æ”��攢攣攤攪攫攬攩�支攲�攴收攷攸改攻放政故效敉敘教æ•�救敕敖敗敔�æ•�敞敢散敦敻敬敲整敵敷數敺æ–�斂斃��文斌æ–�斑斕�斗料斛斜æ–�斟斡斢斤�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"������������������������������������������暊�����暆暌暕æš�暔晸暋�������暟暡暠�����暯��暰暩暲��曌���暺�暸暻曊曄曆�暽������曖曒曘���曣曤��曭曮曫曶æœ�朄�����������朒������������������������������������斥斧斨斬斯斮新斷�斸�方於施斿旎æ—�旂旃旄旅旆æ—�æ—‹æ—Œæ—�旖旒�旛旟æ—��无既旡日旦旨早旬旭旰旱旴旺昌昂昆昃明æ˜�易昔昀昉昕æ˜�星映春昧昨昭是昱昴昵昶æ™�時晃晉晌æ™�晚晛æ™�晞晡晤晨晦�普景晰�晴晶晷智晬暄�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"�����������������������������������������朠��������朣���朾朹朸朻机朿朼朳æ�™æ�…æ��æ�šï¿½ï¿½ï¿½æ�‹ï¿½ï¿½ï¿½æ�ˆæ�¹æž�æ�ºæž”�æ�·æž“æž…æ�¬æžŽæž’æ�»æž†æž„æ�´ï¿½ï¿½ï¿½æŸ­ï¿½ï¿½ï¿½æ�¸ï¿½ï¿½æŸ‰ï¿½ï¿½ï¿½ï¿½æž��柲柈柸柃柀柅柫柋柤æŸ�柶柣柂柧���柺�柊�����������������������������������暇æš�暑暖暗暘æš�暢暈暉暫�暮暱暴暵暹暨曉暾曀曈曇æ›�曙曚曛曜æ›��曠曦曨曩曬昇曰曲曳更曷書曹曼曾替最會朅勗月有朋æœ�朔æœ�朓æœ�朕朗望�æœ�期朢朦朧�木未末本札朮朱朴朵朽æ�†ï¿½æ�‡æ�‰æ�Œæ�Žæ���æ��æ�‘æ�“æ�–æ�•æ�œæ�žæ�Ÿï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������枺柦枮柛��柆桋æ¡�栵栫栭栯栴æ �栘栒栔�����������栮�栓栟栚桉栜�梠梉梤桸梑梌梊梒桼梖���桻梀梪���������梨梡梂梇桭梮梫楖梣梬梩桵桱桾梛棳棡椇棌椈楰梴椑棯棆椔棸棽棵棇����������������������������������æ� æ�—æ�ªæ�­æŸ¿æ�¯æ�°æ�±æ�²æ�³æ�¶æ�µæ��æ�¼æ�¾æ�¿æž‰æž�枕林枙枚果æž��枇枋枌枘枯枲枳枵架枷枸柎枻æŸ�柄æŸ�æŸ�柑柒染柔柘柙柚柜æŸ�柞柟柢查柬柯柮柰柱柳柴柵枰枹柷栗校栩株核栱根栻格栽桀æ¡�桂桃桅框案桌桎æ¡�桑桓桔�栖栲栳桄�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"���������������������������������椋椌椗棑椆椄棜椪棪æ¤�棷棤棶�����������椊�椕�棴棔�����棎棩������椯楑������������楺楈楉椵楬椳楥椴楀楄楶���楌楋����楟楎楱楪楂楴椲楒楻椼���榵�������������������������������������桫桴桹桶桷桿梃æ¢�梅梆æ¢�梓梔梗�梜æ¢�梟梢梧�梭梯梱械梲梳梵桮æ¢�桯棄棉棋æ£�棒棕棖棗棘棚棟棠棣棧棫棬森棰楦棲棹棺�棻棼�椅æ¤�椎椒æ£�棓棱棨æ¤�椓椷椰椹椽椿楅楊楓楔櫛楗楙楘楚楞æ¥�楠榆楢楣楫業楯楮極楷楹�\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"���������������������������������槂�榳榞槙榶槉榠榰榬榑榙æ¦�榩榗���������榽槔榹æ¦��榣榯榿槄�����æ§��æ¨�槾樧槲槮樔樀樆槸�槤樠槬槭槢æ¨��樘槶�樖樇槼���槦������槻�槷橀樄槴�����橞����橩���������������������������������������椸楛楨楩楸榔榕榖�榛榜榦榧榨榫榭榮榱榴榻榾æ§��槊構槌æ§�æ§Žæ§�槓榎榤榥榷榼樑槃槧槨�概槳�槽槿æ¨�樂樊樓樕標樛樞樟模樣槥樅æ¨�樗槱樲樸樵樹樽樾橄橈橋æ©�橙橛機橡橧橫樨檸橢樺æ©�檖橘檀檉檄æª�檔檜檟�檠�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������燊橯橇����橖樴橦橉橨æ©�橭橶橑橚樻樿橪橤���檛檡檞檇檓檎檕檃檨檑檚橿��æª�檥æª�橾檗�檽檭櫡櫆��櫅檹檴�������櫠櫌櫑櫙�櫋櫥æ«�櫫櫧����櫰櫸櫨櫹����欂櫼��欋欈欉æ¬�欑�����������������������������������檢檣檬檮檯檳檻櫂櫃�櫓櫚櫜æ«�櫞櫟櫱櫪櫬櫺櫳�欄櫻權�欒欖欃柩欠次欣欬欲款欷欹欺欽欿歃歆歇歕歉歌歎æ­�歔欻歙歛�歟歠歡歞止正此步武歪歧歲歷歸�歹死歿殀殂殃殄殆殉殊æ®�殖殘殕殛殞殤殫殢殪殮殯殲�殳�\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"���������������������������������欘欗欚欙欥欨�欯欭欱欴欶欳欸欼�æ­��歂歈歊æ­�歋��歜歭�歾肂殈殑æ®�殔殗殙殟殠殥殣殦殧殭殰殶�毃毄毈毇毉毊毌æ¯��毚�毞�毦毤毨毣毰毲��毻毼毽毾æ°�氀毿氆氕氘氖氙氚æ°�氠氟氥氧氨氦氪氫��氰氬氮����������������������������������段殷殺殼殽殿毀毅毆�æ¯�毋æ¯�毒毓�比毖毗毘�毛�毧毫毬毯毳氂氅毸毹氄氈æ°��æ°�æ°�民氓氯气氛氣氤氳浠水�永氾æ±�汀求汎汗污汛汜æ±�江池�æ±�汔汕汞汨汪汰汲汴汶�決汾æ²�沂沄沃沈沉沌æ²�æ²�沒沔沖�沙沚沛沆沓�\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"���������������������������������氶�汃氿�氻���汆�������汌汒æ±�æ±™æ±�汊汋����汥�����æ²�沎�汽汸汫沋æ²�沘汱汯沇沕沜汦汳�泧沷泭泜泒泵��æ³����泀æ³�泇沰����泩沺泃泬沶沭洢æ´���浂���洬洉æ´����洇洃�����������������������������������汩汭沅沬沫沮沱河沸油治沼沽沾沿泂泄æ³�泅泔泆泉泊泌泓法泗泚泙泛泠泡波泣泥注泫泯泮泰泱泲泳�沴æ³�æ³–æ³�洄洊洋洌洎洒洗洛洟洞津洧汧洪洫洮洲洱洳洵洶洸活洼洽派洿æµ�洙洚洹浙浚浣浦浩浪浮浴海浸浹浼涇消涉�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"���������������������������������洨洴洭洩洺洑洀æ´����浀�æ´��浻����洖�����涄�æ¶�浽涮�涃涀�����浵����浺浤浶æ´�浘浬浢浭浯æ¶�涊淯浿涆浞浧涗浰浟������������淗涺淕æ·���淂淲�涫涳湴涬淢淶淔渀淈淠����������������������������������涌涓涔涕�涘浡�浥涂涅涒涑涯液涵涸涼涿淅淆淇淋淑淖淘淙淚æ·�淡淤淦淨淪淫淬淮淰深淟混清淹淺添涎涪涴淀淄淒淞�淩淜渙渚減æ¸�渠渡渣渤渥渦測渭港渰渴游渺渾湃湄湅湊æ¹�湎湖湘湛æ¹�湧湫湮湯湲湱渟渢湑湓湔�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"���������������������������������涾淥淛淴淊涽淭淌æ·�æ·���淉淣淓淳淵淼�湸���湒��湡渱渨湠渹湟��湚�湦���渧�渶�湕溙���湷��湆湇湉渼渽渲湥湢渫渿æ¹�湳渜渳湣湋湀渻渃渮湞湨����湹湤�溎溣�溳����溗æ»��������������������������������������湜�湩æº�準溛溜æº�溟溠溢溤溥溧溦溪溫溯溱溲溶溷溺溼溽æ»�滂滃滄滅滋滌滎滑滓滔滕æº�溘滇滘滫滮滯滲�滴滬滸�滾滿æ¼�漂漆æ¼�溉漓演漘漙漠漢漣漪漫漬漭漰漱漲漳漸漾漿�滷滹漈漉漎漚漦漩漯漵漶漊漕æ½�潑潔潘潛�\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"���������������������������������æº��滊溿溒�滖滈滀溓溔溹滆滒�溞滉溰æ»�æ»�溴溾滜������漞����滵滱���æ¼�����漟�潩��漀漜���漺滽��漹潻滼漃漥漷滻漮潎漧漻漒滭漼潳漇潃漅潽�潗澔澓澅潚澖潶潬潕潲潒æ½��潣潡�����������������������������������潟潢�潤潦潭潮潰潼�潸潺澀澄澆澇澈澉澌澎æ½�æ½�潞潠潀濆潯潾æ¾�澂澒溈澡�澣澤澮澳澹激æ¿��濃澠澥澦澧澨澰澴澱濇澶澼濘濔濕濈濊濛濟濠濡濤濫濬濮濯濰濱瀉濩濞濺濼濾瀆ç€�瀑ç€�瀕ç� ç€šç€›ç€�瀟瀠瀨瀘瀡瀣瀼瀋ç€��\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"�����������������������������������æ¾��澋�潪潓澕��澗����潧����澭濋濎濄澽澞濂瀄濌澩澬æ¿�澢澫æ¿�澲澿澺澪澯�濨����濷�濢������濲����濴濜濭濣濧濦�瀀濻���瀊���瀇瀌瀅瀔瀎濿�瀙瀖��瀫瀢瀩�瀤瀗����������������������������������瀧瀦�瀲瀾瀰瀵瀹瀺ç�Œç�ƒç�‰ï¿½ç�‘ç�˜ç��ç�£ç�©ç�žç�¤ç‚¸ç�«ç�°ç�¶ç�¸ç�ºç�¼ç�½ï¿½ç‚Šç‚Žç‚’炕炙炘炤炫炬炭炮炯炰炱炳炷��烈烋çƒ���烘烜çƒ��烹烺烽焌焙焚焜無焦焰然焞焠��煇煉�煌煎煮煒熙煖煜煞煢煤煥煦照煩煨�煬煽熀熄�\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"�����������������������������������瀯瀷瀴瀱ç�‚瀸瀿ç�€ç€³ï¿½ç€»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�…ç�„ç�Šç�ˆï¿½ç�†ï¿½ï¿½ç�—��ç�’ç�›ï¿½ï¿½ï¿½ï¿½ç�šç�¡ç�Ÿç�¦ç�¥ç�¨ç�ªï¿½ï¿½ç�±ï¿½ç�´ï¿½ï¿½ï¿½ç‚”炅�������炑���炓炖炃���炄炆炟炾���炡���炩�炵炴�烅�烚�烞�烎烒����������������������������������熅熇熊ç†�熒熛熟熔熨熬熯熱熠熲熸�熹熾燀燂ç‡�燖燙燃燄燈燎燒燔燕營燠燥燦燧燬燭燻燮燹燼燿燾爆爇çˆ�爓çˆ�爛爚çˆ�爟焮焯�爨烤爪爭�爬爰為爵�父爹爺爸爻爽爾�爿�牂ç‰�牆�片版牋牌牒�牖牘牓牙�牛ç‰�牟牡�\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"���������������������������������烇烡���烢烗烠��çƒ��烓烑缹烊烙����烶��烳焆�焋��焂烼烸��焀�烿����焉焊ç„�烷焗烴烯烰�焄��������������焱焣����������焟�焢����煠ç…�ç…���煓��煋����������������������������������牢牣牧牴物牮牯牲牶牷特牽牿犀�犉çŠ�犒犖犢犧犨牳犬犯犴狀狂狃狄ç‹�狎ç‹�狗狙狡�狠狩狴狸狹狼狽狻狺狷猋çŒ�猖猗猙猛猜çŒ�猞猊猘猢猥猩��猴猶猷�猱猺猻猾猿ç�ƒç�„ç�…ç��ç��ç�’ç�—ç�˜ç�§ç�¨ç�ªç�¬ç� ç�®ç�²ç�¯ç�³ç�·ç�µç�¸ç�ºç�»ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"���������������������������������煘���煪煄���煲��煸���煚ç…�煃煟煔煙煆煣ç†�熉熂煻��爃������熆�����熡��熥��熧�������熼ç†�熪熳熤熞熜熰熚�����燅熿燉燜燘ç‡�燋ç‡���燇�燚���������熽����������������������������������çŽ�ç�°çŽ€çŽ„çŽ‡çŽ…çŽˆï¿½çŽ‰çŽ‹çŽŽçŽ•çŽ”çŽ–çŽŸçŽ çŽ¢çŽ¦çŽ¨çŽ©çŽ«çŽ²çŽ³çŽ·ç�‚ç�‡ç�ˆï¿½çŽ»ç�€ç�Šç��ç�Œç޼ç�žç�“ç� ç�™ç�–ç�¥ç�£ç�©ç�ªç�­ç�§ç�®ç�½ç�¾ç�ƒç�…ç�†ç�‡ç�‰ç�¶ï¿½ç�Šï¿½ç�–ç�šç�›ç�¢ç�¤ç�¥ç�¦ç�¨ç�ªç�­ç�®ç�¯ç�³ç�´ç�¶ç�µç�«ç�¬çޤç�²ç‘‹ç‘•瑙瑚瑛瑜瑞瑟�瑀ç‘��瑑瑗瑣瑤瑩�\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"������������������������������������燨�����燢�燤燱���燡燴��燸燽������çˆ����爌爊爂���������爔����爙��爞���爢�爣��爩������牄牉��ç‰�牚牞牠牪牬牰牸�牼牾牻�çŠ�犄犈犆犅��犌犑����������������������������������瑪瑰瑲�瑯瑱瑳�璀璃璋瑽瑾ç’�璆�璈璡璇ç’�璜璣璘璞璟璠璧璨璯環璪璫璽璲璸璵瓊ç“�瓔瓛璿瓚�瓀瓘璥瓜瓞瓠瓢瓣瓤�瓦瓮瓴瓶瓷瓻甃甄甇瓿甌ç”��甑甓甕甗甔甖瓩甘甚甜��生甡產甥甦�用甪甫甬甯�田由甲申�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"���������������������������������çŠ�犎犕犓犗���犘犚犛��çŠ�犞犥犦犤犣犡�犩犪�犮犰犵�犺狅犿犽狆�狖狋狘狉狜狒狔狚狌狑狊狤狨狫�狟狪狦狣猀狾狶狳���猌�猓猇猑猒猈狿çŒ�猣猵猰猳猧猲猭猦�����猼ç�‚ç�€ç�Šï¿½ï¿½ç�Žç�‘ç�Œï¿½ï¿½ç�žï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç”·ç”¸ç”½ç”¾ç•€ç•‹ç•Œç•Žç•�町�甿畇畔畚畛畜ç•�留畟畢畤略畦番畫畬畯異�畷畹畽當畸畿疆疇疊�疋�ç–�ç–�疑�疒疔�疕疚ç–�疢疣疤疥疫疧疲疳�疵疸疹疼疽疾疿病症痂痊痌ç—�痒痔痕痗痘痛痞痣痡痢痯痰痲痴痺痼痾痿瘀ç˜��\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"���������������������������������ç�Ÿç��ç�›ç�¡ç�¢ç�©ç�¦ç�¥ç�«ï¿½ç�¶ç�½ç�¼ç�¾ç�¿çŽ‚çŽƒçŽ†ï¿½ï¿½çŽ’ï¿½çŽ—çŽ“ï¿½ï¿½çŽ¥ï¿½çŽ¬ï¿½çŽ¡çŽ­ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�†ï¿½çŽ¹ï¿½çŽ´ç�ƒç�‹ï¿½ï¿½ï¿½ï¿½ï¿½çŽ¿çŽ¸çŽ¾çŽ¶ç�…�ç�›ç�”�ç�šï¿½ï¿½ï¿½ç�¨ï¿½ç�«ç�’����ç�œç�˜ï¿½ç���ç�¸ç�µç�„ç��ç�€ç���ç�‹ï¿½ç�¼ï¿½ï¿½ç�¿ç�ºç�ˆï¿½ç�´ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç˜‰ç˜‹ç˜�ç˜�ç˜�ç˜�瘓瘕瘖瘞瘟瘠瘡瘢瘤瘥瘦瘧�瘨瘰瘳瘴瘵�瘼療癃癆癇癉癖瘺�癘癙癜癤癡癢癥�癭�癩癬癮�癰癱癲疙癶癸登發�白百皂的皆皇皈�皎皓皖皙皜皚皤�皦皭皪皫�皮皴�皸皺皽�皿盂盃盅盆盈益�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"������������������������������������������������瑎ç� ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�©ç�ºç�°ç�¡ç�±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç‘„瑊ç�¿ç‘’�瑂瑔�ç‘��ç‘������瑆��������瑹瑢瑵�����瑭������瑮瑧����������瑼璉璊璅�������������������������������������ç›�盎盒盔盛盜ç›�盞盟�盡監盤盥盧盦盭盩盪盬�目盲直相盼盾çœ�眄眇眈眉眊看盻盰盱眚眛真眠眢眥�眩眙眯眵眴眶眷眸眺眼眾�眹ç�¨ç�‡ç�†ç�Šç��ç�šç�›ç�œç�žç�ªç�¡ç�¢ç�£ç�¦ç�«ç� ç�Ÿç�¥ç�¹ç�¿çž€ï¿½ç�¯çž‹çž�瞎瞑瞞瞠瞪瞥瞧瞬瞳�瞭�\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"����������������������������������瑿������璕�璚璗����������璭���璱璩璦ç“������璻�瓋璺瓅����������瓖瓗����ç“�瓟瓡瓥瓨瓬瓵�瓾瓽甀甂�甈甋ç”�ç”’ç”��ç”�����甩甭甮甹���畈���畣������������������������������������瞰瞶瞻瞽瞿矇çŸ�矓矗矙瞢矚眭矛矜矞�矢矣知矧矩短矮矰矯矱�石�矼砆矻砂砉砌ç �砑砒砭砢砣砥斫砦破砲砠砧砮砰硃研硎硜ç¡�硤硨硫硬硭硯确碆碌碎硼碗�碇碔碑碓硾碡碪碞碭碟碣碧碩碬�碰確碼碾ç£�磅磊�磋ç£��\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"�����������������������������������������畾�疀��疌疘疶疰ç—�疻痄痀ç—�ç—Žç—�ç—‹ç—‘ç—¦ç—�痟痤痠痙痧痚�痵痽瘃痱痷痹痸痻瘑瘊瘈瘌瘙瘜瘣瘩�瘯瘭�瘽瘲瘸癌癈�癒ç™�癓癠癟癪�癵癹癿çš���皊皋çš���皒���çš�皞皛皯皰皵皻皾盄�盉�����������������������������������磔磕磉磑磛磟磚磧磨磬磯磲磺磽ç¤�磷磻礎磈礙礬礧磴�礦礪礫礱��示礽社祀ç¥�祅祇祈祉礿祕祊ç¥�ç¥�祓祔祖祗祚祛祜ç¥�神祟祠祫祲祥祧票祭�祼祺祿�ç¦�禋ç¦�禎ç¦�禘禊禔禖禕禡�禦禠禫禧禪禨禮禰禱禳禴�禸禹禺�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"���������������������������������盓�����盚��������盯盵盳�眃眅盹�������çœ�眧çœ�眓眒眣眨眕眑眲眳眽���眱��ç�„ç�…ç�Žç�‹ç�Œï¿½ï¿½ç��ç�™ï¿½ï¿½ï¿½ç�•ç�’ç�¬ç�–ç�©ç�§ç�”çž�ç�¼çž…çž‚ç�®ï¿½çž„ç�½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½çž‰çž‡ï¿½çž�瞌瞟瞙瞚çž�瞡瞜瞛����������������������������������离禽�禾禿秀ç§�秈秉�秋ç§�科秕秒�秘秪租秠�秤秦秧秩秫秭秬秷秸移稀稂稅稈程稌ç¨�稊稔稗稙稚稛稜稟稠�稹種稱稷稻稼稽稿穀穄穆�穋穌ç©�穎穗穜穡穟穢穠穨穩穫穭穰�穴穵究穸穹çª�空�穿窀窄窅窆窈窋窊窒窕�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"���������������������������������瞕��瞵瞫瞴����矂瞼瞺�矉矊�矌矎çŸ�çŸ�矔矕矘��矠���矬�矲��矸�矹矽��矺矷�������砅ç �ç �砎�砃�砓砱砳��砷砬砵砯砟砨砸ç �砡�砫����ç¡�������������硅硈硉ç¡�����������������������������������窖窞窗窘窟窠窨窩窪窬窮�窳窵窶窸窣窺窾�ç«�竄竅竇�竊�立竑站��竟章竣童竦�竭端競�竹竺竽竿笄笈笊ç¬�笑笙笛笞笤笠笥符笨�笪笫第笮笆笎笱笳筅筆筇等筊筋筌ç­�ç­Žç­�ç­�筑筒�答策筠筤筥筦筧筩筮筲筴筵�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"���������������������������������硊硌硢�硠硥硱硪硰硩��ç¢�碚碄碕碅碘碉���硻碖��硹�硿碙���碥�碳碲碴碨碫碤�碢����ç£�碻ç£�磌磎�磃������磠磡���磭ç£�磩磥磪磞磣磳礂磼��磹�礄�礅�������礌礓礔礉ç¤������������������������������������筱箋箎箂ç®�箇箔箕算箛ç®�箠管ç®�ç®���箘箜箊箬箭箯箱箴箸箾節ç¯�範篆篇築篋篘篔篙篚ç¯�篠篡篤簑篧篨篩篦篪篲篳�篴篷簀簆簇簋ç°�ç°Œç°�篌篾簃�簜簟簞簠簡簣簥簦簧簨簪簫簷簸�簻簽簾簿�籃籊籌ç±��ç±�籔籓籀�\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"���������������������������������礛礜�礞�礥礣礨礩��礯��礭礵��礸礹�祂��祄�祌祋��祒祑��祤���祩祪祣祡�����祴祳禂祹��������禓禗ç¦�����禈�禒�禛�禚禜�禤�禭禬��禲���禷禶歶�秅��ç§�秖����������������������������������籙籚籛籜籟籠籤籥�籧籩籫籮籬籯籲篰米�籹粉粒粕粗粘粟粢粵粥��粱粲粹粳粺粼精糈糊�糕�糖糗糜ç³�糞糟糠�糙糧�糯糲糴�糱糶糎糸系糾紀紂約紅紆紇紈紉紊紋紵紖ç´�ç´�ç´žç´½ç´�ç´�紓純紗紘紙級紛紜素紡索紫�\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"���������������������������������秎ç§�秮秜��秣��秺秶�稃���稄���ç¨�稘稞稒�稑�稦稓���稫穊稰稯������穇穔�穈穘穚穛����穧��穮穬�穱����穾�窉窌��çª�窔çª���窙���窢窫窴窲窯�窱窷竀窿���������������������������������������紩紬紮累細紲紳紹紺紼紾紿絀終絃組絆紱絅çµ�çµ�絕絛絜�絞絡絢給絨絪絮絰統絲絳絖絹絺絿ç¶�綈�綆綌ç¶�ç¶�綑經綃綜綠綢綦�綬維綮綰網綱�綴綵綸綹綺綻綽緅緌緎綾緇緊緋綣綯緒緘ç·�綿緞締緣�緦�編緩緬緯練緻�\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"������������������������������������竘��竤���竫�竮��������竷�����ç¬�笓笅��笉笵笻笴笰笢笘ç¬�笭笯笲�笚������笣筘��筀�筄筈��筷筭筳�筣����筶筰筡��箤��箈箑箖箌箅箙箄�������������������������������������������縕緗緙緡�緲ç¸�緹縈縉縊縋ç¸�縗縛ç¸�縟縣縑ç¹�縞縠縢縫縱縲縳縵縶縷縹縻總績繄繅繆繇縭縰縴繈織繕繙繚ç¹�繞繢繡繒繩繪繫繭�繯繳繹辮繻繼çº�纂繽繾纆纇纈纘續çº�纖çº�纊纑纓纔纛纚纜�缶缸缺缾�罃�罄罅�罋罌�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"���������������������������������箷篎�箹�篛篕篥篞篣篹�篜篟篢����簉ç°�篸篽簅篿篻簎簂��簊��篱簩簙簭ç°�簢������簰��簳簼簹簬��籉籈籅�籇�籗���籣籦���籵籽籺籸��ç²��粄粑粊�粅ç²������粣���������������������������������������ç½�ç½�ç½��网罔罕罘罛ç½�罟罡罣�罩罪罭置罰罨署罳罫罶罵罷罹羃罽罿羅羆羇羈�羊羌美羑羔羖羜羚ç¾�羞羢群羨義羯羲羵羶羸羹羼羽翀ç¿�翅翊翌翎習翔翕翛翟翠翡翣翥翦翩翫翬翮翯翰翳翹翱翻翼翽翾翿耀�è€�考耄者耆�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"���������������������������������粔粨粞��粯������粽粻粿�����糌糅��糒糔�糑糢��糬糪���糰�糷��ç´�紃��紕紑紎紟紒�絊紨���紸紶çµ�絇�������絑絒絔���絩絘絯絣絓絧絫絭��絽綄��綒���綀綅綎����������������������������������耇耋�而è€�耎è€�耑�耒耔耕耗耘耙耜�耞耡耤耦耨�耰�耳耶�耽耿è�ƒè�†è�Šè�’è�–è�˜è�šè�žè�¯è�°è�²è�³è�µè�¶è�·è�½è�¾ï¿½è�¿è‚„肅肆肇��肉肋肌肓肖肘肚肛è‚�股肢肥�肩肫肯肱育肴肸肺胃胄背胗胔èƒ�胎èƒ�胖胙胚胛èƒ�胞�胠胭胯�\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"���������������������������������絻絼綔綡�綧綷緂綪ç·�ç·€ç¶�緄��綩��緆綖綼綟����������緟緮�線緷緛緪緧縃緺緶緱緰綞���縤ç¸��縒縡縌縓縎縜縚縖縮縸縪繉繀繃縩縿縼繂顈縺�縯����繜繖繣繘繟繑繠�繓��繗繶繵繸繰����������������������������������胡胥胸胼能胾脂�脅�胱脈脊�脘脛脞脤脣朘脩脥脫脬脯脹脾腆腊腋腎è…�腑腓腔腕腥腦腴腫腮腯腰腱腸腹腠腿膀膂膋è†��腳膈膊膕膚膛膜è†�膠膩膰膳膺膴膽膻膾膿臀臂臄臆臉臊è‡�臘臙臑臚è‡�臟臠胤臣臥臧臨�自臬臭�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"���������������������������������繷繺繲繴�纀��纋纕纗�纙�缽缿�罈罊�罜罞罠罦罧罬�罻罼罺罾羉羋ç¾����羒羕羛羠羡羥羧羦羬羰羭羱�羳�羷�羺羻羿羾翃翂��翋ç¿�ç¿�翑翇ç¿��翗翜�翢���翭翪翨��翴翲è€�耖耟�耪耬耴��耵耷�����������������������������������臲�至致�臺臻�臼臾èˆ�舀舂舄舅與興舉舊舋�舌èˆ�èˆ�舒�舖舛舜舞èˆ��舟舠舡航般舫�舷舵舶船舸舲舳舴艇艋艄艖艗艎艘艙艤艟艨艭艦艫�艮良艱�色艴艷�艸艽艾芃芄芊芋èŠ�芎芑芒芙èŠ�芟芡芣芤芧芨芥芩�芫�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"���������������������������������耾耹��è�‡è�ˆï¿½ï¿½ï¿½ï¿½è�‘è����������è��������è�¬è�±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è�¸è�¹ï¿½ï¿½è‚Šè‚�è‚•è‚™è‚�肒肜��肭�肮肪肣肵��胘胇胑胈胂èƒ�胅胣胜胊胕胉�胳�胺胲胰胴胹胵è„�胻脀�脆è„�脰脙脖脭脟脡脕�脢�����������������������������������芬芭芮芯芰花芳芷芸芹芻芼芽�芾苑茆苒苓苔苕苗苙苛苜苞èŒ�苣苡若苦苧苫英苴苹苻�苾茀èŒ�茂范茄茈茅苃�茉茗è�”茜茢茦茨茫茭茯茱茲茴茵茶茷茸茹è�€è�ƒè�„è�Šè�¸è�‡è�‰è��è��è��è�‘è�’�è�„莛è�³è�·è�»è�¼è�½ï¿½èŽŠèŽŽèŽ’èŽ“èŽ–èŽ˜èŽžï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"�����������������������������������腃腌腒è…�腇脽è…���脺���腤腷腜腩腛腢腲朡腞腶腧腺腄������膉膆膃膇è†�膌膣膟膘膞膢����膱膦膮膹膵膫膨膬膲膷����臌臃臅臇è‡�臒è‡�臗臕�臛臞臢臡�臦臩臮臷臸臿��舑舕舔�舢舯舨�����������������������������������莠莢莧莆莨莩莪莫è�ŸèŽ‰èŽ½è�€è��è�…è�‡è�‰è�Šè�‘�è�–è�”è�˜è� è�œè�©å ‡è�¯è�°è�±è�²è�´è�¶è�¹è�¼è�½è��è�ƒè�†è�Šè�‹è�Œè��è�Žé›ˆè�¡è�Œè�©è��è�‡è�¼è�¬è�±è�µè�¸è�¹è�½è‘†è‘‰è‘�著�葚葛葡董葦葩葫葬葭葯�葳葵葷葸葺葽蒂葑葹è’��蒔蒙蒜蒡蒞蒟蒨�蒲蒸蒹�\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"���������������������������������舺舿舼舽�艉艀艂艅��è‰�艓艒è‰�艑艕艚艜艛�艣艡�艩艬�艵�艼芀èŠ�èŠ�芅芓芔芠苀�苂芶�����芚芘芛芞芺芴苳���苪����苯苨茺苖苬苲苵茌苶�苠�苺茬��è�ŒèŒ³èŒ™èŒ¥è�–茿è��è�‚è�ŽèŒ›èŒªèŒ§è�ˆï¿½ï¿½è�‹èŒžï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è’ºè’¼è’¿è“€è“�蓂蓄蓆蓉蓊蓋蓌è“��蓑蔀è“�蓓�蔌蒯蒱蓧蓫蓬蓮蓰�蓴蔻蓺薌蓼蔆蔇蓿蔂蔑蔒蔓蔕蔗蔚蔞蔟蔡蔣蔭�蔥蔦蔔蓽蔽蔬蕺蔾蕃蕉蕊蕎蕕蕖蕘蕙è•�蕞蕡蕢蕨蕩蕪蕭薀薯蕆蕈�蕤è–�蕷蕸蕾è–�薢薄薅薇薈薉薊薑薔薖�\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"���������������������������������è�¿èŒ¼èŒ–茤茠茩è�…茻èŽ��è�¶èŽ°ï¿½èŽ£èŽ�è�ºèޤè�´èŽ�èŽ�莕莙è�µèŽ”èŽƒèŽŒèŽ����莗莇莦���淽��莋è�¾èŽ¥è��è�£è�¸è�¨è�’è�§è�¤ï¿½è�†è�ˆï¿½è�£èŽ¿è��è�¥è�¿è�‹è�Žè�»èŽšï¿½ï¿½ï¿½ï¿½è�•è�ºè�µè�‰è��è�žè�‚è�³ï¿½ï¿½è�®ï¿½ï¿½ï¿½ï¿½ï¿½è�„����è�¬è�›è�“��������������������������������������薙薛孽薜薦薨薩薪薤�è–�薰薳薹薺薽薿藄藇藉藎è—�è—�è—��藕�藚藜è—�藟藤藩藥藪藷藹藺�藻藾藿蘄蘅蘆蘇蘊��蘋蘀蘚蘞蘢蘩蘭�虀蘧蘸蘿蘼�虆蘑è™�虎è™�虓虔處虛虜虞號虡虢虥虣虧虩�虫虱虯虹虺蚓蚔蚕蚊蚋蚌蚣�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"���������������������������������葮��葄葠�葋è�¯è‘‚è�­è‘Ÿè‘°è‘Žè‘Œè‘’�蓱�è�¿è‘–è‘¶è’�è’�葥葀蒆葧è�°è‘™è‘´è‘��葞è�·è�ºè�´è‘ƒè�²è‘…è�™ï¿½ï¿½è�«ï¿½ï¿½ï¿½ï¿½è‘‡è�¶è�³è�»ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è“…蒗蒤蓎蒬蒮蒫蒴蒪蒚è’�蒧蒻蒢蓇蒛蒩蓖蒘蒶è“�蒠����蓒�蒰��������������������������������������蚤蚧蚩蚪蚨蚯蚰蚱蚳蚶�蛄蛀蛆蛇蛉蛑蛋蛙蛛蛟蛣蛤蛩蛺蛭蛾�蜂蜃蜇蜈蜋蜓蛸蛹蛻蜀蜉èœ�蜊蜎蜘蜚蜜蜡蜣蜩蜥蜺è�ƒèœ´èœžè�€èž‚蜢蜮è�Žè�“è�•è�—è�˜è�™è��è�Ÿè� è��è�¥è�¦è�®ï¿½è�¶èœ·ï¿½èœ»è�Œè�¨è�¡è�£è�¤è�´è�¸èž�螓螞螘螟螢螣�螃螄螫��\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"�����������������������������������蔤è”�蔩蔎蔉è”�蔊蔧蔜蓻蔫蔈蔪��������蔋蔙�����蓲蓷蓳蓪蓩蔖蓾蔨è”�蔮蓶蔱蓨蕵蓯蓹蔘蔠蔰蕅蕫è•�è•“è•€è•�蕄蕇蕣蕛蕱蕮����蕧蕠蕦��蕬��蕔����������蕥�������������������������������������������螺螻螽螿蟄蟊螬螭螮螯螳蟀蟆蟈蟋蟣蟪蟒�蟠蟬蟲蟭蟹蟻蟾蟳蟶蠃蟿è �è …è †è �蠕蠖蠛蠜蠟蠡蠢蠣蠨蠹蠱蠲蠶蠻�血�è¡�衄����衊�行è¡�衎術衒衕衖街衙衚è¡�衛衡衢�衣表衫衰衲衷�衵衽衾衿è¢�袈袋è¢�袒袖袗�袚�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"�����������������������������������薟薃薧薕薠薋薣蕻薚薞蕼薡蕗薎薆è–�è–�薂薵藋藈藅薱薶藒蘤���薸薾薷��������薴藆藀藃藂���藫藱藭藙藡藨�藗藬藸藘藣藑�藯藞���������藰è˜�蘛藲藶蘉蘌��藽�����蘘蘪蘦蘟����������������������������������袞�袤袪被衭��袷袱è£�裂裊裎裀�裒裔裕裘裙補è£�裟褎裨裯裰裱裳裴裸裼裹製裾複褊褌褉褂褪è¤�褓褘褙褡褚褥褧褫褰褲褦褵褶褻�襄襋è¥��襖襚襌襜襞襛è¥�襠襟襦襪è¥�襤褸襫襭襯襴襲襼襶裌襾西è¦�覃覆�覈��見�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"���������������������������������蘣蘜蘙蘮蘡蘠蘥���蘗蘶������蘴蘵�蘳蘬��蘲�蘺蘹蘱蘻蘾虃虇虈虌虋虒虙虖�虤虪虰虭虮�虳��虻虷虴蚢蚖èš�蚑蚞蚜蚇蚗蚆蚚蚅蚥�èš�èš�蚎蚙蚡��蚵�蛃蚾��蚽蚿蚷蛂è›�蛅蚺蛈蚹蚸蛌蚴蚻蚼蛔����������������������������������è¦�覓視覘覜覡覦�親覬覯覲覷�覺覽覿�觀��角觔觖觚è§�觕解觥觩觫觭觱觳觴觸觶觼觿�言訂訃訇計訊討è¨�訓訕訖託記訌è¨�訑訒訛è¨�訟訣訥訪許設�訢訴訶診証註訾è©�詆詈�詎è©�詒詔評詖詘詛詞詠詡詢詣�試詩詫�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"���������������������������������蛘蛢蛦蛓蛚蛪è›�è›�蛨蛫蛜蛬蛗蜄蛷蜌蛖蛵è��蜆èœ�蛶蜅�触�蜳蜿蜨è�«èœ™èœ›èœ¬è��蜾è�†èœ èœ²ï¿½ï¿½èœªèœ­èœ¼èœ’蜱蜵è�‚蜦蜧蜸蜤蜰蜑�è�»è�–è�·èŸ¡è�³è�”è�›è�’è�šè�‘è�žè�­è�ªè�¢ï¿½ï¿½ï¿½è��è�¯è�¬è�ºè�œèž›èž�螗螒螈èž�èž–è�¹èž‡èž…èž�èž‘èž�螔螜螚�螉����������������������������������詬詭詮詰話該詳詼詿誆誄誅誇詵詹誌èª��誑誓誕誘誚語誠誡誣誤誥誦誨說誰課誶誹誼誾調諂諄談諉請è«�è«�諒諑論諗�諛è«�諞諟諠諤諦諧諫諭諮諱諳諷諸諺諵諼諾謀è¬�謂諜諡諴諶謄謅謆謇�謊謎è¬�謔謗謙謚講è¬��謠è¬��\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"����������������������������������螶螸蟞��螾螪蟅螰蟑螹螵螼蟉蟃蟂蟌螷��螴蟧蟦蟢蟯蟫蟥蟟蟤蟔蟜蟓蟘����蟗蟙蟴蟨�蠀蟺蟷蠉蠌蠋蟼蠈���蠔蠙è �è ‘è —è “è ©è �蠠蠤蠫蠬�蠦蠪蠥蠰蠮蠳�蠸蠷蠵蠼蠾蠽蠿衃衈衋������衧衪衩袂����������������������������������謖謦謨謫謬謳謹謾è­��證�譎è­�譒譔譖識譙譚�譜警譟譫譬譯議譴護譸譽讀譾�變讌讎讋讒讖讓讙讚�讜讞讟�谷谿è±���豆豈豋豌豉豇豎è±��豔è±�豕豚è±�象豢豨豪豫豬豭豳豵�豸豹豺貂貆貅貉貊貌è²�貓貔��è²�貞�\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"���������������������������������衶袀衱衹衯袃衴������袉袕袨袢袑袡袟袘袧袙袛袬袌袺裗袹袸袶袼袽袲��袾���裖裋裡è£�裞裛裚���裷裧裲裺裮裶裻è¤��褅褔褋�褗褆褖褑褕褒褞褭褮褱褢褩褣褟褳褼褾襒褷襂褽����襓襆��������������������������������������負財貢貤貧貨貪販貫責貯貲貳貴貶貸買貺費貼貽貿賀è³�貰賂賃賄賅資賈賊�賑賒賓賕賙賚賜è³�賞�賠賡賢賣賤賦質賬賟賭賴賵賮賺賻購賽賾賸贄贅贈贊贇è´�è´�è´�贓贔贖�贗贛贉赤赦赧赫赭赬�走赳赴赶起è¶�趄超越趕�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"����������������������������������è¥�襢襗襡襘��襣�襩襮襬襱�襳襹襺�覂覅�����覕覛è¦�覟覢覤覣覭覮�覶觓觙觛觟觤觡觠觢觜觨��觰觬觲觷觺觻觾�訄訰訧訬訞������è©�訹詙詀詗詄詅詑��詊���è©�詨��詶訿詷誂詻誃������������������������������������趙趣�趨趯�足趵趾è·�趺趹跂跋跅跌跎è·�è·‘è·•è·–è·šè·›è·�跗跫跟跡跣跨跪跬路跱跳跽踉踊跼è¸�è¸�踔踖è¸�踞踢踣踧踘踡踟踦踰踴踵踶�踽è¹�蹂蹄踱蹀è¹�蹇蹈蹉蹊èº�蹌蹕蹔蹙蹟蹣蹤蹜è¹�蹠蹯蹲蹴蹶蹺蹡蹢蹬蹭躕èº�躄躅躇躉�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"�����������������������������������詴���誫誙誋誒誖èª��諃�誽�諆誸諓諔諕誻諀諅����諘�誺諿����諢諲諰諈諻�謞謘謑謋謢謒謕è¬����謜謓謈謪謧謣謰謵譇謯謼謱謥謷���謽�謤��譗è­�譈譊譆譀譓譋譕譑譠譪è­�譨譧�譥譣����������������������������������躊躋蹋èº�躑躒躓躔躚躡躩躪�蹚身躬�躲軀��躺車軋軌è»�è»�軒軔軛軟軨軫軸軹軷軼軺軾較輅輈載輀輇輊輒輓輔輕輗�輛輜è¼�輟輦輩輪輞輠輥�輯輳輸輹輻�輮輴輶輾輿轂轄轅轀轆轇轕轉è½�轎è½�轒轖轘轞轟轡轢轤��\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"����������������������������������譹譅譺譻��讄讂讆��譿��讅���讔讕讘谹谻谼谽谾�豃豅豊è±���豗豜豟豥豤豦豰豲豱豯豷豶�豻豽è²�貀貄è²�貑貒�貕貙貘貗貚貜�貣�����貵貹��貾�賌賗賧��賥賨��賳賰��賹���贆�����������������������������������辛辜辟�辣�辦辨辭辯�辰辱農�辵迂迄迅迋è¿�迎近迓返迕迢迤迥迦迨迪迫迭迮述迴迷迸�追迺退é€�适逃逅逆逋逌é€�é€�é€�逑途逕逖逗這通逛é€�逞速造逡逢連逭逮週進逵逶逸�逼é�‡é��é�‚é�„逾é�Šé�‹é��é�Žé��é��é�‘é�’é�“é�”é�•é�˜ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"�����������������������������������贕贙赨赩赮����赲赸��赻�����趀��趑趌趎è¶�è¶�趓趒�����趖�趟趠趜趡��趛�趥趧������趬趪趭趫趮��趲趴趷趼趿跘跓è·�跇跜跙跈跆�跴跤跰跠跺跮è·�跩跦跢跧跲踂跿è¸�踃踇踆踅����������������������������������é�™é�›é�œé�žé� ï¿½é�£é�¢é��é�¨é�©é�­é�®é�¯é�²é�´é�µé�¶é�·é�¸é�¹é�ºé�»é�¼é�½é�¿é‚€é‚�邂還邅邇邃邈邊é‚�é‚�迻邑邛邗邙邕邢�那邡邦�邪邠邯邱邲邴邳邵邶邸邰邽éƒ�郅郇郊邾郃��郕郛郎郡郢郤郙郜郟部郭郴郵郯都郿鄂鄒鄄鄔鄉鄗鄖鄙鄘�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"���������������������������������跾���踀�踚�踜踠踫踥踤踮踕踛踑踙踩踒踓��踳踾踸踹蹅踼�蹓�蹎è¹�蹗蹖蹞蹥蹧蹛蹩蹦��蹼蹸蹳蹪蹻躆躈躂躎躖躗躘躞躟躠èº�躥躤躣�躦躨��������躽軂����軉軑軓軘軞è»�軜��軠�軴軩軯����������������������������������鄢鄞鄠鄜鄧鄫鄭鄰鄱鄴鄶鄲鄹鄿鄺酇酃酆酈éƒ�酉酊酋酌é…�酎酒酖酗酢酥酣酤酡酩酪酬酲酵酷酸酴酹酺醃醅醆醇醉醊醋é†�é†�醒醓醜醞醡醢�醪醫醬醮醯醴醲醵醺醽é†�醼釀é‡�釂�醱釆采釋釉里é‡�野é‡�é‡�鋅金釗釘釜é‡�釣釧�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"���������������������������������軻軦軮軥軵軧軶軱軬�輆軿è¼�輂輋è¼�è¼�輑����輤輘輚輣輖輬輵輲輷���轃���轈轑轔è½�轓轗轚轙轛è½�轠轣��辴���辿迉迆������迒迖����迣��迠迡�迼迾迵迿逄逤逜��逴逯����逿�����������������������������������釬釦釭釵鈇鈀éˆ��éˆ�鈒鈔鈕鈞鈴鈸鈺�鈿鉅鉉é‰�鉗鉛鉞�鉤鉋鉶鉸鉦銀銃銅銎éŠ�銑銓銖銘銛銜銚銳銶銷�銼鋈鋌é‹�鋒鋟鋘鋤鋩鋪鋙銲鋸鋼錄éŒ�錕錘錙錚錠錢錦錨錫錮錯錞錡é�Šé�‹é�›é�ªï¿½é�¬é�µé�¼é�¾é�‡é��é�”é� é�¤é�¥é�­é�°éŽ”éŽ‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"����������������������������������������逽����������é�«ï¿½é�³é�°é‚†ï¿½é�¾ï¿½ï¿½ï¿½é‚‹é‚�邘邔�邟邥邞邧���������郱邿���郈郖郠�郚郣郥郘郗���郪郰郲郳郔郫�鄆鄬郾�鄃郺郼鄈郹郻é„�鄀鄇鄅�é„�é„�é„�鄑鄋鄎鄣鄟é„�����������������������������������鎖鎗鎚鎛鎞鎡鎌鎧鎬鎰鎮鎊é�ƒé�ˆé�‘é�–é�—é�˜é�œé�¡é��é�¢é�žé�¤é�Ÿé��é�¦é�¨é�ƒé�µé�“é�¹é�˜é�™é�«é�®é�²é�µé�¶é�¸é�©é�ºé�»é‘„鑊鑌鑑鑒鑤鑕�鑠鑢鑣鑪鑰鑯鑲鑵鑷鑱鑼鑽鑾鑿錳長�門閂閃閆閉閈開閎é–�閑閒間閔閘閟閡閤閣閥閨閩閫閬閭閱閶�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"���������������������������������鄚鄤鄡鄛鄨�鄯鄩鄪鄦鄮�鄳鄵鄸�鄻鄾酀é…�é……é…„é…�é…��酘酚酓����酠�酟�酮酯�酳��醀��醑�醣醚醛醙醟���é†�醨醥醧�醰醭�醷醳�醹�醾釃釅釔釕釙釢������釴釱釳釩釸釤釹釫釷釮�釪�����������������������������������閹閻閼閽閾闃闇闈闉闊闋闌é—�é—��闓闔闕闖闒關闚闠闡闞闢闤闥闆阜�阞阡阤阨阬阮阯阱防阪阻阼阿陀陂附陋é™�陌é™�陔陘陛é™�陞陟陡院陣除陪陬陰陲陳陴陵陶陷陸陼陽�éš�隄隅隆隈隉隊隋階隔隕�隗隘隙際障�隤隧�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"���������������������������������釨éˆ�鈌釿鈑釽鈆��鈂����鈗��鈤鈣鈉éˆ�鈊鈥鈃鈚鈦鈄鈜鈅鈖����鉚鈶����鉈鉒鈰鈷鈽é‰�鈳鉥鉊鈹鉆鉑鉀鈾鉭鉬鉠鉧鉯鉡���鉰鉣鉎鉌�鈲鈱�鉖����é‰�鉔銕�鉾��鉽éŠ�銆����鈭�銙銂����������������������������������隩險隮隰隱隳隴隨隶隸�隹隻隼雀é›�雄雅集雇雉雋雌é›�雎雊雒雕嶲雖雘雙雛雜é›�雞離難�雨雩雪雯雰雱雲零雷雹電需�霅霄霈霉霆震éœ�霎éœ�霑霓霖霜霞霢霤霧霰霪�露�霸霹霮霽霥霾é�„é�‚é�†é�ˆé�‰éœ¨é�’é�–é�šé�›é�œï¿½é�žé� ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�����������������������������������銨銥鉼銤鉻鉺銠銔銪銦銫鉹銗鉿銣鋮�銈銧銋���銌銇�鋇鋰鋗é‹�鋯鋂鋨鋊é‹�鋓鋉���銡��鋆鋕���鋡��鋧�鋎�鋑é‹�鋃鋄鋀銻鋱銬�鋠������錧錈錟錆éŒ�é�ºéŒ¶éŒ¸éŒ¼éŒ›éŒ£éŒ’éŒ�é�†éŒ­éŒŽéŒ�鋋�é�’�����������������������������������é�¡ï¿½é�¢é�¦ï¿½é�¨ï¿½é�©é�³é�´éž…é�¶é�·é�¸éž€ï¿½éž�éž�鞋鞗鞘鞙鞞鞚�鞠鞦鞫鞬鞭鞮�鞶�鞹�éŸ�韃韆��韋éŸ�韓韌韎éŸ��韔éŸ�韘韙韜韞���韭�韱�音韶韻響韺頀�é �頂頃項頇順須頌é �é �é ‘é ’é ·é “é Šé �頎頖頗領頞頡頤�頲頦�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"������������������������������������鋺錴�������������錉鋿��鋻錔錖錩錪錂錀鋹éŒ��鋾��錥錋��錤�������鋷��錵���é�¹é���é�•�é�±é�™ï¿½ï¿½é�’���é�§ï¿½é�—����鎃鎯é�–é�˜é�œé�¶é�‰é�šé��é�‘éŽ�é�ŒéŽ‚ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é¡‰ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é «é ­ï¿½é °ï¿½ï¿½é ¸é ¹é »é¡†ï¿½ï¿½é¡Œé¡�é¡��顓願顙顛類顜顢顥�顧顫顯顰顱顴�風颭颯颶颸颿颺颻颼飄飆飀颽�飛�食�飢飣�飧飩飪飫飭飲飯飴飼飽飾飶餂餃餅餈餉養餌é¤�餖餗餒餓餔餕餘餛餚餡餞餤餟餧館餬餮餱餲餳��\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�������������������������������������鎙��é�žï¿½ï¿½ï¿½ï¿½é�Žï¿½ï¿½ï¿½éŽ¤éŽ£ï¿½éŽ•éŽ±éŽŸï¿½éŽˆï¿½ï¿½ï¿½ï¿½ï¿½éŽ¨ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éŽ‘ï¿½éŽ�鎵鎒鎷鎘éŽ�鎎鎪鎢鎳鎦鎀�����é�„é�•��������é�£é�”����鎥é�®ï¿½ï¿½ï¿½ï¿½é�‡é��é�‚é�šé�¬é�Œé�™éŽ©é�Šé��é�Žï¿½ï¿½ï¿½ï¿½é�§é�€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é¤¼é¤½é¥�饅饈饉饋饌饎é¥�饑饒饔饕饗饜饟饞�首馘馗�香馥馨é¦�馡馣�馬馭馮馳馴馱馹é§�駃é§�駑駒駕駘駙駛駋駜é§�駟駪駉駢駬駭駮駱�駰駸駿�é¨�騅騂騃�騑騎騋é¨�騖騄騙驄騠騣騤騧騫騰騶騵騸騷騮騾驀é©�驂驃驅驈��\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"���������������������������������é�½é�–é�‰ï¿½ï¿½ï¿½ï¿½é�†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é�‘�é�Œï¿½é�ºï¿½ï¿½é�¸ï¿½é�¿ï¿½é�¶ï¿½ï¿½é�‹é�»é� é��é�”é�¾é�•é��é�¨é��é�€é�·é�‡é�Žé�¼ï¿½ï¿½é�¿é�³ï¿½é�±ï¿½ï¿½é�½ï¿½é‘€ï¿½é�·ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é�¬é‘ˆé‘†ï¿½é‘‰é‘…é‘�鑋鑇鑗�é‘����������鑨��鑫鑩��鑮鑭鑸�����������������������������������驊驔é©�驖驕驌驗驒驚�驙驛驟驢驤驥驩驪駗骨�骭骯骱骰骷骸骼�髀骾é«�髆髑髒體髖髓�高�髟髡�髣髦髧髫髭髮�髳�髻髹鬆鬈鬅鬋é¬�é¬�鬒鬑鬘�鬙鬚鬟鬣鬢鬎鬥鬨鬧鬩�鬮�鬯鬱�鬲�鬵鬷鬻�鬼é­�魂魃魄魊魅�\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"����������������������������������鑴鑶��钂钀é’����钃�镺镻镼�镽���é–�閌���閜閞���閮�����閺閿閵闀闅閷�闑闛闟�闣��阢阠阰����阹阽阺陃é™�陑陓陊��陎����陭陫���隇陾隃隀����陱隒隓隑隞�������������������������������������é­���魈é­�魎魑魔�魘�魚魨魯鮀魴�鮒é®�鮓鮞鮪鮆鮑鯗鮮鮫鯀鯉é¯�鯊鯖鯢鯧鯫鯤鯨鯽��鰈é°���鰓鰥鰜鰣鰭鰲鰷鰻鱄鱉鱔鱘鱟鱠鱣鱗鱎鱖鱨鱷鱸魺鳥鳦鳩鳧鳲鳳鳴鳶鴄鴟鴆鴇鴈鴉鴃�鴛鴞鴣鴦鴨鴒é´�鴻鴿鴽鵀鵂�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�����������������������������������隡隢���隬����隿雂雃�雓雔��雗雚巂雟�雡�雥���雸雺雽雿��霂�������霙��霟霣�霬霦霩霫霯���霺霵霿�é�ƒé�‡ï¿½é�‹ï¿½ï¿½ï¿½é�ªé�¬é�°é�®ï¿½é�²é�½é�ºé�¾éžƒé�¼éž‚é�»éž„éž�é�¿ï¿½éžŠéžŽéžˆéž”鞡鞜�����������������������������������鵜éµ�鵑鵠鵓鵡鵒鵪鵰鵲鶉鵩鵬��鶖鶘鶚鶩鶯鶱鶴鶵鶺鶿鶊鷇鶬鶹鶻鶼é·�鷂�鷃鷗鷓鷕鷖鷙鷥鷩鷲鷹鷺鷦鷯鷴鷸鸇鸑鷽鸕鸚鸞鷟鸛é¸��鹵鹹鹼鹽鹺�鹿麂�麀麃麇麈麋麌�麑麒麓�麗麚麛éº��麟�麤�麥��麰麴��\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"����������������������������������鞨鞣鞤鞪鞳鞷鞻鞿韄韅韇韉éŸ�韕�韗韟韡韣韥韰���韹韽韾��頄����頧頛頩é �頨頠頜頵頯��顃é¡�顄顊�顅é¡�顑顒顎é¡�顗顠�顣顟顤顪顩��顲顳颬�颮颱颲颳���颾é£�飂���飉飋飌���飥��飹����������������������������������麻麼麾�黃黈黌�é»�é»�黎é»��黑黔默黛黜點é»�黠黥黧黨黯黴黮黶黷�黹黻黼�黽黿��鼇�鼉�鼎é¼�é¼�鼒�鼓鼕�鼖鼙鼛鼚�鼠鼢鼫鼬鼯�鼷�鼻鼽鼾é½���齊齋齎é½��齒齔齕齗齟齡齠齦齧�齬齪齮齲齶齷齣é¾��龔�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�������������������������������������餀飺�餇���餑餥���餯餭餰餫餪餵餾餿餺����饇饃饙�饖饘��饛����馜��馧��馦���馯馲馰馵馻馺駂馽駇�����駌�é§�é§�駓駔駎駖駥駤駣駩�������駺駴駷駹駶駻駽駾駼����������������������������������龕�龜�龠龢�ㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩˊˇˋ˙�ï¼�"#$%&‵()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�>?@ABCDEFGHIJKLM�\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"���������������������������������騉é¨�騊騇����騆�騚騕騥é¨�騛騢騞騜騲騴騱騬騪騩騭�騿�騹騽驆騺�驎驓é©�驉�驞驠�驦驧�驨驫骹骿骴é«�髂髇髊é«�é«�髕���髜��髬髲�髯�髺髶�髾髽é¬�髼鬃鬄���鬊鬌鬕鬗鬖鬞鬠鬤鬫鬳鬺鬾鬿魆魌����������������������������������NOPQRSTUVWXYZ[\]^_`ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz{|ï½�∼�。︵︶ï¹�﹂î€�î€�î€�î€��\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"���������������������������������魋����魒魖��魠魡���魤魧魷魱魦魶魵�鮕鮈��魽��鮅鮇魼魾魻鮂鮚鮭鮨鮛鮦鮡鮥鮤鮯��鮹��鮽鯇鯆鯃鮿鮵鮸鯈鯓�����鯕���鯪鯠鯞鯛鯦鯰鯔鯬�鯚鰗�鰋鯷鰅鰒鯸鱀鰎�鰇鰉�鰡�������������������������������������î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚��\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"����������������������������������鰫é°�鰬鰨鰩鱆鱈鰿鰱鰾鰴鰹鰳é±�鰼���鱙�é±�鱊é±�鱋鱕��鱧鱦鱢鱞��鱭��鱮鱴鱳鱱���鱹鱺��鳪鳭鳱鳵鳼���鳺鳽鳿鳷鴀鳹鳻鴅���瞗��鴕鴥鴗鴠鴔鴩鴘鴢é´�é´³éµ�鵧鴶鴮鴯鴱鴸������鴰����������������������������������î‚�î‚�î‚�î‚�îƒ�îƒ�îƒ�îƒ�îƒ��\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"���������������������������������鵅鵃鴾鴷éµ�鵊鵛鵋鵙鵖鵌鵗鵔鵟�鵘�����鵷é¶�鶄鶈鵱鶀鵸鶆鶋鶌�鵿鵽鵫鵴鵵鶅鵳鵻鶂鵯鵹鶟鶙鶤é¶�é¶’é¶�鶛鶠鶔鶜鶪鶗鶡鶢鶨鶞鶣�鶧鶷鶶鷊é·�鶾鷅鷎鷈鶭�鷌é·�é·��鷛鷒鷞鷚鷋é·�鷜鷑鷘鷵鷻鷷鷣鷫鷬鷭������������������������������������î„�î„�î„�î„�î„�î…��\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"���������������������������������鷤鷶鷡鷮鷰鷢鸂鷾鸃鸆鸅鸀é¸�鸉鷿鸄�鸋é¸�é¸�é¸�鸔鸒鸓鸗鸙���麆麊麉���麎麔麙�麜�麠麡�麧麭麩麮��麵麶�麷�黀黂�黓黕黖黚黟黤黫黭黰黲黳黵�é¼�鼀鼆鼊鼘鼜鼤鼣鼥鼪鼩鼨鼭鼰鼮鼱鼵鼴鼳鼲鼸鼶齀����������������������������������î…�î…Žî…�î…�î…�î†�î†�î†�î†�î†��\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"���������������������������������齂齃齇齉齌é½�齖齘齛齞é½�齜齥齤齫齱齰齯齴齵齸齻齺齹齾�龒��龤��������������������������������������������������������������������������������������������������î‡�î‡�î‡�î‡�î‡�îˆ��\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������îˆ�îˆ�îˆ�îˆ�î‰�î‰�î‰�î‰�î‰��\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������îŠ�îŠ�îŠ�îŠ�îŠ��\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\tD[254] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������î‹�î‹�î‹�î‹�î‹�îŒ�îŒ�îŒ�îŒ��\".split(\"\");\n\t\tfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20005] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������������������������������������������������������������������������������������ï¢�\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[141] = \"������������������������������������������������ ,ã€�。․•;:?ï¼��������︰…‥ï¹�﹑‧﹒﹔﹕﹖﹗︱–︲—︳_︴ï¹�()︵︶{ï½�︷������︸〔〕︹︺ã€�】︻︼《》︽︾〈〉︿﹀「ã€�ï¹�﹂『ã€�﹃﹄﹙������������������﹚﹛﹜ï¹�﹞‘’“â€�ã€�〞′‵#&*※§〃○â—�△▲◎☆★◇◆□■▽▼㊣℅‾ ̄��﹉﹊ï¹�﹎﹋﹌﹟﹠﹡+ï¼�×÷±√<>ï¼�≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿ã�’ã�‘∫∮∵∴♀♂⊕⊙↑↓â†�→↖↗↙↘∥∣ï¼�\�﹨�$¥〒¢£%@℃℉﹩﹪﹫ã�•���\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"������������������������������������������������㎜ãŽ�㎞ã�ŽãŽ¡ãŽŽãŽ�ã�„゜兙�������兛兞å…�兡兣嗧瓩糎â–�▂▃▄▅▆▇█â–�â–Žâ–�▌▋▊▉┼┴┬������┤├▔─│▕┌â”�└┘╭╮╰╯â•�╞╪╡◢◣◥◤╱╲╳ï¼�������������������123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�å�„�ABCDEFGHIJKLMNOPQRSTUVWXYZï½�bcdefghijklï½�nï½�ï½�qrstuvwxyzΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟ�ΠΡΣΤΥΦΧΨΩαβγδ���\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"������������������������������������������������εζηθικλμνξ�������οπÏ�στυφχψωㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔ������ㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋ���������������������������������������������������������������������������������一乙ä¸�七乃ä¹�了二人儿入八几刀åˆ�力匕å��å�œå�ˆä¸‰ä¸‹ä¸ˆä¸Šä¸«ä¸¸å‡¡ä¹…么也乞于亡兀刃�勺å�ƒå�‰å�£åœŸå£«å¤•大女å­�孑孓寸���\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"������������������������������������������������å°�尢尸山å·�工己已巳巾�������干廾弋弓æ‰�丑ä¸�ä¸�中丰丹之尹予云井互五亢ä»�什仃仆仇ä»�今������介仄元å…�內六兮公冗凶分切刈勻勾勿化匹å�ˆå�‡å�…å�žåŽ„å�‹å�Šå��������������������壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛æ°�æ°´ç�«çˆªçˆ¶çˆ»ç‰‡ç‰™ç‰›çŠ¬çŽ‹ä¸™ä¸–ä¸•ä¸”ä¸˜ä¸»ä¹�ä¹�乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北åŒ�仟å�Šå�‰å�¡å� å�¯å�®åŽ»å�¯å�¤å�³å�¬å�®å�©å�¨å�¼å�¸å�µï¿½å�«å�¦å�ªå�²å�±å�°å�¥å�­å�»å››å›šå¤–央���\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"������������������������������������������������失奴奶孕它尼巨巧左市�������布平幼å¼�弘弗必戊打扔扒扑斥旦朮本未末札正æ¯�æ°‘æ°�æ°¸æ±�汀������氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立������������������丞丟乒乓乩亙交亦亥仿伉伙伊伕ä¼�ä¼�休ä¼�仲件任仰仳份ä¼�伋光兇兆先全共å†�冰列刑划刎刖劣匈匡匠å�°å�±å�‰å��å�Œå�Šå��å��å�‹å�„å�‘å��å�ˆå�ƒå�Žå�†å�’因回å›�圳地在圭圬圯圩夙多夷夸妄奸妃好她如å¦�字存宇守宅安寺尖屹州帆并年å¼�弛忙忖�戎戌æˆ�æˆ�扣扛托收早旨旬旭曲���\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"������������������������������������������������曳有朽朴朱朵次此死氖�������æ±�汗汙江池æ±�汕污汛æ±�汎ç�°ç‰Ÿç‰�百竹米糸缶羊羽è€�考而耒耳������è�¿è‚‰è‚‹è‚Œè‡£è‡ªè‡³è‡¼èˆŒèˆ›èˆŸè‰®è‰²è‰¾è™«è¡€è¡Œè¡£è¥¿é˜¡ä¸²äº¨ä½�ä½�佇佗������������������佞伴佛何估ä½�佑伽伺伸佃佔似但佣作你伯低伶余ä½�佈佚兌克å…�兵冶冷別判利刪刨劫助努劬匣å�³å�µå��å�­å�žå�¾å�¦å‘Žå�§å‘†å‘ƒå�³å‘ˆå‘‚å�›å�©å‘Šå�¹å�»å�¸å�®å�µå�¶å� å�¼å‘€å�±å�«å�Ÿå�¬å›ªå›°å›¤å›«å�Šå�‘å�€å��å�‡å�Žåœ¾å��å��圻壯夾å¦�妒妨妞妣妙妖å¦�妤妓妊妥�å­�孜孚孛完宋å®�尬局å±�å°¿å°¾å²����\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"������������������������������������������������岑岔岌巫希åº�庇床廷弄�������弟彤形彷役忘忌志å¿�忱快忸忪戒我抄抗抖技扶抉扭把扼找批������扳抒扯折扮投抓抑抆改攻攸旱更æ�Ÿæ�Žæ��æ��æ�‘æ�œæ�–æ�žæ�‰æ�†æ� æ�“������������������æ�—æ­¥æ¯�求汞沙æ²�沈沉沅沛汪決æ²�汰沌汨沖沒汽沃汲汾汴沆汶æ²�沔沘沂ç�¶ç�¼ç�½ç�¸ç‰¢ç‰¡ç‰ ç‹„狂玖甬甫男甸皂盯矣ç§�秀禿究系罕肖肓è‚�肘肛肚育良芒芋èŠ�見角言谷豆豕è²�赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖�乳事些亞享京佯ä¾�ä¾�佳使佬供���\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"������������������������������������������������例來侃佰併侈佩佻侖佾�������ä¾�侑佺兔兒兕兩具其典冽函刻券刷刺到刮制å‰�劾劻å�’å�”å�“å�‘������å�¦å�·å�¸å�¹å�–å�”å�—味呵咖呸咕咀呻呷咄咒咆呼å’�呱呶和咚呢周������������������咋命咎固垃å�·å�ªå�©å�¡å�¦å�¤å�¼å¤œå¥‰å¥‡å¥ˆå¥„奔妾妻委妹妮姑姆å§�å§�始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往å¾�彿彼å¿�忠忽念忿æ€�怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉�拌拄抿拂抹拒招披拓拔拋拈抨���\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"������������������������������������������������抽押æ‹�拙拇æ‹�抵拚抱拘�������拖拗拆抬拎放斧於旺昔易昌昆昂明昀æ˜�昕昊昇æœ�朋æ�­æž‹æž•æ�±ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æžœæ�³æ�·æž‡æž�æž—æ�¯æ�°æ�¿æž‰æ�¾æž�æ�µæžšæž“æ�¼æ�ªæ�²æ¬£æ­¦æ­§æ­¿æ°“氛泣注������������������泳沱泌泥河沽沾沼波沫法泓沸泄油æ³�沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗ç‹�玩玨玟玫玥甽ç–�疙疚的盂盲直知矽社祀ç¥�秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾èˆ�芳èŠ�芙芭芽芟芹花芬芥芯�芸芣芰芾芷虎虱åˆ�表軋迎返近���\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"������������������������������������������������邵邸邱邶采金長門阜陀�������阿阻附陂隹雨é�’é�žäºŸäº­äº®ä¿¡ä¾µä¾¯ä¾¿ä¿ ä¿‘ä¿�ä¿�促侶俘俟俊俗侮������ä¿�俄係俚俎俞侷兗冒冑冠剎剃削å‰�剌剋則勇勉勃å‹�åŒ�å�—å�»åŽšï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�›å’¬å“€å’¨å“Žå“‰å’¸å’¦å’³å“‡å“‚咽咪å“�哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契å¥�奎å¥�姜姘姿姣姨娃姥姪姚姦å¨�姻孩宣宦室客宥å°�屎å±�å±�屋峙峒巷å¸�帥帟幽庠度建弈弭彥很待徊律徇後徉怒æ€�怠急怎怨æ��æ�°æ�¨æ�¢æ�†æ�ƒæ�¬æ�«æ�ªæ�¤æ‰�拜�挖按拼拭æŒ�拮拽指拱拷拯括拾���\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"������������������������������������������������拴挑挂政故斫施既春昭�������映昧是星昨昱昤曷柿染柱柔æŸ�柬架枯柵柩柯柄柑枴柚查枸æŸ�������柞柳枰柙柢æŸ�柒歪殃殆段毒毗氟泉洋洲洪æµ�津洌洱洞洗活洽������������������派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷ç�ŠçŽ»çŽ²ç��ç�€çŽ³ç”šç”­ç•�界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅çœ�盹相眉看盾盼眇矜砂研砌ç �祆祉祈祇禹禺科秒秋穿çª�竿竽籽紂紅紀紉紇約紆缸美羿耄è€�è€�耑耶胖胥�胚胃胄背胡胛胎胞胤èƒ�致舢苧���\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"������������������������������������������������范茅苣苛苦茄若茂茉苒�������苗英èŒ�苜苔苑苞苓苟苯茆è™�虹虻虺è¡�è¡«è¦�觔計訂訃貞負赴赳������趴è»�軌述迦迢迪迥迭迫迤迨郊郎éƒ�郃酋酊é‡�é–‚é™�陋陌é™�é�¢é�©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éŸ‹éŸ­éŸ³é �風飛食首香乘亳倌å€�倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢å‡�凌准凋剖剜剔剛å‰�匪å�¿åŽŸåŽ�å�Ÿå“¨å”�å”�唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽å”�圃圄埂埔埋埃堉å¤�套奘奚娑娘娜娟娛娓�姬娠娣娩娥娌娉孫屘宰害家宴���\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"������������������������������������������������宮宵容宸射屑展å±�峭峽�������峻峪峨峰島å´�峴差席師庫庭座弱徒徑å¾�æ�™æ�£æ�¥æ��æ�•æ�­æ�©æ�¯æ‚„������悟悚æ‚�悔悌悅悖扇拳挈拿æ�ŽæŒ¾æŒ¯æ�•æ�‚æ�†æ��æ�‰æŒºæ��挽挪挫挨æ��������������������æ�Œæ•ˆæ•‰æ–™æ—�旅時晉æ™�晃晒晌晅æ™�書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴æ¡�桀格桃株桅栓栘æ¡�殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈çƒ�爹特狼狹狽狸狷玆ç�­ç�‰ç�®ç� ç�ªç�žç•”ç•�畜畚留疾�病症疲疳疽疼疹痂疸皋皰益ç›����\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"������������������������������������������������盎眩真眠眨矩砰砧砸ç ��������破砷砥砭砠砟砲祕ç¥�祠祟祖神ç¥�祗祚秤秣秧租秦秩秘窄窈站������笆笑粉紡紗紋紊素索純ç´�ç´•ç´šç´œç´�紙紛缺罟羔翅ç¿�耆耘耕耙������������������耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀èˆ�航舫舨般芻茫è�’è�”è�ŠèŒ¸è��è�‰èŒµèŒ´è��茲茹茶茗è�€èŒ±èŒ¨è�ƒè™”蚊蚪蚓蚤蚩蚌蚣蚜衰衷è¢�袂衽衹記è¨�討訌訕訊託訓訖è¨�訑豈豺豹財貢起躬軒軔è»�è¾±é€�逆迷退迺迴逃追逅迸邕郡éƒ�郢酒é…�酌�釘é‡�釗釜釙閃院陣陡陛é™�除陘���\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"������������������������������������������������陞隻飢馬骨高鬥鬲鬼乾�������å�ºå�½å�œå�‡å�ƒå�Œå�šå�‰å�¥å�¶å�Žå�•å�µå�´å�·å��å€�å�¯å�­å…œå†•凰剪副勒務������勘動åŒ�åŒ�匙匿å�€åŒ¾å�ƒæ›¼å•†å•ªå•¦å•„啞啡啃啊唱啖å•�啕唯啤唸售������������������啜唬啣唳å•�啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶å©�婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜å±�崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜æ�¿æ‚£æ‚‰æ‚ æ‚¨æƒ‹æ‚´æƒ¦æ‚½æƒ…悻悵惜悼惘惕�惆惟悸惚惇戚戛扈掠控æ�²æŽ–探���\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"������������������������������������������������接æ�·æ�§æŽ˜æŽªæ�±æŽ©æŽ‰æŽƒæŽ›ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ�«æŽ¨æŽ„授掙採掬排æŽ�掀æ�»æ�©æ�¨æ�ºæ•�敖救教敗啟æ•�敘敕敔斜斛������斬æ—�旋旌旎æ™�晚晤晨晦晞曹勗望æ¢�梯梢梓梵桿桶梱梧梗械梃������������������棄梭梆梅梔æ¢�梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽çŠ�猜猛猖猓猙率ç�…ç�Šç�ƒç�†ç�¾ç��瓠瓶瓷甜產略畦畢異ç–�痔痕疵痊ç—�皎盔盒盛眷眾眼眶眸眺�硫硃硎祥票祭移窒窕笠笨笛第���\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"������������������������������������������������符笙笞笮粒粗粕絆絃統�������紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜è�Šè�†è„¯è„–脣脫脩脰������脤舂舵舷舶船莎莞莘è�¸èŽ¢èŽ–èŽ½èŽ«èŽ’èŽŠèŽ“èŽ‰èŽ è�·è�»è�¼èŽ†èŽ§è™•å½ªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è›‡è›€èš¶è›„èšµè›†è›‹èš±èš¯è›‰è¡“è¢žè¢ˆè¢«è¢’è¢–è¢�袋覓è¦�訪è¨�訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這é€�通逗連速é€�é€�逕逞造é€�逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢å‚�傅備傑�傀傖傘傚最凱割剴創剩勞å‹�勛���\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"������������������������������������������������å�šåŽ¥å•»å–€å–§å•¼å–Šå–�喘喂�������喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙åœ�堯堪場堤堰報������堡å �堠壹壺奠婷媚婿媒媛媧孳孱寒富寓å¯�尊尋就嵌åµ�崴嵇巽������������������幅帽幀幃幾廊å»�廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌æ��æ�€æ�©æ�‰æ�†æ��æ�’æ�£æ��æ�¡æ�–æ�­æ�®æ�¶æ�´æ�ªæ�›æ‘’æ�šæ�¹æ•žæ•¦æ•¢æ•£æ–‘æ–�斯普晰晴晶景暑智晾晷曾替期æœ�棺棕棠棘棗椅棟棵森棧棹棒棲棣棋æ£�æ¤�椒椎棉棚�楮棻款欺欽殘殖殼毯氮氯氬港���\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"������������������������������������������������游湔渡渲湧湊渠渥渣減�������湛湘渤湖湮渭渦湯渴æ¹�渺測湃æ¸�渾滋溉渙湎湣湄湲湩湟焙焚������焦焰無然煮焜牌犄犀猶猥猴猩ç�ºç�ªç�³ç�¢ç�¥ç�µç�¶ç�´ç�¯ç�›ç�¦ç�¨ç”¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç”¦ç•«ç•ªç—¢ç—›ç—£ç—™ç—˜ç—žç— ç™»ç™¼çš–皓皴盜ç��短ç¡�硬硯ç¨�稈程稅稀窘窗窖童竣等策筆ç­�ç­’ç­”ç­�ç­‹ç­�筑粟粥絞çµ�絨絕紫絮絲絡給絢絰絳善翔翕耋è�’肅腕腔腋腑腎脹腆脾腌腓腴舒舜è�©è�ƒè�¸è��è� è�…è�‹è��è�¯è�±è�´è‘—è�Šè�°è�Œè�Œè�½è�²è�Šè�¸è�Žè�„è�œè�‡ï¿½è�”è�Ÿè™›è›Ÿè›™è›­è›”蛛蛤è›�蛞街è£����\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"������������������������������������������������裂袱覃視註詠評詞証è©��������詔詛è©�詆訴診訶詖象貂貯貼貳貽è³�費賀貴買貶貿貸越超è¶�跎������è·�跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥é‡�鈔鈕������������������鈣鈉鈞éˆ�éˆ�鈇鈑閔é–�開閑間閒閎隊階隋陽隅隆éš�陲隄é›�雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃é»�黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋�奧å«�嫉嫌媾媽媼媳嫂媲嵩嵯幌���\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"������������������������������������������������幹廉廈弒彙徬微愚æ„�慈�������感想愛惹æ„�愈慎慌慄æ…�愾愴愧æ„�愆愷戡戢æ�“æ�¾æ�žæ�ªæ�­æ�½æ�¬æ��������æ�œæ�”æ��æ�¶æ�–æ�—æ�†æ•¬æ–Ÿæ–°æš—暉暇暈暖暄暘æš�會榔業楚楷楠楔極������������������椰概楊楨楫楞楓楹榆æ¥�楣楛歇歲毀殿毓毽溢溯滓溶滂æº�æº�滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷ç�…猿猾瑯瑚瑕瑟瑞ç‘�ç�¿ç‘™ç‘›ç‘œç•¶ç•¸ç˜€ç—°ç˜�痲痱痺痿痴痳盞盟ç�›ç�«ç�¦ç�žç�£ç�¹ç�ªç�¬ç�œç�¥ç�¨ç�¢çŸ®ç¢Žï¿½ç¢°ç¢—碘碌碉硼碑碓硿祺祿ç¦�è�¬ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"������������������������������������������������禽稜稚稠稔稟稞窟窠筷�������節筠筮筧粱粳粵經絹綑ç¶�ç¶�絛置罩罪署義羨群è�–è�˜è‚†è‚„腱腰������腸腥腮腳腫腹腺腦舅艇蒂葷è�½è�±è‘µè‘¦è‘«è‘‰è‘¬è‘›è�¼è�µè‘¡è‘£è‘©è‘­ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è‘†è™žè™œè™Ÿè›¹èœ“蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘è£�裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊辟農é�‹é�Šé�“é�‚é�”逼é�•é��é�‡é��é�Žé��é�‘逾é��鄒鄗酬酪酩釉鈷鉗�鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉é‰�鉅鈹���\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"������������������������������������������������鈿鉚閘隘隔隕é›�雋雉雊�������雷電雹零é�–é�´é�¶é �頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠������僧僮僥僖僭僚僕åƒ�僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉������������������å˜�嘎嗷嘖嘟嘈å˜�嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察å°�屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧æ�´æ‘­æ‘»æ•²æ–¡æ——旖暢暨æš�榜榨榕æ§�榮槓構榛榷榻榫榴�æ§�æ§�榭槌榦槃榣歉歌氳漳演滾���\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"������������������������������������������������漓滴漩漾漠漬æ¼�漂漢滿�������滯漆漱漸漲漣漕漫漯澈漪滬æ¼�滲滌滷熔熙煽熊熄熒爾犒犖ç�„������ç��瑤瑣瑪瑰瑭甄疑瘧ç˜�瘋瘉瘓盡監瞄ç�½ç�¿ç�¡ç£�碟碧碳碩碣禎������������������ç¦�ç¦�種稱窪窩竭端管箕箋筵算ç®�ç®”ç®�箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟è�žè�šè‚‡è…�膀è†�膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓è’�蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘è�•蜷蜩裳褂裴裹裸製裨褚裯誦誌�語誣èª�誡誓誤說誥誨誘誑誚誧���\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"������������������������������������������������豪è²�貌賓賑賒赫趙趕跼�������輔輒輕輓辣é� é�˜é�œé�£é�™é�žé�¢é��é�›é„™é„˜é„žé…µé…¸é…·é…´é‰¸éŠ€éŠ…éŠ˜éŠ–ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é‰»éŠ“éŠœéŠ¨é‰¼éŠ‘é–¡é–¨é–©é–£é–¥é–¤éš™éšœéš›é›Œé›’éœ€é�¼éž…韶頗領颯颱餃������������������餅餌餉é§�骯骰髦é­�魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉åŠ�劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履å¶�嶔幢幟幡廢廚廟å»�廣廠彈影德徵慶慧慮æ…�慕憂慼慰慫慾憧æ†�憫憎憬憚�憤憔憮戮摩摯摹撞撲撈æ’�撰撥���\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"������������������������������������������������撓撕撩撒撮播撫撚撬撙�������撢撳敵敷數暮暫暴暱樣樟槨æ¨�樞標槽模樓樊槳樂樅槭樑æ­�歎������殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬������������������熱熨牖犛ç�Žç�—瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼ç£�稿稼穀稽稷稻窯窮箭箱範箴篆篇ç¯�箠篌糊締練緯緻緘緬ç·�編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜è†�膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂è�´è�¶ï¿½è� è�¦è�¸è�¨è�™è�—è�Œè�“è¡›è¡�è¤�複褒���\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"������������������������������������������������褓褕褊誼諒談諄誕請諸�������課諉諂調誰論è«�誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟������趣踫è¸�è¸�踢è¸�踩踟踡踞躺è¼�輛輟輩輦輪輜輞輥é�©é�®é�¨é�­é�·é„°ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é„­é„§é„±é†‡é†‰é†‹é†ƒé‹…銻銷鋪銬鋤é‹�銳銼鋒鋇鋰銲閭閱霄霆震霉é� éž�éž‹éž�頡頫頜颳養餓餒餘é§�é§�駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔å„�儕冀冪å‡�劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶å£�墾壇壅奮å¬�嬴學寰導彊�憲憑憩憊æ‡�憶憾懊懈戰擅æ“�擋���\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"������������������������������������������������撻撼據擄擇擂æ“�撿擒擔�������撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅������濂澱澡濃澤æ¿�澧澳激澹澶澦澠澴熾燉ç‡�燒燈燕熹燎燙燜燃燄������������������ç�¨ç’œç’£ç’˜ç’Ÿç’žç“¢ç”Œç”�瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦ç©�穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞ç¸�縉ç¸�罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢èž�衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾è¬�謂諷諭諳�諶諼豫豭貓賴蹄踱踴蹂踹踵輻���\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"������������������������������������������������輯輸輳辨辦é�µé�´é�¸é�²é�¼ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é�ºé„´é†’錠錶鋸錳錯錢鋼錫錄錚éŒ�錦錡錕錮錙閻隧隨險雕霎霑������霖éœ�霓éœ�é�›é�œé�¦éž˜é °é ¸é »é ·é ­é ¹é ¤é¤�館餞餛餡餚駭駢駱骸骼������������������髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔é¾�龜優償儡儲勵嚎嚀åš�嚅嚇åš�壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗æª�檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥�燭燬燴燠爵牆ç�°ç�²ç’©ç’°ç’¦ç’¨ç™†ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"������������������������������������������������療癌盪瞳瞪瞰瞬瞧瞭矯�������磷磺磴磯ç¤�禧禪穗窿簇ç°�篾篷簌篠糠糜糞糢糟糙ç³�縮績繆縷������縲繃縫總縱繅ç¹�縴縹繈縵縿縯罄翳翼è�±è�²è�°è�¯è�³è‡†è‡ƒè†ºè‡‚臀������������������膿膽臉膾臨舉艱薪薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠è¬�謄è¬�è±�谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿é�¿é�½é‚„é‚�邂邀鄹醣醞醜é��鎂錨é�µé�Šé�¥é�‹éŒ˜é�¾é�¬é�›é�°é�šé�”闊闋闌闈闆隱隸雖霜霞鞠韓�顆颶餵é¨�駿鮮鮫鮪鮭鴻鴿麋é»����\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"������������������������������������������������點黜é»�黛鼾齋å�¢åš•嚮壙�������壘嬸å½�懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯������瀉瀋濾瀆濺瀑ç€�燻燼燾燸ç�·ç�µç’§ç’¿ç”•癖癘癒瞽瞿瞻瞼礎禮穡������������������穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻è�·è�¶è‡�è‡�舊è—�è–©è—�è—�藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫è±�贅蹙蹣蹦蹤蹟蹕軀轉è½�邇邃邈醫醬é‡�鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖é—�闕離雜雙雛雞霤鞣鞦鞭韹é¡�é¡�題顎顓颺餾餿餽餮�馥騎é«�鬃鬆é­�é­Žé­�鯊鯉鯽鯈鯀���\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"������������������������������������������������鵑éµ�鵠黠鼕鼬儳嚥壞壟�������壢寵é¾�廬懲懷懶懵攀æ”�æ› æ›�æ«¥æ«�櫚櫓瀛瀟瀨瀚ç€�瀕瀘爆çˆ�牘������犢ç�¸ç�ºç’½ç“Šç“£ç–‡ç–†ç™Ÿç™¡çŸ‡ç¤™ç¦±ç©«ç©©ç°¾ç°¿ç°¸ç°½ç°·ç±€ç¹«ç¹­ç¹¹ç¹©ç¹ªï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç¾…繳羶羹羸臘藩è—�藪藕藤藥藷蟻蠅è �蟹蟾襠襟襖襞è­�譜識證譚譎è­�譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮é�¡é�‘é�Ÿé�ƒé�ˆé�œé��é�–é�¢é��é�˜é�¤é�—é�¨é—œéš´é›£éœªéœ§é�¡éŸœéŸ»é¡žé¡˜é¡›é¢¼é¥…饉騖騙é¬�鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤�孀孃孽寶巉懸懺攘攔攙曦朧櫬���\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"������������������������������������������������瀾瀰瀲çˆ�ç�»ç“�癢癥礦礪�������礬礫竇競籌籃ç±�糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔������蠕襤覺觸議譬警譯譟譫è´�è´�躉èº�躅躂醴釋é�˜é�ƒé�½é—¡éœ°é£„饒饑������������������馨騫騰騷騵鰓é°�鹹麵黨鼯齟齣齡儷儸å›�囀囂夔屬å·�懼懾æ”�攜斕曩櫻欄櫺殲ç�Œçˆ›çŠ§ç“–ç“”ç™©çŸ“ç±�çº�續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊èº�躋轟辯醺é�®é�³é�µé�ºé�¸é�²é�«é—¢éœ¸éœ¹éœ²éŸ¿é¡§é¡¥é¥—驅驃驀騾é«�魔魑鰭鰥鶯鶴鷂鶸éº�黯鼙齜齦齧儼�儻囈囊囉孿巔巒彎懿攤權歡ç�‘���\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"������������������������������������������������ç�˜çŽ€ç“¤ç–Šç™®ç™¬ç¦³ç± ç±Ÿè�¾ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½è�½è‡Ÿè¥²è¥¯è§¼è®€è´–贗躑躓轡酈鑄鑑鑒霽霾韃éŸ�顫饕驕é©�髒鬚鱉������鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬æ¬�瓚竊籤籣籥纓纖纔臢������������������蘸蘿蠱變é‚�é‚�鑣鑠鑤é�¨é¡¯é¥œé©šé©›é©—髓體髑鱔鱗鱖鷥麟黴囑壩攬ç�žç™±ç™²çŸ—ç½�羈蠶蠹衢讓讒讖艷贛釀鑪é�‚é�ˆé�„韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖ç�£ç±¬ç±®è »è§€èº¡é‡�鑲鑰顱饞髖鬣黌ç�¤çŸšè®šé‘·éŸ‰é©¢é©¥çºœè®œèºªé‡…鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱�鸛鸞籲乂乜凵匚厂万丌乇äº�囗���\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"������������������������������������������������兀屮彳ä¸�冇与丮亓仂仉�������仈冘勼å�¬åŽ¹åœ å¤ƒå¤¬å°�巿旡殳毌气爿丱丼仨仜仩仡ä»�仚刌匜å�Œï¿½ï¿½ï¿½ï¿½ï¿½ï¿½åœ¢åœ£å¤—夯å®�宄尒尻屴屳帄庀庂忉戉æ‰�氕氶汃氿氻犮犰玊禸肊������������������阞伎优伬仵伔仱伀价伈ä¼�伂伅伢伓伄仴伒冱刓刉åˆ�劦匢匟å��厊å�‡å›¡å›Ÿåœ®åœªåœ´å¤¼å¦€å¥¼å¦…奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔å¿�扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜æ±�汊汔汋汌ç�±ç‰žçŠ´çŠµçŽŽç”ªç™¿ç©µç½‘è‰¸è‰¼èŠ€ï¿½è‰½è‰¿è™�襾邙邗邘邛邔阢阤阠阣���\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"������������������������������������������������佖伻佢佉体佤伾佧佒佟�������ä½�佘伭伳伿佡å†�冹刜刞刡劭劮匉å�£å�²åŽŽåŽ�å�°å�·å�ªå‘”å‘…å�™å�œå�¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å�˜å�½å‘�å‘�å�¨å�¤å‘‡å›®å›§å›¥å��å�…å�Œå�‰å�‹å�’夆奀妦妘妠妗妎妢å¦�å¦�������������������妧妡宎宒尨尪å²�å²�岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈åº�å¼…å¼�彸彶忒忑å¿�忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎æŠ�抔抇扱扻扺扰æŠ�抈扷扽扲扴攷旰旴旳旲旵æ�…æ�‡æ�™æ�•æ�Œæ�ˆæ��æ��æ�šæ�‹æ¯�氙氚汸汧汫沄沋æ²�汱汯汩沚汭沇沕沜汦汳汥汻�沎ç�´ç�ºç‰£çŠ¿çŠ½ç‹ƒç‹†ç‹�犺狅玕玗���\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"������������������������������������������������玓玔玒町甹疔疕çš�礽耴�������肕肙è‚�肒肜èŠ�èŠ�芅芎芑芓芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯������阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹ä¾�佸ä¾�侜侔侞侒侂������������������侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿å’�咑咂咈呫呺呾呥呬呴呦å’�呯呡呠咘呣呧呤囷囹å�¯å�²å�­å�«å�±å�°å�¶åž€å�µå�»å�³å�´å�¢å�¨å�½å¤Œå¥…妵妺å§�姎妲姌å§�妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧å²�岥岶岰岦�帗帔帙弨弢弣弤彔徂彾彽忞忥���\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"������������������������������������������������怭怦怙怲怋怴怊怗怳怚�������怞怬怢æ€�æ€�怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰������抸攽斨斻昉旼昄昒昈旻昃昋æ˜�昅旽昑æ˜�曶朊枅æ�¬æžŽæž’æ�¶æ�»æž˜ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æž†æž„æ�´æž�枌æ�ºæžŸæž‘枙枃æ�½æž�æ�¸æ�¹æž”欥殀歾毞æ°�沓泬泫泮泙沶泔沭泧沷æ³�泂沺泃泆泭泲泒æ³�沴沊æ²�沀泞泀洰æ³�泇沰泹æ³�泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬çŽ�ç“�瓨甿畀甾疌疘皯盳盱盰盵矸矼矹�矻矺矷祂礿秅穸穻竻籵糽耵è‚����\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"������������������������������������������������肮肣肸肵肭舠芠苀芫芚�������芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓è¿�������迖迕迗邲邴邯邳邰阹阽阼阺陃ä¿�俅俓侲俉俋ä¿�俔俜俙侻侳俛������������������俇俖侺俀侹俬剄剉勀勂匽å�¼åŽ—åŽ–åŽ™åŽ˜å’ºå’¡å’­å’¥å“�哃èŒ�咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗åž�垛垔垘åž�垙垥垚垕壴å¤�奓姡姞姮娀姱å§�姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌å³�峘峌峗峋峛峞峚峉峇峊峖峓峔å³�峈峆峎峟峸�巹帡帢帣帠帤庰庤庢庛庣庥弇���\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"������������������������������������������������弮彖徆怷怹æ�”æ�²æ�žæ�…æ�“�������æ�‡æ�‰æ�›æ�Œæ�€æ�‚æ�Ÿæ€¤æ�„æ�˜æ�¦æ�®æ‰‚扃æ‹�æŒ�挋拵挎挃拫拹æŒ�挌拸拶������挀挓挔拺挕拻拰æ•�敃斪斿昶昡昲昵昜昦昢昳昫昺æ˜�昴昹昮æœ�������������������æœ�æŸ�柲柈枺柜枻柸柘柀枷柅柫柤柟枵æŸ�枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀æ´�浂æ´�洘洷洃æ´�浀洇洠洬洈洢洉æ´�炷炟炾炱炰炡炴炵炩ç‰�牉牊牬牰牳牮狊�狤狨狫狟狪狦狣玅ç�Œç�‚ç�ˆç�…玹���\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"������������������������������������������������玶玵玴ç�«çŽ¿ç�‡ç޾ç�ƒç�†çŽ¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�‹ç“¬ç“®ç”®ç•‡ç•ˆç–§ç–ªç™¹ç›„眈眃眄眅眊盷盻盺矧矨砆砑砒砅ç �ç �������砎砉砃砓祊祌祋祅祄秕ç§�ç§�秖秎窀穾竑笀ç¬�籺籸籹籿粀ç²�紃������������������紈ç´�罘羑ç¾�羾耇耎è€�耔耷胘胇胠胑胈胂èƒ�胅胣胙胜胊胕胉èƒ�胗胦èƒ�臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺苳苭虷虴虼虳è¡�衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔é™�陑陓陊陎倞倅倇倓倢倰倛�俵俴倳倷倬俶俷倗倜倠倧倵倯���\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"������������������������������������������������倱倎党冔冓凊凄凅凈凎�������剡剚剒剞剟剕剢å‹�匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊������哻哷哸哠唎唃唋åœ�圂埌堲埕埒垺埆垽垼垸垶垿埇åŸ�åž¹åŸ�夎奊������������������娙娖娭娮娕å¨�娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧æ��æ�šæ�§æ��悢悈悀悒æ‚�æ‚�悃悕悛悗悇悜悎戙扆拲æŒ�æ�–挬æ�„æ�…挶æ�ƒæ�¤æŒ¹æ�‹æ�ŠæŒ¼æŒ©æ��挴æ�˜æ�”æ�™æŒ­æ�‡æŒ³æ�šæ�‘挸æ�—æ�€æ�ˆæ•Šæ•†æ—†æ—ƒæ—„旂晊晟晇晑朒朓栟栚桉栲栳栻�桋æ¡�栖栱栜栵栫栭栯桎桄栴æ ����\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"������������������������������������������������栒栔栦栨栮æ¡�栺栥栠欬�������欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶æ´�浡涒浘浢浭浯涑������æ¶�淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵æ¶�烜������������������烓烑çƒ�烋缹烢烗烒烞烠烔çƒ�烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻çŒ�ç�“ç�™ç�¥ç�–玼ç�§ç�£ç�©ç�œç�’ç�›ç�”ç��ç�šç�—ç�˜ç�¨ç“žç“Ÿç“´ç“µç”¡ç•›ç•Ÿç–°ç—�疻痄痀疿疶疺皊盉çœ�眛çœ�眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛ç¥�祜祓祒祑秫秬�秠秮秭秪秜秞ç§�窆窉窅窋窌窊���\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"������������������������������������������������窇竘ç¬�笄笓笅ç¬�笈笊笎�������笉笒粄粑粊粌粈ç²�ç²…ç´žç´�紑紎紘紖紓紟紒ç´�紌罜罡罞罠ç½�罛������羖羒翃翂翀耖耾耹胺胲胹胵è„�胻脀èˆ�舯舥茳茭è�„茙è�‘茥è�–茿������������������è��茦茜茢è�‚è�ŽèŒ›èŒªèŒˆèŒ¼è��茖茤茠茷茯茩è�‡è�…è�Œè�“茞茬è�‹èŒ§è�ˆè™“虒蚢蚨蚖èš�蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎èš�èš�蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤é…��酎é…�釕釢釚陜陟隼飣髟鬯乿å�°ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"������������������������������������������������å�ªå�¡å�žå� å�“å�‹å��å�²å�ˆå���������å��å�›å�Šå�¢å€•å�…å�Ÿå�©å�«å�£å�¤å�†å�€å�®å�³å�—å�‘å‡�剫剭剬剮勖勓匭厜������啵啶唼å•�å•�唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇������������������埻堔埢埶埜埴堀埭埽堈埸堋埳åŸ�堇埮埣埲埥埬埡堎埼å �埧å �堌埱埩埰å �堄奜婠婘婕婧婞娸娵婭å©�婟婥婬婓婤婗婃å©�婒婄婛婈媎娾å©�娹婌婰婩婇婑婖婂婜孲孮å¯�寀屙崞崋å´�崚崠崌崨å´�崦崥å´�崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖�徟悊æ‚�悆悾悰悺惓惔æƒ�惤惙æƒ����\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"������������������������������������������������惈悱惛悷惊悿惃æƒ�惀挲�������æ�¥æŽŠæŽ‚æ�½æŽ½æŽžæŽ­æŽ�掗掫掎æ�¯æŽ‡æŽ�æ�®æŽ¯æ�µæŽœæ�­æŽ®æ�¼æŽ¤æŒ»æŽŸæ�¸æŽ…������æŽ�掑æŽ�æ�°æ•“æ—�晥晡晛晙晜晢朘桹梇æ¢�梜桭桮梮梫楖桯梣梬梩������������������桵桴梲æ¢�桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑æ®�æ®�殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜æ·�淛淴淊涽淭淰涺淕淂æ·�æ·‰æ·�淲淓淽淗æ·�淣涻烺ç„�烷焗烴焌烰焄烳ç„�烼烿焆焓焀烸烶焋焂焎牾牻牼牿�çŒ�猗猇猑猘猊猈狿çŒ�猞玈ç�¶ç�¸ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"������������������������������������������������ç�µç�„ç��ç�½ç�‡ç�€ç�ºç�¼ç�¿ç�Œï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�‹ç�´ç�ˆç•¤ç•£ç—Žç—’ç—�痋痌痑ç—�çš�皉盓眹眯眭眱眲眴眳眽眥眻眵������硈硒硉ç¡�硊硌砦硅ç¡�祤祧祩祪祣祫祡离秺秸秶秷çª�窔çª�笵筇������������������笴笥笰笢笤笳笘笪ç¬�笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩çµ�絇紾紿絊紻紨罣羕羜ç¾�羛翊翋ç¿�ç¿�翑翇ç¿�翉耟耞耛è�‡è�ƒè�ˆè„˜è„¥è„™è„›è„­è„Ÿè„¬è„žè„¡è„•è„§è„�脢舑舸舳舺舴舲艴èŽ�莣莨èŽ�è�ºè�³èޤè�´èŽ�èŽ�莕莙è�µèŽ”èŽ©è�½èŽƒèŽŒèŽ�莛莪莋è�¾ï¿½èŽ¥èŽ¯èŽˆèŽ—èŽ°è�¿èŽ¦èŽ‡èŽ®è�¶èŽšè™™è™–ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"������������������������������������������������蚿蚷蛂è›�蛅蚺蚰蛈蚹蚳�������蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌������袓袎覂觖觙觕訰訧訬訞谹谻豜è±�豽貥赽赻赹趼跂趹趿è·�軘軞������������������è»�軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿é�ªé „飥馗傛傕傔傞傋傣傃傌傎å‚�å�¨å‚œå‚’傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈å–�å–µå–�喣喒喤啽喌喦啿喕喡喎圌堩堷堙�堞堧堣堨埵塈堥堜堛堳堿堶堮���\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"������������������������������������������������堹堸堭堬堻奡媯媔媟婺�������媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜åª�媓åª�寪å¯�寋������寔寑寊寎尌尰崷嵃嵫åµ�嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸������������������崼崲崶嵀嵅幄å¹�彘徦徥徫惉悹惌惢惎惄愔惲愊愖愅惵愓惸惼惾æƒ�愃愘æ„�æ„�惿愄愋扊掔掱掰æ�Žæ�¥æ�¨æ�¯æ�ƒæ’�æ�³æ�Šæ� æ�¶æ�•æ�²æ�µæ‘¡æ�ŸæŽ¾æ��æ�œæ�„æ�˜æ�“æ�‚æ�‡æ�Œæ�‹æ�ˆæ�°æ�—æ�™æ”²æ•§æ•ªæ•¤æ•œæ•¨æ•¥æ–Œæ–�æ–žæ–®æ—�旒晼晬晻暀晱晹晪晲æœ�椌棓椄棜椪棬棪棱�æ¤�棖棷棫棤棶椓æ¤�棳棡椇棌椈���\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"������������������������������������������������楰梴椑棯棆椔棸æ£�棽棼�������棨椋椊椗棎棈æ£�棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽������毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿æ¹�æ¹�湳渜渳湋湀湑渻渃������������������渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌ç�®ç�¬ç�°ç�«ç�–ç�šç�¡ç�­ç�±ç�¤ç�£ç��ç�©ç� ç�²ç“»ç”¯ç•¯ç•¬ç—§ç—šç—¡ç—¦ç—�痟痤痗皕皒盚ç�†ç�‡ç�„ç��ç�…ç�Šç�Žç�‹ï¿½ç�ŒçŸžçŸ¬ç¡ ç¡¤ç¡¥ç¡œç¡­ç¡±ç¡ªç¡®ç¡°ç¡©ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"������������������������������������������������硨硞硢祴祳祲祰稂稊稃�������稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪çµ�������絭絜絫絒絔絩絑絟絎缾缿罥罦羢羠羡翗è�‘è��è��胾胔腃腊腒è…�������������������腇脽è…�脺臦臮臷臸臹舄舼舽舿艵茻è��è�¹è�£è�€è�¨è�’è�§è�¤è�¼è�¶è��è�†è�ˆè�«è�£èŽ¿è��è��è�¥è�˜è�¿è�¡è�‹è�Žè�–è�µè�‰è�‰è��è�žè�‘è�†è�‚è�³è�•è�ºè�‡è�‘è�ªè�“è�ƒè�¬è�®è�„è�»è�—è�¢è�›è�›è�¾è›˜è›¢è›¦è›“蛣蛚蛪è›�蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲è¤�裉覕覘�覗è§�觚觛詎è©�訹詙詀詗詘詄詅���\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"������������������������������������������������詒詈詑詊詌è©�豟è²�貀貺�������貾貰貹貵趄趀趉跘跓è·�跇跖跜è·�跕跙跈跗跅軯軷軺軹軦軮軥������軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻é„�鄀鄇鄅鄃酡������������������酤酟酢酠éˆ�鈊鈥鈃鈚鈦éˆ�鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻é–�é–Œé–�隇陾隈隉隃隀雂雈雃雱雰é�¬é�°é�®é ‡é¢©é£«é³¦é»¹äºƒäº„亶傽傿僆傮僄僊傴僈僂傰åƒ�傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌å—�å—‹å—Šå—�嗀嗔嗄嗩喿嗒å–�å—�嗕嗢嗖嗈嗲å—�嗙嗂圔�塓塨塤å¡�å¡�塉塯塕塎å¡�塙塥塛���\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"������������������������������������������������堽塣塱壼嫇嫄嫋媺媸媱�������媵媰媿嫈媻嫆媷嫀嫊媴媶å«�媹åª�寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞������嵨嵧嵢巰å¹�幎幊å¹�幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆������������������愯æ…�愩慀戠酨戣戥戤æ�…æ�±æ�«æ��æ�’æ�‰æ� æ�¤æ�³æ‘ƒæ�Ÿæ�•æ�˜æ�¹æ�·æ�¢æ�£æ�Œæ�¦æ�°æ�¨æ‘�æ�µæ�¯æ�Šæ�šæ‘€æ�¥æ�§æ�‹æ�§æ�›æ�®æ�¡æ�Žæ•¯æ–’旓暆暌暕æš�暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘æ¥�楴楌椻楋椷楜æ¥�楑椲楒�椯楻椼歆歅歃歂歈æ­�æ®›ï¨�毻毼���\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"������������������������������������������������毹毷毸溛滖滈æº�滀溟溓�������溔溠溱溹滆滒溽æ»�溞滉溷溰æ»�溦æ»�溲溾滃滜滘溙溒溎æº�溤溡������溿溳æ»�滊溗溮溣煇煔煒煣煠ç…�ç…�煢煲煸煪煡煂煘煃煋煰煟ç…�������������������煓煄ç…�ç…šç‰�çŠ�犌犑çŠ�犎猼ç�‚猻猺ç�€ç�Šç�‰ç‘„瑊瑋瑒瑑瑗瑀ç‘�ç‘�瑎瑂瑆ç‘�瑔瓡瓿瓾瓽ç”�畹畷榃痯ç˜�瘃痷痾痼痹痸ç˜�痻痶痭痵痽皙皵ç›�ç�•ç�Ÿç� ç�’ç�–ç�šç�©ç�§ç�”ç�™ç�­çŸ ç¢‡ç¢šç¢”ç¢�碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓稛ç¨�窣�窢窞竫筦筤筭筴筩筲筥筳筱筰���\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"������������������������������������������������筡筸筶筣粲粴粯綈綆綀�������ç¶�絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠������腷腜腩腛腢腲朡腞腶腧腯腄腡èˆ�艉艄艀艂艅蓱è�¿è‘–葶葹è’�è’�������������������葥葑葀蒆葧è�°è‘�葽葚葙葴葳è‘�蔇葞è�·è�ºè�´è‘ºè‘ƒè‘¸è�²è‘…è�©è�™è‘‹è�¯è‘‚è�­è‘Ÿè‘°è�¹è‘Žè‘Œè‘’葯蓅蒎è�»è‘‡è�¶è�³è‘¨è‘¾è‘„è�«è‘ è‘”è‘®è‘�蜋蜄蛷蜌蛺蛖蛵è��蛸蜎蜉èœ�è›¶èœ�蜅裖裋è£�裎裞裛裚裌è£�覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃èª�詴詺谼�豋豊豥豤豦貆貄貅賌赨赩趑趌���\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"������������������������������������������������趎è¶�è¶�è¶“è¶”è¶�趒跰跠跬�������跱跮è·�跩跣跢跧跲跫跴輆軿è¼�輀輅輇輈輂輋é�’逿é�„é�‰é€½é„�é„�������é„�鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬é‰�鉠鉧鉯������������������鈶鉡鉰鈱鉔鉣é‰�鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵é�³é�·é�¸é�²é �é �頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪åƒ�僤僓僬僰僯僣僠凘劀åŠ�勩勫匰厬嘧嘕嘌嘒嗼å˜�嘜å˜�嘓嘂嗺å˜�嘄嗿嗹墉塼å¢�墘墆å¢�塿塴墋塺墇墑墎�塶墂墈塻墔å¢�壾奫嫜嫮嫥嫕嫪���\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"������������������������������������������������嫚嫭嫫嫳嫢嫠嫛嫬嫞å«��������嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺å¶�嵷嶊嶉嶈嵾嵼å¶�嵹嵿幘幙幓廘������廑廗廎廜廕廙廒廔彄彃彯徶愬愨æ…�慞慱慳慒慓慲慬憀慴慔慺������������������慛慥愻慪慡慖戩戧戫æ�«æ‘�æ‘›æ‘�摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠æ‘�æ‘¿æ�¿æ‘¬æ‘«æ‘™æ‘¥æ‘·æ•³æ– æš¡æš æšŸæœ…朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧æ¦�榩榾榯榿槄榽榤槔榹槊榚æ§�榳榓榪榡榞槙榗æ¦�槂榵榥槆歊æ­�歋殞殟殠毃毄毾滎滵滱漃漥滸漷�滻漮漉潎漙漚漧漘漻漒滭漊漶���\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"������������������������������������������������潳滹滮漭潀漰漼漵滫漇�������漎潃漅滽滶漹漜滼漺漟æ¼�漞漈漡熇ç†�熉熀熅熂ç†�煻熆ç†�熗牄������牓犗犕犓ç�ƒç��ç�‘ç�Œç‘¢ç‘³ç‘±ç‘µç‘²ç‘§ç‘®ç”€ç”‚甃畽ç–�瘖瘈瘌瘕瘑瘊������������������瘔皸çž�ç�¼çž…çž‚ç�®çž€ç�¯ç�¾çžƒç¢²ç¢ªç¢´ç¢­ç¢¨ç¡¾ç¢«ç¢žç¢¥ç¢ ç¢¬ç¢¢ç¢¤ç¦˜ç¦Šç¦‹ç¦–禕禔禓禗禈禒ç¦�稫穊稰稯稨稦窨窫窬竮箈箜箊箑ç®�ç®–ç®�箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪ç·�緀緅ç¶�緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞耤è��è�œè†‰ï¿½è††è†ƒè†‡è†�膌膋舕蒗蒤蒡蒟蒺蓎���\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"������������������������������������������������蓂蒬蒮蒫蒹蒴è“�è“�蒪蒚�������蒱è“�è’�蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶è“�蒠蓗蓔蓒蓛蒰蒑虡蜳������蜣蜨è�«è�€èœ®èœžèœ¡èœ™èœ›è�ƒèœ¬è��蜾è�†èœ èœ²èœªèœ­èœ¼èœ’蜺蜱蜵è�‚蜦蜧������������������蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫è¦�覡覟覞觩觫觨誫誙誋誒èª�誖谽豨豩賕è³�賗趖踉踂跿è¸�跽踊踃踇踆踅跾踀踄è¼�輑輎è¼�鄣鄜鄠鄢鄟é„�鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪éŠ�銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧�鉾銇銩éŠ�銋鈭隞隡雿é�˜é�½é�ºé�¾ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"������������������������������������������������鞃鞀鞂é�»éž„éž�é�¿éŸŽéŸ�頖�������颭颮餂餀餇é¦�馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧������僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵å™�噊噉噆噘噚������������������噀嘳嘽嘬嘾嘸嘪嘺圚墫å¢�墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹å¬�嬇嬅å¬�屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩å¹�幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡æ†�慦憳戭摮摰撖撠撅撗撜æ’�撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰�暩暲暷暪暯樀樆樗槥槸樕槱槤���\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"������������������������������������������������樠槿槬槢樛æ¨�槾樧槲槮�������樔槷槧橀樈槦槻æ¨�槼槫樉樄樘樥æ¨�槶樦樇槴樖歑殥殣殢殦æ°�������氀毿氂æ½�漦潾澇濆澒æ¾�澉澌潢æ½�澅潚澖潶潬澂潕潲潒æ½�潗澔������������������澓æ½�漀潡潫潽潧æ¾�潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵ç†�熥熞熤熡熪熜熧熳犘犚ç�˜ç�’ç�žç�Ÿç� ç��ç�›ç�¡ç�šç�™ç�¢ç’‡ç’‰ç’Šç’†ç’�瑽璅璈瑼瑹甈甇畾瘥瘞瘙ç˜�瘜瘣瘚瘨瘛皜çš�çšžçš›çž�çž�瞉瞈ç£�碻ç£�磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴�窳箷篋箾箬篎箯箹篊箵糅糈糌���\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"������������������������������������������������糋緷緛緪緧緗緡縃緺緦�������緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨è�¤è�§è†£è†Ÿè†žè†•膢膙膗舖è‰�������艓艒è‰�艎艑蔤蔻è”�蔀蔩蔎蔉è”�蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕������������������蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨è”�蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢è�–è�£è�¤è�·èŸ¡è�³è�˜è�”è�›è�’è�¡è�šè�‘è�žè�­è�ªè��è�Žè�Ÿè��è�¯è�¬è�ºè�®è�œè�¥è��è�»è�µè�¢è�§è�©è¡šè¤…褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬è«�諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙�谾è±�è²�賥賟賙賨賚è³�賧趠趜趡���\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"������������������������������������������������趛踠踣踥踤踮踕踛踖踑�������踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗é�³é�°é�¯é�§é�«é„¯é„«é„©ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é„ªé„²é„¦é„®é†…醆醊é†�醂醄醀é‹�鋃鋄鋀鋙銶é‹�鋱鋟鋘鋩鋗é‹�鋌鋯������������������鋂鋨鋊鋈鋎鋦é‹�鋕鋉鋠鋞鋧鋑鋓銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂é�šéžŠéžŽéžˆéŸ�éŸ�é žé �頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜é§�é§�駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓é¼�é¼�儜�儓儗儚儑凞匴å�¡å™°å™ å™®å™³å™¦å™£ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"������������������������������������������������噭噲噞噷圜圛壈墽壉墿�������墺壂墼壆嬗嬙嬛嬡嬔嬓å¬�嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨������嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼æ†�憨憖懅憴懆æ‡�懌憺憿憸������������������憌擗擖æ“�æ“�擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋æ›�暽暻暺曌朣樴橦橉橧樲橨樾æ©�橭橶橛橑樨橚樻樿æ©�橪橤æ©�æ©�橔橯橩橠樼橞橖橕æ©�橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪æ¿�澿澸澢濉澫æ¿�澯澲�澰燅燂熿熸燖燀ç‡�燋燔燊燇ç‡����\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"������������������������������������������������熽燘熼燆燚燛çŠ�犞ç�©ç�¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç�§ç�¬ç�¥ç�«ç�ªç‘¿ç’šç’ ç’”璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚������çž�瞡瞜瞛瞢瞣瞕瞙瞗ç£�磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶������������������窸窵窱窷篞篣篧ç¯�篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗ç³�糑縒縡縗縌縟縠縓縎縜縕縚縢縋ç¸�縖ç¸�縔縥縤罃罻罼罺羱翯耪耩è�¬è†±è†¦è†®è†¹è†µè†«è†°è†¬è†´è†²è†·è†§è‡²è‰•艖艗蕖蕅蕫è•�蕓蕡蕘蕀蕆蕤è•�蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦è•�蕔�蕥蕬虣虥虤螛èž�螗螓螒螈èž�螖���\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"������������������������������������������������螘è�¹èž‡èž£èž…èž�èž‘èž�螄螔�������螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵è«�謔諤諟������諰諈諞諡諨諿諯諻貑貒è²�賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶������������������踼踽è¹�踰踿躽輶輮輵輲輹輷輴é�¶é�¹é�»é‚†éƒºé„³é„µé„¶é†“é†�醑é†�é†�錧錞錈錟錆éŒ�é�ºéŒ¸éŒ¼éŒ›éŒ£éŒ’éŒ�é�†éŒ­éŒŽéŒ�é‹‹éŒ�鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼é—�閾閹閺閶閿閵閽隩雔霋霒éœ�鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰�駣駪駩駧骹骿骴骻髶髺髹髷鬳���\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"������������������������������������������������鮀鮅鮇魼魾魻鮂鮓鮒é®��������魺鮕魽鮈鴥鴗鴠鴞鴔鴩é´�鴘鴢é´�鴙鴟麈麆麇麮麭黕黖黺鼒鼽������儦儥儢儤儠儩勴嚓嚌åš�嚆嚄嚃噾嚂噿åš�壖壔å£�壒嬭嬥嬲嬣嬬������������������嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨æ–�斀斶旚曒æª�檖æª�檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲æ¿�濢濨燡燱燨燲燤燰燢ç�³ç�®ç�¯ç’—璲璫ç’�璪璭璱璥璯ç”�甑甒ç”�疄癃癈�癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰���\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"������������������������������������������������磳磽礂磻磼磲礅磹磾礄�������禫禨穜穛穖穘穔穚窾竀ç«�ç°…ç°�篲簀篿篻簎篴簋篳簂簉簃ç°�篸������篽簆篰篱ç°�簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿������������������罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀è–�薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆è–�è–™è–�è–�薢薂薈薅蕹蕶薘è–�薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾è¥�襒褷襂覭覯覮觲觳謞謘謖謑謅謋謢è¬��謒謕謇è¬�謈謆謜謓謚è±�豰豲豱���\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"������������������������������������������������豯貕貔賹赯蹎è¹�蹓è¹�蹌�������蹇轃轀邅é�¾é„¸é†šé†¢é†›é†™é†Ÿé†¡é†�醠鎡鎃鎯é�¤é�–é�‡é�¼é�˜é�œé�¶é�‰é��������é�‘é� é�­éŽ�é�Œé�ªé�¹é�—é�•é�’é��é�±é�·é�»é�¡é�žé�£é�§éŽ€é�Žé�™é—‡é—€é—‰é—ƒé—…������������������閷隮隰隬霠霟霘éœ�霙鞚鞡鞜鞞éž�韕韔韱é¡�顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽é¬�髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳éµ�鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉éº�麰黈黚黻黿鼤鼣鼢齔龠儱�儭儮嚘嚜嚗嚚åš�嚙奰嬼屩屪巀���\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"������������������������������������������������幭幮懘懟懭懮懱懪懰懫�������懖懩擿攄擽擸æ”�攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞������毉氋瀇瀌ç€�ç€�瀅瀔瀎濿瀀濻瀦濼濷瀊çˆ�燿燹爃燽ç�¶ç’¸ç“€ç’µç“�������������������璾璶璻瓂甔甓癜癤癙ç™�癓癗癚皦皽盬矂瞺磿礌礓礔礉ç¤�礒礑禭禬穟簜簩簙簠簟簭ç°�簦簨簢簥簰繜ç¹�繖繣繘繢繟繑繠繗繓羵羳翷翸è�µè‡‘臒è‡�艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓�蟭蟘蟣螤蟗蟙è �蟴蟨èŸ�襓襋è¥����\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"������������������������������������������������襌襆è¥�襑襉謪謧謣謳謰�������謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢������蹠蹗蹖蹞蹥蹧蹛蹚蹡è¹�蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵������������������鎌鎒鎷鎛éŽ�鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟éŽ�鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘é›�霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺é¡�顑顒颸é¥�餼餺é¨�騋騉é¨�騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿é¯�鮵鮸鯓鮶鯄鮹鮽鵜鵓éµ�鵊鵛鵋鵙鵖鵌�鵗鵒鵔鵟鵘鵚麎麌黟é¼�鼀鼖鼥���\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"������������������������������������������������鼫鼪鼩鼨齌齕儴儵劖勷�������厴嚫嚭嚦嚧嚪嚬壚å£�壛夒嬽嬾嬿巃幰徿懻攇æ”�æ”�攉攌攎斄旞������æ—�曞櫧櫠櫌櫑櫙櫋櫟櫜æ«�æ««æ«�æ«�櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣������������������瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱ç¤�礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾è�¸è‡—臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊�蠂襢襚襛襗襡襜襘è¥�襙覈覷覶���\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"������������������������������������������������觶è­�譈譊譀譓譖譔譋譕�������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑è½�è½�������轓辴酀鄿醰醭é�žé�‡é��é�‚é�šé��é�¹é�¬é�Œé�™éŽ©é�¦é�Šé�”é�®é�£é�•é�„é�Žé�€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½é�’é�§é•½é—šé—›é›¡éœ©éœ«éœ¬éœ¨éœ¦éž³éž·éž¶éŸ�韞韟顜顙é¡�顗颿颽颻颾饈饇饃馦馧騚騕騥é¨�騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷é¶�鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀�é½�é½�齖齗齘匷嚲嚵嚳壣孅巆巇���\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"������������������������������������������������廮廯忀å¿�懹攗攖攕攓旟�������曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱ç�‚瀸瀿瀺瀹ç�€ç€»ç€³ç��������爓爔犨ç�½ç�¼ç’ºçš«çšªçš¾ç›­çŸŒçŸŽçŸ�çŸ�矲礥礣礧礨礤礩禲穮穬穭竷������������������籉籈籊籇籅糮繻繾çº�纀羺翿è�¹è‡›è‡™èˆ‹è‰¨è‰©è˜¢è—¿è˜�藾蘛蘀藶蘄蘉蘅蘌藽蠙è �蠑蠗蠓蠖襣襦覹觷譠譪è­�譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚é‚�é…ƒé…�醷醵醲醳é�‹é�“é�»é� é��é�”é�¾é�•é��é�¨é�™é��é�µé�€é�·é�‡é�Žé�–é�’é�ºé�‰é�¸é�Šé�¿é�¼é�Œé�¶é�‘é�†é—žé— é—Ÿéœ®ï¿½éœ¯éž¹éž»éŸ½éŸ¾é¡ é¡¢é¡£é¡Ÿé£�飂é¥�饎���\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"������������������������������������������������饙饌饋饓騲騴騱騬騪騶�������騩騮騸騭髇髊髆é¬�鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤������é¶�鶒鶘é¶�鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤������������������黧黦鼰鼮齛齠齞é½�齙龑儺儹劘劗囃嚽嚾孈孇巋å·�廱懽攛欂櫼欃櫸欀ç�ƒç�„ç�Šç�ˆç�‰ç�…ç�†çˆ�爚爙ç�¾ç”—癪çŸ�礭礱礯籔籓糲纊纇纈纋纆çº�ç½�羻耰è‡�蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩è �蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻è´�贔趯躎躌轞轛�è½�酆酄酅醹é�¿é�»é�¶é�©é�½é�¼é�°é�¹ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"������������������������������������������������é�ªé�·é�¬é‘€é�±é—¥é—¤é—£éœµéœºï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½éž¿éŸ¡é¡¤é£‰é£†é£€é¥˜é¥–騹騽驆驄驂é©�騺騿é«�鬕鬗鬘鬖鬺魒鰫é°�鰜������鰬鰣鰨鰩鰤鰡鶷鶶鶼é·�鷇鷊é·�鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌������������������鶳é·�鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉æ°�ç�•ç�–ç�—ç�’爞爟犩ç�¿ç“˜ç“•瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑ç½�羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒èº�躖躗轠轢酇鑌é‘��鑊鑋é‘�鑇鑅鑈鑉鑆霿韣顪顩飋���\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"������������������������������������������������饔饛驎驓驔驌é©�驈驊驉�������驒é©�é«�鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳é±�鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋������é·�鷜鷑鷟鷩鷙鷘鷖鷵鷕é·�麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲å­�������������������巘蠯å½�æˆ�戃戄攩攥斖曫欑欒æ¬�毊ç�›ç�šçˆ¢çŽ‚çŽ�玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕é‘�鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘é±�鱊é±�鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂é»�黲黳鼆�鼜鼸鼷鼶齃é½�齱齰齮齯囓å›�孎���\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"������������������������������������������������屭攭曭曮欓ç�Ÿç�¡ç��ç� çˆ£ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç“›ç“¥çŸ•礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠èº�醾醽釂鑫鑨������鑩雥é�†é�ƒé�‡éŸ‡éŸ¥é©žé«•魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀é¸�鸉鷿������������������鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚ç�¢çˆ¦çŠªçŸ˜çŸ™ç¤¹ç±©ç±«ç³¶çºšçº˜çº›çº™è‡ è‡¡è™†è™‡è™ˆè¥¹è¥ºè¥¼è¥»è§¿è®˜è®™èº¥èº¤èº£é‘®é‘­é‘¯é‘±é‘³é�‰é¡²é¥Ÿé±¨é±®é±­é¸‹é¸�é¸�é¸�鸒鸑麡黵鼉齇齸齻齺齹圞ç�¦ç±¯è ¼è¶²èº¦é‡ƒé‘´é‘¸é‘¶é‘µé© é±´é±³é±±é±µé¸”鸓黶鼊龤ç�¨ç�¥ç³·è™ªè ¾è ½è ¿è®žè²œï¿½èº©è»‰é�‹é¡³é¡´é£Œé¥¡é¦«é©¤é©¦é©§é¬¤é¸•���\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"������������������������������������������������鸗齈戇欞爧虌躨钂钀é’��������驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺é¸�ç�©ç�ªéº¤é½¾é½‰é¾˜î€€î€�������î€�î€�î€�î€�������������������î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚��î‚����\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"������������������������������������������������î‚�î‚��������î‚�������îƒ�������������������îƒ�îƒ�îƒ�îƒ�î„�î„�î„�î„�î„�����\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"������������������������������������������������î…��������î…�î…Žî…�î…�î…�������������������������î†�î†�î†�î†�î†�î‡�î‡�î‡�î‡��î‡����\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"�������������������������������������������������������îˆ�������îˆ�îˆ�îˆ�îˆ�������������������î‰�î‰�î‰�î‰�î‰�îŠ��îŠ�îŠ�îŠ����\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"������������������������������������������������îŠ��������������î‹�î‹�î‹�î‹�������������������î‹�îŒ�îŒ�îŒ�îŒ�îŒ��î�€î��î�‚���\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"������������������������������������������������î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½îŽ�îŽ�îŽ�îŽ�îŽ�î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢ï¿½î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"������������������������������������������������î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�ºî�»î�¼î�½î�¾î�¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“������î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‘€î‘�î‘�î‘�î‘�î‘�î’�î’�î’Žî’��î’����\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"������������������������������������������������î’��������������î“�î“�î“�î“�������������������î“�î”�î”�î”�î”�î”��î•����\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"������������������������������������������������î•�î•�î•��������î•�������î–�������������������î–�î–Žî–�î–�î–�î—�î—�î—Žî—�î—�î—�����\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�������������������������������������������������������î˜�î˜�î˜�î˜�������î˜�������������������î™�î™�î™�î™�î™�îš�îš�îš�îš��îš����\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�������������������������������������������������������î›�������î›�î›�î›�î›�������������������îœ�îœ�îœ�îœ�îœ�î�€î��î�‚î�ƒï¿½î�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î�����\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"������������������������������������������������î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îž€îž�îž�������������������îž�îž�îž�îŸ�îŸ�îŸ�îŸ�îŸ�����\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"������������������������������������������������î ��������î �î Žî �î �î �������������������������î¡�î¡�î¡�î¡�î¡�î¢�î¢�î¢�î¢�î¢�����\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"�������������������������������������������������������î£�î£�������î£�î£�î£�������������������î¤�î¤�î¤�î¤�î¤�î¥��î¥�î¥�î¥����\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"������������������������������������������������î¥��������������î¦�î¦�î¦�î¦�������������������î¦�î§�î§�î§Žî§�î§�î§��î¨����\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"������������������������������������������������î¨��������î¨�î¨�î¨�������î©�������������������î©�î©�î©�î©�îª�îª�îª�îª�îª�����\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�������������������������������������������������������î«�î«�î«�î«�������î«�������������������î¬�î¬�î¬�î¬�î¬�î­�î­�î­Žî­�î­��î­����\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"�������������������������������������������������������î®�������î®�î®�î®�������������������î®�î¯�î¯�î¯�î¯�î¯��î°����\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"������������������������������������������������î°�î°Žî°�î°��������î°�������î±�������������������î±�î±�î±�î±�î²�î²�î²�î²�î²�����\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"������������������������������������������������î³��������î³�î³�î³�������î³�������������������î´�î´�î´Žî´�î´�î´�îµ�îµ�îµ�îµ��îµ����\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�������������������������������������������������������î¶�������î¶�î¶Žî¶�î¶�î¶�������������������î·�î·�î·Žî·�î·�î·�î¸��î¸�î¸�î¸����\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�������������������������������������������������������î¸�������î¹�î¹�î¹�î¹�������������������î¹�îº�îº�îº�îº�îº�����\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"������������������������������������������������î»��������î»�î»�î»�î»�������������������������î¼�î¼�î¼�î¼�î¼�î½�î½�î½�î½�î½�����\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�������������������������������������������������������î¾�î¾�î¾�î¾�������î¾�������������������î¿�î¿�î¿�î¿�î¿�ï€��ï€�ï€�ï€����\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"������������������������������������������������ï€��������������ï�€ï��ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï�Œï��ï�Žï��ï��ï�‘ï�’ï�“ï�”ï�•ï�–ï�—������������������ï�˜ï�™ï�šï�›ï�œï��ï�žï�Ÿï� ï�¡ï�¢ï�£ï�¤ï�¥ï�¦ï�§ï�¨ï�©ï�ªï�«ï�¬ï�­ï�®ï�¯ï�°ï�±ï�²ï�³ï�´ï�µï�¶ï�·ï�¸ï�¹ï�ºï�»ï�¼ï�½ï�¾ï�¿ï‚€ï‚�ï‚�ï‚�ï‚�ï‚��ïƒ����\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"������������������������������������������������ïƒ�ïƒ�ïƒ��������ïƒ�������ï„�������������������ï„�ï„�ï„�ï„�ï…�ï…�ï…Žï…�ï…�ï…�����\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�������������������������������������������������������ï†�ï†�ï†�ï†�������ï†������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[249] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������ï‡�ï‡�ï‡�ï‡�ï‡��ïˆ����\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"������������������������������������������������ïˆ�ïˆ�ïˆ��������ïˆ�������ï‰�������������������ï‰�ï‰�ï‰�ï‰�ïŠ�ïŠ�ïŠ�ïŠ�ïŠ�����\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"�������������������������������������������������������ï‹�ï‹�ï‹�ï‹�������ï‹�������������������ïŒ�ïŒ�ïŒ�ïŒ�ïŒ�ï�€ï��ï�‚ï�ƒï�„ï�…ï�†ï�‡ï�ˆï�‰ï�Šï�‹ï�Œï��ï�Žï��ï��ï�‘ï�’ï�“ï�”ï�•ï�–�ï�—ï�˜ï�™ï�šï�›ï�œï��ï�žï�Ÿï� ï�¡ï�¢ï�£ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"������������������������������������������������ï�¤ï�¥ï�¦ï�§ï�¨ï�©ï�ªï�«ï�¬ï�­ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20105] = (function(){ var d = \"��\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#¤%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾∇��������������������������������������������������������������������������������������������������������������������������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20106] = (function(){ var d = \"��\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?§ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ^_`abcdefghijklmnopqrstuvwxyzäöüß��������������������������������������������������������������������������������������������������������������������������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20107] = (function(){ var d = \"��\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#¤%&'()*+,-./0123456789:;<=>?ÉABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÅÜ_éabcdefghijklmnopqrstuvwxyzäöåü��������������������������������������������������������������������������������������������������������������������������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20108] = (function(){ var d = \"��\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"§$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ^_`abcdefghijklmnopqrstuvwxyzæøå|��������������������������������������������������������������������������������������������������������������������������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20261] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"��%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ï£�]_abcdefghijklmnopqrstuvwxyz|€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ¡¢£$Â¥#§¤«°±²³×µ¶·÷»¼½¾¿���������������ΩÆÃ�ªĦIJĿÅ�ØŒºÞŦŊʼnĸæđðħıijŀłøœßþŧŋ\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[193] = \"��������������������������������`��������������������������������À���È���Ì�����Ò�����Ù�Ẁ�Ỳ�������à���è���ì�����ò�����ù�áº��ỳ��������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"��������������������������������´��������������������������������Ã��Ć�É�Ǵ�Ã��ḰĹḾŃÓṔ�ŔŚ�Ú�Ẃ�Ã�Ź������á�ć�é�ǵ�í�ḱĺḿńóṕ�ŕś�ú�ẃ�ýź�������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"��������������������������������^��������������������������������Â�Ĉ�Ê�ĜĤÎĴ����Ô���Ŝ�Û�Ŵ�Ŷáº�������â�ĉ�ê�Ä�ĥîĵ����ô���Å��û�ŵ�ŷẑ�������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"��������������������������������~��������������������������������Ã���Ẽ���Ĩ����ÑÕ�����ŨṼ��Ỹ�������ã���ẽ���ĩ����ñõ�����ũṽ��ỹ��������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"��������������������������������¯��������������������������������Ā���Ē�Ḡ�Ī�����Ō�����Ū�����������Ä����ē�ḡ�ī�����Å������ū�����������������������������������������������������������������������������������������������������������Ǣ���������������ǣ��������������\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"��������������������������������˘��������������������������������Ă���Ĕ�Ğ�Ĭ�����Ŏ�����Ŭ�����������ă���ĕ�ğ�ĭ�����Å������ŭ������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"��������������������������������˙���������������������������������ḂĊḊĖḞĠḢİ���ṀṄ�Ṗ�ṘṠṪ��ẆẊẎŻ�������ḃċḋėḟġḣ����á¹�ṅ�ṗ�ṙṡṫ��ẇẋáº�ż�������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"��������������������������������¨��������������������������������Ä���Ë��ḦÃ������Ö�����Ü�ẄẌŸ�������ä���ë��ḧï�����ö����ẗü�ẅáº�ÿ��������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[202] = \"��������������������������������˚��������������������������������Å�������������������Ů�����������å�������������������ů�ẘ�ẙ��������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"��������������������������������¸����������������������������������Çá¸���ĢḨ��ĶĻ�Ņ���ŖŞŢ��������������çḑ��ģḩ��ķļ�ņ���ŗşţ�������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[205] = \"��������������������������������Ë�����������������������������������������������Å������Ű�������������������������ő�����ű������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"��������������������������������˛��������������������������������Ą���Ę���Į�����Ǫ�����Ų�����������ą���ę���į�����ǫ�����ų������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"��������������������������������ˇ��������������������������������Ç��ČĎĚ�Ǧ�Ç��ǨĽ�ŇǑ��ŘŠŤǓ����Ž������ǎ�Ä�Ä�ě�ǧ�Ç�ǰǩľ�ňǒ��řšťǔ����ž�������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20269] = (function(){ var d = \"\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"��%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]�_�abcdefghijklmnopqrstuvwxyz{|}�€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ��� ¡¢£$Â¥#§¤‘“«â†�↑→↓°±²³×µ¶·÷’â€�»¼½¿�`´^~¯̆̈�̧̨̲̊̋̌―¹®©™♩��⅛⅜â…�⅞ΩÆÃ�Ħ�IJĿÅ�ØŒºÞŦŊʼnĸæđðħıijŀłøœßþŧ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20273] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  â{àáãåçñÄ.<(+!&éêëèíîïì~Ü$*);^-/Â[ÀÃ�ÃÅÇÑö,%_>?øÉÊËÈÃ�ÃŽÃ�ÃŒ`:#§'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µßstuvwxyz¡¿Ã�Ã�Þ®¢£¥·©@¶¼½¾¬|¯¨´×äABCDEFGHI­ô¦òóõüJKLMNOPQR¹û}ùúÿÖ÷STUVWXYZ²Ô\\\\ÒÓÕ0123456789³Û]Ùڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20277] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäàáã}çñ#.<(+!&éêëèíîïìߤÅ*);^-/ÂÄÀÃ�Ã$ÇÑø,%_>?¦ÉÊËÈÃ�ÃŽÃ�ÃŒ`:ÆØ'=\\\"@abcdefghi«»ðýþ±°jklmnopqrªº{¸[]µüstuvwxyz¡¿Ã�Ã�Þ®¢£¥·©§¶¼½¾¬|¯¨´×æABCDEFGHI­ôöòóõåJKLMNOPQR¹û~ùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20278] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  â{àáã}çñ§.<(+!&`êëèíîïìߤÅ*);^-/Â#ÀÃ�Ã$ÇÑö,%_>?ø\\\\ÊËÈÃ�ÃŽÃ�Ìé:ÄÖ'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ]µüstuvwxyz¡¿Ã�Ã�Þ®¢£¥·©[¶¼½¾¬|¯¨´×äABCDEFGHI­ô¦òóõåJKLMNOPQR¹û~ùúÿÉ÷STUVWXYZ²Ô@ÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20280] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âä{áãå\\\\ñ°.<(+!&]êë}íîï~ßé$*);^-/ÂÄÀÃ�ÃÅÇÑò,%_>?øÉÊËÈÃ�ÃŽÃ�Ìù:£§'=\\\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ¤µìstuvwxyz¡¿Ã�Ã�Þ®¢#¥·©@¶¼½¾¬|¯¨´×àABCDEFGHI­ôö¦óõèJKLMNOPQR¹ûü`úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20284] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäàáãåç¦[.<(+|&éêëèíîïìß]$*);¬-/ÂÄÀÃ�ÃÅÇ#ñ,%_>?øÉÊËÈÃ�ÃŽÃ�ÃŒ`:Ñ@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ¨stuvwxyz¡¿Ã�Ã�Þ®¢£¥·©§¶¼½¾^!¯~´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20285] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäàáãåçñ$.<(+|&éêëèíîïìß!£*);¬-/ÂÄÀÃ�ÃÅÇѦ,%_>?øÉÊËÈÃ�ÃŽÃ�ÃŒ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ¯stuvwxyz¡¿Ã�Ã�Þ®¢[¥·©§¶¼½¾^]~¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20290] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a 。「」、・ヲァィゥ£.<(+|&ェォャュョッ�ー�!Â¥*);¬-/abcdefgh�,%_>?[ijklmnop`:#@'=\\\"]アイウエオカキクケコqサシスセソタï¾�ツテトナニヌネノr�ハヒフ~‾ï¾�ホï¾�ï¾�ムメモヤユsヨラリル^¢\\\\tuvwxyzレロワï¾�゙゚{ABCDEFGHI������}JKLMNOPQR������$�STUVWXYZ������0123456789�����Ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20297] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âä@áãå\\\\ñ°.<(+!&{êë}íîïìß§$*);^-/ÂÄÀÃ�ÃÅÇÑù,%_>?øÉÊËÈÃ�ÃŽÃ�̵:£à'=\\\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ¤`¨stuvwxyz¡¿Ã�Ã�Þ®¢#¥·©]¶¼½¾¬|¯~´×éABCDEFGHI­ôöòóõèJKLMNOPQR¹ûü¦úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20420] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  ﹼﹽـﺀïº�ﺂﺃ¢.<(+|&ﺄﺅ��ﺋïº�ﺎïº�ﺑ!$*);¬-/ﺓﺕﺗﺙﺛïº�ﺟﺡ¦,%_>?ﺣﺥﺧﺩﺫﺭﺯﺳ،:#@'=\\\"abcdefghiﺷﺻﺿﻃﻇjklmnopqrﻉﻊﻋﻌï»�ﻎï»�÷stuvwxyzï»�ﻑﻓﻕﻗﻙﻛï»�ﻵﻶﻷﻸ��ﻻﻼﻟﻡﻣﻥﻧﻩ؛ABCDEFGHI­ﻫ�ﻬ�ﻭ؟JKLMNOPQRﻯﻰﻱﻲﻳ٠× STUVWXYZ١٢�٣٤٥0123456789�٦٧٨٩Ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20423] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a ΑΒΓΔΕΖΗΘΙ[.<(+!&ΚΛΜÎ�ΞΟΠΡΣ]$*);^-/ΤΥΦΧΨΩ��|,%_>?�ΆΈΉ ΊΌΎÎ�`:£§'=\\\"ÄabcdefghiαβγδεζÖjklmnopqrηθικλμܨstuvwxyzνξοπÏ�σ�άέήϊίόÏ�ϋώςτυφχψ¸ABCDEFGHI­ωâàäê´JKLMNOPQR±éèëîï°�STUVWXYZ½öôûùü0123456789ÿçÇ��Ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20424] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a ×�בגדהוזחט¢.<(+|&יךכל×�מןנס!$*);¬-/עףפץצקרש¦,%_>?�ת�� ���‗`:#@'=\\\"�abcdefghi«»���±°jklmnopqr���¸�¤µ~stuvwxyz�����®^£¥•©§¶¼½¾[]‾¨´×{ABCDEFGHI­�����}JKLMNOPQR¹�����\\\\÷STUVWXYZ²�����0123456789³����Ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20833] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a �ᅠᄀᄁᆪᄂᆬᆭᄃ¢.<(+|&�ᄄᄅᆰᆱᆲᆳᆴᆵ!$*);¬-/ᄚᄆᄇᄈᄡᄉᄊᄋ¦,%_>?[�ᄌᄍᄎᄏᄐᄑᄒ`:#@'=\\\"]abcdefghiᅡᅢᅣᅤᅥᅦ�jklmnopqrᅧᅨᅩï¿�ᅫï¿�‾~stuvwxyzᅭᅮᅯᅰᅱᅲ^�\\\\�������ᅳᅴᅵ���{ABCDEFGHI������}JKLMNOPQR������₩�STUVWXYZ������0123456789�����Ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20838] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  à¸�ขฃคฅฆง[¢.<(+|&�จฉชซฌà¸�ฎ]!$*);¬-/à¸�à¸�ฑฒณดต^¦,%_>?฿๎ถทธนบปผ`:#@'=\\\"à¹�abcdefghià¸�พฟภมย๚jklmnopqrรฤลฦวศ๛~stuvwxyzษสหฬอฮà¹�๑๒๓๔๕๖๗๘๙ฯะัาำิ{ABCDEFGHI�ีึืุู}JKLMNOPQRฺเà¹�โใไ\\\\�STUVWXYZๅๆ็่้๊0123456789๋์à¹���Ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20866] = (function(){ var d = \"ЪЪ\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~─│┌â”�└┘├┤┬┴┼▀▄█▌â–�░▒▓⌠■∙√≈≤≥ ⌡°²·÷â•�║╒ё╓╔╕╖╗╘╙╚╛╜â•�╞╟╠╡Ð�╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопÑ�Ñ€Ñ�тужвьызшÑ�щчъЮÐ�БЦДЕФГХИЙКЛМÐ�ОПЯРСТУЖВЬЫЗШЭЩЧЪ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20871] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäàáãåçñÞ.<(+!&éêëèíîïì߯$*);Ö-/ÂÄÀÃ�ÃÅÇѦ,%_>?øÉÊËÈÃ�ÃŽÃ�Ìð:#Ã�'=\\\"Øabcdefghi«»`ý{±°jklmnopqrªº}¸]¤µöstuvwxyz¡¿@Ã�[®¢£¥·©§¶¼½¾¬|¯¨\\\\×þABCDEFGHI­ô~òóõæJKLMNOPQR¹ûüùúÿ´÷STUVWXYZ²Ô^ÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20880] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  ђѓёєѕіїј[.<(+!&љњћќўџЪ№Ђ]$*);^-/ЃÐ�ЄЅІЇЈЉ|,%_>?ЊЋЌ­ЎÐ�юаб`:#@'=\\\"цabcdefghiдефгхийjklmnopqrклмнопÑ�~stuvwxyzÑ€Ñ�тужвьызшÑ�щчъЮÐ�БЦДЕФГ{ABCDEFGHIХИЙКЛМ}JKLMNOPQRÐ�ОПЯРС\\\\¤STUVWXYZТУЖВЬЫ0123456789ЗШЭЩЧŸ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20905] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäàá�ċ{ñÇ.<(+!&éêëèíîïìßĞİ*);^-/ÂÄÀÃ��Ċ[Ñş,%_>?�ÉÊËÈÃ�ÃŽÃ�Ìı:ÖŞ'=ܢabcdefghiħĉÅ�ŭ�|°jklmnopqrÄ¥Ä�ĵ¸�¤µöstuvwxyzĦĈŜŬ�@˙£ż}ݧ]·½$ĤĜĴ¨´×çABCDEFGHI­ô~òóġğJKLMNOPQR`û\\\\ùú�ü÷STUVWXYZ²Ô#ÒÓĠ0123456789³Û\\\"Ùڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20924] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�\\n\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„…\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  âäàáãåçñÃ�.<(+|&éêëèíîïìß!$*);^-/ÂÄÀÃ�ÃÅÇÑŠ,%_>?øÉÊËÈÃ�ÃŽÃ�ÃŒ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæžÆ€µ~stuvwxyz¡¿Ã�[Þ®¢£¥·©§¶Œœ�¬š¯]Ž×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[20932] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ��Â�Â�‘’“”•–—˜™š›œÂ�žŸ����������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[142] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタï¾�ツテトナニヌネノハヒフï¾�ホï¾�ï¾�ムメモヤユヨラリルレロワï¾�゙゚��������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� ã€�。,.・:;?ï¼�゛゜´`¨^ ̄_ヽヾã‚�ゞ〃ä»�々〆〇ー―â€�ï¼�\〜‖|…‥‘’“â€�()〔〕[]{ï½�〈〉《》「ã€�『ã€�ã€�】+−±×÷ï¼�≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○â—�◎◇�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"�����������������������������������������������˘ˇ¸˙Ë�¯˛˚�΄΅��������¡¦¿��������������������������������������ºª©®™¤������������������������������������������������◆□■△▲▽▼※〒→â†�↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽âˆ�∵∫∬�������ʼn♯♭♪†‡¶����◯�\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ï¼�123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ������ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz�����\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�­ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�������������������������������������������������������������������������������������������������ΆΈΉΊΪ�Ό�ΎΫ�Î�����άέήίϊÎ�όςÏ�ϋΰώ������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω���������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"������������������������������������������������������������������ЂЃЄЅІЇЈЉЊЋЌЎÐ������������������������������������ђѓєѕіїјљњћќўџ����������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌â”�┘└├┬┤┴┼â”�┃â”�┓┛┗┣┳┫┻╋┠┯┨┷┿â”�┰┥┸╂���������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"���������������������������������ÆÄ��Ħ�IJ�Å�Ŀ�ŊØŒ�ŦÞ����������������æđðħıijĸłŀʼnŋøœßŧþ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"���������������������������������Ã�ÀÄÂĂÇ�ĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ�ĜĞĢĠĤÃ�ÃŒÃ�ÃŽÇ�İĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑÅ�ŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÃ�ŸŶŹŽŻ����������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"���������������������������������áàäâăǎÄ�ąåãćĉÄ�çċÄ�éèëêěėēęǵÄ�ğ�ġĥíìïîÇ��īįĩĵķĺľļńňņñóòöôǒőÅ�õŕřŗśÅ�šşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż����������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[173] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�ã�‰ãŒ”㌢ã��㌘㌧㌃㌶ã�‘ã�—ãŒ�㌦㌣㌫ã�ŠãŒ»ãŽœãŽ�㎞㎎ãŽ�ã�„㎡��������ã�»ã€žã€Ÿâ„–ã��℡㊤㊥㊦㊧㊨㈱㈲㈹ã�¾ã�½ã�¼ï¿½ï¿½ï¿½âˆ®âˆ‘���∟⊿������\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[176] = \"���������������������������������丂丄丅丌丒丟丣两丨丫丮丯丰丵乀ä¹�乄乇乑乚乜乣乨乩乴乵乹乿äº�亖亗äº�亯亹仃ä»�仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾ä¾�侂侄����������������������������������亜唖娃阿哀愛挨姶逢葵茜ç©�悪æ�¡æ¸¥æ—­è‘¦èŠ¦é¯µæ¢“åœ§æ–¡æ‰±å®›å§�虻飴絢綾鮎或粟袷安庵按暗案闇éž�æ��以伊ä½�ä¾�å�‰å›²å¤·å§”å¨�尉惟æ„�慰易椅為ç•�異移維緯胃è�Žè¡£è¬‚é�•é�ºåŒ»äº•亥域育éƒ�磯一壱溢逸稲茨芋鰯å…�å�°å’½å“¡å› å§»å¼•飲淫胤蔭�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"���������������������������������侅侉侊侌侎ä¾�侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀ä¿�俅俆俈俉俋俌ä¿�ä¿�俒俜俠俢俰俲俼俽俿倀å€�倄倇倊倌倎å€�倓倗倘倛倜å€�倞倢倧倮倰倲倳倵å�€å��å�‚å�…å�†å�Šå�Œå�Žå�‘å�’å�“å�—å�™å�Ÿå� å�¢å�£å�¦å�§å�ªå�­å�°å�±å€»å‚�傃傄傆傊傎å‚�å‚�����������������������������������院陰隠韻å�‹å�³å®‡çƒ�羽迂雨å�¯éµœçªºä¸‘碓臼渦嘘唄æ¬�蔚鰻姥厩浦瓜é–�噂云é�‹é›²è��餌å�¡å–¶å¬°å½±æ˜ æ›³æ „永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦è¬�越閲榎厭円園堰奄宴延怨掩æ�´æ²¿æ¼”炎焔煙燕猿ç¸�艶苑薗é� é‰›é´›å¡©æ–¼æ±šç”¥å‡¹å¤®å¥¥å¾€å¿œï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"���������������������������������傒傓傔傖傛傜傞傟傠傡傢傪傯傰傹傺傽僀僃僄僇僌僎åƒ�僓僔僘僜åƒ�僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌å„�儎僲å„�儗儙儛儜å„�儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊å…�兓兕兗兘兟兤兦兾冃冄冋冎冘å†�冡冣冭冸冺冼冾冿凂����������������������������������押旺横欧殴王ç¿�襖鴬鴎黄岡沖è�»å„„屋憶臆桶牡乙俺å�¸æ�©æ¸©ç©�音下化仮何伽価佳加å�¯å˜‰å¤�å«�家寡科暇果架歌河ç�«ç�‚ç¦�禾稼箇花苛茄è�·è�¯è�“è�¦èª²å˜©è²¨è¿¦é�ŽéœžèšŠä¿„峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔æ�¢æ‡�戒æ‹�改�\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"���������������������������������凈å‡�凑凒凓凕凘凞凢凥凮凲凳凴凷åˆ�刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌å‹�勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋����������������������������������é­�晦械海ç�°ç•Œçš†çµµèŠ¥èŸ¹é–‹éšŽè²�凱劾外咳害崖慨概涯ç¢�蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇å�„廓拡撹格核殻ç�²ç¢ºç©«è¦šè§’赫較郭閣隔é�©å­¦å²³æ¥½é¡�顎掛笠樫橿梶é°�潟割å–�æ�°æ‹¬æ´»æ¸‡æ»‘è‘›è¤�轄且鰹å�¶æ¤›æ¨ºéž„株兜竃蒲釜鎌噛鴨栢茅è�±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"���������������������������������匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾å�‚å�Œå�‹å�™å�›å�¡å�£å�¥å�¬å�­å�²å�¹å�¾åŽƒåŽ‡åŽˆåŽŽåŽ“åŽ”åŽ™åŽ�厡厤厪厫厯厲厴厵厷厸厺厽å�€å�…å��å�’å�“å�•å�šå��å�žå� å�¦å�§å�µå�‚å�“å�šå�¡å�§å�¨å�ªå�¯å�±å�´å�µå‘ƒå‘„呇å‘�å‘�呞呢呤呦呧呩呫呭呮呴呿����������������������������������粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾æ�›æ•¢æŸ‘桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰è‚�艦莞観諌貫還鑑間閑関陥韓館舘丸å�«å²¸å·ŒçŽ©ç™Œçœ¼å²©ç¿«è´‹é›�頑顔願ä¼�伎å�±å–œå™¨åŸºå¥‡å¬‰å¯„å²�希幾忌æ�®æœºæ——既期棋棄�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"���������������������������������å’�咃咅咈咉å’�咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊å“�哎哠哪哬哯哶哼哾哿唀å”�唅唈唉唌å”�唎唕唪唫唲唵唶唻唼唽å•�啇啉啊å•�å•�啑啘啚啛啞啠啡啤啦啿å–�喂喆喈喎å–�喑喒喓喔喗喣喤喭喲喿å—�嗃嗆嗉嗋嗌嗎嗑嗒����������������������������������機帰毅気汽畿祈季稀紀徽è¦�記貴起軌è¼�飢騎鬼亀å�½å„€å¦“宜戯技擬欺犠疑祇義蟻誼議掬è�Šéž å�‰å�ƒå–«æ¡”橘詰砧æ�µé»�å�´å®¢è„šè™�逆丘久仇休å�Šå�¸å®®å¼“急救朽求汲泣ç�¸ç�ƒç©¶çª®ç¬ˆç´šç³¾çµ¦æ—§ç‰›åŽ»å±…å·¨æ‹’æ‹ æŒ™æ¸ è™šè¨±è·�鋸æ¼�禦魚亨享京�\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"���������������������������������嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊å˜�嘎å˜�å˜�嘑嘒嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀å™�噃噄噆噉噋å™�å™�噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚åš�嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋å›�å›�囌å›�囙囜å›�囟囡囤囥囦囧囨囱囫园����������������������������������供侠僑兇競共凶å�”匡å�¿å�«å–¬å¢ƒå³¡å¼·å½Šæ€¯æ��æ�­æŒŸæ•™æ©‹æ³�狂狭矯胸脅興蕎郷é�¡éŸ¿é¥—驚仰å‡�å°­æš�業局曲極玉æ¡�ç²�僅勤å�‡å·¾éŒ¦æ–¤æ¬£æ¬½ç�´ç¦�禽筋緊芹è�Œè¡¿è¥Ÿè¬¹è¿‘金å�ŸéŠ€ä¹�倶å�¥åŒºç‹—玖矩苦躯駆駈駒具愚虞喰空å�¶å¯“é�‡éš…串櫛釧屑屈�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"���������������������������������囶囷åœ�圂圇圊圌圑圕圚圛åœ�圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿å�…å�†å�Œå��å�’å�¢å�¥å�§å�¨å�«å�­å�®å�¯å�°å�±å�³å�´å�µå�·å�¹å�ºå�»å�¼å�¾åž�垃垌垔垗垙垚垜åž�垞垟垡垕垧垨垩垬垸垽埇埈埌åŸ�埕åŸ�埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡����������������������������������掘窟沓é�´è½¡çªªç†Šéšˆç²‚æ —ç¹°æ¡‘é�¬å‹²å�›è–«è¨“群è»�郡å�¦è¢ˆç¥�係傾刑兄啓圭ç�ªåž‹å¥‘形径æ�µæ…¶æ…§æ†©æŽ²æ�ºæ•¬æ™¯æ¡‚渓畦稽系経継繋罫茎è�Šè›�計詣警軽頚é¶�芸迎鯨劇戟撃激隙æ¡�傑欠決潔穴çµ�血訣月件倹倦å�¥å…¼åˆ¸å‰£å–§åœ�堅嫌建憲懸拳æ�²ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"���������������������������������堌å �堛堞堟堠堦堧堭堲堹堿塉塌å¡�å¡�å¡�塕塟塡塤塧塨塸塼塿墀å¢�墇墈墉墊墌å¢�å¢�å¢�墔墖å¢�墠墡墢墦墩墱墲壄墼壂壈å£�壎å£�壒壔壖壚å£�壡壢壩壳夅夆夋夌夒夓夔è™�å¤�夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛å¥�奞奟奡奣奫奭����������������������������������検権牽犬献研硯絹県肩見謙賢軒é�£é�µé™ºé¡•験鹸元原厳幻弦減æº�玄ç�¾çµƒèˆ·è¨€è«ºé™�乎個å�¤å‘¼å›ºå§‘孤己庫弧戸故枯湖ç‹�糊袴股胡è�°è™Žèª‡è·¨éˆ·é›‡é¡§é¼“五互ä¼�å�ˆå‘‰å�¾å¨¯å¾Œå¾¡æ‚Ÿæ¢§æªŽç‘šç¢�語誤護é†�乞鯉交佼侯候倖光公功効勾厚å�£å�‘�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"���������������������������������奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼å§�姃姄姈姊å§�å§’å§�姞姟姣姤姧姮姯姱姲姴姷娀娄娌å¨�娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌å©�婕婞婣婥婧婭婷婺婻婾媋åª�媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿����������������������������������å�Žå–‰å�‘垢好孔å­�å®�工巧巷幸広庚康弘æ�’慌抗拘控攻昂晃更æ�­æ ¡æ¢—構江洪浩港æº�甲皇硬稿糠紅紘絞綱耕考肯肱腔è†�航è�’行衡講貢購郊酵鉱砿鋼閤é™�項香高鴻剛劫å�·å�ˆå£•拷濠豪轟麹克刻告国穀酷鵠黒ç�„漉腰甑忽惚骨狛込�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"���������������������������������嫄嫆嫈å«�嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀å¬�嬈嬗嬴嬙嬛å¬�嬡嬥嬭嬸å­�孋孌孒孖孞孨孮孯孼孽孾孿å®�宄宆宊宎å®�宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀å¯�å¯�å¯�寖寗寘寙寚寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩����������������������������������此頃今困å�¤å¢¾å©šæ�¨æ‡‡æ˜�昆根梱混痕紺艮魂些ä½�å�‰å”†åµ¯å·¦å·®æŸ»æ²™ç‘³ç ‚è©�鎖裟å��座挫債催å†�最哉塞妻宰彩æ‰�採栽歳済ç�½é‡‡çŠ€ç •ç ¦ç¥­æ–Žç´°è�œè£�載際剤在æ��罪財冴å�‚阪堺榊肴咲崎埼碕鷺作削咋æ�¾æ˜¨æœ”柵窄策索錯桜鮭笹匙冊刷�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"���������������������������������屭屰屴屵屺屻屼屽岇岈岊å²�å²’å²�岟岠岢岣岦岪岲岴岵岺峉峋峒å³�峗峮峱峲峴å´�å´†å´�崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿å¶�嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋å·�巎巘巙巠巤����������������������������������察拶撮擦札殺薩雑çš�鯖æ�ŒéŒ†é®«çš¿æ™’三傘å�‚山惨撒散桟燦ç�Šç”£ç®—纂蚕讃賛酸é¤�斬暫残仕仔伺使刺å�¸å�²å—£å››å£«å§‹å§‰å§¿å­�å±�市師志æ€�指支孜斯施旨æž�止死æ°�ç�…祉ç§�糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似ä¾�å…�字寺慈æŒ�時�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"���������������������������������巩巸巹帀帇å¸�帒帔帕帘帟帠帮帨帲帵帾幋å¹�幉幑幖幘幛幜幞幨幪幫幬幭幮幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜å¼�弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇å½�å½�彔彘彛彠彣彤彧����������������������������������次滋治爾璽痔ç£�示而耳自蒔辞æ±�鹿å¼�識鴫竺軸å®�雫七å�±åŸ·å¤±å«‰å®¤æ‚‰æ¹¿æ¼†ç–¾è³ªå®Ÿè”€ç¯ å�²æŸ´èŠ�屡蕊縞舎写射æ�¨èµ¦æ–œç…®ç¤¾ç´—者è¬�車é�®è›‡é‚ªå€Ÿå‹ºå°ºæ�“ç�¼çˆµé…Œé‡ˆéŒ«è‹¥å¯‚弱惹主å�–守手朱殊狩ç� ç¨®è…«è¶£é…’首儒å�—呪寿授樹綬需囚å�Žå‘¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"���������������������������������彯彲彴彵彸彺彽彾徉å¾�å¾�徖徜å¾�徢徧徫徤徬徯徰徱徸忄忇忈忉忋å¿�忑忒忓忔忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊æ€�怓怔怗怘怚怟怤怭怳怵æ�€æ�‡æ�ˆæ�‰æ�Œæ�‘æ�”æ�–æ�—æ��æ�¡æ�§æ�±æ�¾æ�¿æ‚‚悆悈悊悎悑悓悕悘æ‚�悞悢悤悥您悰悱悷����������������������������������宗就州修æ„�拾洲秀秋終ç¹�習臭舟è’�衆襲è®�蹴輯週酋酬集醜什ä½�å……å��従戎柔æ±�渋ç�£ç¸¦é‡�銃å�”夙宿淑ç¥�縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡é�µé†‡é †å‡¦åˆ�所暑曙渚庶緒署書薯藷諸助å�™å¥³åº�å¾�æ�•鋤除傷償�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"���������������������������������悻悾惂惄惈惉惊惋惎æƒ�惔惕惙惛æƒ�惞惢惥惲惵惸惼惽愂愇愊愌æ„�愑愒愓愔愖愗愙愜愞愢愪愫愰愱愵愶愷愹æ…�慅慆慉慞慠慬慲慸慻慼慿憀æ†�憃憄憋æ†�憒憓憗憘憜æ†�憟憠憥憨憪憭憸憹憼懀æ‡�懂懎æ‡�懕懜æ‡�懞懟懡懢懧懩懥����������������������������������å‹�匠å�‡å�¬å“¨å•†å”±å˜—奨妾娼宵将å°�少尚庄床廠彰承抄招掌æ�·æ˜‡æ˜Œæ˜­æ™¶æ�¾æ¢¢æ¨Ÿæ¨µæ²¼æ¶ˆæ¸‰æ¹˜ç„¼ç„¦ç…§ç—‡çœ�ç¡�ç¤�祥称章笑粧紹肖è�–蒋蕉è¡�裳訟証詔詳象賞醤鉦é�¾é�˜éšœéž˜ä¸Šä¸ˆä¸žä¹—冗剰城場壌嬢常情擾æ�¡æ�–浄状畳穣蒸譲醸錠嘱埴飾�\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"���������������������������������懬懭懯æˆ�戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌æ‰�扑扒扔扖扚扜扤扭扯扳扺扽æŠ�抎æŠ�æŠ�抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋æŒ�æŒ�挓挖挘挩挪挭挵挶挹挼æ��æ�‚æ�ƒæ�„æ�†æ�Šæ�‹æ�Žæ�’æ�“æ�”æ�˜æ�›æ�¥æ�¦æ�¬æ�­æ�±æ�´æ�µï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ‹­æ¤�殖燭織è�·è‰²è§¦é£Ÿè�•辱尻伸信侵唇娠å¯�審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進é‡�震人ä»�刃塵壬尋甚尽腎訊迅陣é�­ç¬¥è«�須酢図厨逗å�¹åž‚帥推水炊ç�¡ç²‹ç¿ è¡°é�‚é…”éŒ�錘éš�瑞髄崇嵩数枢趨雛æ�®æ�‰æ¤™è�…頗雀裾�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"���������������������������������æ�¸æ�¼æ�½æ�¿æŽ‚掄掇掊æŽ�掔掕掙掚掞掤掦掭掮掯掽æ��æ�…æ�ˆæ�Žæ�‘æ�“æ�”æ�•æ�œæ� æ�¥æ�ªæ�¬æ�²æ�³æ�µæ�¸æ�¹æ�‰æ�Šæ��æ�’æ�”æ�˜æ�žæ� æ�¢æ�¤æ�¥æ�©æ�ªæ�¯æ�°æ�µæ�½æ�¿æ‘‹æ‘�摑摒摓摔摚摛摜æ‘�摟摠摡摣摭摳摴摻摽撅撇æ’�æ’�撑撘撙撛æ’�撟撡撣撦撨撬撳撽撾撿����������������������������������澄摺寸世瀬ç•�是凄制勢姓å¾�性æˆ�政整星晴棲栖正清牲生盛精è�–声製西誠誓請é€�醒é�’é�™æ–‰ç¨Žè„†éš»å¸­æƒœæˆšæ–¥æ˜”æž�石ç©�ç±�績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌è�‰ä»™å…ˆå�ƒå� å®£å°‚å°–å·�戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線�\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"���������������������������������擄擉擊擋擌擎æ“�擑擕擗擤擥擩擪擭擰擵擷擻擿æ”�攄攈攉攊æ”�攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉æ•�敒敔敟敠敧敫敺敽æ–�æ–…æ–Šæ–’æ–•æ–˜æ–�斠斣斦斮斲斳斴斿旂旈旉旎æ—�旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉æ˜�昑昒昕昖æ˜�����������������������������������繊羨腺舛船薦詮賎践é�¸é�·éŠ­éŠ‘é–ƒé®®å‰�善漸然全禅繕膳糎噌塑岨措曾曽楚狙ç–�疎礎祖租粗素組蘇訴阻é�¡é¼ åƒ§å‰µå�Œå�¢å€‰å–ªå£®å¥�爽宋層åŒ�惣想æ�œæŽƒæŒ¿æŽ»æ“�早曹巣æ§�槽漕燥争痩相窓糟ç·�ç¶œè�¡è�‰è�˜è‘¬è’¼è—»è£…èµ°é€�é�­éŽ—éœœé¨’åƒ�増憎�\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"���������������������������������昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌æš�æš�暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎æ›�曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾æ�…æ�‡æ�ˆæ�Œæ�”æ�•æ������������������������������������臓蔵贈造促å�´å‰‡å�³æ�¯æ�‰æ�Ÿæ¸¬è¶³é€Ÿä¿—属賊æ—�ç¶šå�’袖其æ�ƒå­˜å­«å°Šæ��æ�‘é�œä»–多太汰詑唾堕妥惰打æŸ�舵楕陀駄騨体堆対è€�岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代å�°å¤§ç¬¬é†�題鷹æ»�瀧å�“啄宅托択拓沢濯ç�¢è¨—é�¸æ¿�諾茸凧蛸å�ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"���������������������������������æ�¦æ�¬æ�®æ�´æ�¶æ�»æž�构枎æž�枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙æ �栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮桯桰桱桲桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌æ£�����������������������������������å�©ä½†é�”辰奪脱巽竪辿棚谷狸鱈樽誰丹å�˜å˜†å�¦æ‹…探旦歎淡湛炭短端箪綻耽胆蛋誕é�›å›£å£‡å¼¾æ–­æš–檀段男談値知地弛æ�¥æ™ºæ± ç—´ç¨šç½®è‡´èœ˜é�…馳築畜竹筑蓄é€�秩窒茶嫡ç�€ä¸­ä»²å®™å¿ æŠ½æ˜¼æŸ±æ³¨è™«è¡·è¨»é…Žé‹³é§�樗瀦猪苧著貯ä¸�兆凋喋寵�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"���������������������������������æ£�棑棓棖棙棜æ£�棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊æ¤�椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀æ¦�榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀æ¨�樃æ¨�樑樕樚æ¨�樠樤樨樰樲����������������������������������帖帳åº�弔張彫徴懲挑暢æœ�潮牒町眺è�´è„¹è…¸è�¶èª¿è«œè¶…跳銚長頂鳥勅æ�—直朕沈ç��賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴é�”椿潰å�ªå£·å¬¬ç´¬çˆªå�Šé‡£é¶´äº­ä½Žå�œå�µå‰ƒè²žå‘ˆå ¤å®šå¸�底庭廷弟悌抵挺æ��梯汀碇禎程締艇訂諦蹄逓�\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"���������������������������������樴樷樻樾樿橅橆橉橊橎æ©�橑橒橕橖橛橤橧橪橱橳橾æª�檃檆檇檉檋檑檛æª�檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌æ«�櫔櫕櫖櫜æ«�櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉æ¬�æ¬�欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊æ­�æ­’æ­–æ­˜æ­�歠歧歫歮歰歵歽����������������������������������邸鄭釘鼎泥摘擢敵滴的笛é�©é�‘溺哲徹撤è½�迭鉄典填天展店添çº�甜貼転顛点ä¼�殿澱田電兎å��堵塗妬屠徒斗æ�œæ¸¡ç™»è�Ÿè³­é€”都é��砥砺努度土奴怒倒党冬å‡�刀å”�塔塘套宕島嶋悼投æ�­æ�±æ¡ƒæ¢¼æ£Ÿç›—淘湯涛ç�¯ç‡ˆå½“痘祷等答筒糖統到�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"���������������������������������歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉æ°�æ°Žæ°�氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋æ±�æ±�汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆æ³�æ³�æ³�泑泒泔泖����������������������������������董蕩藤討謄豆è¸�逃é€�é�™é™¶é ­é¨°é—˜åƒ�å‹•å�Œå ‚導憧撞洞瞳童胴è�„é�“銅峠鴇匿得徳涜特ç�£ç¦¿ç¯¤æ¯’独読栃橡凸çª�椴届鳶苫寅酉瀞噸屯惇敦沌豚é��頓呑曇éˆ�奈那内ä¹�凪薙謎ç�˜æ�ºé�‹æ¥¢é¦´ç¸„ç•·å�—楠軟難æ±�二尼å¼�迩匂賑肉虹廿日乳入�\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"���������������������������������泚泜泠泧泩泫泬泮泲泴洄洇洊洎æ´�洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎æ·�æ·–æ·›æ·�淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋æ¹�湑湒湓湔湗湜æ¹�湞����������������������������������如尿韮任妊å¿�èª�濡禰祢寧葱猫熱年念æ�»æ’šç‡ƒç²˜ä¹ƒå»¼ä¹‹åŸœå𢿂©æ¿ƒç´�能脳膿農覗蚤巴把播覇æ�·æ³¢æ´¾ç�¶ç ´å©†ç½µèŠ­é¦¬ä¿³å»ƒæ‹�排敗æ�¯ç›ƒç‰ŒèƒŒè‚ºè¼©é…�å€�培媒梅楳煤狽買売賠陪這è�¿ç§¤çŸ§è�©ä¼¯å‰¥å�šæ‹�æŸ�泊白箔粕舶薄迫æ›�漠爆縛莫é§�麦�\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"���������������������������������湢湣湨湳湻湽æº�溓溙溠溧溭溮溱溳溻溿滀æ»�滃滇滈滊æ»�滎æ»�滫滭滮滹滻滽漄漈漊漌æ¼�漖漘漚漛漦漩漪漯漰漳漶漻漼漭æ½�潑潒潓潗潙潚æ½�潞潡潢潨潬潽潾澃澇澈澋澌æ¾�æ¾�澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊����������������������������������函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪ä¼�罰抜ç­�閥鳩噺塙蛤隼伴判å�Šå��å�›å¸†æ�¬æ–‘æ�¿æ°¾æ±Žç‰ˆçНç�­ç•”ç¹�般藩販範釆煩頒飯挽晩番盤ç£�蕃蛮匪å�‘å�¦å¦ƒåº‡å½¼æ‚²æ‰‰æ‰¹æŠ«æ–�比泌疲皮碑秘緋罷肥被誹費é�¿é�žé£›æ¨‹ç°¸å‚™å°¾å¾®æž‡æ¯˜ç�µçœ‰ç¾Žï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"���������������������������������濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇ç€�瀗瀠瀣瀯瀴瀷瀹瀼ç�ƒç�„ç�ˆç�‰ç�Šç�‹ç�”ç�•ç��ç�žç�Žç�¤ç�¥ç�¬ç�®ç�µç�¶ç�¾ç‚�炅炆炔炕炖炗炘炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃焄焅焆焇焋焌ç„�焞焠焫焭焯焰焱焸ç…�煅煆煇煊煋ç…�煒煗煚煜煞煠����������������������������������鼻柊稗匹疋髭彦è†�è�±è‚˜å¼¼å¿…畢筆逼桧姫媛ç´�百謬俵彪標氷漂瓢票表評豹廟æ��病秒苗錨鋲蒜蛭鰭å“�彬斌浜瀕貧賓頻æ•�ç“¶ä¸�付埠夫婦富冨布府怖扶敷斧普浮父符è…�膚芙譜負賦赴阜附侮撫武舞葡蕪部å°�楓風葺蕗ä¼�副復幅æœ��\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"���������������������������������煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀ç‡�燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚çˆ�爟爤爫爯爴爸爹ç‰�牂牃牅牎ç‰�ç‰�牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉çŠ�犎犓犛犨犭犮犱犴犾ç‹�狇狉狌狕狖狘狟狥狳狴狺狻����������������������������������ç¦�腹複覆淵弗払沸ä»�物鮒分å�»å™´å¢³æ†¤æ‰®ç„šå¥®ç²‰ç³žç´›é›°æ–‡è�žä¸™ä½µå…µå¡€å¹£å¹³å¼ŠæŸ„並蔽閉陛米é �僻å£�癖碧別瞥蔑箆å��変片篇編辺返é��便勉娩å¼�éž­ä¿�舗鋪圃æ�•歩甫補輔穂募墓慕戊暮æ¯�ç°¿è�©å€£ä¿¸åŒ…呆報奉å®�峰峯崩庖抱æ�§æ”¾æ–¹æœ‹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"���������������������������������狾猂猄猅猇猋çŒ�猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽ç�ƒç��ç��ç�’ç�–ç�˜ç��ç�žç�Ÿç� ç�¦ç�§ç�©ç�«ç�¬ç�®ç�¯ç�±ç�·ç�¹ç�¼çŽ€çŽ�玃玅玆玎çŽ�玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿ç�…ç�†ç�‰ç�‹ç�Œç��ç�’ç�“ç�–ç�™ç��ç�¡ç�£ç�¦ç�§ç�©ç�´ç�µç�·ç�¹ç�ºç�»ç�½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½æ³•泡烹砲縫胞芳è�Œè“¬èœ‚褒訪豊邦鋒飽鳳鵬ä¹�亡å‚�剖å�Šå¦¨å¸½å¿˜å¿™æˆ¿æš´æœ›æŸ�棒冒紡肪膨謀貌貿鉾防å� é ¬åŒ—僕å�œå¢¨æ’²æœ´ç‰§ç�¦ç©†é‡¦å‹ƒæ²¡æ®†å €å¹Œå¥”本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒æ¡�亦俣å�ˆæŠ¹æœ«æ²«è¿„侭繭麿万慢満�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"���������������������������������ç�¿ç�€ç��ç�„ç�‡ç�Šç�‘ç�šç�›ç�¤ç�¦ç�¨ç�©ç�ªç�«ç�¬ç�­ç�®ç�¯ç�°ç�±ç�¹ç‘€ç‘ƒç‘„瑆瑇瑋ç‘�ç‘‘ç‘’ç‘—ç‘�瑢瑦瑧瑨瑫瑭瑮瑱瑲璀ç’�璅璆璇璉ç’�ç’�璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌ç“�瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆����������������������������������漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙ç²�民眠務夢無牟矛霧鵡椋婿娘冥å��命明盟迷銘鳴姪ç‰�æ»…å…�棉綿緬é�¢éººæ‘¸æ¨¡èŒ‚妄孟毛猛盲網耗蒙儲木黙目æ�¢å‹¿é¤…尤戻籾貰å•�æ‚¶ç´‹é–€åŒ�也冶夜爺耶野弥矢厄役約薬訳èº�é�–柳薮鑓愉愈油癒�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"���������������������������������甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎ç•�畒畗畞畟畡畯畱畹畺畻畼畽畾ç–�ç–…ç–�疒疓疕疙疜疢疤疴疺疿痀ç—�痄痆痌痎ç—�痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌ç˜�瘒瘓瘕瘖瘙瘛瘜ç˜�瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹����������������������������������諭輸唯佑優勇å�‹å®¥å¹½æ‚ æ†‚æ�–有柚湧涌猶猷由ç¥�裕誘é�Šé‚‘郵雄èž�夕予余与誉輿é �傭幼妖容庸æ�šæ�ºæ“�曜楊様洋溶熔用窯羊耀葉蓉è¦�謡踊é�¥é™½é¤Šæ…¾æŠ‘欲沃浴翌翼淀羅螺裸æ�¥èŽ±é ¼é›·æ´›çµ¡è�½é…ªä¹±å�µåµ�欄濫è—�蘭覧利å��å±¥æ�Žæ¢¨ç�†ç’ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"���������������������������������瘺瘼癊癀ç™�癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴çš�皅皌çš�皕皛皜çš�皟皠皢皣皤皥皦皧皨皪皭皽ç›�盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾ç�‚ç�…ç�†ç�Šç��ç�Žç��ç�’ç�–ç�—ç�œç�žç�Ÿç� ç�¢ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç—¢è£�裡里離陸律率立葎掠略劉æµ�溜ç�‰ç•™ç¡«ç²’隆竜é¾�侶慮旅虜了亮僚両凌寮料æ¢�涼猟療瞭稜糧良諒é�¼é‡�陵領力緑倫厘林淋ç‡�ç�³è‡¨è¼ªéš£é±—麟瑠å¡�涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉æ�‹æ†�漣煉簾練è�¯ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"���������������������������������ç�¤ç�§ç�ªç�¬ç�°ç�²ç�³ç�´ç�ºç�½çž€çž„瞌çž�瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉ç �ç Žç ‘ç �砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊ç¢�碔碘碡ç¢�碞碟碤碨碬碭碰碱碲碳����������������������������������蓮連錬呂魯櫓炉賂路露労å©�廊弄朗楼榔浪æ¼�牢狼篭è€�è�¾è�‹éƒŽå…­éº“禄肋録論倭和話歪賄脇惑枠鷲亙亘é°�è©«è—�蕨椀湾碗腕��������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"���������������������������������碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌ç¤�礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋ç¥�祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊ç§�秔秖秚ç§�秞����������������������������������弌ä¸�丕个丱丶丼丿乂乖乘亂亅豫亊舒å¼�于亞亟亠亢亰亳亶从ä»�仄仆仂仗仞仭仟价伉佚估佛ä½�佗佇佶侈ä¾�侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚ä¿�俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆å�ƒå�‡æœƒå�•å��å�ˆå�šå�–å�¬å�¸å‚€å‚šå‚…傴傲�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"���������������������������������秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜ç©�穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋çª�窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰����������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉å„�儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉å†�冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹å‰�剄剋剌剞剔剪剴剩剳剿剽åŠ�劔劒剱劈劑辨�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"���������������������������������笱笴笽笿筀ç­�筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎ç®�箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾ç°�簂簃簄簆簉簋簌簎ç°�簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙籚籛籜ç±�籞����������������������������������辧劬劭劼劵å‹�å‹�勗勞勣勦飭勠勳勵勸勹匆匈甸åŒ�åŒ�åŒ�匕匚匣匯匱匳匸å�€å�†å�…丗å�‰å��凖å�žå�©å�®å¤˜å�»å�·åŽ‚åŽ–åŽ åŽ¦åŽ¥åŽ®åŽ°åŽ¶å�ƒç°’é›™å�Ÿæ›¼ç‡®å�®å�¨å�­å�ºå��å�½å‘€å�¬å�­å�¼å�®å�¶å�©å��呎å’�呵咎呟呱呷呰咒呻咀呶咄å’�咆哇咢咸咥咬哄哈咨�\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"���������������������������������籡籣籧籩籭籮籰籲籹籼籽粆粇ç²�粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉ç³�ç³�糓糔糕糗糙糚ç³�糦糩糫糵紃紇紈紉ç´�ç´‘ç´’ç´“ç´–ç´�紞紣紦紪紭紱紼紽紾絀çµ�絇絈çµ�絑絓絗絙絚絜çµ�絥絧絪絰絸絺絻絿ç¶�綂綃綅綆綈綋綌ç¶�ç¶‘ç¶–ç¶—ç¶�����������������������������������咫哂咤咾咼哘哥哦å”�唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳å•�喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎å™�營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔åš�嚥嚮嚶嚴囂嚼å›�囃囀囈囎囑囓囗囮囹圀囿圄圉�\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"���������������������������������綞綦綧綪綳綶綷綹緂緃緄緅緆緌ç·�緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈ç¸�縑縕縗縜ç¸�縠縧縨縬縭縯縳縶縿繄繅繇繎ç¹�繒繘繟繡繢繥繫繮繯繳繸繾çº�纆纇纊çº�纑纕纘纚çº�纞缼缻缽缾缿罃罄罇ç½�罒罓罛罜ç½�罡罣罤罥罦罭����������������������������������圈國åœ�圓團圖嗇圜圦圷圸å�Žåœ»å�€å��å�©åŸ€åžˆå�¡å�¿åž‰åž“垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙å �塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊å¤�夛梦夥夬夭夲夸夾竒奕å¥�奎奚奘奢奠奧奬奩�\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"���������������������������������罱罽罾罿羀羋ç¾�ç¾�ç¾�羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎ç¿�翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊è€�耎è€�耑耓耔耖è€�耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾è�€è�„è� è�¤è�¦è�­è�±è�µè‚�肈肎肜肞肦肧肫肸肹胈èƒ�èƒ�胒胔胕胗胘胠胭胮����������������������������������奸å¦�å¦�佞侫妣妲姆姨姜å¦�姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲å«�嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔å¯�寤實寢寞寥寫寰寶寳尅將專å°�尓尠尢尨尸尹å±�屆屎屓�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"���������������������������������胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷è†�è†�膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎è‡�臕臗臛è‡�臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃èˆ�舓舔舙舚èˆ�舡舢舨舲舴舺艃艄艅艆����������������������������������å±�å±�孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢å¶�嶬嶮嶽å¶�嶷嶼巉å·�巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠å»�廂廈å»�å»��\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"���������������������������������艋艎è‰�艑艖艜艠艣艧艭艴艻艽艿芀èŠ�芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆è‹�苕苚苠苢苤苨苪苭苯苶苷苽苾茀èŒ�茇茈茊茋è�”茛èŒ�茞茟茡茢茬茭茮茰茳茷茺茼茽è�‚è�ƒè�„è�‡è��è�Žè�‘è�•è�–è�—è�°è�¸ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½å»–廣å»�廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉å½�彜弋弑弖弩弭弸å½�彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱å¿�悳忿怡æ� æ€™æ€�怩怎怱怛怕怫怦æ€�怺æ�šæ��æ�ªæ�·æ�Ÿæ�Šæ�†æ��æ�£æ�ƒæ�¤æ�‚æ�¬æ�«æ�™æ‚�æ‚�惧悃悚�\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"���������������������������������è�½è�¿èŽ€èŽ‚èŽ„èŽ†èŽ�莒莔莕莘莙莛莜èŽ�莦莧莩莬莾莿è�€è�‡è�‰è��è��è�‘è�”è��è�“è�¨è�ªè�¶è�¸è�¹è�¼è��è�†è�Šè��è�‘è�•è�™èŽ­è�¯è�¹è‘…葇葈葊è‘�è‘�葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽è’�蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌è“�蓓����������������������������������悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘æ…�愕愆惶惷愀惴惺愃愡惻惱æ„�愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟æ…�慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹æ‡�懦懣懶懺懴懿懽懼懾戀戈戉æˆ�戌戔戛�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"���������������������������������蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎è”�蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆è•�è•�蕑蕒蕓蕖蕙蕜è•�蕞蕟蕠蕡蕢蕤蕫蕯蕹蕺蕻蕽蕿è–�薅薆薉薋薌è–�è–“è–˜è–�薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼����������������������������������戞戡截戮戰戲戳æ‰�扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻æ‹�拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵æ��挾æ��æ�œæ��掖掎掀掫æ�¶æŽ£æŽ�掉掟掵æ�«æ�©æŽ¾æ�©æ�€æ�†æ�£æ�‰æ�’æ�¶æ�„æ�–æ�´æ�†æ�“æ�¦æ�¶æ”�æ�—æ�¨æ��摧摯摶摎攪撕撓撥撩撈撼�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"���������������������������������藿蘀蘄蘅è˜�蘎è˜�蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙è™�虠虡虢虣虤虩虬虯虵虶虷虺èš�蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀è›�蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎èœ�èœ�蜓蜔蜙蜞蜟蜡蜣����������������������������������據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕æ•�敘敞æ•�敲數斂斃變斛斟斫斷旃旆æ—�旄旌旒旛旙无旡旱æ�²æ˜Šæ˜ƒæ—»æ�³æ˜µæ˜¶æ˜´æ˜œæ™�晄晉æ™�晞æ™�晤晧晨晟晢晰暃暈暎暉暄暘æš�æ›�暹曉暾暼�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"���������������������������������蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾è�€è�ƒè�…è��è�˜è��è�¡è�¤è�¥è�¯è�±è�²è�»èžƒèž„螅螆螇螈螉螋螌èž�螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿èŸ�蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿è �蠃蠆蠉蠊蠋è �蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵����������������������������������曄暸曖曚曠昿曦曩曰曵曷æœ�朖朞朦朧霸朮朿朶æ��朸朷æ�†æ�žæ� æ�™æ�£æ�¤æž‰æ�°æž©æ�¼æ�ªæžŒæž‹æž¦æž¡æž…枷柯枴柬枳柩枸柤柞æŸ�柢柮枹柎柆柧檜栞框栩桀æ¡�栲桎梳栫桙档桷桿梟æ¢�梭梔æ¢�梛梃檮梹桴梵梠梺æ¤�æ¢�桾æ¤�棊椈棘椢椦棡椌æ£��\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"���������������������������������蠺蠼è¡�衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊裋裌è£�裎裑裒裓裛裞裧裯裰裱裵裷è¤�褆è¤�褎è¤�褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉è¥�襒襗襚襛襜襡襢襣襫襮襰襳襵襺����������������������������������棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞æ¥�æ¦�楪榲榮æ§�榿æ§�槓榾槎寨槊æ§�榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒æ«�樣樓橄樌橲樶橸橇橢橙橦橈樸樢æª�æª�檠檄檢檣�\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"���������������������������������襻襼襽覉è¦�è¦�覔覕覛覜覟覠覥覰覴覵覶覷覼觔觕觖觗觘觥觩觫觭觱觳觶觹觽觿訄訅訇è¨�訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉è©�詎詓詖詗詘詜è©�詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋èª�èª�誒誖誗誙誟誧誩誮誯誳����������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉æ­�歙歔歛歟歡歸歹歿殀殄殃æ®�殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂æ²�沚æ²�沛汾汨汳沒æ²�泄泱泓沽泗泅æ³�沮沱沾�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"���������������������������������誶誷誻誾諃諆諈諉諊諑諓諔諕諗è«�諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂譃譄譅譆譈譒譓譔譙è­�譞譣譭譶譸譹譼譾è®�讄讅讋è®�è®�讔讕讜讞讟谸谹谽谾豅豇豉豋è±�豑豓豔豗豘豛è±�豙豣豤豦豨豩豭豳豵豶豻豾貆����������������������������������沺泛泯泙泪洟è¡�洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶æ¹�渟湃渺湎渤滿æ¸�游溂溪溘滉溷滓溽溯滄溲滔滕æº�溥滂溟æ½�漑ç�Œæ»¬æ»¸æ»¾æ¼¿æ»²æ¼±æ»¯æ¼²æ»Œï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"���������������������������������貇貋è²�貒貓貙貛貜貤貹貺賅賆賉賋è³�賖賕賙è³�賡賨賬賯賰賲賵賷賸賾賿è´�贃贉贒贗贛赥赩赬赮赿趂趄趈è¶�è¶�趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽è¸�踄踅踆踋踑踔踖踠踡踢����������������������������������漾漓滷澆潺潸æ¾�澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑ç€�ç€�濾瀛瀚潴ç€�瀘瀟瀰瀾瀲ç�‘ç�£ç‚™ç‚’炯烱炬炸炳炮烟烋çƒ�烙焉烽焜焙煥煕熈煦煢煌煖煬ç†�燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"���������������������������������踣踦踧踱踳踶踷踸踹踽蹀è¹�蹋è¹�蹎è¹�蹔蹛蹜è¹�蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉èº�躒躕躚躛èº�躞躢躧躩躭躮躳躵躺躻軀è»�軃軄軇è»�軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈è¼�è¼�輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀è½�����������������������������������燹燿çˆ�çˆ�爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂çŠ�犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷å€�猗猊猜猖çŒ�猴猯猩猥猾ç�Žç��默ç�—ç�ªç�¨ç�°ç�¸ç�µç�»ç�ºç�ˆç޳ç�ŽçŽ»ç�€ç�¥ç�®ç�žç’¢ç�…瑯ç�¥ç�¸ç�²ç�ºç‘•ç�¿ç‘Ÿç‘™ç‘�瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊ç“�ç“”ç�±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"���������������������������������轃轇è½�轑轒轓轔轕轘è½�轞轥è¾�辠辡辤辥辦辵辶辸达迀è¿�迆迊迋è¿�è¿�迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿é�ƒé�„é�Œé�›é��é�¢é�¦é�§é�¬é�°é�´é�¹é‚…邈邋邌邎é‚�邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃����������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎ç”�甕甓甞甦甬甼畄ç•�畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚ç–�疥疣痂疳痃疵疽疸疼疱ç—�痊痒痙痣痞痾痿痼ç˜�痰痺痲痳瘋ç˜�瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"���������������������������������郄郅郇郈郕郗郘郙郜éƒ�郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈é„�é„�鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈é…�酓酗酙酚酛酡酤酧酭酴酹酺酻é†�醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿����������������������������������癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂ç›�盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸ç�‡ç�šç�¨ç�«ç�›ç�¥ç�¿ç�¾ç�¹çžŽçž‹çž‘瞠瞞瞰瞶瞹瞿瞼瞽瞻矇çŸ�矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"���������������������������������釂釃釅釓釔釗釙釚釞釤釥釩釪釬釭釮釯釰釱釷釹釻釽鈀éˆ�鈄鈅鈆鈇鈉鈊鈌éˆ�鈒鈓鈖鈘鈜éˆ�鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊é‰�鉎é‰�鉑鉘鉙鉜é‰�鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵鉶鉷鉸鉹鉻鉼鉽鉿銈銉銊éŠ�銎銒銗����������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊ç¦�禧齋禪禮禳禹禺秉秕秧秬秡秣稈ç¨�稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩é¾�穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊ç«�ç«�竕竓站竚ç«�竡竢竦竭竰笂ç¬�笊笆笳笘笙笞笵笨笶ç­��\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"���������������������������������銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿鋀é‹�鋂鋃鋅鋆鋇鋈鋋鋌é‹�鋎é‹�鋓鋕鋗鋘鋙鋜é‹�鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈éŒ�錑錔錕錜éŒ�錞錟錡錤錥錧錩錪錳錴錶錷é�‡é�ˆé�‰é��é�‘é�’é�•é�—é�˜é�šé�žé�¤é�¥é�§é�©é�ªé�­é�¯é�°é�±é�³é�´é�¶ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ç­ºç¬„ç­�笋筌筅筵筥筴筧筰筱筬筮ç®�箘箟ç®�箜箚箋箒ç®�ç­�箙篋ç¯�篌ç¯�箴篆ç¯�篩簑簔篦篥籠簀簇簓篳篷簗ç°�篶簣簧簪簟簷簫簽籌籃籔ç±�ç±€ç±�籘籟籤籖籥籬籵粃ç²�粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"���������������������������������é�ºé�½é�¿éŽ€éŽ�鎂鎈鎊鎋éŽ�éŽ�鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩é��é�„é�…é�†é�‡é�‰é�Šé�‹é�Œé��é�“é�™é�œé�žé�Ÿé�¢é�¦é�§é�¹é�·é�¸é�ºé�»é�½é��é�‚é�„é�ˆé�‰é��é�Žé��é�•é�–é�—é�Ÿé�®é�¯é�±é�²é�³é�´é�»é�¿é�½é‘ƒé‘…鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹����������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮çµ�絣經綉絛ç¶�絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘ç·�緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧ç¹�繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒çº�纓纔纖纎纛纜缸缺�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"���������������������������������镾閄閈閌é–�é–Žé–�閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋é—�闑闒闓闙闚é—�闞闟闠闤闦é˜�阞阢阤阥阦阬阱阳阷阸阹阺阼阽é™�陒陔陖陗陘陡陮陴陻陼陾陿éš�隂隃隄隉隑隖隚éš�隟隤隥隦隩隮隯隳隺雊雒嶲雘雚é›�雞雟雩雯雱雺霂����������������������������������罅罌ç½�罎ç½�网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞ç¾�羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻è�Šè�†è�’è�˜è�šè�Ÿè�¢è�¨è�³è�²è�°è�¶è�¹è�½è�¿è‚„肆肅肛肓肚肭å†�肬胛胥胙èƒ�胄胚胖脉胯胱脛脩脣脯腋�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"���������������������������������霃霅霉霚霛éœ�霡霢霣霨霱霳é��é�ƒé�Šé�Žé��é�•é�—é�˜é�šé�›é�£é�§é�ªé�®é�³é�¶é�·é�¸é�»é�½é�¿éž€éž‰éž•鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿éŸ�韄韅韇韉韊韌éŸ�韎éŸ�韑韔韗韘韙éŸ�韞韠韛韡韤韯韱韴韷韸韺頇頊頙é �頎頔頖頜頞頠頣頦����������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉è‡�臑臙臘臈臚臟臠臧臺臻臾èˆ�舂舅與舊èˆ�èˆ�舖舩舫舸舳艀艙艘è‰�艚艟艤艢艨艪艫舮艱艷艸艾èŠ�芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"���������������������������������頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱餲餳餴餵餹餺餻餼饀é¥�饆饇饈é¥�饎饔饘饙饛饜饞饟饠馛é¦�馟馦馰馱馲馵����������������������������������茵茴茖茲茱è�€èŒ¹è��è�…茯茫茗茘莅莚莪莟莢莖茣莎莇莊è�¼è޵è�³è�µèŽ èŽ‰èŽ¨è�´è�“è�«è�Žè�½è�ƒè�˜è�‹è��è�·è�‡è� è�²è��è�¢è� è޽è�¸è”†è�»è‘­è�ªè�¼è•šè’„葷葫蒭葮蒂葩葆è�¬è‘¯è‘¹è�µè“Šè‘¢è’¹è’¿è’Ÿè“™è“�蒻蓚è“�è“�蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"���������������������������������馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌é¨�騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇é©�驄驊驋驌驎驑驔驖é©�骪骬骮骯骲骴骵骶骹骻骾骿é«�髃髆髈髎é«�髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿鬀é¬�鬂鬃����������������������������������è•�蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾è–�藉薺è—�è–¹è—�è—•è—�藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿è™�乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉èœ�蛹蜊蜴蜿蜷蜻蜥蜩蜚è� è�Ÿè�¸è�Œè�Žè�´è�—è�¨è�®è�™ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"���������������������������������鬄鬅鬈鬉鬋鬌é¬�鬎é¬�鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪魫魬魭魮魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋é®�é®�é®�鮔鮚é®�鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿é¯�鯇鯈鯎é¯�鯗鯘é¯�鯟鯥鯧鯪鯫鯯鯳鯷鯸����������������������������������è�“è�£è�ªè …螢螟螂螯蟋螽蟀èŸ�雖螫蟄螳蟇蟆螻蟯蟲蟠è �è �蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫è¢�衾袞衵衽袵衲袂袗袒袮袙袢è¢�袤袰袿袱裃裄裔裘裙è£�裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫è¥�襄褻褶褸襌è¤�襠襞�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"���������������������������������鯹鯺鯽鯿鰀鰂鰋é°�鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦鰧鰨鰩鰪鰱鰵鰶鰷鰽é±�鱃鱄鱅鱉鱊鱎é±�é±�鱓鱔鱖鱘鱛é±�鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜é´�鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻����������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜è§�觧觴觸訃訖è¨�訌訛è¨�訥訶è©�詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄è«�諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖è¬�謗謠謳鞫謦謫謾謨è­�è­Œè­�譎證譖譛譚譫�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"���������������������������������鵼鵾鶃鶄鶆鶊é¶�鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎é¸�鸑鸒鸕鸖鸙鸜é¸�鹺鹻鹼麀麂麃麄麅麇麎éº�麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵����������������������������������譟譬譯譴譽讀讌讎讒讓讖讙讚谺è±�谿豈豌豎è±�豕豢豬豸豺貂貉貅貊è²�貎貔豼貘æˆ�貭貪貽貲貳貮貶賈è³�賤賣賚賽賺賻贄贅贊贇è´�è´�è´�齎贓è³�贔贖赧赭赱赳è¶�趙跂趾趺è·�跚跖跌跛跋跪跫跟跣跼踈踉跿è¸�踞è¸�踟蹂踵踰踴蹊�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"���������������������������������黸黿鼂鼃鼉é¼�é¼�鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿é½�齃齄齅齆齇齓齕齖齗齘齚é½�齞齨齩齭齮齯齰齱齳齵齺齽é¾�é¾�龑龒龔龖龗龞龡龢龣龥�������������������������������������������������������������蹇蹉蹌è¹�蹈蹙蹤蹠踪蹣蹕蹶蹲蹼èº�躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡é€�逞逖逋逧逶逵逹迸�\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é��é��é�‘é�’逎é�‰é€¾é�–é�˜é�žé�¨é�¯é�¶éš¨é�²é‚‚é�½é‚�邀邊邉é‚�邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀é‡�釉釋é‡�釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋é‰�銜銖銓銛鉚é‹�銹銷鋩éŒ�鋺é�„錮�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������錙錢錚錣錺錵錻é�œé� é�¼é�®é�–鎰鎬鎭鎔鎹é�–é�—é�¨é�¥é�˜é�ƒé��é��é�ˆé�¤é�šé�”é�“é�ƒé�‡é��é�¶é�«é�µé�¡é�ºé‘�鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾é’�鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃é—�闌闕闔闖關闡闥闢阡阨阮阯陂陌é™�陋陷陜陞�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é™�陟陦陲陬éš�隘隕隗險隧隱隲隰隴隶隸隹雎雋雉é›�è¥�雜éœ�雕雹霄霆霈霓霎霑éœ�霖霙霤霪霰霹霽霾é�„é�†é�ˆé�‚é�‰é�œé� é�¤é�¦é�¨å‹’é�«é�±é�¹éž…é�¼éž�é�ºéž†éž‹éž�éž�鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭é½�韲竟韶韵é �頌頸頤頡頷頽顆é¡�顋顫顯顰�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡é¤�餞餤餠餬餮餽餾饂饉饅é¥�饋饑饒饌饕馗馘馥馭馮馼駟駛é§�駘駑駭駮駱駲駻駸é¨�é¨�騅駢騙騫騷驅驂驀驃騾驕é©�驛驗驟驢驥驤驩驫驪骭骰骼髀é«�髑髓體髞髟髢髣髦髯髫髮髴髱髷�\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃é­�é­�魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆é¯�鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒éµ�鴿鴾鵆鵈�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"���������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ����������'"���炻仼僴凬匇匤﨎咊å�™ï¨�ï¨�增寬峵嵓﨑德悅愠敎�晥晴朗æ �﨓﨔橫櫢淸淲瀨凞猪ç”�皂皞益礰礼神祥福竧靖ï¨�綠緖羽è�¢ï¨Ÿè–°ï¨ ï¨¡è ‡ï¨¢è­¿è³´èµ¶ï¨£ï¨¤ï¨¥éƒžï¨¦é„•﨧﨨閒隆����������������������������������éµ�鵞鵤鵑éµ�鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄é·�鶻鶸鶺鷆é·�鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽éº�麈麋麌麒麕麑éº�麥麩麸麪麭é�¡é»Œé»Žé»�é»�黔黜點é»�黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"���������������������������������﨩霻�é�‘飯飼館馞髙魲鶴黑������������������������������������������������������é���������������������������������������������������������������堯槇é�™ç‘¤å‡œç†™ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"���������������������������������î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½î€€î€�î€�î€�î€�î€�î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî���\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"���������������������������������î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‘€î‘�î‘�î‘�î‘�î‘�����������������������������������î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚�î‚�î‚�î‚�î‚��\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"���������������������������������î’�î’�î’Žî’�î’�î’�î“�����������������������������������îƒ�îƒ�îƒ�îƒ�îƒ�î„�î„�î„�î„��\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"���������������������������������î“�î“�î“�î“�î”�î”�î”�î”�î”�����������������������������������î„�î…�î…�î…Žî…�î…�î…��\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"���������������������������������î•�î•�î•�î•�î•�î–�����������������������������������î†�î†�î†�î†�î†�î‡�î‡�î‡�î‡��\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"���������������������������������î–�î–Žî–�î–�î–�î—�î—�î—Žî—�î—�î—�����������������������������������î‡�îˆ�îˆ�îˆ�îˆ�îˆ��\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"���������������������������������î˜�î˜�î˜�î˜�î˜�����������������������������������î‰�î‰�î‰�î‰�î‰�îŠ�îŠ�îŠ�îŠ��\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"���������������������������������î™�î™�î™�î™�î™�îš�îš�îš�îš�����������������������������������îŠ�î‹�î‹�î‹�î‹�î‹��\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"���������������������������������îš�î›�î›�î›�î›�î›�����������������������������������îŒ�îŒ�îŒ�îŒ�îŒ�î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî���\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\tD[254] = \"���������������������������������îœ�îœ�îœ�îœ�îœ�î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—����������������������������������î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€îŽ�îŽ�îŽ�îŽ�îŽ��\".split(\"\");\n\t\tfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20936] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€ï£����������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� ã€�。・ˉˇ¨〃々―~�…‘’“â€�〔〕〈〉《》「ã€�『ã€�〖〗ã€�】±×÷∶∧∨∑âˆ�∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽âˆ�≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○â—�◎◇◆□■△▲※→â†�↑↓〓�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������⒈⒉⒊⒋⒌â’�â’Žâ’�â’�⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀â’�⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ï¼�"#¥%&'()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz{|ï½� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�­ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω���������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������Ä�áǎàēéěèīíÇ�ìÅ�óǒòūúǔùǖǘǚǜüê����������ㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������─â”�│┃┄┅┆┇┈┉┊┋┌â”�┎â”�â”�┑┒┓└┕┖┗┘┙┚┛├â”�┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀â•�╂╃╄╅╆╇╈╉╊╋����������������\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������啊阿埃挨哎唉哀皑癌蔼矮艾ç¢�爱隘éž�氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭æ�Œæ‰’å�­å�§ç¬†å…«ç–¤å·´æ‹”è·‹é�¶æŠŠè€™å��霸罢爸白æŸ�百摆佰败拜稗斑ç�­æ�¬æ‰³èˆ¬é¢�æ�¿ç‰ˆæ‰®æ‹Œä¼´ç“£å�ŠåŠžç»Šé‚¦å¸®æ¢†æ¦œè†€ç»‘æ£’ç£…èšŒé•‘å‚�谤苞胞包褒剥�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������薄雹ä¿�堡饱å®�抱报暴豹é²�爆æ�¯ç¢‘悲å�‘北辈背è´�é’¡å€�狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖å¸�庇痹闭æ•�弊必辟å£�臂é�¿é™›éž­è¾¹ç¼–è´¬æ‰�便å�˜å�žè¾¨è¾©è¾«é��标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������病并玻è� æ’­æ‹¨é’µæ³¢å�šå‹ƒæ��铂箔伯帛舶脖膊渤泊驳æ�•å�œå“ºè¡¥åŸ ä¸�布步簿部怖擦猜è£�æ��æ‰�è´¢ç�¬è¸©é‡‡å½©è�œè”¡é¤�å�‚蚕残惭惨ç�¿è‹�舱仓沧è—�æ“�糙槽曹è�‰åŽ•ç­–ä¾§å†Œæµ‹å±‚è¹­æ�’å�‰èŒ¬èŒ¶æŸ¥ç¢´æ�½å¯Ÿå²”差诧拆柴豺æ�€æŽºè�‰é¦‹è°—缠铲产é˜�颤昌猖�\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������场å°�常长å�¿è‚ åŽ‚æ•žç•…å”±å€¡è¶…æŠ„é’žæœ�嘲潮巢å�µç‚’车扯撤掣彻澈郴臣辰尘晨忱沉陈è¶�衬撑称城橙æˆ�呈乘程惩澄诚承逞骋秤å�ƒç—´æŒ�匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠æ„�筹仇绸瞅丑臭åˆ�出橱厨躇锄é›�æ»�除楚�\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������础储矗æ��触处æ�£å·�穿椽传船喘串疮窗幢床闯创å�¹ç‚Šæ�¶é”¤åž‚春椿醇唇淳纯蠢戳绰疵茨ç£�雌辞慈瓷è¯�此刺èµ�次è�ªè‘±å›±åŒ†ä»Žä¸›å‡‘粗醋簇促蹿篡窜摧崔催脆ç˜�粹淬翠æ�‘存寸磋撮æ�“措挫错æ�­è¾¾ç­”瘩打大呆歹傣戴带殆代贷袋待逮�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������怠耽担丹å�•郸掸胆旦氮但惮淡诞弹蛋当挡党è�¡æ¡£åˆ€æ�£è¹ˆå€’岛祷导到稻悼é�“盗德得的蹬ç�¯ç™»ç­‰çžªå‡³é‚“堤低滴迪敌笛狄涤翟嫡抵底地蒂第å¸�弟递缔颠掂滇碘点典é�›åž«ç”µä½ƒç”¸åº—惦奠淀殿碉å�¼é›•凋åˆ�掉å�Šé’“调跌爹碟è�¶è¿­è°�å� ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ä¸�盯å�®é’‰é¡¶é¼Žé”­å®šè®¢ä¸¢ä¸œå†¬è‘£æ‡‚动栋侗æ�«å†»æ´žå…œæŠ–斗陡豆逗痘都ç�£æ¯’犊独读堵ç�¹èµŒæ�œé•€è‚šåº¦æ¸¡å¦’端短锻段断缎堆兑队对墩å�¨è¹²æ•¦é¡¿å›¤é’�盾é��掇哆多夺垛躲朵跺舵å‰�惰堕蛾峨鹅俄é¢�讹娥æ�¶åŽ„æ‰¼é��鄂饿æ�©è€Œå„¿è€³å°”饵洱二�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贰å�‘罚ç­�ä¼�ä¹�阀法ç��藩帆番翻樊矾钒ç¹�凡烦å��返范贩犯饭泛å�ŠèŠ³æ–¹è‚ªæˆ¿é˜²å¦¨ä»¿è®¿çººæ”¾è�²é�žå•¡é£žè‚¥åŒªè¯½å� è‚ºåºŸæ²¸è´¹èŠ¬é…šå�©æ°›åˆ†çº·å�Ÿç„šæ±¾ç²‰å¥‹ä»½å¿¿æ„¤ç²ªä¸°å°�枫蜂峰锋风疯烽逢冯ç¼�讽奉凤佛å�¦å¤«æ•·è‚¤å­µæ‰¶æ‹‚è¾�幅氟符ä¼�俘æœ��\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������浮涪ç¦�袱弗甫抚辅俯釜斧脯腑府è…�赴副覆赋å¤�傅付阜父腹负富讣附妇缚å’�噶嘎该改概钙盖溉干甘æ�†æŸ‘ç«¿è‚�赶感秆敢赣冈刚钢缸肛纲岗港æ� ç¯™çš‹é«˜è†�羔糕æ�žé•�稿告哥歌æ��戈鸽胳疙割é�©è‘›æ ¼è›¤é˜�隔铬个å�„给根跟耕更庚羹�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������埂耿梗工攻功æ�­é¾šä¾›èº¬å…¬å®«å¼“巩汞拱贡共钩勾沟苟狗垢构购够辜è�‡å’•ç®�估沽孤姑鼓å�¤è›Šéª¨è°·è‚¡æ•…顾固雇刮瓜å‰�寡挂褂乖æ‹�怪棺关官冠观管馆ç½�惯ç�Œè´¯å…‰å¹¿é€›ç‘°è§„圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚æ£�锅郭国果裹过哈�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������骸孩海氦亥害骇酣憨邯韩å�«æ¶µå¯’函喊罕翰撼æ��旱憾æ‚�焊汗汉夯æ�­èˆªå£•嚎豪毫éƒ�好耗å�·æµ©å‘µå–�è�·è��核禾和何å�ˆç›’貉阂河涸赫è¤�鹤贺嘿黑痕很狠æ�¨å“¼äº¨æ¨ªè¡¡æ�’轰哄烘虹鸿洪å®�弘红喉侯猴å�¼åŽšå€™å�Žå‘¼ä¹Žå¿½ç‘šå£¶è‘«èƒ¡è�´ç‹�糊湖�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������弧虎唬护互沪户花哗å�ŽçŒ¾æ»‘画划化è¯�æ§�徊怀淮å��欢环桓还缓æ�¢æ‚£å”¤ç—ªè±¢ç„•涣宦幻è�’慌黄磺è�—簧皇凰惶煌晃幌æ��è°Žç�°æŒ¥è¾‰å¾½æ�¢è›”回æ¯�悔慧å�‰æƒ æ™¦è´¿ç§½ä¼šçƒ©æ±‡è®³è¯²ç»˜è�¤æ˜�婚魂浑混è±�活伙ç�«èŽ·æˆ–æƒ‘éœ�货祸击圾基机畸稽积箕�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������肌饥迹激讥鸡姬绩缉å�‰æž�棘辑ç±�集å�Šæ€¥ç–¾æ±²å�³å«‰çº§æŒ¤å‡ è„Šå·±è“ŸæŠ€å†€å­£ä¼Žç¥­å‰‚悸济寄寂计记既忌际妓继纪嘉枷夹佳家加è�šé¢Šè´¾ç”²é’¾å�‡ç¨¼ä»·æž¶é©¾å«�歼监å�šå°–笺间煎兼肩艰奸缄茧检柬碱硷拣æ�¡ç®€ä¿­å‰ªå‡�è��槛鉴践贱è§�键箭件�\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�¥èˆ°å‰‘饯æ¸�溅涧建僵姜将浆江疆蒋桨奖讲匠酱é™�蕉椒ç¤�焦胶交郊浇骄娇嚼æ�…铰矫侥脚狡角饺缴绞剿教酵轿较å�«çª–æ�­æŽ¥çš†ç§¸è¡—阶截劫节桔æ�°æ�·ç�«ç«­æ´�结解å§�戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进é�³æ™‹ç¦�近烬浸�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������尽劲è�†å…¢èŒŽç�›æ™¶é²¸äº¬æƒŠç²¾ç²³ç»�井警景颈é�™å¢ƒæ•¬é•œå¾„ç—‰é�–竟竞净炯窘æ�ªç©¶çº çŽ–éŸ­ä¹…ç�¸ä¹�酒厩救旧臼舅咎就疚鞠拘狙疽居驹è�Šå±€å’€çŸ©ä¸¾æ²®è�šæ‹’æ�®å·¨å…·è·�踞锯俱å�¥æƒ§ç‚¬å‰§æ��鹃娟倦眷å�·ç»¢æ’…攫抉掘倔爵觉决诀ç»�å�‡è�Œé’§å†›å�›å³»ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������俊竣浚郡éª�喀咖å�¡å’¯å¼€æ�©æ¥·å‡¯æ…¨åˆŠå ªå‹˜å�Žç �看康慷糠扛抗亢炕考拷烤é� å�·è‹›æŸ¯æ£µç£•颗科壳咳å�¯æ¸´å…‹åˆ»å®¢è¯¾è‚¯å•ƒåž¦æ�³å�‘å�­ç©ºæ��孔控抠å�£æ‰£å¯‡æž¯å“­çªŸè‹¦é…·åº“裤夸垮挎跨胯å�—筷侩快宽款匡ç­�狂框矿眶旷况äº�盔岿窥葵奎é­�傀�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������馈愧溃å�¤æ˜†æ�†å›°æ‹¬æ‰©å»“阔垃拉喇蜡腊辣啦莱æ�¥èµ–è“�婪æ �拦篮阑兰澜谰æ�½è§ˆæ‡’缆烂滥ç�…榔狼廊郎朗浪æ�žåŠ³ç‰¢è€�佬姥酪烙æ¶�å‹’ä¹�雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨çŠ�黎篱狸离漓ç�†æ�Žé‡Œé²¤ç¤¼èމè�”å��栗丽厉励砾历利傈例ä¿��\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢立粒沥隶力璃哩俩è�”莲连镰廉怜涟帘敛脸链æ�‹ç‚¼ç»ƒç²®å‡‰æ¢�粱良两辆é‡�晾亮谅撩è�Šåƒšç–—燎寥辽潦了撂镣廖料列裂烈劣猎ç�³æž—磷霖临邻鳞淋凛èµ�å��拎玲è�±é›¶é¾„铃伶羚凌ç�µé™µå²­é¢†å�¦ä»¤æºœç�‰æ¦´ç¡«é¦�留刘瘤æµ�柳六龙è�‹å’™ç¬¼çª¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������隆垄拢陇楼娄æ�‚篓æ¼�陋芦å�¢é¢…åº�炉掳å�¤è™�é²�麓碌露路赂鹿潞禄录陆戮驴å�•é“�侣旅履屡缕虑氯律率滤绿峦挛孪滦å�µä¹±æŽ ç•¥æŠ¡è½®ä¼¦ä»‘沦纶论è��螺罗逻锣箩骡裸è�½æ´›éª†ç»œå¦ˆéº»çŽ›ç �蚂马骂嘛å�—埋买麦å�–迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������谩芒茫盲氓忙莽猫茅锚毛矛铆å�¯èŒ‚冒帽貌贸么玫枚梅酶霉煤没眉媒é•�æ¯�美昧å¯�妹媚门闷们è�Œè’™æª¬ç›Ÿé”°çŒ›æ¢¦å­Ÿçœ¯é†šé�¡ç³œè¿·è°œå¼¥ç±³ç§˜è§…泌蜜密幂棉眠绵冕å…�勉娩缅é�¢è‹—æ��çž„è—�秒渺庙妙蔑ç�­æ°‘抿皿æ•�悯闽明螟鸣铭å��命谬摸�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟æŸ�拇牡亩姆æ¯�墓暮幕募慕木目ç�¦ç‰§ç©†æ‹¿å“ªå‘�钠那娜纳氖乃奶è€�奈å�—男难囊挠脑æ�¼é—¹æ·–å‘¢é¦�内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵æ�»å¿µå¨˜é…¿é¸Ÿå°¿æ��è�‚孽啮镊é•�涅您柠狞å‡�å®��\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������拧泞牛扭钮纽脓浓农弄奴努怒女暖è™�疟挪懦糯诺哦欧鸥殴藕呕å�¶æ²¤å•ªè¶´çˆ¬å¸•怕ç�¶æ‹�排牌徘湃派攀潘盘ç£�盼畔判å�›ä¹“庞æ—�耪胖抛咆刨炮è¢�跑泡呸胚培裴赔陪é…�佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋é¹�æ�§ç¢°å�¯ç ’霹批披劈ç�µæ¯—�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������啤脾疲皮匹痞僻å±�譬篇å��片骗飘漂瓢票撇瞥拼频贫å“�è�˜ä¹’å�ªè‹¹è��平凭瓶评å±�å�¡æ³¼é¢‡å©†ç ´é­„迫粕剖扑铺仆莆葡è�©è’²åŸ”朴圃普浦谱æ›�瀑期欺栖戚妻七凄漆柒æ²�其棋奇歧畦崎è„�é½�旗祈ç¥�骑起岂乞ä¼�å�¯å¥‘砌器气迄弃汽泣讫æŽ��\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æ�°æ´½ç‰µæ‰¦é’Žé“…å�ƒè¿�签仟谦乾黔钱钳å‰�潜é�£æµ…谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭ä¿�çª�切茄且怯窃钦侵亲秦ç�´å‹¤èŠ¹æ“’ç¦½å¯�æ²�é�’轻氢倾å�¿æ¸…擎晴氰情顷请庆ç�¼ç©·ç§‹ä¸˜é‚±ç�ƒæ±‚囚酋泅趋区蛆曲躯屈驱渠�\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�–娶龋趣去圈颧æ�ƒé†›æ³‰å…¨ç—Šæ‹³çŠ¬åˆ¸åŠ�缺炔瘸å�´é¹Šæ¦·ç¡®é›€è£™ç¾¤ç„¶ç‡ƒå†‰æŸ“瓤壤攘嚷让饶扰绕惹热壬ä»�人å¿�韧任认刃妊纫扔ä»�日戎茸蓉è�£èž�熔溶容绒冗æ�‰æŸ”肉茹蠕儒孺如辱乳æ±�入褥软阮蕊瑞é”�闰润若弱撒洒è�¨è…®é³ƒå¡žèµ›ä¸‰å���\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伞散桑嗓丧æ�”骚扫嫂瑟色涩森僧莎砂æ�€åˆ¹æ²™çº±å‚»å•¥ç…žç­›æ™’ç�Šè‹«æ�‰å±±åˆ ç…½è¡«é—ªé™•擅赡膳善汕扇缮墒伤商èµ�晌上尚裳梢æ�Žç¨�烧èŠ�勺韶少哨邵ç»�奢赊蛇舌èˆ�赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲å�‡ç»³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������çœ�盛剩胜圣师失狮施湿诗尸虱å��石拾时什食蚀实识å�²çŸ¢ä½¿å±Žé©¶å§‹å¼�示士世柿事拭誓é€�势是嗜噬适仕ä¾�释饰æ°�市æ�ƒå®¤è§†è¯•收手首守寿授售å�—瘦兽蔬枢梳殊抒输å�”舒淑ç–�书赎孰熟薯暑曙署蜀é»�鼠属术述树æ�Ÿæˆ�竖墅庶数漱�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æ�•刷è€�摔衰甩帅栓拴霜å�Œçˆ½è°�æ°´ç�¡ç¨Žå�®çž¬é¡ºèˆœè¯´ç¡•朔çƒ�斯撕嘶æ€�ç§�å�¸ä¸�死肆寺嗣四伺似饲巳æ�¾è€¸æ€‚颂é€�宋讼诵æ�œè‰˜æ“žå—½è‹�酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋éš�绥髓碎å²�ç©—é�‚隧祟孙æ�Ÿç¬‹è“‘梭唆缩ç��ç´¢é”�所塌他它她塔�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç�­æŒžè¹‹è¸�胎苔抬å�°æ³°é…žå¤ªæ€�æ±°å��摊贪瘫滩å�›æª€ç—°æ½­è°­è°ˆå�¦æ¯¯è¢’碳探å�¹ç‚­æ±¤å¡˜æ�ªå ‚棠膛å”�糖倘躺淌趟烫æŽ�涛滔绦è�„桃逃淘陶讨套特藤腾疼誊梯剔踢锑æ��题蹄啼体替åš�惕涕剃屉天添填田甜æ�¬èˆ”腆挑æ�¡è¿¢çœºè·³è´´é“�帖厅å�¬çƒƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汀廷å�œäº­åº­æŒºè‰‡é€šæ¡�酮瞳å�Œé“œå½¤ç«¥æ¡¶æ�…筒统痛å�·æŠ•头é€�凸秃çª�图徒途涂屠土å��å…”æ¹�团推颓腿蜕褪退å�žå±¯è‡€æ‹–托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄å¨��\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å·�å¾®å�±éŸ¦è¿�桅围唯惟为æ½�维苇è�Žå§”伟伪尾纬未蔚味ç•�胃喂é­�ä½�渭谓尉慰å�«ç˜Ÿæ¸©èšŠæ–‡é—»çº¹å�»ç¨³ç´Šé—®å—¡ç¿�ç“®æŒ�蜗涡çª�我斡å�§æ�¡æ²ƒå·«å‘œé’¨ä¹Œæ±¡è¯¬å±‹æ— èŠœæ¢§å�¾å�´æ¯‹æ­¦äº”æ�‚å�ˆèˆžä¼�ä¾®å�žæˆŠé›¾æ™¤ç‰©å‹¿åŠ¡æ‚Ÿè¯¯æ˜”ç†™æž�西硒矽晰嘻å�¸é”¡ç‰ºï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������稀æ�¯å¸Œæ‚‰è†�夕惜熄烯溪æ±�犀檄袭席习媳喜铣洗系隙æˆ�细瞎虾匣霞辖暇峡侠狭下厦å¤�å�“掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷é™�线相厢镶香箱襄湘乡翔祥详想å“�享项巷橡åƒ�å�‘象è�§ç¡�霄削哮嚣销消宵淆晓�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å°�å­�校肖啸笑效楔些歇è�Žéž‹å��挟æ�ºé‚ªæ–œèƒ�è°�写械å�¸èŸ¹æ‡ˆæ³„泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸æ��性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须å¾�许蓄酗å�™æ—­åº�畜æ�¤çµ®å©¿ç»ªç»­è½©å–§å®£æ‚¬æ—‹çŽ„ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������选癣眩绚é�´è–›å­¦ç©´é›ªè¡€å‹‹ç†�循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹ç›�严研蜒岩延言颜阎炎沿奄掩眼è¡�演艳堰燕厌砚é›�å”�彦焰宴谚验殃央鸯秧æ�¨æ‰¬ä½¯ç–¡ç¾Šæ´‹é˜³æ°§ä»°ç—’养样漾邀腰妖瑶�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摇尧é�¥çª‘谣姚咬舀è�¯è¦�耀椰噎耶爷野冶也页掖业å�¶æ›³è…‹å¤œæ¶²ä¸€å£¹åŒ»æ�–铱ä¾�伊衣é¢�夷é�—移仪胰疑沂宜姨å½�椅èš�倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔æ„�毅忆义益溢诣议谊译异翼翌绎茵è�«å› æ®·éŸ³é˜´å§»å�Ÿé“¶æ·«å¯…饮尹引éš��\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�°è‹±æ¨±å©´é¹°åº”缨莹è�¤è�¥è�§è�‡è¿Žèµ¢ç›ˆå½±é¢–硬映哟拥佣臃痈庸é›�踊蛹å’�泳涌永æ�¿å‹‡ç”¨å¹½ä¼˜æ‚ å¿§å°¤ç”±é‚®é“€çŠ¹æ²¹æ¸¸é…‰æœ‰å�‹å�³ä½‘釉诱å�ˆå¹¼è¿‚淤于盂榆虞愚舆余俞逾鱼愉æ¸�渔隅予娱雨与屿禹宇语羽玉域芋éƒ�å��é�‡å–»å³ªå¾¡æ„ˆæ¬²ç‹±è‚²èª‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������浴寓裕预豫驭鸳渊冤元垣è¢�原æ�´è¾•园员圆猿æº�缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨å…�è¿�è•´é…�晕韵孕åŒ�ç ¸æ�‚栽哉ç�¾å®°è½½å†�在咱攒暂赞赃è„�葬é�­ç³Ÿå‡¿è—»æž£æ—©æ¾¡èš¤èº�噪造皂ç�¶ç‡¥è´£æ‹©åˆ™æ³½è´¼æ€Žå¢žæ†Žæ›¾èµ æ‰Žå–³æ¸£æœ­è½§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������铡闸眨栅榨咋ä¹�炸诈摘斋宅窄债寨瞻毡詹粘沾ç›�斩辗崭展蘸栈å� æˆ˜ç«™æ¹›ç»½æ¨Ÿç« å½°æ¼³å¼ æŽŒæ¶¨æ�–丈å¸�账仗胀瘴障招昭找沼赵照罩兆肇å�¬é�®æŠ˜å“²è›°è¾™è€…锗蔗这浙ç��斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣ç��å¾�狰争怔整拯正政�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帧症郑è¯�èŠ�æž�支å�±èœ˜çŸ¥è‚¢è„‚æ±�之织è�Œç›´æ¤�殖执值侄å�€æŒ‡æ­¢è¶¾å�ªæ—¨çº¸å¿—挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终ç§�è‚¿é‡�仲众舟周州洲诌粥轴肘帚咒皱宙昼骤ç� æ ªè››æœ±çŒªè¯¸è¯›é€�竹烛煮拄瞩嘱主著柱助蛀贮铸筑�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ä½�注ç¥�驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘å� ç¼€è°†å‡†æ�‰æ‹™å�“桌ç�¢èŒ�酌啄ç�€ç�¼æµŠå…¹å’¨èµ„姿滋淄孜紫仔籽滓å­�自æ¸�字鬃棕踪宗综总纵邹走å¥�æ��ç§Ÿè¶³å�’æ—�祖诅阻组钻纂嘴醉最罪尊é�µæ˜¨å·¦ä½�柞å�šä½œå��座������\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������äº�丌兀ä¸�廿å�…丕亘丞鬲孬噩丨禺丿匕乇夭爻å�®æ°�囟胤馗毓ç�¾é¼—丶亟é¼�乜乩亓芈孛啬å˜�仄åŽ�åŽ�厣厥厮é�¥èµ�匚å�µåŒ¦åŒ®åŒ¾èµœå�¦å�£åˆ‚刈刎刭刳刿剀剌剞剡剜蒯剽劂åŠ�åŠ�劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚ä½��\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������佟佗伲伽佶佴侑侉侃ä¾�佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩å�Œä¿³å€¬å€�倮倭俾倜倌倥倨å�¾å�ƒå�•å�ˆå�Žå�¬å�»å‚¥å‚§å‚©å‚ºåƒ–儆僭僬僦僮儇儋ä»�氽佘佥俎龠汆籴兮巽黉馘å†�夔勹åŒ�訇åŒ�凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������凇冖冢冥讠讦讧讪讴讵讷诂诃诋è¯�诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌è°�谑谒谔谕谖谙谛谘è°�谟谠谡谥谧谪谫谮谯谲谳谵谶å�©å�ºé˜�阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈éš�éš—éš°é‚—é‚›é‚�邙邬邡邴邳邶邺�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸邰éƒ�郅邾éƒ�郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆åˆ�奂劢劬劭劾哿å‹�å‹–å‹°å�Ÿç‡®çŸ�廴凵凼鬯厶å¼�畚巯å�Œåž©åž¡å¡¾å¢¼å£…壑圩圬圪圳圹圮圯å�œåœ»å�‚å�©åž…å�«åž†å�¼å�»å�¨å�­å�¶å�³åž­åž¤åžŒåž²åŸ�垧垴垓垠埕埘埚埙埒垸埴埯埸埤åŸ��\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������堋å �埽埭堀堞堙塄堠塥塬å¢�墉墚墀馨鼙懿艹艽艿èŠ�芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌è‹�芩芴芡芪芟苄苎芤苡茉苷苤èŒ�茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜è�‘è�›è�œèŒˆèŽ’èŒ¼èŒ´èŒ±èŽ›è�žèŒ¯è��è�‡è�ƒè�Ÿè�€èŒ—è� èŒ­èŒºèŒ³è�¦è�¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è�¨èŒ›è�©è�¬è�ªè�­è�®èްè�¸èŽ³èŽ´èŽ èŽªèŽ“èŽœèŽ…è�¼èŽ¶èŽ©è�½èޏè�»èŽ˜èŽžèŽ¨èŽºèŽ¼è��è��è�¥è�˜å ‡è�˜è�‹è��è�½è�–è�œè�¸è�‘è�†è�”è�Ÿè��è�ƒè�¸è�¹è�ªè�…è�€è�¦è�°è�¡è‘œè‘‘葚葙葳蒇蒈葺蒉葸è�¼è‘†è‘©è‘¶è’Œè’Žè�±è‘­è“�è“�è“�蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌ç”�蔸蓰蔹蔟蔺�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇è–�蕹薮薜薅薹薷薰藓è—�藜藿蘧蘅蘩蘖蘼廾弈夼å¥�耷奕奚奘åŒ�尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹æ�‹æ�ƒæŽ­æ�¶æ�±æ�ºæŽŽæŽ´æ�­æŽ¬æŽŠæ�©æŽ®æŽ¼æ�²æ�¸æ� æ�¿æ�„æ�žæ�Žæ‘’æ�†æŽ¾æ‘…æ‘�æ�‹æ�›æ� æ�Œæ�¦æ�¡æ‘žæ’„摭撖�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摺撷撸撙撺擀æ“�擗擤擢攉攥攮弋忒甙弑å�Ÿå�±å�½å�©å�¨å�»å�’å�–å�†å‘‹å‘’呓呔呖呃å�¡å‘—å‘™å�£å�²å’‚咔呷呱呤咚咛咄呶呦å’�å“�咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤å“�å“�哞唛哧唠哽唔哳唢唣å”�唑唧唪啧å–�喵啉啭å•�啕唿å•�唼�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������唷啖啵啶啷唳唰啜喋嗒喃喱喹喈å–�喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦å—�嗄嗯嗥嗲嗳嗌å—�嗨嗵嗤辔嘞嘈嘌å˜�嘤嘣嗾嘀嘧嘭噘嘹噗嘬å™�噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗å›�囡囵囫囹囿圄圊圉圜å¸�帙帔帑帱帻帼�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帷幄幔幛幞幡岌屺å²�å²�岖岈岘岙岑岚岜岵岢岽岬岫岱岣å³�岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯åµ�嵫嵋嵊嵩嵴嶂嶙å¶�豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃ç‹�狎ç‹�狒狨狯狩狲狴狷çŒ�狳猃狺�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������狻猗猓猡猊猞çŒ�猕猢猹猥猬猸猱ç��ç��ç�—ç� ç�¬ç�¯ç�¾èˆ›å¤¥é£§å¤¤å¤‚饣饧饨饩饪饫饬饴饷饽馀馄馇馊é¦�é¦�馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖å¿�怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛æ€�æ€�怩怫怊怿怡æ�¸æ�¹æ�»æ�ºæ�‚�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æ�ªæ�½æ‚–悚悭æ‚�悃悒悌悛惬悻悱æƒ�惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵å¿�隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌é˜�é˜�阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅æ²�沔沌汨汩汴汶沆沩æ³�泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������洹洧洌浃浈洇洄洙洎洫æµ�洮洵洚æµ�浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦æ·�淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴æ»�æº�滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉æ¾�澌潸潲潼潺濑�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵ç��ç�žå®€å®„宕宓宥宸甯骞æ�´å¯¤å¯®è¤°å¯°è¹‡è¬‡è¾¶è¿“迕迥迮迤迩迦迳迨逅逄逋逦逑é€�逖逡逵逶逭逯é�„é�‘é�’é��é�¨é�˜é�¢é�›æš¹é�´é�½é‚‚邈邃邋å½�彗彖彘尻咫å±�屙孱屣屦羼弪弩弭艴弼鬻屮å¦�妃å¦�妩妪妣�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������妗姊妫妞妤姒妲妯姗妾娅娆å§�娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀éª�骅骈骊éª�骒骓骖骘骛骜éª�骟骠骢骣骥骧纟纡纣纥纨纩�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������纭纰纾绀ç»�绂绉绋绌ç»�绔绗绛绠绡绨绫绮绯绱绲ç¼�绶绺绻绾ç¼�缂缃缇缈缋缌ç¼�缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟ç��ç�‚ç�‘玷玳ç�€ç�‰ç�ˆç�¥ç�™é¡¼ç�Šç�©ç�§ç�žçŽºç�²ç��ç�ªç‘›ç�¦ç�¥ç�¨ç�°ç�®ç�¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç�›ç�šç‘�瑜瑗瑕瑙瑷瑭瑾璜璎璀ç’�璇璋璞璨璩ç’�璧瓒璺韪韫韬æ�Œæ�“æ�žæ�ˆæ�©æž¥æž‡æ�ªæ�³æž˜æž§æ�µæž¨æžžæž­æž‹æ�·æ�¼æŸ°æ ‰æŸ˜æ ŠæŸ©æž°æ ŒæŸ™æžµæŸšæž³æŸ�栀柃枸柢栎æŸ�柽栲栳桠桡桎桢桄桤梃æ �桕桦æ¡�桧桀栾桊桉栩梵æ¢�桴桷梓桫棂楮棼椟椠棹�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椤棰椋æ¤�楗棣æ¤�楱椹楠楂æ¥�榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱æ§�槊槟榕槠æ¦�槿樯槭樗樘橥槲橄樾檠æ©�橛樵檎橹樽樨橘橼檑æª�檩檗檫猷ç�’æ®�殂殇殄殒殓æ®�殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾è¾�辂辄辇辋�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è¾�辎è¾�辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿ç”�甑甓攴旮旯旰昊昙æ�²æ˜ƒæ˜•昀炅曷æ˜�昴昱昶昵耆晟晔æ™�æ™�晖晡晗晷暄暌暧æš�暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇èµ�赕赙觇觊觋觌觎è§�è§�觑牮犟ç‰�牦牯牾牿犄犋çŠ�çŠ�犒挈挲掰�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æ�¿æ“˜è€„毪毳毽毵毹氅氇氆æ°�氕氘氙氚氡氩氤氪氲攵敕敫ç‰�牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙èƒ�胗æœ�èƒ�胫胱胴胭è„�脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧å¡�媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è‡�膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳æ–�齑斓於旆旄旃旌旎旒旖炀炜炖ç‚�炻烀炷炫炱烨烊ç„�焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹çˆ�爨ç�¬ç„˜ç…¦ç†¹æˆ¾æˆ½æ‰ƒæ‰ˆæ‰‰ç¤»ç¥€ç¥†ç¥‰ç¥›ç¥œç¥“祚祢祗祠祯祧祺禅禊禚禧禳忑å¿��\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������怼æ��æ�šæ�§æ��æ�™æ�£æ‚«æ„†æ„�æ…�憩æ†�懋懑戆肀è�¿æ²“泶淼矶矸砀砉砗砘砑斫砭砜ç �砹砺砻砟砼砥砬砣砩硎硭硖硗砦ç¡�硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄çœ�盹眇眈眚眢眙眭眦眵眸ç��ç�‘ç�‡ç�ƒç�šç�¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç�¢ç�¥ç�¿çž�ç�½çž€çžŒçž‘瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹ç¾�ç½¾ç›�盥蠲钅钆钇钋钊钌é’�é’�é’�钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌é“�铎é“�铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊é”�锎é”�锒锓锔锕锖锘锛é”�锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎é•�镒镓镔镖镗镘镙镛镞镟é•�镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������稹稷穑é»�馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾é¹�鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠ç–�疬疣疳疴疸痄疱疰痃痂痖ç—�痣痨痦痤痫痧瘃痱痼痿ç˜�瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳ç™�癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶è¥�襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵è�ƒè�†è��è�’è�©è�±è¦ƒé¡¸é¢€é¢ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������颉颌é¢�é¢�颔颚颛颞颟颡颢颥颦è™�虔虬虮虿虺虼虻蚨èš�蚋蚬èš�蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉è›�蚴蛩蛱蛲蛭蛳è›�蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊èœ�蜉蜣蜻蜞蜥蜮蜚蜾è�ˆèœ´èœ±èœ©èœ·èœ¿èž‚蜢è�½è�¾è�»è� è�°è�Œè�®èž‹è�“è�£è�¼è�¤è�™è�¥èž“螯螨蟒�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅èˆ�竺竽笈笃笄笕笊笫ç¬�筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌ç­�筠筮筻筢筲筱ç®�箦箧箸箬ç®�箨箅箪箜箢箫箴篑ç¯�篌ç¯�篚篥篦篪簌篾篼ç°�簖簋�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簟簪簦簸ç±�籀臾èˆ�舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋è‰�艚艟艨衾袅袈裘裟襞ç¾�羟羧羯羰羲籼敉粑ç²�粜粞粢粲粼粽ç³�糇糌ç³�糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊é…�é…Žé…�酤�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������酢酡酰酩酯酽酾酲酴酹醌醅é†�é†�醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎è·�跛跆跬跷跸跣跹跻跤踉跽踔è¸�踟踬踮踣踯踺蹀踹踵踽踱蹉è¹�蹂蹑蹒蹊蹰蹶蹼蹯蹴躅èº�躔èº�躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������觥觫觯訾謦é�“雩雳雯霆éœ�霈éœ�霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋é¼�隹隼隽雎雒瞿雠銎銮鋈錾é�ªé�ŠéŽ�é�¾é‘«é±¿é²‚鲅鲆鲇鲈稣鲋鲎é²�鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鳌é³�鳎é³�é³�鳓鳔鳕鳗鳘鳙鳜é³�鳟鳢é�¼éž…鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼é«�髀髅髂髋髌髑魅魃魇魉魈é­�魑飨é¤�餮饕饔髟髡髦髯髫髻髭髹鬈é¬�鬓鬟鬣麽麾縻麂麇麈麋麒é�–éº�麟黛黜é»�黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[20949] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� ã€�。·‥…¨〃­―∥\∼‘’“â€�〔〕〈〉《》「ã€�『ã€�ã€�】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○â—�◎◇◆□■△▲▽▼→â†�↑↓↔〓≪≫√∽âˆ�∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������⇒⇔∀∃´~ˇ˘Ë�˚˙¸˛¡¿Ë�∮∑âˆ�¤℉‰â—�◀▷▶♤♠♡♥♧♣⊙◈▣â—�◑▒▤▥▨▧▦▩♨â˜�☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№ã�‡â„¢ã�‚ã�˜â„¡â‚¬Â®ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ï¼�"#$%&'()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz{|ï½� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀã…�ㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌã…�ã…Žã…�ã…�ㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜã…�ㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀã†�ㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌã†�ㆎ�\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω�������\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌â”�┘└├┬┤┴┼â”�┃â”�┓┛┗┣┳┫┻╋┠┯┨┷┿â”�┰┥┸╂┒┑┚┙┖┕┎â”�┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀â•�╃╄╅╆╇╈╉╊���������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������㎕㎖㎗ℓ㎘ã�„㎣㎤㎥㎦㎙㎚㎛㎜ãŽ�㎞㎟㎠㎡㎢ã�ŠãŽ�㎎ãŽ�ã��㎈㎉ã�ˆãŽ§ãŽ¨ãŽ°ãŽ±ãŽ²ãŽ³ãŽ´ãŽµãŽ¶ãŽ·ãŽ¸ãŽ¹ãŽ€ãŽ�㎂㎃㎄㎺㎻㎼㎽㎾㎿ãŽ�㎑㎒㎓㎔Ωã�€ã��㎊㎋㎌ã�–ã�…㎭㎮㎯ã�›ãŽ©ãŽªãŽ«ãŽ¬ã��ã��ã�“ã�ƒã�‰ã�œã�†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ÆÃ�ªĦ�IJ�ĿÅ�ØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻â“�ⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜâ“�ⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜â…�⅞�\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æđðħıijĸŀłøœßþŧŋʼn㈀ãˆ�㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌ãˆ�㈎ãˆ�ãˆ�㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜â’�⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀â’�⒂¹²³â�´â�¿â‚�₂₃₄�\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�­ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������가ê°�간갇갈갉갊ê°�갑값갓갔강갖갗같갚갛개ê°�갠갤갬갭갯갰갱갸갹갼걀걋ê±�걔걘걜거걱건걷걸걺검ê²�것겄겅겆겉겊겋게ê²�겔겜ê²�겟겠겡겨격겪견겯결겸겹겻겼경ê³�계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������괌ê´�ê´�광괘괜괠괩괬괭괴괵괸괼굄굅굇굉êµ�굔굘굡굣구국군굳굴굵굶굻굼굽굿ê¶�궂궈궉권ê¶�ê¶œê¶�궤궷귀ê·�ê·„ê·ˆê·�귑귓규균귤그극근귿글ê¸�금급긋ê¸�긔기긱긴긷길긺김ê¹�깃깅깆깊까ê¹�깎ê¹�깔깖깜ê¹�깟깠깡깥깨깩깬깰깸�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌ê»�ê»�ê»�껑께껙껜껨껫껭껴껸껼꼇꼈ê¼�ê¼�꼬꼭꼰꼲꼴꼼꼽꼿ê½�꽂꽃꽈꽉ê½�꽜ê½�꽤꽥꽹꾀꾄꾈ê¾�꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋ê¿�꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀ë€�뀄뀌ë€�뀔뀜ë€�뀨ë�„ë�…ë�ˆë�Šë�Œë�Žë�“ë�”ë�•ë�—ë�™ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ë��ë�¼ë�½ë‚€ë‚„낌ë‚�ë‚�낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉ëƒ�냑냔냘냠냥너넉넋넌ë„�넒넓넘넙넛넜ë„�넣네넥넨넬넴넵넷넸넹녀ë…�ë…„ë…ˆë…�녑녔녕녘녜녠노녹논놀놂놈놉놋ë†�높놓놔놘놜놨뇌ë‡�뇔뇜ë‡��\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉ëŠ�늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌ë‹�닖님닙닛ë‹�닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대ëŒ�댄댈ëŒ�댑댓댔댕댜ë�”ë�•ë�–ë�˜ë�›ë�œë�žë�Ÿë�¤ë�¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ë�§ë�©ë�«ë�®ë�°ë�±ë�´ë�¸ëŽ€ëŽ�뎃뎄뎅뎌ëŽ�뎔뎠뎡뎨뎬ë�„ë�…ë�ˆë�‹ë�Œë�Žë��ë�”ë�•ë�—ë�™ë�›ë��ë� ë�¤ë�¨ë�¼ë��ë�˜ë�œë� ë�¨ë�©ë�«ë�´ë‘�둑둔둘둠둡둣둥둬뒀뒈ë’�뒤뒨뒬뒵뒷뒹듀듄듈ë“�듕드ë“�든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������땀ë•�땃땄땅땋때ë•�ë•�땔땜ë•�땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌ë—�ë—�ë—�뗑뗘뗬ë˜�똑똔똘똥똬똴뙈뙤뙨뚜ëš�뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀ëœ�뜅뜨뜩뜬뜯뜰뜸뜹뜻ë�„ë�ˆë�Œë�”ë�•ë� ë�¤ë�¨ë�°ë�±ë�³ë�µë�¼ë�½ëž€ëž„람ëž�ëž�ëž�랑랒랖랗�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀ë �렇레렉렌ë �렘렙렛ë �려력련렬렴렵렷렸령례롄롑롓로ë¡�론롤롬롭롯롱롸롼ë¢�뢨뢰뢴뢸룀ë£�룃룅료ë£�룔ë£�룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌ë¥�륑류륙륜률륨륩�\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������륫륭르륵른를름릅릇릉릊ë¦�릎리릭린릴림립릿ë§�마막만많ë§�ë§�맑맒맘맙맛ë§�맞맡맣매맥맨맬맴맵맷맸맹맺먀ë¨�먈먕머먹먼멀멂멈멉멋ë©�멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������묀묄ë¬�ë¬�묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉ë­�ë­�ë­�뭔뭘뭡뭣뭬뮈뮌ë®�뮤뮨뮬뮴뮷므믄믈ë¯�믓미믹민믿밀밂밈밉밋밌ë°�ë°�밑바박밖밗반받발ë°�밞밟밤밥밧방밭배백밴밸뱀ë±�뱃뱄뱅뱉뱌ë±�ë±�ë±�버벅번벋벌벎범법벗�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������벙벚베벡벤벧벨벰벱벳벴벵벼벽변별ë³�ë³�ë³�병볕볘볜보복볶본볼봄봅봇봉ë´�봔봤봬뵀뵈뵉뵌ëµ�뵘뵙뵤뵨부ë¶�분붇불붉붊ë¶�붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브ë¸�ë¸�블븜ë¸�븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������빨빪빰빱빳빴빵빻빼빽뺀뺄뺌ëº�ëº�ëº�뺑뺘뺙뺨ë»�뻑뻔뻗뻘뻠뻣뻤뻥뻬ë¼�뼈뼉뼘뼙뼛뼜ë¼�ë½€ë½�뽄뽈ë½�뽑뽕뾔뾰뿅뿌ë¿�ë¿�뿔뿜뿟뿡쀼ì�‘ì�˜ì�œì� ì�¨ì�©ì‚�삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀ìƒ�샅새색샌ìƒ�샘샙샛샜ìƒ�샤�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������샥샨샬샴샵샷샹섀섄섈ì„�섕서ì„�섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌ì…�셔셕션셜셤셥셧셨셩셰셴셸솅소ì†�솎ì†�솔솖솜ì†�솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌ìˆ�ìˆ�숑수숙순숟술숨숩숫숭�\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������숯숱숲숴쉈ì‰�쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿ìŠ�슈슉ìŠ�슘슛ìŠ�스슥슨슬슭슴습슷승시ì‹�신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌ìŒ�쌓쌔쌕쌘쌜쌤쌥쌨쌩ì�…ì�¨ì�©ì�¬ì�°ì�²ì�¸ì�¹ì�¼ì�½ìŽ„ìŽˆìŽŒì�€ì�˜ì�™ì�œì�Ÿì� ì�¢ì�¨ì�©ì�­ì�´ì�µì�¸ì�ˆì��ì�¤ì�¬ì�°ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ì�´ì�¼ì�½ì‘ˆì‘¤ì‘¥ì‘¨ì‘¬ì‘´ì‘µì‘¹ì’€ì’”쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀ì”�씌ì”�씔씜씨씩씬씰씸씹씻씽아악안앉않알ì•�앎앓암압앗았앙ì•�앞애액앤앨앰앱앳앴앵야약얀얄얇얌ì–�ì–�양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ì—�엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였ì˜�옅옆옇예옌ì˜�옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와ì™�완왈ì™�왑왓왔왕왜ì™�왠왬왯왱외왹왼욀욈욉욋ìš�요욕욘욜욤욥욧용우욱운울욹욺움ì›�웃웅워ì›�ì›�월웜ì›�웠웡웨�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽ì�€ì�„ì�Šì�Œì��ì��ì�‘ì�’ì�“ì�”ì�•ì�–ì�—ì�˜ì�œì� ì�¨ì�«ì�´ì�µì�¸ì�¼ì�½ì�¾ìžƒìž„입잇있잉잊잎ìž�작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀ìŸ�쟈쟉쟌쟎ìŸ�쟘ìŸ�쟤쟨쟬저ì �전절젊�\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ì �ì ‘ì “ì •ì –ì œì �젠젤젬젭젯젱져젼졀졈졉졌ì¡�졔조족존졸졺좀ì¢�좃종좆좇좋좌ì¢�좔ì¢�좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌ì¤�ì¤�중줘줬줴ì¥�쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌ì¦�즘즙즛ì¦�ì§€ì§�진짇질짊ì§�집짓�\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������징짖짙짚짜ì§�짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌ì¨�쨔쨘쨩쩌ì©�ì©�쩔쩜ì©�쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌ì«�ì«�쫑쫓쫘쫙쫠쫬쫴쬈ì¬�쬔쬘쬠쬡ì­�쭈쭉쭌ì­�쭘쭙ì­�쭤쭸쭹쮜쮸쯔쯤쯧쯩찌ì°�ì°�찔찜ì°�찡찢찧차착찬찮찰참찹찻�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉ì³�쳔쳤쳬쳰ì´�초촉촌ì´�촘촙촛ì´�촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌ì·�취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉ìº�캑캔캘캠캡캣캤캥캬캭ì»�커컥컨컫컬컴컵컷컸컹케ì¼�켄켈ì¼�켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������í�„í�…í�‡í�‰í��í�”í�˜í� í�¬í�­í�°í�´í�¼í�½í‚�키킥킨킬킴킵킷킹타íƒ�탄탈탉íƒ�탑탓탔탕태íƒ�탠탤탬탭탯탰탱탸í„�터턱턴털턺텀í…�텃텄텅테í…�í…�텔템í…�텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉íˆ�투툭툰툴툼툽툿í‰�퉈퉜�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������퉤튀íŠ�튄튈íŠ�튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀íŒ�팃팅파íŒ�팎íŒ�팔팖팜íŒ�팟팠팡팥패팩팬팰팸팹팻팼팽í�„í�…í�¼í�½íŽ€íŽ„íŽŒíŽ�íŽ�íŽ�펑페펙펜펠펨펩펫펭펴편펼í�„í�…í�ˆí�‰í��í�˜í�¡í�£í�¬í�­í�°í�´í�¼í�½í�¿í���\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������í�ˆí��푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋í’�풔풩퓌í“�퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌í•�í•�핑하학한할핥함합핫항해핵핸핼햄햅햇했행í–�향허헉헌í—�헒험헙헛í—�헤헥헨헬헴헵헷헹혀í˜�현혈í˜�협혓혔형혜혠�\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋í™�홑화확환활홧황홰홱홴횃횅회íš�íš�íš”íš�횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼í�„í�‡í�‰í��í�‘í�”í�–í�—í�˜í�™í� í�¡í�£í�¥í�©í�¬í�°í�´í�¼í�½íž�히힉힌íž�힘힙힛íž��\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳å�‡åƒ¹åŠ å�¯å‘µå“¥å˜‰å«�家暇架枷柯歌ç�‚痂稼苛茄街袈訶賈è·�軻迦駕刻å�´å�„æ�ªæ…¤æ®¼ç��脚覺角閣侃刊墾奸姦干幹懇æ�€æ�†æŸ¬æ¡¿æ¾—癎看磵稈竿簡è‚�艮艱諫間乫å–�曷渴碣竭葛è¤�è�Žéž¨å‹˜å�Žå ªåµŒæ„Ÿæ†¾æˆ¡æ•¢æŸ‘橄減甘疳監瞰紺邯鑑鑒龕�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑è¥�講鋼é™�鱇介价個凱å¡�愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客å�‘ï¤�粳羹醵倨去居巨拒æ�®æ“šæ“§æ¸ ç‚¬ç¥›è·�踞車é�½é‰…鋸乾件å�¥å·¾å»ºæ„†æ¥—腱虔蹇é�µé¨«ä¹žå‚‘æ�°æ¡€å„‰åŠ�劒檢�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼éˆ�黔劫怯迲å�ˆæ†©æ�­æ“Šæ ¼æª„激膈覡隔堅牽犬甄絹繭肩見譴é�£éµ‘抉決潔çµ�缺訣兼慊ç®�謙鉗鎌京俓倞傾儆å‹�å‹�å�¿å�°å¢ƒåºšå¾‘慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕é�¡é ƒé ¸é©šé¯¨ä¿‚啓堺契季屆悸戒桂械�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄å�¤å�©å‘Šå‘±å›ºå§‘孤尻庫拷攷故敲暠枯æ§�沽痼çš�ç�¾ç¨¿ç¾”考股è†�苦苽è�°è—�蠱袴誥賈辜錮雇顧高鼓哭斛曲æ¢�穀谷鵠困å�¤å´‘昆梱æ£�滾ç�¨è¢žé¯¤æ±¨ï¤„骨供公共功孔工æ��æ�­æ‹±æŽ§æ”»ç�™ç©ºèš£è²¢éž�串寡戈果瓜�\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������科è�“誇課跨é�Žé�‹é¡†å»“槨藿郭串冠官寬慣棺款ç�Œç�¯ç“˜ç®¡ç½�è�…觀貫關館刮æ��括适侊光匡壙廣曠洸炚狂ç�–ç­�胱鑛å�¦æŽ›ç½«ä¹–傀塊壞怪愧æ‹�æ§�é­�å®�紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久ä¹�仇俱具勾�\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�€å�£å�¥å’Žå˜”å�µåž¢å¯‡å¶‡å»�懼拘救枸柩構æ­�毆毬求æº�ç�¸ç‹—玖ç�ƒçž¿çŸ©ç©¶çµ¿è€‰è‡¼èˆ…舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局è�Šéž éž«éº´å�›çª˜ç¾¤è£™è»�郡堀屈掘窟宮弓穹窮芎躬倦券勸å�·åœˆæ‹³æ�²æ¬Šæ·ƒçœ·åŽ¥ç�—蕨蹶闕机櫃潰詭軌饋句晷歸貴�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜å�«åœ­å¥Žæ�†æ§»ç�ªç¡…窺竅糾葵è¦�赳逵閨勻å�‡ç•‡ç­ è�Œéˆžï¤ˆæ©˜å…‹å‰‹åŠ‡æˆŸæ£˜æ¥µéš™åƒ…åŠ¤å‹¤æ‡ƒæ–¤æ ¹æ§¿ç‘¾ç­‹èŠ¹è�«è¦²è¬¹è¿‘饉契今妗擒昑檎ç�´ç¦�禽芩衾衿襟金錦伋å�Šæ€¥æ‰±æ±²ç´šçµ¦äº˜å…¢çŸœè‚¯ä¼�伎其冀嗜器圻基埼夔奇妓寄å²�崎己幾忌技旗旣�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期æ�žæ£‹æ£„機欺氣汽沂淇玘ç�¦ç�ªç’‚璣畸畿ç¢�磯ç¥�祇祈祺箕紀綺羈耆耭肌記è­�豈起錡錤飢饑騎é¨�驥麒緊佶å�‰æ‹®æ¡”金喫儺喇奈娜懦ï¤�æ‹�拿癩ï¤�ï¤�螺裸邏那樂洛烙珞落諾酪駱亂卵暖ï¤�煖爛蘭難鸞æ��æ�ºå�—嵐æž�楠湳濫男藍襤拉�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç´�臘蠟衲囊娘廊朗浪狼郎乃來內奈柰è€�冷女年撚秊念æ�¬æ‹ˆæ�»å¯§å¯—努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿ï¥�壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓ï¥�漏ï¥�ï¥�陋嫩訥æ�»ç´�勒肋凜凌稜綾能菱陵尼泥匿溺多茶�\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段æ¹�短端簞緞蛋袒鄲é�›æ’»æ¾¾ç�ºç–¸é�”å•–å��憺擔曇淡湛潭澹痰è�ƒè†½è•�覃談譚錟沓畓答è¸�é��å”�堂塘幢戇撞棠當糖螳黨代垈å�®å¤§å°�岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉æ�—桃�\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜ç�¹ç¦±ç¨»è�„覩賭跳蹈逃途é�“都é��陶韜毒瀆牘犢ç�¨ç�£ç¦¿ç¯¤çº›è®€å¢©æƒ‡æ•¦æ—½æš¾æ²Œç„žç‡‰è±šé “ä¹­çª�ä»�冬å‡�å‹•å�Œæ†§æ�±æ¡�棟洞潼疼瞳童胴董銅兜斗æ�œæž“痘竇è�³ï¥šè±†é€—頭屯臀芚é��é�¯éˆ�å¾—å¶�橙燈登等藤謄鄧騰喇懶拏癩羅�\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸é‚�樂洛烙ç�žçµ¡è�½ï¥�酪駱丹亂å�µæ¬„欒瀾爛蘭鸞剌辣åµ�擥攬欖濫籃纜è—�襤覽拉臘蠟廊朗浪狼ç�…瑯螂郞來å´�å¾ è�Šå†·æŽ ç•¥äº®å€†å…©å‡‰æ¢�樑粮粱糧良諒輛é‡�侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷ç€�礫轢é�‚æ†�戀攣漣�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練è�¯è“®è¼¦é€£é�Šå†½åˆ—劣洌烈裂廉斂殮濂簾ç�µä»¤ä¼¶å›¹ï¥Ÿå²ºå¶ºæ€œçŽ²ç¬­ç¾šç¿Žè�†é€žéˆ´é›¶é�ˆé ˜é½¡ä¾‹æ¾§ç¦®é†´éš·å‹žï¥ æ’ˆæ“„櫓潞瀘çˆ�ç›§è€�蘆虜路輅露魯鷺鹵碌祿綠è�‰éŒ„鹿麓論壟弄朧瀧ç“�ç± è�¾å„¡ç€¨ç‰¢ç£Šè³‚賚賴雷了僚寮廖料燎療瞭è�Šè“¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¼é¬§é¾�壘å©�屢樓淚æ¼�瘻累縷蔞褸é�¤é™‹åŠ‰æ—’æŸ³æ¦´æµ�溜ç€�ç�‰ç‘ ç•™ç˜¤ç¡«è¬¬é¡žå…­æˆ®é™¸ä¾–倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾è�±é™µä¿šåˆ©åŽ˜å��唎履悧æ�Žæ¢¨æµ¬çŠ�狸ç�†ç’ƒï¥¢ç—¢ç±¬ç½¹ç¾¸èމè£�裡里é‡�離鯉å��æ½¾ç‡�璘藺躪隣鱗麟林淋ç�³è‡¨éœ–砬�\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万å��娩巒彎慢挽晩曼滿漫ç�£çžžè�¬è”“蠻輓饅鰻唜抹末沫茉襪é�ºäº¡å¦„忘忙望網罔芒茫莽輞邙埋妹媒å¯�昧枚梅æ¯�煤罵買賣é‚�魅脈貊陌驀麥孟氓猛盲盟è�Œå†ªè¦“å…�冕勉棉沔眄眠綿緬é�¢éºµæ»…�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥å��命明æš�椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮æŸ�模æ¯�毛牟牡ç‘�眸矛耗芼茅謀謨貌木æ²�牧目ç�¦ç©†é¶©æ­¿æ²’夢朦蒙å�¯å¢“妙廟æ��昴æ�³æ¸ºçŒ«ç«—苗錨務巫憮懋戊拇撫无楙武毋無ç�·ç•�繆舞茂蕪誣貿霧鵡墨默們刎å�»å•�文�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋è�žèšŠé–€é›¯å‹¿æ²•物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷é�¡é»´å²·æ‚¶æ„�憫æ•�旻旼民泯玟ç�‰ç·¡é–”密蜜è¬�å‰�å�šæ‹�æ��撲朴樸泊ç�€ç’žç®”粕縛膊舶薄迫雹é§�ä¼´å�Šå��å�›æ‹Œæ�¬æ”€æ–‘槃泮潘ç�­ç•”瘢盤盼ç£�磻礬絆般蟠返頒飯勃拔撥渤潑�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣å‚�å�Šå¦¨å°¨å¹‡å½·æˆ¿æ”¾æ–¹æ—�昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防é¾�å€�俳北培徘拜排æ�¯æ¹ƒç„™ç›ƒèƒŒèƒšè£´è£µè¤™è³ è¼©é…�陪伯佰帛æŸ�栢白百魄幡樊煩燔番磻ç¹�蕃藩飜ä¼�ç­�罰閥凡帆梵氾汎泛犯範范法ç�ºåƒ»åŠˆå£�擘檗璧癖�\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便å�žå¼�變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳ç”�病秉ç«�輧餠騈ä¿�堡報寶普步洑湺潽ç�¤ç”«è�©è£œè¤“譜輔ä¼�僕åŒ�å�œå®“復æœ�ç¦�腹茯蔔複覆輹輻馥鰒本乶俸奉å°�峯峰æ�§æ£’烽熢ç�«ç¸«è“¬èœ‚逢鋒鳳ä¸�付俯傅剖副å�¦å’�埠夫婦�\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶è…�腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分å�©å™´å¢³å¥”奮忿憤扮æ˜�汾焚盆粉糞紛芬è³�雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪å�‘妃婢庇悲憊扉批æ–�枇榧比毖毗毘沸泌ç�µç—ºç ’碑秕秘粃緋翡肥�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂è�²èœšè£¨èª¹è­¬è²»é„™é�žé£›é¼»åš¬å¬ªå½¬æ–Œæª³æ®¯æµœæ¿±ç€•ç‰�玭貧賓頻憑氷è�˜é¨�ä¹�事些仕伺似使俟僿å�²å�¸å”†å—£å››å£«å¥¢å¨‘寫寺射巳師徙æ€�æ�¨æ–œæ–¯æŸ¶æŸ»æ¢­æ­»æ²™æ³—渣瀉ç�…砂社祀祠ç§�篩紗絲肆èˆ�莎蓑蛇裟è©�詞è¬�賜赦辭邪飼駟éº�削數朔索�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕ç�Šç”£ç–�算蒜酸霰乷撒殺煞薩三參æ�‰æ£®æ¸—芟蔘衫æ�·æ¾�鈒颯上傷åƒ�償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼åº�庶å¾�æ�•抒æ�¿æ•�暑曙書栖棲犀瑞筮絮緖署�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓é€�鋤é»�鼠夕奭席惜昔晳æž�æ±�淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽ç��瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣é�¸éŠ‘é�¥é¥�é®®å�¨å±‘楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾è´�é–ƒé™�æ”�涉燮葉城姓宬性惺æˆ�星晟猩ç�¹ç››çœ�筬�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è�–è�²è…¥èª é†’世勢歲洗稅笹細說貰å�¬å˜¯å¡‘宵å°�少巢所掃æ�”昭梳沼消溯瀟炤燒甦ç–�疎瘙笑篠簫素紹蔬蕭蘇訴é€�é�¡é‚µéŠ·éŸ¶é¨·ä¿—å±¬æ�Ÿæ¶‘粟續謖贖速孫巽æ��è“€é�œé£¡çŽ‡å®‹æ‚šæ�¾æ·žè¨Ÿèª¦é€�頌刷殺ç�‘碎鎖衰釗修å�—嗽囚垂壽嫂守岫峀帥æ„��\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æˆ�手授æ�œæ”¶æ•¸æ¨¹æ®Šæ°´æ´™æ¼±ç‡§ç‹©ç�¸ç�‡ç’²ç˜¦ç�¡ç§€ç©—竪粹ç¶�綬繡羞脩茱è’�蓚藪袖誰è®�輸é�‚邃酬銖銹隋隧隨雖需須首髓鬚å�”塾夙孰宿淑潚熟ç�¡ç’¹è‚…è�½å·¡å¾‡å¾ªæ�‚旬栒楯橓殉洵淳ç�£ç›¾çž¬ç­�純脣舜è�€è“´è•£è©¢è«„醇錞順馴戌術述鉥崇崧�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟è†�è�¨æ¿•拾習褶襲丞乘僧å‹�å�‡æ‰¿æ˜‡ç¹©è …陞ä¾�匙嘶始媤尸屎å±�市弑æ�ƒæ–½æ˜¯æ™‚枾柴猜矢示翅蒔è“�視試詩諡豕豺埴寔å¼�æ�¯æ‹­æ¤�殖湜熄篒è�•識軾食飾伸ä¾�信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心æ²��\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什å��拾雙æ°�亞俄兒啞娥峨我牙芽莪蛾衙è¨�阿雅餓鴉éµ�堊岳嶽幄惡愕æ�¡æ¨‚渥鄂é�”顎é°�齷安岸按æ™�案眼é›�éž�顔鮟斡è¬�軋閼唵岩巖庵暗癌è�´é—‡å£“押狎鴨仰央æ€�昻殃秧鴦厓哀埃崖愛曖涯ç¢�艾隘é�„厄扼掖液縊腋é¡��\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹æ�¶æ¤°çˆºè€¶ï¥´é‡Žå¼±ï¥µï¥¶ç´„若葯蒻藥èº�亮佯兩凉壤孃æ�™æ�šæ”˜æ•­æš˜ï¥ºæ¥Šæ¨£æ´‹ç€�煬痒ç˜�禳穰糧羊良襄諒讓釀陽量養圄御於æ¼�瘀禦語馭魚齬億憶抑æª�臆å�ƒå °å½¦ç„‰è¨€è«ºå­¼è˜–俺儼嚴奄掩淹嶪業円予余勵呂ï¦�如廬�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟æ±�濾璵礖礪與艅茹輿è½�閭餘驪麗黎亦力域役易曆歷疫繹譯ï¦�逆驛嚥堧姸娟宴年延ï¦�ï¦�æ��挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉ç¡�硯秊筵緣練縯聯è¡�軟輦蓮連鉛鍊鳶列ï¦�咽悅涅烈熱裂說閱厭廉念捻染殮炎焰ç�°è‰¶è‹’�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵ç‡�葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶æ½�濚瀛瀯ç…�營ç�°ï¦­ç‘›ï¦®ç“”盈穎纓羚聆英詠迎鈴é�ˆï¦²éœ™ï¦³ï¦´ä¹‚倪例刈å�¡æ›³æ±­æ¿ŠçŒŠç�¿ç©¢èŠ®è—�蘂禮裔詣譽豫醴銳隸霓é �五ä¼�俉傲å�ˆå�¾å�³å—šå¡¢å¢ºå¥§å¨›å¯¤æ‚Ÿï¦¹æ‡Šæ•–旿晤梧汚澳�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������çƒ�熬ç�’筽蜈誤鰲鼇屋沃ç�„玉鈺溫瑥瘟穩縕蘊兀壅æ“�瓮甕癰ç¿�é‚•é›�饔渦瓦窩窪臥蛙è�¸è¨›å©‰å®Œå®›æ¢¡æ¤€æµ£çŽ©ç�“ç�¬ç¢—緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬å·�猥ç•�了僚僥凹堯夭妖姚寥寮尿嶢拗æ�–撓擾料曜樂橈燎燿瑤ï§��\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯è¦�謠é�™ï§ƒé‚€é¥’慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬è�³èŒ¸è“‰è¸ŠéŽ”é�žï§„于佑å�¶å„ªå�ˆå�‹å�³å®‡å¯“尤愚憂旴牛玗瑀盂ç¥�禑禹紆羽芋藕虞迂é�‡éƒµé‡ªéš…雨雩勖彧旭昱栯煜稶éƒ�頊云暈橒殞æ¾�熉耘芸蕓�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�‹éš•雲韻蔚鬱äº�熊雄元原員圓園垣媛嫄寃怨愿æ�´æ²…洹湲æº�爰猿瑗苑è¢�è½…é� ï§†é™¢é¡˜é´›æœˆè¶Šé‰žä½�å�‰åƒžå�±åœ�å§”å¨�尉慰æš�渭爲瑋緯胃è�Žè‘¦è”¿è�Ÿè¡›è¤˜è¬‚é�•韋é­�乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉æ�„攸有杻柔柚柳楡楢油洧流游溜�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由ï§�ç™’ï§Žï§�維臾è�¸è£•誘諛諭踰蹂é�Šé€¾é�ºé…‰é‡‰é�®ï§�六堉戮毓肉育陸倫å…�奫尹崙淪潤玧胤贇輪鈗é–�律慄栗率è�¿æˆŽç€œçµ¨èž�隆垠æ�©æ…‡æ®·èª¾éŠ€éš±ä¹™å�Ÿæ·«è”­é™°éŸ³é£®æ�–泣邑å‡�應膺鷹ä¾�倚儀宜æ„�懿擬椅毅疑矣義艤è–�蟻衣誼�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊ï§�吏夷姨履已弛彛怡易李梨泥爾ç�¥ï§¤ç•°ç—�痢移罹而耳肄苡è�‘裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人ä»�刃å�°ï§­å’½å› å§»å¯…引å¿�湮燐璘絪茵藺蚓èª�ï§±é�­é�·ï§²ï§³ä¸€ä½šä½¾å£¹æ—¥æº¢é€¸éŽ°é¦¹ä»»å£¬å¦Šå§™æ��林淋稔臨è��賃入å�„�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒ä»�剩孕芿仔刺咨姉姿å­�å­—å­œæ�£æ…ˆæ»‹ç‚™ç…®çŽ†ç“·ç–µç£�紫者自茨蔗藉諮資雌作勺嚼斫昨ç�¼ç‚¸çˆµç¶½èŠ�酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲æ�–樟檣欌漿牆狀ç��璋章粧腸臟臧莊葬蔣薔è—�è£�贓醬長�\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������障å†�哉在宰æ‰�æ��栽梓渽滓ç�½ç¸¡è£�財載齋齎爭ç®�è«�錚佇低儲咀å§�底抵æ�µæ¥®æ¨—沮渚狙猪疽箸紵苧è�¹è‘—藷詛貯躇這邸雎齟勣å�Šå«¡å¯‚摘敵滴狄炙的ç©�笛ç±�績翟è�»è¬«è³Šèµ¤è·¡è¹Ÿè¿ªè¿¹é�©é�‘佃佺傳全典å‰�剪塡塼奠專展廛悛戰栓殿氈澱�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎ç� ç”°ç”¸ç•‘癲筌箋箭篆çº�詮輾轉鈿銓錢é�«é›»é¡šé¡«é¤žåˆ‡æˆªæŠ˜æµ™ç™¤ç«Šç¯€çµ¶å� å²¾åº—漸点粘霑鮎點接摺è�¶ä¸�井亭å�œå�µå‘ˆå§ƒå®šå¹€åº­å»·å¾�情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎ç�½ç”ºç�›ç¢‡ç¦Žç¨‹ç©½ç²¾ç¶Žè‰‡è¨‚諪貞鄭酊釘鉦鋌錠霆é�–�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�œé ‚鼎制劑啼堤å¸�弟悌æ��梯濟祭第è‡�薺製諸蹄é†�除際霽題齊俎兆凋助嘲弔彫措æ“�æ—©æ™�曺曹æœ�æ¢�棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙èº�造é�­é‡£é˜»é›•é³¥æ—�簇足é�ƒå­˜å°Šå�’æ‹™çŒ�倧宗從悰慫棕淙ç�®ç¨®çµ‚綜縱腫�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵é�¾é�˜ä½�å��左座挫罪主ä½�ä¾�å�šå§�胄呪周嗾å¥�宙州廚æ™�朱柱株注洲湊æ¾�ç‚·ç� ç–‡ç±Œç´‚紬綢舟蛛註誅走躊輳週酎酒鑄é§�竹粥俊å„�准埈寯峻晙樽浚準濬焌畯竣蠢逡é�µé›‹é§¿èŒ�中仲衆é‡�å�½æ«›æ¥«æ±�葺增憎曾拯çƒ�甑症繒蒸證贈之å�ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地å�€å¿—æŒ�指摯支旨智æž�枳止池沚漬知砥祉祗紙肢脂至èŠ�芷蜘誌識贄趾é�²ç›´ç¨™ç¨·ç¹”è�·å”‡å—”塵振æ�¢æ™‰æ™‹æ¡­æ¦›æ®„津溱ç��瑨璡畛疹盡眞瞋秦縉ç¸�臻蔯袗診賑軫辰進鎭陣陳震侄å�±å§ªå«‰å¸™æ¡Žç“†ç–¾ç§©çª’膣蛭質跌迭斟朕什執潗ç·�輯�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¶é›†å¾µæ‡²æ¾„且侘借å�‰å—Ÿåµ¯å·®æ¬¡æ­¤ç£‹ç®šï§¾è¹‰è»Šé�®æ�‰æ�¾ç�€çª„錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽é¤�饌刹察擦札紮僭å�ƒå¡¹æ…˜æ…™æ‡ºæ–¬ç«™è®’讖倉倡創唱娼廠彰愴敞昌昶暢æ§�滄漲猖瘡窓脹艙è�–蒼債埰寀寨彩採砦綵è�œè”¡é‡‡é‡µå†ŠæŸµç­–�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟å�ƒå–˜å¤©å·�擅泉淺玔穿舛薦賤è¸�é�·é‡§é—¡é˜¡éŸ†å‡¸å“²å–†å¾¹æ’¤æ¾ˆç¶´è¼Ÿè½�é�µåƒ‰å°–沾添甛瞻簽籤詹諂堞妾帖æ�·ç‰’ç–Šç�«è«œè²¼è¼’廳晴淸è�½è��è«‹é�‘鯖切剃替涕滯締諦逮é�žé«”åˆ�剿哨憔抄招梢�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦ç¡�ç¤�礎秒ç¨�肖艸苕è�‰è•‰è²‚超酢醋醮促囑燭矗蜀觸寸忖æ�‘邨å�¢å¡šå¯µæ‚¤æ†�摠總è�°è”¥éŠƒæ’®å‚¬å´”æœ€å¢œæŠ½æŽ¨æ¤Žæ¥¸æ¨žæ¹«çšºç§‹èŠ»è�©è«�趨追鄒酋醜éŒ�錘鎚雛騶é°�丑畜ç¥�竺筑築縮蓄蹙蹴軸é€�春椿瑃出朮黜充忠沖蟲è¡�衷悴膵è�ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅å�–å�¹å˜´å¨¶å°±ç‚Šç¿ è�šè„†è‡­è¶£é†‰é©Ÿé·²å�´ä»„厠惻測層侈値嗤峙幟æ�¥æ¢”治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸ç�›ç §é‡�é�¼èŸ„秤稱快他咤唾墮妥惰打拖朶楕舵陀馱é§�倬å�“å•„å�¼ï¨�托拓擢晫æŸ�æ¿�濯ç�¢ç�¸è¨—�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¸å‘‘嘆å�¦å½ˆæ†šæ­Žç�˜ç‚­ç¶»èª•奪脫探眈耽貪塔æ�­æ¦»å®•帑湯糖蕩兌å�°å¤ªæ€ æ…‹æ®†æ±°æ³°ç¬žèƒŽè‹”跆邰颱宅擇澤撑攄兎å��土討慟桶洞痛筒統通堆槌腿褪退頹å�¸å¥—妬投é€�鬪æ…�特闖å�¡å©†å·´æŠŠæ’­æ“ºæ�·æ³¢æ´¾çˆ¬ç�¶ç ´ç½·èŠ­è·›é —åˆ¤å�‚æ�¿ç‰ˆç“£è²©è¾¦éˆ‘�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八å�­æ�Œä½©å”„悖敗沛浿牌狽稗覇è²�彭澎烹膨愎便å��æ‰�片篇編翩é��鞭騙貶å�ªå¹³æž°è��è©•å� å¬–幣廢弊斃肺蔽閉陛佈包åŒ�åŒ�咆哺圃布怖抛抱æ�•暴泡浦疱砲胞脯苞葡蒲è¢�褒逋鋪飽鮑幅暴æ›�瀑爆輻俵剽彪慓æ�“標漂瓢票表豹飇飄驃�\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å“�稟楓諷豊風馮彼披疲皮被é�¿é™‚匹弼必泌ç�Œç•¢ç–‹ç­†è‹¾é¦�ä¹�逼下何厦å¤�廈昰河瑕è�·è�¦è³€é��霞鰕壑學è™�謔鶴寒æ�¨æ‚�旱汗漢澣瀚罕翰閑閒é™�韓割轄函å�«å’¸å•£å–Šæª»æ¶µç·˜è‰¦éŠœé™·é¹¹å�ˆå“ˆç›’蛤閤闔陜亢伉姮嫦巷æ�’抗æ�­æ¡�沆港缸肛航�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥å�•咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸æ��è�‡è¡Œäº«å�‘åš®ç�¦é„•響餉饗香噓墟虛許憲櫶ç�»è»’歇險驗奕爀赫é�©ä¿”峴弦懸晛泫炫玄玹ç�¾çœ©ç��絃絢縣舷衒見賢鉉顯孑穴血é �嫌俠å�”夾峽挾浹狹脅脇莢é‹�頰亨兄刑型�\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅ç��炯熒ç�©ç‘©è�Šèž¢è¡¡é€ˆé‚¢éŽ£é¦¨å…®å½—æƒ æ…§æš³è•™è¹Šé†¯éž‹ä¹Žäº’å‘¼å£•å£ºå¥½å²µå¼§æˆ¶æ‰ˆæ˜Šæ™§æ¯«æµ©æ·�湖滸澔濠濩ç��ç‹�ç�¥ç‘šç“ çš“祜糊縞胡芦葫蒿虎號è�´è­·è±ªéŽ¬é €é¡¥æƒ‘æˆ–é…·å©šæ˜�混渾ç�¿é­‚忽惚ç¬�哄弘汞泓洪烘紅虹訌鴻化和嬅樺ç�«ç•µï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç¦�禾花è�¯è©±è­�貨é�´ï¨‹æ“´æ”«ç¢ºç¢»ç©«ä¸¸å–šå¥�宦幻患æ�›æ­¡æ™¥æ¡“渙煥環紈還驩鰥活滑猾è±�闊凰幌徨æ��惶愰慌晃晄榥æ³�湟滉潢煌璜皇ç¯�ç°§è�’è�—é�‘éš�黃匯回廻徊æ�¢æ‚”懷晦會檜淮澮ç�°ç�ªç¹ªè†¾èŒ´è›”誨賄劃ç�²å®–æ©«é�„哮嚆å­�效斅曉梟æ¶�淆�\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵é©�侯候厚å�Žå�¼å–‰å—…帿後朽煦ç��逅勛勳塤壎焄ç†�燻薰訓暈薨喧暄煊è�±å�‰å–™æ¯�彙徽æ�®æš‰ç…‡è«±è¼�麾休æ�ºçƒ‹ç•¦è™§æ�¤è­Žé·¸å…‡å‡¶åŒˆæ´¶èƒ¸é»‘昕欣炘痕å�ƒå±¹ç´‡è¨–欠欽歆å�¸æ�°æ´½ç¿•興僖凞喜噫å›�姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[21025] = (function(){ var d = \"ŸŸ\\u0002\\u0003œ\\t†—Â�ÂŽ\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Â�Â…\\b‡\\u0018\\u0019Â’Â�\\u001c\\u001d\\u001e\\u001f€Â�‚ƒ„\\n\\u0017\\u001bˆ‰Š‹Œ\\u0005\\u0006\\u0007Â�‘\\u0016“”•–\\u0004˜™š›\\u0014\\u0015ž\\u001a  ђѓёєѕіїј[.<(+!&љњћќўџЪ№Ђ]$*);^-/ЃÐ�ЄЅІЇЈЉ|,%_>?ЊЋЌ­ЎÐ�юаб`:#@'=\\\"цabcdefghiдефгхийjklmnopqrклмнопÑ�~stuvwxyzÑ€Ñ�тужвьызшÑ�щчъЮÐ�БЦДЕФГ{ABCDEFGHIХИЙКЛМ}JKLMNOPQRÐ�ОПЯРС\\\\§STUVWXYZТУЖВЬЫ0123456789ЗШЭЩЧŸ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[21027] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001fï£�ï£�ï£�ï£�\\u0000 \\u0000。「」、・ヲァィ¢.<(+|&ゥェォャュョッーア!$*);¬-/イウエオカキケ\\u0000,%_>?コサシスセソタï¾�ツ`:#@'\\\"\\u0000abcdefghiテトナニŽネ\\u0000jklmnopqrノハヒフï¾�ホ¯~stuvwxyzï¾�ï¾�ム[メモ^£¥ヤユヨラリルレロワï¾�]゙゚{ABCDEFG\\u0000\\u0000}JKLMNOP\\u0000\\\\\\u0000STUVWX\\u0000\\u000001234567\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[21866] = (function(){ var d = \"ЪЪ\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~─│┌â”�└┘├┤┬┴┼▀▄█▌â–�░▒▓⌠■∙√≈≤≥ ⌡°²·÷â•�║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡Ð�Є╣ІЇ╦╧╨╩╪Ò�Ў©юабцдефгхийклмнопÑ�Ñ€Ñ�тужвьызшÑ�щчъЮÐ�БЦДЕФГХИЙКЛМÐ�ОПЯРСТУЖВЬЫЗШЭЩЧЪ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[29001] = (function(){ var d = \"ΈΉΊΌΎ°◘○◙♂♀♪♬☼▶◀↕‼¶§£Î�↑↓→â†�Ë↔▲▼ !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùΑÖÜøαØάΒáíóúñÑβΓγΔδΕεέΖζΗηή│ªÃ�ÂÀΘθ║╗â•�ΙΪâ”�└º¡¿─΄ãÃ╚╔ιίϊâ•�Î�ΚκΛÊλΜμÃ�Î�ν┘┌ΞξΟοόÓßÔΠõÕπΡÏ�ÚΣςσΤτΥΫυÏ�ϋΰΦφΧχΨ·ψΩωώ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[38598] = (function(){ var d = \"ïŸ�ïŸ�\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ ¢£¤¥¦§¨©×«¬­®‾°±²³´µ¶·¸¹÷»¼½¾ïž�‗×�בגדהוזחטיךכל×�מןנסעףפץצקרשתïŸ�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[51932] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�����������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[142] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタï¾�ツテトナニヌネノハヒフï¾�ホï¾�ï¾�ムメモヤユヨラリルレロワï¾�゙゚��������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� ã€�。,.・:;?ï¼�゛゜´`¨^ ̄_ヽヾã‚�ゞ〃ä»�々〆〇ー―â€�ï¼�\~∥|…‥‘’“â€�()〔〕[]{ï½�〈〉《》「ã€�『ã€�ã€�】+ï¼�±×÷ï¼�≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○â—�◎◇�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������◆□■△▲▽▼※〒→â†�↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽âˆ�∵∫∬�������ʼn♯♭♪†‡¶����◯�\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ï¼�123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ������ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz�����\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�­ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω���������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌â”�┘└├┬┤┴┼â”�┃â”�┓┛┗┣┳┫┻╋┠┯┨┷┿â”�┰┥┸╂���������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[173] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�ã�‰ãŒ”㌢ã��㌘㌧㌃㌶ã�‘ã�—ãŒ�㌦㌣㌫ã�ŠãŒ»ãŽœãŽ�㎞㎎ãŽ�ã�„㎡��������ã�»ã€�〟№ã��℡㊤㊥㊦㊧㊨㈱㈲㈹ã�¾ã�½ã�¼ï¿½ï¿½ï¿½âˆ®âˆ‘���∟⊿������\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜ç©�悪æ�¡æ¸¥æ—­è‘¦èŠ¦é¯µæ¢“åœ§æ–¡æ‰±å®›å§�虻飴絢綾鮎或粟袷安庵按暗案闇éž�æ��以伊ä½�ä¾�å�‰å›²å¤·å§”å¨�尉惟æ„�慰易椅為ç•�異移維緯胃è�Žè¡£è¬‚é�•é�ºåŒ»äº•亥域育éƒ�磯一壱溢逸稲茨芋鰯å…�å�°å’½å“¡å› å§»å¼•飲淫胤蔭�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������院陰隠韻å�‹å�³å®‡çƒ�羽迂雨å�¯éµœçªºä¸‘碓臼渦嘘唄æ¬�蔚鰻姥厩浦瓜é–�噂云é�‹é›²è��餌å�¡å–¶å¬°å½±æ˜ æ›³æ „永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦è¬�越閲榎厭円園堰奄宴延怨掩æ�´æ²¿æ¼”炎焔煙燕猿ç¸�艶苑薗é� é‰›é´›å¡©æ–¼æ±šç”¥å‡¹å¤®å¥¥å¾€å¿œï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������押旺横欧殴王ç¿�襖鴬鴎黄岡沖è�»å„„屋憶臆桶牡乙俺å�¸æ�©æ¸©ç©�音下化仮何伽価佳加å�¯å˜‰å¤�å«�家寡科暇果架歌河ç�«ç�‚ç¦�禾稼箇花苛茄è�·è�¯è�“è�¦èª²å˜©è²¨è¿¦é�ŽéœžèšŠä¿„峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔æ�¢æ‡�戒æ‹�改�\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é­�晦械海ç�°ç•Œçš†çµµèŠ¥èŸ¹é–‹éšŽè²�凱劾外咳害崖慨概涯ç¢�蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇å�„廓拡撹格核殻ç�²ç¢ºç©«è¦šè§’赫較郭閣隔é�©å­¦å²³æ¥½é¡�顎掛笠樫橿梶é°�潟割å–�æ�°æ‹¬æ´»æ¸‡æ»‘è‘›è¤�轄且鰹å�¶æ¤›æ¨ºéž„株兜竃蒲釜鎌噛鴨栢茅è�±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾æ�›æ•¢æŸ‘桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰è‚�艦莞観諌貫還鑑間閑関陥韓館舘丸å�«å²¸å·ŒçŽ©ç™Œçœ¼å²©ç¿«è´‹é›�頑顔願ä¼�伎å�±å–œå™¨åŸºå¥‡å¬‰å¯„å²�希幾忌æ�®æœºæ——既期棋棄�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������機帰毅気汽畿祈季稀紀徽è¦�記貴起軌è¼�飢騎鬼亀å�½å„€å¦“宜戯技擬欺犠疑祇義蟻誼議掬è�Šéž å�‰å�ƒå–«æ¡”橘詰砧æ�µé»�å�´å®¢è„šè™�逆丘久仇休å�Šå�¸å®®å¼“急救朽求汲泣ç�¸ç�ƒç©¶çª®ç¬ˆç´šç³¾çµ¦æ—§ç‰›åŽ»å±…å·¨æ‹’æ‹ æŒ™æ¸ è™šè¨±è·�鋸æ¼�禦魚亨享京�\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������供侠僑兇競共凶å�”匡å�¿å�«å–¬å¢ƒå³¡å¼·å½Šæ€¯æ��æ�­æŒŸæ•™æ©‹æ³�狂狭矯胸脅興蕎郷é�¡éŸ¿é¥—驚仰å‡�å°­æš�業局曲極玉æ¡�ç²�僅勤å�‡å·¾éŒ¦æ–¤æ¬£æ¬½ç�´ç¦�禽筋緊芹è�Œè¡¿è¥Ÿè¬¹è¿‘金å�ŸéŠ€ä¹�倶å�¥åŒºç‹—玖矩苦躯駆駈駒具愚虞喰空å�¶å¯“é�‡éš…串櫛釧屑屈�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������掘窟沓é�´è½¡çªªç†Šéšˆç²‚æ —ç¹°æ¡‘é�¬å‹²å�›è–«è¨“群è»�郡å�¦è¢ˆç¥�係傾刑兄啓圭ç�ªåž‹å¥‘形径æ�µæ…¶æ…§æ†©æŽ²æ�ºæ•¬æ™¯æ¡‚渓畦稽系経継繋罫茎è�Šè›�計詣警軽頚é¶�芸迎鯨劇戟撃激隙æ¡�傑欠決潔穴çµ�血訣月件倹倦å�¥å…¼åˆ¸å‰£å–§åœ�堅嫌建憲懸拳æ�²ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������検権牽犬献研硯絹県肩見謙賢軒é�£é�µé™ºé¡•験鹸元原厳幻弦減æº�玄ç�¾çµƒèˆ·è¨€è«ºé™�乎個å�¤å‘¼å›ºå§‘孤己庫弧戸故枯湖ç‹�糊袴股胡è�°è™Žèª‡è·¨éˆ·é›‡é¡§é¼“五互ä¼�å�ˆå‘‰å�¾å¨¯å¾Œå¾¡æ‚Ÿæ¢§æªŽç‘šç¢�語誤護é†�乞鯉交佼侯候倖光公功効勾厚å�£å�‘�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�Žå–‰å�‘垢好孔å­�å®�工巧巷幸広庚康弘æ�’慌抗拘控攻昂晃更æ�­æ ¡æ¢—構江洪浩港æº�甲皇硬稿糠紅紘絞綱耕考肯肱腔è†�航è�’行衡講貢購郊酵鉱砿鋼閤é™�項香高鴻剛劫å�·å�ˆå£•拷濠豪轟麹克刻告国穀酷鵠黒ç�„漉腰甑忽惚骨狛込�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������此頃今困å�¤å¢¾å©šæ�¨æ‡‡æ˜�昆根梱混痕紺艮魂些ä½�å�‰å”†åµ¯å·¦å·®æŸ»æ²™ç‘³ç ‚è©�鎖裟å��座挫債催å†�最哉塞妻宰彩æ‰�採栽歳済ç�½é‡‡çŠ€ç •ç ¦ç¥­æ–Žç´°è�œè£�載際剤在æ��罪財冴å�‚阪堺榊肴咲崎埼碕鷺作削咋æ�¾æ˜¨æœ”柵窄策索錯桜鮭笹匙冊刷�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������察拶撮擦札殺薩雑çš�鯖æ�ŒéŒ†é®«çš¿æ™’三傘å�‚山惨撒散桟燦ç�Šç”£ç®—纂蚕讃賛酸é¤�斬暫残仕仔伺使刺å�¸å�²å—£å››å£«å§‹å§‰å§¿å­�å±�市師志æ€�指支孜斯施旨æž�止死æ°�ç�…祉ç§�糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似ä¾�å…�字寺慈æŒ�時�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������次滋治爾璽痔ç£�示而耳自蒔辞æ±�鹿å¼�識鴫竺軸å®�雫七å�±åŸ·å¤±å«‰å®¤æ‚‰æ¹¿æ¼†ç–¾è³ªå®Ÿè”€ç¯ å�²æŸ´èŠ�屡蕊縞舎写射æ�¨èµ¦æ–œç…®ç¤¾ç´—者è¬�車é�®è›‡é‚ªå€Ÿå‹ºå°ºæ�“ç�¼çˆµé…Œé‡ˆéŒ«è‹¥å¯‚弱惹主å�–守手朱殊狩ç� ç¨®è…«è¶£é…’首儒å�—呪寿授樹綬需囚å�Žå‘¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������宗就州修æ„�拾洲秀秋終ç¹�習臭舟è’�衆襲è®�蹴輯週酋酬集醜什ä½�å……å��従戎柔æ±�渋ç�£ç¸¦é‡�銃å�”夙宿淑ç¥�縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡é�µé†‡é †å‡¦åˆ�所暑曙渚庶緒署書薯藷諸助å�™å¥³åº�å¾�æ�•鋤除傷償�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å‹�匠å�‡å�¬å“¨å•†å”±å˜—奨妾娼宵将å°�少尚庄床廠彰承抄招掌æ�·æ˜‡æ˜Œæ˜­æ™¶æ�¾æ¢¢æ¨Ÿæ¨µæ²¼æ¶ˆæ¸‰æ¹˜ç„¼ç„¦ç…§ç—‡çœ�ç¡�ç¤�祥称章笑粧紹肖è�–蒋蕉è¡�裳訟証詔詳象賞醤鉦é�¾é�˜éšœéž˜ä¸Šä¸ˆä¸žä¹—冗剰城場壌嬢常情擾æ�¡æ�–浄状畳穣蒸譲醸錠嘱埴飾�\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������拭æ¤�殖燭織è�·è‰²è§¦é£Ÿè�•辱尻伸信侵唇娠å¯�審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進é‡�震人ä»�刃塵壬尋甚尽腎訊迅陣é�­ç¬¥è«�須酢図厨逗å�¹åž‚帥推水炊ç�¡ç²‹ç¿ è¡°é�‚é…”éŒ�錘éš�瑞髄崇嵩数枢趨雛æ�®æ�‰æ¤™è�…頗雀裾�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������澄摺寸世瀬ç•�是凄制勢姓å¾�性æˆ�政整星晴棲栖正清牲生盛精è�–声製西誠誓請é€�醒é�’é�™æ–‰ç¨Žè„†éš»å¸­æƒœæˆšæ–¥æ˜”æž�石ç©�ç±�績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌è�‰ä»™å…ˆå�ƒå� å®£å°‚å°–å·�戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線�\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������繊羨腺舛船薦詮賎践é�¸é�·éŠ­éŠ‘é–ƒé®®å‰�善漸然全禅繕膳糎噌塑岨措曾曽楚狙ç–�疎礎祖租粗素組蘇訴阻é�¡é¼ åƒ§å‰µå�Œå�¢å€‰å–ªå£®å¥�爽宋層åŒ�惣想æ�œæŽƒæŒ¿æŽ»æ“�早曹巣æ§�槽漕燥争痩相窓糟ç·�ç¶œè�¡è�‰è�˜è‘¬è’¼è—»è£…èµ°é€�é�­éŽ—éœœé¨’åƒ�増憎�\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������臓蔵贈造促å�´å‰‡å�³æ�¯æ�‰æ�Ÿæ¸¬è¶³é€Ÿä¿—属賊æ—�ç¶šå�’袖其æ�ƒå­˜å­«å°Šæ��æ�‘é�œä»–多太汰詑唾堕妥惰打æŸ�舵楕陀駄騨体堆対è€�岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代å�°å¤§ç¬¬é†�題鷹æ»�瀧å�“啄宅托択拓沢濯ç�¢è¨—é�¸æ¿�諾茸凧蛸å�ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�©ä½†é�”辰奪脱巽竪辿棚谷狸鱈樽誰丹å�˜å˜†å�¦æ‹…探旦歎淡湛炭短端箪綻耽胆蛋誕é�›å›£å£‡å¼¾æ–­æš–檀段男談値知地弛æ�¥æ™ºæ± ç—´ç¨šç½®è‡´èœ˜é�…馳築畜竹筑蓄é€�秩窒茶嫡ç�€ä¸­ä»²å®™å¿ æŠ½æ˜¼æŸ±æ³¨è™«è¡·è¨»é…Žé‹³é§�樗瀦猪苧著貯ä¸�兆凋喋寵�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帖帳åº�弔張彫徴懲挑暢æœ�潮牒町眺è�´è„¹è…¸è�¶èª¿è«œè¶…跳銚長頂鳥勅æ�—直朕沈ç��賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴é�”椿潰å�ªå£·å¬¬ç´¬çˆªå�Šé‡£é¶´äº­ä½Žå�œå�µå‰ƒè²žå‘ˆå ¤å®šå¸�底庭廷弟悌抵挺æ��梯汀碇禎程締艇訂諦蹄逓�\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸鄭釘鼎泥摘擢敵滴的笛é�©é�‘溺哲徹撤è½�迭鉄典填天展店添çº�甜貼転顛点ä¼�殿澱田電兎å��堵塗妬屠徒斗æ�œæ¸¡ç™»è�Ÿè³­é€”都é��砥砺努度土奴怒倒党冬å‡�刀å”�塔塘套宕島嶋悼投æ�­æ�±æ¡ƒæ¢¼æ£Ÿç›—淘湯涛ç�¯ç‡ˆå½“痘祷等答筒糖統到�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������董蕩藤討謄豆è¸�逃é€�é�™é™¶é ­é¨°é—˜åƒ�å‹•å�Œå ‚導憧撞洞瞳童胴è�„é�“銅峠鴇匿得徳涜特ç�£ç¦¿ç¯¤æ¯’独読栃橡凸çª�椴届鳶苫寅酉瀞噸屯惇敦沌豚é��頓呑曇éˆ�奈那内ä¹�凪薙謎ç�˜æ�ºé�‹æ¥¢é¦´ç¸„ç•·å�—楠軟難æ±�二尼å¼�迩匂賑肉虹廿日乳入�\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������如尿韮任妊å¿�èª�濡禰祢寧葱猫熱年念æ�»æ’šç‡ƒç²˜ä¹ƒå»¼ä¹‹åŸœå𢿂©æ¿ƒç´�能脳膿農覗蚤巴把播覇æ�·æ³¢æ´¾ç�¶ç ´å©†ç½µèŠ­é¦¬ä¿³å»ƒæ‹�排敗æ�¯ç›ƒç‰ŒèƒŒè‚ºè¼©é…�å€�培媒梅楳煤狽買売賠陪這è�¿ç§¤çŸ§è�©ä¼¯å‰¥å�šæ‹�æŸ�泊白箔粕舶薄迫æ›�漠爆縛莫é§�麦�\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪ä¼�罰抜ç­�閥鳩噺塙蛤隼伴判å�Šå��å�›å¸†æ�¬æ–‘æ�¿æ°¾æ±Žç‰ˆçНç�­ç•”ç¹�般藩販範釆煩頒飯挽晩番盤ç£�蕃蛮匪å�‘å�¦å¦ƒåº‡å½¼æ‚²æ‰‰æ‰¹æŠ«æ–�比泌疲皮碑秘緋罷肥被誹費é�¿é�žé£›æ¨‹ç°¸å‚™å°¾å¾®æž‡æ¯˜ç�µçœ‰ç¾Žï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鼻柊稗匹疋髭彦è†�è�±è‚˜å¼¼å¿…畢筆逼桧姫媛ç´�百謬俵彪標氷漂瓢票表評豹廟æ��病秒苗錨鋲蒜蛭鰭å“�彬斌浜瀕貧賓頻æ•�ç“¶ä¸�付埠夫婦富冨布府怖扶敷斧普浮父符è…�膚芙譜負賦赴阜附侮撫武舞葡蕪部å°�楓風葺蕗ä¼�副復幅æœ��\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç¦�腹複覆淵弗払沸ä»�物鮒分å�»å™´å¢³æ†¤æ‰®ç„šå¥®ç²‰ç³žç´›é›°æ–‡è�žä¸™ä½µå…µå¡€å¹£å¹³å¼ŠæŸ„並蔽閉陛米é �僻å£�癖碧別瞥蔑箆å��変片篇編辺返é��便勉娩å¼�éž­ä¿�舗鋪圃æ�•歩甫補輔穂募墓慕戊暮æ¯�ç°¿è�©å€£ä¿¸åŒ…呆報奉å®�峰峯崩庖抱æ�§æ”¾æ–¹æœ‹ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������法泡烹砲縫胞芳è�Œè“¬èœ‚褒訪豊邦鋒飽鳳鵬ä¹�亡å‚�剖å�Šå¦¨å¸½å¿˜å¿™æˆ¿æš´æœ›æŸ�棒冒紡肪膨謀貌貿鉾防å� é ¬åŒ—僕å�œå¢¨æ’²æœ´ç‰§ç�¦ç©†é‡¦å‹ƒæ²¡æ®†å €å¹Œå¥”本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒æ¡�亦俣å�ˆæŠ¹æœ«æ²«è¿„侭繭麿万慢満�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙ç²�民眠務夢無牟矛霧鵡椋婿娘冥å��命明盟迷銘鳴姪ç‰�æ»…å…�棉綿緬é�¢éººæ‘¸æ¨¡èŒ‚妄孟毛猛盲網耗蒙儲木黙目æ�¢å‹¿é¤…尤戻籾貰å•�æ‚¶ç´‹é–€åŒ�也冶夜爺耶野弥矢厄役約薬訳èº�é�–柳薮鑓愉愈油癒�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������諭輸唯佑優勇å�‹å®¥å¹½æ‚ æ†‚æ�–有柚湧涌猶猷由ç¥�裕誘é�Šé‚‘郵雄èž�夕予余与誉輿é �傭幼妖容庸æ�šæ�ºæ“�曜楊様洋溶熔用窯羊耀葉蓉è¦�謡踊é�¥é™½é¤Šæ…¾æŠ‘欲沃浴翌翼淀羅螺裸æ�¥èŽ±é ¼é›·æ´›çµ¡è�½é…ªä¹±å�µåµ�欄濫è—�蘭覧利å��å±¥æ�Žæ¢¨ç�†ç’ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢è£�裡里離陸律率立葎掠略劉æµ�溜ç�‰ç•™ç¡«ç²’隆竜é¾�侶慮旅虜了亮僚両凌寮料æ¢�涼猟療瞭稜糧良諒é�¼é‡�陵領力緑倫厘林淋ç‡�ç�³è‡¨è¼ªéš£é±—麟瑠å¡�涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉æ�‹æ†�漣煉簾練è�¯ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蓮連錬呂魯櫓炉賂路露労å©�廊弄朗楼榔浪æ¼�牢狼篭è€�è�¾è�‹éƒŽå…­éº“禄肋録論倭和話歪賄脇惑枠鷲亙亘é°�è©«è—�蕨椀湾碗腕��������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������弌ä¸�丕个丱丶丼丿乂乖乘亂亅豫亊舒å¼�于亞亟亠亢亰亳亶从ä»�仄仆仂仗仞仭仟价伉佚估佛ä½�佗佇佶侈ä¾�侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚ä¿�俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆å�ƒå�‡æœƒå�•å��å�ˆå�šå�–å�¬å�¸å‚€å‚šå‚…傴傲�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉å„�儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉å†�冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹å‰�剄剋剌剞剔剪剴剩剳剿剽åŠ�劔劒剱劈劑辨�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������辧劬劭劼劵å‹�å‹�勗勞勣勦飭勠勳勵勸勹匆匈甸åŒ�åŒ�åŒ�匕匚匣匯匱匳匸å�€å�†å�…丗å�‰å��凖å�žå�©å�®å¤˜å�»å�·åŽ‚åŽ–åŽ åŽ¦åŽ¥åŽ®åŽ°åŽ¶å�ƒç°’é›™å�Ÿæ›¼ç‡®å�®å�¨å�­å�ºå��å�½å‘€å�¬å�­å�¼å�®å�¶å�©å��呎å’�呵咎呟呱呷呰咒呻咀呶咄å’�咆哇咢咸咥咬哄哈咨�\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫哂咤咾咼哘哥哦å”�唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳å•�喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎å™�營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔åš�嚥嚮嚶嚴囂嚼å›�囃囀囈囎囑囓囗囮囹圀囿圄圉�\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������圈國åœ�圓團圖嗇圜圦圷圸å�Žåœ»å�€å��å�©åŸ€åžˆå�¡å�¿åž‰åž“垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙å �塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊å¤�夛梦夥夬夭夲夸夾竒奕å¥�奎奚奘奢奠奧奬奩�\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������奸å¦�å¦�佞侫妣妲姆姨姜å¦�姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲å«�嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔å¯�寤實寢寞寥寫寰寶寳尅將專å°�尓尠尢尨尸尹å±�屆屎屓�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å±�å±�孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢å¶�嶬嶮嶽å¶�嶷嶼巉å·�巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠å»�廂廈å»�å»��\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������廖廣å»�廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉å½�彜弋弑弖弩弭弸å½�彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱å¿�悳忿怡æ� æ€™æ€�怩怎怱怛怕怫怦æ€�怺æ�šæ��æ�ªæ�·æ�Ÿæ�Šæ�†æ��æ�£æ�ƒæ�¤æ�‚æ�¬æ�«æ�™æ‚�æ‚�惧悃悚�\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘æ…�愕愆惶惷愀惴惺愃愡惻惱æ„�愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟æ…�慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹æ‡�懦懣懶懺懴懿懽懼懾戀戈戉æˆ�戌戔戛�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������戞戡截戮戰戲戳æ‰�扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻æ‹�拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵æ��挾æ��æ�œæ��掖掎掀掫æ�¶æŽ£æŽ�掉掟掵æ�«æ�©æŽ¾æ�©æ�€æ�†æ�£æ�‰æ�’æ�¶æ�„æ�–æ�´æ�†æ�“æ�¦æ�¶æ”�æ�—æ�¨æ��摧摯摶摎攪撕撓撥撩撈撼�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕æ•�敘敞æ•�敲數斂斃變斛斟斫斷旃旆æ—�旄旌旒旛旙无旡旱æ�²æ˜Šæ˜ƒæ—»æ�³æ˜µæ˜¶æ˜´æ˜œæ™�晄晉æ™�晞æ™�晤晧晨晟晢晰暃暈暎暉暄暘æš�æ›�暹曉暾暼�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������曄暸曖曚曠昿曦曩曰曵曷æœ�朖朞朦朧霸朮朿朶æ��朸朷æ�†æ�žæ� æ�™æ�£æ�¤æž‰æ�°æž©æ�¼æ�ªæžŒæž‹æž¦æž¡æž…枷柯枴柬枳柩枸柤柞æŸ�柢柮枹柎柆柧檜栞框栩桀æ¡�栲桎梳栫桙档桷桿梟æ¢�梭梔æ¢�梛梃檮梹桴梵梠梺æ¤�æ¢�桾æ¤�棊椈棘椢椦棡椌æ£��\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞æ¥�æ¦�楪榲榮æ§�榿æ§�槓榾槎寨槊æ§�榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒æ«�樣樓橄樌橲樶橸橇橢橙橦橈樸樢æª�æª�檠檄檢檣�\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉æ­�歙歔歛歟歡歸歹歿殀殄殃æ®�殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂æ²�沚æ²�沛汾汨汳沒æ²�泄泱泓沽泗泅æ³�沮沱沾�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������沺泛泯泙泪洟è¡�洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶æ¹�渟湃渺湎渤滿æ¸�游溂溪溘滉溷滓溽溯滄溲滔滕æº�溥滂溟æ½�漑ç�Œæ»¬æ»¸æ»¾æ¼¿æ»²æ¼±æ»¯æ¼²æ»Œï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������漾漓滷澆潺潸æ¾�澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑ç€�ç€�濾瀛瀚潴ç€�瀘瀟瀰瀾瀲ç�‘ç�£ç‚™ç‚’炯烱炬炸炳炮烟烋çƒ�烙焉烽焜焙煥煕熈煦煢煌煖煬ç†�燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������燹燿çˆ�çˆ�爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂çŠ�犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷å€�猗猊猜猖çŒ�猴猯猩猥猾ç�Žç��默ç�—ç�ªç�¨ç�°ç�¸ç�µç�»ç�ºç�ˆç޳ç�ŽçŽ»ç�€ç�¥ç�®ç�žç’¢ç�…瑯ç�¥ç�¸ç�²ç�ºç‘•ç�¿ç‘Ÿç‘™ç‘�瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊ç“�ç“”ç�±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎ç”�甕甓甞甦甬甼畄ç•�畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚ç–�疥疣痂疳痃疵疽疸疼疱ç—�痊痒痙痣痞痾痿痼ç˜�痰痺痲痳瘋ç˜�瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂ç›�盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸ç�‡ç�šç�¨ç�«ç�›ç�¥ç�¿ç�¾ç�¹çžŽçž‹çž‘瞠瞞瞰瞶瞹瞿瞼瞽瞻矇çŸ�矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊ç¦�禧齋禪禮禳禹禺秉秕秧秬秡秣稈ç¨�稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩é¾�穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊ç«�ç«�竕竓站竚ç«�竡竢竦竭竰笂ç¬�笊笆笳笘笙笞笵笨笶ç­��\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������筺笄ç­�笋筌筅筵筥筴筧筰筱筬筮ç®�箘箟ç®�箜箚箋箒ç®�ç­�箙篋ç¯�篌ç¯�箴篆ç¯�篩簑簔篦篥籠簀簇簓篳篷簗ç°�篶簣簧簪簟簷簫簽籌籃籔ç±�ç±€ç±�籘籟籤籖籥籬籵粃ç²�粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮çµ�絣經綉絛ç¶�絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘ç·�緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧ç¹�繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒çº�纓纔纖纎纛纜缸缺�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������罅罌ç½�罎ç½�网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞ç¾�羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻è�Šè�†è�’è�˜è�šè�Ÿè�¢è�¨è�³è�²è�°è�¶è�¹è�½è�¿è‚„肆肅肛肓肚肭å†�肬胛胥胙èƒ�胄胚胖脉胯胱脛脩脣脯腋�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉è‡�臑臙臘臈臚臟臠臧臺臻臾èˆ�舂舅與舊èˆ�èˆ�舖舩舫舸舳艀艙艘è‰�艚艟艤艢艨艪艫舮艱艷艸艾èŠ�芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������茵茴茖茲茱è�€èŒ¹è��è�…茯茫茗茘莅莚莪莟莢莖茣莎莇莊è�¼è޵è�³è�µèŽ èŽ‰èŽ¨è�´è�“è�«è�Žè�½è�ƒè�˜è�‹è��è�·è�‡è� è�²è��è�¢è� è޽è�¸è”†è�»è‘­è�ªè�¼è•šè’„葷葫蒭葮蒂葩葆è�¬è‘¯è‘¹è�µè“Šè‘¢è’¹è’¿è’Ÿè“™è“�蒻蓚è“�è“�蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è•�蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾è–�藉薺è—�è–¹è—�è—•è—�藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿è™�乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉èœ�蛹蜊蜴蜿蜷蜻蜥蜩蜚è� è�Ÿè�¸è�Œè�Žè�´è�—è�¨è�®è�™ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è�“è�£è�ªè …螢螟螂螯蟋螽蟀èŸ�雖螫蟄螳蟇蟆螻蟯蟲蟠è �è �蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫è¢�衾袞衵衽袵衲袂袗袒袮袙袢è¢�袤袰袿袱裃裄裔裘裙è£�裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫è¥�襄褻褶褸襌è¤�襠襞�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜è§�觧觴觸訃訖è¨�訌訛è¨�訥訶è©�詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄è«�諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖è¬�謗謠謳鞫謦謫謾謨è­�è­Œè­�譎證譖譛譚譫�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������譟譬譯譴譽讀讌讎讒讓讖讙讚谺è±�谿豈豌豎è±�豕豢豬豸豺貂貉貅貊è²�貎貔豼貘æˆ�貭貪貽貲貳貮貶賈è³�賤賣賚賽賺賻贄贅贊贇è´�è´�è´�齎贓è³�贔贖赧赭赱赳è¶�趙跂趾趺è·�跚跖跌跛跋跪跫跟跣跼踈踉跿è¸�踞è¸�踟蹂踵踰踴蹊�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蹇蹉蹌è¹�蹈蹙蹤蹠踪蹣蹕蹶蹲蹼èº�躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡é€�逞逖逋逧逶逵逹迸�\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é��é��é�‘é�’逎é�‰é€¾é�–é�˜é�žé�¨é�¯é�¶éš¨é�²é‚‚é�½é‚�邀邊邉é‚�邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀é‡�釉釋é‡�釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋é‰�銜銖銓銛鉚é‹�銹銷鋩éŒ�鋺é�„錮�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������錙錢錚錣錺錵錻é�œé� é�¼é�®é�–鎰鎬鎭鎔鎹é�–é�—é�¨é�¥é�˜é�ƒé��é��é�ˆé�¤é�šé�”é�“é�ƒé�‡é��é�¶é�«é�µé�¡é�ºé‘�鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾é’�鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃é—�闌闕闔闖關闡闥闢阡阨阮阯陂陌é™�陋陷陜陞�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é™�陟陦陲陬éš�隘隕隗險隧隱隲隰隴隶隸隹雎雋雉é›�è¥�雜éœ�雕雹霄霆霈霓霎霑éœ�霖霙霤霪霰霹霽霾é�„é�†é�ˆé�‚é�‰é�œé� é�¤é�¦é�¨å‹’é�«é�±é�¹éž…é�¼éž�é�ºéž†éž‹éž�éž�鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭é½�韲竟韶韵é �頌頸頤頡頷頽顆é¡�顋顫顯顰�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡é¤�餞餤餠餬餮餽餾饂饉饅é¥�饋饑饒饌饕馗馘馥馭馮馼駟駛é§�駘駑駭駮駱駲駻駸é¨�é¨�騅駢騙騫騷驅驂驀驃騾驕é©�驛驗驟驢驥驤驩驫驪骭骰骼髀é«�髑髓體髞髟髢髣髦髯髫髮髴髱髷�\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃é­�é­�魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆é¯�鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒éµ�鴿鴾鵆鵈�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������éµ�鵞鵤鵑éµ�鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄é·�鶻鶸鶺鷆é·�鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽éº�麈麋麌麒麕麑éº�麥麩麸麪麭é�¡é»Œé»Žé»�é»�黔黜點é»�黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������堯槇é�™ç‘¤å‡œç†™ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[249] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������纊褜é�ˆéŠˆè“œä¿‰ç‚»æ˜±æ£ˆé‹¹æ›»å½…ä¸¨ä»¡ä»¼ä¼€ä¼ƒä¼¹ä½–ä¾’ä¾Šä¾šä¾”ä¿�å�€å€¢ä¿¿å€žå�†å�°å�‚傔僴僘兊兤å†�冾凬刕劜劦勀勛匀匇匤å�²åŽ“åŽ²å��﨎咜咊咩哿喆å�™å�¥åž¬åŸˆåŸ‡ï¨�ï¨�增墲夋奓奛å¥�奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹å·�弡弴彧德�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������忞æ��悅悊惞惕愠惲愑愷愰憘戓抦æ�µæ‘ æ’�擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗æ�¦æž»æ¡’柀æ �æ¡„æ£�﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬æ·�淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫ç„�焄煜煆煇凞ç‡�燾犱�\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������犾猤猪ç�·ç޽ç�‰ç�–ç�£ç�’ç�‡ç�µç�¦ç�ªç�©ç�®ç‘¢ç’‰ç’Ÿç”�畯皂皜皞皛皦益ç�†åŠ¯ç ¡ç¡Žç¡¤ç¡ºç¤°ï¨˜ï¨™ï¨šç¦”ï¨›ç¦›ç«‘ç«§ï¨œç««ç®žï¨�絈絜綷綠緖繒罇羡羽èŒ�è�¢è�¿è�‡è�¶è‘ˆè’´è•“蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣è»�﨤逸é�§éƒžï¨¦é„•鄧釚�\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������釗釞釭釮釤釥鈆éˆ�鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙é‹�﨧鋕鋠鋓錥錡鋻﨨錞鋿éŒ�錂é�°é�—鎤é�†é�žé�¸é�±é‘…鑈閒隆﨩éš�隯霳霻é�ƒé��é��é�‘é�•顗顥飯飼餧館馞驎髙髜魵魲é®�鮱鮻鰀鵰鵫鶴鸙黑��ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�¦'"�\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[51936] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"����������������������������������������������������������������丂丄丅丆ä¸�丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀ä¹�乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀äº�亂亃亄亅亇亊�äº�亖亗亙亜äº�亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌ä»�ä»�仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜ä¼�伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀ä½�佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀ä¾�侂侅來侇侊侌侎ä¾�侒侓侕侖侘侙侚侜侞侟価侢�\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀ä¿�係俆俇俈俉俋俌ä¿�俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀å€�倂倃倄倅倆倇倈倉倊�個倎å€�們倓倕倖倗倛å€�倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿å�€å��å�‚å�„å�…å�†å�‰å�Šå�‹å��å��å�‘å�’å�“å�”å�–å�—å�˜å�™å�›å��å�žå�Ÿå� å�¡å�¢å�£å�¤å�¦å�§å�¨å�©å�ªå�«å�­å�®å�¯å�°å�±å�²å�³å�´å�µå�¸å�¹å�ºå�¼å�½å‚�傂傃傄傆傇傉傊傋傌傎å‚�å‚�傑傒傓傔傕傖傗傘備傚傛傜å‚�傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"����������������������������������������������������������������傽傾傿僀åƒ�僂僃僄僅僆僇僈僉僊僋僌åƒ�僎åƒ�僑僒僓僔僕僗僘僙僛僜åƒ�僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀å„�儂儃億儅儈�儉儊儌å„�儎å„�å„�儑儓儔儕儖儗儘儙儚儛儜å„�儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎å…�å…�兒兓兗兘兙兛å…�兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎å†�å†�冑冓冔冘冚å†�冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿å‡�凂凃凅凈凊å‡�凎å‡�凒凓凔凕凖凗�\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌åˆ�åˆ�刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎å‰�剒剓剕剗剘�剙剚剛å‰�剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌åŠ�劎åŠ�劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀å‹�勂勄勅勆勈勊勌å‹�勎å‹�勑勓勔動勗務勚勛勜å‹�勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽åŒ�匂匃匄匇匉匊匋匌匎�\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[133] = \"����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽å�€å�‚å�„å�†å�‹å�Œå��å��å�”å�˜å�™å�›å��å�¥å�¨å�ªå�¬å�­å�²å�¶å�¹å�»å�¼å�½å�¾åŽ€åŽ�厃厇厈厊厎åŽ��åŽ�厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾å�€å�ƒå�„å�…å�†å�‡å�Žå��å��å�’å�“å�•å�šå�œå��å�žå�¡å�¢å�§å�´å�ºå�¾å�¿å�€å�‚å�…å�‡å�‹å�”å�˜å�™å�šå�œå�¢å�¤å�¥å�ªå�°å�³å�¶å�·å�ºå�½å�¿å‘�呂呄呅呇呉呌å‘�呎å‘�呑呚å‘�呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿å’�咃咅咇咈咉咊å’�咑咓咗咘咜咞咟咠咡�\".split(\"\");\n\t\tfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\n\t\tD[134] = \"����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌å”�唎唒唓唕唖唗唘唙唚唜å”�唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌å•�啎å•�啑啒啓啔啗啘啙啚啛å•�啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌å–�å–Žå–�喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀å—�嗂嗃嗆嗇嗈嗊嗋嗎å—�å—�嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�\".split(\"\");\n\t\tfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\n\t\tD[135] = \"����������������������������������������������������������������嘆嘇嘊嘋å˜�å˜�嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜å˜�嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀å™�噂噃噄噅噆噇噈噉噊噋å™�å™�噑噒噓噕噖噚噛å™�噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀åš�嚂嚃嚄嚇嚈嚉嚊嚋嚌åš�åš�嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜åš�嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀å›�囂囃囄囅囆囇囈囉囋囌å›�囎å›�å›�囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀åœ�圂圅圇國圌åœ�圎åœ�åœ�圑�\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"����������������������������������������������������������������園圓圔圕圖圗團圙圚圛åœ�圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿å��å�ƒå�„å�…å�†å�ˆå�‰å�‹å�’å�“å�”å�•å�–å�˜å�™å�¢å�£å�¥å�§å�¬å�®å�°å�±å�²å�´å�µå�¸å�¹å�ºå�½å�¾å�¿åž€ï¿½åž�垇垈垉垊åž�垎åž�åž�垑垔垕垖垗垘垙垚垜åž�垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀åŸ�埄埅埆埇埈埉埊埌åŸ�åŸ�埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿å �堃堄堅堈堉堊堌堎å �å �堒堓堔堖堗堘堚堛堜å �堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"����������������������������������������������������������������堾堿塀å¡�塂塃塅塆塇塈塉塊塋塎å¡�å¡�塒塓塕塖塗塙塚塛塜å¡�塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�å¢�墎å¢�å¢�墑墔墕墖増墘墛墜å¢�墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌å£�壎å£�å£�壒壓壔壖壗壘壙壚壛壜å£�壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀å¤�夃夅夆夈変夊夋夌夎å¤�夑夒夓夗夘夛å¤�夞夠夡夢夣夦夨夬夰夲夳夵夶夻�\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"����������������������������������������������������������������夽夾夿奀奃奅奆奊奌å¥�å¥�奒奓奙奛奜å¥�奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎å¦�å¦�妑妔妕妘妚妛妜å¦�妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀å§�姂姃姄姅姇姈姉姌å§�å§Žå§�姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋å¨�娎å¨�å¨�娒娔娕娖娗娙娚娛å¨�娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿å©�婂婃婄婅婇婈婋婌å©�婎å©�å©�婑婒婓婔婖婗婘婙婛婜å©�婞婟婠�\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀åª�媂媃媄媅媆媇媈媉媊媋媌åª�媎åª�åª�媑媓媔媕媖媗媘媙媜åª�媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋å«�嫎å«�å«�嫑嫓嫕嫗嫙嫚嫛å«�嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀å¬�嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌å¬�嬎å¬�å¬�嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜å¬�嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿å­�孂孃孄孅孆孇�\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"����������������������������������������������������������������孈孉孊孋孌å­�å­Žå­�孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊å®�宎å®�宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀å¯�寃寈寉寊寋å¯�寎å¯��寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌å°�å°Žå°�尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌å±�屒屓屔屖屗屘屚屛屜å±�屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎å²�岒岓岕å²�岞岟岠岡岤岥岦岧岨�\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌å³�峎å³�å³�峑峓峔峕峖峗峘峚峛峜å³�峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�å´�崄崅崈崉崊崋崌å´�å´�å´�崑崒崓崕崗崘崙崚崜å´�崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀åµ�嵂嵃嵄嵅嵆嵈嵉åµ�嵎åµ�åµ�嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀å¶�嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌å¶�å¶Žå¶�å¶�嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀å·�巂巃巄巆巇巈巉巊巋巌巎å·�å·�巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋å¸�帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀å¹�幃幆幇幈幉幊幋å¹�幎å¹�å¹�幑幒幓幖幗幘幙幚幜å¹�幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾åº�庂広庅庈庉庌åº�庎庒庘庛åº�庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀å»�廂廃廄廅�\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"����������������������������������������������������������������廆廇廈廋廌å»�廎å»�å»�廔廕廗廘廙廚廜å»�廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌å¼�弎å¼�弒弔弖弙弚弜å¼�弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿å½�彂彃彄彅彆彇彈彉彊彋彌å½�彎å½�彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆å¾�徎å¾�徑従徔徖徚徛å¾�從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀å¿�忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"����������������������������������������������������������������怈怉怋怌æ€�怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾æ�€æ�„æ�…æ�†æ�‡æ�ˆæ�‰æ�Šæ�Œæ�Žæ��æ�‘æ�“æ�”æ�–æ�—æ�˜æ�›æ�œæ�žæ�Ÿæ� æ�¡æ�¥æ�¦æ�®æ�±æ�²æ�´æ�µæ�·æ�¾æ‚€ï¿½æ‚�悂悅悆悇悈悊悋悎æ‚�æ‚�悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀æƒ�惂惃惄惇惈惉惌æƒ�惎æƒ�æƒ�惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌æ„�愑愒愓愔愖愗愘愙愛愜æ„�愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀æ…�慂慃慄慅慆�\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"����������������������������������������������������������������慇慉態æ…�æ…�æ…�慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀æ†�憂憃憄憅憆憇憈憉憊憌æ†�æ†�æ†�憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀æ‡�懃懄懅懆懇應懌æ‡�懎æ‡�æ‡�懓懕懖懗懘懙懚懛懜æ‡�懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀æˆ�戂戃戄戅戇戉戓戔戙戜æˆ�戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"����������������������������������������������������������������æ‰�æ‰�払扖扗扙扚扜æ‰�扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽æŠ�抂抃抅抆抇抈抋抌æŠ�抎æŠ�æŠ�抔抙抜æŠ�択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀æ‹��拃拋æ‹�æ‹‘æ‹•æ‹�拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌æŒ�æŒ�æŒ�挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿æ�€æ��æ�„æ�‡æ�ˆæ�Šæ�‘æ�’æ�“æ�”æ�–æ�—æ�˜æ�™æ�šæ�›æ�œæ��æ� æ�¤æ�¥æ�¦æ�¨æ�ªæ�«æ�¬æ�¯æ�°æ�²æ�³æ�´æ�µæ�¸æ�¹æ�¼æ�½æ�¾æ�¿æŽ�掃掄掅掆掋æŽ�掑掓掔掕掗掙掚掛掜æŽ�掞掟採掤掦掫掯掱掲掵掶掹掻掽掿æ�€ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"����������������������������������������������������������������æ��æ�‚æ�ƒæ�…æ�‡æ�ˆæ�Šæ�‹æ�Œæ�‘æ�“æ�”æ�•æ�—æ�˜æ�™æ�šæ�›æ�œæ��æ�Ÿæ�¢æ�¤æ�¥æ�¦æ�§æ�¨æ�«æ�¬æ�®æ�¯æ�°æ�±æ�³æ�µæ�·æ�¹æ�ºæ�»æ�¼æ�¾æ�ƒæ�„æ�†æ�‡æ�ˆæ�‰æ�Šæ��æ�Žæ�‘æ�’æ�•æ�–æ�—æ�˜æ�™æ�šæ��æ�Ÿæ�¢æ�£æ�¤ï¿½æ�¥æ�§æ�¨æ�©æ�«æ�®æ�¯æ�°æ�±æ�²æ�³æ�µæ�¶æ�·æ�¸æ�¹æ�»æ�¼æ�¾æ‘€æ‘‚摃摉摋摌æ‘�摎æ‘�æ‘�摑摓摕摖摗摙摚摛摜æ‘�摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀æ’�撃撆撈撉撊撋撌æ’�æ’Žæ’�æ’�撓撔撗撘撚撛撜æ’�撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿æ“�擃擄擆擇擈擉擊擋擌æ“�擑擓擔擕擖擙據�\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"����������������������������������������������������������������擛擜æ“�擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿æ”�攂攃攄攅攆攇攈攊攋攌æ”�攎æ”�æ”�攑攓攔攕攖攗攙攚攛攜æ”�攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀æ•�敂敃敄敆敇敊敋æ•�敎æ•�敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀æ–�斂斃斄斅斆斈斉斊æ–�æ–Žæ–�斒斔斕斖斘斚æ–�斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊æ—�æ—�旑旓旔旕旘旙旚旛旜æ—�旞旟旡旣旤旪旫�\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿æ˜�昄昅昇昈昉昋æ˜�æ˜�昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊æ™�晎æ™�晑晘�晙晛晜æ™�晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀æš�暃暅暆暈暉暊暋æš�暎æš�æš�暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀æ›�曂曃曄曅曆曇曈曉曊曋曌æ›�曎æ›�æ›�曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽æœ�朂會�\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"����������������������������������������������������������������朄朅朆朇朌朎æœ�朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿æ��æ�„æ�…æ�‡æ�Šæ�‹æ��æ�’æ�”æ�•æ�—æ�˜æ�™æ�šæ�›æ��æ�¢æ�£æ�¤æ�¦æ�§æ�«æ�¬æ�®æ�±æ�´æ�¶ï¿½æ�¸æ�¹æ�ºæ�»æ�½æž€æž‚枃枅枆枈枊枌æž�枎æž�枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌æŸ�柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾æ �栂栃栄栆æ �æ �栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋æ¡�æ¡�桒桖桗桘桙桚桛�\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"����������������������������������������������������������������桜æ¡�桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌æ¢�梎æ¢�梑梒梔梕梖梘梙梚梛梜æ¢�梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿æ£�棃棄棅棆棇棈棊棌棎æ£�æ£�棑棓棔棖棗棙棛棜æ£�棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌æ¤�椑椓椔椕椖椗椘椙椚椛検æ¤�椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀æ¥�楃楄楅楆楇楈楉楊楋楌æ¥�楎æ¥�æ¥�楑楒楓楕楖楘楙楛楜楟�\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿æ¦�榃榅榊榋榌榎æ¦�æ¦�榑榒榓榖榗榙榚æ¦�榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構æ§�æ§�槑槒槓槕槖槗様槙槚槜æ§�槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀æ¨�樂樃樄樅樆樇樈樉樋樌æ¨�樎æ¨�æ¨�樑樒樓樔樕樖標樚樛樜æ¨�樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀æ©�橂橃橅橆橈橉橊橋橌æ©�橎æ©�橑橒橓橔橕橖橗橚�\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"����������������������������������������������������������������橜æ©�橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿æª�檂檃檅檆檇檈檉檊檋檌æª�æª�檒檓檔檕檖檘檙檚檛檜æª�檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀æ«�櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌æ«�櫎æ«�æ«�櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜æ«�櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀æ¬�欂欃欄欅欆欇欈欉權欋欌æ¬�欎æ¬�æ¬�欑欒欓欔欕欖欗欘欙欚欛欜æ¬�欞欟欥欦欨欩欪欫欬欭欮�\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀æ­�歂歄歅歈歊歋æ­�æ­Žæ­�æ­�歑歒歓歔歕歖歗歘歚歛歜æ­�歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎æ®�æ®�殑殔殕殗殘殙殜æ®�殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎æ¯�毑毘毚毜æ¯�毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀æ°�氂氃氄氈氉氊氋氌氎氒気氜æ°�氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌æ±�汎æ±�汑汒汓汖汘�\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋æ²�沎沑沒沕沖沗沘沚沜æ²�沞沠沢沨沬沯沰沴沵沶沷沺泀æ³�泂泃泆泇泈泋æ³�泎æ³�泑泒泘�泙泚泜æ³�泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊æ´�æ´�æ´�洑洓洔洕洖洘洜æ´�洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌æµ�浕浖浗浘浛æµ�浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀æ¶�涃涄涆涇涊涋æ¶�æ¶�æ¶�涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾æ·�淂淃淈淉淊�\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"����������������������������������������������������������������æ·�æ·Žæ·�æ·�淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀æ¸�渂渃渄渆渇済渉渋æ¸�渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀æ¹�湂湅湆湇湈湉湊湋湌æ¹�æ¹�湑湒湕湗湙湚湜æ¹�湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満æº�溂溄溇溈溊溋溌æº�溎溑溒溓溔溕準溗溙溚溛æº�溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌æ»�滎æ»�滒滖滘滙滛滜æ»�滣滧滪滫滬滭滮滯�\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀æ¼�漃漄漅漇漈漊漋漌æ¼�漎æ¼�漑漒漖漗漘漙漚漛漜æ¼�漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀æ½�潂�潃潄潅潈潉潊潌潎æ½�æ½�潑潒潓潔潕潖潗潙潚潛æ½�潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀æ¾�澂澃澅澆澇澊澋æ¾�æ¾�澑澒澓澔澕澖澗澘澙澚澛æ¾�澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿æ¿�濃濄濅濆濇濈濊濋濌æ¿�濎æ¿�æ¿�濓濔濕濖濗濘濙濚濛濜æ¿�濟濢濣濤濥�\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀ç€�瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌ç€�瀎ç€�ç€�瀒瀓瀔瀕瀖瀗瀘瀙瀜ç€�瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿ç�€ç��ç�‚ç�ƒç�„ç�…ç�†ç�‡ç�ˆç�‰ç�Šç�‹ç��ç�Žç��ç�‘ç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�™ç�šç�›ç�œç��ç�Ÿç� ç�¡ç�¢ç�£ç�¤ç�¥ç�¦ç�§ç�¨ç�©ç�ªç�®ç�±ç�²ç�³ç�´ç�·ç�¹ç�ºç�»ç�½ç‚�炂炃炄炆炇炈炋炌ç‚�ç‚�ç‚�炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌çƒ�烎çƒ�çƒ�烑烒烓烔烕烖烗烚�\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"����������������������������������������������������������������烜çƒ�烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀ç„�焂焃焄焅焆焇焈焋焌ç„�焎ç„�焑焒焔焗焛焜ç„�焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀ç…�煂煃煄煆煇煈煉煋ç…�ç…�ç…�煑煒煓煔煕煖煗煘煙煚煛ç…�煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀ç†�熂熃熅熆熇熈熉熋熌ç†�熎ç†�熑熒熓熕熖熗熚熛熜ç†�熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀ç‡�燂燄燅燆燇燈燉燊燋燌ç‡�ç‡�ç‡�燑燒燓�\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"����������������������������������������������������������������燖燗燘燙燚燛燜ç‡�燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀çˆ�爂爃爄爅爇爈爉爊爋爌çˆ�爎çˆ�çˆ�爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀ç‰�牂牃牄牅牆牉牊牋牎ç‰�ç‰�牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎çŠ�犑犓犔犕犖犗犘犙犚犛犜çŠ�犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌ç‹�狑狓狔狕狖狘狚狛�\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"����������������������������������������������������������������î“�î“�î“�î“�î”��î”�î”�î”�î”� ã€�。·ˉˇ¨〃々—~‖…‘’“â€�〔〕〈〉《》「ã€�『ã€�〖〗ã€�】±×÷∶∧∨∑âˆ�∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽âˆ�≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○â—�◎◇◆□■△▲※→â†�↑↓〓�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"����������������������������������������������������������������î•�î•�î•�î•�î•��î–�ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹî�¦î�§î�¨î�©î�ªî�«â’ˆâ’‰â’Šâ’‹â’Œâ’�â’Žâ’�â’�⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀â’�⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩î�¬î�­ãˆ ãˆ¡ãˆ¢ãˆ£ãˆ¤ãˆ¥ãˆ¦ãˆ§ãˆ¨ãˆ©î�®î�¯â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©â…ªâ…«î�°î�±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"����������������������������������������������������������������î–�î–Žî–�î–�î–�î—��î—�î—Žî—�î—�î—�ï¼�"#¥%&'()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz{|ï½� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"����������������������������������������������������������������î˜�î˜�î˜�î˜�î˜��î™�ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�­ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ã‚‘ã‚’ã‚“î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"����������������������������������������������������������������î™�î™�î™�î™�îš��îš�îš�îš�îš�ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶî�½î�¾î�¿îž€îž��\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"����������������������������������������������������������������î›�î›�î›�î›�î›��îœ�ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπÏ�στυφχψωîž�îž�îž�︵︶︹︺︿﹀︽︾ï¹�﹂﹃﹄︻︼︷︸︱︳︴îž��\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"����������������������������������������������������������������îœ�îœ�îœ�îœ�î�€î��î�‚î�ƒî�„�î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ��\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿â•�║╒╓╔╕╖╗╘╙╚╛╜â•�╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳â–�▂▃▄▅▆▇�█▉▊▋▌â–�â–Žâ–�▓▔▕▼▽◢◣◤◥☉⊕〒ã€�〞îŸ�Ä�áǎàēéěèīíÇ�ìÅ�óǒòūúǔùǖǘǚǜüêɑńňɡㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩîŸ�îŸ�îŸ�îŸ��\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎ãŽ�㎜ãŽ�㎞㎡ã�„ã�Žã�‘ã�’ã�•︰¬¦℡㈱â€�ー゛゜ヽヾ〆ã‚�ゞ﹉﹊﹋﹌ï¹�﹎ï¹�ï¹�﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜ï¹�﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫〇─â”�│┃┄┅┆┇┈┉┊┋┌â”�┎â”�â”�┑┒┓└┕┖┗┘┙┚┛├â”�┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀â•�╂╃╄╅╆╇╈╉╊╋î �î �î Žî ��\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"����������������������������������������������������������������狜ç‹�狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌çŒ�çŒ�çŒ�猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽ç�€ç��ç�‚ç�ƒç�„ç�…ç�†ç�‡ç�ˆï¿½ç�‰ç�Šç�‹ç�Œç�Žç��ç�‘ç�“ç�”ç�•ç�–ç�˜ç�™ç�šç�›ç�œç��ç�žç�Ÿç�¡ç�¢ç�£ç�¤ç�¥ç�¦ç�§ç�¨ç�©ç�ªç�«ç�®ç�°ç�±î€€î€�î€�î€�î€�î€�î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî���\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"����������������������������������������������������������������ç�²ç�³ç�´ç�µç�¶ç�·ç�¸ç�¹ç�ºç�»ç�¼ç�½ç�¿çŽ€çŽ�玂玃玅玆玈玊玌çŽ�çŽ�çŽ�玒玓玔玕玗玘玙玚玜çŽ�玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿ç��ç�ƒç�„ç�…ç�†ç�‡ï¿½ç�‹ç�Œç�Žç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�šç�›ç�œç��ç�Ÿç�¡ç�¢ç�£ç�¤ç�¦ç�¨ç�ªç�«ç�¬ç�®ç�¯ç�°ç�±ç�³ç�´ç�µç�¶ç�·î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚�î‚�î‚�î‚�î‚��\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"����������������������������������������������������������������ç�¸ç�¹ç�ºç�»ç�¼ç�½ç�¾ç�¿ç�€ç��ç�‚ç�„ç�‡ç�ˆç�‹ç�Œç��ç�Žç�‘ç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�™ç�œç��ç�žç�Ÿç� ç�¡ç�£ç�¤ç�§ç�©ç�«ç�­ç�¯ç�±ç�²ç�·ç�¸ç�¹ç�ºç�»ç�½ç�¾ç�¿ç‘€ç‘‚瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌ç‘��瑎ç‘�ç‘�瑑瑒瑓瑔瑖瑘ç‘�瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺îƒ�îƒ�îƒ�îƒ�îƒ�î„�î„�î„�î„��\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌ç’�ç’�璑璒璓璔璕璖璗璘璙璚璛ç’�璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀ç“�瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌ç“�瓎ç“�ç“�瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛ç“�瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲î„�î…�î…�î…Žî…�î…�î…��\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀ç”�甂甃甅甆甇甈甉甊甋甌甎ç”�甒甔甕甖甗甛ç”�甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿ç•�畂畃畄畆畇畉畊ç•�ç•�畑畒畓畕畖畗畘�ç•�畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀ç–�疂疄疅疇î†�î†�î†�î†�î†�î‡�î‡�î‡�î‡��\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"����������������������������������������������������������������疈疉疊疌ç–�ç–Žç–�疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀ç—�痆痋痌痎ç—�ç—�痑痓痗痙痚痜ç—�痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋ç˜�瘎ç˜�瘑瘒瘓瘔瘖瘚瘜ç˜�瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽ç™�療癄î‡�îˆ�îˆ�îˆ�îˆ�îˆ��\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"����������������������������������������������������������������癅癆癇癈癉癊癋癎ç™�ç™�癑癒癓癕癗癘癙癚癛ç™�癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀çš�皃皅皉皊皌çš�çš�çš�皒皔皕皗皘皚皛�皜çš�皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀ç›�盃啊阿埃挨哎唉哀皑癌蔼矮艾ç¢�爱隘éž�氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭æ�Œæ‰’å�­å�§ç¬†å…«ç–¤å·´æ‹”è·‹é�¶æŠŠè€™å��霸罢爸白æŸ�百摆佰败拜稗斑ç�­æ�¬æ‰³èˆ¬é¢�æ�¿ç‰ˆæ‰®æ‹Œä¼´ç“£å�ŠåŠžç»Šé‚¦å¸®æ¢†æ¦œè†€ç»‘æ£’ç£…èšŒé•‘å‚�谤苞胞包褒剥�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜ç›�盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎çœ�çœ�眑眒眓眔眕眖眗眘眛眜çœ�眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿ç�‚ç�„ç�…ç�†ç�ˆç�‰ç�Šç�‹ç�Œç��ç�Žç��ç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�™ç�œè–„雹ä¿�堡饱å®�抱报暴豹é²�爆æ�¯ç¢‘悲å�‘北辈背è´�é’¡å€�狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖å¸�庇痹闭æ•�弊必辟å£�臂é�¿é™›éž­è¾¹ç¼–è´¬æ‰�便å�˜å�žè¾¨è¾©è¾«é��标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"����������������������������������������������������������������ç��ç�žç�Ÿç� ç�¤ç�§ç�©ç�ªç�­ç�®ç�¯ç�°ç�±ç�²ç�³ç�´ç�µç�¶ç�·ç�¸ç�ºç�»ç�¼çž�瞂瞃瞆瞇瞈瞉瞊瞋çž�çž�瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜çž�瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀çŸ�矂矃矄矅矆矇矈矉矊矋矌矎çŸ�çŸ�矑矒矓矔矕矖矘矙矚çŸ�矞矟矠矡矤病并玻è� æ’­æ‹¨é’µæ³¢å�šå‹ƒæ��铂箔伯帛舶脖膊渤泊驳æ�•å�œå“ºè¡¥åŸ ä¸�布步簿部怖擦猜è£�æ��æ‰�è´¢ç�¬è¸©é‡‡å½©è�œè”¡é¤�å�‚蚕残惭惨ç�¿è‹�舱仓沧è—�æ“�糙槽曹è�‰åŽ•ç­–ä¾§å†Œæµ‹å±‚è¹­æ�’å�‰èŒ¬èŒ¶æŸ¥ç¢´æ�½å¯Ÿå²”差诧拆柴豺æ�€æŽºè�‰é¦‹è°—缠铲产é˜�颤昌猖�\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎ç �ç �砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿ç¡�硂硃硄硆硈硉硊硋ç¡�ç¡�硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀ç¢�碂碃场å°�常长å�¿è‚ åŽ‚æ•žç•…å”±å€¡è¶…æŠ„é’žæœ�嘲潮巢å�µç‚’车扯撤掣彻澈郴臣辰尘晨忱沉陈è¶�衬撑称城橙æˆ�呈乘程惩澄诚承逞骋秤å�ƒç—´æŒ�匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠æ„�筹仇绸瞅丑臭åˆ�出橱厨躇锄é›�æ»�除楚�\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"����������������������������������������������������������������碄碅碆碈碊碋ç¢�ç¢�碒碔碕碖碙ç¢�碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌ç£�磎ç£�磑磒磓磖磗磘磚磛磜ç£�磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗æ��触处æ�£å·�穿椽传船喘串疮窗幢床闯创å�¹ç‚Šæ�¶é”¤åž‚春椿醇唇淳纯蠢戳绰疵茨ç£�雌辞慈瓷è¯�此刺èµ�次è�ªè‘±å›±åŒ†ä»Žä¸›å‡‘粗醋簇促蹿篡窜摧崔催脆ç˜�粹淬翠æ�‘存寸磋撮æ�“措挫错æ�­è¾¾ç­”瘩打大呆歹傣戴带殆代贷袋待逮�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"����������������������������������������������������������������ç¤�礎ç¤�ç¤�礑礒礔礕礖礗礘礙礚礛礜ç¤�礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌ç¥�祎ç¥�ç¥�祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌ç¦�禎ç¦�禑禒怠耽担丹å�•郸掸胆旦氮但惮淡诞弹蛋当挡党è�¡æ¡£åˆ€æ�£è¹ˆå€’岛祷导到稻悼é�“盗德得的蹬ç�¯ç™»ç­‰çžªå‡³é‚“堤低滴迪敌笛狄涤翟嫡抵底地蒂第å¸�弟递缔颠掂滇碘点典é�›åž«ç”µä½ƒç”¸åº—惦奠淀殿碉å�¼é›•凋åˆ�掉å�Šé’“调跌爹碟è�¶è¿­è°�å� ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"����������������������������������������������������������������禓禔禕禖禗禘禙禛禜ç¦�禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎ç§�ç§�秓秔秖秗秙秚秛秜ç§�秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿ç¨�稄稅稇稈稉稊稌ç¨�ç¨�稑稒稓稕稖稘稙稛稜ä¸�盯å�®é’‰é¡¶é¼Žé”­å®šè®¢ä¸¢ä¸œå†¬è‘£æ‡‚动栋侗æ�«å†»æ´žå…œæŠ–斗陡豆逗痘都ç�£æ¯’犊独读堵ç�¹èµŒæ�œé•€è‚šåº¦æ¸¡å¦’端短锻段断缎堆兑队对墩å�¨è¹²æ•¦é¡¿å›¤é’�盾é��掇哆多夺垛躲朵跺舵å‰�惰堕蛾峨鹅俄é¢�讹娥æ�¶åŽ„æ‰¼é��鄂饿æ�©è€Œå„¿è€³å°”饵洱二�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"����������������������������������������������������������������ç¨�稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀ç©�穂穃穄穅穇穈穉穊穋穌ç©�穎ç©�ç©�穒穓穔穕穖穘穙穚穛穜ç©�穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎çª�çª�窓窔窙窚窛窞窡窢贰å�‘罚ç­�ä¼�ä¹�阀法ç��藩帆番翻樊矾钒ç¹�凡烦å��返范贩犯饭泛å�ŠèŠ³æ–¹è‚ªæˆ¿é˜²å¦¨ä»¿è®¿çººæ”¾è�²é�žå•¡é£žè‚¥åŒªè¯½å� è‚ºåºŸæ²¸è´¹èŠ¬é…šå�©æ°›åˆ†çº·å�Ÿç„šæ±¾ç²‰å¥‹ä»½å¿¿æ„¤ç²ªä¸°å°�枫蜂峰锋风疯烽逢冯ç¼�讽奉凤佛å�¦å¤«æ•·è‚¤å­µæ‰¶æ‹‚è¾�幅氟符ä¼�俘æœ��\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀ç«�竂竃竄竅竆竇竈竉竊竌ç«�竎ç«�ç«�竑竒竓竔竕竗竘竚竛竜ç«�竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀ç¬�笂笅笇笉笌ç¬�笎ç¬�笒笓笖笗笘笚笜ç¬�笟笡笢笣笧笩笭浮涪ç¦�袱弗甫抚辅俯釜斧脯腑府è…�赴副覆赋å¤�傅付阜父腹负富讣附妇缚å’�噶嘎该改概钙盖溉干甘æ�†æŸ‘ç«¿è‚�赶感秆敢赣冈刚钢缸肛纲岗港æ� ç¯™çš‹é«˜è†�羔糕æ�žé•�稿告哥歌æ��戈鸽胳疙割é�©è‘›æ ¼è›¤é˜�隔铬个å�„给根跟耕更庚羹�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀ç­�筂筃筄筆筈筊ç­�筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿ç®�箂箃箄箆箇箈箉箊箋箌箎ç®��箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功æ�­é¾šä¾›èº¬å…¬å®«å¼“巩汞拱贡共钩勾沟苟狗垢构购够辜è�‡å’•ç®�估沽孤姑鼓å�¤è›Šéª¨è°·è‚¡æ•…顾固雇刮瓜å‰�寡挂褂乖æ‹�怪棺关官冠观管馆ç½�惯ç�Œè´¯å…‰å¹¿é€›ç‘°è§„圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚æ£�锅郭国果裹过哈�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"����������������������������������������������������������������篅篈築篊篋ç¯�篎ç¯�ç¯�篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀ç°�簂簃簄簅簆簈簉簊ç°�ç°Žç°�簑簒簓簔簕簗簘簙�簚簛簜ç°�簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩å�«æ¶µå¯’函喊罕翰撼æ��旱憾æ‚�焊汗汉夯æ�­èˆªå£•嚎豪毫éƒ�好耗å�·æµ©å‘µå–�è�·è��核禾和何å�ˆç›’貉阂河涸赫è¤�鹤贺嘿黑痕很狠æ�¨å“¼äº¨æ¨ªè¡¡æ�’轰哄烘虹鸿洪å®�弘红喉侯猴å�¼åŽšå€™å�Žå‘¼ä¹Žå¿½ç‘šå£¶è‘«èƒ¡è�´ç‹�糊湖�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎ç±�ç±�籑籒籓籔籕籖籗籘籙籚籛籜ç±�籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀ç²�粂粃粄粅粆粇�粈粊粋粌ç²�粎ç²�ç²�粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗å�ŽçŒ¾æ»‘画划化è¯�æ§�徊怀淮å��欢环桓还缓æ�¢æ‚£å”¤ç—ªè±¢ç„•涣宦幻è�’慌黄磺è�—簧皇凰惶煌晃幌æ��è°Žç�°æŒ¥è¾‰å¾½æ�¢è›”回æ¯�悔慧å�‰æƒ æ™¦è´¿ç§½ä¼šçƒ©æ±‡è®³è¯²ç»˜è�¤æ˜�婚魂浑混è±�活伙ç�«èŽ·æˆ–æƒ‘éœ�货祸击圾基机畸稽积箕�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"����������������������������������������������������������������粿糀糂糃糄糆糉糋糎ç³�ç³�糑糒糓糔糘糚糛ç³�糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀ç´�紂紃約紅紆紇紈紉紋紌ç´�ç´Žç´�ç´��紑紒紓純紕紖紗紘紙級紛紜ç´�紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉å�‰æž�棘辑ç±�集å�Šæ€¥ç–¾æ±²å�³å«‰çº§æŒ¤å‡ è„Šå·±è“ŸæŠ€å†€å­£ä¼Žç¥­å‰‚悸济寄寂计记既忌际妓继纪嘉枷夹佳家加è�šé¢Šè´¾ç”²é’¾å�‡ç¨¼ä»·æž¶é©¾å«�歼监å�šå°–笺间煎兼肩艰奸缄茧检柬碱硷拣æ�¡ç®€ä¿­å‰ªå‡�è��槛鉴践贱è§�键箭件�\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀çµ�終絃組絅絆絇絈絉絊絋経çµ�絎çµ�çµ�絑絒絓絔絕絖絗絘絙絚絛絜çµ�絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀ç¶�綂綃綄綅綆綇綈綉綊綋綌ç¶�ç¶Žç¶�ç¶�綑綒經綔綕綖綗綘å�¥èˆ°å‰‘饯æ¸�溅涧建僵姜将浆江疆蒋桨奖讲匠酱é™�蕉椒ç¤�焦胶交郊浇骄娇嚼æ�…铰矫侥脚狡角饺缴绞剿教酵轿较å�«çª–æ�­æŽ¥çš†ç§¸è¡—阶截劫节桔æ�°æ�·ç�«ç«­æ´�结解å§�戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进é�³æ™‹ç¦�近烬浸�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"����������������������������������������������������������������継続綛綜ç¶�綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀ç·�緂緃緄緅緆緇緈緉緊緋緌ç·�ç·Žç·�ç·�緑緒緓緔緕緖緗緘緙�線緛緜ç·�緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲è�†å…¢èŒŽç�›æ™¶é²¸äº¬æƒŠç²¾ç²³ç»�井警景颈é�™å¢ƒæ•¬é•œå¾„ç—‰é�–竟竞净炯窘æ�ªç©¶çº çŽ–éŸ­ä¹…ç�¸ä¹�酒厩救旧臼舅咎就疚鞠拘狙疽居驹è�Šå±€å’€çŸ©ä¸¾æ²®è�šæ‹’æ�®å·¨å…·è·�踞锯俱å�¥æƒ§ç‚¬å‰§æ��鹃娟倦眷å�·ç»¢æ’…攫抉掘倔爵觉决诀ç»�å�‡è�Œé’§å†›å�›å³»ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"����������������������������������������������������������������緻緼緽緾緿縀ç¸�縂縃縄縅縆縇縈縉縊縋縌ç¸�縎ç¸�ç¸�縑縒縓縔縕縖縗縘縙縚縛縜ç¸�縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌ç¹�繎ç¹�ç¹�繑繒繓織繕繖繗繘繙繚繛繜ç¹�俊竣浚郡éª�喀咖å�¡å’¯å¼€æ�©æ¥·å‡¯æ…¨åˆŠå ªå‹˜å�Žç �看康慷糠扛抗亢炕考拷烤é� å�·è‹›æŸ¯æ£µç£•颗科壳咳å�¯æ¸´å…‹åˆ»å®¢è¯¾è‚¯å•ƒåž¦æ�³å�‘å�­ç©ºæ��孔控抠å�£æ‰£å¯‡æž¯å“­çªŸè‹¦é…·åº“裤夸垮挎跨胯å�—筷侩快宽款匡ç­�狂框矿眶旷况äº�盔岿窥葵奎é­�傀�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀çº�纃纄纅纆纇纈纉纊纋續çº�纎çº�çº�纑纒纓纔纕纖纗纘纙纚纜çº�纞�纮纴纻纼绖绤绬绹缊ç¼�缞缷缹缻缼缽缾缿罀ç½�罃罆罇罈罉罊罋罌ç½�罎ç½�罒罓馈愧溃å�¤æ˜†æ�†å›°æ‹¬æ‰©å»“阔垃拉喇蜡腊辣啦莱æ�¥èµ–è“�婪æ �拦篮阑兰澜谰æ�½è§ˆæ‡’缆烂滥ç�…榔狼廊郎朗浪æ�žåŠ³ç‰¢è€�佬姥酪烙æ¶�å‹’ä¹�雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨çŠ�黎篱狸离漓ç�†æ�Žé‡Œé²¤ç¤¼èމè�”å��栗丽厉励砾历利傈例ä¿��\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"����������������������������������������������������������������罖罙罛罜ç½�罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋ç¾�ç¾�ç¾�羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋ç¿�ç¿�ç¿�翑習翓翖翗翙翚翛翜ç¿�翞翢翣痢立粒沥隶力璃哩俩è�”莲连镰廉怜涟帘敛脸链æ�‹ç‚¼ç»ƒç²®å‡‰æ¢�粱良两辆é‡�晾亮谅撩è�Šåƒšç–—燎寥辽潦了撂镣廖料列裂烈劣猎ç�³æž—磷霖临邻鳞淋凛èµ�å��拎玲è�±é›¶é¾„铃伶羚凌ç�µé™µå²­é¢†å�¦ä»¤æºœç�‰æ¦´ç¡«é¦�留刘瘤æµ�柳六龙è�‹å’™ç¬¼çª¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎è€�耑耓耚耛è€�耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾è�€è��è�„è�…è�‡è�ˆè�‰è�Žè��è��è�‘è�“è�•è�–è�—�è�™è�›è�œè��è�žè�Ÿè� è�¡è�¢è�£è�¤è�¥è�¦è�§è�¨è�«è�¬è�­è�®è�¯è�°è�²è�³è�´è�µè�¶è�·è�¸è�¹è�ºè�»è�¼è�½éš†åž„拢陇楼娄æ�‚篓æ¼�陋芦å�¢é¢…åº�炉掳å�¤è™�é²�麓碌露路赂鹿潞禄录陆戮驴å�•é“�侣旅履屡缕虑氯律率滤绿峦挛孪滦å�µä¹±æŽ ç•¥æŠ¡è½®ä¼¦ä»‘沦纶论è��螺罗逻锣箩骡裸è�½æ´›éª†ç»œå¦ˆéº»çŽ›ç �蚂马骂嘛å�—埋买麦å�–迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"����������������������������������������������������������������è�¾è‚�肂肅肈肊è‚�肎è‚�è‚�肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋èƒ�èƒ�胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀è„�脃脄脅脇脈脋�脌脕脗脙脛脜è„�脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆å�¯èŒ‚冒帽貌贸么玫枚梅酶霉煤没眉媒é•�æ¯�美昧å¯�妹媚门闷们è�Œè’™æª¬ç›Ÿé”°çŒ›æ¢¦å­Ÿçœ¯é†šé�¡ç³œè¿·è°œå¼¥ç±³ç§˜è§…泌蜜密幂棉眠绵冕å…�勉娩缅é�¢è‹—æ��çž„è—�秒渺庙妙蔑ç�­æ°‘抿皿æ•�悯闽明螟鸣铭å��命谬摸�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"����������������������������������������������������������������腀è…�腂腃腄腅腇腉è…�è…Žè…�腒腖腗腘腛腜è…�腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸è†�膃膄膅膆膇膉膋膌è†�膎è†�膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋è‡�臎è‡�è‡�臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟æŸ�拇牡亩姆æ¯�墓暮幕募慕木目ç�¦ç‰§ç©†æ‹¿å“ªå‘�钠那娜纳氖乃奶è€�奈å�—男难囊挠脑æ�¼é—¹æ·–å‘¢é¦�内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵æ�»å¿µå¨˜é…¿é¸Ÿå°¿æ��è�‚孽啮镊é•�涅您柠狞å‡�å®��\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"����������������������������������������������������������������臔臕臖臗臘臙臚臛臜è‡�臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎èˆ�舑舓舕舖舗舘舙舚èˆ�舠舤舥舦舧舩舮舲舺舼舽舿�艀è‰�艂艃艅艆艈艊艌è‰�艎è‰�艑艒艓艔艕艖艗艙艛艜è‰�艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖è™�疟挪懦糯诺哦欧鸥殴藕呕å�¶æ²¤å•ªè¶´çˆ¬å¸•怕ç�¶æ‹�排牌徘湃派攀潘盘ç£�盼畔判å�›ä¹“庞æ—�耪胖抛咆刨炮è¢�跑泡呸胚培裴赔陪é…�佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋é¹�æ�§ç¢°å�¯ç ’霹批披劈ç�µæ¯—�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀èŠ�芃芅芆芇芉芌èŠ�芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉è‹�苖苙苚è‹�苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋èŒ�èŒ�茒茓茖茘茙èŒ�茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻å±�譬篇å��片骗飘漂瓢票撇瞥拼频贫å“�è�˜ä¹’å�ªè‹¹è��平凭瓶评å±�å�¡æ³¼é¢‡å©†ç ´é­„迫粕剖扑铺仆莆葡è�©è’²åŸ”朴圃普浦谱æ›�瀑期欺栖戚妻七凄漆柒æ²�其棋奇歧畦崎è„�é½�旗祈ç¥�骑起岂乞ä¼�å�¯å¥‘砌器气迄弃汽泣讫æŽ��\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"����������������������������������������������������������������茾茿è��è�‚è�„è�…è�ˆè�Šè�‹è�Œè��è�Žè�“è�•è�–è�—è�˜è�™è��è�¢è�°è�±è�²è�³è�´è�µè�¶è�¹è�ºè�¾è�¿èŽ€èŽ�莂莃莄莇莈莊莋莌èŽ�èŽ�èŽ�莑莔莕莖莗莙莚èŽ�莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿è�‚è�ƒè�„è�†è�ˆè�‰è�‹è��è�Žè��è�‘è�’è�“è�•è�—è�™è�šè�›è�žè�¢è�£è�¤è�¦è�§è�¨è�«è�¬è�­æ�°æ´½ç‰µæ‰¦é’Žé“…å�ƒè¿�签仟谦乾黔钱钳å‰�潜é�£æµ…谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭ä¿�çª�切茄且怯窃钦侵亲秦ç�´å‹¤èŠ¹æ“’ç¦½å¯�æ²�é�’轻氢倾å�¿æ¸…擎晴氰情顷请庆ç�¼ç©·ç§‹ä¸˜é‚±ç�ƒæ±‚囚酋泅趋区蛆曲躯屈驱渠�\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"����������������������������������������������������������������è�®è�¯è�³è�´è�µè�¶è�·è�ºè�»è�¼è�¾è�¿è�€è�‚è�…è�‡è�ˆè�‰è�Šè��è�’è�“è�”è�•è�–è�—è�™è�šè�›è�žè�Ÿè� è�¡è�¢è�£è�©è�ªè�«è�¬è�­è�®è�¯è�°è�²è�³è�´è�µè�¶è�·è�¹è�ºè�»è�¾è�¿è‘€è‘�葂葃葄葅葇葈葉�葊葋葌è‘�葎è‘�è‘�葒葓葔葕葖葘è‘�葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼å�–娶龋趣去圈颧æ�ƒé†›æ³‰å…¨ç—Šæ‹³çŠ¬åˆ¸åŠ�缺炔瘸å�´é¹Šæ¦·ç¡®é›€è£™ç¾¤ç„¶ç‡ƒå†‰æŸ“瓤壤攘嚷让饶扰绕惹热壬ä»�人å¿�韧任认刃妊纫扔ä»�日戎茸蓉è�£èž�熔溶容绒冗æ�‰æŸ”肉茹蠕儒孺如辱乳æ±�入褥软阮蕊瑞é”�闰润若弱撒洒è�¨è…®é³ƒå¡žèµ›ä¸‰å���\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"����������������������������������������������������������������葽葾葿蒀è’�蒃蒄蒅蒆蒊è’�è’�è’�蒑蒒蒓蒔蒕蒖蒘蒚蒛è’�蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎è“�蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀è”�蔂伞散桑嗓丧æ�”骚扫嫂瑟色涩森僧莎砂æ�€åˆ¹æ²™çº±å‚»å•¥ç…žç­›æ™’ç�Šè‹«æ�‰å±±åˆ ç…½è¡«é—ªé™•擅赡膳善汕扇缮墒伤商èµ�晌上尚裳梢æ�Žç¨�烧èŠ�勺韶少哨邵ç»�奢赊蛇舌èˆ�赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲å�‡ç»³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋è”�蔎è”�è”�蔒蔔蔕蔖蔘蔙蔛蔜è”�蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀è•�蕂蕄蕅蕆蕇蕋蕌è•�蕎è•�è•�蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜è•�蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀è–�çœ�盛剩胜圣师失狮施湿诗尸虱å��石拾时什食蚀实识å�²çŸ¢ä½¿å±Žé©¶å§‹å¼�示士世柿事拭誓é€�势是嗜噬适仕ä¾�释饰æ°�市æ�ƒå®¤è§†è¯•收手首守寿授售å�—瘦兽蔬枢梳殊抒输å�”舒淑ç–�书赎孰熟薯暑曙署蜀é»�鼠属术述树æ�Ÿæˆ�竖墅庶数漱�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"����������������������������������������������������������������薂薃薆薈薉薊薋薌è–�è–Žè–�薑薒薓薔薕薖薗薘薙薚è–�薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌è—�藎藑藒�藔藖藗藘藙藚藛è—�藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸æ�•刷è€�摔衰甩帅栓拴霜å�Œçˆ½è°�æ°´ç�¡ç¨Žå�®çž¬é¡ºèˆœè¯´ç¡•朔çƒ�斯撕嘶æ€�ç§�å�¸ä¸�死肆寺嗣四伺似饲巳æ�¾è€¸æ€‚颂é€�宋讼诵æ�œè‰˜æ“žå—½è‹�酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋éš�绥髓碎å²�ç©—é�‚隧祟孙æ�Ÿç¬‹è“‘梭唆缩ç��ç´¢é”�所塌他它她塔�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"����������������������������������������������������������������藹藺藼藽藾蘀è˜�蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌è˜�蘎è˜�è˜�蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜è˜�蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�è™�虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜è™�號虠虡虣虤虥虦虧虨虩虪ç�­æŒžè¹‹è¸�胎苔抬å�°æ³°é…žå¤ªæ€�æ±°å��摊贪瘫滩å�›æª€ç—°æ½­è°­è°ˆå�¦æ¯¯è¢’碳探å�¹ç‚­æ±¤å¡˜æ�ªå ‚棠膛å”�糖倘躺淌趟烫æŽ�涛滔绦è�„桃逃淘陶讨套特藤腾疼誊梯剔踢锑æ��题蹄啼体替åš�惕涕剃屉天添填田甜æ�¬èˆ”腆挑æ�¡è¿¢çœºè·³è´´é“�帖厅å�¬çƒƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎èš�èš�蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿è›�蛂蛃蛅蛈蛌è›�蛒蛓蛕蛖蛗蛚蛜�è›�蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿èœ�蜄蜅蜆蜋蜌蜎èœ�èœ�蜑蜔蜖汀廷å�œäº­åº­æŒºè‰‡é€šæ¡�酮瞳å�Œé“œå½¤ç«¥æ¡¶æ�…筒统痛å�·æŠ•头é€�凸秃çª�图徒途涂屠土å��å…”æ¹�团推颓腿蜕褪退å�žå±¯è‡€æ‹–托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄å¨��\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"����������������������������������������������������������������蜙蜛èœ�蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽è�€è��è�‚è�ƒè�„è�…è�†è�Šè�‹è��è��è��è�‘è�’è�”è�•è�–è�˜è�šè�›è�œè��è�žè�Ÿè�¡è�¢è�¦è�§è�¨è�©è�ªè�«è�¬è�­è�¯è�±è�²è�³è�µï¿½è�·è�¸è�¹è�ºè�¿èž€èž�螄螆螇螉螊螌螎èž�èž�螑螒螔螕螖螘螙螚螛螜èž�螞螠螡螢螣螤å·�å¾®å�±éŸ¦è¿�桅围唯惟为æ½�维苇è�Žå§”伟伪尾纬未蔚味ç•�胃喂é­�ä½�渭谓尉慰å�«ç˜Ÿæ¸©èšŠæ–‡é—»çº¹å�»ç¨³ç´Šé—®å—¡ç¿�ç“®æŒ�蜗涡çª�我斡å�§æ�¡æ²ƒå·«å‘œé’¨ä¹Œæ±¡è¯¬å±‹æ— èŠœæ¢§å�¾å�´æ¯‹æ­¦äº”æ�‚å�ˆèˆžä¼�ä¾®å�žæˆŠé›¾æ™¤ç‰©å‹¿åŠ¡æ‚Ÿè¯¯æ˜”ç†™æž�西硒矽晰嘻å�¸é”¡ç‰ºï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿èŸ�蟂蟃蟄蟅蟇蟈蟉蟌èŸ�蟎èŸ�èŸ�蟔蟕蟖蟗蟘蟙蟚蟜èŸ�蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀è �蠂蠄蠅蠆蠇蠈蠉蠋蠌è �è Žè �è �蠑蠒蠔蠗蠘蠙蠚蠜è �蠞蠟蠠蠣稀æ�¯å¸Œæ‚‰è†�夕惜熄烯溪æ±�犀檄袭席习媳喜铣洗系隙æˆ�细瞎虾匣霞辖暇峡侠狭下厦å¤�å�“掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷é™�线相厢镶香箱襄湘乡翔祥详想å“�享项巷橡åƒ�å�‘象è�§ç¡�霄削哮嚣销消宵淆晓�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿è¡�衂衃衆衇衈衉衊衋衎è¡�è¡�衑衒術衕衖衘衚衛衜è¡�衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎è¢�è¢�袑袓袔袕袗袘袙袚袛è¢�袞袟袠袡袣袥袦袧袨袩袪å°�å­�校肖啸笑效楔些歇è�Žéž‹å��挟æ�ºé‚ªæ–œèƒ�è°�写械å�¸èŸ¹æ‡ˆæ³„泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸æ��性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须å¾�许蓄酗å�™æ—­åº�畜æ�¤çµ®å©¿ç»ªç»­è½©å–§å®£æ‚¬æ—‹çŽ„ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌è£�è£�è£�裑裓裖裗裚裛補è£�裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀è¤�褃褄褅褆複褈�褉褋褌è¤�褎è¤�褑褔褕褖褗褘褜è¤�褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚é�´è–›å­¦ç©´é›ªè¡€å‹‹ç†�循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹ç›�严研蜒岩延言颜阎炎沿奄掩眼è¡�演艳堰燕厌砚é›�å”�彦焰宴谚验殃央鸯秧æ�¨æ‰¬ä½¯ç–¡ç¾Šæ´‹é˜³æ°§ä»°ç—’养样漾邀腰妖瑶�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌è¥�襎è¥�è¥�襑襒襓襔襕襖襗襘襙襚襛襜è¥�襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌è¦�覎è¦�è¦�覑覒覓覔覕視覗覘覙覚覛覜è¦�覞覟覠覡摇尧é�¥çª‘谣姚咬舀è�¯è¦�耀椰噎耶爷野冶也页掖业å�¶æ›³è…‹å¤œæ¶²ä¸€å£¹åŒ»æ�–铱ä¾�伊衣é¢�夷é�—移仪胰疑沂宜姨å½�椅èš�倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔æ„�毅忆义益溢诣议谊译异翼翌绎茵è�«å› æ®·éŸ³é˜´å§»å�Ÿé“¶æ·«å¯…饮尹引éš��\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃è§�觓觔觕觗觘觙觛è§�觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿è¨�訂訃訄訅訆計訉訊訋訌è¨�討è¨�è¨�訑訒訓訔訕訖託記訙訚訛訜è¨�å�°è‹±æ¨±å©´é¹°åº”缨莹è�¤è�¥è�§è�‡è¿Žèµ¢ç›ˆå½±é¢–硬映哟拥佣臃痈庸é›�踊蛹å’�泳涌永æ�¿å‹‡ç”¨å¹½ä¼˜æ‚ å¿§å°¤ç”±é‚®é“€çŠ¹æ²¹æ¸¸é…‰æœ‰å�‹å�³ä½‘釉诱å�ˆå¹¼è¿‚淤于盂榆虞愚舆余俞逾鱼愉æ¸�渔隅予娱雨与屿禹宇语羽玉域芋éƒ�å��é�‡å–»å³ªå¾¡æ„ˆæ¬²ç‹±è‚²èª‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀è©�詂詃詄詅詆詇詉詊詋詌è©�詎è©�è©�詑詒詓詔評詖詗詘詙詚詛詜è©�詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣è¢�原æ�´è¾•园员圆猿æº�缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨å…�è¿�è•´é…�晕韵孕åŒ�ç ¸æ�‚栽哉ç�¾å®°è½½å†�在咱攒暂赞赃è„�葬é�­ç³Ÿå‡¿è—»æž£æ—©æ¾¡èš¤èº�噪造皂ç�¶ç‡¥è´£æ‹©åˆ™æ³½è´¼æ€Žå¢žæ†Žæ›¾èµ æ‰Žå–³æ¸£æœ­è½§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"����������������������������������������������������������������èª�誂誃誄誅誆誇誈誋誌èª�誎èª�èª�誑誒誔誕誖誗誘誙誚誛誜èª�語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀è«�諂�諃諄諅諆談諈諉諊請諌è«�諎è«�è«�諑諒諓諔諕論諗諘諙諚諛諜è«�諞諟諠諡諢諣铡闸眨栅榨咋ä¹�炸诈摘斋宅窄债寨瞻毡詹粘沾ç›�斩辗崭展蘸栈å� æˆ˜ç«™æ¹›ç»½æ¨Ÿç« å½°æ¼³å¼ æŽŒæ¶¨æ�–丈å¸�账仗胀瘴障招昭找沼赵照罩兆肇å�¬é�®æŠ˜å“²è›°è¾™è€…锗蔗这浙ç��斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣ç��å¾�狰争怔整拯正政�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀è¬�謂謃謄謅謆謈謉謊謋謌è¬�謎è¬�è¬�謑謒謓謔謕謖謗謘謙謚講謜è¬�謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀è­�譂譃譄譅帧症郑è¯�èŠ�æž�支å�±èœ˜çŸ¥è‚¢è„‚æ±�之织è�Œç›´æ¤�殖执值侄å�€æŒ‡æ­¢è¶¾å�ªæ—¨çº¸å¿—挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终ç§�è‚¿é‡�仲众舟周州洲诌粥轴肘帚咒皱宙昼骤ç� æ ªè››æœ±çŒªè¯¸è¯›é€�竹烛煮拄瞩嘱主著柱助蛀贮铸筑�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"����������������������������������������������������������������譆譇譈證譊譋譌è­�è­Žè­�è­�譑譒譓譔譕譖譗識譙譚譛譜è­�譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀è®�讂讃讄讅讆�讇讈讉變讋讌è®�讎è®�è®�讑讒讓讔讕讖讗讘讙讚讛讜è®�讞讟讬讱讻诇è¯�诪谉谞ä½�注ç¥�驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘å� ç¼€è°†å‡†æ�‰æ‹™å�“桌ç�¢èŒ�酌啄ç�€ç�¼æµŠå…¹å’¨èµ„姿滋淄孜紫仔籽滓å­�自æ¸�字鬃棕踪宗综总纵邹走å¥�æ��ç§Ÿè¶³å�’æ—�祖诅阻组钻纂嘴醉最罪尊é�µæ˜¨å·¦ä½�柞å�šä½œå��座î ��\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋è±�豎è±�è±�豑豒豓豔豖豗豘豙豛豜è±�豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀è²�貃貄貆貇�貈貋è²�貎è²�è²�貑貒貓貕貖貗貙貚貛貜è²�貞貟負財貢貣貤貥貦貧貨販貪貫責貭äº�丌兀ä¸�廿å�…丕亘丞鬲孬噩丨禺丿匕乇夭爻å�®æ°�囟胤馗毓ç�¾é¼—丶亟é¼�乜乩亓芈孛啬å˜�仄åŽ�åŽ�厣厥厮é�¥èµ�匚å�µåŒ¦åŒ®åŒ¾èµœå�¦å�£åˆ‚刈刎刭刳刿剀剌剞剡剜蒯剽劂åŠ�åŠ�劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚ä½��\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀è³�賂賃賄賅賆資賈賉賊賋賌è³�賎è³�è³�賑賒賓賔賕賖賗賘賙賚賛賜è³�賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀è´�贂贃贄贅贆贇贈贉贊贋贌è´�佟佗伲伽佶佴侑侉侃ä¾�佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩å�Œä¿³å€¬å€�倮倭俾倜倌倥倨å�¾å�ƒå�•å�ˆå�Žå�¬å�»å‚¥å‚§å‚©å‚ºåƒ–儆僭僬僦僮儇儋ä»�氽佘佥俎龠汆籴兮巽黉馘å†�夔勹åŒ�訇åŒ�凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"����������������������������������������������������������������贎è´�è´�贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌è¶�è¶Žè¶�è¶�趒趓趕趖趗趘趙趚趛趜è¶�趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀è·�跂跅跇跈跉跊è·�è·�跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋è¯�诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌è°�谑谒谔谕谖谙谛谘è°�谟谠谡谥谧谪谫谮谯谲谳谵谶å�©å�ºé˜�阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈éš�éš—éš°é‚—é‚›é‚�邙邬邡邴邳邶邺�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀è¸�踂踃踄踆踇踈踋è¸�踎è¸�踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌è¹�蹎è¹�è¹�蹓蹔蹕蹖蹗蹘蹚蹛蹜è¹�蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰éƒ�郅邾éƒ�郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆åˆ�奂劢劬劭劾哿å‹�å‹–å‹°å�Ÿç‡®çŸ�廴凵凼鬯厶å¼�畚巯å�Œåž©åž¡å¡¾å¢¼å£…壑圩圬圪圳圹圮圯å�œåœ»å�‚å�©åž…å�«åž†å�¼å�»å�¨å�­å�¶å�³åž­åž¤åžŒåž²åŸ�垧垴垓垠埕埘埚埙埒垸埴埯埸埤åŸ��\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌èº�躎躑躒躓躕躖躗躘躙躚躛èº�躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀è»�軂�軃軄軅軆軇軈軉車軋軌è»�è»�è»�軑軒軓軔軕軖軗軘軙軚軛軜è»�軞軟軠軡転軣軤堋å �埽埭堀堞堙塄堠塥塬å¢�墉墚墀馨鼙懿艹艽艿èŠ�芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌è‹�芩芴芡芪芟苄苎芤苡茉苷苤èŒ�茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜è�‘è�›è�œèŒˆèŽ’èŒ¼èŒ´èŒ±èŽ›è�žèŒ¯è��è�‡è�ƒè�Ÿè�€èŒ—è� èŒ­èŒºèŒ³è�¦è�¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀è¼�輂較輄輅輆輇輈載輊輋輌è¼�輎è¼�è¼�輑輒輓輔輕輖輗輘輙輚輛輜è¼�輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀è½�轂轃轄è�¨èŒ›è�©è�¬è�ªè�­è�®èްè�¸èŽ³èŽ´èŽ èŽªèŽ“èŽœèŽ…è�¼èŽ¶èŽ©è�½èޏè�»èŽ˜èŽžèŽ¨èŽºèŽ¼è��è��è�¥è�˜å ‡è�˜è�‹è��è�½è�–è�œè�¸è�‘è�†è�”è�Ÿè��è�ƒè�¸è�¹è�ªè�…è�€è�¦è�°è�¡è‘œè‘‘葚葙葳蒇蒈葺蒉葸è�¼è‘†è‘©è‘¶è’Œè’Žè�±è‘­è“�è“�è“�蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌ç”�蔸蓰蔹蔟蔺�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"����������������������������������������������������������������轅轆轇轈轉轊轋轌è½�轎è½�è½�轑轒轓轔轕轖轗轘轙轚轛轜è½�轞轟轠轡轢轣轤轥轪辀辌辒è¾�辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌è¿�è¿�迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇è–�蕹薮薜薅薹薷薰藓è—�藜藿蘧蘅蘩蘖蘼廾弈夼å¥�耷奕奚奘åŒ�尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹æ�‹æ�ƒæŽ­æ�¶æ�±æ�ºæŽŽæŽ´æ�­æŽ¬æŽŠæ�©æŽ®æŽ¼æ�²æ�¸æ� æ�¿æ�„æ�žæ�Žæ‘’æ�†æŽ¾æ‘…æ‘�æ�‹æ�›æ� æ�Œæ�¦æ�¡æ‘žæ’„摭撖�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿é�€é�ƒé�…é�†é�ˆé�‰é�Šé�‹é�Œé�Žé�”é�•é�–é�™é�šé�œé��é�žé�Ÿé� é�¡é�¤é�¦é�§é�©é�ªé�«é�¬é�¯é�°é�±é�²é�³é�¶é�·é�¸é�¹é�ºé�»é�¼é�¾é‚��還邅邆邇邉邊邌é‚�邎é‚�é‚�邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀æ“�擗擤擢攉攥攮弋忒甙弑å�Ÿå�±å�½å�©å�¨å�»å�’å�–å�†å‘‹å‘’呓呔呖呃å�¡å‘—å‘™å�£å�²å’‚咔呷呱呤咚咛咄呶呦å’�å“�咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤å“�å“�哞唛哧唠哽唔哳唢唣å”�唑唧唪啧å–�喵啉啭å•�啕唿å•�唼�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"����������������������������������������������������������������郂郃郆郈郉郋郌éƒ�郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀é„�鄃鄅鄆鄇鄈鄉鄊鄋鄌é„�鄎é„�é„�鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�é„�鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀é…�酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈å–�喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦å—�嗄嗯嗥嗲嗳嗌å—�嗨嗵嗤辔嘞嘈嘌å˜�嘤嘣嗾嘀嘧嘭噘嘹噗嘬å™�噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗å›�囡囵囫囹囿圄圊圉圜å¸�帙帔帑帱帻帼�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀é†�醂醃醄醆醈醊醎é†�醓醔醕醖醗醘醙醜é†�醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀é‡�釂釃釄釅釆釈釋é‡�釒釓釔釕釖釗釘釙釚釛é‡�釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺å²�å²�岖岈岘岙岑岚岜岵岢岽岬岫岱岣å³�岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯åµ�嵫嵋嵊嵩嵴嶂嶙å¶�豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃ç‹�狎ç‹�狒狨狯狩狲狴狷çŒ�狳猃狺�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀éˆ�鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌éˆ�鈎éˆ�éˆ�鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜éˆ�鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀é‰�鉂鉃鉄鉅狻猗猓猡猊猞çŒ�猕猢猹猥猬猸猱ç��ç��ç�—ç� ç�¬ç�¯ç�¾èˆ›å¤¥é£§å¤¤å¤‚饣饧饨饩饪饫饬饴饷饽馀馄馇馊é¦�é¦�馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖å¿�怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛æ€�æ€�怩怫怊怿怡æ�¸æ�¹æ�»æ�ºæ�‚�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌é‰�鉎é‰�é‰�鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜é‰�鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀éŠ�銂銃銄銅�銆銇銈銉銊銋銌éŠ�éŠ�éŠ�銑銒銓銔銕銖銗銘銙銚銛銜éŠ�銞銟銠銡銢銣銤銥銦銧æ�ªæ�½æ‚–悚悭æ‚�悃悒悌悛惬悻悱æƒ�惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵å¿�隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌é˜�é˜�阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅æ²�沔沌汨汩汴汶沆沩æ³�泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀é‹�鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌é‹�鋎é‹�é‹�鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜é‹�鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀éŒ�錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫æµ�洮洵洚æµ�浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦æ·�淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴æ»�æº�滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉æ¾�澌潸潲潼潺濑�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"����������������������������������������������������������������錊錋錌éŒ�錎éŒ�éŒ�錑錒錓錔錕錖錗錘錙錚錛錜éŒ�錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰ï¿½é�Šé�‹é�Œé��é�Žé��é��é�‘é�’é�“é�”é�•é�–é�—é�˜é�™é�šé�›é�œé��é�žé�Ÿé� é�¡é�¢é�£é�¤é�¥é�¦é�§é�¨é�©é�«æ¿‰æ¾§æ¾¹æ¾¶æ¿‚濡濮濞濠濯瀚瀣瀛瀹瀵ç��ç�žå®€å®„宕宓宥宸甯骞æ�´å¯¤å¯®è¤°å¯°è¹‡è¬‡è¾¶è¿“迕迥迮迤迩迦迳迨逅逄逋逦逑é€�逖逡逵逶逭逯é�„é�‘é�’é��é�¨é�˜é�¢é�›æš¹é�´é�½é‚‚邈邃邋å½�彗彖彘尻咫å±�屙孱屣屦羼弪弩弭艴弼鬻屮å¦�妃å¦�妩妪妣�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"����������������������������������������������������������������é�¬é�­é�®é�¯é�°é�±é�²é�³é�´é�µé�¶é�·é�¸é�¹é�ºé�»é�¼é�½é�¾é�¿éŽ€éŽ�鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌éŽ�鎎éŽ�鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜éŽ�鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰é�‹é�Œé��妗姊妫妞妤姒妲妯姗妾娅娆å§�娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀éª�骅骈骊éª�骒骓骖骘骛骜éª�骟骠骢骣骥骧纟纡纣纥纨纩�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"����������������������������������������������������������������é�Žé��é��é�‘é�’é�“é�”é�•é�—é�˜é�™é�šé�›é�œé��é�žé�Ÿé� é�¡é�¢é�£é�¤é�¥é�¦é�§é�¨é�©é�ªé�«é�¬é�­é�®é�¯é�°é�±é�²é�³é�´é�µé�¶é�·é�¸é�¹é�ºé�»é�¼é�½é�¾é�¿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰é�Šé�‹é�Œé���é�Žé��é��é�‘é�’é�“é�”é�•é�–é�—é�˜é�™é�šé�›é�œé��é�žé�Ÿé� é�¡é�¢é�£é�¤é�¥é�¦é�§é�¨é�©é�ªé�«é�¬é�­é�®çº­çº°çº¾ç»€ç»�绂绉绋绌ç»�绔绗绛绠绡绨绫绮绯绱绲ç¼�绶绺绻绾ç¼�缂缃缇缈缋缌ç¼�缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟ç��ç�‚ç�‘玷玳ç�€ç�‰ç�ˆç�¥ç�™é¡¼ç�Šç�©ç�§ç�žçŽºç�²ç��ç�ªç‘›ç�¦ç�¥ç�¨ç�°ç�®ç�¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"����������������������������������������������������������������é�¯é�°é�±é�²é�³é�´é�µé�¶é�·é�¸é�¹é�ºé�»é�¼é�½é�¿é‘€é‘�鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌é‘�鑎é‘�é‘�鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜é‘�鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀é’�钂钃钄钑钖钘铇é“�铓铔铚铦铻锜锠ç�›ç�šç‘�瑜瑗瑕瑙瑷瑭瑾璜璎璀ç’�璇璋璞璨璩ç’�璧瓒璺韪韫韬æ�Œæ�“æ�žæ�ˆæ�©æž¥æž‡æ�ªæ�³æž˜æž§æ�µæž¨æžžæž­æž‹æ�·æ�¼æŸ°æ ‰æŸ˜æ ŠæŸ©æž°æ ŒæŸ™æžµæŸšæž³æŸ�栀柃枸柢栎æŸ�柽栲栳桠桡桎桢桄桤梃æ �桕桦æ¡�桧桀栾桊桉栩梵æ¢�桴桷梓桫棂楮棼椟椠棹�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門é–�閂閃閄閅閆閇閈閉閊開閌é–�é–Žé–�é–�閑閒間閔閕閖閗閘閙閚閛閜é–�閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀é—�闂闃闄闅闆闇闈闉闊闋椤棰椋æ¤�楗棣æ¤�楱椹楠楂æ¥�榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱æ§�槊槟榕槠æ¦�槿樯槭樗樘橥槲橄樾檠æ©�橛樵檎橹樽樨橘橼檑æª�檩檗檫猷ç�’æ®�殂殇殄殒殓æ®�殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾è¾�辂辄辇辋�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"����������������������������������������������������������������闌é—�é—Žé—�é—�闑闒闓闔闕闖闗闘闙闚闛關é—�闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾é™�陃陊陎é™�陑陒陓陖陗�陘陙陚陜é™�陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀éš�隂隃隄隇隉隊è¾�辎è¾�辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿ç”�甑甓攴旮旯旰昊昙æ�²æ˜ƒæ˜•昀炅曷æ˜�昴昱昶昵耆晟晔æ™�æ™�晖晡晗晷暄暌暧æš�暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇èµ�赕赙觇觊觋觌觎è§�è§�觑牮犟ç‰�牦牯牾牿犄犋çŠ�çŠ�犒挈挲掰�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"����������������������������������������������������������������隌階隑隒隓隕隖隚際éš�隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋é›�雑雓雔雖雗雘雙雚雛雜é›�雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌éœ�霑霒霔霕霗霘霙霚霛éœ�霟霠æ�¿æ“˜è€„毪毳毽毵毹氅氇氆æ°�氕氘氙氚氡氩氤氪氲攵敕敫ç‰�牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙èƒ�胗æœ�èƒ�胫胱胴胭è„�脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧å¡�媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰é�Šé�‹é�Œé��é�Žé��é��é�‘é�”é�•é�—é�˜é�šé�œé��é�Ÿé�£é�¤é�¦é�§é�¨é�ªé�«é�¬é�­é�®é�¯é�°é�±ï¿½é�²é�µé�·é�¸é�¹é�ºé�»é�½é�¾é�¿éž€éž�鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎éž�éž�鞓鞕鞖鞗鞙鞚鞛鞜éž�è‡�膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳æ–�齑斓於旆旄旃旌旎旒旖炀炜炖ç‚�炻烀炷炫炱烨烊ç„�焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹çˆ�爨ç�¬ç„˜ç…¦ç†¹æˆ¾æˆ½æ‰ƒæ‰ˆæ‰‰ç¤»ç¥€ç¥†ç¥‰ç¥›ç¥œç¥“祚祢祗祠祯祧祺禅禊禚禧禳忑å¿��\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀éŸ�韂韃韄韅韆韇韈韉韊韋韌éŸ�韎éŸ�éŸ�韑韒韓韔韕韖韗韘韙韚韛韜éŸ�韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀é �頂頃頄項順頇須頉頊頋頌é �頎怼æ��æ�šæ�§æ��æ�™æ�£æ‚«æ„†æ„�æ…�憩æ†�懋懑戆肀è�¿æ²“泶淼矶矸砀砉砗砘砑斫砭砜ç �砹砺砻砟砼砥砬砣砩硎硭硖硗砦ç¡�硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄çœ�盹眇眈眚眢眙眭眦眵眸ç��ç�‘ç�‡ç�ƒç�šç�¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"����������������������������������������������������������������é �é �頑頒頓頔頕頖頗領頙頚頛頜é �頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀é¡�顂顃顄顅顆顇顈顉顊顋題é¡��顎é¡�é¡�顑顒顓顔顕顖顗願顙顚顛顜é¡�類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮ç�¢ç�¥ç�¿çž�ç�½çž€çžŒçž‘瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹ç¾�ç½¾ç›�盥蠲钅钆钇钋钊钌é’�é’�é’�钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌é“�铎é“�铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀é£�飂飃飄飅飆飇飈飉飊飋飌é£�é£�é£�飔飖飗飛飜é£�飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀é¤�餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊é”�锎é”�锒锓锔锕锖锘锛é”�锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎é•�镒镓镔镖镗镘镙镛镞镟é•�镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"����������������������������������������������������������������餈餉養餋餌餎é¤�餑餒餓餔餕餖餗餘餙餚餛餜é¤�餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀é¥�饂饃饄饅饆饇饈饉�饊饋饌é¥�饎é¥�é¥�饑饒饓饖饗饘饙饚饛饜é¥�饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑é»�馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾é¹�鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠ç–�疬疣疳疴疸痄疱疰痃痂痖ç—�痣痨痦痤痫痧瘃痱痼痿ç˜�瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"����������������������������������������������������������������馌馎馚馛馜é¦�馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀é§�駂駃駄駅駆駇駈駉駊駋駌é§�é§Žé§�é§�駑駒駓駔駕駖駗駘�駙駚駛駜é§�駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳ç™�癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶è¥�襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵è�ƒè�†è��è�’è�©è�±è¦ƒé¡¸é¢€é¢ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"����������������������������������������������������������������駺駻駼駽駾駿騀é¨�騂騃騄騅騆騇騈騉騊騋騌é¨�騎é¨�é¨�騑騒験騔騕騖騗騘騙騚騛騜é¨�騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀é©�驂驃驄驅驆驇驈驉驊驋驌é©�驎é©�é©�驑驒驓驔驕驖驗驘驙颉颌é¢�é¢�颔颚颛颞颟颡颢颥颦è™�虔虬虮虿虺虼虻蚨èš�蚋蚬èš�蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉è›�蚴蛩蛱蛲蛭蛳è›�蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊èœ�蜉蜣蜻蜞蜥蜮蜚蜾è�ˆèœ´èœ±èœ©èœ·èœ¿èž‚蜢è�½è�¾è�»è� è�°è�Œè�®èž‹è�“è�£è�¼è�¤è�™è�¥èž“螯螨蟒�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"����������������������������������������������������������������驚驛驜é©�驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉éª�骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊é«�髎é«�é«�髒體髕髖髗髙髚髛髜�é«�髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀é¬�鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅èˆ�竺竽笈笃笄笕笊笫ç¬�筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌ç­�筠筮筻筢筲筱ç®�箦箧箸箬ç®�箨箅箪箜箢箫箴篑ç¯�篌ç¯�篚篥篦篪簌篾篼ç°�簖簋�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"����������������������������������������������������������������鬇鬉鬊鬋鬌é¬�鬎é¬�鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜é¬�鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎é­�魒魓魕魖魗魘魙魚�魛魜é­�魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸ç±�籀臾èˆ�舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋è‰�艚艟艨衾袅袈裘裟襞ç¾�羟羧羯羰羲籼敉粑ç²�粜粞粢粲粼粽ç³�糇糌ç³�糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊é…�é…Žé…�酤�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"����������������������������������������������������������������魼魽魾魿鮀é®�鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌é®�鮎é®�é®�鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜é®�鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀é¯�鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌é¯�鯎é¯�é¯�鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅é†�é†�醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎è·�跛跆跬跷跸跣跹跻跤踉跽踔è¸�踟踬踮踣踯踺蹀踹踵踽踱蹉è¹�蹂蹑蹒蹊蹰蹶蹼蹯蹴躅èº�躔èº�躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"����������������������������������������������������������������鯜é¯�鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀é°�鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌é°�é°Žé°�é°�鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜é°�鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦é�“雩雳雯霆éœ�霈éœ�霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋é¼�隹隼隽雎雒瞿雠銎銮鋈錾é�ªé�ŠéŽ�é�¾é‘«é±¿é²‚鲅鲆鲇鲈稣鲋鲎é²�鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"����������������������������������������������������������������鰼鰽鰾鰿鱀é±�鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌é±�鱎é±�é±�鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜é±�鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌é²�鲓鲖鲗鲘鲙é²�鲪鲬鲯鲹鲾鲿鳀é³�鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌é³�鳎é³�é³�鳓鳔鳕鳗鳘鳙鳜é³�鳟鳢é�¼éž…鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼é«�髀髅髂髋髌髑魅魃魇魉魈é­�魑飨é¤�餮饕饔髟髡髦髯髫髻髭髹鬈é¬�鬓鬟鬣麽麾縻麂麇麈麋麒é�–éº�麟黛黜é»�黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀é´�鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌é´�é´Žé´�é´�鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜é´�鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀éµ�鵂î‰�î‰�î‰�î‰�î‰�îŠ�îŠ�îŠ�îŠ��\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌éµ�鵎éµ�éµ�鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜éµ�鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀é¶��鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌é¶�é¶Žé¶�é¶�鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜é¶�鶞鶟鶠鶡鶢îŠ�î‹�î‹�î‹�î‹�î‹��\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀é·�鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌é·�é·Žé·�é·�鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜é·�鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀é¸�鸂îŒ�îŒ�îŒ�îŒ�îŒ�î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî���\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌é¸�鸎é¸�é¸�鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜é¸�鸞鸤鸧鸮鸰鸴鸻鸼鹀é¹�é¹�鹒鹓鹔鹖鹙é¹�鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�éº�麃麄麅麆麉麊麌éº�麎éº�éº�麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€îŽ�îŽ�îŽ�îŽ�îŽ��\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀é»�黂黃黅黆黇黈黊黋黌é»�黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀é¼�鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌é¼�鼑鼒鼔鼕鼖鼘鼚鼛鼜é¼�鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀é½�齂齃齅齆齇齈齉齊齋齌é½�齎é½�齒齓齔齕齖齗齘齙齚齛齜é½�齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾é¾�龂é¾�龎é¾�é¾�龑龒龓龔龕龖龗龘龜é¾�龞龡龢龣龤龥郎凉秊裏隣î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‘€î‘�î‘�î‘�î‘�î‘��\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\tD[254] = \"����������������������������������������������������������������兀ï¨�﨎ï¨�﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩î �î¡��î¡�î¡�î¡�î¡�î’�î’�î’Žî’�î’�î’�î“��\".split(\"\");\n\t\tfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[51949] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������� ã€�。·‥…¨〃­―∥\∼‘’“â€�〔〕〈〉《》「ã€�『ã€�ã€�】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○â—�◎◇◆□■△▲▽▼→â†�↑↓↔〓≪≫√∽âˆ�∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������⇒⇔∀∃´~ˇ˘Ë�˚˙¸˛¡¿Ë�∮∑âˆ�¤℉‰â—�◀▷▶♤♠♡♥♧♣⊙◈▣â—�◑▒▤▥▨▧▦▩♨â˜�☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№ã�‡â„¢ã�‚ã�˜â„¡â‚¬Â®ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ï¼�"#$%&'()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz{|ï½� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀã…�ㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌã…�ã…Žã…�ã…�ㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜã…�ㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀã†�ㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌã†�ㆎ�\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπÏ�στυφχψω�������\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌â”�┘└├┬┤┴┼â”�┃â”�┓┛┗┣┳┫┻╋┠┯┨┷┿â”�┰┥┸╂┒┑┚┙┖┕┎â”�┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀â•�╃╄╅╆╇╈╉╊���������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������㎕㎖㎗ℓ㎘ã�„㎣㎤㎥㎦㎙㎚㎛㎜ãŽ�㎞㎟㎠㎡㎢ã�ŠãŽ�㎎ãŽ�ã��㎈㎉ã�ˆãŽ§ãŽ¨ãŽ°ãŽ±ãŽ²ãŽ³ãŽ´ãŽµãŽ¶ãŽ·ãŽ¸ãŽ¹ãŽ€ãŽ�㎂㎃㎄㎺㎻㎼㎽㎾㎿ãŽ�㎑㎒㎓㎔Ωã�€ã��㎊㎋㎌ã�–ã�…㎭㎮㎯ã�›ãŽ©ãŽªãŽ«ãŽ¬ã��ã��ã�“ã�ƒã�‰ã�œã�†ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ÆÃ�ªĦ�IJ�ĿÅ�ØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻â“�ⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜâ“�ⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜â…�⅞�\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æđðħıijĸŀłøœßþŧŋʼn㈀ãˆ�㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌ãˆ�㈎ãˆ�ãˆ�㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜â’�⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀â’�⒂¹²³â�´â�¿â‚�₂₃₄�\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�­ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ゑをん������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ���������������\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������가ê°�간갇갈갉갊ê°�갑값갓갔강갖갗같갚갛개ê°�갠갤갬갭갯갰갱갸갹갼걀걋ê±�걔걘걜거걱건걷걸걺검ê²�것겄겅겆겉겊겋게ê²�겔겜ê²�겟겠겡겨격겪견겯결겸겹겻겼경ê³�계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������괌ê´�ê´�광괘괜괠괩괬괭괴괵괸괼굄굅굇굉êµ�굔굘굡굣구국군굳굴굵굶굻굼굽굿ê¶�궂궈궉권ê¶�ê¶œê¶�궤궷귀ê·�ê·„ê·ˆê·�귑귓규균귤그극근귿글ê¸�금급긋ê¸�긔기긱긴긷길긺김ê¹�깃깅깆깊까ê¹�깎ê¹�깔깖깜ê¹�깟깠깡깥깨깩깬깰깸�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌ê»�ê»�ê»�껑께껙껜껨껫껭껴껸껼꼇꼈ê¼�ê¼�꼬꼭꼰꼲꼴꼼꼽꼿ê½�꽂꽃꽈꽉ê½�꽜ê½�꽤꽥꽹꾀꾄꾈ê¾�꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋ê¿�꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀ë€�뀄뀌ë€�뀔뀜ë€�뀨ë�„ë�…ë�ˆë�Šë�Œë�Žë�“ë�”ë�•ë�—ë�™ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ë��ë�¼ë�½ë‚€ë‚„낌ë‚�ë‚�낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉ëƒ�냑냔냘냠냥너넉넋넌ë„�넒넓넘넙넛넜ë„�넣네넥넨넬넴넵넷넸넹녀ë…�ë…„ë…ˆë…�녑녔녕녘녜녠노녹논놀놂놈놉놋ë†�높놓놔놘놜놨뇌ë‡�뇔뇜ë‡��\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉ëŠ�늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌ë‹�닖님닙닛ë‹�닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대ëŒ�댄댈ëŒ�댑댓댔댕댜ë�”ë�•ë�–ë�˜ë�›ë�œë�žë�Ÿë�¤ë�¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ë�§ë�©ë�«ë�®ë�°ë�±ë�´ë�¸ëŽ€ëŽ�뎃뎄뎅뎌ëŽ�뎔뎠뎡뎨뎬ë�„ë�…ë�ˆë�‹ë�Œë�Žë��ë�”ë�•ë�—ë�™ë�›ë��ë� ë�¤ë�¨ë�¼ë��ë�˜ë�œë� ë�¨ë�©ë�«ë�´ë‘�둑둔둘둠둡둣둥둬뒀뒈ë’�뒤뒨뒬뒵뒷뒹듀듄듈ë“�듕드ë“�든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������땀ë•�땃땄땅땋때ë•�ë•�땔땜ë•�땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌ë—�ë—�ë—�뗑뗘뗬ë˜�똑똔똘똥똬똴뙈뙤뙨뚜ëš�뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀ëœ�뜅뜨뜩뜬뜯뜰뜸뜹뜻ë�„ë�ˆë�Œë�”ë�•ë� ë�¤ë�¨ë�°ë�±ë�³ë�µë�¼ë�½ëž€ëž„람ëž�ëž�ëž�랑랒랖랗�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀ë �렇레렉렌ë �렘렙렛ë �려력련렬렴렵렷렸령례롄롑롓로ë¡�론롤롬롭롯롱롸롼ë¢�뢨뢰뢴뢸룀ë£�룃룅료ë£�룔ë£�룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌ë¥�륑류륙륜률륨륩�\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������륫륭르륵른를름릅릇릉릊ë¦�릎리릭린릴림립릿ë§�마막만많ë§�ë§�맑맒맘맙맛ë§�맞맡맣매맥맨맬맴맵맷맸맹맺먀ë¨�먈먕머먹먼멀멂멈멉멋ë©�멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������묀묄ë¬�ë¬�묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉ë­�ë­�ë­�뭔뭘뭡뭣뭬뮈뮌ë®�뮤뮨뮬뮴뮷므믄믈ë¯�믓미믹민믿밀밂밈밉밋밌ë°�ë°�밑바박밖밗반받발ë°�밞밟밤밥밧방밭배백밴밸뱀ë±�뱃뱄뱅뱉뱌ë±�ë±�ë±�버벅번벋벌벎범법벗�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������벙벚베벡벤벧벨벰벱벳벴벵벼벽변별ë³�ë³�ë³�병볕볘볜보복볶본볼봄봅봇봉ë´�봔봤봬뵀뵈뵉뵌ëµ�뵘뵙뵤뵨부ë¶�분붇불붉붊ë¶�붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브ë¸�ë¸�블븜ë¸�븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������빨빪빰빱빳빴빵빻빼빽뺀뺄뺌ëº�ëº�ëº�뺑뺘뺙뺨ë»�뻑뻔뻗뻘뻠뻣뻤뻥뻬ë¼�뼈뼉뼘뼙뼛뼜ë¼�ë½€ë½�뽄뽈ë½�뽑뽕뾔뾰뿅뿌ë¿�ë¿�뿔뿜뿟뿡쀼ì�‘ì�˜ì�œì� ì�¨ì�©ì‚�삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀ìƒ�샅새색샌ìƒ�샘샙샛샜ìƒ�샤�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������샥샨샬샴샵샷샹섀섄섈ì„�섕서ì„�섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌ì…�셔셕션셜셤셥셧셨셩셰셴셸솅소ì†�솎ì†�솔솖솜ì†�솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌ìˆ�ìˆ�숑수숙순숟술숨숩숫숭�\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������숯숱숲숴쉈ì‰�쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿ìŠ�슈슉ìŠ�슘슛ìŠ�스슥슨슬슭슴습슷승시ì‹�신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌ìŒ�쌓쌔쌕쌘쌜쌤쌥쌨쌩ì�…ì�¨ì�©ì�¬ì�°ì�²ì�¸ì�¹ì�¼ì�½ìŽ„ìŽˆìŽŒì�€ì�˜ì�™ì�œì�Ÿì� ì�¢ì�¨ì�©ì�­ì�´ì�µì�¸ì�ˆì��ì�¤ì�¬ì�°ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ì�´ì�¼ì�½ì‘ˆì‘¤ì‘¥ì‘¨ì‘¬ì‘´ì‘µì‘¹ì’€ì’”쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀ì”�씌ì”�씔씜씨씩씬씰씸씹씻씽아악안앉않알ì•�앎앓암압앗았앙ì•�앞애액앤앨앰앱앳앴앵야약얀얄얇얌ì–�ì–�양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ì—�엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였ì˜�옅옆옇예옌ì˜�옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와ì™�완왈ì™�왑왓왔왕왜ì™�왠왬왯왱외왹왼욀욈욉욋ìš�요욕욘욜욤욥욧용우욱운울욹욺움ì›�웃웅워ì›�ì›�월웜ì›�웠웡웨�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽ì�€ì�„ì�Šì�Œì��ì��ì�‘ì�’ì�“ì�”ì�•ì�–ì�—ì�˜ì�œì� ì�¨ì�«ì�´ì�µì�¸ì�¼ì�½ì�¾ìžƒìž„입잇있잉잊잎ìž�작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀ìŸ�쟈쟉쟌쟎ìŸ�쟘ìŸ�쟤쟨쟬저ì �전절젊�\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ì �ì ‘ì “ì •ì –ì œì �젠젤젬젭젯젱져젼졀졈졉졌ì¡�졔조족존졸졺좀ì¢�좃종좆좇좋좌ì¢�좔ì¢�좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌ì¤�ì¤�중줘줬줴ì¥�쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌ì¦�즘즙즛ì¦�ì§€ì§�진짇질짊ì§�집짓�\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������징짖짙짚짜ì§�짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌ì¨�쨔쨘쨩쩌ì©�ì©�쩔쩜ì©�쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌ì«�ì«�쫑쫓쫘쫙쫠쫬쫴쬈ì¬�쬔쬘쬠쬡ì­�쭈쭉쭌ì­�쭘쭙ì­�쭤쭸쭹쮜쮸쯔쯤쯧쯩찌ì°�ì°�찔찜ì°�찡찢찧차착찬찮찰참찹찻�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉ì³�쳔쳤쳬쳰ì´�초촉촌ì´�촘촙촛ì´�촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌ì·�취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉ìº�캑캔캘캠캡캣캤캥캬캭ì»�커컥컨컫컬컴컵컷컸컹케ì¼�켄켈ì¼�켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������í�„í�…í�‡í�‰í��í�”í�˜í� í�¬í�­í�°í�´í�¼í�½í‚�키킥킨킬킴킵킷킹타íƒ�탄탈탉íƒ�탑탓탔탕태íƒ�탠탤탬탭탯탰탱탸í„�터턱턴털턺텀í…�텃텄텅테í…�í…�텔템í…�텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉íˆ�투툭툰툴툼툽툿í‰�퉈퉜�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������퉤튀íŠ�튄튈íŠ�튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀íŒ�팃팅파íŒ�팎íŒ�팔팖팜íŒ�팟팠팡팥패팩팬팰팸팹팻팼팽í�„í�…í�¼í�½íŽ€íŽ„íŽŒíŽ�íŽ�íŽ�펑페펙펜펠펨펩펫펭펴편펼í�„í�…í�ˆí�‰í��í�˜í�¡í�£í�¬í�­í�°í�´í�¼í�½í�¿í���\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������í�ˆí��푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋í’�풔풩퓌í“�퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌í•�í•�핑하학한할핥함합핫항해핵핸핼햄햅햇했행í–�향허헉헌í—�헒험헙헛í—�헤헥헨헬헴헵헷헹혀í˜�현혈í˜�협혓혔형혜혠�\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋í™�홑화확환활홧황홰홱홴횃횅회íš�íš�íš”íš�횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼í�„í�‡í�‰í��í�‘í�”í�–í�—í�˜í�™í� í�¡í�£í�¥í�©í�¬í�°í�´í�¼í�½íž�히힉힌íž�힘힙힛íž��\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳å�‡åƒ¹åŠ å�¯å‘µå“¥å˜‰å«�家暇架枷柯歌ç�‚痂稼苛茄街袈訶賈è·�軻迦駕刻å�´å�„æ�ªæ…¤æ®¼ç��脚覺角閣侃刊墾奸姦干幹懇æ�€æ�†æŸ¬æ¡¿æ¾—癎看磵稈竿簡è‚�艮艱諫間乫å–�曷渴碣竭葛è¤�è�Žéž¨å‹˜å�Žå ªåµŒæ„Ÿæ†¾æˆ¡æ•¢æŸ‘橄減甘疳監瞰紺邯鑑鑒龕�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑è¥�講鋼é™�鱇介价個凱å¡�愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客å�‘ï¤�粳羹醵倨去居巨拒æ�®æ“šæ“§æ¸ ç‚¬ç¥›è·�踞車é�½é‰…鋸乾件å�¥å·¾å»ºæ„†æ¥—腱虔蹇é�µé¨«ä¹žå‚‘æ�°æ¡€å„‰åŠ�劒檢�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼éˆ�黔劫怯迲å�ˆæ†©æ�­æ“Šæ ¼æª„激膈覡隔堅牽犬甄絹繭肩見譴é�£éµ‘抉決潔çµ�缺訣兼慊ç®�謙鉗鎌京俓倞傾儆å‹�å‹�å�¿å�°å¢ƒåºšå¾‘慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕é�¡é ƒé ¸é©šé¯¨ä¿‚啓堺契季屆悸戒桂械�\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄å�¤å�©å‘Šå‘±å›ºå§‘孤尻庫拷攷故敲暠枯æ§�沽痼çš�ç�¾ç¨¿ç¾”考股è†�苦苽è�°è—�蠱袴誥賈辜錮雇顧高鼓哭斛曲æ¢�穀谷鵠困å�¤å´‘昆梱æ£�滾ç�¨è¢žé¯¤æ±¨ï¤„骨供公共功孔工æ��æ�­æ‹±æŽ§æ”»ç�™ç©ºèš£è²¢éž�串寡戈果瓜�\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������科è�“誇課跨é�Žé�‹é¡†å»“槨藿郭串冠官寬慣棺款ç�Œç�¯ç“˜ç®¡ç½�è�…觀貫關館刮æ��括适侊光匡壙廣曠洸炚狂ç�–ç­�胱鑛å�¦æŽ›ç½«ä¹–傀塊壞怪愧æ‹�æ§�é­�å®�紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久ä¹�仇俱具勾�\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å�€å�£å�¥å’Žå˜”å�µåž¢å¯‡å¶‡å»�懼拘救枸柩構æ­�毆毬求æº�ç�¸ç‹—玖ç�ƒçž¿çŸ©ç©¶çµ¿è€‰è‡¼èˆ…舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局è�Šéž éž«éº´å�›çª˜ç¾¤è£™è»�郡堀屈掘窟宮弓穹窮芎躬倦券勸å�·åœˆæ‹³æ�²æ¬Šæ·ƒçœ·åŽ¥ç�—蕨蹶闕机櫃潰詭軌饋句晷歸貴�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜å�«åœ­å¥Žæ�†æ§»ç�ªç¡…窺竅糾葵è¦�赳逵閨勻å�‡ç•‡ç­ è�Œéˆžï¤ˆæ©˜å…‹å‰‹åŠ‡æˆŸæ£˜æ¥µéš™åƒ…åŠ¤å‹¤æ‡ƒæ–¤æ ¹æ§¿ç‘¾ç­‹èŠ¹è�«è¦²è¬¹è¿‘饉契今妗擒昑檎ç�´ç¦�禽芩衾衿襟金錦伋å�Šæ€¥æ‰±æ±²ç´šçµ¦äº˜å…¢çŸœè‚¯ä¼�伎其冀嗜器圻基埼夔奇妓寄å²�崎己幾忌技旗旣�\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期æ�žæ£‹æ£„機欺氣汽沂淇玘ç�¦ç�ªç’‚璣畸畿ç¢�磯ç¥�祇祈祺箕紀綺羈耆耭肌記è­�豈起錡錤飢饑騎é¨�驥麒緊佶å�‰æ‹®æ¡”金喫儺喇奈娜懦ï¤�æ‹�拿癩ï¤�ï¤�螺裸邏那樂洛烙珞落諾酪駱亂卵暖ï¤�煖爛蘭難鸞æ��æ�ºå�—嵐æž�楠湳濫男藍襤拉�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç´�臘蠟衲囊娘廊朗浪狼郎乃來內奈柰è€�冷女年撚秊念æ�¬æ‹ˆæ�»å¯§å¯—努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿ï¥�壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓ï¥�漏ï¥�ï¥�陋嫩訥æ�»ç´�勒肋凜凌稜綾能菱陵尼泥匿溺多茶�\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段æ¹�短端簞緞蛋袒鄲é�›æ’»æ¾¾ç�ºç–¸é�”å•–å��憺擔曇淡湛潭澹痰è�ƒè†½è•�覃談譚錟沓畓答è¸�é��å”�堂塘幢戇撞棠當糖螳黨代垈å�®å¤§å°�岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉æ�—桃�\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜ç�¹ç¦±ç¨»è�„覩賭跳蹈逃途é�“都é��陶韜毒瀆牘犢ç�¨ç�£ç¦¿ç¯¤çº›è®€å¢©æƒ‡æ•¦æ—½æš¾æ²Œç„žç‡‰è±šé “ä¹­çª�ä»�冬å‡�å‹•å�Œæ†§æ�±æ¡�棟洞潼疼瞳童胴董銅兜斗æ�œæž“痘竇è�³ï¥šè±†é€—頭屯臀芚é��é�¯éˆ�å¾—å¶�橙燈登等藤謄鄧騰喇懶拏癩羅�\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸é‚�樂洛烙ç�žçµ¡è�½ï¥�酪駱丹亂å�µæ¬„欒瀾爛蘭鸞剌辣åµ�擥攬欖濫籃纜è—�襤覽拉臘蠟廊朗浪狼ç�…瑯螂郞來å´�å¾ è�Šå†·æŽ ç•¥äº®å€†å…©å‡‰æ¢�樑粮粱糧良諒輛é‡�侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷ç€�礫轢é�‚æ†�戀攣漣�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練è�¯è“®è¼¦é€£é�Šå†½åˆ—劣洌烈裂廉斂殮濂簾ç�µä»¤ä¼¶å›¹ï¥Ÿå²ºå¶ºæ€œçŽ²ç¬­ç¾šç¿Žè�†é€žéˆ´é›¶é�ˆé ˜é½¡ä¾‹æ¾§ç¦®é†´éš·å‹žï¥ æ’ˆæ“„櫓潞瀘çˆ�ç›§è€�蘆虜路輅露魯鷺鹵碌祿綠è�‰éŒ„鹿麓論壟弄朧瀧ç“�ç± è�¾å„¡ç€¨ç‰¢ç£Šè³‚賚賴雷了僚寮廖料燎療瞭è�Šè“¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¼é¬§é¾�壘å©�屢樓淚æ¼�瘻累縷蔞褸é�¤é™‹åŠ‰æ—’æŸ³æ¦´æµ�溜ç€�ç�‰ç‘ ç•™ç˜¤ç¡«è¬¬é¡žå…­æˆ®é™¸ä¾–倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾è�±é™µä¿šåˆ©åŽ˜å��唎履悧æ�Žæ¢¨æµ¬çŠ�狸ç�†ç’ƒï¥¢ç—¢ç±¬ç½¹ç¾¸èމè£�裡里é‡�離鯉å��æ½¾ç‡�璘藺躪隣鱗麟林淋ç�³è‡¨éœ–砬�\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万å��娩巒彎慢挽晩曼滿漫ç�£çžžè�¬è”“蠻輓饅鰻唜抹末沫茉襪é�ºäº¡å¦„忘忙望網罔芒茫莽輞邙埋妹媒å¯�昧枚梅æ¯�煤罵買賣é‚�魅脈貊陌驀麥孟氓猛盲盟è�Œå†ªè¦“å…�冕勉棉沔眄眠綿緬é�¢éºµæ»…�\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥å��命明æš�椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮æŸ�模æ¯�毛牟牡ç‘�眸矛耗芼茅謀謨貌木æ²�牧目ç�¦ç©†é¶©æ­¿æ²’夢朦蒙å�¯å¢“妙廟æ��昴æ�³æ¸ºçŒ«ç«—苗錨務巫憮懋戊拇撫无楙武毋無ç�·ç•�繆舞茂蕪誣貿霧鵡墨默們刎å�»å•�文�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋è�žèšŠé–€é›¯å‹¿æ²•物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷é�¡é»´å²·æ‚¶æ„�憫æ•�旻旼民泯玟ç�‰ç·¡é–”密蜜è¬�å‰�å�šæ‹�æ��撲朴樸泊ç�€ç’žç®”粕縛膊舶薄迫雹é§�ä¼´å�Šå��å�›æ‹Œæ�¬æ”€æ–‘槃泮潘ç�­ç•”瘢盤盼ç£�磻礬絆般蟠返頒飯勃拔撥渤潑�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣å‚�å�Šå¦¨å°¨å¹‡å½·æˆ¿æ”¾æ–¹æ—�昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防é¾�å€�俳北培徘拜排æ�¯æ¹ƒç„™ç›ƒèƒŒèƒšè£´è£µè¤™è³ è¼©é…�陪伯佰帛æŸ�栢白百魄幡樊煩燔番磻ç¹�蕃藩飜ä¼�ç­�罰閥凡帆梵氾汎泛犯範范法ç�ºåƒ»åŠˆå£�擘檗璧癖�\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便å�žå¼�變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳ç”�病秉ç«�輧餠騈ä¿�堡報寶普步洑湺潽ç�¤ç”«è�©è£œè¤“譜輔ä¼�僕åŒ�å�œå®“復æœ�ç¦�腹茯蔔複覆輹輻馥鰒本乶俸奉å°�峯峰æ�§æ£’烽熢ç�«ç¸«è“¬èœ‚逢鋒鳳ä¸�付俯傅剖副å�¦å’�埠夫婦�\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶è…�腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分å�©å™´å¢³å¥”奮忿憤扮æ˜�汾焚盆粉糞紛芬è³�雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪å�‘妃婢庇悲憊扉批æ–�枇榧比毖毗毘沸泌ç�µç—ºç ’碑秕秘粃緋翡肥�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂è�²èœšè£¨èª¹è­¬è²»é„™é�žé£›é¼»åš¬å¬ªå½¬æ–Œæª³æ®¯æµœæ¿±ç€•ç‰�玭貧賓頻憑氷è�˜é¨�ä¹�事些仕伺似使俟僿å�²å�¸å”†å—£å››å£«å¥¢å¨‘寫寺射巳師徙æ€�æ�¨æ–œæ–¯æŸ¶æŸ»æ¢­æ­»æ²™æ³—渣瀉ç�…砂社祀祠ç§�篩紗絲肆èˆ�莎蓑蛇裟è©�詞è¬�賜赦辭邪飼駟éº�削數朔索�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕ç�Šç”£ç–�算蒜酸霰乷撒殺煞薩三參æ�‰æ£®æ¸—芟蔘衫æ�·æ¾�鈒颯上傷åƒ�償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼åº�庶å¾�æ�•抒æ�¿æ•�暑曙書栖棲犀瑞筮絮緖署�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓é€�鋤é»�鼠夕奭席惜昔晳æž�æ±�淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽ç��瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣é�¸éŠ‘é�¥é¥�é®®å�¨å±‘楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾è´�é–ƒé™�æ”�涉燮葉城姓宬性惺æˆ�星晟猩ç�¹ç››çœ�筬�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������è�–è�²è…¥èª é†’世勢歲洗稅笹細說貰å�¬å˜¯å¡‘宵å°�少巢所掃æ�”昭梳沼消溯瀟炤燒甦ç–�疎瘙笑篠簫素紹蔬蕭蘇訴é€�é�¡é‚µéŠ·éŸ¶é¨·ä¿—å±¬æ�Ÿæ¶‘粟續謖贖速孫巽æ��è“€é�œé£¡çŽ‡å®‹æ‚šæ�¾æ·žè¨Ÿèª¦é€�頌刷殺ç�‘碎鎖衰釗修å�—嗽囚垂壽嫂守岫峀帥æ„��\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æˆ�手授æ�œæ”¶æ•¸æ¨¹æ®Šæ°´æ´™æ¼±ç‡§ç‹©ç�¸ç�‡ç’²ç˜¦ç�¡ç§€ç©—竪粹ç¶�綬繡羞脩茱è’�蓚藪袖誰è®�輸é�‚邃酬銖銹隋隧隨雖需須首髓鬚å�”塾夙孰宿淑潚熟ç�¡ç’¹è‚…è�½å·¡å¾‡å¾ªæ�‚旬栒楯橓殉洵淳ç�£ç›¾çž¬ç­�純脣舜è�€è“´è•£è©¢è«„醇錞順馴戌術述鉥崇崧�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟è†�è�¨æ¿•拾習褶襲丞乘僧å‹�å�‡æ‰¿æ˜‡ç¹©è …陞ä¾�匙嘶始媤尸屎å±�市弑æ�ƒæ–½æ˜¯æ™‚枾柴猜矢示翅蒔è“�視試詩諡豕豺埴寔å¼�æ�¯æ‹­æ¤�殖湜熄篒è�•識軾食飾伸ä¾�信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心æ²��\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什å��拾雙æ°�亞俄兒啞娥峨我牙芽莪蛾衙è¨�阿雅餓鴉éµ�堊岳嶽幄惡愕æ�¡æ¨‚渥鄂é�”顎é°�齷安岸按æ™�案眼é›�éž�顔鮟斡è¬�軋閼唵岩巖庵暗癌è�´é—‡å£“押狎鴨仰央æ€�昻殃秧鴦厓哀埃崖愛曖涯ç¢�艾隘é�„厄扼掖液縊腋é¡��\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹æ�¶æ¤°çˆºè€¶ï¥´é‡Žå¼±ï¥µï¥¶ç´„若葯蒻藥èº�亮佯兩凉壤孃æ�™æ�šæ”˜æ•­æš˜ï¥ºæ¥Šæ¨£æ´‹ç€�煬痒ç˜�禳穰糧羊良襄諒讓釀陽量養圄御於æ¼�瘀禦語馭魚齬億憶抑æª�臆å�ƒå °å½¦ç„‰è¨€è«ºå­¼è˜–俺儼嚴奄掩淹嶪業円予余勵呂ï¦�如廬�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟æ±�濾璵礖礪與艅茹輿è½�閭餘驪麗黎亦力域役易曆歷疫繹譯ï¦�逆驛嚥堧姸娟宴年延ï¦�ï¦�æ��挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉ç¡�硯秊筵緣練縯聯è¡�軟輦蓮連鉛鍊鳶列ï¦�咽悅涅烈熱裂說閱厭廉念捻染殮炎焰ç�°è‰¶è‹’�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵ç‡�葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶æ½�濚瀛瀯ç…�營ç�°ï¦­ç‘›ï¦®ç“”盈穎纓羚聆英詠迎鈴é�ˆï¦²éœ™ï¦³ï¦´ä¹‚倪例刈å�¡æ›³æ±­æ¿ŠçŒŠç�¿ç©¢èŠ®è—�蘂禮裔詣譽豫醴銳隸霓é �五ä¼�俉傲å�ˆå�¾å�³å—šå¡¢å¢ºå¥§å¨›å¯¤æ‚Ÿï¦¹æ‡Šæ•–旿晤梧汚澳�\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������çƒ�熬ç�’筽蜈誤鰲鼇屋沃ç�„玉鈺溫瑥瘟穩縕蘊兀壅æ“�瓮甕癰ç¿�é‚•é›�饔渦瓦窩窪臥蛙è�¸è¨›å©‰å®Œå®›æ¢¡æ¤€æµ£çŽ©ç�“ç�¬ç¢—緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬å·�猥ç•�了僚僥凹堯夭妖姚寥寮尿嶢拗æ�–撓擾料曜樂橈燎燿瑤ï§��\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯è¦�謠é�™ï§ƒé‚€é¥’慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬è�³èŒ¸è“‰è¸ŠéŽ”é�žï§„于佑å�¶å„ªå�ˆå�‹å�³å®‡å¯“尤愚憂旴牛玗瑀盂ç¥�禑禹紆羽芋藕虞迂é�‡éƒµé‡ªéš…雨雩勖彧旭昱栯煜稶éƒ�頊云暈橒殞æ¾�熉耘芸蕓�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�‹éš•雲韻蔚鬱äº�熊雄元原員圓園垣媛嫄寃怨愿æ�´æ²…洹湲æº�爰猿瑗苑è¢�è½…é� ï§†é™¢é¡˜é´›æœˆè¶Šé‰žä½�å�‰åƒžå�±åœ�å§”å¨�尉慰æš�渭爲瑋緯胃è�Žè‘¦è”¿è�Ÿè¡›è¤˜è¬‚é�•韋é­�乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉æ�„攸有杻柔柚柳楡楢油洧流游溜�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由ï§�ç™’ï§Žï§�維臾è�¸è£•誘諛諭踰蹂é�Šé€¾é�ºé…‰é‡‰é�®ï§�六堉戮毓肉育陸倫å…�奫尹崙淪潤玧胤贇輪鈗é–�律慄栗率è�¿æˆŽç€œçµ¨èž�隆垠æ�©æ…‡æ®·èª¾éŠ€éš±ä¹™å�Ÿæ·«è”­é™°éŸ³é£®æ�–泣邑å‡�應膺鷹ä¾�倚儀宜æ„�懿擬椅毅疑矣義艤è–�蟻衣誼�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊ï§�吏夷姨履已弛彛怡易李梨泥爾ç�¥ï§¤ç•°ç—�痢移罹而耳肄苡è�‘裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人ä»�刃å�°ï§­å’½å› å§»å¯…引å¿�湮燐璘絪茵藺蚓èª�ï§±é�­é�·ï§²ï§³ä¸€ä½šä½¾å£¹æ—¥æº¢é€¸éŽ°é¦¹ä»»å£¬å¦Šå§™æ��林淋稔臨è��賃入å�„�\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒ä»�剩孕芿仔刺咨姉姿å­�å­—å­œæ�£æ…ˆæ»‹ç‚™ç…®çŽ†ç“·ç–µç£�紫者自茨蔗藉諮資雌作勺嚼斫昨ç�¼ç‚¸çˆµç¶½èŠ�酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲æ�–樟檣欌漿牆狀ç��璋章粧腸臟臧莊葬蔣薔è—�è£�贓醬長�\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������障å†�哉在宰æ‰�æ��栽梓渽滓ç�½ç¸¡è£�財載齋齎爭ç®�è«�錚佇低儲咀å§�底抵æ�µæ¥®æ¨—沮渚狙猪疽箸紵苧è�¹è‘—藷詛貯躇這邸雎齟勣å�Šå«¡å¯‚摘敵滴狄炙的ç©�笛ç±�績翟è�»è¬«è³Šèµ¤è·¡è¹Ÿè¿ªè¿¹é�©é�‘佃佺傳全典å‰�剪塡塼奠專展廛悛戰栓殿氈澱�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎ç� ç”°ç”¸ç•‘癲筌箋箭篆çº�詮輾轉鈿銓錢é�«é›»é¡šé¡«é¤žåˆ‡æˆªæŠ˜æµ™ç™¤ç«Šç¯€çµ¶å� å²¾åº—漸点粘霑鮎點接摺è�¶ä¸�井亭å�œå�µå‘ˆå§ƒå®šå¹€åº­å»·å¾�情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎ç�½ç”ºç�›ç¢‡ç¦Žç¨‹ç©½ç²¾ç¶Žè‰‡è¨‚諪貞鄭酊釘鉦鋌錠霆é�–�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�œé ‚鼎制劑啼堤å¸�弟悌æ��梯濟祭第è‡�薺製諸蹄é†�除際霽題齊俎兆凋助嘲弔彫措æ“�æ—©æ™�曺曹æœ�æ¢�棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙èº�造é�­é‡£é˜»é›•é³¥æ—�簇足é�ƒå­˜å°Šå�’æ‹™çŒ�倧宗從悰慫棕淙ç�®ç¨®çµ‚綜縱腫�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵é�¾é�˜ä½�å��左座挫罪主ä½�ä¾�å�šå§�胄呪周嗾å¥�宙州廚æ™�朱柱株注洲湊æ¾�ç‚·ç� ç–‡ç±Œç´‚紬綢舟蛛註誅走躊輳週酎酒鑄é§�竹粥俊å„�准埈寯峻晙樽浚準濬焌畯竣蠢逡é�µé›‹é§¿èŒ�中仲衆é‡�å�½æ«›æ¥«æ±�葺增憎曾拯çƒ�甑症繒蒸證贈之å�ªï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地å�€å¿—æŒ�指摯支旨智æž�枳止池沚漬知砥祉祗紙肢脂至èŠ�芷蜘誌識贄趾é�²ç›´ç¨™ç¨·ç¹”è�·å”‡å—”塵振æ�¢æ™‰æ™‹æ¡­æ¦›æ®„津溱ç��瑨璡畛疹盡眞瞋秦縉ç¸�臻蔯袗診賑軫辰進鎭陣陳震侄å�±å§ªå«‰å¸™æ¡Žç“†ç–¾ç§©çª’膣蛭質跌迭斟朕什執潗ç·�輯�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¶é›†å¾µæ‡²æ¾„且侘借å�‰å—Ÿåµ¯å·®æ¬¡æ­¤ç£‹ç®šï§¾è¹‰è»Šé�®æ�‰æ�¾ç�€çª„錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽é¤�饌刹察擦札紮僭å�ƒå¡¹æ…˜æ…™æ‡ºæ–¬ç«™è®’讖倉倡創唱娼廠彰愴敞昌昶暢æ§�滄漲猖瘡窓脹艙è�–蒼債埰寀寨彩採砦綵è�œè”¡é‡‡é‡µå†ŠæŸµç­–�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟å�ƒå–˜å¤©å·�擅泉淺玔穿舛薦賤è¸�é�·é‡§é—¡é˜¡éŸ†å‡¸å“²å–†å¾¹æ’¤æ¾ˆç¶´è¼Ÿè½�é�µåƒ‰å°–沾添甛瞻簽籤詹諂堞妾帖æ�·ç‰’ç–Šç�«è«œè²¼è¼’廳晴淸è�½è��è«‹é�‘鯖切剃替涕滯締諦逮é�žé«”åˆ�剿哨憔抄招梢�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦ç¡�ç¤�礎秒ç¨�肖艸苕è�‰è•‰è²‚超酢醋醮促囑燭矗蜀觸寸忖æ�‘邨å�¢å¡šå¯µæ‚¤æ†�摠總è�°è”¥éŠƒæ’®å‚¬å´”æœ€å¢œæŠ½æŽ¨æ¤Žæ¥¸æ¨žæ¹«çšºç§‹èŠ»è�©è«�趨追鄒酋醜éŒ�錘鎚雛騶é°�丑畜ç¥�竺筑築縮蓄蹙蹴軸é€�春椿瑃出朮黜充忠沖蟲è¡�衷悴膵è�ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅å�–å�¹å˜´å¨¶å°±ç‚Šç¿ è�šè„†è‡­è¶£é†‰é©Ÿé·²å�´ä»„厠惻測層侈値嗤峙幟æ�¥æ¢”治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸ç�›ç §é‡�é�¼èŸ„秤稱快他咤唾墮妥惰打拖朶楕舵陀馱é§�倬å�“å•„å�¼ï¨�托拓擢晫æŸ�æ¿�濯ç�¢ç�¸è¨—�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������é�¸å‘‘嘆å�¦å½ˆæ†šæ­Žç�˜ç‚­ç¶»èª•奪脫探眈耽貪塔æ�­æ¦»å®•帑湯糖蕩兌å�°å¤ªæ€ æ…‹æ®†æ±°æ³°ç¬žèƒŽè‹”跆邰颱宅擇澤撑攄兎å��土討慟桶洞痛筒統通堆槌腿褪退頹å�¸å¥—妬投é€�鬪æ…�特闖å�¡å©†å·´æŠŠæ’­æ“ºæ�·æ³¢æ´¾çˆ¬ç�¶ç ´ç½·èŠ­è·›é —åˆ¤å�‚æ�¿ç‰ˆç“£è²©è¾¦éˆ‘�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八å�­æ�Œä½©å”„悖敗沛浿牌狽稗覇è²�彭澎烹膨愎便å��æ‰�片篇編翩é��鞭騙貶å�ªå¹³æž°è��è©•å� å¬–幣廢弊斃肺蔽閉陛佈包åŒ�åŒ�咆哺圃布怖抛抱æ�•暴泡浦疱砲胞脯苞葡蒲è¢�褒逋鋪飽鮑幅暴æ›�瀑爆輻俵剽彪慓æ�“標漂瓢票表豹飇飄驃�\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������å“�稟楓諷豊風馮彼披疲皮被é�¿é™‚匹弼必泌ç�Œç•¢ç–‹ç­†è‹¾é¦�ä¹�逼下何厦å¤�廈昰河瑕è�·è�¦è³€é��霞鰕壑學è™�謔鶴寒æ�¨æ‚�旱汗漢澣瀚罕翰閑閒é™�韓割轄函å�«å’¸å•£å–Šæª»æ¶µç·˜è‰¦éŠœé™·é¹¹å�ˆå“ˆç›’蛤閤闔陜亢伉姮嫦巷æ�’抗æ�­æ¡�沆港缸肛航�\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥å�•咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸æ��è�‡è¡Œäº«å�‘åš®ç�¦é„•響餉饗香噓墟虛許憲櫶ç�»è»’歇險驗奕爀赫é�©ä¿”峴弦懸晛泫炫玄玹ç�¾çœ©ç��絃絢縣舷衒見賢鉉顯孑穴血é �嫌俠å�”夾峽挾浹狹脅脇莢é‹�頰亨兄刑型�\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅ç��炯熒ç�©ç‘©è�Šèž¢è¡¡é€ˆé‚¢éŽ£é¦¨å…®å½—æƒ æ…§æš³è•™è¹Šé†¯éž‹ä¹Žäº’å‘¼å£•å£ºå¥½å²µå¼§æˆ¶æ‰ˆæ˜Šæ™§æ¯«æµ©æ·�湖滸澔濠濩ç��ç‹�ç�¥ç‘šç“ çš“祜糊縞胡芦葫蒿虎號è�´è­·è±ªéŽ¬é €é¡¥æƒ‘æˆ–é…·å©šæ˜�混渾ç�¿é­‚忽惚ç¬�哄弘汞泓洪烘紅虹訌鴻化和嬅樺ç�«ç•µï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ç¦�禾花è�¯è©±è­�貨é�´ï¨‹æ“´æ”«ç¢ºç¢»ç©«ä¸¸å–šå¥�宦幻患æ�›æ­¡æ™¥æ¡“渙煥環紈還驩鰥活滑猾è±�闊凰幌徨æ��惶愰慌晃晄榥æ³�湟滉潢煌璜皇ç¯�ç°§è�’è�—é�‘éš�黃匯回廻徊æ�¢æ‚”懷晦會檜淮澮ç�°ç�ªç¹ªè†¾èŒ´è›”誨賄劃ç�²å®–æ©«é�„哮嚆å­�效斅曉梟æ¶�淆�\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵é©�侯候厚å�Žå�¼å–‰å—…帿後朽煦ç��逅勛勳塤壎焄ç†�燻薰訓暈薨喧暄煊è�±å�‰å–™æ¯�彙徽æ�®æš‰ç…‡è«±è¼�麾休æ�ºçƒ‹ç•¦è™§æ�¤è­Žé·¸å…‡å‡¶åŒˆæ´¶èƒ¸é»‘昕欣炘痕å�ƒå±¹ç´‡è¨–欠欽歆å�¸æ�°æ´½ç¿•興僖凞喜噫å›�姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[52936] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}�€������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[126] = \"���������������������������������������������������������������������������������������������������������������������������~���������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[126].length; ++j) if(D[126][j].charCodeAt(0) !== 0xFFFD) { e[D[126][j]] = 32256 + j; d[32256 + j] = D[126][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[54936] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[129] = \"����������������������������������������������������������������丂丄丅丆ä¸�丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀ä¹�乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀äº�亂亃亄亅亇亊�äº�亖亗亙亜äº�亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌ä»�ä»�仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜ä¼�伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀ä½�佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀ä¾�侂侅來侇侊侌侎ä¾�侒侓侕侖侘侙侚侜侞侟価侢�\".split(\"\");\n\t\tfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\n\t\tD[130] = \"����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀ä¿�係俆俇俈俉俋俌ä¿�俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀å€�倂倃倄倅倆倇倈倉倊�個倎å€�們倓倕倖倗倛å€�倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿å�€å��å�‚å�„å�…å�†å�‰å�Šå�‹å��å��å�‘å�’å�“å�”å�–å�—å�˜å�™å�›å��å�žå�Ÿå� å�¡å�¢å�£å�¤å�¦å�§å�¨å�©å�ªå�«å�­å�®å�¯å�°å�±å�²å�³å�´å�µå�¸å�¹å�ºå�¼å�½å‚�傂傃傄傆傇傉傊傋傌傎å‚�å‚�傑傒傓傔傕傖傗傘備傚傛傜å‚�傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�\".split(\"\");\n\t\tfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\n\t\tD[131] = \"����������������������������������������������������������������傽傾傿僀åƒ�僂僃僄僅僆僇僈僉僊僋僌åƒ�僎åƒ�僑僒僓僔僕僗僘僙僛僜åƒ�僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀å„�儂儃億儅儈�儉儊儌å„�儎å„�å„�儑儓儔儕儖儗儘儙儚儛儜å„�儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎å…�å…�兒兓兗兘兙兛å…�兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎å†�å†�冑冓冔冘冚å†�冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿å‡�凂凃凅凈凊å‡�凎å‡�凒凓凔凕凖凗�\".split(\"\");\n\t\tfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\n\t\tD[132] = \"����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌åˆ�åˆ�刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎å‰�剒剓剕剗剘�剙剚剛å‰�剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌åŠ�劎åŠ�劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀å‹�勂勄勅勆勈勊勌å‹�勎å‹�勑勓勔動勗務勚勛勜å‹�勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽åŒ�匂匃匄匇匉匊匋匌匎�\".split(\"\");\n\t\tfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\n\t\tD[133] = \"����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽å�€å�‚å�„å�†å�‹å�Œå��å��å�”å�˜å�™å�›å��å�¥å�¨å�ªå�¬å�­å�²å�¶å�¹å�»å�¼å�½å�¾åŽ€åŽ�厃厇厈厊厎åŽ��åŽ�厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾å�€å�ƒå�„å�…å�†å�‡å�Žå��å��å�’å�“å�•å�šå�œå��å�žå�¡å�¢å�§å�´å�ºå�¾å�¿å�€å�‚å�…å�‡å�‹å�”å�˜å�™å�šå�œå�¢å�¤å�¥å�ªå�°å�³å�¶å�·å�ºå�½å�¿å‘�呂呄呅呇呉呌å‘�呎å‘�呑呚å‘�呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿å’�咃咅咇咈咉咊å’�咑咓咗咘咜咞咟咠咡�\".split(\"\");\n\t\tfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\n\t\tD[134] = \"����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌å”�唎唒唓唕唖唗唘唙唚唜å”�唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌å•�啎å•�啑啒啓啔啗啘啙啚啛å•�啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌å–�å–Žå–�喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀å—�嗂嗃嗆嗇嗈嗊嗋嗎å—�å—�嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�\".split(\"\");\n\t\tfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\n\t\tD[135] = \"����������������������������������������������������������������嘆嘇嘊嘋å˜�å˜�嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜å˜�嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀å™�噂噃噄噅噆噇噈噉噊噋å™�å™�噑噒噓噕噖噚噛å™�噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀åš�嚂嚃嚄嚇嚈嚉嚊嚋嚌åš�åš�嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜åš�嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀å›�囂囃囄囅囆囇囈囉囋囌å›�囎å›�å›�囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀åœ�圂圅圇國圌åœ�圎åœ�åœ�圑�\".split(\"\");\n\t\tfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\n\t\tD[136] = \"����������������������������������������������������������������園圓圔圕圖圗團圙圚圛åœ�圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿å��å�ƒå�„å�…å�†å�ˆå�‰å�‹å�’å�“å�”å�•å�–å�˜å�™å�¢å�£å�¥å�§å�¬å�®å�°å�±å�²å�´å�µå�¸å�¹å�ºå�½å�¾å�¿åž€ï¿½åž�垇垈垉垊åž�垎åž�åž�垑垔垕垖垗垘垙垚垜åž�垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀åŸ�埄埅埆埇埈埉埊埌åŸ�åŸ�埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿å �堃堄堅堈堉堊堌堎å �å �堒堓堔堖堗堘堚堛堜å �堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�\".split(\"\");\n\t\tfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\n\t\tD[137] = \"����������������������������������������������������������������堾堿塀å¡�塂塃塅塆塇塈塉塊塋塎å¡�å¡�塒塓塕塖塗塙塚塛塜å¡�塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�å¢�墎å¢�å¢�墑墔墕墖増墘墛墜å¢�墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌å£�壎å£�å£�壒壓壔壖壗壘壙壚壛壜å£�壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀å¤�夃夅夆夈変夊夋夌夎å¤�夑夒夓夗夘夛å¤�夞夠夡夢夣夦夨夬夰夲夳夵夶夻�\".split(\"\");\n\t\tfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\n\t\tD[138] = \"����������������������������������������������������������������夽夾夿奀奃奅奆奊奌å¥�å¥�奒奓奙奛奜å¥�奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎å¦�å¦�妑妔妕妘妚妛妜å¦�妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀å§�姂姃姄姅姇姈姉姌å§�å§Žå§�姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋å¨�娎å¨�å¨�娒娔娕娖娗娙娚娛å¨�娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿å©�婂婃婄婅婇婈婋婌å©�婎å©�å©�婑婒婓婔婖婗婘婙婛婜å©�婞婟婠�\".split(\"\");\n\t\tfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\n\t\tD[139] = \"����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀åª�媂媃媄媅媆媇媈媉媊媋媌åª�媎åª�åª�媑媓媔媕媖媗媘媙媜åª�媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋å«�嫎å«�å«�嫑嫓嫕嫗嫙嫚嫛å«�嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀å¬�嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌å¬�嬎å¬�å¬�嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜å¬�嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿å­�孂孃孄孅孆孇�\".split(\"\");\n\t\tfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\n\t\tD[140] = \"����������������������������������������������������������������孈孉孊孋孌å­�å­Žå­�孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊å®�宎å®�宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀å¯�寃寈寉寊寋å¯�寎å¯��寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌å°�å°Žå°�尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌å±�屒屓屔屖屗屘屚屛屜å±�屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎å²�岒岓岕å²�岞岟岠岡岤岥岦岧岨�\".split(\"\");\n\t\tfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\n\t\tD[141] = \"����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌å³�峎å³�å³�峑峓峔峕峖峗峘峚峛峜å³�峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�å´�崄崅崈崉崊崋崌å´�å´�å´�崑崒崓崕崗崘崙崚崜å´�崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀åµ�嵂嵃嵄嵅嵆嵈嵉åµ�嵎åµ�åµ�嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀å¶�嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌å¶�å¶Žå¶�å¶�嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�\".split(\"\");\n\t\tfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\n\t\tD[142] = \"����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀å·�巂巃巄巆巇巈巉巊巋巌巎å·�å·�巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋å¸�帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀å¹�幃幆幇幈幉幊幋å¹�幎å¹�å¹�幑幒幓幖幗幘幙幚幜å¹�幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾åº�庂広庅庈庉庌åº�庎庒庘庛åº�庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀å»�廂廃廄廅�\".split(\"\");\n\t\tfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\n\t\tD[143] = \"����������������������������������������������������������������廆廇廈廋廌å»�廎å»�å»�廔廕廗廘廙廚廜å»�廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌å¼�弎å¼�弒弔弖弙弚弜å¼�弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿å½�彂彃彄彅彆彇彈彉彊彋彌å½�彎å½�彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆å¾�徎å¾�徑従徔徖徚徛å¾�從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀å¿�忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�\".split(\"\");\n\t\tfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\n\t\tD[144] = \"����������������������������������������������������������������怈怉怋怌æ€�怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾æ�€æ�„æ�…æ�†æ�‡æ�ˆæ�‰æ�Šæ�Œæ�Žæ��æ�‘æ�“æ�”æ�–æ�—æ�˜æ�›æ�œæ�žæ�Ÿæ� æ�¡æ�¥æ�¦æ�®æ�±æ�²æ�´æ�µæ�·æ�¾æ‚€ï¿½æ‚�悂悅悆悇悈悊悋悎æ‚�æ‚�悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀æƒ�惂惃惄惇惈惉惌æƒ�惎æƒ�æƒ�惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌æ„�愑愒愓愔愖愗愘愙愛愜æ„�愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀æ…�慂慃慄慅慆�\".split(\"\");\n\t\tfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\n\t\tD[145] = \"����������������������������������������������������������������慇慉態æ…�æ…�æ…�慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀æ†�憂憃憄憅憆憇憈憉憊憌æ†�æ†�æ†�憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀æ‡�懃懄懅懆懇應懌æ‡�懎æ‡�æ‡�懓懕懖懗懘懙懚懛懜æ‡�懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀æˆ�戂戃戄戅戇戉戓戔戙戜æˆ�戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�\".split(\"\");\n\t\tfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\n\t\tD[146] = \"����������������������������������������������������������������æ‰�æ‰�払扖扗扙扚扜æ‰�扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽æŠ�抂抃抅抆抇抈抋抌æŠ�抎æŠ�æŠ�抔抙抜æŠ�択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀æ‹��拃拋æ‹�æ‹‘æ‹•æ‹�拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌æŒ�æŒ�æŒ�挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿æ�€æ��æ�„æ�‡æ�ˆæ�Šæ�‘æ�’æ�“æ�”æ�–æ�—æ�˜æ�™æ�šæ�›æ�œæ��æ� æ�¤æ�¥æ�¦æ�¨æ�ªæ�«æ�¬æ�¯æ�°æ�²æ�³æ�´æ�µæ�¸æ�¹æ�¼æ�½æ�¾æ�¿æŽ�掃掄掅掆掋æŽ�掑掓掔掕掗掙掚掛掜æŽ�掞掟採掤掦掫掯掱掲掵掶掹掻掽掿æ�€ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\n\t\tD[147] = \"����������������������������������������������������������������æ��æ�‚æ�ƒæ�…æ�‡æ�ˆæ�Šæ�‹æ�Œæ�‘æ�“æ�”æ�•æ�—æ�˜æ�™æ�šæ�›æ�œæ��æ�Ÿæ�¢æ�¤æ�¥æ�¦æ�§æ�¨æ�«æ�¬æ�®æ�¯æ�°æ�±æ�³æ�µæ�·æ�¹æ�ºæ�»æ�¼æ�¾æ�ƒæ�„æ�†æ�‡æ�ˆæ�‰æ�Šæ��æ�Žæ�‘æ�’æ�•æ�–æ�—æ�˜æ�™æ�šæ��æ�Ÿæ�¢æ�£æ�¤ï¿½æ�¥æ�§æ�¨æ�©æ�«æ�®æ�¯æ�°æ�±æ�²æ�³æ�µæ�¶æ�·æ�¸æ�¹æ�»æ�¼æ�¾æ‘€æ‘‚摃摉摋摌æ‘�摎æ‘�æ‘�摑摓摕摖摗摙摚摛摜æ‘�摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀æ’�撃撆撈撉撊撋撌æ’�æ’Žæ’�æ’�撓撔撗撘撚撛撜æ’�撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿æ“�擃擄擆擇擈擉擊擋擌æ“�擑擓擔擕擖擙據�\".split(\"\");\n\t\tfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\n\t\tD[148] = \"����������������������������������������������������������������擛擜æ“�擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿æ”�攂攃攄攅攆攇攈攊攋攌æ”�攎æ”�æ”�攑攓攔攕攖攗攙攚攛攜æ”�攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀æ•�敂敃敄敆敇敊敋æ•�敎æ•�敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀æ–�斂斃斄斅斆斈斉斊æ–�æ–Žæ–�斒斔斕斖斘斚æ–�斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊æ—�æ—�旑旓旔旕旘旙旚旛旜æ—�旞旟旡旣旤旪旫�\".split(\"\");\n\t\tfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\n\t\tD[149] = \"����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿æ˜�昄昅昇昈昉昋æ˜�æ˜�昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊æ™�晎æ™�晑晘�晙晛晜æ™�晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀æš�暃暅暆暈暉暊暋æš�暎æš�æš�暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀æ›�曂曃曄曅曆曇曈曉曊曋曌æ›�曎æ›�æ›�曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽æœ�朂會�\".split(\"\");\n\t\tfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\n\t\tD[150] = \"����������������������������������������������������������������朄朅朆朇朌朎æœ�朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿æ��æ�„æ�…æ�‡æ�Šæ�‹æ��æ�’æ�”æ�•æ�—æ�˜æ�™æ�šæ�›æ��æ�¢æ�£æ�¤æ�¦æ�§æ�«æ�¬æ�®æ�±æ�´æ�¶ï¿½æ�¸æ�¹æ�ºæ�»æ�½æž€æž‚枃枅枆枈枊枌æž�枎æž�枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌æŸ�柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾æ �栂栃栄栆æ �æ �栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋æ¡�æ¡�桒桖桗桘桙桚桛�\".split(\"\");\n\t\tfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\n\t\tD[151] = \"����������������������������������������������������������������桜æ¡�桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌æ¢�梎æ¢�梑梒梔梕梖梘梙梚梛梜æ¢�梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿æ£�棃棄棅棆棇棈棊棌棎æ£�æ£�棑棓棔棖棗棙棛棜æ£�棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌æ¤�椑椓椔椕椖椗椘椙椚椛検æ¤�椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀æ¥�楃楄楅楆楇楈楉楊楋楌æ¥�楎æ¥�æ¥�楑楒楓楕楖楘楙楛楜楟�\".split(\"\");\n\t\tfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\n\t\tD[152] = \"����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿æ¦�榃榅榊榋榌榎æ¦�æ¦�榑榒榓榖榗榙榚æ¦�榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構æ§�æ§�槑槒槓槕槖槗様槙槚槜æ§�槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀æ¨�樂樃樄樅樆樇樈樉樋樌æ¨�樎æ¨�æ¨�樑樒樓樔樕樖標樚樛樜æ¨�樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀æ©�橂橃橅橆橈橉橊橋橌æ©�橎æ©�橑橒橓橔橕橖橗橚�\".split(\"\");\n\t\tfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\n\t\tD[153] = \"����������������������������������������������������������������橜æ©�橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿æª�檂檃檅檆檇檈檉檊檋檌æª�æª�檒檓檔檕檖檘檙檚檛檜æª�檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀æ«�櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌æ«�櫎æ«�æ«�櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜æ«�櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀æ¬�欂欃欄欅欆欇欈欉權欋欌æ¬�欎æ¬�æ¬�欑欒欓欔欕欖欗欘欙欚欛欜æ¬�欞欟欥欦欨欩欪欫欬欭欮�\".split(\"\");\n\t\tfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\n\t\tD[154] = \"����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀æ­�歂歄歅歈歊歋æ­�æ­Žæ­�æ­�歑歒歓歔歕歖歗歘歚歛歜æ­�歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎æ®�æ®�殑殔殕殗殘殙殜æ®�殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎æ¯�毑毘毚毜æ¯�毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀æ°�氂氃氄氈氉氊氋氌氎氒気氜æ°�氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌æ±�汎æ±�汑汒汓汖汘�\".split(\"\");\n\t\tfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\n\t\tD[155] = \"����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋æ²�沎沑沒沕沖沗沘沚沜æ²�沞沠沢沨沬沯沰沴沵沶沷沺泀æ³�泂泃泆泇泈泋æ³�泎æ³�泑泒泘�泙泚泜æ³�泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊æ´�æ´�æ´�洑洓洔洕洖洘洜æ´�洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌æµ�浕浖浗浘浛æµ�浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀æ¶�涃涄涆涇涊涋æ¶�æ¶�æ¶�涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾æ·�淂淃淈淉淊�\".split(\"\");\n\t\tfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\n\t\tD[156] = \"����������������������������������������������������������������æ·�æ·Žæ·�æ·�淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀æ¸�渂渃渄渆渇済渉渋æ¸�渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀æ¹�湂湅湆湇湈湉湊湋湌æ¹�æ¹�湑湒湕湗湙湚湜æ¹�湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満æº�溂溄溇溈溊溋溌æº�溎溑溒溓溔溕準溗溙溚溛æº�溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌æ»�滎æ»�滒滖滘滙滛滜æ»�滣滧滪滫滬滭滮滯�\".split(\"\");\n\t\tfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\n\t\tD[157] = \"����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀æ¼�漃漄漅漇漈漊漋漌æ¼�漎æ¼�漑漒漖漗漘漙漚漛漜æ¼�漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀æ½�潂�潃潄潅潈潉潊潌潎æ½�æ½�潑潒潓潔潕潖潗潙潚潛æ½�潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀æ¾�澂澃澅澆澇澊澋æ¾�æ¾�澑澒澓澔澕澖澗澘澙澚澛æ¾�澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿æ¿�濃濄濅濆濇濈濊濋濌æ¿�濎æ¿�æ¿�濓濔濕濖濗濘濙濚濛濜æ¿�濟濢濣濤濥�\".split(\"\");\n\t\tfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\n\t\tD[158] = \"����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀ç€�瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌ç€�瀎ç€�ç€�瀒瀓瀔瀕瀖瀗瀘瀙瀜ç€�瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿ç�€ç��ç�‚ç�ƒç�„ç�…ç�†ç�‡ç�ˆç�‰ç�Šç�‹ç��ç�Žç��ç�‘ç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�™ç�šç�›ç�œç��ç�Ÿç� ç�¡ç�¢ç�£ç�¤ç�¥ç�¦ç�§ç�¨ç�©ç�ªç�®ç�±ç�²ç�³ç�´ç�·ç�¹ç�ºç�»ç�½ç‚�炂炃炄炆炇炈炋炌ç‚�ç‚�ç‚�炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌çƒ�烎çƒ�çƒ�烑烒烓烔烕烖烗烚�\".split(\"\");\n\t\tfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\n\t\tD[159] = \"����������������������������������������������������������������烜çƒ�烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀ç„�焂焃焄焅焆焇焈焋焌ç„�焎ç„�焑焒焔焗焛焜ç„�焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀ç…�煂煃煄煆煇煈煉煋ç…�ç…�ç…�煑煒煓煔煕煖煗煘煙煚煛ç…�煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀ç†�熂熃熅熆熇熈熉熋熌ç†�熎ç†�熑熒熓熕熖熗熚熛熜ç†�熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀ç‡�燂燄燅燆燇燈燉燊燋燌ç‡�ç‡�ç‡�燑燒燓�\".split(\"\");\n\t\tfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\n\t\tD[160] = \"����������������������������������������������������������������燖燗燘燙燚燛燜ç‡�燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀çˆ�爂爃爄爅爇爈爉爊爋爌çˆ�爎çˆ�çˆ�爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀ç‰�牂牃牄牅牆牉牊牋牎ç‰�ç‰�牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎çŠ�犑犓犔犕犖犗犘犙犚犛犜çŠ�犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌ç‹�狑狓狔狕狖狘狚狛�\".split(\"\");\n\t\tfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\n\t\tD[161] = \"����������������������������������������������������������������î“�î“�î“�î“�î”��î”�î”�î”�î”� ã€�。·ˉˇ¨〃々—~‖…‘’“â€�〔〕〈〉《》「ã€�『ã€�〖〗ã€�】±×÷∶∧∨∑âˆ�∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽âˆ�≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○â—�◎◇◆□■△▲※→â†�↑↓〓�\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[162] = \"����������������������������������������������������������������î•�î•�î•�î•�î•��î–�ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹî�¦î�§î�¨î�©î�ªî�«â’ˆâ’‰â’Šâ’‹â’Œâ’�â’Žâ’�â’�⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀â’�⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩€î�­ãˆ ãˆ¡ãˆ¢ãˆ£ãˆ¤ãˆ¥ãˆ¦ãˆ§ãˆ¨ãˆ©î�®î�¯â… â…¡â…¢â…£â…¤â…¥â…¦â…§â…¨â…©â…ªâ…«î�°î�±ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\n\t\tD[163] = \"����������������������������������������������������������������î–�î–Žî–�î–�î–�î—��î—�î—Žî—�î—�î—�ï¼�"#¥%&'()*+,ï¼�.ï¼�ï¼�123456789:;<ï¼�>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ï½�bcdefghijklï½�nï½�ï½�qrstuvwxyz{|ï½� ̄�\".split(\"\");\n\t\tfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\n\t\tD[164] = \"����������������������������������������������������������������î˜�î˜�î˜�î˜�î˜��î™�ã��ã�‚ã�ƒã�„ã�…ã�†ã�‡ã�ˆã�‰ã�Šã�‹ã�Œã��ã�Žã��ã��ã�‘ã�’ã�“ã�”ã�•ã�–ã�—ã�˜ã�™ã�šã�›ã�œã��ã�žã�Ÿã� ã�¡ã�¢ã�£ã�¤ã�¥ã�¦ã�§ã�¨ã�©ã�ªã�«ã�¬ã�­ã�®ã�¯ã�°ã�±ã�²ã�³ã�´ã�µã�¶ã�·ã�¸ã�¹ã�ºã�»ã�¼ã�½ã�¾ã�¿ã‚€ã‚�もゃやゅゆょよらりるれã‚�ゎã‚�ã‚�ã‚‘ã‚’ã‚“î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\n\t\tD[165] = \"����������������������������������������������������������������î™�î™�î™�î™�îš��îš�îš�îš�îš�ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダãƒ�ヂッツヅテデトドナニヌãƒ�ノãƒ�ãƒ�パヒビピフブプヘベペホボãƒ�マミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶî�½î�¾î�¿îž€îž��\".split(\"\");\n\t\tfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\n\t\tD[166] = \"����������������������������������������������������������������î›�î›�î›�î›�î›��îœ�ΑΒΓΔΕΖΗΘΙΚΛΜÎ�ΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπÏ�στυφχψωîž�îž�îž�︵︶︹︺︿﹀︽︾ï¹�﹂﹃﹄︻︼︷︸︱︳︴îž��\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"����������������������������������������������������������������îœ�îœ�îœ�îœ�î�€î��î�‚î�ƒî�„�î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥Ð�БВГДЕÐ�ЖЗИЙКЛМÐ�ОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрÑ�туфхцчшщъыьÑ�ÑŽÑ��\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[168] = \"����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿â•�║╒╓╔╕╖╗╘╙╚╛╜â•�╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳â–�▂▃▄▅▆▇�█▉▊▋▌â–�â–Žâ–�▓▔▕▼▽◢◣◤◥☉⊕〒ã€�〞îŸ�Ä�áǎàēéěèīíÇ�ìÅ�óǒòūúǔùǖǘǚǜüêɑńňǹɡㄅㄆㄇㄈㄉㄊㄋㄌã„�ㄎã„�ã„�ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜã„�ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩîŸ�îŸ�îŸ�îŸ��\".split(\"\");\n\t\tfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\n\t\tD[169] = \"����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎ãŽ�㎜ãŽ�㎞㎡ã�„ã�Žã�‘ã�’ã�•︰¬¦℡㈱â€�ー゛゜ヽヾ〆ã‚�ゞ﹉﹊﹋﹌ï¹�﹎ï¹�ï¹�﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜ï¹�﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫〾⿰⿱⿲⿳⿴⿵⿶⿷⿸⿹⿺⿻〇─â”�│┃┄┅┆┇┈┉┊┋┌â”�┎â”�â”�┑┒┓└┕┖┗┘┙┚┛├â”�┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀â•�╂╃╄╅╆╇╈╉╊╋î �î �î Žî ��\".split(\"\");\n\t\tfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\n\t\tD[170] = \"����������������������������������������������������������������狜ç‹�狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌çŒ�çŒ�çŒ�猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽ç�€ç��ç�‚ç�ƒç�„ç�…ç�†ç�‡ç�ˆï¿½ç�‰ç�Šç�‹ç�Œç�Žç��ç�‘ç�“ç�”ç�•ç�–ç�˜ç�™ç�šç�›ç�œç��ç�žç�Ÿç�¡ç�¢ç�£ç�¤ç�¥ç�¦ç�§ç�¨ç�©ç�ªç�«ç�®ç�°ç�±î€€î€�î€�î€�î€�î€�î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî���\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[171] = \"����������������������������������������������������������������ç�²ç�³ç�´ç�µç�¶ç�·ç�¸ç�¹ç�ºç�»ç�¼ç�½ç�¿çŽ€çŽ�玂玃玅玆玈玊玌çŽ�çŽ�çŽ�玒玓玔玕玗玘玙玚玜çŽ�玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿ç��ç�ƒç�„ç�…ç�†ç�‡ï¿½ç�‹ç�Œç�Žç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�šç�›ç�œç��ç�Ÿç�¡ç�¢ç�£ç�¤ç�¦ç�¨ç�ªç�«ç�¬ç�®ç�¯ç�°ç�±ç�³ç�´ç�µç�¶ç�·î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‚€î‚�î‚�î‚�î‚�î‚��\".split(\"\");\n\t\tfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\n\t\tD[172] = \"����������������������������������������������������������������ç�¸ç�¹ç�ºç�»ç�¼ç�½ç�¾ç�¿ç�€ç��ç�‚ç�„ç�‡ç�ˆç�‹ç�Œç��ç�Žç�‘ç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�™ç�œç��ç�žç�Ÿç� ç�¡ç�£ç�¤ç�§ç�©ç�«ç�­ç�¯ç�±ç�²ç�·ç�¸ç�¹ç�ºç�»ç�½ç�¾ç�¿ç‘€ç‘‚瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌ç‘��瑎ç‘�ç‘�瑑瑒瑓瑔瑖瑘ç‘�瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺îƒ�îƒ�îƒ�îƒ�îƒ�î„�î„�î„�î„��\".split(\"\");\n\t\tfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\n\t\tD[173] = \"����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌ç’�ç’�璑璒璓璔璕璖璗璘璙璚璛ç’�璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀ç“�瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌ç“�瓎ç“�ç“�瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛ç“�瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲î„�î…�î…�î…Žî…�î…�î…��\".split(\"\");\n\t\tfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\n\t\tD[174] = \"����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀ç”�甂甃甅甆甇甈甉甊甋甌甎ç”�甒甔甕甖甗甛ç”�甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿ç•�畂畃畄畆畇畉畊ç•�ç•�畑畒畓畕畖畗畘�ç•�畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀ç–�疂疄疅疇î†�î†�î†�î†�î†�î‡�î‡�î‡�î‡��\".split(\"\");\n\t\tfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\n\t\tD[175] = \"����������������������������������������������������������������疈疉疊疌ç–�ç–Žç–�疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀ç—�痆痋痌痎ç—�ç—�痑痓痗痙痚痜ç—�痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋ç˜�瘎ç˜�瘑瘒瘓瘔瘖瘚瘜ç˜�瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽ç™�療癄î‡�îˆ�îˆ�îˆ�îˆ�îˆ��\".split(\"\");\n\t\tfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\n\t\tD[176] = \"����������������������������������������������������������������癅癆癇癈癉癊癋癎ç™�ç™�癑癒癓癕癗癘癙癚癛ç™�癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀çš�皃皅皉皊皌çš�çš�çš�皒皔皕皗皘皚皛�皜çš�皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀ç›�盃啊阿埃挨哎唉哀皑癌蔼矮艾ç¢�爱隘éž�氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭æ�Œæ‰’å�­å�§ç¬†å…«ç–¤å·´æ‹”è·‹é�¶æŠŠè€™å��霸罢爸白æŸ�百摆佰败拜稗斑ç�­æ�¬æ‰³èˆ¬é¢�æ�¿ç‰ˆæ‰®æ‹Œä¼´ç“£å�ŠåŠžç»Šé‚¦å¸®æ¢†æ¦œè†€ç»‘æ£’ç£…èšŒé•‘å‚�谤苞胞包褒剥�\".split(\"\");\n\t\tfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\n\t\tD[177] = \"����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜ç›�盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎çœ�çœ�眑眒眓眔眕眖眗眘眛眜çœ�眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿ç�‚ç�„ç�…ç�†ç�ˆç�‰ç�Šç�‹ç�Œç��ç�Žç��ç�’ç�“ç�”ç�•ç�–ç�—ç�˜ç�™ç�œè–„雹ä¿�堡饱å®�抱报暴豹é²�爆æ�¯ç¢‘悲å�‘北辈背è´�é’¡å€�狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖å¸�庇痹闭æ•�弊必辟å£�臂é�¿é™›éž­è¾¹ç¼–è´¬æ‰�便å�˜å�žè¾¨è¾©è¾«é��标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�\".split(\"\");\n\t\tfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\n\t\tD[178] = \"����������������������������������������������������������������ç��ç�žç�Ÿç� ç�¤ç�§ç�©ç�ªç�­ç�®ç�¯ç�°ç�±ç�²ç�³ç�´ç�µç�¶ç�·ç�¸ç�ºç�»ç�¼çž�瞂瞃瞆瞇瞈瞉瞊瞋çž�çž�瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜çž�瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀çŸ�矂矃矄矅矆矇矈矉矊矋矌矎çŸ�çŸ�矑矒矓矔矕矖矘矙矚çŸ�矞矟矠矡矤病并玻è� æ’­æ‹¨é’µæ³¢å�šå‹ƒæ��铂箔伯帛舶脖膊渤泊驳æ�•å�œå“ºè¡¥åŸ ä¸�布步簿部怖擦猜è£�æ��æ‰�è´¢ç�¬è¸©é‡‡å½©è�œè”¡é¤�å�‚蚕残惭惨ç�¿è‹�舱仓沧è—�æ“�糙槽曹è�‰åŽ•ç­–ä¾§å†Œæµ‹å±‚è¹­æ�’å�‰èŒ¬èŒ¶æŸ¥ç¢´æ�½å¯Ÿå²”差诧拆柴豺æ�€æŽºè�‰é¦‹è°—缠铲产é˜�颤昌猖�\".split(\"\");\n\t\tfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\n\t\tD[179] = \"����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎ç �ç �砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿ç¡�硂硃硄硆硈硉硊硋ç¡�ç¡�硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀ç¢�碂碃场å°�常长å�¿è‚ åŽ‚æ•žç•…å”±å€¡è¶…æŠ„é’žæœ�嘲潮巢å�µç‚’车扯撤掣彻澈郴臣辰尘晨忱沉陈è¶�衬撑称城橙æˆ�呈乘程惩澄诚承逞骋秤å�ƒç—´æŒ�匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠æ„�筹仇绸瞅丑臭åˆ�出橱厨躇锄é›�æ»�除楚�\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"����������������������������������������������������������������碄碅碆碈碊碋ç¢�ç¢�碒碔碕碖碙ç¢�碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌ç£�磎ç£�磑磒磓磖磗磘磚磛磜ç£�磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗æ��触处æ�£å·�穿椽传船喘串疮窗幢床闯创å�¹ç‚Šæ�¶é”¤åž‚春椿醇唇淳纯蠢戳绰疵茨ç£�雌辞慈瓷è¯�此刺èµ�次è�ªè‘±å›±åŒ†ä»Žä¸›å‡‘粗醋簇促蹿篡窜摧崔催脆ç˜�粹淬翠æ�‘存寸磋撮æ�“措挫错æ�­è¾¾ç­”瘩打大呆歹傣戴带殆代贷袋待逮�\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"����������������������������������������������������������������ç¤�礎ç¤�ç¤�礑礒礔礕礖礗礘礙礚礛礜ç¤�礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌ç¥�祎ç¥�ç¥�祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌ç¦�禎ç¦�禑禒怠耽担丹å�•郸掸胆旦氮但惮淡诞弹蛋当挡党è�¡æ¡£åˆ€æ�£è¹ˆå€’岛祷导到稻悼é�“盗德得的蹬ç�¯ç™»ç­‰çžªå‡³é‚“堤低滴迪敌笛狄涤翟嫡抵底地蒂第å¸�弟递缔颠掂滇碘点典é�›åž«ç”µä½ƒç”¸åº—惦奠淀殿碉å�¼é›•凋åˆ�掉å�Šé’“调跌爹碟è�¶è¿­è°�å� ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[182] = \"����������������������������������������������������������������禓禔禕禖禗禘禙禛禜ç¦�禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎ç§�ç§�秓秔秖秗秙秚秛秜ç§�秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿ç¨�稄稅稇稈稉稊稌ç¨�ç¨�稑稒稓稕稖稘稙稛稜ä¸�盯å�®é’‰é¡¶é¼Žé”­å®šè®¢ä¸¢ä¸œå†¬è‘£æ‡‚动栋侗æ�«å†»æ´žå…œæŠ–斗陡豆逗痘都ç�£æ¯’犊独读堵ç�¹èµŒæ�œé•€è‚šåº¦æ¸¡å¦’端短锻段断缎堆兑队对墩å�¨è¹²æ•¦é¡¿å›¤é’�盾é��掇哆多夺垛躲朵跺舵å‰�惰堕蛾峨鹅俄é¢�讹娥æ�¶åŽ„æ‰¼é��鄂饿æ�©è€Œå„¿è€³å°”饵洱二�\".split(\"\");\n\t\tfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\n\t\tD[183] = \"����������������������������������������������������������������ç¨�稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀ç©�穂穃穄穅穇穈穉穊穋穌ç©�穎ç©�ç©�穒穓穔穕穖穘穙穚穛穜ç©�穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎çª�çª�窓窔窙窚窛窞窡窢贰å�‘罚ç­�ä¼�ä¹�阀法ç��藩帆番翻樊矾钒ç¹�凡烦å��返范贩犯饭泛å�ŠèŠ³æ–¹è‚ªæˆ¿é˜²å¦¨ä»¿è®¿çººæ”¾è�²é�žå•¡é£žè‚¥åŒªè¯½å� è‚ºåºŸæ²¸è´¹èŠ¬é…šå�©æ°›åˆ†çº·å�Ÿç„šæ±¾ç²‰å¥‹ä»½å¿¿æ„¤ç²ªä¸°å°�枫蜂峰锋风疯烽逢冯ç¼�讽奉凤佛å�¦å¤«æ•·è‚¤å­µæ‰¶æ‹‚è¾�幅氟符ä¼�俘æœ��\".split(\"\");\n\t\tfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\n\t\tD[184] = \"����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀ç«�竂竃竄竅竆竇竈竉竊竌ç«�竎ç«�ç«�竑竒竓竔竕竗竘竚竛竜ç«�竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀ç¬�笂笅笇笉笌ç¬�笎ç¬�笒笓笖笗笘笚笜ç¬�笟笡笢笣笧笩笭浮涪ç¦�袱弗甫抚辅俯釜斧脯腑府è…�赴副覆赋å¤�傅付阜父腹负富讣附妇缚å’�噶嘎该改概钙盖溉干甘æ�†æŸ‘ç«¿è‚�赶感秆敢赣冈刚钢缸肛纲岗港æ� ç¯™çš‹é«˜è†�羔糕æ�žé•�稿告哥歌æ��戈鸽胳疙割é�©è‘›æ ¼è›¤é˜�隔铬个å�„给根跟耕更庚羹�\".split(\"\");\n\t\tfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\n\t\tD[185] = \"����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀ç­�筂筃筄筆筈筊ç­�筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿ç®�箂箃箄箆箇箈箉箊箋箌箎ç®��箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功æ�­é¾šä¾›èº¬å…¬å®«å¼“巩汞拱贡共钩勾沟苟狗垢构购够辜è�‡å’•ç®�估沽孤姑鼓å�¤è›Šéª¨è°·è‚¡æ•…顾固雇刮瓜å‰�寡挂褂乖æ‹�怪棺关官冠观管馆ç½�惯ç�Œè´¯å…‰å¹¿é€›ç‘°è§„圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚æ£�锅郭国果裹过哈�\".split(\"\");\n\t\tfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\n\t\tD[186] = \"����������������������������������������������������������������篅篈築篊篋ç¯�篎ç¯�ç¯�篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀ç°�簂簃簄簅簆簈簉簊ç°�ç°Žç°�簑簒簓簔簕簗簘簙�簚簛簜ç°�簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩å�«æ¶µå¯’函喊罕翰撼æ��旱憾æ‚�焊汗汉夯æ�­èˆªå£•嚎豪毫éƒ�好耗å�·æµ©å‘µå–�è�·è��核禾和何å�ˆç›’貉阂河涸赫è¤�鹤贺嘿黑痕很狠æ�¨å“¼äº¨æ¨ªè¡¡æ�’轰哄烘虹鸿洪å®�弘红喉侯猴å�¼åŽšå€™å�Žå‘¼ä¹Žå¿½ç‘šå£¶è‘«èƒ¡è�´ç‹�糊湖�\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[187] = \"����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎ç±�ç±�籑籒籓籔籕籖籗籘籙籚籛籜ç±�籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀ç²�粂粃粄粅粆粇�粈粊粋粌ç²�粎ç²�ç²�粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗å�ŽçŒ¾æ»‘画划化è¯�æ§�徊怀淮å��欢环桓还缓æ�¢æ‚£å”¤ç—ªè±¢ç„•涣宦幻è�’慌黄磺è�—簧皇凰惶煌晃幌æ��è°Žç�°æŒ¥è¾‰å¾½æ�¢è›”回æ¯�悔慧å�‰æƒ æ™¦è´¿ç§½ä¼šçƒ©æ±‡è®³è¯²ç»˜è�¤æ˜�婚魂浑混è±�活伙ç�«èŽ·æˆ–æƒ‘éœ�货祸击圾基机畸稽积箕�\".split(\"\");\n\t\tfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\n\t\tD[188] = \"����������������������������������������������������������������粿糀糂糃糄糆糉糋糎ç³�ç³�糑糒糓糔糘糚糛ç³�糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀ç´�紂紃約紅紆紇紈紉紋紌ç´�ç´Žç´�ç´��紑紒紓純紕紖紗紘紙級紛紜ç´�紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉å�‰æž�棘辑ç±�集å�Šæ€¥ç–¾æ±²å�³å«‰çº§æŒ¤å‡ è„Šå·±è“ŸæŠ€å†€å­£ä¼Žç¥­å‰‚悸济寄寂计记既忌际妓继纪嘉枷夹佳家加è�šé¢Šè´¾ç”²é’¾å�‡ç¨¼ä»·æž¶é©¾å«�歼监å�šå°–笺间煎兼肩艰奸缄茧检柬碱硷拣æ�¡ç®€ä¿­å‰ªå‡�è��槛鉴践贱è§�键箭件�\".split(\"\");\n\t\tfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\n\t\tD[189] = \"����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀çµ�終絃組絅絆絇絈絉絊絋経çµ�絎çµ�çµ�絑絒絓絔絕絖絗絘絙絚絛絜çµ�絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀ç¶�綂綃綄綅綆綇綈綉綊綋綌ç¶�ç¶Žç¶�ç¶�綑綒經綔綕綖綗綘å�¥èˆ°å‰‘饯æ¸�溅涧建僵姜将浆江疆蒋桨奖讲匠酱é™�蕉椒ç¤�焦胶交郊浇骄娇嚼æ�…铰矫侥脚狡角饺缴绞剿教酵轿较å�«çª–æ�­æŽ¥çš†ç§¸è¡—阶截劫节桔æ�°æ�·ç�«ç«­æ´�结解å§�戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进é�³æ™‹ç¦�近烬浸�\".split(\"\");\n\t\tfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\n\t\tD[190] = \"����������������������������������������������������������������継続綛綜ç¶�綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀ç·�緂緃緄緅緆緇緈緉緊緋緌ç·�ç·Žç·�ç·�緑緒緓緔緕緖緗緘緙�線緛緜ç·�緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲è�†å…¢èŒŽç�›æ™¶é²¸äº¬æƒŠç²¾ç²³ç»�井警景颈é�™å¢ƒæ•¬é•œå¾„ç—‰é�–竟竞净炯窘æ�ªç©¶çº çŽ–éŸ­ä¹…ç�¸ä¹�酒厩救旧臼舅咎就疚鞠拘狙疽居驹è�Šå±€å’€çŸ©ä¸¾æ²®è�šæ‹’æ�®å·¨å…·è·�踞锯俱å�¥æƒ§ç‚¬å‰§æ��鹃娟倦眷å�·ç»¢æ’…攫抉掘倔爵觉决诀ç»�å�‡è�Œé’§å†›å�›å³»ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\n\t\tD[191] = \"����������������������������������������������������������������緻緼緽緾緿縀ç¸�縂縃縄縅縆縇縈縉縊縋縌ç¸�縎ç¸�ç¸�縑縒縓縔縕縖縗縘縙縚縛縜ç¸�縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌ç¹�繎ç¹�ç¹�繑繒繓織繕繖繗繘繙繚繛繜ç¹�俊竣浚郡éª�喀咖å�¡å’¯å¼€æ�©æ¥·å‡¯æ…¨åˆŠå ªå‹˜å�Žç �看康慷糠扛抗亢炕考拷烤é� å�·è‹›æŸ¯æ£µç£•颗科壳咳å�¯æ¸´å…‹åˆ»å®¢è¯¾è‚¯å•ƒåž¦æ�³å�‘å�­ç©ºæ��孔控抠å�£æ‰£å¯‡æž¯å“­çªŸè‹¦é…·åº“裤夸垮挎跨胯å�—筷侩快宽款匡ç­�狂框矿眶旷况äº�盔岿窥葵奎é­�傀�\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀çº�纃纄纅纆纇纈纉纊纋續çº�纎çº�çº�纑纒纓纔纕纖纗纘纙纚纜çº�纞�纮纴纻纼绖绤绬绹缊ç¼�缞缷缹缻缼缽缾缿罀ç½�罃罆罇罈罉罊罋罌ç½�罎ç½�罒罓馈愧溃å�¤æ˜†æ�†å›°æ‹¬æ‰©å»“阔垃拉喇蜡腊辣啦莱æ�¥èµ–è“�婪æ �拦篮阑兰澜谰æ�½è§ˆæ‡’缆烂滥ç�…榔狼廊郎朗浪æ�žåŠ³ç‰¢è€�佬姥酪烙æ¶�å‹’ä¹�雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨çŠ�黎篱狸离漓ç�†æ�Žé‡Œé²¤ç¤¼èމè�”å��栗丽厉励砾历利傈例ä¿��\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[193] = \"����������������������������������������������������������������罖罙罛罜ç½�罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋ç¾�ç¾�ç¾�羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋ç¿�ç¿�ç¿�翑習翓翖翗翙翚翛翜ç¿�翞翢翣痢立粒沥隶力璃哩俩è�”莲连镰廉怜涟帘敛脸链æ�‹ç‚¼ç»ƒç²®å‡‰æ¢�粱良两辆é‡�晾亮谅撩è�Šåƒšç–—燎寥辽潦了撂镣廖料列裂烈劣猎ç�³æž—磷霖临邻鳞淋凛èµ�å��拎玲è�±é›¶é¾„铃伶羚凌ç�µé™µå²­é¢†å�¦ä»¤æºœç�‰æ¦´ç¡«é¦�留刘瘤æµ�柳六龙è�‹å’™ç¬¼çª¿ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\n\t\tD[194] = \"����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎è€�耑耓耚耛è€�耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾è�€è��è�„è�…è�‡è�ˆè�‰è�Žè��è��è�‘è�“è�•è�–è�—�è�™è�›è�œè��è�žè�Ÿè� è�¡è�¢è�£è�¤è�¥è�¦è�§è�¨è�«è�¬è�­è�®è�¯è�°è�²è�³è�´è�µè�¶è�·è�¸è�¹è�ºè�»è�¼è�½éš†åž„拢陇楼娄æ�‚篓æ¼�陋芦å�¢é¢…åº�炉掳å�¤è™�é²�麓碌露路赂鹿潞禄录陆戮驴å�•é“�侣旅履屡缕虑氯律率滤绿峦挛孪滦å�µä¹±æŽ ç•¥æŠ¡è½®ä¼¦ä»‘沦纶论è��螺罗逻锣箩骡裸è�½æ´›éª†ç»œå¦ˆéº»çŽ›ç �蚂马骂嘛å�—埋买麦å�–迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\n\t\tfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\n\t\tD[195] = \"����������������������������������������������������������������è�¾è‚�肂肅肈肊è‚�肎è‚�è‚�肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋èƒ�èƒ�胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀è„�脃脄脅脇脈脋�脌脕脗脙脛脜è„�脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆å�¯èŒ‚冒帽貌贸么玫枚梅酶霉煤没眉媒é•�æ¯�美昧å¯�妹媚门闷们è�Œè’™æª¬ç›Ÿé”°çŒ›æ¢¦å­Ÿçœ¯é†šé�¡ç³œè¿·è°œå¼¥ç±³ç§˜è§…泌蜜密幂棉眠绵冕å…�勉娩缅é�¢è‹—æ��çž„è—�秒渺庙妙蔑ç�­æ°‘抿皿æ•�悯闽明螟鸣铭å��命谬摸�\".split(\"\");\n\t\tfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\n\t\tD[196] = \"����������������������������������������������������������������腀è…�腂腃腄腅腇腉è…�è…Žè…�腒腖腗腘腛腜è…�腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸è†�膃膄膅膆膇膉膋膌è†�膎è†�膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋è‡�臎è‡�è‡�臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟æŸ�拇牡亩姆æ¯�墓暮幕募慕木目ç�¦ç‰§ç©†æ‹¿å“ªå‘�钠那娜纳氖乃奶è€�奈å�—男难囊挠脑æ�¼é—¹æ·–å‘¢é¦�内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵æ�»å¿µå¨˜é…¿é¸Ÿå°¿æ��è�‚孽啮镊é•�涅您柠狞å‡�å®��\".split(\"\");\n\t\tfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\n\t\tD[197] = \"����������������������������������������������������������������臔臕臖臗臘臙臚臛臜è‡�臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎èˆ�舑舓舕舖舗舘舙舚èˆ�舠舤舥舦舧舩舮舲舺舼舽舿�艀è‰�艂艃艅艆艈艊艌è‰�艎è‰�艑艒艓艔艕艖艗艙艛艜è‰�艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖è™�疟挪懦糯诺哦欧鸥殴藕呕å�¶æ²¤å•ªè¶´çˆ¬å¸•怕ç�¶æ‹�排牌徘湃派攀潘盘ç£�盼畔判å�›ä¹“庞æ—�耪胖抛咆刨炮è¢�跑泡呸胚培裴赔陪é…�佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋é¹�æ�§ç¢°å�¯ç ’霹批披劈ç�µæ¯—�\".split(\"\");\n\t\tfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\n\t\tD[198] = \"����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀èŠ�芃芅芆芇芉芌èŠ�芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉è‹�苖苙苚è‹�苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋èŒ�èŒ�茒茓茖茘茙èŒ�茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻å±�譬篇å��片骗飘漂瓢票撇瞥拼频贫å“�è�˜ä¹’å�ªè‹¹è��平凭瓶评å±�å�¡æ³¼é¢‡å©†ç ´é­„迫粕剖扑铺仆莆葡è�©è’²åŸ”朴圃普浦谱æ›�瀑期欺栖戚妻七凄漆柒æ²�其棋奇歧畦崎è„�é½�旗祈ç¥�骑起岂乞ä¼�å�¯å¥‘砌器气迄弃汽泣讫æŽ��\".split(\"\");\n\t\tfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\n\t\tD[199] = \"����������������������������������������������������������������茾茿è��è�‚è�„è�…è�ˆè�Šè�‹è�Œè��è�Žè�“è�•è�–è�—è�˜è�™è��è�¢è�°è�±è�²è�³è�´è�µè�¶è�¹è�ºè�¾è�¿èŽ€èŽ�莂莃莄莇莈莊莋莌èŽ�èŽ�èŽ�莑莔莕莖莗莙莚èŽ�莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿è�‚è�ƒè�„è�†è�ˆè�‰è�‹è��è�Žè��è�‘è�’è�“è�•è�—è�™è�šè�›è�žè�¢è�£è�¤è�¦è�§è�¨è�«è�¬è�­æ�°æ´½ç‰µæ‰¦é’Žé“…å�ƒè¿�签仟谦乾黔钱钳å‰�潜é�£æµ…谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭ä¿�çª�切茄且怯窃钦侵亲秦ç�´å‹¤èŠ¹æ“’ç¦½å¯�æ²�é�’轻氢倾å�¿æ¸…擎晴氰情顷请庆ç�¼ç©·ç§‹ä¸˜é‚±ç�ƒæ±‚囚酋泅趋区蛆曲躯屈驱渠�\".split(\"\");\n\t\tfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\n\t\tD[200] = \"����������������������������������������������������������������è�®è�¯è�³è�´è�µè�¶è�·è�ºè�»è�¼è�¾è�¿è�€è�‚è�…è�‡è�ˆè�‰è�Šè��è�’è�“è�”è�•è�–è�—è�™è�šè�›è�žè�Ÿè� è�¡è�¢è�£è�©è�ªè�«è�¬è�­è�®è�¯è�°è�²è�³è�´è�µè�¶è�·è�¹è�ºè�»è�¾è�¿è‘€è‘�葂葃葄葅葇葈葉�葊葋葌è‘�葎è‘�è‘�葒葓葔葕葖葘è‘�葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼å�–娶龋趣去圈颧æ�ƒé†›æ³‰å…¨ç—Šæ‹³çŠ¬åˆ¸åŠ�缺炔瘸å�´é¹Šæ¦·ç¡®é›€è£™ç¾¤ç„¶ç‡ƒå†‰æŸ“瓤壤攘嚷让饶扰绕惹热壬ä»�人å¿�韧任认刃妊纫扔ä»�日戎茸蓉è�£èž�熔溶容绒冗æ�‰æŸ”肉茹蠕儒孺如辱乳æ±�入褥软阮蕊瑞é”�闰润若弱撒洒è�¨è…®é³ƒå¡žèµ›ä¸‰å���\".split(\"\");\n\t\tfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\n\t\tD[201] = \"����������������������������������������������������������������葽葾葿蒀è’�蒃蒄蒅蒆蒊è’�è’�è’�蒑蒒蒓蒔蒕蒖蒘蒚蒛è’�蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎è“�蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀è”�蔂伞散桑嗓丧æ�”骚扫嫂瑟色涩森僧莎砂æ�€åˆ¹æ²™çº±å‚»å•¥ç…žç­›æ™’ç�Šè‹«æ�‰å±±åˆ ç…½è¡«é—ªé™•擅赡膳善汕扇缮墒伤商èµ�晌上尚裳梢æ�Žç¨�烧èŠ�勺韶少哨邵ç»�奢赊蛇舌èˆ�赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲å�‡ç»³ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[202] = \"����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋è”�蔎è”�è”�蔒蔔蔕蔖蔘蔙蔛蔜è”�蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀è•�蕂蕄蕅蕆蕇蕋蕌è•�蕎è•�è•�蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜è•�蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀è–�çœ�盛剩胜圣师失狮施湿诗尸虱å��石拾时什食蚀实识å�²çŸ¢ä½¿å±Žé©¶å§‹å¼�示士世柿事拭誓é€�势是嗜噬适仕ä¾�释饰æ°�市æ�ƒå®¤è§†è¯•收手首守寿授售å�—瘦兽蔬枢梳殊抒输å�”舒淑ç–�书赎孰熟薯暑曙署蜀é»�鼠属术述树æ�Ÿæˆ�竖墅庶数漱�\".split(\"\");\n\t\tfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\n\t\tD[203] = \"����������������������������������������������������������������薂薃薆薈薉薊薋薌è–�è–Žè–�薑薒薓薔薕薖薗薘薙薚è–�薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌è—�藎藑藒�藔藖藗藘藙藚藛è—�藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸æ�•刷è€�摔衰甩帅栓拴霜å�Œçˆ½è°�æ°´ç�¡ç¨Žå�®çž¬é¡ºèˆœè¯´ç¡•朔çƒ�斯撕嘶æ€�ç§�å�¸ä¸�死肆寺嗣四伺似饲巳æ�¾è€¸æ€‚颂é€�宋讼诵æ�œè‰˜æ“žå—½è‹�酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋éš�绥髓碎å²�ç©—é�‚隧祟孙æ�Ÿç¬‹è“‘梭唆缩ç��ç´¢é”�所塌他它她塔�\".split(\"\");\n\t\tfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\n\t\tD[204] = \"����������������������������������������������������������������藹藺藼藽藾蘀è˜�蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌è˜�蘎è˜�è˜�蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜è˜�蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�è™�虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜è™�號虠虡虣虤虥虦虧虨虩虪ç�­æŒžè¹‹è¸�胎苔抬å�°æ³°é…žå¤ªæ€�æ±°å��摊贪瘫滩å�›æª€ç—°æ½­è°­è°ˆå�¦æ¯¯è¢’碳探å�¹ç‚­æ±¤å¡˜æ�ªå ‚棠膛å”�糖倘躺淌趟烫æŽ�涛滔绦è�„桃逃淘陶讨套特藤腾疼誊梯剔踢锑æ��题蹄啼体替åš�惕涕剃屉天添填田甜æ�¬èˆ”腆挑æ�¡è¿¢çœºè·³è´´é“�帖厅å�¬çƒƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\n\t\tD[205] = \"����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎èš�èš�蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿è›�蛂蛃蛅蛈蛌è›�蛒蛓蛕蛖蛗蛚蛜�è›�蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿èœ�蜄蜅蜆蜋蜌蜎èœ�èœ�蜑蜔蜖汀廷å�œäº­åº­æŒºè‰‡é€šæ¡�酮瞳å�Œé“œå½¤ç«¥æ¡¶æ�…筒统痛å�·æŠ•头é€�凸秃çª�图徒途涂屠土å��å…”æ¹�团推颓腿蜕褪退å�žå±¯è‡€æ‹–托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄å¨��\".split(\"\");\n\t\tfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\n\t\tD[206] = \"����������������������������������������������������������������蜙蜛èœ�蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽è�€è��è�‚è�ƒè�„è�…è�†è�Šè�‹è��è��è��è�‘è�’è�”è�•è�–è�˜è�šè�›è�œè��è�žè�Ÿè�¡è�¢è�¦è�§è�¨è�©è�ªè�«è�¬è�­è�¯è�±è�²è�³è�µï¿½è�·è�¸è�¹è�ºè�¿èž€èž�螄螆螇螉螊螌螎èž�èž�螑螒螔螕螖螘螙螚螛螜èž�螞螠螡螢螣螤å·�å¾®å�±éŸ¦è¿�桅围唯惟为æ½�维苇è�Žå§”伟伪尾纬未蔚味ç•�胃喂é­�ä½�渭谓尉慰å�«ç˜Ÿæ¸©èšŠæ–‡é—»çº¹å�»ç¨³ç´Šé—®å—¡ç¿�ç“®æŒ�蜗涡çª�我斡å�§æ�¡æ²ƒå·«å‘œé’¨ä¹Œæ±¡è¯¬å±‹æ— èŠœæ¢§å�¾å�´æ¯‹æ­¦äº”æ�‚å�ˆèˆžä¼�ä¾®å�žæˆŠé›¾æ™¤ç‰©å‹¿åŠ¡æ‚Ÿè¯¯æ˜”ç†™æž�西硒矽晰嘻å�¸é”¡ç‰ºï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\n\t\tD[207] = \"����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿èŸ�蟂蟃蟄蟅蟇蟈蟉蟌èŸ�蟎èŸ�èŸ�蟔蟕蟖蟗蟘蟙蟚蟜èŸ�蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀è �蠂蠄蠅蠆蠇蠈蠉蠋蠌è �è Žè �è �蠑蠒蠔蠗蠘蠙蠚蠜è �蠞蠟蠠蠣稀æ�¯å¸Œæ‚‰è†�夕惜熄烯溪æ±�犀檄袭席习媳喜铣洗系隙æˆ�细瞎虾匣霞辖暇峡侠狭下厦å¤�å�“掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷é™�线相厢镶香箱襄湘乡翔祥详想å“�享项巷橡åƒ�å�‘象è�§ç¡�霄削哮嚣销消宵淆晓�\".split(\"\");\n\t\tfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\n\t\tD[208] = \"����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿è¡�衂衃衆衇衈衉衊衋衎è¡�è¡�衑衒術衕衖衘衚衛衜è¡�衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎è¢�è¢�袑袓袔袕袗袘袙袚袛è¢�袞袟袠袡袣袥袦袧袨袩袪å°�å­�校肖啸笑效楔些歇è�Žéž‹å��挟æ�ºé‚ªæ–œèƒ�è°�写械å�¸èŸ¹æ‡ˆæ³„泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸æ��性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须å¾�许蓄酗å�™æ—­åº�畜æ�¤çµ®å©¿ç»ªç»­è½©å–§å®£æ‚¬æ—‹çŽ„ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\n\t\tD[209] = \"����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌è£�è£�è£�裑裓裖裗裚裛補è£�裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀è¤�褃褄褅褆複褈�褉褋褌è¤�褎è¤�褑褔褕褖褗褘褜è¤�褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚é�´è–›å­¦ç©´é›ªè¡€å‹‹ç†�循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹ç›�严研蜒岩延言颜阎炎沿奄掩眼è¡�演艳堰燕厌砚é›�å”�彦焰宴谚验殃央鸯秧æ�¨æ‰¬ä½¯ç–¡ç¾Šæ´‹é˜³æ°§ä»°ç—’养样漾邀腰妖瑶�\".split(\"\");\n\t\tfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\n\t\tD[210] = \"����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌è¥�襎è¥�è¥�襑襒襓襔襕襖襗襘襙襚襛襜è¥�襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌è¦�覎è¦�è¦�覑覒覓覔覕視覗覘覙覚覛覜è¦�覞覟覠覡摇尧é�¥çª‘谣姚咬舀è�¯è¦�耀椰噎耶爷野冶也页掖业å�¶æ›³è…‹å¤œæ¶²ä¸€å£¹åŒ»æ�–铱ä¾�伊衣é¢�夷é�—移仪胰疑沂宜姨å½�椅èš�倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔æ„�毅忆义益溢诣议谊译异翼翌绎茵è�«å› æ®·éŸ³é˜´å§»å�Ÿé“¶æ·«å¯…饮尹引éš��\".split(\"\");\n\t\tfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\n\t\tD[211] = \"����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃è§�觓觔觕觗觘觙觛è§�觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿è¨�訂訃訄訅訆計訉訊訋訌è¨�討è¨�è¨�訑訒訓訔訕訖託記訙訚訛訜è¨�å�°è‹±æ¨±å©´é¹°åº”缨莹è�¤è�¥è�§è�‡è¿Žèµ¢ç›ˆå½±é¢–硬映哟拥佣臃痈庸é›�踊蛹å’�泳涌永æ�¿å‹‡ç”¨å¹½ä¼˜æ‚ å¿§å°¤ç”±é‚®é“€çŠ¹æ²¹æ¸¸é…‰æœ‰å�‹å�³ä½‘釉诱å�ˆå¹¼è¿‚淤于盂榆虞愚舆余俞逾鱼愉æ¸�渔隅予娱雨与屿禹宇语羽玉域芋éƒ�å��é�‡å–»å³ªå¾¡æ„ˆæ¬²ç‹±è‚²èª‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\n\t\tD[212] = \"����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀è©�詂詃詄詅詆詇詉詊詋詌è©�詎è©�è©�詑詒詓詔評詖詗詘詙詚詛詜è©�詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣è¢�原æ�´è¾•园员圆猿æº�缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨å…�è¿�è•´é…�晕韵孕åŒ�ç ¸æ�‚栽哉ç�¾å®°è½½å†�在咱攒暂赞赃è„�葬é�­ç³Ÿå‡¿è—»æž£æ—©æ¾¡èš¤èº�噪造皂ç�¶ç‡¥è´£æ‹©åˆ™æ³½è´¼æ€Žå¢žæ†Žæ›¾èµ æ‰Žå–³æ¸£æœ­è½§ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\n\t\tD[213] = \"����������������������������������������������������������������èª�誂誃誄誅誆誇誈誋誌èª�誎èª�èª�誑誒誔誕誖誗誘誙誚誛誜èª�語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀è«�諂�諃諄諅諆談諈諉諊請諌è«�諎è«�è«�諑諒諓諔諕論諗諘諙諚諛諜è«�諞諟諠諡諢諣铡闸眨栅榨咋ä¹�炸诈摘斋宅窄债寨瞻毡詹粘沾ç›�斩辗崭展蘸栈å� æˆ˜ç«™æ¹›ç»½æ¨Ÿç« å½°æ¼³å¼ æŽŒæ¶¨æ�–丈å¸�账仗胀瘴障招昭找沼赵照罩兆肇å�¬é�®æŠ˜å“²è›°è¾™è€…锗蔗这浙ç��斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣ç��å¾�狰争怔整拯正政�\".split(\"\");\n\t\tfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\n\t\tD[214] = \"����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀è¬�謂謃謄謅謆謈謉謊謋謌è¬�謎è¬�è¬�謑謒謓謔謕謖謗謘謙謚講謜è¬�謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀è­�譂譃譄譅帧症郑è¯�èŠ�æž�支å�±èœ˜çŸ¥è‚¢è„‚æ±�之织è�Œç›´æ¤�殖执值侄å�€æŒ‡æ­¢è¶¾å�ªæ—¨çº¸å¿—挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终ç§�è‚¿é‡�仲众舟周州洲诌粥轴肘帚咒皱宙昼骤ç� æ ªè››æœ±çŒªè¯¸è¯›é€�竹烛煮拄瞩嘱主著柱助蛀贮铸筑�\".split(\"\");\n\t\tfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\n\t\tD[215] = \"����������������������������������������������������������������譆譇譈證譊譋譌è­�è­Žè­�è­�譑譒譓譔譕譖譗識譙譚譛譜è­�譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀è®�讂讃讄讅讆�讇讈讉變讋讌è®�讎è®�è®�讑讒讓讔讕讖讗讘讙讚讛讜è®�讞讟讬讱讻诇è¯�诪谉谞ä½�注ç¥�驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘å� ç¼€è°†å‡†æ�‰æ‹™å�“桌ç�¢èŒ�酌啄ç�€ç�¼æµŠå…¹å’¨èµ„姿滋淄孜紫仔籽滓å­�自æ¸�字鬃棕踪宗综总纵邹走å¥�æ��ç§Ÿè¶³å�’æ—�祖诅阻组钻纂嘴醉最罪尊é�µæ˜¨å·¦ä½�柞å�šä½œå��座î ��\".split(\"\");\n\t\tfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\n\t\tD[216] = \"����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋è±�豎è±�è±�豑豒豓豔豖豗豘豙豛豜è±�豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀è²�貃貄貆貇�貈貋è²�貎è²�è²�貑貒貓貕貖貗貙貚貛貜è²�貞貟負財貢貣貤貥貦貧貨販貪貫責貭äº�丌兀ä¸�廿å�…丕亘丞鬲孬噩丨禺丿匕乇夭爻å�®æ°�囟胤馗毓ç�¾é¼—丶亟é¼�乜乩亓芈孛啬å˜�仄åŽ�åŽ�厣厥厮é�¥èµ�匚å�µåŒ¦åŒ®åŒ¾èµœå�¦å�£åˆ‚刈刎刭刳刿剀剌剞剡剜蒯剽劂åŠ�åŠ�劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚ä½��\".split(\"\");\n\t\tfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\n\t\tD[217] = \"����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀è³�賂賃賄賅賆資賈賉賊賋賌è³�賎è³�è³�賑賒賓賔賕賖賗賘賙賚賛賜è³�賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀è´�贂贃贄贅贆贇贈贉贊贋贌è´�佟佗伲伽佶佴侑侉侃ä¾�佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩å�Œä¿³å€¬å€�倮倭俾倜倌倥倨å�¾å�ƒå�•å�ˆå�Žå�¬å�»å‚¥å‚§å‚©å‚ºåƒ–儆僭僬僦僮儇儋ä»�氽佘佥俎龠汆籴兮巽黉馘å†�夔勹åŒ�訇åŒ�凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�\".split(\"\");\n\t\tfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\n\t\tD[218] = \"����������������������������������������������������������������贎è´�è´�贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌è¶�è¶Žè¶�è¶�趒趓趕趖趗趘趙趚趛趜è¶�趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀è·�跂跅跇跈跉跊è·�è·�跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋è¯�诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌è°�谑谒谔谕谖谙谛谘è°�谟谠谡谥谧谪谫谮谯谲谳谵谶å�©å�ºé˜�阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈éš�éš—éš°é‚—é‚›é‚�邙邬邡邴邳邶邺�\".split(\"\");\n\t\tfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\n\t\tD[219] = \"����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀è¸�踂踃踄踆踇踈踋è¸�踎è¸�踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌è¹�蹎è¹�è¹�蹓蹔蹕蹖蹗蹘蹚蹛蹜è¹�蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰éƒ�郅邾éƒ�郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆åˆ�奂劢劬劭劾哿å‹�å‹–å‹°å�Ÿç‡®çŸ�廴凵凼鬯厶å¼�畚巯å�Œåž©åž¡å¡¾å¢¼å£…壑圩圬圪圳圹圮圯å�œåœ»å�‚å�©åž…å�«åž†å�¼å�»å�¨å�­å�¶å�³åž­åž¤åžŒåž²åŸ�垧垴垓垠埕埘埚埙埒垸埴埯埸埤åŸ��\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌èº�躎躑躒躓躕躖躗躘躙躚躛èº�躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀è»�軂�軃軄軅軆軇軈軉車軋軌è»�è»�è»�軑軒軓軔軕軖軗軘軙軚軛軜è»�軞軟軠軡転軣軤堋å �埽埭堀堞堙塄堠塥塬å¢�墉墚墀馨鼙懿艹艽艿èŠ�芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌è‹�芩芴芡芪芟苄苎芤苡茉苷苤èŒ�茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜è�‘è�›è�œèŒˆèŽ’èŒ¼èŒ´èŒ±èŽ›è�žèŒ¯è��è�‡è�ƒè�Ÿè�€èŒ—è� èŒ­èŒºèŒ³è�¦è�¥ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[221] = \"����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀è¼�輂較輄輅輆輇輈載輊輋輌è¼�輎è¼�è¼�輑輒輓輔輕輖輗輘輙輚輛輜è¼�輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀è½�轂轃轄è�¨èŒ›è�©è�¬è�ªè�­è�®èްè�¸èŽ³èŽ´èŽ èŽªèŽ“èŽœèŽ…è�¼èŽ¶èŽ©è�½èޏè�»èŽ˜èŽžèŽ¨èŽºèŽ¼è��è��è�¥è�˜å ‡è�˜è�‹è��è�½è�–è�œè�¸è�‘è�†è�”è�Ÿè��è�ƒè�¸è�¹è�ªè�…è�€è�¦è�°è�¡è‘œè‘‘葚葙葳蒇蒈葺蒉葸è�¼è‘†è‘©è‘¶è’Œè’Žè�±è‘­è“�è“�è“�蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌ç”�蔸蓰蔹蔟蔺�\".split(\"\");\n\t\tfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\n\t\tD[222] = \"����������������������������������������������������������������轅轆轇轈轉轊轋轌è½�轎è½�è½�轑轒轓轔轕轖轗轘轙轚轛轜è½�轞轟轠轡轢轣轤轥轪辀辌辒è¾�辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌è¿�è¿�迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇è–�蕹薮薜薅薹薷薰藓è—�藜藿蘧蘅蘩蘖蘼廾弈夼å¥�耷奕奚奘åŒ�尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹æ�‹æ�ƒæŽ­æ�¶æ�±æ�ºæŽŽæŽ´æ�­æŽ¬æŽŠæ�©æŽ®æŽ¼æ�²æ�¸æ� æ�¿æ�„æ�žæ�Žæ‘’æ�†æŽ¾æ‘…æ‘�æ�‹æ�›æ� æ�Œæ�¦æ�¡æ‘žæ’„摭撖�\".split(\"\");\n\t\tfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\n\t\tD[223] = \"����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿é�€é�ƒé�…é�†é�ˆé�‰é�Šé�‹é�Œé�Žé�”é�•é�–é�™é�šé�œé��é�žé�Ÿé� é�¡é�¤é�¦é�§é�©é�ªé�«é�¬é�¯é�°é�±é�²é�³é�¶é�·é�¸é�¹é�ºé�»é�¼é�¾é‚��還邅邆邇邉邊邌é‚�邎é‚�é‚�邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀æ“�擗擤擢攉攥攮弋忒甙弑å�Ÿå�±å�½å�©å�¨å�»å�’å�–å�†å‘‹å‘’呓呔呖呃å�¡å‘—å‘™å�£å�²å’‚咔呷呱呤咚咛咄呶呦å’�å“�咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤å“�å“�哞唛哧唠哽唔哳唢唣å”�唑唧唪啧å–�喵啉啭å•�啕唿å•�唼�\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[224] = \"����������������������������������������������������������������郂郃郆郈郉郋郌éƒ�郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀é„�鄃鄅鄆鄇鄈鄉鄊鄋鄌é„�鄎é„�é„�鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�é„�鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀é…�酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈å–�喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦å—�嗄嗯嗥嗲嗳嗌å—�嗨嗵嗤辔嘞嘈嘌å˜�嘤嘣嗾嘀嘧嘭噘嘹噗嘬å™�噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗å›�囡囵囫囹囿圄圊圉圜å¸�帙帔帑帱帻帼�\".split(\"\");\n\t\tfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\n\t\tD[225] = \"����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀é†�醂醃醄醆醈醊醎é†�醓醔醕醖醗醘醙醜é†�醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀é‡�釂釃釄釅釆釈釋é‡�釒釓釔釕釖釗釘釙釚釛é‡�釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺å²�å²�岖岈岘岙岑岚岜岵岢岽岬岫岱岣å³�岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯åµ�嵫嵋嵊嵩嵴嶂嶙å¶�豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃ç‹�狎ç‹�狒狨狯狩狲狴狷çŒ�狳猃狺�\".split(\"\");\n\t\tfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\n\t\tD[226] = \"����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀éˆ�鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌éˆ�鈎éˆ�éˆ�鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜éˆ�鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀é‰�鉂鉃鉄鉅狻猗猓猡猊猞çŒ�猕猢猹猥猬猸猱ç��ç��ç�—ç� ç�¬ç�¯ç�¾èˆ›å¤¥é£§å¤¤å¤‚饣饧饨饩饪饫饬饴饷饽馀馄馇馊é¦�é¦�馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖å¿�怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛æ€�æ€�怩怫怊怿怡æ�¸æ�¹æ�»æ�ºæ�‚�\".split(\"\");\n\t\tfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\n\t\tD[227] = \"����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌é‰�鉎é‰�é‰�鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜é‰�鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀éŠ�銂銃銄銅�銆銇銈銉銊銋銌éŠ�éŠ�éŠ�銑銒銓銔銕銖銗銘銙銚銛銜éŠ�銞銟銠銡銢銣銤銥銦銧æ�ªæ�½æ‚–悚悭æ‚�悃悒悌悛惬悻悱æƒ�惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵å¿�隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌é˜�é˜�阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅æ²�沔沌汨汩汴汶沆沩æ³�泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�\".split(\"\");\n\t\tfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\n\t\tD[228] = \"����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀é‹�鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌é‹�鋎é‹�é‹�鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜é‹�鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀éŒ�錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫æµ�洮洵洚æµ�浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦æ·�淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴æ»�æº�滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉æ¾�澌潸潲潼潺濑�\".split(\"\");\n\t\tfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\n\t\tD[229] = \"����������������������������������������������������������������錊錋錌éŒ�錎éŒ�éŒ�錑錒錓錔錕錖錗錘錙錚錛錜éŒ�錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰ï¿½é�Šé�‹é�Œé��é�Žé��é��é�‘é�’é�“é�”é�•é�–é�—é�˜é�™é�šé�›é�œé��é�žé�Ÿé� é�¡é�¢é�£é�¤é�¥é�¦é�§é�¨é�©é�«æ¿‰æ¾§æ¾¹æ¾¶æ¿‚濡濮濞濠濯瀚瀣瀛瀹瀵ç��ç�žå®€å®„宕宓宥宸甯骞æ�´å¯¤å¯®è¤°å¯°è¹‡è¬‡è¾¶è¿“迕迥迮迤迩迦迳迨逅逄逋逦逑é€�逖逡逵逶逭逯é�„é�‘é�’é��é�¨é�˜é�¢é�›æš¹é�´é�½é‚‚邈邃邋å½�彗彖彘尻咫å±�屙孱屣屦羼弪弩弭艴弼鬻屮å¦�妃å¦�妩妪妣�\".split(\"\");\n\t\tfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\n\t\tD[230] = \"����������������������������������������������������������������é�¬é�­é�®é�¯é�°é�±é�²é�³é�´é�µé�¶é�·é�¸é�¹é�ºé�»é�¼é�½é�¾é�¿éŽ€éŽ�鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌éŽ�鎎éŽ�鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜éŽ�鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰é�‹é�Œé��妗姊妫妞妤姒妲妯姗妾娅娆å§�娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀éª�骅骈骊éª�骒骓骖骘骛骜éª�骟骠骢骣骥骧纟纡纣纥纨纩�\".split(\"\");\n\t\tfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\n\t\tD[231] = \"����������������������������������������������������������������é�Žé��é��é�‘é�’é�“é�”é�•é�—é�˜é�™é�šé�›é�œé��é�žé�Ÿé� é�¡é�¢é�£é�¤é�¥é�¦é�§é�¨é�©é�ªé�«é�¬é�­é�®é�¯é�°é�±é�²é�³é�´é�µé�¶é�·é�¸é�¹é�ºé�»é�¼é�½é�¾é�¿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰é�Šé�‹é�Œé���é�Žé��é��é�‘é�’é�“é�”é�•é�–é�—é�˜é�™é�šé�›é�œé��é�žé�Ÿé� é�¡é�¢é�£é�¤é�¥é�¦é�§é�¨é�©é�ªé�«é�¬é�­é�®çº­çº°çº¾ç»€ç»�绂绉绋绌ç»�绔绗绛绠绡绨绫绮绯绱绲ç¼�绶绺绻绾ç¼�缂缃缇缈缋缌ç¼�缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟ç��ç�‚ç�‘玷玳ç�€ç�‰ç�ˆç�¥ç�™é¡¼ç�Šç�©ç�§ç�žçŽºç�²ç��ç�ªç‘›ç�¦ç�¥ç�¨ç�°ç�®ç�¬ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\n\t\tD[232] = \"����������������������������������������������������������������é�¯é�°é�±é�²é�³é�´é�µé�¶é�·é�¸é�¹é�ºé�»é�¼é�½é�¿é‘€é‘�鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌é‘�鑎é‘�é‘�鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜é‘�鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀é’�钂钃钄钑钖钘铇é“�铓铔铚铦铻锜锠ç�›ç�šç‘�瑜瑗瑕瑙瑷瑭瑾璜璎璀ç’�璇璋璞璨璩ç’�璧瓒璺韪韫韬æ�Œæ�“æ�žæ�ˆæ�©æž¥æž‡æ�ªæ�³æž˜æž§æ�µæž¨æžžæž­æž‹æ�·æ�¼æŸ°æ ‰æŸ˜æ ŠæŸ©æž°æ ŒæŸ™æžµæŸšæž³æŸ�栀柃枸柢栎æŸ�柽栲栳桠桡桎桢桄桤梃æ �桕桦æ¡�桧桀栾桊桉栩梵æ¢�桴桷梓桫棂楮棼椟椠棹�\".split(\"\");\n\t\tfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\n\t\tD[233] = \"����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門é–�閂閃閄閅閆閇閈閉閊開閌é–�é–Žé–�é–�閑閒間閔閕閖閗閘閙閚閛閜é–�閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀é—�闂闃闄闅闆闇闈闉闊闋椤棰椋æ¤�楗棣æ¤�楱椹楠楂æ¥�榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱æ§�槊槟榕槠æ¦�槿樯槭樗樘橥槲橄樾檠æ©�橛樵檎橹樽樨橘橼檑æª�檩檗檫猷ç�’æ®�殂殇殄殒殓æ®�殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾è¾�辂辄辇辋�\".split(\"\");\n\t\tfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\n\t\tD[234] = \"����������������������������������������������������������������闌é—�é—Žé—�é—�闑闒闓闔闕闖闗闘闙闚闛關é—�闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾é™�陃陊陎é™�陑陒陓陖陗�陘陙陚陜é™�陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀éš�隂隃隄隇隉隊è¾�辎è¾�辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿ç”�甑甓攴旮旯旰昊昙æ�²æ˜ƒæ˜•昀炅曷æ˜�昴昱昶昵耆晟晔æ™�æ™�晖晡晗晷暄暌暧æš�暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇èµ�赕赙觇觊觋觌觎è§�è§�觑牮犟ç‰�牦牯牾牿犄犋çŠ�çŠ�犒挈挲掰�\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[235] = \"����������������������������������������������������������������隌階隑隒隓隕隖隚際éš�隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋é›�雑雓雔雖雗雘雙雚雛雜é›�雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌éœ�霑霒霔霕霗霘霙霚霛éœ�霟霠æ�¿æ“˜è€„毪毳毽毵毹氅氇氆æ°�氕氘氙氚氡氩氤氪氲攵敕敫ç‰�牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙èƒ�胗æœ�èƒ�胫胱胴胭è„�脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧å¡�媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\n\t\tfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\n\t\tD[236] = \"����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿é�€é��é�‚é�ƒé�„é�…é�†é�‡é�ˆé�‰é�Šé�‹é�Œé��é�Žé��é��é�‘é�”é�•é�—é�˜é�šé�œé��é�Ÿé�£é�¤é�¦é�§é�¨é�ªé�«é�¬é�­é�®é�¯é�°é�±ï¿½é�²é�µé�·é�¸é�¹é�ºé�»é�½é�¾é�¿éž€éž�鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎éž�éž�鞓鞕鞖鞗鞙鞚鞛鞜éž�è‡�膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳æ–�齑斓於旆旄旃旌旎旒旖炀炜炖ç‚�炻烀炷炫炱烨烊ç„�焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹çˆ�爨ç�¬ç„˜ç…¦ç†¹æˆ¾æˆ½æ‰ƒæ‰ˆæ‰‰ç¤»ç¥€ç¥†ç¥‰ç¥›ç¥œç¥“祚祢祗祠祯祧祺禅禊禚禧禳忑å¿��\".split(\"\");\n\t\tfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\n\t\tD[237] = \"����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀éŸ�韂韃韄韅韆韇韈韉韊韋韌éŸ�韎éŸ�éŸ�韑韒韓韔韕韖韗韘韙韚韛韜éŸ�韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀é �頂頃頄項順頇須頉頊頋頌é �頎怼æ��æ�šæ�§æ��æ�™æ�£æ‚«æ„†æ„�æ…�憩æ†�懋懑戆肀è�¿æ²“泶淼矶矸砀砉砗砘砑斫砭砜ç �砹砺砻砟砼砥砬砣砩硎硭硖硗砦ç¡�硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄çœ�盹眇眈眚眢眙眭眦眵眸ç��ç�‘ç�‡ç�ƒç�šç�¨ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\n\t\tD[238] = \"����������������������������������������������������������������é �é �頑頒頓頔頕頖頗領頙頚頛頜é �頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀é¡�顂顃顄顅顆顇顈顉顊顋題é¡��顎é¡�é¡�顑顒顓顔顕顖顗願顙顚顛顜é¡�類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮ç�¢ç�¥ç�¿çž�ç�½çž€çžŒçž‘瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹ç¾�ç½¾ç›�盥蠲钅钆钇钋钊钌é’�é’�é’�钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌é“�铎é“�铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�\".split(\"\");\n\t\tfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\n\t\tD[239] = \"����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀é£�飂飃飄飅飆飇飈飉飊飋飌é£�é£�é£�飔飖飗飛飜é£�飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀é¤�餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊é”�锎é”�锒锓锔锕锖锘锛é”�锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎é•�镒镓镔镖镗镘镙镛镞镟é•�镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"����������������������������������������������������������������餈餉養餋餌餎é¤�餑餒餓餔餕餖餗餘餙餚餛餜é¤�餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀é¥�饂饃饄饅饆饇饈饉�饊饋饌é¥�饎é¥�é¥�饑饒饓饖饗饘饙饚饛饜é¥�饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑é»�馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾é¹�鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠ç–�疬疣疳疴疸痄疱疰痃痂痖ç—�痣痨痦痤痫痧瘃痱痼痿ç˜�瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\tD[241] = \"����������������������������������������������������������������馌馎馚馛馜é¦�馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀é§�駂駃駄駅駆駇駈駉駊駋駌é§�é§Žé§�é§�駑駒駓駔駕駖駗駘�駙駚駛駜é§�駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳ç™�癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶è¥�襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵è�ƒè�†è��è�’è�©è�±è¦ƒé¡¸é¢€é¢ƒï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\n\t\tD[242] = \"����������������������������������������������������������������駺駻駼駽駾駿騀é¨�騂騃騄騅騆騇騈騉騊騋騌é¨�騎é¨�é¨�騑騒験騔騕騖騗騘騙騚騛騜é¨�騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀é©�驂驃驄驅驆驇驈驉驊驋驌é©�驎é©�é©�驑驒驓驔驕驖驗驘驙颉颌é¢�é¢�颔颚颛颞颟颡颢颥颦è™�虔虬虮虿虺虼虻蚨èš�蚋蚬èš�蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉è›�蚴蛩蛱蛲蛭蛳è›�蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊èœ�蜉蜣蜻蜞蜥蜮蜚蜾è�ˆèœ´èœ±èœ©èœ·èœ¿èž‚蜢è�½è�¾è�»è� è�°è�Œè�®èž‹è�“è�£è�¼è�¤è�™è�¥èž“螯螨蟒�\".split(\"\");\n\t\tfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\n\t\tD[243] = \"����������������������������������������������������������������驚驛驜é©�驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉éª�骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊é«�髎é«�é«�髒體髕髖髗髙髚髛髜�é«�髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀é¬�鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅èˆ�竺竽笈笃笄笕笊笫ç¬�筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌ç­�筠筮筻筢筲筱ç®�箦箧箸箬ç®�箨箅箪箜箢箫箴篑ç¯�篌ç¯�篚篥篦篪簌篾篼ç°�簖簋�\".split(\"\");\n\t\tfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\n\t\tD[244] = \"����������������������������������������������������������������鬇鬉鬊鬋鬌é¬�鬎é¬�鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜é¬�鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎é­�魒魓魕魖魗魘魙魚�魛魜é­�魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸ç±�籀臾èˆ�舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋è‰�艚艟艨衾袅袈裘裟襞ç¾�羟羧羯羰羲籼敉粑ç²�粜粞粢粲粼粽ç³�糇糌ç³�糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊é…�é…Žé…�酤�\".split(\"\");\n\t\tfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\n\t\tD[245] = \"����������������������������������������������������������������魼魽魾魿鮀é®�鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌é®�鮎é®�é®�鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜é®�鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀é¯�鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌é¯�鯎é¯�é¯�鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅é†�é†�醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎è·�跛跆跬跷跸跣跹跻跤踉跽踔è¸�踟踬踮踣踯踺蹀踹踵踽踱蹉è¹�蹂蹑蹒蹊蹰蹶蹼蹯蹴躅èº�躔èº�躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\n\t\tfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\n\t\tD[246] = \"����������������������������������������������������������������鯜é¯�鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀é°�鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌é°�é°Žé°�é°�鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜é°�鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦é�“雩雳雯霆éœ�霈éœ�霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋é¼�隹隼隽雎雒瞿雠銎銮鋈錾é�ªé�ŠéŽ�é�¾é‘«é±¿é²‚鲅鲆鲇鲈稣鲋鲎é²�鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�\".split(\"\");\n\t\tfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\n\t\tD[247] = \"����������������������������������������������������������������鰼鰽鰾鰿鱀é±�鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌é±�鱎é±�é±�鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜é±�鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌é²�鲓鲖鲗鲘鲙é²�鲪鲬鲯鲹鲾鲿鳀é³�鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌é³�鳎é³�é³�鳓鳔鳕鳗鳘鳙鳜é³�鳟鳢é�¼éž…鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼é«�髀髅髂髋髌髑魅魃魇魉魈é­�魑飨é¤�餮饕饔髟髡髦髯髫髻髭髹鬈é¬�鬓鬟鬣麽麾縻麂麇麈麋麒é�–éº�麟黛黜é»�黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�\".split(\"\");\n\t\tfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\n\t\tD[248] = \"����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀é´�鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌é´�é´Žé´�é´�鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜é´�鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀éµ�鵂î‰�î‰�î‰�î‰�î‰�îŠ�îŠ�îŠ�îŠ��\".split(\"\");\n\t\tfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\n\t\tD[249] = \"����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌éµ�鵎éµ�éµ�鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜éµ�鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀é¶��鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌é¶�é¶Žé¶�é¶�鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜é¶�鶞鶟鶠鶡鶢îŠ�î‹�î‹�î‹�î‹�î‹��\".split(\"\");\n\t\tfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\n\t\tD[250] = \"����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀é·�鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌é·�é·Žé·�é·�鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜é·�鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀é¸�鸂îŒ�îŒ�îŒ�îŒ�îŒ�î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî���\".split(\"\");\n\t\tfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\n\t\tD[251] = \"����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌é¸�鸎é¸�é¸�鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜é¸�鸞鸤鸧鸮鸰鸴鸻鸼鹀é¹�é¹�鹒鹓鹔鹖鹙é¹�鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�éº�麃麄麅麆麉麊麌éº�麎éº�éº�麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿îŽ€îŽ�îŽ�îŽ�îŽ�îŽ��\".split(\"\");\n\t\tfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\n\t\tD[252] = \"����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀é»�黂黃黅黆黇黈黊黋黌é»�黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀é¼�鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌é¼�鼑鼒鼔鼕鼖鼘鼚鼛鼜é¼�鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î�€î��î�‚î�ƒî�„î�…î�†î�‡î�ˆî�‰ï¿½\".split(\"\");\n\t\tfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\n\t\tD[253] = \"����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀é½�齂齃齅齆齇齈齉齊齋齌é½�齎é½�齒齓齔齕齖齗齘齙齚齛齜é½�齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾é¾�龂é¾�龎é¾�é¾�龑龒龓龔龕龖龗龘龜é¾�龞龡龢龣龤龥郎凉秊裏隣î�Šî�‹î�Œî��î�Žî��î��î�‘î�’î�“î�”î�•î�–î�—î�˜î�™î�šî�›î�œî��î�žî�Ÿî� î�¡î�¢î�£î�¤î�¥î�¦î�§î�¨î�©î�ªî�«î�¬î�­î�®î�¯î�°î�±î�²î�³î�´î�µî�¶î�·î�¸î�¹î�ºî�»î�¼î�½î�¾î�¿î‘€î‘�î‘�î‘�î‘�î‘��\".split(\"\");\n\t\tfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\n\t\tD[254] = \"����������������������������������������������������������������兀ï¨�﨎ï¨�﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩âº�⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘ã§�㧟㩳ã§�㭎㱮㳠⺧⺪ä�–䅟⺮䌷⺳⺶⺷䎱䎬⺻ä��䓖䙡䙌�䜣䜩ä�¼äž�⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓䴔䴕䴖䴗䴘䴙䶮î’�î’�î’Žî’�î’�î’�î“��\".split(\"\");\n\t\tfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57002] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ�à¤�ंःअआइईउऊऋऎà¤�à¤�à¤�ऒओऔऑकखगघङचछजà¤�ञटठडढणतथदधनऩपफबभमयय़रऱलळऴवशषसह�ािीà¥�ूृॆेैॅॊोौॉà¥�़।������०१२३४५६७८९�����\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������à¥�����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ऌ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॡ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॠ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������क़����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\n\t\tD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ख़����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ग़����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ज़����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ड़����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������à¥�����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������फ़����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॢ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॣ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॄ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ऽ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[239] = \"����������������������������������������������������������������९९९९९९९९९९९९������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\tD[240] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������॒������॰����������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57003] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ�à¦�ংঃঅআইঈউঊঋà¦�à¦�à¦�à¦�ওওঔঔকখগঘঙচছজà¦�ঞটঠডঢণতথদধননপফবভমযয়ররলললবশষসহ�ািীà§�ূৃেেৈৈোোৌৌà§�়.������০১২৩৪৫৬৭৮৯�����\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ঌ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৡ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৠ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ড়����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������à§�����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৢ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৣ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৄ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[239] = \"����������������������������������������������������������������৯৯৯৯৯৯৯৯৯৯৯৯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57004] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ��ஂஃஅஆஇஈஉஊ�à®�à®�à®�à®�ஒஓஔஔககககஙசசஜஜஞடடடடணததததநனபபபபமயயரறலளழவஷஷஸஹ�ாிீà¯�ூ�ெேைைொோௌௌà¯��.������0௧௨௩௪௫௬௭௮௯�����\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[239] = \"����������������������������������������������������������������௯௯௯௯௯௯௯௯௯௯௯௯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57005] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ�à°�ంఃఅఆఇఈఉఊఋఎà°�à°�à°�ఒఓఔఔకఖగఘఙచఛజà°�ఞటఠడఢణతథదధననపఫబభమయయరఱలళళవశషసహ�ాిీà±�ూృెేైైొోౌౌà±��.������౦౧౨౩౪౫౬౭౮౯�����\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ఌ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౡ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౠ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౄ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[239] = \"����������������������������������������������������������������౯౯౯౯౯౯౯౯౯౯౯౯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57006] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ�à¦�ংঃঅআইঈউঊঋà¦�à¦�à¦�à¦�ওওঔঔকখগঘঙচছজà¦�ঞটঠডঢণতথদধননপফবভমযয়ররলললবশষসহ�ািীà§�ূৃেেৈৈোোৌৌà§�়.������০১২৩৪৫৬৭৮৯�����\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ঌ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৡ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৠ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ড়����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������à§�����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৢ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\n\t\tD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৣ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৄ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[239] = \"����������������������������������������������������������������৯৯৯৯৯৯৯৯৯৯৯৯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57007] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ�à¬�ଂଃଅଆଇଈଉଊଋà¬�à¬�à¬�à¬�à¬�ଓଔଔକଖଗଘଙଚଛଜà¬�ଞଟଠଡଢଣତଥଦଧନନପଫବଭମଯୟରରଲଳଳବଶଷସହ�ାିୀà­�ୂୃେେୈୈୋୋୌୌà­�଼.������୦୧୨୩୪୫୬୭୮୯�����\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ఌ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౡ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౠ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ଡ଼����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������à­�����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౄ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ଽ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[239] = \"����������������������������������������������������������������୯୯୯୯୯୯୯୯୯୯୯୯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57008] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ��ಂಃಅಆಇಈಉಊಋಎà²�à²�à²�ಒಓಔಔಕಖಗಘಙಚಛಜà²�ಞಟಠಡಢಣತಥದಧನನಪಫಬಭಮಯಯರಱಲಳಳವಶಷಸಹ�ಾಿೀà³�ೂೃೆೇೈೈೊೋೌೌà³��.������೦೧೨೩೪೫೬೭೮೯�����\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ಌ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೡ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೠ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೞ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೄ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[239] = \"����������������������������������������������������������������೯೯೯೯೯೯೯೯೯೯೯೯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57009] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ��ംഃഅആഇഈഉഊഋഎà´�à´�à´�ഒഓഔഔകഖഗഘങചഛജà´�ഞടഠഡഢണതഥദധനനപഫബഭമയയരറലളഴവശഷസഹ�ാിീàµ�ൂൃെേൈൈൊോൌൌàµ��.������൦൧൨൩൪൫൬൭൮൯�����\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ഌ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\n\t\tD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ൡ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ൠ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[239] = \"����������������������������������������������������������������൯൯൯൯൯൯൯൯൯൯൯൯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57010] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ�àª�ંઃઅઆઇઈઉઊઋàª�àª�àª�àª�àª�ઓઔઑકખગઘઙચછજàª�ઞટઠડઢણતથદધનનપફબભમયયરરલળળવશષસહ�ાિીà«�ૂૃેેૈૅોોૌૉà«�઼.������૦૧૨૩૪૫૬૭૮૯�����\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[161] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������à«�����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\n\t\tD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ૠ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\n\t\tD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ૄ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\n\t\tD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ઽ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\n\t\tD[239] = \"����������������������������������������������������������������૯૯૯૯૯૯૯૯૯૯૯૯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[57011] = (function(){ var d = [], e = {}, D = [], j;\n\t\tD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€Â�‚ƒ„…†‡ˆ‰Š‹ŒÂ�ÂŽÂ�Â�‘’“”•–—˜™š›œÂ�žŸ��ਂ�ਅਆਇਈਉਊ�à¨�à¨�à¨�à¨�à¨�ਓਔਔਕਖਗਘਙਚਛਜà¨�ਞਟਠਡਢਣਤਥਦਧਨਨਪਫਬਭਮਯਯਰਰਲਲ਼ਲ਼ਵਸ਼ਸ਼ਸਹ�ਾਿੀà©�ੂ�ੇੇੈੈੋੋੌੌà©�਼.������੦੧੨੩੪੫੬੭੮੯�����\".split(\"\");\n\t\tfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\n\t\tD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਖ਼����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\n\t\tD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਗ਼����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\n\t\tD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਜ਼����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\n\t\tD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ੜ����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\n\t\tD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਫ਼����������������������\".split(\"\");\n\t\tfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\n\t\tD[239] = \"����������������������������������������������������������������੯੯੯੯੯੯੯੯੯੯੯੯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\n\t\tfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\n\t\treturn {\"enc\": e, \"dec\": d }; })();\n\t\tcptable[620] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàąçêëèïîćÄĄĘęłôöĆûùŚÖÜ¢Å�¥śƒŹŻóÓńŃźż¿âŒ�¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗â•�╜╛â”�└┴┬├─┼╞╟╚╔╩╦╠â•�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌â–�▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√â�¿Â²â– Â \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\tcptable[895] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ČüéÄ�äĎŤÄ�ěĚĹÃ�ľǪÄÃ�ÉžŽôöÓůÚýÖÜŠĽÃ�ŘťáíóúňŇŮÔšřŕŔ¼§«»░▒▓│┤╡╢╖╕╣║╗â•�╜╛â”�└┴┬├─┼╞╟╚╔╩╦╠â•�╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌â–�▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√â�¿Â²â– Â \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n\t\t// eslint-disable-next-line no-undef\n\t\tif (module.exports && typeof DO_NOT_EXPORT_CODEPAGE === 'undefined') module.exports = cptable; \n\t} (cptable$2));\n\treturn cptable$2.exports;\n}\n\n/*! cputils.js (C) 2013-present SheetJS -- http://sheetjs.com */\nvar cputils = cputils$1.exports;\n\nvar hasRequiredCputils;\n\nfunction requireCputils () {\n\tif (hasRequiredCputils) return cputils$1.exports;\n\thasRequiredCputils = 1;\n\t(function (module) {\n\t\t/* vim: set ft=javascript: */\n\t\t/*jshint newcap: false */\n\t\t(function(root, factory) {\n\t\t  if(typeof cptable === \"undefined\") {\n\t\t    if(typeof commonjsRequire !== \"undefined\"){\n\t\t      var cpt = requireCptable();\n\t\t      if (module.exports && typeof DO_NOT_EXPORT_CODEPAGE === 'undefined') module.exports = factory(cpt);\n\t\t      else root.cptable = factory(cpt);\n\t\t    } else throw new Error(\"cptable not found\");\n\t\t  } else cptable = factory(cptable);\n\t\t  /*eslint-enable */\n\t\t  /*jshint ignore:end */\n\t\t}(cputils, function(cpt){\n\t\t  /*global module, Buffer */\n\t\t  var magic = {\n\t\t    \"1200\":\"utf16le\",\n\t\t    \"1201\":\"utf16be\",\n\t\t    \"12000\":\"utf32le\",\n\t\t    \"12001\":\"utf32be\",\n\t\t    \"16969\":\"utf64le\",\n\t\t    \"20127\":\"ascii\",\n\t\t    \"65000\":\"utf7\",\n\t\t    \"65001\":\"utf8\"\n\t\t  };\n\n\t\t  var sbcs_cache = [874,1250,1251,1252,1253,1254,1255,1256,10000];\n\t\t  var dbcs_cache = [932,936,949,950];\n\t\t  var magic_cache = [65001];\n\t\t  var magic_decode = {};\n\t\t  var magic_encode = {};\n\t\t  var cpdcache = {};\n\t\t  var cpecache = {};\n\n\t\t  var sfcc = function sfcc(x) { return String.fromCharCode(x); };\n\t\t  var cca = function cca(x) { return x.charCodeAt(0); };\n\n\t\t  var has_buf = (typeof Buffer !== 'undefined');\n\t\t  var Buffer_from = function(){};\n\t\t  if(has_buf) {\n\t\t    var nbfs = !Buffer.from;\n\t\t    if(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\t\t    Buffer_from = nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t\t    // $FlowIgnore\n\t\t    if(!Buffer.allocUnsafe) Buffer.allocUnsafe = function(n) { return new Buffer(n); };\n\n\t\t    var mdl = 1024, mdb = Buffer.allocUnsafe(mdl);\n\t\t    var make_EE = function make_EE(E){\n\t\t      var EE = Buffer.allocUnsafe(65536);\n\t\t      for(var i = 0; i < 65536;++i) EE[i] = 0;\n\t\t      var keys = Object.keys(E), len = keys.length;\n\t\t      for(var ee = 0, e = keys[ee]; ee < len; ++ee) {\n\t\t        if(!(e = keys[ee])) continue;\n\t\t        EE[e.charCodeAt(0)] = E[e];\n\t\t      }\n\t\t      return EE;\n\t\t    };\n\t\t    var sbcs_encode = function make_sbcs_encode(cp) {\n\t\t      var EE = make_EE(cpt[cp].enc);\n\t\t      return function sbcs_e(data, ofmt) {\n\t\t        var len = data.length;\n\t\t        var out, i=0, j=0, D=0, w=0;\n\t\t        if(typeof data === 'string') {\n\t\t          out = Buffer.allocUnsafe(len);\n\t\t          for(i = 0; i < len; ++i) out[i] = EE[data.charCodeAt(i)];\n\t\t        } else if(Buffer.isBuffer(data)) {\n\t\t          out = Buffer.allocUnsafe(2*len);\n\t\t          j = 0;\n\t\t          for(i = 0; i < len; ++i) {\n\t\t            D = data[i];\n\t\t            if(D < 128) out[j++] = EE[D];\n\t\t            else if(D < 224) { out[j++] = EE[((D&31)<<6)+(data[i+1]&63)]; ++i; }\n\t\t            else if(D < 240) { out[j++] = EE[((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63)]; i+=2; }\n\t\t            else {\n\t\t              w = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3;\n\t\t              if(w < 65536) out[j++] = EE[w];\n\t\t              else { w -= 65536; out[j++] = EE[0xD800 + ((w>>10)&1023)]; out[j++] = EE[0xDC00 + (w&1023)]; }\n\t\t            }\n\t\t          }\n\t\t          out = out.slice(0,j);\n\t\t        } else {\n\t\t          out = Buffer.allocUnsafe(len);\n\t\t          for(i = 0; i < len; ++i) out[i] = EE[data[i].charCodeAt(0)];\n\t\t        }\n\t\t        if(!ofmt || ofmt === 'buf') return out;\n\t\t        if(ofmt !== 'arr') return out.toString('binary');\n\t\t        return [].slice.call(out);\n\t\t      };\n\t\t    };\n\t\t    var sbcs_decode = function make_sbcs_decode(cp) {\n\t\t      var D = cpt[cp].dec;\n\t\t      var DD = Buffer.allocUnsafe(131072), d=0, c=\"\";\n\t\t      for(d=0;d<D.length;++d) {\n\t\t        if(!(c=D[d])) continue;\n\t\t        var w = c.charCodeAt(0);\n\t\t        DD[2*d] = w&255; DD[2*d+1] = w>>8;\n\t\t      }\n\t\t      return function sbcs_d(data) {\n\t\t        var len = data.length, i=0, j=0;\n\t\t        if(2 * len > mdl) { mdl = 2 * len; mdb = Buffer.allocUnsafe(mdl); }\n\t\t        if(Buffer.isBuffer(data)) {\n\t\t          for(i = 0; i < len; i++) {\n\t\t            j = 2*data[i];\n\t\t            mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];\n\t\t          }\n\t\t        } else if(typeof data === \"string\") {\n\t\t          for(i = 0; i < len; i++) {\n\t\t            j = 2*data.charCodeAt(i);\n\t\t            mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];\n\t\t          }\n\t\t        } else {\n\t\t          for(i = 0; i < len; i++) {\n\t\t            j = 2*data[i];\n\t\t            mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];\n\t\t          }\n\t\t        }\n\t\t        return mdb.slice(0, 2 * len).toString('ucs2');\n\t\t      };\n\t\t    };\n\t\t    var dbcs_encode = function make_dbcs_encode(cp) {\n\t\t      var E = cpt[cp].enc;\n\t\t      var EE = Buffer.allocUnsafe(131072);\n\t\t      for(var i = 0; i < 131072; ++i) EE[i] = 0;\n\t\t      var keys = Object.keys(E);\n\t\t      for(var ee = 0, e = keys[ee]; ee < keys.length; ++ee) {\n\t\t        if(!(e = keys[ee])) continue;\n\t\t        var f = e.charCodeAt(0);\n\t\t        EE[2*f] = E[e] & 255; EE[2*f+1] = E[e]>>8;\n\t\t      }\n\t\t      return function dbcs_e(data, ofmt) {\n\t\t        var len = data.length, out = Buffer.allocUnsafe(2*len), i=0, j=0, jj=0, k=0, D=0;\n\t\t        if(typeof data === 'string') {\n\t\t          for(i = k = 0; i < len; ++i) {\n\t\t            j = data.charCodeAt(i)*2;\n\t\t            out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\n\t\t          }\n\t\t          out = out.slice(0,k);\n\t\t        } else if(Buffer.isBuffer(data)) {\n\t\t          for(i = k = 0; i < len; ++i) {\n\t\t            D = data[i];\n\t\t            if(D < 128) j = D;\n\t\t            else if(D < 224) { j = ((D&31)<<6)+(data[i+1]&63); ++i; }\n\t\t            else if(D < 240) { j = ((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63); i+=2; }\n\t\t            else { j = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3; }\n\t\t            if(j<65536) { j*=2; out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; }\n\t\t            else { jj = j-65536;\n\t\t              j=2*(0xD800 + ((jj>>10)&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\n\t\t              j=2*(0xDC00 + (jj&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\n\t\t            }\n\t\t          }\n\t\t          out = out.slice(0,k);\n\t\t        } else {\n\t\t          for(i = k = 0; i < len; i++) {\n\t\t            j = data[i].charCodeAt(0)*2;\n\t\t            out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\n\t\t          }\n\t\t        }\n\t\t        if(!ofmt || ofmt === 'buf') return out;\n\t\t        if(ofmt !== 'arr') return out.toString('binary');\n\t\t        return [].slice.call(out);\n\t\t      };\n\t\t    };\n\t\t    var dbcs_decode = function make_dbcs_decode(cp) {\n\t\t      var D = cpt[cp].dec;\n\t\t      var DD = Buffer.allocUnsafe(131072), d=0, c, w=0, j=0, i=0;\n\t\t      for(i = 0; i < 65536; ++i) { DD[2*i] = 0xFF; DD[2*i+1] = 0xFD;}\n\t\t      for(d = 0; d < D.length; ++d) {\n\t\t        if(!(c=D[d])) continue;\n\t\t        w = c.charCodeAt(0);\n\t\t        j = 2*d;\n\t\t        DD[j] = w&255; DD[j+1] = w>>8;\n\t\t      }\n\t\t      return function dbcs_d(data) {\n\t\t        var len = data.length, out = Buffer.allocUnsafe(2*len), i=0, j=0, k=0;\n\t\t        if(Buffer.isBuffer(data)) {\n\t\t          for(i = 0; i < len; i++) {\n\t\t            j = 2*data[i];\n\t\t            if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; }\n\t\t            out[k++] = DD[j]; out[k++] = DD[j+1];\n\t\t          }\n\t\t        } else if(typeof data === \"string\") {\n\t\t          for(i = 0; i < len; i++) {\n\t\t            j = 2*data.charCodeAt(i);\n\t\t            if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data.charCodeAt(i)<<8)+data.charCodeAt(i+1)); ++i; }\n\t\t            out[k++] = DD[j]; out[k++] = DD[j+1];\n\t\t          }\n\t\t        } else {\n\t\t          for(i = 0; i < len; i++) {\n\t\t            j = 2*data[i];\n\t\t            if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; }\n\t\t            out[k++] = DD[j]; out[k++] = DD[j+1];\n\t\t          }\n\t\t        }\n\t\t        return out.slice(0,k).toString('ucs2');\n\t\t      };\n\t\t    };\n\t\t    magic_decode[65001] = function utf8_d(data) {\n\t\t      if(typeof data === \"string\") return utf8_d(data.split(\"\").map(cca));\n\t\t      var len = data.length, w = 0, ww = 0;\n\t\t      if(4 * len > mdl) { mdl = 4 * len; mdb = Buffer.allocUnsafe(mdl); }\n\t\t      var i = 0;\n\t\t      if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3;\n\t\t      for(var j = 1, k = 0, D = 0; i < len; i+=j) {\n\t\t        j = 1; D = data[i];\n\t\t        if(D < 128) w = D;\n\t\t        else if(D < 224) { w=(D&31)*64+(data[i+1]&63); j=2; }\n\t\t        else if(D < 240) { w=((D&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; }\n\t\t        else { w=(D&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; }\n\t\t        if(w < 65536) { mdb[k++] = w&255; mdb[k++] = w>>8; }\n\t\t        else {\n\t\t          w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t          mdb[k++] = ww&255; mdb[k++] = ww>>>8; mdb[k++] = w&255; mdb[k++] = (w>>>8)&255;\n\t\t        }\n\t\t      }\n\t\t      return mdb.slice(0,k).toString('ucs2');\n\t\t    };\n\t\t    magic_encode[65001] = function utf8_e(data, ofmt) {\n\t\t      if(has_buf && Buffer.isBuffer(data)) {\n\t\t        if(!ofmt || ofmt === 'buf') return data;\n\t\t        if(ofmt !== 'arr') return data.toString('binary');\n\t\t        return [].slice.call(data);\n\t\t      }\n\t\t      var len = data.length, w = 0, ww = 0, j = 0;\n\t\t      var direct = typeof data === \"string\";\n\t\t      if(4 * len > mdl) { mdl = 4 * len; mdb = Buffer.allocUnsafe(mdl); }\n\t\t      for(var i = 0; i < len; ++i) {\n\t\t        w = direct ? data.charCodeAt(i) : data[i].charCodeAt(0);\n\t\t        if(w <= 0x007F) mdb[j++] = w;\n\t\t        else if(w <= 0x07FF) {\n\t\t          mdb[j++] = 192 + (w >> 6);\n\t\t          mdb[j++] = 128 + (w&63);\n\t\t        } else if(w >= 0xD800 && w <= 0xDFFF) {\n\t\t          w -= 0xD800; ++i;\n\t\t          ww = (direct ? data.charCodeAt(i) : data[i].charCodeAt(0)) - 0xDC00 + (w << 10);\n\t\t          mdb[j++] = 240 + ((ww>>>18) & 0x07);\n\t\t          mdb[j++] = 144 + ((ww>>>12) & 0x3F);\n\t\t          mdb[j++] = 128 + ((ww>>>6) & 0x3F);\n\t\t          mdb[j++] = 128 + (ww & 0x3F);\n\t\t        } else {\n\t\t          mdb[j++] = 224 + (w >> 12);\n\t\t          mdb[j++] = 128 + ((w >> 6)&63);\n\t\t          mdb[j++] = 128 + (w&63);\n\t\t        }\n\t\t      }\n\t\t      if(!ofmt || ofmt === 'buf') return mdb.slice(0,j);\n\t\t      if(ofmt !== 'arr') return mdb.slice(0,j).toString('binary');\n\t\t      return [].slice.call(mdb, 0, j);\n\t\t    };\n\t\t  }\n\n\t\t  var encache = function encache() {\n\t\t    if(has_buf) {\n\t\t      if(cpdcache[sbcs_cache[0]]) return;\n\t\t      var i=0, s=0;\n\t\t      for(i = 0; i < sbcs_cache.length; ++i) {\n\t\t        s = sbcs_cache[i];\n\t\t        if(cpt[s]) {\n\t\t          cpdcache[s] = sbcs_decode(s);\n\t\t          cpecache[s] = sbcs_encode(s);\n\t\t        }\n\t\t      }\n\t\t      for(i = 0; i < dbcs_cache.length; ++i) {\n\t\t        s = dbcs_cache[i];\n\t\t        if(cpt[s]) {\n\t\t          cpdcache[s] = dbcs_decode(s);\n\t\t          cpecache[s] = dbcs_encode(s);\n\t\t        }\n\t\t      }\n\t\t      for(i = 0; i < magic_cache.length; ++i) {\n\t\t        s = magic_cache[i];\n\t\t        if(magic_decode[s]) cpdcache[s] = magic_decode[s];\n\t\t        if(magic_encode[s]) cpecache[s] = magic_encode[s];\n\t\t      }\n\t\t    }\n\t\t  };\n\t\t  var null_enc = function(data, ofmt) { return \"\"; };\n\t\t  var cp_decache = function cp_decache(cp) { delete cpdcache[cp]; delete cpecache[cp]; };\n\t\t  var decache = function decache() {\n\t\t    if(has_buf) {\n\t\t      if(!cpdcache[sbcs_cache[0]]) return;\n\t\t      sbcs_cache.forEach(cp_decache);\n\t\t      dbcs_cache.forEach(cp_decache);\n\t\t      magic_cache.forEach(cp_decache);\n\t\t    }\n\t\t    last_enc = null_enc; last_cp = 0;\n\t\t  };\n\t\t  var cache = {\n\t\t    encache: encache,\n\t\t    decache: decache,\n\t\t    sbcs: sbcs_cache,\n\t\t    dbcs: dbcs_cache\n\t\t  };\n\n\t\t  encache();\n\n\t\t  var BM = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\t\t  var SetD = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?\";\n\t\t  var last_enc = null_enc, last_cp = 0;\n\t\t  var encode = function encode(cp, data, ofmt) {\n\t\t    if(cp === last_cp && last_enc) { return last_enc(data, ofmt); }\n\t\t    if(cpecache[cp]) { last_enc = cpecache[last_cp=cp]; return last_enc(data, ofmt); }\n\t\t    if(has_buf && Buffer.isBuffer(data)) data = data.toString('utf8');\n\t\t    var len = data.length;\n\t\t    var out = has_buf ? Buffer.allocUnsafe(4*len) : [], w=0, i=0, j = 0, ww=0;\n\t\t    var C = cpt[cp], E, M = \"\";\n\t\t    var isstr = typeof data === 'string';\n\t\t    if(C && (E=C.enc)) for(i = 0; i < len; ++i, ++j) {\n\t\t      w = E[isstr? data.charAt(i) : data[i]];\n\t\t      if(w > 255) {\n\t\t        out[j] = w>>8;\n\t\t        out[++j] = w&255;\n\t\t      } else out[j] = w&255;\n\t\t    }\n\t\t    else if((M=magic[cp])) switch(M) {\n\t\t      case \"utf8\":\n\t\t        if(has_buf && isstr) { out = Buffer_from(data, M); j = out.length; break; }\n\t\t        for(i = 0; i < len; ++i, ++j) {\n\t\t          w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n\t\t          if(w <= 0x007F) out[j] = w;\n\t\t          else if(w <= 0x07FF) {\n\t\t            out[j]   = 192 + (w >> 6);\n\t\t            out[++j] = 128 + (w&63);\n\t\t          } else if(w >= 0xD800 && w <= 0xDFFF) {\n\t\t            w -= 0xD800;\n\t\t            ww = (isstr ? data.charCodeAt(++i) : data[++i].charCodeAt(0)) - 0xDC00 + (w << 10);\n\t\t            out[j]   = 240 + ((ww>>>18) & 0x07);\n\t\t            out[++j] = 144 + ((ww>>>12) & 0x3F);\n\t\t            out[++j] = 128 + ((ww>>>6) & 0x3F);\n\t\t            out[++j] = 128 + (ww & 0x3F);\n\t\t          } else {\n\t\t            out[j]   = 224 + (w >> 12);\n\t\t            out[++j] = 128 + ((w >> 6)&63);\n\t\t            out[++j] = 128 + (w&63);\n\t\t          }\n\t\t        }\n\t\t        break;\n\t\t      case \"ascii\":\n\t\t        if(has_buf && typeof data === \"string\") { out = Buffer_from(data, M); j = out.length; break; }\n\t\t        for(i = 0; i < len; ++i, ++j) {\n\t\t          w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n\t\t          if(w <= 0x007F) out[j] = w;\n\t\t          else throw new Error(\"bad ascii \" + w);\n\t\t        }\n\t\t        break;\n\t\t      case \"utf16le\":\n\t\t        if(has_buf && typeof data === \"string\") { out = Buffer_from(data, M); j = out.length; break; }\n\t\t        for(i = 0; i < len; ++i) {\n\t\t          w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n\t\t          out[j++] = w&255;\n\t\t          out[j++] = w>>8;\n\t\t        }\n\t\t        break;\n\t\t      case \"utf16be\":\n\t\t        for(i = 0; i < len; ++i) {\n\t\t          w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n\t\t          out[j++] = w>>8;\n\t\t          out[j++] = w&255;\n\t\t        }\n\t\t        break;\n\t\t      case \"utf32le\":\n\t\t        for(i = 0; i < len; ++i) {\n\t\t          w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n\t\t          if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00);\n\t\t          out[j++] = w&255; w >>= 8;\n\t\t          out[j++] = w&255; w >>= 8;\n\t\t          out[j++] = w&255; w >>= 8;\n\t\t          out[j++] = w&255;\n\t\t        }\n\t\t        break;\n\t\t      case \"utf32be\":\n\t\t        for(i = 0; i < len; ++i) {\n\t\t          w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n\t\t          if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00);\n\t\t          out[j+3] = w&255; w >>= 8;\n\t\t          out[j+2] = w&255; w >>= 8;\n\t\t          out[j+1] = w&255; w >>= 8;\n\t\t          out[j] = w&255;\n\t\t          j+=4;\n\t\t        }\n\t\t        break;\n\t\t      case \"utf7\":\n\t\t        for(i = 0; i < len; i++) {\n\t\t          var c = isstr ? data.charAt(i) : data[i].charAt(0);\n\t\t          if(c === \"+\") { out[j++] = 0x2b; out[j++] = 0x2d; continue; }\n\t\t          if(SetD.indexOf(c) > -1) { out[j++] = c.charCodeAt(0); continue; }\n\t\t          var tt = encode(1201, c);\n\t\t          out[j++] = 0x2b;\n\t\t          out[j++] = BM.charCodeAt(tt[0]>>2);\n\t\t          out[j++] = BM.charCodeAt(((tt[0]&0x03)<<4) + ((tt[1]||0)>>4));\n\t\t          out[j++] = BM.charCodeAt(((tt[1]&0x0F)<<2) + ((tt[2]||0)>>6));\n\t\t          out[j++] = 0x2d;\n\t\t        }\n\t\t        break;\n\t\t      default: throw new Error(\"Unsupported magic: \" + cp + \" \" + magic[cp]);\n\t\t    }\n\t\t    else throw new Error(\"Unrecognized CP: \" + cp);\n\t\t    out = out.slice(0,j);\n\t\t    if(!has_buf) return (ofmt == 'str') ? (out).map(sfcc).join(\"\") : out;\n\t\t    if(!ofmt || ofmt === 'buf') return out;\n\t\t    if(ofmt !== 'arr') return out.toString('binary');\n\t\t    return [].slice.call(out);\n\t\t  };\n\t\t  var decode = function decode(cp, data) {\n\t\t    var F; if((F=cpdcache[cp])) return F(data);\n\t\t    if(typeof data === \"string\") return decode(cp, data.split(\"\").map(cca));\n\t\t    var len = data.length, out = new Array(len), s=\"\", w=0, i=0, j=1, k=0, ww=0;\n\t\t    var C = cpt[cp], D, M=\"\";\n\t\t    if(C && (D=C.dec)) {\n\t\t      for(i = 0; i < len; i+=j) {\n\t\t        j = 2;\n\t\t        s = D[(data[i]<<8)+ data[i+1]];\n\t\t        if(!s) {\n\t\t          j = 1;\n\t\t          s = D[data[i]];\n\t\t        }\n\t\t        if(!s) throw new Error('Unrecognized code: ' + data[i] + ' ' + data[i+j-1] + ' ' + i + ' ' + j + ' ' + D[data[i]]);\n\t\t        out[k++] = s;\n\t\t      }\n\t\t    }\n\t\t    else if((M=magic[cp])) switch(M) {\n\t\t      case \"utf8\":\n\t\t        if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3;\n\t\t        for(; i < len; i+=j) {\n\t\t          j = 1;\n\t\t          if(data[i] < 128) w = data[i];\n\t\t          else if(data[i] < 224) { w=(data[i]&31)*64+(data[i+1]&63); j=2; }\n\t\t          else if(data[i] < 240) { w=((data[i]&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; }\n\t\t          else { w=(data[i]&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; }\n\t\t          if(w < 65536) { out[k++] = String.fromCharCode(w); }\n\t\t          else {\n\t\t            w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t            out[k++] = String.fromCharCode(ww); out[k++] = String.fromCharCode(w);\n\t\t          }\n\t\t        }\n\t\t        break;\n\t\t      case \"ascii\":\n\t\t        if(has_buf && Buffer.isBuffer(data)) return data.toString(M);\n\t\t        for(i = 0; i < len; i++) out[i] = String.fromCharCode(data[i]);\n\t\t        k = len; break;\n\t\t      case \"utf16le\":\n\t\t        if(len >= 2 && data[0] == 0xFF) if(data[1] == 0xFE) i = 2;\n\t\t        if(has_buf && Buffer.isBuffer(data)) return data.toString(M);\n\t\t        j = 2;\n\t\t        for(; i+1 < len; i+=j) {\n\t\t          out[k++] = String.fromCharCode((data[i+1]<<8) + data[i]);\n\t\t        }\n\t\t        break;\n\t\t      case \"utf16be\":\n\t\t        if(len >= 2 && data[0] == 0xFE) if(data[1] == 0xFF) i = 2;\n\t\t        j = 2;\n\t\t        for(; i+1 < len; i+=j) {\n\t\t          out[k++] = String.fromCharCode((data[i]<<8) + data[i+1]);\n\t\t        }\n\t\t        break;\n\t\t      case \"utf32le\":\n\t\t        if(len >= 4 && data[0] == 0xFF) if(data[1] == 0xFE && data[2] === 0 && data[3] === 0) i = 4;\n\t\t        j = 4;\n\t\t        for(; i < len; i+=j) {\n\t\t          w = (data[i+3]<<24) + (data[i+2]<<16) + (data[i+1]<<8) + (data[i]);\n\t\t          if(w > 0xFFFF) {\n\t\t            w -= 0x10000;\n\t\t            out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF));\n\t\t            out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF));\n\t\t          }\n\t\t          else out[k++] = String.fromCharCode(w);\n\t\t        }\n\t\t        break;\n\t\t      case \"utf32be\":\n\t\t        if(len >= 4 && data[3] == 0xFF) if(data[2] == 0xFE && data[1] === 0 && data[0] === 0) i = 4;\n\t\t        j = 4;\n\t\t        for(; i < len; i+=j) {\n\t\t          w = (data[i]<<24) + (data[i+1]<<16) + (data[i+2]<<8) + (data[i+3]);\n\t\t          if(w > 0xFFFF) {\n\t\t            w -= 0x10000;\n\t\t            out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF));\n\t\t            out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF));\n\t\t          }\n\t\t          else out[k++] = String.fromCharCode(w);\n\t\t        }\n\t\t        break;\n\t\t      case \"utf7\":\n\t\t        if(len >= 4 && data[0] == 0x2B && data[1] == 0x2F && data[2] == 0x76) {\n\t\t          if(len >= 5 && data[3] == 0x38 && data[4] == 0x2D) i = 5;\n\t\t          else if(data[3] == 0x38 || data[3] == 0x39 || data[3] == 0x2B || data[3] == 0x2F) i = 4;\n\t\t        }\n\t\t        for(; i < len; i+=j) {\n\t\t          if(data[i] !== 0x2b) { j=1; out[k++] = String.fromCharCode(data[i]); continue; }\n\t\t          j=1;\n\t\t          if(data[i+1] === 0x2d) { j = 2; out[k++] = \"+\"; continue; }\n\t\t          // eslint-disable-next-line no-useless-escape\n\t\t          while(String.fromCharCode(data[i+j]).match(/[A-Za-z0-9+\\/]/)) j++;\n\t\t          var dash = 0;\n\t\t          if(data[i+j] === 0x2d) { ++j; dash=1; }\n\t\t          var tt = [];\n\t\t          var o64 = \"\";\n\t\t          var c1=0, c2=0, c3=0;\n\t\t          var e1=0, e2=0, e3=0, e4=0;\n\t\t          for(var l = 1; l < j - dash;) {\n\t\t            e1 = BM.indexOf(String.fromCharCode(data[i+l++]));\n\t\t            e2 = BM.indexOf(String.fromCharCode(data[i+l++]));\n\t\t            c1 = e1 << 2 | e2 >> 4;\n\t\t            tt.push(c1);\n\t\t            e3 = BM.indexOf(String.fromCharCode(data[i+l++]));\n\t\t            if(e3 === -1) break;\n\t\t            c2 = (e2 & 15) << 4 | e3 >> 2;\n\t\t            tt.push(c2);\n\t\t            e4 = BM.indexOf(String.fromCharCode(data[i+l++]));\n\t\t            if(e4 === -1) break;\n\t\t            c3 = (e3 & 3) << 6 | e4;\n\t\t            if(e4 < 64) tt.push(c3);\n\t\t          }\n\t\t          o64 = decode(1201, tt);\n\t\t          for(l = 0; l < o64.length; ++l) out[k++] = o64.charAt(l);\n\t\t        }\n\t\t        break;\n\t\t      default: throw new Error(\"Unsupported magic: \" + cp + \" \" + magic[cp]);\n\t\t    }\n\t\t    else throw new Error(\"Unrecognized CP: \" + cp);\n\t\t    return out.slice(0,k).join(\"\");\n\t\t  };\n\t\t  var hascp = function hascp(cp) { return !!(cpt[cp] || magic[cp]); };\n\t\t  cpt.utils = { decode: decode, encode: encode, hascp: hascp, magic: magic, cache:cache };\n\t\t  return cpt;\n\t\t})); \n\t} (cputils$1));\n\treturn cputils$1.exports;\n}\n\nvar cputilsExports = requireCputils();\nvar cptable$1 = /*@__PURE__*/getDefaultExportFromCjs(cputilsExports);\n\nvar papaparse$1 = {exports: {}};\n\n/*@license\n\tPapa Parse\n\tv4.4.0\n\thttps://github.com/mholt/PapaParse\n\tLicense: MIT\n*/\nvar papaparse = papaparse$1.exports;\n\nvar hasRequiredPapaparse;\n\nfunction requirePapaparse () {\n\tif (hasRequiredPapaparse) return papaparse$1.exports;\n\thasRequiredPapaparse = 1;\n\t(function (module, exports$1) {\n\t\t(function(root, factory)\n\t\t{\n\t\t\t/* globals define */\n\t\t\t{\n\t\t\t\t// Node. Does not work with strict CommonJS, but\n\t\t\t\t// only CommonJS-like environments that support module.exports,\n\t\t\t\t// like Node.\n\t\t\t\tmodule.exports = factory();\n\t\t\t}\n\t\t}(papaparse, function()\n\t\t{\n\n\t\t\tvar global = (function() {\n\t\t\t\t// alternative method, similar to `Function('return this')()`\n\t\t\t\t// but without using `eval` (which is disabled when\n\t\t\t\t// using Content Security Policy).\n\n\t\t\t\tif (typeof self !== 'undefined') { return self; }\n\t\t\t\tif (typeof window !== 'undefined') { return window; }\n\t\t\t\tif (typeof global !== 'undefined') { return global; }\n\n\t\t\t\t// When running tests none of the above have been defined\n\t\t\t\treturn {};\n\t\t\t})();\n\n\n\t\t\tvar IS_WORKER = !global.document && !!global.postMessage,\n\t\t\t\tIS_PAPA_WORKER = IS_WORKER && /(\\?|&)papaworker(=|&|$)/.test(global.location.search),\n\t\t\t\tLOADED_SYNC = false, AUTO_SCRIPT_PATH;\n\t\t\tvar workers = {}, workerIdCounter = 0;\n\n\t\t\tvar Papa = {};\n\n\t\t\tPapa.parse = CsvToJson;\n\t\t\tPapa.unparse = JsonToCsv;\n\n\t\t\tPapa.RECORD_SEP = String.fromCharCode(30);\n\t\t\tPapa.UNIT_SEP = String.fromCharCode(31);\n\t\t\tPapa.BYTE_ORDER_MARK = '\\ufeff';\n\t\t\tPapa.BAD_DELIMITERS = ['\\r', '\\n', '\"', Papa.BYTE_ORDER_MARK];\n\t\t\tPapa.WORKERS_SUPPORTED = !IS_WORKER && !!global.Worker;\n\t\t\tPapa.SCRIPT_PATH = null;\t// Must be set by your code if you use workers and this lib is loaded asynchronously\n\n\t\t\t// Configurable chunk sizes for local and remote files, respectively\n\t\t\tPapa.LocalChunkSize = 1024 * 1024 * 10;\t// 10 MB\n\t\t\tPapa.RemoteChunkSize = 1024 * 1024 * 5;\t// 5 MB\n\t\t\tPapa.DefaultDelimiter = ',';\t\t\t// Used if not specified and detection fails\n\n\t\t\t// Exposed for testing and development only\n\t\t\tPapa.Parser = Parser;\n\t\t\tPapa.ParserHandle = ParserHandle;\n\t\t\tPapa.NetworkStreamer = NetworkStreamer;\n\t\t\tPapa.FileStreamer = FileStreamer;\n\t\t\tPapa.StringStreamer = StringStreamer;\n\t\t\tPapa.ReadableStreamStreamer = ReadableStreamStreamer;\n\n\t\t\tif (global.jQuery)\n\t\t\t{\n\t\t\t\tvar $ = global.jQuery;\n\t\t\t\t$.fn.parse = function(options)\n\t\t\t\t{\n\t\t\t\t\tvar config = options.config || {};\n\t\t\t\t\tvar queue = [];\n\n\t\t\t\t\tthis.each(function(idx)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar supported = $(this).prop('tagName').toUpperCase() === 'INPUT'\n\t\t\t\t\t\t\t\t\t\t&& $(this).attr('type').toLowerCase() === 'file'\n\t\t\t\t\t\t\t\t\t\t&& global.FileReader;\n\n\t\t\t\t\t\tif (!supported || !this.files || this.files.length === 0)\n\t\t\t\t\t\t\treturn true;\t// continue to next input element\n\n\t\t\t\t\t\tfor (var i = 0; i < this.files.length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tqueue.push({\n\t\t\t\t\t\t\t\tfile: this.files[i],\n\t\t\t\t\t\t\t\tinputElem: this,\n\t\t\t\t\t\t\t\tinstanceConfig: $.extend({}, config)\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tparseNextFile();\t// begin parsing\n\t\t\t\t\treturn this;\t\t// maintains chainability\n\n\n\t\t\t\t\tfunction parseNextFile()\n\t\t\t\t\t{\n\t\t\t\t\t\tif (queue.length === 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (isFunction(options.complete))\n\t\t\t\t\t\t\t\toptions.complete();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar f = queue[0];\n\n\t\t\t\t\t\tif (isFunction(options.before))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar returned = options.before(f.file, f.inputElem);\n\n\t\t\t\t\t\t\tif (typeof returned === 'object')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (returned.action === 'abort')\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\terror('AbortError', f.file, f.inputElem, returned.reason);\n\t\t\t\t\t\t\t\t\treturn;\t// Aborts all queued files immediately\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (returned.action === 'skip')\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tfileComplete();\t// parse the next file in the queue, if any\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (typeof returned.config === 'object')\n\t\t\t\t\t\t\t\t\tf.instanceConfig = $.extend(f.instanceConfig, returned.config);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (returned === 'skip')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfileComplete();\t// parse the next file in the queue, if any\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Wrap up the user's complete callback, if any, so that ours also gets executed\n\t\t\t\t\t\tvar userCompleteFunc = f.instanceConfig.complete;\n\t\t\t\t\t\tf.instanceConfig.complete = function(results)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (isFunction(userCompleteFunc))\n\t\t\t\t\t\t\t\tuserCompleteFunc(results, f.file, f.inputElem);\n\t\t\t\t\t\t\tfileComplete();\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tPapa.parse(f.file, f.instanceConfig);\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction error(name, file, elem, reason)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (isFunction(options.error))\n\t\t\t\t\t\t\toptions.error({name: name}, file, elem, reason);\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction fileComplete()\n\t\t\t\t\t{\n\t\t\t\t\t\tqueue.splice(0, 1);\n\t\t\t\t\t\tparseNextFile();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\n\t\t\tif (IS_PAPA_WORKER)\n\t\t\t{\n\t\t\t\tglobal.onmessage = workerThreadReceivedMessage;\n\t\t\t}\n\t\t\telse if (Papa.WORKERS_SUPPORTED)\n\t\t\t{\n\t\t\t\tAUTO_SCRIPT_PATH = getScriptPath();\n\n\t\t\t\t// Check if the script was loaded synchronously\n\t\t\t\tif (!document.body)\n\t\t\t\t{\n\t\t\t\t\t// Body doesn't exist yet, must be synchronous\n\t\t\t\t\tLOADED_SYNC = true;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdocument.addEventListener('DOMContentLoaded', function() {\n\t\t\t\t\t\tLOADED_SYNC = true;\n\t\t\t\t\t}, true);\n\t\t\t\t}\n\t\t\t}\n\n\n\n\n\t\t\tfunction CsvToJson(_input, _config)\n\t\t\t{\n\t\t\t\t_config = _config || {};\n\t\t\t\tvar dynamicTyping = _config.dynamicTyping || false;\n\t\t\t\tif (isFunction(dynamicTyping)) {\n\t\t\t\t\t_config.dynamicTypingFunction = dynamicTyping;\n\t\t\t\t\t// Will be filled on first row call\n\t\t\t\t\tdynamicTyping = {};\n\t\t\t\t}\n\t\t\t\t_config.dynamicTyping = dynamicTyping;\n\n\t\t\t\tif (_config.worker && Papa.WORKERS_SUPPORTED)\n\t\t\t\t{\n\t\t\t\t\tvar w = newWorker();\n\n\t\t\t\t\tw.userStep = _config.step;\n\t\t\t\t\tw.userChunk = _config.chunk;\n\t\t\t\t\tw.userComplete = _config.complete;\n\t\t\t\t\tw.userError = _config.error;\n\n\t\t\t\t\t_config.step = isFunction(_config.step);\n\t\t\t\t\t_config.chunk = isFunction(_config.chunk);\n\t\t\t\t\t_config.complete = isFunction(_config.complete);\n\t\t\t\t\t_config.error = isFunction(_config.error);\n\t\t\t\t\tdelete _config.worker;\t// prevent infinite loop\n\n\t\t\t\t\tw.postMessage({\n\t\t\t\t\t\tinput: _input,\n\t\t\t\t\t\tconfig: _config,\n\t\t\t\t\t\tworkerId: w.id\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar streamer = null;\n\t\t\t\tif (typeof _input === 'string')\n\t\t\t\t{\n\t\t\t\t\tif (_config.download)\n\t\t\t\t\t\tstreamer = new NetworkStreamer(_config);\n\t\t\t\t\telse\n\t\t\t\t\t\tstreamer = new StringStreamer(_config);\n\t\t\t\t}\n\t\t\t\telse if (_input.readable === true && isFunction(_input.read) && isFunction(_input.on))\n\t\t\t\t{\n\t\t\t\t\tstreamer = new ReadableStreamStreamer(_config);\n\t\t\t\t}\n\t\t\t\telse if ((global.File && _input instanceof File) || _input instanceof Object)\t// ...Safari. (see issue #106)\n\t\t\t\t\tstreamer = new FileStreamer(_config);\n\n\t\t\t\treturn streamer.stream(_input);\n\t\t\t}\n\n\n\n\n\n\n\t\t\tfunction JsonToCsv(_input, _config)\n\t\t\t{\n\t\t\t\t// Default configuration\n\n\t\t\t\t/** whether to surround every datum with quotes */\n\t\t\t\tvar _quotes = false;\n\n\t\t\t\t/** whether to write headers */\n\t\t\t\tvar _writeHeader = true;\n\n\t\t\t\t/** delimiting character */\n\t\t\t\tvar _delimiter = ',';\n\n\t\t\t\t/** newline character(s) */\n\t\t\t\tvar _newline = '\\r\\n';\n\n\t\t\t\t/** quote character */\n\t\t\t\tvar _quoteChar = '\"';\n\n\t\t\t\tunpackConfig();\n\n\t\t\t\tvar quoteCharRegex = new RegExp(_quoteChar, 'g');\n\n\t\t\t\tif (typeof _input === 'string')\n\t\t\t\t\t_input = JSON.parse(_input);\n\n\t\t\t\tif (_input instanceof Array)\n\t\t\t\t{\n\t\t\t\t\tif (!_input.length || _input[0] instanceof Array)\n\t\t\t\t\t\treturn serialize(null, _input);\n\t\t\t\t\telse if (typeof _input[0] === 'object')\n\t\t\t\t\t\treturn serialize(objectKeys(_input[0]), _input);\n\t\t\t\t}\n\t\t\t\telse if (typeof _input === 'object')\n\t\t\t\t{\n\t\t\t\t\tif (typeof _input.data === 'string')\n\t\t\t\t\t\t_input.data = JSON.parse(_input.data);\n\n\t\t\t\t\tif (_input.data instanceof Array)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!_input.fields)\n\t\t\t\t\t\t\t_input.fields =  _input.meta && _input.meta.fields;\n\n\t\t\t\t\t\tif (!_input.fields)\n\t\t\t\t\t\t\t_input.fields =  _input.data[0] instanceof Array\n\t\t\t\t\t\t\t\t? _input.fields\n\t\t\t\t\t\t\t\t: objectKeys(_input.data[0]);\n\n\t\t\t\t\t\tif (!(_input.data[0] instanceof Array) && typeof _input.data[0] !== 'object')\n\t\t\t\t\t\t\t_input.data = [_input.data];\t// handles input like [1,2,3] or ['asdf']\n\t\t\t\t\t}\n\n\t\t\t\t\treturn serialize(_input.fields || [], _input.data || []);\n\t\t\t\t}\n\n\t\t\t\t// Default (any valid paths should return before this)\n\t\t\t\tthrow 'exception: Unable to serialize unrecognized input';\n\n\n\t\t\t\tfunction unpackConfig()\n\t\t\t\t{\n\t\t\t\t\tif (typeof _config !== 'object')\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tif (typeof _config.delimiter === 'string'\n\t\t\t\t\t\t&& _config.delimiter.length === 1\n\t\t\t\t\t\t&& Papa.BAD_DELIMITERS.indexOf(_config.delimiter) === -1)\n\t\t\t\t\t{\n\t\t\t\t\t\t_delimiter = _config.delimiter;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof _config.quotes === 'boolean'\n\t\t\t\t\t\t|| _config.quotes instanceof Array)\n\t\t\t\t\t\t_quotes = _config.quotes;\n\n\t\t\t\t\tif (typeof _config.newline === 'string')\n\t\t\t\t\t\t_newline = _config.newline;\n\n\t\t\t\t\tif (typeof _config.quoteChar === 'string')\n\t\t\t\t\t\t_quoteChar = _config.quoteChar;\n\n\t\t\t\t\tif (typeof _config.header === 'boolean')\n\t\t\t\t\t\t_writeHeader = _config.header;\n\t\t\t\t}\n\n\n\t\t\t\t/** Turns an object's keys into an array */\n\t\t\t\tfunction objectKeys(obj)\n\t\t\t\t{\n\t\t\t\t\tif (typeof obj !== 'object')\n\t\t\t\t\t\treturn [];\n\t\t\t\t\tvar keys = [];\n\t\t\t\t\tfor (var key in obj)\n\t\t\t\t\t\tkeys.push(key);\n\t\t\t\t\treturn keys;\n\t\t\t\t}\n\n\t\t\t\t/** The double for loop that iterates the data and writes out a CSV string including header row */\n\t\t\t\tfunction serialize(fields, data)\n\t\t\t\t{\n\t\t\t\t\tvar csv = '';\n\n\t\t\t\t\tif (typeof fields === 'string')\n\t\t\t\t\t\tfields = JSON.parse(fields);\n\t\t\t\t\tif (typeof data === 'string')\n\t\t\t\t\t\tdata = JSON.parse(data);\n\n\t\t\t\t\tvar hasHeader = fields instanceof Array && fields.length > 0;\n\t\t\t\t\tvar dataKeyedByField = !(data[0] instanceof Array);\n\n\t\t\t\t\t// If there a header row, write it first\n\t\t\t\t\tif (hasHeader && _writeHeader)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (var i = 0; i < fields.length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (i > 0)\n\t\t\t\t\t\t\t\tcsv += _delimiter;\n\t\t\t\t\t\t\tcsv += safe(fields[i], i);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.length > 0)\n\t\t\t\t\t\t\tcsv += _newline;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Then write out the data\n\t\t\t\t\tfor (var row = 0; row < data.length; row++)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar maxCol = hasHeader ? fields.length : data[row].length;\n\n\t\t\t\t\t\tfor (var col = 0; col < maxCol; col++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (col > 0)\n\t\t\t\t\t\t\t\tcsv += _delimiter;\n\t\t\t\t\t\t\tvar colIdx = hasHeader && dataKeyedByField ? fields[col] : col;\n\t\t\t\t\t\t\tcsv += safe(data[row][colIdx], col);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (row < data.length - 1)\n\t\t\t\t\t\t\tcsv += _newline;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn csv;\n\t\t\t\t}\n\n\t\t\t\t/** Encloses a value around quotes if needed (makes a value safe for CSV insertion) */\n\t\t\t\tfunction safe(str, col)\n\t\t\t\t{\n\t\t\t\t\tif (typeof str === 'undefined' || str === null)\n\t\t\t\t\t\treturn '';\n\n\t\t\t\t\tstr = str.toString().replace(quoteCharRegex, _quoteChar + _quoteChar);\n\n\t\t\t\t\tvar needsQuotes = (typeof _quotes === 'boolean' && _quotes)\n\t\t\t\t\t\t\t\t\t|| (_quotes instanceof Array && _quotes[col])\n\t\t\t\t\t\t\t\t\t|| hasAny(str, Papa.BAD_DELIMITERS)\n\t\t\t\t\t\t\t\t\t|| str.indexOf(_delimiter) > -1\n\t\t\t\t\t\t\t\t\t|| str.charAt(0) === ' '\n\t\t\t\t\t\t\t\t\t|| str.charAt(str.length - 1) === ' ';\n\n\t\t\t\t\treturn needsQuotes ? _quoteChar + str + _quoteChar : str;\n\t\t\t\t}\n\n\t\t\t\tfunction hasAny(str, substrings)\n\t\t\t\t{\n\t\t\t\t\tfor (var i = 0; i < substrings.length; i++)\n\t\t\t\t\t\tif (str.indexOf(substrings[i]) > -1)\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/** ChunkStreamer is the base prototype for various streamer implementations. */\n\t\t\tfunction ChunkStreamer(config)\n\t\t\t{\n\t\t\t\tthis._handle = null;\n\t\t\t\tthis._finished = false;\n\t\t\t\tthis._completed = false;\n\t\t\t\tthis._input = null;\n\t\t\t\tthis._baseIndex = 0;\n\t\t\t\tthis._partialLine = '';\n\t\t\t\tthis._rowCount = 0;\n\t\t\t\tthis._start = 0;\n\t\t\t\tthis._nextChunk = null;\n\t\t\t\tthis.isFirstChunk = true;\n\t\t\t\tthis._completeResults = {\n\t\t\t\t\tdata: [],\n\t\t\t\t\terrors: [],\n\t\t\t\t\tmeta: {}\n\t\t\t\t};\n\t\t\t\treplaceConfig.call(this, config);\n\n\t\t\t\tthis.parseChunk = function(chunk, isFakeChunk)\n\t\t\t\t{\n\t\t\t\t\t// First chunk pre-processing\n\t\t\t\t\tif (this.isFirstChunk && isFunction(this._config.beforeFirstChunk))\n\t\t\t\t\t{\n\t\t\t\t\t\tvar modifiedChunk = this._config.beforeFirstChunk(chunk);\n\t\t\t\t\t\tif (modifiedChunk !== undefined)\n\t\t\t\t\t\t\tchunk = modifiedChunk;\n\t\t\t\t\t}\n\t\t\t\t\tthis.isFirstChunk = false;\n\n\t\t\t\t\t// Rejoin the line we likely just split in two by chunking the file\n\t\t\t\t\tvar aggregate = this._partialLine + chunk;\n\t\t\t\t\tthis._partialLine = '';\n\n\t\t\t\t\tvar results = this._handle.parse(aggregate, this._baseIndex, !this._finished);\n\n\t\t\t\t\tif (this._handle.paused() || this._handle.aborted())\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tvar lastIndex = results.meta.cursor;\n\n\t\t\t\t\tif (!this._finished)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._partialLine = aggregate.substring(lastIndex - this._baseIndex);\n\t\t\t\t\t\tthis._baseIndex = lastIndex;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (results && results.data)\n\t\t\t\t\t\tthis._rowCount += results.data.length;\n\n\t\t\t\t\tvar finishedIncludingPreview = this._finished || (this._config.preview && this._rowCount >= this._config.preview);\n\n\t\t\t\t\tif (IS_PAPA_WORKER)\n\t\t\t\t\t{\n\t\t\t\t\t\tglobal.postMessage({\n\t\t\t\t\t\t\tresults: results,\n\t\t\t\t\t\t\tworkerId: Papa.WORKER_ID,\n\t\t\t\t\t\t\tfinished: finishedIncludingPreview\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse if (isFunction(this._config.chunk) && !isFakeChunk)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._config.chunk(results, this._handle);\n\t\t\t\t\t\tif (this._handle.paused() || this._handle.aborted())\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\tresults = undefined;\n\t\t\t\t\t\tthis._completeResults = undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this._config.step && !this._config.chunk) {\n\t\t\t\t\t\tthis._completeResults.data = this._completeResults.data.concat(results.data);\n\t\t\t\t\t\tthis._completeResults.errors = this._completeResults.errors.concat(results.errors);\n\t\t\t\t\t\tthis._completeResults.meta = results.meta;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this._completed && finishedIncludingPreview && isFunction(this._config.complete) && (!results || !results.meta.aborted)) {\n\t\t\t\t\t\tthis._config.complete(this._completeResults, this._input);\n\t\t\t\t\t\tthis._completed = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!finishedIncludingPreview && (!results || !results.meta.paused))\n\t\t\t\t\t\tthis._nextChunk();\n\n\t\t\t\t\treturn results;\n\t\t\t\t};\n\n\t\t\t\tthis._sendError = function(error)\n\t\t\t\t{\n\t\t\t\t\tif (isFunction(this._config.error))\n\t\t\t\t\t\tthis._config.error(error);\n\t\t\t\t\telse if (IS_PAPA_WORKER && this._config.error)\n\t\t\t\t\t{\n\t\t\t\t\t\tglobal.postMessage({\n\t\t\t\t\t\t\tworkerId: Papa.WORKER_ID,\n\t\t\t\t\t\t\terror: error,\n\t\t\t\t\t\t\tfinished: false\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tfunction replaceConfig(config)\n\t\t\t\t{\n\t\t\t\t\t// Deep-copy the config so we can edit it\n\t\t\t\t\tvar configCopy = copy(config);\n\t\t\t\t\tconfigCopy.chunkSize = parseInt(configCopy.chunkSize);\t// parseInt VERY important so we don't concatenate strings!\n\t\t\t\t\tif (!config.step && !config.chunk)\n\t\t\t\t\t\tconfigCopy.chunkSize = null;  // disable Range header if not streaming; bad values break IIS - see issue #196\n\t\t\t\t\tthis._handle = new ParserHandle(configCopy);\n\t\t\t\t\tthis._handle.streamer = this;\n\t\t\t\t\tthis._config = configCopy;\t// persist the copy to the caller\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\tfunction NetworkStreamer(config)\n\t\t\t{\n\t\t\t\tconfig = config || {};\n\t\t\t\tif (!config.chunkSize)\n\t\t\t\t\tconfig.chunkSize = Papa.RemoteChunkSize;\n\t\t\t\tChunkStreamer.call(this, config);\n\n\t\t\t\tvar xhr;\n\n\t\t\t\tif (IS_WORKER)\n\t\t\t\t{\n\t\t\t\t\tthis._nextChunk = function()\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._readChunk();\n\t\t\t\t\t\tthis._chunkLoaded();\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis._nextChunk = function()\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._readChunk();\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tthis.stream = function(url)\n\t\t\t\t{\n\t\t\t\t\tthis._input = url;\n\t\t\t\t\tthis._nextChunk();\t// Starts streaming\n\t\t\t\t};\n\n\t\t\t\tthis._readChunk = function()\n\t\t\t\t{\n\t\t\t\t\tif (this._finished)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._chunkLoaded();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\txhr = new XMLHttpRequest();\n\n\t\t\t\t\tif (this._config.withCredentials)\n\t\t\t\t\t{\n\t\t\t\t\t\txhr.withCredentials = this._config.withCredentials;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!IS_WORKER)\n\t\t\t\t\t{\n\t\t\t\t\t\txhr.onload = bindFunction(this._chunkLoaded, this);\n\t\t\t\t\t\txhr.onerror = bindFunction(this._chunkError, this);\n\t\t\t\t\t}\n\n\t\t\t\t\txhr.open('GET', this._input, !IS_WORKER);\n\t\t\t\t\t// Headers can only be set when once the request state is OPENED\n\t\t\t\t\tif (this._config.downloadRequestHeaders)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar headers = this._config.downloadRequestHeaders;\n\n\t\t\t\t\t\tfor (var headerName in headers)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\txhr.setRequestHeader(headerName, headers[headerName]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this._config.chunkSize)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar end = this._start + this._config.chunkSize - 1;\t// minus one because byte range is inclusive\n\t\t\t\t\t\txhr.setRequestHeader('Range', 'bytes=' + this._start + '-' + end);\n\t\t\t\t\t\txhr.setRequestHeader('If-None-Match', 'webkit-no-cache'); // https://bugs.webkit.org/show_bug.cgi?id=82672\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\txhr.send();\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\tthis._chunkError(err.message);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (IS_WORKER && xhr.status === 0)\n\t\t\t\t\t\tthis._chunkError();\n\t\t\t\t\telse\n\t\t\t\t\t\tthis._start += this._config.chunkSize;\n\t\t\t\t};\n\n\t\t\t\tthis._chunkLoaded = function()\n\t\t\t\t{\n\t\t\t\t\tif (xhr.readyState !== 4)\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tif (xhr.status < 200 || xhr.status >= 400)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._chunkError();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._finished = !this._config.chunkSize || this._start > getFileSize(xhr);\n\t\t\t\t\tthis.parseChunk(xhr.responseText);\n\t\t\t\t};\n\n\t\t\t\tthis._chunkError = function(errorMessage)\n\t\t\t\t{\n\t\t\t\t\tvar errorText = xhr.statusText || errorMessage;\n\t\t\t\t\tthis._sendError(new Error(errorText));\n\t\t\t\t};\n\n\t\t\t\tfunction getFileSize(xhr)\n\t\t\t\t{\n\t\t\t\t\tvar contentRange = xhr.getResponseHeader('Content-Range');\n\t\t\t\t\tif (contentRange === null) { // no content range, then finish!\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\treturn parseInt(contentRange.substr(contentRange.lastIndexOf('/') + 1));\n\t\t\t\t}\n\t\t\t}\n\t\t\tNetworkStreamer.prototype = Object.create(ChunkStreamer.prototype);\n\t\t\tNetworkStreamer.prototype.constructor = NetworkStreamer;\n\n\n\t\t\tfunction FileStreamer(config)\n\t\t\t{\n\t\t\t\tconfig = config || {};\n\t\t\t\tif (!config.chunkSize)\n\t\t\t\t\tconfig.chunkSize = Papa.LocalChunkSize;\n\t\t\t\tChunkStreamer.call(this, config);\n\n\t\t\t\tvar reader, slice;\n\n\t\t\t\t// FileReader is better than FileReaderSync (even in worker) - see http://stackoverflow.com/q/24708649/1048862\n\t\t\t\t// But Firefox is a pill, too - see issue #76: https://github.com/mholt/PapaParse/issues/76\n\t\t\t\tvar usingAsyncReader = typeof FileReader !== 'undefined';\t// Safari doesn't consider it a function - see issue #105\n\n\t\t\t\tthis.stream = function(file)\n\t\t\t\t{\n\t\t\t\t\tthis._input = file;\n\t\t\t\t\tslice = file.slice || file.webkitSlice || file.mozSlice;\n\n\t\t\t\t\tif (usingAsyncReader)\n\t\t\t\t\t{\n\t\t\t\t\t\treader = new FileReader();\t\t// Preferred method of reading files, even in workers\n\t\t\t\t\t\treader.onload = bindFunction(this._chunkLoaded, this);\n\t\t\t\t\t\treader.onerror = bindFunction(this._chunkError, this);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\treader = new FileReaderSync();\t// Hack for running in a web worker in Firefox\n\n\t\t\t\t\tthis._nextChunk();\t// Starts streaming\n\t\t\t\t};\n\n\t\t\t\tthis._nextChunk = function()\n\t\t\t\t{\n\t\t\t\t\tif (!this._finished && (!this._config.preview || this._rowCount < this._config.preview))\n\t\t\t\t\t\tthis._readChunk();\n\t\t\t\t};\n\n\t\t\t\tthis._readChunk = function()\n\t\t\t\t{\n\t\t\t\t\tvar input = this._input;\n\t\t\t\t\tif (this._config.chunkSize)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar end = Math.min(this._start + this._config.chunkSize, this._input.size);\n\t\t\t\t\t\tinput = slice.call(input, this._start, end);\n\t\t\t\t\t}\n\t\t\t\t\tvar txt = reader.readAsText(input, this._config.encoding);\n\t\t\t\t\tif (!usingAsyncReader)\n\t\t\t\t\t\tthis._chunkLoaded({ target: { result: txt } });\t// mimic the async signature\n\t\t\t\t};\n\n\t\t\t\tthis._chunkLoaded = function(event)\n\t\t\t\t{\n\t\t\t\t\t// Very important to increment start each time before handling results\n\t\t\t\t\tthis._start += this._config.chunkSize;\n\t\t\t\t\tthis._finished = !this._config.chunkSize || this._start >= this._input.size;\n\t\t\t\t\tthis.parseChunk(event.target.result);\n\t\t\t\t};\n\n\t\t\t\tthis._chunkError = function()\n\t\t\t\t{\n\t\t\t\t\tthis._sendError(reader.error);\n\t\t\t\t};\n\n\t\t\t}\n\t\t\tFileStreamer.prototype = Object.create(ChunkStreamer.prototype);\n\t\t\tFileStreamer.prototype.constructor = FileStreamer;\n\n\n\t\t\tfunction StringStreamer(config)\n\t\t\t{\n\t\t\t\tconfig = config || {};\n\t\t\t\tChunkStreamer.call(this, config);\n\n\t\t\t\tvar remaining;\n\t\t\t\tthis.stream = function(s)\n\t\t\t\t{\n\t\t\t\t\tremaining = s;\n\t\t\t\t\treturn this._nextChunk();\n\t\t\t\t};\n\t\t\t\tthis._nextChunk = function()\n\t\t\t\t{\n\t\t\t\t\tif (this._finished) return;\n\t\t\t\t\tvar size = this._config.chunkSize;\n\t\t\t\t\tvar chunk = size ? remaining.substr(0, size) : remaining;\n\t\t\t\t\tremaining = size ? remaining.substr(size) : '';\n\t\t\t\t\tthis._finished = !remaining;\n\t\t\t\t\treturn this.parseChunk(chunk);\n\t\t\t\t};\n\t\t\t}\n\t\t\tStringStreamer.prototype = Object.create(StringStreamer.prototype);\n\t\t\tStringStreamer.prototype.constructor = StringStreamer;\n\n\n\t\t\tfunction ReadableStreamStreamer(config)\n\t\t\t{\n\t\t\t\tconfig = config || {};\n\n\t\t\t\tChunkStreamer.call(this, config);\n\n\t\t\t\tvar queue = [];\n\t\t\t\tvar parseOnData = true;\n\t\t\t\tvar streamHasEnded = false;\n\n\t\t\t\tthis.pause = function()\n\t\t\t\t{\n\t\t\t\t\tChunkStreamer.prototype.pause.apply(this, arguments);\n\t\t\t\t\tthis._input.pause();\n\t\t\t\t};\n\n\t\t\t\tthis.resume = function()\n\t\t\t\t{\n\t\t\t\t\tChunkStreamer.prototype.resume.apply(this, arguments);\n\t\t\t\t\tthis._input.resume();\n\t\t\t\t};\n\n\t\t\t\tthis.stream = function(stream)\n\t\t\t\t{\n\t\t\t\t\tthis._input = stream;\n\n\t\t\t\t\tthis._input.on('data', this._streamData);\n\t\t\t\t\tthis._input.on('end', this._streamEnd);\n\t\t\t\t\tthis._input.on('error', this._streamError);\n\t\t\t\t};\n\n\t\t\t\tthis._checkIsFinished = function()\n\t\t\t\t{\n\t\t\t\t\tif (streamHasEnded && queue.length === 1) {\n\t\t\t\t\t\tthis._finished = true;\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis._nextChunk = function()\n\t\t\t\t{\n\t\t\t\t\tthis._checkIsFinished();\n\t\t\t\t\tif (queue.length)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.parseChunk(queue.shift());\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tparseOnData = true;\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis._streamData = bindFunction(function(chunk)\n\t\t\t\t{\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tqueue.push(typeof chunk === 'string' ? chunk : chunk.toString(this._config.encoding));\n\n\t\t\t\t\t\tif (parseOnData)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseOnData = false;\n\t\t\t\t\t\t\tthis._checkIsFinished();\n\t\t\t\t\t\t\tthis.parseChunk(queue.shift());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (error)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis._streamError(error);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\n\t\t\t\tthis._streamError = bindFunction(function(error)\n\t\t\t\t{\n\t\t\t\t\tthis._streamCleanUp();\n\t\t\t\t\tthis._sendError(error);\n\t\t\t\t}, this);\n\n\t\t\t\tthis._streamEnd = bindFunction(function()\n\t\t\t\t{\n\t\t\t\t\tthis._streamCleanUp();\n\t\t\t\t\tstreamHasEnded = true;\n\t\t\t\t\tthis._streamData('');\n\t\t\t\t}, this);\n\n\t\t\t\tthis._streamCleanUp = bindFunction(function()\n\t\t\t\t{\n\t\t\t\t\tthis._input.removeListener('data', this._streamData);\n\t\t\t\t\tthis._input.removeListener('end', this._streamEnd);\n\t\t\t\t\tthis._input.removeListener('error', this._streamError);\n\t\t\t\t}, this);\n\t\t\t}\n\t\t\tReadableStreamStreamer.prototype = Object.create(ChunkStreamer.prototype);\n\t\t\tReadableStreamStreamer.prototype.constructor = ReadableStreamStreamer;\n\n\n\t\t\t// Use one ParserHandle per entire CSV file or string\n\t\t\tfunction ParserHandle(_config)\n\t\t\t{\n\t\t\t\t// One goal is to minimize the use of regular expressions...\n\t\t\t\tvar FLOAT = /^\\s*-?(\\d*\\.?\\d+|\\d+\\.?\\d*)(e[-+]?\\d+)?\\s*$/i;\n\n\t\t\t\tvar self = this;\n\t\t\t\tvar _stepCounter = 0;\t// Number of times step was called (number of rows parsed)\n\t\t\t\tvar _input;\t\t\t\t// The input being parsed\n\t\t\t\tvar _parser;\t\t\t// The core parser being used\n\t\t\t\tvar _paused = false;\t// Whether we are paused or not\n\t\t\t\tvar _aborted = false;\t// Whether the parser has aborted or not\n\t\t\t\tvar _delimiterError;\t// Temporary state between delimiter detection and processing results\n\t\t\t\tvar _fields = [];\t\t// Fields are from the header row of the input, if there is one\n\t\t\t\tvar _results = {\t\t// The last results returned from the parser\n\t\t\t\t\tdata: [],\n\t\t\t\t\terrors: [],\n\t\t\t\t\tmeta: {}\n\t\t\t\t};\n\n\t\t\t\tif (isFunction(_config.step))\n\t\t\t\t{\n\t\t\t\t\tvar userStep = _config.step;\n\t\t\t\t\t_config.step = function(results)\n\t\t\t\t\t{\n\t\t\t\t\t\t_results = results;\n\n\t\t\t\t\t\tif (needsHeaderRow())\n\t\t\t\t\t\t\tprocessResults();\n\t\t\t\t\t\telse\t// only call user's step function after header row\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tprocessResults();\n\n\t\t\t\t\t\t\t// It's possbile that this line was empty and there's no row here after all\n\t\t\t\t\t\t\tif (_results.data.length === 0)\n\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\t_stepCounter += results.data.length;\n\t\t\t\t\t\t\tif (_config.preview && _stepCounter > _config.preview)\n\t\t\t\t\t\t\t\t_parser.abort();\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tuserStep(_results, self);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t/**\n\t\t\t\t * Parses input. Most users won't need, and shouldn't mess with, the baseIndex\n\t\t\t\t * and ignoreLastRow parameters. They are used by streamers (wrapper functions)\n\t\t\t\t * when an input comes in multiple chunks, like from a file.\n\t\t\t\t */\n\t\t\t\tthis.parse = function(input, baseIndex, ignoreLastRow)\n\t\t\t\t{\n\t\t\t\t\tif (!_config.newline)\n\t\t\t\t\t\t_config.newline = guessLineEndings(input);\n\n\t\t\t\t\t_delimiterError = false;\n\t\t\t\t\tif (!_config.delimiter)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar delimGuess = guessDelimiter(input, _config.newline, _config.skipEmptyLines);\n\t\t\t\t\t\tif (delimGuess.successful)\n\t\t\t\t\t\t\t_config.delimiter = delimGuess.bestDelimiter;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t_delimiterError = true;\t// add error after parsing (otherwise it would be overwritten)\n\t\t\t\t\t\t\t_config.delimiter = Papa.DefaultDelimiter;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_results.meta.delimiter = _config.delimiter;\n\t\t\t\t\t}\n\t\t\t\t\telse if(isFunction(_config.delimiter))\n\t\t\t\t\t{\n\t\t\t\t\t\t_config.delimiter = _config.delimiter(input);\n\t\t\t\t\t\t_results.meta.delimiter = _config.delimiter;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar parserConfig = copy(_config);\n\t\t\t\t\tif (_config.preview && _config.header)\n\t\t\t\t\t\tparserConfig.preview++;\t// to compensate for header row\n\n\t\t\t\t\t_input = input;\n\t\t\t\t\t_parser = new Parser(parserConfig);\n\t\t\t\t\t_results = _parser.parse(_input, baseIndex, ignoreLastRow);\n\t\t\t\t\tprocessResults();\n\t\t\t\t\treturn _paused ? { meta: { paused: true } } : (_results || { meta: { paused: false } });\n\t\t\t\t};\n\n\t\t\t\tthis.paused = function()\n\t\t\t\t{\n\t\t\t\t\treturn _paused;\n\t\t\t\t};\n\n\t\t\t\tthis.pause = function()\n\t\t\t\t{\n\t\t\t\t\t_paused = true;\n\t\t\t\t\t_parser.abort();\n\t\t\t\t\t_input = _input.substr(_parser.getCharIndex());\n\t\t\t\t};\n\n\t\t\t\tthis.resume = function()\n\t\t\t\t{\n\t\t\t\t\t_paused = false;\n\t\t\t\t\tself.streamer.parseChunk(_input, true);\n\t\t\t\t};\n\n\t\t\t\tthis.aborted = function()\n\t\t\t\t{\n\t\t\t\t\treturn _aborted;\n\t\t\t\t};\n\n\t\t\t\tthis.abort = function()\n\t\t\t\t{\n\t\t\t\t\t_aborted = true;\n\t\t\t\t\t_parser.abort();\n\t\t\t\t\t_results.meta.aborted = true;\n\t\t\t\t\tif (isFunction(_config.complete))\n\t\t\t\t\t\t_config.complete(_results);\n\t\t\t\t\t_input = '';\n\t\t\t\t};\n\n\t\t\t\tfunction processResults()\n\t\t\t\t{\n\t\t\t\t\tif (_results && _delimiterError)\n\t\t\t\t\t{\n\t\t\t\t\t\taddError('Delimiter', 'UndetectableDelimiter', 'Unable to auto-detect delimiting character; defaulted to \\'' + Papa.DefaultDelimiter + '\\'');\n\t\t\t\t\t\t_delimiterError = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (_config.skipEmptyLines)\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (var i = 0; i < _results.data.length; i++)\n\t\t\t\t\t\t\tif (_results.data[i].length === 1 && _results.data[i][0] === '')\n\t\t\t\t\t\t\t\t_results.data.splice(i--, 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (needsHeaderRow())\n\t\t\t\t\t\tfillHeaderFields();\n\n\t\t\t\t\treturn applyHeaderAndDynamicTyping();\n\t\t\t\t}\n\n\t\t\t\tfunction needsHeaderRow()\n\t\t\t\t{\n\t\t\t\t\treturn _config.header && _fields.length === 0;\n\t\t\t\t}\n\n\t\t\t\tfunction fillHeaderFields()\n\t\t\t\t{\n\t\t\t\t\tif (!_results)\n\t\t\t\t\t\treturn;\n\t\t\t\t\tfor (var i = 0; needsHeaderRow() && i < _results.data.length; i++)\n\t\t\t\t\t\tfor (var j = 0; j < _results.data[i].length; j++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar header = _results.data[i][j];\n\n\t\t\t\t\t\t\tif (_config.trimHeaders) {\n\t\t\t\t\t\t\t\theader = header.trim();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_fields.push(header);\n\t\t\t\t\t\t}\n\t\t\t\t\t_results.data.splice(0, 1);\n\t\t\t\t}\n\n\t\t\t\tfunction shouldApplyDynamicTyping(field) {\n\t\t\t\t\t// Cache function values to avoid calling it for each row\n\t\t\t\t\tif (_config.dynamicTypingFunction && _config.dynamicTyping[field] === undefined) {\n\t\t\t\t\t\t_config.dynamicTyping[field] = _config.dynamicTypingFunction(field);\n\t\t\t\t\t}\n\t\t\t\t\treturn (_config.dynamicTyping[field] || _config.dynamicTyping) === true;\n\t\t\t\t}\n\n\t\t\t\tfunction parseDynamic(field, value)\n\t\t\t\t{\n\t\t\t\t\tif (shouldApplyDynamicTyping(field))\n\t\t\t\t\t{\n\t\t\t\t\t\tif (value === 'true' || value === 'TRUE')\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\telse if (value === 'false' || value === 'FALSE')\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\telse if(FLOAT.test(value)) {\n\t\t\t\t\t\t\treturn parseFloat(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treturn (value === '' ? null : value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\n\t\t\t\tfunction applyHeaderAndDynamicTyping()\n\t\t\t\t{\n\t\t\t\t\tif (!_results || (!_config.header && !_config.dynamicTyping))\n\t\t\t\t\t\treturn _results;\n\n\t\t\t\t\tfor (var i = 0; i < _results.data.length; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar row = _config.header ? {} : [];\n\n\t\t\t\t\t\tvar j;\n\t\t\t\t\t\tfor (j = 0; j < _results.data[i].length; j++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar field = j;\n\t\t\t\t\t\t\tvar value = _results.data[i][j];\n\n\t\t\t\t\t\t\tif (_config.header)\n\t\t\t\t\t\t\t\tfield = j >= _fields.length ? '__parsed_extra' : _fields[j];\n\n\t\t\t\t\t\t\tvalue = parseDynamic(field, value);\n\n\t\t\t\t\t\t\tif (field === '__parsed_extra')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\trow[field] = row[field] || [];\n\t\t\t\t\t\t\t\trow[field].push(value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\trow[field] = value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_results.data[i] = row;\n\n\t\t\t\t\t\tif (_config.header)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (j > _fields.length)\n\t\t\t\t\t\t\t\taddError('FieldMismatch', 'TooManyFields', 'Too many fields: expected ' + _fields.length + ' fields but parsed ' + j, i);\n\t\t\t\t\t\t\telse if (j < _fields.length)\n\t\t\t\t\t\t\t\taddError('FieldMismatch', 'TooFewFields', 'Too few fields: expected ' + _fields.length + ' fields but parsed ' + j, i);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (_config.header && _results.meta)\n\t\t\t\t\t\t_results.meta.fields = _fields;\n\t\t\t\t\treturn _results;\n\t\t\t\t}\n\n\t\t\t\tfunction guessDelimiter(input, newline, skipEmptyLines)\n\t\t\t\t{\n\t\t\t\t\tvar delimChoices = [',', '\\t', '|', ';', Papa.RECORD_SEP, Papa.UNIT_SEP];\n\t\t\t\t\tvar bestDelim, bestDelta, fieldCountPrevRow;\n\n\t\t\t\t\tfor (var i = 0; i < delimChoices.length; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tvar delim = delimChoices[i];\n\t\t\t\t\t\tvar delta = 0, avgFieldCount = 0, emptyLinesCount = 0;\n\t\t\t\t\t\tfieldCountPrevRow = undefined;\n\n\t\t\t\t\t\tvar preview = new Parser({\n\t\t\t\t\t\t\tdelimiter: delim,\n\t\t\t\t\t\t\tnewline: newline,\n\t\t\t\t\t\t\tpreview: 10\n\t\t\t\t\t\t}).parse(input);\n\n\t\t\t\t\t\tfor (var j = 0; j < preview.data.length; j++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (skipEmptyLines && preview.data[j].length === 1 && preview.data[j][0].length === 0) {\n\t\t\t\t\t\t\t\temptyLinesCount++;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar fieldCount = preview.data[j].length;\n\t\t\t\t\t\t\tavgFieldCount += fieldCount;\n\n\t\t\t\t\t\t\tif (typeof fieldCountPrevRow === 'undefined')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfieldCountPrevRow = fieldCount;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (fieldCount > 1)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdelta += Math.abs(fieldCount - fieldCountPrevRow);\n\t\t\t\t\t\t\t\tfieldCountPrevRow = fieldCount;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (preview.data.length > 0)\n\t\t\t\t\t\t\tavgFieldCount /= (preview.data.length - emptyLinesCount);\n\n\t\t\t\t\t\tif ((typeof bestDelta === 'undefined' || delta < bestDelta)\n\t\t\t\t\t\t\t&& avgFieldCount > 1.99)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbestDelta = delta;\n\t\t\t\t\t\t\tbestDelim = delim;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t_config.delimiter = bestDelim;\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccessful: !!bestDelim,\n\t\t\t\t\t\tbestDelimiter: bestDelim\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tfunction guessLineEndings(input)\n\t\t\t\t{\n\t\t\t\t\tinput = input.substr(0, 1024 * 1024);\t// max length 1 MB\n\n\t\t\t\t\tvar r = input.split('\\r');\n\n\t\t\t\t\tvar n = input.split('\\n');\n\n\t\t\t\t\tvar nAppearsFirst = (n.length > 1 && n[0].length < r[0].length);\n\n\t\t\t\t\tif (r.length === 1 || nAppearsFirst)\n\t\t\t\t\t\treturn '\\n';\n\n\t\t\t\t\tvar numWithN = 0;\n\t\t\t\t\tfor (var i = 0; i < r.length; i++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (r[i][0] === '\\n')\n\t\t\t\t\t\t\tnumWithN++;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn numWithN >= r.length / 2 ? '\\r\\n' : '\\r';\n\t\t\t\t}\n\n\t\t\t\tfunction addError(type, code, msg, row)\n\t\t\t\t{\n\t\t\t\t\t_results.errors.push({\n\t\t\t\t\t\ttype: type,\n\t\t\t\t\t\tcode: code,\n\t\t\t\t\t\tmessage: msg,\n\t\t\t\t\t\trow: row\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\n\n\n\n\t\t\t/** The core parser implements speedy and correct CSV parsing */\n\t\t\tfunction Parser(config)\n\t\t\t{\n\t\t\t\t// Unpack the config object\n\t\t\t\tconfig = config || {};\n\t\t\t\tvar delim = config.delimiter;\n\t\t\t\tvar newline = config.newline;\n\t\t\t\tvar comments = config.comments;\n\t\t\t\tvar step = config.step;\n\t\t\t\tvar preview = config.preview;\n\t\t\t\tvar fastMode = config.fastMode;\n\t\t\t\tvar quoteChar;\n\t\t\t\t/** Allows for no quoteChar by setting quoteChar to undefined in config */\n\t\t\t\tif (config.quoteChar === undefined) {\n\t\t\t\t\tquoteChar = '\"';\n\t\t\t\t} else {\n\t\t\t\t\tquoteChar = config.quoteChar;\n\t\t\t\t}\n\t\t\t\tvar escapeChar = quoteChar;\n\t\t\t\tif (config.escapeChar !== undefined) {\n\t\t\t\t\tescapeChar = config.escapeChar;\n\t\t\t\t}\n\n\t\t\t\t// Delimiter must be valid\n\t\t\t\tif (typeof delim !== 'string'\n\t\t\t\t\t|| Papa.BAD_DELIMITERS.indexOf(delim) > -1)\n\t\t\t\t\tdelim = ',';\n\n\t\t\t\t// Comment character must be valid\n\t\t\t\tif (comments === delim)\n\t\t\t\t\tthrow 'Comment character same as delimiter';\n\t\t\t\telse if (comments === true)\n\t\t\t\t\tcomments = '#';\n\t\t\t\telse if (typeof comments !== 'string'\n\t\t\t\t\t|| Papa.BAD_DELIMITERS.indexOf(comments) > -1)\n\t\t\t\t\tcomments = false;\n\n\t\t\t\t// Newline must be valid: \\r, \\n, or \\r\\n\n\t\t\t\tif (newline !== '\\n' && newline !== '\\r' && newline !== '\\r\\n')\n\t\t\t\t\tnewline = '\\n';\n\n\t\t\t\t// We're gonna need these at the Parser scope\n\t\t\t\tvar cursor = 0;\n\t\t\t\tvar aborted = false;\n\n\t\t\t\tthis.parse = function(input, baseIndex, ignoreLastRow)\n\t\t\t\t{\n\t\t\t\t\t// For some reason, in Chrome, this speeds things up (!?)\n\t\t\t\t\tif (typeof input !== 'string')\n\t\t\t\t\t\tthrow 'Input must be a string';\n\n\t\t\t\t\t// We don't need to compute some of these every time parse() is called,\n\t\t\t\t\t// but having them in a more local scope seems to perform better\n\t\t\t\t\tvar inputLen = input.length,\n\t\t\t\t\t\tdelimLen = delim.length,\n\t\t\t\t\t\tnewlineLen = newline.length,\n\t\t\t\t\t\tcommentsLen = comments.length;\n\t\t\t\t\tvar stepIsFunction = isFunction(step);\n\n\t\t\t\t\t// Establish starting state\n\t\t\t\t\tcursor = 0;\n\t\t\t\t\tvar data = [], errors = [], row = [], lastCursor = 0;\n\n\t\t\t\t\tif (!input)\n\t\t\t\t\t\treturn returnable();\n\n\t\t\t\t\tif (fastMode || (fastMode !== false && input.indexOf(quoteChar) === -1))\n\t\t\t\t\t{\n\t\t\t\t\t\tvar rows = input.split(newline);\n\t\t\t\t\t\tfor (var i = 0; i < rows.length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trow = rows[i];\n\t\t\t\t\t\t\tcursor += row.length;\n\t\t\t\t\t\t\tif (i !== rows.length - 1)\n\t\t\t\t\t\t\t\tcursor += newline.length;\n\t\t\t\t\t\t\telse if (ignoreLastRow)\n\t\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t\t\tif (comments && row.substr(0, commentsLen) === comments)\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\tif (stepIsFunction)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdata = [];\n\t\t\t\t\t\t\t\tpushRow(row.split(delim));\n\t\t\t\t\t\t\t\tdoStep();\n\t\t\t\t\t\t\t\tif (aborted)\n\t\t\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tpushRow(row.split(delim));\n\t\t\t\t\t\t\tif (preview && i >= preview)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdata = data.slice(0, preview);\n\t\t\t\t\t\t\t\treturn returnable(true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar nextDelim = input.indexOf(delim, cursor);\n\t\t\t\t\tvar nextNewline = input.indexOf(newline, cursor);\n\t\t\t\t\tvar quoteCharRegex = new RegExp(escapeChar.replace(/[-[\\]/{}()*+?.\\\\^$|]/g, '\\\\$&') + quoteChar, 'g');\n\t\t\t\t\tvar quoteSearch;\n\n\t\t\t\t\t// Parser loop\n\t\t\t\t\tfor (;;)\n\t\t\t\t\t{\n\t\t\t\t\t\t// Field has opening quote\n\t\t\t\t\t\tif (input[cursor] === quoteChar)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Start our search for the closing quote where the cursor is\n\t\t\t\t\t\t\tquoteSearch = cursor;\n\n\t\t\t\t\t\t\t// Skip the opening quote\n\t\t\t\t\t\t\tcursor++;\n\n\t\t\t\t\t\t\tfor (;;)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t// Find closing quote\n\t\t\t\t\t\t\t\tquoteSearch = input.indexOf(quoteChar, quoteSearch + 1);\n\n\t\t\t\t\t\t\t\t//No other quotes are found - no other delimiters\n\t\t\t\t\t\t\t\tif (quoteSearch === -1)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tif (!ignoreLastRow) {\n\t\t\t\t\t\t\t\t\t\t// No closing quote... what a pity\n\t\t\t\t\t\t\t\t\t\terrors.push({\n\t\t\t\t\t\t\t\t\t\t\ttype: 'Quotes',\n\t\t\t\t\t\t\t\t\t\t\tcode: 'MissingQuotes',\n\t\t\t\t\t\t\t\t\t\t\tmessage: 'Quoted field unterminated',\n\t\t\t\t\t\t\t\t\t\t\trow: data.length,\t// row has yet to be inserted\n\t\t\t\t\t\t\t\t\t\t\tindex: cursor\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn finish();\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Closing quote at EOF\n\t\t\t\t\t\t\t\tif (quoteSearch === inputLen - 1)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tvar value = input.substring(cursor, quoteSearch).replace(quoteCharRegex, quoteChar);\n\t\t\t\t\t\t\t\t\treturn finish(value);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If this quote is escaped, it's part of the data; skip it\n\t\t\t\t\t\t\t\t// If the quote character is the escape character, then check if the next character is the escape character\n\t\t\t\t\t\t\t\tif (quoteChar === escapeChar &&  input[quoteSearch + 1] === escapeChar)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tquoteSearch++;\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// If the quote character is not the escape character, then check if the previous character was the escape character\n\t\t\t\t\t\t\t\tif (quoteChar !== escapeChar && quoteSearch !== 0 && input[quoteSearch - 1] === escapeChar)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar spacesBetweenQuoteAndDelimiter = extraSpaces(nextDelim);\n\n\t\t\t\t\t\t\t\t// Closing quote followed by delimiter or 'unnecessary steps + delimiter'\n\t\t\t\t\t\t\t\tif (input[quoteSearch + 1 + spacesBetweenQuoteAndDelimiter] === delim)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\trow.push(input.substring(cursor, quoteSearch).replace(quoteCharRegex, quoteChar));\n\t\t\t\t\t\t\t\t\tcursor = quoteSearch + 1 + spacesBetweenQuoteAndDelimiter + delimLen;\n\t\t\t\t\t\t\t\t\tnextDelim = input.indexOf(delim, cursor);\n\t\t\t\t\t\t\t\t\tnextNewline = input.indexOf(newline, cursor);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar spacesBetweenQuoteAndNewLine = extraSpaces(nextNewline);\n\n\t\t\t\t\t\t\t\t// Closing quote followed by newline or 'unnecessary spaces + newLine'\n\t\t\t\t\t\t\t\tif (input.substr(quoteSearch + 1 + spacesBetweenQuoteAndNewLine, newlineLen) === newline)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\trow.push(input.substring(cursor, quoteSearch).replace(quoteCharRegex, quoteChar));\n\t\t\t\t\t\t\t\t\tsaveRow(quoteSearch + 1 + spacesBetweenQuoteAndNewLine + newlineLen);\n\t\t\t\t\t\t\t\t\tnextDelim = input.indexOf(delim, cursor);\t// because we may have skipped the nextDelim in the quoted field\n\n\t\t\t\t\t\t\t\t\tif (stepIsFunction)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdoStep();\n\t\t\t\t\t\t\t\t\t\tif (aborted)\n\t\t\t\t\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (preview && data.length >= preview)\n\t\t\t\t\t\t\t\t\t\treturn returnable(true);\n\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\t\t\t// Checks for valid closing quotes are complete (escaped quotes or quote followed by EOF/delimiter/newline) -- assume these quotes are part of an invalid text string\n\t\t\t\t\t\t\t\terrors.push({\n\t\t\t\t\t\t\t\t\ttype: 'Quotes',\n\t\t\t\t\t\t\t\t\tcode: 'InvalidQuotes',\n\t\t\t\t\t\t\t\t\tmessage: 'Trailing quote on quoted field is malformed',\n\t\t\t\t\t\t\t\t\trow: data.length,\t// row has yet to be inserted\n\t\t\t\t\t\t\t\t\tindex: cursor\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tquoteSearch++;\n\t\t\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Comment found at start of new line\n\t\t\t\t\t\tif (comments && row.length === 0 && input.substr(cursor, commentsLen) === comments)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (nextNewline === -1)\t// Comment ends at EOF\n\t\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t\t\tcursor = nextNewline + newlineLen;\n\t\t\t\t\t\t\tnextNewline = input.indexOf(newline, cursor);\n\t\t\t\t\t\t\tnextDelim = input.indexOf(delim, cursor);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Next delimiter comes before next newline, so we've reached end of field\n\t\t\t\t\t\tif (nextDelim !== -1 && (nextDelim < nextNewline || nextNewline === -1))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trow.push(input.substring(cursor, nextDelim));\n\t\t\t\t\t\t\tcursor = nextDelim + delimLen;\n\t\t\t\t\t\t\tnextDelim = input.indexOf(delim, cursor);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// End of row\n\t\t\t\t\t\tif (nextNewline !== -1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trow.push(input.substring(cursor, nextNewline));\n\t\t\t\t\t\t\tsaveRow(nextNewline + newlineLen);\n\n\t\t\t\t\t\t\tif (stepIsFunction)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdoStep();\n\t\t\t\t\t\t\t\tif (aborted)\n\t\t\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (preview && data.length >= preview)\n\t\t\t\t\t\t\t\treturn returnable(true);\n\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\n\t\t\t\t\treturn finish();\n\n\n\t\t\t\t\tfunction pushRow(row)\n\t\t\t\t\t{\n\t\t\t\t\t\tdata.push(row);\n\t\t\t\t\t\tlastCursor = cursor;\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n\t\t             * checks if there are extra spaces after closing quote and given index without any text\n\t\t             * if Yes, returns the number of spaces\n\t\t             */\n\t\t\t\t\tfunction extraSpaces(index) {\n\t\t\t\t\t\tvar spaceLength = 0;\n\t\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\t\tvar textBetweenClosingQuoteAndIndex = input.substring(quoteSearch + 1, index);\n\t\t\t\t\t\t\tif (textBetweenClosingQuoteAndIndex && textBetweenClosingQuoteAndIndex.trim() === '') {\n\t\t\t\t\t\t\t\tspaceLength = textBetweenClosingQuoteAndIndex.length;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn spaceLength;\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Appends the remaining input from cursor to the end into\n\t\t\t\t\t * row, saves the row, calls step, and returns the results.\n\t\t\t\t\t */\n\t\t\t\t\tfunction finish(value)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (ignoreLastRow)\n\t\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t\tif (typeof value === 'undefined')\n\t\t\t\t\t\t\tvalue = input.substr(cursor);\n\t\t\t\t\t\trow.push(value);\n\t\t\t\t\t\tcursor = inputLen;\t// important in case parsing is paused\n\t\t\t\t\t\tpushRow(row);\n\t\t\t\t\t\tif (stepIsFunction)\n\t\t\t\t\t\t\tdoStep();\n\t\t\t\t\t\treturn returnable();\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Appends the current row to the results. It sets the cursor\n\t\t\t\t\t * to newCursor and finds the nextNewline. The caller should\n\t\t\t\t\t * take care to execute user's step function and check for\n\t\t\t\t\t * preview and end parsing if necessary.\n\t\t\t\t\t */\n\t\t\t\t\tfunction saveRow(newCursor)\n\t\t\t\t\t{\n\t\t\t\t\t\tcursor = newCursor;\n\t\t\t\t\t\tpushRow(row);\n\t\t\t\t\t\trow = [];\n\t\t\t\t\t\tnextNewline = input.indexOf(newline, cursor);\n\t\t\t\t\t}\n\n\t\t\t\t\t/** Returns an object with the results, errors, and meta. */\n\t\t\t\t\tfunction returnable(stopped)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tdata: data,\n\t\t\t\t\t\t\terrors: errors,\n\t\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\t\tdelimiter: delim,\n\t\t\t\t\t\t\t\tlinebreak: newline,\n\t\t\t\t\t\t\t\taborted: aborted,\n\t\t\t\t\t\t\t\ttruncated: !!stopped,\n\t\t\t\t\t\t\t\tcursor: lastCursor + (baseIndex || 0)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\t/** Executes the user's step function and resets data & errors. */\n\t\t\t\t\tfunction doStep()\n\t\t\t\t\t{\n\t\t\t\t\t\tstep(returnable());\n\t\t\t\t\t\tdata = [];\n\t\t\t\t\t\terrors = [];\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t/** Sets the abort flag */\n\t\t\t\tthis.abort = function()\n\t\t\t\t{\n\t\t\t\t\taborted = true;\n\t\t\t\t};\n\n\t\t\t\t/** Gets the cursor position */\n\t\t\t\tthis.getCharIndex = function()\n\t\t\t\t{\n\t\t\t\t\treturn cursor;\n\t\t\t\t};\n\t\t\t}\n\n\n\t\t\t// If you need to load Papa Parse asynchronously and you also need worker threads, hard-code\n\t\t\t// the script path here. See: https://github.com/mholt/PapaParse/issues/87#issuecomment-57885358\n\t\t\tfunction getScriptPath()\n\t\t\t{\n\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\treturn scripts.length ? scripts[scripts.length - 1].src : '';\n\t\t\t}\n\n\t\t\tfunction newWorker()\n\t\t\t{\n\t\t\t\tif (!Papa.WORKERS_SUPPORTED)\n\t\t\t\t\treturn false;\n\t\t\t\tif (!LOADED_SYNC && Papa.SCRIPT_PATH === null)\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'Script path cannot be determined automatically when Papa Parse is loaded asynchronously. ' +\n\t\t\t\t\t\t'You need to set Papa.SCRIPT_PATH manually.'\n\t\t\t\t\t);\n\t\t\t\tvar workerUrl = Papa.SCRIPT_PATH || AUTO_SCRIPT_PATH;\n\t\t\t\t// Append 'papaworker' to the search string to tell papaparse that this is our worker.\n\t\t\t\tworkerUrl += (workerUrl.indexOf('?') !== -1 ? '&' : '?') + 'papaworker';\n\t\t\t\tvar w = new global.Worker(workerUrl);\n\t\t\t\tw.onmessage = mainThreadReceivedMessage;\n\t\t\t\tw.id = workerIdCounter++;\n\t\t\t\tworkers[w.id] = w;\n\t\t\t\treturn w;\n\t\t\t}\n\n\t\t\t/** Callback when main thread receives a message */\n\t\t\tfunction mainThreadReceivedMessage(e)\n\t\t\t{\n\t\t\t\tvar msg = e.data;\n\t\t\t\tvar worker = workers[msg.workerId];\n\t\t\t\tvar aborted = false;\n\n\t\t\t\tif (msg.error)\n\t\t\t\t\tworker.userError(msg.error, msg.file);\n\t\t\t\telse if (msg.results && msg.results.data)\n\t\t\t\t{\n\t\t\t\t\tvar abort = function() {\n\t\t\t\t\t\taborted = true;\n\t\t\t\t\t\tcompleteWorker(msg.workerId, { data: [], errors: [], meta: { aborted: true } });\n\t\t\t\t\t};\n\n\t\t\t\t\tvar handle = {\n\t\t\t\t\t\tabort: abort,\n\t\t\t\t\t\tpause: notImplemented,\n\t\t\t\t\t\tresume: notImplemented\n\t\t\t\t\t};\n\n\t\t\t\t\tif (isFunction(worker.userStep))\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (var i = 0; i < msg.results.data.length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tworker.userStep({\n\t\t\t\t\t\t\t\tdata: [msg.results.data[i]],\n\t\t\t\t\t\t\t\terrors: msg.results.errors,\n\t\t\t\t\t\t\t\tmeta: msg.results.meta\n\t\t\t\t\t\t\t}, handle);\n\t\t\t\t\t\t\tif (aborted)\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdelete msg.results;\t// free memory ASAP\n\t\t\t\t\t}\n\t\t\t\t\telse if (isFunction(worker.userChunk))\n\t\t\t\t\t{\n\t\t\t\t\t\tworker.userChunk(msg.results, handle, msg.file);\n\t\t\t\t\t\tdelete msg.results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (msg.finished && !aborted)\n\t\t\t\t\tcompleteWorker(msg.workerId, msg.results);\n\t\t\t}\n\n\t\t\tfunction completeWorker(workerId, results) {\n\t\t\t\tvar worker = workers[workerId];\n\t\t\t\tif (isFunction(worker.userComplete))\n\t\t\t\t\tworker.userComplete(results);\n\t\t\t\tworker.terminate();\n\t\t\t\tdelete workers[workerId];\n\t\t\t}\n\n\t\t\tfunction notImplemented() {\n\t\t\t\tthrow 'Not implemented.';\n\t\t\t}\n\n\t\t\t/** Callback when worker thread receives a message */\n\t\t\tfunction workerThreadReceivedMessage(e)\n\t\t\t{\n\t\t\t\tvar msg = e.data;\n\n\t\t\t\tif (typeof Papa.WORKER_ID === 'undefined' && msg)\n\t\t\t\t\tPapa.WORKER_ID = msg.workerId;\n\n\t\t\t\tif (typeof msg.input === 'string')\n\t\t\t\t{\n\t\t\t\t\tglobal.postMessage({\n\t\t\t\t\t\tworkerId: Papa.WORKER_ID,\n\t\t\t\t\t\tresults: Papa.parse(msg.input, msg.config),\n\t\t\t\t\t\tfinished: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse if ((global.File && msg.input instanceof File) || msg.input instanceof Object)\t// thank you, Safari (see issue #106)\n\t\t\t\t{\n\t\t\t\t\tvar results = Papa.parse(msg.input, msg.config);\n\t\t\t\t\tif (results)\n\t\t\t\t\t\tglobal.postMessage({\n\t\t\t\t\t\t\tworkerId: Papa.WORKER_ID,\n\t\t\t\t\t\t\tresults: results,\n\t\t\t\t\t\t\tfinished: true\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/** Makes a deep copy of an array or object (mostly) */\n\t\t\tfunction copy(obj)\n\t\t\t{\n\t\t\t\tif (typeof obj !== 'object')\n\t\t\t\t\treturn obj;\n\t\t\t\tvar cpy = obj instanceof Array ? [] : {};\n\t\t\t\tfor (var key in obj)\n\t\t\t\t\tcpy[key] = copy(obj[key]);\n\t\t\t\treturn cpy;\n\t\t\t}\n\n\t\t\tfunction bindFunction(f, self)\n\t\t\t{\n\t\t\t\treturn function() { f.apply(self, arguments); };\n\t\t\t}\n\n\t\t\tfunction isFunction(func)\n\t\t\t{\n\t\t\t\treturn typeof func === 'function';\n\t\t\t}\n\n\t\t\treturn Papa;\n\t\t})); \n\t} (papaparse$1));\n\treturn papaparse$1.exports;\n}\n\nvar papaparseExports = requirePapaparse();\nvar Mama = /*@__PURE__*/getDefaultExportFromCjs(papaparseExports);\n\nvar __defProp$y = Object.defineProperty;\nvar __getOwnPropDesc$A = Object.getOwnPropertyDescriptor;\nvar __decorateClass$A = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$A(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$y(target, key, result);\n  return result;\n};\nlet DhTableOld = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.sortable = false;\n    this.positionable = false;\n    this.manipulable = false;\n    this.notAddRow = false;\n    this.notCloneRow = false;\n    this.notRemoveRow = false;\n    this.editable = false;\n    this.notSelectable = false;\n    this.withCheckbox = false;\n    this.generalFilter = false;\n    this.activeFilter = false;\n    this.filterLabel = \"search\";\n    this.lineHeight = 36;\n    this.activeFilterLabel = \"hide inactive rows\";\n    this.downloadable = false;\n    this.uploadable = false;\n    this.encoding = \"65001\";\n    this.selectHeaderValue = \"selection\";\n    this.addRowTitle = \"add row\";\n    this.cloneRowTitle = \"clone row\";\n    this.removeRowTitle = \"remove row\";\n    this.rowPositionUpTitle = \"move row up\";\n    this.rowPositionDownTitle = \"move row down\";\n    this.checkAllRowsTitle = \"select all rows\";\n    this.offsetY = \"0px\";\n    this.columnWidths = [];\n    this.theTableObject = {\n      header: [\n        {\n          title: \"\",\n          key: \"\",\n          type: \"\",\n          attributes: [],\n          defaultWidth: \"\"\n        }\n      ],\n      rows: []\n    };\n    this.defaultWidth = \"200px\";\n    this.useSingleSelect = false;\n    this.timer = 0;\n    this.delay = 200;\n    this.prevent = false;\n    this.filteredRows = [];\n    this.filterRules = [];\n    this.rowTemplate = null;\n    this.headerRowTemplate = null;\n    this.visibleNodes = [];\n    this.firstShiftPressedElementId = \"\";\n    this.filterValue = \"\";\n    this.isEdited = false;\n    this.isResizing = false;\n    this.dateOptions = { year: \"numeric\", month: \"2-digit\", day: \"2-digit\" };\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-table-old\")) {\n      this.setAttribute(\"dh-table-old\", \"\");\n    }\n  }\n  firstUpdated() {\n    requestAnimationFrame(() => this.syncHeaderWithScrollbarGutter());\n    new ResizeObserver(() => this.syncHeaderWithScrollbarGutter()).observe(this);\n  }\n  syncHeaderWithScrollbarGutter() {\n    const scrollContainer = this.shadowRoot?.querySelector(\"#scroll-container\");\n    if (!scrollContainer || !this.headerContainer?.parentElement) {\n      return;\n    }\n    const wrapper = this.headerContainer.parentElement;\n    if (wrapper.clientWidth === 0) {\n      return;\n    }\n    const gutter = Math.max(0, wrapper.clientWidth - scrollContainer.clientWidth);\n    this.style.setProperty(\"--_header-gutter\", `${gutter}px`);\n  }\n  set tableObject(data) {\n    this.theTableObject = this.validateObject(data);\n    this.filteredRows = data.rows;\n    this.filterRows();\n  }\n  render() {\n    const savedWidths = JSON.parse(localStorage.getItem(`columnWidths_${this.getAttribute(\"localStorageKey\")}`) || \"{}\");\n    const expectedLength = 1 + this.theTableObject.header.length;\n    if (this.columnWidths.length !== expectedLength) {\n      this.columnWidths = this.buildColumnWidths(savedWidths);\n    }\n    return html`\n      <dh-dimmer id=\"table-dimmer\" class=\"hidden\"></dh-dimmer>\n      <div id=\"manipulation-container\" part=\"header\">${this.renderManipulationElements()}</div>\n      <div id=\"horizontal-scroll-wrapper\">\n        <div\n          id=\"header-container\"\n          class=\"th\"\n          @mouseup=${this.sortable ? this.clickHeader : null}\n          @resize=\"${this.resizeBodyCells}\"\n          @resizeStop=\"${this.stopResizing}\"\n        >\n          ${this.renderColgroup()}\n          <slot id=\"table-head\" name=\"table-head\"></slot>\n          ${guard(\n      [this.theTableObject.header[0].title],\n      () => this.headerRowTemplate ? this.headerRowTemplate(this.theTableObject.header) : this.renderTableHeaderRow(savedWidths)\n    )}\n        </div>\n        <div id=\"scroll-container\" part=\"scroll\" @scroll=\"${this.updateScrollView}\" @cellIsEdit=\"${this.filterRows}\">\n          <div id=\"table-container\" part=\"content\" style=\"height: ${this.getTotalContentHeight()}\">\n            <div class=\"table\" style=\"transform: translateY(${this.offsetY})\">\n              ${this.renderColgroup()}\n              <div id=\"tb\" class=\"tb\" @click=\"${this.onClickEvent}\" @dblclick=\"${this.dblclick}\">\n                <slot id=\"table-body\" name=\"table-body\"></slot>\n                ${this.visibleNodes ? this.visibleNodes.map((row) => {\n      if (this.rowTemplate) {\n        return html`${this.rowTemplate(row)}`;\n      } else {\n        if (!row.id) {\n          row.id = `${Math.floor(Math.random() * 1e6)}${Math.floor(Math.random() * 1e6)}${Math.floor(\n            Math.random() * 1e6\n          )}`;\n        }\n        if (row.isSelected == void 0) {\n          row.isSelected = false;\n        }\n        return this.renderTableRow(row, savedWidths);\n      }\n    }) : null}\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    `;\n  }\n  renderManipulationElements() {\n    return html`<dh-button\n        id=\"check-all-rows\"\n        class=\"${this.manipulable && this.withCheckbox && !this.notSelectable ? \"button\" : \"hidden\"}\"\n        @click=\"${this.checkAllRows}\"\n        title=\"${this.checkAllRowsTitle}\"\n        variant=\"outlined\"\n        icon-button\n        exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n        ><div slot=\"img\" class=\"fv-icon-check\"></div\n      ></dh-button>\n      <dh-button\n        id=\"add-row\"\n        class=\"${this.manipulable && !this.notAddRow ? \"button\" : \"hidden\"}\"\n        @click=\"${this.addNewRow}\"\n        title=\"${this.addRowTitle}\"\n        variant=\"outlined\"\n        icon-button\n        exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n        ><div slot=\"img\" class=\"fv-icon-plus\"></div\n      ></dh-button>\n      <dh-button\n        id=\"clone-row\"\n        class=\"${this.manipulable && !this.notCloneRow ? \"button\" : \"hidden\"}\"\n        @click=\"${this.cloneRow}\"\n        title=\"${this.cloneRowTitle}\"\n        variant=\"outlined\"\n        icon-button\n        exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n        ><div slot=\"img\" class=\"fv-icon-content-copy\"></div\n      ></dh-button>\n      <dh-button\n        id=\"remove-row\"\n        class=\"${this.manipulable && !this.notRemoveRow ? \"button\" : \"hidden\"}\"\n        @click=\"${this.removeRow}\"\n        title=\"${this.removeRowTitle}\"\n        variant=\"outlined\"\n        icon-button\n        exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n        ><div slot=\"img\" class=\"fv-icon-delete\"></div\n      ></dh-button>\n      <dh-button\n        id=\"export-button\"\n        class=\"${this.manipulable && this.downloadable ? \"button\" : \"hidden\"}\"\n        @click=\"${this.exportTableAsCsv}\"\n        title=\"download\"\n        variant=\"outlined\"\n        icon-button\n        exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n        ><div slot=\"img\" class=\"fv-icon-download\"></div\n      ></dh-button>\n      <dh-button\n        id=\"import-button\"\n        class=\"${this.manipulable && this.uploadable ? \"button\" : \"hidden\"}\"\n        @click=\"${this.openUploadFileDialog}\"\n        title=\"upload\"\n        variant=\"outlined\"\n        icon-button\n        exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n        ><div slot=\"img\" class=\"fv-icon-upload\"></div\n      ></dh-button>\n      <dh-button\n        id=\"position-up\"\n        class=\"${this.positionable ? \"button\" : \"hidden\"}\"\n        @click=\"${this.positionUp}\"\n        title=\"${this.rowPositionUpTitle}\"\n        variant=\"outlined\"\n        icon-button\n        exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n        ><div slot=\"img\" class=\"fv-icon-arrow-down-2\" style=\"transform: rotate(180deg)\"></div\n      ></dh-button>\n      <dh-button\n        id=\"position-down\"\n        class=\"${this.positionable ? \"button\" : \"hidden\"}\"\n        @click=\"${this.positionDown}\"\n        title=\"${this.rowPositionDownTitle}\"\n        variant=\"outlined\"\n        icon-button\n        exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n        ><div slot=\"img\" class=\"fv-icon-arrow-down-2\"></div\n      ></dh-button>\n      <input id=\"upload-input\" type=\"file\" accept=\".txt, .csv\" hidden @click=\"${this.resetValue}\" @change=\"${this.readFile}\"\"/>\n      <div id=\"general-filter-container\" class=\"${this.generalFilter ? \"flex-row\" : \"flex-row hidden\"}\" @input=\"${this.filterText}\">\n        <dh-input\n          id=\"filter-input\"\n          variant=\"classic\"\n          placeholder=\"${this.filterLabel}\"\n          exportparts=\"root: dh-filter-root, input: dh-filter-input, label: dh-filter-label, supporting-text: dh-filter-supporting-text\"\n        ></dh-input>\n      </div>\n      <div id=\"active-filter-container\" class=\"${this.activeFilter ? \"flex-row\" : \"flex-row hidden\"}\" @isChange=\"${this.filterRows}\">\n        <dh-checkbox id=\"active-filter-input\" type=\"checkbox\" exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"></dh-checkbox>\n        <span>${this.activeFilterLabel}</span>\n      </div>`;\n  }\n  renderTableHeaderRow(savedWidths) {\n    return html`<dh-table-row class=\"head row\">\n        ${this.selectHeaderValue}\n      </dh-table-head-cell>\n      ${this.theTableObject.header ? this.theTableObject.header.map((cell, index) => {\n      return html`<dh-table-head-cell\n                class=\"${this.sortable ? \"unsorted\" : \"\"}\"\n                type=\"${cell.type}\"\n                key=\"${cell.key}\"\n                ?useStandard=${this.useStandard(cell.attributes)}\n                sorting=\"${this.sortable ? \"unsorted\" : \"\"}\"\n                ?notSortable=\"${cell.attributes.includes(\"notSortable\")}\"\n              >\n                ${cell.title}\n              </dh-table-head-cell>`;\n    }) : null}\n    </dh-table-row>`;\n  }\n  renderTableRow(row, savedWidths) {\n    return html`\n      <dh-table-row\n        class=\"${row.isSelected ? \"row body selected\" : \"row body\"}\"\n        id=\"${row.id}\"\n        ?notDeletable=\"${row.notDeletable}\"\n        ?notEditable=\"${row.notEditable}\"\n        ?notCloneable=\"${row.notCloneable}\"\n      >\n          <dh-checkbox ?checked=${row.isSelected} exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"></dh-checkbox>\n        </dh-table-body-cell>\n        ${row ? row.map(\n      (cell, index) => html`\n                    ${choose(this.theTableObject.header[index]?.type, [\n        [\"selectbox\", () => this.renderSelectboxCell(cell, index, savedWidths)],\n        [\"checkbox\", () => this.renderCheckboxCell(cell, index, savedWidths)],\n        [\"text\", () => this.renderTextCell(cell, index, savedWidths)],\n        [\"number\", () => this.renderNumberCell(cell, index, savedWidths)],\n        [\"date\", () => this.renderDateCell(cell, index, savedWidths)],\n        [\"dropdown\", () => this.renderDropdownCell(cell, index, savedWidths)],\n        [\"img\", () => this.renderImgCell(cell, index, savedWidths)],\n        [\"button\", () => this.renderButtonCell(cell, index, savedWidths)]\n      ])}\n                  `\n    ) : null}\n      </dh-table-row>\n    `;\n  }\n  renderSelectboxCell(cell, index, savedWidths) {\n    return html`\n      <dh-table-body-cell type=\"selectbox\">\n        <dh-checkbox\n          index=\"${index}\"\n          ?checked=${cell.value ? !!parseInt(cell.value) : false}\n          ?disabled=\"${this.isNotEditable(cell.attributes) || !this.editable}\"\n          exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"\n        ></dh-checkbox>\n      </dh-table-body-cell>\n    `;\n  }\n  renderCheckboxCell(cell, index, savedWidths) {\n    return html`\n      <dh-table-body-cell\n        index=\"${index}\"\n        type=\"checkbox\"\n        ?checked=${typeof cell.value === \"boolean\" ? cell.value : cell.value ? !!parseInt(cell.value) : false}\n        ?disabled=\"${this.isNotEditable(cell.attributes) || !this.editable}\"\n        exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text, dh-checkbox-root, dh-checkbox-input\"\n      >\n        <dh-checkbox\n          index=\"${index}\"\n          ?checked=${typeof cell.value === \"boolean\" ? cell.value : cell.value ? !!parseInt(cell.value) : false}\n          ?disabled=\"${this.isNotEditable(cell.attributes) || !this.editable}\"\n          exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"\n        ></dh-checkbox>\n      </dh-table-body-cell>\n    `;\n  }\n  renderTextCell(cell, index, savedWidths) {\n    return html`\n      <dh-table-body-cell\n        index=\"${index}\"\n        type=\"text\"\n        ?notEditable=\"${this.isNotEditable(cell.attributes)}\"\n        exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n        >${cell.value}</dh-table-body-cell\n      >\n    `;\n  }\n  renderNumberCell(cell, index, savedWidths) {\n    return html`\n      <dh-table-body-cell\n        index=\"${index}\"\n        type=\"number\"\n        ?notEditable=\"${this.isNotEditable(cell.attributes)}\"\n        exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n        >${cell.value}</dh-table-body-cell\n      >\n    `;\n  }\n  renderDateCell(cell, index, savedWidths) {\n    return html`\n      <dh-table-body-cell\n        index=\"${index}\"\n        type=\"date\"\n        ?notEditable=\"${this.isNotEditable(cell.attributes)}\"\n        .valueAsDate=\"${cell.value ? new Intl.DateTimeFormat(navigator.language, this.dateOptions).format(new Date(cell.value)) : void 0}\"\n        exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n        >${cell.value ? new Intl.DateTimeFormat(navigator.language, this.dateOptions).format(new Date(cell.value)) : \"\"}</dh-table-body-cell\n      >\n    `;\n  }\n  renderDropdownCell(cell, index, savedWidths) {\n    return html`\n      <dh-table-body-cell\n        index=\"${index}\"\n        type=\"dropdown\"\n        ?notEditable=\"${this.isNotEditable(cell.attributes)}\"\n        exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n      >\n        <dh-select\n          ?withoutEmptyDefault=\"${this.theTableObject.header[index].attributes.indexOf(\"withoutEmptyDefault\") > -1}\"\n          ?disabled=\"${this.isNotEditable(cell.attributes)}\"\n          .selectOptions=\"${cell.objectValues}\"\n          exportparts=\"root: dh-select-root, trigger: dh-select-trigger, label: dh-select-label, icon: dh-select-icon, menu: dh-select-menu, input: dh-select-input, content: dh-select-content, item: dh-select-item, selected: dh-select-selected\"\n        >\n        </dh-select>\n      </dh-table-body-cell>\n    `;\n  }\n  renderImgCell(cell, index, savedWidths) {\n    return html`\n      <dh-table-body-cell type=\"img\" ?notEditable=\"${this.isNotEditable(cell.attributes)}\">\n        <img class=\"img\" index=\"${index}\" src=\"${cell.value}\" />\n      </dh-table-body-cell>\n    `;\n  }\n  renderButtonCell(cell, index, savedWidths) {\n    return html`\n      <dh-table-body-cell type=\"img\" ?notEditable=\"${this.isNotEditable(cell.attributes)}\">\n        <dh-button\n          class=\"img\"\n          index=\"${index}\"\n          variant=\"outlined\"\n          .buttonText=\"${cell.value}\"\n          exportparts=\"root: dh-button-root, label: dh-button-label, icon: dh-button-icon\"\n        ></dh-button>\n      </dh-table-body-cell>\n    `;\n  }\n  getTableObject() {\n    return this.theTableObject;\n  }\n  validateObject(data) {\n    data.header.forEach((head) => {\n      if (head.attributes === void 0) {\n        head.attributes = [];\n      }\n      if (head.defaultWidth === void 0) {\n        head.defaultWidth = \"\";\n      }\n    });\n    data.rows.forEach((row) => {\n      row.forEach((cell) => {\n        if (cell.attributes === void 0) {\n          cell.attributes = [];\n        }\n        if (cell.objectValues === void 0) {\n          cell.objectValues = [];\n        }\n      });\n    });\n    return data;\n  }\n  getUseStandard(index) {\n    return Array.from(this.getHeaderRow().children)[index].hasAttribute(\"useStandard\");\n  }\n  onClickEvent(event2) {\n    const newEvent = this.cloneEvent(event2);\n    const mouseEvent = event2;\n    const isCtrlPressed = mouseEvent.ctrlKey;\n    const isShiftPressed = mouseEvent.shiftKey;\n    const target = event2.target.parentElement;\n    const tagName = target?.tagName;\n    this.timer = window.setTimeout(() => {\n      if (!this.prevent) {\n        if (target?.getAttribute(\"type\") != \"dropdown\") {\n          if ((isCtrlPressed || tagName?.toLowerCase() == \"dh-table-body-cell-old\" || tagName?.toLowerCase() == \"dh-table-row-old\") && !isShiftPressed) {\n            this.editingCellContent(newEvent);\n            if (!this.isEdited) {\n              this.selectRow(newEvent);\n            }\n            this.isEdited = false;\n          } else if (isShiftPressed) {\n            this.multiSelectRow(newEvent);\n          }\n        }\n      }\n    }, this.delay);\n    this.prevent = false;\n  }\n  cloneEvent(event2) {\n    const clone = {};\n    for (const p in event2) {\n      const d = Object.getOwnPropertyDescriptor(event2, p);\n      if (d && (!d.writable || !d.configurable || !d.enumerable || d.get || d.set)) {\n        Object.defineProperty(clone, p, d);\n      } else {\n        clone[p] = event2[p];\n      }\n    }\n    Object.setPrototypeOf(clone, event2);\n    return clone;\n  }\n  dblclick(event2) {\n    clearTimeout(this.timer);\n    this.prevent = true;\n    const target = event2.target.parentElement;\n    const tagName = target?.tagName;\n    if (tagName?.toLowerCase() == \"dh-table-body-cell-old\") {\n      const row = target?.parentElement;\n      this.dblRowClick.dispatch(row);\n    } else if (tagName?.toLowerCase() == \"dh-table-row-old\") {\n      this.dblRowClick.dispatch(target);\n    }\n  }\n  resizeBodyCells(event2) {\n    this.isResizing = true;\n    const { width, headerKey } = event2.detail;\n    const headerRow = this.getHeaderRow();\n    const cellIndex = Array.from(headerRow.children).findIndex((child) => child.getAttribute(\"key\") === headerKey);\n    if (cellIndex === -1) return;\n    const updated = [...this.columnWidths];\n    updated[cellIndex] = width;\n    this.columnWidths = updated;\n    const dataIndex = cellIndex - 1;\n    if (dataIndex >= 0) {\n      const savedWidths = JSON.parse(localStorage.getItem(`columnWidths_${this.getAttribute(\"localStorageKey\")}`) || \"{}\");\n      savedWidths[dataIndex] = width;\n      localStorage.setItem(`columnWidths_${this.getAttribute(\"localStorageKey\")}`, JSON.stringify(savedWidths));\n    }\n  }\n  stopResizing() {\n    this.isResizing = false;\n  }\n  buildColumnWidths(savedWidths) {\n    const widths = [];\n    widths.push(\"65px\");\n    this.theTableObject.header.forEach((cell, index) => {\n      widths.push(savedWidths[index] || cell.defaultWidth || this.defaultWidth);\n    });\n    return widths;\n  }\n  renderColgroup() {\n    return html`<colgroup>\n      ${this.columnWidths.map((w) => html`<col style=\"width:${w}\" />`)}\n    </colgroup>`;\n  }\n  //Methoden zum manipulieren von Reihen\n  addNewRow(event2) {\n    event2.stopPropagation();\n    const newRow = new TableRowArray();\n    newRow.isNewRow = true;\n    const currentMaxPosition = this.theTableObject.rows.reduce((row, currentRow) => Math.max(row, currentRow.position), 0);\n    newRow.position = currentMaxPosition + 1;\n    newRow.id = crypto.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;\n    for (let i = 0; i < this.theTableObject.header.length; i++) {\n      newRow.push({\n        value: \"\",\n        objectValues: [{ id: \"\", name: \"\", selected: \"\" }],\n        attributes: []\n      });\n    }\n    this.theTableObject.rows.push(newRow);\n    this.filteredRows.push(newRow);\n    this.updateScrollView();\n    this.addNewRowEvent.dispatch(newRow);\n  }\n  removeRow(event2) {\n    event2.stopPropagation();\n    let selectedRows = this.theTableObject.rows.filter((row) => row.isSelected);\n    const notDeletableRow = selectedRows.filter((row) => row.notDeletable);\n    selectedRows = selectedRows.filter((row) => !row.notDeletable);\n    notDeletableRow.forEach((row) => row.isSelected = false);\n    selectedRows.forEach((row) => {\n      const id = row.id;\n      const index = this.theTableObject.rows.findIndex((row2) => row2.id == id);\n      this.theTableObject.rows.splice(index, 1);\n      const filteredIndex = this.filteredRows.findIndex((row2) => row2.id == id);\n      if (filteredIndex > -1) {\n        this.filteredRows.splice(filteredIndex, 1);\n      }\n      this.removeRowEvent.dispatch(id);\n    });\n    this.removeRows.dispatch(selectedRows);\n    const checkAllRowsButton = this.checkAllRowsButton;\n    checkAllRowsButton.removeAttribute(\"checkedAll\");\n    checkAllRowsButton.classList.remove(\"checkedAll\");\n    this.theTableObject.rows.forEach((row) => row.isSelected = false);\n    this.checkAllRowsEvent.dispatch({ isChecked: false, rows: this.filteredRows });\n    this.updateScrollView();\n  }\n  cloneRow(event2) {\n    event2.stopPropagation();\n    let selectedRows = this.theTableObject.rows.filter((row) => row.isSelected);\n    const notCloneableRows = selectedRows.filter((row) => row.notCloneable);\n    selectedRows = selectedRows.filter((row) => !row.notCloneable);\n    notCloneableRows.forEach((row) => row.isSelected = false);\n    selectedRows.forEach((row) => {\n      const id = row.id;\n      const sameRow = this.getSameRow(id);\n      const index = this.theTableObject.rows.findIndex((row2) => row2.id == id);\n      if (sameRow) {\n        const clonedRow = sameRow.clone();\n        clonedRow.position = sameRow.position + 1;\n        let counter = 0;\n        for (let i = index + 1; i < this.theTableObject.rows.length; i++) {\n          this.theTableObject.rows[i].position = sameRow.position + 2 + counter;\n          counter++;\n        }\n        this.theTableObject.rows.splice(index + 1, 0, clonedRow);\n        const filteredIndex = this.filteredRows.findIndex((r) => r.id == id);\n        if (filteredIndex > -1) {\n          this.filteredRows.splice(filteredIndex + 1, 0, clonedRow);\n        }\n        this.clonedRowEvent.dispatch(this.theTableObject.rows);\n      }\n    });\n    const checkAllRowsButton = this.checkAllRowsButton;\n    checkAllRowsButton.removeAttribute(\"checkedAll\");\n    checkAllRowsButton.classList.remove(\"checkedAll\");\n    this.theTableObject.rows.forEach((row) => row.isSelected = false);\n    this.checkAllRowsEvent.dispatch({ isChecked: false, rows: this.filteredRows });\n    this.updateScrollView();\n  }\n  checkAllRows(event2) {\n    const checkAllRowsButton = this.checkAllRowsButton;\n    const isChecked = checkAllRowsButton.hasAttribute(\"checkedAll\");\n    if (isChecked) {\n      checkAllRowsButton.removeAttribute(\"checkedAll\");\n      checkAllRowsButton.classList.remove(\"checkedAll\");\n      this.filteredRows.forEach((row) => {\n        const selectedRow = this.theTableObject.rows.find((tableRow) => tableRow.id == row.id);\n        if (selectedRow) {\n          selectedRow.isSelected = false;\n        }\n      });\n    } else {\n      checkAllRowsButton.setAttribute(\"checkedAll\", \"\");\n      checkAllRowsButton.classList.add(\"checkedAll\");\n      this.filteredRows.forEach((row) => {\n        const selectedRow = this.theTableObject.rows.find((tableRow) => tableRow.id == row.id);\n        if (selectedRow) {\n          selectedRow.isSelected = true;\n        }\n      });\n    }\n    this.updateScrollView();\n    this.checkAllRowsEvent.dispatch({ isChecked: !isChecked, rows: this.filteredRows });\n  }\n  editingCellContent(event2) {\n    const mouseEvent = event2;\n    const isCtrlPressed = mouseEvent.ctrlKey;\n    if (!isCtrlPressed) {\n      let cell = event2.target;\n      if (cell.tagName.toLowerCase() == \"dh-table-row-old\") {\n        return;\n      }\n      if (cell.tagName.toLowerCase() != \"dh-table-body-cell-old\") {\n        const realCell = cell.closest(\"dh-table-body-cell-old\");\n        if (realCell) {\n          cell = realCell;\n        }\n      }\n      const targetParentRow = cell.closest(\"dh-table-row-old\");\n      if (cell) {\n        if (this.editable) {\n          if (!cell.hasAttribute(\"notEditable\")) {\n            if (!targetParentRow?.hasAttribute(\"notEditable\")) {\n              this.editingRowEvent.dispatch(targetParentRow);\n              if (cell.type != \"checkbox\" && cell.type != \"selectbox\" && cell.type != \"dropdown\") {\n                cell.setMode(\"edit\");\n                let cellValue = cell.innerText.trim();\n                if (!cellValue) {\n                  cellValue = cell.value;\n                }\n                cell.value = cellValue;\n                cell.setInputFocus();\n              }\n              if (cell.type != \"selectbox\") {\n                this.isEdited = true;\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n  //Methoden für die Sortierung\n  clickHeader(event2) {\n    if (this.isResizing) {\n      return;\n    }\n    if (this.theTableObject.rows.length <= 1) {\n      return;\n    }\n    const target = event2.target;\n    const key = target.getAttribute(\"key\");\n    const header = this.theTableObject.header.find((head) => head.key == key);\n    const isNotSortable = header?.attributes.some((attribute) => attribute == \"notSortable\");\n    if (isNotSortable) {\n      return;\n    }\n    if (header) {\n      let direction = \"asc\";\n      if (target.classList.contains(\"asc\")) {\n        direction = \"desc\";\n        target.classList.remove(\"asc\");\n      } else {\n        target.classList.add(\"asc\");\n      }\n      this.theTableObject.rows = this.sort(header, direction, this.theTableObject.rows);\n      this.sortedRows.dispatch(this.theTableObject);\n      this.toggleSortIconClasses(target, direction);\n      this.filterRows();\n    }\n  }\n  sort(header, direction, array) {\n    if (array.length <= 1) {\n      return array;\n    }\n    const type = header.type;\n    let pivotIndex = 0;\n    let pivot = array[pivotIndex];\n    let headerIndex = this.theTableObject.header.findIndex((head) => head.key == header.key);\n    let pivotValue = pivot[headerIndex].value;\n    let counter = 0;\n    do {\n      pivotIndex = Math.floor(Math.random() * array.length);\n      pivot = array[pivotIndex];\n      headerIndex = this.theTableObject.header.findIndex((head) => head.key == header.key);\n      pivotValue = pivot[headerIndex].value;\n      counter++;\n    } while (pivotValue == \"\" && counter <= 1e4);\n    const left = [];\n    const right = [];\n    const invalidDates = [];\n    for (let i = 0; i < array.length; i++) {\n      if (i == pivotIndex) {\n        continue;\n      }\n      let value = array[i][headerIndex].value;\n      if (type == \"number\") {\n        pivotValue = parseFloat(pivotValue);\n        if (isNaN(pivotValue)) {\n          pivotValue = 0;\n        }\n        value = parseFloat(value);\n        if (isNaN(value)) {\n          value = 0;\n        }\n      } else if (type == \"date\") {\n        pivotValue = new Date(pivotValue);\n        value = new Date(value);\n      } else if (type == \"text\") {\n        pivotValue = pivotValue?.toLowerCase();\n        value = value?.toLowerCase();\n      }\n      const isInvalidDate = value?.toString() == \"Invalid Date\";\n      if (type == \"date\" && isInvalidDate) {\n        if (direction == \"asc\") {\n          invalidDates.push(array[i]);\n        } else if (direction == \"desc\") {\n          invalidDates.push(array[i]);\n        }\n      } else {\n        if (direction == \"asc\") {\n          value < pivotValue ? left.push(array[i]) : right.push(array[i]);\n        } else if (direction == \"desc\") {\n          value > pivotValue ? left.push(array[i]) : right.push(array[i]);\n        }\n      }\n    }\n    if (type == \"date\" && direction == \"asc\") {\n      return invalidDates.concat(this.sort(header, direction, left), [pivot], this.sort(header, direction, right));\n    } else if (type == \"date\" && direction == \"desc\") {\n      return this.sort(header, direction, left).concat([pivot], this.sort(header, direction, right), invalidDates);\n    } else {\n      return this.sort(header, direction, left).concat([pivot], this.sort(header, direction, right));\n    }\n  }\n  toggleSortIconClasses(target, sortType) {\n    const parentElement = target.parentElement;\n    if (parentElement) {\n      const siblingElements = Array.from(parentElement.children);\n      siblingElements.forEach((sibling) => {\n        const isNotSortable = sibling.hasAttribute(\"notSortable\");\n        if (!isNotSortable) {\n          sibling.classList.remove(\"asc\", \"desc\");\n          sibling.classList.add(\"unsorted\");\n          sibling.setAttribute(\"sorting\", \"unsorted\");\n        }\n      });\n      if (sortType == \"asc\") {\n        target.classList.add(\"asc\");\n        target.classList.remove(\"unsorted\");\n        target.setAttribute(\"sorting\", \"asc\");\n      } else {\n        target.classList.add(\"desc\");\n        target.classList.remove(\"unsorted\");\n        target.setAttribute(\"sorting\", \"desc\");\n      }\n    }\n  }\n  //Hilfsmethoden\n  getSameRow(id) {\n    return this.theTableObject.rows.find((row) => row.id == id);\n  }\n  getSameRowIndex(id) {\n    return this.theTableObject.rows.findIndex((row) => row.id == id);\n  }\n  getSameRowBasedOnIndex(index) {\n    return this.theTableObject.rows[index];\n  }\n  getHeaderRow() {\n    let row = this.querySelector(\"dh-table-row-old[slot=table-head]\");\n    if (!row) {\n      row = this.renderRoot.querySelector(\"dh-table-row-old.head\");\n    }\n    if (!row) {\n      row = this.renderRoot.querySelector(\"div.th dh-table-row\");\n    }\n    return row;\n  }\n  getBodyRows() {\n    let rows = Array.from(this.querySelectorAll(\"dh-table-row-old[slot=table-body]\"));\n    if (rows.length == 0) {\n      rows = Array.from(this.renderRoot.querySelectorAll(\"dh-table-row-old.body\"));\n    }\n    if (rows.length == 0) {\n      rows = Array.from(this.renderRoot.querySelectorAll(\"div.tb dh-table-row\"));\n    }\n    return rows;\n  }\n  async addFilterRule(value, index) {\n    this.filterRules.push({ index, value });\n    await this.filterRows();\n  }\n  removeFilterRule(value, index) {\n    const removeIndex = this.filterRules.findIndex((rule) => rule.value == value && rule.index == index);\n    this.filterRules.splice(removeIndex, 1);\n    this.filterRows();\n  }\n  async filterText() {\n    this.removeFilterRule(this.filterValue, -1);\n    const value = this.filterInput.getInputValue().toLowerCase();\n    this.filterValue = value;\n    await this.addFilterRule(value, -1);\n    this.filterInput.focus();\n  }\n  async filterRows() {\n    const rows = this.theTableObject.rows.filter((row) => {\n      return this.filterRules.every((rule) => {\n        if (rule.index == -1) {\n          return row.some((cell) => cell.value?.toString().toLowerCase().includes(rule.value));\n        } else {\n          return row[rule.index].value == rule.value;\n        }\n      });\n    });\n    if (this.activeFilter) {\n      if (this.activeFilterInput?.getCheckboxIsChecked()) {\n        this.filteredRows = rows.filter((row) => {\n          return row.active;\n        });\n      } else {\n        this.filteredRows = rows;\n      }\n    } else {\n      this.filteredRows = rows;\n    }\n    this.updateScrollView();\n  }\n  isNotEditable(attributes) {\n    return attributes.indexOf(\"notEditable\") > -1;\n  }\n  useStandard(attributes) {\n    return attributes.indexOf(\"useStandard\") > -1;\n  }\n  getSelectedRows() {\n    let rows = Array.from(this.querySelectorAll(\"dh-table-row-old[slot=table-body].selected\"));\n    if (rows.length == 0) {\n      rows = Array.from(this.renderRoot.querySelectorAll(\"dh-table-row-old.selected\"));\n    }\n    return rows;\n  }\n  getRows() {\n    let rows = Array.from(this.querySelectorAll(\"dh-table-row-old[slot=table-body]\"));\n    if (rows.length == 0) {\n      rows = Array.from(this.renderRoot.querySelectorAll(\"dh-table-row-old\"));\n    }\n    return rows;\n  }\n  selectRow(event2) {\n    if (this.notSelectable) {\n      return;\n    }\n    const mouseEvent = event2;\n    const target = mouseEvent.target.parentElement;\n    const isCtrlPressed = mouseEvent?.ctrlKey;\n    let row;\n    if (target) {\n      const tagName = target.tagName;\n      if (tagName.toLowerCase() == \"dh-table-body-cell-old\") {\n        row = target?.parentElement;\n      } else {\n        row = target;\n      }\n      this.selected(row, isCtrlPressed, tagName);\n    }\n  }\n  async multiSelectRow(event2) {\n    if (this.notSelectable) {\n      return;\n    }\n    const target = event2.target.parentElement;\n    const tagName = target?.tagName;\n    let tableRow;\n    const mouseEvent = event2;\n    const isShiftPressed = mouseEvent.shiftKey;\n    if (tagName?.toLowerCase() == \"dh-table-body-cell-old\") {\n      tableRow = target?.parentElement;\n    } else {\n      tableRow = target;\n    }\n    if (isShiftPressed) {\n      if (!this.firstShiftPressedElementId) {\n        this.firstShiftPressedElementId = tableRow.id;\n      } else {\n        const firstIndex = this.theTableObject.rows.findIndex((row) => row.id == this.firstShiftPressedElementId);\n        const lastIndex = this.theTableObject.rows.findIndex((row) => row.id == tableRow.id);\n        let rangeSeries = [];\n        if (firstIndex < lastIndex) {\n          rangeSeries = this.theTableObject.rows.slice(firstIndex, lastIndex + 1);\n        } else {\n          rangeSeries = this.theTableObject.rows.slice(lastIndex, firstIndex + 1);\n        }\n        rangeSeries.forEach((row) => {\n          row.isSelected = true;\n        });\n        this.firstShiftPressedElementId = \"\";\n        await this.updateScrollView();\n        this.rowRangeIsSelected.dispatch({ dataRowRange: rangeSeries });\n      }\n    }\n  }\n  async selected(row, isCtrlOrShiftPressed, tagName) {\n    if (this.notSelectable) {\n      return;\n    }\n    const id = row.getAttribute(\"id\");\n    if (id) {\n      const sameRow = this.getSameRow(id);\n      if (id) {\n        if (!this.useSingleSelect) {\n          sameRow.isSelected = !sameRow.isSelected;\n          await this.updateScrollView();\n          this.anotherRowIsSelected.dispatch({ dataRow: sameRow });\n        } else {\n          this.theTableObject.rows.forEach((row2) => row2.isSelected = false);\n          sameRow.isSelected = !sameRow.isSelected;\n          await this.updateScrollView();\n          this.singleRowIsSelected.dispatch({ dataRow: sameRow });\n        }\n      }\n    }\n  }\n  async exportTableAsCsv() {\n    const keys = [];\n    let keyString = \"\";\n    let contentString = \"\";\n    this.theTableObject.header.forEach((head) => keys.push(head.key));\n    keys.push(\"sortIndex\");\n    for (let i = 0; i < keys.length; i++) {\n      const title = keys[i];\n      const halfCleanTitle = title.replace(\"\\\\\", \"\\\\\\\\\");\n      const cleanTitle = halfCleanTitle.replace('\"', '\\\\\"');\n      if (i == keys.length - 1) {\n        keyString = keyString + '\"' + cleanTitle + '\"\\r\\n';\n        contentString = keyString;\n      } else {\n        keyString = keyString + '\"' + cleanTitle + '\";';\n      }\n    }\n    for (let i = 0; i < this.theTableObject.rows.length; i++) {\n      let rowString = \"\";\n      for (let x = 0; x < this.theTableObject.rows[i].length; x++) {\n        const value = this.theTableObject.rows[i][x].value;\n        const halfCleanValue = value.replace(\"\\\\\", \"\\\\\\\\\");\n        const cleanValue = halfCleanValue.replace('\"', '\\\\\"');\n        if (x == this.theTableObject.rows[i].length - 2 && i + 1 < this.theTableObject.rows.length) {\n          rowString = rowString + '\"' + cleanValue + '\"\\r\\n';\n          contentString = contentString + rowString;\n        } else if (x == this.theTableObject.rows[i].length - 2 && i + 1 == this.theTableObject.rows[i].length) {\n          rowString = rowString + '\"' + cleanValue + '\"';\n          contentString = contentString + rowString;\n        } else {\n          rowString = rowString + '\"' + cleanValue + '\";';\n        }\n      }\n    }\n    try {\n      const stringBuffer = cptable$1.utils.encode(this.encoding, contentString);\n      const link = document.createElement(\"a\");\n      const file = new Blob([new Uint8Array(stringBuffer)], { type: \"text/plain\" });\n      link.href = URL.createObjectURL(file);\n      link.download = \"table.csv\";\n      link.click();\n      URL.revokeObjectURL(link.href);\n    } catch (e) {\n      console.error(e);\n      this.exportError.dispatch(e);\n    }\n  }\n  openUploadFileDialog() {\n    this.uploadInput.click();\n  }\n  async readFile() {\n    const files = this.uploadInput.files;\n    let file;\n    if (files) {\n      file = files[0];\n    }\n    const fileReader = new FileReader();\n    if (file) {\n      fileReader.readAsArrayBuffer(file);\n      const buffer = await new Promise((resolve) => fileReader.addEventListener(\"load\", () => resolve(fileReader.result)));\n      this.importTableAsCsv(buffer);\n    }\n  }\n  importTableAsCsv(buffer) {\n    try {\n      const data = cptable$1.utils.decode(this.encoding, new Uint8Array(buffer));\n      const importObject = Mama.parse(data, { delimiter: \";\" });\n      const importData = { rows: importObject.data.slice(1), header: importObject.data.slice(0, 1)[0] };\n      this.importTableData.dispatch(importData);\n    } catch (e) {\n      console.error(e);\n      this.importError.dispatch(e);\n    }\n  }\n  positionUp(event2) {\n    const selectedRows = this.getSelectedRows();\n    if (selectedRows.length > 1) {\n      this.positionFail.dispatch({ error: \"Too many rows selected\" });\n      return;\n    }\n    const minPosition = this.theTableObject.rows.reduce((row, currentRow) => Math.min(row, currentRow.position), 1e23);\n    const sameTableRow = this.theTableObject.rows.find((row) => row.id == selectedRows[0].id);\n    if (sameTableRow?.position == minPosition) {\n      this.positionFail.dispatch({ error: \"Row is in first position\" });\n      return;\n    }\n    if (sameTableRow) {\n      const selectedPosition = sameTableRow.position;\n      const lowerPositionArray = this.theTableObject.rows.filter((row) => row.position < selectedPosition);\n      const lowerPositions = [];\n      lowerPositionArray.forEach((row) => lowerPositions.push(row.position));\n      const closest = Math.max(...lowerPositions);\n      const closestTableRow = this.theTableObject.rows.find((row) => row.position == closest);\n      if (closestTableRow) {\n        sameTableRow.position = closest;\n        closestTableRow.position = selectedPosition;\n        const allPositions = [];\n        this.theTableObject.rows.forEach((row) => allPositions.push(row.position));\n        allPositions.sort();\n        for (let i = 0; i < allPositions.length; i++) {\n          const sameRow = this.theTableObject.rows.find((row) => row.position == allPositions[i]);\n          if (sameRow) {\n            sameRow.position = i + 1;\n          }\n        }\n        this.theTableObject.rows.sort((row, currentRow) => row.position - currentRow.position);\n        this.positionUpEvent.dispatch(this.theTableObject);\n      }\n    }\n  }\n  positionDown(event2) {\n    const selectedRows = this.getSelectedRows();\n    if (selectedRows.length > 1) {\n      this.positionFail.dispatch({ error: \"Too many rows selected\" });\n      return;\n    }\n    const maxPosition = this.theTableObject.rows.reduce((row, currentRow) => Math.max(row, currentRow.position), 0);\n    const sameTableRow = this.theTableObject.rows.find((row) => row.id == selectedRows[0].id);\n    if (sameTableRow?.position == maxPosition) {\n      this.positionFail.dispatch({ error: \"Row is in last position\" });\n      return;\n    }\n    if (sameTableRow) {\n      const selectedPosition = sameTableRow.position;\n      const higherPositionArray = this.theTableObject.rows.filter((row) => row.position > selectedPosition);\n      const higherPositions = [];\n      higherPositionArray.forEach((row) => higherPositions.push(row.position));\n      const closest = Math.min(...higherPositions);\n      const closestTableRow = this.theTableObject.rows.find((row) => row.position == closest);\n      if (closestTableRow) {\n        sameTableRow.position = closest;\n        closestTableRow.position = selectedPosition;\n        const allPositions = [];\n        this.theTableObject.rows.forEach((row) => allPositions.push(row.position));\n        allPositions.sort();\n        for (let i = 0; i < allPositions.length; i++) {\n          const sameRow = this.theTableObject.rows.find((row) => row.position == allPositions[i]);\n          if (sameRow) {\n            sameRow.position = i + 1;\n          }\n        }\n        this.theTableObject.rows.sort((row, currentRow) => row.position - currentRow.position);\n        this.positionDownEvent.dispatch(this.theTableObject);\n      }\n    }\n  }\n  async updateScrollView() {\n    await this.scrollContainer;\n    this.blur();\n    this.offsetY = (await this.getOffset()).toString() + \"px\";\n    const visibleNodesCount = await this.getVisibleNodesCount();\n    const startNode = await this.getStartNode();\n    this.visibleNodes = this.setVisibleNodes(visibleNodesCount, startNode);\n  }\n  getTotalContentHeight() {\n    return (this.filteredRows.length * (this.lineHeight + 1)).toString() + \"px\";\n  }\n  async getOffset() {\n    const startNode = await this.getStartNode();\n    return startNode * this.lineHeight;\n  }\n  async getVisibleNodesCount() {\n    const startNode = await this.getStartNode();\n    const scrollContainer = await this.scrollContainer;\n    let height = scrollContainer.offsetHeight;\n    if (height == 0) {\n      height = window.innerHeight;\n    }\n    let visibleNodeCount = Math.ceil(height / this.lineHeight + 2 * 5);\n    visibleNodeCount = Math.min(this.filteredRows.length - startNode, visibleNodeCount);\n    return visibleNodeCount;\n  }\n  async getStartNode() {\n    const scrollContainer = await this.scrollContainer;\n    const startNode = Math.floor(scrollContainer.scrollTop / this.lineHeight - 5);\n    return Math.max(0, startNode);\n  }\n  setVisibleNodes(visibleNodeCount, startNode) {\n    return this.filteredRows.slice(startNode, startNode + visibleNodeCount + 1);\n  }\n  resetValue(event2) {\n    const target = event2.target;\n    if (target) {\n      target.value = \"\";\n    }\n  }\n};\nDhTableOld.styles = [\n  css`\n      ${unsafeCSS(style$A)}\n    `\n];\n__decorateClass$A([\n  query(\"#check-all-rows\")\n], DhTableOld.prototype, \"checkAllRowsButton\", 2);\n__decorateClass$A([\n  query(\"#upload-input\")\n], DhTableOld.prototype, \"uploadInput\", 2);\n__decorateClass$A([\n  query(\"#filter-input\")\n], DhTableOld.prototype, \"filterInput\", 2);\n__decorateClass$A([\n  query(\"#active-filter-input\")\n], DhTableOld.prototype, \"activeFilterInput\", 2);\n__decorateClass$A([\n  queryAsync(\"#scroll-container\")\n], DhTableOld.prototype, \"scrollContainer\", 2);\n__decorateClass$A([\n  query(\"#header-container\")\n], DhTableOld.prototype, \"headerContainer\", 2);\n__decorateClass$A([\n  property({ type: Boolean })\n], DhTableOld.prototype, \"sortable\", 2);\n__decorateClass$A([\n  property({ type: Boolean })\n], DhTableOld.prototype, \"positionable\", 2);\n__decorateClass$A([\n  property({ type: Boolean })\n], DhTableOld.prototype, \"manipulable\", 2);\n__decorateClass$A([\n  property({ type: Boolean })\n], DhTableOld.prototype, \"notAddRow\", 2);\n__decorateClass$A([\n  property({ type: Boolean })\n], DhTableOld.prototype, \"notCloneRow\", 2);\n__decorateClass$A([\n  property({ type: Boolean })\n], DhTableOld.prototype, \"notRemoveRow\", 2);\n__decorateClass$A([\n  property({ type: Boolean })\n], DhTableOld.prototype, \"editable\", 2);\n__decorateClass$A([\n  property({ type: Boolean })\n], DhTableOld.prototype, \"notSelectable\", 2);\n__decorateClass$A([\n  property({ type: Boolean })\n], DhTableOld.prototype, \"withCheckbox\", 2);\n__decorateClass$A([\n  property({ type: Boolean })\n], DhTableOld.prototype, \"generalFilter\", 2);\n__decorateClass$A([\n  property({ type: Boolean })\n], DhTableOld.prototype, \"activeFilter\", 2);\n__decorateClass$A([\n  property({ type: String })\n], DhTableOld.prototype, \"filterLabel\", 2);\n__decorateClass$A([\n  property({ type: Number, reflect: true })\n], DhTableOld.prototype, \"lineHeight\", 2);\n__decorateClass$A([\n  property({ type: String })\n], DhTableOld.prototype, \"activeFilterLabel\", 2);\n__decorateClass$A([\n  property({ type: Boolean })\n], DhTableOld.prototype, \"downloadable\", 2);\n__decorateClass$A([\n  property({ type: Boolean })\n], DhTableOld.prototype, \"uploadable\", 2);\n__decorateClass$A([\n  property({ type: String })\n], DhTableOld.prototype, \"encoding\", 2);\n__decorateClass$A([\n  property({ type: String })\n], DhTableOld.prototype, \"selectHeaderValue\", 2);\n__decorateClass$A([\n  property({ type: String })\n], DhTableOld.prototype, \"addRowTitle\", 2);\n__decorateClass$A([\n  property({ type: String })\n], DhTableOld.prototype, \"cloneRowTitle\", 2);\n__decorateClass$A([\n  property({ type: String })\n], DhTableOld.prototype, \"removeRowTitle\", 2);\n__decorateClass$A([\n  property({ type: String })\n], DhTableOld.prototype, \"rowPositionUpTitle\", 2);\n__decorateClass$A([\n  property({ type: String })\n], DhTableOld.prototype, \"rowPositionDownTitle\", 2);\n__decorateClass$A([\n  property({ type: String })\n], DhTableOld.prototype, \"checkAllRowsTitle\", 2);\n__decorateClass$A([\n  state()\n], DhTableOld.prototype, \"offsetY\", 2);\n__decorateClass$A([\n  state()\n], DhTableOld.prototype, \"columnWidths\", 2);\n__decorateClass$A([\n  state()\n], DhTableOld.prototype, \"theTableObject\", 2);\n__decorateClass$A([\n  property({ type: String, reflect: true })\n], DhTableOld.prototype, \"defaultWidth\", 2);\n__decorateClass$A([\n  property({ type: Boolean, reflect: true })\n], DhTableOld.prototype, \"useSingleSelect\", 2);\n__decorateClass$A([\n  state()\n], DhTableOld.prototype, \"visibleNodes\", 2);\n__decorateClass$A([\n  event({ bubbles: true, cancelable: true, composed: true }, \"dblRowClick\")\n], DhTableOld.prototype, \"dblRowClick\", 2);\n__decorateClass$A([\n  event({ bubbles: true, cancelable: true, composed: true }, \"addNewRow\")\n], DhTableOld.prototype, \"addNewRowEvent\", 2);\n__decorateClass$A([\n  event({ bubbles: true, cancelable: true, composed: true }, \"removeRow\")\n], DhTableOld.prototype, \"removeRowEvent\", 2);\n__decorateClass$A([\n  event({ bubbles: true, cancelable: true, composed: true }, \"removeRows\")\n], DhTableOld.prototype, \"removeRows\", 2);\n__decorateClass$A([\n  event({ bubbles: true, cancelable: true, composed: true }, \"checkAllRows\")\n], DhTableOld.prototype, \"checkAllRowsEvent\", 2);\n__decorateClass$A([\n  event({ bubbles: true, cancelable: true, composed: true }, \"clonedRow\")\n], DhTableOld.prototype, \"clonedRowEvent\", 2);\n__decorateClass$A([\n  event({ bubbles: true, cancelable: true, composed: true }, \"editingRow\")\n], DhTableOld.prototype, \"editingRowEvent\", 2);\n__decorateClass$A([\n  event({ bubbles: true, cancelable: true, composed: true }, \"sortedRows\")\n], DhTableOld.prototype, \"sortedRows\", 2);\n__decorateClass$A([\n  event({ bubbles: true, cancelable: true, composed: true }, \"rowRangeIsSelected\")\n], DhTableOld.prototype, \"rowRangeIsSelected\", 2);\n__decorateClass$A([\n  event({ bubbles: true, cancelable: true, composed: true }, \"anotherRowIsSelected\")\n], DhTableOld.prototype, \"anotherRowIsSelected\", 2);\n__decorateClass$A([\n  event({ bubbles: true, cancelable: true, composed: true }, \"singleRowIsSelected\")\n], DhTableOld.prototype, \"singleRowIsSelected\", 2);\n__decorateClass$A([\n  event({ bubbles: true, cancelable: true, composed: true }, \"exportError\")\n], DhTableOld.prototype, \"exportError\", 2);\n__decorateClass$A([\n  event({ bubbles: true, cancelable: true, composed: true }, \"importTableData\")\n], DhTableOld.prototype, \"importTableData\", 2);\n__decorateClass$A([\n  event({ bubbles: true, cancelable: true, composed: true }, \"importError\")\n], DhTableOld.prototype, \"importError\", 2);\n__decorateClass$A([\n  event({ bubbles: true, cancelable: true, composed: true }, \"positionFail\")\n], DhTableOld.prototype, \"positionFail\", 2);\n__decorateClass$A([\n  event({ bubbles: true, cancelable: true, composed: true }, \"positionUp\")\n], DhTableOld.prototype, \"positionUpEvent\", 2);\n__decorateClass$A([\n  event({ bubbles: true, cancelable: true, composed: true }, \"positionDown\")\n], DhTableOld.prototype, \"positionDownEvent\", 2);\nDhTableOld = __decorateClass$A([\n  customElement(\"dh-table-old\")\n], DhTableOld);\n\nvar style$z = \"*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  width: 100%;\\n  display: table-row;\\n}\\n\\n:host(:not([isActive])) {\\n  opacity: var(--dh-inactive-opacity, 1);\\n}\";\n\nvar __defProp$x = Object.defineProperty;\nvar __getOwnPropDesc$z = Object.getOwnPropertyDescriptor;\nvar __decorateClass$z = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$z(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$x(target, key, result);\n  return result;\n};\nlet DhTableRowOld = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.isActive = true;\n    this.hasChildren = false;\n    this.isChild = false;\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-table-row-old\")) {\n      this.setAttribute(\"dh-table-row-old\", \"\");\n    }\n  }\n  render() {\n    return html` <slot part=\"root\"></slot> `;\n  }\n  firstUpdated() {\n    const parentTable = this.closestElement(this, \"dh-table\");\n    const parentLineHeight = parentTable?.getAttribute(\"lineHeight\") || \"36\";\n    this.style.height = `${parentLineHeight}px`;\n  }\n  closestElement(node, selector) {\n    if (!node) {\n      return null;\n    }\n    if (node instanceof ShadowRoot) {\n      return this.closestElement(node.host, selector);\n    }\n    if (node instanceof HTMLElement) {\n      if (node.matches(selector)) {\n        return node;\n      } else {\n        return this.closestElement(node.parentNode, selector);\n      }\n    }\n    return this.closestElement(node.parentNode, selector);\n  }\n};\nDhTableRowOld.styles = css`\n    ${unsafeCSS(style$z)}\n  `;\n__decorateClass$z([\n  property({ type: Boolean, reflect: true })\n], DhTableRowOld.prototype, \"isActive\", 2);\n__decorateClass$z([\n  property({ type: Boolean, reflect: true })\n], DhTableRowOld.prototype, \"hasChildren\", 2);\n__decorateClass$z([\n  property({ type: Boolean, reflect: true })\n], DhTableRowOld.prototype, \"isChild\", 2);\nDhTableRowOld = __decorateClass$z([\n  customElement(\"dh-table-row-old\")\n], DhTableRowOld);\n\nvar style$y = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n  text-align: center;\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n  display: flex;\\n  font-family: \\\"furnview-icons-simple\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n  content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n  content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n  content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n  content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n  content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n  content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n  content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n  content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n  content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n  content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n  content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n  content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n  content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n  content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n  content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n  content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n  content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n  content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n  content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n  content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n  content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n  content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n  content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n  content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n  content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n  content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n  content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n  content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n  content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n  content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n  content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n  content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n  content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n  content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n  content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n  content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n  content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n  content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n  content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n  content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n  content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n  content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n  content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n  content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n  content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n  content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n  content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n  content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n  content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n  content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n  content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n  content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n  content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n  content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n  content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n  content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n  content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n  content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n  content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n  content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n  content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n  content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n  content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n  content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n  content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n  content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n  content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n  content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n  content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n  content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n  content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n  content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n  content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n  content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n  content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n  content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n  content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n  content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n  content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n  content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n  content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n  content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n  content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n  content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n  content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n  content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n  content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n  content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n  content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n  content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n  content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n  content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n  content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n  content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n  content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n  content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n  content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n  content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n  content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n  content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n  content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n  content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n  content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n  content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n  content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n  content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n  content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n  content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n  content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n  content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n  content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n  content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n  content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n  content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n  content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n  content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n  content: \\\"à\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n  content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n  content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n  content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n  content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n  content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n  content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n  content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n  content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n  content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n  content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n  content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n  content: \\\"í\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n  content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n  content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n  content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n  content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n  text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n  display: flex;\\n  font-family: \\\"furnview-icons-multi\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n  content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n  content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n  content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n  content: \\\"0\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n  content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n  content: \\\";\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n  content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n  content: \\\"=\\\\a;\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n  content: \\\"<\\\";\\n  position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n  content: \\\"8\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n  content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n  content: \\\":\\\\a 8\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n  content: \\\"9\\\";\\n  position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: table-cell;\\n  box-sizing: border-box;\\n  vertical-align: middle;\\n  position: relative;\\n  overflow: hidden;\\n  height: var(--dh-head-cell-height, auto);\\n  padding: var(--dh-head-cell-padding, 0 8px);\\n  border-bottom: 1px solid var(--dh-border-color, transparent);\\n  border-right: 1px solid var(--dh-border-color, transparent);\\n  font-weight: var(--dh-header-weight, inherit);\\n  color: var(--dh-header-color, inherit);\\n}\\n\\n.rotate {\\n  transform: scaleY(-1);\\n}\\n\\n.container {\\n  display: flex;\\n  flex-direction: row;\\n  justify-content: space-between;\\n  align-items: center;\\n  width: 100%;\\n  height: 100%;\\n}\\n\\n.arrow {\\n  padding-right: 1rem;\\n}\\n\\n.test {\\n  padding-right: 1rem;\\n}\\n\\n#resize-element {\\n  top: 0;\\n  right: 0;\\n  width: var(--dh-resize-width, 5px);\\n  position: absolute;\\n  cursor: col-resize;\\n  user-select: none;\\n  height: 100%;\\n  background-color: var(--dh-resize-bg, rgba(0, 0, 0, 0.06));\\n  transition: background-color 200ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n#resize-element:hover {\\n  background-color: var(--dh-resize-hover-bg, var(--dh-state-hover-bg, rgba(0, 0, 0, 0.12)));\\n}\\n\\n.arrow:before {\\n  padding-left: 1rem;\\n}\";\n\nvar __defProp$w = Object.defineProperty;\nvar __getOwnPropDesc$y = Object.getOwnPropertyDescriptor;\nvar __decorateClass$y = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$y(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$w(target, key, result);\n  return result;\n};\nlet DhTableHeadCellOld = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.sorting = \"unsorted\";\n    this.notSortable = false;\n    this.defaultWidth = \"200px\";\n    this.isResizeing = false;\n    this.pageX = 0;\n    this.currentColumnWidth = 0;\n    this.mouseUp = (event2) => {\n      if (this.isResizeing) {\n        event2.stopPropagation();\n        this.resizeStop.dispatch();\n        this.isResizeing = false;\n        this.currentColumn = null;\n        this.pageX = 0;\n        this.currentColumnWidth = 0;\n      }\n    };\n    this.mouseMove = (event2) => {\n      if (this.isResizeing && this.currentColumn) {\n        const diffX = event2.pageX - this.pageX;\n        const newWidth = Math.max(40, this.currentColumnWidth + diffX);\n        this.resize.dispatch({\n          width: newWidth + \"px\",\n          headerKey: this.currentColumn.getAttribute(\"key\")\n        });\n      }\n    };\n  }\n  render() {\n    return html`<div id=\"container\" class=\"container\" part=\"root\">\n      <div class=\"test\" part=\"label\">\n        <slot></slot>\n      </div>\n      <div>\n        ${!this.notSortable ? choose(this.sorting, [\n      [\"asc\", () => html`<div class=\"fv-icon-arrow-down rotate arrow\" part=\"icon\"></div>`],\n      [\"desc\", () => html` <div class=\"fv-icon-arrow-down arrow\" part=\"icon\"></div>`],\n      [\"unsorted\", () => html`<div class=\"fv-icon-arrow-up-down arrow\" part=\"icon\"></div>`]\n    ]) : \"\"}\n        <div id=\"resize-element\" @mousedown=\"${this.saveCurrentValues}\" part=\"divider\"></div>\n      </div>\n    </div> `;\n  }\n  async connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-table-head-cell-old\")) {\n      this.setAttribute(\"dh-table-head-cell-old\", \"\");\n    }\n    this.addEventListener(\"mouseup\", this.mouseUp);\n    document.addEventListener(\"mousemove\", this.mouseMove);\n    document.addEventListener(\"mouseup\", this.mouseUp);\n  }\n  async disconnectedCallback() {\n    super.disconnectedCallback();\n    document.removeEventListener(\"mousemove\", this.mouseMove);\n    document.removeEventListener(\"mouseup\", this.mouseUp);\n  }\n  setSorting(sorting) {\n    this.sorting = sorting;\n  }\n  saveCurrentValues(event2) {\n    event2.stopPropagation();\n    this.isResizeing = true;\n    this.currentColumn = event2.target.getRootNode().host;\n    this.pageX = event2.pageX;\n    if (this.currentColumn) {\n      this.currentColumnWidth = this.currentColumn.getBoundingClientRect().width;\n    }\n  }\n};\nDhTableHeadCellOld.styles = css`\n    ${unsafeCSS(style$y)}\n  `;\n__decorateClass$y([\n  query(\"#sort-img\")\n], DhTableHeadCellOld.prototype, \"sortImg\", 2);\n__decorateClass$y([\n  query(\"#container\")\n], DhTableHeadCellOld.prototype, \"container\", 2);\n__decorateClass$y([\n  property({ type: String, reflect: true })\n], DhTableHeadCellOld.prototype, \"sorting\", 2);\n__decorateClass$y([\n  property({ type: Boolean, reflect: true })\n], DhTableHeadCellOld.prototype, \"notSortable\", 2);\n__decorateClass$y([\n  property({ type: String, reflect: true })\n], DhTableHeadCellOld.prototype, \"defaultWidth\", 2);\n__decorateClass$y([\n  event({ bubbles: true, cancelable: true, composed: true }, \"resizeStop\")\n], DhTableHeadCellOld.prototype, \"resizeStop\", 2);\n__decorateClass$y([\n  event({ bubbles: true, cancelable: true, composed: true }, \"resize\")\n], DhTableHeadCellOld.prototype, \"resize\", 2);\nDhTableHeadCellOld = __decorateClass$y([\n  customElement(\"dh-table-head-cell-old\")\n], DhTableHeadCellOld);\n\nvar style$x = \"*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: table-cell;\\n  box-sizing: border-box;\\n  white-space: nowrap;\\n  vertical-align: middle;\\n  height: var(--dh-body-cell-height, auto);\\n  padding: var(--dh-body-cell-padding, 0 8px);\\n  border-bottom: 1px solid var(--dh-border-color, transparent);\\n  border-right: 1px solid var(--dh-border-color, transparent);\\n  color: inherit;\\n}\\n\\nform {\\n  width: 100%;\\n  height: 100%;\\n}\\n\\n#input {\\n  height: 100%;\\n  width: 100%;\\n}\\n\\n:host([type=checkbox]) form:not(.hidden) {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n}\\n\\n:host([type=checkbox]) #input {\\n  height: auto;\\n  width: auto;\\n  transform: scale(1.3);\\n}\\n\\n:host([type=radio]) form {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n}\\n\\n:host([type=radio]) #input {\\n  height: auto;\\n  width: auto;\\n}\\n\\n::slotted(input.invalid) {\\n  border-color: var(--dh-error-color, inherit);\\n}\\n\\n::slotted(dh-select) {\\n  display: block;\\n  height: 100%;\\n  width: 100%;\\n}\\n\\n::slotted(dh-button) {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  height: 100%;\\n  width: 100%;\\n}\\n\\n.container {\\n  display: flex;\\n  box-sizing: border-box;\\n  white-space: nowrap;\\n  vertical-align: middle;\\n  align-items: center;\\n  width: 100%;\\n}\\n\\n.overflow {\\n  overflow: hidden;\\n}\\n\\n.hidden {\\n  display: none;\\n}\";\n\nvar __defProp$v = Object.defineProperty;\nvar __getOwnPropDesc$x = Object.getOwnPropertyDescriptor;\nvar __decorateClass$x = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$x(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$v(target, key, result);\n  return result;\n};\nlet DhTableBodyCellOld = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.value = \"\";\n    this.index = \"\";\n    this.type = \"\";\n    this.accept = \"\";\n    this.min = void 0;\n    this.max = void 0;\n    this.step = void 0;\n    this.name = \"\";\n    this.placeholder = \"\";\n    this.blub = void 0;\n    this.checked = false;\n    this.disabled = false;\n    this.mode = \"show\";\n    this.defaultWidth = \"200px\";\n  }\n  set valueAsDate(value) {\n    (async () => this.inputElement.valueAsDate = value)();\n  }\n  //Das Property \"blub\" gibt es nur, da es bei Lit ein Problem gibt, dass teilweise das letzte Property nicht funktioniert (nicht darauf reagiert wird).\n  //Das Property \"blub\" funktioniert also nicht, sorgt aber dafür, dass alle die davor stehen funktionieren.\n  render() {\n    return html`\n      <div\n        id=\"container\"\n        class=${classMap({ overflow: this.type != \"dropdown\", container: true })}\n        @pasteInputValue=\"${this.pasteInputValues}\"\n        @isChange=\"${this.writeValue}\"\n        exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n        part=\"root\"\n      >\n        <slot class=${classMap({ hidden: this.mode == \"edit\" && this.type != \"checkbox\" })} part=\"content\">${this.placeholder}</slot>\n        <form class=${classMap({ hidden: this.type == \"checkbox\" || this.type != \"radio\" && this.mode == \"show\" })}>\n          <dh-input\n            exportparts=\"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\"\n            @keydown=${(e) => {\n      this.keyDown(e);\n      this.isEnterKey(e);\n    }}\n            id=\"input\"\n            .value=\"${this.value}\"\n            value=\"${this.value}\"\n            .checked=\"${this.checked}\"\n            .disabled=\"${this.disabled}\"\n            type=\"${this.type}\"\n            @blur=${this.writeValue}\n            @checkboxChange=\"${this.writeValue}\"\n            @changeSelectOption=\"${this.changeSelect}\"\n            size=\"5\"\n            name=\"${this.name}\"\n            accept=\"${this.accept}\"\n            min=\"${ifDefined(this.min)}\"\n            max=\"${ifDefined(this.max)}\"\n            step=\"${ifDefined(this.step)}\"\n            blub=\"${ifDefined(this.blub)}\"\n          ></dh-input>\n        </form>\n      </div>\n    `;\n  }\n  async connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-table-body-cell-old\")) {\n      this.setAttribute(\"dh-table-body-cell-old\", \"\");\n    }\n    this.addEventListener(\"click\", () => {\n      this.clickBodyCell();\n    });\n  }\n  firstUpdated(_changedProperties) {\n    super.firstUpdated(_changedProperties);\n    const parentTable = this.closestElement(this, \"dh-table-old\");\n    this.getAttribute(\"content\");\n    if (parentTable) {\n      const parentLineHeight = parentTable.getAttribute(\"lineHeight\");\n      if (parentLineHeight) {\n        this.container.style.height = `${parentLineHeight}px`;\n        this.container.style.maxHeight = `${parentLineHeight}px`;\n      }\n    }\n  }\n  resize(_width) {\n  }\n  closestElement(node, selector) {\n    if (!node) {\n      return null;\n    }\n    if (node instanceof ShadowRoot) {\n      return this.closestElement(node.host, selector);\n    }\n    if (node instanceof HTMLElement) {\n      if (node.matches(selector)) {\n        return node;\n      } else {\n        return this.closestElement(node.parentNode, selector);\n      }\n    }\n    return this.closestElement(node.parentNode, selector);\n  }\n  setMode(mode) {\n    if (mode == \"show\" || mode == \"edit\") {\n      this.mode = mode;\n    }\n  }\n  async setInputFocus() {\n    (await this.inputElement).focus();\n  }\n  getContainer() {\n    return this.container;\n  }\n  pasteInputValues(event2) {\n    const data = event2.detail.data;\n    const input = event2.detail.input;\n    const cellIndex = this.index;\n    const row = this.closest(\"dh-table-row\");\n    const id = row?.getAttribute(\"id\");\n    const table = (row?.getRootNode()).host;\n    const type = this.getAttribute(\"type\");\n    if (id) {\n      const sameRowIndex = table.getSameRowIndex(id);\n      data.forEach((data2, index) => {\n        const sameRow = table.getSameRowBasedOnIndex(sameRowIndex + index);\n        if (index == 0) {\n          if (type == \"date\") {\n            let isValid = false;\n            const newDate = new Date(data2);\n            if (newDate.toString() != \"Invalid Date\") {\n              isValid = true;\n              if (isValid) {\n                input.valueAsDate = newDate;\n              }\n            }\n          } else {\n            input.value = data2;\n          }\n        } else if (sameRow) {\n          const sameCell = sameRow[parseInt(cellIndex)];\n          const hasNotEditable = sameCell.attributes.some((attribute) => attribute == \"notEditable\");\n          if (!hasNotEditable) {\n            if (type == \"text\") {\n              sameCell.value = data2;\n              sameRow.isModified = true;\n              const content = this.getAttribute(\"content\");\n              this.cellIsEdit.dispatch({ newValue: data2, index: cellIndex, id: sameRow.id, content });\n            } else if (type == \"number\") {\n              const number = parseFloat(data2);\n              if (!isNaN(number)) {\n                const min = input.min;\n                const max = input.max;\n                let isMin;\n                let isMax;\n                if (min) {\n                  isMin = number >= min;\n                } else {\n                  isMin = true;\n                }\n                if (max) {\n                  isMax = number <= max;\n                } else {\n                  isMax = true;\n                }\n                if (isMax && isMin) {\n                  sameCell.value = number;\n                  sameRow.isModified = true;\n                  const content = this.getAttribute(\"content\");\n                  this.cellIsEdit.dispatch({ newValue: data2, index: cellIndex, id: sameRow.id, content });\n                }\n              }\n            } else if (type == \"date\") {\n              const newDate = new Date(data2);\n              if (newDate.toString() != \"Invalid Date\") {\n                sameCell.value = newDate;\n                sameRow.isModified = true;\n                const content = this.getAttribute(\"content\");\n                this.cellIsEdit.dispatch({ newValue: newDate, index: cellIndex, id: sameRow.id, content });\n              }\n            }\n          }\n        }\n      });\n      this.mode = \"show\";\n    }\n  }\n  //Die Funktion ist nur theoretisch geschrieben und so allein stehend noch nicht getestet.\n  //Also gerne bei mir melden, falls da etwas noch nicht ganz funktioniert.\n  async changeSelect(event2) {\n    event2.stopPropagation();\n    const selectedOption = event2.detail.selectedOption;\n    const dhSelect = event2.detail.dhSelect;\n    const index = this.index;\n    const grandparent = this.parentElement;\n    const table = grandparent.getRootNode().host;\n    const id = grandparent.id;\n    const sameRow = table.getSameRow(id);\n    if (sameRow) {\n      const sameCell = sameRow[parseInt(index)];\n      if (sameRow[parseInt(index)].value != selectedOption.value) {\n        sameCell.value = selectedOption.value;\n        sameCell.objectValues?.forEach((object) => {\n          object.selected = object.dataId == selectedOption.dataId;\n        });\n        sameRow.isModified = true;\n      }\n      this.changeTableSelect.dispatch({ selectedOption, dhSelect });\n    }\n  }\n  async writeValue(event2) {\n    const type = this.getAttribute(\"type\");\n    if (type == \"selectbox\" && event2.type == \"isChange\") {\n      return;\n    }\n    if ((type == \"checkbox\" || type == \"selectbox\" || type == \"dropdown\") && event2.type != \"checkboxChange\" && event2.type != \"isChange\") {\n      return;\n    }\n    const target = event2.target;\n    const grandparent = this.parentElement;\n    const table = grandparent.getRootNode().host;\n    let useStandard = false;\n    const index = this.index;\n    if (index) {\n      useStandard = table.getUseStandard(parseInt(index));\n    }\n    const id = grandparent.id;\n    const sameRow = table.getSameRow(id);\n    let value = \"\";\n    if (type == \"date\") {\n      value = target.getInputValueAsDate();\n    } else if (type == \"checkbox\") {\n      value = event2.type == \"isChange\" ? event2.detail : target.getCheckboxIsChecked();\n    } else {\n      value = target.getInputValue();\n    }\n    let isValid = false;\n    const isEmptyOk = type != \"date\";\n    if (type) {\n      isValid = this.checkValueValidity(value, type, isEmptyOk);\n    }\n    if (isValid) {\n      this.classList.remove(\"invalid\");\n      if (sameRow) {\n        const sameCell = sameRow[parseInt(index)];\n        if (sameRow[parseInt(index)].value != value) {\n          sameCell.value = value;\n          sameRow.isModified = true;\n          const content = this.getAttribute(\"content\");\n          this.cellIsEdit.dispatch({ newValue: value, index, id, content });\n        }\n      }\n    } else if (useStandard) {\n      if (sameRow) {\n        const sameCell = sameRow[parseInt(index)];\n        if (type == \"text\") {\n          sameCell.value = \"\";\n        } else if (type == \"date\") {\n          const currentYear = (/* @__PURE__ */ new Date()).getFullYear();\n          sameCell.value = /* @__PURE__ */ new Date(\"01.01.\" + currentYear);\n        } else if (type == \"boolean\") {\n          sameCell.value = \"false\";\n        } else if (type == \"number\") {\n          sameCell.value = \"\";\n        }\n        sameRow.isModified = true;\n        const content = this.getAttribute(\"content\");\n        this.cellIsEdit.dispatch({ newValue: value, index, id, content });\n      }\n      this.classList.remove(\"invalid\");\n    } else {\n      target.classList.add(\"invalid\");\n    }\n    if (type != \"checkbox\" && type != \"selectbox\" && type != \"dropdown\") {\n      this.mode = \"show\";\n    }\n  }\n  isEnterKey(event2) {\n    event2.stopPropagation();\n    const keyboardEvent = event2;\n    if (keyboardEvent.key == \"Enter\") {\n      this.writeValue(event2);\n      event2.target.blur();\n    }\n  }\n  checkValueValidity(value, type, isEmptyOk) {\n    let isValid = false;\n    if (type == \"checkbox\" || type == \"selectbox\" || type == \"dropdown\") {\n      isValid = true;\n    }\n    if (type == \"text\") {\n      if (isEmptyOk) {\n        isValid = true;\n      }\n      if (value) {\n        const isNotEmpty = value.toString().length > 0;\n        if (isNotEmpty) {\n          isValid = true;\n        }\n      }\n    } else if (type == \"date\") {\n      if (isEmptyOk) {\n        isValid = true;\n      }\n      const newDate = new Date(value);\n      if (newDate.toString() != \"Invalid Date\") {\n        isValid = true;\n      }\n    } else if (type == \"boolean\") {\n      if (isEmptyOk) {\n        isValid = false;\n      }\n      if (value == \"true\" || value == \"false\" || value == \"0\" || value == \"1\") {\n        isValid = true;\n      }\n    } else if (type == \"number\") {\n      if (isEmptyOk) {\n        isValid = true;\n      }\n      const number = parseInt(value);\n      const isNumber = Number.isInteger(number);\n      if (isNumber) {\n        isValid = true;\n      }\n    }\n    return isValid;\n  }\n  keyDown(event2) {\n    const key = event2.code;\n    if (key == \"Escape\") {\n      this.formElement.reset();\n      this.mode = \"show\";\n    }\n  }\n  clickBodyCell() {\n    this.clickBodyCellEvent.dispatch(this);\n  }\n};\nDhTableBodyCellOld.styles = css`\n    ${unsafeCSS(style$x)}\n  `;\n__decorateClass$x([\n  queryAsync(\"dh-input\")\n], DhTableBodyCellOld.prototype, \"inputElement\", 2);\n__decorateClass$x([\n  query(\"#container\")\n], DhTableBodyCellOld.prototype, \"container\", 2);\n__decorateClass$x([\n  query(\"form\")\n], DhTableBodyCellOld.prototype, \"formElement\", 2);\n__decorateClass$x([\n  property({ type: String, reflect: true })\n], DhTableBodyCellOld.prototype, \"value\", 2);\n__decorateClass$x([\n  property({ type: String, reflect: true })\n], DhTableBodyCellOld.prototype, \"index\", 2);\n__decorateClass$x([\n  property({ type: String, reflect: true })\n], DhTableBodyCellOld.prototype, \"type\", 2);\n__decorateClass$x([\n  property({ type: String, reflect: true })\n], DhTableBodyCellOld.prototype, \"accept\", 2);\n__decorateClass$x([\n  property({ type: Number, reflect: true })\n], DhTableBodyCellOld.prototype, \"min\", 2);\n__decorateClass$x([\n  property({ type: Number, reflect: true })\n], DhTableBodyCellOld.prototype, \"max\", 2);\n__decorateClass$x([\n  property({ type: Number, reflect: true })\n], DhTableBodyCellOld.prototype, \"step\", 2);\n__decorateClass$x([\n  property({ type: String, reflect: true })\n], DhTableBodyCellOld.prototype, \"name\", 2);\n__decorateClass$x([\n  property({ type: String, reflect: true })\n], DhTableBodyCellOld.prototype, \"placeholder\", 2);\n__decorateClass$x([\n  property({ type: Number, reflect: true })\n], DhTableBodyCellOld.prototype, \"blub\", 2);\n__decorateClass$x([\n  property({ type: Boolean, reflect: true })\n], DhTableBodyCellOld.prototype, \"checked\", 2);\n__decorateClass$x([\n  property({ type: Boolean, reflect: true })\n], DhTableBodyCellOld.prototype, \"disabled\", 2);\n__decorateClass$x([\n  property({ type: Boolean, reflect: true })\n], DhTableBodyCellOld.prototype, \"mode\", 2);\n__decorateClass$x([\n  property({ type: String, reflect: true })\n], DhTableBodyCellOld.prototype, \"defaultWidth\", 2);\n__decorateClass$x([\n  event({ bubbles: true, cancelable: true, composed: true }, \"cellIsEdit\")\n], DhTableBodyCellOld.prototype, \"cellIsEdit\", 2);\n__decorateClass$x([\n  event({ bubbles: true, cancelable: true, composed: true }, \"changeTableSelect\")\n], DhTableBodyCellOld.prototype, \"changeTableSelect\", 2);\n__decorateClass$x([\n  event({ bubbles: true, cancelable: true, composed: true }, \"clickBodyCell\")\n], DhTableBodyCellOld.prototype, \"clickBodyCellEvent\", 2);\nDhTableBodyCellOld = __decorateClass$x([\n  customElement(\"dh-table-body-cell-old\")\n], DhTableBodyCellOld);\n\nvar style$w = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n  text-align: center;\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n  display: flex;\\n  font-family: \\\"furnview-icons-simple\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n  content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n  content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n  content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n  content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n  content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n  content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n  content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n  content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n  content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n  content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n  content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n  content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n  content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n  content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n  content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n  content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n  content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n  content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n  content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n  content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n  content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n  content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n  content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n  content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n  content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n  content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n  content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n  content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n  content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n  content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n  content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n  content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n  content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n  content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n  content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n  content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n  content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n  content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n  content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n  content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n  content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n  content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n  content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n  content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n  content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n  content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n  content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n  content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n  content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n  content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n  content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n  content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n  content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n  content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n  content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n  content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n  content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n  content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n  content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n  content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n  content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n  content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n  content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n  content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n  content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n  content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n  content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n  content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n  content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n  content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n  content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n  content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n  content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n  content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n  content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n  content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n  content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n  content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n  content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n  content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n  content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n  content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n  content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n  content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n  content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n  content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n  content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n  content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n  content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n  content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n  content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n  content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n  content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n  content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n  content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n  content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n  content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n  content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n  content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n  content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n  content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n  content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n  content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n  content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n  content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n  content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n  content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n  content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n  content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n  content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n  content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n  content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n  content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n  content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n  content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n  content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n  content: \\\"à\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n  content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n  content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n  content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n  content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n  content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n  content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n  content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n  content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n  content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n  content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n  content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n  content: \\\"í\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n  content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n  content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n  content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n  content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n  text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n  display: flex;\\n  font-family: \\\"furnview-icons-multi\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n  content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n  content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n  content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n  content: \\\"0\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n  content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n  content: \\\";\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n  content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n  content: \\\"=\\\\a;\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n  content: \\\"<\\\";\\n  position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n  content: \\\"8\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n  content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n  content: \\\":\\\\a 8\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n  content: \\\"9\\\";\\n  position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: flex;\\n  flex-direction: column;\\n  position: relative;\\n  min-height: 0;\\n  max-height: 100%;\\n  box-sizing: border-box;\\n}\\n\\n#manipulation-container {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  gap: 4px;\\n  flex-shrink: 0;\\n}\\n\\n.flex-row {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n}\\n\\n#filter-pre-container {\\n  gap: 8px;\\n  flex-wrap: nowrap;\\n  white-space: nowrap;\\n}\\n\\n#active-filter-container {\\n  gap: 8px;\\n  flex-wrap: nowrap;\\n  white-space: nowrap;\\n  margin-left: auto;\\n}\\n\\n#filter-extra-container {\\n  gap: 8px;\\n  flex-wrap: nowrap;\\n  white-space: nowrap;\\n  margin-left: auto;\\n}\\n\\n#grid-scroll {\\n  overflow: auto;\\n  flex: 1;\\n  min-height: 0;\\n  overflow-anchor: none;\\n}\\n\\n#grid-scroll {\\n  scrollbar-width: thin;\\n  scrollbar-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2)) var(--dh-scrollbar-track, transparent);\\n}\\n\\n#grid-scroll::-webkit-scrollbar {\\n  width: var(--dh-scrollbar-width, 8px);\\n  height: var(--dh-scrollbar-width, 8px);\\n}\\n\\n#grid-scroll::-webkit-scrollbar-thumb {\\n  background-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2));\\n  border-radius: var(--dh-scrollbar-radius, 4px);\\n}\\n\\n#grid-scroll::-webkit-scrollbar-thumb:hover {\\n  background-color: var(--dh-scrollbar-thumb-hover, rgba(0, 0, 0, 0.35));\\n}\\n\\n#grid-scroll::-webkit-scrollbar-track {\\n  background: var(--dh-scrollbar-track, transparent);\\n}\\n\\n.grid-header {\\n  display: grid;\\n  width: max-content;\\n  min-width: 100%;\\n  position: sticky;\\n  top: 0;\\n  z-index: 10;\\n}\\n\\n.virtual-body {\\n  position: relative;\\n  min-width: 100%;\\n}\\n\\n.virtual-rows {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  right: 0;\\n  display: grid;\\n  will-change: transform;\\n}\\n\\ndh-table-row {\\n  display: contents;\\n}\\n\\n:host(:not([withCheckbox])) dh-table-body-cell[type=selectbox] {\\n  display: none;\\n}\\n\\ndh-table-row.selected > dh-table-body-cell {\\n  background-color: var(--dh-state-selected-bg, rgba(0, 0, 0, 0.08));\\n}\\n\\ndh-table-row[part~=copy] > [dh-table-body-cell] {\\n  background-color: var(--dh-state-copy-bg, transparent);\\n}\\n\\ndh-table-row:last-of-type > dh-table-body-cell {\\n  border-bottom: none;\\n}\\n\\n.checkedAll {\\n  background-color: var(--dh-state-selected-bg, transparent);\\n}\\n\\n.hidden {\\n  display: none !important;\\n}\\n\\n:host([loading]) .virtual-body {\\n  visibility: hidden;\\n}\\n\\n.img {\\n  height: 100%;\\n}\\n\\nbutton {\\n  cursor: pointer !important;\\n  background: none;\\n  border: none;\\n  display: flex;\\n  align-items: center;\\n}\";\n\nvar __defProp$u = Object.defineProperty;\nvar __getOwnPropDesc$w = Object.getOwnPropertyDescriptor;\nvar __decorateClass$w = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$w(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$u(target, key, result);\n  return result;\n};\nlet DhTable = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.sortable = false;\n    this.positionable = false;\n    this.manipulable = false;\n    this.notAddRow = false;\n    this.notCloneRow = false;\n    this.notRemoveRow = false;\n    this.editable = false;\n    this.notSelectable = false;\n    this.withCheckbox = false;\n    this.generalFilter = false;\n    this.activeFilter = false;\n    this.hideInactiveRows = false;\n    this.loading = false;\n    this.filterLabel = \"search\";\n    this.lineHeight = 36;\n    this.activeFilterLabel = \"hide inactive rows\";\n    this.downloadable = false;\n    this.uploadable = false;\n    this.encoding = \"65001\";\n    this.selectHeaderValue = \"selection\";\n    this.addRowTitle = \"add row\";\n    this.cloneRowTitle = \"clone row\";\n    this.removeRowTitle = \"remove row\";\n    this.rowPositionUpTitle = \"move row up\";\n    this.rowPositionDownTitle = \"move row down\";\n    this.checkAllRowsTitle = \"select all rows\";\n    this.hideCheckAllRowsButton = false;\n    this.withMasterCheckbox = false;\n    this.masterCheckboxAriaLabel = \"select all\";\n    this.bodyOffset = 0;\n    this.scrollRafId = null;\n    this.scrollEndTimer = null;\n    // Letzter bekannter scrollTop — aktuell nicht für Overscan-Steuerung\n    // verwendet (stabile Slab-Größe siehe unten), kann aber für künftiges\n    // Velocity-Tracking nützlich bleiben.\n    this.lastScrollTop = 0;\n    this.columnWidths = [];\n    this.pendingColumnWidths = [];\n    this.theTableObject = {\n      header: [\n        {\n          title: \"\",\n          key: \"\",\n          type: \"\",\n          attributes: [],\n          defaultWidth: \"\"\n        }\n      ],\n      rows: []\n    };\n    this.defaultWidth = \"200px\";\n    this.useSingleSelect = false;\n    this.timer = 0;\n    this.delay = 200;\n    this.prevent = false;\n    this.filteredRows = [];\n    this.filterRules = [];\n    this.rowTemplate = null;\n    this.headerRowTemplate = null;\n    /**\n     * Sibling to `headerRowTemplate` — return only the header cells (no\n     * `<dh-table-row>` wrapper, no checkbox-column cell). dh-table wraps\n     * them in a row and prepends the master-checkbox cell automatically\n     * when `withMasterCheckbox` is set. Use this instead of\n     * `headerRowTemplate` when you want dh-table to own the checkbox column.\n     */\n    this.headerCellsTemplate = null;\n    this.visibleNodes = [];\n    this.firstShiftPressedElementId = \"\";\n    this.filterValue = \"\";\n    this.isEdited = false;\n    this.isResizing = false;\n    this.dateOptions = { year: \"numeric\", month: \"2-digit\", day: \"2-digit\" };\n    this.onScroll = () => {\n      if (this.scrollRafId === null) {\n        this.scrollRafId = requestAnimationFrame(() => {\n          this.scrollRafId = null;\n          this.updateScrollView();\n        });\n      }\n      if (this.scrollEndTimer !== null) {\n        window.clearTimeout(this.scrollEndTimer);\n      }\n      this.scrollEndTimer = window.setTimeout(() => {\n        this.scrollEndTimer = null;\n        this.updateScrollView();\n      }, DhTable.SCROLL_END_DELAY_MS);\n    };\n    this.rowIdCounter = 0;\n    // Letzte Rows-Referenz, fuer die wir validateObject/filterRows ausgefuehrt\n    // haben. Der Fast-Path im tableObject-Setter darf nur dann greifen, wenn\n    // data.rows tatsaechlich von uns verarbeitet wurde — sonst koennte ein\n    // direkter Bypass auf this.theTableObject (z.B. in Subklassen) den Setter\n    // ueber visibleNodes hinwegtaeuschen.\n    this.lastProcessedRows = null;\n    //Methoden für die Sortierung\n    // Sortier-State intern halten — nicht aus DOM-Klassen ableiten. Consumer mit\n    // Custom headerCellsTemplate erzeugen sonst bei jedem Re-Render frische\n    // Head-Cells (z.B. via document.createElement), wodurch die asc/desc-Klasse\n    // verschwindet und die Toggle-Logik auf falscher Annahme lief.\n    this.currentSortKey = null;\n    this.currentSortDirection = \"asc\";\n    this.defaultSortDirection = \"asc\";\n    // Optionaler, generischer Zeilen-Filter: ein Consumer parkt hier eine Ja/Nein-Funktion,\n    // die filterRows() als zusaetzliche Stufe auf jede Reihe anwendet. null = kein Effekt.\n    this.rowFilterPredicate = null;\n  }\n  set tableObject(data) {\n    if (data.rows === this.lastProcessedRows && data.header === this.theTableObject.header) {\n      this.theTableObject = data;\n      return;\n    }\n    this.theTableObject = this.validateObject(data);\n    this.filteredRows = data.rows;\n    this.filterRows();\n  }\n  render() {\n    const savedWidths = JSON.parse(localStorage.getItem(`columnWidths_${this.getAttribute(\"localStorageKey\")}`) || \"{}\");\n    const expectedLength = (this.withCheckbox ? 1 : 0) + this.theTableObject.header.length;\n    if (this.columnWidths.length !== expectedLength) {\n      this.columnWidths = this.buildColumnWidths(savedWidths);\n    }\n    const gridColumns = this.columnWidths.join(\" \");\n    const totalBodyHeight = this.filteredRows.length * this.lineHeight;\n    const totalBodyWidth = this.columnWidths.reduce((sum, w) => sum + (parseInt(w, 10) || 0), 0);\n    return html`\n      <dh-dimmer id=\"table-dimmer\" class=\"${this.loading ? \"\" : \"hidden\"}\"></dh-dimmer>\n      ${this.hasManipulationElements ? html`<div id=\"manipulation-container\" part=\"header\">${this.renderManipulationElements()}</div>` : null}\n      <div\n        id=\"grid-scroll\"\n        part=\"scroll\"\n        @scroll=\"${this.onScroll}\"\n        @cellIsEdit=\"${this.filterRows}\"\n        @resize=\"${this.resizeBodyCells}\"\n        @resizeStop=\"${this.stopResizing}\"\n        @mouseup=${this.sortable ? this.clickHeader : null}\n      >\n        <div class=\"grid-header\" part=\"content\" style=\"grid-template-columns: ${gridColumns}\">\n          <slot id=\"table-head\" name=\"table-head\"></slot>\n          ${this.renderHeaderRow(savedWidths)}\n        </div>\n        <div\n          class=\"virtual-body\"\n          style=\"height: ${totalBodyHeight}px; width: ${totalBodyWidth}px\"\n          @click=\"${this.onClickEvent}\"\n          @dblclick=\"${this.dblclick}\"\n        >\n          <slot id=\"table-body\" name=\"table-body\"></slot>\n          <div class=\"virtual-rows\" style=\"transform: translateY(${this.bodyOffset}px); grid-template-columns: ${gridColumns}\">\n            ${this.visibleNodes ? repeat(\n      this.visibleNodes,\n      (row) => row.id,\n      (row) => {\n        if (this.rowTemplate) {\n          return html`${this.rowTemplate(row)}`;\n        }\n        if (row.isSelected == void 0) {\n          row.isSelected = false;\n        }\n        return this.renderTableRow(row, savedWidths);\n      }\n    ) : null}\n          </div>\n        </div>\n      </div>\n    `;\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-table\")) {\n      this.setAttribute(\"dh-table\", \"\");\n    }\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    if (this.scrollRafId !== null) {\n      cancelAnimationFrame(this.scrollRafId);\n      this.scrollRafId = null;\n    }\n    if (this.scrollEndTimer !== null) {\n      window.clearTimeout(this.scrollEndTimer);\n      this.scrollEndTimer = null;\n    }\n  }\n  renderManipulationElements() {\n    return html`<dh-button\n        id=\"check-all-rows\"\n        class=\"${this.manipulable && this.withCheckbox && !this.notSelectable && !this.hideCheckAllRowsButton && !this.withMasterCheckbox ? \"button\" : \"hidden\"}\"\n        @click=\"${this.checkAllRows}\"\n        title=\"${this.checkAllRowsTitle}\"\n        variant=\"outlined\"\n        icon-button\n        exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n        ><div slot=\"img\" class=\"fv-icon-check\"></div\n      ></dh-button>\n      <dh-button\n        id=\"add-row\"\n        class=\"${this.manipulable && !this.notAddRow ? \"button\" : \"hidden\"}\"\n        @click=\"${this.addNewRow}\"\n        title=\"${this.addRowTitle}\"\n        variant=\"outlined\"\n        icon-button\n        exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n        ><div slot=\"img\" class=\"fv-icon-plus\"></div\n      ></dh-button>\n      <dh-button\n        id=\"clone-row\"\n        class=\"${this.manipulable && !this.notCloneRow ? \"button\" : \"hidden\"}\"\n        @click=\"${this.cloneRow}\"\n        title=\"${this.cloneRowTitle}\"\n        variant=\"outlined\"\n        icon-button\n        exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n        ><div slot=\"img\" class=\"fv-icon-content-copy\"></div\n      ></dh-button>\n      <dh-button\n        id=\"remove-row\"\n        class=\"${this.manipulable && !this.notRemoveRow ? \"button\" : \"hidden\"}\"\n        @click=\"${this.removeRow}\"\n        title=\"${this.removeRowTitle}\"\n        variant=\"outlined\"\n        icon-button\n        exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n        ><div slot=\"img\" class=\"fv-icon-delete\"></div\n      ></dh-button>\n      <dh-button\n        id=\"export-button\"\n        class=\"${this.manipulable && this.downloadable ? \"button\" : \"hidden\"}\"\n        @click=\"${this.exportTableAsCsv}\"\n        title=\"download\"\n        variant=\"outlined\"\n        icon-button\n        exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n        ><div slot=\"img\" class=\"fv-icon-download\"></div\n      ></dh-button>\n      <dh-button\n        id=\"import-button\"\n        class=\"${this.manipulable && this.uploadable ? \"button\" : \"hidden\"}\"\n        @click=\"${this.openUploadFileDialog}\"\n        title=\"upload\"\n        variant=\"outlined\"\n        icon-button\n        exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n        ><div slot=\"img\" class=\"fv-icon-upload\"></div\n      ></dh-button>\n      <dh-button\n        id=\"position-up\"\n        class=\"${this.positionable ? \"button\" : \"hidden\"}\"\n        @click=\"${this.positionUp}\"\n        title=\"${this.rowPositionUpTitle}\"\n        variant=\"outlined\"\n        icon-button\n        exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n        ><div slot=\"img\" class=\"fv-icon-arrow-down-2\" style=\"transform: rotate(180deg)\"></div\n      ></dh-button>\n      <dh-button\n        id=\"position-down\"\n        class=\"${this.positionable ? \"button\" : \"hidden\"}\"\n        @click=\"${this.positionDown}\"\n        title=\"${this.rowPositionDownTitle}\"\n        variant=\"outlined\"\n        icon-button\n        exportparts=\"root: dh-icon-button-root, label: dh-icon-button-label, icon: dh-icon-button-icon\"\n        ><div slot=\"img\" class=\"fv-icon-arrow-down-2\"></div\n      ></dh-button>\n      <input id=\"upload-input\" type=\"file\" accept=\".txt, .csv\" hidden @click=\"${this.resetValue}\" @change=\"${this.readFile}\" />\n      <div id=\"general-filter-container\" class=\"${this.generalFilter ? \"flex-row\" : \"flex-row hidden\"}\" @input=\"${this.filterText}\">\n        <dh-input\n          id=\"filter-input\"\n          variant=\"classic\"\n          placeholder=\"${this.filterLabel}\"\n          exportparts=\"root: dh-filter-root, input: dh-filter-input, label: dh-filter-label, supporting-text: dh-filter-supporting-text\"\n        ></dh-input>\n      </div>\n      <div id=\"filter-pre-container\" class=\"flex-row\">\n        <slot name=\"filter-pre\"></slot>\n      </div>\n      <div id=\"active-filter-container\" class=\"${this.activeFilter ? \"flex-row\" : \"flex-row hidden\"}\" @isChange=\"${this.filterRows}\">\n        <dh-checkbox\n          id=\"active-filter-input\"\n          variant=\"switch\"\n          exportparts=\"root: dh-switch-root, input: dh-switch-track, handle: dh-switch-handle\"\n        ></dh-checkbox>\n        <span>${this.activeFilterLabel}</span>\n      </div>\n      <div id=\"filter-extra-container\" class=\"flex-row\">\n        <slot name=\"filter-extra\"></slot>\n      </div>`;\n  }\n  renderHeaderRow(savedWidths) {\n    if (this.headerRowTemplate) {\n      return this.headerRowTemplate(this.theTableObject.header);\n    }\n    const cells = this.headerCellsTemplate ? this.headerCellsTemplate(this.theTableObject.header) : this.renderDefaultHeaderCells();\n    if (this.withMasterCheckbox && this.withCheckbox) {\n      return html`<dh-table-row exportparts=\"resize-element\">${this.renderMasterCheckboxCell()}${cells}</dh-table-row>`;\n    }\n    if (this.headerCellsTemplate) {\n      return html`<dh-table-row exportparts=\"resize-element\">${cells}</dh-table-row>`;\n    }\n    return cells;\n  }\n  renderDefaultHeaderCells() {\n    return html`\n      ${this.withCheckbox && !this.withMasterCheckbox ? html`<dh-table-head-cell type=\"selectbox\" key=\"selection\" notSortable> ${this.selectHeaderValue} </dh-table-head-cell>` : null}\n      ${this.theTableObject.header ? this.theTableObject.header.map((cell, index) => {\n      return html`<dh-table-head-cell\n              class=\"${this.sortable ? \"unsorted\" : \"\"}\"\n              type=\"${cell.type}\"\n              key=\"${cell.key}\"\n              ?useStandard=${this.useStandard(cell.attributes)}\n              sorting=\"${this.sortable ? \"unsorted\" : \"\"}\"\n              ?notSortable=\"${cell.attributes.includes(\"notSortable\")}\"\n              .parentSortable=\"${this.sortable}\"\n              exportparts=\"root: dh-head-cell-root, label: dh-head-cell-label, icon: dh-head-cell-icon, divider: dh-head-cell-divider\"\n            >\n              ${cell.title}\n            </dh-table-head-cell>`;\n    }) : null}\n    `;\n  }\n  renderMasterCheckboxCell() {\n    const totalCount = this.theTableObject.rows.length;\n    const selectedCount = this.theTableObject.rows.filter((row) => row.isSelected).length;\n    const allSelected = totalCount > 0 && selectedCount === totalCount;\n    const someSelected = selectedCount > 0 && selectedCount < totalCount;\n    return html`<dh-table-head-cell exportparts=\"resize-element\" content=\"checkbox\" type=\"selectbox\" notSortable defaultWidth=\"40px\">\n      <dh-checkbox\n        part=\"master-checkbox\"\n        aria-label=\"${this.masterCheckboxAriaLabel}\"\n        .checked=\"${allSelected}\"\n        .indeterminate=\"${someSelected}\"\n        @click=\"${(clickEvent) => clickEvent.stopPropagation()}\"\n        @isChange=\"${(changeEvent) => this.toggleAllRows(changeEvent.detail)}\"\n        exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"\n      ></dh-checkbox>\n    </dh-table-head-cell>`;\n  }\n  renderTableRow(row, savedWidths) {\n    return html`\n      <dh-table-row\n        class=\"${row.isSelected ? \"row body selected\" : \"row body\"}\"\n        id=\"${row.id}\"\n        ?notDeletable=\"${row.notDeletable}\"\n        ?notEditable=\"${row.notEditable}\"\n        ?notCloneable=\"${row.notCloneable}\"\n      >\n        ${this.withCheckbox ? html`<dh-table-body-cell type=\"selectbox\">\n              <dh-checkbox ?checked=${row.isSelected} exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"></dh-checkbox>\n            </dh-table-body-cell>` : null}\n        ${row ? row.map(\n      (cell, index) => html`\n                  ${choose(this.theTableObject.header[index]?.type, [\n        [\"selectbox\", () => this.renderSelectboxCell(cell, index, savedWidths)],\n        [\"checkbox\", () => this.renderCheckboxCell(cell, index, savedWidths)],\n        [\"text\", () => this.renderTextCell(cell, index, savedWidths)],\n        [\"number\", () => this.renderNumberCell(cell, index, savedWidths)],\n        [\"date\", () => this.renderDateCell(cell, index, savedWidths)],\n        [\"dropdown\", () => this.renderDropdownCell(cell, index, savedWidths)],\n        [\"img\", () => this.renderImgCell(cell, index, savedWidths)],\n        [\"button\", () => this.renderButtonCell(cell, index, savedWidths)]\n      ])}\n                `\n    ) : null}\n      </dh-table-row>\n    `;\n  }\n  renderSelectboxCell(cell, index, savedWidths) {\n    return html`\n      <dh-table-body-cell type=\"selectbox\">\n        <dh-checkbox\n          index=\"${index}\"\n          ?checked=${cell.value ? !!parseInt(cell.value) : false}\n          ?disabled=\"${this.isNotEditable(cell.attributes) || !this.editable}\"\n          exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"\n        ></dh-checkbox>\n      </dh-table-body-cell>\n    `;\n  }\n  renderCheckboxCell(cell, index, savedWidths) {\n    return html`\n      <dh-table-body-cell\n        index=\"${index}\"\n        type=\"checkbox\"\n        ?checked=${typeof cell.value === \"boolean\" ? cell.value : cell.value ? !!parseInt(cell.value) : false}\n        ?disabled=\"${this.isNotEditable(cell.attributes) || !this.editable}\"\n        exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text, dh-checkbox-root, dh-checkbox-input\"\n      >\n        <dh-checkbox\n          index=\"${index}\"\n          ?checked=${typeof cell.value === \"boolean\" ? cell.value : cell.value ? !!parseInt(cell.value) : false}\n          ?disabled=\"${this.isNotEditable(cell.attributes) || !this.editable}\"\n          exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"\n        ></dh-checkbox>\n      </dh-table-body-cell>\n    `;\n  }\n  renderTextCell(cell, index, savedWidths) {\n    return html`\n      <dh-table-body-cell\n        index=\"${index}\"\n        type=\"text\"\n        ?notEditable=\"${this.isNotEditable(cell.attributes)}\"\n        exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n        >${cell.value}</dh-table-body-cell\n      >\n    `;\n  }\n  renderNumberCell(cell, index, savedWidths) {\n    return html`\n      <dh-table-body-cell\n        index=\"${index}\"\n        type=\"number\"\n        ?notEditable=\"${this.isNotEditable(cell.attributes)}\"\n        exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n        >${cell.value}</dh-table-body-cell\n      >\n    `;\n  }\n  renderDateCell(cell, index, savedWidths) {\n    return html`\n      <dh-table-body-cell\n        index=\"${index}\"\n        type=\"date\"\n        ?notEditable=\"${this.isNotEditable(cell.attributes)}\"\n        .valueAsDate=\"${cell.value ? new Intl.DateTimeFormat(navigator.language, this.dateOptions).format(new Date(cell.value)) : void 0}\"\n        exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n        >${cell.value ? new Intl.DateTimeFormat(navigator.language, this.dateOptions).format(new Date(cell.value)) : \"\"}</dh-table-body-cell\n      >\n    `;\n  }\n  renderDropdownCell(cell, index, savedWidths) {\n    return html`\n      <dh-table-body-cell\n        index=\"${index}\"\n        type=\"dropdown\"\n        ?notEditable=\"${this.isNotEditable(cell.attributes)}\"\n        exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n      >\n        <dh-select\n          ?withoutEmptyDefault=\"${this.theTableObject.header[index].attributes.indexOf(\"withoutEmptyDefault\") > -1}\"\n          ?disabled=\"${this.isNotEditable(cell.attributes)}\"\n          .selectOptions=\"${cell.objectValues}\"\n          exportparts=\"root: dh-select-root, trigger: dh-select-trigger, label: dh-select-label, icon: dh-select-icon, menu: dh-select-menu, input: dh-select-input, content: dh-select-content, item: dh-select-item, selected: dh-select-selected\"\n        >\n        </dh-select>\n      </dh-table-body-cell>\n    `;\n  }\n  renderImgCell(cell, index, savedWidths) {\n    return html`\n      <dh-table-body-cell type=\"img\" ?notEditable=\"${this.isNotEditable(cell.attributes)}\">\n        <img class=\"img\" index=\"${index}\" src=\"${cell.value}\" />\n      </dh-table-body-cell>\n    `;\n  }\n  renderButtonCell(cell, index, savedWidths) {\n    return html`\n      <dh-table-body-cell type=\"button\" ?notEditable=\"${this.isNotEditable(cell.attributes)}\">\n        <dh-button\n          class=\"img\"\n          index=\"${index}\"\n          variant=\"outlined\"\n          .buttonText=\"${cell.value}\"\n          exportparts=\"root: dh-button-root, label: dh-button-label, icon: dh-button-icon\"\n        ></dh-button>\n      </dh-table-body-cell>\n    `;\n  }\n  getTableObject() {\n    return this.theTableObject;\n  }\n  validateObject(data) {\n    data.header.forEach((head) => {\n      if (head.attributes === void 0) {\n        head.attributes = [];\n      }\n      if (head.defaultWidth === void 0) {\n        head.defaultWidth = \"\";\n      }\n    });\n    data.rows.forEach((row) => {\n      if (!row.id) {\n        row.id = `r${++this.rowIdCounter}`;\n      }\n      row.forEach((cell) => {\n        if (cell.attributes === void 0) {\n          cell.attributes = [];\n        }\n        if (cell.objectValues === void 0) {\n          cell.objectValues = [];\n        }\n      });\n    });\n    return data;\n  }\n  getUseStandard(index) {\n    const headerCells = Array.from(this.renderRoot.querySelectorAll(\"[dh-table-head-cell]\"));\n    return headerCells[index]?.hasAttribute(\"useStandard\") ?? false;\n  }\n  onClickEvent(event2) {\n    const newEvent = this.cloneEvent(event2);\n    const mouseEvent = event2;\n    const isCtrlPressed = mouseEvent.ctrlKey;\n    const isShiftPressed = mouseEvent.shiftKey;\n    const target = event2.target.parentElement;\n    const tagName = target?.tagName;\n    this.timer = window.setTimeout(() => {\n      if (!this.prevent) {\n        if (target?.getAttribute(\"type\") != \"dropdown\") {\n          if ((isCtrlPressed || target?.hasAttribute(\"dh-table-body-cell\") || tagName?.toLowerCase() == \"dh-table-row\") && !isShiftPressed) {\n            this.editingCellContent(newEvent);\n            if (!this.isEdited) {\n              this.selectRow(newEvent);\n            }\n            this.isEdited = false;\n          } else if (isShiftPressed) {\n            this.multiSelectRow(newEvent);\n          }\n        }\n      }\n    }, this.delay);\n    this.prevent = false;\n  }\n  cloneEvent(event2) {\n    const clone = {};\n    for (const p in event2) {\n      const d = Object.getOwnPropertyDescriptor(event2, p);\n      if (d && (!d.writable || !d.configurable || !d.enumerable || d.get || d.set)) {\n        Object.defineProperty(clone, p, d);\n      } else {\n        clone[p] = event2[p];\n      }\n    }\n    Object.setPrototypeOf(clone, event2);\n    return clone;\n  }\n  dblclick(event2) {\n    clearTimeout(this.timer);\n    this.prevent = true;\n    const target = event2.target.parentElement;\n    const tagName = target?.tagName;\n    if (tagName?.toLowerCase() == \"dh-table-body-cell\") {\n      const row = target?.parentElement;\n      this.dblRowClick.dispatch(row);\n    } else if (tagName?.toLowerCase() == \"dh-table-row\") {\n      this.dblRowClick.dispatch(target);\n    }\n  }\n  resizeBodyCells(event2) {\n    const { width, headerKey } = event2.detail;\n    if (!this.isResizing) {\n      this.isResizing = true;\n      this.pendingColumnWidths = [...this.columnWidths];\n    }\n    const headerCells = Array.from(this.renderRoot.querySelectorAll(\"[dh-table-head-cell]\"));\n    let cellIndex = headerKey ? headerCells.findIndex((child) => child.getAttribute(\"key\") === headerKey) : -1;\n    if (cellIndex === -1 && event2.detail.sourceElement) {\n      cellIndex = headerCells.indexOf(event2.detail.sourceElement);\n    }\n    if (cellIndex === -1) return;\n    this.pendingColumnWidths[cellIndex] = width;\n    const cols = this.pendingColumnWidths.join(\" \");\n    const gridHeader = this.renderRoot.querySelector(\".grid-header\");\n    if (gridHeader) {\n      gridHeader.style.gridTemplateColumns = cols;\n    }\n    const virtualRows = this.renderRoot.querySelector(\".virtual-rows\");\n    if (virtualRows) {\n      virtualRows.style.gridTemplateColumns = cols;\n    }\n    const cell = headerCells[cellIndex];\n    if (cell) {\n      const scrollEl = this.renderRoot.querySelector(\"#grid-scroll\");\n      if (scrollEl) {\n        const cellRect = cell.getBoundingClientRect();\n        const scrollRect = scrollEl.getBoundingClientRect();\n        if (cellRect.right > scrollRect.right) {\n          scrollEl.scrollLeft += cellRect.right - scrollRect.right + 20;\n        }\n      }\n    }\n    const dataIndex = this.withCheckbox ? cellIndex - 1 : cellIndex;\n    if (dataIndex >= 0) {\n      const savedWidths = JSON.parse(localStorage.getItem(`columnWidths_${this.getAttribute(\"localStorageKey\")}`) || \"{}\");\n      savedWidths[dataIndex] = width;\n      localStorage.setItem(`columnWidths_${this.getAttribute(\"localStorageKey\")}`, JSON.stringify(savedWidths));\n    }\n  }\n  stopResizing() {\n    this.isResizing = false;\n    if (this.pendingColumnWidths.length > 0) {\n      this.columnWidths = this.pendingColumnWidths;\n      this.pendingColumnWidths = [];\n    }\n  }\n  buildColumnWidths(savedWidths) {\n    const widths = [];\n    if (this.withCheckbox) {\n      widths.push(this.withMasterCheckbox ? \"40px\" : \"65px\");\n    }\n    this.theTableObject.header.forEach((cell, index) => {\n      widths.push(savedWidths[index] || cell.defaultWidth || \"200px\");\n    });\n    return widths;\n  }\n  firstUpdated() {\n    this.scaleColumnsToFit();\n    this.updateScrollView();\n  }\n  updated(changedProperties) {\n    if (changedProperties.has(\"hideInactiveRows\")) {\n      this.filterRows();\n    }\n  }\n  scaleColumnsToFit() {\n    const savedWidths = JSON.parse(localStorage.getItem(`columnWidths_${this.getAttribute(\"localStorageKey\")}`) || \"{}\");\n    if (Object.keys(savedWidths).length > 0) return;\n    const scrollEl = this.renderRoot?.querySelector(\"#grid-scroll\");\n    if (!scrollEl || scrollEl.clientWidth <= 0) return;\n    const availableWidth = scrollEl.clientWidth;\n    const totalCurrent = this.columnWidths.reduce((sum, w) => sum + (parseInt(w) || 200), 0);\n    if (totalCurrent >= availableWidth) return;\n    const scale = availableWidth / totalCurrent;\n    this.columnWidths = this.columnWidths.map((w) => {\n      const px = parseInt(w) || 200;\n      return Math.round(px * scale) + \"px\";\n    });\n  }\n  //Methoden zum manipulieren von Reihen\n  addNewRow(event2) {\n    event2.stopPropagation();\n    const newRow = new TableRowArray();\n    newRow.isNewRow = true;\n    const currentMaxPosition = this.theTableObject.rows.reduce((row, currentRow) => Math.max(row, currentRow.position), 0);\n    newRow.position = currentMaxPosition + 1;\n    newRow.id = crypto.randomUUID?.() ?? `${Date.now()}-${Math.random().toString(36).slice(2)}`;\n    for (let i = 0; i < this.theTableObject.header.length; i++) {\n      newRow.push({\n        value: \"\",\n        objectValues: [{ id: \"\", name: \"\", selected: \"\" }],\n        attributes: []\n      });\n    }\n    this.theTableObject.rows.push(newRow);\n    this.filterRows();\n    this.addNewRowEvent.dispatch(newRow);\n  }\n  removeRow(event2) {\n    event2.stopPropagation();\n    let selectedRows = this.theTableObject.rows.filter((row) => row.isSelected);\n    const notDeletableRow = selectedRows.filter((row) => row.notDeletable);\n    selectedRows = selectedRows.filter((row) => !row.notDeletable);\n    notDeletableRow.forEach((row) => row.isSelected = false);\n    selectedRows.forEach((row) => {\n      const id = row.id;\n      const index = this.theTableObject.rows.findIndex((row2) => row2.id == id);\n      this.theTableObject.rows.splice(index, 1);\n      this.removeRowEvent.dispatch(id);\n    });\n    this.removeRows.dispatch(selectedRows);\n    const checkAllRowsButton = this.checkAllRowsButton;\n    checkAllRowsButton.removeAttribute(\"checkedAll\");\n    checkAllRowsButton.classList.remove(\"checkedAll\");\n    this.theTableObject.rows.forEach((row) => row.isSelected = false);\n    this.filterRows();\n    this.checkAllRowsEvent.dispatch({ isChecked: false, rows: this.filteredRows });\n  }\n  cloneRow(event2) {\n    event2.stopPropagation();\n    let selectedRows = this.theTableObject.rows.filter((row) => row.isSelected);\n    const notCloneableRows = selectedRows.filter((row) => row.notCloneable);\n    selectedRows = selectedRows.filter((row) => !row.notCloneable);\n    notCloneableRows.forEach((row) => row.isSelected = false);\n    selectedRows.forEach((row) => {\n      const id = row.id;\n      const sameRow = this.getSameRow(id);\n      const index = this.theTableObject.rows.findIndex((row2) => row2.id == id);\n      if (sameRow) {\n        const clonedRow = sameRow.clone();\n        clonedRow.position = sameRow.position + 1;\n        let counter = 0;\n        for (let i = index + 1; i < this.theTableObject.rows.length; i++) {\n          this.theTableObject.rows[i].position = sameRow.position + 2 + counter;\n          counter++;\n        }\n        this.theTableObject.rows.splice(index + 1, 0, clonedRow);\n        this.clonedRowEvent.dispatch(this.theTableObject.rows);\n      }\n    });\n    const checkAllRowsButton = this.checkAllRowsButton;\n    checkAllRowsButton.removeAttribute(\"checkedAll\");\n    checkAllRowsButton.classList.remove(\"checkedAll\");\n    this.theTableObject.rows.forEach((row) => row.isSelected = false);\n    this.filterRows();\n    this.checkAllRowsEvent.dispatch({ isChecked: false, rows: this.filteredRows });\n  }\n  checkAllRows(event2) {\n    const checkAllRowsButton = this.checkAllRowsButton;\n    const isCurrentlyChecked = checkAllRowsButton.hasAttribute(\"checkedAll\");\n    this.toggleAllRows(!isCurrentlyChecked);\n  }\n  /**\n   * Marks every filtered row as selected or deselected and re-renders the\n   * visible viewport. Use from outside the table (e.g. a master checkbox\n   * in the header column) to drive the existing \"select all\" behaviour\n   * without depending on the toolbar button being visible.\n   */\n  toggleAllRows(isChecked) {\n    const checkAllRowsButton = this.checkAllRowsButton;\n    if (isChecked) {\n      checkAllRowsButton?.setAttribute(\"checkedAll\", \"\");\n      checkAllRowsButton?.classList.add(\"checkedAll\");\n    } else {\n      checkAllRowsButton?.removeAttribute(\"checkedAll\");\n      checkAllRowsButton?.classList.remove(\"checkedAll\");\n    }\n    this.filteredRows.forEach((row) => {\n      const selectedRow = this.theTableObject.rows.find((tableRow) => tableRow.id == row.id);\n      if (selectedRow) {\n        selectedRow.isSelected = isChecked;\n      }\n    });\n    this.updateScrollView();\n    this.checkAllRowsEvent.dispatch({ isChecked, rows: this.filteredRows });\n  }\n  editingCellContent(event2) {\n    const mouseEvent = event2;\n    const isCtrlPressed = mouseEvent.ctrlKey;\n    if (!isCtrlPressed) {\n      let cell = event2.target;\n      if (cell.tagName.toLowerCase() == \"dh-table-row\" || cell.hasAttribute(\"dh-table-head-cell\")) {\n        return;\n      }\n      if (!cell.hasAttribute(\"dh-table-body-cell\")) {\n        const realCell = cell.closest(\"[dh-table-body-cell]\");\n        if (realCell) {\n          cell = realCell;\n        } else {\n          return;\n        }\n      }\n      const targetParentRow = cell.closest(\"dh-table-row\");\n      if (cell) {\n        if (this.editable) {\n          if (!cell.hasAttribute(\"notEditable\")) {\n            if (!targetParentRow?.hasAttribute(\"notEditable\")) {\n              this.editingRowEvent.dispatch(targetParentRow);\n              if (cell.type != \"checkbox\" && cell.type != \"selectbox\" && cell.type != \"dropdown\") {\n                cell.setMode(\"edit\");\n                let cellValue = cell.innerText.trim();\n                if (!cellValue) {\n                  cellValue = cell.value;\n                }\n                cell.value = cellValue;\n                cell.setInputFocus();\n              }\n              if (cell.type != \"selectbox\") {\n                this.isEdited = true;\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n  clickHeader(event2) {\n    if (this.isResizing) {\n      return;\n    }\n    if (this.theTableObject.rows.length <= 1) {\n      return;\n    }\n    const target = event2.composedPath().find(\n      (el) => el instanceof HTMLElement && el.matches(\"[dh-table-head-cell]\")\n    );\n    if (!target) {\n      return;\n    }\n    const key = target.getAttribute(\"key\");\n    const header = this.theTableObject.header.find((head) => head.key == key);\n    if (!header) {\n      return;\n    }\n    const isNotSortable = header.attributes.some((attribute) => attribute == \"notSortable\") || target.hasAttribute(\"notSortable\");\n    if (isNotSortable) {\n      return;\n    }\n    let direction;\n    if (this.currentSortKey === header.key) {\n      direction = this.currentSortDirection === \"asc\" ? \"desc\" : \"asc\";\n    } else {\n      direction = this.defaultSortDirection;\n    }\n    this.currentSortKey = header.key;\n    this.currentSortDirection = direction;\n    this.theTableObject.rows = this.sort(header, direction, this.theTableObject.rows);\n    this.sortedRows.dispatch(this.theTableObject);\n    this.toggleSortIconClasses(target, direction);\n    this.filterRows();\n  }\n  sort(header, direction, array) {\n    if (array.length <= 1) {\n      return array;\n    }\n    const headerIndex = this.theTableObject.header.findIndex((head) => head.key == header.key);\n    if (headerIndex === -1) {\n      return array;\n    }\n    const type = header.type;\n    const factor = direction === \"desc\" ? -1 : 1;\n    const collator = type === \"number\" || type === \"date\" ? null : new Intl.Collator(void 0, { sensitivity: \"base\" });\n    const decorated = array.map((row) => ({\n      key: this.prepareSortKey(row[headerIndex]?.value, type),\n      row\n    }));\n    decorated.sort((a, b) => {\n      const ak = a.key;\n      const bk = b.key;\n      if (type === \"date\") {\n        const aNaN = typeof ak === \"number\" && isNaN(ak);\n        const bNaN = typeof bk === \"number\" && isNaN(bk);\n        if (aNaN && bNaN) {\n          return 0;\n        }\n        if (aNaN) {\n          return direction === \"asc\" ? -1 : 1;\n        }\n        if (bNaN) {\n          return direction === \"asc\" ? 1 : -1;\n        }\n        return factor * (ak - bk);\n      }\n      if (type === \"number\") {\n        return factor * (ak - bk);\n      }\n      return factor * collator.compare(ak, bk);\n    });\n    return decorated.map((entry) => entry.row);\n  }\n  prepareSortKey(value, type) {\n    if (type === \"number\") {\n      const n = typeof value === \"number\" ? value : parseFloat(value);\n      return isNaN(n) ? 0 : n;\n    }\n    if (type === \"date\") {\n      return value instanceof Date ? value.getTime() : new Date(value).getTime();\n    }\n    return (value ?? \"\").toString();\n  }\n  toggleSortIconClasses(target, sortType) {\n    const gridHeader = this.renderRoot.querySelector(\".grid-header\");\n    if (gridHeader) {\n      const siblingElements = Array.from(gridHeader.querySelectorAll(\"[dh-table-head-cell]\"));\n      siblingElements.forEach((sibling) => {\n        const isNotSortable = sibling.hasAttribute(\"notSortable\");\n        if (!isNotSortable) {\n          sibling.classList.remove(\"asc\", \"desc\");\n          sibling.classList.add(\"unsorted\");\n          sibling.setAttribute(\"sorting\", \"unsorted\");\n        }\n      });\n      if (sortType == \"asc\") {\n        target.classList.add(\"asc\");\n        target.classList.remove(\"unsorted\");\n        target.setAttribute(\"sorting\", \"asc\");\n      } else {\n        target.classList.add(\"desc\");\n        target.classList.remove(\"unsorted\");\n        target.setAttribute(\"sorting\", \"desc\");\n      }\n    }\n  }\n  //Hilfsmethoden\n  getSameRow(id) {\n    return this.theTableObject.rows.find((row) => row.id == id);\n  }\n  getSameRowIndex(id) {\n    return this.theTableObject.rows.findIndex((row) => row.id == id);\n  }\n  getSameRowBasedOnIndex(index) {\n    return this.theTableObject.rows[index];\n  }\n  getHeaderCells() {\n    return Array.from(this.renderRoot.querySelectorAll(\"[dh-table-head-cell]\"));\n  }\n  getHeaderRow() {\n    let row = this.querySelector(\"dh-table-row[slot=table-head]\");\n    if (!row) {\n      row = this.renderRoot.querySelector(\"dh-table-row\");\n    }\n    return row;\n  }\n  getBodyRows() {\n    let rows = Array.from(this.querySelectorAll(\"dh-table-row[slot=table-body]\"));\n    if (rows.length == 0) {\n      rows = Array.from(this.renderRoot.querySelectorAll(\"dh-table-row.body\"));\n    }\n    if (rows.length == 0) {\n      rows = Array.from(this.renderRoot.querySelectorAll(\".virtual-rows dh-table-row\"));\n    }\n    return rows;\n  }\n  async addFilterRule(value, index) {\n    this.filterRules.push({ index, value });\n    await this.filterRows();\n  }\n  removeFilterRule(value, index) {\n    const removeIndex = this.filterRules.findIndex((rule) => rule.value == value && rule.index == index);\n    this.filterRules.splice(removeIndex, 1);\n    this.filterRows();\n  }\n  async filterText() {\n    this.removeFilterRule(this.filterValue, -1);\n    const value = this.filterInput.getInputValue().toLowerCase();\n    this.filterValue = value;\n    await this.addFilterRule(value, -1);\n    this.filterInput.focus();\n  }\n  async filterRows() {\n    const rows = this.filterRules.length === 0 ? this.theTableObject.rows : this.theTableObject.rows.filter((row) => {\n      return this.filterRules.every((rule) => {\n        if (rule.index == -1) {\n          return row.some((cell) => cell.value?.toString().toLowerCase().includes(rule.value));\n        } else {\n          return row[rule.index].value == rule.value;\n        }\n      });\n    });\n    const predicateFiltered = this.rowFilterPredicate ? rows.filter(this.rowFilterPredicate) : rows;\n    const hideInactive = this.hideInactiveRows || this.activeFilter && !!this.activeFilterInput?.getCheckboxIsChecked();\n    this.filteredRows = hideInactive ? predicateFiltered.filter((row) => row.active) : predicateFiltered;\n    this.lastProcessedRows = this.theTableObject.rows;\n    this.updateScrollView();\n  }\n  isNotEditable(attributes) {\n    return attributes.indexOf(\"notEditable\") > -1;\n  }\n  useStandard(attributes) {\n    return attributes.indexOf(\"useStandard\") > -1;\n  }\n  getSelectedRows() {\n    let rows = Array.from(this.querySelectorAll(\"dh-table-row[slot=table-body].selected\"));\n    if (rows.length == 0) {\n      rows = Array.from(this.renderRoot.querySelectorAll(\"dh-table-row.selected\"));\n    }\n    return rows;\n  }\n  getRows() {\n    let rows = Array.from(this.querySelectorAll(\"dh-table-row[slot=table-body]\"));\n    if (rows.length == 0) {\n      rows = Array.from(this.renderRoot.querySelectorAll(\"dh-table-row\"));\n    }\n    return rows;\n  }\n  selectRow(event2) {\n    if (this.notSelectable) {\n      return;\n    }\n    const mouseEvent = event2;\n    const target = mouseEvent.target.parentElement;\n    const isCtrlPressed = mouseEvent?.ctrlKey;\n    let row;\n    if (target) {\n      const tagName = target.tagName;\n      if (tagName.toLowerCase() == \"dh-table-body-cell\") {\n        row = target?.parentElement;\n      } else {\n        row = target;\n      }\n      this.selected(row, isCtrlPressed, tagName);\n    }\n  }\n  async multiSelectRow(event2) {\n    if (this.notSelectable) {\n      return;\n    }\n    const target = event2.target.parentElement;\n    const tagName = target?.tagName;\n    let tableRow;\n    const mouseEvent = event2;\n    const isShiftPressed = mouseEvent.shiftKey;\n    if (tagName?.toLowerCase() == \"dh-table-body-cell\") {\n      tableRow = target?.parentElement;\n    } else {\n      tableRow = target;\n    }\n    if (isShiftPressed) {\n      if (!this.firstShiftPressedElementId) {\n        this.firstShiftPressedElementId = tableRow.id;\n      } else {\n        const firstIndex = this.theTableObject.rows.findIndex((row) => row.id == this.firstShiftPressedElementId);\n        const lastIndex = this.theTableObject.rows.findIndex((row) => row.id == tableRow.id);\n        let rangeSeries = [];\n        if (firstIndex < lastIndex) {\n          rangeSeries = this.theTableObject.rows.slice(firstIndex, lastIndex + 1);\n        } else {\n          rangeSeries = this.theTableObject.rows.slice(lastIndex, firstIndex + 1);\n        }\n        rangeSeries.forEach((row) => {\n          row.isSelected = true;\n        });\n        this.firstShiftPressedElementId = \"\";\n        await this.updateScrollView();\n        this.rowRangeIsSelected.dispatch({ dataRowRange: rangeSeries });\n      }\n    }\n  }\n  async selected(row, isCtrlOrShiftPressed, tagName) {\n    if (this.notSelectable) {\n      return;\n    }\n    const id = row.getAttribute(\"id\");\n    if (id) {\n      const sameRow = this.getSameRow(id);\n      if (id) {\n        if (!this.useSingleSelect) {\n          sameRow.isSelected = !sameRow.isSelected;\n          await this.updateScrollView();\n          this.anotherRowIsSelected.dispatch({ dataRow: sameRow });\n        } else {\n          this.theTableObject.rows.forEach((row2) => row2.isSelected = false);\n          sameRow.isSelected = !sameRow.isSelected;\n          await this.updateScrollView();\n          this.singleRowIsSelected.dispatch({ dataRow: sameRow });\n        }\n      }\n    }\n  }\n  async exportTableAsCsv() {\n    const keys = [];\n    let keyString = \"\";\n    let contentString = \"\";\n    this.theTableObject.header.forEach((head) => keys.push(head.key));\n    keys.push(\"sortIndex\");\n    for (let i = 0; i < keys.length; i++) {\n      const title = keys[i];\n      const halfCleanTitle = title.replace(\"\\\\\", \"\\\\\\\\\");\n      const cleanTitle = halfCleanTitle.replace('\"', '\\\\\"');\n      if (i == keys.length - 1) {\n        keyString = keyString + '\"' + cleanTitle + '\"\\r\\n';\n        contentString = keyString;\n      } else {\n        keyString = keyString + '\"' + cleanTitle + '\";';\n      }\n    }\n    for (let i = 0; i < this.theTableObject.rows.length; i++) {\n      let rowString = \"\";\n      for (let x = 0; x < this.theTableObject.rows[i].length; x++) {\n        const value = String(this.theTableObject.rows[i][x].value ?? \"\");\n        const halfCleanValue = value.replace(\"\\\\\", \"\\\\\\\\\");\n        const cleanValue = halfCleanValue.replace('\"', '\\\\\"');\n        if (x == this.theTableObject.rows[i].length - 2 && i + 1 < this.theTableObject.rows.length) {\n          rowString = rowString + '\"' + cleanValue + '\"\\r\\n';\n          contentString = contentString + rowString;\n        } else if (x == this.theTableObject.rows[i].length - 2 && i + 1 == this.theTableObject.rows[i].length) {\n          rowString = rowString + '\"' + cleanValue + '\"';\n          contentString = contentString + rowString;\n        } else {\n          rowString = rowString + '\"' + cleanValue + '\";';\n        }\n      }\n    }\n    try {\n      const stringBuffer = cptable$1.utils.encode(this.encoding, contentString);\n      const link = document.createElement(\"a\");\n      const file = new Blob([new Uint8Array(stringBuffer)], { type: \"text/plain\" });\n      link.href = URL.createObjectURL(file);\n      link.download = \"table.csv\";\n      link.click();\n      URL.revokeObjectURL(link.href);\n    } catch (e) {\n      console.error(e);\n      this.exportError.dispatch(e);\n    }\n  }\n  openUploadFileDialog() {\n    this.uploadInput.click();\n  }\n  async readFile() {\n    const files = this.uploadInput.files;\n    let file;\n    if (files) {\n      file = files[0];\n    }\n    const fileReader = new FileReader();\n    if (file) {\n      fileReader.readAsArrayBuffer(file);\n      const buffer = await new Promise((resolve) => fileReader.addEventListener(\"load\", () => resolve(fileReader.result)));\n      this.importTableAsCsv(buffer);\n    }\n  }\n  importTableAsCsv(buffer) {\n    try {\n      const data = cptable$1.utils.decode(this.encoding, new Uint8Array(buffer));\n      const importObject = Mama.parse(data, { delimiter: \";\" });\n      const importData = { rows: importObject.data.slice(1), header: importObject.data.slice(0, 1)[0] };\n      this.importTableData.dispatch(importData);\n    } catch (e) {\n      console.error(e);\n      this.importError.dispatch(e);\n    }\n  }\n  normalizePositions() {\n    this.theTableObject.rows.sort((a, b) => a.position - b.position);\n    this.theTableObject.rows.forEach((row, i) => row.position = i + 1);\n  }\n  positionUp(event2) {\n    const selectedRows = this.getSelectedRows();\n    if (selectedRows.length > 1) {\n      this.positionFail.dispatch({ error: \"Too many rows selected\" });\n      return;\n    }\n    if (selectedRows.length === 0) return;\n    this.normalizePositions();\n    const sameTableRow = this.theTableObject.rows.find((row) => row.id == selectedRows[0].id);\n    if (!sameTableRow) return;\n    const index = this.theTableObject.rows.indexOf(sameTableRow);\n    if (index <= 0) {\n      this.positionFail.dispatch({ error: \"Row is in first position\" });\n      return;\n    }\n    const other = this.theTableObject.rows[index - 1];\n    const tempPos = sameTableRow.position;\n    sameTableRow.position = other.position;\n    other.position = tempPos;\n    this.theTableObject.rows.sort((a, b) => a.position - b.position);\n    this.normalizePositions();\n    this.filterRows();\n    this.positionUpEvent.dispatch(this.theTableObject);\n  }\n  positionDown(event2) {\n    const selectedRows = this.getSelectedRows();\n    if (selectedRows.length > 1) {\n      this.positionFail.dispatch({ error: \"Too many rows selected\" });\n      return;\n    }\n    if (selectedRows.length === 0) return;\n    this.normalizePositions();\n    const sameTableRow = this.theTableObject.rows.find((row) => row.id == selectedRows[0].id);\n    if (!sameTableRow) return;\n    const index = this.theTableObject.rows.indexOf(sameTableRow);\n    if (index >= this.theTableObject.rows.length - 1) {\n      this.positionFail.dispatch({ error: \"Row is in last position\" });\n      return;\n    }\n    const other = this.theTableObject.rows[index + 1];\n    const tempPos = sameTableRow.position;\n    sameTableRow.position = other.position;\n    other.position = tempPos;\n    this.theTableObject.rows.sort((a, b) => a.position - b.position);\n    this.normalizePositions();\n    this.filterRows();\n    this.positionDownEvent.dispatch(this.theTableObject);\n  }\n  // Signatur bleibt async für Backward-Compat (Aufrufer mit `await` brechen\n  // sonst), intern aber komplett synchron: keine Microtask-Yields mehr im\n  // Scroll-Hot-Path. Bei schnellem Scrollen kommt das Update jetzt im selben\n  // rAF-Frame zustande wie der Scroll-Event.\n  async updateScrollView() {\n    if (this.isResizing) return;\n    const container = this.scrollContainer;\n    if (!container) return;\n    this.blur();\n    const scrollTop = container.scrollTop;\n    this.lastScrollTop = scrollTop;\n    let height = container.offsetHeight;\n    if (height === 0) {\n      height = window.innerHeight;\n    }\n    const visibleCount = Math.ceil(height / this.lineHeight);\n    const overscan = DhTable.OVERSCAN;\n    const startNode = Math.max(0, Math.floor(scrollTop / this.lineHeight) - overscan);\n    const slabSize = Math.min(this.filteredRows.length - startNode, visibleCount + 2 * overscan);\n    this.visibleNodes = this.filteredRows.slice(startNode, startNode + slabSize + 1);\n    this.bodyOffset = startNode * this.lineHeight;\n  }\n  resetValue(event2) {\n    const target = event2.target;\n    if (target) {\n      target.value = \"\";\n    }\n  }\n  get hasManipulationElements() {\n    return this.manipulable || this.positionable || this.generalFilter || this.activeFilter;\n  }\n};\n// Overscan-Puffer (Reihen) oberhalb und unterhalb der Viewport.\n// BEWUSST STABIL: ein konstanter Pool gibt Lit ein DOM mit fester Größe\n// pro Scroll-Frame, sodass DOM-Elemente recycled werden statt bei jedem\n// Tick neu instanziiert (importNode/setAttribute schoss sonst hoch).\nDhTable.OVERSCAN = 60;\nDhTable.SCROLL_END_DELAY_MS = 150;\nDhTable.styles = [\n  css`\n      ${unsafeCSS(style$w)}\n    `\n];\n__decorateClass$w([\n  query(\"#check-all-rows\")\n], DhTable.prototype, \"checkAllRowsButton\", 2);\n__decorateClass$w([\n  query(\"#upload-input\")\n], DhTable.prototype, \"uploadInput\", 2);\n__decorateClass$w([\n  query(\"#filter-input\")\n], DhTable.prototype, \"filterInput\", 2);\n__decorateClass$w([\n  query(\"#active-filter-input\")\n], DhTable.prototype, \"activeFilterInput\", 2);\n__decorateClass$w([\n  query(\"#grid-scroll\")\n], DhTable.prototype, \"scrollContainer\", 2);\n__decorateClass$w([\n  property({ type: Boolean })\n], DhTable.prototype, \"sortable\", 2);\n__decorateClass$w([\n  property({ type: Boolean })\n], DhTable.prototype, \"positionable\", 2);\n__decorateClass$w([\n  property({ type: Boolean })\n], DhTable.prototype, \"manipulable\", 2);\n__decorateClass$w([\n  property({ type: Boolean })\n], DhTable.prototype, \"notAddRow\", 2);\n__decorateClass$w([\n  property({ type: Boolean })\n], DhTable.prototype, \"notCloneRow\", 2);\n__decorateClass$w([\n  property({ type: Boolean })\n], DhTable.prototype, \"notRemoveRow\", 2);\n__decorateClass$w([\n  property({ type: Boolean })\n], DhTable.prototype, \"editable\", 2);\n__decorateClass$w([\n  property({ type: Boolean })\n], DhTable.prototype, \"notSelectable\", 2);\n__decorateClass$w([\n  property({ type: Boolean, reflect: true })\n], DhTable.prototype, \"withCheckbox\", 2);\n__decorateClass$w([\n  property({ type: Boolean })\n], DhTable.prototype, \"generalFilter\", 2);\n__decorateClass$w([\n  property({ type: Boolean })\n], DhTable.prototype, \"activeFilter\", 2);\n__decorateClass$w([\n  property({ type: Boolean, reflect: true })\n], DhTable.prototype, \"hideInactiveRows\", 2);\n__decorateClass$w([\n  property({ type: Boolean, reflect: true })\n], DhTable.prototype, \"loading\", 2);\n__decorateClass$w([\n  property({ type: String })\n], DhTable.prototype, \"filterLabel\", 2);\n__decorateClass$w([\n  property({ type: Number, reflect: true })\n], DhTable.prototype, \"lineHeight\", 2);\n__decorateClass$w([\n  property({ type: String })\n], DhTable.prototype, \"activeFilterLabel\", 2);\n__decorateClass$w([\n  property({ type: Boolean })\n], DhTable.prototype, \"downloadable\", 2);\n__decorateClass$w([\n  property({ type: Boolean })\n], DhTable.prototype, \"uploadable\", 2);\n__decorateClass$w([\n  property({ type: String })\n], DhTable.prototype, \"encoding\", 2);\n__decorateClass$w([\n  property({ type: String })\n], DhTable.prototype, \"selectHeaderValue\", 2);\n__decorateClass$w([\n  property({ type: String })\n], DhTable.prototype, \"addRowTitle\", 2);\n__decorateClass$w([\n  property({ type: String })\n], DhTable.prototype, \"cloneRowTitle\", 2);\n__decorateClass$w([\n  property({ type: String })\n], DhTable.prototype, \"removeRowTitle\", 2);\n__decorateClass$w([\n  property({ type: String })\n], DhTable.prototype, \"rowPositionUpTitle\", 2);\n__decorateClass$w([\n  property({ type: String })\n], DhTable.prototype, \"rowPositionDownTitle\", 2);\n__decorateClass$w([\n  property({ type: String })\n], DhTable.prototype, \"checkAllRowsTitle\", 2);\n__decorateClass$w([\n  property({ type: Boolean, reflect: true })\n], DhTable.prototype, \"hideCheckAllRowsButton\", 2);\n__decorateClass$w([\n  property({ type: Boolean, reflect: true })\n], DhTable.prototype, \"withMasterCheckbox\", 2);\n__decorateClass$w([\n  property({ type: String })\n], DhTable.prototype, \"masterCheckboxAriaLabel\", 2);\n__decorateClass$w([\n  state()\n], DhTable.prototype, \"bodyOffset\", 2);\n__decorateClass$w([\n  state()\n], DhTable.prototype, \"columnWidths\", 2);\n__decorateClass$w([\n  state()\n], DhTable.prototype, \"theTableObject\", 2);\n__decorateClass$w([\n  property({ type: String, reflect: true })\n], DhTable.prototype, \"defaultWidth\", 2);\n__decorateClass$w([\n  property({ type: Boolean, reflect: true })\n], DhTable.prototype, \"useSingleSelect\", 2);\n__decorateClass$w([\n  state()\n], DhTable.prototype, \"visibleNodes\", 2);\n__decorateClass$w([\n  event({ bubbles: true, cancelable: true, composed: true }, \"dblRowClick\")\n], DhTable.prototype, \"dblRowClick\", 2);\n__decorateClass$w([\n  event({ bubbles: true, cancelable: true, composed: true }, \"addNewRow\")\n], DhTable.prototype, \"addNewRowEvent\", 2);\n__decorateClass$w([\n  event({ bubbles: true, cancelable: true, composed: true }, \"removeRow\")\n], DhTable.prototype, \"removeRowEvent\", 2);\n__decorateClass$w([\n  event({ bubbles: true, cancelable: true, composed: true }, \"removeRows\")\n], DhTable.prototype, \"removeRows\", 2);\n__decorateClass$w([\n  event({ bubbles: true, cancelable: true, composed: true }, \"checkAllRows\")\n], DhTable.prototype, \"checkAllRowsEvent\", 2);\n__decorateClass$w([\n  event({ bubbles: true, cancelable: true, composed: true }, \"clonedRow\")\n], DhTable.prototype, \"clonedRowEvent\", 2);\n__decorateClass$w([\n  event({ bubbles: true, cancelable: true, composed: true }, \"editingRow\")\n], DhTable.prototype, \"editingRowEvent\", 2);\n__decorateClass$w([\n  event({ bubbles: true, cancelable: true, composed: true }, \"sortedRows\")\n], DhTable.prototype, \"sortedRows\", 2);\n__decorateClass$w([\n  event({ bubbles: true, cancelable: true, composed: true }, \"rowRangeIsSelected\")\n], DhTable.prototype, \"rowRangeIsSelected\", 2);\n__decorateClass$w([\n  event({ bubbles: true, cancelable: true, composed: true }, \"anotherRowIsSelected\")\n], DhTable.prototype, \"anotherRowIsSelected\", 2);\n__decorateClass$w([\n  event({ bubbles: true, cancelable: true, composed: true }, \"singleRowIsSelected\")\n], DhTable.prototype, \"singleRowIsSelected\", 2);\n__decorateClass$w([\n  event({ bubbles: true, cancelable: true, composed: true }, \"exportError\")\n], DhTable.prototype, \"exportError\", 2);\n__decorateClass$w([\n  event({ bubbles: true, cancelable: true, composed: true }, \"importTableData\")\n], DhTable.prototype, \"importTableData\", 2);\n__decorateClass$w([\n  event({ bubbles: true, cancelable: true, composed: true }, \"importError\")\n], DhTable.prototype, \"importError\", 2);\n__decorateClass$w([\n  event({ bubbles: true, cancelable: true, composed: true }, \"positionFail\")\n], DhTable.prototype, \"positionFail\", 2);\n__decorateClass$w([\n  event({ bubbles: true, cancelable: true, composed: true }, \"positionUp\")\n], DhTable.prototype, \"positionUpEvent\", 2);\n__decorateClass$w([\n  event({ bubbles: true, cancelable: true, composed: true }, \"positionDown\")\n], DhTable.prototype, \"positionDownEvent\", 2);\n__decorateClass$w([\n  property({ type: String, reflect: true })\n], DhTable.prototype, \"defaultSortDirection\", 2);\nDhTable = __decorateClass$w([\n  customElement(\"dh-table\")\n], DhTable);\n\nvar style$v = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n  text-align: center;\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n  display: flex;\\n  font-family: \\\"furnview-icons-simple\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n  content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n  content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n  content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n  content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n  content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n  content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n  content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n  content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n  content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n  content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n  content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n  content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n  content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n  content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n  content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n  content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n  content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n  content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n  content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n  content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n  content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n  content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n  content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n  content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n  content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n  content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n  content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n  content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n  content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n  content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n  content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n  content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n  content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n  content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n  content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n  content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n  content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n  content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n  content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n  content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n  content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n  content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n  content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n  content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n  content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n  content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n  content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n  content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n  content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n  content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n  content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n  content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n  content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n  content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n  content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n  content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n  content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n  content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n  content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n  content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n  content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n  content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n  content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n  content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n  content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n  content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n  content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n  content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n  content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n  content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n  content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n  content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n  content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n  content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n  content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n  content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n  content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n  content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n  content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n  content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n  content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n  content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n  content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n  content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n  content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n  content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n  content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n  content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n  content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n  content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n  content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n  content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n  content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n  content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n  content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n  content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n  content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n  content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n  content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n  content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n  content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n  content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n  content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n  content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n  content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n  content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n  content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n  content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n  content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n  content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n  content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n  content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n  content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n  content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n  content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n  content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n  content: \\\"à\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n  content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n  content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n  content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n  content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n  content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n  content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n  content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n  content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n  content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n  content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n  content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n  content: \\\"í\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n  content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n  content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n  content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n  content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n  text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n  display: flex;\\n  font-family: \\\"furnview-icons-multi\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n  content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n  content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n  content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n  content: \\\"0\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n  content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n  content: \\\";\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n  content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n  content: \\\"=\\\\a;\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n  content: \\\"<\\\";\\n  position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n  content: \\\"8\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n  content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n  content: \\\":\\\\a 8\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n  content: \\\"9\\\";\\n  position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: flex;\\n  align-items: center;\\n  box-sizing: border-box;\\n  position: sticky;\\n  top: 0;\\n  z-index: 10;\\n  overflow: hidden;\\n  min-height: var(--dh-head-cell-height, 36px);\\n  padding: var(--dh-head-cell-padding, 12px 8px);\\n  border-bottom: 1px solid var(--dh-border-color, transparent);\\n  border-right: 1px solid var(--dh-border-color, transparent);\\n  font-weight: var(--dh-header-weight, inherit);\\n  color: var(--dh-header-color, inherit);\\n  background-color: var(--dh-head-cell-bg, var(--md-sys-color-surface-container, #fff));\\n}\\n\\n.rotate {\\n  transform: scaleY(-1);\\n}\\n\\n.container {\\n  display: flex;\\n  flex-direction: row;\\n  justify-content: space-between;\\n  align-items: center;\\n  width: 100%;\\n  height: 100%;\\n  overflow: hidden;\\n}\\n\\n#resize-element {\\n  top: 0;\\n  right: 0;\\n  width: var(--dh-resize-width, 5px);\\n  position: absolute;\\n  cursor: col-resize;\\n  user-select: none;\\n  height: 100%;\\n  background-color: var(--dh-resize-bg, rgba(0, 0, 0, 0.06));\\n  transition: background-color 200ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n#resize-element:hover {\\n  background-color: var(--dh-resize-hover-bg, var(--dh-state-hover-bg, rgba(0, 0, 0, 0.12)));\\n}\\n\\n:host([resizing]) {\\n  overflow: visible;\\n}\\n\\n:host([resizing]) #resize-element {\\n  width: 3px;\\n  background-color: var(--md-sys-color-primary, #FF8014);\\n  z-index: 100;\\n}\\n\\n:host([resizing]) #resize-element::after {\\n  content: \\\"\\\";\\n  position: absolute;\\n  top: 100%;\\n  left: 0;\\n  width: 3px;\\n  height: 100vh;\\n  background-color: var(--md-sys-color-primary, #FF8014);\\n}\";\n\nvar __defProp$t = Object.defineProperty;\nvar __getOwnPropDesc$v = Object.getOwnPropertyDescriptor;\nvar __decorateClass$v = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$v(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$t(target, key, result);\n  return result;\n};\nlet DhTableHeadCell = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.sorting = \"unsorted\";\n    this.notSortable = false;\n    this.parentSortable = true;\n    this.defaultWidth = \"200px\";\n    this.isResizeing = false;\n    this.pageX = 0;\n    this.currentColumnWidth = 0;\n    this.mouseMove = (event2) => {\n      if (this.isResizeing && this.currentColumn) {\n        const columnLeft = this.currentColumn.getBoundingClientRect().left;\n        const newWidth = Math.max(40, event2.clientX - columnLeft);\n        this.resize.dispatch({\n          width: newWidth + \"px\",\n          headerKey: this.currentColumn.getAttribute(\"key\"),\n          sourceElement: this.currentColumn\n        });\n      }\n    };\n    this.mouseUp = (event2) => {\n      if (this.isResizeing) {\n        event2.stopPropagation();\n        if (this.currentColumn) {\n          this.currentColumn.removeAttribute(\"resizing\");\n        }\n        this.resizeStop.dispatch();\n        this.isResizeing = false;\n        this.currentColumn = null;\n        this.pageX = 0;\n        this.currentColumnWidth = 0;\n        document.removeEventListener(\"mousemove\", this.mouseMove);\n        document.removeEventListener(\"mouseup\", this.mouseUp);\n      }\n    };\n  }\n  render() {\n    return html`<div id=\"container\" class=\"container\" part=\"root\">\n      <div part=\"label\">\n        <slot></slot>\n      </div>\n      <div>\n        ${!this.notSortable && this.parentSortable ? choose(this.sorting, [\n      [\"asc\", () => html`<div class=\"fv-icon-arrow-down rotate\" part=\"icon\"></div>`],\n      [\"desc\", () => html` <div class=\"fv-icon-arrow-down\" part=\"icon\"></div>`],\n      [\"unsorted\", () => html`<div class=\"fv-icon-arrow-up-down\" part=\"icon\"></div>`]\n    ]) : \"\"}\n        <div id=\"resize-element\" @mousedown=\"${this.saveCurrentValues}\" part=\"divider\"></div>\n      </div>\n    </div> `;\n  }\n  async connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-table-head-cell\")) {\n      this.setAttribute(\"dh-table-head-cell\", \"\");\n    }\n    this.addEventListener(\"mouseup\", this.mouseUp);\n  }\n  async disconnectedCallback() {\n    super.disconnectedCallback();\n    document.removeEventListener(\"mousemove\", this.mouseMove);\n    document.removeEventListener(\"mouseup\", this.mouseUp);\n  }\n  setSorting(sorting) {\n    this.sorting = sorting;\n  }\n  saveCurrentValues(event2) {\n    event2.stopPropagation();\n    this.isResizeing = true;\n    this.currentColumn = event2.target.getRootNode().host;\n    this.pageX = event2.pageX;\n    if (this.currentColumn) {\n      this.currentColumnWidth = this.currentColumn.getBoundingClientRect().width;\n      this.currentColumn.setAttribute(\"resizing\", \"\");\n    }\n    document.addEventListener(\"mousemove\", this.mouseMove);\n    document.addEventListener(\"mouseup\", this.mouseUp);\n  }\n};\nDhTableHeadCell.styles = css`\n    ${unsafeCSS(style$v)}\n  `;\n__decorateClass$v([\n  query(\"#sort-img\")\n], DhTableHeadCell.prototype, \"sortImg\", 2);\n__decorateClass$v([\n  query(\"#container\")\n], DhTableHeadCell.prototype, \"container\", 2);\n__decorateClass$v([\n  property({ type: String, reflect: true })\n], DhTableHeadCell.prototype, \"sorting\", 2);\n__decorateClass$v([\n  property({ type: Boolean, reflect: true })\n], DhTableHeadCell.prototype, \"notSortable\", 2);\n__decorateClass$v([\n  property({ type: Boolean, reflect: true })\n], DhTableHeadCell.prototype, \"parentSortable\", 2);\n__decorateClass$v([\n  property({ type: String, reflect: true })\n], DhTableHeadCell.prototype, \"defaultWidth\", 2);\n__decorateClass$v([\n  event({ bubbles: true, cancelable: true, composed: true }, \"resizeStop\")\n], DhTableHeadCell.prototype, \"resizeStop\", 2);\n__decorateClass$v([\n  event({ bubbles: true, cancelable: true, composed: true }, \"resize\")\n], DhTableHeadCell.prototype, \"resize\", 2);\nDhTableHeadCell = __decorateClass$v([\n  customElement(\"dh-table-head-cell\")\n], DhTableHeadCell);\n\nvar style$u = \"*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: flex;\\n  align-items: center;\\n  box-sizing: border-box;\\n  white-space: nowrap;\\n  overflow: hidden;\\n  height: var(--dh-body-cell-height, 36px);\\n  padding: var(--dh-body-cell-padding, 0 8px);\\n  border-bottom: 1px solid var(--dh-border-color, transparent);\\n  border-right: 1px solid var(--dh-border-color, transparent);\\n  color: inherit;\\n  background-color: var(--dh-body-cell-bg, inherit);\\n}\\n\\nform {\\n  width: 100%;\\n  height: 100%;\\n}\\n\\n#input {\\n  height: 100%;\\n  width: 100%;\\n}\\n\\n:host([type=checkbox]) form:not(.hidden) {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n}\\n\\n:host([type=checkbox]) #input {\\n  height: auto;\\n  width: auto;\\n  transform: scale(1.3);\\n}\\n\\n:host([type=radio]) form {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n}\\n\\n:host([type=radio]) #input {\\n  height: auto;\\n  width: auto;\\n}\\n\\n::slotted(input.invalid) {\\n  border-color: var(--dh-error-color, inherit);\\n}\\n\\n:host([type=dropdown]) {\\n  overflow: visible;\\n}\\n\\n:host([type=dropdown]) .container {\\n  overflow: visible;\\n}\\n\\n:host([type=button]) {\\n  overflow: visible;\\n  padding: 2px 8px;\\n}\\n\\n:host([type=button]) .container {\\n  overflow: visible;\\n}\\n\\n:host([type=selectbox]) {\\n  justify-content: center;\\n}\\n\\n::slotted(dh-checkbox) {\\n  display: inline-flex;\\n  align-items: center;\\n}\\n\\n::slotted(dh-select) {\\n  width: 100%;\\n}\\n\\n::slotted(dh-button) {\\n  max-height: 100%;\\n}\\n\\n.container {\\n  display: flex;\\n  box-sizing: border-box;\\n  white-space: nowrap;\\n  align-items: center;\\n  width: 100%;\\n  align-self: stretch;\\n  height: 100%;\\n}\\n\\n::slotted(dh-button) {\\n  max-height: 100%;\\n  max-width: 100%;\\n  min-height: 0;\\n  min-width: 0;\\n}\\n\\n::slotted(dh-button[icon-button]) {\\n  margin: 0;\\n}\\n\\n.overflow {\\n  overflow: hidden;\\n}\\n\\n.hidden {\\n  display: none;\\n}\";\n\nvar __defProp$s = Object.defineProperty;\nvar __getOwnPropDesc$u = Object.getOwnPropertyDescriptor;\nvar __decorateClass$u = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$u(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$s(target, key, result);\n  return result;\n};\nlet DhTableBodyCell = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.value = \"\";\n    this.index = \"\";\n    this.type = \"\";\n    this.accept = \"\";\n    this.min = void 0;\n    this.max = void 0;\n    this.step = void 0;\n    this.name = \"\";\n    this.placeholder = \"\";\n    this.blub = void 0;\n    this.checked = false;\n    this.disabled = false;\n    this.mode = \"show\";\n    this.defaultWidth = \"200px\";\n  }\n  set valueAsDate(value) {\n    (async () => this.inputElement.valueAsDate = value)();\n  }\n  render() {\n    const inputVisible = this.type !== \"checkbox\" && (this.type === \"radio\" || this.mode === \"edit\");\n    return html`\n      <div\n        id=\"container\"\n        class=${classMap({ overflow: this.type != \"dropdown\", container: true })}\n        @pasteInputValue=\"${this.pasteInputValues}\"\n        @isChange=\"${this.writeValue}\"\n        exportparts=\"dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text\"\n        part=\"root\"\n      >\n        <slot class=${classMap({ hidden: this.mode == \"edit\" && this.type != \"checkbox\" })} part=\"content\">${this.placeholder}</slot>\n        <form class=${classMap({ hidden: !inputVisible })}>\n          ${inputVisible ? html`<dh-input\n                exportparts=\"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\"\n                @keydown=${(e) => {\n      this.keyDown(e);\n      this.isEnterKey(e);\n    }}\n                id=\"input\"\n                .value=\"${this.value}\"\n                value=\"${this.value}\"\n                .checked=\"${this.checked}\"\n                .disabled=\"${this.disabled}\"\n                type=\"${this.type}\"\n                @blur=${this.writeValue}\n                @checkboxChange=\"${this.writeValue}\"\n                @changeSelectOption=\"${this.changeSelect}\"\n                size=\"5\"\n                name=\"${this.name}\"\n                accept=\"${this.accept}\"\n                min=\"${ifDefined(this.min)}\"\n                max=\"${ifDefined(this.max)}\"\n                step=\"${ifDefined(this.step)}\"\n                blub=\"${ifDefined(this.blub)}\"\n              ></dh-input>` : nothing}\n        </form>\n      </div>\n    `;\n  }\n  async connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-table-body-cell\")) {\n      this.setAttribute(\"dh-table-body-cell\", \"\");\n    }\n    this.addEventListener(\"click\", () => {\n      this.clickBodyCell();\n    });\n  }\n  firstUpdated(_changedProperties) {\n    super.firstUpdated(_changedProperties);\n    const parentTable = this.closestElement(this, \"[dh-table]\");\n    if (parentTable) {\n      const parentLineHeight = parentTable.getAttribute(\"lineHeight\");\n      if (parentLineHeight) {\n        this.container.style.maxHeight = `${parentLineHeight}px`;\n      }\n    }\n  }\n  resize(_width) {\n  }\n  closestElement(node, selector) {\n    if (!node) return null;\n    if (node instanceof ShadowRoot) return this.closestElement(node.host, selector);\n    if (node instanceof HTMLElement) {\n      if (node.matches(selector)) return node;\n      else return this.closestElement(node.parentNode, selector);\n    }\n    return this.closestElement(node.parentNode, selector);\n  }\n  setMode(mode) {\n    if (mode == \"show\" || mode == \"edit\") this.mode = mode;\n  }\n  async setInputFocus() {\n    (await this.inputElement).focus();\n  }\n  getContainer() {\n    return this.container;\n  }\n  pasteInputValues(event2) {\n    const data = event2.detail.data;\n    const input = event2.detail.input;\n    const cellIndex = this.index;\n    const row = this.closest(\"dh-table-row\");\n    const id = row?.getAttribute(\"id\");\n    const table = (row?.getRootNode()).host;\n    const type = this.getAttribute(\"type\");\n    if (id) {\n      const sameRowIndex = table.getSameRowIndex(id);\n      data.forEach((data2, index) => {\n        const sameRow = table.getSameRowBasedOnIndex(sameRowIndex + index);\n        if (index == 0) {\n          if (type == \"date\") {\n            const newDate = new Date(data2);\n            if (newDate.toString() != \"Invalid Date\") {\n              input.valueAsDate = newDate;\n            }\n          } else {\n            input.value = data2;\n          }\n        } else if (sameRow) {\n          const sameCell = sameRow[parseInt(cellIndex)];\n          const hasNotEditable = sameCell.attributes.some((attribute) => attribute == \"notEditable\");\n          if (!hasNotEditable) {\n            if (type == \"text\") {\n              sameCell.value = data2;\n              sameRow.isModified = true;\n              this.cellIsEdit.dispatch({ newValue: data2, index: cellIndex, id: sameRow.id, content: this.getAttribute(\"content\") });\n            } else if (type == \"number\") {\n              const number = parseFloat(data2);\n              if (!isNaN(number)) {\n                const min = input.min;\n                const max = input.max;\n                const isMin = min ? number >= min : true;\n                const isMax = max ? number <= max : true;\n                if (isMax && isMin) {\n                  sameCell.value = number;\n                  sameRow.isModified = true;\n                  this.cellIsEdit.dispatch({ newValue: data2, index: cellIndex, id: sameRow.id, content: this.getAttribute(\"content\") });\n                }\n              }\n            } else if (type == \"date\") {\n              const newDate = new Date(data2);\n              if (newDate.toString() != \"Invalid Date\") {\n                sameCell.value = newDate;\n                sameRow.isModified = true;\n                this.cellIsEdit.dispatch({ newValue: newDate, index: cellIndex, id: sameRow.id, content: this.getAttribute(\"content\") });\n              }\n            }\n          }\n        }\n      });\n      this.mode = \"show\";\n    }\n  }\n  async changeSelect(event2) {\n    event2.stopPropagation();\n    const selectedOption = event2.detail.selectedOption;\n    const dhSelect = event2.detail.dhSelect;\n    const index = this.index;\n    const grandparent = this.parentElement;\n    const table = grandparent.getRootNode().host;\n    const id = grandparent.id;\n    const sameRow = table.getSameRow(id);\n    if (sameRow) {\n      const sameCell = sameRow[parseInt(index)];\n      if (sameRow[parseInt(index)].value != selectedOption.value) {\n        sameCell.value = selectedOption.value;\n        sameCell.objectValues?.forEach((object) => {\n          object.selected = object.dataId == selectedOption.dataId;\n        });\n        sameRow.isModified = true;\n      }\n      this.changeTableSelect.dispatch({ selectedOption, dhSelect });\n    }\n  }\n  async writeValue(event2) {\n    const type = this.getAttribute(\"type\");\n    if (type == \"selectbox\" && event2.type == \"isChange\") return;\n    if ((type == \"checkbox\" || type == \"selectbox\" || type == \"dropdown\") && event2.type != \"checkboxChange\" && event2.type != \"isChange\") return;\n    const target = event2.target;\n    const grandparent = this.parentElement;\n    const table = grandparent.getRootNode().host;\n    let useStandard = false;\n    const index = this.index;\n    if (index) useStandard = table.getUseStandard(parseInt(index));\n    const id = grandparent.id;\n    const sameRow = table.getSameRow(id);\n    let value = \"\";\n    if (type == \"date\") value = target.getInputValueAsDate();\n    else if (type == \"checkbox\") value = event2.type == \"isChange\" ? event2.detail : target.getCheckboxIsChecked();\n    else value = target.getInputValue();\n    let isValid = false;\n    const isEmptyOk = type != \"date\";\n    if (type) isValid = this.checkValueValidity(value, type, isEmptyOk);\n    if (isValid) {\n      this.classList.remove(\"invalid\");\n      if (sameRow) {\n        const sameCell = sameRow[parseInt(index)];\n        if (sameRow[parseInt(index)].value != value) {\n          sameCell.value = value;\n          sameRow.isModified = true;\n          this.cellIsEdit.dispatch({ newValue: value, index, id, content: this.getAttribute(\"content\") });\n        }\n      }\n    } else if (useStandard) {\n      if (sameRow) {\n        const sameCell = sameRow[parseInt(index)];\n        if (type == \"text\") sameCell.value = \"\";\n        else if (type == \"date\") sameCell.value = /* @__PURE__ */ new Date(\"01.01.\" + (/* @__PURE__ */ new Date()).getFullYear());\n        else if (type == \"boolean\") sameCell.value = \"false\";\n        else if (type == \"number\") sameCell.value = \"\";\n        sameRow.isModified = true;\n        this.cellIsEdit.dispatch({ newValue: value, index, id, content: this.getAttribute(\"content\") });\n      }\n      this.classList.remove(\"invalid\");\n    } else {\n      target.classList.add(\"invalid\");\n    }\n    if (type != \"checkbox\" && type != \"selectbox\" && type != \"dropdown\") this.mode = \"show\";\n  }\n  isEnterKey(event2) {\n    event2.stopPropagation();\n    if (event2.key == \"Enter\") {\n      this.writeValue(event2);\n      event2.target.blur();\n    }\n  }\n  checkValueValidity(value, type, isEmptyOk) {\n    if (type == \"checkbox\" || type == \"selectbox\" || type == \"dropdown\") return true;\n    if (type == \"text\") {\n      if (isEmptyOk) return true;\n      if (value && value.toString().length > 0) return true;\n    } else if (type == \"date\") {\n      if (isEmptyOk) return true;\n      if (new Date(value).toString() != \"Invalid Date\") return true;\n    } else if (type == \"boolean\") {\n      if (value == \"true\" || value == \"false\" || value == \"0\" || value == \"1\") return true;\n    } else if (type == \"number\") {\n      if (isEmptyOk) return true;\n      if (Number.isInteger(parseInt(value))) return true;\n    }\n    return false;\n  }\n  keyDown(event2) {\n    if (event2.code == \"Escape\") {\n      this.formElement.reset();\n      this.mode = \"show\";\n    }\n  }\n  clickBodyCell() {\n    this.clickBodyCellEvent.dispatch(this);\n  }\n};\nDhTableBodyCell.styles = css`\n    ${unsafeCSS(style$u)}\n  `;\n__decorateClass$u([\n  queryAsync(\"dh-input\")\n], DhTableBodyCell.prototype, \"inputElement\", 2);\n__decorateClass$u([\n  query(\"#container\")\n], DhTableBodyCell.prototype, \"container\", 2);\n__decorateClass$u([\n  query(\"form\")\n], DhTableBodyCell.prototype, \"formElement\", 2);\n__decorateClass$u([\n  property({ type: String, reflect: true })\n], DhTableBodyCell.prototype, \"value\", 2);\n__decorateClass$u([\n  property({ type: String, reflect: true })\n], DhTableBodyCell.prototype, \"index\", 2);\n__decorateClass$u([\n  property({ type: String, reflect: true })\n], DhTableBodyCell.prototype, \"type\", 2);\n__decorateClass$u([\n  property({ type: String })\n], DhTableBodyCell.prototype, \"accept\", 2);\n__decorateClass$u([\n  property({ type: Number })\n], DhTableBodyCell.prototype, \"min\", 2);\n__decorateClass$u([\n  property({ type: Number })\n], DhTableBodyCell.prototype, \"max\", 2);\n__decorateClass$u([\n  property({ type: Number })\n], DhTableBodyCell.prototype, \"step\", 2);\n__decorateClass$u([\n  property({ type: String })\n], DhTableBodyCell.prototype, \"name\", 2);\n__decorateClass$u([\n  property({ type: String })\n], DhTableBodyCell.prototype, \"placeholder\", 2);\n__decorateClass$u([\n  property({ type: Number })\n], DhTableBodyCell.prototype, \"blub\", 2);\n__decorateClass$u([\n  property({ type: Boolean, reflect: true })\n], DhTableBodyCell.prototype, \"checked\", 2);\n__decorateClass$u([\n  property({ type: Boolean, reflect: true })\n], DhTableBodyCell.prototype, \"disabled\", 2);\n__decorateClass$u([\n  property({ type: Boolean })\n], DhTableBodyCell.prototype, \"mode\", 2);\n__decorateClass$u([\n  property({ type: String })\n], DhTableBodyCell.prototype, \"defaultWidth\", 2);\n__decorateClass$u([\n  event({ bubbles: true, cancelable: true, composed: true }, \"cellIsEdit\")\n], DhTableBodyCell.prototype, \"cellIsEdit\", 2);\n__decorateClass$u([\n  event({ bubbles: true, cancelable: true, composed: true }, \"changeTableSelect\")\n], DhTableBodyCell.prototype, \"changeTableSelect\", 2);\n__decorateClass$u([\n  event({ bubbles: true, cancelable: true, composed: true }, \"clickBodyCell\")\n], DhTableBodyCell.prototype, \"clickBodyCellEvent\", 2);\nDhTableBodyCell = __decorateClass$u([\n  customElement(\"dh-table-body-cell\")\n], DhTableBodyCell);\n\nvar style$t = \"*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: contents;\\n}\\n\\n:host(:not([isActive])) {\\n  opacity: var(--dh-inactive-opacity, 1);\\n}\\n\\n:host(.selected) ::slotted([dh-table-body-cell]) {\\n  background-color: var(--dh-row-selected-bg, rgba(0, 0, 0, 0.06));\\n}\";\n\nvar __defProp$r = Object.defineProperty;\nvar __getOwnPropDesc$t = Object.getOwnPropertyDescriptor;\nvar __decorateClass$t = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$t(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$r(target, key, result);\n  return result;\n};\nlet DhTableRow = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.isActive = true;\n    this.hasChildren = false;\n    this.isChild = false;\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-table-row\")) {\n      this.setAttribute(\"dh-table-row\", \"\");\n    }\n  }\n  render() {\n    return html`<slot part=\"root\"></slot>`;\n  }\n  firstUpdated() {\n    const parentTable = this.closestElement(this, \"dh-table\");\n    const parentLineHeight = parentTable?.getAttribute(\"lineHeight\") || \"36\";\n    this.style.height = `${parentLineHeight}px`;\n  }\n  closestElement(node, selector) {\n    if (!node) return null;\n    if (node instanceof ShadowRoot) return this.closestElement(node.host, selector);\n    if (node instanceof HTMLElement) {\n      if (node.matches(selector)) return node;\n      else return this.closestElement(node.parentNode, selector);\n    }\n    return this.closestElement(node.parentNode, selector);\n  }\n};\nDhTableRow.styles = css`\n    ${unsafeCSS(style$t)}\n  `;\n__decorateClass$t([\n  property({ type: Boolean, reflect: true })\n], DhTableRow.prototype, \"isActive\", 2);\n__decorateClass$t([\n  property({ type: Boolean, reflect: true })\n], DhTableRow.prototype, \"hasChildren\", 2);\n__decorateClass$t([\n  property({ type: Boolean, reflect: true })\n], DhTableRow.prototype, \"isChild\", 2);\nDhTableRow = __decorateClass$t([\n  customElement(\"dh-table-row\")\n], DhTableRow);\n\nvar style$s = \"*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: block;\\n  height: auto;\\n  width: auto;\\n}\\n\\n:host([ishidden]) {\\n  display: none;\\n}\\n\\n#container {\\n  display: flex;\\n  flex-direction: column;\\n  min-width: 200px;\\n  max-width: 560px;\\n  padding: 16px;\\n  border: 1px solid #ccc;\\n  border-radius: 8px;\\n  background-color: #fafafa;\\n  box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n\\n#caption-container {\\n  width: 100%;\\n  display: flex;\\n  justify-content: flex-start;\\n  padding: 8px 8px 0;\\n  font-size: 1.125rem;\\n  font-weight: 500;\\n}\\n\\n::slotted([slot=caption]) {\\n  margin: 0;\\n  padding: 0;\\n}\\n\\n#content-container {\\n  width: 100%;\\n  display: flex;\\n  flex-direction: column;\\n  padding: 8px;\\n  font-size: 0.875rem;\\n  line-height: 1.25rem;\\n}\\n\\n::slotted([slot=content]) {\\n  margin: 0;\\n}\\n\\n#button-container {\\n  width: 100%;\\n  display: flex;\\n  justify-content: flex-end;\\n  padding: 8px;\\n}\\n\\n::slotted(button) {\\n  cursor: pointer !important;\\n}\\n\\n.row {\\n  display: flex;\\n  flex-direction: row;\\n  gap: 8px;\\n  justify-content: flex-end;\\n}\\n\\n.hidden {\\n  display: none;\\n}\";\n\nvar __defProp$q = Object.defineProperty;\nvar __getOwnPropDesc$s = Object.getOwnPropertyDescriptor;\nvar __decorateClass$s = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$s(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$q(target, key, result);\n  return result;\n};\nlet DhInfobox = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.ishidden = false;\n    this.infoboxData = { caption: \"\", content: \"\", buttons: [] };\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-infobox\")) {\n      this.setAttribute(\"dh-infobox\", \"\");\n    }\n  }\n  render() {\n    return html`<div id=\"container\" part=\"root\" class=\"${this.ishidden ? \"hidden\" : \"\"}\">\n      <div id=\"caption-container\" part=\"header\" class=\"margin\">\n        <slot name=\"caption\">\n          <div part=\"label\">${this.infoboxData.caption}</div>\n        </slot>\n      </div>\n      <div id=\"content-container\" class=\"margin\" part=\"content\">\n        <slot name=\"content\">\n          <div>${this.infoboxData.content}</div>\n        </slot>\n      </div>\n      <div id=\"button-container\" @click=${this.buttonClick} class=\"margin\" part=\"footer\">\n        <slot class=\"row\" name=\"button\">\n          ${this.infoboxData.buttons?.map((button) => {\n      return this.createButton(button);\n    })}\n        </slot>\n      </div>\n    </div>`;\n  }\n  showInfobox() {\n    this.ishidden = false;\n  }\n  hideInfobox() {\n    this.ishidden = true;\n  }\n  createButton(button) {\n    return html`<dh-button\n      slot=\"button\"\n      .buttonText=\"${button.content}\"\n      ?disabled=\"${button.disabled}\"\n      button-type=\"${button.type}\"\n      .img=\"${button.img || \"\"}\"\n      exportparts=\"root: dh-button-root, label: dh-button-label, icon: dh-button-icon\"\n    ></dh-button>`;\n  }\n  clickOk() {\n    this.hideInfobox();\n    this.ok.dispatch();\n  }\n  clickCancel() {\n    this.hideInfobox();\n    this.cancel.dispatch();\n  }\n  clickDelete() {\n    this.hideInfobox();\n    this.delete.dispatch();\n  }\n  clickSave() {\n    this.hideInfobox();\n    this.save.dispatch();\n  }\n  clickDiscard() {\n    this.hideInfobox();\n    this.discard.dispatch();\n  }\n  clickYes() {\n    this.hideInfobox();\n    this.yes.dispatch();\n  }\n  clickNo() {\n    this.hideInfobox();\n    this.no.dispatch();\n  }\n  clickReset() {\n    this.hideInfobox();\n    this.reset.dispatch();\n  }\n  clickOverwrite() {\n    this.hideInfobox();\n    this.overwrite.dispatch();\n  }\n  buttonClick(event2) {\n    const button = event2.target;\n    let type = button.getAttribute(\"button-type\");\n    if (!type) {\n      type = \"ok\";\n    }\n    if (type.toLowerCase() == \"ok\") {\n      this.clickOk();\n    } else if (type.toLowerCase() == \"cancel\") {\n      this.clickCancel();\n    } else if (type.toLowerCase() == \"delete\") {\n      this.clickDelete();\n    } else if (type.toLowerCase() == \"save\") {\n      this.clickSave();\n    } else if (type.toLowerCase() == \"discard\") {\n      this.clickDiscard();\n    } else if (type.toLowerCase() == \"yes\") {\n      this.clickYes();\n    } else if (type.toLowerCase() == \"no\") {\n      this.clickNo();\n    } else if (type.toLowerCase() == \"reset\") {\n      this.clickReset();\n    } else if (type.toLowerCase() == \"overwrite\") {\n      this.clickOverwrite();\n    }\n  }\n  getAllButtons() {\n    const allElements = Array.from(this.children);\n    return allElements.filter((element) => element.getAttribute(\"slot\") == \"button\");\n  }\n};\nDhInfobox.styles = css`\n    ${unsafeCSS(style$s)}\n  `;\n__decorateClass$s([\n  property({ type: Boolean, reflect: true })\n], DhInfobox.prototype, \"ishidden\", 2);\n__decorateClass$s([\n  state()\n], DhInfobox.prototype, \"infoboxData\", 2);\n__decorateClass$s([\n  event({ bubbles: true, cancelable: true, composed: true }, \"ok\")\n], DhInfobox.prototype, \"ok\", 2);\n__decorateClass$s([\n  event({ bubbles: true, cancelable: true, composed: true }, \"cancel\")\n], DhInfobox.prototype, \"cancel\", 2);\n__decorateClass$s([\n  event({ bubbles: true, cancelable: true, composed: true }, \"delete\")\n], DhInfobox.prototype, \"delete\", 2);\n__decorateClass$s([\n  event({ bubbles: true, cancelable: true, composed: true }, \"save\")\n], DhInfobox.prototype, \"save\", 2);\n__decorateClass$s([\n  event({ bubbles: true, cancelable: true, composed: true }, \"discard\")\n], DhInfobox.prototype, \"discard\", 2);\n__decorateClass$s([\n  event({ bubbles: true, cancelable: true, composed: true }, \"yes\")\n], DhInfobox.prototype, \"yes\", 2);\n__decorateClass$s([\n  event({ bubbles: true, cancelable: true, composed: true }, \"no\")\n], DhInfobox.prototype, \"no\", 2);\n__decorateClass$s([\n  event({ bubbles: true, cancelable: true, composed: true }, \"reset\")\n], DhInfobox.prototype, \"reset\", 2);\n__decorateClass$s([\n  event({ bubbles: true, cancelable: true, composed: true }, \"overwrite\")\n], DhInfobox.prototype, \"overwrite\", 2);\nDhInfobox = __decorateClass$s([\n  customElement(\"dh-infobox\")\n], DhInfobox);\n\nvar style$r = \":host {\\n  position: absolute;\\n  z-index: 999;\\n  width: 100%;\\n  height: 100%;\\n}\\n\\n#dimmer {\\n  width: 100%;\\n  height: 100%;\\n  background: var(--dh-dimmer-background, rgba(0, 0, 0, 0.32));\\n}\";\n\nvar __getOwnPropDesc$r = Object.getOwnPropertyDescriptor;\nvar __decorateClass$r = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$r(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (decorator(result)) || result;\n  return result;\n};\nlet DhDimmer = class extends LitElement {\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-dimmer\")) {\n      this.setAttribute(\"dh-dimmer\", \"\");\n    }\n  }\n  render() {\n    return html` <div id=\"dimmer\" part=\"overlay\"></div>`;\n  }\n};\nDhDimmer.styles = css`\n    ${unsafeCSS(style$r)}\n  `;\nDhDimmer = __decorateClass$r([\n  customElement(\"dh-dimmer\")\n], DhDimmer);\n\nvar style$q = \"@charset \\\"UTF-8\\\";\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: block;\\n  /* Modern: full width by default — Tab-Content soll Container-Breite nutzen.\\n  * fit-content hatte Tab nur so breit wie Tab-Heads gemacht und Slot-Content limitiert. */\\n  width: 100%;\\n  min-width: 0;\\n  height: 100%;\\n  overflow: hidden;\\n}\\n\\n#tab-container {\\n  height: 100%;\\n  width: 100%;\\n  display: flex;\\n  flex-direction: column;\\n}\\n\\n#head-container {\\n  width: 100%;\\n  display: flex;\\n}\\n\\n#content-container {\\n  flex: 1;\\n  width: 100%;\\n  overflow: auto;\\n  min-height: 0;\\n}\\n\\n::slotted([slot=tab-content].hidden) {\\n  display: none;\\n}\\n\\n::slotted([slot=tab-head]) {\\n  cursor: pointer;\\n}\\n\\n/* stretch-Variante: dh-tab fuellt den verfuegbaren Platz, eigenes Scrollen ist aus.\\n * Slotted Tab-Content erhaelt volle Hoehe und scrollt selbst (z.B. eingebettete dh-table). */\\n:host([stretch]) {\\n  width: 100%;\\n  height: 100%;\\n  flex: 1;\\n}\\n\\n:host([stretch]) #content-container {\\n  overflow: visible;\\n  display: flex;\\n  flex-direction: column;\\n}\\n\\n:host([stretch]) ::slotted([slot=tab-content]) {\\n  flex: 1;\\n  height: auto;\\n  max-height: none;\\n  min-height: 0;\\n}\";\n\nvar __defProp$p = Object.defineProperty;\nvar __getOwnPropDesc$q = Object.getOwnPropertyDescriptor;\nvar __decorateClass$q = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$q(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$p(target, key, result);\n  return result;\n};\nlet DhTab = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.stretch = false;\n    this.content = \"\";\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-tab\")) {\n      this.setAttribute(\"dh-tab\", \"\");\n    }\n  }\n  set currentContent(content) {\n    this.content = content;\n    this.changeContent(content);\n  }\n  render() {\n    return html` <div id=\"tab-container\" part=\"root\">\n      <div id=\"head-container\" part=\"header\">\n        <slot name=\"tab-head\" @mousedown=${this.clickTabHead}></slot>\n      </div>\n      <div id=\"content-container\" part=\"content\">\n        <slot name=\"tab-content\"></slot>\n      </div>\n    </div>`;\n  }\n  showContent(content) {\n    this.content = content;\n    const allTabs = this.allTabHeader();\n    allTabs.forEach((tab) => tab.classList.remove(\"selected\"));\n    const currentHead = allTabs.find((head) => head.getAttribute(\"content\") == content);\n    if (currentHead) {\n      currentHead.classList.add(\"selected\");\n    }\n    this.clickTab.dispatch(content);\n    const allContents = this.allTabContents();\n    allContents.forEach((content2) => content2.classList.add(\"hidden\"));\n    const targetContent = this.allTabContents().filter((tab) => tab.getAttribute(\"tab\") == content)[0];\n    if (targetContent) {\n      targetContent.classList.remove(\"hidden\");\n    }\n    const contentContainer = this.renderRoot.querySelector(\"#content-container\");\n    if (contentContainer) {\n      contentContainer.scrollTop = 0;\n    }\n  }\n  clickTabHead(event2) {\n    let target = event2.target;\n    if (!target.hasAttribute(\"content\")) {\n      const head = target.closest('[slot=\"tab-head\"]');\n      if (head) {\n        target = head;\n      }\n    }\n    const content = target.getAttribute(\"content\");\n    if (content) {\n      this.showContent(content);\n      this.clickTab.dispatch(content);\n    }\n  }\n  changeContent(content) {\n    this.clickTab.dispatch(content);\n    this.showContent(this.content);\n  }\n  allTabContents() {\n    return Array.from(this.querySelectorAll(\"[slot=tab-content]\"));\n  }\n  allTabHeader() {\n    return Array.from(this.querySelectorAll(\"[slot=tab-head]\"));\n  }\n};\nDhTab.styles = css`\n    ${unsafeCSS(style$q)}\n  `;\n__decorateClass$q([\n  property({ type: Boolean, reflect: true })\n], DhTab.prototype, \"stretch\", 2);\n__decorateClass$q([\n  event({ bubbles: true, cancelable: true, composed: true }, \"clickTab\")\n], DhTab.prototype, \"clickTab\", 2);\nDhTab = __decorateClass$q([\n  customElement(\"dh-tab\")\n], DhTab);\n\nvar style$p = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n  text-align: center;\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n  display: flex;\\n  font-family: \\\"furnview-icons-simple\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n  content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n  content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n  content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n  content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n  content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n  content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n  content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n  content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n  content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n  content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n  content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n  content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n  content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n  content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n  content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n  content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n  content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n  content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n  content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n  content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n  content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n  content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n  content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n  content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n  content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n  content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n  content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n  content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n  content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n  content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n  content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n  content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n  content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n  content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n  content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n  content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n  content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n  content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n  content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n  content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n  content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n  content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n  content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n  content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n  content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n  content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n  content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n  content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n  content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n  content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n  content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n  content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n  content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n  content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n  content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n  content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n  content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n  content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n  content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n  content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n  content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n  content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n  content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n  content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n  content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n  content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n  content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n  content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n  content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n  content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n  content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n  content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n  content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n  content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n  content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n  content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n  content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n  content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n  content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n  content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n  content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n  content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n  content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n  content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n  content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n  content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n  content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n  content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n  content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n  content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n  content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n  content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n  content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n  content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n  content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n  content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n  content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n  content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n  content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n  content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n  content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n  content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n  content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n  content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n  content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n  content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n  content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n  content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n  content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n  content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n  content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n  content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n  content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n  content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n  content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n  content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n  content: \\\"à\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n  content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n  content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n  content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n  content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n  content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n  content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n  content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n  content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n  content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n  content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n  content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n  content: \\\"í\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n  content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n  content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n  content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n  content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n  text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n  display: flex;\\n  font-family: \\\"furnview-icons-multi\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n  content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n  content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n  content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n  content: \\\"0\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n  content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n  content: \\\";\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n  content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n  content: \\\"=\\\\a;\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n  content: \\\"<\\\";\\n  position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n  content: \\\"8\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n  content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n  content: \\\":\\\\a 8\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n  content: \\\"9\\\";\\n  position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: block;\\n}\\n\\ninput {\\n  width: 100%;\\n  height: 100%;\\n  margin: 0;\\n  padding: 0;\\n  border: none;\\n  background: none;\\n  outline: none;\\n  font: inherit;\\n  color: inherit;\\n  flex-basis: 100%;\\n}\\n\\n@keyframes dh-input-autofill-start {\\n  from {\\n    opacity: 1;\\n  }\\n  to {\\n    opacity: 1;\\n  }\\n}\\ninput:-webkit-autofill,\\ninput:-webkit-autofill:hover,\\ninput:-webkit-autofill:focus,\\ninput:-webkit-autofill:active,\\ninput:autofill,\\ninput:autofill:hover,\\ninput:autofill:focus,\\ninput:autofill:active {\\n  -webkit-box-shadow: 0 0 0 1000px #FFFFFF inset !important;\\n  box-shadow: 0 0 0 1000px #FFFFFF inset !important;\\n  -webkit-text-fill-color: var(--md-sys-color-on-surface, #1A1A1A) !important;\\n  background-color: #FFFFFF !important;\\n  background-image: none !important;\\n  caret-color: var(--md-sys-color-primary);\\n  transition: background-color 99999s ease-in-out 0s !important;\\n  animation-name: dh-input-autofill-start;\\n  animation-duration: 1ms;\\n}\\n\\ninput[type=checkbox] {\\n  width: 13px;\\n  height: 13px;\\n}\\n\\ninput[type=range] {\\n  -webkit-appearance: none;\\n  appearance: none;\\n  width: 100%;\\n  height: 20px;\\n  padding: 0;\\n  background: transparent;\\n  cursor: pointer;\\n}\\n\\ninput[type=range]::-webkit-slider-runnable-track {\\n  height: 4px;\\n  border-radius: 2px;\\n  background: var(--dh-input-range-track-color, #CCCCCC);\\n}\\n\\n:host([track-fill]) input[type=range]::-webkit-slider-runnable-track {\\n  background: linear-gradient(to right, var(--dh-input-range-track-fill-color, currentColor) 0 var(--dh-input-range-fill-progress, 50%), var(--dh-input-range-track-color) var(--dh-input-range-fill-progress, 50%) 100%);\\n}\\n\\ninput[type=range]::-webkit-slider-thumb {\\n  -webkit-appearance: none;\\n  appearance: none;\\n  margin-top: -8px;\\n  width: 20px;\\n  height: 20px;\\n  border: none;\\n  border-radius: 50%;\\n  background: var(--dh-input-range-thumb-color, currentColor);\\n  cursor: grab;\\n  box-shadow: 0 0 0 0 transparent;\\n  transition: box-shadow 150ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\ninput[type=range]:hover:not(:disabled)::-webkit-slider-thumb {\\n  box-shadow: var(--dh-input-range-thumb-hover-box-shadow);\\n}\\n\\ninput[type=range]:focus-visible::-webkit-slider-thumb {\\n  box-shadow: var(--dh-input-range-thumb-focus-box-shadow);\\n}\\n\\ninput[type=range]:active:not(:disabled)::-webkit-slider-thumb {\\n  cursor: grabbing;\\n  box-shadow: var(--dh-input-range-thumb-active-box-shadow);\\n}\\n\\ninput[type=range]::-moz-range-track {\\n  height: 4px;\\n  border-radius: 2px;\\n  background: var(--dh-input-range-track-color, #CCCCCC);\\n}\\n\\ninput[type=range]::-moz-range-progress {\\n  height: 4px;\\n  border-radius: 2px;\\n  background: transparent;\\n}\\n\\n:host([track-fill]) input[type=range]::-moz-range-progress {\\n  background: var(--dh-input-range-track-fill-color, currentColor);\\n}\\n\\ninput[type=range]::-moz-range-thumb {\\n  width: 20px;\\n  height: 20px;\\n  border: none;\\n  border-radius: 50%;\\n  background: var(--dh-input-range-thumb-color, currentColor);\\n  cursor: grab;\\n  box-shadow: 0 0 0 0 transparent;\\n  transition: box-shadow 150ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\ninput[type=range]:hover:not(:disabled)::-moz-range-thumb {\\n  box-shadow: var(--dh-input-range-thumb-hover-box-shadow);\\n}\\n\\ninput[type=range]:focus-visible::-moz-range-thumb {\\n  box-shadow: var(--dh-input-range-thumb-focus-box-shadow);\\n}\\n\\ninput[type=range]:active:not(:disabled)::-moz-range-thumb {\\n  cursor: grabbing;\\n  box-shadow: var(--dh-input-range-thumb-active-box-shadow);\\n}\\n\\ninput[type=range]:disabled {\\n  cursor: not-allowed;\\n}\\n\\ninput[type=range]:disabled::-webkit-slider-thumb {\\n  cursor: not-allowed;\\n  box-shadow: none;\\n  background: var(--dh-input-range-thumb-disabled-background);\\n}\\n\\ninput[type=range]:disabled::-moz-range-thumb {\\n  cursor: not-allowed;\\n  box-shadow: none;\\n  background: var(--dh-input-range-thumb-disabled-background);\\n}\\n\\n:host([track-fill]) input[type=range]:disabled::-webkit-slider-runnable-track {\\n  background: linear-gradient(to right, var(--dh-input-range-disabled-color) 0 var(--dh-input-range-fill-progress, 50%), var(--dh-input-range-track-color) var(--dh-input-range-fill-progress, 50%) 100%);\\n}\\n\\n:host([track-fill]) input[type=range]:disabled::-moz-range-progress {\\n  background: var(--dh-input-range-disabled-color);\\n}\\n\\n#input-container {\\n  width: 100%;\\n  height: 100%;\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  position: relative;\\n}\\n\\n#label {\\n  position: absolute;\\n  pointer-events: none;\\n  top: var(--dh-input-label-top, 50%);\\n  transform: var(--dh-input-label-transform, translateY(-50%));\\n  font-size: var(--dh-input-label-font-size, 1rem);\\n  line-height: var(--dh-input-label-line-height, normal);\\n  background-color: var(--dh-input-label-bg, transparent);\\n}\\n\\ninput:not(:placeholder-shown) ~ #label {\\n  top: var(--dh-input-label-floating-top, 0);\\n  transform: var(--dh-input-label-floating-transform, translateY(-50%));\\n  font-size: var(--dh-input-label-floating-font-size, 0.75rem);\\n  line-height: var(--dh-input-label-floating-line-height, 1rem);\\n  background-color: var(--dh-input-label-floating-bg, transparent);\\n}\\n\\n:host(:focus-within) #label {\\n  top: var(--dh-input-label-floating-top, 0);\\n  transform: var(--dh-input-label-floating-transform, translateY(-50%));\\n  font-size: var(--dh-input-label-floating-font-size, 0.75rem);\\n  line-height: var(--dh-input-label-floating-line-height, 1rem);\\n  background-color: var(--dh-input-label-floating-bg, transparent);\\n}\\n\\n#supporting-text {\\n  display: block;\\n}\\n\\n.invalid {\\n  border-color: var(--dh-error-color, inherit);\\n}\\n\\n:host([invalid]) #input {\\n  border-color: var(--dh-error-color, inherit);\\n}\\n\\n.disabled {\\n  cursor: not-allowed;\\n}\\n\\n:host([variant=classic]) input::placeholder {\\n  color: var(--dh-input-placeholder-color, currentColor);\\n  opacity: var(--dh-input-placeholder-opacity, 0.6);\\n  transition: opacity 200ms ease;\\n}\\n\\n:host([type=file]) #input {\\n  display: none;\\n}\\n\\n:host([type=file]) #input-container {\\n  gap: 8px;\\n  justify-content: flex-start;\\n}\\n\\n#file-button {\\n  cursor: pointer;\\n  border: none;\\n  background: none;\\n  font: inherit;\\n  flex-shrink: 0;\\n}\\n\\n#file-button:disabled {\\n  cursor: not-allowed;\\n}\\n\\n#file-name {\\n  overflow: hidden;\\n  text-overflow: ellipsis;\\n  white-space: nowrap;\\n  min-width: 0;\\n}\\n\\n#password-toggle {\\n  appearance: none;\\n  border: none;\\n  background: none;\\n  cursor: pointer;\\n  padding: 0;\\n  font: inherit;\\n  color: inherit;\\n  display: inline-flex;\\n  align-items: center;\\n  justify-content: center;\\n  flex-shrink: 0;\\n}\\n\\n#password-toggle:disabled {\\n  cursor: not-allowed;\\n}\";\n\nvar __defProp$o = Object.defineProperty;\nvar __getOwnPropDesc$p = Object.getOwnPropertyDescriptor;\nvar __decorateClass$p = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$p(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$o(target, key, result);\n  return result;\n};\nlet DhInput = class extends LitElement {\n  constructor() {\n    super();\n    this.variant = \"outlined\";\n    this.type = \"\";\n    this.disabled = false;\n    this.accept = \"\";\n    this.value = \"\";\n    this.min = void 0;\n    this.max = void 0;\n    this.step = 1;\n    this.blub = void 0;\n    this.size = \"20\";\n    this.readOnly = false;\n    this.placeholder = \"\";\n    this.supportingText = \"\";\n    this.checked = false;\n    this.name = \"\";\n    this.autocomplete = \"new-password\";\n    this.mandatory = false;\n    this.trackFill = false;\n    this.togglePassword = false;\n    this.passwordVisible = false;\n    this.fileName = \"\";\n    this.onAutofillAnimation = (animationEvent) => {\n      if (animationEvent.animationName === \"dh-input-autofill-start\") {\n        if (this.inputElement.value !== this.value) {\n          this.value = this.inputElement.value;\n        }\n        const label = this.shadowRoot?.getElementById(\"label\");\n        if (label) {\n          label.style.display = \"none\";\n          void label.offsetHeight;\n          label.style.display = \"\";\n        }\n      }\n    };\n    this.elementInternals = this.attachInternals();\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-input\")) {\n      this.setAttribute(\"dh-input\", \"\");\n    }\n  }\n  set valueAsDate(value) {\n    (async () => {\n      if (value) {\n        const newDate = new Date(value);\n        let dateString = \"\";\n        if (this.inputElement) {\n          this.inputElement.valueAsDate = new Date(+newDate - newDate?.getTimezoneOffset() * 6e4);\n          dateString = this.inputElement.valueAsDate?.toDateString();\n        }\n        if (dateString && dateString != \"Invalid Date\") {\n          this.value = dateString;\n        } else {\n          this.value = \"\";\n        }\n      } else {\n        this.value = \"\";\n      }\n    })();\n  }\n  firstUpdated(_changedProperties) {\n    super.firstUpdated(_changedProperties);\n    this.inputElement.value = this.getAttribute(\"value\") || \"\";\n    this.updateInvalidAttribute();\n    this.inputElement.addEventListener(\"animationstart\", this.onAutofillAnimation);\n  }\n  updated(_changedProperties) {\n    super.updated(_changedProperties);\n    this.updateInvalidAttribute();\n  }\n  updateInvalidAttribute() {\n    const isInvalid = !this.disabled && this.mandatory && !this.readOnly && !this.value;\n    if (isInvalid) {\n      this.setAttribute(\"invalid\", \"\");\n    } else {\n      this.removeAttribute(\"invalid\");\n      this.elementInternals.setFormValue(this.value);\n    }\n  }\n  //Das Property \"blub\" gibt es nur, da es bei Lit ein Problem gibt, dass teilweise das letzte Property nicht funktioniert (nicht darauf reagiert wird).\n  //Das Property \"blub\" funktioniert also nicht, sorgt aber dafür, dass alle die davor stehen funktionieren.\n  render() {\n    if (this.type === \"file\") {\n      return this.renderFileInput();\n    }\n    return html`<div id=\"input-container\" part=\"root\" @change=\"${this.validateInput}\" @input=\"${this.validateInput}\" @focusout=\"${this.focusout}\">\n        <input\n          id=\"input\"\n          type=\"${this.getEffectiveType()}\"\n          .value=\"${this.type != \"date\" ? this.value : void 0}\"\n          .disabled=\"${this.disabled}\"\n          value=\"${this.type != \"date\" ? this.value : void 0}\"\n          accept=\"${this.accept}\"\n          class=\"${classMap({\n      disabled: this.disabled,\n      invalid: this.mandatory && !this.readOnly && !this.value\n    })}\"\n          min=\"${this.min !== void 0 ? this.min : void 0}\"\n          max=\"${this.max !== void 0 ? this.max : void 0}\"\n          step=\"${this.step ? this.step : void 0}\"\n          .readOnly=\"${this.readOnly}\"\n          part=\"input\"\n          size=\"${this.size}\"\n          .checked=\"${this.checked}\"\n          @paste=\"${this.pasteEvent}\"\n          name=\"${this.name}\"\n          placeholder=\"${this.variant === \"classic\" ? this.placeholder : \" \"}\"\n          autocomplete=\"${this.autocomplete}\"\n          spellcheck=\"false\"\n          autocorrect=\"off\"\n          blub=\"${this.blub}\"\n          style=\"${this.getRangeStyle()}\"\n        />\n        ${this.renderLabel()} ${this.renderPasswordToggle()}\n      </div>\n      ${this.renderSupportingText()}`;\n  }\n  getEffectiveType() {\n    if (this.togglePassword && this.type === \"password\" && this.passwordVisible) {\n      return \"text\";\n    }\n    return this.type;\n  }\n  getRangeStyle() {\n    if (this.type !== \"range\" || !this.trackFill) {\n      return \"\";\n    }\n    const min = Number(this.min ?? 0);\n    const max = Number(this.max ?? 100);\n    const value = this.value === \"\" ? (min + max) / 2 : Number(this.value);\n    const percent = max === min ? 0 : (value - min) / (max - min) * 100;\n    return `--dh-input-range-fill-progress: ${percent}%`;\n  }\n  renderPasswordToggle() {\n    if (!this.togglePassword || this.type !== \"password\") {\n      return null;\n    }\n    const iconClass = this.passwordVisible ? \"fv-icon-eye-closed\" : \"fv-icon-eye-2\";\n    const ariaLabel = this.passwordVisible ? \"Passwort verbergen\" : \"Passwort anzeigen\";\n    return html`<button\n      id=\"password-toggle\"\n      part=\"trailing-icon\"\n      type=\"button\"\n      class=\"${iconClass}\"\n      aria-label=\"${ariaLabel}\"\n      aria-pressed=\"${this.passwordVisible}\"\n      ?disabled=\"${this.disabled}\"\n      @click=\"${this.onTogglePasswordVisibility}\"\n    ></button>`;\n  }\n  onTogglePasswordVisibility(event2) {\n    event2.preventDefault();\n    event2.stopPropagation();\n    this.passwordVisible = !this.passwordVisible;\n  }\n  renderFileInput() {\n    return html` <div id=\"input-container\" part=\"root\">\n        <input id=\"input\" type=\"file\" accept=\"${this.accept}\" .disabled=\"${this.disabled}\" part=\"input\" @change=\"${this.onFileChange}\" />\n        <button type=\"button\" id=\"file-button\" part=\"file-button\" @click=\"${() => this.inputElement.click()}\" ?disabled=\"${this.disabled}\">\n          ${this.placeholder || \"Datei ausw\\xE4hlen\"}\n        </button>\n        <span id=\"file-name\" part=\"file-name\">${this.fileName}</span>\n      </div>\n      ${this.renderSupportingText()}`;\n  }\n  onFileChange() {\n    this.fileName = this.inputElement.files?.[0]?.name ?? \"\";\n  }\n  renderLabel() {\n    if (!this.placeholder || this.type === \"checkbox\" || this.variant === \"classic\") {\n      return null;\n    }\n    return html`<label id=\"label\" part=\"label\" for=\"input\">${this.placeholder}</label>`;\n  }\n  renderSupportingText() {\n    if (!this.supportingText) {\n      return null;\n    }\n    return html`<div id=\"supporting-text\" part=\"supporting-text\">${this.supportingText}</div>`;\n  }\n  pasteEvent(event2) {\n    const data = event2?.clipboardData?.getData(\"text\").trimEnd();\n    const inputRowArray = data?.split(/\\r\\n|\\r|\\n/);\n    this.pasteInputValue.dispatch({ data: inputRowArray, input: this });\n  }\n  getInputValue() {\n    return this.inputElement.value;\n  }\n  getInputValueAsDate() {\n    const date = this.inputElement.valueAsDate;\n    if (date) {\n      return new Date(+date + date.getTimezoneOffset() * 6e4);\n    }\n    return null;\n  }\n  setInputValue(inputValue) {\n    this.value = inputValue;\n    if (this.type === \"file\" && !inputValue) {\n      this.fileName = \"\";\n    }\n  }\n  focus(options) {\n    this.inputElement.focus(options);\n  }\n  getCheckboxIsChecked() {\n    return this.inputElement.checked;\n  }\n  getFileInputName() {\n    return this.inputElement.files?.item(0)?.name;\n  }\n  getFile() {\n    return this.inputElement.files?.item(0);\n  }\n  focusout() {\n    this.dispatchEvent(new CustomEvent(\"inputfocusout\", { bubbles: true, cancelable: true, composed: true }));\n  }\n  async validateInput(event2) {\n    if (this.type != \"checkbox\") {\n      const value = this.getInputValue();\n      const input = this.inputElement;\n      if (this.type == \"email\") {\n        const regex = /\\S+@\\S+\\.\\S+/;\n        const isValid = regex.test(value);\n        if (isValid) {\n          input.classList.remove(\"invalid\");\n          this.removeAttribute(\"invalid\");\n        } else {\n          input.classList.add(\"invalid\");\n          this.setAttribute(\"invalid\", \"\");\n        }\n        this.inputValidate.dispatch({ isValid });\n      } else if (this.type == \"number\") {\n        let isValid = input.validity.valid;\n        if (this.min !== void 0) {\n          if (+value < this.min) {\n            isValid = false;\n          }\n        }\n        if (this.max !== void 0) {\n          if (+value > this.max) {\n            isValid = false;\n          }\n        }\n        if (isValid) {\n          input.classList.remove(\"invalid\");\n          this.removeAttribute(\"invalid\");\n        } else {\n          input.classList.add(\"invalid\");\n          this.setAttribute(\"invalid\", \"\");\n        }\n        this.inputValidate.dispatch({ isValid });\n      }\n      this.value = value;\n    } else {\n      if (event2.type == \"change\") {\n        this.checkboxChange.dispatch({ checked: this.checked });\n      }\n    }\n    if (event2.type === \"input\") {\n      this.dispatchEvent(new Event(\"input\", { bubbles: true, cancelable: true, composed: true }));\n    }\n    this.dispatchEvent(new Event(\"change\", { bubbles: true, cancelable: true, composed: true }));\n  }\n};\nDhInput.formAssociated = true;\nDhInput.styles = css`\n    ${unsafeCSS(style$p)}\n  `;\n__decorateClass$p([\n  query(\"input\")\n], DhInput.prototype, \"inputElement\", 2);\n__decorateClass$p([\n  property({ type: String, reflect: true })\n], DhInput.prototype, \"variant\", 2);\n__decorateClass$p([\n  property({ type: String, reflect: true })\n], DhInput.prototype, \"type\", 2);\n__decorateClass$p([\n  property({ type: Boolean, reflect: true })\n], DhInput.prototype, \"disabled\", 2);\n__decorateClass$p([\n  property({ type: String, reflect: true })\n], DhInput.prototype, \"accept\", 2);\n__decorateClass$p([\n  property({ type: String, reflect: true })\n], DhInput.prototype, \"value\", 2);\n__decorateClass$p([\n  property({ type: Number, reflect: true })\n], DhInput.prototype, \"min\", 2);\n__decorateClass$p([\n  property({ type: Number, reflect: true })\n], DhInput.prototype, \"max\", 2);\n__decorateClass$p([\n  property({ type: Number, reflect: true })\n], DhInput.prototype, \"step\", 2);\n__decorateClass$p([\n  property({ type: Number, reflect: true })\n], DhInput.prototype, \"blub\", 2);\n__decorateClass$p([\n  property({ type: String, reflect: true })\n], DhInput.prototype, \"size\", 2);\n__decorateClass$p([\n  property({ type: Boolean, reflect: true })\n], DhInput.prototype, \"readOnly\", 2);\n__decorateClass$p([\n  property({ type: String })\n], DhInput.prototype, \"placeholder\", 2);\n__decorateClass$p([\n  property({ type: String })\n], DhInput.prototype, \"supportingText\", 2);\n__decorateClass$p([\n  property({ type: Boolean, reflect: true })\n], DhInput.prototype, \"checked\", 2);\n__decorateClass$p([\n  property({ type: String, reflect: true })\n], DhInput.prototype, \"name\", 2);\n__decorateClass$p([\n  property({ type: String, reflect: true })\n], DhInput.prototype, \"autocomplete\", 2);\n__decorateClass$p([\n  property({ type: Boolean })\n], DhInput.prototype, \"mandatory\", 2);\n__decorateClass$p([\n  property({ type: Boolean, reflect: true, attribute: \"track-fill\" })\n], DhInput.prototype, \"trackFill\", 2);\n__decorateClass$p([\n  property({ type: Boolean, reflect: true, attribute: \"toggle-password\" })\n], DhInput.prototype, \"togglePassword\", 2);\n__decorateClass$p([\n  state()\n], DhInput.prototype, \"passwordVisible\", 2);\n__decorateClass$p([\n  property({ type: String })\n], DhInput.prototype, \"fileName\", 2);\n__decorateClass$p([\n  event({ bubbles: true, cancelable: true, composed: true }, \"pasteInputValue\")\n], DhInput.prototype, \"pasteInputValue\", 2);\n__decorateClass$p([\n  event({ bubbles: true, cancelable: true, composed: true }, \"inputValidate\")\n], DhInput.prototype, \"inputValidate\", 2);\n__decorateClass$p([\n  event({ bubbles: true, cancelable: true, composed: true }, \"checkboxChange\")\n], DhInput.prototype, \"checkboxChange\", 2);\nDhInput = __decorateClass$p([\n  customElement(\"dh-input\")\n], DhInput);\n\nvar style$o = \"#checkbox-container {\\n  display: flex;\\n  justify-content: center;\\n}\\n\\n#checkbox {\\n  accent-color: var(--dh-checkbox-color, inherit);\\n}\\n\\n@keyframes dh-checkbox-pop {\\n  0% {\\n    transform: scale(0);\\n  }\\n  60% {\\n    transform: scale(1.3);\\n  }\\n  100% {\\n    transform: scale(1);\\n  }\\n}\\n:host([animated]) #checkbox:checked {\\n  transform-origin: center center;\\n  animation: dh-checkbox-pop 300ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n:host([variant=switch]) #checkbox-container {\\n  position: relative !important;\\n  display: inline-flex !important;\\n  align-items: center !important;\\n  width: 48px !important;\\n  height: 28px !important;\\n}\\n\\n:host([variant=switch]) #checkbox {\\n  appearance: none !important;\\n  -webkit-appearance: none !important;\\n  width: 48px !important;\\n  height: 28px !important;\\n  border: 2px solid var(--md-sys-color-outline, #79747e) !important;\\n  border-radius: 14px !important;\\n  background-color: var(--md-sys-color-surface-container-highest, #e6e0e9) !important;\\n  background-image: none !important;\\n  cursor: pointer;\\n  margin: 0 !important;\\n  padding: 0 !important;\\n  outline: none;\\n  box-sizing: border-box !important;\\n  transition: background-color 200ms cubic-bezier(0.2, 0, 0, 1), border-color 200ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n:host([variant=switch]) #handle {\\n  position: absolute !important;\\n  top: 50% !important;\\n  left: 5px !important;\\n  width: 14px !important;\\n  height: 14px !important;\\n  border-radius: 50% !important;\\n  background-color: var(--md-sys-color-outline, #79747e) !important;\\n  transform: translate(0, -50%) !important;\\n  pointer-events: none;\\n  transition: left 200ms cubic-bezier(0.2, 0, 0, 1), width 200ms cubic-bezier(0.2, 0, 0, 1), height 200ms cubic-bezier(0.2, 0, 0, 1), background-color 200ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n:host([variant=switch][checked]) #checkbox {\\n  background-color: var(--md-sys-color-primary, #6750a4) !important;\\n  border-color: var(--md-sys-color-primary, #6750a4) !important;\\n}\\n\\n:host([variant=switch]) #checkbox:checked ~ #handle {\\n  left: 22px !important;\\n  width: 20px !important;\\n  height: 20px !important;\\n  background-color: var(--md-sys-color-on-primary, #ffffff) !important;\\n}\\n\\n:host([variant=switch][disabled]) #checkbox:checked ~ #handle {\\n  background-color: var(--md-sys-color-surface, #ffffff) !important;\\n}\\n\\n:host([disabled]) {\\n  opacity: var(--dh-disabled-opacity, 0.38);\\n}\\n\\n:host([disabled]) #checkbox {\\n  cursor: not-allowed !important;\\n}\";\n\nvar __defProp$n = Object.defineProperty;\nvar __getOwnPropDesc$o = Object.getOwnPropertyDescriptor;\nvar __decorateClass$o = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$o(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$n(target, key, result);\n  return result;\n};\nlet DhCheckbox = class extends LitElement {\n  constructor() {\n    super();\n    this.checked = false;\n    this.disabled = false;\n    this.animated = false;\n    this.indeterminate = false;\n    this.variant = \"checkbox\";\n    this.addEventListener(\"input\", (event2) => event2.stopPropagation());\n  }\n  render() {\n    if (this.variant === \"switch\") {\n      return html` <div id=\"checkbox-container\" part=\"root\">\n        <input\n          id=\"checkbox\"\n          type=\"checkbox\"\n          role=\"switch\"\n          .checked=\"${this.checked}\"\n          .disabled=\"${this.disabled}\"\n          @change=\"${this.change}\"\n          part=\"input\"\n        />\n        <span id=\"handle\" part=\"handle\"></span>\n      </div>`;\n    }\n    return html` <div id=\"checkbox-container\" part=\"root\">\n      <input\n        id=\"checkbox\"\n        type=\"checkbox\"\n        .checked=\"${this.checked}\"\n        .indeterminate=\"${this.indeterminate}\"\n        .disabled=\"${this.disabled}\"\n        @change=\"${this.change}\"\n        part=\"input\"\n      />\n    </div>`;\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-checkbox\")) {\n      this.setAttribute(\"dh-checkbox\", \"\");\n    }\n  }\n  changeChecked(isChecked) {\n    this.checked = isChecked;\n    this.changeEvent.dispatch(this.checked);\n  }\n  getCheckboxIsChecked() {\n    return this.checked;\n  }\n  getCheckboxIsDisabled() {\n    return this.disabled;\n  }\n  change(event2) {\n    event2.stopPropagation();\n    const input = event2.target;\n    this.checked = input.checked;\n    this.indeterminate = false;\n    this.changeEvent.dispatch(this.checked);\n  }\n  cancel(event2) {\n    event2.stopPropagation();\n  }\n};\nDhCheckbox.styles = css`\n    ${unsafeCSS(style$o)}\n  `;\n__decorateClass$o([\n  property({ type: Boolean, reflect: true })\n], DhCheckbox.prototype, \"checked\", 2);\n__decorateClass$o([\n  property({ type: Boolean, reflect: true })\n], DhCheckbox.prototype, \"disabled\", 2);\n__decorateClass$o([\n  property({ type: Boolean, reflect: true })\n], DhCheckbox.prototype, \"animated\", 2);\n__decorateClass$o([\n  property({ type: Boolean, reflect: true })\n], DhCheckbox.prototype, \"indeterminate\", 2);\n__decorateClass$o([\n  property({ type: String, reflect: true })\n], DhCheckbox.prototype, \"variant\", 2);\n__decorateClass$o([\n  event({ bubbles: true, cancelable: true, composed: true }, \"isChange\")\n], DhCheckbox.prototype, \"changeEvent\", 2);\nDhCheckbox = __decorateClass$o([\n  customElement(\"dh-checkbox\")\n], DhCheckbox);\n\nvar style$n = \"@charset \\\"UTF-8\\\";\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  /* Block-level flex damit jedes Radio per Default in einer eigenen Zeile\\n  * steht (Radio-Listen sind meist vertikal). Fuer horizontale Anordnung\\n  * legt der Konsument die Radios in einen flex-row-Container. */\\n  display: flex;\\n  align-items: center;\\n  width: fit-content;\\n}\\n\\n#root {\\n  display: inline-flex;\\n  align-items: center;\\n  gap: 8px;\\n  cursor: pointer;\\n  user-select: none;\\n}\\n\\n:host([disabled]) #root {\\n  cursor: not-allowed;\\n}\\n\\n#radio-container {\\n  display: inline-flex;\\n  align-items: center;\\n  justify-content: center;\\n  position: relative;\\n  flex-shrink: 0;\\n}\\n\\n#radio {\\n  /* Reset native appearance — theme paints the ring + dot via CSS */\\n  appearance: none;\\n  -webkit-appearance: none;\\n  margin: 0;\\n  padding: 0;\\n  cursor: inherit;\\n  font: inherit;\\n  color: inherit;\\n}\\n\\n#label {\\n  font: inherit;\\n  color: inherit;\\n}\";\n\nvar __defProp$m = Object.defineProperty;\nvar __getOwnPropDesc$n = Object.getOwnPropertyDescriptor;\nvar __decorateClass$n = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$n(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$m(target, key, result);\n  return result;\n};\nlet DhRadio = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.name = \"\";\n    this.value = \"\";\n    this.checked = false;\n    this.disabled = false;\n  }\n  render() {\n    return html`<div id=\"root\" part=\"root\" @click=\"${this.onHostClick}\">\n      <div id=\"radio-container\" part=\"control\">\n        <input\n          id=\"radio\"\n          type=\"radio\"\n          name=\"${this.name}\"\n          .value=\"${this.value}\"\n          .checked=\"${this.checked}\"\n          .disabled=\"${this.disabled}\"\n          @click=\"${this.onInputClick}\"\n          part=\"input\"\n        />\n      </div>\n      <span id=\"label\" part=\"label\"><slot></slot></span>\n    </div>`;\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-radio\")) {\n      this.setAttribute(\"dh-radio\", \"\");\n    }\n  }\n  setChecked(isChecked) {\n    if (this.checked === isChecked) {\n      return;\n    }\n    this.checked = isChecked;\n    if (isChecked) {\n      this.uncheckGroupSiblings();\n      this.radioChange.dispatch(this.value);\n    }\n  }\n  getIsChecked() {\n    return this.checked;\n  }\n  getIsDisabled() {\n    return this.disabled;\n  }\n  onHostClick(clickEvent) {\n    if (this.disabled) {\n      return;\n    }\n    clickEvent.stopPropagation();\n    this.setChecked(true);\n  }\n  onInputClick(clickEvent) {\n    clickEvent.stopPropagation();\n    if (this.disabled) {\n      clickEvent.preventDefault();\n      return;\n    }\n    this.setChecked(true);\n  }\n  uncheckGroupSiblings() {\n    if (!this.name) {\n      return;\n    }\n    const root = this.getRootNode();\n    const siblings = root.querySelectorAll(`dh-radio[name=\"${this.name}\"]`);\n    siblings.forEach((sibling) => {\n      if (sibling !== this && sibling.checked) {\n        sibling.checked = false;\n      }\n    });\n  }\n};\nDhRadio.styles = css`\n    ${unsafeCSS(style$n)}\n  `;\n__decorateClass$n([\n  property({ type: String, reflect: true })\n], DhRadio.prototype, \"name\", 2);\n__decorateClass$n([\n  property({ type: String, reflect: true })\n], DhRadio.prototype, \"value\", 2);\n__decorateClass$n([\n  property({ type: Boolean, reflect: true })\n], DhRadio.prototype, \"checked\", 2);\n__decorateClass$n([\n  property({ type: Boolean, reflect: true })\n], DhRadio.prototype, \"disabled\", 2);\n__decorateClass$n([\n  event({ bubbles: true, cancelable: true, composed: true }, \"radioChange\")\n], DhRadio.prototype, \"radioChange\", 2);\nDhRadio = __decorateClass$n([\n  customElement(\"dh-radio\")\n], DhRadio);\n\nvar style$m = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n  text-align: center;\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n  display: flex;\\n  font-family: \\\"furnview-icons-simple\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n  content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n  content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n  content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n  content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n  content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n  content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n  content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n  content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n  content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n  content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n  content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n  content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n  content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n  content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n  content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n  content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n  content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n  content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n  content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n  content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n  content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n  content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n  content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n  content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n  content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n  content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n  content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n  content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n  content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n  content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n  content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n  content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n  content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n  content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n  content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n  content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n  content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n  content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n  content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n  content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n  content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n  content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n  content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n  content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n  content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n  content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n  content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n  content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n  content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n  content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n  content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n  content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n  content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n  content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n  content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n  content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n  content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n  content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n  content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n  content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n  content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n  content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n  content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n  content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n  content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n  content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n  content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n  content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n  content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n  content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n  content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n  content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n  content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n  content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n  content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n  content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n  content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n  content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n  content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n  content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n  content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n  content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n  content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n  content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n  content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n  content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n  content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n  content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n  content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n  content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n  content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n  content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n  content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n  content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n  content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n  content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n  content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n  content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n  content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n  content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n  content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n  content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n  content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n  content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n  content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n  content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n  content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n  content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n  content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n  content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n  content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n  content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n  content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n  content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n  content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n  content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n  content: \\\"à\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n  content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n  content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n  content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n  content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n  content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n  content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n  content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n  content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n  content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n  content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n  content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n  content: \\\"í\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n  content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n  content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n  content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n  content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n  text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n  display: flex;\\n  font-family: \\\"furnview-icons-multi\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n  content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n  content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n  content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n  content: \\\"0\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n  content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n  content: \\\";\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n  content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n  content: \\\"=\\\\a;\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n  content: \\\"<\\\";\\n  position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n  content: \\\"8\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n  content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n  content: \\\":\\\\a 8\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n  content: \\\"9\\\";\\n  position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: inline-block;\\n  height: auto;\\n  width: auto;\\n  position: absolute;\\n  top: 50%;\\n  left: 50%;\\n  transform: translateX(-50%) translateY(-50%) scale(1);\\n  opacity: 1;\\n  /* Open: spring easing fuer leichten Bounce. Close: standard easing fuer ruhiges Schliessen. */\\n  transition: opacity var(--md-sys-motion-duration-short4, 200ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1)), transform var(--md-sys-motion-duration-medium2, 300ms) var(--md-sys-motion-easing-spring, cubic-bezier(0.5, 1.5, 0.4, 1));\\n}\\n\\n:host(.hidden) {\\n  opacity: 0;\\n  transform: translateX(-50%) translateY(-50%) scale(0.92);\\n  pointer-events: none;\\n  /* visibility statt display:none — sonst greift kein transition */\\n  visibility: hidden;\\n  transition: opacity var(--md-sys-motion-duration-short3, 150ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1)), transform var(--md-sys-motion-duration-short4, 200ms) var(--md-sys-motion-easing-standard, cubic-bezier(0.2, 0, 0, 1)), visibility 0s linear var(--md-sys-motion-duration-short4, 200ms);\\n}\\n\\n.container {\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  width: auto;\\n}\\n\\n.caption-container {\\n  width: 100%;\\n  display: flex;\\n  justify-content: space-between;\\n}\\n\\n::slotted([slot=caption]) {\\n  margin: 0.5rem;\\n}\\n\\n.content-container {\\n  width: 100%;\\n  display: flex;\\n  justify-content: center;\\n}\\n\\n.hidden {\\n  display: none !important;\\n}\";\n\nvar style$l = \"@charset \\\"UTF-8\\\";\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: inline-block;\\n  height: auto;\\n  width: auto;\\n  /* max-width 100% prevents buttons with long text from blowing out their\\n  * container (e.g. dh-card) — the label is truncated via ellipsis instead. */\\n  max-width: 100%;\\n  vertical-align: middle;\\n  /* In flex containers the button must NOT stretch on the cross axis — its\\n  * hit area should be the visible pill, not the full container width. */\\n  align-self: flex-start;\\n  flex: 0 0 auto;\\n  /* Default spacing so buttons in toolbars / vertical lists do not touch\\n  * each other. Consumers can still override via margin. */\\n  margin: 2px;\\n}\\n\\n#dh-button {\\n  display: inline-flex;\\n  align-items: center;\\n  justify-content: center;\\n  gap: 8px;\\n  width: auto;\\n  max-width: 100%;\\n  text-align: center;\\n  cursor: pointer;\\n  position: relative;\\n}\\n\\n.disabled {\\n  cursor: not-allowed !important;\\n  pointer-events: none;\\n  opacity: 0.5;\\n}\\n\\n.img {\\n  width: 18px;\\n  height: 18px;\\n  object-fit: contain;\\n  flex-shrink: 0;\\n}\\n\\nslot[name=img]::slotted(img),\\nslot[name=img]::slotted(svg) {\\n  width: 18px;\\n  height: 18px;\\n  max-height: 100%;\\n  max-width: 100%;\\n  object-fit: contain;\\n  flex-shrink: 0;\\n}\\n\\n:host([icon-button]) {\\n  display: inline-flex;\\n  align-items: center;\\n  justify-content: center;\\n  width: auto;\\n  max-width: 100%;\\n  min-width: 0;\\n  height: 40px;\\n  max-height: 100%;\\n  min-height: 0;\\n  aspect-ratio: 1/1;\\n  flex-shrink: 0;\\n  box-sizing: border-box;\\n  border-radius: 9999px;\\n  overflow: hidden;\\n  /* ::slotted rules lose in the cascade against rules from the containing\\n  * tree (e.g. the global [class*='fv-icon'] rule from furnview-icons.sass).\\n  * Set the icon font size as a custom property on the host instead — it\\n  * inherits down the flat tree to the slotted div, where the icon CSS\\n  * resolves var(--fv-icons-font-size) to the intended size. */\\n  --fv-icons-font-size: 20px;\\n  --fv-icons-line-height: 20px;\\n}\\n\\n:host([icon-button]) slot[name=img]::slotted(div) {\\n  width: 20px;\\n  height: 20px;\\n  font-size: 20px;\\n  line-height: 1;\\n  flex-shrink: 0;\\n  overflow: hidden;\\n}\";\n\nvar __defProp$l = Object.defineProperty;\nvar __getOwnPropDesc$m = Object.getOwnPropertyDescriptor;\nvar __decorateClass$m = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$m(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$l(target, key, result);\n  return result;\n};\nlet DhButton = class extends LitElement {\n  constructor() {\n    super();\n    this.variant = \"tonal\";\n    this.buttonText = \"\";\n    this.disabled = false;\n    this.iconButton = false;\n    this.img = \"\";\n    this.type = \"\";\n    this.name = \"\";\n    this.value = \"\";\n    this.onFormKeyDown = (event) => {\n      const element = event.target;\n      const isHTMLInputElement = element instanceof HTMLInputElement || element instanceof DhInput;\n      const isTypeAllowed = isHTMLInputElement && ![\"textarea\", \"button\", \"submit\", \"reset\"].includes(element.type);\n      const isEnter = event.key === \"Enter\";\n      if (isHTMLInputElement && isTypeAllowed && isEnter) {\n        this.onKeyDown(event);\n      }\n    };\n    this.addEventListener(\"click\", (event) => {\n      this.clickButton(event);\n    });\n    this.addEventListener(\"keydown\", (event) => this.onKeyDown(event));\n    this.elementInternals = this.attachInternals();\n  }\n  render() {\n    return html`<div id=\"dh-button\" part=\"root\" class=\"${this.disabled ? \"dh-md-button disabled\" : \"dh-md-button\"}\">\n      ${this.buttonText ? html`<span part=\"label\">${this.buttonText}</span>` : \"\"}\n      <slot name=\"img\"> ${this.img ? html`<img class=\"img\" src=\"${this.img}\" part=\"icon\" />` : \"\"} </slot>\n    </div>`;\n  }\n  clickButton(event) {\n    if (this.disabled) {\n      event.stopImmediatePropagation();\n    } else if (this.type === \"submit\") {\n      const form = this.elementInternals.form;\n      if (!form) return;\n      let hidden;\n      if (this.name && this.value) {\n        hidden = document.createElement(\"input\");\n        hidden.type = \"hidden\";\n        hidden.name = this.name;\n        hidden.value = this.value;\n        form.appendChild(hidden);\n      }\n      const cleanup = () => hidden?.remove();\n      form.addEventListener(\"formdata\", cleanup, { once: true });\n      try {\n        form.requestSubmit();\n      } catch (err) {\n        cleanup();\n        throw err;\n      }\n    } else if (this.type === \"reset\") {\n      this.elementInternals.form?.reset();\n    }\n  }\n  onKeyDown(event) {\n    if (event.key === \"Enter\" || event.key === \" \") {\n      event.preventDefault();\n      this.clickButton(event);\n    }\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-button\")) {\n      this.setAttribute(\"dh-button\", \"\");\n    }\n    this.elementInternals.form?.addEventListener(\"keydown\", this.onFormKeyDown);\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.elementInternals.form?.removeEventListener(\"keydown\", this.onFormKeyDown);\n  }\n};\nDhButton.styles = [unsafeCSS(style$l)];\nDhButton.formAssociated = true;\n__decorateClass$m([\n  property({ type: String, reflect: true })\n], DhButton.prototype, \"variant\", 2);\n__decorateClass$m([\n  property({ type: String, reflect: true })\n], DhButton.prototype, \"buttonText\", 2);\n__decorateClass$m([\n  property({ type: Boolean, reflect: true })\n], DhButton.prototype, \"disabled\", 2);\n__decorateClass$m([\n  property({ type: Boolean, reflect: true, attribute: \"icon-button\" })\n], DhButton.prototype, \"iconButton\", 2);\n__decorateClass$m([\n  property({ type: String, reflect: true })\n], DhButton.prototype, \"img\", 2);\n__decorateClass$m([\n  property()\n], DhButton.prototype, \"type\", 2);\n__decorateClass$m([\n  property({ type: String, reflect: true })\n], DhButton.prototype, \"name\", 2);\n__decorateClass$m([\n  property({ type: String, reflect: true })\n], DhButton.prototype, \"value\", 2);\nDhButton = __decorateClass$m([\n  customElement(\"dh-button\")\n], DhButton);\n\nvar __defProp$k = Object.defineProperty;\nvar __getOwnPropDesc$l = Object.getOwnPropertyDescriptor;\nvar __decorateClass$l = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$l(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$k(target, key, result);\n  return result;\n};\nlet DhWindow = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.windowData = { caption: \"\", content: \"\" };\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-window\")) {\n      this.setAttribute(\"dh-window\", \"\");\n    }\n  }\n  render() {\n    return html` <div id=\"container\" class=\"container\" part=\"root\">\n      <div id=\"caption-container\" class=\"caption-container\" part=\"header\">\n        <slot name=\"caption\" part=\"label\">${this.windowData.caption}</slot>\n        <div @click=${this.closeButtonClick} part=\"trigger\">\n          <div class=\"fv-icon-close\" slot=\"img\" part=\"close-icon\"></div>\n        </div>\n      </div>\n      <div id=\"content-container\" class=\"content-container\" part=\"content\">\n        <slot name=\"content\">${this.windowData.content}</slot>\n      </div>\n    </div>`;\n  }\n  closeButtonClick() {\n    this.classList.add(\"hidden\");\n    this.closed.dispatch();\n  }\n};\nDhWindow.styles = [\n  css`\n      ${unsafeCSS(style$m)}\n    `\n];\n__decorateClass$l([\n  state()\n], DhWindow.prototype, \"windowData\", 2);\n__decorateClass$l([\n  event({ bubbles: true, cancelable: true, composed: true }, \"closed\")\n], DhWindow.prototype, \"closed\", 2);\nDhWindow = __decorateClass$l([\n  customElement(\"dh-window\")\n], DhWindow);\n\nvar style$k = \":host {\\n  position: absolute;\\n  transform: none;\\n  left: 0;\\n  top: 0;\\n  width: max-content;\\n  height: max-content;\\n  user-select: none;\\n}\\n\\n#caption-container {\\n  user-select: none;\\n}\";\n\nvar __defProp$j = Object.defineProperty;\nvar __getOwnPropDesc$k = Object.getOwnPropertyDescriptor;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __reflectGet = Reflect.get;\nvar __decorateClass$k = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$k(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$j(target, key, result);\n  return result;\n};\nvar __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);\nlet DhMovableWindow = class extends DhWindow {\n  constructor() {\n    super(...arguments);\n    this.isDragging = false;\n    this.offsetX = 0;\n    this.offsetY = 0;\n    this.windowData = { caption: \"\", content: \"\" };\n    this.onMouseMove = (e) => {\n      if (!this.isDragging) return;\n      const width = this.offsetWidth;\n      const height = this.offsetHeight;\n      let newLeft = e.clientX - this.offsetX + window.scrollX;\n      let newTop = e.clientY - this.offsetY + window.scrollY;\n      const maxLeft = document.documentElement.scrollWidth - width;\n      const maxTop = document.documentElement.scrollHeight - height;\n      newLeft = Math.max(0, Math.min(newLeft, maxLeft));\n      newTop = Math.max(0, Math.min(newTop, maxTop));\n      this.style.left = `${newLeft}px`;\n      this.style.top = `${newTop}px`;\n    };\n    this.onMouseUp = () => {\n      this.isDragging = false;\n    };\n  }\n  firstUpdated() {\n    super.firstUpdated;\n    this.addEventListener(\"mousedown\", (e) => {\n      const composedPath = e.composedPath()[0];\n      if (composedPath && composedPath.tagName.toLowerCase() === \"input\") return;\n      const currentLeft = this.getBoundingClientRect().left + window.scrollX;\n      const currentTop = this.getBoundingClientRect().top + window.scrollY;\n      this.style.left = `${currentLeft}px`;\n      this.style.top = `${currentTop}px`;\n      this.isDragging = true;\n      this.offsetX = e.clientX + window.scrollX - currentLeft;\n      this.offsetY = e.clientY + window.scrollY - currentTop;\n    });\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-movable-window\")) {\n      this.setAttribute(\"dh-movable-window\", \"\");\n    }\n    document.addEventListener(\"mousemove\", this.onMouseMove);\n    document.addEventListener(\"mouseup\", this.onMouseUp);\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    document.removeEventListener(\"mousemove\", this.onMouseMove);\n    document.removeEventListener(\"mouseup\", this.onMouseUp);\n  }\n};\nDhMovableWindow.styles = [\n  ...__superGet(DhMovableWindow, DhMovableWindow, \"styles\"),\n  css`\n      ${unsafeCSS(style$k)}\n    `\n];\n__decorateClass$k([\n  state()\n], DhMovableWindow.prototype, \"windowData\", 2);\nDhMovableWindow = __decorateClass$k([\n  customElement(\"dh-movable-window\")\n], DhMovableWindow);\n\nvar style$j = \"*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: flex;\\n  flex-direction: column;\\n  overflow: hidden;\\n  min-height: 0;\\n}\\n\\n#grid-container {\\n  margin: 0;\\n  flex: 1;\\n  min-height: 0;\\n  width: 100%;\\n  overflow: auto;\\n  padding: 1rem;\\n}\\n\\n#grid-container {\\n  scrollbar-width: thin;\\n  scrollbar-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2)) var(--dh-scrollbar-track, transparent);\\n}\\n\\n#grid-container::-webkit-scrollbar {\\n  width: var(--dh-scrollbar-width, 8px);\\n  height: var(--dh-scrollbar-width, 8px);\\n}\\n\\n#grid-container::-webkit-scrollbar-thumb {\\n  background-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2));\\n  border-radius: var(--dh-scrollbar-radius, 4px);\\n}\\n\\n#grid-container::-webkit-scrollbar-thumb:hover {\\n  background-color: var(--dh-scrollbar-thumb-hover, rgba(0, 0, 0, 0.35));\\n}\\n\\n#grid-container::-webkit-scrollbar-track {\\n  background: var(--dh-scrollbar-track, transparent);\\n}\";\n\nfunction findClosestElement(node, selector) {\n  if (!node) {\n    return null;\n  }\n  if (node instanceof ShadowRoot) {\n    return findClosestElement(node.host, selector);\n  }\n  if (node instanceof HTMLElement) {\n    if (node.matches(selector)) {\n      return node;\n    } else {\n      return findClosestElement(node.parentNode, selector);\n    }\n  }\n  return findClosestElement(node.parentNode, selector);\n}\n\nvar __defProp$i = Object.defineProperty;\nvar __getOwnPropDesc$j = Object.getOwnPropertyDescriptor;\nvar __decorateClass$j = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$j(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$i(target, key, result);\n  return result;\n};\nlet DhSettingsGrid = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.registeredElements = /* @__PURE__ */ new Map();\n    this.notEditable = false;\n    this.resettable = false;\n    this.open = false;\n    this.multiColumn = false;\n    this.gridDefines = { dependencies: [], tree: [] };\n    this.customerValues = [];\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-settings-grid\")) {\n      this.setAttribute(\"dh-settings-grid\", \"\");\n    }\n  }\n  set gridDefinesData(gridDefines) {\n    if (gridDefines.dependencies == void 0) {\n      gridDefines.dependencies = [];\n    }\n    gridDefines.tree = this.validateGridDefines(gridDefines.tree);\n    this.gridDefines = gridDefines;\n  }\n  render() {\n    return html` <div\n      id=\"grid-container\"\n      part=\"root\"\n      .notEditable=\"${this.notEditable}\"\n      .resettable=\"${this.resettable}\"\n      .gridDefines=\"${this.gridDefines}\"\n      @registerAtGrid=\"${this.register}\"\n      @unregisterAtGrid=\"${this.unregister}\"\n      @inputfocusout=\"${this.informRegisteredElements}\"\n      @isChange=\"${this.informRegisteredElements}\"\n      @multiSelectboxChange=\"${this.informRegisteredElements}\"\n      @changeSelectOption=\"${this.informRegisteredElements}\"\n      @resetGridGroup=\"${this.resetGroup}\"\n      @resetSettingItem=\"${this.resetItem}\"\n    >\n      <slot id=\"grid\" class=\"grid\" name=\"grid\" part=\"content\">\n        ${this.gridDefines?.tree?.map((group) => {\n      return html`\n            <dh-grid-item\n              .gridDefines=\"${Object.assign({}, this.gridDefines)}\"\n              .groupRegulations=\"${Object.assign({}, group)}\"\n              .customerValues=\"${[...this.customerValues]}\"\n              .notEditable=\"${this.notEditable}\"\n              groupName=\"${group.group}\"\n              text=\"${group.text}\"\n              info=\"${group.info}\"\n              ?resettable=\"${this.resettable}\"\n              ?open=\"${this.open}\"\n              exportparts=\"root: grid-item-root, header: grid-item-header, icon-reset: grid-item-icon-reset, icon: grid-item-icon, label: grid-item-label, content: grid-item-content, submenu: grid-item-submenu, grid-item-root, grid-item-header, grid-item-icon-reset, grid-item-icon, grid-item-label, grid-item-content, grid-item-submenu, setting-item-root, setting-item-label, setting-item-icon, setting-item-input, dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text, dh-checkbox-root, dh-checkbox-input, dh-select-root, dh-select-trigger, dh-select-label, dh-select-icon, dh-select-menu, dh-select-input, dh-select-content, dh-select-item, dh-select-selected, dh-multiselect-root, dh-multiselect-trigger, dh-multiselect-icon, dh-multiselect-content, dh-multiselect-input, dh-multiselect-item, dh-multiselect-selected, dh-multiselect-item-root, dh-multiselect-item-label, dh-multiselect-item-trigger, dh-multiselect-item-icon, dh-multiselect-chip-root, dh-multiselect-chip-icon\"\n            ></dh-grid-item>\n          `;\n    })}\n      </slot>\n    </div>`;\n  }\n  getGridDefinesData() {\n    return this.gridDefines;\n  }\n  register(event) {\n    const registerEntry = event.detail;\n    this.registeredElements.set(registerEntry.key, registerEntry.element);\n  }\n  unregister(event) {\n    const unregisterEntry = event.detail;\n    this.registeredElements.delete(unregisterEntry.key);\n  }\n  calculateBits(bitListSelected) {\n    return bitListSelected.reduce((acc, bit, i) => {\n      if (bit === 1) {\n        acc += 2 ** (15 - i);\n      }\n      return acc;\n    }, 0);\n  }\n  writeValue(key, targetValue, type, selectTarget, settingsItem) {\n    const item = this.findItem(this.gridDefines.tree, key);\n    if (item) {\n      if (type == \"List\") {\n        item.customerValue = selectTarget.getSelectedOption().dataId;\n      } else if (type == \"BitList\") {\n        const bitListSelected = new Array(16).fill(0);\n        const multiSelectTargetValue = selectTarget.getValues();\n        for (const item2 of multiSelectTargetValue) {\n          if (item2.isSelected) {\n            const bitIndex = Math.log2(Number(item2.id));\n            bitListSelected[15 - bitIndex] = 1;\n          }\n        }\n        item.customerValue = this.calculateBits(bitListSelected);\n      } else {\n        item.customerValue = targetValue;\n      }\n      const groupItem = findClosestElement(settingsItem, \"dh-grid-item\");\n      if (groupItem) {\n        const key2 = groupItem.getAttribute(\"groupName\");\n        if (key2) {\n          const groupData = this.findGroup(this.gridDefines.tree, key2);\n          if (groupData) {\n            groupItem.groupRegulations = groupData;\n          }\n        }\n      }\n      if (this.customerValues) {\n        const customerValue = this.customerValues.find((value) => value.key === key);\n        if (customerValue) {\n          customerValue.value = targetValue;\n        }\n      }\n      settingsItem.data = Object.assign({}, item);\n    }\n  }\n  findItem(groups, key) {\n    for (const group of groups) {\n      for (const item2 of group.data) {\n        if (item2.key === key) {\n          return item2;\n        }\n      }\n      const item = this.findItem(group.submenu, key);\n      if (item) {\n        return item;\n      }\n    }\n    return null;\n  }\n  findGroup(groups, key) {\n    for (const group of groups) {\n      if (group.group === key) {\n        return group;\n      }\n      const groupData = this.findGroup(group.submenu, key);\n      if (groupData) {\n        return groupData;\n      }\n    }\n    return null;\n  }\n  informRegisteredElements(event) {\n    let targetPath = event.composedPath();\n    targetPath = targetPath.filter((element) => element.tagName != void 0);\n    let target = targetPath.find((target2) => target2.tagName.toLowerCase() == \"dh-checkbox\");\n    if (!target) {\n      target = targetPath.find((target2) => target2.tagName.toLowerCase() == \"dh-input\");\n    }\n    if (!target) {\n      target = targetPath.find((target2) => target2.tagName.toLowerCase() == \"dh-select\");\n    }\n    if (!target) {\n      target = targetPath.find((target2) => target2.tagName.toLowerCase() == \"dh-multi-selectbox\");\n    }\n    if (!target) {\n      target = targetPath.find((target2) => target2.tagName.toLowerCase() == \"textarea\");\n    }\n    const settingItem = targetPath.find((target2) => target2.tagName.toLowerCase() == \"dh-setting-item\");\n    const key = settingItem?.getAttribute(\"key\");\n    const type = settingItem?.getAttribute(\"type\");\n    const textarea = settingItem?.closest(\"textarea\");\n    if (textarea) {\n      target = textarea;\n    }\n    if (!key || !type || !target) {\n      return;\n    }\n    let targetValue = null;\n    if (type == \"boolean\") {\n      targetValue = target.getCheckboxIsChecked();\n    } else if (type == \"Integer\" || type == \"Varchar\" || type == \"Path\" || type == \"Mail\") {\n      targetValue = target.getInputValue();\n    } else if (type == \"DateTime\") {\n      targetValue = target.getInputValueAsDate();\n    } else if (type == \"List\") {\n      targetValue = target.getSelectedOption().dataId;\n    } else if (type == \"BitList\") {\n      targetValue = target.getValues().filter((value) => value.isSelected);\n    } else if (type == \"note\") {\n      targetValue = target.value;\n    }\n    this.writeValue(key, targetValue, type, target, settingItem);\n    this.informElementsAboutRestrictedValues(targetValue, key);\n  }\n  informElementsAboutRestrictedValues(targetValue, key) {\n    const targetDependencies = this.gridDefines?.dependencies?.filter((dependency) => dependency.key == key);\n    targetDependencies?.forEach((dependency) => {\n      const restricted = dependency.restricts;\n      const restrictedElement = this.registeredElements.get(restricted);\n      if (targetValue == dependency.condition) {\n        restrictedElement.currentRestriction = dependency.values;\n      } else {\n        restrictedElement.currentRestriction = \"\";\n      }\n    });\n  }\n  validateGridDefines(gridDefines) {\n    gridDefines.forEach((group) => {\n      group.data.forEach((item) => {\n        if (item.customerValue == void 0) {\n          item.customerValue = \"\";\n        }\n        if (item.doclink == void 0) {\n          item.doclink = \"\";\n        }\n        if (item.readonly == void 0) {\n          item.readonly = 0;\n        }\n        if (item.mandatory == void 0) {\n          item.mandatory = false;\n        }\n        if (item.visible == void 0) {\n          item.visible = \"1\";\n        }\n      });\n      if (group.submenu == void 0) {\n        group.submenu = [];\n      }\n      group.submenu = this.validateGridDefines(group.submenu);\n    });\n    return gridDefines;\n  }\n  resetGroup(event) {\n    const group = event.detail;\n    const key = group.getAttribute(\"groupName\");\n    if (key) {\n      const groupData = this.findGroup(this.gridDefines.tree, key);\n      if (groupData) {\n        this.resetGroupData(groupData);\n      }\n    }\n    this.gridDefinesData = Object.assign({}, this.gridDefines);\n  }\n  resetItem(event) {\n    const key = event.detail.getAttribute(\"key\");\n    if (!key) {\n      return;\n    }\n    const item = this.findItem(this.gridDefines.tree, key);\n    if (item) {\n      item.customerValue = null;\n      if (this.customerValues) {\n        const customerValue = this.customerValues.find((value) => value.key === item.key);\n        if (customerValue) {\n          customerValue.value = null;\n        }\n      }\n    }\n    this.gridDefinesData = Object.assign({}, this.gridDefines);\n  }\n  resetGroupData(groupData) {\n    groupData.data.forEach((item) => {\n      item.customerValue = null;\n      if (this.customerValues) {\n        const customerValue = this.customerValues.find((value) => value.key === item.key);\n        if (customerValue) {\n          customerValue.value = null;\n        }\n      }\n    });\n    groupData.submenu.forEach((subgroup) => {\n      this.resetGroupData(subgroup);\n    });\n  }\n};\nDhSettingsGrid.styles = css`\n    ${unsafeCSS(style$j)}\n  `;\n__decorateClass$j([\n  state()\n], DhSettingsGrid.prototype, \"registeredElements\", 2);\n__decorateClass$j([\n  property({ type: Boolean })\n], DhSettingsGrid.prototype, \"notEditable\", 2);\n__decorateClass$j([\n  property({ type: Boolean })\n], DhSettingsGrid.prototype, \"resettable\", 2);\n__decorateClass$j([\n  property({ type: Boolean, reflect: true })\n], DhSettingsGrid.prototype, \"open\", 2);\n__decorateClass$j([\n  property({ type: Boolean, reflect: true })\n], DhSettingsGrid.prototype, \"multiColumn\", 2);\n__decorateClass$j([\n  state()\n], DhSettingsGrid.prototype, \"gridDefines\", 2);\n__decorateClass$j([\n  state()\n], DhSettingsGrid.prototype, \"customerValues\", 2);\nDhSettingsGrid = __decorateClass$j([\n  customElement(\"dh-settings-grid\")\n], DhSettingsGrid);\n\nvar style$i = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n  text-align: center;\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n  display: flex;\\n  font-family: \\\"furnview-icons-simple\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n  content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n  content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n  content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n  content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n  content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n  content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n  content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n  content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n  content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n  content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n  content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n  content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n  content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n  content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n  content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n  content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n  content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n  content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n  content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n  content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n  content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n  content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n  content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n  content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n  content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n  content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n  content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n  content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n  content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n  content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n  content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n  content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n  content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n  content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n  content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n  content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n  content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n  content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n  content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n  content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n  content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n  content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n  content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n  content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n  content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n  content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n  content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n  content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n  content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n  content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n  content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n  content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n  content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n  content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n  content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n  content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n  content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n  content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n  content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n  content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n  content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n  content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n  content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n  content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n  content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n  content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n  content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n  content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n  content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n  content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n  content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n  content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n  content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n  content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n  content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n  content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n  content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n  content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n  content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n  content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n  content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n  content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n  content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n  content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n  content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n  content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n  content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n  content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n  content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n  content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n  content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n  content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n  content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n  content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n  content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n  content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n  content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n  content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n  content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n  content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n  content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n  content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n  content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n  content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n  content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n  content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n  content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n  content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n  content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n  content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n  content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n  content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n  content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n  content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n  content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n  content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n  content: \\\"à\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n  content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n  content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n  content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n  content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n  content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n  content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n  content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n  content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n  content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n  content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n  content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n  content: \\\"í\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n  content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n  content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n  content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n  content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n  text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n  display: flex;\\n  font-family: \\\"furnview-icons-multi\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n  content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n  content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n  content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n  content: \\\"0\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n  content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n  content: \\\";\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n  content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n  content: \\\"=\\\\a;\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n  content: \\\"<\\\";\\n  position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n  content: \\\"8\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n  content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n  content: \\\":\\\\a 8\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n  content: \\\"9\\\";\\n  position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: block;\\n}\\n\\n#item:hover > .container {\\n  background-color: var(--dh-grid-hover-bg, rgba(0, 0, 0, 0.04));\\n}\\n\\n.hidden {\\n  display: none;\\n}\\n\\nimg {\\n  margin: 0.2rem;\\n  cursor: pointer;\\n  height: 1rem;\\n  width: 0.5rem;\\n}\\n\\n#item {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  flex-wrap: wrap;\\n}\\n\\n.width {\\n  width: 100%;\\n}\\n\\n.container {\\n  display: flex;\\n  align-items: center;\\n  width: 100%;\\n  padding: 0.2rem 0rem 0.2rem 0rem;\\n  gap: 8px;\\n  border-radius: var(--dh-grid-item-header-radius, 20px);\\n}\\n\\n:host([open]) #settingmenu:not(.hidden) {\\n  display: grid;\\n  grid-template-columns: var(--dh-grid-item-content-columns, 1fr);\\n  column-gap: var(--dh-grid-item-content-column-gap, 0);\\n  row-gap: 0;\\n  padding: 0 var(--dh-grid-item-content-padding-right, 0) 0 0;\\n  align-items: start;\\n}\\n\\n#item-name {\\n  flex: 1;\\n  min-width: 0;\\n}\\n\\n.folder {\\n  margin-left: auto;\\n  flex-shrink: 0;\\n}\\n\\n.icon:before {\\n  font-size: 1.2rem;\\n}\\n\\n.notDefault {\\n  font-weight: bold;\\n}\\n\\n.right {\\n  transform: rotate(-90deg);\\n}\\n\\n:host(.selected) #item {\\n  outline: var(--dh-grid-item-selected-outline, none);\\n  outline-offset: var(--dh-grid-item-selected-outline-offset, 0);\\n}\\n\\n:host(.selected) #container {\\n  background-color: var(--dh-grid-item-selected-header-bg, transparent);\\n  border-radius: var(--dh-grid-item-selected-header-radius, inherit);\\n}\\n\\n:host(.selected) #item-name {\\n  color: var(--dh-grid-item-selected-color, inherit);\\n}\\n\\n:host(.selected) #folder {\\n  color: var(--dh-grid-item-selected-color, inherit);\\n}\\n\\n:host(.selected) [part=icon-reset] {\\n  color: var(--dh-grid-item-selected-color, inherit);\\n}\";\n\nvar __defProp$h = Object.defineProperty;\nvar __getOwnPropDesc$i = Object.getOwnPropertyDescriptor;\nvar __decorateClass$i = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$i(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$h(target, key, result);\n  return result;\n};\nlet DhGridItem = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.notDefault = false;\n    this.notUseDefault = false;\n    this.open = false;\n    this.notEditable = false;\n    this.resettable = false;\n    this.customerValues = [];\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-grid-item\")) {\n      this.setAttribute(\"dh-grid-item\", \"\");\n    }\n  }\n  set groupRegulations(group) {\n    this.group = group;\n    this.fulfilledDependencies = this.getFulfilledDependencies(group);\n    if (this.group.data.length > 0 || this.group.submenu.length > 0) {\n      (async () => this.folder?.classList.remove(\"hidden\"))();\n    }\n  }\n  //Achtung in der Administration wird von dieser Klasse geerbt und auch das Template überschrieben. Änderungen die auch in der Administration greifen sollen, müssen dort auch gepflegt werden.\n  render() {\n    return html` <div id=\"item\" part=\"root\" title=\"${this.group?.translatedInfo}\">\n      <div id=\"container\" class=\"container\" part=\"header\" @click=\"${this.itemClick}\">\n        <div class=\"${this.resettable ? \"\" : \"hidden\"}\">\n          <div class=\"fv-icon-reload icon\" part=\"icon-reset\" @click=\"${this.reset}\"></div>\n        </div>\n        <span id=\"item-name\" part=\"label\" class=\"${this.getGridItemClass()}\">\n          <slot id=\"name\" name=\"name\">${this.group?.translatedText ? this.group?.translatedText : this.group?.group}</slot>\n        </span>\n        <div id=\"folder\" class=\"${this.open ? \"fv-icon-arrow-down-2 folder\" : \"fv-icon-arrow-down-2 right  folder\"}\" part=\"icon\"></div>\n      </div>\n      <div id=\"settingmenu\" class=\"${this.open ? \"settingmenu width\" : \"settingmenu width hidden\"}\" part=\"content\">\n        <slot id=\"settingmenu-slot\" name=\"settingmenu\">\n          ${this.group ? this.group.data.map((data) => {\n      if (data.visible == \"1\") {\n        return this.renderSettingItem(data);\n      }\n    }) : null}\n        </slot>\n      </div>\n      <div id=\"submenu\" class=\"${this.open ? \"submenu width\" : \"submenu width hidden\"}\" part=\"submenu\">\n        <slot id=\"submenu-slot\" name=\"submenu\"> ${this.group ? this.group.submenu.map((group) => this.renderGridItem(group)) : null} </slot>\n      </div>\n    </div>`;\n  }\n  renderSettingItem(data) {\n    return html`<dh-setting-item\n      .notEditable=\"${this.notEditable}\"\n      type=\"${data.type}\"\n      .data=${Object.assign({}, data)}\n      .value=${this.customerValues?.find((value) => value.key == data.key)}\n      .default=${data.default}\n      .currentRestriction=\"${this.fulfilledDependencies?.find((dependency) => dependency.restricts == data.key)?.values}\"\n      groupName=\"${this.group?.group}\"\n      text=\"${data.name}\"\n      info=\"${data.info}\"\n      key=\"${data.key}\"\n      class=\"${this.getSettingItemClass(data)}\"\n      ?resettable=\"${this.resettable}\"\n      exportparts=\"root: setting-item-root, label: setting-item-label, icon: setting-item-icon, input: setting-item-input, dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text, dh-checkbox-root, dh-checkbox-input, dh-select-root, dh-select-trigger, dh-select-label, dh-select-icon, dh-select-menu, dh-select-input, dh-select-content, dh-select-item, dh-select-selected, dh-multiselect-root, dh-multiselect-trigger, dh-multiselect-icon, dh-multiselect-content, dh-multiselect-input, dh-multiselect-item, dh-multiselect-selected, dh-multiselect-item-root, dh-multiselect-item-label, dh-multiselect-item-trigger, dh-multiselect-item-icon, dh-multiselect-chip-root, dh-multiselect-chip-icon\"\n      ?mandatory=\"${data.mandatory}\"\n      ?readonly=\"${data.readonly}\"\n      ?notUseDefault=\"${this.notUseDefault}\"\n    ></dh-setting-item>`;\n  }\n  renderGridItem(group) {\n    return html`<dh-grid-item\n      .notEditable=\"${this.notEditable}\"\n      .gridDefines=\"${this.gridDefines}\"\n      .fulfilledDependencies=\"${this.getFulfilledDependencies(group)}\"\n      .groupRegulations=${Object.assign({}, group)}\n      .customerValues=${[...this.customerValues]}\n      groupName=\"${group.group}\"\n      text=\"${group.text}\"\n      info=\"${group.info}\"\n      ?open=\"${this.open}\"\n      ?resettable=\"${this.resettable}\"\n      exportparts=\"root: grid-item-root, header: grid-item-header, icon-reset: grid-item-icon-reset, icon: grid-item-icon, label: grid-item-label, content: grid-item-content, submenu: grid-item-submenu, grid-item-root, grid-item-header, grid-item-icon-reset, grid-item-icon, grid-item-label, grid-item-content, grid-item-submenu, setting-item-root, setting-item-label, setting-item-icon, setting-item-input, dh-input-root, dh-input-input, dh-input-label, dh-input-supporting-text, dh-checkbox-root, dh-checkbox-input, dh-select-root, dh-select-trigger, dh-select-label, dh-select-icon, dh-select-menu, dh-select-input, dh-select-content, dh-select-item, dh-select-selected, dh-multiselect-root, dh-multiselect-trigger, dh-multiselect-icon, dh-multiselect-content, dh-multiselect-input, dh-multiselect-item, dh-multiselect-selected, dh-multiselect-item-root, dh-multiselect-item-label, dh-multiselect-item-trigger, dh-multiselect-item-icon, dh-multiselect-chip-root, dh-multiselect-chip-icon\"\n      ?notUseDefault=\"${this.notUseDefault}\"\n    ></dh-grid-item>`;\n  }\n  firstUpdated(_changedProperties) {\n    super.firstUpdated(_changedProperties);\n    this.showFolderOrNoImage();\n    if (this.open) {\n      this.classList.add(\"selected\");\n    }\n    const config = { attributes: true, childList: true, subtree: true };\n    const callback = (mutationList, observer2) => {\n      for (const mutation of mutationList) {\n        if (mutation.type === \"childList\") {\n          this.showFolderOrNoImage();\n        }\n      }\n    };\n    const observer = new MutationObserver(callback);\n    observer.observe(this, config);\n  }\n  showOnlyNotDefaultElements() {\n    let settingItems = Array.from(this.renderRoot.querySelectorAll(\"dh-setting-item[slot=settingmenu]\"));\n    if (settingItems.length == 0) {\n      settingItems = Array.from(this.renderRoot.querySelectorAll(\"dh-setting-item\"));\n    }\n    const defaultSettingItems = settingItems.filter((item) => !item.classList.contains(\"notDefault\"));\n    defaultSettingItems.forEach((item) => item.classList.add(\"hidden\"));\n    let submenuGridItems = Array.from(this.renderRoot.querySelectorAll(\"dh-grid-item[slot=submenu]\"));\n    if (submenuGridItems.length == 0) {\n      submenuGridItems = Array.from(this.renderRoot.querySelectorAll(\"dh-grid-item\"));\n    }\n    const defaultGridItems = submenuGridItems.filter((item) => !item.hasAttribute(\"notDefault\"));\n    defaultGridItems.forEach((item) => item.classList.add(\"hidden\"));\n    const notDefaultGridItems = submenuGridItems.filter((item) => item.hasAttribute(\"notDefault\"));\n    notDefaultGridItems.forEach((item) => item.showOnlyNotDefaultElements());\n  }\n  showAllElements() {\n    let settingItems = Array.from(this.renderRoot.querySelectorAll(\"dh-setting-item[slot=settingmenu]\"));\n    if (settingItems.length == 0) {\n      settingItems = Array.from(this.renderRoot.querySelectorAll(\"dh-setting-item\"));\n    }\n    settingItems.forEach((item) => item.classList.remove(\"hidden\"));\n    let submenuGridItems = Array.from(this.renderRoot.querySelectorAll(\"dh-grid-item[slot=submenu]\"));\n    if (submenuGridItems.length == 0) {\n      submenuGridItems = Array.from(this.renderRoot.querySelectorAll(\"dh-grid-item\"));\n    }\n    submenuGridItems.forEach((item) => {\n      item.classList.remove(\"hidden\");\n      item.showAllElements();\n    });\n  }\n  showFilteredNames(searchValue) {\n    let settingItems = Array.from(this.renderRoot.querySelectorAll(\"dh-setting-item[slot=settingmenu]\"));\n    if (settingItems.length == 0) {\n      settingItems = Array.from(this.renderRoot.querySelectorAll(\"dh-setting-item\"));\n    }\n    settingItems.forEach((item) => {\n      const name = item.getName().toLowerCase();\n      const searchValueToLower = searchValue.toLowerCase();\n      const index = name.indexOf(searchValueToLower);\n      if (index < 0) {\n        item.classList.add(\"hidden\");\n      } else {\n        item.classList.remove(\"hidden\");\n      }\n    });\n    let displayedSettingItems = Array.from(this.renderRoot.querySelectorAll(\"dh-setting-item[slot=settingmenu]\"));\n    if (displayedSettingItems.length == 0) {\n      displayedSettingItems = Array.from(this.renderRoot.querySelectorAll(\"dh-setting-item\"));\n    }\n    displayedSettingItems = displayedSettingItems.filter((item) => !item.classList.contains(\"hidden\"));\n    if (displayedSettingItems.length > 0) {\n      this.setAttribute(\"hasItems\", \"\");\n    } else {\n      this.removeAttribute(\"hasItems\");\n    }\n    let submenuGridItems = Array.from(this.renderRoot.querySelectorAll(\"dh-grid-item[slot=submenu]\"));\n    if (submenuGridItems.length == 0) {\n      submenuGridItems = Array.from(this.renderRoot.querySelectorAll(\"dh-grid-item\"));\n    }\n    submenuGridItems.forEach((item) => {\n      item.showFilteredNames(searchValue);\n    });\n    if (submenuGridItems.length > 0) {\n      const submenuGridItemsWithSettingItems = submenuGridItems.filter((item) => item.hasAttribute(\"hasItems\"));\n      if (submenuGridItemsWithSettingItems.length > 0) {\n        this.classList.remove(\"hidden\");\n      } else {\n        if (this.hasAttribute(\"hasItems\")) {\n          this.classList.remove(\"hidden\");\n        } else {\n          this.classList.add(\"hidden\");\n        }\n      }\n    } else {\n      if (this.hasAttribute(\"hasItems\")) {\n        this.classList.remove(\"hidden\");\n      } else {\n        this.classList.add(\"hidden\");\n      }\n    }\n  }\n  getSettingItemClass(data) {\n    let defaultClass = \"\";\n    if (this.fulfilledDependencies?.find((dependency) => dependency.restricts == data.key)?.values || this.customerValues?.find((value) => value.key == data.key)) {\n      defaultClass = \"notDefault\";\n    }\n    return defaultClass;\n  }\n  getGridItemClass() {\n    const data = this.group?.data;\n    if (data) {\n      for (let i = 0; i < data?.length; i++) {\n        const fulfilledDependency = this.fulfilledDependencies?.find((dependency) => dependency.restricts == data[i].key)?.values;\n        const individualValue = this.customerValues?.find((value) => value.key == data[i].key);\n        const customerValue = this.group?.data.some((item) => item.customerValue);\n        if (fulfilledDependency || individualValue || customerValue) {\n          this.notDefault = true;\n          return \"notDefault\";\n        }\n      }\n      this.notDefault = false;\n      return \"\";\n    }\n    this.notDefault = false;\n    return \"\";\n  }\n  itemClick(event2) {\n    event2.stopPropagation();\n    const target = event2.target;\n    this.openOrCloseMenu(target);\n    this.itemClicked();\n  }\n  openOrCloseMenu(target) {\n    this.open = !this.open;\n    this.submenu.classList.toggle(\"hidden\");\n    this.settingmenu.classList.toggle(\"hidden\");\n    this.toggleFolderImage();\n  }\n  async showFolderOrNoImage() {\n    const folder = await this.folder;\n    const settingmenu = await this.settingmenu;\n    if (await this.hasChildren()) {\n      if (this.open) {\n        settingmenu.classList.remove(\"hidden\");\n      } else {\n        folder.classList.remove(\"hidden\");\n      }\n    } else {\n      folder.classList.add(\"hidden\");\n    }\n  }\n  itemClicked() {\n    this.griditemclicked.dispatch(this);\n  }\n  toggleFolderImage() {\n    const isNotHidden = this.classList.contains(\"selected\");\n    if (!isNotHidden) {\n      this.folder.classList.remove(\"right\");\n      this.classList.add(\"selected\");\n    } else {\n      this.folder.classList.add(\"right\");\n      this.classList.remove(\"selected\");\n    }\n  }\n  async hasChildren() {\n    const subMenuItem = this.querySelector(\"[slot = submenu]\");\n    const settingmenuItem = this.querySelector(\"[slot = settingmenu]\");\n    const subMenuChildrenCount = this.renderRoot.querySelector(\"#submenu-slot\")?.childElementCount || 0;\n    const settingMenuChildrenCount = this.renderRoot.querySelector(\"#settingmenu-slot\")?.childElementCount || 0;\n    return subMenuItem != null || settingmenuItem != null || subMenuChildrenCount > 0 || settingMenuChildrenCount > 0;\n  }\n  getCustomerSettings(dependency) {\n    const customerSettings = [];\n    const item = this.group?.data.find((data) => data.key == dependency.key);\n    if (item?.key && item?.customerValue) {\n      const settingsItem = {\n        key: item.key,\n        value: item.customerValue\n      };\n      customerSettings.push(settingsItem);\n    } else {\n      const found = this.customerValues?.find((data) => data.key == dependency.key);\n      if (found) {\n        customerSettings.push(found);\n      }\n    }\n    return customerSettings;\n  }\n  getFulfilledDependencies(group) {\n    const data = group?.data;\n    const groupDependencies = [];\n    const fulfilledGroupDependencies = [];\n    data?.forEach((dataObject) => {\n      const dependency = this.gridDefines?.dependencies.find((dependency2) => dependency2.restricts == dataObject.key);\n      if (dependency) {\n        groupDependencies.push(dependency);\n      }\n    });\n    groupDependencies.forEach((dependency) => {\n      if (this.gridDefines?.tree) {\n        const dependencyKeyObject = this.findObject(this.gridDefines?.tree, dependency.key);\n        const userSettings = this.getCustomerSettings(dependency);\n        if (userSettings) {\n          userSettings.forEach((userSettingItem) => {\n            if (userSettingItem?.value == dependency.condition) {\n              fulfilledGroupDependencies.push(dependency);\n            }\n          });\n        } else if (dependencyKeyObject?.default == dependency.condition) {\n          fulfilledGroupDependencies.push(dependency);\n        }\n      }\n    });\n    return fulfilledGroupDependencies;\n  }\n  findObject(submenu, key) {\n    let object;\n    for (let i = 0; i < submenu.length; i++) {\n      if (object) {\n        break;\n      }\n      object = submenu[i].data.find((object2) => object2.key == key);\n      if (!object) {\n        object = this.findObject(submenu[i].submenu, key);\n      }\n    }\n    return object;\n  }\n  reset(event2) {\n    event2.stopPropagation();\n    this.resetGridGroup.dispatch(this);\n  }\n};\nDhGridItem.styles = [\n  css`\n      ${unsafeCSS(style$i)}\n    `\n];\n__decorateClass$i([\n  query(\"#folder\")\n], DhGridItem.prototype, \"folder\", 2);\n__decorateClass$i([\n  query(\"#settingmenu\")\n], DhGridItem.prototype, \"settingmenu\", 2);\n__decorateClass$i([\n  query(\"#submenu\")\n], DhGridItem.prototype, \"submenu\", 2);\n__decorateClass$i([\n  property({ type: Boolean, reflect: true })\n], DhGridItem.prototype, \"notDefault\", 2);\n__decorateClass$i([\n  property({ type: Boolean })\n], DhGridItem.prototype, \"notUseDefault\", 2);\n__decorateClass$i([\n  property({ type: Boolean, reflect: true })\n], DhGridItem.prototype, \"open\", 2);\n__decorateClass$i([\n  property({ type: Boolean })\n], DhGridItem.prototype, \"notEditable\", 2);\n__decorateClass$i([\n  property({ type: Boolean })\n], DhGridItem.prototype, \"resettable\", 2);\n__decorateClass$i([\n  state()\n], DhGridItem.prototype, \"group\", 2);\n__decorateClass$i([\n  state()\n], DhGridItem.prototype, \"customerValues\", 2);\n__decorateClass$i([\n  state()\n], DhGridItem.prototype, \"fulfilledDependencies\", 2);\n__decorateClass$i([\n  state()\n], DhGridItem.prototype, \"gridDefines\", 2);\n__decorateClass$i([\n  event({ bubbles: true, cancelable: true, composed: true }, \"griditemclicked\")\n], DhGridItem.prototype, \"griditemclicked\", 2);\n__decorateClass$i([\n  event({ bubbles: true, cancelable: true, composed: true }, \"resetGridGroup\")\n], DhGridItem.prototype, \"resetGridGroup\", 2);\nDhGridItem = __decorateClass$i([\n  customElement(\"dh-grid-item\")\n], DhGridItem);\n\nvar style$h = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n  text-align: center;\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n  display: flex;\\n  font-family: \\\"furnview-icons-simple\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n  content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n  content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n  content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n  content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n  content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n  content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n  content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n  content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n  content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n  content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n  content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n  content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n  content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n  content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n  content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n  content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n  content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n  content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n  content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n  content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n  content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n  content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n  content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n  content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n  content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n  content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n  content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n  content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n  content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n  content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n  content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n  content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n  content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n  content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n  content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n  content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n  content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n  content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n  content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n  content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n  content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n  content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n  content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n  content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n  content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n  content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n  content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n  content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n  content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n  content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n  content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n  content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n  content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n  content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n  content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n  content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n  content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n  content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n  content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n  content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n  content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n  content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n  content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n  content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n  content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n  content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n  content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n  content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n  content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n  content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n  content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n  content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n  content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n  content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n  content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n  content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n  content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n  content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n  content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n  content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n  content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n  content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n  content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n  content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n  content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n  content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n  content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n  content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n  content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n  content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n  content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n  content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n  content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n  content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n  content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n  content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n  content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n  content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n  content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n  content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n  content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n  content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n  content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n  content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n  content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n  content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n  content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n  content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n  content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n  content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n  content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n  content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n  content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n  content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n  content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n  content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n  content: \\\"à\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n  content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n  content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n  content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n  content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n  content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n  content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n  content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n  content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n  content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n  content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n  content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n  content: \\\"í\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n  content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n  content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n  content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n  content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n  text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n  display: flex;\\n  font-family: \\\"furnview-icons-multi\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n  content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n  content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n  content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n  content: \\\"0\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n  content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n  content: \\\";\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n  content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n  content: \\\"=\\\\a;\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n  content: \\\"<\\\";\\n  position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n  content: \\\"8\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n  content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n  content: \\\":\\\\a 8\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n  content: \\\"9\\\";\\n  position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: block;\\n}\\n\\n.setting-item-container-resettable {\\n  display: grid;\\n  grid-template-rows: auto;\\n  grid-template-columns: max-content minmax(0, 1fr) max-content;\\n  width: 100%;\\n  height: 100%;\\n  background-color: transparent;\\n  align-items: center;\\n}\\n\\n.setting-item-container {\\n  display: grid;\\n  grid-template-rows: auto;\\n  grid-template-columns: minmax(0, 1fr) max-content;\\n  width: 100%;\\n  height: 100%;\\n  background-color: transparent;\\n  align-items: center;\\n}\\n\\n.width {\\n  width: 100%;\\n}\\n\\n.margin {\\n  margin: 0.2rem;\\n}\\n\\n.font {\\n  font-weight: normal !important;\\n}\\n\\n.reset-container {\\n  align-self: center;\\n  padding: 0 0.25rem;\\n  width: 100%;\\n}\\n\\n::slotted([slot=key]) {\\n  align-self: center;\\n  padding: 0rem 0.5rem 0rem 0.5rem;\\n  font-size: small;\\n  white-space: nowrap;\\n  width: 100%;\\n}\\n\\n.key {\\n  align-self: center;\\n  padding: 0rem 0.5rem 0rem 0.5rem;\\n  font-size: small;\\n  white-space: nowrap;\\n  width: 100%;\\n}\\n\\n::slotted([slot=value]) {\\n  justify-self: start;\\n  align-self: center;\\n  padding-left: 1rem;\\n}\\n\\n.value {\\n  justify-self: end;\\n  align-self: center;\\n  padding-left: 0.5rem;\\n  display: flex;\\n  min-height: 24px;\\n  align-items: center;\\n}\\n\\n:host([type=Path]) .setting-item-container-resettable {\\n  grid-template-columns: max-content max-content minmax(0, 1fr);\\n}\\n\\n:host([type=Path]) .setting-item-container {\\n  grid-template-columns: max-content minmax(0, 1fr);\\n}\\n\\n:host([type=Path]) .value {\\n  justify-self: stretch;\\n  width: 100%;\\n}\\n\\n:host([type=Path]) dh-input {\\n  width: 100%;\\n}\\n\\n.notDefault {\\n  font-weight: bold;\\n}\\n\\n.icon-button {\\n  padding: 0;\\n  width: max-content;\\n  margin: 0.1rem;\\n}\\n\\n.icon:before {\\n  font-size: 1.2rem;\\n}\\n\\n.border {\\n  display: flex;\\n  align-items: center;\\n  height: 100%;\\n  white-space: nowrap;\\n  overflow: hidden;\\n  text-overflow: ellipsis;\\n}\\n\\n.disabled {\\n  opacity: 0.38;\\n}\\n\\n.empty {\\n  background-color: rgba(180, 0, 0, 0.08);\\n}\\n\\n.hidden {\\n  display: none;\\n}\";\n\nvar __defProp$g = Object.defineProperty;\nvar __getOwnPropDesc$h = Object.getOwnPropertyDescriptor;\nvar __decorateClass$h = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$h(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$g(target, key, result);\n  return result;\n};\nlet DhSettingItem = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.textareaHadFocus = false;\n    this.textareaSelectionStart = 0;\n    this.textareaSelectionEnd = 0;\n    this.notEditable = false;\n    this.notUseDefault = false;\n    this.resettable = false;\n    this.mandatory = false;\n    this.readonly = false;\n    this.isRestricted = false;\n  }\n  set currentRestriction(values) {\n    if (values) {\n      this.currentRestrictionValues = values;\n      this.isRestricted = true;\n    } else {\n      this.currentRestrictionValues = \"\";\n      this.isRestricted = false;\n    }\n  }\n  //Achtung in der Administration wird von dieser Klasse geerbt und auch das Template überschrieben. Änderungen die auch in der Administration greifen sollen, müssen dort auch gepflegt werden.\n  render() {\n    return html` <div\n      id=\"setting-item-container\"\n      class=\"${this.resettable ? \"setting-item-container-resettable\" : \"setting-item-container\"}\"\n      part=\"root\"\n      @click=\"${this.itemClick}\"\n      title=\"${this.data?.translatedInfo}\"\n    >\n      <div class=\"${this.resettable ? \"reset-container\" : \"hidden\"}\">\n        <div class=\"${this.getResetIconClass()}\" part=\"icon\" @click=\"${this.reset}\"></div>\n      </div>\n      <div\n        id=\"name\"\n        class=\"border\"\n        value=\"${this.data?.translatedName ? this.data?.translatedName : this.data?.name}\"\n        key=\"${this.data?.key}\"\n        title=\"${this.data?.translatedName || this.data?.name || this.data?.key || \"\"}\"\n      >\n        <slot id=\"key\" name=\"key\" part=\"label\">\n          <div class=\"${this.getItemClass()}\">${this.data?.translatedName ? this.data?.translatedName : this.data?.key}</div>\n        </slot>\n      </div>\n      <div key=\"${this.data?.key}\" class=\"value\">\n        <slot id=\"value\" name=\"value\" part=\"input\">\n          ${choose(this.data?.type, [\n      [\"boolean\", () => this.renderBoolean()],\n      [\"Varchar\", () => this.renderVarchar()],\n      [\"Path\", () => this.renderVarchar()],\n      [\"Mail\", () => this.renderMail()],\n      [\"note\", () => this.renderNote()],\n      [\"DateTime\", () => this.renderDateTime()],\n      [\"Integer\", () => this.renderInteger()],\n      [\"List\", () => this.renderList()],\n      [\"BitList\", () => this.renderBitList()]\n    ])}\n        </slot>\n      </div>\n    </div>`;\n  }\n  renderVarchar() {\n    return html`${keyed(\n      this.currentRestrictionValues,\n      html`<dh-input\n        class=\"margin width\"\n        type=\"text\"\n        variant=\"classic\"\n        key=\"${this.data?.key}\"\n        .value=${this.getValueVarchar()}\n        .readOnly=\"${this.isRestricted || this.notEditable || this.readonly}\"\n        exportparts=\"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\"\n        ?mandatory=\"${this.mandatory}\"\n      ></dh-input>`\n    )}`;\n  }\n  renderBoolean() {\n    return html`${keyed(\n      this.currentRestrictionValues || this.data || this.value,\n      html`<dh-checkbox\n        variant=\"switch\"\n        key=\"${this.data?.key}\"\n        ?checked=${this.getValueBoolean()}\n        ?disabled=\"${this.isRestricted || this.notEditable || this.readonly}\"\n        exportparts=\"root: dh-checkbox-root, input: dh-checkbox-input\"\n      ></dh-checkbox>`\n    )}`;\n  }\n  renderMail() {\n    return html`${keyed(\n      this.currentRestrictionValues || this.data || this.value,\n      html`<dh-input\n        class=\"margin width\"\n        type=\"email\"\n        variant=\"classic\"\n        key=\"${this.data?.key}\"\n        value=${this.getValueVarchar()}\n        .readOnly=\"${this.isRestricted || this.notEditable || this.readonly}\"\n        ?mandatory=\"${this.mandatory}\"\n        exportparts=\"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\"\n      ></dh-input>`\n    )}`;\n  }\n  renderNote() {\n    return html`${keyed(\n      this.currentRestrictionValues || this.data || this.value,\n      html`<textarea\n        class=\"${this.currentRestrictionValues ? \"margin width\" : this.value ? \"margin width\" : this.data?.default ? \"margin width\" : this.mandatory ? \"margin width empty\" : \"margin width\"}\"\n        type=\"note\"\n        key=\"${this.data?.key}\"\n        .readOnly=\"${this.isRestricted || this.notEditable || this.readonly}\"\n        ?mandatory=\"${this.mandatory}\"\n        part=\"note\"\n        @focusout=\"${this.onTextareaFocusout}\"\n        part=\"input\"\n      >\n${this.getValueVarchar()}</textarea\n      >`\n    )}`;\n  }\n  renderDateTime() {\n    return html`${keyed(\n      this.currentRestrictionValues || this.data || this.value,\n      html`<dh-input\n        class=\"margin width\"\n        type=\"date\"\n        variant=\"classic\"\n        key=\"${this.data?.key}\"\n        .valueAsDate=\"${this.getValueDate()}\"\n        .readonly=\"${this.isRestricted || this.notEditable || this.readonly}\"\n        ?mandatory=\"${this.mandatory}\"\n        exportparts=\"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\"\n      ></dh-input>`\n    )}`;\n  }\n  renderInteger() {\n    return html`${keyed(\n      this.currentRestrictionValues || this.data || this.value,\n      html`<dh-input\n        class=\"margin width\"\n        type=\"number\"\n        variant=\"classic\"\n        key=\"${this.data?.key}\"\n        value=${this.getValueInteger()}\n        min=\"${this.data?.values?.min ? this.data?.values?.min : void 0}\"\n        max=\"${this.data?.values?.max ? this.data?.values?.max : void 0}\"\n        ?readonly=\"${this.isRestricted || this.notEditable || this.readonly}\"\n        ?mandatory=\"${this.mandatory}\"\n        exportparts=\"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\"\n      ></dh-input>`\n    )}`;\n  }\n  renderList() {\n    return html`${keyed(\n      this.currentRestrictionValues || this.data || this.value,\n      html`<dh-select\n        key=\"${this.data?.key}\"\n        ?disabled=\"${this.notEditable || this.readonly}\"\n        ?mandatory=\"${this.mandatory}\"\n        ?withoutEmptyDefault=\"${this.data?.default !== null}\"\n        class=\"margin\"\n        notSearchable\n        .selectOptions=\"${this.createOptions(\n        this.currentRestrictionValues ? JSON.parse(this.currentRestrictionValues) : this.data?.values\n      )}\"\n        exportparts=\"root: dh-select-root, trigger: dh-select-trigger, label: dh-select-label, icon: dh-select-icon, menu: dh-select-menu, input: dh-select-input, content: dh-select-content, item: dh-select-item, selected: dh-select-selected\"\n      ></dh-select>`\n    )}`;\n  }\n  renderBitList() {\n    return html`${keyed(\n      this.currentRestrictionValues || this.data?.key || this.value?.key,\n      html`<dh-multi-selectbox\n        class=\"width margin font\"\n        key=\"${this.data?.key}\"\n        .selectBoxValues=${this.createBitListValues()}\n        ?notEditable=\"${this.notEditable || this.readonly}\"\n        ?mandatory=\"${this.mandatory}\"\n        exportparts=\"root: dh-multiselect-root, trigger: dh-multiselect-trigger, icon: dh-multiselect-icon, content: dh-multiselect-content, input: dh-multiselect-input, item: dh-multiselect-item, selected: dh-multiselect-selected, item-root: dh-multiselect-item-root, item-label: dh-multiselect-item-label, item-trigger: dh-multiselect-item-trigger, item-icon: dh-multiselect-item-icon\"\n      ></dh-multi-selectbox>`\n    )}`;\n  }\n  createBitListValues() {\n    const valuesObj = this.currentRestrictionValues ? JSON.parse(this.currentRestrictionValues) : this.data?.values;\n    if (!valuesObj) return [];\n    const selectedIds = this.getSelectedValues().split(\":\").filter(Boolean);\n    return Object.keys(valuesObj).filter((key) => key !== \"value\").map((key) => ({\n      id: valuesObj[key].toString(),\n      value: key,\n      isSelected: selectedIds.includes(valuesObj[key].toString())\n    }));\n  }\n  getItemClass() {\n    if (this.currentRestrictionValues || this.data?.customerValue || this.data?.customerValue === false || this.value || this.value === false) {\n      return \"key notDefault\";\n    } else {\n      return \"key\";\n    }\n  }\n  getResetIconClass() {\n    if (this.currentRestrictionValues || this.data?.customerValue || this.data?.customerValue === false || this.value || this.value === false) {\n      return \"fv-icon-reload icon\";\n    } else {\n      return \"fv-icon-reload icon disabled\";\n    }\n  }\n  getValueVarchar() {\n    if (this.currentRestrictionValues) {\n      return this.currentRestrictionValues;\n    }\n    if (this.data) {\n      if (this.data.customerValue) {\n        return this.data.customerValue;\n      }\n    }\n    if (this.value) {\n      if (this.value.value != null) {\n        if (this.value.value) {\n          return this.value.value;\n        }\n        if (this.notUseDefault) {\n          return \"\";\n        }\n        if (this.data) {\n          return this.data?.default || \"\";\n        }\n      }\n    }\n    if (this.notUseDefault) {\n      return \"\";\n    }\n    if (this.data) {\n      return this.data?.default || \"\";\n    }\n    return \"\";\n  }\n  getValueBoolean() {\n    if (this.currentRestrictionValues) {\n      if (typeof this.currentRestrictionValues === \"boolean\") {\n        return this.currentRestrictionValues;\n      }\n      if (typeof this.currentRestrictionValues === \"string\") {\n        return !!parseInt(this.currentRestrictionValues);\n      }\n    }\n    if (this.data?.customerValue !== void 0 && this.data?.customerValue !== \"\" && this.data?.customerValue !== null) {\n      if (isNaN(parseInt(this.data.customerValue.toString()))) {\n        if (typeof this.data.customerValue === \"string\") {\n          return this.data.customerValue == \"true\";\n        } else {\n          return this.data.customerValue;\n        }\n      } else {\n        return !!parseInt(this.data.customerValue.toString() || \"\");\n      }\n    }\n    if (this.value?.value !== void 0 && this.value?.value !== \"\" && this.value?.value !== null) {\n      if (isNaN(parseInt(this.value.value.toString()))) {\n        if (typeof this.value.value === \"string\") {\n          return this.value.value == \"true\";\n        } else {\n          return this.value.value;\n        }\n      } else {\n        return !!parseInt(this.value?.value?.toString() || \"\");\n      }\n    }\n    if (this.notUseDefault) {\n      return false;\n    }\n    if (this.data?.default !== void 0 && this.data?.default !== \"\" && this.data?.default !== null) {\n      if (isNaN(parseInt(this.data.default.toString()))) {\n        return this.data.default == \"true\";\n      } else {\n        return !!parseInt(this.data?.default);\n      }\n    }\n    return false;\n  }\n  getValueDate() {\n    if (this.currentRestrictionValues) {\n      if (typeof this.currentRestrictionValues === \"string\" || typeof this.currentRestrictionValues === \"number\") {\n        return new Date(this.currentRestrictionValues);\n      }\n    }\n    if (this.data?.customerValue) {\n      return new Date(this.data.customerValue);\n    }\n    if (this.value) {\n      return new Date(this.value.value);\n    }\n    if (this.notUseDefault) {\n      return \"\";\n    }\n    if (this.data?.default !== \"-1\" && this.data?.default !== void 0) {\n      return new Date(this.data.default);\n    }\n    return \"\";\n  }\n  getValueInteger() {\n    if (this.currentRestrictionValues) {\n      if (typeof this.currentRestrictionValues === \"string\") {\n        return parseInt(this.currentRestrictionValues);\n      }\n    }\n    if (this.data?.customerValue) {\n      return parseInt(this.data.customerValue.toString());\n    }\n    if (this.value) {\n      if (this.value.value != null) {\n        return parseInt(this.value.value.toString());\n      }\n      if (this.notUseDefault) {\n        return \"\";\n      }\n      if (this.data) {\n        return parseInt(this.data?.default);\n      }\n      return \"\";\n    }\n    if (this.notUseDefault) {\n      return \"\";\n    }\n    if (this.data) {\n      return parseInt(this.data?.default);\n    }\n    return \"\";\n  }\n  willUpdate() {\n    const textarea = this.shadowRoot?.querySelector(\"textarea:focus\");\n    if (textarea) {\n      this.textareaHadFocus = true;\n      this.textareaSelectionStart = textarea.selectionStart;\n      this.textareaSelectionEnd = textarea.selectionEnd;\n    }\n  }\n  updated() {\n    if (this.textareaHadFocus) {\n      const textarea = this.shadowRoot?.querySelector(\"textarea\");\n      if (textarea) {\n        textarea.focus();\n        textarea.selectionStart = this.textareaSelectionStart;\n        textarea.selectionEnd = this.textareaSelectionEnd;\n      }\n      this.textareaHadFocus = false;\n    }\n  }\n  async connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-setting-item\")) {\n      this.setAttribute(\"dh-setting-item\", \"\");\n    }\n    this.registerAtGrid.dispatch({ key: this.data ? this.data.key : \"\", element: this });\n    this.addEventListener(\"mouseenter\", () => this.hoverSettingItem.dispatch(this));\n  }\n  async disconnectedCallback() {\n    super.disconnectedCallback();\n    this.unregisterAtGrid.dispatch({ key: this.data ? this.data.key : \"\", element: this });\n  }\n  getName() {\n    return this.name.innerText;\n  }\n  getSelectedValues() {\n    const selectedValues = [];\n    let selected = \"\";\n    if (!this.currentRestrictionValues) {\n      if (this.data?.customerValue) {\n        const values = Object.values(this.data.values);\n        values.forEach((value) => {\n          if ((parseInt(value) & parseInt(this.data?.customerValue)) == parseInt(value)) {\n            if (value) {\n              selectedValues.push(value.toString());\n            }\n          }\n        });\n        selected = selectedValues.join(\":\");\n      } else if (this.value?.value) {\n        if (this.data?.values) {\n          const values = Object.values(this.data.values);\n          values.forEach((value) => {\n            if ((parseInt(value) & parseInt(this.value?.value)) == parseInt(value)) {\n              if (value) {\n                selectedValues.push(value.toString());\n              }\n            }\n          });\n          selected = selectedValues.join(\":\");\n        }\n      } else {\n        if (this.data?.values) {\n          const values = Object.values(this.data.values);\n          values.forEach((value) => {\n            if (parseInt(value) & parseInt(this.data?.default)) {\n              if (value) {\n                selectedValues.push(value.toString());\n              }\n            }\n          });\n          selected = selectedValues.join(\":\");\n        }\n      }\n    }\n    return selected;\n  }\n  onTextareaFocusout() {\n    this.dispatchEvent(new Event(\"inputfocusout\", { bubbles: true, cancelable: true, composed: true }));\n  }\n  itemClick(event2) {\n    event2.stopPropagation();\n    this.settingitemclicked.dispatch(this);\n  }\n  reset(event2) {\n    event2.stopPropagation();\n    this.resetSettingItem.dispatch(this);\n  }\n  createOptions(values) {\n    const options = [];\n    const keys = Object.keys(values);\n    keys.forEach((key) => {\n      const optionObject = {\n        dataId: values[key].toString(),\n        showContent: key,\n        selected: this.data?.customerValue ? this.data?.customerValue == this.data?.values[key] : this.value?.value ? this.value.value == this.data?.values[key] : this.notUseDefault ? false : this.data?.default == this.data?.values[key],\n        approved: true,\n        suboptions: []\n      };\n      options.push(optionObject);\n    });\n    return options;\n  }\n};\nDhSettingItem.styles = [\n  css`\n      ${unsafeCSS(style$h)}\n    `\n];\n__decorateClass$h([\n  query(\"#name\")\n], DhSettingItem.prototype, \"name\", 2);\n__decorateClass$h([\n  property({ type: Boolean })\n], DhSettingItem.prototype, \"notEditable\", 2);\n__decorateClass$h([\n  property({ type: Boolean })\n], DhSettingItem.prototype, \"notUseDefault\", 2);\n__decorateClass$h([\n  property({ type: Boolean })\n], DhSettingItem.prototype, \"resettable\", 2);\n__decorateClass$h([\n  property({ type: Boolean })\n], DhSettingItem.prototype, \"mandatory\", 2);\n__decorateClass$h([\n  property({ type: Boolean })\n], DhSettingItem.prototype, \"readonly\", 2);\n__decorateClass$h([\n  state()\n], DhSettingItem.prototype, \"data\", 2);\n__decorateClass$h([\n  state()\n], DhSettingItem.prototype, \"value\", 2);\n__decorateClass$h([\n  state()\n], DhSettingItem.prototype, \"isRestricted\", 2);\n__decorateClass$h([\n  state()\n], DhSettingItem.prototype, \"currentRestrictionValues\", 2);\n__decorateClass$h([\n  event({ bubbles: true, cancelable: true, composed: true }, \"registerAtGrid\")\n], DhSettingItem.prototype, \"registerAtGrid\", 2);\n__decorateClass$h([\n  event({ bubbles: true, cancelable: true, composed: true }, \"unregisterAtGrid\")\n], DhSettingItem.prototype, \"unregisterAtGrid\", 2);\n__decorateClass$h([\n  event({ bubbles: true, cancelable: true, composed: true }, \"settingitemclicked\")\n], DhSettingItem.prototype, \"settingitemclicked\", 2);\n__decorateClass$h([\n  event({ bubbles: true, cancelable: true, composed: true }, \"resetSettingItem\")\n], DhSettingItem.prototype, \"resetSettingItem\", 2);\n__decorateClass$h([\n  event({ bubbles: true, cancelable: true, composed: true }, \"hoverSettingItem\")\n], DhSettingItem.prototype, \"hoverSettingItem\", 2);\nDhSettingItem = __decorateClass$h([\n  customElement(\"dh-setting-item\")\n], DhSettingItem);\n\nvar style$g = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n  text-align: center;\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n  display: flex;\\n  font-family: \\\"furnview-icons-simple\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n  content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n  content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n  content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n  content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n  content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n  content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n  content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n  content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n  content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n  content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n  content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n  content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n  content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n  content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n  content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n  content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n  content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n  content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n  content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n  content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n  content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n  content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n  content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n  content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n  content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n  content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n  content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n  content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n  content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n  content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n  content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n  content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n  content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n  content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n  content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n  content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n  content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n  content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n  content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n  content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n  content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n  content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n  content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n  content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n  content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n  content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n  content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n  content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n  content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n  content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n  content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n  content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n  content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n  content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n  content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n  content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n  content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n  content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n  content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n  content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n  content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n  content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n  content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n  content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n  content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n  content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n  content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n  content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n  content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n  content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n  content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n  content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n  content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n  content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n  content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n  content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n  content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n  content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n  content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n  content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n  content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n  content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n  content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n  content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n  content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n  content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n  content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n  content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n  content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n  content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n  content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n  content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n  content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n  content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n  content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n  content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n  content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n  content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n  content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n  content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n  content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n  content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n  content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n  content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n  content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n  content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n  content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n  content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n  content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n  content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n  content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n  content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n  content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n  content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n  content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n  content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n  content: \\\"à\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n  content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n  content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n  content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n  content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n  content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n  content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n  content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n  content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n  content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n  content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n  content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n  content: \\\"í\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n  content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n  content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n  content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n  content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n  text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n  display: flex;\\n  font-family: \\\"furnview-icons-multi\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n  content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n  content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n  content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n  content: \\\"0\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n  content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n  content: \\\";\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n  content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n  content: \\\"=\\\\a;\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n  content: \\\"<\\\";\\n  position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n  content: \\\"8\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n  content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n  content: \\\":\\\\a 8\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n  content: \\\"9\\\";\\n  position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: block;\\n  position: relative;\\n}\\n\\n.select-container {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  position: relative;\\n}\\n\\n.list {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  flex-wrap: wrap;\\n  flex: 1;\\n  min-width: 0;\\n}\\n\\n::slotted(.item) {\\n  cursor: pointer;\\n}\\n\\n::slotted(.selectbox-item) {\\n  cursor: pointer;\\n}\\n\\n.intern {\\n  cursor: pointer;\\n}\\n\\n#selectbox {\\n  position: fixed;\\n  z-index: 99;\\n  overflow: auto;\\n  margin: 0;\\n  padding: 0;\\n  border: none;\\n  inset: auto;\\n  width: max-content;\\n}\\n\\n#option-list {\\n  display: flex;\\n  flex-direction: column;\\n  overflow: auto;\\n  max-height: 20rem;\\n}\\n\\n#option-list {\\n  scrollbar-width: thin;\\n  scrollbar-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2)) var(--dh-scrollbar-track, transparent);\\n}\\n\\n#option-list::-webkit-scrollbar {\\n  width: var(--dh-scrollbar-width, 8px);\\n  height: var(--dh-scrollbar-width, 8px);\\n}\\n\\n#option-list::-webkit-scrollbar-thumb {\\n  background-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2));\\n  border-radius: var(--dh-scrollbar-radius, 4px);\\n}\\n\\n#option-list::-webkit-scrollbar-thumb:hover {\\n  background-color: var(--dh-scrollbar-thumb-hover, rgba(0, 0, 0, 0.35));\\n}\\n\\n#option-list::-webkit-scrollbar-track {\\n  background: var(--dh-scrollbar-track, transparent);\\n}\\n\\n::slotted(.hidden) {\\n  display: none;\\n}\\n\\n.selected {\\n  font-weight: 500;\\n}\\n\\n.hidden {\\n  display: none;\\n}\";\n\nvar __defProp$f = Object.defineProperty;\nvar __getOwnPropDesc$g = Object.getOwnPropertyDescriptor;\nvar __decorateClass$g = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$g(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$f(target, key, result);\n  return result;\n};\nlet DhMultiSelectbox = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.isOpen = false;\n    this.notEditable = false;\n    this.values = [];\n    this.selected = [];\n    this.filterText = \"\";\n    // Schließt das Popover, wenn IRGENDWO in der Seite gescrollt wird —\n    // außer der Scroll passiert innerhalb des Popovers selbst (interne\n    // Item-Liste). `document` mit `capture: true` fängt Scroll-Events\n    // aller Descendants, inklusive solcher in fremden Shadow-DOMs (z.B.\n    // dh-settings-grid intern), die ein ancestor-basiertes Walking nicht\n    // erreichen würde.\n    this.handleScroll = (e) => {\n      if (this.selectboxElement && e.composedPath().includes(this.selectboxElement)) {\n        return;\n      }\n      this.closeSelectBox();\n    };\n    this.onDocumentClick = (e) => {\n      if (!e.composedPath().includes(this)) {\n        this.closeSelectBox();\n      }\n    };\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-multi-selectbox\")) {\n      this.setAttribute(\"dh-multi-selectbox\", \"\");\n    }\n    document.addEventListener(\"mousedown\", this.onDocumentClick);\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    document.removeEventListener(\"mousedown\", this.onDocumentClick);\n  }\n  set selectBoxValues(values) {\n    this.selected = values.filter((value) => value.isSelected).map((value) => value.id);\n    this.values = values;\n    this.values.forEach((v) => {\n      v.isSelected = this.selected.includes(v.id);\n    });\n    this.requestUpdate();\n    this.showSelectedElements();\n  }\n  set selectedElements(selected) {\n    this.selected = selected?.split(\":\");\n    this.showSelectedElements();\n    this.requestUpdate();\n  }\n  render() {\n    return html`<div id=\"multi-selectbox-container\" class=\"select-container\" part=\"root\" @removeItem=${this.removeItem}>\n      <div class=\"list\" part=\"trigger\">\n        <slot name=\"list\">\n          ${this.values.filter((el) => el.isSelected).map(\n      (element) => html`\n                  <dh-multi-selectbox-item\n                    id=\"${element.id}\"\n                    class=\"intern\"\n                    exportparts=\"root: item-root, label: item-label, trigger: item-trigger, icon: item-icon, dh-button-root: item-dh-button-root, dh-button-label: item-dh-button-label, dh-button-icon: item-dh-button-icon\"\n                  >\n                    <span>${element.value}</span>\n                  </dh-multi-selectbox-item>\n                `\n    )}\n        </slot>\n        <dh-button\n          @click=${this.openCloseSelectBox}\n          part=\"icon\"\n          class=\"${this.notEditable ? \"hidden\" : \"\"}\"\n          exportparts=\"root: dh-button-root, label: dh-button-label, icon: dh-button-icon\"\n        >\n          <div slot=\"img\" class=\"fv-icon-plus\"></div>\n        </dh-button>\n      </div>\n      <div id=\"selectbox\" part=\"content\" popover=\"manual\" @click=${this.selectItem}>\n        <dh-input\n          id=\"input\"\n          variant=\"classic\"\n          @input=\"${this.filter}\"\n          part=\"input\"\n          placeholder=\"Suchen...\"\n          exportparts=\"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\"\n        ></dh-input>\n        <div id=\"option-list\">\n          <slot name=\"allValues\">\n            ${this.values.filter((element) => !this.filterText || element.value?.toLowerCase().includes(this.filterText)).map(\n      (element) => html`\n                  <div\n                    id=\"${element.id}\"\n                    class=\"intern${element.isSelected ? \" selected\" : \"\"}\"\n                    part=\"${element.isSelected ? \"item selected\" : \"item\"}\"\n                  >\n                    ${element.value}\n                  </div>\n                `\n    )}\n          </slot>\n        </div>\n      </div>\n    </div>`;\n  }\n  getValues() {\n    return this.values;\n  }\n  setSelectedElements(selectedIds) {\n    this.selected = selectedIds;\n    this.values.forEach((value) => {\n      value.isSelected = selectedIds.includes(value.id);\n    });\n    this.requestUpdate();\n    const slottedChips = Array.from(this.querySelectorAll(\"dh-multi-selectbox-item[slot=list]\"));\n    if (slottedChips.length > 0) {\n      slottedChips.forEach((item) => {\n        const idValue = item.getAttribute(\"id\");\n        const isSelected = idValue ? selectedIds.includes(idValue) : false;\n        if (isSelected) {\n          item.classList.remove(\"hidden\");\n        } else {\n          item.classList.add(\"hidden\");\n        }\n      });\n    }\n    const slottedItems = Array.from(this.querySelectorAll(\"[slot=allValues]\"));\n    if (slottedItems.length > 0) {\n      slottedItems.forEach((el) => {\n        const idValue = el.getAttribute(\"id\");\n        const isSelected = idValue ? selectedIds.includes(idValue) : false;\n        if (isSelected) {\n          el.classList.add(\"selected\");\n        } else {\n          el.classList.remove(\"selected\");\n        }\n      });\n    }\n  }\n  closeSelectBox() {\n    if (this.selectboxElement) {\n      try {\n        this.selectboxElement.hidePopover();\n      } catch {\n      }\n      this.selectboxElement.style.top = \"\";\n      this.selectboxElement.style.left = \"\";\n      this.selectboxElement.style.minWidth = \"\";\n    }\n    document.removeEventListener(\"scroll\", this.handleScroll, true);\n    this.isOpen = false;\n  }\n  async showSelectedElements() {\n    await this.updateComplete;\n    const items = this.querySelectorAll(\"dh-multi-selectbox-item[slot=list]\");\n    if (items.length > 0) {\n      const isInValues = this.values.length > 0;\n      items.forEach((item) => {\n        let value = item.getAttribute(\"value\");\n        if (!value) {\n          value = item.textContent ? item.textContent.trim() : \"\";\n          item.setAttribute(\"value\", value);\n        }\n        item.classList.add(\"item\");\n        const id = item.getAttribute(\"id\");\n        let isSelected = false;\n        if (this.selected && id) {\n          isSelected = this.selected.includes(id);\n        }\n        if (isSelected) {\n          item.classList.remove(\"hidden\");\n        } else {\n          item.classList.add(\"hidden\");\n        }\n        if (!isInValues) {\n          this.values.push({ id: id || \"\", isSelected, value });\n        }\n      });\n    }\n    const selectableDivs = this.querySelectorAll(\"div[slot=allValues]\");\n    if (selectableDivs.length > 0) {\n      const isInValues = this.values.length > 0;\n      selectableDivs.forEach((div) => {\n        let value = div.getAttribute(\"value\");\n        if (!value) {\n          value = div.textContent ? div.textContent.trim() : \"\";\n          div.setAttribute(\"value\", value);\n        }\n        div.classList.add(\"selectbox-item\");\n        const id = div.getAttribute(\"id\");\n        let isSelected = false;\n        if (this.selected && id) {\n          isSelected = this.selected.includes(id);\n        }\n        if (isSelected) {\n          div.classList.add(\"selected\");\n        } else {\n          div.classList.remove(\"selected\");\n        }\n        if (!isInValues) {\n          this.values.push({ id: id || \"\", isSelected, value });\n        }\n      });\n    }\n  }\n  openCloseSelectBox(event2) {\n    event2?.stopPropagation();\n    if (this.notEditable) {\n      return;\n    }\n    if (this.isOpen) {\n      this.closeSelectBox();\n      return;\n    }\n    this.isOpen = true;\n    this.openDropdown();\n  }\n  openDropdown() {\n    if (!this.selectboxElement || !this.triggerElement) {\n      return;\n    }\n    this.selectboxElement.showPopover();\n    const triggerRect = this.triggerElement.getBoundingClientRect();\n    this.selectboxElement.style.minWidth = `${triggerRect.width}px`;\n    const menuRect = this.selectboxElement.getBoundingClientRect();\n    const menuHeight = menuRect.height;\n    const menuWidth = menuRect.width;\n    const horizontalMargin = 8;\n    const desiredLeft = triggerRect.right - menuWidth;\n    const adjustedLeft = Math.max(horizontalMargin, desiredLeft);\n    this.selectboxElement.style.left = `${adjustedLeft}px`;\n    const spaceBelow = window.innerHeight - triggerRect.bottom;\n    const spaceAbove = triggerRect.top;\n    if (spaceBelow < menuHeight && spaceAbove > spaceBelow) {\n      this.selectboxElement.style.top = `${triggerRect.top - menuHeight}px`;\n    } else {\n      this.selectboxElement.style.top = `${triggerRect.bottom}px`;\n    }\n    document.addEventListener(\"scroll\", this.handleScroll, { capture: true, passive: true });\n  }\n  removeItem(event2) {\n    if (!this.notEditable) {\n      const key = event2.detail;\n      const value = this.values.find((value2) => value2.id == key);\n      if (value) {\n        value.isSelected = false;\n      }\n      this.selected = this.selected.filter((id) => id !== key);\n      const slottedChips = Array.from(this.querySelectorAll(\"dh-multi-selectbox-item[slot=list]\"));\n      if (slottedChips.length > 0) {\n        const chipEl = slottedChips.find((el) => el.getAttribute(\"id\") == key);\n        chipEl?.classList.add(\"hidden\");\n      }\n      const slottedItems = Array.from(this.querySelectorAll(\"[slot=allValues]\"));\n      if (slottedItems.length > 0) {\n        const dropdownEl = slottedItems.find((el) => el.getAttribute(\"id\") == key);\n        dropdownEl?.classList.remove(\"selected\");\n      }\n      this.changeItems();\n      this.requestUpdate();\n    }\n  }\n  selectItem(event2) {\n    const target = event2.target;\n    const idValue = target.getAttribute(\"id\");\n    if (!idValue) return;\n    const value = this.values.find((value2) => value2.id == idValue);\n    if (value) {\n      value.isSelected = !value.isSelected;\n      if (value.isSelected) {\n        this.selected.push(idValue);\n      } else {\n        this.selected = this.selected.filter((id) => id !== idValue);\n      }\n    }\n    const slottedChips = Array.from(this.querySelectorAll(\"dh-multi-selectbox-item[slot=list]\"));\n    if (slottedChips.length > 0) {\n      const chipEl = slottedChips.find((el) => el.getAttribute(\"id\") == idValue);\n      if (chipEl) {\n        if (value?.isSelected) {\n          chipEl.classList.remove(\"hidden\");\n        } else {\n          chipEl.classList.add(\"hidden\");\n        }\n      }\n    }\n    const slottedItems = Array.from(this.querySelectorAll(\"[slot=allValues]\"));\n    if (slottedItems.length > 0) {\n      const dropdownEl = slottedItems.find((el) => el.getAttribute(\"id\") == idValue);\n      if (dropdownEl) {\n        if (value?.isSelected) {\n          dropdownEl.classList.add(\"selected\");\n        } else {\n          dropdownEl.classList.remove(\"selected\");\n        }\n      }\n    }\n    this.changeItems();\n    this.requestUpdate();\n  }\n  changeItems() {\n    this.multiSelectboxChange.dispatch(this.values);\n  }\n  filter(event2) {\n    const inputElement = event2.target;\n    this.filterText = inputElement.value.toLowerCase();\n    const elements = Array.from(this.querySelectorAll(\"[slot=allValues]\"));\n    if (elements.length > 0) {\n      elements.forEach((element) => {\n        const text = element.textContent;\n        if (text) {\n          if (text.toLowerCase().includes(this.filterText)) {\n            element.classList.remove(\"hidden\");\n          } else {\n            element.classList.add(\"hidden\");\n          }\n        }\n      });\n    }\n  }\n};\nDhMultiSelectbox.styles = css`\n    ${unsafeCSS(style$g)}\n  `;\n__decorateClass$g([\n  state()\n], DhMultiSelectbox.prototype, \"isOpen\", 2);\n__decorateClass$g([\n  property({ type: Boolean })\n], DhMultiSelectbox.prototype, \"notEditable\", 2);\n__decorateClass$g([\n  validatedProperty({\n    type: Array,\n    fallback: {\n      id: \"\",\n      value: \"\",\n      isSelected: false\n    }\n  })\n], DhMultiSelectbox.prototype, \"values\", 2);\n__decorateClass$g([\n  state()\n], DhMultiSelectbox.prototype, \"filterText\", 2);\n__decorateClass$g([\n  query(\"#selectbox\")\n], DhMultiSelectbox.prototype, \"selectboxElement\", 2);\n__decorateClass$g([\n  query(\"#multi-selectbox-container\")\n], DhMultiSelectbox.prototype, \"triggerElement\", 2);\n__decorateClass$g([\n  event({ bubbles: true, cancelable: true, composed: true }, \"multiSelectboxChange\")\n], DhMultiSelectbox.prototype, \"multiSelectboxChange\", 2);\nDhMultiSelectbox = __decorateClass$g([\n  customElement(\"dh-multi-selectbox\")\n], DhMultiSelectbox);\n\nvar style$f = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n  text-align: center;\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n  display: flex;\\n  font-family: \\\"furnview-icons-simple\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n  content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n  content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n  content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n  content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n  content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n  content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n  content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n  content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n  content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n  content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n  content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n  content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n  content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n  content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n  content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n  content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n  content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n  content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n  content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n  content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n  content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n  content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n  content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n  content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n  content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n  content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n  content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n  content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n  content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n  content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n  content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n  content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n  content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n  content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n  content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n  content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n  content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n  content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n  content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n  content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n  content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n  content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n  content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n  content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n  content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n  content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n  content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n  content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n  content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n  content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n  content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n  content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n  content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n  content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n  content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n  content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n  content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n  content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n  content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n  content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n  content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n  content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n  content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n  content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n  content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n  content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n  content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n  content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n  content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n  content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n  content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n  content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n  content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n  content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n  content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n  content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n  content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n  content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n  content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n  content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n  content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n  content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n  content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n  content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n  content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n  content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n  content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n  content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n  content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n  content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n  content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n  content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n  content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n  content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n  content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n  content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n  content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n  content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n  content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n  content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n  content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n  content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n  content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n  content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n  content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n  content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n  content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n  content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n  content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n  content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n  content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n  content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n  content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n  content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n  content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n  content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n  content: \\\"à\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n  content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n  content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n  content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n  content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n  content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n  content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n  content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n  content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n  content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n  content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n  content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n  content: \\\"í\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n  content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n  content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n  content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n  content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n  text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n  display: flex;\\n  font-family: \\\"furnview-icons-multi\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n  content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n  content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n  content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n  content: \\\"0\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n  content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n  content: \\\";\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n  content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n  content: \\\"=\\\\a;\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n  content: \\\"<\\\";\\n  position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n  content: \\\"8\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n  content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n  content: \\\":\\\\a 8\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n  content: \\\"9\\\";\\n  position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: inline-flex;\\n}\\n\\n.item-container {\\n  display: inline-flex;\\n  align-items: center;\\n  flex-wrap: nowrap;\\n  width: max-content;\\n}\\n\\n.hidden {\\n  display: none;\\n}\";\n\nvar __defProp$e = Object.defineProperty;\nvar __getOwnPropDesc$f = Object.getOwnPropertyDescriptor;\nvar __decorateClass$f = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$f(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$e(target, key, result);\n  return result;\n};\nlet DhMultiSelectboxItem = class extends LitElement {\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-multi-selectbox-item\")) {\n      this.setAttribute(\"dh-multi-selectbox-item\", \"\");\n    }\n  }\n  render() {\n    return html` <div id=\"item-container\" class=\"item-container\" part=\"root\">\n      <span part=\"label\"><slot></slot></span>\n      <dh-button @click=${this.closeButtonClick} part=\"trigger\" exportparts=\"root: dh-button-root, label: dh-button-label, icon: dh-button-icon\">\n        <div slot=\"img\" part=\"icon\" class=\"fv-icon-minus\"></div>\n      </dh-button>\n    </div>`;\n  }\n  closeButtonClick() {\n    const key = this.getAttribute(\"id\");\n    this.removeItem.dispatch(key || \"\");\n  }\n};\nDhMultiSelectboxItem.styles = css`\n    ${unsafeCSS(style$f)}\n  `;\n__decorateClass$f([\n  event({ bubbles: true, cancelable: true, composed: true }, \"removeItem\")\n], DhMultiSelectboxItem.prototype, \"removeItem\", 2);\nDhMultiSelectboxItem = __decorateClass$f([\n  customElement(\"dh-multi-selectbox-item\")\n], DhMultiSelectboxItem);\n\nvar style$e = \"*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: block;\\n  height: auto;\\n  width: auto;\\n}\\n\\n:host(.hidden) {\\n  display: none;\\n}\";\n\nvar __defProp$d = Object.defineProperty;\nvar __getOwnPropDesc$e = Object.getOwnPropertyDescriptor;\nvar __decorateClass$e = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$e(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$d(target, key, result);\n  return result;\n};\nlet DhInfoboxController = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.waitingTime = \"\";\n    this.startTime = \"\";\n    this.stopped = true;\n    this.isStartTimeOver = false;\n    this.timeoutId = 0;\n    this.date = /* @__PURE__ */ new Date();\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-infobox-controller\")) {\n      this.setAttribute(\"dh-infobox-controller\", \"\");\n    }\n  }\n  render() {\n    return html`<div id=\"controller\" part=\"root\">\n      <slot id=\"infobox-slot\" name=\"infobox-slot\"></slot>\n    </div>`;\n  }\n  attributeChangedCallback(name, _old, value) {\n    super.attributeChangedCallback(name, _old, value);\n    if (name == \"stopped\") {\n      const isStopped = this.hasAttribute(\"stopped\");\n      if (isStopped) {\n        this.stopController();\n      } else {\n        this.startController();\n      }\n    }\n  }\n  startController() {\n    this.date = /* @__PURE__ */ new Date();\n    this.timeoutId = window.setTimeout(() => {\n      this.classList.remove(\"hidden\");\n      this.isStartTimeOver = true;\n    }, parseInt(this.startTime));\n  }\n  stopController() {\n    if (!this.isStartTimeOver) {\n      clearTimeout(this.timeoutId);\n      this.timeoutId = 0;\n    } else {\n      const currentDate = /* @__PURE__ */ new Date();\n      const difference = currentDate.getTime() - this.date.getTime();\n      if (difference >= parseInt(this.waitingTime)) {\n        this.classList.add(\"hidden\");\n        this.isStartTimeOver = false;\n      } else {\n        window.setTimeout(() => {\n          this.classList.add(\"hidden\");\n          this.isStartTimeOver = false;\n        }, parseInt(this.waitingTime) - difference);\n      }\n    }\n  }\n};\nDhInfoboxController.styles = css`\n    ${unsafeCSS(style$e)}\n  `;\n__decorateClass$e([\n  property({ type: String, reflect: true })\n], DhInfoboxController.prototype, \"waitingTime\", 2);\n__decorateClass$e([\n  property({ type: String, reflect: true })\n], DhInfoboxController.prototype, \"startTime\", 2);\n__decorateClass$e([\n  property({ type: Boolean, reflect: true })\n], DhInfoboxController.prototype, \"stopped\", 2);\nDhInfoboxController = __decorateClass$e([\n  customElement(\"dh-infobox-controller\")\n], DhInfoboxController);\n\nvar style$d = \"*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n@keyframes loader-spin {\\n  0% {\\n    transform: rotate(0deg);\\n  }\\n  100% {\\n    transform: rotate(360deg);\\n  }\\n}\\n@keyframes checkmark {\\n  0% {\\n    height: 0;\\n    width: 0;\\n    opacity: 1;\\n  }\\n  20% {\\n    height: 0;\\n    width: 25%;\\n    opacity: 1;\\n  }\\n  40% {\\n    height: 50%;\\n    width: 25%;\\n    opacity: 1;\\n  }\\n  100% {\\n    height: 50%;\\n    width: 25%;\\n    opacity: 1;\\n  }\\n}\\n:host([active]) {\\n  display: flex;\\n}\\n\\n:host {\\n  display: none;\\n  margin: auto;\\n  width: 1em;\\n  height: 1em;\\n  position: relative;\\n}\\n:host .circle {\\n  padding-left: 2px;\\n  border: 3px solid transparent;\\n  border-left-color: currentColor;\\n  animation: loader-spin 1.2s infinite linear;\\n  position: relative;\\n  display: inline-block;\\n  vertical-align: top;\\n  border-radius: 50%;\\n  width: 100%;\\n}\\n:host .load-complete {\\n  -webkit-animation: none;\\n  animation: none;\\n  border-color: currentColor;\\n  transition: border 500ms ease-out;\\n}\\n:host .load-complete .checkmark {\\n  display: initial;\\n}\\n:host .checkmark {\\n  display: none;\\n}\\n:host .checkmark.draw:after {\\n  animation-duration: 400ms;\\n  animation-timing-function: ease;\\n  animation-name: checkmark;\\n  transform: scaleX(-1) rotate(135deg);\\n}\\n:host .checkmark:after {\\n  opacity: 1;\\n  height: 50%;\\n  width: 25%;\\n  transform-origin: left top;\\n  border-right: 1px solid currentColor;\\n  border-top: 1px solid currentColor;\\n  content: \\\"\\\";\\n  left: 25%;\\n  top: 50%;\\n  position: absolute;\\n}\";\n\nvar __defProp$c = Object.defineProperty;\nvar __getOwnPropDesc$d = Object.getOwnPropertyDescriptor;\nvar __decorateClass$d = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$d(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$c(target, key, result);\n  return result;\n};\nlet DhProgressAnimation = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.active = false;\n    this.finished = false;\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-progress-animation\")) {\n      this.setAttribute(\"dh-progress-animation\", \"\");\n    }\n  }\n  render() {\n    const classes = {\n      circle: !this.finished,\n      \"load-complete\": this.finished\n    };\n    return html`\n      <div class=${classMap(classes)} part=\"root\">\n        <div class=\"checkmark draw\" part=\"indicator\"></div>\n      </div>\n    `;\n  }\n  show() {\n    this.active = true;\n    this.finished = false;\n  }\n  finish() {\n    this.finished = true;\n  }\n  hide() {\n    this.active = false;\n    this.finished = false;\n  }\n};\nDhProgressAnimation.styles = css`\n    ${unsafeCSS(style$d)}\n  `;\n__decorateClass$d([\n  property({ type: Boolean, reflect: true })\n], DhProgressAnimation.prototype, \"active\", 2);\n__decorateClass$d([\n  property({ type: Boolean, reflect: true })\n], DhProgressAnimation.prototype, \"finished\", 2);\nDhProgressAnimation = __decorateClass$d([\n  customElement(\"dh-progress-animation\")\n], DhProgressAnimation);\n\nvar style$c = \"*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  position: fixed;\\n  bottom: 24px;\\n  left: 50%;\\n  transform: translateX(-50%) translateY(20px);\\n  z-index: 9999;\\n  opacity: 0;\\n  pointer-events: none;\\n  transition: opacity 220ms cubic-bezier(0.2, 0, 0, 1), transform 220ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n:host([open]) {\\n  opacity: 1;\\n  transform: translateX(-50%) translateY(0);\\n  pointer-events: auto;\\n}\\n\\n#container {\\n  display: inline-flex;\\n  align-items: center;\\n  gap: 16px;\\n  min-width: 280px;\\n  max-width: 560px;\\n  padding: 14px 16px;\\n  border-radius: 4px;\\n}\\n\\n#message {\\n  flex: 1;\\n  font-size: 14px;\\n  line-height: 20px;\\n  letter-spacing: 0.25px;\\n  text-align: center;\\n}\\n\\n#container:has(#action:not(.hidden)) #message {\\n  text-align: left;\\n}\\n\\n.dots-anim {\\n  display: inline-block;\\n  width: 1.2em;\\n  overflow: hidden;\\n  vertical-align: bottom;\\n  text-align: left;\\n  animation: dh-snackbar-dots 1.6s steps(1, end) infinite;\\n}\\n\\n@keyframes dh-snackbar-dots {\\n  0% {\\n    clip-path: inset(0 100% 0 0);\\n  }\\n  25% {\\n    clip-path: inset(0 66% 0 0);\\n  }\\n  50% {\\n    clip-path: inset(0 33% 0 0);\\n  }\\n  75% {\\n    clip-path: inset(0 0 0 0);\\n  }\\n  100% {\\n    clip-path: inset(0 100% 0 0);\\n  }\\n}\\n#icon {\\n  display: inline-flex;\\n  align-items: center;\\n  justify-content: center;\\n  width: 18px;\\n  height: 18px;\\n  flex-shrink: 0;\\n}\\n\\n#action {\\n  background: transparent;\\n  border: none;\\n  cursor: pointer;\\n  padding: 6px 8px;\\n  font-family: inherit;\\n  font-size: 14px;\\n  font-weight: 500;\\n  letter-spacing: 0.1px;\\n  border-radius: 4px;\\n  white-space: nowrap;\\n}\\n\\n.hidden {\\n  display: none;\\n}\";\n\nvar __defProp$b = Object.defineProperty;\nvar __getOwnPropDesc$c = Object.getOwnPropertyDescriptor;\nvar __decorateClass$c = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$c(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$b(target, key, result);\n  return result;\n};\nlet DhSnackbar = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.open = false;\n    this.variant = \"default\";\n    this.loading = false;\n    this.message = \"\";\n    this.actionLabel = \"\";\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-snackbar\")) {\n      this.setAttribute(\"dh-snackbar\", \"\");\n    }\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.clearAutoHide();\n  }\n  render() {\n    return html`<div id=\"container\" part=\"root\">\n      <span id=\"message\" part=\"message\">\n        ${this.message}<span class=\"dots-anim ${this.loading ? \"\" : \"hidden\"}\" part=\"dots\" aria-hidden=\"true\">...</span>\n      </span>\n      <button id=\"action\" part=\"action\" class=\"${this.actionLabel ? \"\" : \"hidden\"}\" @click=\"${this.onActionClick}\">${this.actionLabel}</button>\n    </div>`;\n  }\n  /**\n   * Displays the snackbar with the given message. Any currently open\n   * snackbar is replaced immediately.\n   *\n   * @param message              Display text.\n   * @param options.variant      Visual variant (default | success | error | info | loading).\n   * @param options.duration     Auto-dismiss in ms (default 4000, 0 = stay until hide()).\n   * @param options.actionLabel  Optional action-button label. Listen to the\n   *                             `snackbarAction` event to react to clicks.\n   * @param options.loading      Show animated trailing dots for loading states.\n   */\n  show(message, options = {}) {\n    this.clearAutoHide();\n    this.message = message;\n    this.variant = options.variant ?? \"default\";\n    this.actionLabel = options.actionLabel ?? \"\";\n    this.loading = options.loading ?? false;\n    this.open = true;\n    const duration = options.duration ?? 4e3;\n    if (duration > 0) {\n      this.autoHideTimer = setTimeout(() => this.hide(), duration);\n    }\n  }\n  /**\n   * Closes the snackbar (if open). Dispatches `snackbarDismissed`.\n   */\n  hide() {\n    this.clearAutoHide();\n    if (this.open) {\n      this.open = false;\n      this.snackbarDismissed.dispatch();\n    }\n  }\n  clearAutoHide() {\n    if (this.autoHideTimer) {\n      clearTimeout(this.autoHideTimer);\n      this.autoHideTimer = void 0;\n    }\n  }\n  onActionClick() {\n    this.hide();\n    this.snackbarAction.dispatch();\n  }\n};\nDhSnackbar.styles = css`\n    ${unsafeCSS(style$c)}\n  `;\n__decorateClass$c([\n  property({ type: Boolean, reflect: true })\n], DhSnackbar.prototype, \"open\", 2);\n__decorateClass$c([\n  property({ type: String, reflect: true })\n], DhSnackbar.prototype, \"variant\", 2);\n__decorateClass$c([\n  property({ type: Boolean, reflect: true })\n], DhSnackbar.prototype, \"loading\", 2);\n__decorateClass$c([\n  state()\n], DhSnackbar.prototype, \"message\", 2);\n__decorateClass$c([\n  state()\n], DhSnackbar.prototype, \"actionLabel\", 2);\n__decorateClass$c([\n  event({ bubbles: true, cancelable: true, composed: true }, \"snackbarAction\")\n], DhSnackbar.prototype, \"snackbarAction\", 2);\n__decorateClass$c([\n  event({ bubbles: true, cancelable: true, composed: true }, \"snackbarDismissed\")\n], DhSnackbar.prototype, \"snackbarDismissed\", 2);\nDhSnackbar = __decorateClass$c([\n  customElement(\"dh-snackbar\")\n], DhSnackbar);\n\nvar style$b = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n  text-align: center;\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n  display: flex;\\n  font-family: \\\"furnview-icons-simple\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n  content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n  content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n  content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n  content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n  content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n  content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n  content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n  content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n  content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n  content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n  content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n  content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n  content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n  content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n  content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n  content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n  content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n  content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n  content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n  content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n  content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n  content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n  content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n  content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n  content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n  content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n  content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n  content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n  content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n  content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n  content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n  content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n  content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n  content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n  content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n  content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n  content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n  content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n  content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n  content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n  content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n  content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n  content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n  content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n  content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n  content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n  content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n  content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n  content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n  content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n  content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n  content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n  content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n  content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n  content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n  content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n  content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n  content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n  content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n  content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n  content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n  content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n  content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n  content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n  content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n  content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n  content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n  content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n  content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n  content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n  content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n  content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n  content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n  content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n  content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n  content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n  content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n  content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n  content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n  content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n  content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n  content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n  content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n  content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n  content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n  content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n  content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n  content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n  content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n  content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n  content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n  content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n  content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n  content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n  content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n  content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n  content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n  content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n  content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n  content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n  content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n  content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n  content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n  content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n  content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n  content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n  content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n  content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n  content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n  content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n  content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n  content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n  content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n  content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n  content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n  content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n  content: \\\"à\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n  content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n  content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n  content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n  content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n  content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n  content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n  content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n  content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n  content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n  content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n  content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n  content: \\\"í\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n  content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n  content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n  content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n  content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n  text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n  display: flex;\\n  font-family: \\\"furnview-icons-multi\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n  content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n  content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n  content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n  content: \\\"0\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n  content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n  content: \\\";\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n  content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n  content: \\\"=\\\\a;\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n  content: \\\"<\\\";\\n  position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n  content: \\\"8\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n  content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n  content: \\\":\\\\a 8\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n  content: \\\"9\\\";\\n  position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: block;\\n  width: 100%;\\n  max-width: 100%;\\n  overflow: hidden;\\n  position: relative;\\n}\\n\\n:host([hidden]) {\\n  display: none;\\n}\\n\\n#select-container {\\n  position: relative;\\n  height: 100%;\\n}\\n\\n.flex-container {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n}\\n\\n.selected-container {\\n  cursor: pointer;\\n  position: relative;\\n  height: 100%;\\n}\\n\\n.floating-label {\\n  position: absolute;\\n  left: 16px;\\n  top: 50%;\\n  transform: translateY(-50%);\\n  font-size: 1rem;\\n  pointer-events: none;\\n  transition: top 200ms cubic-bezier(0.2, 0, 0, 1), transform 200ms cubic-bezier(0.2, 0, 0, 1), font-size 200ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n.floating-label.float {\\n  top: 6px;\\n  transform: translateY(0);\\n  font-size: 0.75rem;\\n}\\n\\n.has-floating-label {\\n  padding-top: 14px;\\n}\\n\\n#list-container {\\n  position: fixed;\\n  z-index: 99;\\n  overflow: auto;\\n  margin: 0;\\n  padding: 0;\\n  border: none;\\n  inset: auto;\\n  width: max-content;\\n}\\n\\n#option-list {\\n  display: flex;\\n  flex-direction: column;\\n  overflow: auto;\\n  max-height: 20rem;\\n}\\n\\n#option-list {\\n  scrollbar-width: thin;\\n  scrollbar-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2)) var(--dh-scrollbar-track, transparent);\\n}\\n\\n#option-list::-webkit-scrollbar {\\n  width: var(--dh-scrollbar-width, 8px);\\n  height: var(--dh-scrollbar-width, 8px);\\n}\\n\\n#option-list::-webkit-scrollbar-thumb {\\n  background-color: var(--dh-scrollbar-thumb, rgba(0, 0, 0, 0.2));\\n  border-radius: var(--dh-scrollbar-radius, 4px);\\n}\\n\\n#option-list::-webkit-scrollbar-thumb:hover {\\n  background-color: var(--dh-scrollbar-thumb-hover, rgba(0, 0, 0, 0.35));\\n}\\n\\n#option-list::-webkit-scrollbar-track {\\n  background: var(--dh-scrollbar-track, transparent);\\n}\\n\\n.left {\\n  transform: rotate(90deg);\\n}\\n\\n.arrow {\\n  margin-left: 0.3rem;\\n}\\n\\n.option {\\n  display: flex;\\n  align-items: center;\\n  cursor: pointer;\\n}\\n\\n.not-approved {\\n  opacity: 0.38;\\n  pointer-events: none;\\n  cursor: default;\\n}\\n\\n#search-input {\\n  width: 100%;\\n}\\n\\n.hidden {\\n  display: none;\\n}\";\n\nvar __defProp$a = Object.defineProperty;\nvar __getOwnPropDesc$b = Object.getOwnPropertyDescriptor;\nvar __decorateClass$b = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$b(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$a(target, key, result);\n  return result;\n};\nlet DhSelect = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.searchName = \"\";\n    this.notSearchable = false;\n    this.disabled = false;\n    this.lazy = false;\n    this.information = \"\";\n    this.label = \"\";\n    this.withoutEmptyDefault = false;\n    this.autoclose = true;\n    this.variant = \"outlined\";\n    this.options = [];\n    this.selectedOption = {\n      dataId: \"empty-default\",\n      showContent: \"\",\n      selected: false,\n      approved: true,\n      suboptions: []\n    };\n    this.scrollableAncestors = [];\n    this.handleScroll = () => {\n      this.closeList();\n    };\n    this.handleOutsideClick = (ev) => {\n      if (ev.target && ev.target instanceof HTMLElement) {\n        if (!ev.composedPath().includes(this)) {\n          this.closeList();\n        }\n      }\n    };\n    this.isListOpen = false;\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-select\")) {\n      this.setAttribute(\"dh-select\", \"\");\n    }\n  }\n  set selectOptions(options) {\n    this.options = this.validateOptions(options);\n    const startOption = this.findSelectedStartOption(this.options);\n    if (startOption) {\n      this.selectedOption = startOption;\n    } else if (this.withoutEmptyDefault && this.options.length > 0) {\n      this.selectedOption = this.options[0];\n      this.selectedOption.selected = true;\n    } else {\n      this.selectedOption = {\n        dataId: \"empty-default\",\n        showContent: \"\",\n        selected: false,\n        approved: true,\n        suboptions: []\n      };\n    }\n  }\n  render() {\n    const hasValue = this.selectedOption && this.selectedOption.showContent !== \"\";\n    return html` <div id=\"select-container\" part=\"root\" class=\"relative\" @input=\"${this.search}\" @change=\"${this.search}\">\n      <div class=\"flex-container selected-container\" part=\"trigger\" @click=\"${this.lazy ? this.clickArrow : this.openCloseList}\">\n        ${this.label ? html`<div part=\"floating-label\" class=\"floating-label ${hasValue || this.isListOpen ? \"float\" : \"\"}\">${this.label}</div>` : \"\"}\n        <div part=\"label\" class=\"${this.label ? \"has-floating-label\" : \"\"}\">${this.selectedOption.showContent}</div>\n        <div id=\"arrow\" class=\"fv-icon-arrow-down-2 arrow left\" part=\"icon\" @click=\"${this.lazy ? this.clickArrow : this.openCloseList}\"></div>\n      </div>\n      <div id=\"list-container\" part=\"menu\" popover=\"manual\">\n        <div class=\"${this.notSearchable ? \"hidden\" : \"\"}\" part=\"search-bar\">\n          <div part=\"search-input-wrapper\">\n            <div class=\"fv-icon-filter\" part=\"search-icon\"></div>\n            <dh-input\n              id=\"search-input\"\n              exportparts=\"root: dh-input-root, input: dh-input-input\"\n              part=\"input\"\n              placeholder=\"${this.searchName}\"\n            ></dh-input>\n          </div>\n        </div>\n        <div id=\"option-list\" part=\"content\">\n          <slot name=\"options\">\n            ${!this.withoutEmptyDefault ? html`<div part=\"item\" class=\"option border size\" dataId=\"empty-default\" showContent=\"\" @click=\"${this.selectOption}\"></div>` : html``}\n            ${this.options.map((option) => {\n      return html` ${keyed(this.options, this.renderOptionTemplate(option))} `;\n    })}\n          </slot>\n        </div>\n      </div>\n    </div>`;\n  }\n  getScrollableAncestors() {\n    const ancestors = [window];\n    let current = this;\n    while (current) {\n      const root = current.getRootNode();\n      if (root instanceof ShadowRoot) {\n        const host = root.host;\n        const hostChildren = Array.from(root.querySelectorAll(\"*\"));\n        for (const el of hostChildren) {\n          const style2 = getComputedStyle(el);\n          const oy = style2.overflowY;\n          const ox = style2.overflowX;\n          if (oy === \"auto\" || oy === \"scroll\" || oy === \"clip\" || ox === \"auto\" || ox === \"scroll\" || ox === \"clip\") {\n            ancestors.push(el);\n          }\n        }\n        current = host;\n      } else {\n        let parent = current.parentElement;\n        while (parent) {\n          const style2 = getComputedStyle(parent);\n          const oy = style2.overflowY;\n          const ox = style2.overflowX;\n          if (oy === \"auto\" || oy === \"scroll\" || oy === \"clip\" || ox === \"auto\" || ox === \"scroll\" || ox === \"clip\") {\n            ancestors.push(parent);\n          }\n          parent = parent.parentElement;\n        }\n        break;\n      }\n    }\n    return ancestors;\n  }\n  renderOptionTemplate(option, level = 0) {\n    const margin = level * 1;\n    const isSelected = option.dataId == this.selectedOption.dataId;\n    return html`<div\n        style=\" margin-left: ${margin}rem\"\n        part=\"${isSelected ? \"item selected\" : \"item\"}\"\n        class=\"${option.approved ? \"option border size\" : \"option not-approved border size\"}\"\n        dataId=\"${option.dataId}\"\n        showContent=\"${option.showContent}\"\n        ?selected=\"${isSelected}\"\n        @click=\"${option.approved ? this.selectOption : \"\"}\"\n      >\n        ${option.showContent}\n      </div>\n      ${option.suboptions.map((suboption) => {\n      return this.renderOptionTemplate(suboption, level + 1);\n    })}`;\n  }\n  closeList() {\n    try {\n      this.listContainer.hidePopover();\n    } catch {\n    }\n    this.isListOpen = false;\n    this.removeAttribute(\"open\");\n    this.arrow.classList.add(\"left\");\n    if (this.searchInput) {\n      this.searchInput.value = \"\";\n      this.searchInput.blur();\n      this.resetSearchFilter();\n    }\n    document.removeEventListener(\"click\", this.handleOutsideClick, true);\n    for (const ancestor of this.scrollableAncestors) {\n      ancestor.removeEventListener(\"scroll\", this.handleScroll);\n    }\n    this.scrollableAncestors = [];\n  }\n  resetSearchFilter() {\n    let options = Array.from(this.querySelectorAll(\"div[slot=options]\"));\n    if (options.length == 0) {\n      options = Array.from(this.renderRoot.querySelectorAll(\"div.option\"));\n    }\n    options.forEach((option) => option.classList.remove(\"hidden\"));\n  }\n  openCloseList(event2) {\n    event2?.stopPropagation();\n    if (this.disabled) {\n      return;\n    }\n    if (!this.isListOpen) {\n      this.listContainer.showPopover();\n      this.isListOpen = true;\n      this.setAttribute(\"open\", \"\");\n      const rect = this.getBoundingClientRect();\n      this.listContainer.style.left = `${rect.left}px`;\n      this.listContainer.style.minWidth = `${rect.width}px`;\n      const menuHeight = this.listContainer.getBoundingClientRect().height;\n      const spaceBelow = window.innerHeight - rect.bottom;\n      if (spaceBelow < menuHeight && rect.top > spaceBelow) {\n        this.listContainer.style.top = `${rect.top - menuHeight}px`;\n      } else {\n        this.listContainer.style.top = `${rect.bottom}px`;\n      }\n      this.arrow.classList.remove(\"left\");\n      if (this.autoclose) {\n        document.addEventListener(\"click\", this.handleOutsideClick, true);\n      }\n      this.scrollableAncestors = this.getScrollableAncestors();\n      for (const ancestor of this.scrollableAncestors) {\n        ancestor.addEventListener(\"scroll\", this.handleScroll);\n      }\n    } else {\n      this.closeList();\n    }\n  }\n  getSelectedOption() {\n    return this.selectedOption;\n  }\n  setSelectedDataId(dataId) {\n    this.changeSelectedOption(dataId);\n  }\n  selectOption(event2) {\n    const target = event2.target;\n    const dataId = target.getAttribute(\"dataId\");\n    if (!dataId) {\n      return;\n    }\n    if (dataId === \"empty-default\") {\n      this.changeSelectedOption(dataId, true);\n    } else {\n      this.changeSelectedOption(dataId);\n    }\n    this.openCloseList(event2);\n    this.changeSelectOption.dispatch({ selectedOption: this.selectedOption, dhSelect: this, information: this.information });\n  }\n  search(event2) {\n    const searchValue = this.searchInput.getInputValue();\n    let options = Array.from(this.querySelectorAll(\"div[slot=options]\"));\n    if (options.length == 0) {\n      options = Array.from(this.renderRoot.querySelectorAll(\"div.option\"));\n    }\n    options.forEach((option) => {\n      const correspondsFilterRule = option.getAttribute(\"showContent\")?.toString().toLowerCase().includes(searchValue.toLowerCase());\n      if (correspondsFilterRule) {\n        option.classList.remove(\"hidden\");\n      } else {\n        option.classList.add(\"hidden\");\n      }\n    });\n  }\n  clickArrow() {\n    this.lazy = false;\n    this.selectArrowClick.dispatch({ information: this.information, select: this });\n  }\n  validateOptions(options) {\n    options.forEach((option) => {\n      if (option.selected == void 0) {\n        option.selected = false;\n      }\n      if (option.approved == void 0) {\n        option.approved = true;\n      }\n      if (option.suboptions == void 0) {\n        option.suboptions = [];\n      }\n      option.suboptions = this.validateOptions(option.suboptions);\n    });\n    return options;\n  }\n  findSelectedStartOption(options) {\n    let foundOption;\n    for (const option of options) {\n      if (option.selected) {\n        return option;\n      }\n      foundOption = this.findSelectedStartOption(option.suboptions);\n      if (foundOption) {\n        return foundOption;\n      }\n    }\n  }\n  findOptionById(dataId, options) {\n    options = options || this.options;\n    let foundOption;\n    for (const option of options) {\n      if (option.dataId === dataId) {\n        return option;\n      }\n      foundOption = this.findOptionById(dataId, option.suboptions);\n      if (foundOption) {\n        return foundOption;\n      }\n    }\n  }\n  changeSelectedOption(dataId, isEmptyDefault = false) {\n    if (isEmptyDefault) {\n      this.selectedOption.selected = false;\n      this.selectedOption = {\n        dataId: \"empty-default\",\n        showContent: \"\",\n        selected: false,\n        approved: true,\n        suboptions: []\n      };\n    }\n    const newSelected = this.findOptionById(dataId);\n    if (newSelected) {\n      this.selectedOption.selected = false;\n      this.selectedOption = newSelected;\n      this.selectedOption.selected = true;\n    }\n  }\n};\nDhSelect.styles = css`\n    ${unsafeCSS(style$b)}\n  `;\n__decorateClass$b([\n  query(\"#search-input\")\n], DhSelect.prototype, \"searchInput\", 2);\n__decorateClass$b([\n  query(\"#list-container\")\n], DhSelect.prototype, \"listContainer\", 2);\n__decorateClass$b([\n  query(\"#arrow\")\n], DhSelect.prototype, \"arrow\", 2);\n__decorateClass$b([\n  property({ type: String })\n], DhSelect.prototype, \"searchName\", 2);\n__decorateClass$b([\n  property({ type: Boolean })\n], DhSelect.prototype, \"notSearchable\", 2);\n__decorateClass$b([\n  property({ type: Boolean })\n], DhSelect.prototype, \"disabled\", 2);\n__decorateClass$b([\n  property({ type: Boolean })\n], DhSelect.prototype, \"lazy\", 2);\n__decorateClass$b([\n  property({ type: String })\n], DhSelect.prototype, \"information\", 2);\n__decorateClass$b([\n  property({ type: String, reflect: true })\n], DhSelect.prototype, \"label\", 2);\n__decorateClass$b([\n  property({ type: Boolean, reflect: true })\n], DhSelect.prototype, \"withoutEmptyDefault\", 2);\n__decorateClass$b([\n  property({ type: Boolean })\n], DhSelect.prototype, \"autoclose\", 2);\n__decorateClass$b([\n  property({ type: String, reflect: true })\n], DhSelect.prototype, \"variant\", 2);\n__decorateClass$b([\n  state()\n], DhSelect.prototype, \"options\", 2);\n__decorateClass$b([\n  state()\n], DhSelect.prototype, \"selectedOption\", 2);\n__decorateClass$b([\n  event({ bubbles: true, cancelable: true, composed: true }, \"changeSelectOption\")\n], DhSelect.prototype, \"changeSelectOption\", 2);\n__decorateClass$b([\n  event({ bubbles: true, cancelable: true, composed: true }, \"selectArrowClick\")\n], DhSelect.prototype, \"selectArrowClick\", 2);\nDhSelect = __decorateClass$b([\n  customElement(\"dh-select\")\n], DhSelect);\n\nvar style$a = \"@charset \\\"UTF-8\\\";\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: block;\\n  width: 100%;\\n  position: relative;\\n  z-index: 1;\\n}\\n\\n#mainbar {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  gap: 16px;\\n  /* Mehr horizontal padding (24px) — Toggle-Icon und Actions vom Rand absetzen */\\n  padding: 0.5rem 24px;\\n  width: 100%;\\n  background-color: #fafafa;\\n  box-shadow: 0 1px 0 0 #e0e0e0;\\n}\\n\\n#brand-container {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  /* Groesserer gap zwischen Toggle-Icon und Brand-Logo */\\n  gap: 24px;\\n  flex-shrink: 0;\\n}\\n\\n#brand-container ::slotted(svg),\\n#brand-container ::slotted(img) {\\n  height: 1.5rem;\\n  width: auto;\\n  flex-shrink: 0;\\n}\\n\\n#brand-container ::slotted(span) {\\n  font-size: 1.125rem;\\n  font-weight: 500;\\n  white-space: nowrap;\\n}\\n\\n#content-container {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  gap: 12px;\\n  flex: 1;\\n  min-width: 0;\\n  justify-content: flex-start;\\n  padding: 0.2rem;\\n}\\n\\n:host([contentalign=center]) #content-container {\\n  justify-content: center;\\n}\\n\\n:host([contentalign=end]) #content-container {\\n  justify-content: flex-end;\\n}\\n\\n#content-container ::slotted(*) {\\n  flex-shrink: 0;\\n  white-space: nowrap;\\n  font-size: 0.875rem;\\n  display: inline-flex;\\n  align-items: center;\\n  line-height: 1.25rem;\\n}\\n\\n#actions-container {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  gap: 8px;\\n  flex-shrink: 0;\\n}\\n\\n#actions-container ::slotted(*) {\\n  flex-shrink: 0;\\n}\\n\\nslot {\\n  display: contents;\\n}\";\n\nvar __defProp$9 = Object.defineProperty;\nvar __getOwnPropDesc$a = Object.getOwnPropertyDescriptor;\nvar __decorateClass$a = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$a(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$9(target, key, result);\n  return result;\n};\nlet DhMainbar = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.contentAlign = \"start\";\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-mainbar\")) {\n      this.setAttribute(\"dh-mainbar\", \"\");\n    }\n  }\n  render() {\n    return html`\n      <div id=\"mainbar\" part=\"root\">\n        <div id=\"brand-container\" part=\"brand\">\n          <slot name=\"brand\"></slot>\n        </div>\n        <div id=\"content-container\" part=\"content\">\n          <slot name=\"content\"></slot>\n        </div>\n        <div id=\"actions-container\" part=\"actions\">\n          <slot name=\"actions\"></slot>\n        </div>\n      </div>\n    `;\n  }\n};\nDhMainbar.styles = css`\n    ${unsafeCSS(style$a)}\n  `;\n__decorateClass$a([\n  property({ type: String, reflect: true })\n], DhMainbar.prototype, \"contentAlign\", 2);\nDhMainbar = __decorateClass$a([\n  customElement(\"dh-mainbar\")\n], DhMainbar);\n\nvar style$9 = \"@charset \\\"UTF-8\\\";\\n[class*=fv-icon] {\\n  text-align: center;\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n}\\n\\n[class*=fv-icon]:before {\\n  display: flex;\\n  font-family: \\\"furnview-icons-simple\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: inherit;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-start:before {\\n  content: \\\"0\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-enter:before {\\n  content: \\\"1\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-inspirations:before {\\n  content: \\\"2\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-progimages:before {\\n  content: \\\"3\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dropdown-arrow:before {\\n  content: \\\"4\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-download:before {\\n  content: \\\"5\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-upload:before {\\n  content: \\\"6\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-circle:before {\\n  content: \\\"7\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-dimchange:before {\\n  content: \\\"A\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-doorchange:before {\\n  content: \\\"B\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete:before {\\n  content: \\\"C\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-augmented-reality:before {\\n  content: \\\"D\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-clothes:before {\\n  content: \\\"E\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-measure:before {\\n  content: \\\"F\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-onoff:before {\\n  content: \\\"G\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-play:before {\\n  content: \\\"H\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-screenshot:before {\\n  content: \\\"I\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-retro:before {\\n  content: \\\"J\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera:before {\\n  content: \\\"K\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-play:before {\\n  content: \\\"L\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-out:before {\\n  content: \\\"M\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-zoom-in:before {\\n  content: \\\"N\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-undo:before {\\n  content: \\\"O\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-right-up-pointing:before {\\n  content: \\\"P\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left-down-pointing:before {\\n  content: \\\"Q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down-2:before {\\n  content: \\\"R\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye:before {\\n  content: \\\"S\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-undo:before {\\n  content: \\\"T\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-save:before {\\n  content: \\\"U\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-1:before {\\n  content: \\\"V\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-shopping-cart-2:before {\\n  content: \\\"W\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-share:before {\\n  content: \\\"X\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pdf:before {\\n  content: \\\"Y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-2:before {\\n  content: \\\"Z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-eye-closed:before {\\n  content: \\\"[\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder:before {\\n  content: \\\"\\\\\\\\\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow:before {\\n  content: \\\"]\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-room:before {\\n  content: \\\"^\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-analysis:before {\\n  content: \\\"_\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-switch:before {\\n  content: \\\"`\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-bigtiles:before {\\n  content: \\\"a\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud:before {\\n  content: \\\"b\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-colors:before {\\n  content: \\\"c\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decoration:before {\\n  content: \\\"d\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-decouple:before {\\n  content: \\\"e\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-filter:before {\\n  content: \\\"f\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-finish:before {\\n  content: \\\"g\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fitting:before {\\n  content: \\\"h\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-floor:before {\\n  content: \\\"i\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-hr:before {\\n  content: \\\"j\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-load:before {\\n  content: \\\"k\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-logout:before {\\n  content: \\\"l\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-magnet:before {\\n  content: \\\"m\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-maximize:before {\\n  content: \\\"n\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-minus:before {\\n  content: \\\"o\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-move3d:before {\\n  content: \\\"p\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-new:before {\\n  content: \\\"q\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-panswitch:before {\\n  content: \\\"r\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pfeile:before {\\n  content: \\\"s\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-pickmode:before {\\n  content: \\\"t\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-zoomin:before {\\n  content: \\\"v\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-print:before {\\n  content: \\\"w\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-projectmanager:before {\\n  content: \\\"x\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-redo:before {\\n  content: \\\"y\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reload:before {\\n  content: \\\"z\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate3d:before {\\n  content: \\\"{\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-settings:before {\\n  content: \\\"|\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-showroom:before {\\n  content: \\\"}\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tiles:before {\\n  content: \\\"~\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-treeupremove:before {\\n  content: \\\"©\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wall:before {\\n  content: \\\"¬\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rewind:before {\\n  content: \\\"®\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus:before {\\n  content: \\\"¯\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-down:before {\\n  content: \\\"°\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-up-down:before {\\n  content: \\\"±\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter:before {\\n  content: \\\"²\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-moebelpilot:before {\\n  content: \\\"³\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-iwofurn:before {\\n  content: \\\"´\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-wawi:before {\\n  content: \\\"µ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-paragraph:before {\\n  content: \\\"¶\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-language:before {\\n  content: \\\"·\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-letter-filled:before {\\n  content: \\\"¸\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrow-left:before {\\n  content: \\\"¹\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-toggle:before {\\n  content: \\\"º\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-youtube:before {\\n  content: \\\"»\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1:before {\\n  content: \\\"¼\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FR:before {\\n  content: \\\"½\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-1-FS:before {\\n  content: \\\"¾\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2:before {\\n  content: \\\"¿\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-2-BS:before {\\n  content: \\\"À\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-L:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-5-R:before {\\n  content: \\\"Â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6:before {\\n  content: \\\"Ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-7:before {\\n  content: \\\"Ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-8:before {\\n  content: \\\"Ã…\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-L:before {\\n  content: \\\"Æ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-CFT-6-R:before {\\n  content: \\\"Ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-free:before {\\n  content: \\\"È\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner:before {\\n  content: \\\"É\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-straight:before {\\n  content: \\\"Ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-note-add:before {\\n  content: \\\"Ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-change:before {\\n  content: \\\"ÃŒ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-content-copy:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-cloud-download:before {\\n  content: \\\"ÃŽ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-u:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-m:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-t:before {\\n  content: \\\"Ñ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-planning-type-corner-mirrored:before {\\n  content: \\\"Ã’\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-camera-settings:before {\\n  content: \\\"Ó\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-all:before {\\n  content: \\\"Ô\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-delete-fitting-one:before {\\n  content: \\\"Õ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-error:before {\\n  content: \\\"Ö\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-furnray:before {\\n  content: \\\"×\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-more-horiz:before {\\n  content: \\\"Ø\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-question-mark:before {\\n  content: \\\"Ù\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-all:before {\\n  content: \\\"Ú\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-reset-one:before {\\n  content: \\\"Û\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-rotate:before {\\n  content: \\\"Ü\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-left:before {\\n  content: \\\"Ã�\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-door-hinge-right:before {\\n  content: \\\"Þ\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-right-top:before {\\n  content: \\\"ß\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-front:before {\\n  content: \\\"à\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-camera-top:before {\\n  content: \\\"á\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-top:before {\\n  content: \\\"â\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-fa-2d-front:before {\\n  content: \\\"ã\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check:before {\\n  content: \\\"ä\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-close:before {\\n  content: \\\"Ã¥\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-check-circle:before {\\n  content: \\\"ç\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-tools:before {\\n  content: \\\"è\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-arrange:before {\\n  content: \\\"é\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-appliances:before {\\n  content: \\\"ê\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal:before {\\n  content: \\\"ë\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-swap-horizontal-circle:before {\\n  content: \\\"ì\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-add-box:before {\\n  content: \\\"í\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-plus-circle:before {\\n  content: \\\"î\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-description:before {\\n  content: \\\"ï\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-folder2:before {\\n  content: \\\"ð\\\"/\\\"\\\";\\n}\\n\\n.fv-icon-draft:before {\\n  content: \\\"ñ\\\"/\\\"\\\";\\n}\\n\\n[class*=fv-icon-multi] {\\n  font-size: var(--fv-icons-font-size, initital);\\n  line-height: var(--fv-icons-line-height, var(--fv-icons-font-size, initital));\\n  text-align: center;\\n}\\n\\n[class*=fv-icon-multi]:before, [class*=fv-icon-multi]:after {\\n  display: flex;\\n  font-family: \\\"furnview-icons-multi\\\";\\n  font-style: normal;\\n  font-weight: normal;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n  text-rendering: auto;\\n  text-align: center;\\n  justify-content: center;\\n  align-items: center;\\n  height: 100%;\\n  line-height: 0;\\n}\\n\\n.mirrored-x:before {\\n  transform: scale(-1, 1);\\n}\\n\\n.mirrored-y:before {\\n  transform: scale(1, -1);\\n}\\n\\n.fv-icon-multi-letter-filled:before {\\n  content: \\\"“\\\";\\n}\\n\\n.fv-icon-multi-arrow-left:before {\\n  content: \\\"”\\\";\\n}\\n\\n.fv-icon-multi-chain-bold:before {\\n  content: \\\"0\\\";\\n}\\n\\n.fv-icon-multi-no-chain-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-no-chain-bold:before {\\n  content: \\\"0\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-no-chain-bold:after {\\n  content: \\\"1\\\";\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:before {\\n  content: \\\";\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-left-bold:after {\\n  content: \\\"=\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:before {\\n  content: \\\"=\\\\a;\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-left-bold:after {\\n  content: \\\"<\\\";\\n  position: absolute !important;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold {\\n  display: flex;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:before {\\n  content: \\\"8\\\";\\n  letter-spacing: -2em;\\n}\\n\\n.fv-icon-multi-chain-arrow-right-bold:after {\\n  content: \\\":\\\";\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold {\\n  display: flex;\\n  justify-content: center;\\n  position: relative !important;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:before {\\n  content: \\\":\\\\a 8\\\";\\n  min-width: var(--fv-icons-multicolor-min-width, 2em);\\n  min-height: var(--fv-icons-multicolor-min-height, 1em);\\n  background: linear-gradient(to right, var(--fv-icons-multicolor-icon-left-color, var(--primary-text-color, red)) 54%, var(--fv-icons-multicolor-icon-right-color, var(--primary-font-color, blue)) 46%);\\n  -webkit-background-clip: text;\\n  -webkit-text-fill-color: transparent;\\n  max-width: min-content;\\n}\\n\\n.fv-icon-multi-no-chain-arrow-right-bold:after {\\n  content: \\\"9\\\";\\n  position: absolute !important;\\n}\\n\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: block;\\n  /* min-width: 0 erlaubt der Card sich auf Container-Breite zu schrumpfen.\\n  * Verhindert dass slotted-Content (z.B. dh-button mit langem Text) die\\n  * Card ueber Container-Grenzen aufblaeht. */\\n  min-width: 0;\\n}\\n\\n#card {\\n  display: flex;\\n  flex-direction: column;\\n  height: 100%;\\n  padding: 0.5rem;\\n  /* overflow: hidden cappt slotted-Content damit nichts ueber Card-Grenzen ragt */\\n  overflow: hidden;\\n  min-width: 0;\\n}\\n\\n#header-container {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  padding-bottom: 12px;\\n}\\n\\n:host([headeralign=center]) #header-container {\\n  justify-content: center;\\n}\\n\\n:host([headeralign=end]) #header-container {\\n  justify-content: flex-end;\\n}\\n\\n#header-container.empty {\\n  display: none;\\n  padding: 0;\\n}\\n\\n#content-container {\\n  display: flex;\\n  flex-direction: column;\\n  flex: 1;\\n  min-height: 0;\\n  min-width: 0;\\n}\\n\\n:host([contentlayout=grid]) #content-container {\\n  display: flex;\\n  flex-direction: row;\\n  flex-wrap: wrap;\\n  gap: var(--content-gap, 8px);\\n}\\n\\n:host([contentlayout=grid]) ::slotted([slot=content]) {\\n  width: fit-content;\\n}\\n\\n#actions-container {\\n  display: flex;\\n  flex-direction: row;\\n  justify-content: center;\\n  align-items: center;\\n  gap: 8px;\\n  padding-top: 12px;\\n}\\n\\n#actions-container.empty {\\n  display: none;\\n}\\n\\nslot {\\n  display: contents;\\n}\\n\\n:host([collapsible]) #header-container {\\n  cursor: pointer;\\n  user-select: none;\\n}\\n\\n:host([collapsible]) #chevron {\\n  margin-left: auto;\\n  font-size: 1rem;\\n  transition: transform 200ms cubic-bezier(0.2, 0, 0, 1);\\n}\\n\\n:host([collapsible]:not([open])) #chevron {\\n  transform: rotate(-90deg);\\n}\\n\\n:host([collapsible]:not([open])) #content-container,\\n:host([collapsible]:not([open])) #actions-container {\\n  display: none;\\n}\";\n\nvar __defProp$8 = Object.defineProperty;\nvar __getOwnPropDesc$9 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$9 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$9(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$8(target, key, result);\n  return result;\n};\nlet DhCard = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.variant = \"elevated\";\n    this.contentLayout = \"list\";\n    this.stretchFullWidth = false;\n    this.noClickEffect = false;\n    this.noHoverEffect = false;\n    this.headerAlign = \"start\";\n    this.headerStyle = \"plain\";\n    this.collapsible = false;\n    this.open = true;\n    this.headerEmpty = true;\n    this.actionsEmpty = true;\n    this.toggleCollapse = (event2) => {\n      if (!this.collapsible) {\n        return;\n      }\n      event2.stopPropagation();\n      this.open = !this.open;\n      this.collapseChange.dispatch(this.open);\n    };\n    this.updateHeaderState = (event2) => {\n      const slot = event2.target;\n      this.headerEmpty = slot.assignedElements().length === 0;\n    };\n    this.updateActionsState = (event2) => {\n      const slot = event2.target;\n      this.actionsEmpty = slot.assignedElements().length === 0;\n    };\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-card\")) {\n      this.setAttribute(\"dh-card\", \"\");\n    }\n  }\n  updated(changedProperties) {\n    if (changedProperties.has(\"stretchFullWidth\")) {\n      this.style.width = this.stretchFullWidth ? \"100%\" : \"\";\n    }\n  }\n  render() {\n    return html`\n      <div id=\"card\" part=\"root\">\n        <div\n          id=\"header-container\"\n          part=\"header\"\n          class=\"${classMap({ empty: this.headerEmpty && !this.collapsible })}\"\n          @click=\"${this.toggleCollapse}\"\n        >\n          <slot name=\"header\" @slotchange=\"${this.updateHeaderState}\"></slot>\n          ${this.collapsible ? html`<div id=\"chevron\" part=\"chevron\" class=\"fv-icon-arrow-down-2\"></div>` : null}\n        </div>\n        <div id=\"content-container\" part=\"content\">\n          <slot name=\"content\"></slot>\n        </div>\n        <div id=\"actions-container\" part=\"actions\" class=\"${classMap({ empty: this.actionsEmpty })}\">\n          <slot name=\"actions\" @slotchange=\"${this.updateActionsState}\"></slot>\n        </div>\n      </div>\n    `;\n  }\n};\nDhCard.styles = css`\n    ${unsafeCSS(style$9)}\n  `;\n__decorateClass$9([\n  property({ type: String, reflect: true })\n], DhCard.prototype, \"variant\", 2);\n__decorateClass$9([\n  property({ type: String, reflect: true })\n], DhCard.prototype, \"contentLayout\", 2);\n__decorateClass$9([\n  property({ type: Boolean })\n], DhCard.prototype, \"stretchFullWidth\", 2);\n__decorateClass$9([\n  property({ type: Boolean, reflect: true, attribute: \"no-click-effect\" })\n], DhCard.prototype, \"noClickEffect\", 2);\n__decorateClass$9([\n  property({ type: Boolean, reflect: true, attribute: \"no-hover-effect\" })\n], DhCard.prototype, \"noHoverEffect\", 2);\n__decorateClass$9([\n  property({ type: String, reflect: true })\n], DhCard.prototype, \"headerAlign\", 2);\n__decorateClass$9([\n  property({ type: String, reflect: true })\n], DhCard.prototype, \"headerStyle\", 2);\n__decorateClass$9([\n  property({ type: Boolean, reflect: true })\n], DhCard.prototype, \"collapsible\", 2);\n__decorateClass$9([\n  property({ type: Boolean, reflect: true })\n], DhCard.prototype, \"open\", 2);\n__decorateClass$9([\n  event({ bubbles: true, cancelable: true, composed: true }, \"collapseChange\")\n], DhCard.prototype, \"collapseChange\", 2);\n__decorateClass$9([\n  state()\n], DhCard.prototype, \"headerEmpty\", 2);\n__decorateClass$9([\n  state()\n], DhCard.prototype, \"actionsEmpty\", 2);\nDhCard = __decorateClass$9([\n  customElement(\"dh-card\")\n], DhCard);\n\nvar style$8 = \"@charset \\\"UTF-8\\\";\\n*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: block;\\n}\\n\\n.grid-container {\\n  display: grid;\\n  gap: var(--grid-gap, 16px);\\n  padding: var(--grid-padding, 8px);\\n  align-items: start;\\n}\\n\\n.grid-container.equal-heights {\\n  align-items: stretch;\\n}\\n\\n.grid-container[layout=grid] {\\n  /* Modern: Spalten teilen sich gleichmaessig die Container-Breite (1fr).\\n  * Cards strecken sich auf volle Breite — ergibt vorhersehbares Layout. */\\n  grid-template-columns: repeat(var(--columns), 1fr);\\n}\\n\\n.grid-container[layout=grid].auto-columns {\\n  display: flex;\\n  flex-wrap: wrap;\\n}\\n\\n.grid-container[layout=grid].stretch-full-width {\\n  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\\n}\\n\\n.grid-container[layout=list] {\\n  grid-template-columns: min-content;\\n}\\n\\n.grid-container[layout=list].stretch-full-width {\\n  grid-template-columns: 1fr;\\n}\\n\\n::slotted(dh-card[stretchfullwidth]) {\\n  grid-column: 1/-1;\\n  width: 100%;\\n}\";\n\nvar __defProp$7 = Object.defineProperty;\nvar __getOwnPropDesc$8 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$8 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$8(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$7(target, key, result);\n  return result;\n};\nlet DhCardGrid = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.layout = \"grid\";\n    this.gap = 16;\n    this.minCardHeight = 200;\n    this.columns = 0;\n    this.stretchFullWidth = false;\n    this.equalHeights = false;\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-card-grid\")) {\n      this.setAttribute(\"dh-card-grid\", \"\");\n    }\n  }\n  get containerClasses() {\n    const classes = [\"grid-container\"];\n    if (this.stretchFullWidth) {\n      classes.push(\"stretch-full-width\");\n    }\n    if (this.equalHeights) {\n      classes.push(\"equal-heights\");\n    }\n    if (this.columns === 0 && !this.stretchFullWidth) {\n      classes.push(\"auto-columns\");\n    }\n    return classes.join(\" \");\n  }\n  render() {\n    return html`\n      <div\n        part=\"root\"\n        class=\"${this.containerClasses}\"\n        layout=\"${this.layout}\"\n        style=\"\n          --grid-gap: ${this.gap}px;\n          --min-card-height: ${this.minCardHeight}px;\n          ${this.columns > 0 ? `--columns: ${this.columns};` : \"\"}\n        \"\n      >\n        <slot part=\"item\" name=\"item\"></slot>\n      </div>\n    `;\n  }\n};\nDhCardGrid.styles = css`\n    ${unsafeCSS(style$8)}\n  `;\n__decorateClass$8([\n  property({ type: String, reflect: true })\n], DhCardGrid.prototype, \"layout\", 2);\n__decorateClass$8([\n  property({ type: Number })\n], DhCardGrid.prototype, \"gap\", 2);\n__decorateClass$8([\n  property({ type: Number })\n], DhCardGrid.prototype, \"minCardHeight\", 2);\n__decorateClass$8([\n  property({ type: Number })\n], DhCardGrid.prototype, \"columns\", 2);\n__decorateClass$8([\n  property({ type: Boolean })\n], DhCardGrid.prototype, \"stretchFullWidth\", 2);\n__decorateClass$8([\n  property({ type: Boolean })\n], DhCardGrid.prototype, \"equalHeights\", 2);\nDhCardGrid = __decorateClass$8([\n  customElement(\"dh-card-grid\")\n], DhCardGrid);\n\nvar style$7 = \"*, *:after, *:before {\\n  box-sizing: border-box;\\n}\\n\\n:host {\\n  display: block;\\n}\\n\\n#root {\\n  display: flex;\\n  flex-direction: column;\\n}\\n\\n#row {\\n  display: grid;\\n  grid-template-columns: auto 1fr auto;\\n  align-items: center;\\n  gap: 1rem;\\n  cursor: pointer;\\n}\\n\\n#status {\\n  display: flex;\\n  align-items: center;\\n}\\n\\n#content {\\n  display: flex;\\n  flex-direction: column;\\n  min-width: 0;\\n  gap: 0.125rem;\\n}\\n\\n#actions {\\n  display: flex;\\n  align-items: center;\\n  gap: 0.25rem;\\n}\\n\\n#expanded-region {\\n  display: none;\\n}\\n\\n:host([expanded]) #expanded-region {\\n  display: block;\\n}\\n\\n::slotted([slot=title]) {\\n  font-weight: 600;\\n  font-size: 0.875rem;\\n  color: var(--dh-list-item-title-color, currentColor);\\n  overflow: hidden;\\n  text-overflow: ellipsis;\\n  white-space: nowrap;\\n}\\n\\n::slotted([slot=meta]) {\\n  font-size: 0.75rem;\\n  color: var(--dh-list-item-meta-color, currentColor);\\n  line-height: 1.4;\\n  /* Allow wrap so callers can fit several labeled fields at a glance.\\n  * Title slot still truncates so the row height stays bounded. */\\n}\\n\\n::slotted([slot=status]) {\\n  width: 0.5rem;\\n  height: 0.5rem;\\n  border-radius: 50%;\\n  background-color: var(--dh-list-item-status-color, currentColor);\\n  opacity: 0.3;\\n}\\n\\n::slotted([slot=status].active) {\\n  opacity: 1;\\n}\";\n\nvar __defProp$6 = Object.defineProperty;\nvar __getOwnPropDesc$7 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$7 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$7(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$6(target, key, result);\n  return result;\n};\nlet DhListItem = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.expanded = false;\n    this.selected = false;\n  }\n  render() {\n    return html`\n      <div id=\"root\" part=\"root\">\n        <div id=\"row\" part=\"row\" @click=\"${this.onRowClick}\">\n          <div id=\"status\" part=\"status\">\n            <slot name=\"status\"></slot>\n          </div>\n          <div id=\"content\" part=\"content\">\n            <div id=\"title\" part=\"title\"><slot name=\"title\"></slot></div>\n            <div id=\"meta\" part=\"meta\"><slot name=\"meta\"></slot></div>\n            <slot></slot>\n          </div>\n          <div id=\"actions\" part=\"actions\">\n            <slot name=\"actions\"></slot>\n          </div>\n        </div>\n        <div id=\"expanded-region\" part=\"expanded\">\n          <slot name=\"expanded\"></slot>\n        </div>\n      </div>\n    `;\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-list-item\")) {\n      this.setAttribute(\"dh-list-item\", \"\");\n    }\n  }\n  onRowClick(clickEvent) {\n    const eventPath = clickEvent.composedPath();\n    const isInActionsSlot = eventPath.some((element) => element?.getAttribute && element.getAttribute(\"slot\") === \"actions\");\n    const isInExpandedSlot = eventPath.some((element) => element?.getAttribute && element.getAttribute(\"slot\") === \"expanded\");\n    if (isInActionsSlot || isInExpandedSlot) {\n      return;\n    }\n    this.rowClickEvent.dispatch();\n  }\n};\nDhListItem.styles = css`\n    ${unsafeCSS(style$7)}\n  `;\n__decorateClass$7([\n  property({ type: Boolean, reflect: true })\n], DhListItem.prototype, \"expanded\", 2);\n__decorateClass$7([\n  property({ type: Boolean, reflect: true })\n], DhListItem.prototype, \"selected\", 2);\n__decorateClass$7([\n  event({ bubbles: true, cancelable: true, composed: true }, \"rowClick\")\n], DhListItem.prototype, \"rowClickEvent\", 2);\nDhListItem = __decorateClass$7([\n  customElement(\"dh-list-item\")\n], DhListItem);\n\nvar style$6 = \":host {\\n  display: block;\\n}\\n\\n#root {\\n  display: grid;\\n  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\\n  gap: 0.875rem;\\n}\";\n\nvar __getOwnPropDesc$6 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$6 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$6(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (decorator(result)) || result;\n  return result;\n};\nlet DhFormGrid = class extends LitElement {\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-form-grid\")) {\n      this.setAttribute(\"dh-form-grid\", \"\");\n    }\n  }\n  render() {\n    return html`<div id=\"root\" part=\"root\"><slot></slot></div>`;\n  }\n};\nDhFormGrid.styles = css`\n    ${unsafeCSS(style$6)}\n  `;\nDhFormGrid = __decorateClass$6([\n  customElement(\"dh-form-grid\")\n], DhFormGrid);\n\nvar style$5 = \":host {\\n  display: block;\\n  min-width: 0;\\n}\\n\\n:host([span=\\\"2\\\"]) {\\n  grid-column: span 2;\\n}\\n\\n:host([span=\\\"3\\\"]) {\\n  grid-column: span 3;\\n}\\n\\n:host([span=\\\"4\\\"]) {\\n  grid-column: span 4;\\n}\\n\\n#root {\\n  display: flex;\\n  flex-direction: column;\\n  gap: 0.25rem;\\n  min-width: 0;\\n}\\n\\nlabel {\\n  font-size: 0.75rem;\\n  font-weight: 600;\\n  text-transform: uppercase;\\n  letter-spacing: 0.025em;\\n  color: var(--dh-form-field-label-color, currentColor);\\n}\\n\\n#control {\\n  display: flex;\\n  flex-direction: column;\\n  min-width: 0;\\n}\";\n\nvar __defProp$5 = Object.defineProperty;\nvar __getOwnPropDesc$5 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$5 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$5(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$5(target, key, result);\n  return result;\n};\nlet DhFormField = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.label = \"\";\n    this.span = 1;\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-form-field\")) {\n      this.setAttribute(\"dh-form-field\", \"\");\n    }\n  }\n  render() {\n    return html`\n      <div id=\"root\" part=\"root\">\n        ${this.label ? html`<label part=\"label\">${this.label}</label>` : html`<slot name=\"label\"></slot>`}\n        <div id=\"control\" part=\"control\">\n          <slot></slot>\n        </div>\n      </div>\n    `;\n  }\n};\nDhFormField.styles = css`\n    ${unsafeCSS(style$5)}\n  `;\n__decorateClass$5([\n  property({ type: String })\n], DhFormField.prototype, \"label\", 2);\n__decorateClass$5([\n  property({ type: Number, reflect: true })\n], DhFormField.prototype, \"span\", 2);\nDhFormField = __decorateClass$5([\n  customElement(\"dh-form-field\")\n], DhFormField);\n\nvar style$4 = \":host {\\n  display: block;\\n}\\n\\n#root {\\n  display: flex;\\n  flex-direction: column;\\n}\\n\\n#header {\\n  display: flex;\\n  align-items: center;\\n  gap: 0.5rem;\\n  padding: 0 0 0.5rem;\\n  margin-bottom: 0.5rem;\\n}\\n\\n#content {\\n  display: flex;\\n  flex-direction: column;\\n}\\n\\n:host([divider]) {\\n  border-top: 1px solid var(--md-sys-color-outline-variant, #ccc);\\n  padding-top: 1rem;\\n  margin-top: 1rem;\\n}\\n\\n:host([collapsible]) #header {\\n  cursor: pointer;\\n}\\n\\n:host([collapsed]) #content {\\n  display: none;\\n}\\n\\n#chevron {\\n  margin-left: auto;\\n  width: 0;\\n  height: 0;\\n  border-left: 5px solid transparent;\\n  border-right: 5px solid transparent;\\n  border-top: 6px solid currentColor;\\n  transition: transform 0.15s;\\n}\\n\\n:host([collapsed]) #chevron {\\n  transform: rotate(-90deg);\\n}\";\n\nvar __defProp$4 = Object.defineProperty;\nvar __getOwnPropDesc$4 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$4 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$4(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$4(target, key, result);\n  return result;\n};\nlet DhSection = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.sectionTitle = \"\";\n    this.badge = \"\";\n    this.divider = false;\n    this.collapsible = false;\n    this.collapsed = false;\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-section\")) {\n      this.setAttribute(\"dh-section\", \"\");\n    }\n  }\n  render() {\n    return html`\n      <div id=\"root\" part=\"root\">\n        <div id=\"header\" part=\"header\" @click=\"${this.toggleCollapsed}\">\n          ${this.sectionTitle ? html`<span id=\"title\" part=\"title\">${this.sectionTitle}</span>` : html`<slot name=\"title\"></slot>`}\n          ${this.badge ? html`<span id=\"badge\" part=\"badge\">${this.badge}</span>` : html`<slot name=\"badge\"></slot>`}\n          ${this.collapsible ? html`<span id=\"chevron\" part=\"chevron\"></span>` : null}\n        </div>\n        <div id=\"content\" part=\"content\">\n          <slot></slot>\n        </div>\n      </div>\n    `;\n  }\n  toggleCollapsed() {\n    if (!this.collapsible) {\n      return;\n    }\n    this.collapsed = !this.collapsed;\n  }\n};\nDhSection.styles = css`\n    ${unsafeCSS(style$4)}\n  `;\n__decorateClass$4([\n  property({ type: String })\n], DhSection.prototype, \"sectionTitle\", 2);\n__decorateClass$4([\n  property({ type: String })\n], DhSection.prototype, \"badge\", 2);\n__decorateClass$4([\n  property({ type: Boolean, reflect: true })\n], DhSection.prototype, \"divider\", 2);\n__decorateClass$4([\n  property({ type: Boolean, reflect: true })\n], DhSection.prototype, \"collapsible\", 2);\n__decorateClass$4([\n  property({ type: Boolean, reflect: true })\n], DhSection.prototype, \"collapsed\", 2);\nDhSection = __decorateClass$4([\n  customElement(\"dh-section\")\n], DhSection);\n\nvar style$3 = \":host {\\n  display: block;\\n  width: 100%;\\n}\\n\\n#root {\\n  display: block;\\n  width: 100%;\\n}\\n\\n#textarea {\\n  width: 100%;\\n  min-height: 60px;\\n  font: inherit;\\n  resize: vertical;\\n  box-sizing: border-box;\\n}\";\n\nvar __defProp$3 = Object.defineProperty;\nvar __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$3 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$3(target, key, result);\n  return result;\n};\nlet DhTextarea = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.value = \"\";\n    this.placeholder = \"\";\n    this.disabled = false;\n    this.readonly = false;\n    this.rows = 3;\n    this.onInput = (event2) => {\n      event2.stopPropagation();\n      const target = event2.target;\n      this.value = target.value;\n      this.changeEvent.dispatch(this.value);\n    };\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-textarea\")) {\n      this.setAttribute(\"dh-textarea\", \"\");\n    }\n  }\n  render() {\n    return html`\n      <div id=\"root\" part=\"root\">\n        <textarea\n          id=\"textarea\"\n          part=\"input\"\n          rows=\"${this.rows}\"\n          placeholder=\"${this.placeholder}\"\n          ?disabled=\"${this.disabled}\"\n          ?readonly=\"${this.readonly}\"\n          .value=\"${this.value}\"\n          @input=\"${this.onInput}\"\n        ></textarea>\n      </div>\n    `;\n  }\n  getInputValue() {\n    return this.textarea?.value ?? this.value;\n  }\n  setInputValue(value) {\n    this.value = value;\n    if (this.textarea) {\n      this.textarea.value = value;\n    }\n  }\n};\nDhTextarea.styles = css`\n    ${unsafeCSS(style$3)}\n  `;\n__decorateClass$3([\n  property({ type: String, reflect: true })\n], DhTextarea.prototype, \"value\", 2);\n__decorateClass$3([\n  property({ type: String, reflect: true })\n], DhTextarea.prototype, \"placeholder\", 2);\n__decorateClass$3([\n  property({ type: Boolean, reflect: true })\n], DhTextarea.prototype, \"disabled\", 2);\n__decorateClass$3([\n  property({ type: Boolean, reflect: true })\n], DhTextarea.prototype, \"readonly\", 2);\n__decorateClass$3([\n  property({ type: Number, reflect: true })\n], DhTextarea.prototype, \"rows\", 2);\n__decorateClass$3([\n  query(\"#textarea\")\n], DhTextarea.prototype, \"textarea\", 2);\n__decorateClass$3([\n  event({ bubbles: true, cancelable: true, composed: true }, \"isChange\")\n], DhTextarea.prototype, \"changeEvent\", 2);\nDhTextarea = __decorateClass$3([\n  customElement(\"dh-textarea\")\n], DhTextarea);\n\nvar style$2 = \":host {\\n  display: block;\\n  width: 100%;\\n}\\n\\n#root {\\n  display: flex;\\n  align-items: center;\\n  gap: 0.375rem;\\n}\\n\\ndh-input {\\n  width: 60px;\\n  flex: 0 0 auto;\\n}\\n\\n#preview {\\n  width: 32px;\\n  height: 32px;\\n  border-radius: 4px;\\n  flex-shrink: 0;\\n}\\n\\n:host([mode=extended]) {\\n  width: fit-content;\\n}\\n\\n:host([mode=extended]) #root {\\n  display: flex;\\n  flex-direction: column;\\n  align-items: stretch;\\n  gap: 0.875rem;\\n}\\n\\n:host([mode=extended]) #body {\\n  display: flex;\\n  gap: 0.875rem;\\n  align-items: stretch;\\n}\\n\\n:host([mode=extended]) #area {\\n  position: relative;\\n  box-sizing: border-box;\\n  flex: 0 0 auto;\\n  width: var(--dh-color-picker-area-width, 220px);\\n  height: var(--dh-color-picker-area-height, 180px);\\n  cursor: pointer;\\n  touch-action: none;\\n  background-image: linear-gradient(to top, #000, rgba(0, 0, 0, 0)), linear-gradient(to right, #fff, rgba(255, 255, 255, 0));\\n}\\n\\n:host([mode=extended]) #area-thumb {\\n  position: absolute;\\n  z-index: 1;\\n  box-sizing: border-box;\\n  transform: translate(-50%, -50%);\\n  pointer-events: none;\\n  width: var(--dh-color-picker-thumb-size, 18px);\\n  height: var(--dh-color-picker-thumb-size, 18px);\\n}\\n\\n:host([mode=extended]) #hue {\\n  position: relative;\\n  box-sizing: border-box;\\n  flex: 0 0 auto;\\n  width: var(--dh-color-picker-hue-width, 14px);\\n  cursor: pointer;\\n  touch-action: none;\\n  background: linear-gradient(to bottom, #f00 0%, #ff0 16.66%, #0f0 33.33%, #0ff 50%, #00f 66.66%, #f0f 83.33%, #f00 100%);\\n}\\n\\n:host([mode=extended]) #hue-thumb {\\n  position: absolute;\\n  box-sizing: border-box;\\n  left: 50%;\\n  transform: translate(-50%, -50%);\\n  pointer-events: none;\\n  width: var(--dh-color-picker-hue-thumb-size, 18px);\\n  height: var(--dh-color-picker-hue-thumb-size, 18px);\\n}\\n\\n:host([mode=extended]) #controls {\\n  display: flex;\\n  flex-direction: column;\\n  gap: 0.5rem;\\n}\\n\\n:host([mode=extended]) .controls-top {\\n  display: flex;\\n  align-items: center;\\n  gap: 0.5rem;\\n}\\n\\n:host([mode=extended]) .controls-rgb {\\n  display: flex;\\n  gap: 0.5rem;\\n}\\n\\n:host([mode=extended]) #preview {\\n  box-sizing: border-box;\\n  flex: 0 0 auto;\\n  width: var(--dh-color-picker-preview-size, 36px);\\n  height: var(--dh-color-picker-preview-size, 36px);\\n}\\n\\n:host([mode=extended]) .controls-rgb dh-input {\\n  flex: 1 1 0;\\n  min-width: 0;\\n}\\n\\n:host([mode=extended]) .controls-top dh-input {\\n  flex: 1 1 auto;\\n  min-width: 0;\\n}\";\n\nfunction clamp(value, min, max) {\n  return Math.min(max, Math.max(min, value));\n}\n\nfunction rgbToHsv(red, green, blue) {\n  const redNorm = red / 255;\n  const greenNorm = green / 255;\n  const blueNorm = blue / 255;\n  const max = Math.max(redNorm, greenNorm, blueNorm);\n  const min = Math.min(redNorm, greenNorm, blueNorm);\n  const delta = max - min;\n  let hue = 0;\n  if (delta !== 0) {\n    if (max === redNorm) {\n      hue = 60 * ((greenNorm - blueNorm) / delta % 6);\n    } else if (max === greenNorm) {\n      hue = 60 * ((blueNorm - redNorm) / delta + 2);\n    } else {\n      hue = 60 * ((redNorm - greenNorm) / delta + 4);\n    }\n  }\n  if (hue < 0) {\n    hue += 360;\n  }\n  const saturation = max === 0 ? 0 : delta / max;\n  return { hue, saturation, value: max };\n}\nfunction hsvToRgb(hue, saturation, value) {\n  const chroma = value * saturation;\n  const x = chroma * (1 - Math.abs(hue / 60 % 2 - 1));\n  const m = value - chroma;\n  let redNorm = 0;\n  let greenNorm = 0;\n  let blueNorm = 0;\n  if (hue < 60) {\n    redNorm = chroma;\n    greenNorm = x;\n  } else if (hue < 120) {\n    redNorm = x;\n    greenNorm = chroma;\n  } else if (hue < 180) {\n    greenNorm = chroma;\n    blueNorm = x;\n  } else if (hue < 240) {\n    greenNorm = x;\n    blueNorm = chroma;\n  } else if (hue < 300) {\n    redNorm = x;\n    blueNorm = chroma;\n  } else {\n    redNorm = chroma;\n    blueNorm = x;\n  }\n  return {\n    red: Math.round((redNorm + m) * 255),\n    green: Math.round((greenNorm + m) * 255),\n    blue: Math.round((blueNorm + m) * 255)\n  };\n}\nfunction rgbToHex(red, green, blue) {\n  const toHex = (channel) => clamp(Math.round(channel), 0, 255).toString(16).padStart(2, \"0\");\n  return `#${toHex(red)}${toHex(green)}${toHex(blue)}`;\n}\nfunction parseHex(input) {\n  const cleaned = input.trim().replace(/^#/, \"\");\n  let hex = cleaned;\n  if (/^[0-9a-fA-F]{3}$/.test(cleaned)) {\n    hex = cleaned.split(\"\").map((char) => char + char).join(\"\");\n  }\n  if (!/^[0-9a-fA-F]{6}$/.test(hex)) {\n    return null;\n  }\n  return {\n    red: parseInt(hex.slice(0, 2), 16),\n    green: parseInt(hex.slice(2, 4), 16),\n    blue: parseInt(hex.slice(4, 6), 16)\n  };\n}\n\nvar __defProp$2 = Object.defineProperty;\nvar __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$2 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$2(target, key, result);\n  return result;\n};\nlet DhColorPicker = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.red = 0;\n    this.green = 0;\n    this.blue = 0;\n    this.disabled = false;\n    this.mode = \"preview\";\n    this.hsvHue = 0;\n    this.hsvSaturation = 0;\n    this.hsvValue = 0;\n    this.activeDrag = null;\n    this.onAreaPointerDown = (pointerEvent) => {\n      if (this.disabled) {\n        return;\n      }\n      pointerEvent.preventDefault();\n      this.activeDrag = \"area\";\n      this.updateAreaFromPointer(pointerEvent);\n      document.addEventListener(\"pointermove\", this.onPointerMove);\n      document.addEventListener(\"pointerup\", this.onPointerUp);\n    };\n    this.onHuePointerDown = (pointerEvent) => {\n      if (this.disabled) {\n        return;\n      }\n      pointerEvent.preventDefault();\n      this.activeDrag = \"hue\";\n      this.updateHueFromPointer(pointerEvent);\n      document.addEventListener(\"pointermove\", this.onPointerMove);\n      document.addEventListener(\"pointerup\", this.onPointerUp);\n    };\n    this.onPointerMove = (pointerEvent) => {\n      if (this.activeDrag === \"area\") {\n        this.updateAreaFromPointer(pointerEvent);\n      } else if (this.activeDrag === \"hue\") {\n        this.updateHueFromPointer(pointerEvent);\n      }\n    };\n    this.onPointerUp = () => {\n      this.stopDrag();\n    };\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-color-picker\")) {\n      this.setAttribute(\"dh-color-picker\", \"\");\n    }\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    this.stopDrag();\n  }\n  // RGB ist die oeffentliche Quelle der Wahrheit. Aendert sich RGB von aussen\n  // (oder durch die R/G/B-/HEX-Eingaben), wird das HSV-Modell neu abgeleitet.\n  // Damit das Ziehen den Hue nicht verliert, resynchronisieren wir nur, wenn\n  // das aktuelle HSV-Modell NICHT bereits genau dieses RGB erzeugt — und der\n  // Hue wird bei achromatischen Farben (Schwarz/Weiss/Grau) beibehalten.\n  willUpdate(changedProperties) {\n    if (changedProperties.has(\"red\") || changedProperties.has(\"green\") || changedProperties.has(\"blue\")) {\n      const current = hsvToRgb(this.hsvHue, this.hsvSaturation, this.hsvValue);\n      if (current.red !== this.red || current.green !== this.green || current.blue !== this.blue) {\n        const hsv = rgbToHsv(this.red, this.green, this.blue);\n        this.hsvSaturation = hsv.saturation;\n        this.hsvValue = hsv.value;\n        if (hsv.saturation > 0 && hsv.value > 0) {\n          this.hsvHue = hsv.hue;\n        }\n      }\n    }\n  }\n  render() {\n    if (this.mode === \"extended\") {\n      return this.renderExtended();\n    }\n    return this.renderPreview();\n  }\n  // Unveraenderter Preview-Modus (frueher \"simple\") — gleiches Markup/Verhalten wie bisher.\n  renderPreview() {\n    return html`\n      <div id=\"root\" part=\"root\">\n        <dh-input\n          id=\"red\"\n          type=\"number\"\n          min=\"0\"\n          max=\"255\"\n          value=\"${this.red}\"\n          ?disabled=\"${this.disabled}\"\n          @input=\"${this.onChannelInput}\"\n        ></dh-input>\n        <dh-input\n          id=\"green\"\n          type=\"number\"\n          min=\"0\"\n          max=\"255\"\n          value=\"${this.green}\"\n          ?disabled=\"${this.disabled}\"\n          @input=\"${this.onChannelInput}\"\n        ></dh-input>\n        <dh-input\n          id=\"blue\"\n          type=\"number\"\n          min=\"0\"\n          max=\"255\"\n          value=\"${this.blue}\"\n          ?disabled=\"${this.disabled}\"\n          @input=\"${this.onChannelInput}\"\n        ></dh-input>\n        <div id=\"preview\" part=\"preview\" style=\"background-color: rgb(${this.red}, ${this.green}, ${this.blue});\"></div>\n      </div>\n    `;\n  }\n  renderExtended() {\n    const hex = rgbToHex(this.red, this.green, this.blue);\n    const thumbTabIndex = this.disabled ? -1 : 0;\n    const inputExportParts = \"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\";\n    const currentColor = `rgb(${this.red}, ${this.green}, ${this.blue})`;\n    const hueColor = `hsl(${this.hsvHue}, 100%, 50%)`;\n    return html`\n      <div id=\"root\" part=\"root\">\n        <div id=\"body\" part=\"body\">\n          <div id=\"area\" part=\"area\" style=\"background-color: ${hueColor};\" @pointerdown=\"${this.onAreaPointerDown}\">\n            <div\n              id=\"area-thumb\"\n              part=\"area-thumb\"\n              style=\"left: ${this.hsvSaturation * 100}%; top: ${(1 - this.hsvValue) * 100}%; background-color: ${currentColor};\"\n              role=\"slider\"\n              tabindex=\"${thumbTabIndex}\"\n              aria-label=\"Sättigung und Helligkeit\"\n              aria-valuetext=\"${hex}\"\n              @keydown=\"${this.onAreaKeyDown}\"\n            ></div>\n          </div>\n          <div id=\"hue\" part=\"hue\" @pointerdown=\"${this.onHuePointerDown}\">\n            <div\n              id=\"hue-thumb\"\n              part=\"hue-thumb\"\n              style=\"top: ${this.hsvHue / 360 * 100}%; background-color: ${hueColor};\"\n              role=\"slider\"\n              tabindex=\"${thumbTabIndex}\"\n              aria-label=\"Farbton\"\n              aria-valuemin=\"0\"\n              aria-valuemax=\"360\"\n              aria-valuenow=\"${Math.round(this.hsvHue)}\"\n              @keydown=\"${this.onHueKeyDown}\"\n            ></div>\n          </div>\n        </div>\n        <div id=\"controls\" part=\"controls\">\n          <div class=\"controls-top\">\n            <div id=\"preview\" part=\"preview\" style=\"background-color: ${currentColor};\"></div>\n            <dh-input\n              id=\"hex\"\n              class=\"hex\"\n              type=\"text\"\n              placeholder=\"HEX\"\n              value=\"${hex}\"\n              ?disabled=\"${this.disabled}\"\n              exportparts=\"${inputExportParts}\"\n              @input=\"${this.onHexInput}\"\n            ></dh-input>\n          </div>\n          <div class=\"controls-rgb\">${this.renderChannelInput(\"red\", \"R\")} ${this.renderChannelInput(\"green\", \"G\")} ${this.renderChannelInput(\"blue\", \"B\")}</div>\n        </div>\n      </div>\n    `;\n  }\n  renderChannelInput(channel, label) {\n    const inputExportParts = \"root: dh-input-root, input: dh-input-input, label: dh-input-label, supporting-text: dh-input-supporting-text\";\n    return html`<dh-input\n      id=\"${channel}\"\n      class=\"channel\"\n      type=\"number\"\n      min=\"0\"\n      max=\"255\"\n      placeholder=\"${label}\"\n      value=\"${this[channel]}\"\n      ?disabled=\"${this.disabled}\"\n      exportparts=\"${inputExportParts}\"\n      @input=\"${this.onChannelInput}\"\n    ></dh-input>`;\n  }\n  onChannelInput(inputEvent) {\n    inputEvent.stopPropagation();\n    const inputElement = inputEvent.target;\n    const channel = inputElement.id;\n    if (channel !== \"red\" && channel !== \"green\" && channel !== \"blue\") {\n      return;\n    }\n    const rawValue = parseInt(inputElement.value, 10);\n    const clampedValue = Number.isNaN(rawValue) ? 0 : clamp(rawValue, 0, 255);\n    this[channel] = clampedValue;\n    this.colorChange.dispatch({ red: this.red, green: this.green, blue: this.blue });\n  }\n  onHexInput(inputEvent) {\n    inputEvent.stopPropagation();\n    const inputElement = inputEvent.target;\n    const parsed = parseHex(inputElement.value);\n    if (!parsed) {\n      return;\n    }\n    this.red = parsed.red;\n    this.green = parsed.green;\n    this.blue = parsed.blue;\n    this.colorChange.dispatch({ red: this.red, green: this.green, blue: this.blue });\n  }\n  stopDrag() {\n    this.activeDrag = null;\n    document.removeEventListener(\"pointermove\", this.onPointerMove);\n    document.removeEventListener(\"pointerup\", this.onPointerUp);\n  }\n  updateAreaFromPointer(pointerEvent) {\n    if (!this.areaElement) {\n      return;\n    }\n    const rect = this.areaElement.getBoundingClientRect();\n    this.hsvSaturation = clamp((pointerEvent.clientX - rect.left) / rect.width, 0, 1);\n    this.hsvValue = 1 - clamp((pointerEvent.clientY - rect.top) / rect.height, 0, 1);\n    this.commitHsv();\n  }\n  updateHueFromPointer(pointerEvent) {\n    if (!this.hueElement) {\n      return;\n    }\n    const rect = this.hueElement.getBoundingClientRect();\n    this.hsvHue = clamp((pointerEvent.clientY - rect.top) / rect.height, 0, 1) * 360;\n    this.commitHsv();\n  }\n  onAreaKeyDown(keyboardEvent) {\n    if (this.disabled) {\n      return;\n    }\n    const step = keyboardEvent.shiftKey ? 0.1 : 0.01;\n    let handled = true;\n    switch (keyboardEvent.key) {\n      case \"ArrowLeft\":\n        this.hsvSaturation = clamp(this.hsvSaturation - step, 0, 1);\n        break;\n      case \"ArrowRight\":\n        this.hsvSaturation = clamp(this.hsvSaturation + step, 0, 1);\n        break;\n      case \"ArrowUp\":\n        this.hsvValue = clamp(this.hsvValue + step, 0, 1);\n        break;\n      case \"ArrowDown\":\n        this.hsvValue = clamp(this.hsvValue - step, 0, 1);\n        break;\n      default:\n        handled = false;\n    }\n    if (handled) {\n      keyboardEvent.preventDefault();\n      this.commitHsv();\n    }\n  }\n  onHueKeyDown(keyboardEvent) {\n    if (this.disabled) {\n      return;\n    }\n    const step = keyboardEvent.shiftKey ? 10 : 1;\n    let handled = true;\n    switch (keyboardEvent.key) {\n      case \"ArrowUp\":\n      case \"ArrowLeft\":\n        this.hsvHue = clamp(this.hsvHue - step, 0, 360);\n        break;\n      case \"ArrowDown\":\n      case \"ArrowRight\":\n        this.hsvHue = clamp(this.hsvHue + step, 0, 360);\n        break;\n      default:\n        handled = false;\n    }\n    if (handled) {\n      keyboardEvent.preventDefault();\n      this.commitHsv();\n    }\n  }\n  commitHsv() {\n    const rgb = hsvToRgb(this.hsvHue, this.hsvSaturation, this.hsvValue);\n    this.red = rgb.red;\n    this.green = rgb.green;\n    this.blue = rgb.blue;\n    this.colorChange.dispatch({ red: this.red, green: this.green, blue: this.blue });\n  }\n};\nDhColorPicker.styles = css`\n    ${unsafeCSS(style$2)}\n  `;\n__decorateClass$2([\n  property({ type: Number, reflect: true })\n], DhColorPicker.prototype, \"red\", 2);\n__decorateClass$2([\n  property({ type: Number, reflect: true })\n], DhColorPicker.prototype, \"green\", 2);\n__decorateClass$2([\n  property({ type: Number, reflect: true })\n], DhColorPicker.prototype, \"blue\", 2);\n__decorateClass$2([\n  property({ type: Boolean, reflect: true })\n], DhColorPicker.prototype, \"disabled\", 2);\n__decorateClass$2([\n  property({ type: String, reflect: true })\n], DhColorPicker.prototype, \"mode\", 2);\n__decorateClass$2([\n  state()\n], DhColorPicker.prototype, \"hsvHue\", 2);\n__decorateClass$2([\n  state()\n], DhColorPicker.prototype, \"hsvSaturation\", 2);\n__decorateClass$2([\n  state()\n], DhColorPicker.prototype, \"hsvValue\", 2);\n__decorateClass$2([\n  query(\"#area\")\n], DhColorPicker.prototype, \"areaElement\", 2);\n__decorateClass$2([\n  query(\"#hue\")\n], DhColorPicker.prototype, \"hueElement\", 2);\n__decorateClass$2([\n  event({ bubbles: true, cancelable: true, composed: true }, \"colorChange\")\n], DhColorPicker.prototype, \"colorChange\", 2);\nDhColorPicker = __decorateClass$2([\n  customElement(\"dh-color-picker\")\n], DhColorPicker);\n\nvar style$1 = \".cross-x {\\n  position: relative;\\n  width: 60px;\\n  height: 60px;\\n  transition: 0.5s;\\n  cursor: pointer;\\n}\\n.cross-x .line {\\n  position: absolute;\\n  height: 8px;\\n  width: 60px;\\n  left: 50%;\\n  top: 50%;\\n  transform: translate(-50%, -50%);\\n  background-color: currentColor;\\n  transition: 0.5s;\\n}\\n.cross-x .line-1 {\\n  transform: translate(-50%, calc(-50% - 20px));\\n}\\n.cross-x .line-2 {\\n  transform: translate(-50%, -50%);\\n}\\n.cross-x .line-3 {\\n  transform: translate(-50%, calc(-50% + 20px));\\n}\\n.cross-x.open .line-2 {\\n  opacity: 0;\\n}\\n.cross-x.open .line-1 {\\n  transform: translate(-50%, -50%) rotate(45deg) scaleX(1.25);\\n}\\n.cross-x.open .line-3 {\\n  transform: translate(-50%, -50%) rotate(-45deg) scaleX(1.25);\\n}\\n\\n.arrow-left {\\n  position: relative;\\n  width: 60px;\\n  height: 60px;\\n  transition: 0.5s;\\n  cursor: pointer;\\n}\\n.arrow-left .line {\\n  position: absolute;\\n  height: 8px;\\n  width: 60px;\\n  left: 50%;\\n  top: 50%;\\n  transform: translate(-50%, -50%);\\n  background-color: currentColor;\\n  transition: 0.5s;\\n}\\n.arrow-left .line-1 {\\n  transform: translate(-50%, calc(-50% - 20px));\\n}\\n.arrow-left .line-2 {\\n  transform: translate(-50%, -50%);\\n}\\n.arrow-left .line-3 {\\n  transform: translate(-50%, calc(-50% + 20px));\\n}\\n.arrow-left.open .line-1 {\\n  transform: translate(-50%, -50%) rotate(-45deg) scaleX(0.75) translate(-2px, -20px);\\n}\\n.arrow-left.open .line-3 {\\n  transform: translate(-50%, -50%) rotate(45deg) scaleX(0.75) translate(-2px, 20px);\\n}\\n\\n.arrow-right {\\n  position: relative;\\n  width: 60px;\\n  height: 60px;\\n  transition: 0.5s;\\n  cursor: pointer;\\n}\\n.arrow-right .line {\\n  position: absolute;\\n  height: 8px;\\n  width: 60px;\\n  left: 50%;\\n  top: 50%;\\n  transform: translate(-50%, -50%);\\n  background-color: currentColor;\\n  transition: 0.5s;\\n}\\n.arrow-right .line-1 {\\n  transform: translate(-50%, calc(-50% - 20px));\\n}\\n.arrow-right .line-2 {\\n  transform: translate(-50%, -50%);\\n}\\n.arrow-right .line-3 {\\n  transform: translate(-50%, calc(-50% + 20px));\\n}\\n.arrow-right.open .line-1 {\\n  transform: translate(-50%, -50%) rotate(45deg) scaleX(0.75) translate(2px, -20px);\\n}\\n.arrow-right.open .line-3 {\\n  transform: translate(-50%, -50%) rotate(-45deg) scaleX(0.75) translate(2px, 20px);\\n}\\n\\n.arrow-spin-left {\\n  position: relative;\\n  width: 60px;\\n  height: 60px;\\n  transition: 0.5s;\\n  cursor: pointer;\\n}\\n.arrow-spin-left .line {\\n  position: absolute;\\n  height: 8px;\\n  width: 60px;\\n  left: 50%;\\n  top: 50%;\\n  transform: translate(-50%, -50%);\\n  background-color: currentColor;\\n  transition: 0.5s;\\n}\\n.arrow-spin-left .line-1 {\\n  transform: translate(-50%, calc(-50% - 20px));\\n}\\n.arrow-spin-left .line-2 {\\n  transform: translate(-50%, -50%);\\n}\\n.arrow-spin-left .line-3 {\\n  transform: translate(-50%, calc(-50% + 20px));\\n}\\n.arrow-spin-left.open {\\n  transition-duration: 0.5s;\\n  transform: rotateZ(180deg);\\n}\\n.arrow-spin-left.open .line-1 {\\n  transform: translate(-50%, -50%) rotate(45deg) scaleX(0.75) translate(2px, -20px);\\n}\\n.arrow-spin-left.open .line-3 {\\n  transform: translate(-50%, -50%) rotate(-45deg) scaleX(0.75) translate(2px, 20px);\\n}\\n\\n.arrow-spin-right {\\n  position: relative;\\n  width: 60px;\\n  height: 60px;\\n  transition: 0.5s;\\n  cursor: pointer;\\n}\\n.arrow-spin-right .line {\\n  position: absolute;\\n  height: 8px;\\n  width: 60px;\\n  left: 50%;\\n  top: 50%;\\n  transform: translate(-50%, -50%);\\n  background-color: currentColor;\\n  transition: 0.5s;\\n}\\n.arrow-spin-right .line-1 {\\n  transform: translate(-50%, calc(-50% - 20px));\\n}\\n.arrow-spin-right .line-2 {\\n  transform: translate(-50%, -50%);\\n}\\n.arrow-spin-right .line-3 {\\n  transform: translate(-50%, calc(-50% + 20px));\\n}\\n.arrow-spin-right.open {\\n  transition-duration: 0.5s;\\n  transform: rotateZ(180deg);\\n}\\n.arrow-spin-right.open .line-1 {\\n  transform: translate(-50%, -50%) rotate(-45deg) scaleX(0.75) translate(-2px, -20px);\\n}\\n.arrow-spin-right.open .line-3 {\\n  transform: translate(-50%, -50%) rotate(45deg) scaleX(0.75) translate(-2px, 20px);\\n}\\n\\n:host {\\n  display: flex;\\n}\";\n\nvar __defProp$1 = Object.defineProperty;\nvar __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;\nvar __decorateClass$1 = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$1(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp$1(target, key, result);\n  return result;\n};\nlet DhSidebarButton = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.open = false;\n    this.btnVariant = \"cross-x\";\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-sidebar-button\")) {\n      this.setAttribute(\"dh-sidebar-button\", \"\");\n    }\n  }\n  toggle() {\n    this.open = !this.open;\n    this.sidebarBtnOpen.dispatch({ open: this.open });\n  }\n  render() {\n    const btnCo = {\n      open: this.open\n    };\n    btnCo[this.btnVariant] = true;\n    return html`\n      <div class=\"${classMap(btnCo)}\" part=\"root\" @click=\"${this.toggle}\">\n        <div class=\"line line-1\" part=\"icon\"></div>\n        <div class=\"line line-2\" part=\"icon\"></div>\n        <div class=\"line line-3\" part=\"icon\"></div>\n      </div>\n    `;\n  }\n};\nDhSidebarButton.styles = css`\n    ${unsafeCSS(style$1)},\n  `;\n__decorateClass$1([\n  property({ type: Boolean, attribute: \"open\", reflect: true })\n], DhSidebarButton.prototype, \"open\", 2);\n__decorateClass$1([\n  property({ type: String, attribute: \"button-variant\", reflect: true })\n], DhSidebarButton.prototype, \"btnVariant\", 2);\n__decorateClass$1([\n  event({ bubbles: true, cancelable: true, composed: true }, \"sidebarBtnOpen\")\n], DhSidebarButton.prototype, \"sidebarBtnOpen\", 2);\nDhSidebarButton = __decorateClass$1([\n  customElement(\"dh-sidebar-button\")\n], DhSidebarButton);\n\nvar style = \":host {\\n  display: block;\\n}\";\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n  for (var i = decorators.length - 1, decorator; i >= 0; i--)\n    if (decorator = decorators[i])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp(target, key, result);\n  return result;\n};\nlet DhSidebar = class extends LitElement {\n  constructor() {\n    super(...arguments);\n    this.open = false;\n    this.btnVariant = \"cross-x\";\n  }\n  connectedCallback() {\n    super.connectedCallback();\n    if (!this.hasAttribute(\"dh-sidebar\")) {\n      this.setAttribute(\"dh-sidebar\", \"\");\n    }\n  }\n  toggleSidebar() {\n    this.open = !this.open;\n    if (this.open) {\n      this.menuContainer.classList.remove(\"hidden\");\n    } else {\n      this.menuContainer.classList.add(\"hidden\");\n    }\n    this.sidebarOpen.dispatch({ open: this.open });\n  }\n  render() {\n    return html`\n      <div part=\"trigger\">\n        <dh-sidebar-button\n          ?open=\"${this.open}\"\n          button-variant=\"${this.btnVariant}\"\n          @click=\"${this.toggleSidebar}\"\n          exportparts=\"root: trigger-root, icon: trigger-icon\"\n        ></dh-sidebar-button>\n      </div>\n      <div id=\"menu-container\" part=\"content\" class=\"hidden\">\n        <slot name=\"menu-slot\"></slot>\n      </div>\n    `;\n  }\n};\nDhSidebar.styles = css`\n    ${unsafeCSS(style)}\n  `;\n__decorateClass([\n  property({ type: Boolean, attribute: \"open\", reflect: true })\n], DhSidebar.prototype, \"open\", 2);\n__decorateClass([\n  property({ type: String, attribute: \"button-variant\", reflect: true })\n], DhSidebar.prototype, \"btnVariant\", 2);\n__decorateClass([\n  query(\"#menu-container\")\n], DhSidebar.prototype, \"menuContainer\", 2);\n__decorateClass([\n  event({ bubbles: true, cancelable: true, composed: true }, \"sidebarOpen\")\n], DhSidebar.prototype, \"sidebarOpen\", 2);\nDhSidebar = __decorateClass([\n  customElement(\"dh-sidebar\")\n], DhSidebar);\n\nfunction convertCsvToArray(csv, valueSeparator) {\n  let rowStrings = csv.split(\"\\r\\n\");\n  if (rowStrings.length <= 1) {\n    rowStrings = csv.split(\"\\r\");\n    if (rowStrings.length <= 1) {\n      rowStrings = csv.split(\"\\n\");\n    }\n  }\n  const rowArrays = [];\n  rowStrings.forEach((rowString) => {\n    const cleanRow = parseCSVLine(rowString);\n    if (cleanRow?.length > 0) {\n      rowArrays.push(cleanRow);\n    }\n  });\n  const headerRow = rowArrays[0];\n  const cleanHeaderRow = [];\n  headerRow.forEach((header) => {\n    if (header) {\n      cleanHeaderRow.push(header);\n    }\n  });\n  const rows = rowArrays.slice(1, rowArrays.length);\n  rows.forEach((row) => {\n    row.splice(cleanHeaderRow.length, row.length - 1);\n  });\n  return { header: cleanHeaderRow, rows };\n}\nfunction parseCSVLine(line) {\n  const result = [];\n  const regex = /(?:^|;)(?:\"((?:[^\"]|\"\")*)\"|([^\";]*))/g;\n  let match;\n  let lastIndex = 0;\n  if (line.length <= 0) {\n    return [];\n  }\n  while ((match = regex.exec(line)) !== null) {\n    if (match[1] !== void 0) {\n      result.push(match[1].replace(/\"\"/g, '\"'));\n    } else {\n      result.push(match[2]);\n    }\n    lastIndex = regex.lastIndex;\n  }\n  if (lastIndex < line.length || line.endsWith(\";\")) {\n    result.push(\"\");\n  }\n  return result;\n}\n\ninjectStylesheets(true);\n\nexport { DhButton, DhCard, DhCardGrid, DhCheckbox, DhColorPicker, DhDimmer, DhFormField, DhFormGrid, DhGridItem, DhInfobox, DhInfoboxController, DhInput, DhListItem, DhMainbar, DhMergeDialog, DhMergeDialogPage, DhMovableWindow, DhMultiSelectbox, DhMultiSelectboxItem, DhProgressAnimation, DhRadio, DhSection, DhSelect, DhSettingItem, DhSettingsGrid, DhSidebar, DhSidebarButton, DhSnackbar, DhTab, DhTable, DhTableBodyCell, DhTableBodyCellOld, DhTableHeadCell, DhTableHeadCellOld, DhTableOld, DhTableRow, DhTableRowOld, DhTextarea, DhTree, DhTreeItem, DhWindow, TableRowArray, clamp, convertCsvToArray, findClosestElement, hsvToRgb, parseHex, rgbToHex, rgbToHsv };\n","let isProduction = true;\ntry {\n  isProduction = process.env.NODE_ENV === \"production\";\n} catch {\n}\n\nexport { isProduction };\n","import { isProduction } from \"@dh-software/env\";\n\nif (isProduction) {\n    console.log = () => { /* silenced */ };\n    console.debug = () => { /* silenced */ };\n    console.info = () => { /* silenced */ };\n}\n","import {FetchResult} from \"../models/card-container\";\nimport {AsyncBaseElement, FetchParameters} from \"../components/standard/base/async.base.component\";\nimport {LitElement} from \"lit\";\nimport {BaseElement, DhElement, IBaseElement} from \"../components/standard/base/base.component\";\n\nexport interface ComponentServiceSearchParams {\n    tag: string,\n    query?: string\n}\n\nclass ComponentServiceClass<T extends DhElement> {\n    private readonly _components: Map<string, Array<T>>;\n\n    constructor() {\n        this._components = new Map<string, Array<T>>();\n    }\n\n    private get(tagName: string): Array<T> {\n        const result = this._components.get(tagName.toUpperCase()) as T[];\n        return result !== undefined ? result : new Array<T>();\n    }\n\n    private valid(element: LitElement, query: string): boolean {\n        return element && element.matches(query);\n    }\n\n    private isElement(target_: HTMLElement): boolean {\n        for (const [key, value] of this._components) {\n            for (const element of value) {\n                if (element == target_) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    }\n\n    register(component: T) {\n        let elements = this.get(component.tagName);\n        if (elements == undefined) {\n            elements = new Array<T>();\n        }\n        if (elements.includes(component) == false) {\n            elements.push(component);\n        }\n        this._components.set(component.tagName.toUpperCase(), elements);\n    }\n\n    findAll(tagName: string, query = \"\"): Array<T> {\n        const elements = this.get(tagName);\n        if (query.length < 1) {\n            return elements;\n        }\n\n        const result = new Array<T>();\n        elements.forEach((element: T) => {\n            if (this.valid(element, query)) result.push(element);\n        });\n        return result;\n    }\n\n    find<K extends T = T>(tagName: string, query = \"\"): K | undefined {\n        const elements = this.get(tagName);\n        if (query.length < 1 && elements.length > 0) {\n            return elements[0] as K;\n        }\n        return elements.find((element: T) => {\n            if (element && element.matches(query)) {\n                return true;\n            }\n            return false;\n        }) as K;\n    }\n\n    findScrollableParent(element: HTMLElement | null): HTMLElement | undefined {\n        if (element == null) return undefined;\n\n        const computedStyle = getComputedStyle(element);\n        const overflow: string = computedStyle.getPropertyValue(\"overflow\");\n\n        // An element whose overflow is \"visible\" (the default) never establishes a scroll\n        // container — its content simply spills out, so scrollHeight > clientHeight does NOT mean\n        // the user can scroll it. Excluding \"visible\" here stops false positives such as\n        // fv-flex-container.article-selection (overflow: visible) being mistaken for the real\n        // scroll container (fv-scroll-aware-container, overflow: auto) that wraps it.\n        if ((element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth)\n            && !overflow.includes(\"hidden\") && !overflow.includes(\"visible\")) {\n            return element;\n        }\n\n        if (overflow.includes(\"auto\") || overflow.includes(\"scroll\")) {\n            return element;\n        }\n\n        const parent = this.getParent(element);\n        if (parent) {\n            return this.findScrollableParent(parent);\n        }\n        return undefined;\n    }\n\n    getParent(element: HTMLElement | undefined): HTMLElement | undefined {\n        if (element == undefined) return undefined;\n\n        if (element.assignedSlot) {\n            return this.getParent(element.assignedSlot);\n        }\n        if (element.parentElement) {\n            return element.parentElement as HTMLElement;\n        }\n        const shadowRoot = element.getRootNode() as ShadowRoot;\n        if (shadowRoot && shadowRoot.host) {\n            return shadowRoot.host as HTMLElement;\n        }\n        return undefined;\n    }\n\n    getParentComponent(element: HTMLElement | undefined): T | undefined {\n        const parent = this.getParent(element);\n        if (parent == undefined) return undefined;\n        if (this.isElement(parent)) return parent as T;\n        return this.getParentComponent(parent);\n    }\n\n    isPartOfHiddenSubtree(element: T | undefined): boolean {\n        if (element == undefined) return false;\n        if (element.hideElement) return true;\n        return this.isPartOfHiddenSubtree(this.getParentComponent(element));\n    }\n\n    doActionRecursiveOnChildren(element: T | HTMLElement | Element, action: (child: LitElement) => void) {\n        for (let index = 0; index < element.children.length; ++index) {\n            const child = element.children.item(index);\n            if (child) {\n                if (child instanceof LitElement) {\n                    action(child);\n                }\n                this.doActionRecursiveOnChildren(child, action);\n            }\n        }\n        if (element instanceof LitElement) {\n            if (element.renderRoot && element.renderRoot.children) {\n                for (let index = 0; index < element.renderRoot.children.length; ++index) {\n                    const child = element.renderRoot.children.item(index);\n                    if (child) {\n                        if (child instanceof LitElement) {\n                            action(child);\n                        }\n                        this.doActionRecursiveOnChildren(child as HTMLElement, action);\n                    }\n                }\n            }\n        }\n    }\n\n    getParentShadowRoot(startElement: Element, targetTagName: string) {\n        let currentElement = startElement;\n        while (currentElement) {\n            if (currentElement.tagName === targetTagName.toUpperCase()) {\n                return currentElement.shadowRoot;\n            }\n            const root = currentElement.getRootNode();\n            if (root instanceof ShadowRoot) {\n                currentElement = root.host;\n            } else {\n                currentElement = <Element>currentElement.parentElement;\n            }\n        }\n        return null;\n    }\n\n    async waitForAllChildren(element: AsyncBaseElement<FetchParameters, FetchResult> | T | HTMLElement | Element): Promise<void> {\n        if ((element as AsyncBaseElement<FetchParameters, FetchResult>).CheckFetchPromise) {\n            await (element as AsyncBaseElement<FetchParameters, FetchResult>).CheckFetchPromise();\n        }\n        if ((element as LitElement).updateComplete) {\n            await (element as LitElement).updateComplete;\n        }\n\n        for (let index = 0; index < element.children.length; ++index) {\n            const child = element.children.item(index);\n            if (child) {\n                await this.waitForAllChildren(child);\n            }\n        }\n        if (element instanceof LitElement) {\n            if (element.renderRoot && element.renderRoot.children) {\n                for (let index = 0; index < element.renderRoot.children.length; ++index) {\n                    const child = element.renderRoot.children.item(index);\n                    if (child) {\n                        await this.waitForAllChildren(child);\n                    }\n                }\n            }\n        }\n    }\n}\n\nexport const ComponentService = new ComponentServiceClass();\n","import { LitElement } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { ComponentService } from \"../../../utils/component.service\";\nimport { Constructor } from \"./mixin\";\n\nexport interface HideStateUpdatedEventData {\n    value: boolean,\n    \"parent-state-changed\": boolean\n}\nexport class HideStateUpdatedEvent extends CustomEvent<HideStateUpdatedEventData> {\n    constructor(data_: HideStateUpdatedEventData) {\n        super(\"hide-state-updated-event\", { detail: data_, bubbles: false });\n    }\n}\nexport type HideStateUpdatedEventInit = CustomEventInit<HideStateUpdatedEventData>;\n\nexport type HideableElement = {\n    hideElement: boolean;\n    hiddenClasses: string[];\n    dispatchHideStateUpdatedEvent(): void;\n    addHideStateUpdatedEventListener(event: (value: boolean, parentStateChanged: boolean) => void): () => void; //PH [2026|May|06] - added option to unsibscribe event\n    anyHiddenClassInArray(toCheck: string[]): boolean;\n};\n\nexport const HideMixin = <T extends Constructor<LitElement>>(Base: T): T & Constructor<HideableElement> => {\n    class HideMixinClass extends Base implements HideableElement {\n        @property({ type: Boolean, reflect: true, attribute: 'hide-element' })\n        public hideElement = false;\n\n        @property({ type: Array, reflect: true, attribute: 'hidden-classes' })\n        public hiddenClasses: string[] = ['hidden'];\n\n        public dispatchHideStateUpdatedEvent(): void {\n            this.dispatchEvent(\n                new HideStateUpdatedEvent({\n                    value: this.hideElement,\n                    'parent-state-changed': false\n                })\n            );\n\n            HideMixinClass.dispatchEventRecursiveToChildren(this, new HideStateUpdatedEvent({\n                value: this.hideElement,\n                'parent-state-changed': true\n            }));\n        }\n\n        public addHideStateUpdatedEventListener(callback: (value: boolean, parentStateChanged: boolean) => void): () => void {\n            const listener = (e: HideStateUpdatedEventInit) => {\n                if (e.detail?.value !== undefined && e.detail['parent-state-changed'] !== undefined) {\n                    callback(e.detail.value, e.detail['parent-state-changed']);\n                }\n            };\n            this.addEventListener('hide-state-updated-event', listener as EventListener);\n            return () => this.removeEventListener('hide-state-updated-event', listener as EventListener);\n        }\n\n        public anyHiddenClassInArray(toCheck: string[]): boolean {\n            return this.hiddenClasses.some(cls => toCheck.includes(cls));\n        }\n\n        public connectedCallback(): void {\n            super.connectedCallback?.();\n            const hasHiddenClass = this.hiddenClasses.some(cls => this.classList.contains(cls));\n            if (hasHiddenClass) {\n                this.hideElement = true;\n            }\n        }\n\n        public attributeChangedCallback(name: string, oldVal: string | null, newVal: string | null): void {\n            super.attributeChangedCallback?.(name, oldVal, newVal);\n\n            if (name === 'hidden-classes') {\n                if (oldVal != null) {\n                    const oldClasses = JSON.parse(oldVal);\n                    this.classList.remove(...oldClasses);\n                    if (this.hideElement) {\n                        this.classList.add(...this.hiddenClasses);\n                    }\n                }\n            }\n\n            if (name === 'hide-element') {\n                if (this.hideElement) {\n                    this.classList.add(...this.hiddenClasses);\n                    this.ariaHidden = 'true';\n                } else {\n                    this.classList.remove(...this.hiddenClasses);\n                    // this.inert = false;\n                    this.ariaHidden = null;\n                }\n\n                this.dispatchHideStateUpdatedEvent();\n            }\n            if (name === \"hide-element\") {\n                if (this.hideElement) {\n                    this.ariaHidden = \"true\";\n                } else {\n                    this.ariaHidden = null;\n                }\n            }\n        }\n\n\n        protected static dispatchEventRecursiveToChildren(element: HTMLElement, event: HideStateUpdatedEvent): void {\n            ComponentService.doActionRecursiveOnChildren(element, child => {\n                child.dispatchEvent(event);\n            });\n        }\n    }\n\n    return HideMixinClass as T & Constructor<HideableElement>;\n};\nexport const HideBaseElement = HideMixin(LitElement);\n","import { ComponentServiceSearchParams } from \"../../utils/component.service\";\n\ndeclare global {\n    export interface ComponentStates {}\n}\n\nexport interface StateEventTarget extends ComponentServiceSearchParams {\n    all?: boolean;\n}\n\nexport interface DispatchStatePayload<K extends keyof ComponentStates = keyof ComponentStates> {\n    state: K;\n    data: ComponentStates[K];\n    target?: StateEventTarget;\n}\n\nexport type ComponentStateKey = keyof ComponentStates;\n\nexport interface ComponentStateEventDetail<K extends ComponentStateKey> {\n    state: K;\n    data: ComponentStates[K];\n}\n\nexport interface ComponentStateEventInit<K extends ComponentStateKey> extends CustomEventInit {\n    detail?: ComponentStateEventDetail<K>;\n}\n\nexport class ComponentStateEvent<K extends ComponentStateKey> extends CustomEvent<ComponentStateEventDetail<K>> {\n    private readonly _pending: Promise<unknown>[] = [];\n\n    constructor(state: K, data: ComponentStates[K]) {\n        super(state as string, { detail: { state, data }, bubbles: false });\n    }\n\n    /** Register async work to be awaited by the dispatcher (ExtendableEvent-style). */\n    public waitUntil(p: Promise<unknown> | void | undefined): void {\n        if (p && typeof (p as Promise<unknown>).then === \"function\") {\n            this._pending.push(p as Promise<unknown>);\n        }\n    }\n\n    /** Settle all registered work. Never rejects (mirrors EventService.emitAsync). */\n    public whenSettled(): Promise<unknown> {\n        if (this._pending.length === 0) return Promise.resolve();\n        return Promise.allSettled(this._pending);\n    }\n}\n\nexport type ComponentStateHandler<K extends ComponentStateKey> =\n    (data: ComponentStates[K]) => void | Promise<void>;\n\nexport type ComponentStateHandlerMap = {\n    [K in ComponentStateKey]?: ComponentStateHandler<K>;\n};\n","import type { FormElementInfo, FormElementsWrapper } from \"../components/configurator/configurator.form.base\";\nimport {\n    ConfiguratorApiService,\n    EventService,\n    WebViewerService\n} from \"@dh-software/webui-api\";\nimport {\n    IConfiguratorApiData,\n    IConfiguratorApiDataGroup,\n    IConfiguratorApiDataGroupParams,\n    IConfiguratorApiDataInfoList,\n    IConfiguratorApiDataValue,\n    IConfiguratorApiValueModificationGroup\n} from \"@dh-software/webui-types\";\n\n\nexport class FormElementCounterStack {\n    private _counters: number[] = [];\n    private _maxIncrements = 0;\n\n    constructor(counters: number, maxIncrements: number) {\n        this._maxIncrements = maxIncrements;\n        if (typeof this._maxIncrements !== \"number\" || this._maxIncrements <= 0 || Math.floor(this._maxIncrements) !== this._maxIncrements) {\n            this._maxIncrements = 10;\n        }\n        if (typeof counters !== \"number\" || counters < 0) {\n            counters = 0;\n        }\n        for (var i = 0; i < counters; i++) {\n            this._counters.push(0);\n        }\n    }\n\n    public increment() {\n        if (this.size === 0) {\n            return false; // nothing to increment\n        }\n\n        var i;\n        var carry = 1;\n\n        // Loop from the rightmost (least significant) counter to the leftmost (most significant)\n        for (i = this.size - 1; i >= 0 && carry > 0; i--) {\n            this._counters[i] += carry;\n\n            if (this._counters[i] >= this._maxIncrements) {\n                this._counters[i] -= this._maxIncrements;\n                carry = 1;\n            } else {\n                carry = 0; // No carry needed from this position, so stop propagating\n            }\n        }\n\n        // If after the loop, 'carry' is still 1, it means the most significant counter overflowed.\n        // We need to add a new counter at the beginning (most significant position).\n        if (carry > 0) {\n            for (i = 0; i < this.size; i++) {\n                this._counters[i] = 0;\n            }\n            return false; // return false since increment failed and it overflowed\n        }\n        return true; // return true since increment completed sucessfully\n    }\n\n    public get(index_: number): number | undefined {\n        if (index_ > this.size) {\n            return undefined;\n        }\n        return this._counters[index_];\n    }\n    public getAll(): string {\n        return JSON.stringify(this._counters);\n    }\n\n    public get size(): number {\n        return this._counters.length;\n    }\n    public get empty(): boolean {\n        return this.size < 1;\n    }\n\n    public accumulateAfterIndex(index_: number): number {\n        let result = 0;\n        for (let index = index_; index < this.size; ++index) {\n            const counterValue = this.get(index);\n            if (counterValue != undefined) {\n                result += counterValue;\n            }\n        }\n        return result;\n    }\n\n    public get fullLoopCount(): number {\n        if (this.empty) {\n            return 1;// just loop once if nothing to count\n        }\n        return Math.pow(this._maxIncrements, this.size);\n    }\n}\n\nexport interface IConfiguratorApiFetchEventData {\n    promise: Promise<IConfiguratorApiData>\n}\n\nclass ConfiguratorApiDataServiceClass {\n    // EventFactoryService → ConfiguratorFormBase.Refresh hookups moved to\n    // configurator.form.base.ts to avoid the service ↔ component cycle.\n\n    private _data: IConfiguratorApiData = {};\n    private _groups: string[] = [];\n\n    private _dataRequestStateHolder: Promise<IConfiguratorApiData> | undefined = undefined;// seperate variable to toggle between promise and undefined to ensure DataPromise getter always returns the last request in case its data gets used somewhere\n    private _dataRequest: Promise<IConfiguratorApiData> | undefined = undefined;\n    public async Fetch(preventRefresh_?: boolean, preventRegenAll_?: boolean): Promise<IConfiguratorApiData> {\n        await WebViewerService.IsAppReady;\n\n        if (this._dataRequestStateHolder != undefined) {\n            return await this._dataRequestStateHolder;\n        }\n        this._dataRequest = ConfiguratorApiService.GetApiData(preventRefresh_, preventRegenAll_);// store request in case of multiple Fetch Calls!\n        this._dataRequestStateHolder = this._dataRequest;\n        this._data = await this._dataRequest;\n        this._dataRequestStateHolder = undefined;\n        return this._data;\n    }\n\n    public get DataPromise(): Promise<any> {\n        if (this._dataRequest == undefined) {\n            return Promise.resolve(this.Data);\n        }\n        return this._dataRequest;\n    }\n\n    public get Data() {\n        return this._data;\n    }\n    public set Data(data_: IConfiguratorApiData) {\n        this._data = data_;\n    }\n\n    public get Groups() {\n        this._groups = Object.keys(this._data);\n        return this._groups;\n    }\n\n    public get Valid(): boolean {\n        return !(this.Data == undefined || this.Groups.length < 1);\n    }\n\n    public GetGroup(group_: string, data_: IConfiguratorApiDataGroup | IConfiguratorApiData, groupReference_?: string): IConfiguratorApiDataGroup | { type: \"\" } {\n        if (groupReference_ != undefined && groupReference_ != \"\" && group_ != groupReference_) {\n            const levels = groupReference_.split(\"#\");\n            let _parentGroup: IConfiguratorApiData | IConfiguratorApiDataGroup = data_;\n            for (const level of levels) {\n                const group = _parentGroup[level];\n                if (group !== undefined && group !== \"list\" && group.type !== undefined && group.type == \"list\") {\n                    _parentGroup = group as IConfiguratorApiDataGroup;\n                }\n            }\n\n            const groups = Object.keys(_parentGroup);\n            if (!groups.includes(group_))\n            {\n                return { type: \"\" };\n            }\n            return _parentGroup[group_] as IConfiguratorApiDataGroup;\n        }\n\n        const groups = Object.keys(data_);\n        if (groups.includes(group_)) {\n            return data_[group_] as IConfiguratorApiDataGroup;\n        }\n\n        for (const group of groups) {\n            const child = data_[group] as IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams;\n            if (child.type != \"list\") {\n                continue;// skip value elements\n            }\n\n            const subgroup = this.GetGroup(group_, child as IConfiguratorApiDataGroup, groupReference_);\n            if (subgroup == undefined || subgroup.type != \"list\") {\n                continue;\n            }\n\n            return subgroup;\n        }\n        return { type: \"\" };\n    }\n\n    public Get(startGroup_: string, groupReference_: string, valueName_?: string): IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams {\n        const group = this.GetGroup(startGroup_, this.Data, groupReference_);\n        if (group.type == \"\") {\n            return { type: \"\" };\n        }\n        if (startGroup_ == valueName_ || valueName_ == undefined) {\n            return group;\n        }\n\n        let value = { type: \"\" } as IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams;\n        if (this.ForEachRecursive(group, (valueOrGroup_: IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams, name_: string) => {\n            if (valueName_ == name_) {\n                value = valueOrGroup_;\n                return true;\n            }\n            return false;\n        })) {\n            return value;\n        }\n        return { type: \"\" };\n    }\n\n    public GetGroupValuesCount(group_: string, groupReference_: string, valueName_?: string): number {\n        const elementData = ConfiguratorApiDataService.Get(group_, groupReference_, valueName_);\n        if (elementData == undefined || elementData.type === \"\") {\n            return 0;\n        }\n        const childNames = Object.keys(elementData);\n        if (childNames.length < 8) {\n            console.error(\"ConfiguratorApi Data wrong! incomplete!\", elementData);\n            return 0;\n        }\n        return childNames.length - 8;\n    }\n\n    // public GetFromSpecificGroup(group_: string, name_?: string): IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams {\n    //     const group = this.GetGroup(group_, this.Data);\n    //     if (group.type == \"\") {\n    //         return { type: \"\" };\n    //     }\n\n    //     if (group_ == name_ || name_ == undefined) {\n    //         return group;\n    //     }\n\n    //     const value = group[name_];\n    //     if (value != undefined) {\n    //         return value as IConfiguratorApiDataValue;\n    //     }\n    //     return { type: \"\" };\n    // }\n    // public GetGroupKeys(group_: string) {\n    //     const group = this.Get(group_);\n    //     if (typeof group === \"object\") {\n    //         return Object.keys(group);\n    //     }\n    //     return [];\n    // }\n\n    public GetValueInfoList(group_: string, groupReference_: string): IConfiguratorApiDataInfoList {\n        const group = ConfiguratorApiDataService.Get(group_, groupReference_) as IConfiguratorApiDataGroup | undefined;\n        if (group == undefined) {\n            return {}\n        }\n\n        const infoList = group[\"info-list\"] as IConfiguratorApiDataInfoList | undefined;\n        if (infoList == undefined) {\n            return {};\n        }\n        return infoList;\n    }\n    public GetValueInfo(group_: string, groupReference_: string, names_: string[]): string[] {\n        const infoList = this.GetValueInfoList(group_, groupReference_);\n\n        const result: string[] = [];\n        names_.forEach(name => {\n            if (infoList[name] != undefined) {\n                result.push(infoList[name]);\n            }\n        });\n        return result;\n    }\n\n    public ForEachRecursive(group_: IConfiguratorApiDataGroup | undefined, action_: (valueOrGroup_: IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams, name_: string) => boolean): boolean {\n        const groupToLoop = group_ != undefined ? group_ : this.Data;\n        const childGroups = group_ != undefined ? Object.keys(group_) : this.Groups;\n\n        for (const groupOrValueName of childGroups) {\n            const groupOrValue = groupToLoop[groupOrValueName] as IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams;\n            if (groupOrValue.type == undefined || groupOrValue.type == \"\") {\n                continue;\n            }\n            let stop = action_(groupOrValue, groupOrValueName);\n            if (groupOrValue.type == \"list\" && !stop) {\n                const stopInChild = this.ForEachRecursive(groupOrValue as IConfiguratorApiDataGroup, action_);\n                if (stopInChild) {\n                    stop = true;\n                }\n            }\n            if (stop) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    public Exists(name: string) {\n        return this.ForEachRecursive(undefined, (valueOrGroup_: IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams, name_: string) => {\n            if (name == name_) {\n                return true;\n            }\n            return false;\n        });\n    }\n\n    public CreateFormElementCounterStack(data_: IConfiguratorApiDataGroup, definition_: (FormElementInfo | FormElementsWrapper)[], elementNamePrefix_: string): FormElementCounterStack {\n        let highestIndex = 0;\n        let maxNumbersInNames = 0;\n        const definitionsWithCounters = this.FindCountersInDefinition(definition_);\n        if (definitionsWithCounters.length > 0) {\n            const keys = Object.keys(data_);\n            for (const key of keys) {\n                const keyToCheck = key.replace(elementNamePrefix_, \"\");\n                const matches = keyToCheck.match(/\\d+/g);\n                if (matches) {\n                    if (maxNumbersInNames < matches.length) {\n                        maxNumbersInNames = matches.length;\n                    }\n\n                    for (const match of matches) {\n                        let matchAsNumber = parseInt(match);\n                        if (matchAsNumber > highestIndex) {\n                            highestIndex = matchAsNumber;\n                        }\n                    }\n                }\n            }\n        }\n        highestIndex += 1;\n\n        return new FormElementCounterStack(maxNumbersInNames, highestIndex);\n    }\n\n    public GetElementsToCreateFromElementDefinition(group_: string, data_: IConfiguratorApiDataGroup, definition_: (FormElementInfo | FormElementsWrapper)[], elementNamePrefix_: string, groupReference_: string): (FormElementInfo | FormElementsWrapper)[] {\n        const counterstack = this.CreateFormElementCounterStack(data_, definition_, elementNamePrefix_);\n        const timesToIncrement = counterstack.fullLoopCount;\n\n        const result: (FormElementInfo | FormElementsWrapper)[] = [];\n        for (let index = 0; index < timesToIncrement; ++index) {\n            for (const formElement of definition_) {\n                if ((formElement as FormElementInfo).tag === undefined) {\n                    // // handle wrappers\n                    const wrapper = formElement as FormElementsWrapper;\n                    let displayAnyInWrapper = false;\n                    for (const elementInfo of wrapper.elements) {\n                        const [nameToUse, names] = this.FindElementDataFromFormElementInfo(elementInfo as FormElementInfo, group_, counterstack, elementNamePrefix_, groupReference_);\n                        if (names === undefined && nameToUse === undefined) {\n                            continue;\n                        }\n                        displayAnyInWrapper = true;\n                    }\n                    if (displayAnyInWrapper) {\n                        result.push(wrapper);\n                    }\n                    continue;\n                }\n\n                const elementInfo = formElement as FormElementInfo;\n                // loop over formElements and create html-elements in container\n                if (elementInfo.name === undefined && elementInfo.names == undefined) continue;\n\n                const [nameToUse, names] = this.FindElementDataFromFormElementInfo(elementInfo, group_, counterstack, elementNamePrefix_, groupReference_);\n                if (names === undefined && nameToUse === undefined) {\n                    continue;\n                }\n\n                result.push({\n                    tag: elementInfo.tag,\n                    name: nameToUse,\n                    names: names,\n                    attributes: elementInfo.attributes,\n                    styleVars: elementInfo.styleVars\n                });\n            }\n            counterstack.increment();\n        }\n        return result;\n    }\n\n\n    public FindCountersInDefinition(definition_: (FormElementInfo | FormElementsWrapper)[]): (FormElementInfo | FormElementsWrapper)[] {\n        let result: (FormElementInfo | FormElementsWrapper)[] = [];\n\n        for (const formElement of definition_) {\n            if ((formElement as FormElementInfo).tag === undefined) {\n                const wrapper = formElement as FormElementsWrapper;\n                const formElementInfosWithCounters = this.FindCountersInDefinition(wrapper.elements);\n                if (formElementInfosWithCounters.length > 0) {\n                    result.push(wrapper);\n                }\n                continue;\n            }\n\n            const elementInfo = formElement as FormElementInfo;\n            if (elementInfo.name === undefined && elementInfo.names == undefined) {\n                continue;\n            }\n\n            if (elementInfo.name != undefined) {\n                if (elementInfo.name.includes(\"|>counter-\")) {\n                    result.push(elementInfo);\n                }\n                continue;\n            }\n\n            if (elementInfo.names != undefined) {\n                for (const name of elementInfo.names) {\n                    if (name.includes(\"|>counter-\")) {\n                        result.push(elementInfo);\n                    }\n                }\n            }\n        }\n\n        return result;\n    }\n\n\n    // public CheckDefinitionForFittingCounter(definition_: (FormElementInfo | FormElementsWrapper)[], keyToCheck_: string): boolean {\n    //     const keyParts = keyToCheck_.split(\"|>counter-\");\n    //     if (keyParts.length < 2) {\n    //         return false;// no counter ignore!\n    //     }\n\n    //     let result = false;\n    //     for (const formElement of definition_) {\n    //         if ((formElement as FormElementInfo).tag === undefined) {\n    //             const wrapper = formElement as FormElementsWrapper;\n    //             if (this.CheckDefinitionForFittingCounter(wrapper.elements, keyToCheck_)) {\n    //                 result = true;\n    //             }\n    //             continue;\n    //         }\n\n    //         const elementInfo = formElement as FormElementInfo;\n    //         if (elementInfo.name === undefined && elementInfo.names == undefined) {\n    //             continue;\n    //         }\n\n    //         if (elementInfo.name != undefined) {\n    //             let count = 0;\n    //             for (const part of keyParts) {\n    //                 if (elementInfo.name.includes(part)) {\n    //                     count++;\n    //                 }\n    //             }\n    //             if (count == keyParts.length) {\n    //                 result = true;\n    //             }\n    //         }\n\n    //         if (elementInfo.names != undefined) {\n    //             for (const name of elementInfo.names) {\n    //                 let count = 0;\n    //                 for (const part of keyParts) {\n    //                     if (name.includes(part)) {\n    //                         count++;\n    //                     }\n    //                 }\n    //                 if (count == keyParts.length) {\n    //                     result = true;\n    //                 }\n    //             }\n    //         }\n    //     }\n    //     return result;\n    // }\n\n\n    public CheckDefinitionAgainstvalueElementName(definition: string, valueElement: string) {\n        const piecesToSearchFor: Array<string> = [];\n        const occurrences = definition.split(\"|>counter-\");\n        if (occurrences.length > 1) {\n            for (let occurrence of occurrences) {\n                let part = occurrence;\n                const index = occurrence.indexOf(\"<|\");\n                if (index > 0) {\n                    const remove = occurrence.slice(0, index + 2);\n                    part = occurrence.replace(remove, \"\");\n                }\n\n                if (part.length > 0) {\n                    piecesToSearchFor.push(part);\n                }\n            }\n        } else {\n            return valueElement == definition;\n        }\n\n        let allPiecesFit = true;\n        let temp = valueElement;\n        for (let piece of piecesToSearchFor) {\n            if (!temp.includes(piece)) {\n                allPiecesFit = false;\n                break;\n            }\n            temp = temp.replace(piece, \"\");\n        }\n        return allPiecesFit;\n    }\n\n    public FindElementDataFromFormElementInfo(elementInfo_: FormElementInfo, group_: string, counterstack_: FormElementCounterStack, elementNamePrefix_: string, groupReference_: string): [(string | undefined), (string[] | undefined)] {\n        let nameToUse = undefined;\n        if (elementInfo_.name !== undefined) {\n            const data = this.FindElementData(elementInfo_.name, group_, counterstack_, elementNamePrefix_, groupReference_);\n            if (data !== undefined) {\n                nameToUse = data.type === \"list\" ? elementInfo_.name : data.name;\n            }\n        }\n\n        let names = undefined;\n        if (elementInfo_.names !== undefined) {\n            const accumulatedNames = [];\n            for (const name of elementInfo_.names) {\n                const found = this.FindElementData(name, group_, counterstack_, elementNamePrefix_, groupReference_);\n                if (found == undefined) {\n                    continue;\n                }\n                accumulatedNames.push(name);\n            }\n            if (accumulatedNames.length > 0) {\n                names = accumulatedNames;\n            }\n        }\n        return [nameToUse, names];\n    }\n\n    public FindElementData(name_: string, group_: string, counterstack_: FormElementCounterStack | undefined, elementNamePrefix_: string, groupReference_: string): IConfiguratorApiDataValue | undefined {\n        const group = this.GetGroup(group_, this.Data, groupReference_);\n        if (group.type == \"\") {\n            return { type: \"\" };\n        }\n        if (counterstack_ == undefined || counterstack_.empty) {\n            const value = group[elementNamePrefix_ + name_] as IConfiguratorApiDataValue | undefined;\n            if (value != undefined) {\n                return value;\n            }\n\n            let foundValue = undefined;\n            this.ForEachRecursive(group, (valueOrGroup: IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams, valueToCheckName_: string) => {\n                if (valueOrGroup.type == \"list\") {\n                    foundValue = (valueOrGroup as IConfiguratorApiDataGroup)[elementNamePrefix_ + name_];\n                    return true;\n                }\n                return false;\n            });\n            return foundValue;\n        }\n\n        let result = { type: \"\" } as IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams;\n        if (this.ForEachRecursive(group, (valueOrGroup: IConfiguratorApiDataGroup | IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams, valueToCheckName_: string) => {\n            const counterCheckValueName = valueToCheckName_.replace(elementNamePrefix_, \"\");\n            if (!this.CheckDefinitionAgainstvalueElementName(name_, counterCheckValueName)) {\n                return false;// continue with another element if the name does not fit the desired name\n            }\n\n            const matches = counterCheckValueName.match(/\\d+/g); // check matches against counterstack-values\n            if (!matches) {\n                result = valueOrGroup;\n                return true; // no numbers. Which means we do not need to check if those fit and can just use the value\n            }\n\n            const neededMatches = name_.match(/\\|>counter-\\d+<\\|/g);\n            if (neededMatches != undefined) {\n                if (neededMatches.length != matches.length) {\n                    return false;//not the right amount of matches. This can not be the right one!\n                }\n            }\n\n            if (matches.length < counterstack_.size) {\n                const accumulatedAfterIndex = counterstack_.accumulateAfterIndex(matches.length);\n                if (accumulatedAfterIndex > 0) {\n                    return false;// there are increase values after desired! which means we probably already build the element we are looping right now.\n                }\n            }\n\n            let matchCount = 0;\n            for (let index = 0; index < matches.length; ++index) {\n                const counterStackValue = counterstack_.get(index);\n                const match = parseInt(matches[index]);\n                if (match != counterStackValue) {\n                    break;\n                }\n                ++matchCount;\n            }\n\n            if (matchCount == matches.length) {\n                result = valueOrGroup;\n                return true;\n            }\n            return false;\n        })) {\n            if (result.type === \"\") {\n                return undefined;\n            }\n            return result;\n        }\n        return undefined;\n    }\n\n    public CreateFullTargetGroupReference(group_: string, rootGroup_: string): string {\n        if (rootGroup_ == group_ || rootGroup_.length < 1) {\n            return group_;\n        }\n        return rootGroup_ + \"#\" + group_;\n    }\n\n    private SetCounter = 0;\n    public async Set(groups: IConfiguratorApiValueModificationGroup[], preventRegenAll = false, ignorePriceChange = false): Promise<boolean> {\n        if (this.SetCounter > 0) {\n            return false;// prevent multiple modifications at the same time (todo: wait for previous modification?)\n        }\n\n        this.SetCounter++;\n        if (this.SetCounter > 1) {\n            console.warn(\"ConfiguratorApiDataService> multiple set called at the same time!\");\n        }\n\n        const result = await ConfiguratorApiService.SetApiData({\n            groups: groups,\n            \"prevent-regen-all\": preventRegenAll\n        }, ignorePriceChange);\n        this.Data = result;\n        --this.SetCounter;\n\n        return true;\n    }\n    public GetModificationType(dataValue: \"string\" | \"int\" | \"float\" | \"list\" | \"button\" | \"checkbox\" | \"option-selection\" | \"\"): \"int\" | \"float\" | \"button\" | \"string\" | \"error\" {\n        if (dataValue == \"int\") return \"int\";\n        if (dataValue == \"float\") return \"float\";\n        if (dataValue == \"button\") return \"button\";\n        if (dataValue == \"checkbox\") return \"int\";\n        if (dataValue == \"option-selection\" || dataValue == \"string\") return \"string\";\n        return \"error\";\n    }\n}\nexport const ConfiguratorApiDataService = new ConfiguratorApiDataServiceClass();\n","import { CommunicationMessageService, WebViewerService } from \"@dh-software/webui-api\";\nimport { IArticleData, ICatConfig, ICategoryData, IEquipmentData, ILoadArticleParams } from \"@dh-software/webui-types\";\n\nexport type DimensionName = \"width\" | \"depth\" | \"height\";\n\nconst dimensionVarKeyMapping: Record<DimensionName, string> = {\n    width: \"v5\",\n    depth: \"v6\",\n    height: \"v7\",\n};\n\nconst additionalParamsMapping: { [key: string]: keyof ILoadArticleParams } = {\n    [dimensionVarKeyMapping.width]: \"extraWidth\",\n    [dimensionVarKeyMapping.depth]: \"extraDepth\",\n    [dimensionVarKeyMapping.height]: \"extraHeight\",\n}\n\nclass CatalogServiceClass {\n\n    private _pending = false;\n    private isInitialized: Promise<ICatConfig[]> = new Promise<ICatConfig[]>((res, rej) => res([]));\n\n    private _manufacturer: string = \"\";\n    private _program: string = \"\";\n\n    public async GetCatConfig(): Promise<ICatConfig[]> {\n        return await this.isInitialized;\n    }\n\n    private async parseCatConfig(manufacturer: string, program: string) {\n        const rawCatConfig = await CommunicationMessageService.getCatConfig(manufacturer, program);\n        return rawCatConfig?.cat_config?.map(raw => {\n            return {\n                category: raw[0],\n                attributes: raw[1].split('#'),\n                defaultArt: raw[2],\n                module: raw[3],\n                group: raw[4]\n            } as ICatConfig;\n        }) || [];\n    }\n\n    public async retrieveCatConfig(manufacturer: string, program: string): Promise<ICatConfig[]> {\n        if (this._pending) {\n            await this.isInitialized;\n        }\n        this._pending = true;\n        this.isInitialized = this.parseCatConfig(manufacturer, program)\n        this.isInitialized.then(x => this._pending = false);\n        this._manufacturer = manufacturer;\n        this._program = program;\n        return await this.isInitialized;\n    }\n\n    public async filterArticlesList<T>(articles: IArticleData[] | IEquipmentData[]): Promise<IArticleData[] | IEquipmentData[]> {\n        const data = await this.isInitialized;\n        // @ts-ignore\n        return data?.length > 0 ? articles.filter((article: any) => {\n            return data[0]?.defaultArt !== article.ArtNr;\n        }) : articles;\n    }\n\n    public async filterKataModules(categories: ICategoryData[]): Promise<ICategoryData[]> {\n        const data = await this.isInitialized;\n        return data?.length > 0 ? categories.filter(category => data[0]?.category != category.id) : categories\n    }\n\n    public async getInitialArticle(def: string, program?: string) {\n        // Use the manufacturer/program cached from the most recent retrieveCatConfig call.\n        // Callers (program-selection.helper) invoke retrieveCatConfig before this, so the\n        // values are current; this avoids a cycle with ManuProgService.\n        const data = await this.isInitialized;\n        const manufacturer = this._manufacturer;\n        if (!program) {\n            program = this._program;\n        }\n        const configurationResult = this.getConfigurationDefaultArticle(manufacturer, program);\n        if (configurationResult.length > 0) {\n            return configurationResult;\n        }\n        return data[0]?.defaultArt || def;\n    }\n\n    public async shouldDisableOnSceneEmpty(enable: boolean) {\n        await WebViewerService.IsAppReady;\n        let articlesInScene = await CommunicationMessageService.getPlannedArticles()\n        articlesInScene = articlesInScene.filter(article => article.articlenumber);\n        return enable && articlesInScene.length === 0\n    }\n\n    public getMinMaxByParamName(name: string, article: IArticleData, dimScale = 1): [number, number] {\n        let min = 0;\n        let max = 0;\n        switch (name) {\n            case 'v5': // Width\n                min = Number(article.dxmi)\n                max = Number(article.dxma)\n                break;\n            case 'v6': // Depth\n                min = Number(article.dymi)\n                max = Number(article.dyma)\n                break;\n            case 'v7': // Height\n                min = Number(article.dzmi)\n                max = Number(article.dzma)\n                break;\n        }\n        const result: [number, number] = [min, max];\n        result.forEach((item, index, arr) => {\n            arr[index] = Math.abs(arr[index]) * dimScale;\n        })\n        return result;\n    }\n\n    public getAdditionalParamByKey(name: string, def?: string): string {\n        return additionalParamsMapping[name] || def;\n    }\n\n    public getVarKeyForDimension(dimension: string): string | undefined {\n        return dimensionVarKeyMapping[dimension as DimensionName];\n    }\n\n    public getAdditionalProperties(key: string, value: any) {\n        const result: any = {}\n        result[this.getAdditionalParamByKey(key)] = value;\n        return result;\n    }\n\n    private getConfigurationDefaultArticle(manufacturer: string, program: string): string {\n        if (window.g_configuration.defaultArticleList) {\n            const lookUpKey = `${manufacturer}_${program}`;\n\n            for (const element of window.g_configuration.defaultArticleList.keys) {\n                if (element.key === lookUpKey.toLowerCase()) {\n                    return element.articleNumber;\n                }\n            }\n        }\n\n        return \"\";\n    }\n\n}\n\nexport const CatalogService = new CatalogServiceClass();\n","import {CatalogService} from \"./catalog.service\";\nimport {CommunicationMessageService, EventService, WebViewerService} from \"@dh-software/webui-api\";\n\nexport interface ISetManuProgData {\n    manu: string;\n    prog: string;\n    calcManu: string;\n}\n\nclass ManuProgServiceClass {\n\n    private _pending = false;\n    private isInitialized: Promise<void> = new Promise<void>((res, rej) => res());\n\n    private _manufacturer = \"\";\n    private _calcManufacturer = \"\";\n    private _program = \"\";\n\n    constructor() {\n        this.isInitialized = this.initialize();\n    }\n\n    private async initialize() {\n        await WebViewerService.IsAppReady;\n        this._manufacturer = window.g_article?.manu || window.g_configuration.selectedManufacturer as string;\n        this._program = window.g_article?.prog ? window.g_article.prog.toUpperCase() : (window.g_configuration.selectedProgram as string).toUpperCase();\n        this._calcManufacturer = this._manufacturer;\n        await CatalogService.retrieveCatConfig(this._manufacturer, this._program);\n    }\n\n    public async getManufacturer() {\n        await this.isInitialized;\n        return this._manufacturer;\n    }\n\n    public async getCalcManufacturer() {\n        await this.isInitialized;\n        return this._calcManufacturer;\n    }\n\n    public async getProgram() {\n        await this.isInitialized;\n        return this._program;\n    }\n\n    public async setManuProg(manufacturer: string, calcManufacturer: string, program: string, callEvent: boolean = true): Promise<void> {\n        if (this._pending) {\n            return await this.isInitialized;\n        }\n        this._pending = true;\n        this.isInitialized = CommunicationMessageService.setManuProg(manufacturer, calcManufacturer, program);\n\n        await CatalogService.retrieveCatConfig(manufacturer, program);\n        this.isInitialized.then(x => this._pending = false);\n        await this.isInitialized;\n\n        if(callEvent) {\n            EventService.emit(\"set-manu-prog\", {\n                manu: manufacturer,\n                calcManu: calcManufacturer,\n                prog: program,\n            });\n        }\n\n        this._manufacturer = manufacturer;\n        this._calcManufacturer = calcManufacturer;\n        this._program = program;\n    }\n}\n\nexport const ManuProgService = new ManuProgServiceClass();\n","import { CommunicationMessageService, EventService } from \"@dh-software/webui-api\";\n\nclass UtilServiceClass {\n    public async getFurncloudFile(cloudId_: string, type_: string, password_: string): Promise<any | undefined> {\n        const exportTypeMap: Record<string, number> = {\n            dhp: 1,\n            xml: 2,\n            pdf: 4,\n        };\n        const responseData = await CommunicationMessageService.getErpFiles(cloudId_, exportTypeMap[type_], password_, true);\n\n        window.dispatchEvent(new CustomEvent(\"furncloud-status\", {\n            detail: responseData,\n            bubbles: true,\n            composed: true\n        }));\n        if (responseData.httpStatus !== 200 || !responseData.fileName) {\n            if (responseData.responseBody) {\n                try {\n                    return JSON.parse(responseData.responseBody);\n                }\n                catch {\n                }\n            }\n            return undefined;\n        }\n        return {\n            url: `${responseData.server}/downloadExport/${responseData.sessionId}/${responseData.fileName}/${type_}`\n        };\n    }\n\n    public async generateExport(type_: string) {\n        const exportInfo = await CommunicationMessageService.generateExport(type_);\n        return {\n            url: `${exportInfo.server}/downloadExport/${exportInfo.sessionId}/${exportInfo.file}/${type_}`,\n            cloudID: exportInfo.cloudId\n        };\n    }\n\n    public async getPDF(useLastCloudID = false) {\n        const printInfo = await CommunicationMessageService.printPDF(useLastCloudID);\n        return {\n            url: `${printInfo.server}/downloadPDF/${printInfo.sessionId}/${printInfo.pdf}`,\n            cloudID: printInfo.cloudId\n        };\n    }\n\n    public async openCloudId(cloudId_: string, resetUiVars_: boolean = false): Promise<void> {\n        if (cloudId_) {\n            if (resetUiVars_) {\n                await CommunicationMessageService.resetCurrentUserinterfaceManuProg();\n            }\n            await CommunicationMessageService.openCloudId(cloudId_);\n            EventService.emitAsync(\"close-modal\", {});\n        }\n    }\n\n    public async delay(ms: number): Promise<void> {\n        return new Promise(resolve => setTimeout(resolve, ms));\n    }\n\n    public querySelectorAllWithShadowRoots<T extends Element>(selector: string, startNode: ParentNode = document): T[] {\n        const elements = Array.from(startNode.querySelectorAll(selector));\n        const shadowElements = Array.from(document.querySelectorAll('*'))\n            .filter(element => element.shadowRoot)\n            .reduce((acc, element) => {\n                const shadowRootElements = element[\"shadowRoot\"]?.querySelectorAll<T>(selector) || [];\n                return [...acc, ...Array.from(shadowRootElements)];\n            }, new Array<T>());\n\n        return [...elements, ...shadowElements] as T[];\n    }\n\n    public querySelectorWithShadowRoots<T extends Element>(selector: string, startNode: ParentNode = document): T {\n        return this.querySelectorAllWithShadowRoots<T>(selector, startNode)[0];\n    }\n\n    public replaceValueInObject(object: { [key: string | number]: unknown }, placeholder: unknown, replaceValue: unknown) {\n        const keys = Object.keys(object);\n        for (const key of keys) {\n            const value = object[key];\n            if (value === placeholder) {\n                object[key] = replaceValue;\n            }\n            else if (value && typeof value === \"object\") {\n                this.replaceValueInObject(value as { [key: string | number]: unknown }, placeholder, replaceValue);\n            }\n            else if (value && Array.isArray(value)) {\n                for (const content of value) {\n                    if (content && typeof content === \"object\") {\n                        this.replaceValueInObject(content as { [key: string | number]: unknown }, placeholder, replaceValue);\n                    }\n                }\n            }\n        }\n    }\n\n\n    public checkCssQuerySyntax(query: string): boolean {\n        const cssRegex = /^(\\*|#[\\w-]+|\\.[\\w-]+|[\\w-]+|\\[\\w+(=\\w+)?\\])(:\\w+)?(>\\w+)?(\\s\\w+)?$/;\n        return cssRegex.test(query);\n    }\n\n    public ncrToUTF8(ncr: string): string {\n        if (ncr && ncr.length > 0) {\n            return ncr.replace(/&#([0-9]+);/g, function (b) {\n                return String.fromCodePoint(parseInt(b.slice(2, -1)));\n            });\n        }\n        return ncr;\n    }\n\n    public sanitizeKey(fragment_: string): string {\n        return `${fragment_}`.replace(/\\s+/g, \"_\");\n    }\n}\n\nexport const UtilService = new UtilServiceClass();\n","import {CommunicationMessageService} from \"@dh-software/webui-api\";\n\nclass CloudIdServiceClass {\n\n    private cloudIdRegex = /^(?:\\s*[a-z0-9]\\s*){8}$/i\n\n    private _pending = false;\n    private _cloudIdPromise: Promise<string> = new Promise<string>((res, rej) => res(\"\"));\n\n    public async getCloudId() {\n        return this._cloudIdPromise;\n    }\n\n    public async createCloudId(): Promise<string> {\n        if (this._pending) {\n            return await this._cloudIdPromise;\n        }\n        this._pending = true;\n        this._cloudIdPromise = CommunicationMessageService.createCloudID();\n        this._cloudIdPromise.then(x => this._pending = false);\n        return await this._cloudIdPromise;\n    }\n\n    public isCloudIdValid(cloudId: string): boolean {\n        return this.cloudIdRegex.test(cloudId);\n    }\n\n}\n\nexport const CloudIdService = new CloudIdServiceClass();\n","class SessionStorageServiceClass {\n    private readonly _prefix: string = \"SSS_\";\n\n    update(key_: string, data_: {[key: string]: unknown} | Array<unknown>) {\n        if (key_.length > 0) {\n            const jsonString = JSON.stringify(data_);\n            const base64String = btoa(jsonString);\n            sessionStorage.setItem(this._prefix + key_, base64String);\n        }\n        return data_;\n    }\n\n    get(key_: string) {\n        if (key_.length > 0) {\n            const base64String = sessionStorage.getItem(this._prefix + key_);\n            if (base64String) {\n                const jsonString = atob(base64String);\n                try {\n                    return JSON.parse(jsonString);\n                }\n                catch {\n                    return null;\n                }\n            }\n        }\n    }\n\n    has(key_: string) {\n        if (key_.length > 0) {\n            return !!sessionStorage.getItem(this._prefix + key_);\n        }\n    }\n\n    remove(key_: string) {\n        sessionStorage.removeItem(this._prefix + key_);\n    }\n}\nexport const SessionStorageService = new SessionStorageServiceClass();\n","import { ComponentService } from \"../../../../utils/component.service\";\nimport type { BaseCardContainer } from \"../base/base-card-container\";\n\nexport class CardContainersSharedData {\n    private _CardContainerTagNames = new Array<string>();\n    public get CardContainerTagNames(): Array<string> {\n        return this._CardContainerTagNames;\n    }\n    public AddTagName(value: string): void {\n        if (this._CardContainerTagNames.includes(value)) return;\n        this._CardContainerTagNames.push(value);\n    }\n    public get AllContainers(): Array<BaseCardContainer> {\n        const result = new Array<BaseCardContainer>();\n        for (const tagName of this._CardContainerTagNames) {\n            result.push(...(ComponentService.findAll(tagName) as Array<BaseCardContainer>));\n        }\n        return result;\n    }\n}\n\n// Module-level singleton — lets services access the shared registry without\n// importing BaseCardContainer at runtime.\nexport const CardContainersShared = new CardContainersSharedData();","import { DecimalDivider } from \"../../components/standard/informationals/dimension-information.component\";\nimport { DimensionInformation } from \"../../components/standard/informationals/dimensions-information.component\";\nimport { IDimensionInputData } from \"../../components/standard/informationals/dimension-inputs.component\";\nimport { PriceDisplayData } from \"../../components/price/price-display/price-display.component\";\nimport {\n    CardContainerFilterSelection,\n    CardContainerSettings,\n    CardContainerStates\n} from \"../../components/standard/card-container/internals\";\nimport { EventHandlerEvent } from \"../event-handler/event.handler.model\";\nimport { IModuleElement } from \"@dh-software/webui-configuration-parser\";\nimport { CardContainerAsyncEvent, CardContainerBaseEventDetail } from \"./card-container-events\";\n\n// types\nexport type CardDataLevelKey = string | number;\nexport type CardDataLevel = {\n    title: string,\n    cards: Array<CardData>,\n    additional?: { [key: string]: unknown }\n};\nexport type CardDataLevelMap = Map<CardDataLevelKey, CardDataLevel>;\n\nexport type CardDataGroup<T> = {\n    title?: string,\n    items: Array<T>,\n    style?: { [key: string]: string }\n}\nexport type CardDataButtonGroupItem = {\n    active?: boolean,\n    bordered?: boolean,\n    icon?: string,\n    \"click-data\"?: { [key: string]: unknown }\n}\n\nexport type CardDataDropdownGroupItem = {\n    value?: string\n    values?: string[];\n    name?: string\n    placeholder?: string\n\n    suffix?: string\n}\n\nexport type CardDataInputGroupItem = {\n    value?: any;\n    type?: string\n    readonly?: boolean\n    placeholder?: string\n    required?: boolean\n    classes?: { [className: string]: any }\n    name?: string\n    min?: number\n    max?: number\n\n    suffix?: string\n}\n\nexport interface ICardDataInputSource {\n    value: string\n    name: string\n}\n\nexport function isCardDataSource(element: any): element is ICardDataInputSource {\n    return \"value\" in element && \"name\" in element;\n}\n\nexport type CardContainerChildWildcard = {\n    tag: string\n    query?: string\n}\n\n// enums\nexport enum CardFetchMethod {\n    ArticlesByCategories = \"articles-by-categories\",\n    ArticlesByCategoriesConfiguratorForm = \"articles-by-categories-configurator-form\",\n    ArticlesByCategoriesDimensions = \"articles-by-categories-dimensions\",\n    ArticlesByCategoriesCategorySelection = \"articles-by-categories-category-selection\",\n    CrossArticleHostSelection = \"cross-article-host-selection\",\n    KataPageSelection = \"kata-page-selection\",\n    PropertySelection = \"property-selection\",\n    PropertyValueSelection = \"property-value-selection\",\n    PropertyContextSelection = \"property-context-selection\",\n    PropertyContextValueSelection = \"property-context-value-selection\",\n    PropertyUiGroupSelection = \"property-group-selection\",\n    LandingPageView = \"landing-page-view\",\n    CardsFromConfiguration = \"cards-from-configuration\",\n    WallElements = \"wall-elements\",\n    WallSelection = \"wall-selection\",\n    ConfiguratorFormFilter = \"configurator-form-filter\",\n    ProgramSelection = \"program-selection\",\n    PlacerGroupSelection = \"placer-group-selection\",\n    MaterialSelection = \"material-selection\",\n    NONE = \"\"\n}\n\nexport enum FilterSelectionStrategy {\n    OR = \"or\",\n    AND = \"and\",\n    NONE = \"none\"\n}\n\nexport enum CardContainerUpdate {\n    FETCH = \"fetch\",\n    FILTER = \"filter\",\n    NONE = \"none\"\n}\n\nexport enum CardContainerSpecialInteractionContext {\n    ENABLED = \"enabled\",\n    DISABLED = \"disabled\",\n    NONE = \"none\",\n    ERROR = \"error\"\n}\n\n// interfaces\nexport interface CardClick {\n    \"previous-level-key\": CardDataLevelKey,\n    \"level-key\": CardDataLevelKey,\n    \"next-level-key\": CardDataLevelKey,\n    strategy?: FilterSelectionStrategy,\n    priority?: number,\n\n    [key: string]: unknown\n}\n\nexport interface CardDataImage {\n    prefix: string,\n    file: string\n}\n\nexport interface CardDataText {\n    txt?: string,\n    title?: string,\n    subtitle?: string,\n    tooltip?: string,\n    additional?: string[]\n}\n\nexport interface CardData {\n    image?: CardDataImage,\n    icon?: string\n    txt?: CardDataText\n    dimensions?: Array<DimensionInformation>\n    price?: PriceDisplayData\n    click?: CardClick\n    active?: boolean,\n    disabled?: boolean,\n    modules?: Array<IModuleElement>,\n    dragable?: boolean,\n    translate?: boolean,\n    tooltip?: boolean,\n    \"button-groups\"?: Array<CardDataGroup<CardDataButtonGroupItem>>,\n    inputs?: Array<CardDataGroup<CardDataInputGroupItem>>,\n    dropdowns?: Array<CardDataGroup<CardDataDropdownGroupItem>>,\n    \"dimension-ranges\"?: Array<IDimensionInputData>,\n    children?: CardData[]\n    persistent?: { [key: string]: unknown }\n    additional?: {\n        \"card-tag\"?: string,\n        \"style-type\"?: string,\n        [key: string]: unknown\n    }\n}\n\n// ─── CardData.additional marker keys ─────────────────────────────────────────\n/** FixedCards-defined clickEvents for the card. */\nexport const FIXED_CARD_CLICK_EVENTS_KEY = \"fixed-card-click-events\";\n/** Side-view key in the enclosing fv-card-container-view to switch to on click. */\nexport const CARD_VIEW_KEY = \"card-view-key\";\n/** Truthy → dispatch a CardMagnifiedEvent on click. */\nexport const CARD_MAGNIFY_KEY = \"magnify\";\n/** Optional id targeting a specific fv-card-magnifier-view. */\nexport const CARD_MAGNIFY_TARGET_KEY = \"magnify-query\";\n\nexport interface FilterSelectionData {\n    filter: Array<CardDataLevelKey>,\n    strategy: FilterSelectionStrategy,\n    priority?: number,\n    \"additional-params\"?: unknown\n}\n\nexport interface CardFetchFilters {\n    \"level-key-filter\"?: Array<CardDataLevelKey>,\n\n    [filterKey: string]: unknown\n}\n\nexport interface CardFetch {\n    method: CardFetchMethod,\n    parameters?: { [key: string]: unknown },\n    manufacturer?: string,\n    program?: string,\n    \"root-level\"?: string,\n    filter?: CardFetchFilters,\n    \"suspend-until-triggered\"?: boolean\n}\n\nexport interface CardSettings {\n    notranslate?: boolean\n    dimensions?: {\n        icon?: string,\n        src?: string,\n        prefixes?: {\n            width?: string,\n            height?: string,\n            depth?: string\n        },\n        divider?: string,\n        unit?: string,\n        decimals?: number,\n        \"decimal-divider\"?: DecimalDivider,\n        \"prevent-zero-decimals\"?: boolean\n    },\n    price?: {\n        \"whole-suffix\"?: string,\n        \"currency-before\"?: boolean\n    }\n}\n\nexport type FetchResult = any\n\nexport interface CardContainerContext {\n    settings: CardContainerSettings,\n    states: CardContainerStates,\n    filter: CardContainerFilterSelection | undefined,\n    cards: CardDataLevelMap | undefined,\n    dispatchAsyncEvent: (eventFactory: (resolve: () => Promise<void> | void) => Event) => Promise<boolean>,\n    dispatchEvent: (event: Event) => boolean\n}\n\nexport interface CardContainerCustomEvents {\n    hide?: Array<EventHandlerEvent>,\n    show?: Array<EventHandlerEvent>,\n    \"hide-show-only-after-first-fill\"?: boolean,\n    \"hide-show-ignore-parent-change\"?: boolean,\n    \"hide-show-skip-if-self-hidden\"?: boolean,\n    \"fill-state-empty\"?: Array<EventHandlerEvent>,\n    \"fill-state-filled\"?: Array<EventHandlerEvent>,\n    \"fill-state-on-change\"?: boolean,\n\n    \"special-interaction-opened\"?: Array<EventHandlerEvent>,\n    \"special-interaction-closed\"?: Array<EventHandlerEvent>,\n\n    \"card-clicked\"?: Array<EventHandlerEvent>\n}\n\nexport interface CardContainerSelectionChangeEvent {\n    rev: number,\n    count: number,\n    objectInfo: Array<{\n        instanceIdent: number,\n        dimension: number,\n        planType: string,\n        planTypeText: string\n    }>\n}\n\nexport interface CardContainerCustomIconButtonEvent {\n    command: string,\n    instanceIdent: number;\n    parameters?: any;\n}\n","import { BaseCardContainer } from \"../../components/standard/card-container/base/base-card-container\";\nimport { CardContainerContext, CardData, CardDataLevelKey } from \"./card-container-definitions\";\n\nexport enum CardContainerEvents {\n    CardContainerPreFill = \"cardcontainerprefill\",\n    CardContainerPostFill = \"cardcontainerpostfill\",\n    Updated = \"updated\",\n    Back = \"cardcontainerback\",\n    TriggerCardClick = \"cardcontainertriggercardclick\",\n    BackToStart = \"cardcontainerbacktostart\",\n    UpdateAdditionalData = \"updateadditionaldata\",\n    ResetFilter = \"resetfilter\",\n    Refetch = \"refetch\",\n    CardMagnified = \"cardmagnified\"\n}\n\nexport interface CardContainerBaseEventDetail {\n    'post-event': () => Promise<void> | void,\n    [key: string]: unknown\n}\nexport interface CardContainerBaseEventInit extends CustomEventInit {\n    detail?: {\n        'post-event': () => Promise<void> | void,\n        [key: string]: unknown\n    }\n}\n\nexport class CardContainerAsyncEventDispatcher {\n    private _dispatchFn: (event: Event) => boolean;\n    constructor(dispatchFn: (event: Event) => boolean) {\n        this._dispatchFn = dispatchFn;\n    }\n\n    public async dispatch(eventFactory: (resolve: () => Promise<void> | void) => Event): Promise<boolean> {\n        return new Promise<boolean>((resolve) => {\n            let event: Event;\n            event = eventFactory(async () => {\n                resolve(!event.defaultPrevented);\n            });\n            this._dispatchFn(event);\n        });\n    }\n\n    public callPostEvent(event: CardContainerBaseEventInit) {\n        if (event.detail === undefined || event.detail[\"post-event\"] === undefined) {\n            return;\n        }\n        event.detail[\"post-event\"]();\n    }\n}\nexport class CardContainerAsyncEvent<T extends CardContainerBaseEventDetail> extends CustomEvent<T> {\n    constructor(type: string, detail: T) {\n        super(type, {\n            detail,\n            bubbles: true\n        });\n    }\n}\n\nexport class CardContainerPreFillEvent extends CardContainerAsyncEvent<CardContainerBaseEventDetail> {\n    constructor(postEvents: () => Promise<void> | void) {\n        super(CardContainerEvents.CardContainerPreFill, { 'post-event': postEvents });\n    }\n}\n\n\nexport class CardContainerPostFillEvent extends CardContainerAsyncEvent<CardContainerBaseEventDetail> {\n    constructor(postEvent: () => Promise<void> | void) {\n        super(CardContainerEvents.CardContainerPostFill, { 'post-event': postEvent });\n    }\n}\n\n\nexport interface UpdatedEventInit extends CardContainerBaseEventInit {\n    detail?: {\n        'post-event': () => Promise<void> | void,\n        'container': BaseCardContainer\n    }\n}\nexport class UpdatedEvent extends CardContainerAsyncEvent<{ 'post-event': () => Promise<void> | void, 'container': BaseCardContainer }> {\n    constructor(postEvent: () => Promise<void> | void, container_: BaseCardContainer) {\n        super(CardContainerEvents.Updated, { 'post-event': postEvent, 'container': container_ });\n    }\n}\n\n\nexport class CardContainerBackEvent extends CardContainerAsyncEvent<CardContainerBaseEventDetail> {\n    constructor(postEvent: () => Promise<void> | void) {\n        super(CardContainerEvents.Back, { 'post-event': postEvent });\n    }\n}\n\n\nexport interface CardContainerBackToStartEventInit extends CardContainerBaseEventInit {\n    detail?: { 'post-event': ()=>void }\n}\nexport class CardContainerBackToStartEvent extends CardContainerAsyncEvent<CardContainerBaseEventDetail> {\n    constructor(postEvent: ()=>void) {\n        super(CardContainerEvents.BackToStart, { 'post-event': postEvent });\n    }\n}\n\nexport interface CardContainerTriggerCardClickEventInit extends CardContainerBaseEventInit {\n    detail?: {\n        'keys-to-open': Array<CardDataLevelKey>,\n        'post-event': ()=>void\n    }\n}\nexport class CardContainerTriggerCardClickEvent extends CardContainerAsyncEvent<{ 'keys-to-open': Array<CardDataLevelKey>, 'post-event': ()=>void }> {\n    constructor(targetCardDataLevelKey: Array<CardDataLevelKey>, postEvent: ()=>void) {\n        super(CardContainerEvents.TriggerCardClick, { 'keys-to-open': targetCardDataLevelKey, 'post-event': postEvent });\n    }\n}\n\n\nexport interface UpdateAdditionalDataEventInit extends CardContainerBaseEventInit {\n    detail?: { 'post-event': ()=>void, key: string }\n}\nexport class UpdateAdditionalDataEvent extends CardContainerAsyncEvent<{ 'post-event': ()=>void, key: string }> {\n    constructor(key: string, postEvent: ()=>void) {\n        super(CardContainerEvents.UpdateAdditionalData, { 'post-event': postEvent, key });\n    }\n}\n\nexport interface CardContainerResetFilterEventInit extends CustomEventInit {\n    detail?: { 'post-event': ()=>void, \"restore-defaults\": boolean, context: CardContainerContext }\n}\nexport class CardContainerResetFilterEvent extends  CardContainerAsyncEvent<{ 'post-event': ()=>void, \"restore-defaults\": boolean, context: CardContainerContext }> {\n    constructor(detail: { 'post-event': ()=>void, \"restore-defaults\": boolean, context: CardContainerContext }) {\n        super(CardContainerEvents.ResetFilter, detail);\n    }\n}\n\nexport class CardContainerRefetchEvent extends CardContainerAsyncEvent<CardContainerBaseEventDetail> {\n    constructor(postEvent: ()=>void) {\n        super(CardContainerEvents.Refetch, { 'post-event': postEvent });\n    }\n}\n\n\n/** `target` filters which magnifier responds; omit for catch-all magnifiers. */\nexport interface CardMagnifiedEventInit extends CardContainerBaseEventInit {\n    detail?: { 'post-event': () => Promise<void> | void, data: CardData, target?: string }\n}\nexport class CardMagnifiedEvent extends CardContainerAsyncEvent<{ 'post-event': () => Promise<void> | void, data: CardData, target?: string }> {\n    constructor(data: CardData, target?: string, postEvent: () => Promise<void> | void = () => {}) {\n        super(CardContainerEvents.CardMagnified, { 'post-event': postEvent, data, target });\n    }\n}\n","export enum CardDataUpdateEvent {\n    LastPOLoaded = \"last-po-loaded\",\n    RefreshPropertyPanel = \"refresh-property-panel\",\n    SelectionChanged = \"selection-changed\",\n    DeleteLO_after = \"delete-lo-after\",\n    PropTransfer_afterDelete = \"prop-transfer-after-delete\",\n    PropTransfer_afterSet = \"prop-transfer-after-set\",\n    PropTransfer_beforeDelete = \"prop-transfer-before-delete\",\n    PropTransfer_beforeSet = \"prop-transfer-before-set\",\n    WallFitting_begin = \"wall-fitting-begin\",\n    WallFitting_end = \"wall-fitting-end\",\n    WallFitting_cancel = \"wall-fitting-cancel\",\n    ChangePrice = \"change-price\",\n    DeleteLO_before = \"delete-lo-before\",\n    CameraOnDirty = \"camera-on-dirty\",\n    CameraOnStart = \"camera-on-start\",\n    CameraOnEnd = \"camera-on-end\",\n    SendEvent = \"send-event\",\n    ModalWindowShown = \"modal-window-shown\",\n    ModalWindowHidden = \"modal-window-hidden\",\n    CustomIcon_ExecuteCustomEvent = \"custom-icon-execute-custom-event\",\n    OpenModal = \"open-modal\",\n    CardContainerVisible = \"card-container-visible\",\n    VPlacerCancel = \"vplacer-cancel\"\n}","import {\n    CardContainerContext,\n    CardContainerCustomIconButtonEvent,\n    CardContainerSelectionChangeEvent,\n    CardContainerSpecialInteractionContext,\n    CardContainerUpdate,\n    CardDataLevel,\n    CardDataLevelKey,\n    CardDataUpdateEvent,\n    CardFetchMethod,\n    FetchResult,\n    FilterSelectionStrategy,\n    ICardDataInputSource\n} from \"../models/card-container\";\nimport { BaseCardDataAppConnection } from \"./card-app-connections/base.card.app.connection\";\nimport { BaseCardContainer } from \"../components/standard/card-container/base/base-card-container\";\nimport { CardData } from \"../models/card-container\";\nimport { EventFactoryService, EventService, WebViewerService } from \"@dh-software/webui-api\";\nimport { IDragOptions } from \"@dh-software/webui-types\";\nimport { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\nimport { EventHandlerEvent } from \"models/event-handler/event.handler.model\";\nimport { BaseInput } from \"../components/standard/input/base/base-input\";\nimport { RootLevelSelectionCardContainerComponent } from \"../components/standard/card-container/containers/root-level-selection-card-container.component\";\n\nexport interface CheckUpdateParameters {\n    event: CardDataUpdateEvent,\n    eventParameters: unknown,\n    context: CardContainerContext\n}\nexport interface FetchParameters {\n    context: CardContainerContext\n}\nexport interface FilterParameters {\n    unfiltered: FetchResult,\n    context: CardContainerContext,\n    active: Array<CardDataLevelKey>\n}\nexport interface CreateCardsParameters {\n    filtered: FetchResult,\n    context: CardContainerContext\n}\nexport interface GetFilterSelectionAdditionalParamsParameters {\n    context: CardContainerContext\n}\nexport interface GetFilterSelectionStrategyParameters {\n    context: CardContainerContext\n}\nexport interface InitFilterSelectionParamsParameters {\n    context: CardContainerContext\n}\nexport interface ClickCardParameters {\n    card: CardData,\n    context: CardContainerContext\n}\nexport interface ClickCardButtonParameters {\n    data: { [key: string]: unknown } | undefined,\n    card: CardData,\n    context: CardContainerContext\n}\nexport interface TextFieldChangedParameters {\n    card: CardData,\n    context: CardContainerContext,\n    field: BaseInput<any>\n}\nexport interface CheckSpecialInteractionContextParameters {\n    context: CardContainerContext\n}\nexport type CardDataServiceActionParameters = CheckUpdateParameters | FetchParameters | FilterParameters | CreateCardsParameters | GetFilterSelectionAdditionalParamsParameters | GetFilterSelectionStrategyParameters | InitFilterSelectionParamsParameters | ClickCardParameters | ClickCardButtonParameters | TextFieldChangedParameters | CheckSpecialInteractionContextParameters;\nexport enum CardDataServiceAction {\n    CheckUpdate = \"CheckUpdate\",\n    Fetch = \"Fetch\",\n    Filter = \"Filter\",\n    CreateCards = \"CreateCards\",\n    GetFilterSelectionAdditionalParams = \"GetFilterSelectionAdditionalParams\",\n    GetFilterSelectionStrategy = \"GetFilterSelectionStrategy\",\n    InitFilterSelectionParams = \"InitFilterSelectionParams\",\n    ClickCard = \"ClickCard\",\n    ClickCardButton = \"ClickCardButton\",\n    TextFieldChanged = \"TextFieldChanged\",\n    CheckSpecialInteractionContext = \"CheckSpecialInteractionContext\"\n}\n\nclass CardDataServiceClass {\n    private _Connections = new Map<string, BaseCardDataAppConnection>();\n    private _Containers = new Array<BaseCardContainer>();\n    private _dragActive = false;\n\n    constructor() {\n        this._RegisterUpdateEvents();\n    }\n\n    private async _RegisterUpdateEvents(): Promise<void> {\n        const call = async (event: CardDataUpdateEvent, eventParameters: unknown) => {\n            // TODO PH [2025|April|16] - add option to sort the container that are filtering each other and await fetches of those\n\n            // Drop/placer completion always re-enables refreshes (defensive against a missed end-drag)\n            // and is itself never suppressed — this is the single refresh that reflects the placed article.\n            // if (event === CardDataUpdateEvent.VPlacerCancel) {//event === CardDataUpdateEvent.LastPOLoaded || \n            //     console.log(\"defensively disabled by\", event);\n            //     this._dragActive = false;\n            // }\n\n            // While an article is dragged the placer fires SelectionChanged/DeleteLO/price events on\n            // every tick; refreshing a card list on each rebuilds its card DOM and resets the\n            // scroll-aware container, causing the constant top<->previous jitter. Refresh once after the drop.\n            if (this._dragActive) {\n                return;\n            }\n\n            for (const container of this._Containers) {\n                const connection = this._Connections.get(container.Settings.Fetch.method);\n                if (connection == undefined) continue;\n                const update = await connection.CheckUpdate(event, eventParameters, container.Context);\n                await container.CheckUpdate(update);\n            }\n        };\n        const RegisterEvent = (event: {\n            register: (callback: (parameters?: unknown) => void) => void;\n            unregister: (callback: (parameters?: unknown) => void) => void;\n        }, name: CardDataUpdateEvent, additionalEvent?: (eventParameters: unknown) => void) => {\n            event.register((parameters: unknown) => {\n                call(name, parameters);\n                if (additionalEvent) {\n                    additionalEvent(parameters);\n                }\n            });\n        };\n\n        await WebViewerService.IsAppReady;\n\n        WebViewerService.on(\"webui.start-drag\", () => { console.log(\"drag start\"); this._dragActive = true; });\n        WebViewerService.on(\"webui.end-drag\", () => { console.log(\"drag end\"); this._dragActive = false; });\n\n        RegisterEvent(EventFactoryService.LastPOLoaded, CardDataUpdateEvent.LastPOLoaded);\n        RegisterEvent(EventFactoryService.VPlacerCancel, CardDataUpdateEvent.VPlacerCancel);\n        RegisterEvent(EventFactoryService.RefreshPropertyPanel, CardDataUpdateEvent.RefreshPropertyPanel);\n        RegisterEvent(EventFactoryService.SelectionChanged, CardDataUpdateEvent.SelectionChanged, async (eventParameters: unknown) => {\n            for (const container of this._Containers) {\n                if (container.Settings.Behaviour[\"connection-defined-interaction-on-selection-change\"] == false) {\n                    continue;\n                }\n\n                const connection = this._Connections.get(container.Settings.Fetch.method);\n                if (connection == undefined) {\n                    continue;\n                }\n\n                const preEvents = container.Settings.Card[\"app-connection-settings\"][\"pre-selection-change-events\"] as Array<EventHandlerEvent> | undefined;\n                if (preEvents && preEvents.length > 0) {\n                    for (const e of preEvents) await EventService.emitAsync(e.id as never, (e.data ?? {}) as never);\n                }\n\n                connection.InteractionOnSelectionChange(container.Context, eventParameters as CardContainerSelectionChangeEvent);\n\n                const postEvents = container.Settings.Card[\"app-connection-settings\"][\"post-selection-change-events\"] as Array<EventHandlerEvent> | undefined;\n                if (postEvents && postEvents.length > 0) {\n                    for (const e of postEvents) await EventService.emitAsync(e.id as never, (e.data ?? {}) as never);\n                }\n            }\n        });\n        RegisterEvent(EventFactoryService.CustomIcon_ExecuteCustomEvent, CardDataUpdateEvent.CustomIcon_ExecuteCustomEvent, async (eventParameters: unknown) => {\n            for (const container of this._Containers) {\n                if (container.Settings.Behaviour[\"connection-defined-interaction-on-icon-button\"] == false) {\n                    continue;\n                }\n\n                const connection = this._Connections.get(container.Settings.Fetch.method);\n                if (connection == undefined) {\n                    continue;\n                }\n\n                const preEvents = container.Settings.Card[\"app-connection-settings\"][\"pre-icon-button-events\"] as Array<EventHandlerEvent> | undefined;\n                const postEvents = container.Settings.Card[\"app-connection-settings\"][\"post-icon-button-events\"] as Array<EventHandlerEvent> | undefined;\n                connection.InteractionOnIconButton(container.Context, eventParameters as CardContainerCustomIconButtonEvent, preEvents, postEvents);\n            }\n        });\n        RegisterEvent(EventFactoryService.DeleteLO_after, CardDataUpdateEvent.DeleteLO_after);\n        RegisterEvent(EventFactoryService.PropTransfer_afterDelete, CardDataUpdateEvent.PropTransfer_afterDelete);\n        RegisterEvent(EventFactoryService.PropTransfer_afterSet, CardDataUpdateEvent.PropTransfer_afterSet);\n        RegisterEvent(EventFactoryService.PropTransfer_beforeDelete, CardDataUpdateEvent.PropTransfer_beforeDelete);\n        RegisterEvent(EventFactoryService.PropTransfer_beforeSet, CardDataUpdateEvent.PropTransfer_beforeSet);\n        RegisterEvent(EventFactoryService.WallFitting_begin, CardDataUpdateEvent.WallFitting_begin);\n        RegisterEvent(EventFactoryService.WallFitting_end, CardDataUpdateEvent.WallFitting_end);\n        RegisterEvent(EventFactoryService.WallFitting_cancel, CardDataUpdateEvent.WallFitting_cancel);\n        RegisterEvent(EventFactoryService.ChangePrice, CardDataUpdateEvent.ChangePrice);\n        RegisterEvent(EventFactoryService.DeleteLO_before, CardDataUpdateEvent.DeleteLO_before);\n        RegisterEvent(EventFactoryService.CameraOnDirty, CardDataUpdateEvent.CameraOnDirty);\n        RegisterEvent(EventFactoryService.CameraOnStart, CardDataUpdateEvent.CameraOnStart);\n        RegisterEvent(EventFactoryService.CameraOnEnd, CardDataUpdateEvent.CameraOnEnd);\n        RegisterEvent(EventFactoryService.SendEvent, CardDataUpdateEvent.SendEvent);\n        RegisterEvent(EventFactoryService.ModalWindowShown, CardDataUpdateEvent.ModalWindowShown);\n        RegisterEvent(EventFactoryService.ModalWindowHidden, CardDataUpdateEvent.ModalWindowHidden);\n        // RegisterEvent(EventFactoryService.OpenModal, CardDataUpdateEvent.OpenModal);\n    }\n\n    public get Containers(): Array<BaseCardContainer> {\n        return this._Containers;\n    }\n\n    public Register(cardContainer: BaseCardContainer): void {\n        //todo Update Events\n        //todo clean up\n        if (!this._Containers.includes(cardContainer)) {\n            this._Containers.push(cardContainer);\n        }\n    }\n\n    public Remove(cardContainer: BaseCardContainer): void {\n        const index = this._Containers.indexOf(cardContainer);\n        if (index < 0) return;\n        this._Containers.splice(index, 1);\n    }\n\n    public RegisterAppConnection(service: BaseCardDataAppConnection) {\n        if (this._Connections.has(service.Method)) {\n            console.error(\"CardDataService> RegisterAppConnection failed! The same AppConnection can not be registered twice!\");\n            return;\n        }\n        this._Connections.set(service.Method, service);\n    }\n\n    public GetAppConnection(method_: string): BaseCardDataAppConnection | undefined {\n        return this._Connections.get(method_);\n    }\n    public TriggerAction(method_: string | undefined | unknown, action_: CardDataServiceAction, parameters_: CardDataServiceActionParameters): any {\n        if (method_ == undefined) {\n            return undefined;\n        }\n        if (typeof method_ != \"string\") {\n            return undefined;\n        }\n        const connection = this.GetAppConnection(method_);\n        if (connection == undefined) {\n            return undefined;\n        }\n\n        switch (action_) {\n            case CardDataServiceAction.CheckUpdate:\n                return this.TriggerCheckUpdate(connection, parameters_ as CheckUpdateParameters);\n            case CardDataServiceAction.Fetch:\n                return this.TriggerFetch(connection, parameters_ as FetchParameters);\n            case CardDataServiceAction.Filter:\n                return this.TriggerFilter(connection, parameters_ as FilterParameters);\n            case CardDataServiceAction.CreateCards:\n                return this.TriggerCreateCards(connection, parameters_ as CreateCardsParameters);\n            case CardDataServiceAction.GetFilterSelectionAdditionalParams:\n                return this.TriggerGetFilterSelectionAdditionalParams(connection, parameters_ as GetFilterSelectionAdditionalParamsParameters);\n            case CardDataServiceAction.GetFilterSelectionStrategy:\n                return this.TriggerGetFilterSelectionStrategy(connection, parameters_ as GetFilterSelectionStrategyParameters);\n            case CardDataServiceAction.InitFilterSelectionParams:\n                return this.TriggerInitFilterSelectionParams(connection, parameters_ as InitFilterSelectionParamsParameters);\n            case CardDataServiceAction.ClickCard:\n                return this.TriggerClickCard(connection, parameters_ as ClickCardParameters);\n            case CardDataServiceAction.ClickCardButton:\n                return this.TriggerClickCardButton(connection, parameters_ as ClickCardButtonParameters);\n            case CardDataServiceAction.TextFieldChanged:\n                return this.TriggerTextFieldChanged(connection, parameters_ as TextFieldChangedParameters);\n            case CardDataServiceAction.CheckSpecialInteractionContext:\n                return this.TriggerCheckSpecialInteractionContext(connection, parameters_ as CheckSpecialInteractionContextParameters);\n            default:\n                return undefined;\n        }\n    }\n\n    public async TriggerCheckUpdate(connection: BaseCardDataAppConnection, parameters_: CheckUpdateParameters): Promise<CardContainerUpdate> {\n        return await connection.CheckUpdate(parameters_.event, parameters_.eventParameters, parameters_.context);\n    }\n    public async TriggerFetch(connection: BaseCardDataAppConnection, parameters_: FetchParameters): Promise<FetchResult> {\n        return await connection.Fetch(parameters_.context);\n    }\n    public TriggerFilter(connection: BaseCardDataAppConnection, parameters_: FilterParameters): FetchResult {\n        return connection.Filter(parameters_.unfiltered, parameters_.context, parameters_.active);\n    }\n    public TriggerCreateCards(connection: BaseCardDataAppConnection, parameters_: CreateCardsParameters): Map<CardDataLevelKey, CardDataLevel> {\n        return connection.CreateCards(parameters_.filtered, parameters_.context);\n    }\n    public TriggerGetFilterSelectionAdditionalParams(connection: BaseCardDataAppConnection, parameters_: GetFilterSelectionAdditionalParamsParameters): { [key: string]: unknown } | undefined {\n        return connection.GetFilterSelectionAdditionalParams(parameters_.context);\n    }\n    public TriggerGetFilterSelectionStrategy(connection: BaseCardDataAppConnection, parameters_: GetFilterSelectionStrategyParameters): FilterSelectionStrategy {\n        return connection.GetFilterSelectionStrategy(parameters_.context);\n    }\n    public TriggerInitFilterSelectionParams(connection: BaseCardDataAppConnection, parameters_: InitFilterSelectionParamsParameters): void {\n        return connection.InitFilterSelectionParams(parameters_.context);\n    }\n    public TriggerClickCard(connection: BaseCardDataAppConnection, parameters_: ClickCardParameters) {\n        return connection.Click(parameters_.card, parameters_.context);\n    }\n    public TriggerClickCardButton(connection: BaseCardDataAppConnection, parameters_: ClickCardButtonParameters) {\n        return connection.ClickCardButton(parameters_.data, parameters_.card, parameters_.context);\n    }\n    public TriggerTextFieldChanged(connection: BaseCardDataAppConnection, parameters_: TextFieldChangedParameters) {\n        return connection.TextFieldChanged(parameters_.card, parameters_.context, parameters_.field);\n    }\n    public async TriggerCheckSpecialInteractionContext(connection: BaseCardDataAppConnection, parameters_: CheckSpecialInteractionContextParameters): Promise<CardContainerSpecialInteractionContext> {\n        return await connection.CheckSpecialInteractionContext(parameters_.context);\n    }\n\n\n    public GetMethod(context: CardContainerContext): CardFetchMethod {\n        if (context.settings.Fetch.method == CardFetchMethod.ConfiguratorFormFilter) {\n            if (context.settings.Fetch.parameters.method != undefined && (context.settings.Fetch.parameters.method as string).length > 0) {\n                return context.settings.Fetch.parameters.method as CardFetchMethod;\n            }\n        }\n        return context.settings.Fetch.method;\n    }\n\n\n\n    public async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n        const connection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n        if (connection == undefined) return CardContainerUpdate.NONE;\n        return connection.CheckUpdate(event, eventParameters, context);\n    }\n\n    public async Fetch(context: CardContainerContext): Promise<FetchResult> {\n        const fetchConnection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n        if (fetchConnection == undefined) {\n            console.error(\"Fetch Method does not exist!: \" + context.settings.Fetch.method);\n            return {};\n        }\n\n        try {\n            const result = await fetchConnection.Fetch(context);\n            return result;\n        } catch (error) {\n            console.warn(\"Fetch Failed! error: \" + error);\n        }\n        return {};\n    }\n\n    public Filter(unfiltered: FetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): FetchResult {\n        const filterConnection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n        if (filterConnection == undefined) return {};\n\n        const filtered = filterConnection.Filter(unfiltered, context, active);\n        return filtered;\n    }\n\n    public CreateCards(filtered: FetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n        const createConnection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n        if (createConnection == undefined) return new Map<CardDataLevelKey, CardDataLevel>();\n\n        const cards = createConnection.CreateCards(filtered, context);\n        return cards;\n    }\n\n    public GetFilterSelectionAdditionalParams(context: CardContainerContext): { [key: string]: unknown } | undefined {\n        const connection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n        if (connection == undefined) return undefined;\n\n        return connection.GetFilterSelectionAdditionalParams(context);\n    }\n\n    public GetFilterSelectionStrategy(context: CardContainerContext): FilterSelectionStrategy {\n        const connection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n        if (connection == undefined) return FilterSelectionStrategy.NONE;\n\n        return connection.GetFilterSelectionStrategy(context);\n    }\n\n    public InitFilterSelectionParams(context: CardContainerContext): void {\n        const connection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n        if (connection) {\n            connection.InitFilterSelectionParams(context);\n        }\n    }\n\n    public async WaitForAllCardContainerFetchPromises(): Promise<void> {\n        for (const container of this._Containers) {\n            await container.CheckFetchPromise();\n            await container.updateComplete;\n        }\n    }\n\n    public GetFormattedCardDragData(card: CardData, context: CardContainerContext): IDragOptions | undefined {\n        if (context.settings.Fetch.method.length < 1) {\n            console.error(\"FetchCardDragData Error! No method in fetch settings!\", \"settings:\", context.settings, \"card:\", card);\n            return undefined;\n        }\n\n        const fetchConnection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n        if (fetchConnection) {\n            return fetchConnection.GetFormattedDragData(card, context);\n        }\n    }\n\n    public async ClickCard(card: CardData, context: CardContainerContext) {\n        if (!context.states.PreventAppConnectionClick) {\n            const fetchConnection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n            if (fetchConnection) {\n                await fetchConnection.Click(card, context);\n            }\n        }\n    }\n\n    public async ClickCardButton(data: { [key: string]: unknown } | undefined, card: CardData, context: CardContainerContext) {\n        const fetchConnection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n        if (fetchConnection) {\n            await fetchConnection.ClickCardButton(data, card, context);\n        }\n    }\n\n    public async TextFieldChanged(card: CardData, context: CardContainerContext, input: ICardDataInputSource) {\n        const fetchConnection = this._Connections.get(context.settings.Fetch.method);\n        if (fetchConnection) {\n            await fetchConnection.TextFieldChanged(card, context, input);\n        }\n    }\n\n    private MakeCardClickString(data_: unknown): string {\n        if (data_ == undefined) return \"\";\n        if (typeof data_ == \"object\" && data_ != undefined) return JSON.stringify(data_);\n        if (typeof data_ != \"string\") return data_.toString();\n        return data_;\n    }\n\n    public PrepareClickedCardEventData(data: EventHandlerEventData, clickData: {\n        [key: string]: unknown\n    }, additionalClickDataKeys?: Array<{ key: string, data: unknown }>): EventHandlerEventData {\n        if (clickData == undefined) return data;\n\n        const replaceData = clickData as { [key: string]: unknown };\n        const clickDataKeys = [\"level-key\", \"next-level-key\", \"previous-level-key\", \"priority\", \"strategy\"];\n        if (additionalClickDataKeys != undefined) {\n            for (const data of additionalClickDataKeys) {\n                clickDataKeys.push(data.key);\n                replaceData[data.key] = data.data;\n            }\n        }\n\n        let dataString = JSON.stringify(data);\n        for (const key of clickDataKeys) {\n            dataString = dataString.replaceAll(\"|\" + key + \"|\", this.MakeCardClickString(clickData[key]));\n        }\n        dataString = dataString.replaceAll(new RegExp(\"[|][a-z]+[|]\", \"gi\"), \"\");//remove any replacers without value. i to make it ignore case (shorten & simplify regular expression)\n        data = JSON.parse(dataString);\n        return data;\n    }\n\n    public PrepareClickedCardEventsData(event: Array<EventHandlerEvent>, clickData: {\n        [key: string]: unknown\n    }, additionalClickDataKeys?: Array<{ key: string, data: unknown }>) {\n        const newArray = new Array<EventHandlerEvent>();\n        for (const cardAccordionEvent of event) {\n            if (cardAccordionEvent.data) {\n                newArray.push({\n                    id: cardAccordionEvent.id,\n                    data: this.PrepareClickedCardEventData(cardAccordionEvent.data, clickData, additionalClickDataKeys)\n                });\n            }\n        }\n        return newArray;\n    }\n\n    public async CheckSpecialInteractionContext(context: CardContainerContext): Promise<CardContainerSpecialInteractionContext> {// check though app connection if any of the elements displayed in cards represents an object planned in the scene (or more specific constraints through parameters)\n        if (context.states.HandleAppConnectionPlanningSituationState) {\n            const fetchConnection: BaseCardDataAppConnection | undefined = this._Connections.get(context.settings.Fetch.method);\n            if (fetchConnection) {\n                return fetchConnection.CheckSpecialInteractionContext(context);\n            }\n        }\n        return CardContainerSpecialInteractionContext.ERROR;\n    }\n}\n\nexport const CardDataService = new CardDataServiceClass();\n","import type { CardContainerBackButtonComponent } from \"../components/standard/card-container/controls\";\nimport type { BaseCardContainer } from \"../components/standard/card-container/base/base-card-container\";\nimport { CardContainersShared } from \"../components/standard/card-container/internals/card-containers-shared-data\";\nimport { ComponentService } from \"./component.service\";\nimport { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\nimport { CardContainerChildWildcard } from \"../models/card-container\";\nimport { CardDataService } from \"./card.data.service\";\nimport type { RootLevelSelectionCardContainerComponent } from \"../components/standard/card-container/containers/root-level-selection-card-container.component\";\n\nexport interface RefreshCardContainersParams {\n    refetch?: boolean\n    includeHidden?: boolean,\n    awaitFetches?: boolean\n    forceSwapSelectedProgramBeforeRefetch?: string\n    selectionResultFilterResetTargets?: CardContainerChildWildcard[]\n    selectionResultFilterResetExcludes?: CardContainerChildWildcard[]\n}\n\nexport class CardContainerEventContainer {\n\n    public static async RefreshAll(params: RefreshCardContainersParams) {\n        const {\n            refetch,\n            awaitFetches = true,\n            includeHidden,\n            forceSwapSelectedProgramBeforeRefetch = \"\",\n            selectionResultFilterResetTargets = [],\n            selectionResultFilterResetExcludes = []\n        } = params;\n\n        if(awaitFetches) {\n            await CardDataService.WaitForAllCardContainerFetchPromises();\n        }\n\n        let components = CardContainersShared.AllContainers;\n        if (selectionResultFilterResetTargets) {\n            const resetTargetElements = new Array<BaseCardContainer>();\n            for (const resetTarget of selectionResultFilterResetTargets) {\n                resetTargetElements.push(...(ComponentService.findAll(resetTarget.tag, resetTarget.query) as Array<BaseCardContainer>));\n            }\n            for (const resetTargetElement of resetTargetElements) {\n                if (resetTargetElement.Filter != undefined) {\n                    resetTargetElement.Filter.Reset(false, resetTargetElement.Context);\n                }\n            }\n        }\n        if (selectionResultFilterResetExcludes) {\n            const excluded: HTMLElement[] = [];\n            for (const excludedResetTarget of selectionResultFilterResetExcludes) {\n                excluded.push(...(ComponentService.findAll(excludedResetTarget.tag, excludedResetTarget.query) as Array<BaseCardContainer>));\n            }\n            components = components.filter(x => !excluded.includes(x));\n        }\n\n        for (const component of components) {\n            if (component.hideElement && includeHidden == false) continue;\n\n            if (refetch) {\n                if (forceSwapSelectedProgramBeforeRefetch !== undefined && forceSwapSelectedProgramBeforeRefetch !== \"\") {\n                    component.Settings.Program = forceSwapSelectedProgramBeforeRefetch;\n                }\n                component.Refetch();\n            } else {\n                component.requestUpdate();\n            }\n        }\n    }\n\n    public static RefreshBackButtons(): void {\n        const backButtons = ComponentService.findAll(\"fv-card-container-back-button\") as Array<CardContainerBackButtonComponent>;\n        for (const backButton of backButtons) {\n            backButton.requestUpdate();\n        }\n    }\n    public static ResetSelectionResultFilter(data: EventHandlerEventData): void {\n        const query: string | undefined = data.query ? data.query as string : undefined;\n        const cardContainer = ComponentService.find((data.tag as string), query) as BaseCardContainer;\n        if (cardContainer && cardContainer.Filter != undefined) {\n            cardContainer.Filter.Reset(true, cardContainer.Context);\n        }\n    }\n    public static SetShowBeforeSlot(data: EventHandlerEventData): void {\n        const query: string | undefined = data.query ? data.query as string : undefined;\n        const cardContainer = ComponentService.find((data.tag as string), query) as BaseCardContainer;\n        if (cardContainer) {\n            cardContainer.ShowBeforeSlot = data.state as boolean | undefined;\n        }\n    }\n    public static SetShowIdSlot(data: EventHandlerEventData): void {\n        const query: string | undefined = data.query ? data.query as string : undefined;\n        const cardContainer = ComponentService.find((data.tag as string), query) as BaseCardContainer;\n        if (cardContainer) {\n            cardContainer.ShowIdSlot = data.state as boolean | undefined;\n        }\n    }\n    public static Clear(data: EventHandlerEventData): void {\n        const query: string | undefined = data.query ? data.query as string : undefined;\n        const containers = ComponentService.findAll((data.tag as string), query) as Array<BaseCardContainer>;\n        if (containers) {\n            for (const container of containers) {\n                if (container.Filter) {\n                    container.Filter.Reset(true, container.Context);\n                }\n                container.requestUpdate();\n            }\n        }\n    }\n    public static ReTriggerSingleEntrySkip(data: EventHandlerEventData): void {\n        const query: string | undefined = data.query ? data.query as string : undefined;\n        const containers = ComponentService.findAll((data.tag as string), query) as Array<BaseCardContainer>;\n        if (containers) {\n            for (const container of containers) {\n                if ((container as RootLevelSelectionCardContainerComponent).ReTriggerSingleEntrySkip) {\n                    (container as RootLevelSelectionCardContainerComponent).ReTriggerSingleEntrySkip();\n                }\n            }\n        }\n    }\n    public static Refetch(data: EventHandlerEventData): void {\n        const query: string | undefined = data.query ? data.query as string : undefined;\n        const containers = ComponentService.findAll((data.tag as string), query) as Array<BaseCardContainer>;\n        if (containers) {\n            for (const container of containers) {\n                const previousValue = container?.Context?.settings?.Fetch?.parameters[\"clear-cache\"];// previousValue usually == undefined is intended behaviour!\n                if (data[\"clear-cache\"]) {\n                    container.Context.settings.Fetch.parameters[\"clear-cache\"] = true;\n                }\n                container.Refetch().then(()=>{\n                    if (data[\"clear-cache\"]) {\n                        container.Context.settings.Fetch.parameters[\"clear-cache\"] = previousValue;\n                    }\n                });\n            }\n        }\n    }\n    public static ClickCard(data: EventHandlerEventData) {\n        if (data[\"indexInList\"] == undefined) {\n            console.warn(\"triggered card-containers:click-card without providing the card-index to click!\");\n            return;\n        }\n        const index = data[\"indexInList\"] as number;\n        const query: string | undefined = data.query ? data.query as string : undefined;\n        const containers = ComponentService.findAll((data.tag as string), query) as Array<BaseCardContainer>;\n        if (containers && containers.length > 0) {\n            for (const container of containers) {\n                container.TriggerCardClick(index, data[\"ensure-inactive\"] as boolean);\n            }\n            return;\n        }\n        console.warn(\"[card-containers:click-card]: Target(s) could not be found! tag:\", data.tag, \"query:\", data.query);\n    }\n}\n","export interface IGetTextParams {\n    TID?: string; // TextID\n    GTN?: string; // GlobalTableName\n    Manu?: string\n    Prog?: string\n\n    isArticle?: number;\n    onlyManufacturerText?: number;\n}\n\nexport interface IImageResponse {\n    imgPath: string;\n}\n\nexport interface ITextResponse {\n    T: string;\n    key?: string;\n}\n\nexport interface IDimensionInfo {\n    dimensions: {\n        width: Array<number>\n        height: Array<number>\n        depth: Array<number>\n    }\n}\n\nexport interface IEquipmentData {\n    Active: boolean,\n    ArtNr: string,\n    artText: string,\n    bg: string,\n    Cats: Array<string>,\n    CatString: string,\n    EntryValidID: string,\n    frontState: number,\n    HasLighting: number,\n    hideDelete: number,\n    hideEquipment: number,\n    hideFront: number,\n    hideInsert: number,\n    hideMove: number,\n    hideRefresh: number,\n    id: string,\n    imgName: string,\n    InsertType: string,\n    isNewArticle: number,\n    jsAN: string,\n    jsaNumber: string,\n    NotClickable: number,\n    PT_ID: string,\n    ShowArtNo: number,\n    typG: string,\n}\n\nexport interface ICategoryData {\n    id: string\n    name: string\n    priority: number,\n    children?: Array<ICategoryData>,\n    parent?: string,\n    order?: number\n}\n\nexport interface IKataTreeData {\n    definedEquipmentFilterCategories: Array<ICategoryData>;\n    definedFilterCategories: Array<ICategoryData>;\n    FittingInfo: Array<IFittingData>;\n    allKataPages: Array<ICategoryData>;\n    kataPages: Array<ICategoryData>;\n    distinctProgCatsFromDb: Array<string>;\n}\n\nexport interface IRangeInDimensions {\n    groups: {\n        categories: string[];\n        articles: string[];\n        dx: number;\n        dy: number;\n        dz: number;\n    }[]\n}\n\nexport interface IProgramLevelTree {\n    level1: Array<{\n        id: string\n        level2?: Array<{\n            id: string\n            program: string\n            name: string\n            order: number\n        }>\n        program?: string\n        name: string\n        order: number\n    }>\n}\n\nexport interface IFittingData {\n    artNr: string\n    jsAN: string\n}\n\nexport interface IPlaceWallElementNextCenterParams {\n    type: \"DOOR\" | \"WINDOW\" | \"ELECTRICAL\" | \"PLUMBING\" | \"VENTILATION\" | \"COMMUNICATION\" | \"HEATING\",\n    wallinstanceident: number,\n    article: string,\n    width?: number,\n    height?: number,\n    parapet?: number,\n    hinge?: \"L\" | \"R\",\n    frame?: \"I\" | \"A\"\n}\n\nexport interface IStartKataPageFilterOptions {\n    filterBySceneArticles: boolean;\n}\n\nexport interface IKataPageData {\n    Modules: Array<IModuleData<IArticleData>> | Array<IModuleData<IEquipmentData>>;\n}\n\nexport interface IModuleData<T> {\n    Articles: Array<Array<T>>;\n    Index: number;\n    ModuleCaption: string;\n    UserVal: string;\n    infoText: string;\n    labelTextB: string;\n    labelTextH: string;\n    labelTextT: string;\n    moduleId: string;\n    templ: string;\n}\n\nexport interface IArtValue {\n    id: string\n    text: string\n    unit: string\n    values: string[]\n}\n\nexport interface IArticleData {\n    Allowed: string\n    Anschl: string\n    ArtCategories: string[]\n    ArtNr: string\n    ArtNrAlternativeERP: string\n    ArtNrAnschlag: string\n    artPropVars: any[]\n    artText: string\n    artPrice: number\n    artTextLong: string\n    ArtTexts: string[]\n    ArtValues: IArtValue[]\n    CatRel: string\n    CatString: string\n    CftCL: string\n    CftCR: string\n    CftType: string\n    CftTypeUnique: string\n    ClassID: string\n    Des: string\n    Dispdx: string\n    Dispdy: string\n    Dispdz: string\n    dxma: string\n    dxmi: string\n    dyma: string\n    dymi: string\n    dzma: string\n    dzmi: string\n    entityT: string\n    EntryValidID: string\n    FilterByArtFilter: string\n    FittingString: string\n    forceAutoGenImages: number\n    GA: string\n    HasClassValue: string\n    HasCrossArticle: string\n    hasHingeChange: number\n    HasLighting: number\n    HideByCategory: string\n    hideEquipment: number\n    hideXbyArtpropDataVars: number\n    hideYbyArtpropDataVars: number\n    hideZbyArtpropDataVars: number\n    id: string\n    IDM: string\n    imgName: string\n    InsertType: string\n    InternalArt: string\n    KataConstGroup: string\n    kataDepth: string   // removed?\n    kataHeight: string  // removed?\n    kataWidth: string   // removed?\n    Manu: string\n    ManuName: string\n    MMdx: string\n    MMdy: string\n    MMdz: string\n    NotClickable: number\n    OffsetDx: string\n    OffsetDy: string\n    OffsetDz: string\n    PoString: string\n    Prog: string\n    ProgName: string\n    PropTransString: string\n    ShoppingCartString: string\n    ShowArtNo: number\n    TypG: string\n    VPlacerID: string\n}\n\nexport interface ICatalogEnvironment {\n    association: string,\n    associationList: Array<{ id: string, name: string }>,\n    catalogPage: string,\n    catalogPages: Array<{ id: string, indention: number, name: string, page: string, style: string }>,\n    catalogTitle: string,\n    hasBigCalcInfo: number,\n    language: string,\n    languageList: Array<string>,\n    level1: string,\n    level1Entries: Array<{ id: string, name: string }>,\n    level2: string,\n    level2Entries: Array<{ id: string, name: string }>,\n    logoImagePath: string,\n    manufacturer: string,\n    manufacturerHash: string,\n    manufacturerList: Array<{ id: string, name: string }>,\n    pricingCountries: Array<string>,\n    pricingCountry: string,\n    program: string,\n    programHash: string\n}\n\nexport interface IRawCatConfig {\n    cat_config: Array<string>\n}\n\nexport interface ICatConfig {\n    category: string\n    module: string,\n    attributes: string[],\n    defaultArt: string\n    group: string\n}\n\nexport interface IProgListProg {\n    fromManu: string,\n    fromManuHash: string\n    fromProg: string\n    fromProgHash: string\n    manu: string\n    manuHash: string\n    name: string\n    pageKata: string\n    progHash: string\n    refs: unknown\n    text: string\n}\n\nexport interface ILoadArticleParams {\n    artNr: string\n    placingDirection?: string\n    objectHandling?: string\n    program?: string\n    manufacturer?: string\n    extraWidth?: string\n    extraDepth?: string\n    extraHeight?: string\n    additionalInfo_0?: string\n    additionalInfo_1?: string\n    additionalInfo_2?: string\n    additionalInfo_3?: string\n    additionalInfo_4?: string\n    tableID?: string\n    hingeChanged?: string\n}\n\nexport enum eCatalogFilterState {\n    DISABLED = 0,\n    SELECTED = 1,\n    IMPLICIT = 2,\n    EXPLICIT = 3\n};\n\nexport interface ICreateStdCatalogFilterCtxRequest {\n    ctx: string;\n    items: [string, string[]][];\n    filter: [string, string[]][];\n    selection?: string[]\n}\n\nexport interface IDisposeCatalogFilterCtxRequest {\n    ctx: string;\n}\n\nexport interface IRunStdCatalogFilterCtxRequest {\n    ctx: string;\n    selection: string[]\n}\n\nexport interface ICreateStdCatalogFilterCtxResponse extends Partial<IRunStdCatalogFilterCtxResponse> {\n    ctx: string;\n}\n\nexport interface IRunStdCatalogFilterCtxResponse {\n    filterGroups: {\n        [groupId: string]: {\n            id: string;\n            state: eCatalogFilterState;\n        }[];\n    };\n    itemGroups: {\n        filter: string[],\n        items: string[];\n    }[];\n}\n\nexport interface IDisposeCatalogFilterCtxResponse {\n    succsess: boolean;\n}\n","import {IModifyPropertyOptions} from \"./index\";\n\nexport interface IDragOptions {\n    id: string;\n    type: string | number;\n\n    dragType?: number;\n    mode?: string | number;\n    pickLevel?: number | string;\n    size?: any,\n    extData?: any;\n    options?: IModifyPropertyOptions\n}\n\nexport enum DragDirection {\n    NONE,\n    Horizontal,\n    Vertical\n}\n\nexport enum DragType {\n    ARTICLE = 0,\n    PROPTRANSFER = 1,\n    BY_MODE = 2,\n    FITTING = 3,\n    WALL_FITTING = 4,\n    PROGPROPERTY = 5\n}\n","export const VIH_PLANTYPE_ZUSATZINFO_0 = \"10580\";\nexport const VIH_PLANTYPE_ZUSATZINFO_1 = \"10581\";\nexport const VIH_PLANTYPE_ZUSATZINFO_2 = \"10582\";\nexport const VIH_PLANTYPE_ZUSATZINFO_3 = \"10583\";\nexport const VIH_PLANTYPE_ZUSATZINFO_4 = \"10584\";\nexport const VIH_PLANTYPE_DX = \"10514\";\nexport const VIH_PLANTYPE_DY = \"10515\";\nexport const VIH_PLANTYPE_DZ = \"10516\";\nexport const VIH_PLANTYPE_ANSCHLAG_INITIAL_CHANGED_L = \"11205\";\n\nexport interface IPlacerExtParam {\n    [VIH_PLANTYPE_ZUSATZINFO_0]?: any;\n    [VIH_PLANTYPE_ZUSATZINFO_1]?: any;\n    [VIH_PLANTYPE_ZUSATZINFO_2]?: any;\n    [VIH_PLANTYPE_ZUSATZINFO_3]?: any;\n    [VIH_PLANTYPE_ZUSATZINFO_4]?: any;\n    [VIH_PLANTYPE_DX]?: any;\n    [VIH_PLANTYPE_DY]?: any;\n    [VIH_PLANTYPE_DZ]?: any;\n    [VIH_PLANTYPE_ANSCHLAG_INITIAL_CHANGED_L]?: any;\n}\n\nexport interface IExternalPlacerParameter {\n    manufacturer: string\n    program: string\n    extParameter?: IPlacerExtParam\n    articleNumber: string\n    preventVPlacer?: boolean\n    once?: boolean\n}\n\nexport enum OverrideMode {\n    NONE = 0,\n    RESET = 1,\n    RESET_MANUFACTURER = 2,\n    RESET_ALL = 3\n}\n\nexport interface IPlacerReplaceData {\n    categories: Array<string>,\n    \"replace-limit-manufacturer\"?: Array<string>,\n    \"replace-limit-program\"?: Array<string>,\n    \"align-to-front\": boolean\n}\n\nexport interface IPlacerGroup {\n    id: string;\n    components: string[];\n}\n\nexport interface IPlacerGroupProgramComponent {\n    article: string;\n    cat: string;\n}\n\nexport interface IPlacerGroupProgram {\n    manu: string;\n    prog: string;\n    components: IPlacerGroupProgramComponent[];\n}\n\nexport interface ICreatePlacerGroupRequest {\n    groupId: string;\n    components: {\n        [key: string]: {\n            manu: string;\n            prog: string;\n            article: string;\n        }\n    };\n    resetScene?: boolean;\n}\n\nexport interface IPossiblePlacerGroupResponse {\n    groups: IPlacerGroup[];\n    programs: IPlacerGroupProgram[];\n}\n","import {IProgPropertyManufacturer} from \"./properties.types\";\n\nexport interface IContextTargetFilter {\n    article: string;\n}\n\nexport interface IContextInitializer {\n    type: string;\n}\n\nexport interface IArticleInitializer extends IContextInitializer {\n    type: \"art\";\n    article: string;\n}\n\nexport interface IVirtualArticleInitializer extends IContextInitializer {\n    type: \"vart\";\n    article: string;\n}\n\nexport interface IPropTransferInitializer extends IContextInitializer {\n    type: \"ptm\";\n    ptId: string;\n}\n\nexport interface IAllInitializer extends IContextInitializer {\n    type: \"all\";\n}\n\nexport interface IContextInitOptions {\n    initializer?: IVirtualArticleInitializer | IArticleInitializer | IPropTransferInitializer | IAllInitializer;\n    filter?: IContextTargetFilter;\n}\n\nexport enum ContextFilterStrategy {\n    ALL = 0,\n    GLOBAL = 1,\n    LOCAL = 2\n}\n\nexport interface IProgContextInitData {\n    contextId: string,\n    initializer?: IContextInitializer\n    manufacturer?: string\n    program?: string\n    filter?: IContextTargetFilter\n}\n\nexport interface IInitProgContextParameters {\n    manufacturer?: string\n    program?: string\n    contextInfo?: IProgContextInitData[],\n    useRelevant?: boolean\n    useSelection?: boolean\n    instanceIdents?: Array<number>\n    ignoreAccess?: boolean,\n}\n\nexport interface IGetProgContextParameters extends IInitProgContextParameters{\n    filterStrategy?: ContextFilterStrategy\n}\n\nexport interface IDisposeContextParameters {\n    contextIds: Array<string>;\n}\n\nexport interface IProgPropertyContext extends IProgPropertyManufacturer {\n    contextId: string;\n}\n","export enum ZoomType {\n    ZOOMAUTO_EXTENDEDAPOINT,\n    ZOOMAUTO_EXTENDEDDIR,\n    ZOOMAUTO_FRONTCLIP,\n    ZOOMAUTO_ROTATE2PI,\n    ZOOMAUTO_ORTHOCLIP,\n    ZOOMAUTO_ZOOMFACTOR,\n    ZOOMAUTO_ORTHOFRONT,\n    ZOOMAUTO_PANUPDOWN,\n    ZOOMAUTO_EXTENDEDCURDIR,\n    ZOOMAUTO_CAM_ROTATEMPV,\n    ZOOMAUTO_CAM_ROTATEMPH,\n    ZOOMAUTO_CAM_ROTATEABOUTMARKED,\n    ZOOMAUTO_CAM_ROTATEEYELEFTRIGHT,\n    ZOOMAUTO_CAM_ROTATEEYEUPDOWN,\n    ZOOMAUTO_CAM_ROTATELEFTRIGHT,\n    ZOOMAUTO_CAM_MOVELEFTRIGHT,\n    ZOOMAUTO_CAM_MOVEAXIS3D,\n    ZOOMAUTO_CAM_MOVEUPDOWN,\n    ZOOMAUTO_CAM_SETVIEWPOINTMODE\n}\n\nexport enum Perspectives {\n    TopLeftFront = -1000109,\n    TopRightFront = -1000110,\n    TopLeftBack = -1000108,\n    TopRightBack = -1000107,\n    Left = -1000102,\n    Right = -1000101,\n    Front = -1000106,\n    Back = -1000105,\n    Top = -1000103\n}\n\nexport interface IZoomParameters {\n    Perspective: Perspectives\n    direction?: Array<number>,\n    type?: ZoomType,\n    animated?: boolean,\n    offset?: number\n}\n\nexport interface ICameraFitParameters {\n    instanceIdents?: number[]\n    includePOs?: boolean;\n    onlyPrimaryWalls?: boolean;\n    offset?: number;\n}\n\nexport interface IPanCameraParameters {\n    deltaX: number;\n    deltaY: number;\n}\n","import { Perspectives } from \"@dh-software/webui-types\";\n\nexport interface SearchPerspectives {\n    [key: string]: Perspectives;\n}\n\nexport const SEARCH_PERSPECTIVES: SearchPerspectives = {\n    \"TopLeftFront\":  Perspectives.TopLeftFront,\n    \"TopRightFront\": Perspectives.TopRightFront,\n    \"TopLeftBack\":   Perspectives.TopLeftBack,\n    \"TopRightBack\":  Perspectives.TopRightBack,\n    \"Left\":          Perspectives.Left,\n    \"Right\":         Perspectives.Right,\n    \"Front\":         Perspectives.Front,\n    \"Back\":          Perspectives.Back,\n    \"Top\":           Perspectives.Top,\n};\n","import {\n    CommunicationMessageService,\n    ConfiguratorApiService,\n    EventDeclaration,\n    EventService,\n    GoogleAnalyticsService,\n    LocaleService,\n    UtilityService,\n    WebViewerService,\n} from \"@dh-software/webui-api\";\nimport { ConstructionService, EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\nimport {\n    ICameraFitParameters,\n    IConfiguratorApiDataValue,\n    IModifyPropertyOptions,\n    ISwitchTransferLevelOptions,\n    IZoomParameters,\n} from \"@dh-software/webui-types\";\nimport { ConfiguratorApiDataService, IConfiguratorApiFetchEventData } from \"../../utils/configurator-api.data.service\";\nimport { ISetManuProgData, ManuProgService } from \"../../utils/manu-prog.service\";\nimport { DispatchStatePayload } from \"./component-state-event\";\nimport { ComponentService } from \"../../utils/component.service\";\nimport { UtilService } from \"../../utils/util.service\";\nimport { CloudIdService } from \"../../utils/cloud-id.service\";\nimport { SessionStorageService } from \"../../utils/session-storage.service\";\nimport { CardContainerEventContainer } from \"../../utils/card-container-event.service\";\nimport { CardDataService } from \"../../utils/card.data.service\";\nimport { SEARCH_PERSPECTIVES } from \"../perspective/search-perspectives\";\nimport { ISendToCartParameter } from \"../../define/interface\";\nimport { DhElement } from \"../../components/standard/base/base.component\";\n\ndeclare module \"@dh-software/webui-api\" {\n    export interface Events extends EventDeclaration {\n        \"send-cloud-id-to-owner\": never;\n        \"send-to-owner\": EventHandlerEventData;\n        \"camera-zoom-in\": never;\n        \"camera-zoom-out\": never;\n        \"reset-camera\": never;\n        \"undo\": never;\n        \"redo\": never;\n        \"save\": EventHandlerEventData;\n        \"download-generated-file\": EventHandlerEventData;\n        \"download-furncloud-file\": EventHandlerEventData;\n        \"trigger-animation\": never;\n        \"toggle-front-state\": EventHandlerEventData;\n        \"front-state\": EventHandlerEventData;\n        \"toggle-accessoires\": EventHandlerEventData;\n        \"show-ar-modal\": never;\n        \"toggle-dimensions\": never;\n        \"take-screenshot\": EventHandlerEventData;\n        \"show-share-component\": never;\n        \"communicator-message\": EventHandlerEventData;\n        \"open-modal\": EventHandlerEventData;\n        \"close-modal\": EventHandlerEventData;\n        \"toggle-modal\": EventHandlerEventData;\n        \"toggle-classes\": EventHandlerEventData;\n        \"add-classes\": EventHandlerEventData;\n        \"remove-classes\": EventHandlerEventData;\n        \"steps-next\": EventHandlerEventData;\n        \"steps-previous\": EventHandlerEventData;\n        \"steps-first\": EventHandlerEventData;\n        \"activate-step\": EventHandlerEventData;\n        \"activate-current-step\": EventHandlerEventData;\n        \"notify-step-stage-changed\": EventHandlerEventData;\n        \"toggle-toolbar\": EventHandlerEventData;\n        \"update-animation-toolbar-button\": EventHandlerEventData;\n        \"toolbar-button-set-active\": EventHandlerEventData;\n        \"webcab-toggle-dimension-visuals\": never;\n        \"webcab-refresh-cabinets-toggle-ui\": never;\n        \"set-attribute\": EventHandlerEventData;\n        \"toggle-attribute\": EventHandlerEventData;\n        \"delete-fitting\": EventHandlerEventData;\n        \"move-fitting\": EventHandlerEventData;\n        \"set-selectable\": EventHandlerEventData;\n        \"update-filtered-catalogs\": EventHandlerEventData;\n        \"open-link\": EventHandlerEventData;\n        \"scroll-to-top\": EventHandlerEventData;\n        \"send-to-cart\": EventHandlerEventData;\n        \"card-container-set-show-before-slot\": EventHandlerEventData;\n        \"card-container-set-show-id-slot\": EventHandlerEventData;\n        \"card-containers-reset-selection-result-filter\": EventHandlerEventData;\n        \"refresh-all-card-containers\": EventHandlerEventData;\n        \"refetch-card-container\": EventHandlerEventData;\n        \"trigger-root-level-selection-single-entry-skip\": EventHandlerEventData;\n        \"clear-card-container\": EventHandlerEventData;\n        \"card-containers:click-card\": EventHandlerEventData;\n        \"refresh-all-configurator-forms\": never;\n        \"refresh-all-filtered-catalogs\": never;\n        \"toggle-api-state-reset-camera-save\": EventHandlerEventData;\n        \"configurator-set-api-state\": EventHandlerEventData;\n        \"configurator-api-state-toggle\": EventHandlerEventData;\n        \"configurator-api-fetch\": IConfiguratorApiFetchEventData;\n        \"reload-window\": EventHandlerEventData;\n        \"set-fp-variable\": EventHandlerEventData;\n        \"set-property\": EventHandlerEventData;\n        \"set-attribute-on-url-with-cloud-id\": EventHandlerEventData;\n        \"gtm-push\": { event: string, [key: string]: unknown };\n        \"set-camera-zoom\": EventHandlerEventData;\n        \"fit-camera-viewport\": ICameraFitParameters;\n        \"place-article\": EventHandlerEventData;\n        \"update-visibility\": EventHandlerEventData;\n        \"update-accordion-heights\": EventHandlerEventData;\n        \"update-slider-ranges\": EventHandlerEventData;\n        \"execute-custom-event\": EventHandlerEventData;\n        \"set-element-selected\": EventHandlerEventData;\n        \"set-language\": EventHandlerEventData;\n        \"save-current-scene-settings\": EventHandlerEventData;\n        \"reset-scene-action\": EventHandlerEventData;\n        \"configurator-form-page-open-view-mode\": EventHandlerEventData;\n        \"set-manu-prog\": ISetManuProgData;\n        \"disable-3d-text\": EventHandlerEventData;\n        \"request-fullscreen\": { query: string } & EventHandlerEventData;\n        \"dispatch-state\": DispatchStatePayload;\n        \"switch-transfer-level\": ISwitchTransferLevelOptions;\n    }\n}\n\n\nfunction emitLegacyEvent(name: string, data: any) {\n    return EventService.emitAsync(name, data);\n}\n\n\n// Legacy event-name → state/event forwards. Each entry re-emits the corresponding\n// state (or plain global event) via EventService.emitAsync, packaging the payload in\n// the { data, target } envelope the state listeners (RegisterStateHandler) expect.\n// Fixed-tag states pass an explicit target; payload-targeted states pass only { data }\n// and let the state listener derive the target from the payload (first-match).\nexport const LegacyEventAliases = new Map<string, (params: any) => Promise<void> | void>([\n    // Plain global-event forward (no \"tag:action\" state form).\n    [\"toggle-front-state\", async (params: EventHandlerEventData) => emitLegacyEvent(\"front-state\", params)],\n\n    // ---- fixed-target component states (target tag independent of the payload) ----\n    [\"save-current-scene-settings\", async () => emitLegacyEvent(\"notice-list-mask:save-current-scene-settings\", { data: {}, target: { tag: \"fv-notice-list-mask\" } })],\n    [\"show-ar-modal\", async () => emitLegacyEvent(\"fv-ar-modal:show\", { data: {}, target: { tag: \"fv-ar-modal\" } })],\n    [\"notify-step-stage-changed\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv-step:notify-stage-changed\", { data: params, target: { tag: \"fv-step\", all: true } })],\n    [\"webcab-refresh-cabinets-toggle-ui\", async () => emitLegacyEvent(\"fv-webcab-ui-cabinets-toggle:refresh\", { data: {}, target: { tag: \"fv-webcab-ui-cabinets-toggle\", all: true } })],\n    [\"refresh-all-configurator-forms\", async () => emitLegacyEvent(\"fv-configurator-form:refetch\", { data: {}, target: { tag: \"fv-configurator-form\", all: true } })],\n    [\"refresh-all-filtered-catalogs\", async () => emitLegacyEvent(\"fv-filtered-catalog:update\", { data: { force: true }, target: { tag: \"fv-filtered-catalog\", all: true } })], // old data carried { force: true }\n    [\"configurator-form-page-open-view-mode\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-configurator-form-page:open-view-mode\", { data: params, target: { tag: \"fv-configurator-form-page\", all: true } })],\n\n    // ---- modals: payload tag/query overrides the default \"fv-modal\" ----\n    [\"open-modal\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-modal:open\", { data: params, target: { tag: (params?.tag as string) || \"fv-modal\", query: params?.query as string } })],\n    [\"close-modal\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-modal:close\", { data: params, target: { tag: (params?.tag as string) || \"fv-modal\", query: params?.query as string } })],\n    [\"toggle-modal\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-modal:toggle\", { data: params, target: { tag: (params?.tag as string) || \"fv-modal\", query: params?.query as string } })],\n\n    // ---- toggle-toolbar: fixed tag, optional selector from payload ----\n    [\"toggle-toolbar\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-toggle-toolbar:toggle\", { data: {}, target: { tag: \"fv-toggle-toolbar\", query: (params?.selector as string) || \"\" } })],\n\n    // ---- steps + payload-targeted updates: target derived from the payload (first-match) ----\n    [\"steps-next\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-steps:next\", { data: params })],\n    [\"steps-previous\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-steps:previous\", { data: params })],\n    [\"steps-first\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-steps:activate-first\", { data: params })],\n    [\"activate-step\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-steps:activate\", { data: params })],\n    [\"activate-current-step\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-steps:activate-current\", { data: params })],\n    [\"update-filtered-catalogs\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-filtered-catalog:update\", { data: params })],\n    [\"update-accordion-heights\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-accordion-item:update-height\", { data: params })],\n    [\"update-slider-ranges\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-slider:update-range\", { data: params })],\n    [\"toolbar-button-set-active\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv-toolbar-button:set-active\", { data: params })], // old target tag came from the payload component\n\n    // ---- generic DOM ops, now base-mixin states (target derived from payload, first-match) ----\n    [\"add-classes\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv:add-class\", { data: params })],\n    [\"remove-classes\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv:remove-class\", { data: params })],\n    [\"toggle-classes\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv:toggle-class\", { data: params })],\n    [\"set-attribute\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv:set-attribute\", { data: params })],\n    [\"toggle-attribute\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv:toggle-attribute\", { data: params })],\n    [\"update-visibility\", async (params: EventHandlerEventData) => emitLegacyEvent(\"fv:update-visibility\", { data: params })],\n    // [\"scroll-to-top\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv:scroll-to-top\", { data: params, target: { tag: params?.tag as string, query: params?.selector as string, all: true } })], // NOTE: old no-tag `document.querySelector` fallback is NOT covered\n\n    // ---- card-container events → BaseCardContainer states ----\n    // [\"card-container-set-show-before-slot\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv-card-container:set-show-before-slot\", { data: params, target: { tag: \"fv-card-container\" } })],                       // old: find (first)\n    // [\"card-container-set-show-id-slot\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv-card-container:set-show-id-slot\", { data: params, target: { tag: \"fv-card-container\" } })],                               // old: find (first)\n    // [\"card-containers-reset-selection-result-filter\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv-card-container:reset-selection-result-filter\", { data: params, target: { tag: \"fv-card-container\" } })],    // old: find (first)\n    // [\"clear-card-container\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv-card-container:clear\", { data: params, target: { tag: \"fv-card-container\", all: true } })],                                          // old: findAll\n    // [\"refetch-card-container\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv-card-container:refetch\", { data: params, target: { tag: \"fv-card-container\", all: true } })],                                      // old: findAll\n    // [\"card-containers:click-card\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv-card-container:click-card\", { data: params, target: { tag: \"fv-card-container\", all: true } })],                               // old: findAll\n    // [\"trigger-root-level-selection-single-entry-skip\", (params: EventHandlerEventData) => emitLegacyEvent(\"fv-card-container:retrigger-single-entry-skip\", { data: params, target: { tag: \"fv-card-container\", all: true } })], // old: findAll\n]);\n\n\n\n\n\n\n\n// ---------------------------------------------------------------------------\n// Handlers with real, non-forward logic (and the shared mutable state\n// `accessoires` / `front` that two of them keep across fires), ported verbatim\n// from the old EventHandlerServiceClass. The single instance below is the home\n// for every handler whose body is more than a single delegating call; the\n// GlobalEvents map forwards into it.\n// ---------------------------------------------------------------------------\nclass GlobalEventsContainerClass {\n    private accessoires = false;\n    private front: boolean | undefined = true;\n\n    async sendCloudIdToOwner() {\n        let parent: Element | Window = window;\n        while (parent.parent && parent !== parent.parent) {\n            parent = parent.parent;\n        }\n        (parent as Window).postMessage((await UtilService.getPDF(true)).cloudID, \"*\");\n    }\n\n    async sendToOwner(params: EventHandlerEventData) {\n        let parent: Element | Window = window;\n        while (parent.parent && parent !== parent.parent) {\n            parent = parent.parent;\n        }\n        (parent as Window).postMessage(params.message, \"*\");\n    }\n\n    async downloadGeneratedFile(params: EventHandlerEventData) {\n        const target = params.currentTarget as HTMLElement | undefined;\n        target?.classList.add(\"loading\");\n\n        if (params.fileType) {\n            const fileType = params.fileType as string;\n            const exportExtensions: Record<string, string> = {\n                dxf: \"dxf\",\n                obj: \"zip\",\n                skp: \"skp\",\n                xml: \"xml\",\n                xls: \"xls\",\n                xlsx: \"xlsx\",\n            };\n\n            const extension = exportExtensions[fileType];\n            const data = extension\n                ? await UtilService.generateExport(fileType)\n                : await UtilService.getPDF(!!params.lastCloudID);\n\n            const { url, cloudID } = data as { url: string; cloudID: string };\n            UtilityService?.SaveToDisk(url, `planning_${cloudID}.${extension ?? \"pdf\"}`);\n        }\n\n        target?.classList.remove(\"loading\");\n    }\n\n    async downloadFurncloudFile(params: EventHandlerEventData) {\n        const sessionStorageKey = params.sessionStorageKey as string;\n        const hasFurncloudPassword = SessionStorageService.has(sessionStorageKey);\n        if (hasFurncloudPassword) {\n            const cloudId = await CloudIdService.getCloudId();\n            const furncloudPassword = SessionStorageService.get(sessionStorageKey)?.password as string;\n            const cloudData = await UtilService.getFurncloudFile(cloudId, params.fileType as string, furncloudPassword);\n            if (cloudData) {\n                if (cloudData.url && cloudData.url.length > 0) {\n                    UtilityService?.SaveToDisk(cloudData.url, `planning_${cloudId}.${params.fileType}`);\n                }\n            }\n        }\n    }\n\n    async frontState(params: EventHandlerEventData) {\n        if (params[\"default-state\"] != undefined && this.front == undefined) {\n            this.front = params[\"default-state\"] as boolean;\n        }\n        let next = params.value !== undefined ? params.value as boolean : !this.front;\n        if (params[\"prioritise-accessoires\"]) {\n            next = !this.accessoires;\n        }\n        await CommunicationMessageService.frontState(next);\n        this.front = params[\"prioritise-accessoires\"] ? undefined : next;\n    }\n\n    async toggleAccessoires(params: EventHandlerEventData) {\n        let frontState = this.accessoires;\n        if (params[\"prioritise-front-state\"] && this.front != undefined) {\n            frontState = this.front;\n        }\n        await CommunicationMessageService.frontState(frontState);\n        this.front = this.front != undefined ? frontState : undefined;\n        this.accessoires = !this.accessoires;\n        await CommunicationMessageService.setAccessories(this.accessoires);\n    }\n\n    async communicatorMessage(params: EventHandlerEventData) {\n        const data: { command: string, args: Array<unknown> } = {\n            command: params.command as string,\n            args: (params.parameters ? params.parameters as Array<unknown> : []),\n        };\n        if (data.command) {\n            return await WebViewerService.postMessage(data.command, ...data.args);\n        }\n    }\n\n    async updateAnimationToolbarButton() {\n        const animationStatus = await CommunicationMessageService.getAnimationStatus();\n        if (animationStatus == undefined) return;\n        await EventService.emitAsync(\"fv-animation-toolbar-button:sync-active\", { data: { mode: animationStatus.mode }, target: { tag: \"fv-animation-toolbar-button\", all: true } });\n    }\n\n    async webcabToggleDimensionVisuals() {\n        const webcabUis = ComponentService.findAll(\"fv-webcab-ui\");\n        if (webcabUis.length > 0) {\n            await EventService.emitAsync(\"fv-webcab-ui:toggle-dimension-visuals\", { data: {}, target: { tag: \"fv-webcab-ui\", all: true } });\n        } else {\n            await EventService.emitAsync(\"configurator-api-state-toggle\", { data: {\n                group: \"webcab-global-states\",\n                target: \"WEBCAB_DIMENSION_VISUALS_DISABLED_L\",\n            }});\n        }\n    }\n\n    async deleteFitting(params: EventHandlerEventData) {\n        if (params.level == undefined) return;\n        await CommunicationMessageService.dhTodo([\n            \"1\", {\n                params: [(params.level as number + 1).toString()],\n                manu: window.g_article.manu,\n                kataManu: window.g_article.manu,\n            },\n        ]);\n    }\n\n    async moveFitting(params: EventHandlerEventData) {\n        if (params.level == undefined) return;\n        await CommunicationMessageService.dhTodo([\n            \"1\", {\n                params: [(params.level as number + 2).toString()],\n                manu: window.g_article.manu,\n                kataManu: window.g_article.manu,\n            },\n        ]);\n    }\n\n    async setSelectable(params: EventHandlerEventData) {\n        if (params.type && Array.isArray(params.type)) {\n            await CommunicationMessageService.setSelectableMultiTypes(params.type);\n            return;\n        }\n        if (params.type && (params.type as string).length > 0) {\n            await CommunicationMessageService.setSelectable(params.type as string);\n            if (params.action && (params.action as string).length > 0) {\n                await CommunicationMessageService.setSelectionActionGroup(params.action as string);\n            }\n        } else {\n            await CommunicationMessageService.setSelectable();\n        }\n    }\n\n    async openLink(params: EventHandlerEventData) {\n        if (params[\"new-tab\"] && params.link) {\n            window.open(params.link as string);\n            return;\n        }\n        if (params.link) {\n            window.location = params.link as string & Location;\n        }\n    }\n\n    async sendToCart(params: EventHandlerEventData) {\n        const externalParameters = params?.[\"external-parameters\"] as Array<{\n            name: string,\n            tag: string,\n            property: string\n        }>;\n        let parameters: Array<{ parameter: string, value: string }> = [];\n\n        if (externalParameters) {\n            parameters = externalParameters.map((descriptor) => {\n                const element = ComponentService.find(descriptor.tag) as unknown as ISendToCartParameter;\n                return { parameter: descriptor.name, value: element[descriptor.property] as string };\n            });\n        }\n\n        await CommunicationMessageService.addToCart(parameters);\n    }\n\n    async refreshAllCardContainers(params: EventHandlerEventData) {\n        const refetch = params[\"refetch\"] == undefined ? false : params[\"refetch\"] as boolean;\n        const includeHidden = params[\"include-hidden\"] == undefined ? false : params[\"include-hidden\"] as boolean;\n        const selectionResultFilterResetTargets = params[\"selection-result-filter-reset-targets\"] as Array<{\n            tag: string,\n            query: string\n        }>;\n        const selectionResultFilterResetExcludes = params[\"selection-result-filter-reset-excludes\"] as Array<{\n            tag: string,\n            query: string\n        }>;\n        CardContainerEventContainer.RefreshAll({\n            refetch, includeHidden, selectionResultFilterResetTargets, selectionResultFilterResetExcludes,\n        });\n    }\n\n    async toggleApiStateResetCameraSave(params: EventHandlerEventData) {\n        if (params.group && params.target) {\n            const groupName = params.group as string;\n            const targetName = params.target as string;\n\n            const apiData = ConfiguratorApiDataService.Data;\n            const groupData = apiData[groupName];\n\n            if (groupData) {\n                const targetData = groupData[targetName] as IConfiguratorApiDataValue;\n                if (targetData && targetData.state !== undefined) {\n                    await ConfiguratorApiService.SetApiData({\n                        groups: [{\n                            name: groupName,\n                            modifications: [{\n                                target: targetName,\n                                type: \"int\",\n                                value: 1,\n                            }],\n                        }],\n                    });\n\n                    await CommunicationMessageService.resetCameraView(false);\n\n                    setTimeout(async () => {\n                        await CommunicationMessageService.frontState(true);\n                        await CommunicationMessageService.downloadPDF(params && params.custom ? params.custom as boolean : false);\n\n                        await ConfiguratorApiService.SetApiData({\n                            groups: [{\n                                name: groupName,\n                                modifications: [{\n                                    target: targetName,\n                                    type: \"int\",\n                                    value: targetData.state ? 1 : 0,\n                                }],\n                            }],\n                        });\n                    }, 1000);\n                }\n            }\n        }\n    }\n\n    async configuratorSetApiState(params: EventHandlerEventData) {\n        if (params.group && params.target) {\n            const groupName = params.group as string;\n            const targetName = params.target as string;\n\n            const apiData = ConfiguratorApiDataService.Data;\n            const groupData = apiData[groupName];\n\n            if (groupData) {\n                if (Object.keys(groupData).includes(targetName)) {\n                    await ConfiguratorApiService.SetApiData({\n                        groups: [{\n                            name: groupName,\n                            modifications: [{\n                                target: targetName,\n                                type: \"int\",\n                                value: params.state as boolean ? 1 : 0,\n                            }],\n                        }],\n                    });\n                }\n            }\n        }\n    }\n\n    async configuratorApiStateToggle(params: EventHandlerEventData) {\n        if (params.group && params.target) {\n            const groupName = params.group as string;\n            const targetName = params.target as string;\n\n            const apiData = ConfiguratorApiDataService.Data;\n            const groupData = apiData[groupName];\n\n            if (groupData) {\n                const targetData = groupData[targetName] as IConfiguratorApiDataValue;\n                if (targetData && targetData.state !== undefined) {\n                    await ConfiguratorApiService.SetApiData({\n                        groups: [{\n                            name: groupName,\n                            modifications: [{\n                                target: targetName,\n                                type: \"int\",\n                                value: targetData.state ? 0 : 1,\n                            }],\n                        }],\n                    });\n                    await EventService.emitAsync(\"refresh-all-configurator-forms\");\n                }\n            }\n        }\n    }\n\n    async reloadWindow(params: EventHandlerEventData) {\n        if (params && params.preventLeaveConfirmation !== undefined) {\n            ConstructionService.PreventLeaveConfirmation = params.preventLeaveConfirmation as boolean;\n        }\n        window.location.reload();\n    }\n\n    async setFpVariable(params: EventHandlerEventData) {\n        await WebViewerService.IsAppReady;\n        await CommunicationMessageService.dhTodo([\"3\", {\n            params: [\"-1\", \"0\", params.key, params.type, params.value],\n            manu: window.g_article.manu,\n            kataManu: window.g_article.manu,\n        }]);\n    }\n\n    async setAttributeOnUrlWithCloudId(params: EventHandlerEventData) {\n        const url = new URL(window.location.href);\n        if (url.searchParams.has(\"cloudId\")) {\n            await EventService.emitAsync(\"set-attribute\", params);\n\n        }\n    }\n\n    async gtmPush(params: { event: string, [key: string]: unknown }) {\n        const pushData: { event: string, [key: string]: unknown } = {\n            event: params.event,\n        };\n        Object.keys(params)\n            .forEach((key) => {\n                if (key !== \"event\") {\n                    let dotSplit = (params[key] as string).split(\".\");\n                    let bufferValue = window.g_dataInterface[dotSplit[0]];\n                    dotSplit = dotSplit.slice(1);\n                    dotSplit.forEach(dotKey => {\n                        if (bufferValue) {\n                            bufferValue = bufferValue[dotKey];\n                        }\n                    });\n                    pushData[key] = bufferValue || params[key];\n                }\n            });\n        GoogleAnalyticsService?.push(pushData);\n    }\n\n    async setCameraZoom(params: EventHandlerEventData) {\n        const zoomData = params[\"zoom\"] as IZoomParameters;\n        if (typeof zoomData.Perspective === \"string\") {\n            const newPerspective = SEARCH_PERSPECTIVES[zoomData.Perspective];\n            if (newPerspective) {\n                zoomData.Perspective = newPerspective;\n            }\n        }\n        await CommunicationMessageService.setCameraZoom(zoomData);\n    }\n\n    async setLanguage(params: EventHandlerEventData) {\n        const langCode = params?.langCode as string;\n        if (langCode) {\n            await CommunicationMessageService.setLanguage(langCode);\n            await LocaleService.setLanguage(langCode);\n            CardContainerEventContainer.RefreshAll({\n                refetch: true,\n                includeHidden: false,\n            });\n            await CardDataService.WaitForAllCardContainerFetchPromises();\n            await EventService.emitAsync(\"fv-equipment-list:reload\", { data: {}, target: { tag: \"fv-equipment-list\", query: \"*\" } });\n\n            window.dispatchEvent(new CustomEvent(\"language-changed\", {\n                detail: langCode,\n                bubbles: true,\n                composed: true,\n            }));\n        }\n    }\n\n    async requestFullscreen(params: { query: string } & EventHandlerEventData) {\n        let element: HTMLElement | null;\n        if (params.query && (element = document.querySelector(params.query))) {\n            try {\n                if (!document.fullscreenElement) {\n                    await element.requestFullscreen();\n                } else {\n                    await document.exitFullscreen();\n                }\n            } catch (err: unknown) {\n                if (err instanceof Error) console.error(`Error attempting to enable full-screen mode: ${err.message}`);\n            }\n        }\n    }\n\n    async dispatchStateEvent(params: DispatchStatePayload) {\n        if (!params || !params.state) return;\n        await EventService.emitAsync(params.state, { data: params.data, target: params.target });\n    }\n\n    scrollToTop(params: EventHandlerEventData) {\n        const scroll = (target: Element) => {\n            const options = {\n                top: 0,\n                left: 0,\n                behavior: params.behavior ? params.behavior as ScrollBehavior : \"auto\"\n            };\n            target.scrollTo(options);\n        };\n\n        if (params[\"tag\"] && (params[\"tag\"] as string).length > 0) {\n            if (params[\"selector\"] && (params[\"selector\"] as string).length > 0) {\n                const components: Array<DhElement> = ComponentService.findAll((params[\"tag\"] as string), (params[\"selector\"] as string)) as Array<DhElement>;\n                for (const component of components) {\n                    scroll(component);\n                }\n            }\n        } else if (params[\"selector\"] && (params[\"selector\"] as string).length > 0) {\n            const target = document.querySelector(params[\"selector\"] as string);\n            if (target) {\n                scroll(target);\n            }\n        }\n    }\n}\nconst globalEventsContainer = new GlobalEventsContainerClass();\n\n\n// ---------------------------------------------------------------------------\n// Global events — handlers with real, non-forward logic, ported verbatim from\n// the old EventHandlerServiceClass constructor. Calls back into the service via\n// the EventHandlerService singleton (dispatch / dispatchState / dispatchAsyncEvent).\n// ---------------------------------------------------------------------------\nexport const GlobalEvents = new Map<string, (params: any) => Promise<void> | void>([\n    [\"send-cloud-id-to-owner\", () => globalEventsContainer.sendCloudIdToOwner()],\n    [\"send-to-owner\", (params: EventHandlerEventData) => globalEventsContainer.sendToOwner(params)],\n    [\"camera-zoom-in\", async () => {\n        await CommunicationMessageService.cameraZoom(1);\n    }],\n    [\"camera-zoom-out\", async () => {\n        await CommunicationMessageService.cameraZoom(-1);\n    }],\n    [\"reset-camera\", async (params: EventHandlerEventData) => {\n        await CommunicationMessageService.resetCameraView(params && params.animate !== undefined ? params.animate as boolean : true);\n    }],\n    [\"undo\", async () => {\n        await CommunicationMessageService.undo();\n    }],\n    [\"redo\", async () => {\n        alert(\"TODO: implement redo!\");\n        // CommunicationMessageService.redo();\n    }],\n    [\"save\", async (params: EventHandlerEventData) => {\n        await CommunicationMessageService.downloadPDF(params && params.custom ? params.custom as boolean : false);\n    }],\n    [\"download-generated-file\", (params: EventHandlerEventData) => globalEventsContainer.downloadGeneratedFile(params)],\n    [\"download-furncloud-file\", (params: EventHandlerEventData) => globalEventsContainer.downloadFurncloudFile(params)],\n    [\"trigger-animation\", async () => {\n        await CommunicationMessageService.triggerAnimation();\n    }],\n    [\"front-state\", (params: EventHandlerEventData) => globalEventsContainer.frontState(params)],\n    [\"toggle-accessoires\", (params: EventHandlerEventData) => globalEventsContainer.toggleAccessoires(params)],\n    [\"toggle-dimensions\", async () => {\n        await CommunicationMessageService.toggleMeasurement();\n    }],\n    [\"take-screenshot\", async (params: EventHandlerEventData) => {\n        // @ts-ignore\n        await CommunicationMessageService.downloadScreenshot(params.logo ? params.logo : undefined);\n    }],\n    [\"show-share-component\", async () => {\n        await CommunicationMessageService.showShareComponent();\n    }],\n    [\"communicator-message\", (params: EventHandlerEventData) => globalEventsContainer.communicatorMessage(params)],\n    [\"update-animation-toolbar-button\", () => globalEventsContainer.updateAnimationToolbarButton()],\n    [\"webcab-toggle-dimension-visuals\", () => globalEventsContainer.webcabToggleDimensionVisuals()],\n    [\"delete-fitting\", (params: EventHandlerEventData) => globalEventsContainer.deleteFitting(params)],\n    [\"move-fitting\", (params: EventHandlerEventData) => globalEventsContainer.moveFitting(params)],\n    [\"set-selectable\", (params: EventHandlerEventData) => globalEventsContainer.setSelectable(params)],\n    [\"open-link\", (params: EventHandlerEventData) => globalEventsContainer.openLink(params)],\n    [\"send-to-cart\", (params: EventHandlerEventData) => globalEventsContainer.sendToCart(params)],\n    [\"toggle-api-state-reset-camera-save\", (params: EventHandlerEventData) => globalEventsContainer.toggleApiStateResetCameraSave(params)],\n    [\"configurator-set-api-state\", (params: EventHandlerEventData) => globalEventsContainer.configuratorSetApiState(params)],\n    [\"configurator-api-state-toggle\", (params: EventHandlerEventData) => globalEventsContainer.configuratorApiStateToggle(params)],\n    [\"configurator-api-fetch\", async () => {\n        // Not implemented - STUB\n    }],\n    [\"reload-window\", (params: EventHandlerEventData) => globalEventsContainer.reloadWindow(params)],\n    [\"set-fp-variable\", (params: EventHandlerEventData) => globalEventsContainer.setFpVariable(params)],\n    [\"set-property\", async (params: EventHandlerEventData) => {\n        await CommunicationMessageService.modifyProperty(JSON.stringify(params.property), params.options as IModifyPropertyOptions);\n    }],\n    [\"set-attribute-on-url-with-cloud-id\", (params: EventHandlerEventData) => globalEventsContainer.setAttributeOnUrlWithCloudId(params)],\n    [\"gtm-push\", (params: { event: string, [key: string]: unknown }) => globalEventsContainer.gtmPush(params)],\n    [\"set-camera-zoom\", (params: EventHandlerEventData) => globalEventsContainer.setCameraZoom(params)],\n    [\"fit-camera-viewport\", async (params: ICameraFitParameters) => {\n        await CommunicationMessageService.fitCamera(params);\n    }],\n    [\"place-article\", async (params: EventHandlerEventData) => {\n        await CommunicationMessageService.placePO({\n            manufacturer: window.g_article.manu,\n            program: params.program as string,\n            extParameter: {},\n            articleNumber: params[\"article-number\"] as string,\n        });\n    }],\n    [\"execute-custom-event\", async (params: EventHandlerEventData) => {\n        await CommunicationMessageService.executeCustomEvent(params?.command as string, params?.instanceIdent as number, params?.parameters);\n    }],\n    [\"set-element-selected\", async (params: EventHandlerEventData) => {\n        await CommunicationMessageService.selectObjectInScene(params.instanceIdent as number);\n    }],\n    [\"set-language\", (params: EventHandlerEventData) => globalEventsContainer.setLanguage(params)],\n    [\"reset-scene-action\", async () => {\n        await CommunicationMessageService.resetSceneAction();\n    }],\n    [\"set-manu-prog\", async (params: ISetManuProgData) => {\n        await ManuProgService.setManuProg(params?.manu as string, params?.calcManu as string, params?.prog as string, false);\n    }],\n    [\"disable-3d-text\", async (params: EventHandlerEventData) => {\n        await CommunicationMessageService.setDisable3DText(params.value != undefined ? params.value as boolean : false);\n    }],\n    [\"request-fullscreen\", (params: { query: string } & EventHandlerEventData) => globalEventsContainer.requestFullscreen(params)],\n    [\"dispatch-state\", (params: DispatchStatePayload) => globalEventsContainer.dispatchStateEvent(params)],\n    [\"switch-transfer-level\", async (params: ISwitchTransferLevelOptions) => {\n        CommunicationMessageService.switchTransferLevel(params);\n    }],\n\n    // ---- generic DOM ops, not base-mixin states (target derived from payload, first-match) ----\n    [\"scroll-to-top\", (params: EventHandlerEventData) => globalEventsContainer.scrollToTop(params)],\n\n    // ---- card-container events → no BaseCardContainer states ----\n    [\"refresh-all-card-containers\", async (params: EventHandlerEventData) => globalEventsContainer.refreshAllCardContainers(params)],\n    [\"card-container-set-show-before-slot\", (data: EventHandlerEventData) => CardContainerEventContainer.SetShowBeforeSlot(data)],\n    [\"card-container-set-show-id-slot\", (data: EventHandlerEventData) => CardContainerEventContainer.SetShowIdSlot(data)],\n    [\"card-containers-reset-selection-result-filter\", (data_: EventHandlerEventData) => CardContainerEventContainer.ResetSelectionResultFilter(data_)],\n    [\"clear-card-container\", (data: EventHandlerEventData) => CardContainerEventContainer.Clear(data)],\n    [\"refetch-card-container\", (data_: EventHandlerEventData) => CardContainerEventContainer.Refetch(data_)],\n    [\"card-containers:click-card\", (data: EventHandlerEventData) => CardContainerEventContainer.ClickCard(data)],\n    [\"trigger-root-level-selection-single-entry-skip\", async (data_: EventHandlerEventData) => CardContainerEventContainer.ReTriggerSingleEntrySkip(data_)]\n]);","import { EventService } from \"@dh-software/webui-api\";\nimport { Events } from \"@dh-software/webui-api\";\nimport { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\nimport { ComponentStateEvent, StateEventTarget } from \"../models/event-handler/component-state-event\";\nimport { EventHandlerEvent, EventHandlerEventCallDataInit } from \"../models/event-handler/event.handler.model\";\nimport { ComponentService, ComponentServiceSearchParams } from \"./component.service\";\nimport { GlobalEvents, LegacyEventAliases } from \"../models/event-handler/global-events\";\n\nclass EventHandlerServiceClass {\n    private async _dispatchPostEvents(\n        data?: EventHandlerEventData | undefined,\n    ) {\n        if (data && data[\"post-events\"]) {\n            const events = data[\"post-events\"] as Array<EventHandlerEvent>;\n            for (let index = 0; index < events.length; ++index) {\n                const event = events[index];\n                if (\n                    data[\"dispatch-post-events-synchronized-in-order\"] ||\n                    data[\"post-events-sync\"]\n                ) {\n                    await this.dispatchAsyncEvent(\n                        event.id,\n                        event.data ? event.data : {},\n                    );\n                    continue;\n                }\n                return this.dispatch(event.id, event.data ? event.data : {});\n            }\n        }\n    }\n    /**\n     * Reads the element-selection out of an event payload, regardless of which\n     * naming convention it uses, and normalises it to ComponentServiceSearchParams.\n     *\n     * tag   � \"tag\" | \"component\" | \"steps-component\" | components[0].name\n     * query � \"query\" | \"selector\"\n     *\n     * Returns undefined when no tag can be resolved.\n     */\n    private _readLegacySelection(data?: EventHandlerEventData): ComponentServiceSearchParams[] | undefined {\n        if (!data) return undefined;\n\n        const str = (value: unknown): string | undefined =>\n            typeof value === \"string\" && value.length > 0 ? value : undefined;\n\n        const pick = (...keys: string[]): string | undefined => {\n            for (const key of keys) {\n                const value = str(data[key]);\n                if (value) return value;\n            }\n            return undefined;\n        };\n\n        const targets = [];\n        if (data.components && Array.isArray(data.components)) {\n            for (const component of data.components) {\n                targets.push({\n                    tag: component.name,\n                    query: component.selector,\n                    all: component.all\n                });\n            }\n        }\n\n        const tag = pick(\"tag\", \"component\", \"steps-component\");\n        if (!tag) return targets;\n        const all = data.all != undefined ? data.all : undefined;\n        const query = pick(\"query\", \"selector\");\n        targets.push({ tag, query, all });\n        return targets;\n    }\n\n    private _unwrapEnvelope(e: any): any {\n        if (e && typeof e === \"object\" && !Array.isArray(e)) {\n            const keys = Object.keys(e);\n            if (keys.length === 2 && keys.includes(\"data\") && keys.includes(\"target\")) {\n                return e.data;\n            }\n        }\n        return e;\n    }\n\n    constructor() {\n        window.addEventListener(\"triggereventhandlereventevent\", (event: EventHandlerEventCallDataInit) => {\n                if (event.detail && event.detail.events) {\n                    EventHandlerService.dispatchEventList(\n                        event.detail.events,\n                        event.detail.async,\n                    );\n                }\n            },\n        );\n\n        EventService.on(\"shared:event-fired\", async (event) => {\n            await this._dispatchPostEvents(\n                event.data.data as EventHandlerEventData,\n            );\n        });\n\n        for (const [key, handler] of GlobalEvents) {\n            EventService.on(key, async (e) => await handler(this._unwrapEnvelope(e)));\n        }\n\n        for (const [key, handler] of LegacyEventAliases) {\n            if (EventService.has(key)) {\n                console.warn(\"duplicate event in LegacyEventAliases\");\n                continue;\n            }\n            EventService.on(key, async (e) => {\n                await handler(this._unwrapEnvelope(e));\n            });\n        }\n    }\n\n    public async dispatchAsyncEvent<Key extends keyof Events>(key: Key, data_: EventHandlerEventData): Promise<void> {\n        await EventService.emitAsync(key, data_);\n    }\n    public dispatch<Key extends keyof Events>(key: Key, data_: EventHandlerEventData): boolean {\n        if (!EventService.has(key)) {\n            return false;\n        }\n        EventService.emitAsync(key, data_);\n        return true;\n    }\n    public async dispatchEventList(events: Array<EventHandlerEvent>, asynchronously: boolean) {\n        if (events && events.length > 0) {\n            if (asynchronously) {\n                for (const event of events) {\n                    this.dispatch(event.id, event.data ? event.data : {});\n                }\n                return;\n            }\n            for (const event of events) {\n                await this.dispatchAsyncEvent(\n                    event.id,\n                    event.data ? event.data : {},\n                );\n            }\n        }\n    }\n\n    /** Dispatch a typed component-state event. Target: window (default), an EventTarget, or a tag/query lookup. */\n    public async dispatchState<K extends keyof ComponentStates>(\n        state: K,\n        data: ComponentStates[K],\n        target?: EventTarget | StateEventTarget,\n    ): Promise<void> {\n        const events: ComponentStateEvent<K>[] = [];\n        const dispatchOn = (el: EventTarget) => {\n            if ((el as any).ListensToState != undefined && !(el as any).ListensToState(state)) {\n                console.warn(\"event triggered on element that does not listen to it! element:\", el, \"event:\", state, \"data:\", data);\n                return;\n            }\n            const ev = new ComponentStateEvent(state, data);\n            el.dispatchEvent(ev); // sync; listeners call ev.waitUntil(...)\n            events.push(ev);\n        };\n\n        if (target == undefined) {\n            dispatchOn(window);\n        } else if (typeof (target as EventTarget).dispatchEvent === \"function\") {\n            dispatchOn(target as EventTarget);\n        } else {\n            const t = target as StateEventTarget;\n            if (!t.tag || t.tag.length < 1) {\n                console.warn(\"target tag for state empty!\", state, data, target);\n                return;\n            }\n            const components = ComponentService.findAll(t.tag, t.query ?? \"\");\n            if (components.length < 1) {\n                console.warn(\"no valid target elements for state\", state, data, target);\n                return;\n            }\n            if (!t.all) dispatchOn(components[0]);\n            else components.forEach((c) => dispatchOn(c)); // collect across ALL\n        }\n\n        await Promise.allSettled(events.map((e) => e.whenSettled()));\n    }\n\n    public RegisterStateHandler(state: string) {\n        if (EventService.has(state)) {\n            return;\n        }\n        EventService.on(state, async (params)=>{\n            let event = params as { state?: string, data: any, target?: ComponentServiceSearchParams };\n            if (event.data && event.data.data) {\n                event = event.data;\n            }\n\n            /////// legacy support ////////\n            if (event.target == undefined || event.target.tag == undefined) {\n                let targets = this._readLegacySelection(event.data);\n                if (targets != undefined) {\n                    for (const target of targets) {\n                        await this.dispatchState(\n                            state as keyof ComponentStates,\n                            event.data,\n                            target,\n                        );\n                    }\n                    return;\n                }\n            }\n            /////// legacy support ////////\n\n            const targets = Array.isArray(event.target) ? event.target : [event.target];\n            for (const target of targets) {\n                await this.dispatchState(\n                    state as keyof ComponentStates,\n                    event.data,\n                    target,\n                );\n            }\n        });\n    }\n}\nexport const EventHandlerService = new EventHandlerServiceClass();","import {css, unsafeCSS, CSSResultGroup, PropertyValueMap, PropertyValues, LitElement} from \"lit\";\nimport { ComponentService } from \"../../../utils/component.service\";\nimport { property } from \"lit/decorators.js\";\nimport style from \"./base.component.sass?inline\";\nimport { StepTargetSelectorData } from \"../steps/steps.component\";\nimport {\n    CommunicationMessageService,\n    EventService,\n    LocaleService,\n    UtilityService,\n    WebViewerService\n} from \"@dh-software/webui-api\";\n\nimport { Fonts, SimpleIcons, MultiIcons, injectStylesheets } from '@dh-software/furnview-icons';\nimport {HideableElement, HideBaseElement, HideMixin} from \"./hide.base\";\nimport {EventHandlerEvent} from \"../../../models/event-handler/event.handler.model\";\nimport {\n    ComponentStateEvent,\n    ComponentStateEventDetail,\n    type ComponentStateHandler,\n    type ComponentStateHandlerMap,\n} from \"../../../models/event-handler/component-state-event\";\nimport { Constructor } from \"./mixin\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\ninjectStylesheets(true)\n\nimport dhComponentThemeStyles from \"@dh-software/dh-components-themes/styles.css?inline\";\n\ndeclare global {\n    // Generic \"standard HTML interaction\" states answered by every DhElement via\n    // the base mixin. Legacy events (add-classes, set-attribute, …) alias onto these.\n    interface ComponentStates {\n        \"fv:add-class\":         { classes: string[] };\n        \"fv:remove-class\":      { classes: string[] };\n        \"fv:toggle-class\":      { classes: string[] };\n        \"fv:set-attribute\":     { attribute: string; value: unknown };\n        \"fv:toggle-attribute\":  { attribute: string; value: unknown };\n        \"fv:update-visibility\": Record<string, never>;\n        \"fv:scroll-to-top\":     { behavior?: ScrollBehavior };\n    }\n}\n\ntype MobileMode = \"hide\" | \"show\" | \"\";\nexport type Units = \"cm\" | \"mm\" | \"dm\" | \"m\" | \"error\";\n\nexport type VisibleSelectorData = StepTargetSelectorData & {\n}\n\nexport interface WillUpdateEventInit extends CustomEventInit {\n    detail?: LitElement\n}\nexport class WillUpdateEvent extends CustomEvent<LitElement> {\n    constructor(element: LitElement) {\n        super(\"willupdate\", { detail: element, bubbles: true });\n    }\n}\n\nexport interface UpdatedEventInit extends CustomEventInit {\n    detail?: LitElement\n}\nexport class UpdatedEvent extends CustomEvent<LitElement> {\n    constructor(element: LitElement) {\n        super(\"updated\", { detail: element, bubbles: true });\n    }\n}\n\ninterface BaseDOMEvents {\n    connected?: Array<EventHandlerEvent>;\n    disconnected?: Array<EventHandlerEvent>;\n}\n\ninterface BaseElementOptions {\n    registerLocalesModel: boolean\n    updateWhileDisconnected: boolean\n}\n\ninterface IStateHandler {\n    stateHandlers?: ComponentStateHandlerMap;\n}\n\nexport interface IBaseElement extends IStateHandler, HideableElement {\n    baseOptions: BaseElementOptions\n    domEvents: BaseDOMEvents;\n    mobileMode: MobileMode;\n    visibleSelectors?: VisibleSelectorData;\n    readonly mobile: boolean;\n    readonly isIOS: boolean;\n    AddConnectedCallbackAction(action: () => Promise<void>): void;\n    ResetConnectedCallbackAction(): void;\n    updateVisibility(): void;\n    isEmpty(): boolean;\n    Unit: Units;\n    DimensionScale: number;\n    Digits: number;\n    isPartOfHiddenSubtree(): boolean;\n    VerifyStepStageChange(): boolean;\n    ApplyStepStage(stage_: number): Promise<void>;\n    DetermineStepStageEnvironment(): Promise<{ current: number, first: number, last: number } | undefined>;\n}\n\nexport const BaseMixin = <T extends ReturnType<typeof HideMixin>>(Base: T): T & Constructor<IBaseElement> => {\n    class BaseMixinClass extends Base implements IBaseElement {\n        static styles: CSSResultGroup[] = [\n            unsafeCSS(style),\n            unsafeCSS(`${Fonts}${SimpleIcons}${MultiIcons}`),\n            unsafeCSS(dhComponentThemeStyles)\n        ];\n\n        baseOptions: BaseElementOptions = {\n            registerLocalesModel: true,\n            updateWhileDisconnected: false,\n        }\n\n        @property({ type: Object, reflect: true })\n        public domEvents: BaseDOMEvents = {};\n\n        private fireDOMEvents(registry: keyof BaseDOMEvents) {\n            const events = this.domEvents?.[registry] || [];\n            if(events.length > 0) {\n                events.forEach(({id, data}) => {\n                    EventService.emit(id, data);\n                })\n            }\n        }\n\n        constructor(...args: any[]) {\n            super(...args);\n            ComponentService.register(this);\n\n            this.addEventListener('keydown', ((e: KeyboardEvent) => {\n                if (e.key === 'Enter' && e.composedPath()[0] === this) {\n                    e.preventDefault();\n                    e.stopPropagation();\n                    this.click();\n                }\n            }) as EventListener);\n\n            this.TriggerLocalesModelLoaded();\n        }\n\n        @property({ type: String, reflect: true, attribute: 'mobile-mode' })\n        public mobileMode: MobileMode = '';\n\n        @property({ type: Object, reflect: true, attribute: 'visible-selectors' })\n        public visibleSelectors?: VisibleSelectorData;\n\n        private static _mobile: boolean | undefined = undefined;\n\n        public get mobile(): boolean {\n            if (BaseMixinClass._mobile === undefined) {\n                BaseMixinClass._mobile = UtilityService.isMobileDevice();\n            }\n            return BaseMixinClass._mobile || false;\n        }\n\n        private static _isIOS: boolean | undefined = undefined;\n\n        public get isIOS(): boolean {\n            if (BaseMixinClass._isIOS === undefined) {\n                BaseMixinClass._isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent)\n                    || (navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1);\n            }\n            return BaseMixinClass._isIOS;\n        }\n\n        private _connectedCallbackActions: Array<() => Promise<void>> = [];\n\n        public AddConnectedCallbackAction(action: () => Promise<void>): void {\n            this._connectedCallbackActions.push(action);\n        }\n\n        public ResetConnectedCallbackAction(): void {\n            this._connectedCallbackActions = [];\n        }\n\n        private async TriggerConnectedCallbackActions(): Promise<void> {\n            for (const action of this._connectedCallbackActions) {\n                await action();\n            }\n        }\n\n        private async TriggerLocalesModelLoaded(): Promise<void> {\n            await LocaleService.IsFileRead();\n            this.localesModelLoaded();\n        }\n\n        protected localesModelLoaded(): void {}\n\n        connectedCallback(): void {\n            if(this.baseOptions.registerLocalesModel) {\n                LocaleService.Register(this);\n            }\n            super.connectedCallback?.();\n            this.setAttribute(\"isfv\", \"\");\n            if (this.isIOS) this.setAttribute(\"ios\", \"\");\n            this.TriggerConnectedCallbackActions();\n            this._installDeclaredStateHandlers();\n            this.fireDOMEvents(\"connected\");\n        }\n\n        disconnectedCallback(): void {\n            this.fireDOMEvents(\"disconnected\");\n            super.disconnectedCallback?.();\n        }\n\n        addEventListener(\n            type: string,\n            listener: EventListenerOrEventListenerObject,\n            options?: boolean | AddEventListenerOptions\n        ): void {\n            if (type === 'click') {\n                this.AddConnectedCallbackAction(async () => {\n                    this.tabIndex = 0;\n                    this.role = \"button\";\n                });\n            }\n            super.addEventListener(type, listener, options);\n        }\n\n        protected willUpdate(changedProps: PropertyValues): void {\n            super.willUpdate?.(changedProps);\n            this.dispatchEvent(new WillUpdateEvent(this));\n        }\n\n        protected updated(changedProps: PropertyValueMap<any> | Map<PropertyKey, unknown>): void {\n            super.updated?.(changedProps);\n            this.dispatchEvent(new UpdatedEvent(this));\n        }\n\n        private furnviewLoaded = false;\n        private async checkFurnview(): Promise<void> {\n            await WebViewerService.IsAppReady;\n            this.furnviewLoaded = true;\n        }\n\n        protected firstUpdated(changedProps: PropertyValues): void {\n            super.firstUpdated?.(changedProps);\n            this.checkFurnview();\n        }\n\n        public isEmpty(): boolean {\n            let nonSlotChildren = 0;\n            if (this.shadowRoot) {\n                for (const child of Array.from(this.shadowRoot.children)) {\n                    if (child.tagName !== 'SLOT') nonSlotChildren++;\n                }\n            }\n            return (this.children.length + nonSlotChildren) <= 0;\n        }\n\n        private static _dimensionScale: number | undefined = undefined;\n\n        public get Unit(): Units {\n            switch (BaseMixinClass._dimensionScale) {\n                case 1.0: return 'mm';\n                case 0.1: return 'cm';\n                case 0.01: return 'dm';\n                case 0.001: return 'm';\n                default: return 'error';\n            }\n        }\n\n        public get DimensionScale(): number {\n            return BaseMixinClass._dimensionScale ?? 0.1;\n        }\n\n        private static _dimensionDigits: number | undefined = undefined;\n\n        public get Digits(): number {\n            return BaseMixinClass._dimensionDigits ?? 1;\n        }\n\n        public isPartOfHiddenSubtree(): boolean {\n            return ComponentService.isPartOfHiddenSubtree(this);\n        }\n\n        protected shouldUpdate(changedProperties: PropertyValues): boolean {\n            // Guard against rendering into a disconnected component. Async awaits in\n            // scheduleUpdate (and elsewhere) can resolve after the element has been\n            // detached from the DOM, at which point committing template parts throws\n            // \"ChildPart has no parentNode\". Components that need updated() to fire\n            // even while disconnected can opt out via baseOptions.updateWhileDisconnected.\n            if (!this.baseOptions.updateWhileDisconnected && !this.isConnected) return false;\n            return super.shouldUpdate?.(changedProperties) ?? true;\n        }\n\n        protected async scheduleUpdate(): Promise<unknown> {\n            if (this.furnviewLoaded) {\n                await WebViewerService.IsAppReady;\n                if (BaseMixinClass._dimensionScale == undefined) {\n                    BaseMixinClass._dimensionScale = await CommunicationMessageService.getDimensionScale();\n                }\n\n                if (BaseMixinClass._dimensionDigits == undefined) {\n                    BaseMixinClass._dimensionDigits = await CommunicationMessageService.getDimensionDigits();\n                }\n            }\n            if (!this.baseOptions.updateWhileDisconnected && !this.isConnected) return;\n            return super.scheduleUpdate?.();\n        }\n\n        public updateVisibility(): void {\n            if (this.visibleSelectors) {\n                const targetContents: (LitElement & IBaseElement)[] = [];\n\n                const elementConfig = this.visibleSelectors.element;\n                if (!elementConfig['ignore-default-target-content']) {\n                    const targets = (elementConfig.all\n                            ? ComponentService.findAll(elementConfig.name, elementConfig.selector)\n                            : [ComponentService.find(elementConfig.name, elementConfig.selector)]\n                    ).filter(Boolean) as BaseMixinClass[];\n                    targetContents.push(...targets);\n                }\n\n                for (const alt of elementConfig['additional-target-contents'] || []) {\n                    const altTarget = ComponentService.find(alt.name, alt.selector);\n                    if (altTarget) targetContents.push(altTarget);\n                }\n                this.hideElement = targetContents.every(x => x.isEmpty());\n            }\n        }\n\n        public ListensToState(state: keyof ComponentStates): boolean {\n            return this._installedStateListeners.has(state);\n        }\n\n        stateHandlers?: ComponentStateHandlerMap;\n        private _installedStateListeners: Set<keyof ComponentStates> = new Set();\n\n        // State-event handlers — receive events from EventHandlerService.dispatchState.\n        // Subclasses can use `this.onState(...)` or set the `stateHandlers` map declaratively.\n\n        /** Declarative state→handler map; installed once on connectedCallback. */\n        /** Register a typed state-event handler. Safe to call multiple times. */\n        private onState<K extends keyof ComponentStates>(\n            state: K,\n            handler: ComponentStateHandler<K>,\n        ): void {\n            EventHandlerService.RegisterStateHandler(state as string);\n            this.addEventListener(state as string, ((e: Event) => {\n                const ev = e as ComponentStateEvent<K>;\n                const detail = ev.detail as ComponentStateEventDetail<K> | undefined;\n                try {\n                    ev.waitUntil(handler(detail?.data as ComponentStates[K]));\n                } catch (err) {\n                    // Surface a sync throw so whenSettled() observes it; keep other listeners running.\n                    ev.waitUntil(Promise.reject(err));\n                }\n            }) as EventListener);\n            this._installedStateListeners.add(state);\n        }\n\n        // Generic DOM ops installed on every DhElement, alongside (not replacing)\n        // the subclass's own `stateHandlers`. See the ComponentStates augmentation above.\n        private _builtinStateHandlers: ComponentStateHandlerMap = {\n            \"fv:add-class\":    ({ classes }) => { for (const c of classes) this.classList.add(c); },\n            \"fv:remove-class\": ({ classes }) => { for (const c of classes) this.classList.remove(c); },\n            \"fv:toggle-class\": ({ classes }) => {\n                for (const c of classes) {\n                    if (this.classList.contains(c)) this.classList.remove(c);\n                    else this.classList.add(c);\n                }\n            },\n            \"fv:set-attribute\": ({ attribute, value }) => {\n                if (typeof value === \"boolean\" && value) this.setAttribute(attribute, \"\");\n                else if (typeof value === \"boolean\" && !value) this.removeAttribute(attribute);\n                else if (typeof value === \"object\") this.setAttribute(attribute, JSON.stringify(value));\n                else this.setAttribute(attribute, value as string);\n            },\n            \"fv:toggle-attribute\": ({ attribute, value }) => {\n                if (typeof value === \"boolean\" && value) { this.toggleAttribute(attribute); return; }\n                let attributeValue: unknown = value;\n                if (typeof value === \"object\") attributeValue = JSON.stringify(value);\n                if (this.getAttribute(attribute) == attributeValue) this.removeAttribute(attribute);\n                else this.setAttribute(attribute, attributeValue as string);\n            },\n            \"fv:update-visibility\": () => { this.updateVisibility(); },\n            \"fv:scroll-to-top\": ({ behavior }) => { this.scrollTo({ top: 0, left: 0, behavior: behavior ?? \"auto\" }); },\n        };\n\n        private _installDeclaredStateHandlers(): void {\n            for (const map of [this._builtinStateHandlers, this.stateHandlers]) {\n                if (!map) continue;\n                for (const k of Object.keys(map) as Array<keyof ComponentStates>) {\n                    if (this._installedStateListeners.has(k)) continue;\n                    const h = map[k];\n                    if (h) {\n                        this.onState(k, h as ComponentStateHandler<typeof k>);\n                    }\n                }\n            }\n        }\n\n        public VerifyStepStageChange(): boolean {\n            return true\n        }\n\n        public async ApplyStepStage(stage_: number): Promise<void> {\n            return;\n        }\n        public async DetermineStepStageEnvironment(): Promise<{ current: number, first: number, last: number } | undefined> {\n            return undefined;\n        }\n    }\n    return BaseMixinClass as T & Constructor<IBaseElement>;\n};\nexport type DhElement = LitElement & IBaseElement;\nexport const BaseElement = BaseMixin(HideBaseElement);\n","import {html, PropertyValueMap, unsafeCSS} from \"lit\";\nimport {BaseElement} from \"../standard/base/base.component\";\nimport style from './additonal-positons.style.sass?inline';\nimport {customElement, query, state} from \"lit/decorators.js\";\nimport {InputComponent, LabeledInputComponent} from \"../standard/input\";\nimport { AddNeutralAdditionalPositionParams, AdditionalPosition, AdditionalPositionsResult, IPriceData } from \"@dh-software/webui-types\"\nimport {CommunicationMessageService, WebViewerService} from \"@dh-software/webui-api\";\nimport { BaseInput } from \"components/standard/input/base/base-input\";\n\n@customElement(\"fv-additonal-positons\")\nexport class AdditionalPositionsComponent extends BaseElement {\n\n    static styles = [super.styles || [], unsafeCSS(style)]\n\n    @query(\"#artDescField\")\n    private artDescField!: LabeledInputComponent<InputComponent>;\n\n    @query(\"#artPriceField\")\n    private artPriceField!: LabeledInputComponent<InputComponent>;\n\n    @state()\n    private additionalPositions: AdditionalPositionsResult = {articles: []};\n\n    @state()\n    private currency = \"\";\n\n\n    constructor() {\n        super();\n        WebViewerService?.on(\"furnview.changePrice\", async (data_: unknown): Promise<void> => {\n            const priceData = data_ as IPriceData;\n            this.currency = priceData.currency;\n        });\n    }\n\n    render() {\n        return html`\n            <div class=\"overview\">\n                <fv-label i18n=\"507\"></fv-label>\n                <div class=\"row\">\n                    <fv-labeled-input id=\"artDescField\" name=\"artDesc\" type=\"text\" moveable-placeholder value=\"\" i18n-placeholder=\"3102\"></fv-labeled-input>\n                    <fv-labeled-input id=\"artPriceField\" name=\"artPrice\" @change=\"${this.ensureNumber}\" type=\"text\" moveable-placeholder value=\"\" i18n-placeholder=\"3104\">\n                        <div class=\"currency-name\">${this.currency}</div>\n                    </fv-labeled-input>\n                    <fv-button i18n=\"539\" @click=\"${this.addPositon}\"></fv-button>\n                </div>\n\n                ${this.additionalPositions?.articles?.map((position, index) => {\n                    return html`\n                        <div class=\"row space-between\">\n                            <div class=\"column\">\n                                <span>${index + 1}.</span>\n                            </div>\n                            <div class=\"column content\">\n                                <span><span i18n=\"3102\"></span>:</span>\n                                <span>${position.artDesc}</span>\n                            </div>\n                            <div class=\"column content\">\n                                <span><span i18n=\"3104\"></span>:</span>\n                                <span>${position.artPrice} ${this.currency}</span>\n                            </div>\n                            <div class=\"icon-container\" @click=\"${() => { this.deletePositon(position) }}\">\n                                <fv-icon class=\"fv-icon-delete\"></fv-icon>\n                            </div>\n                        </div>\n                    `\n                })}\n            </div>\n        `;\n    }\n\n    async addPositon() {\n        const article = <AddNeutralAdditionalPositionParams>{\n            artDesc: this.artDescField?.value || \"\",\n            artNr: ' ',\n            artPrice: this.artPriceField?.value || \"\",\n            artQty: '1',\n        }\n        if(!article.artDesc || !article.artPrice) {\n            return;\n        }\n        this.artDescField.value = \"\";\n        this.artPriceField.value = \"\";\n        await CommunicationMessageService.AddNeutralArticle(article);\n        this.additionalPositions = await CommunicationMessageService.GetArticleList();\n    }\n\n    async deletePositon(position: AdditionalPosition) {\n        await CommunicationMessageService.DeleteArticle({\n            artPosIds: [position.id]\n        });\n        this.additionalPositions = await CommunicationMessageService.GetArticleList();\n    }\n\n    ensureNumber(ev: Event) {\n        const input = ev.currentTarget as (BaseInput<any> & { getInputElement?: <T>() => T | undefined });\n        if (!input) {\n            console.warn(\"no input found!\", this);\n            return;\n        }\n        const raw = String(input.value ?? \"\");\n        let cleaned = raw.replace(/[^0-9.]/g, \"\");\n        const firstDot = cleaned.indexOf(\".\");\n        if (firstDot !== -1) {\n            cleaned = cleaned.slice(0, firstDot + 1) + cleaned.slice(firstDot + 1).replace(/\\./g, \"\");\n        }\n        if (cleaned === raw) return;\n\n        input.value = cleaned;\n        const native = input.getInputElement?.<HTMLInputElement>();\n        if (native && native.value !== cleaned) native.value = cleaned;\n    }\n\n}\n","import {customElement, property} from \"lit/decorators.js\";\nimport {BaseElement} from \"../../base/base.component\";\nimport {html, unsafeCSS} from \"lit\";\n\nimport style from './dropdown-item.component.sass?inline';\nimport {LocaleService} from \"@dh-software/webui-api\";\n\nexport interface IDropdownItem {\n\n    value: string;\n    text?: string;\n    active?: boolean;\n\n    divider?: boolean;\n    icon?: string;\n    trailingIcon?: string;\n\n    items?: IDropdownItem[]; // UNUSED\n}\n\n@customElement(\"fv-dropdown-item\")\nexport class DropdownItemComponent extends BaseElement {\n\n    static styles = [super.styles || [], unsafeCSS(style)]\n\n    constructor() {\n        super();\n    }\n\n    @property({ type: String, reflect: true }) value = \"\";\n    @property({ type: String, reflect: true }) text?: string;\n    @property({ type: Boolean, reflect: true }) active = false;\n    @property({ type: Boolean, reflect: true }) divider = false;\n    @property({ type: Boolean, reflect: true}) placeholder = false;\n    @property({ type: String }) icon?: string;\n    @property({ type: String }) trailingIcon?: string;\n\n    set dropdownItemOptions(config: Partial<IDropdownItem>) {\n        Object.assign(this, config);\n    }\n\n    get dropdownItemOptions(): IDropdownItem {\n        return {\n            value: this.value,\n            text: this.text,\n            active: this.active,\n            divider: this.divider,\n            icon: this.icon,\n            trailingIcon: this.trailingIcon\n        };\n    }\n\n    render() {\n        if (this.divider) {\n            return html`<div class=\"divider\"></div>`;\n        }\n        return html`\n            <div id=\"container\">\n                ${this.icon ? html`<fv-icon .icon=${this.icon}></fv-icon>` : ''}\n                ${this.text ? html`<fv-label i18n=${this.text} locales-model-no-translation=${this.text}></fv-label>` : ''}\n                ${this.trailingIcon ? html`<fv-icon .icon=${this.trailingIcon}></fv-icon>` : ''}\n            </div>\n        `;\n    }\n\n}\n","import {css, html, nothing, PropertyValueMap, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./dropdown.component.sass?inline\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport {BaseElement} from \"../../base/base.component\";\nimport {IDropdownItem} from \"../dropdown-item/dropdown-item.component\";\nimport {event, EventRef} from \"@dh-software/lit-extensions\";\n\nexport interface IDropdownOptions {\n    placeholder?: string\n    allowEmpty?: boolean\n\n    items?: IDropdownItem[];\n}\n\n@customElement(\"fv-dropdown\")\nexport class DropDownComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({type: Object, reflect: true})\n    dropdownOptions: IDropdownOptions = {};\n\n    @property({type: Object})\n    get selectedItem(): IDropdownItem | undefined {\n        return this._selectedItem\n    }\n    set selectedItem(value: IDropdownItem) {\n        this.value = value.value;\n        this._selectedItem = value;\n    }\n    _selectedItem?: IDropdownItem;\n\n    @property({type: Boolean, reflect: true})\n    active: boolean = false\n\n    @property({type: String, reflect: true})\n    value: string = \"\";\n\n    @property({type: String, reflect: true})\n    name: string = \"\";\n\n    @property({type: Boolean, reflect: true})\n    scrollbar = false\n\n    @property({type: Boolean, reflect: true})\n    grow = false;\n\n    @property({type: Boolean, reflect: true})\n    compact = false;\n\n    private boundGlobalClickHandler = this.globalClickHandler.bind(this);\n\n    private onFocus() {\n        this.active = true;\n    }\n\n    connectedCallback() {\n        super.connectedCallback();\n        document.addEventListener(\"click\", this.boundGlobalClickHandler);\n    }\n\n    disconnectedCallback() {\n        document.removeEventListener(\"click\", this.boundGlobalClickHandler);\n        super.disconnectedCallback();\n    }\n\n    private globalClickHandler(ev: MouseEvent) {\n        if (this.active) {\n            this.active = false;\n        }\n    }\n\n    private onBlur() {\n        this.active = false;\n        const textContent: HTMLDivElement | null = this.shadowRoot ? this.shadowRoot.querySelector(\".text-content\") as HTMLDivElement : null;\n        textContent?.classList.remove(\"hidden\");\n    }\n\n    private async onClick(e: Event) {\n        e.preventDefault();\n        e.stopPropagation();\n        this.active = !this.active;\n    }\n\n    @event({composed: true, bubbles: true}, \"dropdown-item-changed\")\n    readonly changedEvent!: EventRef<IDropdownItem>\n\n    private onDropdownItemClick(item: IDropdownItem, event: Event) {\n        event.preventDefault();\n        event.stopPropagation();\n\n        this.dropdownOptions.items?.forEach((option) => {\n            option.active = item.value === option.value;\n        });\n\n        this.requestUpdate(\"dropdownOptions\");\n        this.selectedItem = item;\n        this.active = false;\n        this.changedEvent.dispatch(item);\n    }\n\n    update(changedProperties: PropertyValues<this>) {\n        if (!this.dropdownOptions.allowEmpty) {\n            if (this.dropdownOptions.items?.length && !this.dropdownOptions.items?.some(x => x.active)) {\n                this.dropdownOptions.items[0].active = true;\n            }\n        }\n        const activeItem = this.dropdownOptions.items?.find(item => item.active);\n        if (activeItem) {\n            this.selectedItem = activeItem;\n        }\n        this.requestUpdate(\"dropdownOptions\");\n        super.update(changedProperties);\n    }\n\n    public clearItems() {\n        this.dropdownOptions.items = [];\n        this.dropdownOptions = {...this.dropdownOptions};\n    }\n\n    public addItem(text: string, value: string): void {\n        this.addItems([{text, value}]);\n    }\n\n    public addItems(items: Array<IDropdownItem>, addEmpty: boolean = false): void {\n        if (addEmpty) {\n            this.dropdownOptions.items = (this.dropdownOptions.items || [])?.concat([{\n                text: '*',\n                value: ''\n            }], items);\n        } else {\n            this.dropdownOptions.items = (this.dropdownOptions.items || []).concat(items);\n        }\n        this.dropdownOptions = {...this.dropdownOptions};\n    }\n\n    private buildSearchField() {\n        if (!this.classList.contains(\"search\")) {\n            return nothing\n        }\n        return html`<input @input=${this.onSearch} .value=\"${this.selectedItem ? this.selectedItem.text : \"\"}\"\n                           @blur=${this.onBlur} @focus=\"${this.onFocus}\" id=\"selection-input\"/>`\n    }\n\n    private buildHeader() {\n        let selectedItem = this.selectedItem || {\n            text: this.dropdownOptions.placeholder || \"\",\n            value: \"\"\n        }\n        selectedItem = Object.assign(JSON.parse(JSON.stringify(selectedItem)), {active: false});\n        return html`\n            <div @click=${this.onClick} class=\"dropdown-header\">\n                <fv-dropdown-item placeholder .dropdownItemOptions=\"${selectedItem}\"></fv-dropdown-item>\n            </div>\n        `\n    }\n\n    private buildDropdownItems() {\n        return html`\n            <div class=\"accordion-items\">\n                <fv-accordion-content class=\"invisible-scroll\" ?active=\"${this.active}\">\n                    <div class=\"scroll-content\">\n                        ${this.dropdownOptions.items?.map((item: IDropdownItem) => {\n                            return html`\n                            <fv-dropdown-item\n                                .dropdownItemOptions=\"${item}\"\n                                @click=\"${(e: Event) => this.onDropdownItemClick(item, e)}\">\n                            </fv-dropdown-item>\n                        `\n                        })}\n                    </div>\n                </fv-accordion-content>\n            </div>\n        `\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            ${this.buildHeader()}\n            ${this.buildDropdownItems()}\n        `;\n    }\n\n    //Experimentell\n    private onSearch(e: Event) {\n        // const input = e.currentTarget as HTMLInputElement;\n        //\n        // const items = this.shadowRoot?.querySelectorAll<DropdownItemComponent>(\"fv-dropdown-item\") || undefined;\n        // const headerDiv = this.shadowRoot?.querySelector(\".dropdown-header\") || undefined\n        // if (items) {\n        //     let regex: RegExp | null = null;\n        //     if (input.value.trim().length > 0) {\n        //         headerDiv?.classList.add(\"hidden\");\n        //         regex = new RegExp(input.value, \"g\");\n        //     } else {\n        //         regex = null;\n        //         headerDiv?.classList.remove(\"hidden\");\n        //     }\n        //     items.forEach((item) => {\n        //         if (regex) {\n        //             item.classList.add(\"hidden\");\n        //             const testText = item.data.text && regex.test(item.data.text);\n        //             const testValue = item.data.value && regex.test(item.data.value)\n        //             if (testText || testValue) {\n        //                 item.classList.remove(\"hidden\");\n        //             }\n        //         } else {\n        //             item.classList.remove(\"hidden\");\n        //         }\n        //     });\n        // }\n    }\n}\n","import {CommunicationMessageService} from \"@dh-software/webui-api\";\n\nexport interface IMediaImage {\n    url: string,\n    image: HTMLImageElement | null\n}\n\nexport interface IProgramImage {\n    images?: Array<IMediaImage>\n    text?: string,\n    heading?: string,\n    subheading?: string,\n    program?: string\n}\n\nexport interface IProgramImageFilter {\n    program: string,\n    kataId?: string\n}\n\nexport class ImageServiceClass {\n\n    private _imageCache = new Map<string, any>();\n    private _globalImageMedia: Promise<Array<IMediaImage>> = Promise.resolve([]);\n\n    async getProgramSelectionImages(imageFilter: IProgramImageFilter[]): Promise<{ [program: string]: IProgramImage }> {\n        const programImages: { [program: string]: IProgramImage } = {};\n\n        this._globalImageMedia = this.getProgramMediaImages(imageFilter, \"milieu\");\n        await this._globalImageMedia;\n\n        imageFilter.forEach((programFilterEntry) => {\n            const cacheKey = `${window.g_article.manu.toLowerCase()}_${programFilterEntry.program.toLowerCase()}${programFilterEntry.kataId && programFilterEntry.kataId.length > 0 ? `_${programFilterEntry.kataId.toLowerCase()}` : ''}_milieu`;\n            const programData = this._imageCache.has(cacheKey) ? this._imageCache.get(cacheKey) : null;\n            if (programData) {\n                programImages[programFilterEntry.program] = programData;\n            }\n        });\n        return programImages;\n    }\n\n    async getProgramMediaImages(imageFilter: IProgramImageFilter[], imageType = \"milieu\"): Promise<Array<IMediaImage>> {\n        await this._globalImageMedia;\n        const result: Array<IMediaImage> = [];\n        const programImageFilterToRequest: IProgramImageFilter[] = [];\n        for (const progImageFilterData of imageFilter) {\n            const cacheKey = `${window.g_article.manu.toLowerCase()}_${progImageFilterData.program.toLowerCase()}${progImageFilterData.kataId && progImageFilterData.kataId.length > 0 ? `_${progImageFilterData.kataId.toLowerCase()}` : ''}_${imageType.toLowerCase()}`;\n            if (!this._imageCache.has(cacheKey)) {\n                programImageFilterToRequest.push(progImageFilterData);\n            }\n            else {\n                const data: IProgramImage = this._imageCache.get(cacheKey)!;\n                result.push(...data.images!);\n            }\n        }\n        if (programImageFilterToRequest.length > 0) {\n            const programArray = programImageFilterToRequest.map(item => item.program);\n            const kataIdArray = programImageFilterToRequest.map(item => item.kataId !== undefined ? item.kataId : \"\");\n            const progImagesFetch = await CommunicationMessageService.getProgImages(window.g_article.manu, programArray, kataIdArray);\n            for (const progKey in progImagesFetch) {\n                const imageProgram = progImagesFetch[progKey]?.prog || progKey;\n                const cacheKey = `${window.g_article.manu.toLowerCase()}_${progKey.toLowerCase()}_${imageType.toLowerCase()}`;\n                const images: IMediaImage[] = [];\n                const imageList = progImagesFetch[progKey].images;\n                for (let i = 0; i < imageList.length; i++) {\n                    const imageName = imageList[i];\n                    if (imageName && imageProgram) {\n                        const preloadImage = i === 0;\n                        images.push(await this.getImage(window.g_article.manu, imageProgram, imageName, imageType, preloadImage));\n                    }\n                }\n                const data: IProgramImage = {\n                    images: images,\n                    heading: progImagesFetch[progKey].heading,\n                    program: imageProgram,\n                    subheading: progImagesFetch[progKey].subheading,\n                    text: progImagesFetch[progKey].text\n                };\n                this._imageCache.set(cacheKey, data);\n                result.push(...data.images!);\n            }\n        }\n        return result;\n    }\n\n    async getKataLevelOneMediaImages(kataIds: string[]): Promise<Array<IMediaImage>> {\n        await this._globalImageMedia;\n        const result: Array<IMediaImage> = [];\n        const kataLevelsToRequest: string[] = [];\n        for (const levelOne of kataIds) {\n            const cacheKey = `${window.g_article.manu.toLowerCase()}_${levelOne.toLowerCase()}_art`;\n            if (!this._imageCache.has(cacheKey)) {\n                kataLevelsToRequest.push(levelOne);\n            }\n            else {\n                const data: { images: Array<IMediaImage> } = this._imageCache.get(cacheKey)!;\n                result.push(...data.images!);\n            }\n        }\n        if (kataLevelsToRequest.length > 0) {\n            const levelOneKataInfo = await CommunicationMessageService.loadLevel1KataInfo(window.g_article.manu, \"\", kataLevelsToRequest, false);\n            for (const levelOne in levelOneKataInfo) {\n\n                const kataImages = [];\n                const cacheKey = `${window.g_article.manu.toLowerCase()}_${levelOne.toLowerCase()}_art`;\n                for (const imageName of levelOneKataInfo[levelOne].images) {\n                    if (imageName) {\n                        kataImages.push(await this.getImage(window.g_article.manu, \"\", imageName, \"art\"));\n                    }\n                }\n                const data = {\n                    images: kataImages\n                };\n                this._imageCache.set(cacheKey, data);\n                result.push(...data.images!);\n            }\n        }\n        return result;\n    }\n\n    private async getImage(manufacturer: string, program: string, name: string, type = \"milieu\", preloadImageBuffer: boolean = false): Promise<IMediaImage> {\n        const imgURL = await CommunicationMessageService.getMediaUrl(manufacturer, program, type, name, true);\n        if (preloadImageBuffer) {\n            return new Promise(resolve => {\n                const bufferImage = new Image();\n                bufferImage.onload = () => {\n                    resolve({ image: bufferImage, url: imgURL });\n                };\n                bufferImage.onerror = () => {\n                    resolve({ image: null, url: imgURL });\n                };\n                bufferImage.src = imgURL;\n            });\n        }\n        return { image: null, url: imgURL };\n    }\n\n    public clearCache() {\n        this._imageCache.clear();\n    }\n\n    public getExtension(url_: string) {\n        return url_.substring(url_.lastIndexOf(\".\") + 1);\n    }\n}\n\nexport const ImageService = new ImageServiceClass();\n","import { css, html, HTMLTemplateResult, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./article-item.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { ImageService } from \"../../../utils/image.service\";\n\n@customElement(\"fv-article-item\")\nexport class ArticleItemComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true })\n    number = \"\"\n\n    @property({ type: String })\n    width = \"0\"\n\n    @property({ type: String })\n    height = \"0\"\n\n    @property({ type: String })\n    depth = \"0\"\n\n    @property({ type: String })\n    image = \"\"\n\n    constructor() {\n        super();\n        this.addEventListener(\"click\", this.onClickEvent);\n    }\n\n    private onClickEvent(e: Event) {\n        this.dispatchEvent(new CustomEvent(\"onArticleClick\", {}));\n    }\n\n    protected getDefaultImageIcon(): string {\n        const styles = getComputedStyle(this);\n        return styles.getPropertyValue(\"--default-image\");\n    }\n\n    render(): TemplateResult<1> {\n        const arrSize = [];\n        +this.width !== 0.0 ? arrSize.push(this.width) : null;\n        +this.height !== 0.0 ? arrSize.push(this.height) : null;\n        +this.depth !== 0.0 ? arrSize.push(this.depth) : null;\n\n        const iconURL = this.getDefaultImageIcon().replace(/url\\('(.+)'\\)/, '$1');\n        let imageTemplate: HTMLTemplateResult\n\n        const image = this.image || iconURL\n        if (image) {\n            const extension = ImageService.getExtension(image);\n            if (extension.indexOf(\"svg\") !== -1) {\n                imageTemplate = html`<svg-icon class=\"image\" src=\"${image}\"></svg-icon>`\n            } else if (image.startsWith('fv-icon')) {\n                imageTemplate = html`<fv-icon class=\"image iconimage\" icon=\"${image}\"></fv-icon>`\n            } else {\n                imageTemplate = html`<fv-icon class=\"image\" src=\"${image}\"></fv-icon>`\n            }\n        }\n\n        return html`\n            <div id=\"product-image\">\n                ${imageTemplate!}\n            </div>\n            <div id=\"product-info\">\n                <div><label id=\"product-number\">${this.number}</label></div>\n                <div>\n                    <label id=\"product-dimensions\">\n                        ${arrSize.join(\"x\")} \n                    </label>\n                </div>\n            </div>\n        `;\n    }\n}\n","import {css, html, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./article-list.component.sass?inline\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport \"../../standard/dropdown/dropdown/dropdown.component\";\nimport \"../article-item/article-item.component\";\nimport {ArticleItemComponent} from \"../article-item\";\nimport {DropDownComponent} from \"../../standard/dropdown\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {BaseElement} from \"../../standard/base/base.component\";\nimport {ButtonComponent} from \"../../standard/button\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\nimport {IArticleData, ICategoryData, IKataPageData, IKataTreeData} from \"@dh-software/webui-types\";\n\nfunction convertDecimalNCRtoUTF8(ncr: string) {\n    if (ncr && ncr.length > 0) {\n        return ncr.replace(/&#([0-9]+);/g, function (b) {\n            return String.fromCodePoint(parseInt(b.slice(2, -1)));\n        });\n    }\n    return ncr;\n}\n\ninterface IListArticleData extends IArticleData {\n    Cats: string[]\n}\n\n@customElement(\"fv-article-list\")\nexport class ArticleListComponent extends BaseElement {\n    private _manufacturer = \"\";\n    private _program = \"\";\n    private _selectedCategories: Array<string> = [];\n    private _valuesWidth: Array<string> = [];\n    private _valuesHeight: Array<string> = [];\n    private _valuesDepth: Array<string> = [];\n    private _categoriesFilter: Array<ICategoryData> = [];\n    private _offset = 0;\n    private _showWildCardFilter = true;\n    private _selectedDimensions: { [key: string]: string } = {\n        width: \"0.0\",\n        height: \"0.0\",\n        depth: \"0.0\"\n    }\n\n    private listAll: Array<IListArticleData> = [];\n\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n\n    @property()\n    dimensionScale = 0.1\n\n    @property()\n    fractionDigits = 2\n\n    @property()\n    limit = 50\n\n    @property()\n    img_url_prefix = \"\"\n\n    @property({type: Array})\n    list: Array<IListArticleData> = []\n\n    private onArticleClick = async (e: Event, component: ArticleItemComponent) => {\n        if (component.number) {\n            await CommunicationMessageService?.loadArticle(this._manufacturer, this._program, component.number);\n        }\n    }\n\n    constructor() {\n        super();\n    }\n\n\n    public async initialize(manufacturer: string, program: string, level: string, mod: string, showWildcardFilter: boolean): Promise<void> {\n        this._showWildCardFilter = showWildcardFilter;\n        this._manufacturer = manufacturer;\n        this._program = program;\n\n        const kataTreeData: IKataTreeData = await CommunicationMessageService?.getKataTreeJson();\n\n        const widthDD: DropDownComponent | null = this.shadowRoot ? this.shadowRoot.querySelector(\"#width-dropdown\") : null;\n        const heightDD: DropDownComponent | null = this.shadowRoot ? this.shadowRoot.querySelector(\"#height-dropdown\") : null;\n        const depthDD: DropDownComponent | null = this.shadowRoot ? this.shadowRoot.querySelector(\"#depth-dropdown\") : null;\n\n        widthDD?.addItem(\"*\", \"\");\n        heightDD?.addItem(\"*\", \"\");\n        depthDD?.addItem(\"*\", \"\");\n\n        const articleDataMod: IKataPageData = await CommunicationMessageService?.getKataPage(mod, level);\n\n        if (articleDataMod && articleDataMod.Modules && articleDataMod.Modules[0].Articles && articleDataMod.Modules[0].Articles[0] && Array.isArray(articleDataMod.Modules[0].Articles[0])) {\n            articleDataMod.Modules[0].Articles[0].forEach((article) => {\n                const art = article as IListArticleData;\n                if (art.dxma) {\n                    art.kataWidth = art.dxma;\n                }\n                if (art.dzma) {\n                    art.kataHeight = art.dzma;\n                }\n                if (art.dyma) {\n                    art.kataDepth = art.dyma;\n                }\n\n                if (art.MMdx) {\n                    art.kataWidth = art.MMdx;\n                }\n                if (art.MMdz) {\n                    art.kataHeight = art.MMdz;\n                }\n                if (art.MMdy) {\n                    art.kataDepth = art.MMdy;\n                }\n\n                if (art.Dispdx) {\n                    art.kataWidth = art.Dispdx;\n                }\n                if (art.Dispdz) {\n                    art.kataHeight = art.Dispdz;\n                }\n                if (art.Dispdy) {\n                    art.kataDepth = art.Dispdy;\n                }\n\n                if (this._valuesWidth.indexOf(art.kataWidth) === -1) {\n                    this._valuesWidth.push(art.kataWidth);\n                }\n                if (this._valuesHeight.indexOf(art.kataHeight) === -1) {\n                    this._valuesHeight.push(art.kataHeight);\n                }\n                if (this._valuesDepth.indexOf(art.kataDepth) === -1) {\n                    this._valuesDepth.push(art.kataDepth);\n                }\n                this.listAll.push(article as IListArticleData);\n            });\n        }\n        this._valuesWidth.sort(this.sortValues);\n        this._valuesWidth.forEach(function (value) {\n            widthDD?.addItem(value, value);\n        });\n\n        this._valuesHeight.sort(this.sortValues);\n        this._valuesHeight.forEach(function (value) {\n            heightDD?.addItem(value, value);\n        });\n\n        this._valuesDepth.sort(this.sortValues);\n        this._valuesDepth.forEach(function (value) {\n            depthDD?.addItem(value, value);\n        });\n\n        const tmpCatList: Array<string> = [];\n        this.listAll.forEach((value, index) => {\n            value.Cats = value.CatString.split(\",\");\n            value.Cats.forEach((cat: string, index1: number) => {\n                if (tmpCatList.indexOf(cat) === -1) {\n                    if (cat !== \"\") {\n                        tmpCatList.push(cat);\n                    }\n                }\n            });\n        });\n\n        tmpCatList.forEach((value, index) => {\n            const findObj = kataTreeData.definedFilterCategories.find(element => element.id === value);\n            if (findObj) {\n                const findCat = this._categoriesFilter.find(element => element.id === value);\n                if (!findCat) {\n                    if (findObj.priority === 1000) {\n                        this._categoriesFilter.push({name: findObj.name, id: findObj.id, priority: findObj.priority});\n                    }\n                }\n            }\n        });\n\n        if (this._categoriesFilter.length === 0) {\n            tmpCatList.forEach((value, index) => {\n                const findObj = kataTreeData.definedFilterCategories.find(element => element.id === value);\n                if (findObj) {\n                    const findCat = this._categoriesFilter.find(element => element.id === value);\n                    if (!findCat) {\n                        if (findObj.priority === 2000) {\n                            this._categoriesFilter.push({\n                                name: findObj.name,\n                                id: findObj.id,\n                                priority: findObj.priority\n                            });\n                        }\n                    }\n                }\n            });\n        }\n\n        this.list = this.list.concat(this.listAll);\n\n        if (this.shadowRoot) {\n            const wildCardBtn: ButtonComponent | null = this.shadowRoot.querySelector(\"#wildCardFilterButton\") as ButtonComponent;\n            if (!this._showWildCardFilter) {\n                wildCardBtn.classList.add(\"hidden\");\n            }\n\n        }\n\n    }\n\n    private sortValues(a: string, b: string) {\n        if (+a < +b) return -1;\n        if (+a > +b) return 1;\n        return 0;\n    }\n\n    private async filterButtonClick(event: Event) {\n        const button = event.target as ButtonComponent;\n        const category = button.getAttribute(\"category\");\n\n        const activeButtons: NodeListOf<ButtonComponent> = this.renderRoot.querySelectorAll(\".active\");\n        activeButtons.forEach((value, key) => {\n            value.classList.remove(\"active\");\n        });\n        button.classList.add(\"active\");\n\n        if (category) {\n            this._selectedCategories[0] = category;\n        } else {\n            this._selectedCategories = [];\n        }\n\n        await this.filterArticles();\n    }\n\n    private async onChangeDropDown(e: CustomEvent) {\n        const dropDown = (e.currentTarget as DropDownComponent);\n        this._selectedDimensions[dropDown.name] = dropDown.value || \"0.0\";\n        await this.filterArticles();\n    }\n\n    private async filterArticles() {\n        this.list = [];\n        this.listAll.forEach((article, index) => {\n            let add = true;\n            if (this._selectedCategories.length > 0) {\n                if (!article.Cats.includes(this._selectedCategories[0])) {\n                    add = false;\n                }\n            }\n            if (this._selectedDimensions.height !== \"0.0\") {\n                if (article.kataHeight !== this._selectedDimensions.height) {\n                    add = false;\n                }\n            }\n            if (this._selectedDimensions.width !== \"0.0\") {\n                if (article.kataWidth !== this._selectedDimensions.width) {\n                    add = false;\n                }\n            }\n            if (this._selectedDimensions.depth !== \"0.0\") {\n                if (article.kataDepth !== this._selectedDimensions.depth) {\n                    add = false;\n                }\n            }\n            if (add) {\n                this.list.push(article);\n            }\n        });\n        this.requestUpdate(\"list\");\n        await this.updateComplete;\n    }\n\n    render(): TemplateResult<1> {\n        const dropDownClassMap = {\n            bordered: this.classList.contains(\"bordered\") && this.classList.contains(\"dropdown\"),\n            fluid: true\n        };\n        return html`\n            <div id=\"filter-container\">\n                <fv-button id=\"wildCardFilterButton\" @click=${this.filterButtonClick} part=\"filter-button\"\n                           class=\"active\" style=\"width: 23px\">*\n                </fv-button>\n                ${\n                        this._categoriesFilter.map((category) => {\n                            return html`\n                                <fv-button category=${category.id} @click=${this.filterButtonClick}\n                                           part=\"filter-button\">${convertDecimalNCRtoUTF8(category.name)}\n                                </fv-button>`;\n                        })\n                }\n\n            </div>\n            <div id=\"filter-container-size\">\n                <fv-dropdown @onChange=${this.onChangeDropDown} class=${classMap(dropDownClassMap)} name=\"width\"\n                             i18n-placeholder=\"181\" placeholder=\"Breite\" id=\"width-dropdown\"></fv-dropdown>\n                <fv-dropdown @onChange=${this.onChangeDropDown} class=${classMap(dropDownClassMap)} name=\"height\"\n                             i18n-placeholder=\"183\" placeholder=\"Höhe\" id=\"height-dropdown\"></fv-dropdown>\n                <fv-dropdown @onChange=${this.onChangeDropDown} class=${classMap(dropDownClassMap)} name=\"depth\"\n                             i18n-placeholder=\"182\" placeholder=\"Tiefe\" id=\"depth-dropdown\"></fv-dropdown>\n            </div>\n\n            <fv-list-box id=\"article-list-container\">\n                ${\n                        this.list.map((article) => {\n                            const articleComponent: ArticleItemComponent = document.createElement(\"fv-article-item\") as ArticleItemComponent;\n                            articleComponent.number = article.ArtNr;\n                            // articleComponent.width = ((+article.kataWidth) * this.dimensionScale).toFixed(this.fractionDigits);\n                            // articleComponent.height = ((+article.kataHeight) * this.dimensionScale).toFixed(this.fractionDigits);\n                            // articleComponent.depth = ((+article.kataDepth) * this.dimensionScale).toFixed(this.fractionDigits);\n                            articleComponent.width = article.dxma;\n                            articleComponent.height = article.dzma;\n                            articleComponent.depth = article.dyma;\n                            articleComponent.addEventListener(\"onArticleClick\", (e: Event) => {\n                                const component = e.currentTarget as ArticleItemComponent;\n                                this.onArticleClick(e, component);\n                            });\n                            if (this.img_url_prefix && article.imgName) {\n                                articleComponent.image = this.img_url_prefix + convertDecimalNCRtoUTF8(article.imgName);\n                            }\n                            return articleComponent;\n                        })\n                }\n                <slot></slot>\n            </fv-list-box>\n        `;\n    }\n}\n","import {css, html, HTMLTemplateResult, PropertyDeclaration, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./fitting-item.component.sass?inline\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport {BaseElement} from \"../../standard/base/base.component\";\nimport {ImageService} from \"../../../utils/image.service\";\nimport {ConfigurationService, DragDropService} from \"@dh-software/webui-api\";\nimport {DragType} from \"@dh-software/webui-types\";\n\n@customElement(\"fv-fitting-item\")\nexport class FittingItemComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({type: String, reflect: true})\n    number = \"\"\n\n    @property({type: String, reflect: true})\n    jsaNumber = \"\"\n\n    @property({type: String})\n    artText = \"\"\n\n    @property({type: String})\n    image = \"\"\n\n    private renderActionButtons = false;\n\n    constructor() {\n        super();\n        this.addEventListener(\"click\", this.onClickEvent);\n    }\n\n    private onClickEvent(e: Event) {\n        e.stopPropagation();\n        this.dispatchEvent(new CustomEvent(\"onArticleClick\", {bubbles: false}));\n    }\n\n    private onDeleteClick(e: Event) {\n        e.stopPropagation();\n        this.dispatchEvent(new CustomEvent(\"onDeleteClick\", {bubbles: false}));\n    }\n\n    private onMoveClick(e: Event) {\n        e.stopPropagation();\n        this.dispatchEvent(new CustomEvent(\"onMoveClick\", {bubbles: false}));\n    }\n\n    private onResetClick(e: Event) {\n        e.stopPropagation();\n        this.dispatchEvent(new CustomEvent(\"onResetClick\", {bubbles: false}));\n    }\n\n    protected firstUpdated() {\n        DragDropService.removeElement(this);\n        DragDropService.addElement(this, {\n            id: this.jsaNumber,\n            type: DragType.FITTING\n        });\n    }\n\n    async requestUpdate(name?: PropertyKey, oldValue?: unknown, options?: PropertyDeclaration) {\n        this.renderActionButtons = !(await ConfigurationService.Configuration)[\"enable_depth_selection\"] as boolean;\n        super.requestUpdate(name, oldValue, options);\n    }\n\n    protected getDefaultImageIcon(): string {\n        const styles = getComputedStyle(this);\n        return styles.getPropertyValue(\"--default-image\");\n    }\n\n    render(): TemplateResult<1> {\n        const iconURL = this.getDefaultImageIcon().replace(/url\\('(.+)'\\)/, '$1');\n        let imageTemplate: HTMLTemplateResult\n\n        const image = this.image || iconURL\n        if (image) {\n            const extension = ImageService.getExtension(image);\n            if (extension.indexOf(\"svg\") !== -1) {\n                imageTemplate = html`\n                    <svg-icon class=\"image\" src=\"${image}\"></svg-icon>`\n            } else if (image.startsWith('fv-icon')) {\n                imageTemplate = html`\n                    <fv-icon class=\"image iconimage\" icon=\"${image}\"></fv-icon>`\n            } else {\n                imageTemplate = html`\n                    <fv-icon class=\"image\" src=\"${image}\"></fv-icon>`\n            }\n        }\n\n        return html`\n            <div id=\"product-image\">\n                ${imageTemplate!}\n            </div>\n            <div id=\"product-info\">\n                <div><label id=\"product-artText\">${this.artText}</label></div>\n            </div>\n\n            ${this.renderActionButtons ? html`\n                <div class=\"product-actions\">\n                    <div class=\"product-move circle-number-symbol\" @click=\"${this.onMoveClick}\">\n                        <div class=\"icon fv-icon-move3d\"></div>\n                    </div>\n                    <div class=\"product-delete circle-number-symbol\" @click=\"${this.onDeleteClick}\">\n                        <div class=\"icon fv-icon-plus\"></div>\n                    </div>\n                    <div class=\"product-reset circle-number-symbol\" @click=\"${this.onResetClick}\">\n                        <div class=\"icon fv-icon-reload\"></div>\n                    </div>\n                </div>` : \"\"}\n        `;\n    }\n}\n","import { css, html, HTMLTemplateResult, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./proptrans-item.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { ImageService } from \"../../../utils/image.service\";\nimport { DragDropService } from \"@dh-software/webui-api\";\nimport {DragType} from \"@dh-software/webui-types\";\n\n@customElement(\"fv-proptrans-item\")\nexport class ProptransItemComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String })\n    ptid = \"\"\n\n    @property({ type: String, reflect: true })\n    number = \"\"\n\n    @property({ type: String })\n    artText = \"\"\n\n    @property({ type: String })\n    image = \"\"\n\n    constructor() {\n        super();\n        this.addEventListener(\"click\", this.onClickEvent);\n    }\n\n    private onDeleteClick(e: Event) {\n        e.stopPropagation();\n        this.dispatchEvent(new CustomEvent(\"onDeleteClick\", { bubbles: false }));\n    }\n\n    private onClickEvent(e: Event) {\n        e.stopPropagation();\n        this.dispatchEvent(new CustomEvent(\"onArticleClick\", { bubbles: false }));\n    }\n\n    protected firstUpdated() {\n        DragDropService.removeElement(this);\n        DragDropService.addElement(this, {\n            id: this.ptid,\n            type: DragType.PROPTRANSFER\n        });\n    }\n\n    protected getDefaultImageIcon(): string {\n        const styles = getComputedStyle(this);\n        return styles.getPropertyValue(\"--default-image\");\n    }\n\n    render(): TemplateResult<1> {\n        const iconURL = this.getDefaultImageIcon().replace(/url\\('(.+)'\\)/, '$1');\n        let imageTemplate: HTMLTemplateResult\n\n        const image = this.image || iconURL\n        if (image) {\n            const extension = ImageService.getExtension(image);\n            if (extension.indexOf(\"svg\") !== -1) {\n                imageTemplate = html`<svg-icon class=\"image\" src=\"${image}\"></svg-icon>`\n            } else if (image.startsWith('fv-icon')) {\n                imageTemplate = html`<fv-icon class=\"image iconimage\" icon=\"${image}\"></fv-icon>`\n            } else {\n                imageTemplate = html`<fv-icon class=\"image\" src=\"${image}\"></fv-icon>`\n            }\n        }\n\n        return html`\n            <div id=\"product-image\">\n                ${imageTemplate!}\n            </div>\n            <div id=\"product-info\">\n                <div><label id=\"product-artText\">${this.artText}</label></div>\n            </div>\n            <div class=\"product add circle-number-symbol\">\n                <div class=\"icon fv-icon-plus\"></div>\n            </div>\n            <div class=\"product delete circle-number-symbol\" @click=\"${this.onDeleteClick}\">\n                <div class=\"icon fv-icon-plus\"></div>\n            </div>\n        `;\n    }\n\n}\n","import { css, html, HTMLTemplateResult, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./shoppingcart-item.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { ImageService } from \"../../../utils/image.service\";\n\n@customElement(\"fv-shoppingcart-item\")\nexport class ShoppingcartItemComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true })\n    number = \"\"\n\n    @property({ type: String })\n    artText = \"\"\n\n    @property({ type: String })\n    image = \"\"\n\n    constructor() {\n        super();\n        this.addEventListener(\"click\", this.onClickEvent);\n    }\n\n    private onClickEvent(e: Event) {\n        e.stopPropagation();\n        this.dispatchEvent(new CustomEvent(\"onArticleClick\", { bubbles: false }));\n    }\n\n    protected getDefaultImageIcon(): string {\n        const styles = getComputedStyle(this);\n        return styles.getPropertyValue(\"--default-image\");\n    }\n\n    render(): TemplateResult<1> {\n        const iconURL = this.getDefaultImageIcon().replace(/url\\('(.+)'\\)/, '$1');\n        let imageTemplate: HTMLTemplateResult\n\n        const image = this.image || iconURL\n        if (image) {\n            const extension = ImageService.getExtension(image);\n            if (extension.indexOf(\"svg\") !== -1) {\n                imageTemplate = html`<svg-icon class=\"image\" src=\"${image}\"></svg-icon>`\n            } else if (image.startsWith('fv-icon')) {\n                imageTemplate = html`<fv-icon class=\"image iconimage\" icon=\"${image}\"></fv-icon>`\n            } else {\n                imageTemplate = html`<fv-icon class=\"image\" src=\"${image}\"></fv-icon>`\n            }\n        }\n\n        return html`\n            <div id=\"product-image\">\n                ${imageTemplate!}\n            </div>\n            <div id=\"product-info\">\n                <div><label id=\"product-artText\">${this.artText}</label></div>\n            </div>\n        `;\n    }\n}\n","class StyleHelperClass {\n\n    private _updateMaxContentHeightPromise = Promise.resolve();\n    private _updateInstance = -1e+10;\n    public async updateMaxTransitionHeight(content: HTMLElement, maxHeightOverwrite?: string, force = false): Promise<void> {\n        const instance = ++this._updateInstance;\n        await this._updateMaxContentHeightPromise;\n\n        if (content && instance >= this._updateInstance) {\n            this._updateMaxContentHeightPromise = new Promise((resolve) => {\n                content.style.setProperty(\"max-height\", maxHeightOverwrite != undefined ? maxHeightOverwrite : \"none\");\n                const contentSize = this.getSize(content as HTMLElement);\n                content.style.removeProperty(\"max-height\");\n                const _proceedUpdate = () => {\n                    content.style.setProperty(\"--max-transition-height\", contentSize.height + \"px\");\n                    return resolve();\n                }\n                force ? _proceedUpdate() : requestAnimationFrame(_proceedUpdate);\n            });\n        }\n        return this._updateMaxContentHeightPromise;\n    }\n\n    public hexToRgb(hex: string) {\n        const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n        return result ? {\n            r: parseInt(result[1], 16),\n            g: parseInt(result[2], 16),\n            b: parseInt(result[3], 16)\n        } : null;\n    }\n    getSize(element_: HTMLElement): {width: number, height: number} {\n\n        const style = window.getComputedStyle(element_);\n        const width = element_.offsetWidth;\n        const height = element_.offsetHeight;\n        const marginLR: number = parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n        const marginTB: number = parseFloat(style.marginTop) + parseFloat(style.marginBottom);\n        const paddingLR: number = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n        const paddingTB: number = parseFloat(style.paddingTop) + parseFloat(style.paddingBottom);\n        const borderLR: number = parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n        const borderTB: number = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n\n        return { width: (width + marginLR - paddingLR + borderLR), height: (height + marginTB - paddingTB + borderTB)};\n    }\n\n    isElementInView(element_: HTMLElement, parent_: HTMLElement, fullyInView_?: boolean) {\n        const style = window.getComputedStyle(element_);\n        const marginLeft: number = parseFloat(style.marginLeft);\n        const marginTop: number = parseFloat(style.marginTop);\n\n        const pageTop = parent_.scrollTop;\n        const pageBottom = pageTop + this.getSize(parent_).height;\n        const elementTop = element_.offsetTop - parent_.offsetTop - marginTop;\n        const elementBottom = elementTop + this.getSize(element_).height;\n\n        const pageLeft = parent_.scrollLeft;\n        const pageRight = pageLeft + this.getSize(parent_).width;\n        const elementLeft = element_.offsetLeft - parent_.offsetLeft - marginLeft;\n        const elementRight = elementLeft + this.getSize(element_).width;\n\n        if (fullyInView_) {\n            return ((pageTop < elementTop) && (pageBottom > elementBottom)) && ((pageLeft < elementLeft) && (pageRight > elementRight));\n        }\n        else {\n            return ((elementTop <= pageBottom) && (elementBottom >= pageTop)) && ((elementLeft <= pageRight) && (elementRight >= pageLeft));\n        }\n    }\n\n    public getVar(element: HTMLElement, varName: string, fallback = \"\"): string {\n        if (element && element.style) {\n            const varValue = element.style.getPropertyValue(varName);\n            if (varValue) {\n                return varValue;\n            }\n        }\n        return fallback;\n    }\n\n    public requestAnimationFrame(): Promise<any> {\n        return new Promise((r) => requestAnimationFrame(() => requestAnimationFrame(() => r(void 0))));\n    }\n\n}\n\nexport const StyleHelper = new StyleHelperClass();\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\r\nimport style from \"./button.component.sass?inline\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\nimport { BaseElement } from \"../base/base.component\";\r\nimport { StyleHelper } from \"../../../utils/style.helper\";\r\n\r\n@customElement(\"fv-button\")\r\nexport class ButtonComponent extends BaseElement {\r\n    static styles = [\r\n        super.styles || [],\r\n        css`${unsafeCSS(style)}`\r\n    ];\r\n\r\n    @property({ type: Boolean, reflect: true })\r\n    disabled = false\r\n\r\n    @property({ type: Boolean, reflect: true })\r\n    toggleable = false;\r\n\r\n    @property({ type: String, reflect: true })\r\n    public icon = \"\";\r\n\r\n    @property({ type: String, reflect: true  })\r\n    type: string = \"button\";\r\n\r\n    constructor() {\r\n        super();\r\n        this.addEventListener(\"click\", (e: Event) => {\r\n            if (this.classList.contains(\"disabled\")) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n            }\r\n        });\r\n        this.addEventListener(\"click\", () => {\r\n            if (this.toggleable) {\r\n                if (this.classList.contains(\"active\")) {\r\n                    this.classList.remove(\"active\");\r\n                }\r\n                else {\r\n                    this.classList.add(\"active\");\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    private buildIcon() {\r\n        if (this.icon.length > 0) {\r\n            return html`<i part=\"icon\" class=\"icon ${this.icon}\"></i>`;\r\n        }\r\n        const btnImg = StyleHelper.getVar(this, \"--button-image\");\r\n        if(btnImg && btnImg.endsWith(\".svg\")) {\r\n            return html`<svg-icon part=\"icon\" src=\"${btnImg}\"></svg-icon>`\r\n        }\r\n        return html`${StyleHelper.getVar(this, \"--button-image\") ? html`<img part=\"icon\" src=\"${btnImg}\">` : \"\"}`;\r\n    }\r\n\r\n    render(): TemplateResult<1> {\r\n        return html`\r\n            <button part=\"button\" type=\"${this.type}\"tabindex=\"-1\">\r\n                <span>\r\n                    ${this.buildIcon()}\r\n                    <slot></slot>\r\n                    <slot name=\"inactive\"></slot>\r\n                    <slot name=\"active\"></slot>\r\n                    <slot class=\"loader-slot\" name=\"loader\"></slot>\r\n                </span>\r\n            </button>\r\n        `;\r\n    }\r\n}\r\n","import { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport style from \"./confirming-button.component.sass?inline\";\nimport {LocaleService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-confirming-button\")\nexport class ConfirmingButtonComponent extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n    constructor() {\n        super();\n    }\n\n    @property({ type: String, reflect: true, attribute: \"txt\" })\n    public _txt = \"\";\n    @property({ type: String, reflect: true, attribute: \"confirm-txt\" })\n    public _confirmTxt = \"\";\n    // @property({ type: Boolean, reflect: true, attribute: \"\" })\n    // public\n    @property({ type: Boolean, reflect: true, attribute: \"disabled\" })\n    public _disabled = false;\n\n\n\n\n    @query(\".button-container\")\n    private _buttonContainer: HTMLDivElement | undefined;\n    @query(\".button-text-send\")\n    private _buttonTextSend: HTMLSpanElement | undefined;\n    @query(\".checkmark\")\n    private _checkmark: HTMLDivElement | undefined;\n    @query(\".loader-slot\")\n    private _loaderElement: HTMLSlotElement | undefined;\n\n\n    private _wasSend = false;\n    public get confirmed(): boolean {\n        return this._wasSend;\n    }\n\n    public set loaderState(value: boolean) {\n        if (value) {\n            this._loaderElement?.classList.remove(\"hidden\");\n        }\n        else {\n            this._loaderElement?.classList.add(\"hidden\");\n        }\n    }\n\n\n    public reset() {\n        this._buttonTextSend?.classList.add(\"hidden\");\n        this._checkmark?.classList.add(\"hidden\");\n        this._buttonContainer?.classList.remove(\"send\");\n        this._wasSend = false;\n        this.requestUpdate();\n    }\n\n    public confirm(triggerAnimation = true) {\n        if (this._wasSend) return;\n        this._buttonContainer?.classList.add(\"send\");\n        this._wasSend = true;\n        if (triggerAnimation) {\n            this.triggerAnimation();\n        }\n    }\n\n\n    private hideCheckMark() {\n        if (this.classList.contains(\"hide-checkmark\")) {\n            const styles = getComputedStyle(this);\n            let delayProperty = styles.getPropertyValue(\"--share-link-per-mail-mask-checkmark-hide-delay\");\n            delayProperty = delayProperty.length > 0 ? delayProperty : \"1500ms\";\n            let delay = 0;\n            if (delayProperty.includes(\"ms\")) {\n                delayProperty = delayProperty.replace(\"ms\", \"\");\n                delay = parseInt(delayProperty);\n            }\n            if (delayProperty.includes(\"s\")) {\n                delayProperty = delayProperty.replace(\"s\", \"\");\n                delay = parseFloat(delayProperty) * 1000;\n            }\n            setTimeout(()=>{\n                this._checkmark?.classList.add(\"hidden\");\n            }, delay);\n        }\n    }\n    private showCheckMark() {\n        this._checkmark?.classList.remove(\"hidden\");\n    }\n    public triggerAnimation() {\n        this.showCheckMark();\n        this.hideCheckMark();\n        this._buttonTextSend?.classList.remove(\"hidden\");\n    }\n\n\n    private createButton(content: TemplateResult<1>): TemplateResult<1> {\n        if (this._disabled) {\n            return html`<fv-button class=\"button-container\" disabled>${content}</fv-button>`;\n        }\n        return html`<fv-button class=\"button-container\">${content}</fv-button>`;\n    }\n\n    protected render(): TemplateResult<1> {\n        const confirmText = LocaleService.translate(this._confirmTxt);\n        const text = LocaleService.translate(this._txt);\n\n        return html`\n            ${this.createButton(html`\n                <div class=\"button\">\n                    <span class=\"button-text-animation-container\">\n                        <span class=\"button-text-send-space\">${confirmText.length > text.length ? confirmText : text}</span>\n                        <span class=\"button-text\" i18n=\"${this._txt}\">${text}</span>\n                    </span>\n                    <span><slot class=\"loader-slot hidden\" name=\"loader\"></slot></span>\n                </div>\n                <div class=\"button-send-text-container\">\n                    <div class=\"animation-container\">\n                        <span class=\"button-text-send hidden\" i18n=\"${this._confirmTxt}\">${confirmText}</span>\n                    </div>\n                </div>\n                <div class=\"checkmark hidden\">\n                    <svg class=\"checkmark-svg\" viewBox=\"0 0 24 24\">\n                        <path d=\"M4.1 12.7L9 17.6 20.3 6.3\" fill=\"none\"/>\n                    </svg>\n                </div>\n            `)}\n        `;\n    }\n\n    protected localesModelLoaded(): void {\n        this.requestUpdate();\n    }\n}\n","import {BaseElement} from \"./base.component\";\nimport {CatalogService} from \"../../../utils/catalog.service\";\nimport {property} from \"lit/decorators.js\";\nimport {PropertyValueMap, PropertyValues, unsafeCSS} from \"lit\";\n\nimport style from './step-child.component.sass?inline'\nimport {StepsComponent} from \"../steps\";\nimport {EventFactoryService} from \"@dh-software/webui-api\";\n\nexport abstract class StepChildComponent extends BaseElement {\n\n    @property({type: Boolean, reflect: true, attribute: \"disable-if-scene-empty\"})\n    disableIfSceneEmpty = false;\n\n    static styles = [super.styles || [], unsafeCSS(style)];\n\n    protected async firstUpdated(_changedProperties: PropertyValues<this>) {\n\n        EventFactoryService.LastPOLoaded.register(async () => {\n            await this._checkSceneEmptyState();\n        });\n        EventFactoryService.DeleteLO_after.register(async () => {\n            await this._checkSceneEmptyState();\n        });\n        EventFactoryService.SelectionChanged.register(async () => {\n            await this._checkSceneEmptyState();\n        });\n        EventFactoryService.ChangePrice.register(async () => {\n            await this._checkSceneEmptyState();\n        });\n        await this._checkSceneEmptyState();\n        super.firstUpdated(_changedProperties);\n    }\n\n    protected updated(changedProperties: PropertyValues) {\n        super.updated(changedProperties);\n        this._checkSceneEmptyState();\n    }\n\n    private async _checkSceneEmptyState() {\n        this.classList.remove(\"step-disabled\")\n        if (this.disableIfSceneEmpty && await CatalogService.shouldDisableOnSceneEmpty(this.disableIfSceneEmpty)) {\n            this.classList.add(\"step-disabled\");\n        }\n    }\n\n}\n","import { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\n\nexport interface EventHandlerEvent {\n    id: string,\n    data?: EventHandlerEventData\n}\n\nexport interface EventHandlerEventCallData {\n    async: boolean,\n    events: Array<EventHandlerEvent>\n}\n\nexport interface EventHandlerEventCallDataInit extends CustomEventInit {\n    detail?: EventHandlerEventCallData\n}\n\nexport class EventHandlerDispatchEvent extends CustomEvent<EventHandlerEventCallData> {\n    constructor(callbackData_: EventHandlerEventCallData) {\n        super(\"triggereventhandlereventevent\", { detail: callbackData_, bubbles: true });\n    }\n}\n\nexport type EventHandlerEventFunction = <T = EventHandlerEventData>(data: T) => Promise<void>;\n","import {css, html, PropertyValueMap, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./equipment-list.component.sass?inline\";\nimport {customElement, property, state} from \"lit/decorators.js\";\nimport {IFittingSceneData, IFittingSceneDataArti} from \"../../../define/interface\";\nimport \"../../standard/button\";\nimport \"../fitting-item/fitting-item.component\";\nimport \"../proptrans-item/proptrans-item.component\";\nimport \"../shoppingcart-item/shoppingcart-item.component\";\nimport {ButtonComponent} from \"../../standard/button\";\nimport {FittingItemComponent} from \"../fitting-item\";\nimport {ProptransItemComponent} from \"../proptrans-item\";\nimport {ShoppingcartItemComponent} from \"../shoppingcart-item\";\nimport {ManuProgService} from \"../../../utils/manu-prog.service\";\nimport {ComponentService} from \"../../../utils/component.service\";\nimport {IContextInitOptions} from \"../../../define/context-initializer\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {StepChildComponent} from \"../../standard/base/step-child.component\";\nimport {EventHandlerDispatchEvent} from \"../../../models/event-handler/event.handler.model\";\nimport type {ComponentStateHandlerMap} from \"../../../models/event-handler/component-state-event\";\nimport {\n    CommunicationMessageService,\n    EventFactoryService,\n    ProgContextModel,\n    WebViewerService\n} from \"@dh-software/webui-api\";\nimport {\n    ICategoryData,\n    IEquipmentData,\n    IGetProgContextParameters,\n    IKataPageData,\n    IKataTreeData,\n    IProgContextInitData,\n    IProgProperty,\n    IProgPropertyContext,\n    IProgPropertyRootList,\n    IPropTransferItem,\n} from \"@dh-software/webui-types\";\n\ndeclare global {\n    interface ComponentStates {\n        \"fv-equipment-list:reload\": any;\n    }\n}\n\nfunction convertDecimalNCRtoUTF8(ncr: string) {\n    if (ncr && ncr.length > 0) {\n        return ncr.replace(/&#([0-9]+);/g, function (b) {\n            return String.fromCodePoint(parseInt(b.slice(2, -1)));\n        });\n    }\n    return ncr;\n}\n\ninterface IEquipmentListCategory extends ICategoryData {\n\n    active?: boolean\n    visible?: boolean\n    childCount: number;\n\n}\n\n@customElement(\"fv-equipment-list\")\nexport class EquipmentListComponent extends StepChildComponent {\n\n    stateHandlers: ComponentStateHandlerMap = {\n        \"fv-equipment-list:reload\": async () => {\n            const manufacturer = await ManuProgService.getManufacturer();\n            const program = await ManuProgService.getProgram();\n            await this.Reset();\n            await this.initialize(manufacturer, program, \"\", this._showWildCardFilter);\n        },\n    };\n\n    private _finishedLoading = false;\n    private _manufacturer = \"\";\n    private _program = \"\";\n    private _offset = 0;\n\n    private _registeredEquipmentArtNos: Set<string> = new Set();\n    private _categoryFilter: Array<IEquipmentListCategory> = [];\n\n    private _isScrolling = false;\n    private _showWildCardFilter = true;\n    private _contextData?: IProgPropertyRootList<IProgPropertyContext>;\n\n    private filteredList: Array<IEquipmentData> = [];\n    private listAll: Array<IEquipmentData> = [];\n\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({type: Boolean, reflect: true, attribute: \"hide-shopping-cart-items\"})\n    private _hideShoppingCartItems = false;\n\n    @property()\n    limit = 2000;\n\n    @property()\n    img_url_prefix = \"\";\n\n    @property({type: Boolean, reflect: true, attribute: \"highlight-scene-items\"})\n    highlightSceneElements = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"hide-single-category\"})\n    hideSingleCategory = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"bordered-filters\"})\n    private _borderedFilters = false;\n\n    @state()\n    list: Array<IEquipmentData> = [];\n\n    @property({type: Boolean, reflect: true, attribute: \"self-initialize\"})\n    public selfInitialize = false;\n    private selfInitialized = false;\n\n    public isEmpty(): boolean {\n        return !this.filteredList || this.filteredList.length <= 0\n    }\n\n    constructor() {\n        super();\n        this.baseOptions.updateWhileDisconnected = true;\n    }\n\n    protected async firstUpdated(_changedProperties: PropertyValues<this>): Promise<void> {\n        super.firstUpdated(_changedProperties);\n        EventFactoryService.ChangePrice.register(() => {\n            this.SelfInitialize();\n        })\n    }\n\n    public getContextInitializationData(initialize = false) {\n        return this.filteredList.filter(equipment => equipment.InsertType === \"P\").map(equipment => {\n            const id = equipment.PT_ID || equipment.id;\n            let result: IProgContextInitData = {\n                contextId: `${this._manufacturer}#${this._program}#${id}`,\n            }\n            if (initialize) {\n                result = Object.assign(result, {\n                    manufacturer: this._manufacturer,\n                    program: this._program,\n                    initializer: {\n                        type: \"ptm\",\n                        ptId: id,\n                    }\n                } as IContextInitOptions);\n            }\n            return result\n        })\n    }\n\n    public async initialize(manufacturer: string, program: string, level: string, showWildcardFilter: boolean): Promise<void> {\n        this._showWildCardFilter = showWildcardFilter;\n        this._manufacturer = manufacturer;\n        this._program = program;\n        const articleData: IKataPageData = await CommunicationMessageService?.getKataPage(\"equipment\", level);\n        const kataTreeData: IKataTreeData = await CommunicationMessageService?.getKataTreeJson();\n        // const distinctFittingList: Array<string> = [];\n        const tmpCatList: Array<string> = [];\n\n        articleData?.Modules[0]?.Articles[0]?.forEach((equipment) => {\n            const data = (equipment as IEquipmentData);\n            if (data.InsertType !== \"S\" && !data.hideEquipment) {\n                this.listAll.push(data);\n            }\n        });\n\n        this.listAll.forEach((value, index) => {\n            value.Cats = value.CatString.split(\",\");\n            value.Cats.forEach((cat: string, index1: number) => {\n                if (tmpCatList.indexOf(cat) === -1) {\n                    if (cat !== \"\") {\n                        tmpCatList.push(cat);\n                    }\n                }\n            });\n        });\n\n        tmpCatList.forEach((value, index) => {\n            const findObj = kataTreeData.definedEquipmentFilterCategories.find(element => element.id === value);\n            if (findObj) {\n                const findCat = this._categoryFilter.find(element => element.id === value);\n                if (!findCat) {\n                    this._categoryFilter.push({\n                        name: findObj.name,\n                        id: findObj.id,\n                        priority: findObj.priority,\n                        childCount: 0\n                    });\n                }\n            }\n        });\n        await this.onScroll(null, true);\n        try {\n            const initContext: IGetProgContextParameters = {\n                ignoreAccess: true,\n                useRelevant: false,\n                manufacturer: this._manufacturer,\n                program: this._program,\n                contextInfo: this.getContextInitializationData(true)\n            };\n            this._contextData = await ProgContextModel.initialize(initContext);\n        } catch (ex) {\n            this._contextData = undefined;\n        }\n    }\n\n    public async SelfInitialize() {\n        if (this.selfInitialize == false || this.selfInitialized == true) {\n            return;\n        }\n\n        EventFactoryService.LastPOLoaded.register(() => {\n            this.onScroll(null, true);\n        });\n        EventFactoryService.SelectionChanged.register(() => {\n            this.onScroll(null, true);\n        });\n        EventFactoryService.ChangePrice.register(() => {\n            this.onScroll(null, true);\n        });\n        EventFactoryService.PropTransfer_afterDelete.register(() => {\n            this.onScroll(null, true);\n        });\n        EventFactoryService.PropTransfer_afterStart.register(() => {\n            this.onScroll(null, true);\n        });\n        EventFactoryService.PossibleDestinationValues_afterSet.register(() => {\n            this.onScroll(null, true);\n        });\n\n        this.selfInitialized = true;\n\n        this.img_url_prefix = await CommunicationMessageService.getNodePrefix();\n        await WebViewerService.IsAppReady;\n        const manufacturer = await ManuProgService.getManufacturer();\n        const program = await ManuProgService.getProgram();\n        const level = window.g_article?.level1 || \"\";\n        this.initialize(manufacturer, program, level, this.hasAttribute(\"wildcard-filter\"));\n    }\n\n    public async Reset() {\n        CommunicationMessageService.disposePropertyContext({contextIds: this.getContextInitializationData(false).map(x => x.contextId)}).then();\n\n        this._categoryFilter = [];\n        this.filteredList = [];\n        this.listAll = [];\n    }\n\n    public static async Reload() {\n        const _equipmentList = ComponentService.find(\"fv-equipment-list\", \"*\") as EquipmentListComponent;\n        if (_equipmentList) {\n            const manufacturer = await ManuProgService.getManufacturer();\n            const program = await ManuProgService.getProgram();\n            await _equipmentList.Reset();\n            await _equipmentList.initialize(manufacturer, program, \"\", _equipmentList._showWildCardFilter);\n        }\n    }\n\n    private async onScroll(e: CustomEvent | null, reset_: boolean) {\n        if (!this._isScrolling && (!this._finishedLoading || reset_)) {\n            let updateData = false;\n            this._isScrolling = true;\n            if (reset_) {\n                this.filteredList = [];\n                this._offset = 0;\n                updateData = true;\n                this._finishedLoading = false;\n            }\n            if (e && e.detail.distanceToBottom < 0) {\n                updateData = true;\n            }\n            if (updateData) {\n                await this.refreshBySelection();\n                this.requestUpdate(\"list\");\n                await this.updateComplete;\n            }\n            this._isScrolling = false;\n        }\n        if (this.shadowRoot) {\n            const wildCardBtn: ButtonComponent | null = this.shadowRoot.querySelector(\"#wildCardFilterButton\") as ButtonComponent;\n            if (!this._showWildCardFilter) {\n                wildCardBtn.classList.add(\"hidden\");\n            }\n        }\n    }\n\n    public async refreshBySelection() {\n        this.filteredList = [];\n        const activeFilters = this.getActiveFilters();\n        if (activeFilters.length > 0) {\n            this.listAll.forEach((value, index) => {\n                if (index >= this._offset && index <= (this._offset + this.limit)) {\n                    if (activeFilters.some(x => value.Cats?.includes(x.id))) {\n                        this.filteredList.push(value);\n                    }\n                }\n            });\n        } else {\n            this.filteredList = this.filteredList.concat(this.listAll.slice(this._offset, this.limit));\n        }\n\n\n        this._contextData = await ProgContextModel.get({\n            useRelevant: true,\n            manufacturer: this._manufacturer,\n            program: this._program,\n            contextInfo: this.getContextInitializationData(false)\n        });\n        const validPropTransfer = await CommunicationMessageService.getPropTransfer({\n            manufacturer: this._manufacturer,\n            program: this._program,\n            useSelection: true\n        }) as Array<IPropTransferItem>;\n        let validFittings = await CommunicationMessageService.GetAvailableFittingElementsFromScene() as Array<IFittingSceneData>;\n        validFittings = validFittings.filter(x => x.manu === this._manufacturer && x.prog === this._program);\n\n        const enabledFilters = (validFittings && validFittings.length !== 0) || (validPropTransfer && validPropTransfer.length !== 0)\n\n        this._registeredEquipmentArtNos.clear();\n        this._categoryFilter.forEach(x => {\n            x.visible = false\n            x.childCount = 0\n        });\n        validPropTransfer?.forEach((ptItem: IPropTransferItem) => {\n            if (ptItem.Cat) {\n                ptItem.Cat.filter(x => !!x).forEach((value: string, index: number) => {\n                    const filter = this.getFilter(value)\n                    if (filter) {\n                        filter.visible = true;\n                        filter.childCount++;\n                    }\n                });\n            }\n            if (ptItem.articleNr) {\n                this._registeredEquipmentArtNos.add(ptItem.articleNr);\n            }\n            if (ptItem.id) {\n                this._registeredEquipmentArtNos.add(ptItem.id);\n            }\n        });\n        validFittings?.forEach((fItem: IFittingSceneData) => {\n            fItem.Artis.forEach((fItemArti: IFittingSceneDataArti) => {\n                if (fItemArti.Cat) {\n                    fItemArti.Cat.filter(x => !!x).forEach((value: string) => {\n                        const filter = this.getFilter(value)\n                        if (filter) {\n                            filter.visible = true;\n                            filter.childCount++;\n                        }\n                    });\n                }\n                if (fItemArti.J) {\n                    this._registeredEquipmentArtNos.add(fItemArti.J);\n                }\n            });\n        });\n\n        if (enabledFilters) {\n            if (this.filteredList.length > 0) {\n                this._categoryFilter.forEach(x => {\n                    x.visible = x.visible && x.childCount >= 1;\n                })\n            }\n\n            for (let i = this.filteredList.length - 1; i >= 0; i--) {\n                const item = this.filteredList[i];\n                const jsaNumberRegistered = !!item.jsaNumber && this._registeredEquipmentArtNos.has(item.jsaNumber);\n                const artNoRegistered = this._registeredEquipmentArtNos.has(item.ArtNr);\n                const ptIdRegistered = this._registeredEquipmentArtNos.has(item.PT_ID)\n\n                const cats = item.Cats.filter(x => !!x)\n                let categoryRelevant = cats.length !== 0 ? cats.some(x => this.getFilter(x)?.visible || false) : false;\n                if (!jsaNumberRegistered && !artNoRegistered && !ptIdRegistered) {\n                    categoryRelevant = false;\n                }\n                if (!(jsaNumberRegistered || artNoRegistered || ptIdRegistered || categoryRelevant)) {\n                    this.filteredList.splice(i, 1);\n                } else if (this.highlightSceneElements && validPropTransfer) {\n                    const propTransfer = validPropTransfer.find(x => x.id == item.PT_ID);\n                    if (propTransfer) {\n                        item.Active = propTransfer.deletable.length != 0;\n                        this.filteredList[i] = item;\n                    }\n                }\n            }\n        }\n        this.list = ([] as Array<IEquipmentData>).concat(this.filteredList).filter(equipment => this.shouldShowEquipment(equipment));\n    }\n\n    private async filterButtonClick(event: Event) {\n        const button = event.target as ButtonComponent;\n        const catString = button.getAttribute(\"category\");\n\n        if (!catString) return;\n\n        const category = this._categoryFilter.find(x => x.id === catString);\n        const active = this.getActiveFilters();\n\n        active.forEach(x => x.active = false)\n        if (category) {\n            category.active = true;\n        }\n        if (!category || category.active) {\n            active.forEach(x => x.active = false)\n        }\n        this.filteredList = [];\n        this._offset = 0;\n        CommunicationMessageService.startPropTransfer(\"\");\n        await this.onScroll(null, true);\n    }\n\n    protected updated(changedProperties: PropertyValueMap<any>): void {\n        super.updated(changedProperties);\n        window.dispatchEvent(new CustomEvent(\"onUpdated\", {detail: this}));\n    }\n\n    private getContextById(contextId: string) {\n        if (!this._contextData || !this._contextData.children) {\n            return undefined;\n        }\n        // @ts-ignore\n        return Array.from(Object.values(this._contextData?.children)).find(x => x.contextId.toLowerCase().endsWith(contextId.toLowerCase()));\n    }\n\n    isContextInAccordion(context?: IProgPropertyContext) {\n        const items = this.getPropertyList(context);\n        return context?.children && items.length !== 0;\n    }\n\n    shouldShowEquipment(equipment: IEquipmentData) {\n        if (equipment.InsertType === \"P\") {\n            const context = this.getContextById(equipment.PT_ID);\n            return !this.isContextInAccordion(context)\n        }\n        return true;\n    }\n\n    hasContextData(context = this.getContextInitializationData(false).map(x => x.contextId)) {\n        return context && context.length > 0 && context.some(x => {\n            let context = this.getContextById(x)\n            return this.getPropertyList(context).length > 0;\n        })\n    }\n\n    render(): TemplateResult<1> {\n        const context = this.getContextInitializationData(false).map(x => x.contextId);\n        const hideFilter = this._categoryFilter.filter(x => x.visible).length === 1 && this.hideSingleCategory === true;\n        return html`\n            <div id=\"filter-container\">\n                <fv-button id=\"wildCardFilterButton\" @click=${this.filterButtonClick} part=\"filter-button\"\n                           class=\"active ${this._borderedFilters ? \"bordered\" : \"\"}\"\n                           style=\"width: 23px\">*\n                </fv-button>\n                ${\n                        !hideFilter ?\n                                this._categoryFilter.map((category) => {\n                                    const btnClass = classMap({\n                                        \"bordered\": this._borderedFilters,\n                                        \"active\": category?.active || false,\n                                        \"hidden\": category.visible !== true\n                                    });\n                                    return html`\n                                        <fv-button\n                                                category=${category.id}\n                                                @click=${this.filterButtonClick}\n                                                class=\"${btnClass}\"\n                                                part=\"filter-button\">\n                                            ${convertDecimalNCRtoUTF8(category.name)}\n                                        </fv-button>`;\n                                })\n                                : ''\n                }\n            </div>\n            <fv-list-box @scroll=${this.onScroll} id=\"article-list-container\">\n                <fv-pp-container\n                        style=\"height: unset; flex: 1; border-bottom: unset; --pp-component-overflow-y: hidden;\"\n                        .contexts=\"${context}\" hide-single-value-properties></fv-pp-container>\n                ${\n                        this.list.map((equipment) => {\n                            if (equipment.InsertType === \"A\") {\n                                const component: FittingItemComponent = document.createElement(\"fv-fitting-item\") as FittingItemComponent;\n                                if (this.img_url_prefix && equipment.imgName) {\n                                    component.image = this.img_url_prefix + convertDecimalNCRtoUTF8(equipment.imgName);\n                                }\n                                component.jsaNumber = equipment.jsaNumber;\n                                component.number = equipment.ArtNr;\n                                component.artText = equipment.artText;\n                                if (equipment.Active) {\n                                    component.classList.add(\"active\");\n                                }\n                                component.addEventListener(\"onArticleClick\", (e: Event) => {\n                                    const component = e.currentTarget as FittingItemComponent;\n                                    this.onFittingClick(e, component, equipment);\n                                });\n\n                                component.addEventListener(\"onDeleteClick\", (e: Event) => {\n                                    const component = e.currentTarget as FittingItemComponent;\n                                    this.onFittingDeleteClick(e, component);\n                                });\n\n                                component.addEventListener(\"onResetClick\", (e: Event) => {\n                                    const component = e.currentTarget as FittingItemComponent;\n                                    this.onFittingResetClick(e, component);\n                                });\n\n                                component.addEventListener(\"onMoveClick\", (e: Event) => {\n                                    const component = e.currentTarget as FittingItemComponent;\n                                    this.onFittingMoveClick(e, component);\n                                });\n                                return component;\n                            }\n                            if (equipment.InsertType === \"P\") {\n                                const component: ProptransItemComponent = document.createElement(\"fv-proptrans-item\") as ProptransItemComponent;\n                                if (this.img_url_prefix && equipment.imgName) {\n                                    component.image = this.img_url_prefix + convertDecimalNCRtoUTF8(equipment.imgName);\n                                }\n                                component.ptid = equipment.PT_ID;\n                                component.number = equipment.ArtNr;\n                                component.artText = equipment.artText;\n                                if (equipment.Active) {\n                                    component.classList.add(\"active\");\n                                }\n                                component.addEventListener(\"onArticleClick\", (e: Event) => {\n                                    const component = e.currentTarget as ProptransItemComponent;\n                                    this.onProptransferClick(e, component, equipment);\n                                });\n\n                                component.addEventListener(\"onDeleteClick\", (e: Event) => {\n                                    const component = e.currentTarget as ProptransItemComponent;\n                                    this.onProptransferDeleteClick(e, component);\n                                });\n                                return component\n                            }\n                            if (equipment.InsertType === \"S\" && !this._hideShoppingCartItems) {\n                                const component: ShoppingcartItemComponent = document.createElement(\"fv-shoppingcart-item\") as ShoppingcartItemComponent;\n                                if (this.img_url_prefix && equipment.imgName) {\n                                    component.image = this.img_url_prefix + convertDecimalNCRtoUTF8(equipment.imgName);\n                                }\n                                component.number = equipment.ArtNr;\n                                component.artText = equipment.artText;\n                                if (equipment.Active) {\n                                    component.classList.add(\"active\");\n                                }\n                                component.addEventListener(\"onArticleClick\", (e: Event) => {\n                                    const component = e.currentTarget as ShoppingcartItemComponent;\n                                    this.onShoppingCartClick(e, component);\n                                });\n                                return component;\n                            }\n                            // articleComponent.onArticleClick = (e: Event, component: FittingItemComponent) => {\n                            //     this.onArticleClick(e, component);\n                            // };\n                        })\n                }\n                <slot></slot>\n            </fv-list-box>\n        `;\n    }\n\n    private getActiveFilters() {\n        return this._categoryFilter.filter(x => x.active)\n    }\n\n    private getFilter(id: string) {\n        return this._categoryFilter.find(x => x.id === id);\n    }\n\n    private getPropertyList(context?: IProgPropertyContext): IProgProperty[] {\n        let children = context?.children || {};\n        return Object.values(children)?.flatMap(program => {\n            return Object.values(program.children)?.flatMap(property => {\n                return property;\n            }) || [];\n        }) || [];\n    }\n\n    private focusSceneAfterClick() {\n        WebViewerService.FurnviewWebViewer?.focus();\n    }\n\n    private onFittingClick = async (e: Event, component: FittingItemComponent, data: IEquipmentData) => {\n        if (data?.frontState !== undefined) {\n            this.setFrontState(data.frontState == 1, \".toggle-front-button\");\n        }\n        if (component.jsaNumber) {\n            await CommunicationMessageService?.loadArticle(this._manufacturer, this._program, component.jsaNumber);\n        }\n    };\n\n    private onFittingDeleteClick = async (e: Event, component: FittingItemComponent) => {\n        await CommunicationMessageService?.fittingRemove();\n    };\n\n    private onFittingMoveClick = async (e: Event, component: FittingItemComponent) => {\n        await CommunicationMessageService?.fittingMove();\n    };\n\n    private onFittingResetClick = async (e: Event, component: FittingItemComponent) => {\n        await CommunicationMessageService?.fittingReset();\n    };\n\n    private onProptransferClick = async (e: Event, component: ProptransItemComponent, data: IEquipmentData) => {\n        if (data?.frontState !== undefined) {\n            this.setFrontState(data.frontState == 1, \".toggle-front-button\");\n        }\n        if (component.ptid) {\n            await CommunicationMessageService?.startPropTransfer(component.ptid);\n            this.focusSceneAfterClick();\n        }\n    };\n\n    private onProptransferDeleteClick = async (e: Event, component: ProptransItemComponent) => {\n        if (component.ptid) {\n            await CommunicationMessageService?.deletePropTransfer(component.ptid, this._manufacturer, this._program);\n            this.focusSceneAfterClick();\n        }\n    };\n\n    private onShoppingCartClick = async (e: Event, component: ShoppingcartItemComponent) => {\n        if (component.number) {\n            await CommunicationMessageService?.loadArticle(this._manufacturer, this._program, component.number);\n            this.focusSceneAfterClick();\n        }\n    };\n\n    private setFrontState(showFront_: boolean, toolbarButtonSelector_: string) {\n        window.dispatchEvent(new EventHandlerDispatchEvent({\n            async: true,\n            events: [\n                {\n                    id: \"front-state\",\n                    data: {\n                        value: showFront_\n                    },\n                },\n                {\n                    id: \"toolbar-button-set-active\",\n                    data: {\n                        components: [\n                            {\n                                name: \"fv-toolbar-button\",\n                                selector: toolbarButtonSelector_,\n                                all: true\n                            }\n                        ],\n                        value: !showFront_\n                    }\n                }\n            ]\n        }));\n    }\n}\n","import {css, html, PropertyValueMap, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport {BaseElement} from \"../standard/base/base.component\";\nimport style from \"./catalog-selector.component.sass?inline\";\nimport {FilteredCatalogComponent} from \"../filtered-catalog\";\nimport {CatalogSelectorOptionComponent} from \"./catalog-selector-option.component\";\n\n\nexport interface CatalogAttributesList {\n    [key: string]: string | number | Record<string, unknown> | Array<unknown>\n}\n\ninterface CatalogSelectorOptionData {\n    catalog: string,\n    tag: string,\n    txt: string,\n    attributes: CatalogAttributesList\n}\n\n\n@customElement(\"fv-catalog-selector\")\nexport class CatalogSelectorComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({type: Array, reflect: true, attribute: \"options\"})\n    catalogOptions: Array<CatalogSelectorOptionData> = [];\n\n    @property({type: Boolean, reflect: true, attribute: \"disable-empty-catalogs\"})\n    disabledEmptyCatalogs = false;\n\n    constructor() {\n        super();\n\n        this.addEventListener(\"filtered-catalog-filled\", (e: CustomEventInit<{\n            empty: boolean,\n            catalog: FilteredCatalogComponent\n        }>) => {\n            const selectorOption = this.querySelector<CatalogSelectorOptionComponent>(`:scope > fv-catalog-selector-option[catalog=\"${e.detail?.catalog.getAttribute(\"catalog-name\")}\"]`)\n            if(this.disabledEmptyCatalogs && selectorOption) {\n                selectorOption.disabled = e.detail?.empty ?? false\n                if(selectorOption.disabled) {\n                    this.dispatchEvent(new CustomEvent(\"enable-first-catalog\"));\n                }\n            }\n        });\n\n        this.addEventListener(\"enable-first-catalog\", (e) => {\n            e.stopPropagation();\n            e.preventDefault();\n            const options = this.querySelectorAll<CatalogSelectorComponent>(':scope > fv-catalog-selector-option');\n            options.forEach((options, i) => {\n                options.classList.remove(\"active\");\n                if (i === 0) {\n                    options.classList.add(\"active\");\n                    const catalog = options.getAttribute(\"catalog\");\n                    if (catalog) {\n                        this.dispatchEvent(new CustomEvent(\"show-catalog\", {bubbles: false, detail: {catalog}}));\n                    }\n                }\n            })\n        })\n\n        this.addEventListener(\"disable-all-options\", (e) => {\n            e.stopPropagation();\n            e.preventDefault();\n\n            const options = this.querySelectorAll(\":scope > fv-catalog-selector-option\");\n            options.forEach((option) => {\n                option.classList.remove(\"active\");\n            });\n        });\n\n        this.addEventListener(\"show-catalog\", (e) => {\n            e.stopPropagation();\n            e.preventDefault();\n\n            const event = e as CustomEventInit<{ catalog: string, properties: CatalogAttributesList }>;\n            const catalogName = event.detail?.catalog ? event.detail?.catalog : \"\";\n            const catalogs = this.querySelectorAll(\":scope > [catalog-name]\");\n            catalogs.forEach((catalog) => {\n\n                if (event.detail && event.detail.properties) {\n                    const propertyNames = Object.keys(event.detail.properties);\n                    for (const propertyName of propertyNames) {\n                        const property = event.detail.properties[propertyName];\n\n                        if (typeof property === \"boolean\" && property) catalog.setAttribute(propertyName, \"\");\n                        else if (typeof property === \"boolean\" && !property) catalog.removeAttribute(propertyName);\n                        else if (typeof property === \"object\") catalog.setAttribute(propertyName, JSON.stringify(property));\n                        else {\n                            catalog.setAttribute(propertyName, property as string);\n                        }\n                    }\n                }\n\n\n                if (catalog.getAttribute(\"catalog-name\") === catalogName) {\n                    catalog.classList.remove(\"hidden\");\n                    return;\n                }\n                catalog.classList.add(\"hidden\");\n            });\n        });\n    }\n\n    private createGeneratedOptions() {\n        const generated = document.querySelectorAll(\"[generated]\");\n        generated.forEach((el) => {\n            this.removeChild(el);\n        });\n        this.catalogOptions.forEach((option: CatalogSelectorOptionData) => {\n            const optionElement = document.createElement(option.tag);\n            optionElement.setAttribute(\"generated\", \"\");\n            optionElement.setAttribute(\"catalog\", option.catalog);\n            optionElement.setAttribute(\"slot\", \"options\");\n            optionElement.setAttribute(\"catalog-attributes\", JSON.stringify(option.attributes));\n            optionElement.setAttribute(\"i18n\", option.txt);\n            this.appendChild(optionElement);\n        });\n    }\n\n    render(): TemplateResult<1> {\n        this.createGeneratedOptions();\n\n        return html`\n            <div class=\"title-container\">\n                <slot class=\"title\" name=\"title\"></slot>\n            </div>\n            <div class=\"options-container\">\n                <div class=\"options-inner-container\">\n                    <slot class=\"options\" name=\"options\"></slot>\n                </div>\n            </div>\n            <div class=\"post-options-space-container\">\n                <slot class=\"divider\" name=\"post-options-space\"></slot>\n            </div>\n            <div class=\"divider-container\">\n                <slot class=\"divider\" name=\"divider\"></slot>\n            </div>\n            <div class=\"catalogs-container\">\n                <div class=\"catalogs-inner-container\">\n                    <slot class=\"catalogs\" name=\"catalogs\"></slot>\n                </div>\n            </div>\n        `;\n    }\n\n    protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n        super.updated(_changedProperties);\n\n        const optionsElement = this.renderRoot.querySelector(\".options\");\n        if (optionsElement) {\n            let anyActive = false;\n            for (let index = 0; index < optionsElement.children.length; ++index) {\n                anyActive = optionsElement.children[index].classList.contains(\"active\");\n            }\n            if (anyActive == false) {\n                const first = optionsElement.firstElementChild;\n                if (first) {\n                    (first as HTMLElement).click();\n                }\n            }\n        }\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../standard/base/base.component\";\nimport { CatalogAttributesList } from \"./catalog-selector.component\";\nimport style from \"./catalog-selector-option.component.sass?inline\";\n\n\n@customElement(\"fv-catalog-selector-option\")\nexport class CatalogSelectorOptionComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true })\n    public catalog = \"\";\n\n    @property({ type: Object, reflect: true, attribute: \"catalog-attributes\" })\n    public catalogAttributes: CatalogAttributesList = {};\n\n    @property({type: Boolean, reflect: true, attribute: \"disabled\"})\n    public disabled = false;\n\n    constructor() {\n        super();\n\n        this.addEventListener(\"click\", ()=>{\n            this.dispatchEvent(new CustomEvent(\"disable-all-options\", { bubbles: true }));\n            this.classList.add(\"active\");\n            this.dispatchEvent(new CustomEvent(\"show-catalog\", { bubbles: true, detail: { catalog: this.catalog, properties: this.catalogAttributes } }));\n        });\n    }\n\n    render(): TemplateResult<1> {\n        return html`<slot></slot>`;\n    }\n}\n","class PriceFormatServiceClass {\n\n    private readonly localeMap: Record<string, string> = {\n        CHF: \"de-CH\",\n    };\n\n    formatPrice(price: number, decimalSeparator: string = \",\", thousandsSeparator?: string): string {\n        if (price === undefined || price === null || isNaN(price)) {\n            return \"\";\n        }\n\n        const [integerPart, decimalPart] = price.toFixed(2).split(\".\");\n        const formattedInteger = thousandsSeparator ? integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator) : integerPart;\n        return decimalSeparator ? `${formattedInteger}${decimalSeparator}${decimalPart}` : `${formattedInteger}${decimalPart}`;\n    }\n\n    formatPriceForCurrency(price: number, currency?: string, thousandsSeparator?: string): string {\n        if (price === undefined || price === null || isNaN(price)) {\n            return \"\";\n        }\n\n        const locale = currency ? this.localeMap[currency] : undefined;\n        if (locale) {\n            return new Intl.NumberFormat(locale, { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(price);\n        }\n        return this.formatPrice(price, \",\", thousandsSeparator);\n    }\n\n    formatPriceStringForCurrency(value: string, currency?: string): string {\n        if (!value) {\n            return \"\";\n        }\n\n        const locale = currency ? this.localeMap[currency] : undefined;\n        if (!locale) {\n            return value;\n        }\n\n        const normalized = value.toString().replace(/\\./g, \"\").replace(\",\", \".\");\n        const num = parseFloat(normalized);\n        if (isNaN(num)) {\n            return value;\n        }\n\n        return new Intl.NumberFormat(locale, { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(num);\n    }\n\n}\nexport const PriceFormatService = new PriceFormatServiceClass();\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport style from \"./total-price.component.sass?inline\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { LoadingComponent } from \"../../standard/loading/loading.component\";\nimport { PriceFormatService } from \"../../../utils/price-format.service\";\nimport { WebViewerService } from \"@dh-software/webui-api\";\nimport { IPriceData } from \"@dh-software/webui-types\";\n\n@customElement(\"fv-total-price\")\nexport class TotalPriceComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Boolean })\n    public showUVP = false;\n\n    @property({ type: String })\n    private priceText = \"0,00\";\n\n    @property({ type: String })\n    private currency = \"\";\n\n    @property({ type: String, reflect: true, attribute: \"config-id\" })\n    protected configId = \"\";\n\n    @query(\"fv-loading\")\n    public fvLoading !: LoadingComponent;\n\n    constructor() {\n        super();\n    }\n\n    openModal(): void {\n        return;\n    }\n\n    setPrice(price_: string, currency_: string): void {\n        currency_ = this.currency || currency_;\n        this.priceText = PriceFormatService.formatPriceStringForCurrency(price_, currency_) + \" \" + currency_;\n        this.requestUpdate(\"priceText\");\n    }\n\n    connectedCallback(): void {\n        super.connectedCallback();\n        this.translate = false;\n\n        WebViewerService?.on(\"furnview.changePrice\", async (data_: unknown): Promise<void> => {\n            const priceData = data_ as IPriceData;\n            window.g_dataInterface[\"current_price\"] = priceData;\n            this.setPrice(priceData.totalPrice, priceData.currency);\n            this.fvLoading.active = false;\n        });\n        WebViewerService?.on(\"furnview.pending_change\", async (data_: unknown): Promise<void> => {\n            this.fvLoading.active = true;\n        });\n\n        this.configId = \"show_price\";\n    }\n\n    render(): TemplateResult<1> {\n        const iconClass = { hidden: this.classList.contains(\"no-icon\") };\n        const uvpText = this.showUVP && window.g_configuration.show_price_uvp_text;\n        return html`\n            ${uvpText ? html`<span class=\"uvp-text\" i18n=\"fv.konfigurator.landing.page.basis.price.uvp\"></span>` : \"\"}\n            <span class=\"price-text\" @click=\"${this.openModal}\">${this.priceText}</span>\n            <fv-loading slot=\"loader-slot\"></fv-loading>\n            <slot name=\"icon\" class=\"${classMap(iconClass)}\">\n                <svg version=\"1.1\" class=\"icon cart\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 122.9 107.5\" xml:space=\"preserve\">\n                    <g>\n                        <path d=\"M3.9,7.9C1.8,7.9,0,6.1,0,3.9C0,1.8,1.8,0,3.9,0h10.2c0.1,0,0.3,0,0.4,0c3.6,0.1,6.8,0.8,9.5,2.5c3,1.9,5.2,4.8,6.4,9.1 c0,0.1,0,0.2,0.1,0.3l1,4H119c2.2,0,3.9,1.8,3.9,3.9c0,0.4-0.1,0.8-0.2,1.2l-10.2,41.1c-0.4,1.8-2,3-3.8,3v0H44.7 c1.4,5.2,2.8,8,4.7,9.3c2.3,1.5,6.3,1.6,13,1.5h0.1v0h45.2c2.2,0,3.9,1.8,3.9,3.9c0,2.2-1.8,3.9-3.9,3.9H62.5v0 c-8.3,0.1-13.4-0.1-17.5-2.8c-4.2-2.8-6.4-7.6-8.6-16.3l0,0L23,13.9c0-0.1,0-0.1-0.1-0.2c-0.6-2.2-1.6-3.7-3-4.5 c-1.4-0.9-3.3-1.3-5.5-1.3c-0.1,0-0.2,0-0.3,0H3.9L3.9,7.9z M96,88.3c5.3,0,9.6,4.3,9.6,9.6c0,5.3-4.3,9.6-9.6,9.6 c-5.3,0-9.6-4.3-9.6-9.6C86.4,92.6,90.7,88.3,96,88.3L96,88.3z M53.9,88.3c5.3,0,9.6,4.3,9.6,9.6c0,5.3-4.3,9.6-9.6,9.6 c-5.3,0-9.6-4.3-9.6-9.6C44.3,92.6,48.6,88.3,53.9,88.3L53.9,88.3z M33.7,23.7l8.9,33.5h63.1l8.3-33.5H33.7L33.7,23.7z\"/>\n                    </g>\n                </svg>\n            </slot>\n        `;\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport style from \"./price-summary.component.sass?inline\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { LoadingComponent } from \"../../standard/loading/loading.component\";\nimport { PriceFormatService } from \"../../../utils/price-format.service\";\nimport { WebViewerService } from \"@dh-software/webui-api\";\nimport { IPriceData } from \"@dh-software/webui-types\";\n\ninterface IProgramSummary {\n    key: string;\n    total: number;\n    manuLongName: string;\n    progLongName: string;\n}\n\n@customElement(\"fv-price-summary\")\nexport class PriceSummaryComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String })\n    private currency = \"\";\n\n    @property({ type: String })\n    private totalPriceText = \"\";\n\n    @property({ type: Array })\n    private programs: Array<IProgramSummary> = [];\n\n    @property({ type: String, reflect: true, attribute: \"config-id\" })\n    protected configId = \"\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"show-total-when-empty\" })\n    public showTotalWhenEmpty = false;\n\n    @property({ type: String, attribute: \"total-label-text-id\" })\n    public totalLabelTextId = \"total_price_inclusive_vat\";\n\n    @property({ type: String, reflect: true, attribute: \"thousands-separator\" })\n    public thousandsSeparator?: string;\n\n    @property({ type: Object, attribute: \"info-label-text-overrides\" })\n    public infoLabelTextOverrides?: { [manuProgKey: string]: string };\n\n    @query(\"fv-loading\")\n    public _loadingElement !: LoadingComponent;\n\n    constructor() {\n        super();\n    }\n\n    connectedCallback() {\n        super.connectedCallback();\n        this.translate = false;\n\n        WebViewerService?.on(\"furnview.changePrice\", async (data_: unknown) => {\n            const priceData = data_ as IPriceData;\n            window.g_dataInterface[\"current_price\"] = priceData;\n            this.updatePrograms(priceData);\n            this._loadingElement.active = false;\n        });\n        WebViewerService?.on(\"furnview.pending_change\", async (data_: unknown) => {\n            this._loadingElement.active = true;\n        });\n\n        this.configId = \"show_price\";\n    }\n\n    private updatePrograms(data_: IPriceData) {\n        this.currency = data_.currency || this.currency;\n        this.totalPriceText = PriceFormatService.formatPriceStringForCurrency(data_.totalPrice, this.currency) + \" \" + this.currency;\n\n        const grouped = (data_.Articles ?? []).reduce((acc_, group_) => {\n            const key = `${group_.DH_Manu}_${group_.DH_Prog}`;\n            const total = (group_.Articles ?? []).reduce((sum_, item_) => {\n                return sum_ + (item_.DiscountedTotalPriceOfSale || item_.TotalPriceOfSale);\n            }, 0);\n            const existing = acc_.get(key);\n            if (existing) {\n                existing.total += total;\n            } else {\n                acc_.set(key, {\n                    key,\n                    total,\n                    manuLongName: group_.Manu,\n                    progLongName: group_.Prog,\n                });\n            }\n            return acc_;\n        }, new Map<string, IProgramSummary>());\n        this.programs = Array.from(grouped.values());\n    }\n\n    private formatTotal(total_: number): string {\n        return PriceFormatService.formatPriceForCurrency(total_, this.currency, this.thousandsSeparator) + \" \" + this.currency;\n    }\n\n    private renderProgramRow(data_: IProgramSummary) {\n        const overrideText = this.infoLabelTextOverrides?.[data_.key];\n        const label = overrideText\n            ? html`<fv-label class=\"prog-label\" i18n=\"${overrideText}\"></fv-label>`\n            : html`<fv-label class=\"prog-label\">${data_.manuLongName} · ${data_.progLongName}</fv-label>`;\n\n        return html`\n            <div class=\"prog-row\">\n                ${label}\n                <fv-label class=\"prog-price\">${this.formatTotal(data_.total)}</fv-label>\n            </div>\n        `;\n    }\n\n    private renderTotalFallback(): TemplateResult<1> {\n        return html`\n            <div class=\"prog-row prog-row-total-only\">\n                <fv-label class=\"prog-price\">${this.totalPriceText}</fv-label>\n            </div>\n        `;\n    }\n\n    private renderTotalRow(): TemplateResult<1> {\n        return html`\n            <div class=\"prog-row prog-row-total\">\n                <fv-label class=\"prog-label\" i18n=\"${this.totalLabelTextId}\">Gesamtpreis</fv-label>\n                <fv-label class=\"prog-price\">${this.totalPriceText}</fv-label>\n            </div>\n        `;\n    }\n\n    render(): TemplateResult<1> {\n        const isEmpty = this.programs.length === 0;\n        return html`\n            <fv-loading slot=\"loader-slot\"></fv-loading>\n            <div class=\"prog-list\">\n                ${isEmpty && this.showTotalWhenEmpty\n                ? this.renderTotalFallback()\n                : html`\n                    ${this.programs.map((prog_) => this.renderProgramRow(prog_))}\n                    ${!isEmpty ? this.renderTotalRow() : \"\"}\n                `}\n            </div>\n        `;\n    }\n}\n","import {CommunicationMessageService} from \"@dh-software/webui-api\";\n\nclass SceneHelperServiceClass {\n\n\tprivate _highlightTimeout: number | undefined = undefined;\n\n\tconstructor() {\n\t}\n\n\tpublic isHighlightTimeoutActive(): boolean {\n\t\treturn this._highlightTimeout ? true : false\n\t}\n\n\tpublic async addHighlightBox(ii: number): Promise<void> {\n\t\tif (this.isHighlightTimeoutActive()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._highlightTimeout = setTimeout(async (): Promise<void> => {\n\t\t\tawait CommunicationMessageService.addHighlightBox(ii);\n\t\t}, 200);\n\t}\n\n\tpublic async removeHighlightBox(ii: number): Promise<void> {\n\t\tif (this.isHighlightTimeoutActive()) {\n\t\t\tclearTimeout(this._highlightTimeout);\n\t\t\tthis._highlightTimeout = undefined;\n\t\t\tawait CommunicationMessageService.removeMarker(ii);\n\t\t}\n\t}\n\n\tpublic async updateHighlightBox(ii: number): Promise<void> {\n\t\tif (this.isHighlightTimeoutActive()) {\n\t\t\tawait CommunicationMessageService.removeMarker(ii);\n\t\t\tawait CommunicationMessageService.addHighlightBox(ii);\n\t\t}\n\t}\n\n\tpublic async selectObject(ii: number): Promise<void> {\n\t\tawait CommunicationMessageService.selectObjectInScene(ii);\n\t}\n\n\tpublic async deselectObject(ii: number): Promise<void> {\n\t\tawait CommunicationMessageService.deselectObjectInScene(ii);\n\t}\n\n\tpublic async clearSelection(): Promise<void> {\n\t\tawait CommunicationMessageService.clearSelectionHandler();\n\t}\n}\n\nexport const SceneHelperService = new SceneHelperServiceClass();\n","import { TemplateResult, html, css, unsafeCSS } from \"lit\";\r\nimport { property } from \"lit/decorators.js\";\r\nimport { BaseElement } from \"../../standard/base/base.component\";\r\nimport { IPriceItemData } from \"../../../define/interface\";\r\nimport style from \"./base-price-item.sass?inline\";\r\nimport { PriceFormatService } from \"../../../utils/price-format.service\";\r\nimport { SceneHelperService } from \"../../../utils/scene-helper.service\";\r\n\r\n\r\n\r\nexport class BasePriceItemComponent extends BaseElement {\r\n    static styles = [\r\n        super.styles || [],\r\n        css`${unsafeCSS(style)}`\r\n    ];\r\n\r\n    @property({ type: Number })\r\n    instanceIdent = -1;\r\n\r\n    @property({ type: String })\r\n    description = \"\";\r\n\r\n    @property({ type: Number })\r\n    quantity = 0;\r\n\r\n    @property({ type: String })\r\n    totalPriceOfSale = \"\";\r\n\r\n    @property({ type: String })\r\n    discountedTotalPriceOfSale = \"\";\r\n\r\n    @property({ type: Number })\r\n    discountedPriceOfSaleRelative = 0;\r\n\r\n    @property({ type: Boolean })\r\n    hasPositionalDiscounts = false;\r\n\r\n    @property({ type: String })\r\n    currency = \"\";\r\n\r\n    @property({ type: String })\r\n    articleId = \"\";\r\n\r\n    @property({ type: Array })\r\n    remarks: Array<string> = [];\r\n\r\n    @property({ type: String, reflect: true, attribute: \"remarks-prefix\" })\r\n    remarksPrefix = \"\";\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"hide-price\" })\r\n    hidePrice = false;\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"zero-price\" })\r\n    showZeroPrice = false;\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"zero-prices-as-subposition-total\" })\r\n    zeroPricesAsSubpositionTotal = false;\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"show-position\" })\r\n    showPosition = false;\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"show-article-id\" })\r\n    showArticleId = false;\r\n\r\n    @property({ type: Number, reflect: true, attribute: \"dim-float-digits\" })\r\n    dimFloatDigits = 2;\r\n\r\n    @property({ type: String, reflect: true, attribute: \"dimension-suffix\" })\r\n    dimensionSuffix = \"\";\r\n\r\n    @property({ type: String, reflect: true, attribute: \"thousands-separator\" })\r\n    thousandsSeparator?: string;\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"highlight-element-on-hover\" })\r\n    highlightElementOnHover = false;\r\n\r\n    @property({ type: Object, reflect: true, attribute: \"price-item-data\" })\r\n    priceItemData: IPriceItemData = {\r\n        ArticleDescription: \"\",\r\n        TotalPriceOfSale: 0,\r\n        Quantity: 0,\r\n        DiscountedTotalPriceOfSale: 0,\r\n        DiscountedPriceOfSaleRelative: 0,\r\n        Article_ID: \"\",\r\n        Positions_NR: \"\",\r\n        GUID: \"\",\r\n        Remarks: [],\r\n        DimX: \"\",\r\n        DimY: \"\",\r\n        DimZ: \"\",\r\n        PriceOfSale: 0,\r\n        PurchasePrice: 0,\r\n        PurchasePriceCalc: 0,\r\n        PlannedManufacturer: \"\",\r\n        PlannedProg: \"\",\r\n        DH_Manu: \"\",\r\n        DH_Prog: \"\"\r\n    };\r\n\r\n    @property({ type: Number, reflect: true, attribute: \"total-price-position\" })\r\n    totalPricePosition: number | undefined = undefined;\r\n\r\n    @property({ type: String, reflect: false, attribute: \"webshop-link\"})\r\n    webshopLink: string | undefined = undefined;\r\n\r\n    protected async onMouseEnter() {\r\n        if (this.highlightElementOnHover) {\r\n            await SceneHelperService.addHighlightBox(this.instanceIdent);\r\n        }\r\n    }\r\n\r\n    protected async onMouseLeave() {\r\n        if (this.highlightElementOnHover) {\r\n            await SceneHelperService.removeHighlightBox(this.instanceIdent);\r\n        }\r\n    }\r\n\r\n    protected getPriceFormatText(price: number): string {\r\n        return PriceFormatService.formatPriceForCurrency(price, this.currency, this.thousandsSeparator);\r\n    }\r\n    protected getDimensionFormatText(dimension: string): string {\r\n        return parseFloat(dimension).toFixed(this.dimFloatDigits).replace(\".\", \",\") + \" \" + this.dimensionSuffix;\r\n    }\r\n\r\n    protected renderPositionLabel(): TemplateResult<1> {\r\n        if (this.showPosition) {\r\n            return html`<label class=\"position-nr\">${this.priceItemData.Positions_NR}</label>`;\r\n        }\r\n        return html``;\r\n    }\r\n\r\n    protected renderArticleId(): TemplateResult<1> {\r\n        if (this.showArticleId) {\r\n            return html`<label class=\"articleid\">${this.articleId}</label>`;\r\n        }\r\n        return html``;\r\n    }\r\n\r\n    protected renderRemarks(remarkPrefix_ = \"\"): TemplateResult<1> {\r\n        const remarkPrefix = remarkPrefix_.length > 0 ? remarkPrefix_ : this.remarksPrefix;\r\n\r\n        if (this.remarks == undefined || this.remarks.length < 1) return html``;\r\n        return html`\r\n            <div class=\"remarks\">${this.remarks.map((remark) => html`\r\n                <div class=\"remark-line\">\r\n                    <div class=\"remark-prefix\">${remarkPrefix}</div>\r\n                    <div class=\"remark\">${remark}</div>\r\n                </div>\r\n            `)}</div>\r\n        `;\r\n    }\r\n\r\n    protected renderTotalPriceOfSaleLabel(): TemplateResult<1> {\r\n\r\n        if (this.hidePrice) {\r\n            return html``;\r\n        }\r\n        if (this.zeroPricesAsSubpositionTotal && this.totalPricePosition && parseFloat(this.totalPriceOfSale) < 0.1) {\r\n            return html`<label>${this.getPriceFormatText(this.totalPricePosition) + \" \" + this.currency}</label>`;\r\n        }\r\n        return html`<label>${this.totalPriceOfSale + \" \" + this.currency}</label>`;\r\n    }\r\n\r\n    constructor() {\r\n        super();\r\n    }\r\n}\r\n","import { css, html, unsafeCSS } from \"lit\";\nimport style from \"./price-item.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BasePriceItemComponent } from \"../price-item-base/base-price-item\";\n\n@customElement(\"fv-price-item\")\nexport class PriceItemComponent extends BasePriceItemComponent {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n    }\n\n    render() {\n        if (+this.totalPriceOfSale <= 0 && !this.showZeroPrice) {\n            this.remove();\n            return html``;\n        }\n        if (this.hasPositionalDiscounts) {\n            return html`\n            <div class=\"fullWidth\">\n                <div class=\"price-info\">\n                    <div class=\"description\">${this.renderPositionLabel()}<label >${this.description}</label></div>\n                    <div class=\"quantity\"><label> x ${this.quantity}</label></div>\n                    <div class=\"price-of-sale\">${this.renderTotalPriceOfSaleLabel()}</div>\n                </div>\n                <div class=\"price-info\">\n                    <div class=\"description\"><label i18n=\"20444\">Rabatt</label></div>\n                    <div class=\"discounted-relative\"><label>${this.discountedPriceOfSaleRelative}%</label></div>\n                </div>\n                <div class=\"price-info bottomBorder\">\n                   <div class=\"description\"><label i18n=\"discounted_price_inclusive_vat\">Sonderpreis (inkl. MwSt.)</label></div>\n                   <div class=\"price-discounted\"><label>${this.discountedTotalPriceOfSale + \" \" + this.currency}</label></div>\n                </div>\n           </div>\n            `;\n        }\n        else {\n            return html`\n                <div class=\"fullWidth\">\n                    <div class=\"price-info bottomBorder\">\n                        <div class=\"description\">${this.renderPositionLabel()}<label>${this.description}</label></div>\n                        <div class=\"quantity\"><label> x ${this.quantity}</label></div>\n                        <div class=\"price-of-sale\">${this.renderTotalPriceOfSaleLabel()}</div>\n                    </div>\n                </div>\n        `;\n        }\n    }\n\n}\n","import { css, html, unsafeCSS } from \"lit\";\nimport style from \"./price-item-2.component.sass?inline\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BasePriceItemComponent } from \"../price-item-base/base-price-item\";\n\n\n@customElement(\"fv-price-item-2\")\nexport class PriceItem2Component extends BasePriceItemComponent {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    render() {\n        const singlePrice: number = this.priceItemData.TotalPriceOfSale / this.quantity;\n        if (singlePrice <= 0 && !this.showZeroPrice) {\n            this.remove();\n            return html``;\n        }\n        return html`\n            <div class=\"fullWidth\" @mouseenter=\"${this.onMouseEnter}\" @mouseleave=\"${this.onMouseLeave}\">\n                <div class=\"price-info\">\n                    <div class=\"articleid\">${this.renderArticleId()}</div>\n                    <div class=\"description\">${this.renderPositionLabel()}<label>${this.description}</label></div>\n                    <div class=\"price-single-element\"><label>${this.hidePrice ? \"\" : this.getPriceFormatText(singlePrice) + \" \" + this.currency}</label></div>\n                    <div class=\"quantity-total-price-line\">\n                        <div class=\"quantity\"><label> x ${this.quantity}</label></div>\n                        <div class=\"price-of-sale\">${this.renderTotalPriceOfSaleLabel()}</div>\n                    </div>\n                </div>\n            </div>\n        `;\n\n\n        // if (this.hasPositionalDiscounts) {\n        //     return html`\n        //     <div class=\"fullWidth\">\n        //         <div class=\"price-info\">\n        //             <div class=\"description\"><label >${this.description}</label></div>\n        //             <div class=\"quantity\"><label> x ${this.quantity}</label></div>\n        //             <div class=\"price-of-sale\"><label>${this.totalPriceOfSale + \" \" + this.currency}</label></div>\n        //         </div>\n        //         <div class=\"price-info\">\n        //             <div class=\"description\"><label i18n=\"20444\">Rabatt</label></div>\n        //             <div class=\"discounted-relative\"><label>${this.discountedPriceOfSaleRelative}%</label></div>\n        //         </div>\n        //         <div class=\"price-info bottomBorder\">\n        //            <div class=\"description\"><label i18n=\"discounted_price_inclusive_vat\">Sonderpreis (inkl. MwSt.)</label></div>\n        //            <div class=\"price-discounted\"><label>${this.discountedTotalPriceOfSale + \" \" + this.currency}</label></div>\n        //         </div>\n        //    </div>\n        //     `;\n        // }\n        // else {\n        //     return html`\n        //         <div class=\"fullWidth\">\n        //             <div class=\"price-info bottomBorder\">\n        //                 <div class=\"description\"><label>${this.description}</label></div>\n        //                 <div class=\"quantity\"><label> x ${this.quantity}</label></div>\n        //                 <div class=\"price-of-sale\"><label>${this.totalPriceOfSale + \" \" + this.currency}</label></div>\n        //             </div>\n        //         </div>\n        // `;\n        // }\n    }\n}\n","import { TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./price-item-3.component.sass?inline\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BasePriceItemComponent } from \"../price-item-base/base-price-item\";\n\n\n@customElement(\"fv-price-item-3\")\nexport class PriceItem3Component extends BasePriceItemComponent {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    render(): TemplateResult<1> {\n        const singlePrice: number = parseFloat(this.totalPriceOfSale) / this.quantity;\n        if (+singlePrice <= 0 && !this.showZeroPrice) {\n            this.remove();\n            return html``;\n        }\n        return html`\n            <div class=\"fullWidth\">\n                <div class=\"price-item-grid-container\">\n                    <div class=\"articleid\">${this.renderPositionLabel()}${this.articleId}</div>\n                    <div class=\"quantity\"><lable> x ${this.quantity}</lable></div>\n                    <div class=\"singlePrice\">${this.hidePrice ? \"\" : this.getPriceFormatText(singlePrice)}</div>\n                    <div class=\"description\">${this.description}</div>\n                    ${this.renderRemarks(\" - \")}\n                </div>\n            </div>\n        `;\n    }\n}","import { TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./price-item-4.component.sass?inline\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BasePriceItemComponent } from \"../price-item-base/base-price-item\";\n\n\n@customElement(\"fv-price-item-4\")\nexport class PriceItem4Component extends BasePriceItemComponent {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    render(): TemplateResult<1> {\n        const singlePrice: number = parseFloat(this.totalPriceOfSale) / this.quantity;\n        if (+singlePrice <= 0 && !this.showZeroPrice) {\n            this.remove();\n            return html``;\n        }\n        return html`\n            <div class=\"fullWidth\">\n                <div class=\"price-item-grid-container\">\n                    <div class=\"articleid\">${this.renderPositionLabel()}${this.articleId}</div>\n                    <div class=\"quantity\"><lable> x ${this.quantity}</lable></div>\n                    <div class=\"singlePrice\">${this.hidePrice ? \"\" : this.getPriceFormatText(singlePrice)}</div>\n                    <div class=\"description\">${this.description}</div>\n                    ${this.renderRemarks()}\n                </div>\n            </div>\n        `;\n    }\n}","import { css, html, unsafeCSS, TemplateResult } from \"lit\";\nimport style from \"./price-item-5.component.sass?inline\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { BasePriceItemComponent } from \"../price-item-base/base-price-item\";\n\n@customElement(\"fv-price-item-5\")\nexport class PriceItem5Component extends BasePriceItemComponent {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Boolean, reflect: true, attribute: \"remarks-expandable\" })\n    remarksExpandable = false;\n\n    @state()\n    private remarksExpanded = false;\n\n    constructor() {\n        super();\n    }\n\n    private toggleRemarks(e: Event): void {\n        e.stopPropagation();\n        this.remarksExpanded = !this.remarksExpanded;\n    }\n\n    private renderRemarksToggleButton(): TemplateResult<1> {\n        if (!this.remarksExpandable || !this.remarks || this.remarks.length < 1) return html``;\n        return html`\n            <div class=\"remarks-toggle-wrapper\">\n                <fv-button\n                    class=\"remarks-toggle-button\"\n                    icon=\"fv-icon-arrow-down-2${this.remarksExpanded ? \" mirrored-y\" : \"\"}\"\n                    @click=\"${(e: Event) => this.toggleRemarks(e)}\">\n                </fv-button>\n            </div>\n        `;\n    }\n\n    private renderRemarksPanel(): TemplateResult<1> {\n        if (!this.remarksExpandable || !this.remarks || this.remarks.length < 1) return html``;\n        return html`\n            <div class=\"remarks-panel ${this.remarksExpanded ? \"open\" : \"\"}\">\n                <div class=\"remarks-panel-inner\">\n                    ${this.remarks.map(r => html`<div class=\"remarks-panel-line\">${r}</div>`)}\n                </div>\n            </div>\n        `;\n    }\n\n    private CreateArticleIdLabel(): TemplateResult<1> {\n        if (this.webshopLink !== undefined) {\n            return html`<a class=\"linkLabel\" href=\"${this.webshopLink + this.articleId}\" target=\"_blank\">${this.articleId}</a>`;\n        }\n        return html`<label>${this.articleId}</label>`;\n    }\n\n\n    private _shown = false;\n    protected async toggleHighlightBox() {\n        if (!this._shown) {\n            super.onMouseEnter();\n            this._shown = true;\n        }\n        else {\n            super.onMouseLeave();\n            this._shown = false;\n        }\n    }\n\n    render(): TemplateResult<1> {\n        if (+this.totalPriceOfSale <= 0 && !this.showZeroPrice) {\n            this.remove();\n            return html``;\n        }\n        if (this.hasPositionalDiscounts) {\n            return html`\n            <div class=\"fullWidth\" @click=\"${this.toggleHighlightBox}\">\n                <div class=\"price-info\">\n                    <div class=\"articleid\">${this.renderPositionLabel()}${this.CreateArticleIdLabel()}</div>\n                    ${this.renderRemarksToggleButton()}\n                </div>\n                <div class=\"price-info\">\n                    <div class=\"description\">${this.renderPositionLabel()}<label >${this.description}</label></div>\n                    <div class=\"quantity\"><label> x ${this.quantity}</label></div>\n                    <div class=\"price-of-sale\">${this.renderTotalPriceOfSaleLabel()}</div>\n                </div>\n                ${this.renderRemarksPanel()}\n                <div class=\"price-info\">\n                    <div class=\"description\"><label i18n=\"20444\">Rabatt</label></div>\n                    <div class=\"discounted-relative\"><label>${this.discountedPriceOfSaleRelative}%</label></div>\n                </div>\n                <div class=\"price-info bottomBorder\">\n                   <div class=\"description\"><label i18n=\"discounted_price_inclusive_vat\">Sonderpreis (inkl. MwSt.)</label></div>\n                   <div class=\"price-discounted\"><label>${this.discountedTotalPriceOfSale + \" \" + this.currency}</label></div>\n                </div>\n           </div>\n            `;\n        }\n        else {\n            return html`\n                <div class=\"fullWidth\" @click=\"${this.toggleHighlightBox}\">\n                    <div class=\"price-info\">\n                        <div class=\"articleid\">${this.renderPositionLabel()}${this.CreateArticleIdLabel()}</div>\n                        ${this.renderRemarksToggleButton()}\n                    </div>\n                    <div class=\"price-info bottomBorder\">\n                        <div class=\"description\">${this.renderPositionLabel()}<label>${this.description}</label></div>\n                        <div class=\"quantity\"><label> x ${this.quantity}</label></div>\n                        <div class=\"price-of-sale\">${this.renderTotalPriceOfSaleLabel()}</div>\n                    </div>\n                    ${this.renderRemarksPanel()}\n                </div>\n            `;\n        }\n    }\n}\n","import {html, nothing, unsafeCSS} from \"lit\";\nimport {BasePriceItemComponent} from \"../price-item-base/base-price-item\";\n\nimport style from './price-item-6.component.sass?inline'\nimport {customElement} from \"lit/decorators.js\";\n\n@customElement('fv-price-item-6')\nexport class PriceItem6Component extends BasePriceItemComponent {\n\n    static styles = [super.styles || [], unsafeCSS(style)]\n\n    protected render(): unknown {\n        const data = this.priceItemData;\n        return html`\n            <div class=\"line bold\">\n                <fv-label class=\"bold\">${data.Quantity} x ${data.ArticleDescription}</fv-label>\n                <fv-label class=\"bold\">${data.PriceOfSale} ${this.currency}</fv-label>\n            </div>\n            <div class=\"line\">\n                <fv-label>${data.Article_ID}</fv-label>\n                <fv-label>⠀</fv-label> <!-- Empty -->\n            </div>\n            <!-- \n            <div class=\"line\">\n                ${this.hasDimensions() ? html`<fv-label>Maße H/B/T</fv-label>` : nothing}\n                ${this.hasDimensions() ? html`<fv-label>${this.roundDimension(data.DimZ)}/${this.roundDimension(data.DimX)}/${this.roundDimension(data.DimY)}</fv-label>` : nothing}\n            </div>\n            <div class=\"line\">\n                <fv-label>EAN-Nummer</fv-label>\n                <fv-label>${this.getEAN()}</fv-label>\n            </div> \n            -->\n        `\n    }\n\n    hasDimensions() {\n        return !(isNaN(parseFloat(this.priceItemData.DimX)) || isNaN(parseFloat(this.priceItemData.DimY)) || isNaN(parseFloat(this.priceItemData.DimZ)))\n    }\n\n    roundDimension(value: string | number) {\n        if(typeof value === \"string\") {\n            value = parseFloat(value);\n        }\n        return `${value.toFixed(this.dimFloatDigits)}`\n    }\n\n    getEAN() {\n        const result = this.priceItemData.Remarks?.find(x => x.includes(\"EAN: \"))\n        if(result){\n            return result.replace(\"EAN: \", \"\");\n        }\n        return \"\";\n    }\n\n}\n","import {CommunicationMessageService, WebViewerService} from \"@dh-software/webui-api\";\n\nexport interface IDimensionSortItem {\n    key: string;\n    value: any;\n    params: { [key: string]: unknown };\n}\n\nconst UNIT_BY_SCALE: Record<number, string> = {\n    1: \"mm\",\n    0.1: \"cm\",\n    0.01: \"dm\",\n    0.001: \"m\"\n};\n\nclass DimensionHelperClass {\n    private _currentDimensionsOrder = \"HBT\"\n    private isInitialized: Promise<void> = new Promise<void>((res, rej) => res());\n\n    constructor() {\n        this.isInitialized = this.initialize();\n    }\n\n    private async initialize() {\n        await WebViewerService.IsAppReady;\n        const countryInfo = await CommunicationMessageService.getCountryInfo();\n        if (countryInfo) {\n            this._currentDimensionsOrder = countryInfo?.currentDimensionsorder || this._currentDimensionsOrder;\n            window.dispatchEvent(new CustomEvent(\"country-info\", {detail: countryInfo, bubbles: true, composed: true}));\n        }\n    }\n\n    public get IsInitialized(): Promise<void> {\n        return this.isInitialized;\n    }\n\n    public get DimensionsOrder(): string {\n        return this._currentDimensionsOrder;\n    }\n\n    public sortDimensionsByOrder(dimensions: IDimensionSortItem[]): IDimensionSortItem[] {\n        return dimensions.sort((a, b) => {\n            const indexA = this.DimensionsOrder.indexOf(a.key);\n            const indexB = this.DimensionsOrder.indexOf(b.key);\n            return indexA - indexB;\n        });\n    }\n\n    public getDimensionTypeFromIndex(index: number): string {\n        const order = this.DimensionsOrder;\n        if (index < 0 || index >= order.length) {\n            return 'unknown';\n        }\n        return order[index];\n    }\n\n    public getUnitByDimScale(scale: number): string | undefined {\n        return UNIT_BY_SCALE[scale];\n    }\n\n    public getDimensionNameFromIndex(index: number): string {\n        switch (this.getDimensionTypeFromIndex(index)) {\n            case 'H':\n                return 'height';\n            case 'B':\n                return 'width';\n            case 'T':\n                return 'depth';\n            default:\n                return 'unknown';\n        }\n    }\n}\n\nexport const DimensionHelper = new DimensionHelperClass();\n","import { css, html, unsafeCSS, TemplateResult, nothing } from \"lit\";\r\nimport style from \"./price-item-fp.component.sass?inline\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\nimport { BasePriceItemComponent } from \"../price-item-base/base-price-item\";\r\nimport { IDimensionSortItem, DimensionHelper } from \"../../../utils/dimension-helper.class\";\r\n\r\n@customElement('fp-price-item')\r\nexport class PriceItemFpComponent extends BasePriceItemComponent {\r\n\r\n\tstatic styles = [\r\n\t\tsuper.styles || [],\r\n\t\tcss`${unsafeCSS(style)}`\r\n\t];\r\n\r\n\tprivate dimensionDelimeter: string = \"/\";\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tprotected renderDimensionText(dimension: string) {\r\n\t\treturn parseFloat(dimension).toFixed(1).replace(\".\", \",\");\r\n\t}\r\n\r\n\tprotected renderDimensionLine(): TemplateResult<1> {\r\n\t\tif (this.priceItemData.DimX.length == 0 || this.priceItemData.DimY.length == 0 || this.priceItemData.DimZ.length == 0) {\r\n\t\t\treturn html``;\r\n\t\t}\r\n\t\tconst dimensionItems: IDimensionSortItem[] = [\r\n\t\t\t{ key: \"B\", value: this.priceItemData.DimX, params: { label: \"fv.generickatatree.b\" } },\r\n\t\t\t{ key: \"T\", value: this.priceItemData.DimY, params: { label: \"fv.generickatatree.t\" } },\r\n\t\t\t{ key: \"H\", value: this.priceItemData.DimZ, params: { label: \"fv.generickatatree.h\" } },\r\n\t\t];\r\n\r\n\t\tDimensionHelper.sortDimensionsByOrder(dimensionItems);\r\n\r\n\t\treturn html`\r\n\t\t<div class=\"price-dimensions\">\r\n\t\t\t<div class=\"dimensions-headline\">\r\n\t\t\t\t${dimensionItems.map((item_, index_) => {\r\n\t\t\t\t\tconst isDelimeterNeed = index_ !== dimensionItems.length - 1;\r\n\t\t\t\t\treturn html`\r\n\t\t\t\t\t\t<label i18n = \"${item_.params.label}\"></label> ${isDelimeterNeed ? this.dimensionDelimeter: ''}\r\n\t\t\t\t\t`;\r\n\t\t\t\t})}\r\n\t\t\t</div>\r\n\t\t\t<div class=\"dimensions\">\r\n\t\t\t\t${dimensionItems.map((item, index) => {\r\n\t\t\tconst isDelimeterNeed = index !== dimensionItems.length - 1;\r\n\t\t\treturn html`\r\n\t\t\t\t\t\t<div class=\"dimension\">\r\n\t\t\t\t\t\t\t${this.renderDimensionText(item.value)} ${isDelimeterNeed ? this.dimensionDelimeter : ''}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t`;\r\n\t\t})}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t`;\r\n\t}\r\n\r\n\tprotected renderArticleDescription() {\r\n\t\treturn html`\r\n\t\t\t<div class=\"article-description\">\r\n\t\t\t\t<label>${this.description}</label>\r\n\t\t\t</div>\r\n\t\t`;\r\n\t}\r\n\r\n\tprotected renderArticleQuantity() {\r\n\t\treturn html`\r\n        \t<div class=\"quantity\"><label>${this.quantity} x</label></div>\r\n\t\t`;\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn html`\r\n\t\t\t<div class=\"price-item-group\" @mouseenter=\"${this.onMouseEnter}\" @mouseleave=\"${this.onMouseLeave}\">\r\n\r\n\t\t\t\t<div class=\"article-info\">\r\n\t\t\t\t\t${this.renderArticleQuantity()}\r\n\r\n\t\t\t\t\t<label class=\"articleid\">${this.articleId}</label>\r\n\t\t\t\t\t<div class=\"dimensions-container\">\r\n\t\t\t\t\t\t${this.renderDimensionLine()}\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<div class=\"total-price-of-sale\">\r\n\t\t\t\t\t\t${this.renderTotalPriceOfSaleLabel()}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t${this.renderArticleDescription()}\r\n\t\t\t\t<div class=\"remarks-container\">\r\n\t\t\t\t\t${this.renderRemarks()}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n    `;\r\n\t}\r\n}\r\n","import { css, html, nothing, unsafeCSS } from \"lit\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\nimport style from \"./price-list.component.sass?inline\";\r\nimport { BasePriceItemComponent } from \"../price-item-base/base-price-item\";\r\nimport { PriceFormatService } from \"../../../utils/price-format.service\";\r\nimport { StepChildComponent } from \"../../standard/base/step-child.component\";\r\nimport { IPriceItemData, IProgramDetails } from \"../../../define/interface\";\r\nimport { IPriceData } from \"@dh-software/webui-types\";\r\nimport { CommunicationMessageService, WebViewerService } from \"@dh-software/webui-api\";\r\n\r\n\r\n@customElement(\"fv-price-list\")\r\nexport class PriceListComponent extends StepChildComponent {\r\n    static styles = [\r\n        super.styles || [],\r\n        css`${unsafeCSS(style)}`\r\n    ];\r\n\r\n    @property({ type: Array })\r\n    articleList: Array<IPriceItemData> = [];\r\n\r\n    @property({ type: Object })\r\n    planningObjects: any = {};\r\n\r\n    @property({ type: Number })\r\n    discountRelative = 0;\r\n\r\n    @property({ type: String })\r\n    discountAbsolute = \"\";\r\n\r\n    @property({ type: Number })\r\n    vatRelative = 0;\r\n\r\n    @property({ type: String })\r\n    vatAbsolute = \"\";\r\n\r\n    @property({ type: String })\r\n    totalPrice = \"\";\r\n\r\n    @property({ type: String })\r\n    totalPriceWithoutVat = \"\";\r\n\r\n    @property({ type: String })\r\n    totalDiscountedPrice = \"\";\r\n\r\n    @property({ type: String })\r\n    currency = \"\";\r\n\r\n    @property({ type: Boolean })\r\n    hasPositionalDiscounts = false;\r\n\r\n    @property({ type: Boolean })\r\n    showFurnrayModule = false;\r\n\r\n    @property({ type: Boolean })\r\n    showShippingCostsNotice = false;\r\n\r\n    @property({ type: Boolean })\r\n    webUiHandlesShoppingCart = false;\r\n\r\n    @property({ type: Boolean, attribute: \"prevent-add-to-cart\" })\r\n    preventAddToCart = false;\r\n\r\n    @property({ type: Boolean, attribute: \"prevent-empty-cart-text\" })\r\n    preventEmptyCartText = false;\r\n\r\n    @property({ type: String, reflect: true, attribute: \"price-item-tag\" })\r\n    priceItemTag = \"fv-price-item\";\r\n\r\n    @property({ type: String, reflect: true, attribute: \"total-price-txt-id\" })\r\n    totalPriceTextId = \"total_price_inclusive_vat\";\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"total-price-divider\" })\r\n    totalPriceDivider = false;\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"prevent-total\" })\r\n    preventTotal = false;\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"show-total-without-vat\" })\r\n    showTotalWithoutVat = false;\r\n\r\n    @property({ type: String, reflect: true, attribute: \"show-total-without-vat-txt\" })\r\n    totalPriceWithoutVatTextId = \"\";\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"hide-price\" })\r\n    hidePrice = false;\r\n\r\n    @property({ type: String, reflect: true, attribute: \"remarks-prefix\" })\r\n    remarksPrefix = \"\";\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"zero-prices\" })\r\n    showZeroPrices = false;\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"zero-prices-as-subposition-total\" })\r\n    zeroPricesAsSubpositionTotal = false;\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"show-positions\" })\r\n    showPositions = false;\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"show-article-id\" })\r\n    showArticleId = false;\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"show-subtotals\" })\r\n    showSubtotals = false;\r\n\r\n    @property({ type: String, reflect: false, attribute: \"webshop-link\" })\r\n    webshopLink: string | undefined = undefined;\r\n\r\n    @property({ type: Number, reflect: true, attribute: \"dim-float-digits\" })\r\n    dimFloatDigits = 2;\r\n\r\n    @property({ type: String, reflect: true, attribute: \"thousands-separator\" })\r\n    thousandsSeparator?: string;\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"highlight-element-on-hover\" })\r\n    highlightElementOnHover = false;\r\n\r\n    @property({ type: Array })\r\n    programCollection: Array<IProgramDetails> = [];\r\n\r\n    @property({ type: Array })\r\n    totalPerProg: Array<{ prog: string, total: number }> = [];\r\n\r\n    @property({ type: Object })\r\n    currentObjArr: any = {};\r\n\r\n    @property({ type: Object, attribute: \"price-item-attributes\" })\r\n    priceItemAttributes?: { [attribute: string]: unknown };\r\n\r\n    @property({ type: Object, attribute: \"info-label-text-overrides\" })\r\n    infoLabelTextOverrides?: { [manuProgKey: string]: string };\r\n\r\n    @property({ type: Boolean, reflect: true })\r\n    private accordion: boolean = false;\r\n\r\n\r\n    private furnrayClicked(): void {\r\n        const event = new CustomEvent(\"furnrayclicked\", { bubbles: true, composed: true });\r\n\r\n        this.dispatchEvent(event);\r\n    }\r\n\r\n    private shoppingCartClicked(): void {\r\n        const event = new CustomEvent(\"shoppingcartclicked\", { bubbles: true, composed: true });\r\n\r\n        this.dispatchEvent(event);\r\n    }\r\n\r\n    formatCurrency(price: number): string {\r\n        return PriceFormatService.formatPriceForCurrency(price, this.currency, this.thousandsSeparator);\r\n    }\r\n\r\n    formatPrice(value: string): string {\r\n        return PriceFormatService.formatPriceStringForCurrency(value, this.currency);\r\n    }\r\n\r\n    private static dimensionSuffix: \"mm\" | \"cm\" | \"m\" = \"mm\";\r\n\r\n    public get DimensionSuffix(): \"mm\" | \"cm\" | \"m\" {\r\n        return PriceListComponent.dimensionSuffix;\r\n    }\r\n\r\n    private async initDimensionSuffix() {\r\n        await WebViewerService.IsAppReady;\r\n        const dimScale = await CommunicationMessageService.getDimensionScale();\r\n\r\n        switch (dimScale) {\r\n            case 1.0:\r\n                PriceListComponent.dimensionSuffix = \"mm\";\r\n                break;\r\n            case 0.1:\r\n                PriceListComponent.dimensionSuffix = \"cm\";\r\n                break;\r\n            case 0.001:\r\n                PriceListComponent.dimensionSuffix = \"m\";\r\n                break;\r\n            default:\r\n                break;\r\n        }\r\n\r\n        this.requestUpdate();\r\n    }\r\n\r\n    constructor() {\r\n        super();\r\n        this.initDimensionSuffix();\r\n    }\r\n\r\n    async preparePriceData(data: IPriceData) {\r\n        await this.updateComplete;\r\n        let priceGuids = new Array<string>();\r\n        this.articleList = new Array<IPriceItemData>();\r\n        for (let i = 0; i < data.Articles.length; ++i) {\r\n            for (let y = 0; y < data.Articles[i].Articles.length; ++y) {\r\n                const art = data.Articles[i].Articles[y] as IPriceItemData;\r\n                art.PlannedManufacturer = data.Articles[i].Manu;\r\n                art.PlannedProg = data.Articles[i].Prog;\r\n                art.DH_Manu = data.Articles[i].DH_Manu;\r\n                art.DH_Prog = data.Articles[i].DH_Prog;\r\n                this.articleList.push(art);\r\n                priceGuids.push(art.GUID);\r\n                if ((art.DiscountedTotalPriceOfSale ?? 0) > 0) {\r\n                    this.hasPositionalDiscounts = true;\r\n                }\r\n            }\r\n        }\r\n        if (this.highlightElementOnHover) {\r\n            this.planningObjects = await CommunicationMessageService.getPlanningObjectByGuid(priceGuids);\r\n        }\r\n\r\n        this.discountRelative = data.discountRelative;\r\n        this.discountAbsolute = data.discountAbsolute;\r\n        this.vatRelative = data.vatRelative;\r\n        this.vatAbsolute = data.vatAbsolute;\r\n        this.totalPriceWithoutVat = data.totalPriceWithoutVat;\r\n        this.totalPrice = data.totalPrice;\r\n        this.totalDiscountedPrice = data.totalDiscountedPrice;\r\n        this.currency = data.currency;\r\n        this.currentObjArr = data.Articles;\r\n\r\n\r\n        this.hidePrice = !window.g_configuration[\"show_price\"];\r\n\r\n        await this.updateComplete;\r\n    }\r\n\r\n    public async initialize(showFurnrayModule: boolean, showShippingCostsNotice: boolean, webUiHandlesShoppingCart: boolean) {\r\n        this.showFurnrayModule = showFurnrayModule;\r\n        this.showShippingCostsNotice = showShippingCostsNotice;\r\n        this.webUiHandlesShoppingCart = webUiHandlesShoppingCart;\r\n\r\n        this.requestUpdate(\"articleList\");\r\n        await this.updateComplete;\r\n    }\r\n\r\n    render() {\r\n        return html`\r\n            ${this.renderEmptyCart()}\r\n            ${this.renderArticleList()}\r\n            ${this.renderTotalWithoutVat()}\r\n            ${this.renderTotal()}\r\n            ${this.renderShippingCost()}\r\n            ${this.renderAddToCart()}\r\n            ${this.renderFurnrayModule()}\r\n        `;\r\n    }\r\n\r\n    renderShippingCost() {\r\n        if (this.showShippingCostsNotice && this.articleList.length > 0) {\r\n            return html`\r\n                <div i18n=\"plus_shipping_costs\">zzgl. Versandkosten</div>`;\r\n        }\r\n    }\r\n\r\n    renderAddToCart() {\r\n        if (this.preventAddToCart) return html``;\r\n        if (this.articleList.length > 0) {\r\n            return html`\r\n                <fv-button id=\"addToCart\" @click=${this.shoppingCartClicked} i18n=\"fv.wizard.addToCart\">In den\r\n                    Warenkorb\r\n                </fv-button>`;\r\n        }\r\n    }\r\n\r\n    renderFurnrayModule() {\r\n        if (this.showFurnrayModule && this.articleList.length > 0) {\r\n            return html`\r\n                <fv-button id=\"furnrayModule\" @click=\"${this.furnrayClicked}\" i18n=\"fv.create_furnray_upload.action\">\r\n                    Fotorealistisches Bild erzeugen\r\n                </fv-button>`;\r\n        }\r\n    }\r\n\r\n    renderEmptyCart() {\r\n        if (this.preventEmptyCartText) return html``;\r\n        if (this.articleList.length < 1) {\r\n            return html`\r\n                <div i18n=\"fv.generickatatree.nothingFound\">Keine Artikel gefunden.</div>`;\r\n        }\r\n    }\r\n\r\n    renderTotalWithoutVat() {\r\n        if (this.preventTotal) return html``;\r\n        if (this.showTotalWithoutVat == false) return html``;\r\n\r\n        if (this.articleList.length > 0) {\r\n            return html`\r\n                ${this.totalPriceDivider ? html`\r\n                    <div class=\"divider-row\">\r\n                        <div class=\"description-divider\"></div>\r\n                        <div class=\"price-divider\"></div>\r\n                    </div>` : html``}\r\n                <div class=\"totalRow\">\r\n                    <div class=\"description\"\r\n                         ${this.totalPriceWithoutVatTextId ? html`i18n=\"${this.totalPriceWithoutVatTextId}` : html``}\r\n                    \">Gesamtsumme (exkl. MwSt.)\r\n                </div>\r\n                <div class=\"price\">${this.formatPrice(this.totalPriceWithoutVat) + \" \" + this.currency}</div>\r\n                </div>\r\n            `;\r\n        }\r\n    }\r\n\r\n    renderTotal() {\r\n        if (this.preventTotal) return html``;\r\n        if (this.articleList.length > 0) {\r\n            if (this.hasPositionalDiscounts) {\r\n                return html`\r\n                    ${this.totalPriceDivider ? html`\r\n                        <div class=\"divider-row\">\r\n                            <div class=\"description-divider\"></div>\r\n                            <div class=\"price-divider\"></div>\r\n                        </div>` : html``}\r\n                    <div class=\"totalRow\">\r\n                        <div class=\"description\" i18n=\"${this.totalPriceTextId}\">Gesamtsumme (inkl. MwSt.)</div>\r\n                        <div class=\"price\">${this.formatPrice(this.totalPrice) + \" \" + this.currency}</div>\r\n                    </div>\r\n                    ${this.totalPriceDivider ? html`\r\n                        <div class=\"divider-row\">\r\n                            <div class=\"description-divider\"></div>\r\n                            <div class=\"price-divider\"></div>\r\n                        </div>` : html``}\r\n                    <div class=\"totalRow\">\r\n                        <div class=\"description\" i18n=\"discounted_price_inclusive_vat\">Sonderpreis (inkl. MwSt.)</div>\r\n                        <div class=\"price\">${this.formatPrice(this.totalDiscountedPrice) + \" \" + this.currency}</div>\r\n                    </div>\r\n                `;\r\n            } else {\r\n                return html`\r\n                    ${this.totalPriceDivider ? html`\r\n                        <div class=\"divider-row\">\r\n                            <div class=\"description-divider\"></div>\r\n                            <div class=\"price-divider\"></div>\r\n                        </div>` : html``}\r\n                    <div class=\"totalRow\">\r\n                        <div class=\"description\" i18n=\"${this.totalPriceTextId}\">Gesamtsumme (inkl. MwSt.)</div>\r\n                        <div class=\"price\">${this.formatPrice(this.totalPrice) + \" \" + this.currency}</div>\r\n                    </div>\r\n                `;\r\n            }\r\n        }\r\n    }\r\n\r\n    private createPriceItemComponent(position: {\r\n        price: IPriceItemData,\r\n        \"sub-positions\": Array<IPriceItemData>\r\n    }, last: boolean, mainPosition: {\r\n        price: IPriceItemData,\r\n        \"sub-positions\": Array<IPriceItemData>\r\n    } | undefined = undefined, buildTotalPositionPrice = false) {\r\n        const priceComponent: BasePriceItemComponent = document.createElement(this.priceItemTag) as BasePriceItemComponent;\r\n        priceComponent.instanceIdent = Object.keys(this.planningObjects).length > 0 ? this.planningObjects[position.price.GUID] : -1;\r\n        priceComponent.description = position.price.ArticleDescription.length < 1 ? position.price.Article_ID : position.price.ArticleDescription;\r\n        priceComponent.totalPriceOfSale = this.formatCurrency(position.price.TotalPriceOfSale);\r\n        priceComponent.quantity = position.price.Quantity;\r\n        priceComponent.hasPositionalDiscounts = (position.price.DiscountedTotalPriceOfSale ?? 0) > 0;\r\n        priceComponent.discountedTotalPriceOfSale = this.formatCurrency(position.price.DiscountedTotalPriceOfSale ?? 0);\r\n        priceComponent.discountedPriceOfSaleRelative = position.price.DiscountedPriceOfSaleRelative ?? 0;\r\n        priceComponent.currency = this.currency;\r\n        priceComponent.articleId = position.price.Article_ID;\r\n        priceComponent.remarks = position.price.Remarks || [];\r\n        priceComponent.hidePrice = this.hidePrice;\r\n        priceComponent.priceItemData = position.price;\r\n        priceComponent.remarksPrefix = this.remarksPrefix;\r\n        priceComponent.showZeroPrice = this.showZeroPrices;\r\n        priceComponent.zeroPricesAsSubpositionTotal = this.zeroPricesAsSubpositionTotal;\r\n        priceComponent.showPosition = this.showPositions;\r\n        priceComponent.showArticleId = this.showArticleId;\r\n        priceComponent.dimFloatDigits = this.dimFloatDigits;\r\n        priceComponent.dimensionSuffix = this.DimensionSuffix;\r\n        priceComponent.thousandsSeparator = this.thousandsSeparator;\r\n        priceComponent.highlightElementOnHover = this.highlightElementOnHover;\r\n        priceComponent.webshopLink = this.webshopLink;\r\n\r\n        if (this.priceItemAttributes) {\r\n            const attributes = Object.keys(this.priceItemAttributes);\r\n            for (const attribute of attributes) {\r\n                const attributeValue = this.priceItemAttributes[attribute];\r\n\r\n                if (typeof attributeValue === \"boolean\" && attributeValue) {\r\n                    priceComponent.setAttribute(attribute, \"\");\r\n                }\r\n                else if (typeof attributeValue === \"boolean\" && !attributeValue) {\r\n                    priceComponent.removeAttribute(attribute);\r\n                }\r\n                else if (typeof attributeValue === \"object\") {\r\n                    priceComponent.setAttribute(attribute, JSON.stringify(attributeValue));\r\n                }\r\n                else {\r\n                    priceComponent.setAttribute(attribute, attributeValue as string);\r\n                }\r\n            }\r\n        }\r\n\r\n        priceComponent.classList.add(\"price-item\")\r\n        if (last) {\r\n            priceComponent.classList.add(\"last\");\r\n        }\r\n        if (position.price && position.price.Positions_NR && position.price.Positions_NR.includes(\".\")) {\r\n            priceComponent.classList.add(\"sub-position\");\r\n        }\r\n\r\n        if (mainPosition != undefined && buildTotalPositionPrice) {\r\n            const lastIndex = mainPosition[\"sub-positions\"].length - 1;\r\n            const lastSubPosition = mainPosition[\"sub-positions\"].at(lastIndex);\r\n            if (lastSubPosition == position.price) {\r\n                priceComponent.classList.add(\"last-of-position\");\r\n\r\n                let total = mainPosition.price.TotalPriceOfSale;\r\n                for (const subPosition of mainPosition[\"sub-positions\"]) {\r\n                    total += subPosition.TotalPriceOfSale;\r\n                }\r\n                priceComponent.totalPricePosition = total;\r\n            }\r\n        } else if (position[\"sub-positions\"].length > 0) {\r\n            priceComponent.classList.add(\"has-sub-positions\");\r\n\r\n            let total = position.price.TotalPriceOfSale;\r\n            for (const subPosition of position[\"sub-positions\"]) {\r\n                total += subPosition.TotalPriceOfSale;\r\n            }\r\n            priceComponent.totalPricePosition = total;\r\n        }\r\n        return priceComponent;\r\n    }\r\n\r\n\r\n    private calculateTotalProgsPrice() {\r\n        const groupMap: Record<string, IPriceItemData[]> = {};\r\n\r\n        this.articleList.forEach(item => {\r\n\r\n            const prog = item.PlannedProg;\r\n\r\n            if (!groupMap[prog]) {\r\n                groupMap[prog] = [];\r\n            }\r\n            groupMap[prog].push(item);\r\n        });\r\n\r\n        this.programCollection = Object.keys(groupMap).map(progName => ({\r\n            progname: progName,\r\n            progData: groupMap[progName],\r\n        }));\r\n\r\n        this.totalPerProg = this.programCollection.map(group => {\r\n            const total = group.progData.reduce(\r\n                (sum, item) => sum + (item.DiscountedTotalPriceOfSale || item.TotalPriceOfSale),\r\n                0\r\n            );\r\n            return { prog: group.progname, total };\r\n        });\r\n    }\r\n\r\n    private createPriceItemsFromMainPosition(mainPosition: {\r\n\r\n        price: IPriceItemData,\r\n        \"sub-positions\": Array<IPriceItemData>\r\n    }, index: number, lastIndex: number) {\r\n        return html`\r\n            ${(window.g_configuration.furnplan_REG_PrintManufacName === \"1\" || this.showSubtotals) ? this.renderInfoLabel(mainPosition) : \"\"}\r\n            ${window.g_configuration.furnplan_REG_PrintProperty === \"1\" ? this.renderProgRemarks(mainPosition) : \"\"}\r\n\r\n            ${this.createPriceItemComponent(mainPosition, index == lastIndex && mainPosition[\"sub-positions\"].length < 1)}\r\n            ${mainPosition[\"sub-positions\"].map((subPosition: IPriceItemData, positionIndex: number) => this.createPriceItemComponent({\r\n                price: subPosition,\r\n                \"sub-positions\": []\r\n            }, index == lastIndex && positionIndex == mainPosition[\"sub-positions\"].length - 1, mainPosition, lastIndex != 0))}\r\n\r\n            ${window.g_configuration.furnplan_REG_PrintTotalPrice === \"1\" ? this.renderTotalGroupPrice(mainPosition) : \"\"}\r\n            ${this.showSubtotals ? this.renderAlternativeSubtotal(mainPosition) : nothing}\r\n        `;\r\n    }\r\n\r\n    private renderProgRemarks(mainPosition: { price: IPriceItemData, \"sub-positions\": Array<IPriceItemData> }) {\r\n        if (!mainPosition || !this.currentObjArr || !Array.isArray(this.currentObjArr)) {\r\n            return html``;\r\n        }\r\n\r\n        const data = this.programCollection.find((item) => item.progname == mainPosition.price.PlannedProg) as IProgramDetails;\r\n        const searchedItem = data.progData.find((item) => item.GUID == mainPosition.price.GUID) as IPriceItemData;\r\n\r\n        const searchedItemIndex = data.progData.indexOf(searchedItem);\r\n\r\n        for (const item of this.currentObjArr) {\r\n            if (item.Prog == data.progname) {\r\n                data.remarks = item.Remarks;\r\n            }\r\n        }\r\n\r\n        if (searchedItemIndex == 0) {\r\n            return html`\r\n                <div class=\"prog-remarks-container\">\r\n                    ${this.articleList.length > 0 ? html`\r\n                        ${data.remarks?.map((remark) => {\r\n                            return html`\r\n                                <label class=\"prog-remark-label\"> ${remark}</label>\r\n                            `;\r\n                        })}\r\n\r\n                    ` : \"\"}\r\n                    <div>\r\n            `;\r\n        }\r\n    }\r\n\r\n    private fillProgRemarks(programCollection: IProgramDetails) {\r\n        if (!this.currentObjArr || !Array.isArray(this.currentObjArr)) {\r\n            return ''\r\n        }\r\n        for (const item of this.currentObjArr) {\r\n            if (item.Prog == programCollection.progname) {\r\n                programCollection.remarks = item.Remarks;\r\n            }\r\n        }\r\n    }\r\n\r\n    private renderTotalGroupPrice(mainPosition: { price: IPriceItemData, \"sub-positions\": Array<IPriceItemData> }) {\r\n        if (!mainPosition) {\r\n            return html``;\r\n        }\r\n        const data = this.programCollection.find((item) => item.progname == mainPosition.price.PlannedProg) as IProgramDetails;\r\n        let searchedItem: IPriceItemData = {\r\n            ArticleDescription: \"\",\r\n            TotalPriceOfSale: 0,\r\n            Quantity: 0,\r\n            DiscountedTotalPriceOfSale: 0,\r\n            DiscountedPriceOfSaleRelative: 0,\r\n            Article_ID: \"\",\r\n            Positions_NR: \"\",\r\n            GUID: \"\",\r\n            Remarks: [],\r\n            DimX: \"\",\r\n            DimY: \"\",\r\n            DimZ: \"\",\r\n            PriceOfSale: 0,\r\n            PurchasePrice: 0,\r\n            PurchasePriceCalc: 0,\r\n            PlannedManufacturer: \"\",\r\n            PlannedProg: \"\",\r\n            DH_Manu: \"\",\r\n            DH_Prog: \"\"\r\n        };\r\n\r\n        if (mainPosition[\"sub-positions\"].length != 0) {\r\n            for (const I of mainPosition[\"sub-positions\"]) {\r\n                searchedItem = data.progData.find((item) => item.GUID == I.GUID) as IPriceItemData;\r\n            }\r\n        } else {\r\n            searchedItem = data.progData.find((item) => item.GUID == mainPosition.price.GUID) as IPriceItemData;\r\n        }\r\n        const searchedItemIndex = data.progData.indexOf(searchedItem);\r\n\r\n        if (data.progData.length - 1 == searchedItemIndex) {\r\n            let progPrice = this.totalPerProg.find((item) => item.prog == data.progname)?.total;\r\n            return html`\r\n                <div class=\"total-price-container\">\r\n                    ${this.discountRelative ? html`\r\n                        <div>\r\n                            <fv-label>\r\n                                <span i18n=\"20444\" class=\"colon\">Rabatt</span>\r\n                                <span>${this.discountRelative}%</span>\r\n                            </fv-label>\r\n                            <fv-label>\r\n                                <span i18n=\"20445\" class=\"colon\"></span>\r\n                            </fv-label>\r\n                        </div>\r\n                    ` : nothing}\r\n                    <div>\r\n                        <label class=\"total-price-label\"><label style=\"white-space: pre\" i18n=\"20112\">Gesamtpreis</label>: ${progPrice?.toFixed(2)} ${this.currency}</label>\r\n                    </div>\r\n                </div>\r\n            `;\r\n\r\n        }\r\n    }\r\n\r\n    private renderAlternativeSubtotal(mainPosition_: { price: IPriceItemData, \"sub-positions\": Array<IPriceItemData> }) {\r\n        if (!mainPosition_) {\r\n            return nothing;\r\n        }\r\n        const data = this.programCollection.find((item_) => item_.progname == mainPosition_.price.PlannedProg) as IProgramDetails;\r\n        if (!data) {\r\n            return nothing;\r\n        }\r\n\r\n        const subPositions = mainPosition_[\"sub-positions\"];\r\n        const lastPositionGuid = subPositions.length > 0\r\n            ? subPositions[subPositions.length - 1]?.GUID\r\n            : mainPosition_.price.GUID;\r\n\r\n        const searchedItem = data.progData.find((item_) => item_.GUID == lastPositionGuid) as IPriceItemData;\r\n        const searchedItemIndex = data.progData.indexOf(searchedItem);\r\n\r\n        if (data.progData.length - 1 != searchedItemIndex) {\r\n            return nothing;\r\n        }\r\n\r\n        const subTotal = this.totalPerProg.find((item_) => item_.prog == data.progname)?.total ?? 9999;\r\n        return html`\r\n            <div class=\"totalRow subtotal-row\">\r\n                <div class=\"description\" i18n=\"20400\"></div>\r\n                <div class=\"price\">${this.formatCurrency(subTotal)} ${this.currency}</div>\r\n            </div>\r\n        `;\r\n    }\r\n\r\n    isNumber(value: any) {\r\n        return !isNaN(value) && isFinite(value);\r\n    }\r\n\r\n    private renderInfoLabel(mainPosition: { price: IPriceItemData, \"sub-positions\": Array<IPriceItemData> }) {\r\n        if (!mainPosition) {\r\n            return html``;\r\n        }\r\n        const data = this.programCollection.find((item) => item.progname == mainPosition.price.PlannedProg) as IProgramDetails;\r\n        const searchedItem = data.progData.find((item) => item.GUID == mainPosition.price.GUID) as IPriceItemData;\r\n\r\n        const searchedItemIndex = data.progData.indexOf(searchedItem);\r\n\r\n        if (searchedItemIndex == 0) {\r\n            const manuLongName = mainPosition.price.PlannedManufacturer;\r\n            const progLongName = mainPosition.price.PlannedProg;\r\n            const lookupKey = `${mainPosition.price.DH_Manu}_${mainPosition.price.DH_Prog}`;\r\n            const overrideText = this.infoLabelTextOverrides?.[lookupKey];\r\n\r\n            const label = overrideText\r\n                ? html`<label class=\"group-info-label\" i18n=\"${overrideText}\">${overrideText}</label>`\r\n                : html`<label class=\"group-info-label\">${manuLongName} · ${progLongName}</label>`;\r\n\r\n            return html`\r\n                <div class=\"info-label-container\">\r\n                    ${this.articleList.length > 0 ? label : \"\"}\r\n                </div>\r\n            `;\r\n        }\r\n    }\r\n\r\n    get hasVat(): boolean {\r\n        const val = parseFloat(this.vatAbsolute);\r\n        return !isNaN(val) && val > 0;\r\n    }\r\n\r\n    get hasDiscountRelative() {\r\n        return this.discountRelative > 0;\r\n    }\r\n\r\n    renderArticlesPriceInfo() {\r\n        if (this.totalPrice && this.accordion && window.g_configuration.furnplan_REG_PrintTotalPrice === \"1\") {\r\n            return html`\r\n                <div class=\"articles-price-info\">\r\n                    <label class=\"total-price-label\">\r\n                        ${this.totalPriceWithoutVat === this.totalPrice ? html`\r\n                            <div >\r\n                                <span i18n = \"3112\"></span>:\r\n                            </div>\r\n                        `: html`\r\n                            <span i18n=\"total_price_inclusive_vat\" ></span>\r\n                        `}\r\n                        <span >${this.totalPrice}<span>\r\n                        <span >${this.currency}</span>\r\n                    </label>\r\n\r\n                    ${this.hasDiscountRelative ? html`\r\n\r\n                        <div class=\"row\">\r\n                            <div class=\"left\">\r\n                                <label class=\"price-discount-relative\">\r\n                                    <span i18n =\"discount_relative\"></span>:\r\n                                    <span style=\"padding-left: 5px\">${this.discountRelative} % </span>\r\n                                </label>\r\n                            </div>\r\n                            <div class=\"right\">\r\n                                <label class=\"price-discount-relative\">\r\n                                    <span>${\"-\" + this.discountAbsolute}</span>\r\n                                </label>\r\n                            </div>\r\n                        </div>\r\n                    ` : nothing}\r\n\r\n                    ${this.totalDiscountedPrice !== this.totalPrice && this.discountRelative !== 0 ? html`\r\n                        <label class=\"discountet-price-label\">\r\n                            <div>\r\n                                ${this.hasVat ? html`\r\n                                    <span i18n=\"discounted_price_inclusive_vat\" style = \"font-weight: 600;\"></span>:\r\n                                ` : html`\r\n                                    <span i18n=\"20445\" style = \"font-weight: 600;\"></span>:\r\n                                `}\r\n                            </div>\r\n                            <span style = \"font-weight: 600;\">${this.totalDiscountedPrice}<span>\r\n                            <span style = \"font-weight: 600;\">${this.currency}</span>\r\n                        </label>\r\n                     ` : nothing}\r\n                </div>\r\n            `;\r\n        }\r\n    }\r\n\r\n    renderArticleList() {\r\n        const mainPositions = new Array<{ price: IPriceItemData, \"sub-positions\": Array<IPriceItemData> }>();\r\n        for (const articlePrice of this.articleList) {\r\n            if (articlePrice.Positions_NR && articlePrice.Positions_NR.includes(\".\")) {\r\n                const currentMainPosition = mainPositions.at(mainPositions.length - 1);\r\n                if (currentMainPosition) {\r\n                    currentMainPosition[\"sub-positions\"].push(articlePrice);\r\n                }\r\n            } else {\r\n                mainPositions.push({\r\n                    price: articlePrice,\r\n                    \"sub-positions\": []\r\n                });\r\n            }\r\n        }\r\n\r\n        const lastIndex = mainPositions.length - 1;\r\n\r\n        this.calculateTotalProgsPrice();\r\n        return html`\r\n            ${this.renderArticlesPriceInfo()}\r\n            <div id=\"price-list-container\">\r\n                    ${this.accordion ? html`\r\n                        ${this.programCollection?.map((collection) => {\r\n                            this.fillProgRemarks(collection);\r\n                            return html`\r\n                                <price-level-accordion-component\r\n                                .plannedManufacturer=\"${mainPositions.at(mainPositions.length - 1)?.price.PlannedManufacturer}\"\r\n                                .collection= \"${collection}\"\r\n                                .totalPerProg= \"${this.totalPerProg}\"\r\n                                .highlightElementOnHover=\"${this.highlightElementOnHover}\"\r\n                                .planningObjects = \"${this.planningObjects}\"\r\n                                ?hide-price=\"${this.hidePrice}\"\r\n                                .currency = \"${this.currency}\">\r\n                                </price-level-accordion-component>\r\n                            `;\r\n                        })}\r\n                        ` :\r\n                        html`\r\n                        ${mainPositions.map((mainPosition: {\r\n                            price: IPriceItemData,\r\n                            \"sub-positions\": Array<IPriceItemData>\r\n                        }, index: number) => this.createPriceItemsFromMainPosition(mainPosition, index, lastIndex))}\r\n\r\n                        `\r\n                    }\r\n                <slot ></slot>\r\n            </div>\r\n        `;\r\n    }\r\n}\r\n","import { css, html, unsafeCSS, TemplateResult, nothing, PropertyValues } from \"lit\";\r\nimport style from \"./price-level-accordion.component.sass?inline\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\nimport { PriceListComponent } from \"../price-list/price-list.component\";\r\nimport { IProgramDetails } from \"../../../define/interface\";\r\nimport { repeat } from 'lit/directives/repeat.js';\r\nimport { SceneHelperService } from \"../../../utils/scene-helper.service\";\r\n\r\n@customElement('price-level-accordion-component')\r\nexport class PriceLevelAccordionComponent extends PriceListComponent {\r\n  static styles = [\r\n    super.styles || [],\r\n    css`${unsafeCSS(style)}`\r\n  ];\r\n\r\n  @state()\r\n  private open: boolean = true;\r\n\r\n  @state()\r\n  priceMap: Map<string, string> = new Map();\r\n\r\n  @property({type: String})\r\n  plannedManufacturer = \"\";\r\n\r\n  @property({type: Object})\r\n  planningObjects:any = {};\r\n\r\n  @property({type: Boolean, reflect: true, attribute: \"hide-price\"})\r\n  hidePrice = false;\r\n\r\n  @property({ type: String})\r\n  public currency = \"\";\r\n\r\n  private symbol: string = \"▾\";\r\n\r\n  @property({ type: Object })\r\n  collection: IProgramDetails = {\r\n    progname: \"\",\r\n    progData: [],\r\n    remarks: []\r\n  };\r\n\r\n  @property({type: Boolean, reflect: true, attribute: \"highlight-element-on-hover\"})\r\n  highlightElementOnHover = false;\r\n\r\n  @property({ type: Array })\r\n  totalPerProg: Array<{ prog: string, total: number }> = [];\r\n\r\n  protected willUpdate(changedProperties: PropertyValues) {\r\n    if (changedProperties.has('totalPerProg')) {\r\n      this.priceMap = new Map(\r\n        this.totalPerProg.map(item => [item.prog, item.total.toFixed(2)])\r\n      );\r\n    }\r\n  }\r\n\r\n  private toggle() {\r\n    this.open = !this.open;\r\n  }\r\n\r\n  private getTotalProgPrice(prog: string): string {\r\n    return this.priceMap.get(prog) || \"0.00\";\r\n  }\r\n\r\n  private renderPositionQuantity(): TemplateResult {\r\n    return html`\r\n      <div class=\"position-quantity\">\r\n        ${this.collection.progData.length} <label i18n = \"fv.positionen.text\"></label>\r\n      </div>\r\n    `;\r\n  }\r\n\r\n  private createInstanceIdent(articleGUID: string): number {\r\n    if(this.planningObjects){\r\n      return Object.keys(this.planningObjects)?.length > 0 ? this.planningObjects?.[articleGUID] : -1;\r\n    }\r\n    return -1;\r\n  }\r\n\r\n  protected async onMouseEnter(instanseIdent: number, highlightElementOnHover?: boolean) {\r\n    if (highlightElementOnHover || this.highlightElementOnHover) {\r\n      await SceneHelperService.addHighlightBox(instanseIdent);\r\n    }\r\n  }\r\n\r\n  protected async onMouseLeave(instanceIdent: number, highlightElementOnHover?: boolean) {\r\n    if (highlightElementOnHover || this.highlightElementOnHover) {\r\n      await SceneHelperService.removeHighlightBox(instanceIdent);\r\n    }\r\n  }\r\n\r\n  private createPriceItem() {\r\n    return html`\r\n      ${repeat(\r\n      this.collection.progData,\r\n      (priceItem) => priceItem.GUID || priceItem.Article_ID,\r\n      (priceItem) => html`\r\n        <price-accordion-item\r\n        .instanceIdent= \"${this.createInstanceIdent(priceItem.GUID)}\"\r\n        .priceItem=\"${priceItem}\"\r\n        .highlightElementOnHover=\"${this.highlightElementOnHover}\"\r\n        ?hide-price=\"${this.hidePrice}\"\r\n        .currency = \"${this.currency}\"></price-accordion-item>\r\n      `\r\n    )}\r\n    `;\r\n  }\r\n\r\n  private renderRemarks() {\r\n    return html`\r\n    <div class=\"remarks-container\">\r\n      ${this.collection.remarks?.map(remark => {\r\n      return html`\r\n            <label class= \"remark\"> ${remark}</label>\r\n          `\r\n      })}\r\n    </div>\r\n    `;\r\n  }\r\n\r\n  private renderPositionPrice() {\r\n    if(this.hidePrice){\r\n      return nothing\r\n    }\r\n    return html`\r\n        <span class=\"price\">\r\n          ${this.getTotalProgPrice(this.collection.progname)} ${this.currency}\r\n        </span>\r\n    `\r\n  }\r\n\r\n  render() {\r\n    return html`\r\n      <div class=\"accordion\">\r\n        <div class=\"header\" @click=\"${this.toggle}\">\r\n          <div>\r\n            <div class=\"title\">\r\n              ${this.plannedManufacturer} ${this.collection.progname}\r\n            </div>\r\n\r\n            ${this.collection.remarks && this.collection.remarks.length > 0 ? html`\r\n              <div class=\"subtitle\">\r\n                ${this.renderRemarks()}\r\n              </div>\r\n            ` : nothing}\r\n          </div>\r\n\r\n          <div class=\"right-arrow\">\r\n                <div class=\"right\">\r\n                  ${this.renderPositionQuantity()}\r\n                  ${this.renderPositionPrice()}\r\n                </div>\r\n\r\n                <span class=\"arrow ${this.open ? 'open' : ''}\">\r\n                  ${this.symbol}\r\n                </span>\r\n          </div>\r\n\r\n        </div>\r\n        <div class=\"grid-wrapper ${this.open ? 'open' : ''}\">\r\n          <div class=\"content\">\r\n            ${this.collection.progData.length > 0 ? html`\r\n              ${this.createPriceItem()}\r\n            ` : nothing}\r\n          </div>\r\n        </div>\r\n      </div>\r\n    `;\r\n  }\r\n}\r\n","import { css, html, nothing, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\r\nimport style from \"./price-accordion-item.sass?inline\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\nimport { DimensionHelper, IDimensionSortItem } from \"../../../utils/dimension-helper.class\";\r\nimport { IPriceItemData } from \"../../../define/interface\";\r\nimport { PriceLevelAccordionComponent } from \"./price-level-accordion.component\";\r\n\r\n@customElement('price-accordion-item')\r\nexport class PriceAccordionItem extends PriceLevelAccordionComponent {\r\n    @property({ type: Object })\r\n    priceItem: IPriceItemData = {\r\n        ArticleDescription: \"\",\r\n        TotalPriceOfSale: 0,\r\n        Quantity: 0,\r\n        DiscountedTotalPriceOfSale: 0,\r\n        DiscountedPriceOfSaleRelative: 0,\r\n        Article_ID: \"\",\r\n        Positions_NR: \"\",\r\n        GUID: \"\",\r\n        Remarks: [],\r\n        DimX: \"\",\r\n        DimY: \"\",\r\n        DimZ: \"\",\r\n        PriceOfSale: 0,\r\n        PurchasePrice: 0,\r\n        PurchasePriceCalc: 0,\r\n        PlannedManufacturer: \"\",\r\n        PlannedProg: \"\",\r\n        DH_Manu: \"\",\r\n        DH_Prog: \"\"\r\n    };\r\n\r\n    @property({ type: Number })\r\n    instanceIdent = -1;\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"hide-price\" })\r\n    hidePrice = false;\r\n\r\n    @property({ type: String })\r\n    public currency = \"\";\r\n\r\n    private dimensionDelimeter: string = \"/\";\r\n\r\n    static styles = [\r\n        super.styles || [],\r\n        css`${unsafeCSS(style)}`\r\n    ];\r\n\r\n    @property({ type: Boolean, reflect: true })\r\n    highlightElementOnHover = false;\r\n\r\n    override connectedCallback() {\r\n        super.connectedCallback();\r\n        this.addEventListener('mouseenter', this.handleHostMouseEnter);\r\n        this.addEventListener('mouseleave', this.handleHostMouseLeave);\r\n    }\r\n\r\n    override disconnectedCallback() {\r\n        super.disconnectedCallback();\r\n        this.removeEventListener('mouseenter', this.handleHostMouseEnter);\r\n        this.removeEventListener('mouseleave', this.handleHostMouseLeave);\r\n    }\r\n\r\n    private handleHostMouseEnter = () => {\r\n        this.onMouseEnter(this.instanceIdent, this.highlightElementOnHover);\r\n    };\r\n\r\n    private handleHostMouseLeave = () => {\r\n        this.onMouseLeave(this.instanceIdent, this.highlightElementOnHover);\r\n    };\r\n\r\n    private renderHeaderLine() {\r\n        const { Quantity, Article_ID, TotalPriceOfSale, DimX, DimY, DimZ } = this.priceItem;\r\n\r\n        const isLongId = Article_ID.length > 9;\r\n        const isPriceLong = String(TotalPriceOfSale).length > 8;\r\n        const hasDimensions = DimX.length > 0 || DimY.length > 0 || DimZ.length > 0;\r\n        const isMobile = window.innerWidth <= 520;\r\n\r\n        const articleNameTemplate = html`\r\n            <div class=\"article-name\">\r\n                <label class=\"article-label\">\r\n                    <span>${Quantity}</span>\r\n                    <span> x </span>\r\n                    <span>${Article_ID}</span>\r\n                </label>\r\n            </div>\r\n        `;\r\n\r\n        if (isLongId || isPriceLong || isMobile) {\r\n            return html`\r\n                <div class=\"large-content\">\r\n                    <div class=\"large-content-header\">\r\n                        ${articleNameTemplate}\r\n                        ${this.renderArticlePrice()}\r\n                    </div>\r\n                    <div class=\"footer\">\r\n                        ${this.renderDimensionLine()}\r\n                    </div>\r\n                </div>\r\n            `;\r\n        }\r\n\r\n        const containerClass = hasDimensions ? 'header-default' : 'dimensionless-header';\r\n\r\n        return html`\r\n            <div class=\"${containerClass}\">\r\n                ${articleNameTemplate}\r\n                ${this.renderDimensionLine()}\r\n                ${this.renderArticlePrice()}\r\n            </div>\r\n        `;\r\n    }\r\n\r\n    private renderDimensionLine(): TemplateResult<1> | typeof nothing {\r\n        const { DimX, DimY, DimZ } = this.priceItem;\r\n\r\n        if ([DimX, DimY, DimZ].some(dim => !dim || dim.length === 0)) {\r\n            return nothing;\r\n        }\r\n\r\n        const items: IDimensionSortItem[] = [\r\n            { key: \"B\", value: DimX, params: { label: \"fv.generickatatree.b\" } },\r\n            { key: \"T\", value: DimY, params: { label: \"fv.generickatatree.t\" } },\r\n            { key: \"H\", value: DimZ, params: { label: \"fv.generickatatree.h\" } },\r\n        ];\r\n        DimensionHelper.sortDimensionsByOrder(items);\r\n\r\n        const renderList = (contentFn: (item: IDimensionSortItem) => TemplateResult) =>\r\n            items.map((item, i) => html`\r\n                ${contentFn(item)}${i < items.length - 1 ? this.dimensionDelimeter : ''}\r\n            `);\r\n\r\n        return html`\r\n            <div class=\"price-dimensions-wrapper\">\r\n                <div class=\"price-dimensions\">\r\n                    <div class=\"dimensions-label\">\r\n                        ${renderList(item => html`<label i18n=\"${item.params.label}\"></label>`)}\r\n                    </div>\r\n                    <div class=\"dimensions\">\r\n                        ${renderList(item => html`\r\n                            <div class=\"dimension\">${this.renderDimensionText(item.value)}</div>`)}\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        `;\r\n    }\r\n\r\n    private renderArticlePrice(): TemplateResult<1> {\r\n        if (this.hidePrice) {\r\n            return html``\r\n        }\r\n        return html`\r\n            <span class=\"article-price\">${this.priceItem.TotalPriceOfSale} ${this.currency}</span>\r\n        `;\r\n    }\r\n\r\n    private renderDimensionText(dimension: string) {\r\n        return parseFloat(dimension).toFixed(2).replace(\".\", \",\");\r\n    }\r\n\r\n    private renderArticleDescription(): TemplateResult<1> {\r\n        return html`\r\n            <div class=\"article-description\">${this.priceItem.ArticleDescription}</div>\r\n        `;\r\n    }\r\n\r\n    private renderArticleRemarks(): TemplateResult<1> {\r\n        return html`\r\n            <div class=\"article-remarks\">\r\n                ${this.priceItem.Remarks?.length ? this.priceItem.Remarks.map((remark) => {\r\n                    return html`\r\n                        <div class=\"remark-row\">\r\n                            <label class=\"remark\">${remark}</label>\r\n                        </div>\r\n                    `;\r\n                }) : html``}\r\n            </div>\r\n        `;\r\n    }\r\n\r\n    protected updated(_changedProperties: PropertyValues) {\r\n        super.updated(_changedProperties);\r\n        const isIndented = this.priceItem.Positions_NR.includes(\".\");\r\n        this.classList.toggle(\"indented\", isIndented);\r\n    }\r\n\r\n    render(): TemplateResult<1> {\r\n        return html`\r\n            ${this.renderHeaderLine()}\r\n            <div class=\"price-content\">\r\n                ${this.renderArticleDescription()}\r\n                ${this.renderArticleRemarks()}\r\n            </div>\r\n\r\n        `;\r\n    }\r\n}\r\n","import { TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./price-dimensions-item.component.sass?inline\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BasePriceItemComponent } from \"../price-item-base/base-price-item\";\nimport { IDimensionSortItem, DimensionHelper } from \"../../../utils/dimension-helper.class\";\n\n\n@customElement(\"fv-price-dimensions-item\")\nexport class PriceDimensionsItemComponent extends BasePriceItemComponent {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n    }\n\n    protected renderDimensionLine(): TemplateResult<1> {\n        if (this.priceItemData.DimX.length == 0 || this.priceItemData.DimY.length == 0 || this.priceItemData.DimZ.length == 0) {\n            return html``;\n        }\n\n        const dimensionItems: IDimensionSortItem[] = [\n            { key: \"B\", value: this.priceItemData.DimX, params: { label: \"181\" } },\n            { key: \"T\", value: this.priceItemData.DimY, params: { label: \"182\" } },\n            { key: \"H\", value: this.priceItemData.DimZ, params: { label: \"183\" } },\n        ];\n        DimensionHelper.sortDimensionsByOrder(dimensionItems);\n\n        return html`\n            <div class=\"price-info dimensions\">\n                ${dimensionItems.map(item => html`\n                    <div class=\"dimension\">\n                        <fv-label i18n=\"${item.params.label as string}\"></fv-label>: ${this.getDimensionFormatText(item.value)}\n                    </div>\n                `)}\n            </div>\n        `;\n    }\n\n    private renderSinglePriceQuantityLine(singlePrice: number) {\n        if (this.hidePrice) {\n            return html`<div class=\"quantity\"><label> x ${this.quantity}</label></div>`;\n        }\n        if (this.zeroPricesAsSubpositionTotal && singlePrice < 0.1) {\n            return html`<div class=\"quantity\"><label>${this.quantity} x</label></div>`;\n        }\n        return html`<div class=\"quantity\"><label>${this.quantity} x ${(singlePrice + \" \" + this.currency)}</label></div>`;\n    }\n\n    render() {\n        // this.priceItemData.Positions_NR\n        // totalPricePosition\n\n        const totalPrice = parseFloat(this.totalPriceOfSale);\n        const singlePrice: number = totalPrice / this.quantity;\n        if (!this.showZeroPrice) {\n            if (singlePrice < 0.1 || totalPrice < 0.1) {\n                this.remove();\n                return html``;\n            }\n        }\n\n        if (this.hasPositionalDiscounts) {\n            return html`\n            <div class=\"fullWidth\">\n                <div class=\"price-info\">\n                    <div class=\"description\">${this.renderPositionLabel()}<label>${this.description}</label></div>\n                    ${this.renderSinglePriceQuantityLine(singlePrice)}\n                    <div class=\"price-of-sale\">${this.renderTotalPriceOfSaleLabel()}</div>\n                </div>\n                <div class=\"price-info\">\n                    <div class=\"description\"><label i18n=\"20444\">Rabatt</label></div>\n                    <div class=\"discounted-relative\"><label>${this.discountedPriceOfSaleRelative}%</label></div>\n                </div>\n                <div class=\"price-info bottomBorder\">\n                   <div class=\"description\"><label i18n=\"discounted_price_inclusive_vat\">Sonderpreis (inkl. MwSt.)</label></div>\n                   <div class=\"price-discounted\"><label>${this.discountedTotalPriceOfSale + \" \" + this.currency}</label></div>\n                </div>\n                ${this.renderDimensionLine()}\n                ${this.renderRemarks()}\n           </div>\n            `;\n        }\n        else {\n            return html`\n                <div class=\"fullWidth\">\n                    <div class=\"price-info bottomBorder\">\n                        <div class=\"description\">${this.renderPositionLabel()}<label>${this.description}</label></div>\n                        ${this.renderSinglePriceQuantityLine(singlePrice)}\n                        <div class=\"price-of-sale\">${this.renderTotalPriceOfSaleLabel()}</div>\n                    </div>\n                    ${this.renderDimensionLine()}\n                    ${this.renderRemarks()}\n                </div>\n            `;\n        }\n    }\n}","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./dimmer.component.sass?inline\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-dimmer\")\nexport class DimmerComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n    }\n\n    protected render(): TemplateResult<1> {\n        return html`\n            <slot></slot>\n        `;\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./loading.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport \"../dimmer/dimmer.component\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-loading\")\nexport class LoadingComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Boolean, reflect: true })\n    dimmed = true\n\n    @property({ type: Boolean, reflect: true })\n    active = false\n\n    constructor() {\n        super();\n    }\n\n    public show(): void {\n        this.active = true;\n    }\n\n    public hide(): void {\n        this.active = false;\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            <div>\n                <div></div>\n                <div></div>\n                <div></div>\n                <div></div>\n            </div>\n            ${ this.dimmed ? html`<fv-dimmer></fv-dimmer>` : \"\"}\n        `;\n    }\n}\n","class KeyFrameEffectServiceClass {\n    constructor() {\n        //Empty\n    }\n\n    addAnimation(id_: string, element_: Element, effects_: Array<{[style: string]: string}>, onFinish_?:(this: Animation, ev: AnimationPlaybackEvent) => unknown, onCancel_?:(this: Animation, ev: AnimationPlaybackEvent) => unknown, onRemove_?:(this: Animation, ev: Event) => unknown) {\n        const effects: Keyframe[] = effects_.map((effect)=>{\n            return Object.assign(effect, { easing: \"ease-in\", composite: \"replace\" }) as Keyframe;\n        });\n        const keyFrame = new KeyframeEffect(element_, effects, { duration: 1000, fill: \"forwards\" });\n        const animation = new Animation(keyFrame, document.timeline);\n        animation.id = id_;\n        animation.onfinish = onFinish_ || null;\n        animation.oncancel = onCancel_ || null;\n        animation.onremove = onRemove_ || null;\n        return animation;\n    }\n}\nexport const KeyFrameEffectService = new KeyFrameEffectServiceClass();","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup, PropertyValues } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport style from \"./modal.component.sass?inline\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport { BaseMaskElement } from \"../base/mask.component\";\nimport { EventHandlerEvent, EventHandlerDispatchEvent } from \"../../../models/event-handler/event.handler.model\";\nimport { ComponentService } from \"../../../utils/component.service\";\nimport { LoadingComponent } from \"../loading/loading.component\";\nimport \"../loading/loading.component\";\nimport { KeyFrameEffectService } from \"../../../utils/key-frame-effect.service\";\nimport { UtilService } from \"../../../utils/util.service\";\nimport {EventFactoryService, WebViewerService} from \"@dh-software/webui-api\";\nimport { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\nimport type { ComponentStateHandlerMap } from \"../../../models/event-handler/component-state-event\";\n\ndeclare global {\n    interface ComponentStates {\n        \"fv-modal:open\":   EventHandlerEventData;\n        \"fv-modal:close\":  EventHandlerEventData | undefined;\n        \"fv-modal:toggle\": EventHandlerEventData;\n    }\n}\n\n@customElement(\"fv-modal\")\nexport class ModalComponent extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    protected hasBackground = false;\n\n    @property({type: Boolean, reflect: true})\n    public active = false;\n\n    @property({type: Boolean, reflect: true})\n    public cancelable = false;\n    public cancelableOnce?: boolean;\n    private cancelableOverwrite: boolean | undefined = undefined;\n    public get Cancelable() {\n        let cancelable = this.cancelable;\n        if (this.cancelableOnce != undefined) {\n            cancelable = this.cancelableOnce;\n        }\n        else if (this.cancelableOverwrite != undefined) {\n            cancelable = this.cancelableOverwrite;\n        }\n        return cancelable;\n\n    }\n\n    @property({type: Boolean, reflect: true, attribute: \"close-on-vplacer-cancel\"})\n    public closeOnVPlacerCancel = false;\n\n    @property({type: Boolean, reflect: true})\n    public dimmed = false;\n\n    @property({type: Boolean})\n    public fade = false;\n\n    @property({type: Boolean, reflect: true})\n    protected fullScreen = false;\n\n    @property({type: String, reflect: true, attribute: \"logo-url\"})\n    public logoUrl = \"\";\n\n    @property({type: Object, reflect: true, attribute: \"on-close-event\"})\n    public onCloseEvent: EventHandlerEvent | undefined = undefined;\n\n    @property({ type: Boolean, attribute: \"show-masks-once\" })\n    public showMasksOnce = false;\n\n    stateHandlers: ComponentStateHandlerMap = {\n        \"fv-modal:open\":   (data_) => { this.openFromState(data_); },\n        \"fv-modal:close\":  (data_) => { this.closeFromState(data_); },\n        \"fv-modal:toggle\": (data_) => { this.toggleFromState(data_); },\n    };\n\n    private openFromState(data_: EventHandlerEventData): void {\n        if (!data_) return;\n        const skipDisabledModal = (data_[\"skip-disabled-modal\"] as boolean) || false;\n        if (skipDisabledModal && this.hasAttribute(\"disabled\")) return;\n        const dimmed = data_.dimmed != undefined ? data_.dimmed as boolean : this.dimmed;\n        const fade = data_.fade != undefined ? data_.fade as boolean : this.fade;\n        const maskQuery = ModalComponent.ReadQueryFromContainer(\n            data_[\"mask-query-container-tag\"] as string,\n            data_[\"mask-query-container-query\"] as string,\n            data_[\"mask-query\"] as string,\n        );\n        this.open(data_[\"mask\"] as string, data_[\"data\"] as { [key: string]: unknown }, maskQuery, dimmed, fade, data_.cancelable as boolean | undefined, data_.force as boolean | undefined);\n    }\n\n    private closeFromState(data_: EventHandlerEventData | undefined): void {\n        const dimmed = data_?.dimmed != undefined ? data_.dimmed as boolean : this.dimmed;\n        const fade = data_?.fade != undefined ? data_.fade as boolean : this.fade;\n        this.hide(dimmed, fade);\n    }\n\n    private toggleFromState(data_: EventHandlerEventData): void {\n        if (!data_ || !data_[\"mask\"]) return;\n        const dimmed = data_.dimmed != undefined ? data_.dimmed as boolean : this.dimmed;\n        const fade = data_.fade != undefined ? data_.fade as boolean : this.fade;\n        const maskQuery = ModalComponent.ReadQueryFromContainer(\n            data_[\"mask-query-container-tag\"] as string,\n            data_[\"mask-query-container-query\"] as string,\n            data_[\"mask-query\"] as string,\n        );\n        this.toggle(data_[\"mask\"] as string, data_[\"data\"] as { [key: string]: unknown }, maskQuery, dimmed, fade, data_.cancelable as boolean | undefined, data_.force as boolean | undefined);\n    }\n\n    private isLoading = false;\n\n    private _fadeIn: Animation;\n\n    private closedModals: string[] = [];\n\n    private async initEventFactoryEvents() {\n        await WebViewerService.IsAppReady;\n        EventFactoryService.VPlacerCancel.register(()=>{\n            if (!this.closeOnVPlacerCancel) return;\n            this.hide();\n        });\n    }\n\n    constructor() {\n        super();\n\n        this.hiddenClasses = [];\n\n        this.addEventListener(\"close-modal\", () => {\n            this.hide();\n        });\n        this.addEventListener(\"logo-url-updated\", (event_: CustomEventInit) => {\n            this.logoUrl = event_.detail;\n        });\n        this._fadeIn = KeyFrameEffectService.addAnimation(\"fadeIn\", this, [\n            {\n                \"visiblity\": \"hidden\", \"opacity\": \"0\"\n            },\n            {\n                \"visiblity\": \"visible\", \"opacity\": \"1\"\n            }], (ev) => {\n            this.style.removeProperty(\"visibility\");\n            this.style.setProperty(\"visibility\", \"visible\");\n        });\n\n        this.initEventFactoryEvents();\n    }\n\n    cancel(userCancel = true) {\n        this.dispatchEvent(new Event(\"close-modal\"));\n        // this.hide();\n        if (userCancel) {\n            const allMasks = this.querySelectorAll(\"[mask][active]\");\n            for (let index = 0; index < allMasks.length; ++index) {\n                const mask = allMasks.item(index);\n                const maskName = mask.getAttribute(\"class\");\n                if (maskName && this.closedModals.indexOf(maskName) === -1) {\n                    this.closedModals.push(maskName);\n                }\n            }\n        }\n    }\n\n\n\n    protected build(content: TemplateResult): TemplateResult<1> {\n        const contentClass = { cancelable: this.cancelable, content: true };\n        const contentContainerClass = {\n            fullScreen: this.fullScreen,\n            \"content-container\": true,\n            \"bg-image\": this.hasBackground\n        };\n        return html`\n            ${this.dimmed ? html`<fv-dimmer></fv-dimmer>` : \"\"}\n            <div class=\"center-container\">\n                <div class=\"${classMap(contentContainerClass)}\">\n                    <fv-loading class=\"loading\"></fv-loading>\n                    <div class=\"modal-header\">\n                        ${this.logoUrl.length > 0 ? html`\n                            <div class=\"manufacturer-logo-container\">\n                                <img class=\"manufacturer-logo\" src=\"${this.logoUrl}\">\n                            </div>` : html``}\n                        ${this.Cancelable ? html`\n                            <div class=\"cancel-button\" @click=\"${this.cancel}\">\n                                <span class=\"close-symbol\"></span>\n                            </div>` : \"\"}\n                    </div>\n                    <div class=\"${classMap(contentClass)}\" part=\"content\">\n                        ${content}\n                    </div>\n                </div>\n            </div>\n            <div class=\"background-blur hidden\"></div>\n        `;\n    }\n\n    public attributeChangedCallback(name: string, _old: string | null, value: string | null): void {\n        super.attributeChangedCallback(name, _old, value);\n\n        if (name === \"active\") {\n            // this.setAttribute(\"hide-element\", !value);\n            this.hideElement = value == undefined ? true : false;\n        }\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        // EventFactoryService?.OpenModal?.register((parameters) => {\n        //     window.dispatchEvent(new EventHandlerDispatchEvent({\n        //         async: false,\n        //         events: [{\n        //             id: \"open-modal\",\n        //             data: Object.assign({}, parameters)\n        //         }]\n        //     }));\n        // });\n    }\n\n    protected render(): TemplateResult<1> {\n        return this.build(html`\n            <slot></slot>`);\n    }\n\n    public setContent(element: Element) {\n        const content = this.shadowRoot ? this.shadowRoot.querySelector(\".content\") : null;\n        if (content) {\n            content.innerHTML = \"\";\n            content.appendChild(element);\n        }\n    }\n\n    public setLoading(visible_?: boolean) {\n        this.isLoading = !!visible_;\n        let loadingComponent: LoadingComponent | null = this.querySelector(\".loading\");\n        let closeSymbol: HTMLSpanElement | null = this.querySelector(\".close-symbol\");\n        if (!closeSymbol && this.shadowRoot) {\n            closeSymbol = this.shadowRoot.querySelector(\".close-symbol\");\n        }\n        if (!loadingComponent && this.shadowRoot) {\n            loadingComponent = this.shadowRoot.querySelector(\".loading\");\n        }\n        if (loadingComponent) {\n            if (visible_) {\n                if (closeSymbol) closeSymbol.classList.add(\"loading\");\n                loadingComponent.show();\n            }\n            else {\n                if (closeSymbol) closeSymbol.classList.remove(\"loading\");\n                loadingComponent.hide();\n            }\n        }\n    }\n\n\n    private getMask(mask_: string): BaseMaskElement | undefined {\n        const allMasks = this.querySelectorAll(\"[mask-data]\");\n        for (let index = 0; index < allMasks.length; ++index) {\n            const mask = allMasks.item(index);\n            if (mask instanceof BaseMaskElement && mask.mask === mask_) {\n                return mask as BaseMaskElement;\n            }\n        }\n        return undefined;\n    }\n\n    public selectMask(mask_: string, maskData_?: { [key: string]: unknown }, maskQuery_?: string): boolean {\n        const allMasks = this.querySelectorAll(\"[mask-data]\");\n        allMasks.forEach((mask) => {\n            (mask as BaseMaskElement).hide();\n        });\n\n        let result = false;\n        allMasks.forEach((mask) => {\n            if (mask instanceof BaseMaskElement && mask.mask !== mask_) return;\n\n            const query: string = maskQuery_ ? maskQuery_ : \"*\";\n            if (!UtilService.checkCssQuerySyntax(query) || !mask.matches(query)) return;\n\n            (mask as BaseMaskElement).maskData = maskData_ ? maskData_ : (mask as BaseMaskElement).maskData;\n            (mask as BaseMaskElement).show();\n            result = true;\n        });\n        return result;\n    }\n\n    public open(mask_: string, maskData_: { [key: string]: unknown }, maskQuery_: string | undefined, dimmed_: boolean = this.dimmed, fade_ = this.fade, cancelableOverwrite_: boolean | undefined = undefined, force_: boolean | undefined = undefined) {\n        if (this.showMasksOnce && maskQuery_ && !force_) {\n            const className = maskQuery_.split(\".\").join(\"\");\n            if (className && this.closedModals.indexOf(className) > -1) {\n                this.cancel(false);\n                return;\n            }\n        }\n        if (mask_) {\n            if (this.selectMask(mask_, maskData_, maskQuery_)) {\n                this.cancelableOverwrite = cancelableOverwrite_;\n                this.show(dimmed_, fade_); // only show if mask exists\n            }\n        }\n        else {\n            this.cancelableOverwrite = cancelableOverwrite_;\n            this.show(dimmed_, fade_);\n        }\n    }\n\n    public toggle(mask_: string, maskData_: { [key: string]: unknown }, maskQuery_: string | undefined, dimmed_: boolean = this.dimmed, fade_ = this.fade, cancelableOverwrite_: boolean | undefined = undefined, force_: boolean | undefined = undefined) {\n        if (this.active) {\n            const mask = this.getMask(mask_);\n            if (mask && mask.active) {\n                this.hide(dimmed_, fade_);\n                return;\n            }\n        }\n        this.open(mask_, maskData_, maskQuery_, dimmed_, fade_, cancelableOverwrite_, force_);\n    }\n\n    public show(dimmed: boolean = this.dimmed, fade = this.fade): void {\n        if (!this.active) {\n            this.classList.remove(\"fade-out\");\n            if (fade) {\n                this.classList.add(\"fade-in\");\n            }\n            this.dimmed = dimmed;\n            this.active = true;\n        }\n        this.requestUpdate();\n    }\n\n    public hide(dimmed: boolean = this.dimmed, fade = this.fade) {\n        if (this.active) {\n            if (this.onCloseEvent) {\n                window.dispatchEvent(new EventHandlerDispatchEvent({\n                    async: false,\n                    events: [{\n                        id: this.onCloseEvent.id,\n                        data: this.onCloseEvent.data ? this.onCloseEvent.data : {}\n                    }]\n                }));\n            }\n            this.cancelableOverwrite = undefined;\n            this.cancelableOnce = undefined;\n\n            this.classList.remove(\"fade-in\");\n            if (fade) {\n                this.classList.add(\"fade-out\");\n            }\n            this.dimmed = dimmed;\n            this.active = false;\n            this.dispatchEvent(new CustomEvent(\"onHide\", {}));\n        }\n    }\n\n    private static ReadQueryFromContainer(tag: string | undefined, query: string | undefined, defaultReturn: string): string {\n        if (tag == undefined || query == undefined) return defaultReturn;\n\n        const container = ComponentService.find(tag, query);\n        if (container == undefined) return defaultReturn;\n\n        const maskQuery = container.getAttribute(\"modal-mask-query\");\n        if (maskQuery && maskQuery.length > 0) return maskQuery;\n        return defaultReturn;\n    }\n\n    public static openModal(data_: EventHandlerEventData) {\n        if (data_) {\n            const query: string | undefined = data_.query ? data_.query as string : undefined;\n            const modal = ComponentService.find((data_.tag as string) || \"fv-modal\", query) as ModalComponent;\n            if (modal) {\n                const skipDisabledModal = data_[\"skip-disabled-modal\"] as boolean || false;\n                if (skipDisabledModal && modal.hasAttribute(\"disabled\")) {\n                    return;\n                }\n\n                const dimmed = data_.dimmed != undefined ? data_.dimmed as boolean : modal.dimmed;\n                const fade = data_.fade != undefined ? data_.fade as boolean : modal.fade;\n\n                const query = ModalComponent.ReadQueryFromContainer(data_[\"mask-query-container-tag\"] as string, data_[\"mask-query-container-query\"] as string, data_[\"mask-query\"] as string);\n                modal.open(data_[\"mask\"] as string, data_[\"data\"] as { [key:string]: unknown }, query, dimmed, fade, data_.cancelable as boolean | undefined, data_.force as boolean | undefined);\n            }\n        }\n    }\n\n    public static closeModal(data_?: EventHandlerEventData) {\n        if (data_) {\n            const query: string | undefined = data_.query ? data_.query as string : undefined;\n            const modal: ModalComponent = ComponentService.find((data_.tag as string) || \"fv-modal\", query) as ModalComponent;\n            if (modal) {\n                const dimmed = data_.dimmed != undefined ? data_.dimmed as boolean : modal.dimmed;\n                const fade = data_.fade != undefined ? data_.fade as boolean : modal.fade;\n                modal.hide(dimmed, fade);\n            }\n        }\n    }\n\n    public static toggleModal(data_: EventHandlerEventData) {\n        if (data_) {\n            const query: string | undefined = data_.query ? data_.query as string : undefined;\n            const modal = ComponentService.find((data_.tag as string) || \"fv-modal\", query) as ModalComponent;\n            if (modal && data_[\"mask\"]) {\n                const dimmed = data_.dimmed != undefined ? data_.dimmed as boolean : modal.dimmed;\n                const fade = data_.fade != undefined ? data_.fade as boolean : modal.fade;\n\n                const query = ModalComponent.ReadQueryFromContainer(data_[\"mask-query-container-tag\"] as string, data_[\"mask-query-container-query\"] as string, data_[\"mask-query\"] as string);\n                modal.toggle(data_[\"mask\"] as string, data_[\"data\"] as { [key:string]: unknown }, query, dimmed, fade, data_.cancelable as boolean | undefined, data_.force as boolean | undefined);\n            }\n        }\n    }\n}\n","import {css, CSSResultGroup, html, PropertyDeclaration, PropertyValues, TemplateResult, unsafeCSS,} from \"lit\";\r\nimport {BaseElement} from \"./base.component\";\r\nimport {property, state} from \"lit/decorators.js\";\r\nimport style from \"./mask.component.sass?inline\";\r\nimport {ModalComponent} from \"../modal/modal.component\";\r\n\r\n\r\nexport interface MaskElementData {\r\n    [key: string]: unknown\r\n}\r\n\r\nexport class BaseMaskElement extends BaseElement {\r\n    static styles: CSSResultGroup[] = [\r\n        super.styles || [],\r\n        css`${unsafeCSS(style)}`\r\n    ];\r\n\r\n    protected _modal: ModalComponent | undefined;\r\n\r\n    @property({type: Boolean, reflect: true})\r\n    public active = false\r\n\r\n    @property({type: String, reflect: true})\r\n    public mask : string = \"\";\r\n\r\n    @property()\r\n    public configMaskData?: MaskElementData;\r\n\r\n    @property({type: Object, reflect: true, attribute: \"mask-data\"})\r\n    public maskData: MaskElementData = {};\r\n\r\n    public get Modal(): ModalComponent | undefined {\r\n        return this._modal;\r\n    }\r\n\r\n    constructor() {\r\n        super();\r\n    }\r\n\r\n    public show(showModal_?: boolean): void {\r\n        this.active = true;\r\n    }\r\n\r\n    public hide(closeModal = false): void {\r\n        this.active = false;\r\n        this._modal?.hide();\r\n    }\r\n\r\n    protected build(content?: TemplateResult): TemplateResult<1> {\r\n        return this.active ? html`${content ? content : html``}` : html``;\r\n    }\r\n\r\n    willUpdate(_changedProperties: PropertyValues) {\r\n        if(this.parentNode instanceof ModalComponent) {\r\n            this._modal = <ModalComponent>this.parentNode\r\n        }\r\n        super.willUpdate(_changedProperties);\r\n    }\r\n\r\n    protected render(): TemplateResult<1> {\r\n        return this.build(html`<slot></slot>`);\r\n    }\r\n\r\n}\r\n","import { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { BaseMaskElement } from \"../../../base/mask.component\";\nimport { ModalComponent } from \"../../modal.component\";\nimport { LocaleService } from \"@dh-software/webui-api\";\n\nimport style from \"./information.mask.component.sass?inline\";\n\n\n\n@customElement(\"fv-information-mask\")\nexport class InformationMaskComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    public mask = \"information\";\n\n    @property({type: Boolean, reflect: true, attribute: \"acknowledge-button\"})\n    public acknowledgeButton = false;\n\n    @property({type: String, reflect: true, attribute: \"information-text\"})\n    public informationTextDefault = \"\";\n\n    @property({type: String, reflect: true, attribute: \"heading-text\"})\n    public headingTextDefault = \"\";\n\n    private collectTexts(): string[] {\n        if (this.maskData[\"information-text\"] != undefined) {\n            if (Array.isArray(this.maskData[\"information-text\"])) {\n                const arr: string[] = [];\n                for (let index = 0; index < this.maskData[\"information-text\"].length; ++index) {\n                    arr.push(LocaleService.translate(this.maskData[\"information-text\"][index], this.maskData[\"information-text\"][index]));\n                }\n                return arr;\n            }\n            if (typeof this.maskData[\"information-text\"] === \"string\") {\n                return [LocaleService.translate(this.maskData[\"information-text\"], this.maskData[\"information-text\"])];\n            }\n        }\n        return [LocaleService.translate(this.informationTextDefault, this.informationTextDefault)];\n    }\n\n    private get informationText(): TemplateResult<1> {\n        const texts = this.collectTexts();\n        if (texts.length === 1) {\n            return html`<div class=\"text\">${texts[0]}</div>`;\n        }\n        return html`<div class=\"text list\">${texts.map((text: string) => {\n            return html`<div>${text}</div>`;\n        })}</div>`;\n\n        // if (this.maskData && this.maskData[\"information-text\"]) {\n        //     if (Array.isArray(this.maskData[\"information-text\"])) {\n        //         return html`<div class=\"text list\">${this.maskData[\"information-text\"].map((text: string) => {\n        //             return html`<div i18n=\"${text}\">${text}</div>`;\n        //         })}</div>`;\n        //     }\n        //     return html`<div class=\"text\" i18n=\"${this.maskData[\"information-text\"] as string}\">${this.maskData[\"information-text\"] as string}</div>`;\n        // }\n\n        // return html`<div class=\"text\" i18n=\"${this.informationTextDefault}\">${this.informationTextDefault}</div>`;\n    }\n    private get headingText(): string {\n        if (this.maskData && this.maskData[\"heading-text\"]) return this.maskData[\"heading-text\"] as string;\n        return this.headingTextDefault;\n    }\n\n    constructor() {\n        super();\n    }\n\n    protected acknowledge(e_: Event) {\n        const modal = this.parentElement as ModalComponent;\n        if (modal && modal.hide) {\n            modal.hide();\n        }\n\n        e_.preventDefault();\n        e_.stopImmediatePropagation();\n        e_.stopPropagation();\n    }\n\n    protected render(): TemplateResult<1> {\n        const acknowledgeButton: TemplateResult<1> = this.acknowledgeButton ? html`<div @click=\"${this.acknowledge}\" class=\"button\" i18n=\"information.mask.ok.button\"></div>` : html``;\n        return this.build(html`\n            <div class=\"container\">\n                ${this.headingText.length > 0 ? html`<div class=\"heading\" i18n=\"${this.headingText}\">${this.headingText}</div>` : html``}\n                ${this.informationText}\n                <div class=\"buttons-container\">\n                    ${acknowledgeButton}\n                </div>\n            </div>\n        `);\n    }\n\n}\n","import { css, html, unsafeCSS, TemplateResult, nothing } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport style from \"./price-overview.component.sass?inline\";\nimport { PriceListComponent } from \"../price-list\";\nimport { ComponentService } from \"../../../utils/component.service\";\nimport { InformationMaskComponent } from \"../../standard/modal/masks/information/information.mask.component\";\nimport { IPriceData } from \"@dh-software/webui-types\";\nimport { CommunicationMessageService, WebViewerService } from \"@dh-software/webui-api\";\n\n\n@customElement(\"fv-price-overview\")\nexport class PriceOverviewComponent extends PriceListComponent {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private data: IPriceData | undefined = undefined;\n    private articlesInSceneCount: number | undefined = undefined;\n\n    @property({ type: Boolean, reflect: true })\n    withoutContainer = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"use-additional-empty-check\" })\n    useAdditionalEmptyCheck = false;\n\n    @property({ type: Object, reflect: false, attribute: \"webshop-link-info\" })\n    webshopLinkInfo: { txt: string, \"information-mask-query\": string } = {\n        txt: \"\",\n        \"information-mask-query\": \"\"\n    };\n\n    private emptySceneDisableAdditionalEmptyCheck = false;\n\n    constructor() {\n        super();\n\n        WebViewerService.on(\"furnview.changePrice\", async (data_: unknown): Promise<void> => {\n            this.data = data_ as IPriceData;\n            const plannedArticles = await CommunicationMessageService.getPlannedArticles();\n            this.emptySceneDisableAdditionalEmptyCheck = (window.g_configuration.enable_app_connection_data as boolean);\n            this.articlesInSceneCount = plannedArticles.length;\n            this.webshopLink = await CommunicationMessageService.getWebshopLink();\n\n            if (this.offsetParent === null || this.classList.contains(\"hidden\")) return;\n            this.changePrice();\n        });\n\n        this.addHideStateUpdatedEventListener((value: boolean) => {\n            if (value == false) {\n                this.changePrice();\n            }\n        });\n    }\n\n    public isEmpty(): boolean {\n        if (this.useAdditionalEmptyCheck) {\n            if (this.emptySceneDisableAdditionalEmptyCheck) {\n                if (this.articlesInSceneCount == undefined || this.articlesInSceneCount < 1) {\n                    return super.isEmpty();\n                }\n            }\n            if (this.data == undefined) {\n                return true;\n            }\n            if (this.data.Articles == undefined || this.data.Articles.length < 1) {\n                return true;\n            }\n        }\n        return super.isEmpty();\n    }\n\n    private changePrice() {\n        if (this.data != undefined) {\n            this.preparePriceData(this.data);\n        }\n    }\n\n    private openWebshopInfoInformationMask() {\n        const txt = this.webshopLinkInfo.txt;\n        const query = this.webshopLinkInfo[\"information-mask-query\"];\n        if (txt == undefined || txt.length < 1) {\n            return;\n        }\n        if (query == undefined || query.length < 1) {\n            return;\n        }\n\n        const infoValues = [txt];\n        const elements = ComponentService.findAll(\"fv-information-mask\", query);\n        for (const element of elements) {\n            if (element instanceof InformationMaskComponent) {\n                if (element.Modal == undefined) {\n                    continue;\n                }\n\n                const currentInfo = element.maskData[\"information-text\"] as string[] | undefined;\n                const isSameInfo = element.Modal.hideElement == false && element.active && Array.isArray(currentInfo) && currentInfo.length === infoValues.length && currentInfo.every((t: string, i: number) => t === infoValues[i]);\n                if (isSameInfo) {\n                    element.hide();\n                }\n                else {\n                    element.Modal.open(element.mask, { \"information-text\": infoValues }, query);\n                }\n            }\n        }\n    }\n    private get webShopLinkInfo(): TemplateResult<1> {\n        if (this.webshopLink === undefined || this.webshopLinkInfo == undefined || this.webshopLinkInfo.txt == undefined || this.webshopLinkInfo.txt.length < 1 || this.webshopLinkInfo[\"information-mask-query\"] == undefined || this.webshopLinkInfo[\"information-mask-query\"].length < 1) {\n            this.classList.remove(\"showing-webshop-link-info-button\");\n            return html``;\n        }\n        this.classList.add(\"showing-webshop-link-info-button\");\n        return html`<fv-button @click=\"${this.openWebshopInfoInformationMask}\" class=\"webshop-link-info\" icon=\"fv-icon-question-mark\"></fv-button>`;\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            ${this.webShopLinkInfo}\n            ${!this.withoutContainer ? html`\n\n                <div class=\"title-container\">\n                    <slot name=\"title\"></slot>\n                </div>\n                <div class=\"overview-container\">\n                    <slot name=\"overview\"></slot>\n                </div>\n\n            ` : nothing}\n            ${super.render()}\n        `;\n    }\n}\n","import { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./price-display.component.sass?inline\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\nexport interface PriceDisplayData {\n    value?: number | undefined,\n    uvp?: number | undefined,\n    overrideCurrency: string | undefined,\n    \"whole-suffix\"?: string | undefined,\n    \"currency-before\"?: boolean\n}\n\n\n@customElement(\"fv-price-display\")\nexport class PriceDisplayComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Object, reflect: true, attribute: \"price\" })\n    public price: PriceDisplayData = {\n        value: undefined,\n        uvp: undefined,\n        overrideCurrency: undefined,\n        \"whole-suffix\": \"\",\n        \"currency-before\": false,\n    };\n\n    private currency = \"EUR\";\n    private updataCurrency() {\n        CommunicationMessageService.getCurrency().then((value)=>{\n            if (this.currency != value) {\n                this.currency = value;\n                this.requestUpdate();\n            }\n        });\n    }\n\n    constructor() {\n        super();\n    }\n\n    private get display_currency(): string {\n        this.updataCurrency();\n        if(this.price.overrideCurrency) {\n            return this.price.overrideCurrency;\n        }\n        return this.currency;\n    }\n\n    private get wholeSuffix(): TemplateResult<1> {\n        if (this.price[\"whole-suffix\"] && this.price[\"whole-suffix\"].length > 0) {\n            return html`${this.price[\"whole-suffix\"]}`;\n        }\n        return html``;\n    }\n    private buildPriceLine(price: number | undefined, priceClass: string, prefixTxtId: string | undefined) {\n        if (price != undefined) {\n            const isInt = Number.isInteger(price);\n            return html`\n                <div class=\"${priceClass}\" part=\"${priceClass}\">\n                    ${prefixTxtId && prefixTxtId.length > 0 ? html`<span class=\"prefix-txt\" i18n=\"${prefixTxtId}\">${prefixTxtId}</span>` : html``}\n                    ${this.price[\"currency-before\"] ? html`<span class=\"currency-before\">${this.display_currency}</span>` : html``}\n                    <span>${price.toFixed(isInt ? 0 : 2).replace(\".\", \",\")}${isInt ? this.wholeSuffix : html``}</span>\n                    ${this.price[\"currency-before\"] ? html`` : html`<span class=\"currency-after\">${this.display_currency}</span>`}\n                </div>\n            `;\n        }\n        return html``;\n    }\n\n    protected render(): TemplateResult<1> {\n        return html`\n            ${this.buildPriceLine(this.price.value, `price ${this.price.uvp ? \"price-cut\" : \"\"}`, \"\")}\n            ${this.buildPriceLine(this.price.uvp, \"uvp-price\", \"price-uvp-txt\")}\n        `;\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport style from \"./flex-container.component.sass?inline\";\nimport {StepChildComponent} from \"../../base/step-child.component\";\n\n\n@customElement(\"fv-flex-container\")\nexport class FlexContainerComponent extends StepChildComponent {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n    }\n\n    render(): TemplateResult<1> {\n        return html`<slot></slot>`;\n    }\n}\n","import {css, html, nothing, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport {styleMap} from \"lit/directives/style-map.js\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {event, EventRef} from \"@dh-software/lit-extensions\";\nimport {BaseElement} from \"../base/base.component\";\nimport {LocaleService} from \"@dh-software/webui-api\";\nimport style from \"./tab-control.component.sass?inline\";\nimport \"../button/button.component\";\nimport \"../arrange/flex-container/flex-container.component\";\nimport {EventHandlerEvent} from \"../../../models/event-handler/event.handler.model\";\nimport {EventHandlerService} from \"../../../utils/event.handler.service\";\n\nexport interface TabDefinition {\n    key: string;\n    text?: string;\n    icon?: string;\n    classes?: string[];\n    \"active-classes\"?: string[];\n    events?: EventHandlerEvent[];\n    styleVars?: { [key: string]: string };\n}\n\nexport interface TabChangedEventDetail {\n    key: string;\n    previous: string | null;\n}\n\n@customElement(\"fv-tab-control\")\nexport class TabControlComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`,\n    ];\n\n    @property({type: Array, reflect: false, attribute: \"tabs\"})\n    public tabs: TabDefinition[] = [];\n\n    @property({type: String, reflect: true, attribute: \"active-key\"})\n    public activeKey = \"\";\n\n    @event({bubbles: true, composed: true}, \"tabChanged\")\n    readonly tabChangedEvent!: EventRef<TabChangedEventDetail>;\n\n    protected willUpdate(changedProps: PropertyValues): void {\n        super.willUpdate?.(changedProps);\n        if (!this.activeKey && this.tabs.length > 0) {\n            this.activeKey = this.tabs[0].key;\n        }\n    }\n\n    protected updated(changedProps: PropertyValues): void {\n        super.updated?.(changedProps);\n        if (changedProps.has(\"activeKey\")) {\n            const previous = (changedProps.get(\"activeKey\") as string | undefined) ?? null;\n            if (previous !== this.activeKey) {\n                this.tabChangedEvent.dispatch({key: this.activeKey, previous});\n            }\n        }\n    }\n\n    private selectTab(key: string): void {\n        if (this.activeKey === key) return;\n        this.activeKey = key;\n    }\n\n    private buttonClasses(tab: TabDefinition, active: boolean): string {\n        const parts = [\"tab-button\", ...(tab.classes ?? [])];\n        if (active) parts.push(\"active\", ...(tab[\"active-classes\"] ?? []));\n        return parts.join(\" \");\n    }\n\n    private buildButton(tab: TabDefinition): TemplateResult<1> {\n        const active = tab.key === this.activeKey;\n\n        const onSelect = ({key, events}: TabDefinition) => {\n            this.selectTab(key);\n            if (events && events.length > 0) {\n                EventHandlerService.dispatchEventList(events, false);\n            }\n        }\n\n        return html`\n            <fv-button\n                    class=\"${this.buttonClasses(tab, active)}\"\n                    style=\"${styleMap(tab.styleVars || {})}\"\n                    part=\"${active ? \"button button-active\" : \"button\"}\"\n                    data-tab-key=\"${tab.key}\"\n                    i18n=\"${tab.text}\"\n                    icon=\"${tab.icon ?? \"\"}\"\n                    @click=\"${() => onSelect(tab)}\"\n            >\n            </fv-button>\n        `;\n    }\n\n    private buildContentSlot(tab: TabDefinition): TemplateResult<1> {\n        const active = tab.key === this.activeKey;\n        return html`\n            <slot\n                    name=\"${tab.key}\"\n                    part=\"${active ? \"content-slot content-slot-active\" : \"content-slot\"}\"\n                    class=\"${classMap({\"tab-content-slot\": true, active, hidden: !active})}\"\n            ></slot>\n        `;\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            <fv-flex-container class=\"tab-buttons\" part=\"buttons\">\n                ${this.tabs.map(tab => this.buildButton(tab))}\n            </fv-flex-container>\n            <div class=\"tab-content\" part=\"content\">\n                ${this.tabs.map(tab => this.buildContentSlot(tab))}\n            </div>\n        `;\n    }\n}\n","import { css, html, PropertyValueMap, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./label.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-label\")\nexport class LabelComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true, attribute: \"text-tag\" })\n    private _textTag?: string;\n\n    @query(\"slot\")\n    private _labelSlot?: HTMLSlotElement\n\n    constructor() {\n        super();\n    }\n\n    render(): TemplateResult<1> {\n        if (this._textTag) {\n            return html`${Object.assign(document.createElement(this._textTag), { innerHTML: \"<slot></slot>\" })}`;\n        }\n        return html`\n            <slot></slot>\n        `;\n    }\n\n    protected updated(_changedProperties: PropertyValues): void {\n        super.updated(_changedProperties);\n        // this.computeSize();\n    }\n\n    attributeChangedCallback(name: string, _old: string | null, value: string | null) {\n        // if (name.includes(\"i18n\")) {\n        //     this.computeSize();\n        // }\n        super.attributeChangedCallback(name, _old, value);\n    }\n\n    private computeSize() {\n        this.style.minWidth = `${this.getBoldWidth()}px`;\n    }\n\n    private getBoldWidth(weight = \"bold\") {\n        let boldWidth = 0;\n        const contentElement = this._labelSlot?.assignedNodes()?.[0] || undefined\n        if (contentElement) {\n            const content = contentElement.textContent || \"\";\n            const tempSpan = document.createElement(\"span\");\n            tempSpan.style.visibility = \"hidden\";\n            tempSpan.style.whiteSpace = \"nowrap\";\n            tempSpan.style.fontWeight = weight;\n            tempSpan.innerHTML = content;\n\n            this.appendChild(tempSpan);\n            boldWidth = tempSpan.offsetWidth;\n            this.removeChild(tempSpan);\n        }\n        return boldWidth;\n    }\n\n}\n","import { BaseElement } from \"../base/base.component\";\nimport style from \"./dimension-change.component.sass?inline\";\nimport { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { DhInput } from \"@dh-software/dh-components\";\nimport { IDimChangeInfo } from \"@dh-software/webui-types\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\nimport { DimensionHelper } from \"../../../utils/dimension-helper.class\";\n\nexport interface IAxisData {\n    key: string;\n    hint: string;\n    label: string;\n\n    min: number;\n    max: number;\n    decimals: number;\n\n    value: number;\n    values?: number[];\n\n    editable: boolean;\n    infoTexts: string[];\n}\n\nconst AXES: Array<{ key: string; label: string; hint: string; index: number }> = [\n    {\n        key: \"width\",\n        hint: \"fv.dimchange.description.short.width\",\n        label: \"fv.dimchange.width\",\n        index: 0\n    },\n    {\n        key: \"height\",\n        hint: \"fv.dimchange.description.short.height\",\n        label: \"fv.dimchange.height\",\n        index: 2\n    },\n    {\n        key: \"depth\",\n        hint: \"fv.dimchange.description.short.depth\",\n        label: \"fv.dimchange.depth\",\n        index: 1\n    }\n];\n\n@customElement(\"fv-dimension-change\")\nexport class DimensionChangeComponent extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Object })\n    public dimData?: IDimChangeInfo;\n\n    @property({ type: Array })\n    public axes: IAxisData[] = [];\n\n    @state()\n    private unit = \"cm\";\n\n    constructor() {\n        super();\n    }\n\n    protected willUpdate(changedProperties: PropertyValues): void {\n        if (changedProperties.has(\"dimData\")) {\n            this.initDimData(this.dimData);\n        }\n        super.willUpdate(changedProperties);\n    }\n\n    private async cancel(): Promise<void> {\n        this.dispatchEvent(new CustomEvent(\"dimchange-cancel\", { bubbles: true, composed: true }));\n    }\n\n    private async confirm(): Promise<void> {\n        const scale = this.dimData?.dimScale ?? 1;\n        const toMm = (key_: string): number => {\n            const axis = this.axes.find(axis_ => axis_.key === key_);\n            return axis ? Math.round(axis.value / scale) : 0;\n        };\n        const width = toMm(\"width\");\n        const depth = toMm(\"depth\");\n        const height = toMm(\"height\");\n\n        await CommunicationMessageService.setLoDimensionExt(width, height, depth, []);\n        this.dispatchEvent(new CustomEvent(\"dimchange-confirm\", { bubbles: true, composed: true }));\n    }\n\n    private roundValue(value_: number, decimals_: number): number {\n        const factor = Math.pow(10, Math.max(0, decimals_));\n        return Math.round(value_ * factor) / factor;\n    }\n\n    private formatValue(value_: number, decimals_: number): string {\n        return value_.toFixed(Math.max(0, decimals_)).replace(\".\", \",\");\n    }\n\n    private isAdjustable(axis_: IAxisData): boolean {\n        return axis_.values ? axis_.values.length > 1 : axis_.max > axis_.min;\n    }\n\n    private isInputReadonly(axis_: IAxisData): boolean {\n        return !axis_.editable || !this.isAdjustable(axis_);\n    }\n\n    private isIndexSlider(axis_: IAxisData): boolean {\n        return !!axis_.values && !axis_.editable;\n    }\n\n    private valueStep(axis_: IAxisData): number {\n        return Math.pow(10, -axis_.decimals);\n    }\n\n    private sliderConfig(axis_: IAxisData): { min: number; max: number; step: number; value: number } {\n        if (this.isIndexSlider(axis_)) {\n            return { min: 0, max: Math.max(1, axis_.values!.length - 1), step: 1, value: this.nearestIndex(axis_.values!, axis_.value) };\n        }\n        return { min: axis_.min, max: axis_.max, step: this.valueStep(axis_), value: axis_.value };\n    }\n\n    private initDimData(info_?: IDimChangeInfo): void {\n        if (!info_) {\n            return;\n        }\n        this.unit = DimensionHelper.getUnitByDimScale(info_.dimScale) ?? this.unit;\n        this.axes = this.buildAxes(info_);\n    }\n\n    private buildAxes(info_: IDimChangeInfo): IAxisData[] {\n        const scale = info_.dimScale;\n        const decimals = info_.decimalPlaces > -1 ? info_.decimalPlaces : 1;\n        const toDisplay = (mm_: number): number => this.roundValue(mm_ * scale, decimals);\n\n        return AXES.map(axis_ => {\n            const idx = axis_.index;\n            const std = info_.stdDim[idx];\n            const onlyStd = std.onlyStd === 1;\n            const hasStdValues = std.dims.length > 0;\n\n            return {\n                key: axis_.key,\n                hint: axis_.hint,\n                label: axis_.label,\n\n                min: toDisplay(info_.min[idx]),\n                max: toDisplay(info_.max[idx]),\n                decimals: decimals,\n\n                value: toDisplay(info_.dim[idx]),\n                values: hasStdValues ? std.dims.map(toDisplay) : undefined,\n\n                editable: !onlyStd,\n                infoTexts: [...info_.infoTexts[idx]],\n            };\n        });\n    }\n\n    private nearestIndex(values_: number[], value_: number): number {\n        let nearest = 0;\n        let nearestDistance = Number.POSITIVE_INFINITY;\n        values_.forEach((candidate_, index_) => {\n            const distance = Math.abs(candidate_ - value_);\n            if (distance < nearestDistance) {\n                nearestDistance = distance;\n                nearest = index_;\n            }\n        });\n        return nearest;\n    }\n\n    private updateAxis(axisIndex_: number, patch_: Partial<IAxisData>) {\n        this.axes = this.axes.map((axis_, index_) =>\n            index_ === axisIndex_ ? { ...axis_, ...patch_ } : axis_\n        );\n    }\n\n    private onSliderInput(axisIndex_: number, e_: Event) {\n        const axis = this.axes[axisIndex_];\n        const input = e_.target as DhInput;\n        const raw = Number(input.value);\n        if (Number.isNaN(raw)) return;\n\n        let value: number;\n        if (this.isIndexSlider(axis)) {\n            value = axis.values![Math.round(raw)];\n        } else if (axis.values) {\n            value = axis.values[this.nearestIndex(axis.values, raw)];\n            input.value = value.toString();\n        } else {\n            value = this.roundValue(raw, axis.decimals);\n        }\n\n        if (value === axis.value) return;\n        this.updateAxis(axisIndex_, { value });\n    }\n\n    private onInputCommit(axisIndex_: number, e_: Event) {\n        const axis = this.axes[axisIndex_];\n        if (this.isInputReadonly(axis)) {\n            return;\n        }\n\n        const input = e_.target as DhInput;\n        const raw = parseFloat(input.value.replace(\",\", \".\"));\n        if (Number.isNaN(raw)) {\n            input.value = axis.value.toFixed(axis.decimals);\n            return;\n        }\n\n        const value = this.roundValue(Math.max(axis.min, Math.min(axis.max, raw)), axis.decimals);\n        input.value = value.toFixed(axis.decimals);\n        if (value === axis.value) {\n            return;\n        }\n        this.updateAxis(axisIndex_, { value });\n    }\n\n    private onInputKeydown(axisIndex_: number, e_: KeyboardEvent) {\n        if (e_.key === \"Enter\") {\n            this.onInputCommit(axisIndex_, e_);\n        }\n    }\n\n    private renderAxis(axis_: IAxisData, index_: number): TemplateResult<1> {\n        const adjustable = this.isAdjustable(axis_);\n        const inputReadonly = this.isInputReadonly(axis_);\n        const slider = this.sliderConfig(axis_);\n\n        return html`\n            <div class=\"axis ${adjustable ? \"adjustable\" : \"fixed\"}\">\n                <div class=\"axis-grid\">\n                    <fv-label class=\"axis-label\" i18n=\"${axis_.label}\">${axis_.key}</fv-label>\n\n                    <dh-input\n                        class=\"axis-slider\"\n                        type=\"range\"\n                        track-fill\n                        min=\"${slider.min}\"\n                        max=\"${slider.max}\"\n                        step=\"${slider.step}\"\n                        .value=\"${slider.value.toString()}\"\n                        ?disabled=\"${!adjustable}\"\n                        @input=\"${(e_: Event) => this.onSliderInput(index_, e_)}\">\n                    </dh-input>\n\n                    <div class=\"axis-input\">\n                        <dh-input\n                            type=\"number\"\n                            i18n-placeholder=\"${axis_.hint}\"\n                            min=\"${axis_.min}\"\n                            max=\"${axis_.max}\"\n                            step=\"${this.valueStep(axis_)}\"\n                            .value=\"${axis_.value.toFixed(axis_.decimals)}\"\n                            .readOnly=\"${inputReadonly}\"\n                            @keydown=\"${(e_: KeyboardEvent) => this.onInputKeydown(index_, e_)}\"\n                            @inputfocusout=\"${(e_: Event) => this.onInputCommit(index_, e_)}\">\n                        </dh-input>\n                    </div>\n\n                    <div class=\"axis-bounds\">\n                        <div class=\"bound\">\n                            <fv-label class=\"bound-label\" i18n=\"fv.dimchange.minimal\"></fv-label>\n                            <fv-label class=\"bound-value\">${this.formatValue(axis_.min, axis_.decimals)} ${this.unit}</fv-label>\n                        </div>\n                        <div class=\"bound max\">\n                            <fv-label class=\"bound-label\" i18n=\"fv.dimchange.maximal\"></fv-label>\n                            <fv-label class=\"bound-value\">${this.formatValue(axis_.max, axis_.decimals)} ${this.unit}</fv-label>\n                        </div>\n                    </div>\n                </div>\n\n                ${axis_.infoTexts.length > 0 ? html`\n                    <div class=\"axis-info\">\n                        ${axis_.infoTexts.map(text_ => html`<fv-label>${text_}</fv-label>`)}\n                    </div>\n                ` : html``}\n\n            </div>\n        `;\n    }\n\n    protected render(): TemplateResult<1> {\n        return html`\n            <div class=\"container\">\n                <fv-label class=\"title\" i18n=\"fv.dimchange.caption\"></fv-label>\n                ${this.axes.map((axis_, index_) => html`\n                    ${index_ > 0 ? html`<div class=\"axis-divider\"></div>` : html``}\n                    ${this.renderAxis(axis_, index_)}\n                `)}\n                <div class=\"footer\">\n                    <dh-button class=\"cancel\" variant=\"outlined\" @click=\"${this.cancel}\" i18n-buttontext=\"1939\"></dh-button>\n                    <dh-button class=\"confirm\" variant=\"filled\" @click=\"${this.confirm}\" i18n-buttontext=\"fv.dimchange.confirm\"></dh-button>\n                </div>\n            </div>\n        `;\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport style from \"./basic.slider.component.sass?inline\";\n\n@customElement(\"fv-basic-slider\")\nexport class BasicSliderComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Number, reflect: true })\n    public min = 0;\n\n    @property({ type: Number, reflect: true })\n    public max = 100;\n\n    @property({ type: Number, reflect: true })\n    public step = 1;\n\n    @property({ type: Number, reflect: true })\n    public value = 0;\n\n    private onInput(e: Event) {\n        e.stopPropagation();\n        const input = e.target as HTMLInputElement;\n        this.value = parseFloat(input.value);\n        this.dispatchEvent(new CustomEvent<{ value: number }>(\"slider-input\", {\n            detail: { value: this.value },\n            bubbles: true,\n            composed: true\n        }));\n    }\n\n    private onChange(e: Event) {\n        e.stopPropagation();\n        const input = e.target as HTMLInputElement;\n        this.value = parseFloat(input.value);\n        this.dispatchEvent(new CustomEvent<{ value: number }>(\"slider-change\", {\n            detail: { value: this.value },\n            bubbles: true,\n            composed: true\n        }));\n    }\n\n    protected render(): TemplateResult<1> {\n        return html`\n            <input\n                type=\"range\"\n                min=\"${this.min}\"\n                max=\"${this.max}\"\n                step=\"${this.step}\"\n                .value=\"${this.value.toString()}\"\n                @input=\"${this.onInput}\"\n                @change=\"${this.onChange}\"\n            />\n        `;\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./constrained.input.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement, Units } from \"../../base/base.component\";\n\n@customElement(\"fv-constrained-input\")\nexport class ConstrainedInputComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Number, reflect: true })\n    public min = 0;\n    @property({ type: Number, reflect: true })\n    public max = 99999999999;\n    @property({ type: Number, reflect: true })\n    public value = 1;\n    @property({ type: Number, reflect: true })\n    public step = 1;\n    @property({ type: Boolean, reflect: true, attribute: \"no-min-max-check\" })\n    public noMinMaxCheck = false;\n\n\n    @property({ type: Number, reflect: true, attribute: \"decimals\" })\n    public decimals = 0;\n    @property({ type: String, reflect: true, attribute: \"decimal-divider\" })\n    public decimalDivider: \".\" | \",\" = \".\";// when adding possible dividers: DO NOT FORGET TO HANDLE IN getNoUnitValue() (in all inputs!)\n\n    @property({ type: String, reflect: true, attribute: \"unit\" })\n    public unit: Units = \"error\";\n    @property({ type: Number, reflect: true, attribute: \"unit-length\" })\n    public unitLength = 0;// 0 == auto\n    @property({ type: Boolean, reflect: true, attribute: \"hide-unused-unit-container\" })\n    public hideUnusedUnitContainer = false;\n    @property({ type: Boolean, reflect: true, attribute: \"hide-unused-unit-container-when-disabled\" })\n    public hideUnusedUnitContainerWhenDisabled = false;\n\n\n    @property({ type: Boolean, reflect: true, attribute: \"show-increase-decrease\" })\n    public showIncreaseDecrease = false;\n    @property({ type: Boolean, reflect: true, attribute: \"pool-repeated-button-clicks\" })\n    public poolRepeatedButtonClicks = false;\n    @property({ type: Number, reflect: true })\n    public timeoutms = 500;\n\n    public set FinalizeClickPromise(finalizePromise: Promise<unknown>) {\n        this._finalizeClickPromise = finalizePromise;\n    }\n    private _finalizeClickPromise : Promise<unknown> | undefined = undefined;\n    private buttonTimeout: number | undefined = undefined;\n    private timeoutAddClicks = 0;\n    private finalizingClick = false;\n    private async pooledButtonClick(addClickModification_: number) {\n        if (this.finalizingClick) { // add to next stack\n            return;\n        }\n\n        const finalizeClick = async ()=>{\n            this.finalizingClick = true;\n            if (this.timeoutAddClicks == 0) return;\n            const modifications = this.timeoutAddClicks * this.step;\n            this.final_value = this.getDisplayValue(this.value + modifications);\n            if (this._finalizeClickPromise != undefined) {\n                await this._finalizeClickPromise;\n            }\n            this.finalizingClick = false;\n            this._finalizeClickPromise = undefined;\n        };\n\n        if (this.poolRepeatedButtonClicks == false) {\n            this.timeoutAddClicks = addClickModification_;\n            await finalizeClick();\n            this.timeoutAddClicks = 0;\n            return;\n        }\n        this.display_value = this.constrainValue(this.display_value + (addClickModification_ * this.step));\n\n        this.timeoutAddClicks += addClickModification_;\n        if (this.buttonTimeout) { // reset timeout if it already was set once\n            clearTimeout(this.buttonTimeout);\n            this.buttonTimeout = undefined;\n        }\n        this.buttonTimeout = setTimeout(async ()=>{\n            if ( this.buttonTimeout ) {\n                clearTimeout(this.buttonTimeout);\n                this.buttonTimeout = undefined;\n                await finalizeClick();\n                this.timeoutAddClicks = 0;\n            }\n        }, this.timeoutms);\n    }\n\n\n    @query(\"input\")\n    private input: HTMLInputElement | undefined;\n\n\n    constructor() {\n        super();\n    }\n\n    private constrainValue(value_: number): number {\n        let toleranceString = \"0\";\n        if (this.decimals > 0) {\n            toleranceString += \".\";\n            for (let index = 0; index < this.decimals; ++index) toleranceString += index == this.decimals - 1 ? \"1\" : \"0\";\n        }\n        const tolerance = parseFloat(toleranceString);\n        if (value_ < this.min + tolerance) {\n            value_ = this.min;\n        }\n        else if (value_ > this.max - tolerance) {\n            value_ = this.max;\n        }\n        return value_;\n    }\n    private get display_value(): number {\n        if (this.input == undefined) return this.value;//escape there is no input!\n        return this.getNoUnitValue(this.input.value);\n    }\n    private set display_value(value_: number) {\n        if (this.input == undefined) return;//escape there is no input!\n        this.input.value = this.getDisplayValue(value_);\n    }\n    private set final_value(value_: string) {\n        if (this.input == undefined) return;//escape there is no input!\n\n        // check NaN etc\n        if (value_ == \"NaN\" || value_ == \"\") {\n            this.display_value = this.value;\n            return;\n        }\n\n        // set value\n        this.value = this.getNoUnitValue(value_);\n\n        // constrain to min max\n        if (this.noMinMaxCheck == false) {\n            this.value = this.constrainValue(this.value);\n        }\n\n        // ensure decimals, set value to input\n        this.display_value = this.value;\n\n        this.dispatchEvent(new CustomEvent(\"change\", {\n            bubbles: true,\n            detail: {\n                min: this.min,\n                max: this.max,\n                value: this.value\n            }\n        }));\n    }\n\n    private change(e: Event) {\n        if (this.input == undefined) return;//escape there is no input!\n        this.final_value = this.input.value;\n    }\n\n    private increase() {\n        if (this.input == undefined) return;//escape there is no input!\n        this.pooledButtonClick(1);\n    }\n    private decrease() {\n        if (this.input == undefined) return;//escape there is no input!\n        this.pooledButtonClick(-1);\n    }\n\n\n    private modificationIntervalTimeout = 150;\n    private modificationInterval: number | undefined = undefined;\n    private modificationTimeout: number | undefined = undefined;\n\n    private recursiveInterval(interval: ()=>void) {\n        clearTimeout(this.modificationInterval);\n        this.modificationInterval = setTimeout(() => {\n            interval();\n            if (this.modificationIntervalTimeout > 60) {\n                this.modificationIntervalTimeout -= 10;\n            }\n            this.recursiveInterval(interval);\n        }, this.modificationIntervalTimeout);\n    }\n\n    private mousedown(interval: ()=>void) {\n        if (this.modificationTimeout == undefined) {\n            this.modificationTimeout = setTimeout(() => {\n                this.recursiveInterval(()=>{\n                    interval();\n                });\n            }, 250.0);\n        }\n    }\n    private mousedownIncrease() {\n        this.mousedown(()=>{\n            this.display_value = this.constrainValue(this.display_value + (1 * this.step));\n        });\n    }\n    private mousedownDecrease() {\n        this.mousedown(()=>{\n            this.display_value = this.constrainValue(this.display_value + (-1 * this.step));\n        });\n    }\n    private mouseupIncrease() {\n        if (this.modificationInterval == undefined && this.modificationTimeout != undefined) {\n            clearTimeout(this.modificationTimeout);\n            this.modificationTimeout = undefined;\n            this.increase();\n            return;\n        }\n\n        clearInterval(this.modificationInterval);\n        this.modificationInterval = undefined;\n        this.final_value = this.input ? this.input.value : this.getDisplayValue(this.value);\n        this.modificationIntervalTimeout = 150;\n    }\n    private mouseupDecrease() {\n        if (this.modificationInterval == undefined) {\n            clearTimeout(this.modificationTimeout);\n            this.modificationTimeout = undefined;\n            this.decrease();\n            return;\n        }\n\n        clearInterval(this.modificationInterval);\n        this.modificationInterval = undefined;\n        this.final_value = this.input ? this.input.value : this.getDisplayValue(this.value);\n        this.modificationIntervalTimeout = 150;\n    }\n\n\n    private get unitifier(): number {\n        switch (this.unit) {\n        case \"cm\":\n            return 0.1;\n        case \"m\":\n            return 0.001;\n        case \"mm\":\n        default:\n            return 1;\n        }\n    }\n    private get unitremover(): number {\n        switch (this.unit) {\n        case \"cm\":\n            return 10;\n        case \"m\":\n            return 1000;\n        case \"mm\":\n        default:\n            return 1;\n        }\n    }\n\n    private getNoUnitValue(value: string): number {\n        const valueString = value.replace(\",\", \".\");// allways support all possible Values for this.decimalDivider\n        return this.decimals > 0 ? parseFloat(valueString) * this.unitremover : parseInt(valueString) * this.unitremover;\n    }\n    private getDisplayValue(value: number): string {\n        const result = (value * this.unitifier).toFixed(this.decimals);\n        return result.replace(\".\", this.decimalDivider);\n    }\n\n\n    private markFocus() {\n        this.classList.add(\"focused\");\n    }\n    private unMarkFocus() {\n        this.classList.remove(\"focused\");\n    }\n    private GetInput(): TemplateResult<1> {\n        let unitLengthToUse = this.unitLength;\n        if (this.unitLength == 0) {\n            unitLengthToUse = this.unit.length;\n        }\n\n        const disableInput = this.min === this.max;\n        const hideUnitContainer = ((this.hideUnusedUnitContainer || (this.hideUnusedUnitContainerWhenDisabled && disableInput)) && this.unit == \"error\");\n        if (disableInput) {\n            this.classList.add(\"disabled\");\n        }\n        else {\n            this.classList.remove(\"disabled\");\n        }\n\n        this.style.setProperty(\"--auto-constrained-input-max-unit-length\", unitLengthToUse.toFixed(0) + \"em\");\n\n        return html`\n            <div class=\"input-container\">\n                <input @focus=${this.markFocus}\n                       @blur=${this.unMarkFocus}\n                       @change=${this.change}\n                       value=\"${this.getDisplayValue(this.value)}\"\n                       min=\"${this.getDisplayValue(this.min)}\"\n                       max=\"${this.getDisplayValue(this.max)}\"\n                       step=\"${this.step}\"\n                       placeholder=\"${this.getDisplayValue(this.min)} - ${this.getDisplayValue(this.max)}\"\n                       ?disabled=\"${disableInput}\"\n                />\n                ${hideUnitContainer ? html`` : html`<span class=\"unit-container${this.unit == \"error\" ? \" number-unit\" : \"\"}\"><fv-label>${this.unit}</fv-label></span>`}\n            </div>\n        `;\n    }\n    private GetIncreaseDecrease(): TemplateResult<1> {\n        if (this.showIncreaseDecrease) {\n            return html`\n                <button class=\"button increase\" @mousedown=\"${this.mousedownIncrease}\" @mouseup=\"${this.mouseupIncrease}\">\n                    <slot name=\"increase\"></slot>\n                </button>\n                <button class=\"button decrease\" @mousedown=\"${this.mousedownDecrease}\" @mouseup=\"${this.mouseupDecrease}\">\n                    <slot name=\"decrease\"></slot>\n                </button>\n            `;\n        }\n        return html``;\n    }\n\n\n    render(): TemplateResult<1> {\n        return html`\n            <div class=\"input-increase-decrease\">\n                ${this.GetInput()}\n                ${this.GetIncreaseDecrease()}\n            </div>\n        `;\n    }\n}\n","import { BaseElement } from \"../../base/base.component\";\r\nimport { property, query } from \"lit/decorators.js\";\r\n\r\nimport style from \"./base-input.sass?inline\";\r\nimport { PropertyValues, unsafeCSS } from \"lit\";\r\n\r\nexport abstract class BaseInput<T extends HTMLElement> extends BaseElement {\r\n\r\n    static formAssociated = true;\r\n\r\n    private readonly internals: ElementInternals;\r\n\r\n    static styles = [\r\n        super.styles || [],\r\n        unsafeCSS(style)\r\n    ]\r\n\r\n    @query(\".base-input\")\r\n    public _inputElement?: T;\r\n\r\n    @property({ reflect: true, type: String })\r\n    name = \"\";\r\n\r\n    @property({ reflect: true, type: String })\r\n    value = \"\";\r\n\r\n    @property({ reflect: true, type: String })\r\n    type = \"\";\r\n\r\n    @property({ reflect: true, type: Boolean })\r\n    readonly = false;\r\n\r\n    @property({ reflect: true, type: String })\r\n    placeholder = \"\";\r\n\r\n    @property({ reflect: true, type: Boolean })\r\n    required = false;\r\n\r\n    @property({ reflect: true, type: String })\r\n    label = \"\";\r\n\r\n    @property({ reflect: true, type: String })\r\n    min: string = \"\"\r\n\r\n    @property({ reflect: true, type: String })\r\n    max: string = \"\"\r\n\r\n    @property({ reflect: true, type: String })\r\n    autocomplete: string = \"\";\r\n\r\n    constructor() {\r\n        super();\r\n        this.internals = this.attachInternals();\r\n    }\r\n\r\n    protected updated(changedProperties: PropertyValues): void {\r\n        super.updated(changedProperties);\r\n        if (changedProperties.has('autocomplete')) {\r\n            this.setAttribute('autocomplete', this.autocomplete);\r\n        }\r\n    }\r\n\r\n    @property()\r\n    onChange = (e: Event, component: BaseInput<T>): void => {\r\n        //empty\r\n    };\r\n\r\n    @property()\r\n    onBlurChange = (e: Event, component: BaseInput<T>): void => {\r\n        //empty\r\n    };\r\n\r\n    firstUpdated(_changedProperties: PropertyValues) {\r\n        super.firstUpdated(_changedProperties);\r\n        this.onChange(new Event(\"change\"), this);\r\n        this.internals.setFormValue(this.value);\r\n    }\r\n\r\n    get Button(): Element | null {\r\n        return this.querySelector(\"fv-button\");\r\n    }\r\n\r\n    protected OnChange(e: Event) {\r\n        this.value = (e.target as HTMLInputElement).value;\r\n        this.internals.setFormValue(this.value);\r\n        this.onChange(e, this);\r\n        this.dispatchEvent(new Event(\"change\"));\r\n    }\r\n\r\n    protected OnBlurChange(e: Event) {\r\n        this.onBlurChange(e, this);\r\n        this.dispatchEvent(new Event(\"blur\"));\r\n    }\r\n\r\n    focus(options?: FocusOptions): void {\r\n        this._inputElement?.focus(options);\r\n    }\r\n\r\n}\r\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\r\nimport style from \"./input.component.sass?inline\";\r\nimport { customElement, query, property } from \"lit/decorators.js\";\r\nimport { BaseInput } from \"../base/base-input\";\r\nimport { LabelComponent } from \"../../label/label.component\";\r\n\r\n@customElement(\"fv-input\")\r\nexport class InputComponent extends BaseInput<HTMLInputElement> {\r\n    static styles = [\r\n        super.styles || [],\r\n        css`${unsafeCSS(style)}`\r\n    ];\r\n\r\n    @query(\".placeholder\")\r\n    public _placeholder?: LabelComponent;\r\n\r\n    @property({ type: Boolean, reflect: true, attribute: \"moveable-placeholder\" })\r\n    public moveablePlaceholder = false;\r\n\r\n    constructor() {\r\n        super();\r\n    }\r\n\r\n    protected OnChange(e: Event) {\r\n        if ((e.target as HTMLInputElement).value.length > 0) {\r\n            this._placeholder?.setAttribute(\"has-value\", \"\");\r\n        }\r\n        else {\r\n            this._placeholder?.removeAttribute(\"has-value\");\r\n        }\r\n        super.OnChange(e);\r\n    }\r\n\r\n    render(): TemplateResult<1> {\r\n        return html`\r\n            <input\r\n                class=\"base-input\"\r\n                @change=\"${this.OnBlurChange}\"\r\n                @input=${this.OnChange}\r\n                .type=\"${this.type}\"\r\n                ?readonly=${this.readonly}\r\n                ?required=${this.required}\r\n                .value=\"${this.value}\"\r\n                i18n-aria-label=\"${this.label}\"\r\n                min=\"${this.min}\"\r\n                max=\"${this.max}\"\r\n                placeholder=\"${this.moveablePlaceholder ? \"\" : this.placeholder}\"\r\n                autocomplete=\"${this.autocomplete}\"/>\r\n            ${this.moveablePlaceholder ? html`\r\n                <fv-label\r\n                    class=\"placeholder\"\r\n                    ?has-value=\"${this.value.length > 0}\"\r\n                    i18n=\"${this.placeholder}\">\r\n                        ${this.placeholder}\r\n                    </fv-label>\r\n                ` : html``}\r\n            <slot></slot>\r\n        `;\r\n    }\r\n}\r\n","import {BaseInput} from \"../base/base-input\";\r\nimport {customElement, property} from \"lit/decorators.js\";\r\nimport {html, unsafeStatic} from \"lit/static-html.js\";\r\nimport {TemplateResult, unsafeCSS} from \"lit\";\r\n\r\nimport style from \"./labeled-input.component.sass?inline\";\r\n\r\n@customElement(\"fv-labeled-input\")\r\nexport class LabeledInputComponent<T extends HTMLElement> extends BaseInput<T> {\r\n\r\n    static styles = [super.styles || [], unsafeCSS(style)];\r\n\r\n    @property({type: String, reflect: true, attribute: true})\r\n    private inputTag: string = \"fv-input\";\r\n\r\n    @property({type: String, reflect: true, attribute: true})\r\n    private textId?: string;\r\n\r\n    static formAssociated = true;\r\n\r\n    @property({type: Boolean, reflect: true, attribute: \"moveable-placeholder\"})\r\n    public moveablePlaceholder = false;\r\n\r\n    protected render(): TemplateResult {\r\n        if (this.moveablePlaceholder) {\r\n            return html`\r\n                <${unsafeStatic(this.inputTag)}\r\n                        class=\"input-field\"\r\n                        @change=\"${this.OnBlurChange}\"\r\n                        @input=${this.OnChange}\r\n                        ?readonly=${this.readonly}\r\n                        type=\"${this.type}\"\r\n                        min=\"${this.min}\"\r\n                        max=\"${this.max}\"\r\n                        .value=\"${this.value}\"\r\n                        ?moveable-placeholder=${this.moveablePlaceholder}\r\n                        placeholder=\"${this.placeholder}\"\r\n                        autocomplete=\"${this.autocomplete}\">\r\n                    <slot></slot>\r\n                </${unsafeStatic(this.inputTag)}>\r\n            `;\r\n        }\r\n        return html`\r\n            <${unsafeStatic(this.inputTag)} class=\"input-field\"\r\n            @change=\"${this.OnBlurChange}\"\r\n                        @input=${this.OnChange}\r\n                        ?readonly=${this.readonly}\r\n                        type=\"${this.type}\"\r\n                        min=\"${this.min}\"\r\n                        max=\"${this.max}\"\r\n                        .value=\"${this.value}\"\r\n                        autocomplete=\"${this.autocomplete}\"\r\n            >\r\n                <div class=\"placeholder-container\">\r\n                    <fv-label i18n=\"${this.textId}\">${this.placeholder}</fv-label>\r\n                    ${\r\n                        this.required ? html`<fv-label>*</fv-label>` : html ``\r\n                    }\r\n                </div>\r\n                <slot></slot>\r\n            </${unsafeStatic(this.inputTag)}>\r\n        `;\r\n    }\r\n\r\n    getInputElement<T>(): T | undefined {\r\n        const baseElement = this.shadowRoot?.querySelector(this.inputTag);\r\n        if (baseElement && baseElement instanceof BaseInput) {\r\n            return baseElement._inputElement;\r\n        }\r\n        return undefined;\r\n    }\r\n\r\n}\r\n","import {CSSResultGroup, TemplateResult, css, html, PropertyValues, unsafeCSS, LitElement} from \"lit\";\nimport style from \"./range.slider.input.component.sass?inline\";\nimport { BaseElement, Units } from \"../../base/base.component\";\nimport { customElement, property, query } from \"lit/decorators.js\";\n\n\n@customElement(\"fv-range-slider-input\")\nexport class RangeSliderInputComponent extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    //                                   _   _\n    //   _ __  _ __ ___  _ __   ___ _ __| |_(_) ___  ___\n    //  | '_ \\| '__/ _ \\| '_ \\ / _ \\ '__| __| |/ _ \\/ __|\n    //  | |_) | | | (_) | |_) |  __/ |  | |_| |  __/\\__ \\\n    //  | .__/|_|  \\___/| .__/ \\___|_|   \\__|_|\\___||___/\n    //  |_|             |_|\n    @property({ type: Number, reflect: true })\n    public min = 0;\n    @property({ type: Number, reflect: true })\n    public max = 99999999999;\n    @property({ type: Number, reflect: true })\n    public value = 1;\n    @property({ type: Number, reflect: true, attribute: \"decimals\" })\n    public decimals = 0;\n    @property({ type: String, reflect: true, attribute: \"unit\" })\n    public unit: Units = \"error\";\n\n\n    //                         _\n    //    __ _ _   _  ___ _ __(_) ___  ___\n    //   / _` | | | |/ _ \\ '__| |/ _ \\/ __|\n    //  | (_| | |_| |  __/ |  | |  __/\\__ \\\n    //   \\__, |\\__,_|\\___|_|  |_|\\___||___/\n    //      |_|\n    @query(\"input\")\n    private input: HTMLInputElement | undefined;\n\n    @query(\".slider-min-display\")\n    private minDisplay: HTMLDivElement | undefined;\n\n    @query(\".slider-max-display\")\n    private maxDisplay: HTMLDivElement | undefined;\n\n    @query(\".slider-value-display-container\")\n    private valueDisplayContainer: HTMLDivElement | undefined;\n\n    @query(\".slider-value-display\")\n    private valueDisplay: HTMLDivElement | undefined;\n\n    @query(\".slider-value-display-spacer\")\n    private valueDisplaySpacer: HTMLDivElement | undefined;\n\n    @query(\".slider-value-display-background\")\n    private valueDisplayBackground: HTMLDivElement | undefined;\n\n    @property({ type: String, reflect: true, attribute: \"decimal-divider\" })\n    public decimalDivider: \".\" | \",\" = \".\";// when adding possible dividers: DO NOT FORGET TO HANDLE IN values setter (in all inputs!)\n\n\n    //                       _                   _\n    //    ___ ___  _ __  ___| |_ _ __ _   _  ___| |_ ___  _ __\n    //   / __/ _ \\| '_ \\/ __| __| '__| | | |/ __| __/ _ \\| '__|\n    //  | (_| (_) | | | \\__ \\ |_| |  | |_| | (__| || (_) | |\n    //   \\___\\___/|_| |_|___/\\__|_|   \\__,_|\\___|\\__\\___/|_|\n    constructor() {\n        super();\n        new ResizeObserver(()=>{\n            this.resize(this);\n        }).observe(this);\n    }\n\n\n    private resize(target: LitElement) {\n        target.requestUpdate();\n    }\n\n\n    //               _ _\n    //   _   _ _ __ (_) |_ ___\n    //  | | | | '_ \\| | __/ __|\n    //  | |_| | | | | | |_\\__ \\\n    //   \\__,_|_| |_|_|\\__|___/\n    private get unitifier(): number {\n        switch (this.unit) {\n        case \"cm\":\n            return 0.1;\n        case \"m\":\n            return 0.001;\n        case \"mm\":\n        default:\n            return 1;\n        }\n    }\n    private get unitremover(): number {\n        return 1 / this.unitifier;\n    }\n\n    //                       _ _  __ _           _   _\n    //   _ __ ___   ___   __| (_)/ _(_) ___ __ _| |_(_) ___  _ __\n    //  | '_ ` _ \\ / _ \\ / _` | | |_| |/ __/ _` | __| |/ _ \\| '_ \\\n    //  | | | | | | (_) | (_| | |  _| | (_| (_| | |_| | (_) | | | |\n    //  |_| |_| |_|\\___/ \\__,_|_|_| |_|\\___\\__,_|\\__|_|\\___/|_| |_|\n    private getDisplayValue(value_: number) {\n        const result = (value_ * this.unitifier).toFixed(this.decimals);\n        return result.replace(\".\", this.decimalDivider);\n    }\n    private constrainValue(value_: number): number {\n        let toleranceString = \"0\";\n        if (this.decimals > 0) {\n            toleranceString += \".\";\n            for (let index = 0; index < this.decimals; ++index) toleranceString += index == this.decimals - 1 ? \"1\" : \"0\";\n        }\n        const tolerance = parseFloat(toleranceString);\n        if (value_ < this.min + tolerance) {\n            value_ = this.min;\n        }\n        else if (value_ > this.max - tolerance) {\n            value_ = this.max;\n        }\n        return value_;\n    }\n    private set values(value_: string) {\n        if (this.input && this.valueDisplay && this.valueDisplaySpacer) {\n            const decimalDividerCleanValueString = value_.replace(\",\", \".\");// allways support all possible Values for this.decimalDivider\n            if (this.decimals > 0) {\n                this.value = parseFloat(decimalDividerCleanValueString) * this.unitremover;\n            }\n            else {\n                this.value = parseInt(decimalDividerCleanValueString) * this.unitremover;\n            }\n            this.value = this.constrainValue(this.value);\n\n\n            this.valueDisplay.innerText = this.getDisplayValue(this.value);\n            this.valueDisplaySpacer.innerText = this.valueDisplay.innerText + (this.unit == \"error\" ? \"\" : \" \" + this.unit);\n        }\n    }\n    private valueDisplayInput() {\n        if (this.valueDisplay == undefined || this.valueDisplaySpacer == undefined) return;\n        if (this.valueDisplay.innerText != \"\") {\n            const value = this.decimals > 0 ? parseFloat(this.valueDisplay.innerText) : parseInt(this.valueDisplay.innerText);\n            if (Number.isNaN(value)) {\n                this.valueDisplay.innerText = this.getDisplayValue(this.value);\n            }\n            this.valueDisplaySpacer.innerText = this.valueDisplay.innerText + (this.unit == \"error\" ? \"\" : \" \" + this.unit);\n        }\n    }\n    private valueDisplayBlur() {\n        if (this.input == undefined || this.valueDisplay == undefined) return;\n        if (this.valueDisplay.innerText == \"\") {\n            this.values = this.input.value;\n            this.updateThumbPosition();\n            return;\n        }\n        this.values = this.valueDisplay.innerText;\n        this.input.value = this.valueDisplay.innerText;\n        this.updateThumbPosition();\n        this.release();\n    }\n    private valueDisplayKeyDown(e: KeyboardEvent) {\n        if (e.key == \"Enter\") {\n            e.preventDefault();\n            if (this.valueDisplay) {\n                this.valueDisplay.blur();\n            }\n        }\n    }\n    private move() {\n        if (this.input == undefined) return;\n        this.values = this.input.value;\n        this.updateThumbPosition();\n    }\n    private change() {\n        if (this.input == undefined) return;\n        this.values = this.input.value;\n        this.release();\n    }\n    private release() {\n        this.dispatchEvent(new CustomEvent(\"slider-release\", {\n            bubbles: true,\n            composed: true,\n            detail: {\n                min: this.min,\n                max: this.max,\n                value: this.value\n            }\n        }));\n        this.requestUpdate();\n    }\n\n    //                      _              ___                     _       _\n    //   _ __ ___ _ __   __| | ___ _ __   ( _ )    _   _ _ __   __| | __ _| |_ ___\n    //  | '__/ _ \\ '_ \\ / _` |/ _ \\ '__|  / _ \\/\\ | | | | '_ \\ / _` |/ _` | __/ _ \\\n    //  | | |  __/ | | | (_| |  __/ |    | (_>  < | |_| | |_) | (_| | (_| | ||  __/\n    //  |_|  \\___|_| |_|\\__,_|\\___|_|     \\___/\\/  \\__,_| .__/ \\__,_|\\__,_|\\__\\___|\n    //                                                  |_|\n    protected render(): TemplateResult<1> {\n        const min = this.getDisplayValue(this.min);\n        const max = this.getDisplayValue(this.max);\n        const value = this.getDisplayValue(this.value);\n        const unit = this.unit == \"error\" ? \"\" : \" \" + this.unit;\n\n        return html`\n            <div class=\"slider-min-display\">${min + unit}</div>\n            <div class=\"inputs-container\">\n                <div class=\"slider-value-display-container\">\n                    <div class=\"fv-icon-arrow-down left\"></div>\n                    <div class=\"slider-value-display-background\">\n                        <div class=\"slider-value-display-spacer\">${value + unit}</div>\n                        <div class=\"slider-value-display\" contenteditable @keydown=\"${this.valueDisplayKeyDown}\" @input=\"${this.valueDisplayInput}\" @blur=\"${this.valueDisplayBlur}\">${value}</div>\n                        <div class=\"slider-value-display-suffix\">${unit}</div>\n                    </div>\n                    <div class=\"fv-icon-arrow-down right\"></div>\n                </div>\n                <input @change=\"${this.change}\" @input=\"${this.move}\" type=\"range\" min=\"${min.replace(this.decimalDivider, \".\")}\" max=\"${max.replace(this.decimalDivider, \".\")}\" value=\"${value.replace(this.decimalDivider, \".\")}\" class=\"slider\">\n            </div>\n            <div class=\"slider-max-display\">${max + unit}</div>\n        `;\n    }\n    protected updated(_changedProperties: PropertyValues): void {\n        super.updated(_changedProperties);\n        this.updateThumbPosition();\n    }\n\n    private updateThumbPosition() {\n        if (this.valueDisplayContainer) {\n            this.valueDisplayContainer.style.left = this.thumb_pos + \"px\";\n        }\n    }\n\n    private get thumb_pos(): number {\n        if (this.input && this.valueDisplayBackground) {\n            const inputStyles = getComputedStyle(this.input);\n\n            const thumbArrowWidth = parseFloat(inputStyles.getPropertyValue(\"--range-slider-thumb-arrow-width\"));\n            let additionalwidth = Number.isNaN(thumbArrowWidth) ? parseFloat(inputStyles.fontSize) * 2.0 : thumbArrowWidth * 2.0;\n\n            const thumbArrowSpacing = parseFloat(inputStyles.getPropertyValue(\"--range-slider-thumb-arrow-spacing\"));\n            additionalwidth += Number.isNaN(thumbArrowSpacing) ? parseFloat(inputStyles.fontSize) * 2.0 : thumbArrowSpacing * 4.0;\n\n            const valueDisplayBackgroundStyles = getComputedStyle(this.valueDisplayBackground);\n            if (Number.isNaN(valueDisplayBackgroundStyles.paddingLeft) == false) {\n                additionalwidth += parseFloat(valueDisplayBackgroundStyles.paddingLeft);\n            }\n            if (Number.isNaN(valueDisplayBackgroundStyles.paddingRight) == false) {\n                additionalwidth += parseFloat(valueDisplayBackgroundStyles.paddingRight);\n            }\n\n            const thumb = this.max_display_width + additionalwidth;\n            this.style.setProperty(\"--auto-range-slider-thumb-width\", thumb.toFixed(2) + \"px\");\n\n            const range = this.max - this.min;\n            const filledRange = this.value - this.min;\n\n            const startPosAreaAdjustedByThumb = (thumb * 0.5);\n            const currentWidthPercentOfMaxWidth = (filledRange / range);\n            const areaWidthWithoutThumb = parseFloat(inputStyles.width) - thumb;\n            return startPosAreaAdjustedByThumb + currentWidthPercentOfMaxWidth * areaWidthWithoutThumb;\n        }\n        return 0.0;\n    }\n    private get max_display_width(): number {\n        if (this.maxDisplay) {\n            const maxDisplayStyles = getComputedStyle(this.maxDisplay);\n            return Number.isNaN(maxDisplayStyles.width) ? 100.0 : parseFloat(maxDisplayStyles.width);\n        }\n        return 100.0;\n    }\n}\n","import { CSSResultGroup, TemplateResult, css, unsafeCSS, html, PropertyValues, PropertyValueMap } from \"lit\";\nimport style from \"./shared.range.slider.input.component.sass?inline\";\nimport { BaseElement, Units } from \"../../base/base.component\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { InputComponent } from \"../input/input.component\";\nimport {WebViewerService} from \"@dh-software/webui-api\";\n\nexport interface SharedRangeSliderInputChangeData {\n    left: number,\n    right: number,\n    \"triggered-from-move\": boolean\n}\nexport class SharedRangeSliderInputChanged extends CustomEvent<SharedRangeSliderInputChangeData> {\n    constructor(data_: SharedRangeSliderInputChangeData) {\n        super(\"sharedrangesliderinputchange\", { detail: data_, bubbles: true, composed: true });\n    }\n}\n\n@customElement(\"fv-shared-range-slider-input\")\nexport class SharedRangeSliderInputComponent extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private documentMouseUp: (this: Document, ev: MouseEvent) => void;\n    private documentMouseMove: (this: Document, ev: MouseEvent) => void;\n    private documentMouseLeave: (this: Document, ev: MouseEvent) => void;\n    private documentPointerMove: (this: Document, ev: PointerEvent) => void;\n    private sceneMouseUp: (this: Window, ev: MouseEvent) => void;\n\n    @property({ type: Number, reflect: true, attribute: \"left-value\" })\n    public leftValue = 0;\n    @property({ type: Number, reflect: true, attribute: \"left-min\" })\n    public leftMin = 0;\n    @property({ type: Number, reflect: true, attribute: \"left-max\" })\n    public leftMax = 99999999;\n    @property({ type: String, reflect: true, attribute: \"left-placeholder\" })\n    public leftPlaceholder = \"\";\n\n\n    @property({ type: Number, reflect: true, attribute: \"right-value\" })\n    public rightValue = 0;\n    @property({ type: Number, reflect: true, attribute: \"right-min\" })\n    public rightMin = 0;\n    @property({ type: Number, reflect: true, attribute: \"right-max\" })\n    public rightMax = 99999999;\n    @property({ type: String, reflect: true, attribute: \"right-placeholder\" })\n    public rightPlaceholder = \"\";\n\n\n    @property({ type: Boolean, reflect: true, attribute: \"trigger-change-on-mousemove\" })\n    public triggerChangeOnMousemove = false;\n    @property({ type: Number, reflect: true, attribute: \"mousemove-change-trigger-distance\" })\n    public mousemoveChangeTriggerDistance = 10.0;\n\n\n\n    public set FinalizeChangePromise(finalizePromise: Promise<unknown>) {\n        this._finalizeChangePromise = finalizePromise;\n    }\n    private _finalizeChangePromise: Promise<unknown> | undefined = undefined;\n    private _finalizingChange = false;\n\n\n    @property({ type: String, reflect: true, attribute: \"decimal-divider\" })\n    public decimalDivider: \".\" | \",\" = \".\";\n\n    @query(\".input-left\")\n    private leftInput?: InputComponent;\n    @query(\".input-right\")\n    private rightInput?: InputComponent;\n    @query(\".label-container.left\")\n    private labelContainerLeft?: HTMLDivElement;\n    @query(\".label-container.right\")\n    private labelContainerRight?: HTMLDivElement;\n\n    @query(\".input-overwrite-slot.left\")\n    private inputOverwriteSlotLeft?: HTMLSlotElement;\n    @query(\".input-overwrite-slot.right\")\n    private inputOverwriteSlotRight?: HTMLSlotElement;\n\n    private lastLeftValue: number | undefined = undefined;\n    private lastMouseMoveChangeEventFulfilled = true;\n\n    constructor() {\n        super();\n\n        const _this = this;\n        this.documentMouseUp = async function (this: Document, ev: MouseEvent) {\n            if (_this._finalizingChange) {\n                return;\n            }\n            if (!_this.mouseDown && !_this.engageDocument) {\n                return;\n            }\n            _this.mouseDown = false;\n            _this.EngageDocument = false;\n            await _this.triggerChangeEvent();\n            _this.requestUpdate();\n        };\n        this.documentMouseMove = function (this: Document, ev: MouseEvent) {\n            // if (_this._finalizingChange) {\n            //     return;\n            // }\n            if (!_this.mouseDown && !_this.engageDocument) {\n                return;\n            }\n            _this.updateSliderPosition(ev.clientX ? ev.clientX : 0);\n            _this.changeOnMousemove();\n        };\n\n        this.documentMouseLeave = function (this: Document, ev: MouseEvent) {\n            if (_this._finalizingChange) {\n                return;\n            }\n            if (!_this.mouseDown && !_this.engageDocument) {\n                return;\n            }\n            _this.updateSliderPosition(ev.clientX ? ev.clientX : 0);\n        };\n        this.documentPointerMove = function (this: Document, ev: PointerEvent) {\n            if (_this._finalizingChange) {\n                return;\n            }\n            if (!_this.mouseDown && !_this.engageDocument) {\n                return;\n            }\n            _this.updateSliderPosition(ev.clientX ? ev.clientX : 0);\n            _this.changeOnMousemove();\n        };\n        this.sceneMouseUp = async function (this: Window, ev: MouseEvent) {\n            if (_this._finalizingChange) {\n                return;\n            }\n            if (!_this.mouseDown || !_this.engageDocument) {\n                return;\n            }\n            _this.mouseDown = false;\n            _this.EngageDocument = false;\n            await _this.triggerChangeEvent();\n            _this.requestUpdate();\n        };\n\n        document.addEventListener(\"mouseup\", this.documentMouseUp);\n        //document.addEventListener(\"mousemove\", this.documentMouseMove);\n        document.addEventListener(\"mouseleave\", this.documentMouseLeave);\n        document.addEventListener(\"pointermove\", this.documentPointerMove);\n        this.attachSceneEvent();\n    }\n\n\n    private changeOnMousemove(): void {\n        if (this.triggerChangeOnMousemove) {\n            if (this.lastLeftValue == undefined) {\n                this.lastLeftValue = this.leftValue;\n                return;\n            }\n\n            const distance = Math.abs(this.leftValue - this.lastLeftValue);\n            if (distance < this.mousemoveChangeTriggerDistance + 0.1) {\n                return;\n            }\n\n            if (!this.lastMouseMoveChangeEventFulfilled) {\n                this.lastLeftValue = this.leftValue;\n                return;\n            }\n\n            this.lastMouseMoveChangeEventFulfilled = false;\n            const lastMouseMoveChangeEvent = this.triggerChangeEvent(true);\n            lastMouseMoveChangeEvent.then(()=>{\n                this.lastMouseMoveChangeEventFulfilled = true;\n            });\n            this.lastLeftValue = this.leftValue;\n        }\n    }\n\n\n    private engageDocument = false;\n    private set EngageDocument(value: boolean) {\n        this.engageDocument = value;\n    }\n    private mouseDown = false;\n    private dotPosition = 0;\n    private updateSliderPosition(mousePosition_: number) {\n        if (!this.mouseDown) return;\n        this.updateValuesFromDotPosition(mousePosition_);\n        this.updateDotPositionFromValues();\n        this.requestUpdate();\n    }\n    private async triggerChangeEvent(triggeredFromMove_ = false) {\n        if (this.leftInput == undefined || this.rightInput == undefined) {\n            return;\n        }\n        this._finalizingChange = true;\n        this.dispatchEvent(new SharedRangeSliderInputChanged({ left: this.leftValue, right: this.rightValue, \"triggered-from-move\": triggeredFromMove_ }));\n        if (this._finalizeChangePromise) {\n            await this._finalizeChangePromise;\n        }\n        this._finalizingChange = false;\n    }\n\n    private onSliderLinePointerDown(e: PointerEvent) {\n        if (this._finalizingChange) {\n            return;\n        }\n        this.mouseDown = true;\n        this.updateSliderPosition(e.clientX ? e.clientX : 0);\n    }\n    private async onSliderLinePointerUp(e: PointerEvent) {\n        if (this._finalizingChange) {\n            if (this.triggerChangeOnMousemove) {\n                this.mouseDown = false;\n            }\n            return;\n        }\n        this.mouseDown = false;\n        await this.triggerChangeEvent();\n        this.requestUpdate();\n    }\n    private onSliderMouseLeave(e: PointerEvent) {\n        if (this._finalizingChange) {\n            if (this.mouseDown) {\n                this.EngageDocument = true;\n            }\n            return;\n        }\n        if (this.mouseDown) {\n            this.updateSliderPosition(e.clientX ? e.clientX : 0);\n            this.EngageDocument = true;\n        }\n    }\n    private onSliderMouseEnter(e: PointerEvent) {\n        this.EngageDocument = false;\n    }\n    private onSliderMouseMove(e: PointerEvent) {\n        if (this._finalizingChange) {\n            return;\n        }\n        this.updateSliderPosition(e.clientX ? e.clientX : 0);\n        this.changeOnMousemove();\n        if (!this.mouseDown) {\n            this.EngageDocument = false;\n        }\n    }\n\n    private leftBlur(e: Event) {\n        if (this._finalizingChange) {\n            return;\n        }\n        if (this.leftInput == undefined) {\n            return;\n        }\n\n        if (this.leftInput.value.length > 0) {\n            if (this.makeDisplayValue(this.leftValue) != this.leftInput.value) {\n                this.leftValue = this.makeValue(this.leftInput.value);\n\n                if (this.leftValue < this.leftMin - 0.000001) {\n                    this.leftValue = this.leftMin;\n                }\n                if (this.leftValue > this.leftMax + 0.000001) {\n                    this.leftValue = this.leftMax;\n                }\n\n                this.rightValue = this.sliderTotal - this.leftValue;\n                this.dispatchEvent(new SharedRangeSliderInputChanged({ left: this.leftValue, right: this.rightValue, \"triggered-from-move\": false }));\n            }\n        }\n        return;\n    }\n    private leftChange(e: Event) {\n        if (this._finalizingChange) {\n            return;\n        }\n        if (this.leftInput == undefined) {\n            return;\n        }\n\n        if (this.leftInput.value.length > 0) {\n            this.leftInput.value = this.leftInput.value.replaceAll(/[^0-9.,]/g, \"\");\n            this.leftInput.value = this.leftInput.value.replaceAll(\",\", this.decimalDivider);\n            this.leftInput.value = this.leftInput.value.replaceAll(\".\", this.decimalDivider);\n            return;\n        }\n    }\n    private rightBlur(e: Event) {\n        if (this._finalizingChange) {\n            return;\n        }\n        if (this.rightInput == undefined) {\n            return;\n        }\n\n        if (this.rightInput.value.length > 0) {\n            if (this.makeDisplayValue(this.rightValue) != this.rightInput.value) {\n                const total = this.sliderTotal;\n\n                this.rightValue = this.makeValue(this.rightInput.value);\n                if (this.rightValue < this.rightMin - 0.000001) {\n                    this.rightValue = this.rightMin;\n                }\n                if (this.rightValue > this.rightMax + 0.000001) {\n                    this.rightValue = this.rightMax;\n                }\n\n                this.leftValue = total - this.rightValue;\n                this.dispatchEvent(new SharedRangeSliderInputChanged({ left: this.leftValue, right: this.rightValue, \"triggered-from-move\": false }));\n            }\n        }\n        return;\n    }\n    private rightChange(e: Event) {\n        if (this._finalizingChange) {\n            return;\n        }\n        if (this.rightInput == undefined) {\n            return;\n        }\n\n        if (this.rightInput.value.length > 0) {\n            this.rightInput.value = this.rightInput.value.replaceAll(/[^0-9.,]/g, \"\");\n            this.rightInput.value = this.rightInput.value.replaceAll(\",\", this.decimalDivider);\n            this.rightInput.value = this.rightInput.value.replaceAll(\".\", this.decimalDivider);\n            return;\n        }\n    }\n\n\n    private async attachSceneEvent() {\n        await WebViewerService.IsAppReady;\n        WebViewerService.FurnviewWebViewer?.contentWindow?.addEventListener(\"mouseup\", this.sceneMouseUp);\n    }\n\n    private makeDisplayValue(value_: number): string {\n        const value = value_;\n        const result = (value * this.DimensionScale).toFixed(this.Digits);\n        return result.replace(\".\", this.decimalDivider);\n    }\n    private makeValue(displayValue: string): number {\n        const value = parseFloat(displayValue.replace(this.decimalDivider, \".\")) * (1 / this.DimensionScale);\n        return value;\n    }\n\n    private get sliderTotal(): number {\n        return this.leftValue + this.rightValue;\n    }\n    private get positionValue(): number {\n        return this.leftValue;\n    }\n    private get dotWidth(): number {\n        const style = getComputedStyle(this);\n        const dotWidthStyle = style.getPropertyValue(\"--slider-dot-size\");\n        return dotWidthStyle.length > 0 ? parseInt(dotWidthStyle) : 20;\n    }\n\n    private updateDotPositionFromMousePosition(mousePosition_: number, dotWidth: number): number {\n        const sliderLine = this.renderRoot.querySelector(\".slider-line\") as HTMLElement;\n        if (!sliderLine) return 0;\n\n        const sliderLineRect = sliderLine.getBoundingClientRect();\n        const sliderLinePosition = sliderLineRect.left;\n        this.dotPosition = mousePosition_ - sliderLinePosition - dotWidth * 0.5;\n\n        if (this.dotPosition < 0) {\n            this.dotPosition = 0;\n        }\n        if (this.dotPosition > sliderLineRect.width - dotWidth) {\n            this.dotPosition = sliderLineRect.width - dotWidth;\n        }\n        return sliderLineRect.width;\n    }\n\n    private updateValuesFromDotPosition(mousePosition_: number): void {\n        const dotWidth = this.dotWidth;\n        const sliderLineWidth = this.updateDotPositionFromMousePosition(mousePosition_, dotWidth);\n\n        if (this.leftInput && this.rightInput) {\n            const percentile = this.dotPosition / (sliderLineWidth - dotWidth);\n            const total = this.sliderTotal;\n            const adjustedLeft = total * percentile;\n            const adjustedRight = total - adjustedLeft;\n\n            this.leftValue = adjustedLeft;\n            this.rightValue = adjustedRight;\n\n            if (this.leftValue < this.leftMin - 0.000001) {\n                this.leftValue = this.leftMin;\n            }\n            if (this.leftValue > this.leftMax + 0.000001) {\n                this.leftValue = this.leftMax;\n            }\n\n            if (this.rightValue < this.rightMin - 0.000001) {\n                this.rightValue = this.rightMin;\n            }\n            if (this.rightValue > this.rightMax + 0.000001) {\n                this.rightValue = this.rightMax;\n            }\n\n            this.leftInput.value = this.makeDisplayValue(this.leftValue);\n            this.rightInput.value = this.makeDisplayValue(this.rightValue);\n        }\n    }\n\n    private updateDotPositionFromValues(): void {\n        const sliderLine = this.renderRoot.querySelector(\".slider-line\") as HTMLElement;\n        if (sliderLine) {\n            const style = getComputedStyle(this);\n            const dotWidthStyle = style.getPropertyValue(\"--slider-dot-size\");\n            const dotWidth = dotWidthStyle.length > 0 ? parseInt(dotWidthStyle) : 20;\n            const sliderLineRect = sliderLine.getBoundingClientRect();\n\n            if (sliderLineRect.width !== 0 && sliderLineRect.height !== 0) {\n                const percentile = this.positionValue / this.sliderTotal;\n                this.dotPosition = percentile * (sliderLineRect.width - dotWidth);\n            }\n        }\n    }\n\n    protected render(): TemplateResult<1> {\n        this.updateDotPositionFromValues();\n\n        return html`\n            <div\n                class=\"slider-container${this.mouseDown ? \" moving-dot\" : \"\"}\"\n                @mousemove=\"${this.onSliderMouseMove}\"\n                @mouseleave=\"${this.onSliderMouseLeave}\"\n                @mouseenter=\"${this.onSliderMouseEnter}\"\n                @pointerdown=\"${this.onSliderLinePointerDown}\"\n                @pointerup=\"${this.onSliderLinePointerUp}\">\n                <div class=\"slider-label\">\n                    <slot></slot>\n                </div>\n                <div class=\"slider-line\">\n                    <div class=\"slider-dot\" style=\"left: ${this.dotPosition}px;\"></div>\n                </div>\n            </div>\n            <div class=\"inputs-container\">\n                <div class=\"input-container left\">\n                    <div class=\"label-container left\">\n                        <span>${this.leftPlaceholder}</span>\n                    </div>\n                    <fv-input\n                        class=\"input-left\"\n                        placeholder=\"${this.leftPlaceholder}\"\n                        @blur=${this.leftBlur}\n                        @change=${this.leftChange}\n                        value=\"${this.makeDisplayValue(this.leftValue)}\"\n                        min=\"${this.makeDisplayValue(this.leftMin)}\"\n                        max=\"${this.makeDisplayValue(this.leftMax)}\">\n                            <div class=\"unit-suffix\">${this.Unit}</div>\n                    </fv-input>\n                    <slot class=\"input-overwrite-slot left\" name=\"left-input-overwrite-slot\"></slot>\n                </div>\n                <div class=\"input-container right\">\n                    <div class=\"label-container right\">\n                        <span>${this.rightPlaceholder}</span>\n                    </div>\n                    <fv-input\n                        class=\"input-right\"\n                        placeholder=\"${this.rightPlaceholder}\"\n                        @blur=${this.rightBlur}\n                        @change=${this.rightChange}\n                        value=\"${this.makeDisplayValue(this.rightValue)}\"\n                        min=\"${this.makeDisplayValue(this.rightMin)}\"\n                        max=\"${this.makeDisplayValue(this.rightMax)}\">\n                            <div class=\"unit-suffix\">${this.Unit}</div>\n                    </fv-input>\n                    <slot class=\"input-overwrite-slot right\" name=\"right-input-overwrite-slot\"></slot>\n                </div>\n            </div>\n        `;\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues): void {\n        const dot = this.renderRoot.querySelector(\".slider-dot\") as HTMLDivElement;\n        if (dot) {\n            this.updateDotPositionFromValues();\n            dot.style.left = this.dotPosition + \"px\";\n        }\n        super.firstUpdated(_changedProperties);\n    }\n\n    protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n        super.updated(_changedProperties);\n\n        if (this.inputOverwriteSlotLeft != undefined && this.inputOverwriteSlotLeft.assignedNodes().length > 0) {\n            this.labelContainerLeft?.classList.add(\"hidden\");\n            this.leftInput?.classList.add(\"hidden\");\n        }\n        else {\n            this.labelContainerLeft?.classList.remove(\"hidden\");\n            this.leftInput?.classList.remove(\"hidden\");\n        }\n\n        if (this.inputOverwriteSlotRight && this.inputOverwriteSlotRight.assignedNodes().length > 0) {\n            this.labelContainerRight?.classList.add(\"hidden\");\n            this.rightInput?.classList.add(\"hidden\");\n        }\n        else {\n            this.labelContainerRight?.classList.remove(\"hidden\");\n            this.rightInput?.classList.remove(\"hidden\");\n        }\n    }\n\n    disconnectedCallback() {\n        super.disconnectedCallback();\n\n        document.removeEventListener(\"mouseup\", this.documentMouseUp);\n        //document.removeEventListener(\"mousemove\", this.documentMouseMove);\n        document.removeEventListener(\"mouseleave\", this.documentMouseLeave);\n        document.removeEventListener(\"pointermove\", this.documentPointerMove);\n        WebViewerService.FurnviewWebViewer?.contentWindow?.removeEventListener(\"mouseup\", this.sceneMouseUp);\n    }\n}\n","import { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./slider.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport { SliderRange } from \"../../../../define/interface\";\nimport { InputComponent } from \"../input/input.component\";\nimport {WebViewerService} from \"@dh-software/webui-api\";\nimport type { ComponentStateHandlerMap } from \"../../../../models/event-handler/component-state-event\";\n\ndeclare global {\n    interface ComponentStates {\n        \"fv-slider:update-range\": Record<string, never>;\n    }\n}\n\ninterface Position {\n    x: number;\n    y: number;\n}\n\ninterface Area extends Position {\n    width: number;\n    height: number;\n}\n\n@customElement(\"fv-slider\")\nexport class SliderComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Number, reflect: true, attribute: \"direction\" })\n    public _direction?: number;\n\n    @query(\".min-slider\")\n    private _minSlider?: HTMLDivElement;\n\n    @query(\".max-slider\")\n    private _maxSlider?: HTMLDivElement;\n\n    @query(\".slider\")\n    private _slider?: HTMLDivElement;\n\n    private _maxValue?: HTMLElement | HTMLInputElement | null;\n    private _minValue?: HTMLElement | HTMLInputElement | null;\n\n    @property({ type: Object, reflect: true, attribute: \"range\" })\n    private _range?: SliderRange;\n\n    @property({ type: Object, reflect: true, attribute: \"val\" })\n    private _value?: SliderRange | number;\n\n    @property({ type: Function, reflect: true, attribute: \"formatDisplayValue\" })\n    private _formatDisplayValueFunction = (value: number): string => {\n        return value.toFixed(2);\n    };\n\n    public set FormatDisplayValueFunction(value: (value: number) => string) {\n        this._formatDisplayValueFunction = value;\n    }\n\n    private _currentActionElement?: HTMLDivElement | null = null;\n\n    stateHandlers: ComponentStateHandlerMap = {\n        \"fv-slider:update-range\": () => { this.requestUpdate(); },\n    };\n\n    private _minPosition: Area;\n    private _maxPosition: Area;\n    private _startPosition: Position;\n    private _currentPosition: Position;\n\n    constructor() {\n        super();\n        this._startPosition = { x: 0, y: 0 };\n        this._currentPosition = { x: 0, y: 0 };\n        this._minPosition = { x: -1, y: -1, height: 0, width: 0 };\n        this._maxPosition = { x: -1, y: -1, height: 0, width: 0 };\n    }\n\n    //region Lifecycle\n\n    protected updated(_changedProperties: PropertyValues) {\n        if (!this._value) {\n            this._value = this._range;\n        }\n\n        if (typeof this._value === \"number\") {\n            this.updateDisplayValues({ min: this._value, max: this._value });\n        }\n        else {\n            this.updateDisplayValues(this._value!);\n        }\n        super.updated(_changedProperties);\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        window.addEventListener(\"resize\", this.onWindowResized.bind(this), { passive: true });\n    }\n\n    disconnectedCallback() {\n        window.removeEventListener(\"resize\", this.onWindowResized.bind(this));\n        super.disconnectedCallback();\n    }\n\n    onWindowResized() {\n        this.requestUpdate();\n    }\n\n    render(): TemplateResult<1> {\n        if (!this._range || !this._value) {\n            return html``;\n        }\n        const _value = this._value!;\n\n        const width = this.MaxV;\n        const points = this.updateDotStyles(_value, this._range, width);\n        const rangeBetween = this.updateRangeStyles(_value, this._range, width);\n\n        return html`\n            <div class=\"slider\">\n                <div class=\"min-slider\" style=\"left: ${points.min}px;\"\n                     @pointerdown=\"${this.onMinSliderPointerDown}\"></div>\n                <div class=\"slider-line\" @pointerdown=\"${this.onSliderLinePointerDown}\">\n                    <div class=\"range-between\"\n                        style=\"left: ${rangeBetween.min}px; right: ${this.MaxV - rangeBetween.max}px\"></div>\n                </div>\n                <div class=\"max-slider\" style=\"left: ${points.max}px;\"\n                     @pointerdown=\"${this.onMaxSliderPointerDown}\"></div>\n            </div>\n            <div class=\"sliderValues\">\n                <slot name=\"min\"></slot>\n                <slot name=\"max\"></slot>\n            </div>\n        `;\n    }\n\n    //endregion\n    //region Getter / Setter\n\n    public set Value(range: SliderRange | number | undefined) {\n        this._value = range;\n        if (!range) {\n            this._value = this.Range;\n        }\n    }\n\n    private get MaxV(): number {\n        if (this._direction && this._direction == 1) {\n            return parseFloat(window.getComputedStyle(this._slider || this).height);\n        }\n        else {\n            return parseFloat(window.getComputedStyle(this._slider || this).width);\n        }\n    }\n\n    public get Range(): SliderRange | undefined {\n        return this._range;\n    }\n\n    public set Range(range: SliderRange | undefined) {\n        this._range = range;\n    }\n\n    //endregion\n    //region Events\n\n    private handlePointerDown = (e: PointerEvent, position: Position) => {\n        document.body.style.touchAction = \"none\";\n        e.preventDefault();\n        if (this._currentActionElement) {\n            this._startPosition = { x: this._currentActionElement.offsetLeft, y: this._currentActionElement.offsetTop };\n            this._currentPosition = position;\n        }\n    };\n\n    private handlePointerMove = (e: PointerEvent) => {\n        if (!this._currentActionElement) return;\n\n        const mousePosition = this.getPointerPosition(e);\n        e.preventDefault();\n        const position: Position = {\n            x: this._startPosition.x + mousePosition.x - this._currentPosition.x,\n            y: this._startPosition.y + mousePosition.y - this._currentPosition.y,\n        };\n        if (this._direction && this._direction === 1) {\n            this.handleVerticalMovement(position);\n        }\n        else {\n            this.handleHorizontalMovement(position);\n        }\n    };\n\n    private handlePointerClick = (e: PointerEvent, mousePosition: Position) => {\n        if (!this._currentActionElement) return;\n        e.preventDefault();\n        const position: Position = {\n            x: mousePosition.x - this.getBoundingClientRect().x,\n            y: mousePosition.y - this.getBoundingClientRect().y,\n        };\n        if (this._direction && this._direction === 1) {\n            this.handleVerticalMovement(position);\n        }\n        else {\n            this.handleHorizontalMovement(position);\n        }\n    }\n\n    private handlePointerUp = () => {\n        if (this._currentActionElement) {\n            this._currentActionElement = null;\n            document.body.style.touchAction = \"auto\";\n            document.removeEventListener(\"pointermove\", this.handlePointerMove, false);\n            document.removeEventListener(\"pointerup\", this.handlePointerUp, false);\n            WebViewerService.FurnviewWebViewer?.contentWindow?.removeEventListener(\"pointerup\", this.globalPointerUp);\n        }\n        this.dispatchChange(true);\n    };\n\n    private globalPointerUp = (event: PointerEvent) => {\n        this.handlePointerUp();\n    };\n\n    private dispatchChange(dispatch = true) {\n        if (this._range) {\n            if (dispatch) {\n                this.dispatchEvent(new CustomEvent(\"change\", {\n                    detail: {\n                        value: this._value,\n                        range: this.Range,\n                        actionElement: this._currentActionElement\n                    },\n                    bubbles: true,\n                    composed: true\n                }));\n            }\n        }\n    }\n\n    // endregion\n    // region SliderMovement\n\n    private getPointerPosition(e: PointerEvent) {\n        let posx = 0, posy = 0;\n        if (e.clientX) {\n            posx = e.clientX;\n            posy = e.clientY;\n        }\n        return { x: posx, y: posy };\n    }\n\n    private handleHorizontalMovement(position: Position) {\n        const width = 0;\n        const maxWidth = this.MaxV;\n\n        const clampedX = this.clamp(position.x, 0, maxWidth - width);\n        const currentActionPosition = this.applyMinMaxXConstraints(clampedX, maxWidth);\n\n        const range: SliderRange = {\n            min: this._minPosition.x !== -1 ? this._minPosition.x : currentActionPosition,\n            max: this._maxPosition.x !== -1 ? this._maxPosition.x + width : currentActionPosition + width\n        };\n\n        if (this._range) {\n            this._value = this.getInterpolatedRange(range, maxWidth, this._range);\n        }\n    }\n\n    private handleVerticalMovement(position: Position) {\n        const height = 0;\n        const maxHeight = this.MaxV;\n\n        const clampedY = this.clamp(position.y, -height, maxHeight - height);\n        const currentActionPosition = this.applyMinMaxYConstraints(clampedY, maxHeight);\n\n        this._currentActionElement!.style.top = (currentActionPosition) + \"px\";\n\n        const range: SliderRange = {\n            min: this._minPosition.y !== -1 ? this._minPosition.y : currentActionPosition,\n            max: this._maxPosition.y !== -1 ? this._maxPosition.y + height : currentActionPosition + height\n        };\n\n        if (this._range) {\n            this._value = this.getInterpolatedRange(range, maxHeight, this._range);\n        }\n    }\n\n    // endregion\n    //region Math\n\n    private clamp(value: number, min: number, max: number) {\n        return Math.max(min, Math.min(value, max));\n    }\n\n    private applyMinMaxXConstraints(position: number, width: number): number {\n        position = this._minPosition.x !== -1 ? position > this._minPosition.x + this._minPosition.width ? position : this._minPosition.x + this._minPosition.width : position;\n        position = this._maxPosition.x !== -1 ? position < this._maxPosition.x - this._maxPosition.width ? position : this._maxPosition.x - this._maxPosition.width : position;\n        return this.clamp(position, 0, width);\n    }\n\n    private applyMinMaxYConstraints(position: number, height: number): number {\n        position = this._minPosition.y !== -1 ? position > this._minPosition.y + this._minPosition.height ? position : this._minPosition.y + this._minPosition.height : position;\n        position = this._maxPosition.y !== -1 ? position < this._maxPosition.y - this._maxPosition.height ? position : this._maxPosition.y - this._maxPosition.height : position;\n        return this.clamp(position, 0, height);\n    }\n\n    private interpolateRangeValue(value: number, maxV: number, range: SliderRange): number {\n        const _range = range.max - range.min;\n        return this.clamp(range.min + (_range * (value / maxV)), range.min, range.max);\n    }\n\n    private getInterpolatedRange(value: SliderRange, maxV: number, range: SliderRange) {\n        return {\n            min: this.interpolateRangeValue(value.min, maxV, range),\n            max: this.interpolateRangeValue(value.max, maxV, range)\n        };\n    }\n\n    private projectValue(value: number, maxV: number, range: SliderRange): number {\n        const _range = range.max - range.min;\n        const scaled_value = (value - range.min) / _range;\n\n        if (scaled_value >= 1 / maxV) {\n            value = scaled_value * maxV;\n        }\n        else {\n            value = scaled_value;\n        }\n        return value;\n    }\n\n    private getProjectedValues(values: SliderRange, maxV: number, range: SliderRange): SliderRange {\n        return {\n            min: this.projectValue(values.min, maxV, range),\n            max: this.projectValue(values.max, maxV, range)\n        };\n    }\n\n    //endregion\n    //region Frontend update\n\n    private updateRangeStyles(values: SliderRange | number, range: SliderRange, size: number): SliderRange {\n        if (typeof values === \"number\") {\n            return {\n                min: this.projectValue(values, size, range),\n                max: this.projectValue(values, size, range)\n            };\n        }\n        return {\n            min: this.projectValue(values.min, size, range),\n            max: this.projectValue(values.max, size, range)\n        };\n    }\n\n    private updateDotStyles(value: SliderRange | number, range: SliderRange, size: number) {\n        let min, max;\n        if (typeof value === \"number\") {\n            min = max = this.projectValue(value, size - 20, range);\n            //TODO: Fix hardcoded Slider drag size\n            if (min > max) {\n                min -= 20;\n            }\n            else {\n                max += 20;\n            }\n        }\n        else {\n            min = this.projectValue(value.min, size, range);\n            max = this.projectValue(value.max, size, range);\n            min = this.clamp(min, 0, max);\n            max = this.clamp(max, min, size);\n        }\n        return {\n            min, max\n        };\n    }\n\n    private updateDisplayValues(range: SliderRange) {\n        if (!this._maxValue) {\n            const element = this.querySelector(\"[slot=max].sliderValue\") || this.querySelector(\"[slot=max] .sliderValue\");\n            if (element) {\n                this._maxValue = element as HTMLElement;\n            }\n        }\n        if (!this._minValue) {\n            const element = this.querySelector(\"[slot=min].sliderValue\") || this.querySelector(\"[slot=min] .sliderValue\");\n            if (element) {\n                this._minValue = element as HTMLElement;\n            }\n        }\n        if (this._maxValue) {\n            const maxValue = this._formatDisplayValueFunction(Math.round(range.max));\n            this.setInputValue(this._maxValue, maxValue);\n            this.addChangeListener(this._maxValue, (ev, value) => {\n                if (this._range && this._value && value && !isNaN(parseFloat(value))) {\n                    const multiplier = 1 / parseFloat(this._formatDisplayValueFunction(1));\n                    const newValue = multiplier * parseFloat(value);\n                    if (typeof this._value === \"object\") {\n                        this._value = {\n                            min: this._value.min,\n                            max: Math.min(Math.max(newValue, this._value.min), this._range.max)\n                        };\n                    }\n                    else if (typeof this._value === \"number\") {\n                        if (this._range) {\n                            this._value = {\n                                min: this._range.min,\n                                max: Math.min(Math.max(newValue, this._range.min), this._range.max)\n                            };\n                        }\n                    }\n                    this.dispatchChange(true);\n                    this.requestUpdate();\n                }\n            });\n        }\n        if (this._minValue) {\n            const minValue = this._formatDisplayValueFunction(Math.round(range.min));\n            this.setInputValue(this._minValue, minValue);\n            this.addChangeListener(this._minValue, (ev, value) => {\n                if (this._range && this._value && value && !isNaN(parseFloat(value))) {\n                    const multiplier = 1 / parseFloat(this._formatDisplayValueFunction(1));\n                    const newValue = multiplier * parseFloat(value);\n                    if (typeof this._value === \"object\") {\n                        this._value = {\n                            min: Math.max(Math.min(newValue, this._value.max), this._range.min),\n                            max: this._value.max\n                        };\n                    }\n                    else if (typeof this._value === \"number\") {\n                        this._value = {\n                            min: Math.max(Math.min(newValue, this._range.max), this._range.min),\n                            max: this._range.max,\n                        };\n                    }\n                    this.dispatchChange(true);\n                    this.requestUpdate();\n                }\n            });\n        }\n    }\n\n    private inputRegex = /[0-9].,+/;\n\n    checkInputFormat(ev: InputEvent) {\n        if (ev.data && !this.inputRegex.test(ev.data)) {\n            ev.preventDefault();\n        }\n    }\n\n    setInputValue(element: HTMLElement, value: string) {\n        if (element instanceof HTMLInputElement || element instanceof InputComponent) {\n            element.value = value;\n        }\n        else {\n            element.textContent = value;\n        }\n    }\n\n    addChangeListener(element: HTMLElement, listener: (ev: InputEvent, value: string) => void) {\n        if (element instanceof HTMLInputElement) {\n            element.addEventListener(\"change\", (e) => listener(e as InputEvent, element.value));\n        }\n        else if (element instanceof InputComponent) {\n            element.onBlurChange = (ev, component) => {\n                listener(ev as InputEvent, element.value);\n            };\n        }\n    }\n\n    // endregion\n\n    // region Listener\n\n    private onMinSliderPointerDown(e: PointerEvent) {\n        this._currentActionElement = this._minSlider;\n        this._maxPosition = { x: -1, y: -1, height: 0, width: 0 };\n        this._minPosition = { x: -1, y: -1, height: 0, width: 0 };\n        if (this._maxSlider) {\n            const style = window.getComputedStyle(this._maxSlider);\n            this._maxPosition = {\n                width: +style.width.replace(\"px\", \"\"),\n                height: +style.height.replace(\"px\", \"\"),\n                x: +style.left.replace(\"px\", \"\"),\n                y: +style.top.replace(\"px\", \"\"),\n            };\n            this._maxPosition.x = this._maxPosition.x < 0 ? 0 : this._maxPosition.x;\n            this._maxPosition.y = this._maxPosition.y < 0 ? 0 : this._maxPosition.y;\n        }\n        const pos = this.getPointerPosition(e);\n        this.handlePointerDown(e, pos);\n        WebViewerService.FurnviewWebViewer?.contentWindow?.addEventListener(\"pointerup\", this.globalPointerUp, {\n            passive: true,\n            capture: true\n        });\n        document.addEventListener(\"pointerup\", this.handlePointerUp, false);\n        document.addEventListener(\"pointermove\", this.handlePointerMove, false);\n    }\n\n    private onMaxSliderPointerDown(e: PointerEvent) {\n        this._currentActionElement = this._maxSlider;\n        this._maxPosition = { x: -1, y: -1, height: 0, width: 0 };\n        this._minPosition = { x: -1, y: -1, height: 0, width: 0 };\n        if (this._minSlider) {\n            const style = window.getComputedStyle(this._minSlider);\n            this._minPosition = {\n                width: +style.width.replace(\"px\", \"\"),\n                height: +style.height.replace(\"px\", \"\"),\n                x: +style.left.replace(\"px\", \"\"),\n                y: +style.top.replace(\"px\", \"\"),\n            };\n            if (this._minPosition.x < 0) {\n                this._minPosition.width = (this._minPosition.x * -1);\n                this._minPosition.x = 0;\n            }\n            if (this._minPosition.y < 0) {\n                this._minPosition.height = (this._minPosition.y * -1);\n                this._minPosition.y = 0;\n            }\n        }\n        const pos = this.getPointerPosition(e);\n        this.handlePointerDown(e, pos);\n        WebViewerService.FurnviewWebViewer?.contentWindow?.addEventListener(\"pointerup\", this.globalPointerUp, {\n            passive: true,\n            capture: true\n        });\n        document.addEventListener(\"pointerup\", this.handlePointerUp, false);\n        document.addEventListener(\"pointermove\", this.handlePointerMove, false);\n    }\n\n    private onSliderLinePointerDown(e: PointerEvent) {\n        const mousePosition = this.getPointerPosition(e);\n        const boundingRect = this.getBoundingClientRect();\n\n        let isUsingMinSlider = true;\n        this._currentActionElement = this._minSlider;\n        this._maxPosition = { x: -1, y: -1, height: 0, width: 0 };\n        this._minPosition = { x: -1, y: -1, height: 0, width: 0 };\n\n        if (this._minSlider && this._maxSlider) {\n            let clickRelative = mousePosition.x - boundingRect.x;\n            let offsetToMinSlider = Math.abs(clickRelative - this._minSlider.offsetLeft);\n            let offsetToMaxSlider = Math.abs(clickRelative - this._maxSlider.offsetLeft);\n\n            if (this._direction && this._direction == 1) {\n                clickRelative = mousePosition.y - boundingRect.y;\n                offsetToMinSlider = Math.abs(clickRelative - this._minSlider.offsetTop);\n                offsetToMaxSlider = Math.abs(clickRelative - this._maxSlider.offsetTop);\n            }\n\n            if (offsetToMaxSlider > offsetToMinSlider) {\n                isUsingMinSlider = true;\n                this._currentActionElement = this._minSlider;\n            }\n            else {\n                isUsingMinSlider = false;\n                this._currentActionElement = this._maxSlider;\n            }\n        }\n        if (isUsingMinSlider) {\n            if (this._maxSlider) {\n                const style = window.getComputedStyle(this._maxSlider);\n                this._maxPosition = {\n                    width: +style.width.replace(\"px\", \"\"),\n                    height: +style.height.replace(\"px\", \"\"),\n                    x: +style.left.replace(\"px\", \"\"),\n                    y: +style.top.replace(\"px\", \"\"),\n                };\n                this._maxPosition.x = this._maxPosition.x < 0 ? 0 : this._maxPosition.x;\n                this._maxPosition.y = this._maxPosition.y < 0 ? 0 : this._maxPosition.y;\n            }\n        }\n        else {\n            if (this._minSlider) {\n                const style = window.getComputedStyle(this._minSlider);\n                this._minPosition = {\n                    width: +style.width.replace(\"px\", \"\"),\n                    height: +style.height.replace(\"px\", \"\"),\n                    x: +style.left.replace(\"px\", \"\"),\n                    y: +style.top.replace(\"px\", \"\"),\n                };\n                if (this._minPosition.x < 0) {\n                    this._minPosition.width = (this._minPosition.x * -1);\n                    this._minPosition.x = 0;\n                }\n                if (this._minPosition.y < 0) {\n                    this._minPosition.height = (this._minPosition.y * -1);\n                    this._minPosition.y = 0;\n                }\n            }\n        }\n        this.handlePointerClick(e, mousePosition);\n        WebViewerService.FurnviewWebViewer?.contentWindow?.addEventListener(\"pointerup\", this.globalPointerUp, {\n            passive: true,\n            capture: true\n        });\n        document.addEventListener(\"pointerup\", this.handlePointerUp, false);\n    }\n\n    // endregion\n\n}\n","import { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./validating-input.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport { BaseInput } from \"../base/base-input\";\nimport { InputComponent } from \"../input/input.component\";\n\n@customElement(\"fv-validating-input\")\nexport class ValidatingInputComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n\n    // input default\n    @property({ reflect: true, type: String })\n    name = \"\";\n    @property({ reflect: true, type: String })\n    value = \"\";\n    @property({ reflect: true, type: String })\n    placeholder = \"\";\n    @property()\n    onChange = (e: Event, component: ValidatingInputComponent): void => {\n        //empty\n    };\n\n    // validation - behaviour additional\n    @property({ reflect: true, type: Boolean, attribute: \"required\" })\n    required = false;\n    @property({ type: String, reflect: true, attribute: \"empty-information-text\" })\n    emptyInformationText: string | undefined = undefined;\n    @property({ type: String, reflect: true, attribute: \"invalid-information-text\" })\n    invalidInformationText: string | undefined = undefined;\n\n    // validation\n    @property({ type: String, reflect: true, attribute: \"input-validation\" })\n    inputValidation: string | undefined = undefined;\n    @property({ type: String, reflect: true, attribute: \"result-validation\" })\n    resultValidation: string | undefined = undefined;\n\n    @query(\"fv-input\")\n    inputElement: InputComponent | undefined;\n    @query(\".invalid-information-container\")\n    invalidInformationContainer: HTMLDivElement | undefined;\n    @query(\".empty-information-container\")\n    emptyInformationContainer: HTMLDivElement | undefined;\n\n\n    private set valid(value: boolean) {\n        if (value) {\n            this.classList.remove(\"invalid\");\n        }\n        else {\n            this.classList.add(\"invalid\");\n        }\n    }\n\n    public get valid() {\n        if (this.required) {\n            return this.value.length > 0 && this.classList.contains(\"invalid\") == false;\n        }\n        return this.classList.contains(\"invalid\") == false;\n    }\n\n    constructor() {\n        super();\n\n        this.addEventListener(\"blur\", () => {\n            if (this.resultValidation && this.resultValidation.length > 0) {\n                const resultValidation = new RegExp(this.resultValidation);\n                if (resultValidation) {\n                    if (this.value.length < 1) {\n                        if (this.required) {\n                            this.invalidInformationContainer?.classList.add(\"hidden\");\n                            this.emptyInformationContainer?.classList.remove(\"hidden\");\n                        }\n                        this.valid = this.required == false;\n                    }\n                    else {\n                        if (this.required) {\n                            this.invalidInformationContainer?.classList.remove(\"hidden\");\n                            this.emptyInformationContainer?.classList.add(\"hidden\");\n                        }\n                        this.valid = resultValidation.test(this.value);\n                    }\n                }\n            }\n            else {\n                this.valid = this.value.length > 0;\n            }\n\n            this.dispatchEvent(new CustomEvent(\"validating-input-updated\", {}));\n        });\n    }\n\n    private OnChange(e: Event) {\n        this.valid = true;\n\n        const target = (e.target as BaseInput<HTMLInputElement>);\n        const possibleValue = target.value;\n        // handle inputValidation\n        if (this.inputValidation && this.inputValidation.length > 0) {\n            const inputValidation = new RegExp(this.inputValidation);\n            if (inputValidation) {\n                let valid = false;\n                if (possibleValue.length < 1) {\n                    valid = true;\n                }\n                else {\n                    valid = inputValidation.test(possibleValue);\n                }\n                if (valid == false) {\n                    target.value = this.value;\n                    const input = target._inputElement;\n                    if (input != undefined) {\n                        input.value = this.value;\n                    }\n                    return; // do not allow input...\n                }\n            }\n        }\n        this.value = possibleValue;\n        this.onChange(e, this);\n        this.dispatchEvent(new Event(\"change\"));\n        this.dispatchEvent(new CustomEvent(\"validating-input-updated\", {}));\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            <div class=\"container\">\n                <fv-input name=\"${this.name}\" .value=\"${this.value}\"\n                          placeholder=\"${this.placeholder + (this.required ? \"*\" : \"\")}\" @change=\"${this.OnChange}\">\n                    <slot></slot>\n                </fv-input>\n                ${this.invalidInformationText && this.invalidInformationText.length > 0 ? html`\n                    <div class=\"invalid-information-container\">${this.invalidInformationText}</div>` : html``}\n                ${this.emptyInformationText && this.emptyInformationText.length > 0 ? html`\n                    <div class=\"empty-information-container\">${this.emptyInformationText}</div>` : html``}\n            </div>\n        `;\n    }\n\n    protected updated(_changedProperties: PropertyValues): void {\n        super.updated(_changedProperties);\n        if (this.inputElement) {\n            const styleSheet = window.getComputedStyle(this.inputElement);\n            this.style.setProperty(\"--internal-auto-input-outline-size\", styleSheet.outlineWidth);\n        }\n    }\n\n    focus(options?: FocusOptions): void {\n        this.inputElement?.focus(options);\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\r\nimport style from \"./text-box.component.sass?inline\";\r\nimport { customElement, query } from \"lit/decorators.js\";\r\nimport { BaseInput } from \"../input/base/base-input\";\r\n\r\n@customElement(\"fv-text-box\")\r\nexport class TextBoxComponent extends BaseInput<HTMLTextAreaElement> {\r\n    static styles = [\r\n        super.styles || [],\r\n        css`${unsafeCSS(style)}`\r\n    ];\r\n\r\n    declare _inputElement? : HTMLTextAreaElement;\r\n\r\n    constructor() {\r\n        super();\r\n    }\r\n\r\n    render(): TemplateResult<1> {\r\n        return html`\r\n            <textarea class=\"base-input\" @change=\"${this.OnBlurChange}\" @input=${this.OnChange} ?readonly=${this.readonly}\r\n                      .value=\"${this.value}\" placeholder=\"${this.placeholder}\" autocomplete=\"${this.autocomplete}\"></textarea>\r\n            <slot></slot>\r\n        `;\r\n    }\r\n\r\n    getInputElement(): HTMLTextAreaElement | undefined {\r\n        return this._inputElement;\r\n    }\r\n\r\n}\r\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./list-box.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-list-box\")\nexport class ListBoxComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property()\n    list = [];\n\n    @property()\n    OnScroll = (e: Event): void => {\n        const scrollDiv = (e.currentTarget as HTMLDivElement);\n        this.dispatchEvent(new CustomEvent(\"scroll\", {\n            detail: {\n                distanceToBottom: (scrollDiv.scrollHeight - this.clientHeight) - scrollDiv.scrollTop,\n                clientHeight: this.clientHeight,\n                containerHeight: scrollDiv.clientHeight,\n                scrollHeight: scrollDiv.scrollHeight,\n                scrollTop: scrollDiv.scrollTop\n            }\n        }));\n        //Emtpy\n    }\n\n    constructor() {\n        super();\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            <div @scroll=${this.OnScroll}>\n    ${this.list.map((item, index) =>  \n        html`\n            ${item}\n        `\n    )}\n            <slot></slot>\n            </div>\n        `;\n    }\n}\n","import { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport { TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./icon.component.sass?inline\";\nimport { StyleHelper } from \"../../../utils/style.helper\";\n@customElement(\"fv-icon\")\nexport class IconComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true, attribute: \"icon\" })\n    public icon = \"\";\n    @property({ type: String, reflect: true, attribute: \"src\" })\n    public src = \"\";\n\n    constructor() {\n        super();\n    }\n\n    private get srcUTF8(): string {\n        if (this.src && this.src.length > 0) {\n            return this.src.replace(/&#([0-9]+);/g, function (b) {\n                return String.fromCodePoint(parseInt(b.slice(2, -1)));\n            });\n        }\n        return this.src;\n    }\n\n    private get imageContent() {\n        const overrideImage = StyleHelper.getVar(this, \"--icon-image\");\n        if (overrideImage) {\n            return html`\n                <div class=\"icon img\" style=\"background-image: url('${overrideImage}');\"></div>\n            `;\n        }\n        if (this.icon.length > 0) {\n            return html`\n                <fv-label class=\"icon ${this.icon}\"></fv-label>\n            `;\n        }\n        return html`\n            <div class=\"icon img\" style=\"background-image: url('${this.srcUTF8}');\"></div>\n        `;\n    }\n\n    protected render(): TemplateResult<1> {\n        return html`\n            ${this.imageContent}\n            <slot></slot>\n        `;\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\r\nimport style from \"./dealer.component.sass?inline\";\r\nimport defaultStyle from \"../common.sass?inline\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\nimport { classMap } from \"lit/directives/class-map.js\";\r\nimport \"../standard/button/button.component\";\r\nimport \"../standard/label/label.component\";\r\nimport { BaseElement } from \"../standard/base/base.component\";\r\n\r\n@customElement(\"fv-dealer\")\r\nexport class DealerComponent extends BaseElement {\r\n\r\n    static formAccosiated = true;\r\n\r\n    private internals: ElementInternals;\r\n\r\n    static styles = [\r\n        super.styles || [],\r\n        css`\r\n          ${unsafeCSS(style)}\r\n          ${unsafeCSS(defaultStyle)}\r\n        `\r\n    ];\r\n\r\n    @property({ type: Boolean, reflect: true })\r\n    selected = \"\"\r\n\r\n    @property({ type: String, reflect: true })\r\n    name = \"\"\r\n\r\n    @property({ type: String, reflect: true })\r\n    address = \"\"\r\n\r\n    @property({ type: Boolean, reflect: true })\r\n    disabled = false;\r\n\r\n    @property({ type: String, reflect: true  })\r\n    type: string = \"button\";\r\n\r\n    @property()\r\n    onClick = (e: Event, component: DealerComponent): void => {\r\n        //Empty\r\n    };\r\n\r\n    private OnClick(e: Event) {\r\n        e.stopPropagation();\r\n        e.preventDefault();\r\n        const form = this.closest(\"form\");\r\n        if(form) form.requestSubmit();\r\n        this.onClick(e, this);\r\n    }\r\n\r\n    constructor() {\r\n        super();\r\n        this.internals = this.attachInternals()\r\n    }\r\n    render(): TemplateResult<1> {\r\n        const classes = {\r\n            disabled: this.disabled,\r\n            bordered: !this.selected\r\n        };\r\n        return html`\r\n            <div class=\"container column fluid\">\r\n                <fv-label class=\"title space after\">${this.name}</fv-label>\r\n                <fv-label class=\"space after\">${this.address}</fv-label>\r\n            </div>\r\n            <div class=\"container row reverse\">\r\n                <fv-button @click=${this.OnClick} type=\"${this.type}\" class=${classMap(classes)}><slot>Anfrage stellen</slot></fv-button>\r\n            </div>\r\n        `;\r\n    }\r\n}\r\n","import { css, html, TemplateResult, CSSResultGroup, unsafeCSS } from \"lit\";\nimport style from \"./modal.step.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-modal-step\")\nexport class ModalStepComponent extends BaseElement {\n    @property({ type: Boolean, reflect: true })\n    public active = false;\n\n    \n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    render(): TemplateResult<1> {\n        return html`<span @click=\"${this.changeStep}\"><slot></slot></span>`;\n    }\n\n    changeStep(): void {\n        if (this.id) {\n            if (this.parentNode) {\n                const step = this.parentNode.querySelector(\"fv-modal-step[active]\") as ModalStepComponent;\n                if (step) step.active = false;\n                this.active = true;\n                const activeStep = this.parentNode.querySelector(\".active\");\n                if (activeStep) activeStep.classList.remove(\"active\");\n                const stepContent = this.parentNode.querySelector(\"[for=\" + this.id + \"]\");\n                if (stepContent) stepContent.classList.add(\"active\");\n            }\n        }\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\r\nimport style from \"./message.component.sass?inline\";\r\nimport defaultStyle from \"../../../common.sass?inline\";\r\nimport { customElement, property } from \"lit/decorators.js\";\r\nimport \"../../button/button.component\";\r\nimport \"../../label/label.component\";\r\nimport { BaseElement } from \"../../base/base.component\";\r\nimport { event, EventRef } from \"@dh-software/lit-extensions\";\r\nimport {LocaleService} from \"@dh-software/webui-api\";\r\n\r\n\r\n\r\n@customElement(\"fv-message\")\r\nexport class MessageComponent extends BaseElement {\r\n    static styles = [\r\n        super.styles || [],\r\n        css`\r\n            ${unsafeCSS(style)}\r\n            ${unsafeCSS(defaultStyle)}\r\n        `\r\n    ];\r\n\r\n    @event({bubbles: true, composed: true}, \"back-to-start\")\r\n    private backToStartEvent!: EventRef<never>\r\n\r\n    @property({ type: Boolean, reflect: true })\r\n    active = false;\r\n\r\n    @property({ type: String })\r\n    message = \"fv.message.message\";\r\n\r\n    @property({ type: String })\r\n    title = \"fv.message.title\";\r\n\r\n    @property({ type: String, attribute: \"button-title\" })\r\n    buttonTitle = \"20245\";\r\n\r\n    @property({type: Number})\r\n    await = 0;\r\n\r\n    @property()\r\n    onClick = (e: Event): void => { /* Empty */ };\r\n\r\n    private async OnClick(e: Event) {\r\n        this.backToStartEvent.dispatch();\r\n        setTimeout( () => {\r\n            this.onClick(e);\r\n        }, this.await)\r\n    }\r\n\r\n    constructor() {\r\n        super();\r\n        this.baseOptions.registerLocalesModel = true;\r\n    }\r\n\r\n    render(): TemplateResult<1> {\r\n        return html`\r\n            <div class=\"container column\">\r\n                <fv-label class=\"space after\" class=\"header\">\r\n                    <slot style = \"font-weight: 700; font-size: 20px;\" name=\"title\">${LocaleService.translate(this.title, this.title)}</slot>\r\n                </fv-label>\r\n                <fv-label class=\"space after\">\r\n                    <slot style=\"font-size: 15px; color: #4a4a4a;\" name=\"message\">\r\n                        ${LocaleService.translate(this.message, this.message)}\r\n                    </slot>\r\n                </fv-label>\r\n            </div>\r\n            <div class=\"container row reverse\">\r\n                <fv-button @click=${this.OnClick}><slot name=\"button-title\">${LocaleService.translate(this.buttonTitle, this.buttonTitle)}</slot></fv-button>\r\n            </div>\r\n        `;\r\n    }\r\n}\r\n","import { css, html, unsafeCSS } from \"lit\";\nimport style from \"./search-dealer.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport \"../dealer.component\";\nimport \"../../standard/button/button.component\";\nimport \"../../standard/input/input/input.component\";\nimport \"../../standard/label/label.component\";\nimport \"../../standard/list/list-box.component\";\n\nimport { DealerComponent } from \"../dealer.component\";\nimport { RequestComponent } from \"../request\";\nimport { BaseElement } from \"../../standard/base/base.component\";\n\n@customElement(\"fv-search-dealer\")\nexport class SearchDealerComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Boolean, reflect: true })\n    active = true;\n\n    constructor() {\n        super();\n    }\n\n    private onClick (e: Event, component: DealerComponent) {\n        const requestComponent = this.parentNode ? this.parentNode.querySelector(\"fv-request\") as RequestComponent : null;\n        if (requestComponent) {\n            this.active = false;\n            requestComponent.name = component.name;\n            requestComponent.address = component.address;\n            requestComponent.active = true;\n        }\n    }\n\n    render() {\n        return html`\n            <div class=\"container column\">\n                <fv-label class=\"space after\">Ihre Postleitzahl</fv-label>\n                <fv-input placeholder=\"12345\">\n                    <fv-button>Suchen</fv-button>\n                </fv-input>\n            </div>\n            <fv-list-box>\n                <fv-dealer name=\"Händlername 1\"\n                                  address=\"Musterstraße 1, 12345 Musterstadt\"></fv-dealer>\n                <fv-dealer name=\"Händlername 2\"\n                                  address=\"Musterstraße 1, 12345 Musterstadt\"></fv-dealer>\n                <fv-dealer name=\"Händlername 3\"\n                                  address=\"Musterstraße 1, 12345 Musterstadt\"></fv-dealer>\n                <fv-dealer name=\"Händlername 4\"\n                                  address=\"Musterstraße 1, 12345 Musterstadt\"></fv-dealer>\n            </fv-list-box>\n        `;\n    }\n\n    firstUpdated() {\n        if (this.shadowRoot) {\n            const dealerComponents = this.shadowRoot.querySelectorAll(\"fv-dealer\");\n            dealerComponents.forEach((value) => {\n                const dealerComponent = value as DealerComponent;\n                dealerComponent.onClick = (e, component) => this.onClick(e, component);\n            });\n        }\n    }\n}\n","import {css, html, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./checkbox.component.sass?inline\";\nimport {customElement, property, query} from \"lit/decorators.js\";\nimport \"../label/label.component\";\nimport {BaseElement} from \"../base/base.component\";\nimport {event, EventRef} from \"@dh-software/lit-extensions\"\n\nimport {CheckboxVariantType, DhCheckbox} from \"@dh-software/dh-components\"\nimport {EventHandlerEvent} from \"../../../models/event-handler/event.handler.model\";\nimport {EventHandlerService} from \"../../../utils/event.handler.service\";\n\nexport interface CheckboxEvents {\n    on?: EventHandlerEvent[]\n    off?: EventHandlerEvent[]\n}\n\n@customElement(\"fv-checkbox\")\nexport class CheckboxComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({reflect: true, type: String})\n    name = \"\"\n\n    @property({reflect: true, type: Boolean})\n    checked = false\n\n    @property({type: String, reflect: true})\n    variant: CheckboxVariantType = \"checkbox\";\n\n    @property({type: Object, reflect: true})\n    events: CheckboxEvents = {};\n\n    @event({bubbles: false, composed: true})\n    changeEvent!: EventRef<boolean>\n\n    @query(\"dh-checkbox\")\n    private checkbox!: DhCheckbox;\n\n    @property()\n    onChange = (e: Event, component: CheckboxComponent): void => {\n        //empty\n    };\n\n    protected updated(changedProperties: PropertyValues<this>) {\n        if (changedProperties.has(\"checked\")) {\n            this.changeEvent.dispatch(this.checked)\n            this.onChange(new Event(\"change\"), this);\n            const events = this.events[this.checked ? \"on\" : \"off\"] ?? [];\n            EventHandlerService.dispatchEventList(events, false);\n        }\n        super.updated(changedProperties);\n    }\n\n    protected render(): TemplateResult<1> {\n        return html`\n            <fv-label>\n                <slot @slotchange=\"${this.onSlotChanged}\"></slot>\n            </fv-label>\n            <dh-checkbox variant=\"${this.variant}\" ?checked=\"${this.checked}\"\n                         @isChange=\"${({detail}: CustomEvent<boolean>) => this.checked = detail}\"></dh-checkbox>\n        `;\n    }\n\n    onSlotChanged({target}: Event) {\n        if (target instanceof HTMLSlotElement) {\n            target.assignedElements().forEach((node) => {\n                node.addEventListener(\"click\", (ev) => {\n                    if (!(ev.target instanceof HTMLLinkElement)) {\n                        this.checked = !this.checked\n                    }\n                });\n            })\n        }\n    }\n}\n","import{unsafeCSS as c,LitElement as h,html as a}from\"lit\";import{state as d,property as g,customElement as b}from\"lit/decorators.js\";const x=`:host {\n  display: flex;\n  justify-items: center;\n}\n\n.header-label {\n  padding: 12px;\n  --label-font-weight:bold;\n}\n\n.configuration-container {\n  justify-items: center;\n  border-radius: 0.9rem;\n  width: fit-content;\n  height: auto;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  border: solid #EEEEEE 2px;\n  background: #f0f0f0;\n  display: grid;\n}\n.configuration-container .reset-conf {\n  width: fit-content;\n  padding: 5px;\n  border: none;\n  border-radius: 8px;\n  font-size: 12px;\n  background-color: red;\n  cursor: pointer;\n  color: white;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  margin: 7px;\n}\n\n.field-input {\n  width: 240px;\n}\n\n.row-option-container {\n  display: flex;\n  justify-content: center;\n  padding: 2px 0;\n  column-gap: 10px;\n}\n\n.buttons-container {\n  display: flex;\n  gap: 10px;\n}\n\n.add-item-button {\n  width: 55px;\n  padding: 2px;\n  border: none;\n  border-radius: 8px;\n  font-size: 14px;\n  cursor: pointer;\n  transition: all 0.2s ease;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n}\n\n.delete-item-button {\n  width: 55px;\n  padding: 2px;\n  border: none;\n  border-radius: 8px;\n  font-size: 14px;\n  cursor: pointer;\n  background-color: red;\n  color: white;\n  transition: all 0.2s ease;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n}\n\n.add-group-button {\n  width: 55px;\n  padding: 2px;\n  border: none;\n  border-radius: 8px;\n  font-size: 14px;\n  cursor: pointer;\n  transition: all 0.2s ease;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  background-color: #c5c5c5;\n}\n\n.delete-group-button {\n  width: 100px;\n  padding: 2px;\n  border: none;\n  border-radius: 8px;\n  font-size: 14px;\n  cursor: pointer;\n  transition: all 0.2s ease;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  background-color: #f7931e;\n  color: white;\n}\n\n.add-group-button {\n  background-color: #c5c5c5;\n  color: white;\n}\n.add-group-button:hover {\n  background-color: #aaaaaa;\n  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n  transform: translateY(-1px);\n}\n\n.delete-item-button:hover {\n  background-color: #c70404;\n  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n  transform: translateY(-1px);\n}\n\n.delete-group-button:hover {\n  background-color: #f7931e;\n  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n  transform: translateY(-1px);\n}\n\n.row {\n  padding: 5px;\n  margin: 9px;\n  display: flex;\n  gap: 10px;\n  background: #e6e6e6;\n  border: none;\n  border-radius: 7px;\n  justify-content: center;\n}\n\n.row-item {\n  display: grid;\n  gap: 10px;\n}\n\n.buttons-container {\n  display: flex;\n  justify-content: center;\n}\n\ndialog {\n  border: none;\n  border-radius: 10px;\n  padding: 20px;\n  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n  width: 320px;\n}\n\nform {\n  display: flex;\n  flex-direction: column;\n  gap: 12px;\n}\n\n.dialog-buttons {\n  display: flex;\n  justify-content: flex-end;\n  gap: 8px;\n  margin-top: 12px;\n}\n\n.configuraion-container {\n  margin: 10px;\n}\n\n.configuration-group {\n  border: none;\n  padding: 5px;\n  background: #fffdfd;\n  border-radius: 4px;\n  margin: 5px;\n}`;var m=Object.defineProperty,f=Object.getOwnPropertyDescriptor,l=(e,t,n,o)=>{for(var r=o>1?void 0:o?f(t,n):t,s=e.length-1,p;s>=0;s--)(p=e[s])&&(r=(o?p(t,n,r):p(r))||r);return o&&r&&m(t,n,r),r};const u={entries:[[{name:\"name\",i18n:\"20322\",placeholder:\"Vorname*\",required:!0,autocomplete:\"given-name\"},{name:\"surname\",i18n:\"20323\",placeholder:\"Nachname*\",required:!0,autocomplete:\"family-name\"}],[{name:\"phone\",i18n:\"20381\",placeholder:\"Telefon*\",required:!0,autocomplete:\"tel\"},{name:\"email\",i18n:\"fv.email.homeviewer.send_request_customer.email\",placeholder:\"E-Mail*\",required:!0,autocomplete:\"email\"}],[{name:\"customerNo\",i18n:\"1610\",placeholder:\"Kundennummer\",autocomplete:\"section-customerNo\"},{name:\"adress\",i18n:\"20228\",placeholder:\"Adresse\",autocomplete:\"street-address\"}],[{name:\"companyName\",i18n:\"25024\",placeholder:\"Firmenname\",autocomplete:\"organization\"},{name:\"postcode\",i18n:\"25026\",placeholder:\"Postleitzahl\",autocomplete:\"postal-code\"}],[{name:\"city\",i18n:\"aiImageGen.city\",autocomplete:\"address-level2\",placeholder:\"Stadt\"}],[{inputTag:\"fv-text-box\",name:\"message\",i18n:\"60099\",placeholder:\"Ihre Nachricht\",autocomplete:\"off\"}]]};let i=class extends h{constructor(){super(...arguments),this.showDialog=!1,this.currentRowIndex=null,this.currentFieldInsertIndex=null,this.showInputTagField=!0,this.propertyData={entries:[]}}renderField(e,t,n){return a`\n            <div class=\"row-item\">\n                <div>${e.placeholder}</div>\n                <div style=\"display: flex; align-items: center; gap: 8px;\">\n                    ${this.decideInputType(e.inputTag)}\n                    <button\n                            class=\"add-item-button\"\n                            @click=${()=>this.openDialog(t,n+1,!1)}\n                    >\n                        Add\n                    </button>\n                </div>\n                <div class=\"buttons-container\">\n                    <button\n                            class=\"delete-item-button\"\n                            @click=${()=>this.deleteRowItem(t,n)}\n                    >\n                        Delete\n                    </button>\n                    <label style=\"display: flex; align-items: center; gap: 4px; font-size: 13px;\">\n                        <input\n                                type=\"checkbox\"\n                                .checked=${e.required||!1}\n                                @change=${o=>this.toggleRequired(o,t,n)}\n                        />\n                        Required\n                    </label>\n                </div>\n            </div>\n        `}set PropertyData(e){this.propertyData=e,this.requestUpdate()}setDefaultPropData(){this.propertyData=structuredClone(u),console.log(this.propertyData),this.requestUpdate()}decideInputType(e){return e===\"fv-text-box\"?a`<input style=\"width:300px; height:100px;\"></input>`:a`\n                <dh-input></dh-input>`}addNewGroup(e){this.propertyData.entries.splice(e,0,[]),this.currentRowIndex=e,this.showInputTagField=!0,this.requestUpdate(),this.openDialog(this.currentRowIndex)}deleteGroup(e){this.propertyData.entries.splice(e,1),this.requestUpdate()}toggleRequired(e,t,n){const o=e.target.checked;this.propertyData.entries[t][n].required=o,this.requestUpdate()}renderGroups(){return this.propertyData.entries.length===0?a`\n                <div style=\"display:flex; justify-items:center;\">\n                    <button class=\"add-group-button\" @click=${()=>this.addNewGroup(0)}> +</button>\n                </div>\n            `:a`${this.propertyData.entries.map((e,t)=>this.renderRow(e,t))}`}renderRow(e,t){return e.length===0?a`\n                <div class=\"configuration-group\">\n                    <div class=\"row\">\n                        <button class=\"add-item-button\" @click=${()=>this.openDialog(t,0,!1)}>Add</button>\n                    </div>\n                    <div class=\"row-option-container\">\n                        <button class=\"add-group-button\" @click=${()=>this.addNewGroup(t+1)}> +</button>\n                        <button class=\"delete-group-button\" @click=${()=>this.deleteGroup(t)}>Delete group\n                        </button>\n                    </div>\n                </div>\n            `:a`\n                <div class=\"configuration-group\">\n                    <div class=\"row\">\n                        ${e.map((n,o)=>this.renderField(n,t,o))}\n                    </div>\n                    <div class=\"row-option-container\">\n                        <button class=\"add-group-button\" @click=${()=>this.addNewGroup(t+1)}> +</button>\n                        <button class=\"delete-group-button\" @click=${()=>this.deleteGroup(t)}>Delete group\n                        </button>\n                    </div>\n                </div>\n            `}openDialog(e,t=null,n=!0){this.currentRowIndex=e,this.currentFieldInsertIndex=t,this.showDialog=!0,this.showInputTagField=n,this.renderRoot.querySelector(\"dialog\").showModal()}closeDialog(){this.renderRoot.querySelector(\"dialog\").close(),this.showDialog=!1}handleSubmit(e){e.preventDefault();const t=e.target,n=Object.fromEntries(new FormData(t).entries()),o={name:String(n.name||\"\"),placeholder:n.placeholder?String(n.placeholder):void 0,i18n:n.i18n?String(n.i18n):void 0,required:n.required===\"true\"};let r;if(n.inputTag?n.inputTag===\"input\"?r=o:r={...o,...this.showInputTagField?{inputTag:String(n.inputTag)}:{}}:r=o,n.autocomplete&&String(n.autocomplete).length>0&&(r={...o,autocomplete:String(n.autocomplete)}),this.currentRowIndex!=null){const s=this.currentFieldInsertIndex??this.propertyData.entries[this.currentRowIndex].length;this.propertyData.entries[this.currentRowIndex].splice(s,0,r),this.requestUpdate()}t.reset(),this.closeDialog()}deleteRowItem(e,t){this.propertyData.entries[e].splice(t,1),this.requestUpdate()}render(){return a`\n            <div class=\"configuration-container\">\n                <fv-label class=\"header-label\">Request-Configurator-Json</fv-label>\n                ${this.renderGroups()}\n                <div>\n                    <button @click=\"${this.setDefaultPropData}\" class=\"reset-conf\">Reset Configuration</button>\n                </div>\n            </div>\n\n            <dialog>\n                <form @submit=${this.handleSubmit}>\n                    <label>\n                        Name:\n                        <input name=\"name\" required/>\n                    </label>\n                    <label>\n                        i18n:\n                        <input name=\"i18n\" required/>\n                    </label>\n                    <label>\n                        Placeholder:\n                        <input name=\"placeholder\" required/>\n                    </label>\n                    <label>\n                        Required:\n                        <select name=\"required\">\n                            <option value=\"true\">true</option>\n                            <option value=\"false\" selected>false</option>\n                        </select>\n                    </label>\n                    <label>\n                        Autocomplete id:\n                        <input name=\"autocomplete\" required/>\n                        <a href=\"https://developer.mozilla.org/de/docs/Web/HTML/Attributes/autocomplete\"\n                           target=\"_blank\"\n                           style=\"\n\t\t\t\t\t\tdisplay:inline-block;\n\t\t\t\t\t\tmargin-left:6px;\n\t\t\t\t\t\tcursor:pointer;\n\t\t\t\t\t\tfont-weight:bold;\n\t\t\t\t\t\tbackground:#ddd;\n\t\t\t\t\t\tborder-radius:50%;\n\t\t\t\t\t\tpadding:0 6px;\n\t\t\t\t\t\ttext-decoration:none;\n\t\t\t\t\t\tcolor:black;\n\t\t\t\t\t\t\"\n                           title=\"Alle autocomplete IDs auf Deutsch ansehen\">\n                            ?\n                        </a>\n\n                    </label>\n\n                    ${this.showInputTagField?a`\n                        <label>\n                            InputTag:\n                            <select name=\"inputTag\" required>\n                                <option value=\"input\" selected>Input</option>\n                                <option value=\"fv-text-box\">fv-text-box</option>\n                            </select>\n                        </label>`:null}\n\n                    <div class=\"dialog-buttons\">\n                        <button type=\"button\" class=\"cancel-btn\" @click=${this.closeDialog}>Cancel</button>\n                        <button type=\"submit\" class=\"save-btn\">Save</button>\n                    </div>\n                </form>\n            </dialog>\n        `}};i.styles=c(x),l([d()],i.prototype,\"showDialog\",2),l([d()],i.prototype,\"currentRowIndex\",2),l([d()],i.prototype,\"currentFieldInsertIndex\",2),l([d()],i.prototype,\"showInputTagField\",2),l([g({type:Array})],i.prototype,\"propertyData\",2),i=l([b(\"request-configuration-component\")],i);export{u as DEFAULT_DEFINES,i as RequestConfigurationComponent};\n","import {css, html, unsafeCSS} from \"lit\";\nimport style from \"./request.component.sass?inline\";\nimport {customElement, property, queryAll} from \"lit/decorators.js\";\nimport {ifDefined} from \"lit/directives/if-defined.js\";\nimport \"../dealer.component\";\nimport \"../../standard/modal/message/message.component\";\nimport \"../search-dealer/search-dealer.component\";\nimport \"../../standard/input/input/input.component\";\nimport \"../../standard/button/button.component\";\nimport \"../../standard/label/label.component\";\nimport \"../../standard/text-box/text-box.component\";\nimport \"../../standard/checkbox/checkbox.component\";\n\nimport {DealerComponent} from \"../dealer.component\";\nimport {MessageComponent} from \"../../standard/modal/message/message.component\";\nimport {SearchDealerComponent} from \"../search-dealer/search-dealer.component\";\nimport {InputComponent} from \"../../standard/input/input/input.component\";\nimport {CheckboxComponent} from \"../../standard/checkbox/checkbox.component\";\nimport {BaseElement} from \"../../standard/base/base.component\";\nimport {BaseInput} from \"../../standard/input/base/base-input\";\nimport {CloudIdService} from \"../../../utils/cloud-id.service\";\nimport {CommunicationMessageService, LocaleService, MailerService, RequestService} from \"@dh-software/webui-api\";\nimport {ConstructionService} from \"@dh-software/webui-configuration-parser\";\nimport {FormDefine, InputFieldDefine, IStore, IStoreTree} from \"@dh-software/webui-types\"\nimport {LabeledInputComponent} from \"../../standard/input\";\nimport { DEFAULT_DEFINES } from \"@dh-software/request-configurator-ui\";\n\n@customElement(\"fv-request\")\nexport class RequestComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`\n            ${unsafeCSS(style)}\n        `\n    ];\n\n\n    @queryAll(\"fv-labeled-input\")\n    _inputBoxes?: NodeListOf<LabeledInputComponent<any>>;\n\n    @queryAll(\"fv-labeled-input[required]\")\n    _requiredInputBoxes?: NodeListOf<LabeledInputComponent<any>>;\n\n    get inputBoxes() {\n        return Array.from(this._inputBoxes || []);\n    }\n\n    get requiredInputBoxes() {\n        return Array.from(this._requiredInputBoxes || []);\n    }\n\n    @property({type: Array})\n    propertyData = DEFAULT_DEFINES;\n\n    @property({type: Boolean, reflect: true})\n    active = false;\n\n    @property({type: String})\n    name = \"\";\n\n    @property({type: String})\n    address = \"\";\n\n    @property({type: String, reflect: true})\n    privacyLink = \"#\";\n\n    @property({type: String, reflect: true})\n    templateName = \"request-mail\"\n\n    @property({type: Boolean, reflect: true})\n    sendCopy = false;\n\n    @property()\n    onSubmit = async (e: Event, nameValueList: { [key: string]: string }): Promise<void> => {\n        const email = nameValueList[\"email\"] || undefined;\n        if (!email) {\n            return;\n        }\n        const cloudId = await CloudIdService.getCloudId();\n        nameValueList[\"cloudId\"] = cloudId;\n        await RequestService.Initialized;\n        const customMailService = ConstructionService.CustomMailService || undefined;\n        MailerService.sendConfiguredMail({\n            name: this.templateName,\n            values: Object.entries(nameValueList).map(x => {\n                return {key: x[0], value: x[1]}\n            }),\n            cloudIds: [cloudId],\n            customMailService: customMailService ? customMailService : undefined,\n            to: this.sendCopy ? email : \"\",\n            buyingGroup: window.g_configuration.furnplan_article_url_configurator_verband,\n            language: LocaleService.language\n        });\n    }\n\n    //Workaround autosave Chrome\n    // private fillRequiredInputs(id: string): void {\n    //     const input = this.renderRoot.querySelector(`input#${id}`) as HTMLInputElement | null;\n    //     if (input) {\n    //         input.value = \"Ersetzen Sie durch Ihren eigenen Wert\";\n    //     }\n    // }\n\n    private renderRows() {\n        return html`\n            ${this.propertyData?.entries?.map(row => html`\n                        <div class=\"row\">\n                            ${row.map(field => this.renderField(field))}\n                        </div>\n                    `\n            )}  \n        `;\n    }\n\n    private renderField(field: InputFieldDefine) {\n        return html`\n            <fv-labeled-input\n                    name=${field.name}\n                    textid=${field.i18n}\n                    placeholder=${field.placeholder}\n                    ?required=${field.required ?? false}\n                    inputTag=${ifDefined(field.inputTag)}\n                    autocomplete=\"${field.autocomplete && field.autocomplete.length > 0 ? field.autocomplete : field.name}\">\n            </fv-labeled-input>\n        `;\n    }\n\n    onMessageClickDefault() {\n        const dealerComponent = this.renderRoot.querySelector(\"fv-dealer\") as DealerComponent;\n        const searchDealerComponent = this.parentNode ? this.parentNode.querySelector(\"fv-search-dealer\") as SearchDealerComponent : null;\n        const messageComponent = this.parentNode ? this.parentNode.querySelector(\"fv-message\") as MessageComponent : null;\n        const divElements = this.parentNode ? this.parentNode.querySelectorAll(\"div\") : null;\n        const submitButton = this.renderRoot.querySelector(\"fv-button\") as DealerComponent;\n\n        if (messageComponent) {\n            if (divElements) {\n                divElements.forEach((value) => {\n                    value.classList.remove(\"hidden\");\n                });\n            }\n\n            this.reset();\n            messageComponent.active = false;\n\n            if (dealerComponent && searchDealerComponent) {\n                searchDealerComponent.active = true;\n            } else {\n                this.active = true;\n            }\n        }\n    }\n\n    onMessageClick?: (e: Event) => void;\n\n    // alias\n    onmessageclick?: (e: Event) => void;\n\n    constructor() {\n        super();\n        this.initDealerStores();\n    }\n\n    private _dealerStoreTree: IStoreTree | undefined = undefined;\n    private _selectedStore: IStore | undefined = undefined;\n\n    private async initDealerStores() {\n        const dealerStoreTree = await CommunicationMessageService.getStoreTree();\n        this._dealerStoreTree = dealerStoreTree;\n        if (this._dealerStoreTree?.Stores?.length === 1) {\n            this._selectedStore = this._dealerStoreTree.Stores[0];\n        }\n\n        this.requestUpdate();\n    }\n\n    get StoreSelection(): boolean {\n        return !!(this._dealerStoreTree && this._dealerStoreTree.Stores && this._dealerStoreTree.Stores.length > 1);\n    }\n\n    private selectStoreLocation(store_: IStore) {\n        this._selectedStore = store_;\n    }\n\n    private toggleRadio(ev: Event) {\n        const div = ev.currentTarget as HTMLElement;\n        const radio = div.querySelector(\"fv-radio\") as HTMLElement;\n\n        if (radio) {\n            radio.click();\n        }\n    }\n\n    render() {\n        const fvDealer = this.name && this.address;\n        return html`\n            <iframe name=\"hidden_frame\" style=\"display:none;\"></iframe>\n            <form autocomplete=\"on\" action=\"/submit\" method=\"POST\" target=\"hidden_frame\">\n                ${this.renderRows()}\n                ${this.StoreSelection ? html`\n                    <div class=\"container row\">\n                        <fv-list-box class=\"store-tree flex\">\n                            ${this._dealerStoreTree?.Stores?.map((store: IStore) => html`\n                                <div class=\"store-location\" @click=\"${this.toggleRadio}\">\n                                    <fv-radio\n                                            name=\"store\"\n                                            class=\"store-selection mask-image\"\n                                            closest-query=\".store-tree\"\n                                            @click=\"${() => this.selectStoreLocation(store)}\"\n                                            mark-parent\n                                    >\n                                    </fv-radio>\n                                    <div class=\"store-location-info\">\n                                        <fv-label>${store.firma.trim()}</fv-label>\n                                        <fv-label>${store.strasse_haus.trim()} • ${store.plz.trim()} •\n                                            ${store.ort.trim()}\n                                        </fv-label>\n                                    </div>\n                                </div>`\n                            )}\n                        </fv-list-box>\n                    </div>` : html``\n                }\n\n                <div class=\"container column\">\n                    <fv-checkbox>\n                        <span><span i18n=\"i_have_read\">Ich habe die</span> <a target=\"_blank\" i18n=\"privacy_policy\"\n                                                                              .href=\"${this.privacyLink}\"> Datenschutzerklärung</a> <span\n                                i18n=\"and_agree_with_this\"> gelesen und stimme dieser zu.</span></span>\n                    </fv-checkbox>\n                </div>\n\n                <div>\n                    ${fvDealer ?\n                            html`\n                                <fv-dealer type=\"submit\" name=\"${this.name}\" address=\"${this.address}\"\n                                           i18n=\"send_inquiry\" disabled>Anfrage absenden\n                                </fv-dealer>` :\n                            html`\n                                <button type=\"submit\" i18n=\"send_inquiry\" disabled>Anfrage absenden</button>`\n                    }\n                </div>\n            </form>\n        `;\n    }\n\n    onSubmitPreventReload(ev: Event) {\n        ev.preventDefault();\n    }\n\n    firstUpdated() {\n        let requestData = window.g_configuration?.sendRequestJSON?.entries;\n        if (requestData) {\n            this.propertyData.entries = requestData;\n        }\n        if (this.renderRoot) {\n\n            const dealerComponent = this.renderRoot.querySelector(\"fv-dealer\") as DealerComponent;\n            const submitButton = this.renderRoot.querySelector(\"fv-button\") as DealerComponent;\n            const checkboxComponent = this.renderRoot.querySelector(\"fv-checkbox\") as CheckboxComponent;\n\n            const validateData = () => {\n                if (dealerComponent) dealerComponent.disabled = true;\n                else if (submitButton) submitButton.disabled = true;\n                if (this.StoreSelection && this._selectedStore == undefined) return;\n                if (checkboxComponent.checked) {\n                    for (let i = 0; i < this.requiredInputBoxes.length; i++) {\n                        const requiredInput = this.requiredInputBoxes[i];\n                        if (requiredInput.value.trim().length === 0) {\n                            break;\n                        }\n                        if (i + 1 === this.requiredInputBoxes.length) {\n                            if (dealerComponent) dealerComponent.disabled = false;\n                            else if (submitButton) submitButton.disabled = false;\n                        }\n                    }\n                }\n            };\n\n            checkboxComponent.onChange = (e: Event, component: CheckboxComponent) => {\n                validateData();\n            };\n            this.requiredInputBoxes.forEach((input: BaseInput<HTMLInputElement>) => {\n                input.onChange = (e: Event, component: BaseInput<HTMLInputElement>) => {\n                    validateData();\n                };\n            });\n\n            this.addEventListener(\"radio-click\", () => {\n                validateData();\n            });\n\n            const submitFunction = async (e: Event) => {\n                if (checkboxComponent && checkboxComponent.checked) {\n                    this.active = false;\n                    const messageComponent = this.parentNode ? this.parentNode.querySelector(\"fv-message\") as MessageComponent : null;\n                    const nameValueList: { [key: string]: string } = {};\n                    this.inputBoxes.forEach((value: BaseInput<HTMLInputElement>) => {\n                        if (value.name) nameValueList[value.name] = value.value;\n                    });\n\n                    if (this._selectedStore) {\n                        nameValueList[\"branchName\"] = this._selectedStore.firma.trim();\n                        nameValueList[\"branchAddress\"] = `${this._selectedStore.strasse_haus.trim()} - ${this._selectedStore.plz.trim()} - ${this._selectedStore.ort.trim()}`;\n                    }\n\n                    await this.onSubmit(e, nameValueList);\n                    if (messageComponent) {\n                        const divElements = this.parentNode ? this.parentNode.querySelectorAll(\"div\") : null;\n                        if (divElements) {\n                            divElements.forEach((value) => {\n                                value.classList.add(\"hidden\");\n                            });\n                        }\n                        messageComponent.active = true;\n                        messageComponent.onClick = (e: Event) => {\n                            const handler = this.onmessageclick || this.onMessageClick;\n\n                            this.onMessageClickDefault();\n\n                            if (handler) {\n                                handler.call(this, e);\n                            }\n\n                            this.dispatchEvent(new CustomEvent(\"messageclick\"));\n                        };\n                    }\n                }\n            };\n            if (dealerComponent) dealerComponent.onClick = submitFunction;\n            else if (submitButton) submitButton.addEventListener(\"click\", submitFunction);\n        }\n        // this.fillRequiredInputsWithId(\"city\")\n\n    }\n\n    public reset() {\n        if (this.renderRoot) {\n            const dealerComponent = this.renderRoot.querySelector(\"fv-dealer\") as DealerComponent;\n            const submitButton = this.renderRoot.querySelector(\"fv-button\") as DealerComponent;\n            const inputBoxes = this.renderRoot.querySelectorAll(\"fv-labeled-input\") as NodeListOf<InputComponent>;\n            const checkboxComponent = this.renderRoot.querySelector(\"fv-checkbox\") as CheckboxComponent;\n            checkboxComponent.checked = false;\n            inputBoxes.forEach((input: BaseInput<HTMLInputElement>) => {\n                input.value = \"\";\n            });\n            if (submitButton) submitButton.disabled = true;\n            if (dealerComponent) dealerComponent.disabled = true;\n        }\n    }\n}\n","import { css, html, LitElement, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./dot-flashing-loader.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\n\n@customElement(\"fv-dot-flashing-loader\")\nexport class DotFlashingLoaderComponent extends LitElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    className = \"dot-flashing\";\n\n    constructor() {\n        super();\n    }\n\n    render(): TemplateResult<1> {\n        return html``;\n    }\n}\n","import { ReactiveController, ReactiveControllerHost } from \"lit\";\n\nexport class ClockController implements ReactiveController {\n    private _host: ReactiveControllerHost;\n    private _timeout: number;\n    private _timerID?: number;\n    private _callback: () => Promise<boolean>;\n    constructor(host_: ReactiveControllerHost, timeout_ = 1000, callback_: () => Promise<boolean>) {\n        (this._host = host_).addController(this);\n        this._timeout = timeout_;\n        this._callback = callback_;\n    }\n    hostConnected() {\n        // Start a timer when the host is connected\n        this._timerID = +setInterval(async () => {\n            if (await this._callback()) {\n                this._host.requestUpdate();\n            }\n        }, this._timeout);\n    }\n    hostDisconnected() {\n        // Clear the timer when the host is disconnected\n        clearInterval(this._timerID);\n        this._timerID = undefined;\n    }\n}\n","export interface IDeferHelperClass extends Promise<any> {\n    resolve: Function\n    reject: Function\n}\n\nexport function DeferHelperClass(): IDeferHelperClass {\n    let resolveExternally: (value?: any) => void;\n    let rejectExternally: (value?: any) => void;\n\n    const promise: any = new Promise((resolve, reject) => {\n        resolveExternally = resolve;\n        rejectExternally  = reject;\n    });\n\n    promise.resolve = function (parameters: any) {\n        resolveExternally.apply(this, parameters);\n        return promise;\n    }\n\n    promise.reject = function (error: any) {\n        rejectExternally.apply(this, error);\n        return promise;\n    }\n\n    return promise;\n}\n","\nimport { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./loading-modal.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { ModalComponent } from \"../../modal/modal.component\";\nimport \"../loader/dot-flashing/dot-flashing-loader.component\";\nimport { ClockController } from \"../controller/clock.controller\";\nimport {EventService, LocaleService, WebViewerService} from \"@dh-software/webui-api\";\nimport { ConfiguratorApiDataService } from \"../../../../utils/configurator-api.data.service\";\nimport { DeferHelperClass } from \"../../../../utils/defer-helper.class\";\n\n@customElement(\"fv-loading-modal\")\nexport class LoadingModalComponent extends ModalComponent {\n    private _clockController: ClockController;\n    public clockInterval = 5000;\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private _textIndex = 0;\n\n    @query(\".head-text\")\n    private headText?: HTMLSpanElement;\n\n    @query(\".main-text\")\n    private mainText?: HTMLSpanElement;\n\n    @property({type: Boolean, attribute: \"auto-hide\"})\n    autoHide: boolean = true;\n\n    protected fullScreen = true;\n    protected hasBackground = true;\n\n    constructor() {\n        EventService.on(\"construction:initialize\", ()=>{\n            this._constructionDefer.resolve();\n        });\n\n        super();\n        this._clockController = new ClockController(this, this.clockInterval, this.changeText);\n    }\n\n    private changeText = async () => {\n        if (this.active) {\n            this._textIndex++;\n            if (!LocaleService.exists(\"modal.loading.main-text.\" + this._textIndex)) {\n                this._textIndex = 0;\n            }\n            if (this.mainText) {\n                this.mainText.classList.add(\"fade-out\");\n                this.mainText.textContent = LocaleService.translate(\"modal.loading.main-text.\" + this._textIndex, \"\");\n                this.mainText.classList.remove(\"fade-out\");\n            }\n\n            if (this.headText) {\n                this.headText.classList.add(\"fade-out\");\n                this.headText.textContent = LocaleService.translate(\"modal.loading.head-text.\" + this._textIndex, \"\");\n                this.headText.classList.remove(\"fade-out\");\n            }\n        }\n        return this.active;\n    }\n\n    private _constructionDefer = DeferHelperClass();\n\n    protected async firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n\n        await WebViewerService.IsAppReady;\n        await this._constructionDefer;\n        await ConfiguratorApiDataService.DataPromise;\n        if(this.autoHide) {\n            this.hide(true, true);\n        }\n    }\n\n    render(): TemplateResult<1> {\n        return super.build(html`\n            <div class=\"content\" part=\"loadingContent\">\n                <slot>\n                    <div part=\"loadingHeadText\" class=\"head-text\" i18n=\"modal.loading.head-text.0\"></div>\n                    <div part=\"loadingMainText\" class=\"main-text\" i18n=\"modal.loading.main-text.0\"></div>\n                </slot>\n            </div>\n            <div class=\"footer\">\n                <div class=\"text\" i18n=\"modal.loading.footer-text\"></div>\n                <slot name=\"loader-slot\">\n                    <fv-dot-flashing-loader></fv-dot-flashing-loader>\n                </slot>\n            </div>\n        `);\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./rotating-dots-loader.component.sass?inline\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../../base/base.component\";\n\n@customElement(\"fv-rotating-dots-loader\")\nexport class RotatingDotsLoaderComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n    }\n\n    render(): TemplateResult<1> {\n        return html`<div class=\"loader\"></div>`;\n    }\n}","import { customElement, property } from \"lit/decorators.js\";\r\nimport style from './configurator-form-loading.component.sass?inline'\r\nimport { css, html, TemplateResult, unsafeCSS } from \"lit\";\r\nimport { ModalComponent } from \"../../modal/modal.component\";\r\nimport { CommunicationMessageService, EventHandler, EventService } from \"@dh-software/webui-api\";\r\nimport { IConfiguratorApiFetchEventData } from \"../../../../utils/configurator-api.data.service\";\r\n\r\n@customElement(\"fv-configurator-form-loading-modal\")\r\nexport class ConfiguratorFormLoadingModalComponent extends ModalComponent {\r\n\r\n\tstatic styles = [\r\n\t\tsuper.styles || [],\r\n\t\tcss`${unsafeCSS(style)}`\r\n\t];\r\n\r\n\tconstructor(){\r\n\t\tsuper();\r\n\t\tEventService.register(this);\r\n\t}\r\n\r\n\t@EventHandler('configurator-api-fetch')\r\n\tasync onConfiguratorAPIFetch(data: IConfiguratorApiFetchEventData){\r\n\t\tthis.active = true;\r\n\t\ttry{\r\n\t\t\tawait data.promise;\r\n\t\t\tawait CommunicationMessageService.getSceneFullyLoaded();\r\n\t\t}\r\n\t\tfinally{\r\n\t\t\tthis.active = false;\r\n\t\t}\r\n\t}\r\n\r\n\trender(): TemplateResult<1> {\r\n\tif (!this.active) {\r\n\t  return html``;\r\n    }\r\n    return html`\r\n\t\t<div class=\"loader-content\">\r\n\t\t\t<div class=\"spinner\"></div>\r\n\t\t    <span class=\"label\" i18n=\"fv-form-loading-text\"></span>\r\n\t\t</div>\r\n    `;\r\n  }\r\n}\r\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./progress.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport { classMap } from \"lit/directives/class-map.js\";\n\n@customElement(\"fv-progress\")\nexport class ProgressComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Boolean, reflect: true })\n    active = false\n\n    @property({ type: Boolean, reflect: true })\n    finished = false\n\n    constructor() {\n        super();\n    }\n\n    public show(): void {\n        this.active = true;\n        this.finished = false;\n    }\n\n    public hide(): void {\n        this.active = false;\n        this.finished = false;\n    }\n\n\n\n    render(): TemplateResult<1> {\n        const classes = {\n            \"circle\": true,\n            \"load-complete\": this.finished\n        };\n        return html`\n            <div class=${classMap(classes)}>\n                <div class=\"checkmark draw\"></div>\n            </div>\n        `;\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./popup.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-popup\")\nexport class PopupComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n    @property({ type: Boolean, reflect: true })\n    public pointer = true;\n\n    @property({ type: HTMLElement })\n    private _owner: HTMLElement | undefined;\n    public set owner(element_: HTMLElement) {\n        this._owner = element_;\n        this.requestUpdate();\n    }\n\n    @property({ type: Boolean, reflect: true })\n    public transparent = false;\n\n    get IsActive(): boolean {\n        return this.classList.contains(\"active\");\n    }\n\n    constructor(owner_?: HTMLElement) {\n        super();\n        if (owner_) this._owner = owner_;\n\n        this.addEventListener(\"click\", (e) => {\n            e.preventDefault();\n            e.stopPropagation();\n        });\n        window.addEventListener(\"resize\", () => {\n            this.requestUpdate();\n        });\n    }\n\n    public show(): void {\n        this.classList.add(\"active\");\n        this.requestUpdate();\n    }\n\n    public hide(): void {\n        this.classList.remove(\"active\");\n        this.requestUpdate();\n    }\n\n\n    render(): TemplateResult<1> {\n        if (this._owner) {\n            const bb = this._owner.getBoundingClientRect();\n            const height = Number.parseFloat(getComputedStyle(this)[\"height\"].replace(\"px\", \"\"));\n            this.style.setProperty(\"top\", (bb.top - height) + \"px\");\n            if (this.pointer) {\n                this.classList.add(\"pointer\", \"bottom\");\n                const width = Number.parseFloat(getComputedStyle(this)[\"width\"].replace(\"px\", \"\"));\n                this.style.setProperty(\"left\", (bb.left + (bb.width / 2 - width / 2)) + \"px\");\n            }\n            else {\n                this.classList.remove(\"pointer\", \"bottom\");\n                this.style.removeProperty(\"left\");\n            }\n        }\n        return html`\n            <slot></slot>\n            <div>\n            </div>\n        `;\n    }\n}\n\n\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./popup-closer.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { PopupComponent } from \"./popup.component\";\nimport { ComponentService } from \"../../../utils/component.service\";\n\nimport { BaseElement } from \"../base/base.component\";\n\n\n@customElement(\"fv-popup-closer\")\nexport class PopupCloserComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true, attribute: \"popup-selector\" })\n    public popupSelector = \"\";\n\n    constructor() {\n        super();\n\n        this.addEventListener(\"mousedown\", (e) => {\n            const popupComponent: PopupComponent = ComponentService.find(\"FV-POPUP\", this.popupSelector ? this.popupSelector : \"\") as PopupComponent;\n            if (popupComponent) {\n                popupComponent.hide();\n                this.hide();\n            }\n        });\n    }\n\n    render(): TemplateResult<1> {\n        return html``;\n    }\n\n    public show() {\n        this.classList.add(\"active\");\n    }\n    public hide() {\n        this.classList.remove(\"active\");\n    }\n}","import { css, html, unsafeCSS } from \"lit\";\nimport style from \"./hr-item.component.sass?inline\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BaseElement } from \"../standard/base/base.component\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-hr-item\")\nexport class HRItemComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private readonly _hash: string;\n\n    constructor(hash_: string, parameters_: { previewImageFile: string }) {\n        super();\n        this._hash = hash_;\n        if (hash_ === \"none\") {\n            this.classList.add(\"return\");\n        }\n        else {\n            this.style.setProperty(\"background-image\", `url(${parameters_.previewImageFile})`);\n        }\n        this.addEventListener(\"click\", async(e) => {\n            e.preventDefault();\n            e.stopPropagation();\n            if (this._hash) {\n                await CommunicationMessageService.setHRThemes(this._hash);\n                this.dispatchEvent(new CustomEvent(\"onChange\", { detail: { reset: this._hash === \"none\" } }));\n            }\n        });\n    }\n\n    render() {\n        return html`\n        `;\n    }\n}\n","import {CommunicationMessageService} from \"@dh-software/webui-api\";\n\nexport interface IARExportData {\n    qr: string;\n    url: string;\n}\n\nclass HRThemeModelClass {\n    async get(): Promise<{ [key: string]: { previewImageFile: string } }> {\n        return CommunicationMessageService?.getHRThemes();\n    }\n}\n\nexport const HRThemeModel = new HRThemeModelClass();\n","import { css, html, PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./hr-list.component.sass?inline\";\nimport { property, customElement, query, queryAll } from \"lit/decorators.js\";\nimport { HRThemeModel } from \"../../models/hr/hr-theme.model\";\nimport { HRItemComponent } from \"./hr-item.component\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { StyleHelper } from \"../../utils/style.helper\";\nimport { BaseElement } from \"../standard/base/base.component\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-hr-list\")\nexport class HRListComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @query(\".content\")\n    private _content: HTMLDivElement | undefined;\n    @queryAll(\".arrow\")\n    private _arrows: Array<HTMLDivElement> | undefined;\n    @queryAll(\".arrow-button\")\n    private _arrowButtons: Array<HTMLDivElement> | undefined;\n\n\n    @property({ type: Boolean, reflect: true, attribute: \"reset-camera-view\" })\n    public resetCameraView = false;\n\n    private _list: {[key: string]: { previewImageFile: string }} = { \"none\": { previewImageFile: \"\" } };\n\n    constructor() {\n        super();\n        window.addEventListener(\"resize\", () => {\n            this.onResize();\n        });\n    }\n\n\n    public onResize() {\n        this._arrows?.forEach((arrow) => {\n            arrow.classList[this._content && this._content.scrollWidth > this._content.clientWidth ? \"remove\" : \"add\"](\"invisible\");\n        });\n    }\n\n    async connectedCallback() {\n        this._list = Object.assign(this._list, await HRThemeModel.get());\n        super.connectedCallback();\n    }\n\n    protected shouldUpdate(_changedProperties: PropertyValues): boolean {\n        return super.shouldUpdate(_changedProperties);\n    }\n\n    protected updated(_changedProperties: PropertyValues) {\n        super.updated(_changedProperties);\n        this.onResize();\n    }\n\n    private onWheel(evt: WheelEvent) {\n        evt.preventDefault();\n        (evt.currentTarget as HTMLDivElement).scrollLeft += evt.deltaY;\n    }\n\n    private onRightArrowClick() {\n        if (this._content) {\n            for (let i = this._content.children.length - 1; i >= 0; i--) {\n                if (StyleHelper.isElementInView(this._content.children[i] as HTMLElement, this._content as HTMLElement)) {\n                    if (StyleHelper.isElementInView(this._content.children[i] as HTMLElement, this._content as HTMLElement, true)) {\n                        if (this._content.children[i + 1]) {\n                            this._content.children[i + 1].scrollIntoView({ inline: \"center\", block: \"end\", behavior: \"smooth\" });\n                        }\n                    }\n                    else {\n                        if (this._content.children[i]) {\n                            this._content.children[i].scrollIntoView({ inline: \"center\", block: \"end\", behavior: \"smooth\" });\n                        }\n                    }\n                    break;\n                }\n            }\n        }\n    }\n\n    private onLeftArrowClick() {\n        if (this._content) {\n            for (let i = 0; i < this._content.children.length; i++) {\n                if (StyleHelper.isElementInView(this._content.children[i] as HTMLElement, this._content as HTMLElement)) {\n                    if (StyleHelper.isElementInView(this._content.children[i] as HTMLElement, this._content as HTMLElement, true)) {\n                        if (this._content.children[i - 1]) {\n                            this._content.children[i - 1].scrollIntoView({ inline: \"center\", block: \"end\", behavior: \"smooth\" });\n                        }\n                    }\n                    else {\n                        if (this._content.children[i]) {\n                            this._content.children[i].scrollIntoView({ inline: \"center\", block: \"end\", behavior: \"smooth\" });\n                        }\n                    }\n                    break;\n                }\n            }\n        }\n    }\n\n\n    render() {\n        const arrowClass = {\n            arrow: true,\n            invisible: true\n        };\n        return html`\n            <div class=\"${classMap(arrowClass)}\">\n                <div class=\"arrow-button\" @click=\"${this.onLeftArrowClick}\">\n                    <i class=\"arrow-icon left\"></i>\n                </div>\n            </div>\n            <div class=\"content\" @wheel=\"${this.onWheel}\">\n            ${\n    Object.keys(this._list).map((hash: string ) => {\n        return (()=>{\n            const item = new HRItemComponent(hash, this._list[hash]);\n            item.addEventListener(\"onChange\", (e:unknown) => {\n                const event: CustomEvent = e as CustomEvent;\n                this.dispatchEvent(new CustomEvent(\"onChange\", { \"detail\": event.detail }));\n\n                if (this.resetCameraView) {\n                    if (event.detail && event.detail.reset) {\n                        CommunicationMessageService.resetCameraView(false);\n                    }\n                }\n            });\n            return item;\n        })();\n    })\n}\n            </div>\n            <div class=\"${classMap(arrowClass)}\">\n                <div class=\"arrow-button\" @click=\"${this.onRightArrowClick}\">\n                    <i class=\"arrow-icon right\"></i>\n                </div>\n            </div>\n        `;\n    }\n}\n","import {customElement, property, query} from \"lit/decorators.js\";\nimport {css, html, nothing, PropertyValueMap, PropertyValues, unsafeCSS} from \"lit\";\nimport style from \"./pp-container.component.sass?inline\";\nimport {BaseElement} from \"../../standard/base/base.component\";\nimport {DropDownComponent, DropdownItemComponent} from \"../../standard/dropdown\";\nimport {AccordionComponent, AccordionItemComponent} from \"../../standard/accordion\";\nimport {ConfigurationService, RequestService, WebViewerService} from \"@dh-software/webui-api\";\nimport {IGetPropTransferParams, IModifyPropertyOptions} from \"@dh-software/webui-types\";\nimport {IDropdownItem} from \"../../standard/dropdown/dropdown-item/dropdown-item.component\";\n\nexport enum PPTheme {\n    WEBUI = 0,\n    FURNVIEW = 1,\n    COMBINE = 99\n}\n\nexport enum PPMode {\n    ALL = \"0\",\n    ELEMENT = \"1\",\n    COMPONENT = \"2\"\n}\n\n@customElement(\"fv-pp-container\")\nexport class PPContainerComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @query(\"#mode-dropdown\")\n    private _ppModeDropdown?: DropDownComponent;\n\n    @query(\"fv-accordion\")\n    private accordion?: AccordionComponent\n\n    @property({type: Boolean, reflect: true})\n    IsBusy = false;\n\n    @property({type: Number, reflect: true})\n    theme = -1;\n\n    @property({type: Boolean, reflect: true})\n    halfSize = true;\n\n    @property({type: Boolean, reflect: true})\n    grouped = true;\n\n    @property({type: Boolean, reflect: true})\n    draggable = true;\n\n    @property({type: Boolean, reflect: true, attribute: \"mode-selection\"})\n    private _ppModeSelection = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"hide-single-value-properties\"})\n    public hideSingleValueProperties = false;\n\n    @property({type: Array, reflect: true, attribute: \"accordion-item-classes\"})\n    public accordionItemClasses = new Array<string>();\n\n    private _ppMode: PPMode = PPMode.ALL;\n\n    get PPOptions(): IModifyPropertyOptions {\n        const propertyOptions: IModifyPropertyOptions = {};\n        switch (this._ppMode) {\n            default:\n            case PPMode.ALL:\n                break;\n            case PPMode.ELEMENT:\n                propertyOptions.modifyElement = true;\n                break;\n            case PPMode.COMPONENT:\n                propertyOptions.modifyComponent = true;\n                break;\n        }\n        return propertyOptions;\n    }\n\n    @property({type: Boolean, reflect: true})\n    hideItemCount = false; //deprecated?\n\n    @property({type: Boolean, reflect: true})\n    disableNotSettable = false; // deprecated, use hideSingleValueProperties\n\n    @property({type: Boolean, reflect: true})\n    hideNotSettable = false; // deprecated, use hideSingleValueProperties\n\n    @property({type: Array, reflect: true})\n    public contexts?: string[];\n\n    constructor() {\n        super();\n        this.baseOptions.updateWhileDisconnected = true;\n    }\n\n    private async initializeLevelDropdown() {\n        if (this._ppModeSelection && this._ppModeDropdown) {\n            const config = await ConfigurationService.Configuration;\n            if (!config.disable_properties_on_selection) {\n                this._ppModeDropdown.addEventListener(\"dropdown-item-changed\", ((evt: CustomEvent<IDropdownItem>) => {\n                    this._ppMode = evt.detail.value as PPMode;\n                }) as EventListener);\n                this._ppModeDropdown.clearItems();\n                this._ppModeDropdown.addItems([\n                    {\n                        text: \"1701\", value: PPMode.ALL,\n                    },\n                    {\n                        text: \"1702\", value: PPMode.ELEMENT\n                    },\n                    {\n                        text: \"1703\", value: PPMode.COMPONENT\n                    },\n                ], false);\n                //await LocalesModel.get(\"1704\") // TODO CHECK IF NECESSARY\n            }\n        }\n    }\n\n    protected async firstUpdated(_changedProperties: PropertyValues<this>) {\n        super.firstUpdated(_changedProperties);\n        await RequestService.Initialized;\n        await WebViewerService.IsAppReady;\n        await this.initializeLevelDropdown();\n    }\n\n    protected updated(_changedProperties: PropertyValues) {\n        super.updated(_changedProperties);\n\n        if(_changedProperties.has(\"_ppModeSelection\")) {\n            this.initializeLevelDropdown();\n        }\n\n        window.dispatchEvent(new CustomEvent(\"onUpdated\", {detail: this}));\n    }\n\n    get Children(): AccordionItemComponent[] {\n        return <AccordionItemComponent[]>Array.from(this.accordion?.children || [])\n    }\n\n    public isEmpty(): boolean {\n        return this.Children.every(x => x.isEmpty());\n    }\n\n    protected async getUpdateComplete(): Promise<boolean> {\n        const result = await super.getUpdateComplete();\n        if(result) {\n            await Promise.all(this.Children.map(x => x.updateComplete));\n        }\n        return result;\n    }\n\n    render() {\n        return html`\n            ${this._ppModeSelection ? html`\n                <fv-dropdown class=\"centered\" id=\"mode-dropdown\"></fv-dropdown>\n            ` : \"\"}\n            <fv-scroll-aware-container>\n                <fv-accordion>\n                    ${this.getProgContextAccordionLayer()}\n\n                    ${this.getProgPropertyAccordionLayer()}\n                </fv-accordion>\n            </fv-scroll-aware-container>\n        `;\n    }\n\n    getProgContextAccordionLayer() {\n        if (!this.contexts) return nothing;\n        return html`\n            <fv-prog-context-accordion-layer .contexts=\"${this.contexts}\"></fv-prog-context-accordion-layer>\n        `\n    }\n\n    getProgPropertyWebUITheme() {\n        if (this.contexts || this.theme !== PPTheme.WEBUI) return nothing\n        return html`\n            <fv-prog-property-webui-accordion-layer></fv-prog-property-webui-accordion-layer>\n        `;\n    }\n\n    getProgPropertyCombineAccordionLayer() {\n        if (this.contexts || this.theme !== PPTheme.COMBINE) return nothing\n        const parameters = {\n            grouped: this.grouped,\n            useSelection: true\n        } as IGetPropTransferParams\n        return html`\n            <fv-prog-property-combine-accordion-layer .parameters=\"${parameters}\"></fv-prog-property-combine-accordion-layer>\n        `;\n    }\n\n    getProgPropertyAccordionLayer() {\n        if (this.contexts || this.theme !== -1) return nothing\n        return html`\n            <fv-prog-property-accordion-layer></fv-prog-property-accordion-layer>\n        `;\n    }\n}\n\n","import { customElement, property } from \"lit/decorators.js\";\nimport { css, html, unsafeCSS } from \"lit\";\nimport style from \"./pt-property-item.component.sass?inline\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { BaseElement } from \"../../../standard/base/base.component\";\nimport { IPropTransferItem } from \"@dh-software/webui-types\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\n\nexport interface IPPMenu {\n    title?: string\n}\n\n@customElement(\"fv-pt-property-item\")\nexport class PTPropertyItemComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true })\n    currentImage = \"\";\n\n    @property({ type: String, reflect: true })\n    titleText = \"\";\n\n    @property({ type: Boolean, reflect: true })\n    deletable = false;\n\n    @property({ type: String, reflect: true })\n    itemId = \"\";\n\n    @property({ type: String, reflect: true })\n    manufacturer = \"\";\n\n    @property({ type: String, reflect: true })\n    program = \"\";\n\n    /** @deprecated pass props directly via the template instead. */\n    constructor(options?: IPropTransferItem) {\n        super();\n        if (options) {\n            this.titleText = options.text || options.id;\n            this.currentImage = options.image || \"\";\n            this.deletable = (options.deletable || []).length > 0;\n            this.itemId = options.id || \"\";\n            this.manufacturer = options.manufacturer || \"\";\n            this.program = options.program || \"\";\n        }\n        this.addEventListener(\"click\", this.startPropTransfer);\n    }\n\n    /** Back-compat alias for old `.Deletable` accessor. */\n    get Deletable(): boolean { return this.deletable; }\n    set Deletable(v: boolean) { this.deletable = v; }\n\n    private startPropTransfer = (e: Event) => {\n        e.stopPropagation();\n        e.preventDefault();\n        CommunicationMessageService?.startPropTransfer(this.itemId);\n    };\n\n    private deletePropTransfer = (e: Event) => {\n        e.stopPropagation();\n        e.preventDefault();\n        CommunicationMessageService?.deletePropTransfer(this.itemId, this.manufacturer, this.program);\n    };\n\n    render() {\n        const classMapCurrentImage = {\n            \"not-found\": !this.currentImage,\n            \"pt-image\": true,\n        };\n        return html`\n        <div class=\"pp-item-content\">\n            <div class=\"pt-current-image\">\n                <div class=${classMap(classMapCurrentImage)} style=\"${this.currentImage ? `background-image: url(${this.currentImage})` : \"\"}\"></div>\n            </div>\n            <div class=\"pt-info\">\n                <div class=\"pt-group-title\">\n                    <span>${this.titleText}</span>\n                </div>\n            </div>\n        </div>\n        ${this.deletable ? html`<div @click=${this.deletePropTransfer} id=\"deleteButton\" class=\"delete-button\">\n            <span>Löschen</span>\n        </div>` : \"\"}\n        `;\n    }\n}\n","import { PTPropertyItemComponent } from \"./pt-property-item.component\";\nimport { customElement } from \"lit/decorators.js\";\nimport { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./pt-property-group.component.sass?inline\";\nimport { BaseElement } from \"../../../standard/base/base.component\";\nimport {IPropTransferItem} from \"@dh-software/webui-types\";\n\n@customElement(\"fv-pt-group\")\nexport class PTPropertyGroupComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n    }\n\n    render(): TemplateResult<1> {\n        return html`<slot></slot>`;\n    }\n\n    addItem(item_: IPropTransferItem): PTPropertyItemComponent {\n        const item = new PTPropertyItemComponent(item_);\n        return item;\n    }\n}\n\n","import { PTContainerComponent } from \"../pt-container.component\";\nimport { PTPropertyGroupComponent } from \"./pt-property-group.component\";\nimport {PropTransferModel} from \"@dh-software/webui-api\";\nimport {IGetPropTransferParams, IPropTransferItem} from \"@dh-software/webui-types\";\n\nclass PTThemeIndexClass {\n\n    async build(ppComponent: HTMLDivElement, containerComponent: PTContainerComponent, options: IGetPropTransferParams) {\n        const values: Array<PTPropertyGroupComponent> = [];\n        await PropTransferModel.traverse({\n            groupCallback: async (manufacturer, program, group, items) => {\n                const valuesComponent = new PTPropertyGroupComponent();\n                if (items && options.grouped) {\n                    items.forEach((item: IPropTransferItem) => {\n                        valuesComponent.addItem(item);\n                    });\n                }\n                values.push(valuesComponent);\n            },\n            itemsCallback: async (item: IPropTransferItem) => {\n                if (!options.grouped) {\n                    const valuesComponent = new PTPropertyGroupComponent();\n                    if (item) {\n                        valuesComponent.addItem(item);\n                    }\n                    values.push(valuesComponent);\n                }\n            }\n        }, options);\n        ppComponent.innerHTML = \"\";\n        values.forEach((valueComponent) => {\n            ppComponent.appendChild(valueComponent);\n        });\n    }\n}\n\nexport const PTFurnviewThemeIndex = new PTThemeIndexClass();\n","import {CommunicationMessageService} from \"@dh-software/webui-api\";\n\nexport interface IRalPickerData {\n    colors: { [key: string ]: { RGB: string, \"Bez\": string } }\n    blacklist: Array<string>\n    whitelist: Array<string>\n}\nexport interface INcsPickerData {\n    colors: { [key: string ]: {[key: string]: string} }\n    blacklist: Array<string>\n    whitelist: Array<string>\n}\nexport interface ISikkensPickerData {\n    colors: {[key: string]: { [key: string]: { R: number, G: number, B: number, HEX: string} }}\n    blacklist: Array<string>\n    whitelist: Array<string>\n}\n\n\nconst rgbToHsv = function (rgb_str: string) {\n    const rgb = rgb_str.split(\",\").map((s)=>+s);\n    const r = rgb[0] / 255;\n    const g = rgb[1] / 255;\n    const b = rgb[2] / 255;\n\n    const max = Math.max(r, g, b);\n    const min = Math.min(r, g, b);\n    const delta = max - min;\n\n    let h, s;\n\n    if (delta === 0) {\n        h = 0;\n    }\n    else if (max === r) {\n        h = 60 * (((g - b) / delta) % 6);\n    }\n    else if (max === g) {\n        h = 60 * (((b - r) / delta) + 2);\n    }\n    else {\n        h = 60 * (((r - g) / delta) + 4);\n    }\n\n    if (h < 0) {\n        h += 360;\n    }\n\n    if (max === 0) {\n        s = 0;\n    }\n    else {\n        s = delta / max;\n    }\n\n    const v = max;\n\n    return [h, s, v];\n};\n\nclass ColorPickerModelClass {\n\n    //TODO Sort Colors\n    private sortColor(colors: Array<{code: string, key: string}>) {\n        const hsvlColors = colors.map(function(color: {code: string, key: string}): Array<{code: string, key: string} | number> {\n            const hsv = rgbToHsv(color.code);\n            return [hsv[0], hsv[1], hsv[2], color];\n        });\n        const count: Array<Array<Array<Array<{code: string, key: string}>>>> = [];\n        for (let h = 0; h <= 360; h++) {\n            count.push([]);\n            for (let s = 0; s <= 100; s++) {\n                count[h].push([]);\n                for (let v = 0; v <= 100; v++) {\n                    count[h][s].push([]);\n                }\n            }\n        }\n\n        // Zähle das Vorkommen jeder Kombination von Hue-, Saturation- und Luminanzwerten im Eingabearray\n        hsvlColors.forEach((color: Array<number | {code: string, key: string}>) => {\n            const h = Math.round(color[0] as number);\n            const s = Math.round(color[1] as number * 100);\n            const v = Math.round(color[2] as number * 100);\n            count[h][s][v].push(color[3] as {code: string, key: string});\n        });\n\n        // Erstelle ein neues Array, um die sortierten Farben zu speichern\n        const sortedColors = [];\n\n        // Füge jede Farbe in sortierter Reihenfolge zum neuen Array hinzu\n        for (let h = 0; h <= 360; h++) {\n            for (let s = 0; s <= 100; s++) {\n                for (let v = 0; v <= 100; v++) {\n                    sortedColors.push(count[h][s][v]);\n                }\n            }\n        }\n\n        return sortedColors;\n\n    }\n\n    public async getRal(options?: {manufacturer?: string}): Promise<IRalPickerData> {\n        options = options || {};\n        return await (CommunicationMessageService?.getColorPickerInfo({\n            manufacturer: options.manufacturer,\n            type: \"ral\"\n        }) as Promise<IRalPickerData>).then((data)=> {\n            return data;\n        }) as IRalPickerData;\n\n    }\n\n    public async getNCS(options?: {manufacturer?: string}): Promise<INcsPickerData> {\n        options = options || {};\n        return await (CommunicationMessageService?.getColorPickerInfo({\n            manufacturer: options.manufacturer,\n            type: \"ncs\"\n        }) as Promise<INcsPickerData>).then((data)=> {\n            return data;\n        }) as INcsPickerData;\n    }\n\n    public async getSikkens(options?: {manufacturer?: string}): Promise<ISikkensPickerData> {\n        options = options || {};\n        return await (CommunicationMessageService?.getColorPickerInfo({\n            manufacturer: options.manufacturer,\n            type: \"sikkens\"\n        }) as Promise<ISikkensPickerData>).then((data) => {\n            //SORT\n            return data;\n        }) as ISikkensPickerData;\n    }\n}\n\nexport const ColorPickerModel = new ColorPickerModelClass();\n","class TransitionHelperClass {\n\n    private async TransitionWaiter(element: HTMLElement, seconds: number) {\n        return new Promise((resolve, reject) => {\n            let cleanupTimeout: number | undefined = setTimeout(() => {\n                if (cleanupTimeout) clearTimeout(cleanupTimeout);\n                cleanupTimeout = undefined;\n                transitionEnd();\n            }, (seconds * 1000) + 100);\n            const transitionEnd = (ev?: Event) => {\n                if (cleanupTimeout) clearTimeout(cleanupTimeout);\n                cleanupTimeout = undefined;\n                element.removeEventListener(\"transitionend\", transitionEnd);\n                element.removeEventListener(\"transitioncancel\", transitionEnd);\n                resolve(true);\n            };\n            element.addEventListener(\"transitionend\", transitionEnd);\n            element.addEventListener(\"transitioncancel\", transitionEnd);\n        });\n    }\n\n\n    async fadeOut(element: HTMLElement, seconds= 0.8) {\n        element.style.transition = seconds +\"s\";\n        element.style.opacity = \"0\";\n        await this.TransitionWaiter(element, seconds);\n        element.style.transition = \"initial\";\n    }\n\n    async fadeIn(element: HTMLElement, seconds= 0.8) {\n        element.style.transition = seconds +\"s\";\n        element.style.opacity = \"1\";\n        await this.TransitionWaiter(element, seconds);\n        element.style.transition = \"initial\";\n    }\n}\n\nexport const TransitionHelper = new TransitionHelperClass();\n","import { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./ral-picker.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { IRalPickerData, ColorPickerModel } from \"../../../models/color-picker/color-picker.model\";\nimport { TransitionHelper } from \"../../../utils/transition.helper\";\nimport { BaseElement } from \"../../standard/base/base.component\";\n\n@customElement(\"fv-ral-picker\")\nexport class RalPickerComponent extends BaseElement {\n    private _ralModel: IRalPickerData | undefined;\n    private _ralCode: string | undefined;\n    private _ralRGB: string | undefined;\n    private _isSearching = false;\n    private _currentGroup: number | undefined;\n    private _preventEvent = false;\n\n    @query(\".colorGrid\")\n    private colorGrid: HTMLDivElement | undefined;\n\n    @query(\"#colorInput\")\n    private colorInput: HTMLInputElement | undefined;\n\n    @query(\"#errorMsgWrap\")\n    private errorMsgWrap: HTMLElement | undefined;\n\n    @query(\"#colorCurrent\")\n    private colorCurrent: HTMLDivElement | undefined;\n\n    @property({ type: String, reflect: true })\n    currentCode = \"\";\n\n    @property({ type: String, reflect: true })\n    manufacturer = \"\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"disable-fade\" })\n    private _disableFade = \"\";\n\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n    }\n\n    public async getColorByCode(code_: string): Promise<string | undefined> {\n        await this.getRalColors();\n        return this._ralModel?.colors[code_]?.RGB;\n    }\n\n\n    private dispatchColorChange() {\n        if (this._preventEvent) {\n            this._preventEvent = false;\n            return;\n        }\n        if (this._ralCode) {\n            const rgb = this._ralModel?.colors[this._ralCode].RGB.split(\",\");\n            const text = this._ralModel?.colors[this._ralCode].Bez;\n            if (rgb) {\n                const colorChangeEvent = new CustomEvent(\"colorChange\", {\n                    detail: {\n                        code: this._ralCode,\n                        rgba: {\n                            r: rgb[0],\n                            g: rgb[1],\n                            b: rgb[2],\n                            a: 1\n                        },\n                        text: text\n                    },\n                    bubbles: false\n                });\n                this.dispatchEvent(colorChangeEvent);\n            }\n        }\n    }\n\n\n    private ShowErrorMessage(Message: string) {\n        if (this.shadowRoot) {\n            let ralWrongFormat = this.shadowRoot.querySelector(\"#ralWrongFormat\");\n            let ralNotFound = this.shadowRoot.querySelector(\"#ralNotFound\");\n            switch (Message.toUpperCase()) {\n            case \"RALWRONGFORMAT\":\n                if (!ralWrongFormat) {\n                    ralWrongFormat = document.createElement(\"p\");\n                    ralWrongFormat.id = \"ralWrongFormat\";\n                    ralWrongFormat.classList.add(\"errorMsg\");\n                    ralWrongFormat.textContent = \"RAL Code hat ein falsches Format.\";\n                    this.errorMsgWrap?.appendChild(ralWrongFormat);\n                    this.colorInput?.classList.add(\"error\");\n                }\n                break;\n            case \"RALNOTFOUND\":\n                if (!ralNotFound) {\n                    ralNotFound = document.createElement(\"p\");\n                    ralNotFound.id = \"ralNotFound\";\n                    ralNotFound.classList.add(\"errorMsg\");\n                    ralNotFound.textContent = \"RAL Code wurde nicht gefunden.\";\n                    this.errorMsgWrap?.appendChild(ralNotFound);\n                    this.colorInput?.classList.add(\"error\");\n                }\n                break;\n            }\n\n            if (ralWrongFormat && ralNotFound) {\n                this.colorInput?.classList.remove(\"error\");\n            }\n        }\n    }\n\n    private RemoveErrorMessage(Message:string) {\n        if (this.shadowRoot) {\n            let ralWrongFormat = this.shadowRoot.querySelector(\"#ralWrongFormat\");\n            let ralNotFound = this.shadowRoot.querySelector(\"#ralNotFound\");\n            switch (Message.toUpperCase()) {\n            case \"RALWRONGFORMAT\":\n                ralWrongFormat?.remove();\n                break;\n            case \"RALNOTFOUND\":\n                ralNotFound?.remove();\n                break;\n            default:\n                ralWrongFormat = null;\n                ralNotFound = null;\n                if (this.errorMsgWrap) this.errorMsgWrap.innerHTML = \"\";\n                break;\n            }\n            if (!ralWrongFormat && !ralNotFound) {\n                this.colorInput?.classList.remove(\"error\");\n            }\n        }\n    }\n\n    private CheckRALCodeIsValid(RALCode: string) {\n        const RgxTest = /RAL[0-9]{4}/;\n        RALCode = RALCode.toUpperCase();\n        if (!RgxTest.test(RALCode)) {\n            // ral doesn't match the right formatation\n            this.ShowErrorMessage(\"ralWrongFormat\");\n            return false;\n        }\n        else {\n            this.RemoveErrorMessage(\"ralWrongFormat\");\n\n            if (this._ralModel?.colors[RALCode]) {\n                this.RemoveErrorMessage(\"ralNotFound\");\n                return true;\n            }\n            else {\n                this.ShowErrorMessage(\"ralNotFound\");\n                return false;\n            }\n        }\n        return false;\n    }\n\n    private async GenerateColorGrid(group_?: number, force_ = false) {\n        if (this.colorGrid) {\n            let currentColorField;\n            const groupChanged = this._currentGroup !== group_;\n            if (groupChanged || force_) {\n                this._currentGroup = group_;\n                if (!this._disableFade) await TransitionHelper.fadeOut(this.colorGrid, 0.3);\n                this.colorGrid.innerHTML = \"\";\n                for (const color in this._ralModel?.colors) {\n                    const Group = parseInt(color.substr(3, 1));\n\n                    if (!group_ || Group == group_) {\n                        const colorField = document.createElement(\"div\");\n                        colorField.classList.add(\"colorField\");\n                        colorField.style.backgroundColor = `rgb(${this._ralModel?.colors[color][\"RGB\"]})`;\n                        colorField.setAttribute(\"data-ralValue\", color);\n                        colorField.addEventListener(\"click\", this.onColorFieldClick);\n                        if (this._isSearching && this._ralCode === color) currentColorField = colorField;\n                        else if (!this._isSearching && (color === this.currentCode || color === this._ralCode)) currentColorField = colorField;\n                        this.colorGrid.appendChild(colorField);\n                    }\n                }\n            }\n            else {\n                if (this._isSearching && this._ralCode) currentColorField = this.colorGrid.querySelector(`.colorField[data-ralValue=${this._ralCode}]`) as HTMLElement;\n                else if (!this._isSearching && (this.currentCode || this._ralCode)) currentColorField = this.colorGrid.querySelector(`.colorField[data-ralValue=${this.currentCode || this._ralCode}]`) as HTMLElement;\n            }\n            if (currentColorField) {\n                this.colorGrid.querySelectorAll(\".colorField.highlight\")\n                    .forEach((value) => {\n                        value.classList.remove(\"highlight\");\n                    });\n                if (this.colorCurrent) this.colorCurrent.style.background = `rgb(${this._ralRGB})`;\n                if (!this._isSearching) {\n                    currentColorField.click();\n                }\n                else {\n\n                    currentColorField.classList.add(\"highlight\");\n                }\n            }\n            else {\n                this._preventEvent = false;\n            }\n            if (groupChanged || force_) {\n                if (!this._disableFade) await TransitionHelper.fadeIn(this.colorGrid, 0.3);\n            }\n        }\n    }\n\n    private updateColorSelection() {\n        let group = this.colorInput?.value.toUpperCase().replace(/\\s|RAL/gi, \"\");\n        this._ralCode = \"RAL\" + group;\n        this._ralRGB = this._ralModel?.colors[this._ralCode] ? this._ralModel?.colors[this._ralCode][\"RGB\"] : \"\";\n        if (group && this.CheckRALCodeIsValid(this._ralCode)) {\n            group = group?.substr(0, 1);\n            this.shadowRoot ?\n                (this.shadowRoot.querySelector(\".colorGroup[data-ralGroup='\" + group + \"']\") as HTMLElement).click()\n                : null;\n\n            this.dispatchColorChange();\n        }\n    }\n\n\n\n    private onColorFieldClick = (e: Event) => {\n        e.stopPropagation();\n        e.preventDefault();\n        const element = e.currentTarget as HTMLElement;\n        const ralCode = element.getAttribute(\"data-ralvalue\") || \"\";\n        this._ralCode = ralCode;\n        this.currentCode = this._ralCode;\n        this._ralRGB = this._ralModel?.colors[this._ralCode] ? this._ralModel?.colors[this._ralCode][\"RGB\"] : \"\";\n        if (this.colorCurrent) this.colorCurrent.style.background = `rgb(${this._ralRGB})`;\n        const activeFields = this.shadowRoot ? this.shadowRoot.querySelectorAll(\".colorField.active\") : null;\n        if (activeFields) {\n            activeFields.forEach((value) => {\n                value.classList.remove(\"active\");\n            });\n        }\n        element.classList.add(\"active\");\n        this.colorInput ? this.colorInput.value = \"\" : null;\n        this.RemoveErrorMessage(\"all\");\n        this.dispatchColorChange();\n    }\n\n    private onClickColorGroup(e: Event) {\n        e.stopPropagation();\n        e.preventDefault();\n        const element: HTMLElement = e.currentTarget as HTMLElement;\n        const ralGroup = element.getAttribute(\"data-ralGroup\");\n        const activeGroups = this.shadowRoot ? this.shadowRoot.querySelectorAll(\".colorGroup.active\") : null;\n        if (activeGroups) {\n            activeGroups.forEach((value) => {\n                value.classList.remove(\"active\");\n            });\n        }\n        element.classList.add(\"active\");\n        this.GenerateColorGrid(ralGroup ? +ralGroup : undefined)\n            .then(()=>{\n                this.dispatchEvent(new CustomEvent(\"onRender\", {}));\n            })\n    }\n\n    private onSearchColor() {\n        this._isSearching = true;\n        if (this.colorInput?.value && this.colorInput?.value.length > 0) {\n            this.updateColorSelection();\n        }\n        else {\n            this.RemoveErrorMessage(\"all\");\n        }\n    }\n\n    private onColorInputChange(e: Event) {\n        this.currentCode = \"\";\n        this._isSearching = false;\n        this.updateColorSelection();\n    }\n\n    private async getRalColors() {\n        const ralModel = await ColorPickerModel.getRal({ manufacturer: this.manufacturer });\n        const ralModelFiltered: {[key: string ]: { RGB: string, \"Bez\": string }} = { };\n        if (ralModel.colors) {\n            if (ralModel.blacklist) {\n                ralModel.blacklist.forEach((item: string) => {\n                    if (ralModel.colors[item]) {\n                        delete ralModel.colors[item];\n                    }\n                });\n            }\n\n            if (ralModel.whitelist) {\n                ralModel.whitelist.forEach((item: string) => {\n                    if (ralModel.colors[item]) {\n                        ralModelFiltered[item] = ralModel.colors[item];\n                    }\n                });\n                ralModel.colors = ralModelFiltered;\n            }\n        }\n\n        this._ralModel = ralModel;\n        return this._ralModel;\n    }\n\n\n    render(): TemplateResult<1> {\n        return html`\n            <div class=\"colorInputWrap\">\n                <div class=\"inputContainer\">\n                    <div id=\"colorCurrent\"></div>\n                    <input type=\"text\" id=\"colorInput\" @input=${this.onSearchColor} @change=${this.onColorInputChange} value=\"\" i18n-placeholder=\"enter_RAL_code\" placeholder=\"RAL-Code eingeben\" onfocus=\"this.select()\"/>\n                    <button id=\"colorInputSubmit\"><span>&sc;</span></button>\n                </div>\n                <div id=\"errorMsgWrap\"><!-- Hier werden Fehlermeldungen reingeschrieben --></div>\n            </div>\n\n            <!-- Farb-Gruppen -->\n            <div class=\"colorGroups\">\n                <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"1\">\n                    <div class=\"colorTile\" style=\"background-color: rgb(255,255,0);\">&nbsp;</div>\n                    <p>\n                        Gelb\n                    </p>\n                </div><!-- Gelb-->\n                <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"2\">\n                    <div class=\"colorTile\" style=\"background-color: rgb(255,164,32);\">&nbsp;</div>\n                    <p>\n                        Orange\n                    </p>\n                </div><!--Orange-->\n                <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"3\">\n                    <div class=\"colorTile\" style=\"background-color: rgb(248,0,0);\">&nbsp;</div>\n                    <p>\n                        Rot\n                    </p>\n                </div><!--Rot-->\n                <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"4\">\n                    <div class=\"colorTile\" style=\"background-color: rgb(125,31,122);\">&nbsp;</div>\n                    <p>\n                        Violett\n                    </p>\n                </div><!--Violett-->\n                <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"5\">\n                    <div class=\"colorTile\" style=\"background-color: rgb(59,131,189);\">&nbsp;</div>\n                    <p>\n                        Blau\n                    </p>\n                </div><!--Blau-->\n                <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"8\">\n                    <div class=\"colorTile\" style=\"background-color: rgb(91,58,41);\">&nbsp;</div>\n                    <p>\n                        Braun\n                    </p>\n                </div><!--Braun-->\n                <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"6\">\n                    <div class=\"colorTile\" style=\"background-color: rgb(0,187,45);\">&nbsp;</div>\n                    <p>\n                        Grün\n                    </p>\n                </div><!--Grün-->\n                <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"7\">\n                    <div class=\"colorTile\" style=\"background-color: rgb(71,75,81);\">&nbsp;</div>\n                    <p>\n                        Grau\n                    </p>\n                </div><!--Grau-->\n                <div @click=${this.onClickColorGroup} class=\"colorGroup\" data-ralGroup=\"9\">\n                    <div class=\"colorTile\" style=\"background: linear-gradient(315deg, black, white);\">&nbsp;</div>\n                    <p>\n                        Schwarz / Weiß\n                    </p>\n                </div><!--Weiss/Schwarz-->\n                <div @click=${this.onClickColorGroup} class=\"colorGroup active\" data-ralGroup=\"\">\n                    <div class=\"colorTile\" style=\"background: linear-gradient(135deg, red, yellow, lime, cyan, blue, mediumvioletred);\">&nbsp;</div>\n                    <p>\n                        Alle\n                    </p>\n                </div><!--Alle-->\n            </div>\n\n            <!-- Farben -->\n            <div class=\"colorGrid\"></div>\n        `;\n    }\n\n    async updated(_changedProperties: PropertyValues): Promise<void> {\n        super.updated(_changedProperties);\n        this._preventEvent = true;\n        if (_changedProperties.has(\"manufacturer\")) {\n            this._ralModel = await this.getRalColors();\n            this._ralCode = undefined;\n            this._ralRGB = undefined;\n            this._currentGroup = undefined;\n            this.currentCode = \"\";\n\n            await this.GenerateColorGrid(this._currentGroup, true);\n        }\n        this._ralRGB = this._ralModel?.colors[this.currentCode] ? this._ralModel?.colors[this.currentCode][\"RGB\"] : \"\";\n        let group = this.currentCode?.toUpperCase().replace(/\\s|RAL/gi, \"\");\n        group = group?.substr(0, 1);\n        this.shadowRoot ?\n            (this.shadowRoot.querySelector(\".colorGroup[data-ralGroup='\" + group + \"']\") as HTMLElement).click()\n            : null;\n\n    }\n\n    async firstUpdated(): Promise<void> {\n        await this.getRalColors();\n    }\n}\n","import { css, html, PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./ncs-picker.component.sass?inline\";\nimport { customElement, property, query, queryAll } from \"lit/decorators.js\";\nimport { ColorPickerModel, INcsPickerData } from \"../../../models/color-picker/color-picker.model\";\nimport { TransitionHelper } from \"../../../utils/transition.helper\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { LocaleService } from \"@dh-software/webui-api\";\n\n@customElement(\"fv-ncs-picker\")\nexport class NcsPickerComponent extends BaseElement {\n    private _ncsModel: INcsPickerData | undefined;\n    private _ncsCode: string | undefined;\n    private _ncsRGB: string | undefined;\n    private _preventEvent = false;\n    private _ncsMap: {[key: string]: string} = {};\n\n    @property({ type: String, reflect: true })\n    currentCode = \"\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"disable-fade\" })\n    private _disableFade = \"\";\n\n    @property({ type: String, reflect: true })\n    manufacturer = \"\";\n\n    @query(\"#colorWheelCursor\")\n    colorWheelCursor: HTMLImageElement | undefined;\n\n    @query(\".colorGrid\")\n    private colorGrid: HTMLDivElement | undefined;\n\n    @query(\"#colorInput\")\n    private colorInput: HTMLInputElement | undefined;\n\n    @query(\"#errorMsgWrap\")\n    private errorMsgWrap: HTMLElement | undefined;\n\n    @query(\"#colorCurrent\")\n    private colorCurrent: HTMLDivElement | undefined;\n\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n    }\n\n    public async getColorByCode(code_: string): Promise<string | undefined> {\n        const codeDefine = code_.replace(\"NCS_\", \"\");\n        await this.getNcsColors();\n        return this._ncsMap[codeDefine];\n    }\n\n    private dispatchColorChange() {\n        if (this._preventEvent) {\n            this._preventEvent = false;\n            return;\n        }\n        if (this._ncsCode) {\n            const ncsDefine = this._ncsCode.replace(\"NCS_\", \"\");\n            const rgb = this._ncsMap[ncsDefine].split(\",\");\n            if (rgb) {\n                const colorChangeEvent = new CustomEvent(\"colorChange\", {\n                    detail: {\n                        code: this._ncsCode,\n                        rgba: {\n                            r: rgb[0],\n                            g: rgb[1],\n                            b: rgb[2],\n                            a: 1\n                        }\n                    },\n                    bubbles: false\n                });\n                this.dispatchEvent(colorChangeEvent);\n            }\n        }\n    }\n\n    private async GenerateColorGrid (group?: string) {\n        if (this.colorGrid && this._ncsModel) {\n            let currentColorField: HTMLElement | undefined;\n            const currentNCSDefine = this._ncsCode?.substr(4);\n            if (!this._disableFade) await TransitionHelper.fadeOut(this.colorGrid, 0.3);\n            this.colorGrid.innerHTML = \"\";\n            if (group) {\n                for (const color in this._ncsModel.colors[group]) {\n                    const colorField = document.createElement(\"div\");\n                    colorField.classList.add(\"colorField\");\n                    colorField.style.backgroundColor = `rgb(${this._ncsModel.colors[group][color]})`;\n                    colorField.setAttribute(\"data-ncsValue\", color);\n                    colorField.innerHTML = \"&nbsp;\";\n                    colorField.addEventListener(\"click\", this.onColorFieldClick);\n                    if (currentNCSDefine && color === currentNCSDefine) {\n                        currentColorField = colorField;\n                    }\n                    this.colorGrid.appendChild(colorField);\n                }\n            }\n            if (currentColorField) {\n                currentColorField.click();\n            }\n            if (!this._disableFade) await TransitionHelper.fadeIn(this.colorGrid, 0.3);\n        }\n    }\n\n    private CheckNCSCodeIsValid(NCSCode: string, showErrors = true) {\n        if (!this._ncsModel) return false;\n        const RgxTest = /(S[0-9]{4}-[YRBGN])([0-9]{2}[YRBG])?(\\[#TZ#\\](.*))?$/;\n        NCSCode = NCSCode.toUpperCase();\n\n        if (!RgxTest.test(NCSCode)) {\n            // ncs doesn't match the right formatation\n            if (showErrors) this.ShowErrorMessage(\"ncsWrongFormat\");\n            return false;\n        }\n        else {\n            this.RemoveErrorMessage(\"ncsWrongFormat\");\n            let ncsFound = false;\n\n            NCSCode = NCSCode.split(\"[#TZ#]\")[0];\n\n            for (const i in this._ncsModel.colors) {\n                for (const b in this._ncsModel.colors[i]) {\n                    if (NCSCode === b) {\n                        ncsFound = true;\n                    }\n                }\n            }\n\n            if (ncsFound) {\n                this.RemoveErrorMessage(\"ncsNotFound\");\n                return true;\n            }\n            else {\n                if (showErrors) this.ShowErrorMessage(\"ncsNotFound\");\n                return false;\n            }\n        }\n        return false;\n    }\n\n    private SetColorWheel() {\n        if (this.colorWheelCursor && this._ncsCode) {\n            const Farbe = this._ncsCode.split(\"-\")[1];\n            const FistCharacter = Farbe.substr(0, 1);\n            // change color-wheel rotation\n            if (FistCharacter != \"N\") {\n                this.colorWheelCursor?.classList.remove(\"hidden\");\n                const anteil = parseInt(Farbe.substr(1, 2));\n                let deg = anteil / 10 * 9;\n\n                if (FistCharacter == \"R\") deg += 90;\n                else if (FistCharacter == \"B\") deg += 180;\n                else if (FistCharacter == \"G\") deg += 270;\n\n                this.colorWheelCursor.style.transform = `rotate(${deg}deg)`;\n\n            }\n            else {\n                this.colorWheelCursor?.classList.add(\"hidden\");\n            }\n\n            this.GenerateColorGrid(Farbe);\n        }\n    }\n\n    private ShowErrorMessage(Message: string) {\n        if (this.shadowRoot) {\n            let ncsWrongFormat = this.shadowRoot.querySelector(\"#ncsWrongFormat\");\n            let ncsNotFound = this.shadowRoot.querySelector(\"#ncsNotFound\");\n            switch (Message.toUpperCase()) {\n            case \"NCSWRONGFORMAT\":\n                if (!ncsWrongFormat) {\n                    ncsWrongFormat = document.createElement(\"p\");\n                    ncsWrongFormat.id = \"ncsWrongFormat\";\n                    ncsWrongFormat.classList.add(\"errorMsg\");\n                    ncsWrongFormat.textContent = LocaleService.translate(\"51115\", \"NCS-Code hat das Falsche Format! Beispiel Format: NCS S0300-N\");\n                    this.errorMsgWrap?.appendChild(ncsWrongFormat);\n                    this.colorInput?.classList.add(\"error\");\n                }\n                break;\n            case \"NCSNOTFOUND\":\n                if (!ncsNotFound) {\n                    ncsNotFound = document.createElement(\"p\");\n                    ncsNotFound.id = \"ncsNotFound\";\n                    ncsNotFound.classList.add(\"errorMsg\");\n                    ncsNotFound.textContent = LocaleService.translate(\"51117\", \"NCS-Code konnte nicht gefunden werden!\");\n                    this.errorMsgWrap?.appendChild(ncsNotFound);\n                    this.colorInput?.classList.add(\"error\");\n                }\n                break;\n            }\n\n            if (ncsWrongFormat && ncsNotFound) {\n                this.colorInput?.classList.remove(\"error\");\n            }\n        }\n    }\n\n    private RemoveErrorMessage(Message:string) {\n        if (this.shadowRoot) {\n            let ncsWrongFormat = this.shadowRoot.querySelector(\"#ncsWrongFormat\");\n            let ncsNotFound = this.shadowRoot.querySelector(\"#ncsNotFound\");\n            switch (Message.toUpperCase()) {\n            case \"NCSWRONGFORMAT\":\n                ncsWrongFormat?.remove();\n                break;\n            case \"NCSNOTFOUND\":\n                ncsNotFound?.remove();\n                break;\n            default:\n                ncsWrongFormat = null;\n                ncsNotFound = null;\n                if (this.errorMsgWrap) this.errorMsgWrap.innerHTML = \"\";\n                break;\n            }\n            if (!ncsWrongFormat && !ncsNotFound) {\n                this.colorInput?.classList.remove(\"error\");\n            }\n        }\n    }\n\n    private async getNcsColors() {\n        this._ncsModel = await ColorPickerModel.getNCS({ manufacturer: this.manufacturer });\n        if (this._ncsModel) {\n            const keys = Object.keys(this._ncsModel.colors);\n            keys.forEach((key) => {\n                if (this._ncsModel) {\n                    Object.keys(this._ncsModel.colors[key]).forEach((rgbKey)=>{\n                        if (this._ncsModel) this._ncsMap[rgbKey] = this._ncsModel.colors[key][rgbKey];\n                    });\n                }\n            });\n        }\n    }\n\n    private onColorFieldClick = (e: Event) => {\n        e.stopPropagation();\n        e.preventDefault();\n        if (this.shadowRoot && this._ncsModel) {\n            const currentElement: HTMLElement = (e.currentTarget as HTMLElement);\n            this._ncsCode = \"NCS_\" + currentElement.getAttribute(\"data-ncsvalue\");\n            this.shadowRoot.querySelectorAll(\".colorField.active\").forEach((value)=> {\n                value.classList.remove(\"active\");\n            });\n            currentElement.classList.add(\"active\");\n            this.RemoveErrorMessage(\"all\");\n            this._ncsRGB = this._ncsMap[this._ncsCode.replace(\"NCS_\", \"\")];\n            if (this.colorInput) {\n                this.colorInput.value = this._ncsCode.replace(\"NCS_\", \"\");\n            }\n\n            if (this.colorCurrent) this.colorCurrent.style.background = `rgb(${this._ncsRGB})`;\n            this.dispatchColorChange();\n        }\n    }\n\n    private onWheelAreaClick = (e: MouseEvent) => {\n        e.stopPropagation();\n        e.preventDefault();\n        if (!this.colorWheelCursor) return;\n        const boundingClientRect = (e.currentTarget as HTMLElement).getBoundingClientRect();\n        const x = (e.x - boundingClientRect.top) + window.scrollX;\n        const y = (e.y - boundingClientRect.left) + window.scrollY;\n\n        const MiddleX = (boundingClientRect.left) + (boundingClientRect.width / 2);\n        const MiddleY = (boundingClientRect.top) + (boundingClientRect.height / 2);\n        const MouseX = e.pageX;\n        const MouseY = e.pageY;\n        const rad = Math.atan2(MouseX - MiddleX, MouseY - MiddleY);\n        let deg = (rad * (180 / Math.PI) * -1) + 180;\n        deg = Math.round(deg / 9) * 9;\n\n        const AbstandMitte = Math.sqrt(Math.pow(MouseX - MiddleX, 2) + Math.pow(MouseY - MiddleY, 2));\n        let group = \"N\";\n\n        if (AbstandMitte <= 10) {\n            this.colorWheelCursor.classList.add(\"hidden\");\n            group = \"N\";\n        }\n        else {\n            let NCSColorClear = false;\n            this.colorWheelCursor.classList.remove(\"hidden\");\n\n            if (deg % 90 == 0) {\n                NCSColorClear = true;\n            }\n\n            const ceilDeg = Math.ceil(deg / 10) * 10;\n\n\n            if (deg < 90 || deg == 360) {\n                if (NCSColorClear) {\n                    group = \"Y\";\n                }\n                else {\n                    group = \"Y\" + ceilDeg + \"R\";\n                }\n            }\n            else if (deg < 180) {\n                if (NCSColorClear) {\n                    group = \"R\";\n                }\n                else {\n                    group = \"R\" + Math.abs(90 - ceilDeg) + \"B\";\n                }\n            }\n            else if (deg < 270) {\n                if (NCSColorClear) {\n                    group = \"B\";\n                }\n                else {\n                    group = \"B\" + Math.abs(180 - ceilDeg) + \"G\";\n                }\n            }\n            else if (deg < 360) {\n                if (NCSColorClear) {\n                    group = \"G\";\n                }\n                else {\n                    group = \"G\" + Math.abs(270 - ceilDeg) + \"Y\";\n                }\n            }\n\n            this.colorWheelCursor.style.transform = `rotate(${deg}deg)`;\n        }\n        this.GenerateColorGrid(group)\n            .then(()=>{\n                this.dispatchEvent(new CustomEvent(\"onRender\", {}));\n            });\n    }\n\n    private onColorInputSubmit = (e: Event) => {\n        e.stopPropagation();\n        e.preventDefault();\n        if (!this.colorInput) return;\n        const InputValue = this.colorInput.value.toUpperCase().replace(/\\s|NCS/gi, \"\");\n        if (this.CheckNCSCodeIsValid(InputValue)) {\n            this._ncsCode = \"NCS_\" + InputValue;\n            this.SetColorWheel();\n            this._ncsRGB = this._ncsMap[InputValue];\n\n        }\n    }\n\n    private onFocusColorInput = (e: Event) => {\n        e.stopPropagation();\n        e.preventDefault();\n        (e.currentTarget as HTMLInputElement).select();\n    }\n\n    private onColorInput = async (e: Event) => {\n        if (!this.colorInput) return;\n        const InputValue = this.colorInput.value.toUpperCase().replace(/\\s|NCS/gi, \"\");\n        if (this.CheckNCSCodeIsValid(InputValue, true)) {\n            this._ncsCode = \"NCS_\" + InputValue;\n            this.SetColorWheel();\n            this._ncsRGB = this._ncsMap[InputValue];\n        }\n    }\n\n    render() {\n        return html`\n            <!-- NCS Eingabe -->\n            <div class=\"colorInputWrap\">\n                <div class=\"inputContainer\">\n                    <div id=\"colorCurrent\"></div>\n                    <input type=\"text\" id=\"colorInput\" @input=${this.onColorInput} @focus=${this.onFocusColorInput} @change=${this.onColorInput} value=\"\" placeholder=\"${LocaleService.translate(\"enter_NCS_code\", \"NCS-Code eingeben\")}\"/>\n                    <button id=\"colorInputSubmit\" @click=${this.onColorInputSubmit}><span>&sc;</span></button>\n                </div>\n                <div id=\"errorMsgWrap\"><!-- Hier werden Fehlermeldungen reingeschrieben --></div>\n            </div>\n            <!-- Farbton-Kreis -->\n            <div class=\"colorWheelWrap\">\n                <div class=\"colorWheelclickArea\" @click=${this.onWheelAreaClick}></div>\n                <div class=\"colorWheelCursorContainer\">\n                    <div id=\"colorWheelCursor\"></div>\n                </div>\n                <div class=\"colorWheel\"></div>\n            </div>\n            <!-- Farb-Nuancen -->\n            <div class=\"colorGrid\"><!-- Hier werden Farb-Nuancen reingeschrieben --></div>\n        `;\n    }\n\n    async updated(_changedProperties: PropertyValues) {\n        super.updated(_changedProperties);\n        this._preventEvent = true;\n        if (_changedProperties.has(\"manufacturer\")) {\n            await this.getNcsColors();\n            this._ncsCode = \"\";\n            this._ncsRGB = undefined;\n            this.currentCode = \"\";\n            await this.GenerateColorGrid();\n        }\n        this._ncsCode = this.currentCode;\n        await this.SetColorWheel();\n        this._preventEvent = false;\n    }\n\n    async firstUpdated() {\n        await this.getNcsColors();\n        this.SetColorWheel();\n    }\n}\n","import { css, html, PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./sikkens-picker.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { ColorPickerModel, ISikkensPickerData } from \"../../../models/color-picker/color-picker.model\";\nimport { TransitionHelper } from \"../../../utils/transition.helper\";\nimport { BaseElement } from \"../../standard/base/base.component\";\n\n@customElement(\"fv-sikkens-picker\")\nexport class SikkensPickerComponent extends BaseElement {\n    private _sikkensModel: ISikkensPickerData | undefined;\n    private _sikkensCode: string | undefined;\n    private _sikkensRGB: string | undefined;\n    private _preventEvent = false;\n    private _sikkensMap: {[key: string]: string} = {};\n\n    @property({ type: String, reflect: true })\n    currentCode = \"\";\n\n    @property({ type: String, reflect: true })\n    manufacturer = \"\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"disable-fade\" })\n    private _disableFade = \"\";\n\n    @query(\"#colorWheelCursor\")\n    colorWheelCursor: HTMLImageElement | undefined;\n\n    @query(\".colorGrid\")\n    private colorGrid: HTMLDivElement | undefined;\n\n    @query(\"#colorInput\")\n    private colorInput: HTMLInputElement | undefined;\n\n    @query(\"#errorMsgWrap\")\n    private errorMsgWrap: HTMLElement | undefined;\n\n    @query(\"#colorCurrent\")\n    private colorCurrent: HTMLDivElement | undefined;\n\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n    }\n\n    public async getColorByCode(code_: string): Promise<string | undefined> {\n        const codeDefine = code_.replace(\"SIKKENS_\", \"\");\n        await this.getSikkensColors();\n        return this._sikkensMap[codeDefine];\n    }\n\n    private dispatchColorChange() {\n        if (this._preventEvent) {\n            this._preventEvent = false;\n            return;\n        }\n        if (this._sikkensCode) {\n            const sikkensDefine = this._sikkensCode.replace(\"SIKKENS_\", \"\");\n            const rgb = this._sikkensMap[sikkensDefine].split(\",\");\n            if (rgb) {\n                const colorChangeEvent = new CustomEvent(\"colorChange\", {\n                    detail: {\n                        code: this._sikkensCode,\n                        rgba: {\n                            r: rgb[0],\n                            g: rgb[1],\n                            b: rgb[2],\n                            a: 1\n                        }\n                    },\n                    bubbles: false\n                });\n                this.dispatchEvent(colorChangeEvent);\n            }\n        }\n    }\n\n    private async GenerateColorGrid (group?: string) {\n        if (this.colorGrid && this._sikkensModel) {\n            let currentColorField: HTMLElement | undefined;\n            const currentSIKKENSDefine = this._sikkensCode?.replace(\"SIKKENS_\", \"\");\n            if (!this._disableFade) await TransitionHelper.fadeOut(this.colorGrid, 0.3);\n            this.colorGrid.innerHTML = \"\";\n            if (group) {\n                for (const color in this._sikkensModel.colors[group]) {\n                    const hexVal = this._sikkensModel.colors[group][color].HEX;\n                    const colorField = document.createElement(\"div\");\n                    colorField.classList.add(\"colorField\");\n                    colorField.style.backgroundColor = hexVal;\n                    colorField.setAttribute(\"data-SikkensValue\", color);\n                    colorField.innerHTML = \"&nbsp;\";\n                    colorField.addEventListener(\"click\", this.onColorFieldClick);\n                    if (currentSIKKENSDefine && color === currentSIKKENSDefine) {\n                        currentColorField = colorField;\n                    }\n                    this.colorGrid.appendChild(colorField);\n                }\n            }\n            if (currentColorField) {\n                currentColorField.click();\n            }\n            if (!this._disableFade) await TransitionHelper.fadeIn(this.colorGrid, 0.3);\n        }\n    }\n\n    private CheckSikkensCodeIsValid(SikkensCode: string, showErrors = true) {\n        if (!this._sikkensModel) return false;\n        const RgxTest = /^[a-hj-zA-HJ-Z][nN0-9].[0-9]{2}.[0-9]{2}$/;\n        if (!RgxTest.test(SikkensCode)) {\n            if (showErrors) this.ShowErrorMessage(\"SIKKENSWRONGFORMAT\");\n            return false;\n        }\n        else {\n            this.RemoveErrorMessage(\"SikkensWRONGFORMAT\");\n            let SikkensFound = false;\n\n            const Farbton = (SikkensCode.split(\".\")[0]).substr(0, 1);\n            if (this._sikkensModel.colors[Farbton][SikkensCode]) SikkensFound = true;\n\n            if (SikkensFound) {\n                this.RemoveErrorMessage(\"SikkensNOTFOUND\");\n                return true;\n            }\n            else {\n                if (showErrors) this.ShowErrorMessage(\"SIKKENSNOTFOUND\");\n                return false;\n            }\n        }\n        return false;\n    }\n\n    private SetColorWheel() {\n        if (this.colorWheelCursor && this._sikkensCode) {\n            const grundfarbe = this._sikkensCode.replace(\"SIKKENS_\", \"\").split(\".\")[0];\n            const grundbuchstabe = grundfarbe.substr(0, 1);\n            let group = 0;\n            if (grundbuchstabe === \"O\") {\n                this.colorWheelCursor?.classList.add(\"hidden\");\n            }\n            else {\n                this.colorWheelCursor?.classList.remove(\"hidden\");\n                switch (grundbuchstabe) {\n                case \"A\":\n                    group = 0;\n                    break;\n                case \"B\":\n                    group = 1;\n                    break;\n                case \"C\":\n                    group = 2;\n                    break;\n                case \"D\":\n                    group = 3;\n                    break;\n                case \"E\":\n                    group = 4;\n                    break;\n                case \"F\":\n                    group = 5;\n                    break;\n                case \"G\":\n                    group = 6;\n                    break;\n                case \"H\":\n                    group = 7;\n                    break;\n                case \"J\":\n                    group = 8;\n                    break;\n                case \"K\":\n                    group = 9;\n                    break;\n                case \"L\":\n                    group = 10;\n                    break;\n                case \"M\":\n                    group = 11;\n                    break;\n                case \"N\":\n                    group = 12;\n                    break;\n                case \"P\":\n                    group = 13;\n                    break;\n                case \"Q\":\n                    group = 14;\n                    break;\n                case \"R\":\n                    group = 15;\n                    break;\n                case \"S\":\n                    group = 16;\n                    break;\n                case \"T\":\n                    group = 17;\n                    break;\n                case \"U\":\n                    group = 18;\n                    break;\n                case \"V\":\n                    group = 19;\n                    break;\n                case \"W\":\n                    group = 20;\n                    break;\n                case \"X\":\n                    group = 21;\n                    break;\n                case \"Y\":\n                    group = 22;\n                    break;\n                case \"Z\":\n                    group = 23;\n                    break;\n                default:\n                    break;\n                }\n                this.colorWheelCursor.style.transform = `rotate(${group * 15}deg)`;\n            }\n\n            this.GenerateColorGrid(grundbuchstabe)\n                .then(()=>{\n                    this.dispatchEvent(new CustomEvent(\"onRender\", {}));\n                })\n        }\n    }\n\n    private ShowErrorMessage(Message: string) {\n        if (this.shadowRoot) {\n            let sikkensWrongFormat = this.shadowRoot.querySelector(\"#SikkensWrongFormat\");\n            let sikkensNotFound = this.shadowRoot.querySelector(\"#SikkensNotFound\");\n            switch (Message.toUpperCase()) {\n            case \"SIKKENSWRONGFORMAT\":\n                if (!sikkensWrongFormat) {\n                    sikkensWrongFormat = document.createElement(\"p\");\n                    sikkensWrongFormat.id = \"SikkensWrongFormat\";\n                    sikkensWrongFormat.classList.add(\"errorMsg\");\n                    sikkensWrongFormat.textContent = \"sikkens Code hat ein falsches Format.\";\n                    this.errorMsgWrap?.appendChild(sikkensWrongFormat);\n                    this.colorInput?.classList.add(\"error\");\n                }\n                break;\n            case \"SIKKENSNOTFOUND\":\n                if (!sikkensNotFound) {\n                    sikkensNotFound = document.createElement(\"p\");\n                    sikkensNotFound.id = \"SikkensNotFound\";\n                    sikkensNotFound.classList.add(\"errorMsg\");\n                    sikkensNotFound.textContent = \"sikkens Code wurde nicht gefunden.\";\n                    this.errorMsgWrap?.appendChild(sikkensNotFound);\n                    this.colorInput?.classList.add(\"error\");\n                }\n                break;\n            }\n\n            if (sikkensWrongFormat && sikkensNotFound) {\n                this.colorInput?.classList.remove(\"error\");\n            }\n        }\n    }\n\n    private RemoveErrorMessage(Message:string) {\n        if (this.shadowRoot) {\n            let sikkensWrongFormat = this.shadowRoot.querySelector(\"#SikkensWrongFormat\");\n            let sikkensNotFound = this.shadowRoot.querySelector(\"#SikkensNotFound\");\n            switch (Message.toUpperCase()) {\n            case \"SikkensWRONGFORMAT\":\n                sikkensWrongFormat?.remove();\n                break;\n            case \"SikkensNOTFOUND\":\n                sikkensNotFound?.remove();\n                break;\n            default:\n                sikkensWrongFormat = null;\n                sikkensNotFound = null;\n                if (this.errorMsgWrap) this.errorMsgWrap.innerHTML = \"\";\n                break;\n            }\n            if (!sikkensWrongFormat && !sikkensNotFound) {\n                this.colorInput?.classList.remove(\"error\");\n            }\n        }\n    }\n\n    private async getSikkensColors() {\n        this._sikkensModel = await ColorPickerModel.getSikkens({ manufacturer: this.manufacturer });\n        if (this._sikkensModel) {\n            const keys = Object.keys(this._sikkensModel.colors);\n            keys.forEach((key) => {\n                if (this._sikkensModel) {\n                    Object.keys(this._sikkensModel.colors[key]).forEach((rgbKey)=>{\n                        if (this._sikkensModel) this._sikkensMap[rgbKey] = `${this._sikkensModel.colors[key][rgbKey].R},${this._sikkensModel.colors[key][rgbKey].G},${this._sikkensModel.colors[key][rgbKey].B}`;\n                    });\n                }\n            });\n        }\n    }\n\n    private onColorFieldClick = (e: Event) => {\n        e.stopPropagation();\n        e.preventDefault();\n        if (this.shadowRoot && this._sikkensModel) {\n            const currentElement: HTMLElement = (e.currentTarget as HTMLElement);\n            const colorCode = currentElement.getAttribute(\"data-SikkensValue\") + \"\";\n            this._sikkensCode = \"SIKKENS_\" + colorCode;\n            this.shadowRoot.querySelectorAll(\".colorField.active\").forEach((value)=> {\n                value.classList.remove(\"active\");\n            });\n            currentElement.classList.add(\"active\");\n            this.RemoveErrorMessage(\"all\");\n            const colorCodeSnippet = (colorCode.split(\".\")[0]).substr(0, 1);\n            const sikkensObj = this._sikkensModel.colors[colorCodeSnippet][this._sikkensCode.replace(\"SIKKENS_\", \"\")];\n            this._sikkensRGB = `${sikkensObj.R + \",\" + sikkensObj.G + \",\" + sikkensObj.B}`;\n\n            if (this.colorCurrent) this.colorCurrent.style.background = `rgb(${this._sikkensRGB})`;\n            this.dispatchColorChange();\n        }\n    }\n\n    private onWheelAreaClick = (e: MouseEvent) => {\n        e.stopPropagation();\n        e.preventDefault();\n        if (!this.colorWheelCursor) return;\n        const boundingClientRect = (e.currentTarget as HTMLElement).getBoundingClientRect();\n        const x = (e.x - boundingClientRect.top) + window.scrollX;\n        const y = (e.y - boundingClientRect.left) + window.scrollY;\n\n        const MiddleX = (boundingClientRect.left) + (boundingClientRect.width / 2);\n        const MiddleY = (boundingClientRect.top) + (boundingClientRect.height / 2);\n        const MouseX = e.pageX;\n        const MouseY = e.pageY;\n        const ErgX = MouseX - MiddleX;\n        const ErgY = MouseY - MiddleY;\n        const rad = Math.atan2(ErgX, ErgY);\n        let deg = (rad * (180 / Math.PI) * -1) + 180;\n        deg = Math.round(deg / 15) * 15;\n\n        const AbstandMitte = Math.sqrt(Math.pow(ErgX, 2) + Math.pow(ErgY, 2));\n\n        let SikkensColorGroup = \"\";\n\n        if (AbstandMitte <= 10) {\n            this.colorWheelCursor.classList.add(\"hidden\");\n            SikkensColorGroup = \"O\";\n        }\n        else {\n            this.colorWheelCursor.classList.remove(\"hidden\");\n            const group: number = Math.floor((deg / 360) * 24);\n\n            switch (group) {\n            case 0:\n            case 24:\n                SikkensColorGroup = \"A\";\n                break;\n            case 1:\n                SikkensColorGroup = \"B\";\n                break;\n            case 2:\n                SikkensColorGroup = \"C\";\n                break;\n            case 3:\n                SikkensColorGroup = \"D\";\n                break;\n            case 4:\n                SikkensColorGroup = \"E\";\n                break;\n            case 5:\n                SikkensColorGroup = \"F\";\n                break;\n            case 6:\n                SikkensColorGroup = \"G\";\n                break;\n            case 7:\n                SikkensColorGroup = \"H\";\n                break;\n            case 8:\n                SikkensColorGroup = \"J\";\n                break;\n            case 9:\n                SikkensColorGroup = \"K\";\n                break;\n            case 10:\n                SikkensColorGroup = \"L\";\n                break;\n            case 11:\n                SikkensColorGroup = \"M\";\n                break;\n            case 12:\n                SikkensColorGroup = \"N\";\n                break;\n            case 13:\n                SikkensColorGroup = \"P\";\n                break;\n            case 14:\n                SikkensColorGroup = \"Q\";\n                break;\n            case 15:\n                SikkensColorGroup = \"R\";\n                break;\n            case 16:\n                SikkensColorGroup = \"S\";\n                break;\n            case 17:\n                SikkensColorGroup = \"T\";\n                break;\n            case 18:\n                SikkensColorGroup = \"U\";\n                break;\n            case 19:\n                SikkensColorGroup = \"V\";\n                break;\n            case 20:\n                SikkensColorGroup = \"W\";\n                break;\n            case 21:\n                SikkensColorGroup = \"X\";\n                break;\n            case 22:\n                SikkensColorGroup = \"Y\";\n                break;\n            case 23:\n                SikkensColorGroup = \"Z\";\n                break;\n            default:\n                break;\n            }\n\n\n            this.colorWheelCursor.style.transform = `rotate(${deg}deg)`;\n        }\n\n        this.GenerateColorGrid(SikkensColorGroup)\n            .then(()=>{\n                this.dispatchEvent(new CustomEvent(\"onRender\", {}));\n            })\n\n    }\n\n    private onColorInputSubmit = (e: Event) => {\n        e.stopPropagation();\n        e.preventDefault();\n        if (!this.colorInput) return;\n        const InputValue = this.colorInput.value.toUpperCase().replace(/\\s|SIKKENS/gi, \"\");\n        if (this.CheckSikkensCodeIsValid(InputValue)) {\n            this._sikkensCode = \"SIKKENS_\" + InputValue;\n            this.SetColorWheel();\n            this._sikkensRGB = this._sikkensMap[InputValue];\n\n        }\n    }\n\n    private onFocusColorInput = (e: Event) => {\n        (e.currentTarget as HTMLInputElement).select();\n    }\n\n    private onColorInput = async (e: Event) => {\n        if (!this.colorInput) return;\n        const InputValue = this.colorInput.value.toUpperCase().replace(/\\s|SIKKENS/gi, \"\");\n        if (this.CheckSikkensCodeIsValid(InputValue, true)) {\n            this._sikkensCode = \"SIKKENS_\" + InputValue;\n            this.SetColorWheel();\n            this._sikkensRGB = this._sikkensMap[InputValue];\n        }\n    }\n\n    render() {\n        return html`\n            <!-- SIKKES Eingabe -->\n            <div class=\"colorInputWrap\">\n                <div class=\"inputContainer\">\n                    <div id=\"colorCurrent\"></div>\n                    <input type=\"text\" id=\"colorInput\" @input=${this.onColorInput} @focus=${this.onFocusColorInput} @change=${this.onColorInput} value=\"\" placeholder=\"SIKKENS-Code eingeben\"/>\n                    <button id=\"colorInputSubmit\" @click=${this.onColorInputSubmit}><span>&sc;</span></button>\n                </div>\n                <div id=\"errorMsgWrap\"><!-- Hier werden Fehlermeldungen reingeschrieben --></div>\n            </div>\n            <!-- Farbton-Kreis -->\n            <div class=\"colorWheelWrap\">\n                <div class=\"colorWheelclickArea\" @click=${this.onWheelAreaClick}></div>\n                <div class=\"colorWheelCursorContainer\">\n                    <div id=\"colorWheelCursor\"></div>\n                </div>\n                <div class=\"colorWheel\"></div>\n            </div>\n             \n            <!-- Farb-Nuancen -->   \n            <div class=\"colorGrid\"><!-- Hier werden Farb-Nuancen reingeschrieben --></div>\n        `;\n    }\n\n    async updated(_changedProperties: PropertyValues) {\n        super.updated(_changedProperties);\n        this._preventEvent = true;\n        if (_changedProperties.has(\"manufacturer\")) {\n            await this.getSikkensColors();\n            this._sikkensCode = \"\";\n            this._sikkensRGB = undefined;\n            this.currentCode = \"\";\n            await this.GenerateColorGrid();\n            this.dispatchEvent(new CustomEvent(\"onRender\", {}));\n        }\n        this._sikkensCode = this.currentCode;\n        await this.SetColorWheel();\n        this._preventEvent = false;\n    }\n\n    async firstUpdated() {\n        await this.getSikkensColors();\n        this.SetColorWheel();\n    }\n}\n","import {PPContainerComponent} from \"../pp-container.component\";\nimport {customElement, property, query} from \"lit/decorators.js\";\nimport {css, html, PropertyValues, unsafeCSS} from \"lit\";\nimport style from \"./pp-property-value.component.sass?inline\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {PTContainerComponent} from \"../../prop-transfer/pt-container.component\";\nimport {RalPickerComponent} from \"../../../colorpicker/ral/ral-picker.component\";\nimport {NcsPickerComponent} from \"../../../colorpicker/ncs/ncs-picker.component\";\nimport {SikkensPickerComponent} from \"../../../colorpicker/sikkens/sikkens-picker.component\";\nimport {BaseElement} from \"../../../standard/base/base.component\";\nimport {ProgressComponent} from \"../../../standard/loading/progress\";\nimport {CommunicationMessageService, DragDropService} from \"@dh-software/webui-api\";\nimport {DragType} from \"@dh-software/webui-types\";\n\nexport interface IPPItem {\n    imgUrl: string\n    name: string\n    manufacturer: string\n    program: string\n    key: string\n    property: string\n    propertyKey: string,\n    containerComponent: PPContainerComponent | PTContainerComponent\n    colorPicker?: { type?: string, rgb?: string, code?: string }\n}\n\ntype PickerComponent = RalPickerComponent | NcsPickerComponent | SikkensPickerComponent;\n\n@customElement(\"fv-pp-value\")\nexport class PPPropertyValueComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({attribute: false})\n    PPContainerComponent: PPContainerComponent | PTContainerComponent | null = null;\n\n    @property({type: String, reflect: true})\n    itemName = \"\";\n\n    @property({type: String, reflect: true})\n    image = \"\";\n\n    @property({type: String}) manufacturer = \"\";\n    @property({type: String}) program = \"\";\n    @property({type: String}) propertyId = \"\";\n    @property({type: String}) propertyKeyValue = \"\";\n    @property({type: String}) propertyKey = \"\";\n    @property({type: Object}) colorPicker?: { type?: string, code?: string, rgb?: string };\n\n    @property({type: Boolean, reflect: true})\n    draggable = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"half-size\"})\n    halfSize = false;\n\n    @query(\".color-picker\")\n    private colorPickerDiv: HTMLDivElement | undefined;\n\n    @query(\"fv-progress\")\n    private _progress: ProgressComponent | undefined;\n\n    private _progressTimer: number | undefined;\n    private _colorPickerInstance?: PickerComponent;\n\n    public get ColorPicker(): PickerComponent | undefined {\n        return this._colorPickerInstance;\n    }\n\n    public set Image(val_: string) {\n        this.image = val_ ? `background-${\n            val_.startsWith(\"#\") ?\n                `color: ${val_}` :\n                val_.split(\",\").length >= 2 ?\n                    `color: rgba(${val_})`\n                    : `image: url(${val_})`\n        }` : this.image;\n    }\n\n    /** @deprecated pass reactive props directly via the template instead. */\n    constructor(options?: IPPItem) {\n        super();\n        if (options) {\n            this.itemName = options.name || \"\";\n            this.manufacturer = options.manufacturer || \"\";\n            this.program = options.program || \"\";\n            this.propertyId = options.key || \"\";\n            this.propertyKeyValue = options.property || \"\";\n            this.propertyKey = options.propertyKey || \"\";\n            this.halfSize = !!options.containerComponent?.halfSize;\n            this.PPContainerComponent = options.containerComponent;\n            this.draggable = !!options.containerComponent?.draggable\n                || options.containerComponent?.getAttribute(\"draggable\") !== null;\n            this.Image = options.imgUrl;\n            if (options.colorPicker) this.colorPicker = options.colorPicker;\n        }\n    }\n\n    protected willUpdate(changed: PropertyValues): void {\n        super.willUpdate(changed);\n        if (changed.has(\"colorPicker\") && this.colorPicker?.type) {\n            this.classList.add(\"color-picker\");\n            this._ensurePicker(this.colorPicker.type);\n        }\n        if (changed.has(\"halfSize\")) this.classList.toggle(\"halfSize\", this.halfSize);\n    }\n\n    private _ensurePicker(type: string): void {\n        if (this._colorPickerInstance) return;\n        switch (type) {\n            case \"RAL\": this._colorPickerInstance = new RalPickerComponent(); break;\n            case \"NCS\": this._colorPickerInstance = new NcsPickerComponent(); break;\n            case \"SIKKENS\": this._colorPickerInstance = new SikkensPickerComponent(); break;\n            default: return;\n        }\n        this._colorPickerInstance.getColorByCode(this.propertyKeyValue.replace(/\\[CP\\].*\\[CP\\]/g, \"\")).then(imgUrl => {\n            if (imgUrl) this.Image = imgUrl;\n        });\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        this.addEventListener(\"click\", this._onClick);\n        if (this._colorPickerInstance) {\n            this.colorPickerDiv?.appendChild(this._colorPickerInstance);\n            this._colorPickerInstance.classList.add(\"color-picker\");\n            this._colorPickerInstance.addEventListener(\"colorChange\", this._onColorChange);\n        }\n    }\n\n    private _onClick = (e: Event) => {\n        e.stopPropagation();\n        if (!this.PPContainerComponent || this.PPContainerComponent.IsBusy) return;\n        if (this._progressTimer) {\n            clearTimeout(this._progressTimer);\n            this._progressTimer = undefined;\n        }\n        this._progress?.show?.();\n        if (this._colorPickerInstance) {\n            const isActive = this.classList.contains(\"active\");\n            if (isActive) return;\n            this.classList.add(\"active\");\n            this.colorPickerDiv?.classList.remove(\"hidden\");\n            this.parentNode?.childNodes.forEach((child: ChildNode) => {\n                (child as HTMLElement).classList[child !== this ? \"add\" : \"remove\"](\"hidden\");\n            });\n            this.previousElementSibling?.scrollIntoView();\n            (this.parentNode as HTMLDivElement)?.classList.add(\"is-color-picker\");\n            return;\n        }\n        this.PPContainerComponent.IsBusy = true;\n        CommunicationMessageService.modifyProperty(JSON.stringify([{\n            manufacturer: this.manufacturer,\n            program: this.program,\n            key: this.propertyId,\n            property: this.propertyKeyValue,\n            propertyKey: this.propertyKey,\n        }]), this.PPContainerComponent.PPOptions).then(async () => {\n            if (this._progress) this._progress.finished = true;\n            this.PPContainerComponent?.requestUpdate();\n            this._progressTimer = setTimeout(() => this._progress?.hide?.(), 1000) as unknown as number;\n        });\n    };\n\n    private _onColorChange = (e: Event) => {\n        this.classList.add(\"hidden\");\n        const detail = (e as CustomEvent).detail as {\n            code: string;\n            rgba: { r: number; g: number; b: number; a: 1 };\n        };\n        CommunicationMessageService.modifyProperty(JSON.stringify([{\n            manufacturer: this.manufacturer,\n            program: this.program,\n            key: this.propertyId,\n            property: this.propertyKeyValue,\n            propertyKey: this.propertyKey,\n        }]), Object.assign({\n            modifyColorPicker: {\n                code: detail.code,\n                rgb: `${detail.rgba.r},${detail.rgba.g},${detail.rgba.b}`,\n                key: this.propertyKey,\n                id: this.propertyId,\n            },\n        }, this.PPContainerComponent?.PPOptions)).then(async () => {\n            if (this._progress) this._progress.finished = true;\n            this.PPContainerComponent?.requestUpdate();\n            setTimeout(() => this._progress?.hide?.(), 1000);\n        });\n    };\n\n    render() {\n        DragDropService.removeElement(this);\n        if (this.draggable) {\n            DragDropService.addElement(this, {\n                extData: {\n                    manufacturer: this.manufacturer,\n                    program: this.program,\n                    key: this.propertyId,\n                    property: this.propertyKeyValue,\n                    propertyKey: this.propertyKey,\n                },\n                id: this.propertyId,\n                type: DragType.PROGPROPERTY,\n            });\n        }\n        const imageVisibility = !!this.image || this.halfSize || !!this._colorPickerInstance;\n        const classMapImage = {\n            \"not-found\": !this.image,\n            \"transparent\": !this.image && imageVisibility && !this._colorPickerInstance,\n            \"pp-image\": true,\n        };\n        return html`\n            <div class=\"pp-item-content\">\n                ${imageVisibility ? html`\n                    <div class=\"pp-item-image\">\n                        <div class=${classMap(classMapImage)} style=\"${this.image ? `${this.image}` : \"\"}\">\n                            <fv-progress></fv-progress>\n                        </div>\n                    </div>` : \"\"}\n                <div class=\"pp-item-name\">\n                    <span>${this.itemName}</span>\n                </div>\n            </div>\n            <div class=\"color-picker hidden\"></div>\n        `;\n    }\n}\n","import { IPPItem, PPPropertyValueComponent } from \"./pp-property-value.component\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./pp-property-values.component.sass?inline\";\nimport { BaseElement } from \"../../../standard/base/base.component\";\n\n@customElement(\"fv-pp-values\")\nexport class PPPropertyValuesComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Boolean, reflect: true })\n    active = false;\n\n    @property({ type: Boolean, reflect: true })\n    noTransition = false;\n\n    constructor() {\n        super();\n    }\n\n    render(): TemplateResult<1> {\n        return html`<slot></slot>`;\n    }\n\n    addItem(item_: IPPItem): PPPropertyValueComponent {\n        const item = new PPPropertyValueComponent(item_);\n        return item;\n    }\n}\n\n","import { customElement, property } from \"lit/decorators.js\";\nimport { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./pp-property.component.sass?inline\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { BaseElement } from \"../../../standard/base/base.component\";\n\nexport interface IPPMenu {\n    title?: string\n    hideItemCount?: boolean\n    halfSize?: boolean\n}\n\n@customElement(\"fv-pp-property\")\nexport class PPPropertyComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true })\n    currentImage = \"\";\n\n    @property({ type: String, reflect: true })\n    currentName = \"\";\n\n    @property({ type: Number, reflect: true })\n    itemCount = 0;\n\n    @property({ type: Boolean, reflect: true })\n    active = false;\n\n    @property({ type: String, reflect: true })\n    titleText = \"\";\n\n    @property({ type: Boolean, reflect: true })\n    transparentPlaceholder = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"hide-item-count\" })\n    hideItemCount = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"half-size\" })\n    halfSize = false;\n\n    /** @deprecated kept for back-compat — pass `.titleText` / `.hideItemCount` / `.halfSize` directly instead. */\n    constructor(options?: IPPMenu) {\n        super();\n        if (options) {\n            this.titleText = options.title || \"\";\n            this.hideItemCount = !!options.hideItemCount;\n            this.halfSize = !!options.halfSize;\n        }\n    }\n\n    protected updated(changed: PropertyValues): void {\n        super.updated(changed);\n        if (changed.has(\"halfSize\")) this.classList.toggle(\"halfSize\", this.halfSize);\n    }\n\n    protected render(): TemplateResult<1> {\n        const imageVisibility = (!this.active || this.currentImage) || this.halfSize;\n        const classMapCurrentImage = {\n            \"not-found\": !this.currentImage,\n            \"transparent\": this.transparentPlaceholder,\n            \"pp-image\": true,\n        };\n        return html`${imageVisibility ? html`<div class=\"pp-current-image\">\n            <div class=${classMap(classMapCurrentImage)} style=\"${this.currentImage ? `background-${\n    this.currentImage.startsWith(\"#\") ?\n        `color: ${this.currentImage}` :\n        this.currentImage.split(\",\").length >= 2 ?\n            `color: rgba(${this.currentImage})` :\n            `image: url(${this.currentImage})`}` : \"\"}\"></div>\n            </div>` : \"\"}\n            <div class=\"pp-info\">\n                <div class=\"pp-group-title\">\n                    <span>${this.titleText}</span>\n                </div>\n                <div class=\"pp-current-name\">\n                    <span>${this.currentName}</span>\n                </div>\n                ${!this.hideItemCount && this.halfSize ? html`\n                    <div class=\"pp-items-counter\">\n                        <span>${this.itemCount}</span>\n                    </div>` : \"\"}\n            </div>\n        ${!this.hideItemCount && !this.halfSize ? html`\n            <div class=\"pp-items-counter\">\n                <span>${this.itemCount}</span>\n            </div>` : \"\"}\n        `;\n    }\n}\n","import { PTContainerComponent } from \"../pt-container.component\";\nimport { PTPropertyGroupComponent } from \"../furnview_theme/pt-property-group.component\";\nimport { PPPropertyValuesComponent } from \"../../prog-property/furnview_theme/pp-property-values.component\";\nimport { PPPropertyComponent } from \"../../prog-property/furnview_theme/pp-property.component\";\nimport {ProgPropertyModel, PropTransferModel} from \"@dh-software/webui-api\";\nimport {\n    IGetPropTransferParams,\n    IProgPropertyExt,\n    IProgPropertyValue,\n    IPropTransferItem\n} from \"@dh-software/webui-types\";\n\nclass PTThemeIndexClass {\n    async build(ppComponent: HTMLDivElement, containerComponent: PTContainerComponent, options: IGetPropTransferParams) {\n        const values: Array<PTPropertyGroupComponent | PPPropertyValuesComponent | PPPropertyComponent> = [];\n        await PropTransferModel.traverse({\n            groupCallback: async (manufacturer, program, group, items) => {\n                const valuesComponent = new PTPropertyGroupComponent();\n                const progProperties: string[] = [];\n                items.forEach((item) => {\n                    for (let i = 0; i < item.progProperties.length; i++) {\n                        progProperties.indexOf(item.progProperties[i]) === -1 ? progProperties.push(item.progProperties[i]) : null;\n                    }\n                });\n\n                if (items && options.grouped) {\n                    items.forEach((item: IPropTransferItem) => {\n                        valuesComponent.addItem(item);\n                    });\n                }\n                values.push(valuesComponent);\n                const filteredProgProperties = await ProgPropertyModel.findMany(manufacturer, program, progProperties);\n                Object.values(filteredProgProperties).forEach((progPropertyModel: IProgPropertyExt) => {\n                    const ppMenu: PPPropertyComponent = new PPPropertyComponent({ title: progPropertyModel.name, hideItemCount: containerComponent.hideItemCount });\n                    const progPropertyValueList = Object.values(progPropertyModel.children);\n                    const currentValue: IProgPropertyValue = (progPropertyModel.currentValue as unknown) as IProgPropertyValue;\n                    if (currentValue) {\n                        ppMenu.currentName = currentValue.name;\n                        ppMenu.currentImage = currentValue.alternativeImageUrl;\n                    }\n\n                    const ppItems: PPPropertyValuesComponent = new PPPropertyValuesComponent();\n                    ppItems.id = \"item_\" + progPropertyModel.id;\n                    values.push(ppMenu);\n                    values.push(ppItems);\n                    ppMenu.addEventListener(\"click\", () => {\n                        if (!ppMenu.active) {\n                            (ppComponent.querySelectorAll(\"fv-pp-property\") as NodeListOf<PPPropertyComponent>)\n                                .forEach((property: PPPropertyComponent) => {\n                                    if (ppMenu !== property) {\n                                        property.classList.add(\"hidden\");\n                                    }\n                                });\n                            ppMenu.active = true;\n                            ppItems.active = true;\n                        }\n                    });\n\n                    ppMenu.itemCount = progPropertyValueList.length;\n                    for (let ppvI = 0; ppvI < progPropertyValueList.length; ppvI++) {\n                        const progPropertyValueModel = progPropertyValueList[ppvI];\n                        ppItems.addItem({\n                            colorPicker: progPropertyModel.colorPicker,\n                            imgUrl: progPropertyValueModel.alternativeImageUrl,\n                            name: progPropertyValueModel.name,\n                            manufacturer: progPropertyModel.manufacturerName.toLowerCase(),\n                            program: progPropertyModel.programName.toLowerCase(),\n                            key: progPropertyModel.id,\n                            property: progPropertyValueModel.key,\n                            propertyKey: progPropertyValueModel.propertyKey,\n                            containerComponent: containerComponent\n                        });\n                    }\n                });\n\n            },\n            itemsCallback: async (item: IPropTransferItem) => {\n                if (!options.grouped) {\n                    const valuesComponent = new PTPropertyGroupComponent();\n                    if (item) {\n                        valuesComponent.addItem(item);\n                    }\n                    values.push(valuesComponent);\n                }\n            }\n        }, options);\n        ppComponent.innerHTML = \"\";\n        values.forEach((valueComponent) => {\n            ppComponent.appendChild(valueComponent);\n        });\n    }\n}\n\nexport const PTCombineThemeIndex = new PTThemeIndexClass();\n","import { customElement, property, query } from \"lit/decorators.js\";\nimport { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./pt-container.component.sass?inline\";\nimport { PTFurnviewThemeIndex } from \"./furnview_theme/pt-theme.index\";\nimport { PTCombineThemeIndex } from \"./combine_theme/pt-theme.index\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { PPMode } from \"../prog-property/pp-container.component\";\nimport { DropDownComponent } from \"../../standard/dropdown\";\nimport {ConfigurationService, EventFactoryService, LocaleService, RequestService, WebViewerService} from \"@dh-software/webui-api\";\nimport {IModifyPropertyOptions} from \"@dh-software/webui-types\";\n\nenum PPTheme {\n    FURNVIEW = 1,\n    COMBINE = 99\n}\n\n@customElement(\"fv-pt-container\")\nexport class PTContainerComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @query(\"#mode-dropdown\")\n    private _ppModeDropdown?: DropDownComponent;\n\n    @query(\".pt-component\")\n    private _ptComponent: HTMLDivElement | undefined;\n\n    @property({ type: Boolean, reflect: true })\n    IsBusy = false;\n\n    @property({ type: PPTheme, reflect: true })\n    theme = PPTheme.FURNVIEW\n\n    @property( { type: Boolean, reflect: true })\n    halfSize = false\n\n    @property( { type: Boolean, reflect: true })\n    grouped = true\n\n    @property({ type: Boolean, reflect: true })\n    hideItemCount = false;\n\n    @property( { type: Boolean, reflect: true, attribute: \"mode-selection\" })\n    private _ppModeSelection = false;\n\n    private _ppMode : PPMode = PPMode.ALL;\n\n    get PPOptions() : IModifyPropertyOptions {\n        const propertyOptions: IModifyPropertyOptions = {};\n        switch (this._ppMode) {\n        default:\n        case PPMode.ALL:\n            break;\n        case PPMode.COMPONENT:\n            propertyOptions.modifyComponent = true;\n            break;\n        case PPMode.ELEMENT:\n            propertyOptions.modifyElement = true;\n            break;\n        }\n        return propertyOptions;\n    }\n\n    constructor() {\n        super();\n    }\n\n    async connectedCallback(): Promise<void> {\n        super.connectedCallback();\n        EventFactoryService.RefreshPropertyPanel.register(() => {\n            this.loadPropertyPanel();\n        });\n        await RequestService.Initialized;\n\n        await WebViewerService.IsAppReady;\n\n        if (this._ppModeSelection && this._ppModeDropdown) {\n            const config = await ConfigurationService.Configuration;\n            if (!config.disable_properties_on_selection) {\n                if (this._ppModeDropdown.parentElement) this._ppModeDropdown.parentElement.classList.remove(\"hidden\");\n                this._ppModeDropdown.addEventListener(\"onChange\", ((evt: CustomEvent) => {\n                    this._ppMode = evt.detail.item.value as PPMode;\n                }) as EventListener);\n                this._ppModeDropdown.clearItems();\n                this._ppModeDropdown.addItems([\n                    {\n                        text: await LocaleService.get(\"1701\"), value: PPMode.ALL\n                    },\n                    {\n                        text: await LocaleService.get(\"1702\"), value: PPMode.ELEMENT\n                    },\n                    {\n                        text: await LocaleService.get(\"1703\"), value: PPMode.COMPONENT\n                    }\n                ], false);\n                //await LocalesModel.get(\"1704\") // TODO CHECK IF NECESSARY\n            }\n        }\n\n        await this.loadPropertyPanel();\n    }\n\n    async loadPropertyPanel(): Promise<void> {\n        this.IsBusy = true;\n\n        const oldScrollTop = this._ptComponent?.scrollTop;\n\n        if (this._ptComponent) {\n            switch (+this.theme) {\n            case PPTheme.FURNVIEW:\n                await PTFurnviewThemeIndex.build(this._ptComponent, this, { grouped: this.grouped, useSelection: true });\n                break;\n            case PPTheme.COMBINE:\n                await PTCombineThemeIndex.build(this._ptComponent, this, { grouped: this.grouped, useSelection: true });\n                break;\n            }\n        }\n\n        await this.updateComplete;\n        if (this._ptComponent && typeof oldScrollTop === \"number\") this._ptComponent.scrollTop = oldScrollTop;\n        this.IsBusy = false;\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            ${ this._ppModeSelection ? html`\n            <div class=\"hidden\">\n                <fv-dropdown id=\"mode-dropdown\"></fv-dropdown>\n            </div>\n            ` : \"\" }\n            <div class=\"pt-component\">\n                <slot></slot>\n            </div>`;\n    }\n}\n\n","import {BaseElement} from \"../standard/base/base.component\";\nimport {html, PropertyValues, unsafeCSS} from \"lit\";\nimport {customElement, property, query} from \"lit/decorators.js\";\nimport {DropDownComponent, IDropdownOptions} from \"../standard/dropdown/dropdown/dropdown.component\";\n\nimport style from './language-picker.component.sass?inline';\nimport {DropdownItemComponent, IDropdownItem} from \"../standard/dropdown/dropdown-item/dropdown-item.component\";\nimport {EventHandlerService} from \"../../utils/event.handler.service\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {CommunicationMessageService, LocaleService, WebViewerService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-language-picker\")\nexport class LanguagePickerComponent extends BaseElement {\n\n    static styles = [super.styles || [], unsafeCSS(style)]\n\n    @property({type: String, reflect: true, attribute: 'template-id'})\n    private templateId: string = \"language_picker\";\n\n    @property()\n    private _dropdownOptions: IDropdownOptions = {\n        items: []\n    };\n\n    @property({type: Boolean, reflect: true})\n    hiddenByDefault: boolean = true;\n\n    constructor() {\n        super();\n    }\n\n    protected async firstUpdated(_changedProperties: PropertyValues<this>) {\n        super.firstUpdated(_changedProperties);\n        await WebViewerService.IsAppReady;\n\n        const languages = await CommunicationMessageService.getAvailableLanguages();\n        this._dropdownOptions = {\n            ...this._dropdownOptions,\n            items: languages.map(x => {\n                return {\n                    value: x.langCode,\n                    text: x.name,\n                    active: x.langCode === LocaleService.getLanguage()\n                }\n            })\n        }\n    }\n\n    private getHideState() {\n        const items = this._dropdownOptions?.items || []\n        return this.hiddenByDefault && items.length <= 1;\n    }\n\n    private onDropdownChanged(ev: CustomEvent<IDropdownItem>) {\n        const data = ev.detail;\n        const langCode = data.value;\n        if(langCode) {\n            EventHandlerService.dispatch(\"set-language\", {\n                langCode,\n            })\n        }\n    }\n\n    render() {\n        const dropdownClasses = classMap({\n            hidden: this.getHideState()\n        })\n        return html`\n            <fv-dropdown @dropdown-item-changed=\"${this.onDropdownChanged}\" class=\"${dropdownClasses}\" .dropdownOptions=\"${this._dropdownOptions}\"></fv-dropdown>\n        `\n    }\n\n}\n","import { html, unsafeCSS, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\n\nimport { map } from \"lit/directives/map.js\";\nimport { range } from \"lit/directives/range.js\";\n\nimport { BaseElement } from \"../standard/base/base.component\";\n\nimport defaultStyle from \"../common.sass?inline\";\nimport style from \"./datepicker.component.sass?inline\";\n\ntype DateRangeDescriptor = {\n    min: string,\n    max: string,\n    exact: string\n}\n\nconst weekdays = new Map<string, number>([\n    [\"MONDAY\", 0],\n    [\"TUESDAY\", 1],\n    [\"WEDNESDAY\", 2],\n    [\"THURSDAY\", 3],\n    [\"FRIDAY\", 4],\n    [\"SATURDAY\", 5],\n    [\"SUNDAY\", 6],\n]);\n\nfunction toShortDate(year: number, month: number, day: number) {\n    const formatter = new Intl.NumberFormat(navigator.languages[0], { minimumIntegerDigits: 2, useGrouping: false });\n\n    return `${formatter.format(year)}-${formatter.format(month + 1)}-${formatter.format(day)}`;\n}\n\nfunction toDisplayDate(year: number, month: number, day: number) {\n    const formatter = new Intl.DateTimeFormat(navigator.languages[0], { year: \"numeric\", month: \"2-digit\", day: \"2-digit\" });\n\n    return formatter.format(new Date(year, month, day));\n}\n\n@customElement(\"fv-datepicker\")\nexport class DatepickerComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        unsafeCSS(style),\n        unsafeCSS(defaultStyle)\n    ];\n\n    @state()\n    private date: Date = new Date();\n\n    @state()\n    private day: number = (new Date()).getDate();\n\n    @state()\n    private month: number = (new Date()).getMonth();\n\n    @state()\n    private year: number = (new Date()).getFullYear();\n\n    @state()\n    private open = false;\n\n    @state()\n    private parsedValidDates: Array<DateRangeDescriptor> = [];\n\n    @state()\n    private parsedRestrictedDates: Array<DateRangeDescriptor> = [];\n\n    @property({type: String, attribute: \"valid-dates\"})\n    validDates = \"\";\n\n    @property({type: String, attribute: \"restricted-dates\"})\n    restrictedDates = \"\";\n\n    private dispatchChange() {\n        this.dispatchEvent(new Event(\"change\", { bubbles: true, composed: true, cancelable: true }));\n    }\n\n    private close() {\n        this.open = false;\n    }\n\n    private clickDay(event: Event) {\n        const element = event.target as HTMLElement;\n\n        if (element.tagName === \"SPAN\") {\n            if (element.hasAttribute(\"day\") && !element.hasAttribute(\"disabled\")) {\n                this.day = parseInt(element.innerText);\n\n                this.date = new Date(this.year, this.month, this.day);\n\n                this.close();\n\n                this.dispatchChange();\n            }\n        }\n    }\n\n    private getDayOfWeek(date: string): number\n    private getDayOfWeek(year: number, month: number, day: number): number\n    private getDayOfWeek(dateOrYear: number | string, month?: number | undefined, day?: number | undefined): number {\n        let dow;\n\n        if (typeof month !== \"undefined\" && typeof day !== \"undefined\") {\n            dow = (new Date(dateOrYear as number, month, day)).getDay() - 1;\n        }\n        else {\n            dow = (new Date(dateOrYear)).getDay() - 1;\n        }\n\n        return dow >= 0 ? dow : 6;\n    }\n\n    private getFirstDayOfTheMonth(year: number, month: number) {\n        return this.getDayOfWeek(year, month, 1);\n    }\n\n    private getDayCount(year: number, month: number) {\n        return (new Date(year, month + 1, 0)).getDate();\n    }\n\n    private isValidDate(date: string) {\n        return this.isDateInValidRange(date) && !this.isDateInInvalidRange(date);\n    }\n\n    private renderCalendar() {\n        return html`\n      <div id='calendar'>\n        <div class='header'>\n          <div class='year control'>\n            <button @click='${this.decreaseYear}'>&lt;</button>\n            <span class='year display'>${this.year}</span>\n            <button @click='${this.increaseYear}'>&gt;</button>\n          </div>\n          <div class='month control'>\n            <button @click='${this.decreaseMonth}'>&lt;</button>\n            <span class='month display'>${this.getPrettyMonth()}</span>\n            <button @click='${this.increaseMonth}'>&gt;</button>\n          </div>\n        </div>\n        <div class='content' @click='${this.clickDay}'>\n          ${map(range(1, 8), (i) => html`<span>${this.getPrettyDay(i)}</span>`)}\n          ${map(range(this.getFirstDayOfTheMonth(this.year, this.month)), () => html`<span></span>`)}\n          ${map(range(1, this.getDayCount(this.year, this.month) + 1), i => html`<span day part='day' ?disabled='${!this.isValidDate(toShortDate(this.year, this.month, i))}'>${i}</span>`)}\n        </div>\n      </div>`;\n    }\n\n    click() {\n        this.open = !this.open;\n\n        if (this.open) {\n            this.year = this.date.getFullYear();\n            this.month = this.date.getMonth();\n            this.day = this.date.getDate();\n        }\n    }\n\n    private decreaseYear() {\n        this.year--;\n    }\n\n    private increaseYear() {\n        this.year++;\n    }\n\n    private decreaseMonth() {\n        this.month--;\n\n        if (this.month < 0) {\n            this.month = 11;\n            this.decreaseYear();\n        }\n    }\n\n    private increaseMonth() {\n        this.month++;\n\n        if (this.month > 11) {\n            this.month = 0;\n            this.increaseYear();\n        }\n    }\n\n    private getPrettyMonth() {\n        const formatter = new Intl.DateTimeFormat(navigator.languages[0], { month: \"short\" });\n\n        return formatter.format(new Date(this.year, this.month));\n    }\n\n    private getPrettyDay(day: number) {\n        const formatter = new Intl.DateTimeFormat(navigator.languages[0], { weekday: \"short\" });\n\n        // Luckily 01.01.2024 is a Monday, so it's a perfect date to derive weekdays from\n        return formatter.format(new Date(2024, 0, day));\n    }\n\n    private parseDates(value: string | null) {\n        if (!value) {\n            return [];\n        }\n\n        const values = value.split(\",\");\n\n        return values.map((value) => {\n            const split = value.split(\":\");\n\n            if (split.length === 1) {\n                return { min: \"\", max: \"\", exact: split[0] };\n            }\n            else if (split.length >= 2) {\n                // alpha numerical sorting; any date will always be larger than 0_infinity and smaller than 9_infinity. Empty values are interpreted as infinite past or future\n                return { min: split[0] || \"0_infinity\", max: split[1] || \"9_infinity\", exact: \"\" };\n            }\n            else {\n                return { min: \"0_infinity\", max: \"9_infinity\", exact: \"\" };\n            }\n        });\n    }\n\n    private isDateInRange(date: string, validRanges: Array<DateRangeDescriptor> = []) {\n        if (validRanges.length > 0) {\n            return validRanges.some((range) => range.exact === date || weekdays.has(range.exact.toUpperCase()) && weekdays.get(range.exact.toUpperCase()) === this.getDayOfWeek(date)) || validRanges.some((range) => range.min <= date && range.max >= date);\n        }\n\n        return true;\n    }\n\n    private isDateInInvalidRange(date: string) {\n        if (this.parsedRestrictedDates.length > 0) {\n            return this.isDateInRange(date, this.parsedRestrictedDates);\n        }\n\n        return false;\n    }\n\n    private isDateInValidRange(date: string) {\n        if (this.parsedValidDates.length > 0) {\n            return this.isDateInRange(date, this.parsedValidDates);\n        }\n\n        return true;\n    }\n\n    get value() {\n        return toShortDate(this.date.getFullYear(), this.date.getMonth(), this.date.getDate());\n    }\n\n    set value(date: string) {\n        this.date = new Date(date);\n\n        this.dispatchChange();\n    }\n\n    get valueAsDate() {\n        return this.date;\n    }\n\n    set valueAsDate(date: Date) {\n        this.date = date;\n\n        this.dispatchChange();\n    }\n\n    override connectedCallback() {\n        super.connectedCallback();\n\n        this.setAttribute(\"tabindex\", \"-1\");\n        this.addEventListener(\"focusout\", () => this.close());\n    }\n\n    override attributeChangedCallback(name: string, _old: string | null, value: string | null) {\n        super.attributeChangedCallback(name, _old, value);\n\n        if (name === \"valid-dates\") {\n            this.parsedValidDates = this.parseDates(value);\n        }\n        else if (name === \"restricted-dates\") {\n            this.parsedRestrictedDates = this.parseDates(value);\n        }\n    }\n\n    override render() {\n        return html`\n      <div id=\"container\">\n        <div id='input-container' @click='${this.click}'>\n          <input id='input' readonly .value='${toDisplayDate(this.date.getFullYear(), this.date.getMonth(), this.date.getDate())}'/><button>📆</button>\n        </div>\n        ${this.open ? this.renderCalendar() : nothing}\n      </div>\n    `;\n    }\n}\n","import { customElement, query } from \"lit/decorators.js\";\nimport { html, PropertyValues, unsafeCSS } from \"lit\";\n\nimport { BaseElement } from \"../standard/base/base.component\";\nimport { DatepickerComponent } from \"../datepicker/datepicker.component\";\n\nimport style from \"./delivery-datepicker.component.sass?inline\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-delivery-datepicker\")\nexport class DeliveryDatepickerComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        unsafeCSS(style)\n    ];\n\n    @query(\"#earliest-date\")\n    private earliestElement!: DatepickerComponent;\n\n    @query(\"#latest-date\")\n    private latestElement!: DatepickerComponent;\n\n    private async refreshDeliveryDates() {\n        let earliestDate = await CommunicationMessageService.executeManufacturerFunction(\"zeg\", \"ZEG_GetFirstPossibleDeliveryDate\", 0) as string;\n\n        earliestDate = earliestDate.split(\"T\")[0];\n\n        this.earliestElement.value = earliestDate;\n        this.earliestElement.setAttribute(\"valid-dates\", `${earliestDate}:`);\n    }\n\n    private async setLatestDate() {\n        // default date and holidays need to be corrected?\n        let earliestDate = await CommunicationMessageService.executeManufacturerFunction(\"zeg\", \"ZEG_GetFirstPossibleLastDeliveryDate\", 0, (this.earliestElement.valueAsDate || new Date()).toISOString()) as string;\n        let latestDate = await CommunicationMessageService.executeManufacturerFunction(\"zeg\", \"ZEG_GetLastPossibleLastDeliveryDate\", 0, (this.earliestElement.valueAsDate || new Date()).toISOString()) as string;\n        //let defaultDate = await CommunicationMessageService.executeManufacturerFunction(\"zeg\", \"ZEG_GetDefaultDeliveryDate\", 0) as string;\n        let defaultDate = earliestDate;\n        //let holidayStartDate = await CommunicationMessageService.executeManufacturerFunction(\"zeg\", \"ZEG_DeliveryCalcVar_KELLERAnnualClosingBegin\", 0) as string;\n        //let holidayEndDate = await CommunicationMessageService.executeManufacturerFunction(\"zeg\", \"ZEG_DeliveryCalcVar_KELLERAnnualClosingEnd\", 0) as string;\n\n        earliestDate = earliestDate.split(\"T\")[0];\n        latestDate = latestDate.split(\"T\")[0];\n        defaultDate = defaultDate.split(\"T\")[0];\n        //holidayStartDate = holidayStartDate.split(\"T\")[0];\n        //holidayEndDate = holidayEndDate.split(\"T\")[0];\n\n        this.latestElement.value = defaultDate;\n\n        this.latestElement.setAttribute(\"valid-dates\", `${earliestDate}:${latestDate}`);\n        //this.latestElement.setAttribute(\"restricted-dates\", `saturday,sunday,${holidayStartDate}:${holidayEndDate}`);\n        this.latestElement.setAttribute(\"restricted-dates\", \"saturday,sunday\");\n    }\n\n    get earliestDate() {\n        return this.earliestElement.valueAsDate;\n    }\n\n    get earliestDateAsShortString() {\n        return this.earliestElement.value;\n    }\n\n    get latestDate() {\n        return this.latestElement.valueAsDate;\n    }\n\n    get latestDateAsShortString() {\n        return this.latestElement.value;\n    }\n\n    protected async firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n\n        this.refreshDeliveryDates();\n    }\n\n    render() {\n        return html`\n            <div class=\"container\">\n                <div id=\"title\" i18n=\"1509\"></div>\n                <span id=\"earliest-label\" i18n=\"20342\" class=\"lowercase\"></span>\n                <fv-datepicker id=\"earliest-date\" @change=\"${this.setLatestDate}\" restricted-dates=\"saturday,sunday\"></fv-datepicker>\n                <span id=\"latest-label\" i18n=\"fv.right.panel.catalogue.dimensions.to\" class=\"lowercase\"></span>\n                <fv-datepicker id=\"latest-date\"></fv-datepicker>\n            </div>\n        `;\n    }\n}\n\n","import {CommunicationMessageService} from \"@dh-software/webui-api\";\n\nexport interface IARExportData {\n    qr: string;\n    url: string;\n}\n\nclass ARUploadModelClass {\n    async create() {\n        return await CommunicationMessageService?.getARExport() as IARExportData;\n    }\n}\n\nexport const ARUploadModel = new ARUploadModelClass();\n","import {css, html, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./ar-modal.component.sass?inline\";\nimport {customElement, property, query} from \"lit/decorators.js\";\nimport {ARUploadModel, IARExportData} from \"../../models/ar/ar-upload.model\";\nimport {ModalComponent} from \"../standard/modal/modal.component\";\nimport {CommunicationMessageService, LocaleService, WebViewerService} from \"@dh-software/webui-api\";\nimport type { IExternalWindow } from \"@dh-software/webui-types\";\nimport type { ComponentStateHandlerMap } from \"../../models/event-handler/component-state-event\";\n\ndeclare global {\n    interface ComponentStates {\n        \"fv-ar-modal:show\": Record<string, never>;\n    }\n}\n\nexport interface ARModalText {\n    [key: string]: string\n}\n\n@customElement(\"fv-ar-modal\")\nexport class ARModalComponent extends ModalComponent {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @query(\"#url\")\n    private url: HTMLAnchorElement | undefined;\n\n    @query(\"#qrCode\")\n    private qrCode: HTMLImageElement | undefined;\n\n    @query(\".ar-buttons\")\n    private buttonsContainer!: HTMLDivElement;\n\n    @property({type: Object})\n    private modalTexts: ARModalText = {\n        heading: \"modal.ar.heading\",\n        information: \"\",\n        information1: \"modal.ar.qrcode.information.one\",\n        information2: \"modal.ar.qrcode.information.two\",\n        alternative: \"modal.ar.alternative\",\n        open: \"7222\",\n    }\n\n    stateHandlers: ComponentStateHandlerMap = {\n        \"fv-ar-modal:show\": () => { this.show(); },\n    };\n\n    constructor() {\n        super();\n    }\n\n    public show(dimmed: boolean = this.dimmed, fade: boolean = this.fade): void {\n        super.show(dimmed, fade);\n        this.setLoading(true);\n        ARUploadModel.create()\n            .then((arData: IARExportData) => {\n                if (this.qrCode) this.qrCode.src = arData.qr;\n                if (this.url) this.url.href = arData.url;\n                this.setLoading();\n            })\n            .catch(() => {\n                this.setLoading();\n            });\n        CommunicationMessageService.preloadARModel();\n    }\n\n    private async onOpenClick(event: MouseEvent) {\n        if (await CommunicationMessageService.startAR()) {\n            event.preventDefault();\n            event.stopPropagation();\n        }\n    }\n\n    protected async firstUpdated(_changedProperties: PropertyValues): Promise<void> {\n        super.firstUpdated(_changedProperties);\n        await LocaleService.IsFileRead();\n        for(const [key, value] of Object.entries(this.modalTexts)) {\n            if(value) {\n                this.modalTexts[key] = LocaleService.translate(value, \"\");\n            }\n        }\n        CommunicationMessageService.isARCapable().then((result) => {\n            this.buttonsContainer.classList.toggle(\"hidden\", !result);\n        })\n        this.requestUpdate(\"modalTexts\");\n    }\n\n    render(): TemplateResult<1> {\n        return super.build(html`\n            <div class=\"content\">\n                <div class=\"additional-content\">\n                    <slot></slot>\n                </div>\n                <div class=\"ar-header\">\n                    <span>${this.modalTexts?.heading}</span>\n                </div>\n                <div class=\"ar-information\">\n                    <span >${this.modalTexts?.information}</span>\n                </div>\n                <div class=\"ar-qrcode-information\">\n                    <ul>\n                        <li>${this.modalTexts?.information1}</li>\n                        <li>${this.modalTexts?.information2}</li>\n                    </ul>\n                </div>\n                <div class=\"qrCode-container\">\n                    <img id=\"qrCode\" src=\"#\"/>\n                </div>\n                <div class=\"ar-buttons\">\n                    <span class=\"only-desktop\">${this.modalTexts?.alternative}</span>\n                    <a target=\"_blank\" id=\"url\" href=\"#\" @click=${(e: MouseEvent) => this.onOpenClick(e)}>\n                        <fv-button class=\"bordered image-button\">${this.modalTexts?.open}\n                        </fv-button>\n                    </a>\n                </div>\n            </div>\n        `);\n    }\n\n    protected updated(changedProperties: PropertyValues) {\n        super.updated(changedProperties);\n        if (this.shadowRoot)\n            this.shadowRoot.querySelectorAll(\".ar-qrcode-information\")?.forEach((div) => {\n                div.querySelectorAll(\"li\")\n                    .forEach((li) => {\n                        if (li && li.textContent !== null) {\n                            if (li.textContent.length === 0) {\n                                li.classList.add(\"hidden\");\n                            } else {\n                                li.classList.remove(\"hidden\");\n                            }\n                        }\n                    });\n            });\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./info.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport \"../modal-step/modal.step.component\";\nimport { ModalStepComponent } from \"../modal-step/modal.step.component\";\nimport { ModalComponent } from \"./modal.component\";\n\n@customElement(\"fv-info-modal\")\nexport class InfoModalComponent extends ModalComponent {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property()\n    image = \"\"\n\n    constructor() {\n        super();\n    }\n\n    changeStep(id: string): void {\n        if (id && this.shadowRoot) {\n            const steps = this.querySelectorAll(\"fv-modal-step\") as NodeListOf<ModalStepComponent>;\n\n            if (steps && steps.length > 0) {\n                const stepExists = Array.from(steps).some((step) => step.id === id);\n\n                if (stepExists) {\n                    const stepToActivate = this.querySelector(`fv-modal-step#${id}`) as ModalStepComponent;\n\n                    steps.forEach((step: ModalStepComponent) => step.active = false);\n\n                    stepToActivate.changeStep();\n                }\n            }\n        }\n    }\n\n    render(): TemplateResult<1> {\n        return super.build(html`\n            <div class=\"container\">\n                <div class=\"step-container\">\n                    <h1><slot name=\"main-titel\" i18n=\"remember\">Merken</slot></h1>\n                    <div class=\"steps\">\n                        <slot name=\"steps\"></slot>\n                    </div>\n                    <div class=\"step-content\">\n                        <slot name=\"stepContent\"></slot>\n                    </div>\n                </div>\n                <div class=\"info-container\">\n                    <h1><slot name=\"side-titel\" i18n=\"your_selection\">Ihre Auswahl</slot></h1>\n                    <div class=\"text\"><slot name=\"side-text\"></slot></div>\n                    <div class=\"current-scene-image\" style=\"background-image: url('${this.image}')\">\n                    </div>\n                </div>\n            </div>\n        `);\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./option-selection.component.sass?inline\";\nimport { property, customElement } from \"lit/decorators.js\";\nimport { ModalComponent } from \"./modal.component\";\n\n\n@customElement(\"fv-option-selection-modal\")\nexport class OptionSelectionModalComponent extends ModalComponent {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property()\n    public settings: OptionSelectionModalSettings = { options: {}, \"template-selector\": \"\" };\n\n    constructor() {\n        super();\n    }\n\n    public hide(): void {\n        this.active = false;\n        this.dispatchEvent(new OptionSelectionOptionsHideEvent());\n    }\n\n    protected buildContent(content: TemplateResult): TemplateResult<1> {\n        const templateSelector: string | null = this.settings[\"template-selector\"] && this.settings[\"template-selector\"].length > 0 ? this.settings[\"template-selector\"] : this.getAttribute(\"option-template-selector\");\n        const templateElement: HTMLTemplateElement | null = this.querySelector(templateSelector ? templateSelector : \"\");\n        if ( !templateElement ) return super.build(html`<div class=\"options-container\" part=\"options-container\"></div>`);\n        const template = templateElement.innerHTML;\n\n        const keys = Object.keys(this.settings.options);\n        const modalContent = super.build(html`\n            <div class=\"options-container\" part=\"options-container\">\n                ${keys.map((key: string) => html`\n                    <div class=\"option\" id=\"${key}\" option=\"${key}\" @click=\"${this.createOptionClick(key)}\">\n                        ${this.createOption(key, template)}\n                    </div>\n                `)}\n            </div>\n            ${content}\n        `);\n        this.dispatchEvent(new OptionSelectionOptionsCreatedEvent());\n        return modalContent;\n    }\n\n    render(): TemplateResult<1> {\n        return this.buildContent(html``);\n    }\n\n    private createOption(key: string, template: string): DocumentFragment {\n        const option = this.settings.options[key];\n\n        let html = template;\n        const replacers = Object.keys(option.replacers);\n        for ( const replacer of replacers ) {\n            const pieces = html.split(replacer);\n            html = pieces.join(option.replacers[replacer]);\n        }\n        return document.createRange().createContextualFragment(html);\n    }\n\n    private removeIndicationFromAllChildren(target_: HTMLElement, indication: string) {\n        for ( let index = 0; index < target_.children.length; ++index ) {\n            const child: HTMLElement = target_.children[index] as HTMLElement;\n            child.classList.remove(indication);\n            child.part.remove(indication);\n            this.removeIndicationFromAllChildren(child, indication);\n        }\n    }\n    private addIndicationToAllChildren(target_: HTMLElement, indication: string) {\n        for ( let index = 0; index < target_.children.length; ++index ) {\n            const child: HTMLElement = target_.children[index] as HTMLElement;\n            child.classList.add(indication);\n            child.part.add(indication);\n            this.addIndicationToAllChildren(child, indication);\n        }\n    }\n    private createOptionClick(key: string) {\n        return ()=>{\n            // read option-element\n            const optionElement: HTMLDivElement | null | undefined = this.shadowRoot?.querySelector(\"#\"+key);\n            if ( !optionElement ) return;\n\n            this.setAttribute(\"selected-option\", key);\n\n            // dispatch additional event\n            this.dispatchEvent(new OptionSelectionOptionClickedEvent({\n                key: key,\n                option: this.settings.options[key],\n                \"option-element\": optionElement\n            }));\n            // disable all options\n            const container: HTMLDivElement | null = this.shadowRoot ? this.shadowRoot.querySelector(\".options-container\") : null;\n            if ( container ) {\n                const options = container.querySelectorAll(\".option\");\n                options.forEach((value) =>{\n                    const element: HTMLDivElement = value as HTMLDivElement;\n                    element.classList.remove(\"active\");\n                    element.part.remove(\"option-active\");\n                    this.removeIndicationFromAllChildren(element, \"active\");\n                });\n            }\n            // enable clicked option\n            optionElement.classList.add(\"active\");\n            optionElement.part.add(\"option-active\");\n            this.addIndicationToAllChildren(optionElement, \"active\");\n        };\n    }\n}\n\nexport interface OptionSelectionModalSettings{\n    options: OptionSelectionModalOptions,\n    \"template-selector\"?: string\n}\nexport interface OptionSelectionDataReplacers {\n    [key: string]: string\n}\n\nexport interface OptionSelectionModalOptions {\n    [key: string]: OptionSelectionModalOption\n}\nexport interface OptionSelectionModalOption {\n    \"additional-data\"?: {[key: string]: unknown},\n    active?: boolean,\n    replacers: OptionSelectionDataReplacers\n}\n\nexport class OptionSelectionOptionsHideEvent extends CustomEvent<unknown> {\n    constructor() {\n        super(\"option-selection-options-hidden\", { detail: {}, bubbles: true });\n    }\n}\nexport class OptionSelectionOptionsCreatedEvent extends CustomEvent<unknown> {\n    constructor() {\n        super(\"option-selection-options-created\", { detail: {}, bubbles: true });\n    }\n}\nexport interface OptionSelectionOptionClickedEventData {\n    key: string,\n    option: OptionSelectionModalOption,\n    \"option-element\": HTMLDivElement\n}\nexport class OptionSelectionOptionClickedEvent extends CustomEvent<OptionSelectionOptionClickedEventData> {\n    constructor(callbackData_: OptionSelectionOptionClickedEventData) {\n        super(\"option-selection-option-clicked\", { detail: callbackData_, bubbles: true });\n    }\n}","import { BaseMaskElement } from \"../../../base/mask.component\";\nimport {customElement, property, query, state} from \"lit/decorators.js\";\nimport { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./input.mask.component.sass?inline\";\n\n\n@customElement(\"fv-input-mask\")\nexport class InputMaskComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @query(\"input\")\n    private input: HTMLInputElement | undefined;\n\n    @property({reflect: true, type: String, attribute: \"input-type\"})\n    public inputType: string = \"number\";\n\n    @property({reflect: true, type: String, attribute: \"title-i18n\"})\n    public titleI18N?: string;\n\n    @property({reflect: true, type: String, attribute: \"button-i18n\"})\n    public buttonI18N?: string;\n\n    @property({reflect: true, type: String, attribute: \"placeholder-i18n\"})\n    public placeholderI18N?: string;\n\n    @state()\n    public mask = \"input-mask\";\n\n    constructor() {\n        super();\n        this.active = true;\n    }\n\n    private clickEvent(e: Event) {\n        this.dispatchEvent(new CustomEvent(\"input-submit\", {\n            detail: { value: this.input?.value || \"\" }\n        }));\n        this.hide(true);\n    }\n\n    async show(showModal_?: boolean) {\n        super.show(showModal_);\n    }\n\n    protected render(): TemplateResult<1> {\n        return this.build(html`\n            <div class=\"mask-container\">\n                <div class=\"text\" i18n=\"${this.titleI18N ? this.titleI18N : \"\"}\"></div>\n                <div class=\"input-container\">\n                    <input type=\"${this.inputType}\" i18n-placeholder=\"${this.placeholderI18N ? this.placeholderI18N : \"\"}\" placeholder=\"\"/>\n                </div>\n                <div class=\"button-container\">\n                    <div id=\"submit\" @click=${this.clickEvent} class=\"button\" i18n=\"${this.buttonI18N ? this.buttonI18N : \"\"}\"></div>\n                </div>\n            </div>\n        `);\n    }\n}\n\n","import { BaseMaskElement } from \"../../../base/mask.component\";\nimport { customElement, query, state } from \"lit/decorators.js\";\nimport { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./restart-check.mask.component.sass?inline\";\nimport { EventHandlerService } from \"../../../../../utils/event.handler.service\";\n\n\n@customElement(\"fv-restart-check-mask\")\nexport class RestartCheckMaskComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @state()\n    public mask = \"restart-check\";\n\n    @query(\".container\")\n    private container: HTMLDivElement | undefined;\n\n    @query(\".loader-slot\")\n    private saveButtonLoader: HTMLDivElement | undefined;\n\n    constructor() {\n        super();\n\n        window.addEventListener(\"keydown\", (e_: KeyboardEvent) => {\n            if (window.g_configuration?.request_leave_confirmation && (e_.key === \"F5\" || (e_.key === \"r\" && e_.ctrlKey))) {\n                e_.preventDefault();\n                e_.stopImmediatePropagation();\n                e_.stopPropagation();\n\n                this.show();\n                this.Modal?.show();\n            }\n        });\n    }\n\n    private leave(e_: Event) {\n        EventHandlerService.dispatchAsyncEvent(\"reload-window\", { preventLeaveConfirmation: true });\n\n        e_.preventDefault();\n        e_.stopImmediatePropagation();\n        e_.stopPropagation();\n    }\n    private async save(e_: Event) {\n        e_.preventDefault();\n        e_.stopImmediatePropagation();\n        e_.stopPropagation();\n\n        if (this.saveButtonLoader) {\n            this.saveButtonLoader.classList.remove(\"hidden\");//no add needed since page will be reloaded anyway\n        }\n        await EventHandlerService.dispatchAsyncEvent(\"save\", {});\n        await EventHandlerService.dispatchAsyncEvent(\"reload-window\", { preventLeaveConfirmation: true });\n    }\n    private async cancel(e_: Event) {\n        e_.preventDefault();\n        e_.stopImmediatePropagation();\n        e_.stopPropagation();\n        this.Modal?.hide();\n    }\n\n    protected render(): TemplateResult<1> {\n        return this.build(html`\n            <div class=\"container\">\n                <div class=\"text\" i18n=\"fv.modal.reload.text\"></div>\n                <div class=\"buttons-container\">\n                    <div class=\"button save-button\" @click=\"${this.save}\"><span i18n=\"1008\"></span><span><slot class=\"loader-slot hidden\" name=\"loader\"></slot></span></div>\n                    <div class=\"button\" @click=\"${this.leave}\" i18n=\"21016\"></div>\n                    <div class=\"button\" @click=\"${this.cancel}\" i18n=\"1939\"></div>\n                </div>\n            </div>\n        `);\n    }\n\n    protected updated(_changedProperties: PropertyValues): void {\n        super.updated(_changedProperties);\n\n        if (this.container && this.container.hasAttribute(\"listening\") == false) {\n            this.container.setAttribute(\"listening\", \"true\");\n            this.container.addEventListener(\"click\", (e) => {\n                e.preventDefault();\n                e.stopImmediatePropagation();\n                e.stopPropagation();\n            });\n        }\n    }\n}\n","import {BaseMaskElement} from \"../../../base/mask.component\";\nimport {customElement, property, query, state} from \"lit/decorators.js\";\nimport {css, CSSResultGroup, html, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./open-cloud-id.mask.component.sass?inline\";\nimport {EventHandlerDispatchEvent, EventHandlerEvent} from \"../../../../../models/event-handler/event.handler.model\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\n\n@customElement(\"fv-open-cloud-id-mask\")\nexport class OpenCloudIdMaskComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @query(\"input\")\n    private input: HTMLInputElement | undefined;\n\n    @property({type: Array, reflect: true, attribute: \"post-click-events\"})\n    public events: Array<EventHandlerEvent> = [];\n\n    @state()\n    public mask = \"open-cloud-id\";\n\n    constructor() {\n        super();\n    }\n\n    private async clickEvent(e: Event) {\n        if (this.input && this.input.value.length > 0) {\n            await CommunicationMessageService.openCloudId(this.input.value);\n            if (this.events) {\n                window.dispatchEvent(new EventHandlerDispatchEvent({\n                    async: false,\n                    events: this.events\n                }));\n            }\n        }\n        this.hide(true);\n    }\n\n    protected render(): TemplateResult<1> {\n        return this.build(html`\n            <div class=\"mask-container\">\n                <div class=\"text\" i18n=\"open.cloud.id.mask.title\"></div>\n                <div class=\"input-container\">\n                    <input i18n-placeholder=\"open.cloud.id.mask.open.input.placeholder\" placeholder=\"\"/>\n                </div>\n                <div class=\"button-container\">\n                    <div @click=\"${this.clickEvent}\" class=\"button\" i18n=\"open.cloud.id.mask.open.button.text\"></div>\n                </div>\n            </div>\n        `);\n    }\n}\n\n","import { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, query, queryAll, state } from \"lit/decorators.js\";\nimport { BaseMaskElement } from \"../../../base/mask.component\";\nimport style from \"./share-link-per-mail.component.sass?inline\";\nimport { ConfirmingButtonComponent } from \"../../../button/confirming-button.component\";\nimport {CommunicationMessageService, RequestService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-share-link-per-mail\")\nexport class ShareLinkPerMailComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @state()\n    public mask = \"share-link-per-mail\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"custom\" })\n    public custom = false;\n    @property({ type: Boolean, reflect: true, attribute: \"loader\" })\n    public loader = false;\n\n    @query(\".mask-container\")\n    private container: HTMLDivElement | undefined;\n    @query(\"input\")\n    private input: HTMLInputElement | undefined;\n\n    @query(\"fv-confirming-button\")\n    private confirmButton: ConfirmingButtonComponent | undefined;\n\n\n\n\n\n\n    constructor() {\n        super();\n    }\n\n    private removeClassEach(classstr: string, list: NodeList | undefined) {\n        list?.forEach((node: Node)=>{\n            (node as HTMLElement).classList.remove(classstr);\n        });\n    }\n    private addClassEach(classstr: string, list: NodeList | undefined) {\n        list?.forEach((node: Node)=>{\n            (node as HTMLElement).classList.add(classstr);\n        });\n    }\n\n    private reset() {\n        this.confirmButton?.reset();\n    }\n\n    public show(): void {\n        super.show();\n        this.reset();\n    }\n\n\n    private validate(mail: string) {\n        const res = RegExp(/^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/);\n        return res.test(mail.toLowerCase());\n    }\n\n    private async sendMail(receiver: string): Promise<boolean> {\n        if (this.confirmButton && receiver.length > 0 && this.validate(receiver)) { // validate receiver\n            if (this.loader) {\n                this.confirmButton.loaderState = true;\n                const pdf = await (CommunicationMessageService.printPDF() as Promise<{ cloudId: string }>);\n                const url = await RequestService.GetFurncloudShortUrl(window.location.href, pdf.cloudId);\n                await CommunicationMessageService.sendMail(receiver, this.custom ? \"custom\": \"default\", [{ key: \"url\", value: url }]);\n                this.confirmButton.loaderState = false;\n            }\n            else {\n                const pdf = await (CommunicationMessageService.printPDF() as Promise<{ cloudId: string }>);\n                const url = await RequestService.GetFurncloudShortUrl(window.location.href, pdf.cloudId);\n                await CommunicationMessageService.sendMail(receiver, this.custom ? \"custom\": \"default\", [{ key: \"url\", value: url }]);\n            }\n            this.confirmButton.triggerAnimation();\n\n            this.confirmButton.loaderState = true;\n            return true;\n        }\n        return false;\n    }\n    private async send() {\n        if (this.confirmButton && this.confirmButton.confirmed == false) {\n            if (this.input) {\n                if (await this.sendMail(this.input.value) == false) {\n                    this.input.classList.add(\"error\");\n                    return;\n                }\n                this.input.classList.remove(\"error\");\n            }\n            this.confirmButton?.confirm(false);\n        }\n    }\n\n    protected render(): TemplateResult<1> {\n        // const isSendText = LocalesModel.translate(\"share.link.per.mail.mask.send.button.text.send\");\n        // const text = LocalesModel.translate(\"share.link.per.mail.mask.send.button.text\");\n\n        return this.build(html`\n            <div class=\"mask-container\">\n                <div class=\"text\" i18n=\"share.link.per.mail.mask.title\"></div>\n                <div class=\"content-container\">\n                    <div class=\"input-container\">\n                        <input i18n-placeholder=\"share.link.per.mail.mask.send.input.placeholder\" placeholder=\"\"/>\n                    </div>\n                    <fv-confirming-button confirm-txt=\"share.link.per.mail.mask.send.button.text.send\" txt=\"share.link.per.mail.mask.send.button.text\" @click=\"${this.send}\"></fv-confirming-button>\n                </div>\n            </div>\n        `);\n    }\n    // <div @click=\"${this.send}\" class=\"button-container\">\n    //                     <div class=\"button\">\n    //                         <span class=\"button-text-animation-container\">\n    //                             <span class=\"button-text-send-space\">${isSendText.length > text.length ? isSendText : text}</span>\n    //                             <span class=\"button-text\" i18n=\"share.link.per.mail.mask.send.button.text\">${text}</span>\n    //                         </span>\n    //                         <span><slot class=\"loader-slot hidden\" name=\"loader\"></slot></span>\n    //                     </div>\n    //                     <div class=\"button-send-text-container\">\n    //                         <div class=\"animation-container\">\n    //                             <span class=\"button-text-send hidden\" i18n=\"share.link.per.mail.mask.send.button.text.send\">${isSendText}</span>\n    //                         </div>\n    //                     </div>\n    //                     <div class=\"checkmark hidden\">\n    //                         <svg class=\"checkmark-svg\" viewBox=\"0 0 24 24\">\n    //                             <path d=\"M4.1 12.7L9 17.6 20.3 6.3\" fill=\"none\"/>\n    //                         </svg>\n    //                     </div>\n    //                 </div>\n\n    private oldInputValue = \"\";\n    protected updated(_changedProperties: PropertyValues): void {\n        super.updated(_changedProperties);\n\n        if (this.container && this.container.hasAttribute(\"listening\") == false) {\n            this.container.setAttribute(\"listening\", \"true\");\n            this.container.addEventListener(\"click\", (e)=>{\n                e.preventDefault();\n                e.stopImmediatePropagation();\n                e.stopPropagation();\n            });\n        }\n        if (this.input && this.input.hasAttribute(\"listening\") == false) {\n            this.input.setAttribute(\"listening\", \"true\");\n            this.input.addEventListener(\"click\", (e)=>{\n                this.input?.classList.remove(\"error\");\n            });\n            this.input.addEventListener(\"input\", ()=>{\n                if (this.oldInputValue != this.input?.value) {\n                    this.reset();\n                }\n                this.oldInputValue = this.input?.value ? this.input?.value : \"\";\n            });\n\n            this.input.addEventListener(\"keypress\", (e) => {\n                if (e.key === \"Enter\") {\n                    this.send();\n                }\n            });\n        }\n    }\n}\n","import { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, query, queryAll, state } from \"lit/decorators.js\";\nimport { BaseMaskElement } from \"../../../base/mask.component\";\nimport style from \"./request-appointment.component.sass?inline\";\nimport { ValidatingInputComponent } from \"../../../input/validating-input/validating-input.component\";\nimport { ButtonComponent } from \"../../../button/button.component\";\nimport {CommunicationMessageService, LocaleService, MailerService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-request-appointment\")\nexport class RequestAppointmentComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @state()\n    public mask = \"request-appointment\";\n\n    constructor() {\n        super();\n\n        this.addEventListener(\"validating-input-updated\", ()=>{\n            this.send = false;\n        });\n        this.addHideStateUpdatedEventListener((value: boolean)=>{\n            if (value == false && this.shadowRoot) {\n                const firstInput = this.shadowRoot.querySelector(\"fv-validating-input\") as ValidatingInputComponent;\n                firstInput.focus();\n            }\n        });\n    }\n\n    @query(\".name\")\n    nameInput: ValidatingInputComponent | undefined;\n    @query(\".first-name\")\n    firstNameInput: ValidatingInputComponent | undefined;\n    @query(\".email\")\n    emailInput: ValidatingInputComponent | undefined;\n    @query(\".phone\")\n    phoneInput: ValidatingInputComponent | undefined;\n    @query(\".zip\")\n    zipInput: ValidatingInputComponent | undefined;\n    @query(\".place\")\n    placeInput: ValidatingInputComponent | undefined;\n    @query(\".message\")\n    messageTextArea: HTMLTextAreaElement | undefined;\n\n    @query(\".send-button-container\")\n    private buttonContainer: HTMLDivElement | undefined;\n    @query(\".send-button-text-send\")\n    private buttonTextSend: HTMLSpanElement | undefined;\n    @queryAll(\".checkmark\")\n    private checkmarks: NodeList | undefined;\n\n    @query(\".loader-slot\")\n    private loaderSlot: HTMLSlotElement | undefined;\n\n\n    private removeClassEach(classstr: string, list: NodeList | undefined) {\n        list?.forEach((node: Node)=>{\n            (node as HTMLElement).classList.remove(classstr);\n        });\n    }\n    private addClassEach(classstr: string, list: NodeList | undefined) {\n        list?.forEach((node: Node)=>{\n            (node as HTMLElement).classList.add(classstr);\n        });\n    }\n\n    private set send(value: boolean) {\n        if (value) {\n            this.buttonTextSend?.classList.remove(\"hidden\");\n            this.removeClassEach(\"hidden\", this.checkmarks);\n            this.buttonContainer?.classList.add(\"send\");\n        }\n        else {\n            this.buttonTextSend?.classList.add(\"hidden\");\n            this.addClassEach(\"hidden\", this.checkmarks);\n            this.buttonContainer?.classList.remove(\"send\");\n        }\n    }\n\n    private async sendMail() {\n        this.loaderSlot?.classList.remove(\"hidden\");\n        if (this.nameInput && this.firstNameInput && this.emailInput && this.phoneInput && this.zipInput && this.messageTextArea /*this.placeInput*/) {\n            if (this.nameInput.valid && this.firstNameInput.valid && this.emailInput.valid && this.phoneInput.valid && this.zipInput.valid /*&& this.placeInput*/) {\n                const pdf = await (CommunicationMessageService.printPDF() as Promise<{ cloudId: string }>);\n                const values = [\n                    { key: \"lastName\", value: this.nameInput.value },\n                    { key: \"firstName\", value: this.firstNameInput.value },\n                    { key: \"email\", value: this.emailInput.value },\n                    { key: \"phone\", value: this.phoneInput.value },\n                    { key: \"zip\", value: this.zipInput.value },\n                    // { key: \"\", value: this.placeInput.value },\n                    { key: \"cloudId\", value: pdf.cloudId },\n                    { key: \"message\", value: this.messageTextArea.value }\n                ];\n                const url = new URL(window.location.href);\n                const language = url.searchParams.get(\"lang\") || \"de\";\n                MailerService.sendConfiguredMail({\n                    name: \"anfrage\",\n                    language,\n                    values,\n                    to: \"\"\n                });\n                this.loaderSlot?.classList.add(\"hidden\");\n                this.send = true;\n                return;\n            }\n        }\n        this.loaderSlot?.classList.add(\"hidden\");\n    }\n\n    private createInput(json: { placeholderI18n: string, required: boolean, resultValidation?: string | undefined, inputValidation?: string | undefined, emptyInformationI18n?: string | undefined, invalidInformationI18n?: string | undefined, className?: string | undefined }): TemplateResult<1> {\n        return html`\n            <fv-validating-input\n                ?required=${json.required}\n                class=\"${json.className ? json.className : \"\"}\"\n                i18n-placeholder=\"${json.placeholderI18n}\"\n                input-validation=\"${json.inputValidation}\"\n                result-validation=\"${json.resultValidation}\"\n                i18n-empty-information-text=\"${json.emptyInformationI18n}\"\n                i18n-invalid-information-text=\"${json.invalidInformationI18n}\">\n            </fv-validating-input>\n        `;\n    }\n    private createSendButton(): TemplateResult<1> {\n        const isSendText = LocaleService.translate(\"share.link.per.mail.mask.send.button.text.send\");\n        const text = LocaleService.translate(\"send_inquiry\");\n        return html`\n            <div @click=\"${this.sendMail}\" class=\"send-button-container\">\n                <div class=\"send-button\">\n                    <span class=\"send-button-text-animation-container\">\n                        <span class=\"send-button-text-send-space\">${isSendText.length > text.length ? isSendText : text}</span>\n                        <span class=\"send-button-text\" i18n=\"send_inquiry\">${text}</span>\n                    </span>\n                    <span><slot class=\"loader-slot hidden\" name=\"loader\"></slot></span>\n                </div>\n                <div class=\"send-button-send-text-container\">\n                    <div class=\"animation-container\">\n                        <span class=\"send-button-text-send hidden\" i18n=\"share.link.per.mail.mask.send.button.text.send\">${isSendText}</span>\n                    </div>\n                </div>\n                <div class=\"checkmark hidden\">\n                    <svg class=\"checkmark-svg\" viewBox=\"0 0 24 24\">\n                        <path d=\"M4.1 12.7L9 17.6 20.3 6.3\" fill=\"none\"/>\n                    </svg>\n                </div>\n            </div>\n        `;\n    }\n\n    private emailRegex = \"[-A-Za-z0-9!#$%&'*+/=?^_`{|}~]+(?:\\\\.[-A-Za-z0-9!#$%&'*+/=?^_`{|}~]+)*@(?:[A-Za-z0-9](?:[-A-Za-z0-9]*[A-Za-z0-9])?\\\\.)+[A-Za-z0-9](?:[-A-Za-z0-9]*[A-Za-z0-9])?\";\n    private phoneInputRegex = \"^[0-9\\\\+\\\\-\\\\\\\\(\\\\(0\\\\))\\\\ ]+$\";\n    private zipRegex = \"^[0-9]{5}$\"\n    private zipInputRegex = \"^[0-9]{0,5}$\"\n    protected render(): TemplateResult<1> {\n        return this.build(html`\n            <div class=\"mask-container\">\n                <div class=\"text\" i18n=\"fv.make.an.appointment\"></div>\n                <div class=\"content-container\">\n                    ${this.createInput({ className: \"name\", placeholderI18n: \"1528\", required: true, emptyInformationI18n: \"1621\" })}\n                    ${this.createInput({ className: \"first-name\", placeholderI18n: \"20322\", required: true, emptyInformationI18n: \"1621\" })}\n                    ${this.createInput({ className: \"email\", placeholderI18n: \"fv.email.homeviewer.send_request_customer.email\", required: true, resultValidation: this.emailRegex, emptyInformationI18n: \"1621\", invalidInformationI18n: \"fv.invalid.input\" })}\n                    ${this.createInput({ className: \"phone\", placeholderI18n: \"fv.email.contactPhone\", required: false, resultValidation: undefined, inputValidation: this.phoneInputRegex, invalidInformationI18n: \"fv.invalid.input\" })}\n                    ${this.createInput({ className: \"zip\", placeholderI18n: \"25026\", required: true, resultValidation: this.zipRegex, inputValidation: this.zipInputRegex, invalidInformationI18n: \"fv.invalid.input\", emptyInformationI18n: \"1621\" })}\n                    ${this.createInput({ className: \"place\", placeholderI18n: \"25027\", required: false })}\n                </div>\n                <textarea class=\"message\" i18n-placeholder=\"your_message\"></textarea>\n                ${this.createSendButton()}\n            </div>\n        `);\n    }\n\n    public show(): void {\n        super.show();\n        this.send = false;\n    }\n}\n","import { css, CSSResultGroup, html, nothing, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { BaseMaskElement } from \"../../../base/mask.component\";\nimport style from \"./select-property.mask.component.sass?inline\";\nimport { ModalComponent } from \"../../modal.component\";\nimport { EventHandlerEvent } from \"../../../../../models/event-handler/event.handler.model\";\nimport { EventHandlerService } from \"../../../../../utils/event.handler.service\";\nimport {CommunicationMessageService, EventFactoryService, LocaleService, ProgPropertyModel} from \"@dh-software/webui-api\";\nimport {IProgProperty, IProgPropertyProgram, IProgPropertyValue} from \"@dh-software/webui-types\";\n\n@customElement(\"fv-select-property-mask\")\nexport class SelectPropertyMaskComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @state()\n    public mask = \"select-property\";\n\n    @property({type: String, reflect: true, attribute: \"program\"})\n    program = \"\";\n\n    @property({type: Boolean, reflect: true, attribute: \"property-use-relevant\"})\n    propertyUseRelevant = false;\n\n    @property({type: Array, reflect: true, attribute: \"filter\"})\n    filter: Array<string> = [];\n\n    @property({type: Boolean, reflect: true})\n    loading = true;\n\n    @property({type: Array, reflect: true, attribute: \"close-events\"})\n    closeEvents: Array<EventHandlerEvent> = [];\n\n    private properties: Array<IProgProperty> = [];\n\n\n    private checkFilter(source?: Array<string>, filter?: Array<string>): boolean {\n        if (filter === undefined) return false;\n        if (filter.length < 1) return true;\n        if (source === undefined) return false;\n\n        for (let index = 0; index < source.length; ++index) {\n            if (filter.includes(source[index])) return true;\n        }\n        return false;\n    }\n\n    private async FindProperties() {\n        if (this.program.length < 1) this.program = window.g_article.prog;\n        const propertiesHirarchy = await ProgPropertyModel.find(window.g_article.manu, this.program, false, this.propertyUseRelevant, false) as IProgPropertyProgram;\n\n        this.properties = [];\n        propertiesHirarchy.propertyKeyOrder?.forEach((propertykey)=>{\n            const property = propertiesHirarchy.children[propertykey];\n            if (this.checkFilter([property.id], this.filter)) {\n                this.properties.push(property);\n            }\n        });\n        this.loading = false;\n    }\n\n    constructor() {\n        super();\n        this.FindProperties();\n    }\n\n    connectedCallback(): void {\n        super.connectedCallback();\n        EventFactoryService.LastPOLoaded.register(async () => {\n            await this.FindProperties();\n            this.requestUpdate();\n        });\n\n        EventFactoryService.RefreshPropertyPanel.register(async () => {\n            await this.FindProperties();\n            this.requestUpdate();\n        });\n\n    }\n\n    public show(showModal_?: boolean): void {\n        this.FindProperties();\n        super.show(showModal_);\n    }\n\n    private getPropertyButtonClick(key: string, property: string, propertyKey: string) {\n        return async (event: Event)=>{\n            this.loading = true;\n\n            await CommunicationMessageService.modifyProperty(JSON.stringify({\n                manufacturer: window.g_article.manu,\n                program: this.program,\n                key: key,\n                property: property,\n                propertyKey: propertyKey\n            }));\n\n            const modal = this.parentElement as ModalComponent;\n            if (modal && modal.hide) {\n                modal.hide();\n            }\n\n            for (const event of this.closeEvents) {\n                await EventHandlerService.dispatchAsyncEvent(event.id, event.data ? event.data : {});\n            }\n\n            event.preventDefault();\n            event.stopImmediatePropagation();\n            event.stopPropagation();\n\n            this.loading = false;\n        };\n    }\n\n    private createPropertyButton(propertyValue: IProgPropertyValue, id: string) {\n        const propertytext = LocaleService.exists(\"property.text.above.\" + propertyValue.key);\n        const propertyname = LocaleService.exists(\"property.name.prefix.\" + propertyValue.key);\n        return html`\n            <div class=\"property-button\"\n                 @click=\"${this.getPropertyButtonClick(id, propertyValue.key, propertyValue.propertyKey)}\">\n                ${propertyValue.alternativeImageUrl.length !== 0 ? html`<div class=\"img-container\"><img src=\"${propertyValue.alternativeImageUrl}\"/></div>`:nothing} \n                <div class=\"txt-container\">\n                    ${propertytext ? html`\n                        <div class=\"text-above\" i18n=\"property.text.above.${propertyValue.key}\"></div>` : nothing}\n                    <div class=\"text-inline\">\n                        ${propertyname ? html`\n                            <div class=\"prefix\" i18n=\"property.name.prefix.${propertyValue.key}\"></div>` : nothing}\n                        <div class=\"property-name\">${propertyValue.name}</div>\n                    </div>\n                </div>\n            </div>\n        `;\n    }\n\n    private createPropertyButtons(property: IProgProperty) {\n        const propertyKeys = Object.keys(property.children);\n        return html`\n            <div class=\"property-values-container\">\n                ${propertyKeys.map((propertyKey) => this.createPropertyButton(property.children[propertyKey], property.id))}\n            </div>\n        `;\n    }\n\n    protected render(): TemplateResult<1> {\n        if (this.properties.length < 1 || this.loading) return html`<slot name=\"loader\"></slot>`;\n        return html`\n            <div class=\"properties-container\">\n                ${this.properties.map((property) => this.createPropertyButtons(property))}\n            </div>\n        `;\n    }\n}\n","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup } from \"lit\";\nimport style from \"./select-article.mask.component.sass?inline\";\nimport { BaseMaskElement } from \"../../../base/mask.component\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { ModalComponent } from \"../../modal.component\";\nimport { EventHandlerEvent } from \"../../../../../models/event-handler/event.handler.model\";\nimport { EventHandlerService } from \"../../../../../utils/event.handler.service\";\nimport { DimensionInformation } from \"../../../informationals/dimensions-information.component\";\nimport {CommunicationMessageService, WebViewerService} from \"@dh-software/webui-api\";\nimport {IArticleData} from \"@dh-software/webui-types\";\n\n\ninterface EmptyPlanningOption {\n    i18nDes: string,\n    img: string\n}\ninterface EmptyPlanningOptionSettings {\n    show: boolean,\n    last?: boolean,\n    index?: number,\n    i18nDes?: string,\n    img?: string\n}\n\ninterface ArticleDimensionsGroup {\n    dimension?: Array<\"x\" | \"y\" | \"z\">,\n    \"axis-divider\"?: string,\n    \"icon-class\"?: string,\n    \"icon-img-src\"?: string\n}\ninterface ArticleDimensionsSwitches {\n    groups?: Array<ArticleDimensionsGroup>,\n    unit?: \"cm\" | \"mm\",\n    digits?: number\n}\n\n\n@customElement(\"fv-select-article-mask\")\nexport class SelectArticleMaskComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Array, reflect: true, attribute: \"categories\" })\n    public categories: Array<string> = [];\n    @property({ type: String, reflect: true, attribute: \"program\" })\n    public _program = \"\";\n    @property({ type: Boolean, reflect: true, attribute: \"close-without-options\" })\n    public closeWithoutOptions = false;\n\n\n    @property({ type: Object, reflect: true, attribute: \"article-dimensions\" })\n    public articleDimensions: ArticleDimensionsSwitches = {\n        unit: \"cm\",\n        digits: 1\n    }\n\n    private getValueInArticleDimensionUnit(value: number) {\n        switch (this.articleDimensions.unit) {\n        case \"cm\":\n            return value * 0.1;\n        case \"mm\":\n        default:\n            return value;\n        }\n    }\n\n    @property({ type: Object, reflect: true, attribute: \"new-article-option-settings\" })\n    public newArticleOptionSettings: EmptyPlanningOptionSettings = {\n        show: false\n    };\n    @property({ type: Object, reflect: true, attribute: \"vplacer-context\" })\n    public vplacerContext: Record<string, unknown> | undefined = undefined;\n    @property({ type: Boolean, reflect: true, attribute: \"clear-scene\" })\n    public clearScene = false;\n    @property({ type: Boolean, reflect: true, attribute: \"new-scene\" })\n    public newScene = false;\n    @property({type: Boolean, reflect: true, attribute: \"prevent-further-placements\"})\n    public preventFurtherPlacements = false;\n\n    public set program(prog: string) {\n        this._program = prog;\n    }\n    public get program() {\n        return this._program.length > 0 ? this._program : window.g_article.prog;\n    }\n\n    @state()\n    public mask = \"select-article-mask\";\n\n    private articles: Array<IArticleData | EmptyPlanningOption> = [];\n    private nodePrefix = \"\";\n\n    @property({type: Array, reflect: true, attribute: \"close-events\"})\n    closeEvents: Array<EventHandlerEvent> = [];\n    @property({ type: Boolean, reflect: true, attribute: \"show-loader\" })\n    public showLoader = false;\n\n    private async init() {\n        await WebViewerService.IsAppReady;\n        if (this.categories.length > 0) {\n            const articles = await CommunicationMessageService.getArticleByCategories(window.g_article.manu, this.program, this.categories);\n            this.nodePrefix = await CommunicationMessageService.getNodePrefix();\n\n            if (articles) {\n                this.articles = articles;\n\n                if (this.newArticleOptionSettings && this.newArticleOptionSettings.show) {\n                    if (this.newArticleOptionSettings.last) {\n                        this.articles.push({\n                            i18nDes: this.newArticleOptionSettings.i18nDes ? this.newArticleOptionSettings.i18nDes : \"fv-select-article-no-article-option-description\",\n                            img: this.newArticleOptionSettings.img ? this.newArticleOptionSettings.img : \"\"\n                        });\n                    }\n                    else if (this.newArticleOptionSettings.index != undefined) {\n                        this.articles.splice(this.newArticleOptionSettings.index, 0, {\n                            i18nDes: this.newArticleOptionSettings.i18nDes ? this.newArticleOptionSettings.i18nDes : \"fv-select-article-no-article-option-description\",\n                            img: this.newArticleOptionSettings.img ? this.newArticleOptionSettings.img : \"\"\n                        });\n                    }\n                }\n            }\n            else if (this.closeWithoutOptions) {\n                await this.close();\n            }\n            this.requestUpdate();\n        }\n    }\n\n    private async close(clearScene = false, newPlaning = false) {\n        if (newPlaning) {\n            await CommunicationMessageService.newPlanning();\n        }\n        else if (clearScene) {\n            await CommunicationMessageService.clearScene();\n        }\n\n        for (const event of this.closeEvents) {\n            await EventHandlerService.dispatchAsyncEvent(event.id, event.data ? event.data : {});\n        }\n        const modal = this.parentElement as ModalComponent;\n        if (modal && modal.hide) {\n            modal.hide();\n            this.showLoader = false;\n        }\n        if (this.preventFurtherPlacements) {\n            await CommunicationMessageService.resetSceneAction();\n            await CommunicationMessageService.resetCameraView(false);\n        }\n    }\n\n    constructor() {\n        super();\n        this.init();\n    }\n\n    private async loadArticle(event: Event) {\n        const articleNumber = (event.target as HTMLElement).getAttribute(\"article\");\n        if (articleNumber && articleNumber.length > 0) {\n            this.showLoader = true;\n\n            if (this.vplacerContext) {\n                await CommunicationMessageService.setVPlacerContextInfoData(this.vplacerContext);\n            }\n\n            if (this.clearScene) {\n                await CommunicationMessageService.clearScene();\n            }\n            await CommunicationMessageService.loadArticle(window.g_article.manu, this.program, articleNumber);\n            await this.close();\n        }\n    }\n    private getArticleText(article: IArticleData): string {\n        if (article.Des && article.Des.length > 0) {\n            return article.Des;\n        }\n        else if (article.artText && article.artText.length > 0) {\n            return article.artText;\n        }\n        else if (article.ArtNr && article.ArtNr.length > 0) {\n            return article.ArtNr;\n        }\n        return \"\";\n    }\n\n\n    private getDimensionInformation(group: ArticleDimensionsGroup, article: IArticleData) {\n        const dimension: Array<number> = [];\n        if (group && group.dimension) {\n            for (const axis of group.dimension) {\n                switch (axis) {\n                case \"x\":\n                    dimension.push(this.getValueInArticleDimensionUnit(parseFloat(article.kataWidth)));\n                    break;\n                case \"y\":\n                    dimension.push(this.getValueInArticleDimensionUnit(parseFloat(article.kataDepth)));\n                    break;\n                case \"z\":\n                    dimension.push(this.getValueInArticleDimensionUnit(parseFloat(article.kataHeight)));\n                    break;\n                default:\n                    break;\n                }\n            }\n        }\n        return {\n            dimension: dimension,\n            icon: group && group[\"icon-class\"] ? group[\"icon-class\"] : \"\",\n            src: group && group[\"icon-img-src\"] ? group[\"icon-img-src\"] : \"\",\n            divider: group && group[\"axis-divider\"] ? group[\"axis-divider\"] : \"\"\n        };\n    }\n\n    private createArticleOption(option_: IArticleData | EmptyPlanningOption): TemplateResult<1> {\n        const article: IArticleData = option_ as IArticleData;\n        if (article && article.ArtNr) {\n\n            const dimensionInfomations: Array<DimensionInformation> = [];\n\n            if (this.articleDimensions.groups && this.articleDimensions.groups.length > 0) {\n                for (const group of this.articleDimensions.groups) {\n                    dimensionInfomations.push(this.getDimensionInformation(group, article));\n                }\n            }\n\n            return html`\n                <fv-card @click=\"${this.loadArticle}\"\n                        article=\"${article.ArtNr}\"\n                        data=\"${JSON.stringify({ image: { prefix: this.nodePrefix, file: article.imgName }, dimensions: dimensionInfomations, txt: { txt: this.getArticleText(article) } })}\">\n                    <slot name=\"button\" slot=\"button\"></slot>\n                    <slot name=\"additional\" slot=\"additional\"></slot>\n                </fv-card>\n            `;\n            //price=\"${JSON.stringify({ value: 0, uvp: 0, \"whole-suffix\": \",-\", \"currency-before\": true })}\">\n        }\n        const option: EmptyPlanningOption = option_ as EmptyPlanningOption;\n        if (option && option.i18nDes) {\n            const emptyOptionClick = ()=>{\n                this.close(this.clearScene, this.newScene);\n            };\n            return html`\n                <fv-card @click=\"${emptyOptionClick}\"\n                    article=\"\"\n                    data=\"${JSON.stringify({ image: { prefix: \"\", file: option.img }, txt: { title: option.i18nDes, subtitle: \"\", txt: \"\" } })}\">\n                </fv-card>\n            `;\n        }\n        return html``;\n    }\n\n    private createArticleOptions(): TemplateResult<1> {\n        return html`\n    ${this.articles.map((article)=>{\n        return this.createArticleOption(article);\n    })}\n        `;\n    }\n\n    private createHeadline(): TemplateResult<1> {\n        return html`\n            <div class=\"headline-container\">\n                <div class=\"headline-back-button\"><slot name=\"back-button\"></slot></div>\n                <div class=\"headline-logo\"><slot name=\"logo\"></slot></div>\n                <div class=\"headline-title\"><slot name=\"title\"></slot></div>\n            </div>\n        `;\n    }\n\n    protected render(): TemplateResult<1> {\n        if (this.articles == undefined || (this.articles && this.articles.length < 1) || this.showLoader) {\n            return html`<div class=\"loading-container\"><slot name=\"loader\"></slot></div>`;\n        }\n        return html`\n            ${this.createHeadline()}\n            <div class=\"articles-container\">${this.createArticleOptions()}</div>\n        `;\n    }\n}\n","import {css, CSSResultGroup, html, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./perspective-control.mask.component.sass?inline\";\nimport {customElement, property, state} from \"lit/decorators.js\";\nimport {BaseMaskElement} from \"../../../base/mask.component\";\nimport {ButtonComponent} from \"../../../button\";\nimport {ModalComponent} from \"../../modal.component\";\nimport {EventHandlerEvent} from \"../../../../../models/event-handler/event.handler.model\";\nimport {EventHandlerService} from \"../../../../../utils/event.handler.service\";\nimport {IZoomParameters, Perspectives, ZoomType} from \"@dh-software/webui-types\";\nimport {CommunicationMessageService, EventFactoryService} from \"@dh-software/webui-api\";\nimport { SEARCH_PERSPECTIVES, SearchPerspectives } from \"../../../../../models/perspective/search-perspectives\";\n\n\ninterface PerspectiveSettings {\n    animated: boolean,\n    \"zoom-type\": ZoomType\n}\n\n@customElement(\"fv-perspective-control-mask\")\nexport class PerspectiveControlMaskComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @state()\n    public mask = \"perspective-control\";\n\n    static SearchPerspectives: SearchPerspectives = SEARCH_PERSPECTIVES;\n\n    @property({type: Array, reflect: true})\n    public perspectives: Array<string> = [];\n\n    @property({type: Object, reflect: true})\n    public settings: PerspectiveSettings = {\n        animated: true,\n        \"zoom-type\": ZoomType.ZOOMAUTO_FRONTCLIP,\n    };\n\n    @property({type: Boolean, reflect: true})\n    public loading = false;\n    @property({type: Boolean, reflect: true, attribute: \"close-after-choice\"})\n    public closeAfterChoice = false;\n\n    @property({type: Array, reflect: true, attribute: \"apply-events\"})\n    applyEvents: Array<EventHandlerEvent> = [];\n\n    @property({type: Boolean, reflect: true, attribute: \"reset-on-change\"})\n    public resetOnChange = false;\n\n    private activePerspective: Perspectives = Perspectives.Front;\n\n    private async ApplyPerspective(perspective_: Perspectives) {\n        this.loading = true;\n        const zoomparams: IZoomParameters = {\n            Perspective: perspective_,\n            direction: [0.0, 0.0, 0.0],\n            type: this.settings[\"zoom-type\"],\n            animated: this.settings.animated\n        };\n        await CommunicationMessageService.setCameraZoom(zoomparams);\n\n        this.loading = false;\n        if (this.closeAfterChoice) {\n            for (const event of this.applyEvents) {\n                await EventHandlerService.dispatchAsyncEvent(event.id, event.data ? event.data : {});\n            }\n\n            const modal = this.parentElement as ModalComponent;\n            if (modal && modal.hide) {\n                modal.hide();\n                this.active = false;\n            }\n        }\n\n        this.activePerspective = perspective_;\n    }\n\n\n    static windowKeyListenerRegistered = false;\n\n    constructor() {\n        super();\n\n        EventFactoryService.ChangePrice.register(() => {\n            if (this.resetOnChange) {\n                this.ApplyPerspective(this.activePerspective);\n            }\n        });\n\n        if (PerspectiveControlMaskComponent.windowKeyListenerRegistered === false) {\n            window.addEventListener(\"keydown\", (e) => {\n                if (this.active && (this.perspectives.length == 0 || this.perspectives.length == Object.keys(PerspectiveControlMaskComponent.SearchPerspectives).length)) {\n                    if (e.location == e.DOM_KEY_LOCATION_NUMPAD) {\n                        switch (e.key) {\n                            case \"5\":\n                            case \"Clear\":\n                                this.ApplyPerspective(Perspectives.Top);\n                                break;\n\n                            case \"2\":\n                            case \"ArrowDown\":\n                                this.ApplyPerspective(Perspectives.Front);\n                                break;\n\n                            case \"8\":\n                            case \"ArrowUp\":\n                                this.ApplyPerspective(Perspectives.Back);\n                                break;\n\n                            case \"6\":\n                            case \"ArrowRight\":\n                                this.ApplyPerspective(Perspectives.Right);\n                                break;\n\n                            case \"4\":\n                            case \"ArrowLeft\":\n                                this.ApplyPerspective(Perspectives.Left);\n                                break;\n\n                            case \"1\":\n                            case \"End\":\n                                this.ApplyPerspective(Perspectives.TopLeftFront);\n                                break;\n\n                            case \"3\":\n                            case \"PageDown\":\n                                this.ApplyPerspective(Perspectives.TopRightFront);\n                                break;\n\n                            case \"7\":\n                            case \"Home\":\n                                this.ApplyPerspective(Perspectives.TopLeftBack);\n                                break;\n\n                            case \"9\":\n                            case \"PageUp\":\n                                this.ApplyPerspective(Perspectives.TopRightBack);\n                                break;\n\n                            default:\n                                break;\n                        }\n                    }\n                }\n            });\n            PerspectiveControlMaskComponent.windowKeyListenerRegistered = true;\n        }\n    }\n\n    private PerspectiveButtonClick(e: Event) {\n        if (e.target) {\n            const perspective: string | null = (e.target as ButtonComponent).getAttribute(\"perspective\");\n            if (perspective) {\n                const perspectiveValue = PerspectiveControlMaskComponent.SearchPerspectives[perspective];\n                if (perspectiveValue) {\n                    this.ApplyPerspective(PerspectiveControlMaskComponent.SearchPerspectives[perspective]);\n                } else {\n                    console.error(\"perspective (\" + perspective + \") does not exist!\");\n                }\n            } else {\n                console.error(\"perspective not set on PerspectiveButton\");\n            }\n        }\n    }\n\n    private createPerspectiveButton(perspective: string): TemplateResult<1> {\n        return html`\n            <fv-button perspective=\"${perspective}\" @click=\"${this.PerspectiveButtonClick}\"\n                       i18n=\"perspective-${perspective}\">\n                ${perspective}\n            </fv-button>\n        `;\n    }\n\n    private CreateAllPerspectiveButtons(): TemplateResult<1> {\n        const allPerspectives = Object.keys(PerspectiveControlMaskComponent.SearchPerspectives);\n        return html`${allPerspectives.map(perspective => this.createPerspectiveButton(perspective))}`;\n    }\n\n    protected build(content?: TemplateResult): TemplateResult<1> {\n        if (this.loading) {\n            super.build(html`\n                <slot name=\"loader\"></slot>${content ? content : html``}`);\n        }\n        return super.build(content);\n    }\n\n    protected render(): TemplateResult<1> {\n        if (this.perspectives.length < 1) {\n            return this.build(html`\n                <div>${this.CreateAllPerspectiveButtons()}</div>`);\n        }\n        return this.build(html`\n            <div>${this.perspectives.map(perspective => this.createPerspectiveButton(perspective))}</div>`);\n    }\n}\n","import {BaseMaskElement} from \"../../../base/mask.component\";\nimport {customElement} from \"lit/decorators.js\";\nimport {css, CSSResultGroup, html, PropertyDeclaration, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./reset.mask.component.sass?inline\";\nimport {ConfigurationService, LocaleService, WebViewerService} from \"@dh-software/webui-api\";\n\n\n@customElement(\"fv-reset-mask\")\nexport class ResetMaskComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private _isStarted = false;\n    private _lastInteraction = 0;\n    private _resetAfter = 0;\n    private _active = false;\n    private _resetTimeSpan?: HTMLSpanElement | null;\n    private _timerHandle = 0;\n    private _isReloading = false;\n    private _textArray: Array<string> = [];\n    private _resumeText?: string;\n\n\n    constructor() {\n        super();\n        this.mask = \"reset-mask\";\n\n        WebViewerService?.on(\"furnview.setLastInteraction\", async () => {\n            this.setLastInteraction();\n        });\n\n        WebViewerService?.on(\"furnview.startResetTimer\", async () => {\n            this.startTimer();\n            this.setLastInteraction();\n        });\n    }\n\n\n    private get ResetTimeSpan(): HTMLSpanElement | null | undefined {\n        this._resetTimeSpan = this.shadowRoot?.querySelector(\".resetTimeSpan\");\n        return this._resetTimeSpan;\n    }\n\n    public setLastInteraction() {\n        this._lastInteraction = Date.now();\n    }\n\n    public async startTimer() {\n        if (!this._isStarted) {\n            this._isStarted = true;\n            const configuration = await ConfigurationService.Configuration;\n            if (((configuration?.sessionResetSettings as { [key: string]: unknown }).showModalTime as number) > 0 &&\n                configuration?.sessionResetSettings && (configuration?.sessionResetSettings as {\n                    [key: string]: unknown\n                }).enabled) {\n                this._isReloading = false;\n                this.setLastInteraction();\n                this._timerHandle = setInterval(async () => {\n                    this.hasToBeShown();\n                }, 100);\n            }\n        }\n    }\n\n    public stopTimer() {\n        if (this._timerHandle) {\n            this._isReloading = false;\n            clearInterval(this._timerHandle);\n        }\n    }\n\n    private hasToBeReloaded() {\n        if (!this._isReloading && this.getTimeLeft() === 0) {\n            this._isReloading = true;\n            clearInterval(this._timerHandle);\n            window.onbeforeunload = null;\n            window.location.href = window.location.href.replace(/(&|\\?)session=[a-f0-9]{8}-([a-f0-9]{4}-){3}[a-f0-9]{12}/g, \"\");\n        }\n    }\n\n    private async hasToBeShown() {\n        const configuration = await ConfigurationService.Configuration;\n        if (!this._active) {\n            const distance = Date.now() - this._lastInteraction;\n            if (distance / 1000 >= ((configuration?.sessionResetSettings as {\n                [key: string]: unknown\n            }).showModalTime as number)) {\n                if (((configuration?.sessionResetSettings as { [key: string]: unknown }).resetTime as number) > 0) {\n                    this.Modal?.show(true, false);\n                    this.show();\n                } else {\n                    this.hasToBeReloaded();\n                }\n            }\n        } else {\n            this.hasToBeReloaded();\n        }\n    }\n\n    async show() {\n        const configuration = await ConfigurationService.Configuration;\n        this._isReloading = false;\n        this._resetAfter = Date.now() + (((configuration?.sessionResetSettings as {\n            [key: string]: unknown\n        }).resetTime as number) * 1000);\n        this._active = true;\n        this.classList.remove(\"hidden\");\n        this.getTimeLeft();\n        super.show();\n        this.Modal?.setAttribute(\"fullScreen\", \"\");\n        this.Modal?.setAttribute(\"dimmed\", \"\");\n        this.Modal?.style.setProperty(\"--modal-background\", \"transparent\");\n        this.Modal?.show(true, false);\n    }\n\n    hide(stopTimer_ = true) {\n        this._isReloading = false;\n        this.classList.add(\"hidden\");\n        this.setLastInteraction();\n        this._active = false;\n        if (stopTimer_) {\n            this.stopTimer();\n        }\n        super.hide(true);\n    }\n\n    private getTimeLeft() {\n        let timeLeft = Math.floor((this._resetAfter - Date.now()) / 1000);\n        timeLeft = timeLeft >= 0 ? timeLeft : 0;\n        if (this.ResetTimeSpan) {\n            this.ResetTimeSpan.textContent = timeLeft.toString();\n        }\n        return timeLeft;\n    }\n\n    protected async firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n    }\n\n    requestUpdate(name?: PropertyKey, oldValue?: unknown, options?: PropertyDeclaration) {\n        LocaleService?.get(\"fv.text.resume_planning\")\n            .then((value) => {\n                this._resumeText = value;\n                LocaleService?.get(\"fv.konfigurator.optionen.session.settings.reset-message\")\n                    .then((value: string) => {\n                        this._textArray = value.split(\"<@TIME@>\");\n                        super.requestUpdate(name, oldValue, options);\n                    });\n            });\n\n    }\n\n    private cancelClick() {\n        this.hide(false);\n    }\n\n    protected render(): TemplateResult<1> {\n        return this.build(html`\n            <div class=\"modal-center-container\">\n                <div class=\"content-container\">\n                    <div class=\"message-container\">\n                        <h1 class=\"first-text-segment\">${this._textArray[0]}</h1>\n                        <h1 class=\"resetTimeSpan\">0</h1>\n                        <h1 class=\"second-text-segment\">${this._textArray[1]}</h1>\n                    </div>\n                    <div class=\"cancel-button\" @click=\"${this.cancelClick}\">\n                        <span i18n=\"fv.text.resume_planning\">${this._resumeText}</span>\n                    </div>\n                </div>\n            </div>\n        `);\n    }\n\n    protected updated(_changedProperties: PropertyValues): void {\n        super.updated(_changedProperties);\n    }\n}\n","import {css, CSSResultGroup, html, PropertyValueMap, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, property, query, state} from \"lit/decorators.js\";\nimport {BaseMaskElement} from \"../../../base/mask.component\";\nimport {ModalComponent} from \"../../modal.component\";\nimport style from \"./step-based.mask.component.sass?inline\";\nimport {ButtonComponent} from \"../../../../standard/button/button.component\";\nimport {StepsComponent} from \"../../../steps/steps.component\";\nimport {CheckboxComponent} from \"../../../checkbox/checkbox.component\";\nimport {InputComponent} from \"../../../input/input/input.component\";\nimport {TextBoxComponent} from \"../../../text-box/text-box.component\";\nimport {CloudIdComponent} from \"../../../../extension\";\nimport {ITemplateConfig} from \"@dh-software/webui-types\";\nimport {MailerService, TemplateLoaderService} from \"@dh-software/webui-api\";\n\n\n@customElement(\"fv-step-based-mask\")\nexport class StepBasedMaskComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @state()\n    public mask = \"step-based-mask\";\n\n    @property({type: Boolean, reflect: true, attribute: \"disable-info\"})\n    private _disableInfoContainer = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"no-title\"})\n    private _noTitle = false;\n\n    @query(\"#share-submit\")\n    private _shareSubmitButton?: ButtonComponent;\n\n    @query(\"#data-protection-checkbox\")\n    private _dataProtectionCheckbox?: CheckboxComponent;\n\n    @query(\"#data-Proc-Link\")\n    private _dataProcLink?: HTMLElement;\n\n    @query(\"#share-mail-input\")\n    private _shareMailInput?: InputComponent\n\n    @query(\"#share-message-text\")\n    private _shareMessageInput?: TextBoxComponent\n\n    @query(\"#send-render-image\")\n    private _renderImageSend?: ButtonComponent\n\n    @query(\"#send-render-image-input\")\n    private _renderImageEmail?: InputComponent\n\n    @query(\"fv-steps\")\n    private _steps ?: StepsComponent\n\n    @query(\"fv-cloud-id[readonly]\")\n    private _cloudIDComponent?: CloudIdComponent;\n    @query(\".open-cloud-id\")\n    private _openCloudIDComponent?: CloudIdComponent;\n\n    private _renderImageBase64 = \"\";\n\n    @property()\n    private image = \"\"\n\n\n    constructor() {\n        super();\n    }\n\n\n    public show(showModal_?: boolean): void {\n        super.show(showModal_);\n        const modal = this.parentElement as ModalComponent;\n\n        if (this._cloudIDComponent) {\n            modal?.setLoading(true);\n            this._cloudIDComponent.updateData()\n                .then(() => {\n                    modal?.setLoading(false);\n                });\n        }\n        if (this._openCloudIDComponent) {\n            this._openCloudIDComponent.removeAttribute(\"loading\");\n        }\n        const stepid = this.maskData[\"step-id\"] as number;\n        if (stepid && this._steps) {\n            this._steps.activate(stepid);\n        }\n\n    }\n\n\n    protected firstUpdated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n        super.firstUpdated(_changedProperties);\n    }\n\n\n    private onceSuccessful = false;\n    private getTemplatePromise: Promise<ITemplateConfig> | undefined = undefined;\n\n    protected updated(_changedProperties: Map<string, unknown>) {\n        if (this.onceSuccessful == false) {\n            if (this._dataProtectionCheckbox && this._dataProcLink) {\n                if (this._dataProtectionCheckbox) {\n                    this._dataProtectionCheckbox.onChange = () => {\n                        this.dataProtectionCheck();\n                    };\n                }\n\n                if (this.getTemplatePromise == undefined) {\n                    // @ts-ignore\n                    this.getTemplatePromise = TemplateLoaderService.getTemplateConfig(\"privacy-link\");\n                    if (this.getTemplatePromise) {\n                        this.getTemplatePromise.then((privacyLink: ITemplateConfig) => {\n                            if (privacyLink && this._dataProcLink) {\n                                this._dataProcLink.setAttribute(\"href\", privacyLink.value);\n                                this.onceSuccessful = true;\n                            }\n                        });\n                    }\n                }\n            }\n        }\n        super.updated(_changedProperties);\n    }\n\n\n    private dataProtectionCheck() {\n        if (this._dataProtectionCheckbox && this._shareSubmitButton) {\n            if (this._dataProtectionCheckbox.checked && this._shareSubmitButton) {\n                this._shareSubmitButton.disabled = false;\n            } else {\n                this._shareSubmitButton.disabled = true;\n            }\n        }\n    }\n\n\n    private shareByMail() {\n        if (this._cloudIDComponent && this._shareMailInput && this._shareMessageInput) {\n            if (this._shareSubmitButton) {\n                this._shareSubmitButton.disabled = true;\n                if (this._cloudIDComponent.CloudID.length > 0 && this._shareMailInput.value.length > 0) {\n                    MailerService.shareByMail(this._shareMailInput.value, this._shareMessageInput.value, this._cloudIDComponent.CloudID);\n                    this._shareMailInput.value = \"\";\n                    this._shareMessageInput.value = \"\";\n                }\n            }\n        }\n    }\n\n\n    private renderEmailSubmit() {\n        if (this._renderImageEmail && this._renderImageSend) {\n\n            if (/^[\\w-.]+@([\\w-]+\\.)+[\\w-]{2,4}$/.test(this._renderImageEmail.value.trim())) {\n                this._renderImageSend.removeAttribute(\"disabled\");\n            } else {\n                this._renderImageSend.setAttribute(\"disabled\", \"\");\n            }\n        }\n    }\n\n\n    private sendRenderingEmail() {\n        if (this._renderImageEmail && this._renderImageSend) {\n\n            this._renderImageSend.addEventListener(\"click\", async () => {\n                MailerService.sendConfiguredMail({\n                    name: \"Aus konfig lesen\",\n                    language: \"de\",\n                    values: [{\n                        key: \"to\",\n                        value: this._renderImageEmail?.value || \"\"\n                    }],\n                    attachments: [{filename: \"rendering.jpg\", path: this._renderImageBase64, cid: \"\"}]\n                });\n            });\n            this._renderImageSend.setAttribute(\"disabled\", \"\");\n        }\n    }\n\n    private createStep(templateId: string, txtid: string, index: number) {\n        return html`\n            <fv-step template-id=\"${templateId}\" ${this.maskData[\"step-id\"] == templateId ? \"active\" : \"\"}\n                     text=\"${txtid}\" index=\"${index}\"></fv-step>`;\n    }\n\n\n    protected render(): TemplateResult<1> {\n\n        const targetSelectors = {\n            \"0\": {\"element\": {\"name\": \"fv-flex-container\", \"selector\": \".download\"}},\n            \"1\": {\"element\": {\"name\": \"fv-flex-container\", \"selector\": \".link\"}},\n            \"2\": {\"element\": {\"name\": \"fv-flex-container\", \"selector\": \".planning\"}},\n            \"3\": {\"element\": {\"name\": \"fv-flex-container\", \"selector\": \".dealer\"}},\n            \"4\": {\"element\": {\"name\": \"fv-flex-container\", \"selector\": \".rendering\"}}\n        };\n\n        let totalStepCount = 0;\n        return html`\n            <div class=\"content-container\">\n\n                ${this._noTitle ? \"\" : html`\n                    <h1>\n                        <slot name=\"main-titel\" i18n=\"remember\">Merken</slot>\n                    </h1>`}\n\n                <fv-steps class=\"step-button-container\" step-target-selectors=\"${JSON.stringify(targetSelectors)}\">\n                    ${this.createStep(\"download-step\", \"20244\", totalStepCount++)}\n                    ${this.createStep(\"link-step\", \"send_link\", totalStepCount++)}\n                    ${this.createStep(\"planning-step\", \"25019\", totalStepCount++)}\n                    ${this.createStep(\"dealer-step\", \"fv.terms.request\", totalStepCount++)}\n                    ${this.createStep(\"rendering-step\", \"fv.konfigurator.optionen.toolbar.rendering\", totalStepCount++)}\n                </fv-steps>\n\n                <div class=\"step-content\">\n                    <fv-flex-container class=\"download\" template-id=\"download-step\">\n                        <div class=\"container column\">\n                            <fv-download></fv-download>\n                        </div>\n                    </fv-flex-container>\n\n                    <fv-flex-container class=\"link\" template-id=\"link-step\">\n                        <div class=\"container column\">\n                            <fv-label class=\"header space after\" i18n=\"send_link\">Link senden</fv-label>\n                            <fv-label class=\"space after\" template-id=\"link-text\"></fv-label>\n                        </div>\n                        <div class=\"container column\">\n                            <div class=\"fluid space-after\">\n                                <fv-label class=\"space after\" i18n=\"25029\">E-Mail*</fv-label>\n                                <fv-input id=\"share-mail-input\" @change=\"${this.dataProtectionCheck}\"\n                                          i18n-placeholder=\"25029\" placeholder=\"E-Mail*\">\n                                </fv-input>\n                            </div>\n                            <div class=\"fluid\">\n                                <fv-label class=\"space after\" i18n=\"1528\">Name*</fv-label>\n                                <fv-input id=\"share-mail-input\" i18n-placeholder=\"7156\" placeholder=\"Name*\">\n                                </fv-input>\n                            </div>\n                        </div>\n                        <div class=\"container column\">\n                            <fv-label class=\"space after\" i18n=\"your_message\">Ihre Nachricht</fv-label>\n                            <fv-text-box id=\"share-message-text\" i18n-placeholder=\"your_message\"\n                                         placeholder=\"Ihre Nachricht\"></fv-text-box>\n                        </div>\n                        <div class=\"container column\">\n                            <fv-checkbox id=\"data-protection-checkbox\">\n                                <span><span i18n=\"i_have_read\">Ich habe die</span> <a id=\"data-Proc-Link\"\n                                                                                      target=\"_blank\" href=\"#\"\n                                                                                      i18n=\"privacy_policy\">Datenschutzerklärung</a> <span\n                                        i18n=\"and_agree_with_this\">gelesen und stimme dieser zu.</span></span>\n                            </fv-checkbox>\n                        </div>\n                        <div class=\"container row reverse\">\n                            <fv-button id=\"share-submit\" i18n=\"20116\" @click=\"${this.shareByMail}\" disabled>Senden\n                            </fv-button>\n                        </div>\n                    </fv-flex-container>\n\n                    <fv-flex-container class=\"planning\" class=\"active\" template-id=\"planning-step\">\n                        <div class=\"container column\">\n                            <fv-label class=\"header space after\" i18n=\"25019\"><!--Planungsnummer--></fv-label>\n                            <fv-label class=\"space after\" i18n=\"fv.modal.planning_number.text\"></fv-label>\n                        </div>\n                        <div class=\"container column\">\n                            <fv-cloud-id readonly></fv-cloud-id>\n                        </div>\n                        <div class=\"container column\">\n                            <fv-cloud-id class=\"open-cloud-id\"></fv-cloud-id>\n                        </div>\n                    </fv-flex-container>\n\n                    <fv-flex-container class=\"dealer\" template-id=\"dealer-step\">\n                        <div class=\"container column\">\n                            <fv-label class=\"header space after\" i18n=\"fv.terms.request\">Anfrage</fv-label>\n                            <fv-label class=\"space after\" template-id=\"dealer-text\"></fv-label>\n                        </div>\n                        <!--                <fv-search-dealer></fv-search-dealer>-->\n                        <fv-request active></fv-request>\n                        <fv-message></fv-message>\n                    </fv-flex-container>\n\n                    <fv-flex-container class=\"rendering\" template-id=\"rendering-step\">\n                        <div class=\"container column\">\n                            <fv-label class=\"header space after\" i18n=\"fv.konfigurator.optionen.toolbar.rendering\">\n                                Rendering\n                            </fv-label>\n                            <fv-input id=\"send-render-image-input\" i18n-placeholder=\"25029\"\n                                      @change=\"${this.renderEmailSubmit}\" placeholder=\"E-Mail-Adresse\">\n                                <fv-button id=\"send-render-image\" i18n=\"20116\" @click=\"${this.sendRenderingEmail}\"\n                                           disabled>Senden\n                                </fv-button>\n                            </fv-input>\n                            <div id=\"render-image\" class=\"renderImage\"></div>\n                        </div>\n                    </fv-flex-container>\n                </div>\n            </div>\n            ${!this._disableInfoContainer ? html`\n                <div class=\"info-container\">\n                    <h1>\n                        <slot name=\"side-titel\" i18n=\"your_selection\">Ihre Auswahl</slot>\n                    </h1>\n                    <div class=\"text\">\n                        <slot name=\"side-text\"></slot>\n                    </div>\n                    <div class=\"current-scene-image\" style=\"background-image: url('${this.image}')\"></div>\n                </div>` : \"\"}\n        `;\n    }\n}\n","import { ReactiveController, ReactiveControllerHost } from 'lit';\nimport { HideableElement } from '../base/hide.base';\n\nexport class SlotHideStateController implements ReactiveController {\n    private _host: ReactiveControllerHost;\n    private _tracked = new Map<Element, () => void>();\n    private trackedSlot: HTMLSlotElement | undefined = undefined;\n    private _propagating = false;\n    private _findSlot: ()=>HTMLSlotElement | undefined;\n    private _childHideStateChangedEvent: (child_: Element, value_: boolean, parentStateChanged_: boolean)=>void;\n\n    constructor(host: ReactiveControllerHost, findSlot_: ()=>HTMLSlotElement | undefined, childHideStateChangedEvent: (child_: Element, value_: boolean, parentStateChanged_: boolean)=>void) {\n        (this._host = host).addController(this);\n        this._findSlot = findSlot_;\n        this._childHideStateChangedEvent = childHideStateChangedEvent;\n    }\n\n    private get _slot(): HTMLSlotElement | undefined {\n        return this._findSlot();\n    }\n    private _subscribe(child: Element): () => void {\n        const hideable = child as Partial<HideableElement>;\n        if (typeof hideable.addHideStateUpdatedEventListener !== \"function\") {\n            // Not a HideMixin element — record a no-op disposer so this child\n            // is \"tracked\" and we don't re-probe it on every slotchange.\n            return () => { /* no-op */ };\n        }\n        return hideable.addHideStateUpdatedEventListener((value, parentStateChanged) => {\n            if (this._propagating) {\n                return;// prevent hide-state-change event if the change was triggered by the bridge!\n            }\n            this._childHideStateChangedEvent(child, value, parentStateChanged);\n        });\n    }\n    private _trackChildren(): void {\n        const current = new Set<Element>(this._slot?.assignedElements({ flatten: true }) ?? []);\n\n        // Removed children\n        for (const [child, dispose] of this._tracked) {\n            if (!current.has(child)) {\n                dispose();\n                this._tracked.delete(child);\n            }\n        }\n\n        // Added children\n        for (const child of current) {\n            if (!this._tracked.has(child)) {\n                this._tracked.set(child, this._subscribe(child));\n            }\n        }\n    }\n    private _dispose(): void {\n        for (const [child, dispose] of this._tracked) {\n            dispose();\n            this._tracked.delete(child);\n        }\n    }\n\n    hostUpdated() {\n        if (this.trackedSlot == undefined || this.trackedSlot != this._slot) {\n            this.trackedSlot = this._slot;\n            this.trackedSlot?.addEventListener(\"slotchange\", ()=>{\n                this._trackChildren();\n            });\n        }\n    }\n\n    hostDisconnected() {\n        this._dispose();\n    }\n\n    public PropagateState(state: boolean): void {\n        if (this._tracked.size === 0) return;\n\n        this._propagating = true;\n        try {\n            for (const child of this._tracked.keys()) {\n                const hideable = child as Partial<HideableElement>;\n                 if (typeof hideable.hideElement !== \"boolean\") continue;\n                if (hideable.hideElement === state) continue; // no-op write\n                hideable.hideElement = state;\n            }\n        } catch (error) {\n            console.error(error);// might as well log the error, since a try->finally is already in use here\n            throw error;\n        } finally { // just ensuring this state is allways reset, no matter what goes wrong on the other end\n            this._propagating = false;\n        }\n    }\n}","import { BaseMaskElement } from \"../../../base/mask.component\";\nimport { customElement, property, query, state } from \"lit/decorators.js\";\nimport { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport { SlotHideStateController } from \"../../../controllers\";\n\nimport style from \"./synchronised-hide-state-mask.component.sass?inline\";\n\n\n@customElement(\"fv-synchronised-hide-state-mask\")\nexport class SynchronisedHideStateMaskComponent extends BaseMaskElement {\n\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @state()\n    public mask = \"synchronised-hide-state-mask\";\n\n    @query(\"slot\")\n    private _slot?: HTMLSlotElement;\n\n    /**\n     * Tag name of a layout container the mask builds internally around its slot\n     * (e.g. \"fv-scroll-aware-container\", \"fv-flex-container\"). Unset / \"none\"\n     * renders a plain <slot> (default, original behavior). Letting the mask own\n     * the container keeps slotted hideable content as a DIRECT slot assignment,\n     * so SlotHideStateController tracks it at depth-1.\n     */\n    @property({ type: String, reflect: true, attribute: \"host-container\" })\n    public hostContainer?: string;\n\n    private _hostContainerEl?: HTMLElement;\n\n    private hideStateBridge = new SlotHideStateController(this, ()=>this._slot, this.onChildHideStateChanged.bind(this));//new HideStateBridge(()=>this._slot, this.onChildHideStateChanged.bind(this));\n\n    private _slottedContent(): TemplateResult {\n        const tag = this.hostContainer?.trim();\n        if (!tag || tag === \"none\") {\n            this._hostContainerEl = undefined;          // release cache → plain slot\n            return html`<slot></slot>`;\n        }\n        // Build once; reuse the same instance until the tag changes, so we don't\n        // re-fire slotchange / reset scroll state / churn the controller per render.\n        if (this._hostContainerEl?.localName !== tag) {\n            try {\n                const container = document.createElement(tag);\n                container.appendChild(document.createElement(\"slot\"));\n                this._hostContainerEl = container;\n            } catch {\n                this._hostContainerEl = undefined;      // invalid tag name → plain slot\n                return html`<slot></slot>`;\n            }\n        }\n        return html`${this._hostContainerEl}`;\n    }\n\n    protected render(): TemplateResult<1> {\n        return this.build(this._slottedContent());\n    }\n\n    protected onChildHideStateChanged(child_: Element, value_: boolean, parentStateChanged_: boolean): void {\n        if (parentStateChanged_) {\n            return;\n        }\n\n        if (!this._modal) {\n            return; // something went wrong in firstUpdated of BaseMaskElement\n        }\n\n        if (!value_) {\n            this._modal?.open(this.mask, {}, \"\", this._modal?.dimmed, this._modal?.fade);\n            return;\n        }\n        this._modal?.hide(false, true);\n    }\n\n    public willUpdate(changed: PropertyValues): void {\n        super.willUpdate(changed);\n\n        if (changed.has(\"active\") && changed.get(\"active\") === true && this.active === false) {\n            this.hideStateBridge.PropagateState(true);\n        }\n    }\n\n    protected firstUpdated(c: PropertyValues): void {\n        super.firstUpdated(c);\n\n        this._modal?.addEventListener('onHide', ()=>{\n            this.hideStateBridge.PropagateState(true);\n        });\n    }\n}","import {BaseMaskElement} from \"../../../base/mask.component\";\nimport {EventHandlerService} from \"../../../../../utils/event.handler.service\";\nimport {css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, query, property, state} from \"lit/decorators.js\";\nimport style from \"./program-selection-confirmation.mask.component.sass?inline\";\nimport {IDeferHelperClass} from \"../../../../../utils/defer-helper.class\";\nimport {ProgramSelectionHelper} from \"../../../../../utils/program-selection.helper\";\n\n@customElement(\"fv-program-selection-confirmation\")\nexport class ProgramSelectionConfirmationMaskComponent extends BaseMaskElement {\n\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({type: Object})\n    private responseDefer?: IDeferHelperClass ;\n\n    @state()\n    public mask = \"program-selection-confirmation\";\n\n    @query(\".container\")\n    private container: HTMLDivElement | undefined;\n\n    @query(\".loader-slot\")\n    private saveButtonLoader: HTMLDivElement | undefined;\n\n    private change(ev: Event) {\n        this._cancel(ev);\n        this.responseDefer?.resolve([true]);\n    }\n\n    private async saveAndChange(ev: Event) {\n        this._cancel(ev);\n        if (this.saveButtonLoader) {\n            this.saveButtonLoader.classList.remove(\"hidden\");\n        }\n        await EventHandlerService.dispatchAsyncEvent(\"save\", {});\n        if (this.saveButtonLoader) {\n            this.saveButtonLoader.classList.add(\"hidden\");\n        }\n        this.change(ev);\n    }\n\n    private async abort(ev: Event) {\n        this._cancel(ev);\n        this.responseDefer?.resolve([false]);\n    }\n\n    private _cancel(ev: Event) {\n        ev.preventDefault();\n        ev.stopImmediatePropagation();\n        ev.stopPropagation();\n    }\n\n    protected render(): TemplateResult<1> {\n        return this.build(html`\n            <div class=\"container\">\n                <div class=\"text\" i18n=\"fv.modal.programselection.info\"></div>\n                <div class=\"buttons-container\">\n                    <div class=\"button\" i18n=\"fv.modal.programselection.change\" @click=\"${this.change}\"></div>\n                    <div class=\"button save-button\" @click=\"${this.saveAndChange}\">\n                        <span i18n=\"fv.modal.programselection.save\"></span>\n                        <span>\n                            <slot class=\"loader-slot hidden\" name=\"loader\"></slot>\n                        </span>\n                    </div>\n                    <div class=\"button\" i18n=\"fv.modal.programselection.cancel\" @click=\"${this.abort}\"></div>\n                </div>\n            </div>\n        `);\n    }\n\n    protected updated(_changedProperties: PropertyValues): void {\n        super.updated(_changedProperties);\n\n        if (this.container && this.container.hasAttribute(\"listening\") == false) {\n            this.container.setAttribute(\"listening\", \"true\");\n            this.container.addEventListener(\"click\", (e)=>{\n                e.preventDefault();\n                e.stopImmediatePropagation();\n                e.stopPropagation();\n            });\n        }\n    }\n\n    public set ResponseDefer(defer: IDeferHelperClass) {\n        this.responseDefer = defer;\n    }\n\n}\n","import { BaseMaskElement } from \"../../../base/mask.component\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\n\nimport style from \"./container-mask.component.sass?inline\";\n\n@customElement(\"fv-container-mask\")\nexport class ContainerMaskComponent extends BaseMaskElement {\n\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @state()\n    public mask = \"container-mask\";\n\n    @property({ type: String, reflect: true, attribute: \"header-image\" })\n    public headerImage: string = \"\";\n\n    @property({ type: String, reflect: true, attribute: \"title-text\" })\n    public titleText = \"\";\n\n    protected render(): TemplateResult<1> {\n        return this.build(html`\n            <fv-flex-container>\n                <div class=\"image-container\">\n                    <img class=\"image\" src=\"${this.headerImage}\">\n                </div>\n                <span class=\"title\">${this.titleText}</span>\n                <slot class=\"slot-content\"></slot>\n            </fv-flex-container>\n        `);\n    }\n\n}\n","import { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\r\nimport style from \"./messageNoCalc.mask.component.sass?inline\";\r\nimport { customElement, property, state } from \"lit/decorators.js\";\r\nimport \"../../../button/button.component\";\r\nimport { BaseMaskElement } from \"../../../base/mask.component\";\r\n\r\n\r\n@customElement(\"fv-message-no-calc-mask\")\r\nexport class MessageNoCalcMask extends BaseMaskElement {\r\n    static styles: CSSResultGroup[] = [\r\n        super.styles || [],\r\n        css`${unsafeCSS(style)}`\r\n    ];\r\n\r\n    @state()\r\n    public mask = \"noCalculation\";\r\n\r\n    @property()\r\n    private messageText : string = \"\";\r\n\r\n    constructor() {\r\n        super();\r\n    };\r\n\r\n    public show(showModal_?: boolean | undefined): void {\r\n        this.messageText = this.maskData.message as string ? this.maskData.message as string : \"\";\r\n        super.show(showModal_);\r\n        this.Modal?.style.setProperty(\"z-index\", \"1001\")\r\n        this.Modal?.style.setProperty(\"backdrop-filter\", \"blur(10px)\")\r\n    }\r\n\r\n    public hide(closeModal?: boolean): void {\r\n        super.hide(closeModal);\r\n        this.Modal?.style.setProperty(\"z-index\", null);\r\n        this.Modal?.style.setProperty(\"backdrop-filter\", null)\r\n    }\r\n\r\n    private cancelMessage(e_: Event) {\r\n        this.dispatchEvent(new CustomEvent(\"cancel-pdf-window\", { bubbles: true, composed: true }));\r\n        this.hide(true);\r\n    };\r\n    render(): TemplateResult<1> {\r\n        return this.build(html`\r\n            <div class=\"message-main-container\">\r\n                <fv-label>D+H Message Error</fv-label>\r\n                <p>${this.messageText}</p>\r\n                <div class=\"toolbar\">\r\n                    <fv-button class=\"button\" @click=\"${this.cancelMessage}\">Abbrechen</fv-button>\r\n                    <fv-button class=\"button\" @click=\"${()=>{this.hide(true)}}\">OK</fv-button>\r\n                </div>\r\n            </div>\r\n        `);\r\n    }\r\n}","import { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./iwoFurn.mask.component.sass?inline\";\nimport { customElement, property, query, queryAll, state } from \"lit/decorators.js\";\nimport { ButtonComponent } from \"../../../button/button.component\";\nimport { BaseMaskElement } from \"../../../base/mask.component\";\nimport { InputComponent } from \"../../../../standard/input/input/input.component\";\nimport \"../../../../standard/input/input/input.component\";\nimport \"../../../button/button.component\";\n\ninterface InputValues {\n    name: string;\n    inputValue: string;\n}\n\ninterface AdministrationValues {\n    DEALER_ILN: string;\n    EXPORT_IWOFURN_AUTO_SET_PLANNING_ID: string;\n    EXPORT_IWOFURN_AUTO_PLANNING_ID_PREFIX: string;\n    EXPORT_IWOFURN_EMPTY_FILIALID: string;\n    EXPORT_IWOFURN_AUTO_SET_VENDORID: string;\n    EXPORT_IWOFURN_SET_OTHER_VENDOR_TELEPHONE_NUMBER: string;\n    EXPORT_WAWI_CREATE_WAWI_ID: string;\n    EXPORT_IWOFURN_START_WITHOUT_PM: string;\n}\n\ninterface ProjectManagerValueInterface {\n    anrede: string;\n    zusatz: string;\n    vorname: string;\n    nachname: string;\n    strasse: string;\n    postleitzahl: string;\n    ort: string;\n    land: string;\n    telefon: string;\n    fax: string;\n    eMail: string;\n    projektname: string;\n    planungsnummer: string;\n    kommission: string;\n    branchID: string;\n    sellerID: string;\n}\n\ninterface VendorInterface {\n    branchName: string;\n    country: string;\n    location: string;\n    postalcode: string;\n    street: string;\n    telephone: string;\n}\n\ninterface IwoFurnResponse {\n    ResponseStatus: string;\n    furncloudWawiID: number;\n}\n\n@customElement(\"fv-iwofurn-mask\")\nexport class IwoFurnMaskComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`\n            ${unsafeCSS(style)}\n        `,\n    ];\n\n    @state()\n    public mask = \"iwoFurn\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"reduced\" })\n    public reduced = false;\n\n    //customer values\n    @property()\n    private customerSalutation : string = \"\";\n    @property()\n    private academicTitle : string = \"\";\n    @property()\n    private customerFirstName : string = \"\";\n    @property()\n    private customerLastName : string = \"\";\n    @property()\n    private customerStreet : string = \"\";\n    @property()\n    private customerPostalCode : string = \"\";\n    @property()\n    private customerLocation : string = \"\";\n    @property()\n    private customerCountry : string = \"\";\n    @property()\n    private customerTel : string = \"\";\n    @property()\n    private customerFax : string = \"\";\n    @property()\n    private customerEmail : string = \"\";\n\n    //plannings values\n    @property()\n    private senderILN : string = \"\";\n    @property()\n    private receiverILN : string = \"\";\n    @property()\n    private plannigName : string = \"\";\n    @property()\n    private plannigNR : string = \"\";\n    @property()\n    private commission : string = \"False\";\n    @property()\n    private planningID : string = \"\";\n    @property()\n    private branchID : string = \"1\";\n    @property({type: String, reflect: true})\n    private wawiFlag : string = \"\";\n\n    //vendor values\n    @property()\n    private storeSalutation : string = \"\";\n    @property()\n    private sellerID : string = \"\";\n    @property()\n    private storeFirstName : string = \"\";\n    @property()\n    private storeLastName : string = \"\";\n    @property()\n    private storeStreet : string = \"\";\n    @property()\n    private storePostalCode : string = \"\";\n    @property()\n    private storeLocation : string = \"\";\n    @property()\n    private storeCountry : string = \"\";\n    @property()\n    private storeTel : string = \"\";\n    @property()\n    private storeFax : string = \"\";\n    @property()\n    private storeEmail : string = \"\";\n    @property()\n    private branchName : string = \"\";\n\n    //queries\n    @queryAll(\".iwofurn-input\")\n    _inputList!: NodeListOf<InputComponent>;\n\n    @query(\".warning-container\")\n    _warning!: HTMLDivElement;\n\n    @query(\".iwoFurn-main-container\")\n    _main!: HTMLDivElement;\n\n    @query(\".response-container\")\n    _responseContainer!: HTMLDivElement;\n\n    @query(\".toolbar\")\n    _toolbar!: HTMLDivElement;\n\n    @query(\"#failure\")\n    _failureLabel!: HTMLElement;\n\n    @query(\"#success\")\n    _successLabel!: HTMLElement;\n\n    @query(\".wawiFlag-container\")\n    _wawiFlagContainer!: HTMLDivElement;\n\n    @query(\".iwoheader-container\")\n    _iwoheaderContainer !:HTMLDivElement;\n\n    private projectManagerValue: ProjectManagerValueInterface | undefined =\n        undefined;\n    public set projectManagerInfo(\n        values: ProjectManagerValueInterface | undefined\n    ) {\n        this.projectManagerValue = values;\n    }\n    public get projectManagerInfo(): ProjectManagerValueInterface | undefined {\n        return this.projectManagerValue;\n    }\n\n    private vendorValue: VendorInterface | undefined = undefined;\n    public set vendorInfo(values: VendorInterface | undefined) {\n        this.vendorValue = values;\n    }\n    public get vendorInfo(): VendorInterface | undefined {\n        return this.vendorValue;\n    }\n\n    private adminValue: AdministrationValues | undefined = undefined;\n    public set adminInfo(values: AdministrationValues | undefined) {\n        this.adminValue = values;\n    }\n    public get adminInfo(): AdministrationValues | undefined {\n        return this.adminValue;\n    }\n\n    private returnPlanningDetails() {\n        const planningDetails: Array<InputComponent> = [];\n        this._inputList.forEach((element) => {\n            planningDetails.push(element);\n        });\n        return planningDetails;\n    }\n\n    private toogleContainer(e: Event) {\n        const key = (e.target as ButtonComponent).getAttribute(\"container-key\");\n        const otherButtons = this.renderRoot.querySelectorAll(\n            \"fv-button:not([container-key=\" + key + \"]\"\n        ) as NodeListOf<ButtonComponent>;\n        const element = this.renderRoot.querySelector(\n            \"div[container-key=\" + key + \"]\"\n        ) as HTMLDivElement;\n        if (element.style.maxHeight) {\n            element.removeAttribute(\"style\");\n            (e.target as ButtonComponent).classList.remove(\"active\");\n            otherButtons[0].disabled = false;\n            otherButtons[1].disabled = false;\n        }\n        else {\n            element.style.maxHeight = element.scrollHeight + \"px\";\n            element.style.display = \"contents\";\n            (e.target as ButtonComponent).classList.add(\"active\");\n            otherButtons[0].disabled = true;\n            otherButtons[1].disabled = true;\n        }\n    }\n\n    constructor() {\n        super();\n    }\n\n    public show(showModal_?: boolean | undefined): void {\n        super.show(showModal_);\n        this.Modal?.style.setProperty(\"overflow\", \"auto\");\n    }\n\n    public hide(closeModal?: boolean | undefined): void {\n        super.hide(closeModal);\n        this.Modal?.style.setProperty(\"overflow\", null);\n    }\n\n    public setLoading(visible_?: boolean) {\n        this.Modal?.setLoading(visible_);\n    }\n\n    private checkValidity(array: Array<InputComponent>) {\n        for (let index = 0; index < array.length; index++) {\n            const element = array[index];\n            element.classList.remove(\"required-no-value\");\n            if (element.required == true && element.value == \"\") {\n                element.classList.add(\"required-no-value\");\n            }\n        }\n        return !(array.some(element => element.classList.contains(\"required-no-value\")));\n    }\n\n    private hideAllLabels(inputElementArray: Array<InputComponent>) {\n        inputElementArray.forEach(element => {\n            element._placeholder?.classList.add(\"hidden\");\n        });\n    }\n\n    private sendToIwoFurn() {\n        const inputElementArray: Array<InputComponent> = this.returnPlanningDetails();\n        if (this.checkValidity(inputElementArray)) {\n            this._warning.classList.add(\"hidden\");\n            const windowValues: Array<InputValues> = [];\n            inputElementArray.forEach(element => {\n                const inputObj: InputValues = {\n                    name: element.name,\n                    inputValue: element.value\n                };\n                windowValues.push(inputObj);\n            });\n            const branchNameObj: InputValues = {\n                name: \"branchName\",\n                inputValue: this.branchName\n            };\n            windowValues.push(branchNameObj);\n            this.hideAllLabels(inputElementArray);\n            this.dispatchEvent(\n                new CustomEvent(\"sendToIwoFurn\", { detail: windowValues })\n            );\n        }\n        else {\n            this._warning.classList.remove(\"hidden\");\n        }\n    }\n\n    private changeMaskState() {\n        this.reduced = !this.reduced;\n        this.requestUpdate();\n    }\n\n    public showResponse(response : IwoFurnResponse) {\n        if (response.ResponseStatus == \"0\") {\n            this._failureLabel.classList.remove(\"hidden\");\n        }\n        else if (response.furncloudWawiID) {\n            this._successLabel.classList.remove(\"hidden\");\n            this.wawiFlag = response.ResponseStatus;\n            this._wawiFlagContainer.classList.remove(\"hidden\");\n            this.requestUpdate();\n        }\n        else if (response.ResponseStatus == \"1\") {\n            this._successLabel.classList.remove(\"hidden\");\n        }\n        this._main.classList.add(\"hidden\");\n        this._toolbar.classList.add(\"hidden\");\n        this._responseContainer.classList.remove(\"hidden\");\n        this._iwoheaderContainer.classList.add(\"response\");\n    }\n\n    public resetDisplay() {\n        this.hide(true);\n        this._iwoheaderContainer.classList.remove(\"response\");\n        this._main.classList.remove(\"hidden\");\n        this._toolbar.classList.remove(\"hidden\");\n        this._responseContainer.classList.add(\"hidden\");\n        this.resetProperties();\n    }\n\n    private resetProperties() {\n        //customer values\n        this.customerSalutation = \"\";\n        this.academicTitle = \"\";\n        this.customerFirstName = \"\";\n        this.customerLastName = \"\";\n        this.customerStreet = \"\";\n        this.customerPostalCode = \"\";\n        this.customerLocation = \"\";\n        this.customerCountry = \"\";\n        this.customerTel = \"\";\n        this.customerFax = \"\";\n        this.customerEmail = \"\";\n        //plannings values\n        this.senderILN = \"\";\n        this.receiverILN = \"\";\n        this.plannigName = \"\";\n        this.plannigNR = \"\";\n        this.commission = \"False\";\n        this.planningID = \"\";\n        this.branchID = \"1\";\n        this.wawiFlag = \"\";\n        //vendor values\n        this.storeSalutation = \"\";\n        this.sellerID = \"\";\n        this.storeFirstName = \"\";\n        this.storeLastName = \"\";\n        this.storeStreet = \"\";\n        this.storePostalCode = \"\";\n        this.storeLocation = \"\";\n        this.storeCountry = \"\";\n        this.storeTel = \"\";\n        this.storeFax = \"\";\n        this.storeEmail = \"\";\n        this.branchName = \"\";\n    }\n\n\n    private cancel() {\n        this.hide(true);\n        this.resetProperties();\n    }\n\n    private copyToClipboard() {\n        if (navigator.clipboard && navigator.clipboard.writeText) {\n            navigator.clipboard.writeText(this.wawiFlag);\n        }\n    }\n\n    private setValues() {\n        if (this.projectManagerInfo) {\n            this.setCustomerValues(this.projectManagerInfo);\n        }\n\n        this.senderILN = this.adminValue ? this.adminValue.DEALER_ILN : this.senderILN;\n        this.receiverILN = this.adminValue ? this.adminValue.DEALER_ILN : this.receiverILN;\n\n        this.plannigName = this.projectManagerInfo?.projektname || this.plannigName;\n        this.plannigNR = this.projectManagerInfo?.planungsnummer || this.plannigNR;\n        this.branchID = this.projectManagerInfo?.branchID || this.branchID;\n        this.sellerID = this.projectManagerInfo?.sellerID || this.sellerID;\n        this.commission = this.projectManagerInfo?.kommission || \"False\";\n\n\n        if (this.adminValue?.EXPORT_IWOFURN_START_WITHOUT_PM == \"1\") {\n            this.plannigName = \"0\";\n            this.plannigNR = \"0\";\n        }\n\n        if (this.adminValue?.EXPORT_IWOFURN_AUTO_SET_PLANNING_ID) {\n            this.planningID = this.plannigNR;\n        }\n        if (this.adminValue?.EXPORT_IWOFURN_AUTO_PLANNING_ID_PREFIX) {\n            this.planningID = this.adminValue.EXPORT_IWOFURN_AUTO_PLANNING_ID_PREFIX + this.planningID;\n        }\n        if (this.adminValue?.EXPORT_WAWI_CREATE_WAWI_ID == \"1\") {\n            this.planningID = \"auto-gen\";\n        }\n\n        if (this.adminValue?.EXPORT_IWOFURN_EMPTY_FILIALID) {\n            this.branchID = \"\";\n        }\n\n        if (this.vendorValue) {\n            if (this.adminValue?.EXPORT_IWOFURN_AUTO_SET_VENDORID && this.adminValue.EXPORT_IWOFURN_AUTO_SET_VENDORID != \"\") {\n                this.sellerID = this.adminValue.EXPORT_IWOFURN_AUTO_SET_VENDORID;\n            }\n            if (this.adminValue?.EXPORT_IWOFURN_SET_OTHER_VENDOR_TELEPHONE_NUMBER && this.adminValue.EXPORT_IWOFURN_SET_OTHER_VENDOR_TELEPHONE_NUMBER != \"\") {\n                this.vendorValue.telephone = this.adminValue?.EXPORT_IWOFURN_SET_OTHER_VENDOR_TELEPHONE_NUMBER;\n            }\n            this.setVendorValues(this.vendorValue);\n        }\n    }\n\n    private setCustomerValues(data: ProjectManagerValueInterface) {\n        this.customerSalutation = data?.anrede ? data.anrede : \"\";\n        this.academicTitle = data.zusatz ? data.zusatz : \"\";\n        this.customerFirstName = data.vorname ? data.vorname : \"\";\n        this.customerLastName = data.nachname ? data.nachname : \"\";\n        this.customerStreet = data.strasse ? data.strasse : \"\";\n        this.customerPostalCode = data.postleitzahl ? data.postleitzahl : \"\";\n        this.customerLocation = data.ort ? data.ort : \"\";\n        this.customerCountry = data.land ? data.land : \"\";\n        this.customerTel = data.telefon ? data.telefon : \"\";\n        this.customerFax = data.fax ? data.fax : \"\";\n        this.customerEmail = data.eMail ? data.eMail : \"\";\n    }\n\n    private setVendorValues(data: VendorInterface) {\n        this.branchName = data.branchName ? data.branchName : this.branchName;\n        this.storeStreet = data.street ? data.street : this.storeStreet;\n        this.storePostalCode = data.postalcode ? data.postalcode : this.storePostalCode;\n        this.storeLocation = data.location ? data.location : this.storeLocation;\n        this.storeCountry = data.country ? data.country : this.storeCountry;\n        this.storeTel = data.telephone ? data.telephone : this.storeTel;\n    }\n\n    render(): TemplateResult<1> {\n        this.setValues();\n\n        return this.build(html`\n            <div class=\"iwoheader-container ${this.reduced ? \"reduced\" : \"\"}\">\n                <fv-icon icon=\"fv-icon-iwofurn\"></fv-icon>\n                <fv-label class=\"iwoheader\">IWOfurn</fv-label>\n            </div>\n            <div class=\"iwoFurn-main-container ${this.reduced ? \"reduced\" : \"\"}\">\n                <fv-button @click=\"${this.toogleContainer}\" container-key=\"customer\" class=\"dropdown-button\" i18n=\"25003\">Kundenanschrift</fv-button>\n                <div container-key=\"customer\" class=\"forms-container ${this.reduced ? \"hidden\" : \"\"}\">\n                    <fv-label class=\"header\" i18n=\"25003\">Kundenanschrift</fv-label>\n                    <div class=\"sub-form-container\">\n                        <fv-input class=\"iwofurn-input\" placeholder=\"Anrede\" moveable-placeholder=\"true\" name=\"customerSalutation\" value=\"${this.customerSalutation}\" i18n-placeholder=\"25020\"></fv-input>\n                        <fv-input class=\"iwofurn-input\" placeholder=\"Akad. Titel\" moveable-placeholder=\"true\" name=\"academicTitle\" value=\"${this.academicTitle}\" i18n-placeholder=\"25021\"></fv-input>\n                    </div>\n                    <div class=\"sub-form-container\">\n                        <fv-input class=\"iwofurn-input\" placeholder=\"Vorname\" moveable-placeholder=\"true\" name=\"customerFirstName\" value=\"${this.customerFirstName}\" i18n-placeholder=\"20322\"></fv-input>\n                        <fv-input class=\"iwofurn-input\" placeholder=\"Nachname\" moveable-placeholder=\"true\" name=\"customerLastName\" value=\"${this.customerLastName}\" i18n-placeholder=\"20323\"></fv-input>\n                    </div>\n                    <fv-input class=\"iwofurn-input\" placeholder=\"Strasse\" moveable-placeholder=\"true\" name=\"customerStreet\" value=\"${this.customerStreet}\" i18n-placeholder=\"25025\"></fv-input>\n                    <div class=\"sub-form-container\">\n                        <fv-input class=\"iwofurn-input\" placeholder=\"Postleitzahl\" moveable-placeholder=\"true\" name=\"customerPostalCode\" value=\"${this.customerPostalCode}\" i18n-placeholder=\"25026\"></fv-input>\n                        <fv-input class=\"iwofurn-input\" placeholder=\"Ort\" moveable-placeholder=\"true\" name=\"customerLocation\" value=\"${this.customerLocation}\" i18n-placeholder=\"25027\"></fv-input>\n                    </div>\n                    <fv-input class=\"iwofurn-input\" placeholder=\"Land\" moveable-placeholder=\"true\" name=\"customerCountry\" value=\"${this.customerCountry}\" i18n-placeholder=\"25028\"></fv-input>\n                    <div class=\"sub-form-container\">\n                        <fv-input class=\"iwofurn-input\" placeholder=\"Telefon\" moveable-placeholder=\"true\" name=\"customerTel\" value=\"${this.customerTel}\" i18n-placeholder=\"20381\"></fv-input>\n                        <fv-input class=\"iwofurn-input\" placeholder=\"Fax\" moveable-placeholder=\"true\" name=\"customerFax\" value=\"${this.customerFax}\" i18n-placeholder=\"25033\"></fv-input>\n                    </div>\n                    <fv-input class=\"iwofurn-input\" placeholder=\"E-Mail\" moveable-placeholder=\"true\" name=\"customerEmail\" value=\"${this.customerEmail}\" i18n-placeholder=\"25029\"></fv-input>\n                </div>\n                <fv-button @click=\"${this.toogleContainer}\" container-key=\"plannings\" class=\"dropdown-button\" i18n=\"25052\">Planungsdetails</fv-button>\n                <div container-key=\"plannings\" class=\"forms-container\">\n                    <fv-label class=\"header\" i18n=\"25052\">Planungsdetails</fv-label>\n                    <fv-input class=\"iwofurn-input\" placeholder=\"Sender ILN*\" moveable-placeholder=\"true\" name=\"senderILN\" value=\"${this.senderILN}\" required=\"true\" i18n-placeholder=\"25054\"></fv-input>\n                    <fv-input class=\"iwofurn-input\" placeholder=\"Empfänger ILN*\" moveable-placeholder=\"true\" name=\"receiverILN\" value=\"${this.receiverILN}\" required=\"true\" i18n-placeholder=\"25053\"></fv-input>\n                    <fv-input class=\"iwofurn-input\" placeholder=\"Planungsname*\" moveable-placeholder=\"true\" name=\"plannigName\" value=\"${this.plannigName}\" required=\"true\" i18n-placeholder=\"fv.iwofurn.planingname\"></fv-input>\n                    <fv-input class=\"iwofurn-input\" placeholder=\"Planungsnummer*\" moveable-placeholder=\"true\" name=\"plannigNR\" value=\"${this.plannigNR}\" required=\"true\" i18n-placeholder=\"25019\"></fv-input>\n                    <fv-input class=\"iwofurn-input\" placeholder=\"Kommission\" moveable-placeholder=\"true\" name=\"commission\" value=\"${this.commission}\" i18n-placeholder=\"25010\"></fv-input>\n                    <fv-input class=\"iwofurn-input\" placeholder=\"Planungs ID*\" moveable-placeholder=\"true\" name=\"planningID\" value=\"${this.planningID}\" required=\"true\" i18n-placeholder=\"fv.iwofurn.planningID\"></fv-input>\n                    <fv-input class=\"iwofurn-input\" placeholder=\"Filial ID*\" moveable-placeholder=\"true\" name=\"branchID\" value=\"${this.branchID}\" required=\"true\" i18n-placeholder=\"fv.iwofurn.branchID\"></fv-input>\n                    <button @click=\"${this.changeMaskState}\" class=\"fv-icon-arrow-down-2 changeState-button flip-vertical ${this.reduced ? \"hidden\" : \"\"}\"></button>\n                </div>\n                <fv-button @click=\"${this.toogleContainer}\" container-key=\"vendor\" class=\"dropdown-button\" i18n=\"1401\">Möbelhaus Adresse</fv-button>\n                <div container-key=\"vendor\" class=\"forms-container ${this.reduced ? \"hidden\" : \"\"}\">\n                    <fv-label class=\"header\" i18n=\"1401\">Möbelhaus Adresse</fv-label>\n                    <div class=\"sub-form-container\">\n                        <fv-input class=\"iwofurn-input\" placeholder=\"Anrede\" moveable-placeholder=\"true\" name=\"storeSalutation\" value=\"${this.storeSalutation}\" i18n-placeholder=\"25020\"></fv-input>\n                        <fv-input class=\"iwofurn-input\" placeholder=\"Verkäufer ID*\" moveable-placeholder=\"true\" name=\"sellerID\" value=\"${this.sellerID}\" required=\"true\" i18n-placeholder=\"fv.iwofurn.sellerID\"></fv-input>\n                    </div>\n                    <div class=\"sub-form-container\">\n                        <fv-input class=\"iwofurn-input\" placeholder=\"Vorname\" moveable-placeholder=\"true\" name=\"storeFirstName\" value=\"${this.storeFirstName}\" i18n-placeholder=\"20322\"></fv-input>\n                        <fv-input class=\"iwofurn-input\" placeholder=\"Nachname\" moveable-placeholder=\"true\" name=\"storeLastName\" value=\"${this.storeLastName}\" i18n-placeholder=\"20323\"></fv-input>\n                    </div>\n                    <fv-input class=\"iwofurn-input\" placeholder=\"Strasse*\" moveable-placeholder=\"true\" name=\"storeStreet\" value=\"${this.storeStreet}\" required=\"true\" i18n-placeholder=\"25025\"></fv-input>\n                    <div class=\"sub-form-container\">\n                        <fv-input class=\"iwofurn-input\" placeholder=\"Postleitzahl*\" moveable-placeholder=\"true\" name=\"storePostalCode\" value=\"${this.storePostalCode}\" required=\"true\" i18n-placeholder=\"25026\"></fv-input>\n                        <fv-input class=\"iwofurn-input\" placeholder=\"Ort*\" moveable-placeholder=\"true\" name=\"storeLocation\" value=\"${this.storeLocation}\" required=\"true\" i18n-placeholder=\"25027\"></fv-input>\n                    </div>\n                    <fv-input class=\"iwofurn-input\" placeholder=\"Land*\" moveable-placeholder=\"true\" name=\"storeCountry\" value=\"${this.storeCountry}\" required=\"true\" i18n-placeholder=\"25028\"></fv-input>\n                    <div class=\"sub-form-container\">\n                        <fv-input class=\"iwofurn-input\" placeholder=\"Telefon*\" moveable-placeholder=\"true\" name=\"storeTel\" value=\"${this.storeTel}\" required=\"true\" i18n-placeholder=\"20381\"></fv-input>\n                        <fv-input class=\"iwofurn-input\" placeholder=\"Fax\" moveable-placeholder=\"true\" name=\"storeFax\" value=\"${this.storeFax}\" i18n-placeholder=\"25033\"></fv-input>\n                    </div>\n                    <fv-input class=\"iwofurn-input\" placeholder=\"E-Mail\" moveable-placeholder=\"true\" name=\"storeEmail\" value=\"${this.storeEmail}\" i18n-placeholder=\"25029\"></fv-input>\n                </div>\n            </div>\n            <div class=\"response-container hidden\">\n                <fv-label class=\"reponse-label hidden\" id=\"failure\" i18n=fv.transfer.failure>Übertragung fehlgeschlagen</fv-label>\n                <fv-label class=\"reponse-label hidden\" id=\"success\" i18n=fv.transfer.success>Übertragung erfolgreich</fv-label>\n                <div class=\"wawiFlag-container hidden\">\n                    <fv-input class=\"wawiFlagIpt\" value=\"${this.wawiFlag}\"></fv-input>\n                    <fv-icon class=\"iwofurn-button copyIcon\" icon=\"fv-icon-content-copy\" @click=\"${this.copyToClipboard}\"></fv-icon>\n                </div>\n                <fv-button class=\"iwofurn-button\" @click=\"${this.resetDisplay}\" i18n=\"1938\">OK</fv-button>\n            </div>\n            <div class=\"warning-container hidden\">\n                <fv-label i18n=fv.iwofurn.warning>Bitte überprüfen sie ihre Eingaben</fv-label>\n            </div>\n            <div class=\"toolbar ${this.reduced ? \"reduced\" : \"\"}\">\n                <button @click=\"${this.changeMaskState}\" class=\"fv-icon-arrow-down-2 changeState-button ${this.reduced ? \"\" : \"hidden\"}\"></button>\n                <fv-button @click=\"${this.cancel}\" class=\"iwofurn-button ${this.reduced ? \"reduced\" : \"\"}\" i18n=\"1939\">Abbrechen</fv-button>\n                <fv-button @click=\"${this.sendToIwoFurn}\" class=\"iwofurn-button ${this.reduced ? \"reduced\" : \"\"}\" i18n=\"20116\">Senden</fv-button>\n            </div>\n        `);\n    }\n}\n","\nimport { BaseMaskElement } from \"../../../base/mask.component\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { css, CSSResultGroup, html, PropertyDeclaration, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./save-dialog.mask.component.sass?inline\";\nimport { LoadingComponent } from \"../../../loading\";\nimport { CheckboxComponent } from \"../../../checkbox\";\nimport { CloudIdService } from \"../../../../../utils/cloud-id.service\";\nimport {CommunicationMessageService, LocaleService, WebViewerService} from \"@dh-software/webui-api\";\n\ninterface PdfInfo {\n    cloudId: string\n    pdf: number\n    server: string\n    sessionId: string\n}\n\n@customElement(\"fv-save-dialog-mask\")\nexport class SaveDialogMaskComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @query(\".privacy-policy\")\n    private privacyPolicy?: HTMLSpanElement;\n\n    @query(\"#email-input\")\n    private emailInput?: HTMLInputElement;\n\n    @query(\"#cloud-input\")\n    private cloudInput?: HTMLInputElement;\n\n    @query('fv-checkbox')\n    private checkbox?: CheckboxComponent;\n\n\n    @property({type: Boolean, reflect: true, attribute: \"pdf-export\"})\n    public pdfExport?: boolean;\n\n    private pdfInfo?: PdfInfo;\n    private _active = false;\n    private _email?: string;\n\n    constructor() {\n        super();\n        this.mask = \"save-dialog-mask\";\n    }\n\n    private getDependentElement(type: \"spinner\"): LoadingComponent | null {\n        const elementId = this.getAttribute(type) || \"dummy\";\n        const element = document.querySelector(`#${elementId}`) as LoadingComponent;\n        const existsElement = !!element;\n\n        if (existsElement) {\n            return element;\n        }\n        else {\n            return null;\n        }\n    }\n\n    private savePdf() {\n        if (this.pdfInfo) {\n            const dummyFrame = document.createElement(\"iframe\");\n\n            document.body.appendChild(dummyFrame);\n\n            dummyFrame.style.display = \"none\";\n            dummyFrame.setAttribute(\"src\", `${this.pdfInfo.server}/downloadPDF/${this.pdfInfo.sessionId}/${this.pdfInfo.pdf.toString()}/${this.pdfInfo.cloudId}`);\n            dummyFrame.addEventListener(\"load\", () => dummyFrame.remove());\n        }\n    }\n\n    private sendMail(receiver: string) {\n        try {\n            if (this.pdfInfo) {\n                CommunicationMessageService.sendMail(receiver, \"default\", [], this.pdfInfo);\n            }\n        }\n        catch (e) {\n            //type\n        }\n    }\n\n    private showSpinner() {\n        this.Modal?.setLoading(true);\n    }\n\n    private hideSpinner() {\n        this.Modal?.setLoading();\n    }\n\n    public setEMail(email: string) {\n        this._email = email;\n        const inputEmail = this.emailInput as HTMLInputElement;\n\n        if (inputEmail) {\n            inputEmail.value = email;\n        }\n    }\n\n    public async addToCart(dontShow?: boolean) {\n        this.showSpinner();\n        const cloudInput = (this.cloudInput as HTMLInputElement);\n\n        if (this.pdfExport) {\n            this.pdfInfo = await CommunicationMessageService.printPDF() as PdfInfo;\n            if (cloudInput) cloudInput.value = this.pdfInfo.cloudId;\n        }\n        else {\n            if (cloudInput) cloudInput.value = await CloudIdService.createCloudId();\n        }\n\n        if (!dontShow) this.show();\n    }\n    async show() {\n        this.classList.remove(\"hidden\");\n        this._active = true;\n        super.show();\n        this.Modal?.setAttribute(\"dimmed\", \"\");\n        this.Modal?.style.setProperty(\"--modal-background\", \"transparent\");\n        this.Modal?.style.setProperty(\"--modal-content-margin\", \"auto\");\n        this.Modal?.show(true, false);\n        const hideInternal = ()=> {\n            this.hide();\n        };\n        this.Modal?.removeEventListener(\"close-modal\", hideInternal);\n        this.Modal?.addEventListener(\"close-modal\", hideInternal);\n        await this.hasUpdated;\n        await this.addToCart(true);\n        this.hideSpinner();\n    }\n\n    hide() {\n        this.classList.add(\"hidden\");\n        this.Modal?.style.removeProperty(\"--modal-background\");\n        this.Modal?.style.removeProperty(\"--modal-content-margin\");\n        this._active = false;\n        super.hide(true);\n    }\n\n    private addToCartClick () {\n        const inputElement = this.emailInput as HTMLInputElement;\n        const checkboxElement = this.checkbox as CheckboxComponent;\n        const receiver = inputElement?.value || \"\";\n\n        this.showSpinner();\n\n        if (this.pdfExport && receiver.length > 0 && checkboxElement.checked) {\n            this.sendMail(receiver);\n        }\n\n        CommunicationMessageService.addToCart();\n    }\n\n    private checkboxChanged (event?: Event) {\n        if (event && (event.currentTarget as HTMLInputElement)?.checked) {\n            this.emailInput?.removeAttribute(\"disabled\");\n        }\n        else {\n            this.emailInput?.setAttribute(\"disabled\", \"\");\n        }\n    }\n\n    protected async firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        WebViewerService.on(\"furnview.addToCartClicked\", () => this.addToCart());\n\n        if (this.shadowRoot) {\n\n            const replaceStr = `<a href=\"https://www.dh-software.de/kontakt/datenschutz/\" target=\"_blank\">${\n                LocaleService.translate(\"ui.step.choose_models.privacy_policy_link_label\")\n            }</a>`;\n            if (this.privacyPolicy)\n                this.privacyPolicy.innerHTML = `${(LocaleService.translate(\"ui.step.choose_models.privacy_policy_label\").replace(\"$1\", replaceStr))}`;\n        }\n        // this.setEMail(await SessionService.getEmail());\n        this.classList.add(\"hidden\");\n    }\n\n    requestUpdate(name?: PropertyKey, oldValue?: unknown, options?: PropertyDeclaration) {\n        super.requestUpdate(name, oldValue, options);\n    }\n\n    protected render(): TemplateResult<1> {\n        return this.build(html`\n            <h1 i18n=\"ui.step.choose_models.save_your_draft\">ACHTUNG: SPEICHERN SIE IHREN ENTWURF</h1>\n            <div class=\"text\" i18n=${ this.pdfExport ? \"ui.step.choose_models.save_your_draft.description\" : \"ui.step.choose_models.save_your_draft.description_without_pdf\"}>\n                ${ this.pdfExport ? html`Speichern Sie Ihren Entwurf bevor Sie den Konfigurator verlassen und in den Warenkorb wechseln. Sie\n                können Ihren Entwurf mit Ihrer Planungs-Nummer jederzeit wieder aufrufen, den Entwurf per PDF drucken\n                oder sich einen Link per Mail senden.` : html`Speichern Sie Ihre Planungs-Nummer bevor Sie den Konfigurator verlassen und in den Warenkorb wechseln. Sie\n                können Ihren Entwurf mit Ihrer Planungs-Nummer jederzeit wieder aufrufen.`}\n            </div>\n            <div class=\"space\"></div>\n            <div class=\"form\">\n                <div>\n                    <span i18n=\"ui.step.choose_models.your_plan_number\">Ihre Planungsnummer</span>\n                    <input id=\"cloud-input\" class=\"cloud\" autocomplete=\"off\" autocapitalize=\"off\" spellcheck=\"false\"\n                           type=\"text\" readonly/>\n                </div>\n                ${ this.pdfExport ? html`<div>\n                <span i18n=\"ui.step.choose_models.your_email\">Ihre E-Mail-Adresse</span>\n                \n                <input id=\"email-input\" disabled value=\"${this._email ? this._email : \"\"}\" class=\"email\" placeholder=\"E-Mail\" autocapitalize=\"off\" autocomplete=\"off\"\n                                                spellcheck=\"false\" type=\"email\"/> \n                </div>`: \"\"}\n            </div>\n            <div class=\"space\"></div>\n            <div class=\"consent\">\n                <fv-checkbox @change=\"${this.checkboxChanged}\">\n                    <span class=\"privacy-policy\">Ich akzeptiere die <a\n                            href=\"https://www.dh-software.de/kontakt/datenschutz/\" target=\"_blank\">Datenschutzbestimmungen</a> ${ this.pdfExport ? html`, bitte senden Sie mir Informationen zu meiner Konfiguration.` : \"\" }</span>\n                </fv-checkbox>\n            </div>\n            <div class=\"space\"></div>\n            <div class=\"buttons\">\n                ${this.pdfExport ? html`\n                <button id=\"save-pdf-button\" class=\"highlight\" i18n=\"ui.step.choose_models.save_draft\" @click=\"${this.savePdf}\">Entwurf\n                    speichern\n                </button>`: \"\"}\n                <button id=\"back-button\" i18n=\"ui.step.choose_models.back_to_configurator\" @click=\"${this.hide}\">Zurück zum Konfigurator\n                </button>\n                <button id=\"add-to-cart-button\" i18n=\"ui.step.choose_models.continue_to_basket\" @click=\"${this.addToCartClick}\">Weiter in den\n                    Warenkorb\n                </button>\n            </div>\n        `);\n    }\n\n    protected updated(_changedProperties: PropertyValues): void {\n        super.updated(_changedProperties);\n    }\n}\n","import { BaseMaskElement } from \"../../../base/mask.component\";\nimport { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./send-offer-request.component.sass?inline\";\nimport { customElement, query, queryAll, property, state } from \"lit/decorators.js\";\nimport { MessageComponent } from \"../../message/message.component\";\nimport { CheckboxComponent } from \"../../../checkbox\";\nimport { InputComponent } from \"../../../input\";\n\n@customElement(\"fv-send-offer-mask\")\nexport class SendOfferRequestMaskComponent extends BaseMaskElement {\n\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @state()\n    public mask = \"send-offer-request\";\n\n    @property({ type: String, reflect: true })\n    privacyLink = \"#\";\n\n    @query(\"fv-checkbox\")\n    private _checkboxComponent?: CheckboxComponent;\n\n    @query(\"fv-message\")\n    private _messageComponent?: MessageComponent;\n\n    @queryAll(\"fv-input, fv-text-area\")\n    private _inputFields?: NodeListOf<InputComponent>;\n\n    @queryAll(\"fv-input[required]\")\n    private _inputFieldsRequired?: NodeListOf<InputComponent>;\n\n    @property({type: String, reflect: true, attribute: \"template-id\"})\n    templateId: string = \"privacy-link\";\n\n    @property()\n    onSubmit = async (e: Event, nameValueList: {[key: string]: string}): Promise<void> => {\n        return;\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues): void {\n        super.firstUpdated(_changedProperties);\n        this._modal?.addEventListener(\"close-modal\", this.onModalClosed.bind(this));\n    }\n\n    protected update(changedProperties: PropertyValues) {\n        super.update(changedProperties);\n        if(this.privacyLink === \"#\") {\n            this.privacyLink = \"https://www.dh-software.de/kontakt/datenschutz/\";\n        }\n    }\n\n    protected render(): TemplateResult<1> {\n        return this.build(html`\n            <div class=\"container column\">\n                <fv-label class=\"header space after\" i18n=\"fv.terms.request\">Anfrage</fv-label>\n                <fv-label class=\"space after\" template-id=\"dealer-text\"></fv-label>\n            </div>\n            <fv-request privacylink=\"${this.privacyLink}\" name=\" \" address=\" \" active></fv-request>\n            <fv-message await=\"1000\" @back-to-start=\"${()=> this._modal?.cancel()}\"></fv-message>\n        `);\n    }\n\n    oldRender() {\n        return html`\n            <fv-label>Anfrage</fv-label>\n            <fv-flex-container class=\"row\">\n                ${this.buildTextField(\"firstName\", \"20322\", false)}\n                ${this.buildTextField(\"lastName\", \"20323\", false)}\n            </fv-flex-container>\n            <fv-flex-container class=\"row\">\n                ${this.buildTextField(\"phone\", \"1502\", false)}\n                ${this.buildTextField(\"email\", \"fv.email.homeviewer.send_request_customer.email\", true)}\n            </fv-flex-container>\n\n            <fv-flex-container class= \"row\">\n                ${this.buildTextField(\"customerNo\", \"1610\", true)}\n                ${this.buildTextField(\"adress\", \"20228\", true)}\n            </fv-flex-container>\n\n            <fv-flex-container class= \"row\">\n                ${this.buildTextField(\"companyName\", \"company_name\", true)}\n            </fv-flex-container>\n\n            <fv-flex-container class=\"row\">\n                ${this.buildTextField(\"message\", \"60099\", false, true)}\n            </fv-flex-container>\n            <fv-checkbox>\n                <span>\n                    <span i18n=\"i_have_read\">Ich habe die</span>\n                    <a target=\"_blank\" i18n=\"privacy_policy\" .href=\"${this.privacyLink}\"> Datenschutzerklärung</a> \n                    <span i18n=\"and_agree_with_this\"> gelesen und stimme dieser zu.</span\n                </span>\n            </fv-checkbox>\n            <fv-message ></fv-message>\n            <fv-button i18n=\"send_inquiry\"></fv-button>\n        `;\n    }\n\n    async sendInquiry(e: Event) {\n        if (this._checkboxComponent && this._checkboxComponent.checked) {\n            this.active = false;\n            const nameValueList: { [key: string]: string } = {};\n            this._inputFields?.forEach((value: InputComponent) => {\n                if (value.name) nameValueList[value.name] = value.value;\n            });\n            await this.onSubmit(e, nameValueList);\n        }\n    };\n\n    buildTextField(name: string, i18n: string, mandatory: boolean, area = false) {\n        if (area) {\n            return html`\n                <fv-text-area name=\"${name}\" type='text'>\n                    <fv-label class=\"text-field-label\" i18n=\"${i18n}\" ?mandatory=\"${mandatory}\"></fv-label>\n                </fv-text-area>\n            `;\n        }\n        return html`\n            <fv-input name=\"${name}\" type='text'>\n                <fv-label class=\"text-field-label\" i18n=\"${i18n}\" ?mandatory=\"${mandatory}\"></fv-label>\n            </fv-input>\n        `;\n    }\n\n\n    async onModalClosed(ev: Event) {\n        await new Promise((resolve) => setTimeout(resolve, 1250))\n        this._messageComponent?.onClick(ev);\n    }\n\n\n\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./file-upload.mask.component.sass?inline\";\nimport { customElement, property, queryAsync, state } from \"lit/decorators.js\";\nimport { BaseMaskElement } from \"../../../base/mask.component\";\n\nimport \"../../../button/button.component\";\nimport \"../../../label/label.component\";\n\n@customElement(\"fv-file-upload-mask\")\nexport class FileUploadMaskComponent extends BaseMaskElement {\n\tstatic styles = [\n\t\tsuper.styles || [],\n\t\tcss`${unsafeCSS(style)}`\n\t];\n\n\tconstructor() {\n\t\tsuper();\n\t};\n\n\t@state()\n\tpublic mask = \"fileUpload\";\n\n\t@queryAsync(\"#fileInput\")\n\tfileInput!: HTMLInputElement;\n\n\t@queryAsync('[name=\"sizeX\"]')\n\tsizeXinput!: HTMLInputElement;\n\n\t@queryAsync('[name=\"sizeY\"]')\n\tsizeYinput!: HTMLInputElement;\n\n\t@queryAsync('.errorMessage')\n\terrorSpan!: HTMLDivElement;\n\n\tprivate async uploadImage() {\n\t\t(await this.errorSpan).classList.add(\"hidden\");\n\t\tlet file = (await this.fileInput).files?.[0];\n\t\tif(file){\n\t\t\t\tif(file.size > 5242880) {\n\t\t\t\t\t(await this.errorSpan).classList.remove(\"hidden\");\n\t\t\t\t\treturn;\n\t\t\t\t};\n\t\t\t\tlet inputValues = [] as Array<string>;\n\t\t\t\tinputValues.push((await this.sizeXinput).value);\n\t\t\t\tinputValues.push((await this.sizeYinput).value);\n\t\t\t\tconst reader = new FileReader();\n\t\t\t\treader.readAsDataURL(file);\n\t\t\t\tconst result: string = await new Promise((resolve, reject) => {\n\t\t\t\t\treader.onload = () => {\n\t\t\t\t\t\tresolve(reader.result as string)\n\t\t\t\t\t};\n\t\t\t\t\treader.onerror = () => {\n\t\t\t\t\t\treject(new Error(\"cannot read file\"));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst [type, data] = result.split(',');\n\t\t\t\tinputValues.push(type);\n\t\t\t\tinputValues.push(data);\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent(\"createOTF_Material\", { detail: inputValues })\n\t\t\t\t)\n\t\t\t}\n\t}\n\n\trender(): TemplateResult<1> {\n\t\treturn html`\n\t\t\t<div>\n\t\t\t\t<fv-label class=\"header\" i18n=\"fv.fileUpload.otfMaterial\">Eigene Materialien anlegen</fv-label>\n\t\t\t\t<div class=\"file-container\">\n\t\t\t\t\t<fv-label for=\"fileInput\" i18n=\"fv.fileUpload.selectImageFile\">Wählen Sie ihre Bild Datei aus</fv-label>\n\t\t\t\t\t<input type=\"file\" id=\"fileInput\" accept=\"image/png, image/jpeg\" size=\"\" name=\"fileInput\"></input>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"input-container\">\n\t\t\t\t\t<fv-label for=\"sizeX\">SizeX:</fv-label>\n\t\t\t\t\t<input type=\"number\" min=\"1\" name=\"sizeX\" value=\"150\"></input>\n\t\t\t\t\t<fv-label>cm</fv-label>\n\t\t\t\t\t<fv-label for=\"sizeY\">SizeY:</fv-label>\n\t\t\t\t\t<input type=\"number\" min=\"1\" value=\"150\" name=\"sizeY\"></input>\n\t\t\t\t\t<fv-label>cm</fv-label>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"errorMessage hidden\" i18n=\"administrationX.print.large\">Datei zu groß</div>\n\t\t\t\t<fv-button @click=\"${this.uploadImage}\" i18n=\"51083\" class=\"submitBtn\">Hochladen</fv-button>\n\t\t\t</div>\n\t\t`\n\t}\n}","import { BaseMaskElement } from \"../../../base/mask.component\";\nimport { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./password-mask.component.sass?inline\"\nimport { customElement, query, property, state } from \"lit/decorators.js\";\nimport { InputComponent } from \"../../../../standard/input\";\nimport { ButtonComponent } from \"../../../../standard/button\";\nimport { SessionStorageService } from \"../../../../../utils/session-storage.service\"\nimport { EventHandlerService } from \"../../../../../utils/event.handler.service\";\nimport { EventHandlerEvent } from \"../../../../../models/event-handler/event.handler.model\";\n\n@customElement(\"fv-password-mask\")\nexport class PasswordMaskComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @state()\n    public mask = \"password-mask\";\n\n    @property({ type: String, reflect: true, attribute: \"session-storage-key\" })\n    public sessionStorageKey = \"\";\n\n    @property({ type: String, reflect: true, attribute: \"title-text\" })\n    public titleText = \"fv.prompt.enter_cloud_password\";\n\n    @property({ type: String, reflect: true, attribute: \"button-text\" })\n    public buttonText = \"60078\";\n\n    @property({ type: String, reflect: true, attribute: \"placeholder-text\" })\n    public placeholderText = \"1613\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"close-after-confirm\" })\n    public closeAfterConfirm = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"furncloud-password-mask\" })\n    public furncloudPasswordMask = false;\n\n    @query(\"#password-input\")\n    private _passwordInput?: InputComponent;\n\n    @query(\".confirm-button\")\n    private _confirmButton?: ButtonComponent;\n\n    private _errorMessage: string = \"\";\n\n    constructor() {\n        super();\n\n        window.addEventListener(\"furncloud-status\", ((ev: CustomEvent) => {\n            if (this.furncloudPasswordMask === false) {\n                return;\n            }\n\n            const httpStatus = ev.detail.httpStatus;\n            const responseBody = ev.detail.responseBody;\n\n            if (httpStatus == 200) {\n                this.clearErrorMessage();\n                this.Modal?.hide();\n                return;\n            }\n            if (responseBody && responseBody.toLowerCase().includes(\"request could not be decrypted\")) {\n                if (this.StorageKey.length > 0) {\n                    SessionStorageService.remove(this.StorageKey);\n                }\n                this.ErrorMessage = \"fv.prompt.wrong_cloud_password\";\n                this.Modal?.show();\n                this.requestUpdate();\n            }\n        }) as EventListener);\n    }\n\n    get Password(): string {\n        return this._passwordInput?.value || \"\";\n    }\n\n    set Password(password_: string) {\n        if (this._passwordInput) {\n            this._passwordInput.value = password_;\n        }\n    }\n\n    get ErrorMessage(): string {\n        return this._errorMessage;\n    }\n\n    set ErrorMessage(errorMessage_: string) {\n        this._errorMessage = errorMessage_;\n    }\n\n    private get EventsToDispatch(): Array<EventHandlerEvent> {\n        const eventsArray = this.maskData?.[\"eventsToDispatch\"];\n        if (eventsArray && Array.isArray(eventsArray)) {\n            return eventsArray;\n        }\n        return [];\n    }\n\n    private get StorageKey(): string {\n        const sessionStorageKey = this.maskData[\"sessionStorageKey\"];\n        if (sessionStorageKey && typeof sessionStorageKey === \"string\") {\n            return sessionStorageKey;\n        }\n        return this.sessionStorageKey;\n    }\n\n    private clearInput() {\n        this.Password = \"\";\n        this.onInputChange();\n    }\n\n    private clearErrorMessage() {\n        this.ErrorMessage = \"\";\n    }\n\n    private async onInputChange() {\n        if (this._confirmButton) {\n            if (this.Password.length > 0) {\n                this._confirmButton.removeAttribute(\"disabled\");\n            }\n            else {\n                this._confirmButton.setAttribute(\"disabled\", \"\");\n            }\n        }\n    }\n\n    private async onButtonClick() {\n        this.clearErrorMessage();\n        if (this.StorageKey.length > 0) {\n            SessionStorageService.update(this.StorageKey, { password: this.Password });\n        }\n        if (this.EventsToDispatch.length > 0) {\n            await EventHandlerService.dispatchEventList(this.EventsToDispatch, false);\n        }\n        if (this.closeAfterConfirm) {\n            this.Modal?.hide();\n        }\n        this.clearInput();\n    }\n\n    protected render(): TemplateResult<1> {\n        return this.build(html`\n            <div class=\"container\">\n                <fv-label\n                    class=\"title\"\n                    i18n=\"${this.titleText}\">\n                        ${this.titleText}\n                </fv-label>\n                <fv-input\n                    @change=\"${this.onInputChange}\"\n                    class=\"input\"\n                    type=\"password\"\n                    id=\"password-input\"\n                    moveable-placeholder\n                    placeholder=\"${this.placeholderText}\">\n                </fv-input>\n                ${this.ErrorMessage && this.ErrorMessage.length > 0 ? html`\n                    <fv-label\n                        class=\"error-message\"\n                        i18n=\"${this.ErrorMessage}\">\n                            ${this.ErrorMessage}\n                    </fv-label>` : html``\n            }\n                <fv-button\n                    @click=\"${this.onButtonClick}\"\n                    class=\"confirm-button bordered\"\n                    i18n=\"${this.buttonText}\"\n                    disabled>\n                        ${this.buttonText}\n                </fv-button>\n            </div>\n        `);\n    }\n}\n","import { BaseMaskElement } from \"../../../base/mask.component\";\nimport style from \"./dimension-change.mask.component.sass?inline\";\nimport { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { WebViewerService } from \"@dh-software/webui-api\";\nimport { IDimChangeInfo } from \"@dh-software/webui-types\";\n\n@customElement(\"fv-dimension-change-mask\")\nexport class DimensionChangeMaskComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true })\n    public mask = \"dimension-change\";\n\n    @state()\n    private dimData?: IDimChangeInfo;\n\n    constructor() {\n        super();\n\n        WebViewerService?.on(\"furnview.openDimChange\", async (data_: unknown) => {\n            this.openDimChangeMask(data_ as IDimChangeInfo);\n        });\n    }\n\n    private close(): void {\n        this.Modal?.cancel();\n    }\n\n    private openDimChangeMask(info_?: IDimChangeInfo): void {\n        this.dimData = info_;\n        this.Modal?.open(this.mask, {}, undefined);\n    }\n\n    protected render(): TemplateResult<1> {\n        return this.build(html`\n            <fv-dimension-change\n                .dimData=\"${this.dimData}\"\n                @dimchange-cancel=\"${this.close}\"\n                @dimchange-confirm=\"${this.close}\">\n            </fv-dimension-change>\n        `);\n    }\n}\n","import { BaseElement } from \"../../standard/base/base.component\";\nimport style from \"./base-action-button.sass?inline\";\nimport { TemplateResult, css, html, unsafeCSS } from \"lit\";\n\nexport class ActionButtonBase extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n    }\n\n    protected build(inner: TemplateResult<1>): TemplateResult<1> {\n        return html`\n            <fv-button class=\"action-button cover\">\n                ${inner}\n            </fv-button>\n        `;\n    }\n}","import { customElement, property } from \"lit/decorators.js\";\nimport { ActionButtonBase } from \"../base/base-action-button\";\nimport { TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./show-on-target-scrollable-action-button.sass?inline\";\nimport { ComponentService } from \"../../../utils/component.service\";\n\n@customElement(\"fv-show-on-target-scrollable-action-button\")\nexport class ShowOnTargetScrollableActionButtonComponent extends ActionButtonBase {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Object, reflect: true, attribute: \"target-info\"})\n    targetInfo = {\n        tag: \"\",\n        query: \"\"\n    };\n\n    @property({ type: Number, reflect: true, attribute: \"scroll-tolerance\" })\n    scrollTolerance = 10;\n\n    private targetScroll(target: HTMLElement | undefined) {\n        if (target) {\n            if (target.scrollTop < this.scrollTolerance) {\n                this.hideElement = true;\n            }\n            else {\n                this.hideElement = false;\n            }\n        }\n        else {// no scrolltarget\n            this.hideElement = true;\n        }\n    }\n    private get ScrollTarget(): HTMLElement | undefined {\n        if (this.targetInfo.tag && this.targetInfo.tag.length > 0) {\n            return ComponentService.find(this.targetInfo.tag, this.targetInfo.query);\n        }\n        if (this.targetInfo.query && this.targetInfo.query.length > 0) {\n            return document.querySelector(this.targetInfo.query) as HTMLElement;\n        }\n        console.error(\"show-on-target-scrollable-action-button> targetInfo invalid! target-info:\", this.targetInfo);\n        return undefined;\n    }\n\n    constructor() {\n        super();\n    }\n\n\n    public attributeChangedCallback(name: string, _old: string | null, value: string | null): void {\n        super.attributeChangedCallback(name, _old, value);\n        if (name === \"target-info\") {\n            const target = this.ScrollTarget;\n            if (target) {\n                target.addEventListener(\"scroll\", (event: Event)=>{\n                    this.targetScroll((event.target as HTMLElement));\n                });\n            }\n            else {\n                console.error(\"show-on-target-scrollable-action-button> no target found! target-info:\", this.targetInfo);\n            }\n            this.targetScroll(target);\n        }\n    }\n\n    protected render(): TemplateResult<1> {\n        return this.build(html`<slot></slot>`);\n    }\n}","import {html, LitElement, TemplateResult} from \"lit\";\nimport { Task } from \"@lit/task\";\nimport { property } from \"lit/decorators.js\";\nimport {BaseElement} from \"./base.component\";\n\n\nexport interface FetchParameters {\n    [key: string]: unknown\n}\n\nexport abstract class AsyncBaseElement<T, K> extends BaseElement {\n    //                                   _   _\n    //   _ __  _ __ ___  _ __   ___ _ __| |_(_) ___  ___\n    //  | '_ \\| '__/ _ \\| '_ \\ / _ \\ '__| __| |/ _ \\/ __|\n    //  | |_) | | | (_) | |_) |  __/ |  | |_| |  __/\\__ \\\n    //  | .__/|_|  \\___/| .__/ \\___|_|   \\__|_|\\___||___/\n    //  |_|             |_|\n    @property({ type: Object, reflect: false, attribute: \"fetch-parameters\" })\n    private _fetchParameters: FetchParameters = {};\n    public set FetchParameters(value_: T) {\n        const previousSerialized = JSON.stringify(this._fetchParameters);\n        this._fetchParameters = Object.assign(this._fetchParameters, value_);\n        if (JSON.stringify(this._fetchParameters) != previousSerialized) {\n            this.Refetch();\n        }\n    }\n    public get FetchParameters(): T {\n        return this._fetchParameters as T;\n    }\n\n\n    //                            _\n    //   _ __ ___   ___ _ __ ___ | |__   ___ _ __ ___\n    //  | '_ ` _ \\ / _ \\ '_ ` _ \\| '_ \\ / _ \\ '__/ __|\n    //  | | | | | |  __/ | | | | | |_) |  __/ |  \\__ \\\n    //  |_| |_| |_|\\___|_| |_| |_|_.__/ \\___|_|  |___/\n    private _renderTask: Task;\n    private _completedRender: TemplateResult<1> | undefined;\n    private _fetchPromise: Promise<K | undefined> | undefined = undefined;\n\n    protected get LastRenderResult(): TemplateResult<1> | undefined {\n        return this._completedRender;\n    }\n\n\n    //                       _                   _\n    //    ___ ___  _ __  ___| |_ _ __ _   _  ___| |_ ___  _ __\n    //   / __/ _ \\| '_ \\/ __| __| '__| | | |/ __| __/ _ \\| '__|\n    //  | (_| (_) | | | \\__ \\ |_| |  | |_| | (__| || (_) | |\n    //   \\___\\___/|_| |_|___/\\__|_|   \\__,_|\\___|\\__\\___/|_|\n    constructor() {\n        super();\n        this._renderTask = new Task(this, {\n            task: async ([_this]) => {\n                if (this._fetchPromise == undefined) {\n                    this._fetchPromise = _this.Fetch(_this.FetchParameters);\n                }\n                return await this._fetchPromise;\n            },\n            args: () => [this]\n        });\n    }\n\n\n    //   ____  _____ _   _ ____  _____ ____  ___ _   _  ____\n    //  |  _ \\| ____| \\ | |  _ \\| ____|  _ \\|_ _| \\ | |/ ___|\n    //  | |_) |  _| |  \\| | | | |  _| | |_) || ||  \\| | |  _\n    //  |  _ <| |___| |\\  | |_| | |___|  _ < | || |\\  | |_| |\n    //  |_| \\_\\_____|_| \\_|____/|_____|_| \\_\\___|_| \\_|\\____|\n    protected render(): TemplateResult<1> {\n        return this._renderTask.render({\n            pending: () => this.renderPending(),\n            complete: (result: unknown) => this.renderComplete(result as K, undefined),\n            error: (e: unknown) => this.renderError(e as Error),\n            initial: () => this.renderInitial()\n        }) as TemplateResult<1>;\n    }\n    protected renderInitial(): TemplateResult<1> {\n        return html`<slot name=\"loader\"></slot>`;\n    }// render loader if not overloaded\n    protected renderPending(): TemplateResult<1> {\n        if (this.LastRenderResult != undefined) {\n            return this.LastRenderResult;\n        }\n        return html`<slot name=\"loader\"></slot>`;\n    }// simply display last completed render or loader(if last completet == undefined) while pending if not overloaded\n    protected renderComplete(result: K | undefined, renderResult: TemplateResult<1> | undefined): TemplateResult<1> {\n        if (renderResult == undefined) {\n            return this.renderPending();\n        }\n        this._completedRender = renderResult;\n        return renderResult;\n    }// simply display the fetch result if not overloaded!\n    protected renderError(e: Error): TemplateResult<1> {\n        return html`Error: ${e}`;\n    }// simply display error if not overloaded\n\n\n    //   _____ _____ _____ ____ _   _\n    //  |  ___| ____|_   _/ ___| | | |\n    //  | |_  |  _|   | || |   | |_| |\n    //  |  _| | |___  | || |___|  _  |\n    //  |_|   |_____| |_| \\____|_| |_|\n    protected async Fetch(parameters: T): Promise<K | undefined> {\n        console.error(\"No Fetch Method defined for\", this);\n        return undefined;\n    }\n    public async CheckFetchPromise(): Promise<boolean> {\n        if (this._fetchPromise == undefined) {\n            return false;\n        }\n        await this._fetchPromise;\n        return true;\n    }\n    public async Refetch(): Promise<void> {\n        this._fetchPromise = undefined;// reset fetchResult to ensure refetch\n        this._renderTask.run();\n        await this.CheckFetchPromise();\n        await this.updateComplete;\n    }\n\n\n    //   _ _ _     _ _  __                      _\n    //  | (_) |_  | (_)/ _| ___  ___ _   _  ___| | ___\n    //  | | | __| | | | |_ / _ \\/ __| | | |/ __| |/ _ \\\n    //  | | | |_  | | |  _|  __/ (__| |_| | (__| |  __/\n    //  |_|_|\\__| |_|_|_|  \\___|\\___|\\__, |\\___|_|\\___|\n    //                               |___/\n    // protected async getUpdateComplete(): Promise<boolean> {\n    //     // await this.CheckFetchPromise();// not doing this yet, since it somewhere keeps this from working correctly..\n    //     return await super.getUpdateComplete();\n    // }\n}\n","import { property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport style from \"./base.card.sass?inline\";\nimport { TemplateResult, css, unsafeCSS, html } from \"lit\";\n// import { DimensionInformation } from \"../../informationals/dimensions-information.component\";\n// import { PriceDisplayData } from \"../../../price/price-display/price-display.component\";\nimport {\n    FilterSelectionData, CardDataLevelKey, FilterSelectionStrategy, CardContainerContext, CardData,\n    CARD_VIEW_KEY, FIXED_CARD_CLICK_EVENTS_KEY,\n    CARD_MAGNIFY_KEY, CARD_MAGNIFY_TARGET_KEY,\n    CardMagnifiedEvent,\n} from \"../../../../models/card-container/\";\nimport { EventHandlerService } from \"../../../../utils/event.handler.service\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport { BaseCardContainer } from \"../../card-container/base/base-card-container\";\nimport { ComponentService } from \"../../../../utils/component.service\";\nimport { CardContainerSettings } from \"../../card-container/internals\";\nimport { DragDropService, LocaleService } from \"@dh-software/webui-api\";\n// import {IModuleElement} from \"@dh-software/webui-configuration-parser\";\n\nexport interface CardClick {\n    \"previous-level-key\": string | number,\n    \"level-key\": string | number,\n    \"next-level-key\": string | number,\n    strategy?: FilterSelectionStrategy,\n    priority?: number,\n    [key: string]: unknown\n}\n\n// export interface CardData {\n//     image?: { prefix: string, file: string },\n//     icon?: string,\n//     txt?: { [key: string]: string },\n//     dimensions?: Array<DimensionInformation>,\n//     price?: PriceDisplayData,\n//     click?: CardClick,\n//     active?: boolean,\n//     disabled?: boolean,\n//     modules?: Array<IModuleElement>,\n//     dragable?: boolean,\n//     translate?: boolean,\n//     tooltip?: boolean,\n//     buttonGroups?: Array<CardDataButtonGroup>,\n//     additional?: {[key: string]: unknown}\n// }\n\nexport interface CardClickData {\n    data: CardData,\n    settings: CardContainerSettings\n}\nexport interface CardClickEventInit extends CustomEventInit {\n    detail?: CardClickData\n}\n\nexport class CardClickEvent extends CustomEvent<CardClickData> {\n    constructor(data: CardClickData) {\n        super(\"cardclick\", { detail: data, bubbles: true });\n    }\n}\nexport class CardClickedEvent extends CustomEvent<CardClickData> {\n    constructor(data: CardClickData) {\n        super(\"cardclicked\", { detail: data, bubbles: true });\n    }\n}\n\n\nexport class BaseCard extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Object, reflect: true, attribute: \"data\" })\n    public data: CardData = {};\n\n    protected get imageSrc(): string {\n        let src = \"\";\n        if (this.data.image != undefined) {\n            if (this.data.image.prefix != undefined && this.data.image.prefix.length > 0) {\n                src += this.data.image.prefix;\n            }\n            if (this.data.image.file != undefined && this.data.image.file.length > 0) {\n                src += this.data.image.file;\n            }\n        }\n        return src;\n    }\n\n\n\n    private _cardContainerClickData: {context: CardContainerContext, \"handle-click\": boolean, container: BaseCardContainer } | undefined = undefined;\n    public set cardContainerClickData(data: {context: CardContainerContext, \"handle-click\": boolean, container: BaseCardContainer } | undefined) {\n        this._cardContainerClickData = data;\n    }\n    public get cardContainerClickData(): {context: CardContainerContext, \"handle-click\": boolean, container: BaseCardContainer } | undefined {\n        return this._cardContainerClickData;\n    }\n\n    private async UpdatePostLocalesModelRead() {\n        await LocaleService.IsFileRead();\n        this.requestUpdate();\n    }\n    private UpdateDrag() {\n        DragDropService.removeElement(this);\n        if (this.data.dragable && this._cardContainerClickData != undefined && this.data != undefined) {\n            const dragData = CardDataService.GetFormattedCardDragData(this.data, this._cardContainerClickData.context);\n            if (dragData != undefined) {\n                let imgSrc = this.imageSrc;\n                if (imgSrc.length < 1) {\n                    imgSrc = \"nix\";\n                }\n                this.setAttribute(\"drag-image\", imgSrc);\n                DragDropService.addElement(this, dragData, ComponentService.findScrollableParent(this));\n            }\n        }\n    }\n\n\n    private collectAdditionalCardClickEventKeyValuePairs(): Array<{key: string, data: unknown}> {\n        if (this.data.additional == undefined || this.data.additional[\"selected-filters\"] == undefined) return new Array<{key: string, data: unknown}>;\n        if (this._cardContainerClickData == undefined) return new Array<{key: string, data: unknown}>;\n\n        const buttonsFilter = this.data.additional[\"selected-filters\"] as FilterSelectionData[] | undefined;\n        if (buttonsFilter == undefined) return new Array<{key: string, data: unknown}>;\n\n        let relevantValues = this._cardContainerClickData.context.settings.Card[\"card-click-events-relevant-selection-filter-values\"];\n        if (relevantValues == undefined) {\n            relevantValues = this._cardContainerClickData.context.settings.Card[\"card-click-events-relevant-buttons-filter-values\"];// PH [2025|April|09] - support for legacy-jsons before it was renamed to differentiate it from other forms of filtering\n            console.warn(\"'card-click-events-relevant-buttons-filter-values' was replaced with 'card-click-events-relevant-selection-filter-values'! Still works (fow now), but do not use in new projects!\");\n            if (relevantValues == undefined) return new Array<{key: string, data: unknown}>;\n        }\n\n        const additional = new Array<{key: string, data: unknown}>;\n        for (const buttonFilter of buttonsFilter) {\n            for (const levelKey of buttonFilter.filter) {\n                const relevantValue = relevantValues.find((value: { placeholder: string, \"card-data-level-key\": CardDataLevelKey })=>{\n                    return levelKey == value[\"card-data-level-key\"];\n                });\n\n                if (relevantValue == undefined) continue;\n\n                additional.push({\n                    key: relevantValue.placeholder,\n                    data: relevantValue[\"card-data-level-key\"].toString()\n                });\n            }\n        }\n        return additional;\n    }\n\n    private async clicked(): Promise<void> {\n        if (this._cardContainerClickData == undefined || !this._cardContainerClickData[\"handle-click\"]) return;\n\n        // A `card-view-key` on additional opens a side view in the enclosing fv-card-container-view\n        // and ALWAYS short-circuits the normal navigation pipeline — works for fixed and dynamic cards.\n        const cardViewKey = this.data.additional?.[CARD_VIEW_KEY];\n        if (typeof cardViewKey === \"string\" && cardViewKey.length > 0) {\n            this._cardContainerClickData.container.dispatchEvent(new CardClickEvent({ data: this.data, settings: this._cardContainerClickData.context.settings }));\n            return;\n        }\n\n        // Fixed cards with only clickEvents (no data.click) — emit cardclick so the container fires them.\n        const fixedClickEvents = this.data.additional?.[FIXED_CARD_CLICK_EVENTS_KEY];\n        if (Array.isArray(fixedClickEvents) && fixedClickEvents.length > 0 && !this.data.click) {\n            this._cardContainerClickData.container.dispatchEvent(new CardClickEvent({ data: this.data, settings: this._cardContainerClickData.context.settings }));\n            return;\n        }\n\n        if (this.data.click) {\n            const additionalKeys = this.collectAdditionalCardClickEventKeyValuePairs();\n\n            for (const preCardClickEvent of this._cardContainerClickData.context.settings.Card[\"pre-click-events\"]) {\n                const preClickEventData = preCardClickEvent.data ? CardDataService.PrepareClickedCardEventData(preCardClickEvent.data, this.data.click, additionalKeys) : {};\n                preClickEventData[\"clicked-card\"] = { \"data\": this.data };\n                await EventHandlerService.dispatchAsyncEvent(preCardClickEvent.id, preClickEventData);\n            }\n\n            this._cardContainerClickData.container.dispatchEvent(new CardClickEvent({ data: this.data, settings: this._cardContainerClickData.context.settings }));\n            await CardDataService.ClickCard(this.data, this._cardContainerClickData.context);\n            this._cardContainerClickData.container.dispatchEvent(new CardClickedEvent({ data: this.data, settings: this._cardContainerClickData.context.settings }));\n\n            if (this._cardContainerClickData.context.settings.Behaviour[\"mark-selected\"]) {\n                this.classList.add(\"selected\");\n            }\n\n            for (const postCardClickEvent of this._cardContainerClickData.context.settings.Card[\"post-click-events\"]) {\n                const postClickEventData = postCardClickEvent.data ? CardDataService.PrepareClickedCardEventData(postCardClickEvent.data, this.data.click, additionalKeys) : {};\n                postClickEventData[\"clicked-card\"] = { \"data\": this.data };\n                await EventHandlerService.dispatchAsyncEvent(postCardClickEvent.id, postClickEventData);\n            }\n        }\n    }\n\n    constructor() {\n        super();// call baseElement constructor, do not register into locales model\n        this.baseOptions.registerLocalesModel = false;\n        this.UpdatePostLocalesModelRead();\n\n        this.addEventListener(\"click\", (e: MouseEvent)=>{\n            this.clicked();\n        });\n    }\n\n    protected render(): TemplateResult<1> {\n        this.UpdateDrag();\n        return html``;\n    }\n\n    /** Corner button that magnifies the card — rendered when `data.additional.magnify` is truthy. */\n    protected get magnifyButtonHtml(): TemplateResult<1> {\n        if (!this.data.additional?.[CARD_MAGNIFY_KEY]) return html``;\n        return html`\n            <div class=\"magnify-button\" part=\"magnify-button\" @click=\"${this.onMagnifyClick}\">\n                <fv-icon icon=\"fv-icon-maximize\">\n            </div>\n        `;\n    }\n\n    private onMagnifyClick(e: Event): void {\n        e.preventDefault();\n        e.stopPropagation();\n        e.stopImmediatePropagation();\n        const rawTarget = this.data.additional?.[CARD_MAGNIFY_TARGET_KEY];\n        const target = typeof rawTarget === \"string\" && rawTarget.length > 0 ? rawTarget : undefined;\n        window.dispatchEvent(new CardMagnifiedEvent(this.data, target));\n    }\n\n    protected updated(changedProperties: Map<string, unknown>): void {\n        super.updated(changedProperties);\n\n        if (this.data.active) {\n            this.classList.add(\"active\");\n        }\n        else {\n            this.classList.remove(\"active\");\n        }\n\n        if (this.data.disabled) {\n            this.classList.add(\"disabled-card\");\n        }\n        else {\n            this.classList.remove(\"disabled-card\");\n        }\n    }\n}\n","import { FilterSelectionData, FilterSelectionStrategy, CardDataLevelKey, CardContainerContext, CardDataLevelMap, CardDataLevel } from \"../../../../models/card-container\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport { CardContainerResetFilterEvent } from \"../../../../models/card-container\";\n\nexport class CardContainerFilterSelection {\n    private filter: FilterSelectionData = {\n        filter: [],\n        strategy: FilterSelectionStrategy.AND,\n        priority: 0,\n        \"additional-params\": undefined\n    };\n\n    // constructor() {}\n\n    public Init(context: CardContainerContext): void {\n        this.filter[\"additional-params\"] = CardDataService.GetFilterSelectionAdditionalParams(context);\n        this.filter.strategy = CardDataService.GetFilterSelectionStrategy(context);\n    }\n    public Reset(restoreDefaults = true, context: CardContainerContext): void {\n        this.filter.filter = [];\n        if (restoreDefaults) {\n            this.filter.priority = 0;\n            this.Init(context);\n        }\n        CardDataService.InitFilterSelectionParams(context);\n        context.dispatchAsyncEvent(done => new CardContainerResetFilterEvent({\n            \"restore-defaults\": restoreDefaults,\n            context: context,\n            \"post-event\": done\n        }));\n    }\n    public Clear(): void {\n        this.filter.filter = [];\n    }\n\n    public set Strategy(value: FilterSelectionStrategy) {\n        this.filter.strategy = value;\n    }\n    public get Strategy(): FilterSelectionStrategy {\n        return this.filter.strategy;\n    }\n\n    public set Prio(value: number) {\n        this.filter.priority = value;\n    }\n    public get Prio(): number {\n        return this.filter.priority ? this.filter.priority : 0;\n    }\n\n    public get Filter(): Array<CardDataLevelKey> {\n        return this.filter.filter;\n    }\n\n    public set AdditionalParams(params: unknown) {\n        this.filter[\"additional-params\"] = params;\n    }\n    public get AdditionalParams(): unknown | undefined {\n        return this.filter[\"additional-params\"];\n    }\n\n    public Add(key: CardDataLevelKey): boolean {\n        if (this.filter.filter.includes(key)) return false;\n\n        this.filter.filter.push(key);\n        return true;\n    }\n\n    public Remove(key: CardDataLevelKey): boolean {\n        const index = this.filter.filter.indexOf(key);\n        if (index < 0) return false;\n\n        this.filter.filter.splice(index, 1);\n        return true;\n    }\n\n    public Toggle(key: CardDataLevelKey): void {\n        if (this.Add(key)) return;\n        this.Remove(key);\n    }\n\n    public Contains(key: CardDataLevelKey): boolean {\n        return this.filter.filter.includes(key);\n    }\n\n    public Set(filter: FilterSelectionData): void {\n        this.filter = filter;\n    }\n\n    public PurgeRemovedCards(cards: CardDataLevelMap | undefined): void {\n        if (cards == undefined) return;\n\n        const keysToRemove = new Array<CardDataLevelKey>();\n        for (const key of this.filter.filter) {\n            if (cards.has(key) == undefined) {\n                keysToRemove.push(key);\n            }\n        }\n\n        for (const key of keysToRemove) {\n            const index = keysToRemove.indexOf(key);\n            this.filter.filter.splice(index, 1);\n        }\n    }\n\n    public Join(separator?: string | undefined): string {\n        return this.filter.filter.join(separator);\n    }\n}","import { IModuleElement, IProperty } from \"@dh-software/webui-configuration-parser\";\r\nimport { CardFetchFilters, FilterSelectionStrategy, CardData, CardDataLevelKey, CardFetchMethod, CardSettings } from \"../../../../models/card-container/card-container-definitions\";\r\nimport { EventHandlerEvent } from \"../../../../models/event-handler/event.handler.model\";\r\nimport { ComponentServiceSearchParams } from \"../../../../utils/component.service\";\r\nimport { FetchParameters } from \"../../base/async.base.component\";\r\nimport { BaseCardDataAppConnection } from \"../../../../utils/card-app-connections/base.card.app.connection\";\r\n\r\n\r\n// TODO: Turn this interface into a class of getters...\r\nexport interface CardFetch {\r\n    method: CardFetchMethod,\r\n    parameters: { [key: string]: unknown },\r\n    manufacturer: string,\r\n    program: string,\r\n    \"root-level\": string,\r\n    filter: CardFetchFilters,\r\n    \"suspend-until-triggered\": boolean\r\n}\r\nexport interface CardCreateSettings {\r\n    \"tag\": string,\r\n    \"classes\": Array<string>,\r\n    \"mobile-classes\": Array<string>,\r\n    \"settings\": CardSettings,\r\n    \"pre-click-events\": Array<EventHandlerEvent>,\r\n    \"post-click-events\": Array<EventHandlerEvent>,\r\n    \"dragable\": boolean,\r\n    \"translate\": boolean,\r\n    \"tooltip\": boolean,\r\n    \"app-connection-settings\": { [key: string]: unknown },\r\n    \"card-click-events-relevant-buttons-filter-values\": Array<{ placeholder: string, \"card-data-level-key\": CardDataLevelKey }>,\r\n    \"card-click-events-relevant-selection-filter-values\": Array<{ placeholder: string, \"card-data-level-key\": CardDataLevelKey }>,\r\n    \"modules\": Array<IModuleElement>,\r\n    \"additional\": { [key: string]: unknown }\r\n}\r\n/** Fixed (pinned) card entry. `view-key`, when set, switches an enclosing fv-card-container-view to that side view on click. */\r\nexport interface FixedCardEntry {\r\n    data: CardData,\r\n    clickEvents: Array<EventHandlerEvent>,\r\n    \"view-key\"?: string\r\n}\r\nexport interface FixedCards {\r\n    \"before\": Array<FixedCardEntry>,\r\n    \"after\": Array<FixedCardEntry>\r\n}\r\nexport interface LevelSettings {\r\n    \"tag\": string,\r\n    \"style-vars\": { [levelKey: CardDataLevelKey]: { [styleVar: string]: string } },\r\n    \"style-vars-all\": { [styleVar: string]: string },\r\n    \"titled\": boolean,\r\n    \"single-value-invisible\": boolean\r\n}\r\nexport interface FilterSettings {\r\n    \"selection-strategy\": FilterSelectionStrategy,\r\n    \"source-elements-selectors\": Array<ComponentServiceSearchParams>,\r\n    \"determine-priorities-by-suspended-disable-sources\": boolean,\r\n    mobile: {\r\n        \"selection-strategy\": FilterSelectionStrategy,\r\n        \"source-elements-selectors\": Array<ComponentServiceSearchParams>,\r\n        \"determine-priorities-by-suspended-disable-sources\": boolean\r\n    }\r\n}\r\n\r\nexport interface AutomaticContainerDefinition {\r\n    tag: string,\r\n    classes: Array<string>,\r\n    \"style-vars\": { [styleVar: string]: string },\r\n    properties: IProperty[]\r\n}\r\n\r\nexport interface AutomaticContainerProperties extends AutomaticContainerDefinition {\r\n    subContainer?: AutomaticContainerDefinition[]\r\n}\r\n\r\nexport interface AutomaticContainerSettings extends AutomaticContainerProperties {\r\n    mobile: AutomaticContainerProperties\r\n}\r\nexport interface BehaviourSettings {\r\n    \"mark-selected\": boolean,\r\n    \"single-card-hide\": boolean,\r\n    \"connection-defined-interaction-on-icon-button\": boolean,\r\n    \"connection-defined-interaction-on-selection-change\": boolean,\r\n    \"connection-defined-hide-show\": boolean,\r\n    \"auto-hide-after-click\": boolean,\r\n    \"placer-once\": {\r\n        \"all\": boolean\r\n        \"categories\": Array<string>\r\n    }\r\n}\r\n\r\nexport interface SpecialInteractionContext {\r\n    \"data-sources\": ComponentServiceSearchParams[]\r\n    mobile: {\r\n        \"data-sources\": ComponentServiceSearchParams[]\r\n    }\r\n}\r\n\r\ninterface _InternalCardContainerSettings {\r\n    \"fetch\": CardFetch,\r\n    \"card\": CardCreateSettings,\r\n    \"fixed-cards\": FixedCards,\r\n    \"levels\": LevelSettings,\r\n    \"filter\": FilterSettings,\r\n    \"automatic-container\": AutomaticContainerSettings,\r\n    \"behaviour\": BehaviourSettings,\r\n    \"special-interaction-context\": SpecialInteractionContext\r\n}\r\n\r\nexport class CardContainerSettings {\r\n    private _initialized = false;\r\n    private _settings: _InternalCardContainerSettings = {\r\n        \"fetch\": {\r\n            method: CardFetchMethod.NONE,\r\n            parameters: {},\r\n            manufacturer: \"\",\r\n            program: \"\",\r\n            \"root-level\": \"root\",\r\n            filter: {},\r\n            \"suspend-until-triggered\": false\r\n        },\r\n\r\n        \"card\": {\r\n            tag: \"fv-card\",\r\n            classes: new Array<string>(),\r\n            \"mobile-classes\": new Array<string>(),\r\n            \"settings\": {},\r\n            \"pre-click-events\": new Array<EventHandlerEvent>(),\r\n            \"post-click-events\": new Array<EventHandlerEvent>(),\r\n            dragable: false,\r\n            translate: true,\r\n            tooltip: false,\r\n            \"app-connection-settings\": {},\r\n            \"card-click-events-relevant-buttons-filter-values\": [],\r\n            \"card-click-events-relevant-selection-filter-values\": [],\r\n            \"modules\": new Array<IModuleElement>(),\r\n            \"additional\": {}\r\n        },\r\n\r\n        \"fixed-cards\": {\r\n            \"before\": new Array<{ data: CardData, clickEvents: Array<EventHandlerEvent> }>(),\r\n            \"after\": new Array<{ data: CardData, clickEvents: Array<EventHandlerEvent> }>()\r\n        },\r\n\r\n        \"levels\": {\r\n            tag: \"fv-grid-container\",\r\n            \"style-vars\": {},\r\n            \"style-vars-all\": {},\r\n            titled: false,\r\n            \"single-value-invisible\": false\r\n        },\r\n\r\n        \"filter\": {\r\n            \"selection-strategy\": FilterSelectionStrategy.NONE,\r\n            \"source-elements-selectors\": new Array<ComponentServiceSearchParams>(),\r\n            \"determine-priorities-by-suspended-disable-sources\": false,\r\n            \"mobile\": {\r\n                \"selection-strategy\": FilterSelectionStrategy.NONE,\r\n                \"source-elements-selectors\": new Array<ComponentServiceSearchParams>(),\r\n                \"determine-priorities-by-suspended-disable-sources\": false\r\n            }\r\n        },\r\n\r\n        \"automatic-container\": {\r\n            tag: \"fv-flex-container\",\r\n            classes: new Array<string>(),\r\n            \"style-vars\": {},\r\n            properties: [],\r\n            mobile: {\r\n                tag: \"fv-flex-container\",\r\n                classes: new Array<string>(),\r\n                \"style-vars\": {},\r\n                properties: []\r\n            }\r\n        },\r\n\r\n        \"behaviour\": {\r\n            \"mark-selected\": false,\r\n            \"single-card-hide\": false,\r\n            \"connection-defined-hide-show\": false,\r\n            \"connection-defined-interaction-on-icon-button\": false,\r\n            \"connection-defined-interaction-on-selection-change\": false,\r\n            \"placer-once\": {\r\n                \"all\": false,\r\n                \"categories\": new Array<string>()\r\n            }\r\n        },\r\n\r\n        \"special-interaction-context\": {\r\n            \"data-sources\": [],\r\n            mobile: {\r\n                \"data-sources\": []\r\n            }\r\n        }\r\n    };\r\n\r\n    private _fill(incomplete: FetchParameters, defaults: FetchParameters): _InternalCardContainerSettings {\r\n        for (const key in defaults) {\r\n            if (incomplete[key] == undefined) {\r\n                incomplete[key] = defaults[key];\r\n                continue;\r\n            }\r\n\r\n            if (typeof incomplete[key] === \"object\" && typeof defaults[key] === \"object\") {\r\n                incomplete[key] = this._fill(incomplete[key] as FetchParameters, defaults[key] as FetchParameters);\r\n            }\r\n        }\r\n        return incomplete as {\r\n            \"fetch\": CardFetch,\r\n            \"card\": CardCreateSettings,\r\n            \"fixed-cards\": FixedCards,\r\n            \"levels\": LevelSettings,\r\n            \"filter\": FilterSettings,\r\n            \"automatic-container\": AutomaticContainerSettings,\r\n            \"behaviour\": BehaviourSettings,\r\n            \"special-interaction-context\": SpecialInteractionContext\r\n        };\r\n    }\r\n\r\n    public Initialize(parameters: FetchParameters): void {\r\n        if (!this.Initialized) {\r\n            this.parameters = parameters;\r\n        }\r\n    }\r\n\r\n    public set parameters(parameters: FetchParameters) {\r\n        this._settings = this._fill(parameters, this._settings as unknown as FetchParameters);\r\n        this._initialized = true;\r\n    }\r\n    public set fetchFilter(filter: CardFetchFilters) {\r\n        this._settings.fetch.filter = filter;\r\n    }\r\n\r\n    public get Initialized(): boolean {\r\n        return this._initialized;\r\n    }\r\n\r\n    public get Fetch(): CardFetch {\r\n        return this._settings[\"fetch\"];\r\n    }\r\n    public get Card(): CardCreateSettings {\r\n        return this._settings[\"card\"];\r\n    }\r\n    public get FixedCards(): FixedCards {\r\n        return this._settings[\"fixed-cards\"];\r\n    }\r\n    public get Levels(): LevelSettings {\r\n        return this._settings[\"levels\"];\r\n    }\r\n    public get Filter(): FilterSettings {\r\n        return this._settings[\"filter\"];\r\n    }\r\n    public get AutomaticContainer(): AutomaticContainerSettings {\r\n        return this._settings[\"automatic-container\"];\r\n    }\r\n    public get Behaviour(): BehaviourSettings {\r\n        return this._settings[\"behaviour\"];\r\n    }\r\n    public get SpecialInteractionContext(): SpecialInteractionContext {\r\n        return this._settings[\"special-interaction-context\"];\r\n    }\r\n\r\n\r\n    public set Program(value: string) {\r\n        this._settings.fetch.program = value;\r\n    }\r\n\r\n\r\n\r\n    public ToJson(): _InternalCardContainerSettings {\r\n        return JSON.parse(JSON.stringify(this._settings));\r\n    }\r\n}\r\n","import { FetchParameters } from \"../../base/async.base.component\";\nimport { CardData } from \"../../../../models/card-container\";\nimport type { BaseCardContainer } from \"../base/base-card-container\";\nimport { CardContainerSettings } from \"./card-container-settings\";\nimport {ConstructionService, IModuleElement} from \"@dh-software/webui-configuration-parser\";\n\nexport class InternalCardContainerList {\n    private _containers = new Array<BaseCardContainer | HTMLSlotElement>();\n    public Get(id: string): BaseCardContainer | undefined | HTMLSlotElement {\n        for (const container of this._containers) {\n            if (container.id == id || container.id == (\"slot-\" + id)) {\n                return container;\n            }\n        }\n        return undefined;\n    }\n    private Remove(container: BaseCardContainer | HTMLSlotElement): void {\n        this._containers.splice(this._containers.indexOf(container), 1);\n    }\n\n    private _CreateSlot(id: string, card: CardData, details: {\n        tag: string,\n        settings: undefined | FetchParameters,\n        \"fetch-parameters\": undefined | FetchParameters,\n        \"style-vars\": { [styleVar: string]: string },\n        modules: Array<IModuleElement>,\n        classes: Array<string>,\n        \"slot-name\": string\n    }): HTMLSlotElement {\n        const slot = document.createElement(\"slot\");\n        slot.id = \"slot-\" + id;\n        if (details[\"slot-name\"].length > 0) {\n            slot.name = details[\"slot-name\"];\n        }\n        else {\n            slot.name = card.click && card.click[\"level-key\"] ? card.click[\"level-key\"] + \"\" : \"\";\n        }\n        this._containers.push(slot);\n        return slot;\n    }\n\n    private _updateElementDetails(container: BaseCardContainer, card: CardData, createModules: boolean, details: {\n        tag: string,\n        settings: undefined | FetchParameters,\n        \"fetch-parameters\": undefined | FetchParameters,\n        \"style-vars\": { [styleVar: string]: string },\n        modules: Array<IModuleElement>,\n        classes: Array<string>,\n        \"slot-name\": string\n    }): void {\n        if (details.settings != undefined) {\n            const settings = new CardContainerSettings();\n            if (details[\"fetch-parameters\"]) {\n                settings.parameters = details[\"fetch-parameters\"];\n            }\n            else {\n                settings.parameters = details.settings;\n            }\n\n            settings.fetchFilter = {\n                \"level-key-filter\": settings.Fetch.filter[\"level-key-filter\"],\n                \"property-keys\": {\n                    keys: [card.click && card.click[\"level-key\"] ? card.click[\"level-key\"] + \"\" : \"\"]\n                },\n                \"suspend-until-triggered\": settings.Fetch[\"suspend-until-triggered\"]\n            };\n            container.FetchParameters = settings.ToJson() as unknown as FetchParameters;\n        }\n\n        if (details[\"style-vars\"] != undefined) {\n            const newContainerStyleVarsKeys = Object.keys(details[\"style-vars\"]);\n            newContainerStyleVarsKeys.forEach(key=>{\n                if (key.startsWith(\"--\")) {\n                    if (container && details[\"style-vars\"]) {\n                        container.style.setProperty(key, details[\"style-vars\"][key]);\n                    }\n                }\n            });\n        }\n\n        if (createModules && details.modules) {\n            for (const module of details.modules) {\n                ConstructionService.loadModule(module, container);\n            }\n        }\n\n        if (details.classes) {\n            container.classList.add(...details.classes);\n        }\n    }\n    private _CreateElement(id: string, card: CardData, details: {\n        tag: string,\n        settings: undefined | FetchParameters,\n        \"fetch-parameters\": undefined | FetchParameters,\n        \"style-vars\": { [styleVar: string]: string },\n        modules: Array<IModuleElement>,\n        classes: Array<string>,\n        \"slot-name\": string\n    }): BaseCardContainer {\n        const container = document.createElement(details.tag) as BaseCardContainer;\n        container.id = id;\n        this._updateElementDetails(container, card, true, details);\n        this._containers.push(container);\n        return container;\n    }\n\n    public Add(id: string, card: CardData, details: {\n        tag: string,\n        settings: undefined | FetchParameters,\n        \"fetch-parameters\": undefined | FetchParameters,\n        \"style-vars\": { [styleVar: string]: string },\n        modules: Array<IModuleElement>,\n        classes: Array<string>,\n        \"slot-name\": string\n    }): BaseCardContainer | HTMLSlotElement {\n        if (details.tag.length < 1) {\n            return this._CreateSlot(id, card, details);\n        }\n        return this._CreateElement(id, card, details);\n    }\n\n    public Update(container: BaseCardContainer | HTMLSlotElement, card: CardData, details: {\n        tag: string,\n        settings: undefined | FetchParameters,\n        \"fetch-parameters\": undefined | FetchParameters,\n        \"style-vars\": { [styleVar: string]: string },\n        modules: Array<IModuleElement>,\n        classes: Array<string>,\n        \"slot-name\": string\n    }): void {\n        if (container instanceof HTMLSlotElement) {\n            if (details.tag.length > 0) {\n                this.Remove(container);\n                container = this.Add(container.id, card, details);\n                return;\n            }\n            if (details[\"slot-name\"].length > 0) {\n                container.name = details[\"slot-name\"];\n            }\n            else {\n                container.name = card.click && card.click[\"level-key\"] ? card.click[\"level-key\"] + \"\" : \"\";\n            }\n            return;\n        }\n\n        // container is BaseCardContainer\n        if (details.tag.length < 1) {\n            this.Remove(container);\n            container = this.Add(container.id, card, details);\n            return;\n        }\n        this._updateElementDetails(container as BaseCardContainer, card, false, details);\n        (container as BaseCardContainer).Refetch();\n    }\n}\n","import {CardContainerContext, CardData, CardDataLevelKey, CardDataLevelMap} from \"../../../../models/card-container/\";\nimport type {BaseCardContainer} from \"../base/base-card-container\";\nimport type {CardAccordionContainerComponent} from \"../containers/card-accordion-container.component\";\nimport type {CardContainerSliderFilterComponent} from \"../containers/card-container-slider-filter.component\";\nimport {BaseCard} from \"../../cards/base/base.card\";\nimport {html, TemplateResult} from \"lit\";\nimport {EventHandlerDispatchEvent} from \"../../../../models/event-handler/event.handler.model\";\nimport {InternalCardContainerList} from \"../internals/internal-card-container-list\";\nimport {AccordionItemComponent} from \"../../../../components/standard/accordion\";\nimport {CardDataService} from \"../../../../utils/card.data.service\";\nimport {ConstructionService, IProperty} from \"@dh-software/webui-configuration-parser\";\nimport {AutomaticContainerDefinition, AutomaticContainerSettings} from \"./card-container-settings\";\nimport {WebViewerService} from \"@dh-software/webui-api\";\n\nexport class CardElementCreator {\n    /** undefined = never rendered yet; reset when the container is hidden so the next show always fires. */\n    private _wasFilled: boolean | undefined = undefined;\n    public ResetFillState(): void { this._wasFilled = undefined; }\n\n    private createUniqueCardIdentifierFromKeys(levelKey: CardDataLevelKey, nextLevelKey: CardDataLevelKey, debugData: CardData | string) {\n        let key = levelKey != undefined ? levelKey as string : \"\";\n        if (typeof levelKey === \"number\") {\n            key = levelKey.toFixed(0);\n        }\n        if (key.length > 0) {\n            key = key.replaceAll(\" \", \"\");\n        }\n\n        let nextKey = nextLevelKey != undefined ? nextLevelKey as string : \"\";\n        if (typeof nextLevelKey === \"number\") {\n            nextKey = nextLevelKey.toFixed(0);\n        }\n        if (nextKey.length > 0) {\n            nextKey = nextKey.replaceAll(\" \", \"\");\n        }\n\n        if (key.length < 1 && nextKey.length < 1) {\n            console.error(\"BaseCardContainer - Error! could not create UniqueCardIdentifier debug-data:\", debugData);\n        }\n        return key + \"-\" + nextKey;\n    }\n\n    private loadProperties(properties: IProperty[], element: Element) {\n        const setProperty = (property: IProperty) => {\n            if (typeof property.value === \"boolean\" && property.attribute && property.value) element.setAttribute(property.key, \"\");\n            else if (typeof property.value === \"boolean\" && property.attribute && !property.value) element.removeAttribute(property.key);\n            else if (typeof property.value === \"object\" && property.attribute) element.setAttribute(property.key, JSON.stringify(property.value));\n            else {\n                if (!property.attribute) {\n                    // @ts-ignore\n                    element[property.key] = property.value;\n                } else {\n                    element.setAttribute(property.key, property.value);\n                }\n            }\n        };\n        if (properties.length && element) {\n            for (let property of properties) {\n                const readyValue = property.readyValue;\n                if (readyValue) {\n                    WebViewerService.IsAppReady.then(() => {\n                        setProperty(Object.assign(property, {value: readyValue.value}));\n                    });\n                }\n                setProperty(property);\n            }\n        }\n    }\n\n    public createCard(data: CardData | null, context: CardContainerContext, container: BaseCardContainer): BaseCard | undefined {\n        if (data == undefined) return undefined;\n\n        const tag = (data.additional?.[\"card-tag\"] as string) || context.settings.Card.tag;\n        const card = document.createElement(tag) as BaseCard;\n        card.classList.add(...(container.mobile ? context.settings.Card[\"mobile-classes\"] : context.settings.Card.classes));\n        card.classList.add(this.createUniqueCardIdentifierFromKeys(data.click ? data.click[\"level-key\"] : \"\", data.click ? data.click[\"next-level-key\"] : \"\", data));\n        card.cardContainerClickData = {\n            \"handle-click\": true,\n            context: context,\n            container: container\n        };\n        data.dragable = context.settings.Card.dragable;\n        data.tooltip = context.settings.Card.tooltip;\n        const containerAdditional = context.settings.Card.additional;\n        if (containerAdditional && Object.keys(containerAdditional).length > 0) {\n            data.additional = { ...containerAdditional, ...(data.additional ?? {}) };\n        }\n        card.data = data;\n        card.data.translate = context.settings.Card.translate;\n\n        const allModules = [...(context.settings.Card.modules || []), ...(data.modules || [])];\n        for (const module of allModules) {\n            ConstructionService.loadModule(module, card);\n        }\n        return card;\n    }\n    protected pushCardElementToInterimArray(displayElements: Array<HTMLElement>, card: CardData | null, context: CardContainerContext, container: BaseCardContainer): void {\n        const cardElement = this.createCard(card, context, container);\n        if (cardElement) {\n            displayElements.push(cardElement);\n        }\n    }\n    protected createDisplayElements(levels: CardDataLevelMap, context: CardContainerContext, container: BaseCardContainer): void {\n        this.displayElements = new Array<HTMLElement>();\n        const styleVarsAll = context.settings.Levels[\"style-vars-all\"];\n        const styleVarsAllKeys = Object.keys(styleVarsAll);\n\n        if (levels.size == 1) {\n            const keys = levels.keys();\n            if (keys) {\n                const next = keys.next();\n                if (next && next.value) {\n                    const level = levels.get(next.value);\n                    if (level) {\n                        level.cards.forEach(card => {\n                            this.pushCardElementToInterimArray(this.displayElements, card, context, container);\n                        });\n                        if (level.cards.length === 0) {\n                            this.pushCardElementToInterimArray(this.displayElements, null, context, container);\n                        }\n                    }\n                }\n            }\n        } else if (levels.size > 1) {\n            levels.forEach((level, levelKey) => {\n                if (level.title && level.title.length > 0 && context.settings.Levels.titled) {\n                    const levelTitleElement = document.createElement(\"fv-label\");\n                    levelTitleElement.setAttribute(\"i18n\", level.title);\n                    levelTitleElement.innerText = level.title;\n                    levelTitleElement.classList.add(\"level-title\");\n                    if (context.settings.Levels[\"single-value-invisible\"] && level.cards.length == 1) {\n                        levelTitleElement.classList.add(\"invisible\");\n                    }\n                    this.displayElements.push(levelTitleElement);\n                }\n\n                const levelElement = document.createElement(context.settings.Levels.tag);\n                levelElement.classList.add(\"level\");\n                if (context.settings.Levels[\"single-value-invisible\"] && level.cards.length == 1) {\n                    levelElement.classList.add(\"invisible\");\n                }\n                if (level.cards.length < 1) {\n                    levelElement.setAttribute(\"hide-element\", \"\");\n                }\n\n                const styleVars = context.settings.Levels[\"style-vars\"][levelKey];\n                if (styleVars) {\n                    const styleVarKeys = Object.keys(styleVars);\n                    styleVarKeys.forEach(key => {\n                        if (key.startsWith(\"--\")) {\n                            levelElement.style.setProperty(key, styleVars[key]);\n                        }\n                    });\n                }\n\n                styleVarsAllKeys.forEach(key => {\n                    if (key.startsWith(\"--\")) {\n                        levelElement.style.setProperty(key, styleVarsAll[key]);\n                    }\n                });\n\n                const levelChildElements = new Array<HTMLElement>();\n                level.cards.forEach(card => {\n                    this.pushCardElementToInterimArray(levelChildElements, card, context, container);\n                    // levelElement.appendChild(this.createCard(card, settings));\n                });\n                if (level.cards.length === 0) {\n                    this.pushCardElementToInterimArray(this.displayElements, null, context, container);\n                }\n                levelChildElements.forEach(childElement => {\n                    levelElement.appendChild(childElement);\n                });\n\n                let levelKeyTxt = levelKey;\n                if (typeof levelKeyTxt == \"number\") {\n                    levelKeyTxt = levelKeyTxt.toString();\n                }\n\n                levelElement.setAttribute(\"level\", levelKeyTxt);\n                this.displayElements.push(levelElement);\n            });\n        }\n\n        // Handle onlyLevelOne case: wrap all elements in a flex-container\n        if (levels.has(\"onlyLevelOne\") && levels.size === 1) {\n            const wrapper = document.createElement('fv-flex-container');\n            wrapper.setAttribute('level', 'onlyLevelOne');\n            wrapper.classList.add(\"level\");\n\n            const styleVars = context.settings.Levels[\"style-vars\"][\"onlyLevelOne\"];\n            if (styleVars) {\n                const styleVarKeys = Object.keys(styleVars);\n                styleVarKeys.forEach(key => {\n                    if (key.startsWith(\"--\")) {\n                        wrapper.style.setProperty(key, styleVars[key]);\n                    }\n                });\n            }\n\n            styleVarsAllKeys.forEach(key => {\n                if (key.startsWith(\"--\")) {\n                    wrapper.style.setProperty(key, styleVarsAll[key]);\n                }\n            });\n\n            this.displayElements.forEach(elem => wrapper.appendChild(elem));\n            this.displayElements = [wrapper];\n        }\n    }\n\n    protected displayElements = new Array<HTMLElement>();\n\n    // constructor() {}\n\n    public get Elements(): Array<HTMLElement> {\n        return this.displayElements;\n    }\n\n    protected CreateSubContainers(container: AutomaticContainerDefinition[], topParent: Element): [Element?, Element?] {\n        let copy = [...container].reverse();\n        let cItem = copy.pop()\n\n        let parent: Element | undefined\n        let child: Element | undefined\n        while (cItem) {\n            const newChild = document.createElement(cItem.tag);\n            newChild.classList.add(...cItem.classes || []);\n            Object.keys(cItem[\"style-vars\"] || {}).filter(x => x.startsWith(\"--\")).forEach(x => newChild.style.setProperty(x, cItem![\"style-vars\"][x]));\n            this.loadProperties(cItem.properties, newChild);\n\n            if (child) {\n                child.appendChild(newChild);\n            }\n            if (!parent) {\n                parent = newChild;\n            }\n            child = newChild\n            cItem = copy.pop();\n        }\n        if (parent) {\n            topParent.appendChild(parent);\n        } else {\n            child = topParent;\n        }\n        return [parent, child];\n    }\n\n    MergeContainerSettings(settings: AutomaticContainerSettings, container: BaseCardContainer)  {\n        const baseClasses = new Set(settings.classes); // Not needed atm\n        const baseStyleVars = settings[\"style-vars\"]\n        if(container.mobile) {\n            Object.entries(settings.mobile[\"style-vars\"]).forEach(([key, value]) => {\n                baseStyleVars[key] = value;\n            })\n        }\n        return {\n            classes: [...baseClasses],\n            styleVars: baseStyleVars\n        }\n    }\n\n    public CreateRenderedCards(levels: CardDataLevelMap, context: CardContainerContext, container: BaseCardContainer): TemplateResult<1> | undefined {\n        this.createDisplayElements(levels, context, container);\n\n        const filled = this.Elements.length > 0;\n        const alwaysFire = !(container.events[\"fill-state-on-change\"] ?? false);\n        if (alwaysFire || filled !== this._wasFilled) {\n            if (!alwaysFire) this._wasFilled = filled;\n            const fillStateEvents = filled ? container.events[\"fill-state-filled\"] : container.events[\"fill-state-empty\"];\n            if (fillStateEvents != undefined) {\n                window.dispatchEvent(new EventHandlerDispatchEvent({\n                    async: false,\n                    events: fillStateEvents\n                }));\n            }\n        }\n\n        if (filled == false) {\n            container.classList.add(\"empty\");\n        } else if (container.Settings.Behaviour[\"single-card-hide\"] && this.Elements.length < 2) {\n            container.classList.add(\"empty\");\n        } else {\n            container.classList.remove(\"empty\");\n        }\n\n        const mergedSettings = this.MergeContainerSettings(context.settings.AutomaticContainer, container);\n\n        const containerTag = container.mobile ? context.settings.AutomaticContainer.mobile.tag : context.settings.AutomaticContainer.tag;\n        const containerClasses = mergedSettings.classes\n        const containerStyleVars = mergedSettings.styleVars\n        const subContainers = (container.mobile ? context.settings.AutomaticContainer.mobile[\"subContainer\"] : context.settings.AutomaticContainer[\"subContainer\"]) || [];\n        const properties = (container.mobile ? context.settings.AutomaticContainer.mobile[\"properties\"] : context.settings.AutomaticContainer[\"properties\"]) || [];\n        const containerStyleVarsKeys = Object.keys(containerStyleVars);\n\n        const containerElement = document.createElement(containerTag);\n        containerElement.classList.add(...containerClasses);\n        containerElement.style.boxSizing = \"border-box\";\n        containerStyleVarsKeys.forEach(key=>{\n            if (key.startsWith(\"--\")) {\n                containerElement.style.setProperty(key, containerStyleVars[key]);\n            }\n        });\n\n        if (levels.size === 1) {\n            const onlyKey = levels.keys().next().value;\n            if (onlyKey != undefined) {\n                const onlyLevel = levels.get(onlyKey);\n                const styleKey = onlyLevel?.additional?.[\"style-type\"] as string | undefined;\n                const activeLevelVars = context.settings.Levels[\"style-vars\"][onlyKey]\n                    ?? (styleKey ? context.settings.Levels[\"style-vars\"][styleKey] : undefined);\n                if (activeLevelVars) {\n                    Object.keys(activeLevelVars).forEach(key => {\n                        if (key.startsWith(\"--\")) {\n                            containerElement.style.setProperty(key, activeLevelVars[key]);\n                        }\n                    });\n                }\n            }\n        }\n\n        this.loadProperties(properties, containerElement);\n\n        const [parent, child] = this.CreateSubContainers(subContainers, containerElement);\n        this.Elements.forEach(element => {\n            child?.appendChild(element);\n        });\n\n        let renderResult = undefined;\n        if (filled) {\n            renderResult = html`${containerElement}`;\n        }\n        return renderResult;\n    }\n\n    public TriggerCardClick(indexInList: number, ensureInactive: boolean) {\n        const cardelement = this.Elements.at(indexInList)\n        if (ensureInactive) {\n            if (cardelement?.classList.contains(\"active\")) {\n                return;\n            }\n        }\n        cardelement?.click();\n    }\n}\n\nexport class CardElementSliderFilterCreator extends CardElementCreator {\n    private dimensions = new Array<number>();\n    private activeDimensions = new Array<number>();\n\n    protected createDisplayElements(levels: CardDataLevelMap, context: CardContainerContext, container: CardContainerSliderFilterComponent): void {\n        this.dimensions = new Array<number>();\n        this.activeDimensions = new Array<number>();\n        for (const [key, level] of levels) {\n            for (const card of level.cards) {\n                if (card.click?.[\"level-key\"]) {\n                    const levelKey = +card.click?.[\"level-key\"];\n                    this.dimensions.push(levelKey);\n                    if (!card.disabled) {\n                        this.activeDimensions.push(levelKey);\n                    }\n                }\n            }\n        }\n        if (this.dimensions.length == 0 && this.activeDimensions.length == 0) {\n            this.displayElements = new Array<HTMLElement>();\n            return;\n        }\n        if (container.useCards !== undefined && container.useCards === true) {\n            return super.createDisplayElements(levels, context, container);\n        }\n        this.displayElements = new Array<HTMLElement>();\n        this.displayElements.push(container.getBaseSliderState(this.dimensions, this.activeDimensions));\n        return;\n    }\n\n    public get Dimensions(): Array<number> {\n        return this.dimensions;\n    }\n\n    public get ActiveDimensions(): Array<number> {\n        return this.activeDimensions;\n    }\n}\n\nexport class CardElementAccordionCreator extends CardElementCreator {\n    private _internalContainers = new InternalCardContainerList();\n\n    protected pushCardElementToInterimArray(displayElements: Array<HTMLElement>, card: CardData | null, context: CardContainerContext, container: CardAccordionContainerComponent): void {\n        if (card == undefined) return;\n        const cardElement = this.createCard(card, context, container);\n        if (cardElement == undefined) return;\n        cardElement.slot = \"header\";\n\n        const id = card.click && card.click[\"level-key\"] ? card.click[\"level-key\"] + \"\" : \"\";\n        const details = {\n            tag: container.cardContainersToCreate.tag,\n            settings: container.cardContainersToCreate.settings,\n            \"fetch-parameters\": container.cardContainersToCreate[\"fetch-parameters\"] != undefined ? container.cardContainersToCreate[\"fetch-parameters\"] : undefined,\n            \"style-vars\": container.cardContainersToCreate[\"style-vars\"] != undefined ? container.cardContainersToCreate[\"style-vars\"] : {},\n            modules: container.cardContainersToCreate.modules != undefined ? container.cardContainersToCreate.modules : [],\n            classes: container.cardContainersToCreate.classes != undefined ? container.cardContainersToCreate.classes : [],\n            \"slot-name\": container.overwriteToggleContainerSlotName\n        };\n        let _container = this._internalContainers.Get(id);// get cached element\n        if (_container == undefined) {\n            _container = this._internalContainers.Add(id, card, details);\n        } else {// update existing\n            this._internalContainers.Update(_container, card, details);\n        }\n\n        if (_container != undefined && !(_container instanceof HTMLSlotElement)) {\n            (_container as BaseCardContainer).ShowIdSlot = true;\n        }\n\n        const levelIdentifier = card.click && card.click[\"level-key\"] ? card.click[\"level-key\"] + \"\" : \"no-level\";\n        const item = document.createElement(\"fv-accordion-item\") as AccordionItemComponent;\n        item.allowCloseOfForcedOpen = true;\n        item.headerAsSlot = true;\n        item.AddHeaderClickDefer(async () => {\n            await CardDataService.WaitForAllCardContainerFetchPromises();\n        });\n        item.setAttribute(\"level-identifier\", levelIdentifier);\n        if (card.image) {\n            item.Image = card.image.prefix + card.image.file;\n        }\n        item.appendChild(cardElement);\n        if (_container != undefined) {\n            item.appendChild(_container);\n        }\n        if (levelIdentifier == container.Open) {\n            item.forcedOpen = true;\n            item.AddConnectedCallbackAction(async () => {\n                item.forceOpen();\n            });\n        }\n        displayElements.push(item);\n    }\n\n    public TriggerCardClick(indexInList: number, ensureInactive: boolean) {\n        const item = this.Elements.at(indexInList);\n        if (ensureInactive) {\n            if ((item as AccordionItemComponent).isActive) {\n                return;\n            }\n        }\n        const card = item?.querySelector('[slot=\"header\"]') as HTMLElement | undefined;\n        card?.click();\n    }\n}\n","import {ComponentService, ComponentServiceSearchParams} from \"../../../../utils/component.service\";\nimport {FilterSelectionData} from \"../../../../models/card-container\";\nimport type {BaseCardContainer} from \"../base/base-card-container\";\n\n\nexport class CardContainerStates {\n    //       _        _\n    //   ___| |_ __ _| |_ ___  ___\n    //  / __| __/ _` | __/ _ \\/ __|\n    //  \\__ \\ || (_| | ||  __/\\__ \\\n    //  |___/\\__\\__,_|\\__\\___||___/\n    private _selectedFilters = new Array<FilterSelectionData>();\n    private _useExternalFilters = false;\n    private _suspendingDisableSource = false;\n    private _preventAppConnectionClick = false;\n    private _unrenderedFetch = false;\n    private _handleAppConnectionPlanningSituationState = false;\n\n\n    //   _       _                        _                   _       _     _\n    //  (_)_ __ | |_ ___ _ __ _ __   __ _| | __   ____ _ _ __(_) __ _| |__ | | ___  ___\n    //  | | '_ \\| __/ _ \\ '__| '_ \\ / _` | | \\ \\ / / _` | '__| |/ _` | '_ \\| |/ _ \\/ __|\n    //  | | | | | ||  __/ |  | | | | (_| | |  \\ V / (_| | |  | | (_| | |_) | |  __/\\__ \\\n    //  |_|_| |_|\\__\\___|_|  |_| |_|\\__,_|_|   \\_/ \\__,_|_|  |_|\\__,_|_.__/|_|\\___||___/\n    private _container: BaseCardContainer | undefined = undefined;\n\n    //            _   _               ___                _   _\n    //   ___  ___| |_| |_ ___ _ __   ( _ )     __ _  ___| |_| |_ ___ _ __\n    //  / __|/ _ \\ __| __/ _ \\ '__|  / _ \\/\\  / _` |/ _ \\ __| __/ _ \\ '__|\n    //  \\__ \\  __/ |_| ||  __/ |    | (_>  < | (_| |  __/ |_| ||  __/ |\n    //  |___/\\___|\\__|\\__\\___|_|     \\___/\\/  \\__, |\\___|\\__|\\__\\___|_|\n    //                                        |___/\n    public set SuspendDisableSource(value: boolean) {\n        this._suspendingDisableSource = value;\n    }\n\n    public get SuspendDisableSource(): boolean {\n        return this._suspendingDisableSource;\n    }\n\n    public get SelectedFilters(): Array<FilterSelectionData> {\n        return this._selectedFilters;\n    }\n\n    public set SelectedFilters(value: Array<FilterSelectionData>) {\n        this._selectedFilters = value.map(f => ({\n            filter: [...f.filter],\n            strategy: f.strategy,\n            priority: f.priority,\n            \"additional-params\": f[\"additional-params\"]\n        }));\n        this._useExternalFilters = true;\n    }\n\n    public set PreventAppConnectionClick(value: boolean) {\n        this._preventAppConnectionClick = value;\n    }\n\n    public get PreventAppConnectionClick(): boolean {\n        return this._preventAppConnectionClick;\n    }\n\n    public set UnrenderedFetch(value: boolean) {\n        this._unrenderedFetch = value;\n    }\n\n    public get UnrenderedFetch(): boolean {\n        return this._unrenderedFetch;\n    }\n\n    public set HandleAppConnectionPlanningSituationState(value: boolean) {\n        this._handleAppConnectionPlanningSituationState = value;\n    }\n\n    public get HandleAppConnectionPlanningSituationState(): boolean {\n        return this._handleAppConnectionPlanningSituationState;\n    }\n\n\n    //                       _                   _\n    //    ___ ___  _ __  ___| |_ _ __ _   _  ___| |_ ___  _ __\n    //   / __/ _ \\| '_ \\/ __| __| '__| | | |/ __| __/ _ \\| '__|\n    //  | (_| (_) | | | \\__ \\ |_| |  | |_| | (__| || (_) | |\n    //   \\___\\___/|_| |_|___/\\__|_|   \\__,_|\\___|\\__\\___/|_|\n    constructor(container: BaseCardContainer) {\n        this._container = container;\n    }\n\n    //         _   _                                _   _               _\n    //    ___ | |_| |__   ___ _ __   _ __ ___   ___| |_| |__   ___   __| |___\n    //   / _ \\| __| '_ \\ / _ \\ '__| | '_ ` _ \\ / _ \\ __| '_ \\ / _ \\ / _` / __|\n    //  | (_) | |_| | | |  __/ |    | | | | | |  __/ |_| | | | (_) | (_| \\__ \\\n    //   \\___/ \\__|_| |_|\\___|_|    |_| |_| |_|\\___|\\__|_| |_|\\___/ \\__,_|___/\n    private get FilterSourceSelectors(): Array<ComponentServiceSearchParams> | undefined {\n        if (this._container == undefined) return undefined;\n        if (this._container.mobile && this._container.Settings.Filter.mobile && this._container.Settings.Filter.mobile[\"source-elements-selectors\"] && this._container.Settings.Filter.mobile[\"source-elements-selectors\"].length > 0) {\n            return this._container.Settings.Filter.mobile[\"source-elements-selectors\"];\n        }\n        return this._container.Settings.Filter[\"source-elements-selectors\"];\n    }\n\n    public ReadSelectedFiltersFromTargets(): void {\n        if (this._container == undefined) return;\n        if (this._useExternalFilters) return;\n\n        this._selectedFilters = new Array<FilterSelectionData>();\n        if (this._container.Settings.Filter == undefined || this._container.Settings.Filter[\"source-elements-selectors\"] == undefined) return;\n\n\n        const selectors = this.FilterSourceSelectors;\n        if (selectors == undefined) return;\n\n        let prio = 0;\n        for (const selector of selectors) {\n            const targets = ComponentService.findAll(selector.tag, selector.query);\n            for (const target of targets) {\n                const targetAsBase = target as BaseCardContainer;\n                if (targetAsBase == undefined || targetAsBase.Filter == undefined) continue;// skip elements that do not act as filters / could not be found\n\n                if (this._container.Settings.Filter[\"determine-priorities-by-suspended-disable-sources\"]) {\n                    targetAsBase.Filter.Prio = targetAsBase.States.SuspendDisableSource ? 1 : 0;\n                }\n\n                const targetFilter = targetAsBase.Filter;\n                if (targetFilter == undefined || targetFilter.Filter == undefined || targetFilter.Filter.length < 1) continue;\n\n                this._selectedFilters.push({\n                    filter: targetFilter.Filter,\n                    strategy: targetFilter.Strategy,\n                    priority: targetFilter.Prio != undefined ? targetFilter.Prio : prio++,\n                    \"additional-params\": targetFilter.AdditionalParams ? targetFilter.AdditionalParams : undefined\n                });\n            }\n        }\n    }\n\n    public ResetSelectedFilters(): void {\n        this._selectedFilters = new Array<FilterSelectionData>();\n        this._useExternalFilters = false;\n    }\n}\n","import { UpdateAdditionalDataEvent } from \"../../../../models/card-container\";\nimport type { BaseCardContainer } from \"../base/base-card-container\";\n\n\n\nexport class CardContainerAdditionalData {\n    private _data: {\n        [key: string]: unknown\n    } = {};\n    private _keys = new Array<string>();\n    private _container: BaseCardContainer | undefined = undefined;\n    constructor(cardContainer: BaseCardContainer) {\n        this._container = cardContainer;\n    }\n\n    public Exists(key: string): boolean {\n        return this._keys.includes(key);\n    }\n    public Set(key: string, value: unknown): void {\n        if (!this.Exists(key)) {\n            this._keys.push(key);\n        }\n        this._data[key] = value;\n    }\n    public Get(key: string, fallback: unknown): unknown {\n        this._container?.dispatchEvent(new UpdateAdditionalDataEvent(key, () => {}));\n        if (!this._keys.includes(key)) {\n            return fallback;\n        }\n        return this._data[key];\n    }\n    public Remove(key: string): void {\n        const index = this._keys.indexOf(key);\n        if (index > -1) {\n            this._keys.splice(index, 1);\n            delete this._data[key];\n        }\n    }\n    public Reset(): void {\n        this._keys = new Array<string>();\n        this._data = {};\n    }\n}\n","import { PropertyValueMap, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { AsyncBaseElement, FetchParameters } from \"../../base/async.base.component\";\nimport { BaseCard, CardClickEventInit } from \"../../cards/base/base.card\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport { CardData, CardDataLevelKey, CardDataLevelMap, CardContainerContext, FetchResult, CardContainerCustomEvents, CardContainerPreFillEvent, CardContainerPostFillEvent, UpdatedEvent, CardDataUpdateEvent, CardContainerUpdate, CardContainerEvents, CardContainerBackToStartEventInit, CardContainerTriggerCardClickEventInit, UpdateAdditionalDataEventInit, CardContainerAsyncEventDispatcher, CardContainerBaseEventDetail, CardContainerAsyncEvent, CardContainerBaseEventInit, FIXED_CARD_CLICK_EVENTS_KEY, CARD_VIEW_KEY } from \"../../../../models/card-container/\";\nimport { CardElementCreator, CardContainerSettings, CardContainerFilterSelection, CardContainerStates, CardContainerAdditionalData } from \"../internals\";\nimport style from \"./base-card-container.sass?inline\";\nimport { EventHandlerEvent, EventHandlerDispatchEvent } from \"../../../../models/event-handler/event.handler.model\";\nimport { CardContainersSharedData, CardContainersShared } from \"../internals/card-containers-shared-data\";\nimport { CardContainerEventContainer, RefreshCardContainersParams } from \"../../../../utils/card-container-event.service\";\nimport type { ComponentStateHandlerMap } from \"../../../../models/event-handler/component-state-event\";\n\ndeclare global {\n    interface ComponentStates {\n        \"fv-card-container:set-show-before-slot\":          { state?: boolean };\n        \"fv-card-container:set-show-id-slot\":              { state?: boolean };\n        \"fv-card-container:reset-selection-result-filter\": Record<string, never>;\n        \"fv-card-container:clear\":                         Record<string, never>;\n        \"fv-card-container:refetch\":                       { \"clear-cache\"?: boolean };\n        \"fv-card-container:click-card\":                    { indexInList?: number; \"ensure-inactive\"?: boolean };\n        \"fv-card-container:retrigger-single-entry-skip\":   Record<string, never>;\n    }\n}\n\n\nexport type RefreshCardDataResult = \"changed\" | \"unchanged\" | \"invalid\";\n\nexport abstract class BaseCardContainer extends AsyncBaseElement<FetchParameters, FetchResult> {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    // Per-target card-container states (migrated from CardContainerEventContainer).\n    // Routing resolves the tag/query target; each instance acts on itself.\n    stateHandlers: ComponentStateHandlerMap = {\n        \"fv-card-container:set-show-before-slot\": ({ state }) => { this.ShowBeforeSlot = state; },\n        \"fv-card-container:set-show-id-slot\": ({ state }) => { this.ShowIdSlot = state; },\n        \"fv-card-container:reset-selection-result-filter\": () => {\n            if (this.Filter != undefined) this.Filter.Reset(true, this.Context);\n        },\n        \"fv-card-container:clear\": () => {\n            if (this.Filter) this.Filter.Reset(true, this.Context);\n            this.requestUpdate();\n        },\n        \"fv-card-container:refetch\": (data) => {\n            const previousValue = this.Context?.settings?.Fetch?.parameters[\"clear-cache\"];// usually undefined; intended\n            if (data[\"clear-cache\"]) this.Context.settings.Fetch.parameters[\"clear-cache\"] = true;\n            this.Refetch().then(() => {\n                if (data[\"clear-cache\"]) this.Context.settings.Fetch.parameters[\"clear-cache\"] = previousValue;\n            });\n        },\n        \"fv-card-container:click-card\": (data) => {\n            if (data.indexInList == undefined) return;\n            this.TriggerCardClick(data.indexInList, data[\"ensure-inactive\"] as boolean);\n        },\n        \"fv-card-container:retrigger-single-entry-skip\": () => {\n            // Duck-typed: only RootLevelSelectionCardContainerComponent implements this.\n            const self = this as unknown as { ReTriggerSingleEntrySkip?: () => void };\n            if (self.ReTriggerSingleEntrySkip) self.ReTriggerSingleEntrySkip();\n        },\n    };\n\n    //                                   _   _\n    //   _ __  _ __ ___  _ __   ___ _ __| |_(_) ___  ___\n    //  | '_ \\| '__/ _ \\| '_ \\ / _ \\ '__| __| |/ _ \\/ __|\n    //  | |_) | | | (_) | |_) |  __/ |  | |_| |  __/\\__ \\\n    //  | .__/|_|  \\___/| .__/ \\___|_|   \\__|_|\\___||___/\n    //  |_|             |_|\n    @property({ type: Object, reflect: false, attribute: \"settings\" })// PH ensure legacy jsons, that set the settings attribute continue to work!\n    public set _legacysettigns(value: unknown) {\n        console.warn(\"BaseCardContainer> settings attribute is deprecated! use fetch-parameters instead!\");\n        this.FetchParameters = value as FetchParameters;\n        // this.Refetch(); //PH [2026|June|26] - removed unnecessary refetch. It already gets triggered in the FetchParameters setter if the value was different!\n    }\n    @property({ type: Object, reflect: false, attribute: \"events\" })\n    public events: CardContainerCustomEvents = {};\n\n    @property({ type: Boolean, reflect: true, attribute: \"refetch-on-click\" })\n    public refetchOnClick = false;\n\n\n    @property({ type: Boolean, reflect: true, attribute: \"trigger-refresh-on-click\" })\n    public refreshOnClick = false;// disabled by default, since card containers that change their hideState refresh(filter) by default\n\n    @property({type: Boolean, reflect: true, attribute: \"reset-fill-state-on-hide\"})\n    public resetFillStateOnHide = false;\n\n    //                         _\n    // _ __ ___   ___ _ __ ___ | |__   ___ _ __ ___\n    // | '_ ` _ \\ / _ \\ '_ ` _ \\| '_ \\ / _ \\ '__/ __|\n    // | | | | | |  __/ | | | | | |_) |  __/ |  \\__ \\\n    // |_| |_| |_|\\___|_| |_| |_|_.__/ \\___|_|  |___/\n    //private\n    private showBeforeSlot = true;\n    public set ShowBeforeSlot(state: boolean | undefined) {\n        if (state == undefined) return;\n        this.showBeforeSlot = state;\n    }\n    public get ShowBeforeSlot(): boolean {\n        return this.showBeforeSlot;\n    }\n\n    private showIdSlot = false;\n    public set ShowIdSlot(state: boolean | undefined) {\n        if (state == undefined) return;\n        this.showIdSlot = state;\n    }\n    public get ShowIdSlot(): boolean {\n        return this.showIdSlot;\n    }\n\n    // protected\n    protected lastClickedCard: CardData | undefined = undefined;\n    protected filter: CardContainerFilterSelection | undefined = undefined;// dynamic Filter. Another possibility to filter is through the settings-json\n    protected settings: CardContainerSettings;\n    protected cardCreator = new CardElementCreator();\n    protected states = new CardContainerStates(this);\n    protected cardData: CardDataLevelMap | undefined = undefined;\n    protected filteredFetchResult: FetchResult | undefined = undefined;\n    protected additionalData = new CardContainerAdditionalData(this);\n    protected static shared: CardContainersSharedData = CardContainersShared;\n\n\n    //                       _                   _                                               _   _                                    _\n    //    ___ ___  _ __  ___| |_ _ __ _   _  ___| |_ ___  _ __    ___ ___  _ __  _ __   ___  ___| |_(_) ___  _ __     _____   _____ _ __ | |_ ___\n    //   / __/ _ \\| '_ \\/ __| __| '__| | | |/ __| __/ _ \\| '__|  / __/ _ \\| '_ \\| '_ \\ / _ \\/ __| __| |/ _ \\| '_ \\   / _ \\ \\ / / _ \\ '_ \\| __/ __|\n    //  | (_| (_) | | | \\__ \\ |_| |  | |_| | (__| || (_) | |_   | (_| (_) | | | | | | |  __/ (__| |_| | (_) | | | | |  __/\\ V /  __/ | | | |_\\__ \\\n    //   \\___\\___/|_| |_|___/\\__|_|   \\__,_|\\___|\\__\\___/|_( )   \\___\\___/|_| |_|_| |_|\\___|\\___|\\__|_|\\___/|_| |_|  \\___| \\_/ \\___|_| |_|\\__|___/\n    //                                                     |/\n    constructor(observeLocales = true) {\n        super();\n        this.baseOptions.registerLocalesModel = observeLocales;\n        BaseCardContainer.shared.AddTagName(this.tagName);\n        this.addEventListener(\"cardclick\", (event: CardClickEventInit) => {\n            const data = event.detail?.data;\n            if (data == undefined) return;\n\n            // Fixed-card clicks fire their own clickEvents instead of triggering navigation.\n            const fixedEvents = data.additional?.[FIXED_CARD_CLICK_EVENTS_KEY] as EventHandlerEvent[] | undefined;\n            if (Array.isArray(fixedEvents) && fixedEvents.length > 0) {\n                window.dispatchEvent(new EventHandlerDispatchEvent({async: false, events: fixedEvents}));\n                return;\n            }\n\n            if (data.click) {\n                this.lastClickedCard = data;\n                this.Select(data);\n            }\n\n            if (this.events[\"card-clicked\"]) {\n                window.dispatchEvent(new EventHandlerDispatchEvent({ async: false, events: this.events[\"card-clicked\"] }));\n            }\n        });\n\n        this.addEventListener(CardContainerEvents.Back, () => {\n            if (this.lastClickedCard?.click) {\n                this.filter?.Remove(this.lastClickedCard.click[\"level-key\"]);\n            }\n            this.hideElement = false;\n        });\n\n        this.addEventListener(CardContainerEvents.UpdateAdditionalData, (event: UpdateAdditionalDataEventInit) => {\n            if (event.detail == undefined) return;\n            if (this.lastClickedCard?.txt == undefined) return;\n\n            const title = this.lastClickedCard.txt[\"title\"] ?? Object.values(this.lastClickedCard.txt).at(0);\n            if (title) {\n                this.AdditionalData.Set(event.detail.key, title);\n                this.Dispatcher.callPostEvent(event);\n            }\n        });\n\n        this.addHideStateUpdatedEventListener((hidden: boolean, parentStateChanged: boolean) => {\n            if (this.events[\"hide-show-ignore-parent-change\"] == true && parentStateChanged) {\n                return;\n            }\n\n            if (this.events[\"hide-show-only-after-first-fill\"]) {\n                if (this.LastRenderResult == undefined) return;\n            }\n\n            const dispatch = (events: Array<EventHandlerEvent> | undefined)=>{\n                if (events == undefined) return;\n                window.dispatchEvent(new EventHandlerDispatchEvent({\n                    async: false,\n                    events: events\n                }));\n            };\n\n            if (this.resetFillStateOnHide && hidden) {\n                this.cardCreator.ResetFillState(); // ensure fill-state events re-fire on the next show\n            }\n\n            // if (this.events.hide || this.events.show) {\n            //     dispatch(hidden ? this.events.hide : this.events.show);\n            // }\n            if (this.events.hide || this.events.show) {\n                if (this.events[\"hide-show-skip-if-self-hidden\"] && parentStateChanged && !hidden && this.hideElement) {\n                    // Parent became visible but this element is still hidden - skip show events\n                } else {\n                    dispatch(hidden ? this.events.hide : this.events.show);\n                }\n            }\n\n            if (!hidden) {\n                CardDataService.CheckUpdate(CardDataUpdateEvent.CardContainerVisible, {}, this.Context).then(async (update) => {\n                    await this.CheckUpdate(update, true);\n                });\n            }\n        });\n\n        this.settings = new CardContainerSettings();\n\n        this.addEventListener(CardContainerEvents.BackToStart, (event: CardContainerBackToStartEventInit)=>{\n            this.filter?.Clear();\n            //this.hideElement = false;\n            CardDataService.WaitForAllCardContainerFetchPromises().then(async ()=>{\n                await CardContainerEventContainer.RefreshAll({\n                    includeHidden: true,\n                    refetch: false // PH [2026|June|18] - according to claude this wont break anything. Hope that holds true\n                });\n                CardContainerEventContainer.RefreshBackButtons();\n                await CardDataService.WaitForAllCardContainerFetchPromises();\n                event.detail?.[\"post-event\"]();\n            });\n        });\n\n        this.addEventListener(CardContainerEvents.TriggerCardClick, async (event: CardContainerTriggerCardClickEventInit)=>{\n            if (event.detail == undefined || event.detail[\"keys-to-open\"] == undefined) {\n                return;\n            }\n            await CardDataService.WaitForAllCardContainerFetchPromises();\n\n            for (const levelKeyToOpen of event.detail[\"keys-to-open\"]) {\n                const cardElements = this.renderRoot.querySelectorAll(this.Settings.Card.tag);\n                cardElements.forEach(element => {\n                    if (element instanceof BaseCard) {\n                        if (element.data.click == undefined) return;\n                        if (element.data.click[\"level-key\"] != levelKeyToOpen) return;\n                        element.click();\n                    }\n                });\n            }\n\n            await CardDataService.WaitForAllCardContainerFetchPromises();\n\n            if (event.detail?.[\"post-event\"]) {\n                event.detail?.[\"post-event\"]();\n            }\n        });\n\n\n        this.addEventListener(\"modifyhideelement\", (event: CustomEventInit)=>{\n            if (event.detail == undefined) {\n                return;\n            }\n            this.hideElement = event.detail;\n        });\n    }\n\n    connectedCallback(): void {\n        super.connectedCallback();\n        CardDataService.Register(this);\n\n        this.settings.Initialize(this.FetchParameters);\n        this.Filter?.Init(this.Context);\n\n        if (this.Filter != undefined) {\n            CardDataService.InitFilterSelectionParams(this.Context);\n        }\n    }\n\n    disconnectedCallback(): void {\n        super.disconnectedCallback();\n        CardDataService.Remove(this);\n    }\n\n    isEmpty() {\n        return this.classList.contains(\"empty\");\n    }\n\n\n\n    //    ____ _____ _____ _____ _____ ____\n    //   / ___| ____|_   _|_   _| ____|  _ \\\n    //  | |  _|  _|   | |   | | |  _| | |_) |\n    //  | |_| | |___  | |   | | | |___|  _ <\n    //   \\____|_____| |_|   |_| |_____|_| \\_\\\n    public static get Shared(): CardContainersSharedData {\n        return BaseCardContainer.shared;\n    }\n    public get FilteredFetchResult(): FetchResult | undefined {\n        return this.filteredFetchResult;\n    }\n    public get CardData(): CardDataLevelMap | undefined {\n        return this.cardData;\n    }\n    public get RootLevelCardCount(): number {\n        let count = 0;\n        const cardData = this.CardData;\n        if (cardData == undefined) return count;\n        const rootLevel = cardData.get(this.Settings.Fetch[\"root-level\"]);\n        if (rootLevel) {\n            count += rootLevel.cards.length;\n        }\n        return count;\n    }\n    public get Settings(): CardContainerSettings {\n        return this.settings;\n    }\n    public get Filter(): CardContainerFilterSelection | undefined {\n        return this.filter;\n    }\n    public get States(): CardContainerStates {\n        return this.states;\n    }\n    public get AdditionalData(): CardContainerAdditionalData {\n        return this.additionalData;\n    }\n    public get LastClicked(): CardData | undefined {\n        return this.lastClickedCard;\n    }\n\n\n    private _dispatcher: CardContainerAsyncEventDispatcher | undefined = undefined;\n    public get Dispatcher(): CardContainerAsyncEventDispatcher {\n        if (this._dispatcher === undefined) {\n            this._dispatcher = new CardContainerAsyncEventDispatcher(this.dispatchEvent.bind(this));\n        }\n        return this._dispatcher;\n    }\n    private _context: CardContainerContext | undefined = undefined;\n    public get Context(): CardContainerContext {\n        if (this._context === undefined) {\n            this._context = {\n                settings: this.Settings,\n                states: this.States,\n                filter: this.Filter,\n                cards: this.CardData,\n                dispatchAsyncEvent: async (eventFactory: (resolve: () => Promise<void> | void) => Event) => this.Dispatcher.dispatch(eventFactory),\n                dispatchEvent: (event: Event) => this.dispatchEvent(event)\n            };\n            return this._context;\n        }\n\n        this._context.filter = this.Filter;\n        this._context.cards = this.CardData;\n        // this.Settings, this.States & this.Filter allways represent the same objects and never are reassigend (yet)\n        // if that changes these also need to be reset here!\n        return this._context;\n    }\n\n\n    //   ____  _____ _   _ ____  _____ ____\n    //  |  _ \\| ____| \\ | |  _ \\| ____|  _ \\\n    //  | |_) |  _| |  \\| | | | |  _| | |_) |\n    //  |  _ <| |___| |\\  | |_| | |___|  _ <\n    //  |_| \\_\\_____|_| \\_|____/|_____|_| \\_\\\n    protected async Fetch(parameters: FetchParameters): Promise<FetchResult | undefined> {\n        this.states.UnrenderedFetch = true;\n        this.Settings.parameters = parameters;\n        this.States.ReadSelectedFiltersFromTargets();\n        return await CardDataService.Fetch(this.Context);\n    }\n    protected CreateCards(result: FetchResult): CardDataLevelMap {\n        if (!this.states.UnrenderedFetch) {\n            this.States.ReadSelectedFiltersFromTargets();\n        }\n        this.states.UnrenderedFetch = false;\n        this.filteredFetchResult = CardDataService.Filter(result, this.Context, this.Filter == undefined ? new Array<CardDataLevelKey>() : this.Filter.Filter);\n        return CardDataService.CreateCards(this.filteredFetchResult, this.Context);\n    }\n    protected RefreshCardData(result: FetchResult | undefined): RefreshCardDataResult {\n        if (result == undefined) {\n            return \"invalid\";\n        }\n\n        const previousCardData = this.cardData;\n        this.cardData = this.CreateCards(result);\n        this.InjectFixedCards();\n        if (this.Filter != undefined) {\n            this.Filter.PurgeRemovedCards(this.cardData);\n        }\n\n        // Content compare (not reference): if the cards to display are identical to what is already\n        // rendered, skip the DOM rebuild. furnplan re-fires many events per action and often returns\n        // the same data; the old `old == this.cardData` check compared a freshly-built Map by\n        // reference and so never matched, making this skip-path dead code.\n        if (previousCardData != undefined && this.CardDataEquals(previousCardData, this.cardData)) {\n            this.cardData = previousCardData;// identical output — keep the stable reference and skip rendering\n            return \"unchanged\";\n        }\n        return \"changed\";\n    }\n\n    // Structural equality of two card-data maps with cheap short-circuits and first-difference\n    // early-exit. Far cheaper than serializing the whole graph: most real changes differ in level\n    // count, a level title, or a card count and bail before any deep recursion.\n    private CardDataEquals(previous: CardDataLevelMap, next: CardDataLevelMap): boolean {\n        if (previous === next) {\n            return true;\n        }\n        if (previous.size !== next.size) {\n            return false;\n        }\n        for (const [levelKey, previousLevel] of previous) {\n            const nextLevel = next.get(levelKey);\n            if (nextLevel == undefined) {\n                return false;\n            }\n            if (previousLevel.title !== nextLevel.title) {\n                return false;\n            }\n            if (previousLevel.cards.length !== nextLevel.cards.length) {\n                return false;\n            }\n            for (let cardIndex = 0; cardIndex < previousLevel.cards.length; cardIndex++) {\n                if (!BaseCardContainer.DeepEquals(previousLevel.cards[cardIndex], nextLevel.cards[cardIndex])) {\n                    return false;\n                }\n            }\n            if (!BaseCardContainer.DeepEquals(previousLevel.additional, nextLevel.additional)) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    // Generic structural equality for plain (JSON-like) data with first-difference early-exit.\n    // Static so there is no per-instance closure. CardData is plain data (no functions/Dates), so\n    // primitive/array/object handling is sufficient; functions/class instances would compare unequal\n    // unless identical by reference, which only ever errs toward rendering (never a false skip).\n    private static DeepEquals(valueA: unknown, valueB: unknown): boolean {\n        if (valueA === valueB) {\n            return true;\n        }\n        if (valueA == undefined || valueB == undefined) {\n            return valueA === valueB;\n        }\n        if (typeof valueA !== \"object\" || typeof valueB !== \"object\") {\n            return false;\n        }\n\n        const valueAisArray = Array.isArray(valueA);\n        if (valueAisArray !== Array.isArray(valueB)) {\n            return false;\n        }\n        if (valueAisArray) {\n            const arrayA = valueA as Array<unknown>;\n            const arrayB = valueB as Array<unknown>;\n            if (arrayA.length !== arrayB.length) {\n                return false;\n            }\n            for (let index = 0; index < arrayA.length; index++) {\n                if (!BaseCardContainer.DeepEquals(arrayA[index], arrayB[index])) {\n                    return false;\n                }\n            }\n            return true;\n        }\n\n        const objectA = valueA as Record<string, unknown>;\n        const objectB = valueB as Record<string, unknown>;\n        const keysA = Object.keys(objectA);\n        const keysB = Object.keys(objectB);\n        if (keysA.length !== keysB.length) {\n            return false;\n        }\n        for (const key of keysA) {\n            if (!Object.prototype.hasOwnProperty.call(objectB, key)) {\n                return false;\n            }\n            if (!BaseCardContainer.DeepEquals(objectA[key], objectB[key])) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    /**\n     * Prepends `FixedCards.before` and appends `FixedCards.after` (from settings) to every level.\n     * Each fixed card's `clickEvents` are stashed on `data.additional` for the cardclick handler.\n     */\n    protected InjectFixedCards(): void {\n        if (this.cardData == undefined) return;\n        const fixed = this.Settings.FixedCards;\n        const before = fixed?.before ?? [];\n        const after = fixed?.after ?? [];\n        if (before.length === 0 && after.length === 0) return;\n\n        const decorate = (entry: {data: CardData; clickEvents: Array<EventHandlerEvent>; \"view-key\"?: string}): CardData => ({\n            ...entry.data,\n            additional: {\n                ...(entry.data.additional ?? {}),\n                [FIXED_CARD_CLICK_EVENTS_KEY]: entry.clickEvents,\n                ...(entry[\"view-key\"] ? {[CARD_VIEW_KEY]: entry[\"view-key\"]} : {}),\n            },\n        });\n\n        for (const level of this.cardData.values()) {\n            level.cards = [\n                ...before.map(decorate),\n                ...level.cards,\n                ...after.map(decorate),\n            ];\n        }\n    }\n\n    protected renderComplete(result: FetchResult | undefined, renderResult: TemplateResult<1> | undefined): TemplateResult<1> {\n        this.Dispatcher.dispatch(done => new CardContainerPreFillEvent(done));\n        if (result == undefined) {\n            return super.renderComplete(result, renderResult);\n        }\n\n        const refreshCardDataResult = this.RefreshCardData(result);\n        if (this.LastRenderResult && refreshCardDataResult == \"unchanged\") {\n            return this.LastRenderResult;// skip element creation, if cards did not change\n        }\n        if (this.cardData == undefined)\n        {\n            return super.renderComplete(result, renderResult);\n        }\n\n        console.log(\"rendering card container!\");\n        const renderedCards = this.cardCreator.CreateRenderedCards(this.cardData, this.Context, this);\n        return super.renderComplete(result, html`\n            <slot class=\"loader-slot\" name=\"loader\"></slot>\n            ${this.isEmpty() ? html`<slot class=\"empty-slot\" name=\"empty\"></slot>` : html``}\n            ${this.ShowBeforeSlot ? html`<slot class=\"before-slot\" name=\"before\"></slot>` : html``}\n            ${this.ShowIdSlot && this.id ? html`<slot class=\"id-slot\" name=\"${this.id}\"></slot>` : html``}\n            ${renderedCards}\n        `);\n    }// simply display the fetch result if not overloaded!\n\n    protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n        super.updated(_changedProperties);\n\n        window.dispatchEvent(new UpdatedEvent(()=>{}, this));\n        this.Dispatcher.dispatch(done => new CardContainerPostFillEvent(done));\n    }\n\n\n    protected async Select(data: CardData): Promise<void> {\n        // stub — override in subclasses to handle card selection\n    }\n\n    protected async TriggerRefreshIfEnabled(options: Omit<RefreshCardContainersParams, \"refetch\"> = {}): Promise<void> {\n        if (!this.refreshOnClick) return;\n        await CardContainerEventContainer.RefreshAll({ refetch: this.refetchOnClick, ...options });\n    }\n\n    public async CheckUpdate(update: CardContainerUpdate, updateNoneRenders: boolean = false): Promise<void> {\n        if (update == CardContainerUpdate.NONE) {\n            if (updateNoneRenders) {\n                this.requestUpdate();// trigger filter without fetch of content on open\n            }\n            return;\n        }\n\n        if (update == CardContainerUpdate.FETCH) {\n            // if (this.hideElement == false) {\n            this.Refetch();\n            return;\n            // }\n            // update = CardContainerUpdate.FILTER;\n        }\n\n        if (update == CardContainerUpdate.FILTER) {\n            this.States.ReadSelectedFiltersFromTargets();// re-read filters from other elements on show\n            this.requestUpdate();\n            return;\n        }\n    }\n\n    public get CardContainerView_BackButtonOverwrite() {\n        return false;\n    }\n\n    public TriggerCardClick(indexInList: number, ensureInactive: boolean): boolean { // negative index will count backwards!\n        if (this.RootLevelCardCount <= indexInList) {\n            return false;\n        }\n        this.cardCreator.TriggerCardClick(indexInList, ensureInactive);\n        return true;\n    }\n}\n","import {customElement, property} from \"lit/decorators.js\";\nimport {BaseCardContainer} from \"../base/base-card-container\";\nimport {css, unsafeCSS} from \"lit\";\nimport style from \"./card-container.component.sass?inline\";\nimport {CardContainerFilterSelection} from \"../internals\";\nimport {CardData} from \"../../../../models/card-container\";\n\n@customElement(\"fv-card-container\")\nexport class CardContainerComponent extends BaseCardContainer {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor(observeLocales = true) {\n        super(observeLocales);\n    }\n}\n\n@customElement(\"fv-filter-card-container\")\nexport class FilterCardContainerComponent extends BaseCardContainer {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n\n    @property({type: Boolean, reflect: true, attribute: \"handle-filters\"})\n    public handleFilters = false\n\n    constructor() {\n        super();\n        this.filter = new CardContainerFilterSelection();\n    }\n\n    protected override async Select(data: CardData) {\n        if (data.click && this.CardData && this.filter) {\n            if (this.handleFilters) {\n                this.filter.Toggle(data.click[\"level-key\"]);\n            }\n            await this.TriggerRefreshIfEnabled({ includeHidden: true, awaitFetches: false });\n        }\n    }\n\n}","import {css, PropertyValueMap, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport {BaseCardContainer} from \"../base/base-card-container\";\nimport {\n    CardContainerEvents,\n    CardData,\n    CardDataLevelKey,\n    CardDataLevelMap,\n    FetchResult,\n} from \"../../../../models/card-container\";\nimport {BaseElement, DhElement} from \"../../base/base.component\";\nimport {CardContainerFilterSelection} from \"../internals\";\nimport style from \"./root-level-selection-card-container.component.sass?inline\";\nimport {CardDataService} from \"../../../../utils/card.data.service\";\n\n\n@customElement(\"fv-root-level-selection-card-container\")\nexport class RootLevelSelectionCardContainerComponent extends BaseCardContainer {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({type: Boolean, reflect: true, attribute: \"do-not-fill-filter-from-next-level\"})\n    public doNotFillFilterFromNextLevel = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"allow-app-connection-click\"})\n    public allowAppConnectionClick = false;\n\n    @property({\n        reflect: true,\n        attribute: \"prevent-app-connection-click\",\n        converter: {\n            fromAttribute: (value: string | null): boolean | string[] => {\n                if (value === null || value === \"false\") return false;\n                if (value === \"\" || value === \"true\") return true;\n                try {\n                    return JSON.parse(value) as string[];\n                } catch {\n                    return false;\n                }\n            },\n            toAttribute: (value: boolean | string[]): string | null => {\n                if (typeof value === \"boolean\") return value ? \"\" : null;\n                return JSON.stringify(value);\n            }\n        }\n    })\n    public preventAppConnectionClick: boolean | string[] = this.allowAppConnectionClick;\n\n    @property({type: Boolean, reflect: true, attribute: \"skip-on-single-entry\"})\n    public skipOnSingleEntry = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"hide-active-root\"})\n    public hideActiveRootLevel = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"reset-active-root-on-filter-reset\"})\n    public resetActiveRootOnFilterReset = false;\n\n    @property({type: String, reflect: true, attribute: \"active-root-option\"})\n    private activeRootOption: CardDataLevelKey = \"\";\n\n    @property({type: Boolean, reflect: true, attribute: \"set-filter-from-root-level-selection\"})\n    setFilterFromRootLevelSelection = false;\n\n    private get ActiveRootOption() {\n        return this.activeRootOption;\n    }\n\n    private set ActiveRootOption(option: CardDataLevelKey) {\n        this.activeRootOption = option;\n        this.requestUpdate();\n    }\n\n\n    private resolvePreventAppConnectionClick(levelKey: CardDataLevelKey): boolean {\n        if(this.allowAppConnectionClick) {\n            return false;\n        }\n        if (Array.isArray(this.preventAppConnectionClick)) {\n            return (this.preventAppConnectionClick as string[]).includes(levelKey.toString());\n        }\n        return !(this.preventAppConnectionClick as boolean);\n    }\n\n    protected override async Select(data: CardData) {\n        if (data.click && this.CardData && this.filter) {\n            const previousLevelKey: CardDataLevelKey = data.click[\"previous-level-key\"];\n            const levelKey: CardDataLevelKey = data.click[\"level-key\"];\n            const nextLevelKey: CardDataLevelKey = data.click[\"next-level-key\"];\n\n            this.States.PreventAppConnectionClick = this.resolvePreventAppConnectionClick(levelKey);\n\n            if (levelKey == this.Settings.Fetch[\"root-level\"] || (this.Settings.Fetch[\"root-level\"] === previousLevelKey) && this.setFilterFromRootLevelSelection)  {\n                if (this.CardData && this.CardData.size < 2) {\n                    return;\n                }\n                const activeChanged = this.ActiveRootOption != nextLevelKey;\n                this.filter.Reset(true, this.Context);\n                this.ActiveRootOption = activeChanged ? nextLevelKey : \"\";\n\n                if (activeChanged) {\n                    if(this.setFilterFromRootLevelSelection){\n                        this.filter.Add(levelKey);\n                    }\n                    if (!this.doNotFillFilterFromNextLevel) {\n                        const levelToPushIntoSelectionResultFilter = this.CardData.get(nextLevelKey);\n                        if (levelToPushIntoSelectionResultFilter) {\n                            for (const card of levelToPushIntoSelectionResultFilter.cards) {\n                                if (card.click) {\n                                    this.filter.Add(card.click[\"level-key\"]);\n                                }\n                            }\n                        }\n                    }\n                }\n                await this.TriggerRefreshIfEnabled({includeHidden: false});\n            } else {\n                if (data.disabled == false || data.disabled == undefined) {\n                    this.filter.Toggle(levelKey);\n                    // await this.TriggerRefreshIfEnabled({includeHidden: false, awaitFetches: false});\n                    await this.TriggerRefreshIfEnabled({includeHidden: false, awaitFetches: true});\n                }\n            }\n        }\n    }\n\n    private async PurgeDisabledFromSelectionResultFilter(): Promise<void> {\n        await CardDataService.WaitForAllCardContainerFetchPromises();\n        this.CheckFetchPromise();\n        const filteredLevels = this.CardData;\n        if (filteredLevels && this.filter) {\n            for (const level of filteredLevels) {\n                for (const card of level[1].cards) {\n                    if (card.disabled && card.click && card.click[\"level-key\"]) {\n                        this.filter.Remove(card.click[\"level-key\"]);\n                    }\n                }\n            }\n        }\n    }\n\n\n    private skipped = false;\n    private TriggerSingleEntrySkipPromise: Promise<void> | undefined = undefined;\n\n    private async PerformSingleEntrySkip(): Promise<void> {\n        if (this.skipOnSingleEntry) {\n            if (!this.skipped) {\n                if (this.CardData?.size == 1) {\n                    const level = this.CardData.get(this.Settings.Fetch[\"root-level\"] as CardDataLevelKey);\n                    if (level?.cards.length == 1) {\n                        await CardDataService.WaitForAllCardContainerFetchPromises();\n                        this.skipped = true;\n\n                        const onlyKey = level.cards[0].click?.[\"level-key\"];\n                        if (onlyKey !== undefined && this.filter?.Contains(onlyKey)) {\n                            return; // already selected — auto-click would Toggle it OFF\n                        }\n\n                        const element = this.cardCreator.Elements.at(0);\n                        element?.click();\n                        await CardDataService.WaitForAllCardContainerFetchPromises();\n                    }\n                }\n            }\n        }\n    }\n\n    private async TriggerSingleEntrySkip(): Promise<void> {\n        if (this.TriggerSingleEntrySkipPromise != undefined) {\n            await this.TriggerSingleEntrySkipPromise;\n        }\n\n        if (!this.skipped) {\n            this.TriggerSingleEntrySkipPromise = this.PerformSingleEntrySkip();\n        }\n        await this.TriggerSingleEntrySkipPromise;\n        this.TriggerSingleEntrySkipPromise = undefined;\n    }\n\n    public async ReTriggerSingleEntrySkip() {\n        this.skipped = false;\n        this.requestUpdate();\n    }\n\n    constructor() {\n        super();\n\n        this.filter = new CardContainerFilterSelection();\n        this.States.PreventAppConnectionClick = !Array.isArray(this.preventAppConnectionClick) && !(this.preventAppConnectionClick as boolean);\n\n        this.addEventListener(CardContainerEvents.ResetFilter, () => {\n            if (this.resetActiveRootOnFilterReset) this.activeRootOption = \"\";\n        });\n\n        this.addEventListener(CardContainerEvents.CardContainerPostFill, () => {\n            const rootLevelKey = this.Settings.Fetch[\"root-level\"];\n            const levels = this.renderRoot.querySelectorAll(\"[level]\");\n            levels.forEach(level => {\n                const levelKey = level.getAttribute(\"level\");\n                if (levelKey == rootLevelKey) {\n                    if (this.activeRootOption !== levelKey && this.hideActiveRootLevel) {\n                        (level as DhElement).hideElement = this.ActiveRootOption != \"\";\n                    }\n                } else {\n                    (level as DhElement).hideElement = levelKey != this.ActiveRootOption;\n                }\n            });\n\n            this.PurgeDisabledFromSelectionResultFilter().then(async () => {\n                await this.TriggerSingleEntrySkip();\n            });\n        });\n    }\n\n    protected CreateCards(result: FetchResult): CardDataLevelMap {\n        const levels = super.CreateCards(result);\n        if (levels.size < 2) {\n            return levels;\n        }\n\n        const root = levels.get(this.settings.Fetch[\"root-level\"]);\n        if (root == undefined) return levels;\n        for (const card of root.cards) {\n            if (card.click == undefined) continue;\n            if (card.click[\"next-level-key\"] == this.ActiveRootOption) {\n                card.active = true;\n            }\n        }\n        return levels;\n    }\n\n    protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n        super.updated(_changedProperties);\n        if (!Array.isArray(this.preventAppConnectionClick)) {\n            this.States.PreventAppConnectionClick = !(this.preventAppConnectionClick as boolean);// update PreventAppConnectionClick on attribute changes\n        }\n    }\n}\n","import { customElement, property } from \"lit/decorators.js\";\nimport { BaseCardContainer } from \"../base/base-card-container\";\nimport {BaseElement, DhElement, IBaseElement} from \"../../base/base.component\";\nimport { BaseCard, CardClick, CardClickedEvent } from \"../../cards/base/base.card\";\nimport { CardContainerEvents, CardDataLevelKey, FilterSelectionStrategy } from \"../../../../models/card-container\";\nimport { ComponentServiceSearchParams } from \"../../../../utils/component.service\";\nimport { EventHandlerEvent, EventHandlerDispatchEvent } from \"../../../../models/event-handler/event.handler.model\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport { CardContainerEventContainer } from \"../../../../utils/card-container-event.service\";\nimport { FetchParameters } from \"../../base/async.base.component\";\nimport { CardElementAccordionCreator } from \"../internals\";\nimport { AccordionItemComponent } from \"../../../../components/standard/accordion\";\nimport {EventFactoryService} from \"@dh-software/webui-api\";\nimport {IModuleElement} from \"@dh-software/webui-configuration-parser\";\nimport {LitElement} from \"lit\";\n\n\n@customElement(\"fv-card-accordion-container\")\nexport class CardAccordionContainerComponent extends BaseCardContainer {\n    @property({ type: Boolean, reflect: true, attribute: \"last-clicked-is-selection-filter\" })\n    public lastClickedIsSelectionFilter = false;\n\n    @property({ type: String, reflect: false, attribute: \"overwrite-toggle-container-slot-name\" })\n    public overwriteToggleContainerSlotName = \"\";\n\n    @property({ type: Array, reflect: false, attribute: \"refresh-targets\" })\n    public refreshTargets = new Array<ComponentServiceSearchParams>();\n\n    @property({ type: Object, reflect: false, attribute: \"card-containers-to-create\" })\n    public cardContainersToCreate: {\n        tag: string,\n        settings: undefined | FetchParameters,\n        \"fetch-parameters\": undefined | FetchParameters,\n        \"style-vars\"?: { [styleVar: string]: string },\n        modules?: Array<IModuleElement>,\n        classes?: Array<string>\n    } = {\n        tag: \"\",\n        settings: undefined,\n        \"fetch-parameters\": undefined,\n        \"style-vars\": {},\n        modules: new Array<IModuleElement>(),\n        classes: new Array<string>()\n    };\n\n    @property({ type: Array, reflect: false, attribute: \"card-accordion-container-queries-to-close-on-open\" })\n    public cardContainersToCloseOnOpen = new Array<string>();\n\n    @property({ type: Object, reflect: false, attribute: \"card-accordion-events\" })\n    public cardAccordionEvents: {\n        \"on-close\"?: Array<EventHandlerEvent>,\n        \"on-open\"?: Array<EventHandlerEvent>,\n        \"on-last-po-loaded\"?: Array<EventHandlerEvent>\n    } = {};\n\n    @property({ type: String, reflect: false, attribute: \"card-to-open-after-fill\" })\n    public cardToOpenAfterFill = \"\";\n    private cardToOpenShowedOnce = false;\n\n\n    private open: CardDataLevelKey | undefined = undefined;\n    public get Open(): CardDataLevelKey | undefined {\n        return this.open;\n    }\n\n    private triggerCloseEvents(clickData: CardClick) {\n        if (this.cardAccordionEvents[\"on-close\"] == undefined) return;\n\n        this.cardAccordionEvents[\"on-close\"] = CardDataService.PrepareClickedCardEventsData(this.cardAccordionEvents[\"on-close\"], clickData);\n        window.dispatchEvent(new EventHandlerDispatchEvent({\n            async: false,\n            events: this.cardAccordionEvents[\"on-close\"]\n        }));\n    }\n    private triggerOpenEvents(clickData: CardClick) {\n        if (this.cardAccordionEvents[\"on-open\"] == undefined) return;\n\n        this.cardAccordionEvents[\"on-open\"] = CardDataService.PrepareClickedCardEventsData(this.cardAccordionEvents[\"on-open\"], clickData);\n        window.dispatchEvent(new EventHandlerDispatchEvent({\n            async: false,\n            events: this.cardAccordionEvents[\"on-open\"]\n        }));\n    }\n\n\n    constructor() {\n        super();\n        this.cardCreator = new CardElementAccordionCreator();\n\n        this.addEventListener(\"cardclicked\", async (event: CustomEventInit)=>{\n            if (event == undefined) return;\n\n            const cardClickEvent = event as CardClickedEvent;\n            if (cardClickEvent.target && cardClickEvent.target != this) {\n                return; // PH [2024|March|20] - only handle click to own cards...\n            }\n\n            if (cardClickEvent.detail && cardClickEvent.detail.data && cardClickEvent.detail.data.click && cardClickEvent.detail.data.click[\"level-key\"]) {\n                if (this.open == cardClickEvent.detail.data.click[\"level-key\"]) {\n                    this.open = undefined;\n                    this.triggerCloseEvents(cardClickEvent.detail.data.click);\n                }\n                else {\n                    this.open = event.detail.data.click[\"level-key\"];\n                    this.triggerOpenEvents(cardClickEvent.detail.data.click);\n                }\n            }\n\n            if (!this.lastClickedIsSelectionFilter) return;\n            if (event.detail == undefined) return;\n            if (event.detail.data == undefined || event.detail.data.click == undefined || event.detail.data.click[\"level-key\"] == undefined) return;\n            if (this.Filter == undefined) return;\n\n            const alreadyActive = this.Filter.Filter.includes(event.detail.data.click[\"level-key\"]);\n\n            this.Filter.Reset(true, this.Context);\n            if (alreadyActive == false) {\n                this.Filter.Strategy = FilterSelectionStrategy.OR;\n                this.Filter.Add(event.detail.data.click[\"level-key\"]);\n            }\n\n            this.refreshTargets.forEach(refreshTarget=>{\n                CardContainerEventContainer.Refetch(refreshTarget as {\n                    tag: string,\n                    query?: string\n                });\n            });\n        });\n\n        EventFactoryService.LastPOLoaded.register(() => {\n            if (this.cardAccordionEvents[\"on-last-po-loaded\"] != undefined) {\n                // this.cardAccordionEvents[\"on-last-po-loaded\"] = CardDataService.PrepareClickedCardEventsData(this.cardAccordionEvents[\"on-last-po-loaded\"], {});\n                window.dispatchEvent(new EventHandlerDispatchEvent({\n                    async: false,\n                    events: this.cardAccordionEvents[\"on-last-po-loaded\"]\n                }));\n            }\n        });\n\n        this.addEventListener(CardContainerEvents.CardContainerPostFill, ()=>{\n            this.openItem();\n            // setTimeout(() => {}, 100);\n        });\n    }\n\n    protected findContainers(query: string): Array<DhElement> {\n        const result = new Array<DhElement>();\n        if (this.shadowRoot) {\n            const containers = this.shadowRoot.querySelectorAll(query);\n            containers.forEach(container=>{\n                if (container.parentNode == this.shadowRoot) {\n                    result.push(container as DhElement);\n                }\n            });\n        }\n        return result;\n    }\n\n    protected updated(changedProperties: Map<string, unknown>): void {\n        super.updated(changedProperties);\n    }\n\n    private async openItem() {\n        if (!this.cardToOpenShowedOnce && this.open === undefined && this.cardToOpenAfterFill && this.cardToOpenAfterFill !== \"\") {\n            this.open = this.cardToOpenAfterFill;\n            this.cardToOpenShowedOnce = true;\n        }\n        if (this.open && this.cardContainersToCreate.tag.length > 0) {\n            const newContainers = this.findContainers(\"fv-accordion.accordion-container\") as Array<AccordionItemComponent>;\n            for (const container of newContainers) {\n                const item = container.querySelector(\"[level-identifier=\\\"\"+this.open+\"\\\"]\") as AccordionItemComponent;\n                if (item) {\n                    const createdCardContainer = item.querySelector(this.cardContainersToCreate.tag) as BaseCardContainer;\n                    if (createdCardContainer) {\n                        await createdCardContainer.CheckFetchPromise();\n                        await createdCardContainer.updateComplete;\n                        item.open();\n\n                        const card = item.querySelector(\"fv-card\") as BaseCard;\n                        if (card && card.data.click) {\n                            this.triggerOpenEvents(card.data.click);\n                        }\n                    }\n                }\n            }\n        }\n    }\n}\n","import { customElement, property } from \"lit/decorators.js\";\nimport { SliderComponent } from \"../../input\";\nimport { PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./card-container-slider-filter.component.sass?inline\";\nimport { EventHandlerEvent, EventHandlerDispatchEvent } from \"../../../../models/event-handler/event.handler.model\";\nimport { SliderRange } from \"../../../../define/interface\";\nimport { ComponentService } from \"../../../../utils/component.service\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport { BaseCardContainer } from \"../base/base-card-container\";\nimport {\n    CardContainerChildWildcard,\n    CardContainerEvents,\n    CardContainerResetFilterEventInit,\n    FilterSelectionStrategy\n} from \"../../../../models/card-container\";\nimport { CardContainerFilterSelection, CardElementSliderFilterCreator } from \"../internals\";\n\n@customElement(\"fv-card-slider-filter\")\nexport class CardContainerSliderFilterComponent extends BaseCardContainer {\n\n    static styles = [\n        super.styles || [],\n        unsafeCSS(style)\n    ];\n\n    @property({ type: Array, reflect: true })\n    private refreshFilter?: Array<CardContainerChildWildcard>;\n\n    @property({ type: Array, reflect: true })\n    private refreshExclude?: Array<CardContainerChildWildcard>;\n\n    @property({ type: Boolean, reflect: true })\n    private refreshHidden?: boolean;\n\n    @property({ type: Boolean, reflect: true })\n    private refetch?: boolean;\n\n    @property({ type: Object, reflect: true, attribute: 'state' })\n    private _state?: SliderRange | number\n\n    @property({ type: Boolean, reflect: true, attribute: 'use-cards' })\n    public useCards = false;\n\n    @property({ type: Number, reflect: true, attribute: 'max-entries' })\n    public maxEntries = undefined;\n\n    @property({ type: String, reflect: true, attribute: 'check-dimensions' })\n    public checkDimensions = \"\";\n\n    @property({ type: Object, reflect: true, attribute: \"on-filter-events\" })\n    public onCardFilterEvents: {\n        \"on-empty\"?: Array<EventHandlerEvent>,\n        \"over-max\"?: Array<EventHandlerEvent>,\n    } = {};\n\n\n    @property({type: String, reflect: true, attribute: 'template-id'})\n    private templateId: string = \"card_container_dimension_filter\";\n\n    private get CardCreator(): CardElementSliderFilterCreator {\n        return this.cardCreator as CardElementSliderFilterCreator;\n    }\n\n\n    constructor() {\n        super();\n\n        this.filter = new CardContainerFilterSelection();\n        this.cardCreator = new CardElementSliderFilterCreator();\n\n        this.addEventListener(CardContainerEvents.ResetFilter, (event: CardContainerResetFilterEventInit)=>{\n            this._state = undefined;\n            this.requestUpdate();\n        });\n\n        this.addEventListener(CardContainerEvents.CardContainerPostFill, ()=>{\n            if (!this.CardCreator.Dimensions || this.CardCreator.Dimensions.length == 0) {\n                this.classList.add(\"empty\");\n            }\n            else {\n                this.classList.remove(\"empty\");\n            }\n            this.checkAllDimensionFilters();\n        });\n\n        this.addEventListener(\"cardclicked\", ()=>{\n            this.CheckFetchPromise().then(()=>{\n                this.updateComplete.then(()=>{\n                    CardDataService.Containers.forEach((container)=>{\n                        container.Refetch();\n                    });\n                });\n            });\n        });\n    }\n\n\n    protected firstUpdated(_changedProperties: PropertyValues) {\n        this.refetch = true;\n\n        this.addEventListener(\"change\", this.sliderChanged, false);\n        super.firstUpdated(_changedProperties);\n    }\n\n    async sliderChanged(ev: CustomEventInit<{\n        value: SliderRange | number,\n        range: SliderRange | undefined,\n        actionElement?: HTMLElement\n    }>) {\n        if (ev.detail == undefined) return;\n        const { value, range, actionElement } = ev.detail;\n        if (!actionElement) {\n            await this.setFilterValues(value);\n        }\n    }\n\n    private setFilter(dimensions: number[]) {\n        if (this.Filter == undefined) return;\n        this.Filter.Reset(false, this.Context);\n        for (const dimension of dimensions) {\n            this.Filter.Add(dimension);\n        }\n        this.Filter.Strategy = FilterSelectionStrategy.OR;\n    }\n\n    private async setFilterValues(range: SliderRange | number) {\n        const settings = this.Settings;\n        const dimension = settings.Fetch.parameters[\"dimension\"] as string | undefined;\n        if (dimension && this.Filter) {\n            this.Filter.AdditionalParams = {\n                \"filter-type\": \"dimension\",\n                \"dimension\": dimension\n            };\n        }\n        let allowed: number[];\n        if (typeof range === \"number\") {\n            allowed = this.CardCreator.ActiveDimensions.filter(x => x != range).map(x => x);\n        }\n        else {\n            allowed = this.CardCreator.ActiveDimensions.filter(x => !(x < range.min || x > range.max)).map(x => x);\n        }\n        this.setFilter(allowed);\n        this._state = range;\n\n        window.dispatchEvent(new EventHandlerDispatchEvent({\n            async: false,\n            events: [{\n                id: \"refresh-all-card-containers\",\n                data: {\n                    refetch: this.refetch,\n                    \"include-hidden\": this.refreshHidden,\n                    \"selection-result-filter-reset-targets\": this.refreshFilter,\n                    \"selection-result-filter-reset-excludes\": this.refreshExclude\n                }\n            }]\n        }));\n        await this.CheckFetchPromise();\n        await this.updateComplete;\n    }\n\n    // This function disables all filters (width, depth, height) of the same group (slider or card) if the dimension count is greater than the max entries\n    private async checkAllDimensionFilters() {\n        if (this.maxEntries === undefined) {\n            return;\n        }\n        if (this.checkDimensions === undefined || this.checkDimensions === \"\") {\n            return;\n        }\n\n        await CardDataService.WaitForAllCardContainerFetchPromises();\n        const allDimensionFilters = ComponentService.findAll(\"fv-card-slider-filter\", this.checkDimensions) as Array<CardContainerSliderFilterComponent>;\n\n        let anyDimensionHasEntries = false;\n        for (const filter of allDimensionFilters) {\n            anyDimensionHasEntries ||= filter.CardCreator.Dimensions.length > 0;\n            if (this.CardCreator.Dimensions.length > this.maxEntries) {\n                if (filter.onCardFilterEvents && filter.onCardFilterEvents[\"over-max\"] !== undefined) {\n                    window.dispatchEvent(new EventHandlerDispatchEvent({\n                        async: false,\n                        events: filter.onCardFilterEvents[\"over-max\"]\n                    }));\n                }\n                filter.classList.add(\"hidden\");\n            }\n        }\n\n        if (anyDimensionHasEntries === false) {\n            for (const filter of allDimensionFilters) {\n                if (filter.onCardFilterEvents && filter.onCardFilterEvents[\"on-empty\"] !== undefined) {\n                    window.dispatchEvent(new EventHandlerDispatchEvent({\n                        async: false,\n                        events: filter.onCardFilterEvents[\"on-empty\"]\n                    }));\n                }\n            }\n        }\n    }\n\n    public getBaseSliderState(dimensions: number[], activeDimensions: number[]): SliderComponent {\n        const slider = new SliderComponent();\n        slider.innerHTML = `\n            <div class='input-container' slot='min'>\n                <fv-label style=\"display: inline\" i18n=\"fv.right.panel.catalogue.dimensions.from\"></fv-label>\n                <fv-input style=\"width: 50%; position: relative\" type='number' class='sliderValue'>\n                    <fv-label style=\"position: absolute; top: -11px; left: 5px; background: white; padding: 0 5px; font-size: 14px\" i18n=\"webcab.Unit\"></fv-label>\n                </fv-input>\n            </div>\n            <div class=\"input-container\" slot='max'>\n                <fv-label style=\"display: inline\" i18n=\"fv.right.panel.catalogue.dimensions.to\"></fv-label>\n                <fv-input style=\"width: 50%; position: relative\" type='number' class='sliderValue'>\n                    <fv-label style=\"position: absolute; top: -11px; left: 5px; background: white; padding: 0 5px; font-size: 14px\" i18n=\"webcab.Unit\"></fv-label>\n                </fv-input>\n            </div>\n        `;\n        slider.FormatDisplayValueFunction = (value: number): string => {\n            return (value / 10).toString();\n        };\n        slider.Range = {\n            min: Math.min(...dimensions),\n            max: Math.max(...dimensions)\n        };\n        if (this._state) {\n            slider.Value = this._state;\n        }\n        else {\n            slider.Value = slider.Range;\n        }\n        // const filter = this.SelectionResultFilter.filter.map(x => +x);\n        // if (filter.length == 1) {\n        //     slider.classList.add(\"fixed\");\n        //     slider.Value = this._activeDimensions[0];\n        // } else if (this._state) {\n        //     slider.Value = this._state;\n        // }\n        return slider;\n    }\n\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, query, state } from \"lit/decorators.js\";\nimport { BaseCardContainer } from \"../base/base-card-container\";\nimport { EventService, LocaleService } from \"@dh-software/webui-api\";\nimport { CardContainerEvents, CardContainerSpecialInteractionContext, CardContainerUpdate, CardDataLevelKey, FetchResult, UpdateAdditionalDataEventInit } from \"../../../../models/card-container\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport { FetchParameters } from \"../../base/async.base.component\";\nimport style from \"./card-container.component.sass?inline\";\nimport addDialogStyle from \"./card-container-add-dialog.container.component.sass?inline\";\nimport { EventHandlerDispatchEvent } from \"../../../../models/event-handler/event.handler.model\";\nimport { BaseElement } from \"../..//base/base.component\";\n\n@customElement(\"fv-card-container-add-dialog\")\nexport class CardContainerAddDialog extends BaseCardContainer {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`,\n        css`${unsafeCSS(addDialogStyle)}`\n    ];\n\n    @property({ type: String, reflect: true, attribute: \"fallback-button-txt\" })\n    public fallbackButtonTxt = \"20139\";\n\n    @property({ type: Array, reflect: false, attribute: \"displayed-element-type-text\" })\n    public displayedElementTypeText: { [type: string]: string } = {};\n    \n    @property({ type: String, reflect: true, attribute: \"icon\" })\n    public icon = \"fv-icon-fa-play\";\n\n    @state()\n    private _open: boolean | \"prevent\" = false;\n\n\n    @query(\".back-button-slot\")\n    private backButtonSlot: HTMLSlotElement | undefined;\n\n    private set open(state_: boolean) {\n        if (this._open == \"prevent\") {\n            return;\n        }\n        this._open = state_;\n\n\n        // const hide = this._open == \"prevent\" || this.hideElement ? true || this.currentSpecialInteractionContext == CardContainerSpecialInteractionContext.DISABLED : !state_;\n        // for (const backButton of this.openBackButtons) {\n        //     const found = ComponentService.findAll(backButton.name, backButton.selector);\n        //     found.forEach((button: BaseElement) => {\n        //         button.hideElement = hide;\n        //     });\n        // }\n\n        if (!this.hideElement && this.currentSpecialInteractionContext == CardContainerSpecialInteractionContext.ENABLED) {// open close events only neeeded when visible!\n            if (this._open) {\n                if (this.events[\"special-interaction-opened\"]) {\n                    window.dispatchEvent(new EventHandlerDispatchEvent({\n                        async: false,\n                        events: this.events[\"special-interaction-opened\"]\n                    }));\n                }\n            }\n            else {\n                if (this.events[\"special-interaction-closed\"]) {\n                    window.dispatchEvent(new EventHandlerDispatchEvent({\n                        async: false,\n                        events: this.events[\"special-interaction-closed\"]\n                    }));\n                }\n            }\n        }\n\n        this.CheckFetchPromise().then(()=>{\n            if (this.backButtonSlot) {\n                for (const slotted of this.backButtonSlot.assignedElements()) {\n                    if (slotted instanceof BaseElement) {\n                        slotted.requestUpdate();\n                    }\n                }\n            }\n        });\n    }\n    private get open() : boolean {\n        return this._open == \"prevent\" || this._open;\n    }\n    private toggle() {\n        if (this._open == \"prevent\") {\n            return;\n        }\n        this.open = !this.open;\n    }\n\n\n    constructor(observeLocales = true) {\n        super(observeLocales);\n        this.states.HandleAppConnectionPlanningSituationState = true;\n    }\n\n    private currentSpecialInteractionContext: CardContainerSpecialInteractionContext = CardContainerSpecialInteractionContext.NONE;\n    private async _setOpenFromInteractionContextLimitations() {\n        this.currentSpecialInteractionContext = await CardDataService.CheckSpecialInteractionContext(this.Context);\n        switch (this.currentSpecialInteractionContext) {\n            case CardContainerSpecialInteractionContext.DISABLED:\n                this.open = true;\n                break;\n            case CardContainerSpecialInteractionContext.ENABLED:\n                this.open = false;\n                break;\n            case CardContainerSpecialInteractionContext.ERROR:\n            case CardContainerSpecialInteractionContext.NONE:\n                this._open = \"prevent\";\n                break;\n            default:\n                break;\n        }\n    }\n\n    connectedCallback(): void {\n        super.connectedCallback();\n        // this.addEventListener(\"cardclicked\", ()=>{\n        // \tthis.toggle();\n        // \tthis._setOpenFromInteractionContextLimitations();\n        // });// close after placement\n        this.addHideStateUpdatedEventListener((hidden: boolean, parentStateChanged: boolean)=>{\n            if (hidden) {\n                if (this._open !== \"prevent\") {\n                    this.open = false;// close on hide!\n                }\n                return;\n            }\n            this._setOpenFromInteractionContextLimitations();\n        });\n\n        this.addEventListener(CardContainerEvents.Back, () => {\n            this.open = false;\n        });\n    }\n\n\n\n    protected async Fetch(parameters: FetchParameters): Promise<FetchResult | undefined> {\n        await this._setOpenFromInteractionContextLimitations();\n        return await super.Fetch(parameters);\n    }\n\n\n    private renderLevelsSlots(): TemplateResult<1> {\n        if (this.CardData == undefined) {\n            return html``;\n        }\n\n        const keys: CardDataLevelKey[] = [];\n        for (const card of this.CardData) {\n            keys.push(card[0]);\n        }\n\n        return html`\n            ${keys.map((value) => html`<slot name=\"below-button-${value}\"></slot>`)}\n        `;\n    }\n\n    private renderAddButton(result: FetchResult | undefined): TemplateResult<1> {\n        this.RefreshCardData(result);\n\n        const types: string[] = [];\n        if (this.cardData != undefined && this.cardData.size > 0) {\n            this.cardData.forEach(card=>{\n                if (card.additional && card.additional[\"element-types\"]) {\n                    types.push(...(card.additional[\"element-types\"] as string[]));\n                }\n            });\n        }\n\n        if (types.length < 1 || this.displayedElementTypeText[types[0]] == undefined) {\n            const fallbackTxt = LocaleService.translate(this.fallbackButtonTxt, this.fallbackButtonTxt);\n            return html`\n                <fv-button class=\"add-button\" @click=\"${this.toggle}\">\n                    <span i18n=\"${this.fallbackButtonTxt}\">${fallbackTxt}</span>\n                    <span class=\"${this.icon}\"></span>\n                </fv-button>\n                ${this.renderLevelsSlots()}\n            `;\n        }\n\n        const typeText = this.displayedElementTypeText[types[0]];// only use first type-text\n        const txt = LocaleService.translate(typeText, LocaleService.translate(this.fallbackButtonTxt, typeText));\n        return html`\n            <fv-button class=\"add-button\" @click=\"${this.toggle}\">\n                    <span i18n=\"${typeText}\">${txt}</span>\n                    <span class=\"${this.icon}\"></span>\n            </fv-button>\n            ${this.renderLevelsSlots()}\n        `;\n    }\n\n    protected renderComplete(result: FetchResult | undefined, renderResult: TemplateResult<1> | undefined): TemplateResult<1> {\n        if (!this.open) {\n            const refreshCardDataResult = this.RefreshCardData(result);// ensure card data is filtered!\n            if (this.LastRenderResult && refreshCardDataResult == \"unchanged\") {\n                return this.LastRenderResult;// skip element creation, if cards did not change\n            }\n            return this.renderAddButton(result);\n        }\n\n        if (this.open && this.currentSpecialInteractionContext == CardContainerSpecialInteractionContext.ENABLED) {\n            return html`\n                <slot name=\"back-button\" class=\"back-button-slot\"></slot>\n                ${super.renderComplete(result, renderResult)}\n            `;\n        }\n        return super.renderComplete(result, renderResult);\n    }\n\n    public async CheckUpdate(update: CardContainerUpdate, updateNoneRenders: boolean = false): Promise<void> {\n        await super.CheckUpdate(update, updateNoneRenders);\n        if (update == CardContainerUpdate.FILTER) {\n            await this._setOpenFromInteractionContextLimitations();\n        }\n    }\n\n    public get CardContainerView_BackButtonOverwrite() {\n        return this.open && this.currentSpecialInteractionContext != CardContainerSpecialInteractionContext.DISABLED;\n    }\n}","import {css, html, nothing, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./card-container-back-button.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement, UpdatedEvent } from \"../../base/base.component\";\nimport { EventHandlerEvent, EventHandlerDispatchEvent } from \"../../../../models/event-handler/event.handler.model\";\nimport { BaseCardContainer } from \"../base/base-card-container\";\nimport { ComponentService } from \"../../../../utils/component.service\";\nimport { BaseCardDataAppConnection } from \"../../../../utils/card-app-connections/base.card.app.connection\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport { UtilService } from \"../../../../utils/util.service\";\nimport { CardContainerBackEvent } from \"../../../../models/card-container\";\nimport {LocaleService} from \"@dh-software/webui-api\";\nimport {ifDefined} from \"lit/directives/if-defined.js\";\nimport { CardContainerViewComponent } from \"../views/card-container-view.component\";\nimport { styleMap } from \"lit/directives/style-map.js\";\n\n\n@customElement(\"fv-card-container-back-button\")\nexport class CardContainerBackButtonComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n\n\n    @property({ type: String, reflect: true })\n    public icon = \"\";\n    @property({ type: String, reflect: true })\n    public txt = \"\"\n    @property({ type: Array, reflect: true, attribute: \"targets\" })\n    public targets: Array<{ tag: string, query: string, \"hidden-prevents-back\": boolean | undefined, \"partial-hide-limit-back-to-last\": boolean | undefined, \"txt-src-prio\": number | undefined, \"prevent-back\": boolean | undefined }> = new Array<{ tag: string, query: string, \"hidden-prevents-back\": boolean | undefined, \"partial-hide-limit-back-to-last\": boolean | undefined, \"txt-src-prio\": number | undefined, \"prevent-back\": boolean | undefined }>();\n    @property({ type: Object, reflect: true, attribute: \"events\" })\n    public events: {\n        hide?: Array<EventHandlerEvent>,\n        show?: Array<EventHandlerEvent>\n    } = {};\n    @property({ type: Array, reflect: true, attribute: \"post-click-events\" })\n    public postClickEvents = new Array<EventHandlerEvent>();\n\n    @property({ type: Boolean, reflect: true, attribute: \"show-allways\" })\n    public showAllways = false;\n\n    @property({ type: String, reflect: false, attribute: \"button-class\" })\n    buttonClass: string = \"\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"text-in-button\" })\n    public textInButton = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"hide-if-target-single-entry\" })\n    public hideIfTargetSingleEntry = false;\n\n    @property({type: Object, reflect: true, attribute: \"button-style-vars\"})\n    public buttonStyleVars: {[key: string]: string } = {};\n\n    public get Targets(): Array<{element: BaseCardContainer | CardContainerViewComponent, \"hidden-prevents-back\": boolean, \"partial-hide-limit-back-to-last\": boolean, \"txt-src-prio\": number | undefined, \"prevent-back\": boolean }> {\n        const targets = new Array<{element: BaseCardContainer | CardContainerViewComponent, \"hidden-prevents-back\": boolean, \"partial-hide-limit-back-to-last\": boolean, \"txt-src-prio\": number | undefined, \"prevent-back\": boolean }>();\n        for (const target of this.targets) {\n            const components = ComponentService.findAll(target.tag, target.query) as Array<BaseCardContainer>;\n            for (const component of components) {\n                targets.push({\n                    element: component,\n                    \"hidden-prevents-back\": target[\"hidden-prevents-back\"] == undefined ? false : target[\"hidden-prevents-back\"],\n                    \"partial-hide-limit-back-to-last\": target[\"partial-hide-limit-back-to-last\"] == undefined ? false : target[\"partial-hide-limit-back-to-last\"],\n                    \"txt-src-prio\": target[\"txt-src-prio\"],\n                    \"prevent-back\": target[\"prevent-back\"] == undefined ? false : target[\"prevent-back\"]\n                });\n            }\n        }\n        return targets;\n    }\n    public get TextSourceTarget(): BaseCardContainer | undefined {\n        const targets = this.Targets;\n\n        let lowestPrioElement: {element: BaseCardContainer, \"hidden-prevents-back\": boolean, \"partial-hide-limit-back-to-last\": boolean, \"txt-src-prio\": number } | undefined = undefined;\n        for (const target of targets) {\n            if (target[\"txt-src-prio\"] != undefined) {\n                if (lowestPrioElement == undefined) {\n                    lowestPrioElement = target as {element: BaseCardContainer, \"hidden-prevents-back\": boolean, \"partial-hide-limit-back-to-last\": boolean, \"txt-src-prio\": number };\n                    continue;\n                }\n\n                if (lowestPrioElement[\"txt-src-prio\"] > target[\"txt-src-prio\"]) {\n                    lowestPrioElement = target as {element: BaseCardContainer, \"hidden-prevents-back\": boolean, \"partial-hide-limit-back-to-last\": boolean, \"txt-src-prio\": number };\n                }\n            }\n        }\n        return lowestPrioElement ? lowestPrioElement.element : undefined;\n    }\n    public get Text(): string {\n        let toTranslate = UtilService.ncrToUTF8(this.txt);\n        const txtSrcTarget = this.TextSourceTarget;\n        if (txtSrcTarget) {\n            toTranslate = UtilService.ncrToUTF8(txtSrcTarget.AdditionalData.Get(\"back-button-txt\", this.txt) as string);\n        }\n        return LocaleService.translate(toTranslate, toTranslate);\n    }\n\n    private getTargetsCardCount(): number {\n        let count = 0;\n        for (const target of this.Targets) {\n            count += target.element.RootLevelCardCount;\n        }\n        return count;\n    }\n    private async waitForTargets(): Promise<void> {\n        for (const target of this.Targets) {\n            await target.element.CheckFetchPromise();\n            await target.element.updateComplete;\n        }\n        return Promise.resolve();\n    }\n\n    constructor() {\n        super();\n\n        this.addEventListener(\"click\", ()=>{\n            this.Trigger();\n        });\n\n        this.addHideStateUpdatedEventListener((value: boolean)=>{\n            if (this.hideIfTargetSingleEntry && value == false) {\n                this.waitForTargets().then(()=>{\n                    const value = this.getTargetsCardCount();\n                    if (value == 1) {\n                        this.hideElement = true;\n                    }\n                });\n            }\n\n\n            if (value) {\n                if (this.events.hide) {\n                    window.dispatchEvent(new EventHandlerDispatchEvent({\n                        async: false,\n                        events: this.events.hide\n                    }));\n                }\n            }\n            else {\n                if (this.events.show) {\n                    window.dispatchEvent(new EventHandlerDispatchEvent({\n                        async: false,\n                        events: this.events.show\n                    }));\n                }\n            }\n        });\n    }\n\n\n    protected async Trigger() {\n        await CardDataService.WaitForAllCardContainerFetchPromises();\n\n        if (!this.showAllways) {\n            this.hideElement = true;\n        }\n\n        let hiddenCount = 0;\n        let last: BaseCardContainer | CardContainerViewComponent | undefined = undefined;\n        for (const target of this.Targets) {\n            if (target[\"prevent-back\"] == true) {\n                continue;\n            }\n\n            if (target.element.hideElement) {\n                ++hiddenCount;\n                if (target[\"partial-hide-limit-back-to-last\"]) {\n                    last = target.element;\n                }\n            }\n        }\n\n        if (last == undefined || hiddenCount == this.Targets.length) {\n            for (const target of this.Targets) {\n                if (target[\"prevent-back\"] == true) {\n                    continue;\n                }\n\n                if (target[\"hidden-prevents-back\"] && target.element.hideElement) {\n                    continue;\n                }\n                target.element.Dispatcher.dispatch(done => new CardContainerBackEvent(done));\n            }\n        }\n        else {\n            last.Dispatcher.dispatch(done => new CardContainerBackEvent(done));\n        }\n        window.dispatchEvent(new EventHandlerDispatchEvent({\n            async: false,\n            events: this.postClickEvents\n        }));\n    }\n\n    protected update(changedProperties: PropertyValues) {\n        super.update(changedProperties);\n        if(this.showAllways) {\n            this.hideElement = false;\n        }\n    }\n\n    render(): TemplateResult<1> {\n        const label = html`<fv-label class=\"custom-size\">${this.Text}</fv-label>`;\n        return html`\n            <fv-button icon=\"${this.icon}\" class=\"${ifDefined(this.buttonClass)}\" style=${styleMap(this.buttonStyleVars)}}>\n                ${this.textInButton ? label : nothing}\n            </fv-button>\n            <slot name=\"before\"></slot>\n            ${this.textInButton ? nothing : label}\n            <slot></slot>\n        `;\n    }\n\n\n    public static HideStateUpdate() {\n        const backButtons = ComponentService.findAll(\"fv-card-container-back-button\") as Array<CardContainerBackButtonComponent>;\n        for (const backButton of backButtons) {\n            const targets = backButton.Targets;\n            if (targets == undefined || targets.length < 1) {\n                backButton.hideElement = true;// hide unconnected\n                console.error(\"card-container-back-button unconnected!\", backButton, targets);\n                continue;\n            }\n\n            let show = false;\n            for (const target of targets) {\n                if (target.element.AdditionalData.Get(\"show-back-button\", false)) {\n                    show = true;\n                    break;\n                }\n            }\n\n            if (backButton.hideIfTargetSingleEntry && show) {\n                const value = backButton.getTargetsCardCount();\n                if (value == 1) {\n                    show = false;\n                }\n            }\n\n            backButton.hideElement = !show;\n            backButton.requestUpdate();\n        }\n    }\n}\n","import { BaseCardContainer } from \"../base/base-card-container\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { EventHandlerEvent, EventHandlerDispatchEvent } from \"../../../../models/event-handler/event.handler.model\";\nimport { CardData } from \"../../../../models/card-container\";\nimport { CardContainerBackButtonComponent } from \"../controls/card-container-back-button.component\";\nimport { CardContainerEvents, CardDataLevel, CardDataLevelKey, CardDataLevelMap, FetchResult, FilterSelectionData, FilterSelectionStrategy, UpdateAdditionalDataEventInit } from \"../../../../models/card-container\";\nimport { CardContainerFilterSelection } from \"../internals\";\n\n\nclass LevelPageCardContainerSelectionStack {\n    private _history: Array<CardDataLevelKey>;\n    private _lastSelected = false;\n\n    constructor(\n        root: CardDataLevelKey,\n        private readonly _onChange: (selected: CardDataLevelKey, history: ReadonlyArray<CardDataLevelKey>) => Promise<void>\n    ) {\n        this._history = [root];\n    }\n\n    // --- Root ---\n    public get root(): CardDataLevelKey { return this._history[0]; }\n    public set root(value: CardDataLevelKey) { this._history[0] = value; }\n\n    // --- Currently active level (top of history) ---\n    public get selected(): CardDataLevelKey { return this._history[this._history.length - 1]; }\n    public set selected(key: CardDataLevelKey) {\n        const existingIndex = this._history.indexOf(key);\n        if (existingIndex !== -1) {\n            // Already in history: trim everything after it (backward navigation or revisit)\n            this._history = this._history.slice(0, existingIndex + 1);\n        } else {\n            // New level: push forward\n            this._history = [...this._history, key];\n        }\n        this._onChange(this.selected, this._history);\n    }\n\n    // --- Leaf-selection marker ---\n    public get lastSelected(): boolean { return this._lastSelected; }\n    public set lastSelected(value: boolean) { this._lastSelected = value; }\n\n    // --- True when sitting at the root level ---\n    public get atRoot(): boolean { return this._history.length === 1; }\n\n    /**\n     * Step back exactly one level.\n     * If in lastSelected state (leaf was picked, container is hidden), clear that\n     * state and re-show the current level so the user can change their selection.\n     * Otherwise pop one entry off the history.  Does nothing when already at root.\n     */\n    public back(): void {\n        if (this._lastSelected) {\n            this._lastSelected = false;\n            this._onChange(this.selected, this._history);\n            return;\n        }\n        if (this._history.length > 1) {\n            this._history = this._history.slice(0, -1);\n            this._onChange(this.selected, this._history);\n        }\n    }\n\n    /** Jump directly to the root level, clearing any intermediate navigation. */\n    public backToRoot(): void {\n        this._lastSelected = false;\n        this._history = [this.root];\n        this._onChange(this.selected, this._history);\n    }\n\n    /**\n     * Replaces the top of history with `key`, leaving the parent in place. Used for the auto-skip\n     * path so the user's back-step returns to the level they were on **before** the skip, instead\n     * of stopping at the one-card level they never really saw. Falls back to push when at root.\n     */\n    public replaceHistory(key: CardDataLevelKey): void {\n        if (this._history.length > 1) {\n            this._history = [...this._history.slice(0, -1), key];\n        } else {\n            this._history = [...this._history, key];\n        }\n        this._onChange(this.selected, this._history);\n    }\n\n    /** Build a filter descriptor from the current history (root is excluded). */\n    public parseToFilter(strategy: FilterSelectionStrategy): FilterSelectionData {\n        return {\n            filter: this._history.slice(1),\n            strategy,\n            priority: undefined\n        };\n    }\n}\n\n\n@customElement(\"fv-level-pages-card-container\")\nexport class LevelPageCardContainerComponent extends BaseCardContainer {\n    @property({ type: Object, reflect: true, attribute: \"level-events\" })\n    public levelEvents: { [key: CardDataLevelKey]: Array<EventHandlerEvent> } = {};\n\n    @property({ type: Array, reflect: true, attribute: \"selection-change-events\" })\n    public selectionChangeEvents: Array<EventHandlerEvent> = [];\n\n    @property({ type: Boolean, reflect: true, attribute: \"level-event-prevents-selection-change\" })\n    public levelEventPreventsSelectionChange = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"manage-back-button-hide-state\" })\n    public manageBackButtonHideState = true;\n\n    /**\n     * When true, the back button jumps directly to root instead of stepping\n     * through each level one by one.\n     */\n    @property({ type: Boolean, reflect: true, attribute: \"jump-to-root-on-back\" })\n    public jumpToRootOnBack = false;\n\n    /**\n     * When true, a level whose only card has a `next-level-key` auto-advances after fill — the\n     * user never sees a \"pick the one option\" interstitial. Leaves (cards with no `next-level-key`)\n     * are never auto-selected. Suppressed for one render after a Back action so back-stepping\n     * doesn't immediately re-skip forward.\n     */\n    @property({ type: Boolean, reflect: true, attribute: \"skip-on-single-entry\" })\n    public skipOnSingleEntry = false;\n\n    /**\n     * When true, clicking a leaf card (no `next-level-key`) does NOT mark `lastSelected` and does\n     * NOT hide this container. Use this when the leaf click should *only* fire the app-connection's\n     * `Click` (e.g. apply a material) and the container should stay visible so the user can keep\n     * picking. Default `false` preserves the legacy behaviour (leaf click hides the container).\n     */\n    @property({ type: Boolean, reflect: true, attribute: \"block-if-next-empty\" })\n    public blockIfNextEmpty = false;\n\n    private _suppressSingleEntrySkip = false;\n\n    // --- current-level attribute (reflects active level; settable externally) ---\n    // The backing field is written directly by _onChange so the setter is only\n    // ever reached from outside the component — no re-entrancy guard needed.\n    private _currentLevel: CardDataLevelKey = \"\";\n\n    @property({ type: String, reflect: true, attribute: \"current-level\" })\n    public get currentLevel(): CardDataLevelKey { return this._currentLevel; }\n    public set currentLevel(value: CardDataLevelKey) {\n        const old = this._currentLevel;\n        this._currentLevel = value;\n        this.requestUpdate(\"currentLevel\", old);\n        // Drive the selection stack whenever an external caller sets this\n        // property.  _onChange always writes _currentLevel directly (below)\n        // so this path is never triggered recursively.\n        if (value && this.selection && value !== this.selection.selected) {\n            this.selection.selected = value;\n        }\n    }\n\n    // --- Back-navigation guard ---\n    // Set to true while back()/backToRoot() is executing so _onChange can\n    // skip selectionChangeEvents / levelEvents that were designed for forward\n    // navigation and would otherwise mis-navigate back to root.\n    private _isBackNavigation = false;\n\n    // --- Selection stack ---\n    private readonly selection = new LevelPageCardContainerSelectionStack(\n        \"root\",\n        async (selected, history) => {\n            // Capture direction before any async yield (the Back handler resets\n            // _isBackNavigation synchronously once selection.back() returns).\n            const isBackNavigation = this._isBackNavigation;\n\n            // Reflect the new level to the DOM attribute by writing the backing\n            // field directly.  Going through the setter would re-drive\n            // selection.selected and cause infinite recursion.\n            const old = this._currentLevel;\n            this._currentLevel = selected;\n            this.requestUpdate(\"currentLevel\", old);\n\n            // One update per selection change — filter + render.\n            this.triggerUpdateRequest();\n\n            // On backward navigation fire level events (e.g. \"root\" / \"!root\")\n            // but skip selectionChangeEvents — those are wired for forward\n            // card-click navigation and can accidentally reset the level to root.\n            if (isBackNavigation) {\n                await this.dispatchLevelEvents(selected, history);\n                return;\n            }\n\n            // Dispatch configured events (forward navigation only).\n            if (this.levelEventPreventsSelectionChange) {\n                if (await this.dispatchLevelEvents(selected, history)) return;\n            }\n            if (this.selectionChangeEvents.length > 0) {\n                window.dispatchEvent(new EventHandlerDispatchEvent({\n                    async: false,\n                    events: this.selectionChangeEvents\n                }));\n            }\n            await this.dispatchLevelEvents(selected, history);\n        }\n    );\n\n    // --- Helpers ---\n    public get Selected(): CardDataLevelKey { return this.selection.selected; }\n    public get SelectionRoot(): CardDataLevelKey { return this.selection.root; }\n    public get SelectedLevel(): CardDataLevel | undefined { return this.CardData?.get(this.Selected); }\n    public get LastClicked(): CardData | undefined { return this.lastClickedCard; }\n\n    /**\n     * Collect EventHandlerEvents for the given selected level from levelEvents.\n     * Supports exact key match, negation prefix \"!key\", and pipe-separated\n     * multi-level tail match \"parent|child\".\n     */\n    private collectLevelEvents(\n        selected: CardDataLevelKey,\n        history: ReadonlyArray<CardDataLevelKey>\n    ): Array<EventHandlerEvent> {\n        const isRoot = selected === this.selection.root;\n        const result: Array<EventHandlerEvent> = [];\n        for (const key of Object.keys(this.levelEvents)) {\n            // \"root\" fires when the selected level is the root level\n            if (key === \"root\") {\n                if (isRoot) result.push(...this.levelEvents[key]);\n                continue;\n            }\n            // \"!root\" fires for every level that is NOT the root level\n            if (key === \"!root\") {\n                if (!isRoot) result.push(...this.levelEvents[key]);\n                continue;\n            }\n            // General negation: \"!foo\" fires for every level that is NOT \"foo\"\n            if (key.startsWith(\"!\")) {\n                if (selected !== key.slice(1)) result.push(...this.levelEvents[key]);\n                continue;\n            }\n            const parts = key.split(\"|\");\n            if (parts.length === 1) {\n                if (key === selected) result.push(...this.levelEvents[key]);\n                continue;\n            }\n            // Multi-level tail match: \"cat1|subcat1\" fires when the last N history\n            // entries equal the key parts (root is never part of the match window).\n            const startIndex = history.length - parts.length;\n            if (startIndex > 0 && parts.every((p, i) => p === history[startIndex + i])) {\n                result.push(...this.levelEvents[key]);\n            }\n        }\n        return result;\n    }\n\n    private async dispatchLevelEvents(\n        selected: CardDataLevelKey,\n        history: ReadonlyArray<CardDataLevelKey>\n    ): Promise<boolean> {\n        const events = this.collectLevelEvents(selected, history);\n        if (events.length > 0) {\n            window.dispatchEvent(new EventHandlerDispatchEvent({ async: false, events }));\n        }\n        CardContainerBackButtonComponent.HideStateUpdate();\n        return events.length > 0;\n    }\n\n    private _showBackButton(): boolean {\n        if (!this.Selected || this.Selected === this.SelectionRoot) return false;\n        if (this.selection.lastSelected) return true; // leaf selected, container hidden\n        return !this.hideElement;\n    }\n\n    /**\n     * Lets an enclosing fv-card-container-view delegate Back to us while we still have internal\n     * levels to pop, instead of closing the side view. False at our root, so the view then handles\n     * Back itself (closing the side view / navigating its own levels).\n     */\n    public override get CardContainerView_BackButtonOverwrite(): boolean {\n        return this._showBackButton();\n    }\n\n    private _getBackButtonText(): string {\n        const lvl = this.SelectedLevel;\n        if (lvl?.title?.length) return lvl.title;\n        if (this.selection.lastSelected && this.LastClicked?.txt) {\n            const txt = this.LastClicked.txt as Record<string, string>;\n            return txt[\"title\"] ?? Object.values(txt)[0] ?? \"\";\n        }\n        return \"\";\n    }\n\n    protected CreateCards(result: FetchResult): CardDataLevelMap {\n        const baseFiltered = super.CreateCards(result);\n        const newResult = new Map<CardDataLevelKey, CardDataLevel>();\n        const active = baseFiltered.get(this.selection.selected);\n        if (active) newResult.set(this.selection.selected, active);\n        return newResult;\n    }\n\n    constructor() {\n        super();\n\n        this.filter = new CardContainerFilterSelection();\n\n        this.addEventListener(\"cardclicked\", async (e: CustomEventInit<{ data: CardData }>) => {\n            if (!e.detail?.data?.click) return;\n            this.lastClickedCard = e.detail.data;\n\n            let nextLevelKey = e.detail.data.click[\"next-level-key\"] as CardDataLevelKey;\n            if (typeof nextLevelKey === \"number\") nextLevelKey = String(nextLevelKey);\n\n            if (nextLevelKey != null && nextLevelKey.toString().length > 0) {\n                // Forward navigation: push the next level onto the stack.\n                // onChange fires → triggerUpdateRequest() + level events.\n                this.selection.lastSelected = false;\n                this.selection.selected = nextLevelKey;\n            } else if (e.detail.data.click[\"level-key\"] != null) {\n                if (this.blockIfNextEmpty) {\n                    return;\n                }\n                this.selection.lastSelected = true;\n                this.triggerUpdateRequest(true);\n            }\n        });\n\n        this.addEventListener(CardContainerEvents.UpdateAdditionalData, (event: UpdateAdditionalDataEventInit) => {\n            if (!event.detail) {\n                return;\n            }\n            const key = event.detail.key;\n            if (key == undefined) {\n                return;\n            }\n\n            if (key === \"show-back-button\" && this.manageBackButtonHideState) {\n                this.AdditionalData.Set(key, this._showBackButton());\n            }\n            if (key === \"back-button-txt\") {\n                const txt = this._getBackButtonText();\n                if (txt.length > 0) this.AdditionalData.Set(key, txt);\n            }\n\n            if (event.detail[\"post-event\"]) {\n                event.detail[\"post-event\"]();\n            }\n        });\n\n        this.addEventListener(CardContainerEvents.Back, (e: Event) => {\n            // Stop the bubbling Back event from reaching ancestor card containers.\n            // CardContainerBackEvent has bubbles:true, so without this a parent\n            // container would also handle the event and navigate back a second time\n            // (producing a double _onChange call that resets the level to root).\n            e.stopPropagation();\n\n            this._isBackNavigation = true;\n            // Don't let skip-on-single-entry immediately re-advance into the level we just\n            // backed out of. Consumed by the next PostFill.\n            this._suppressSingleEntrySkip = true;\n            if (this.jumpToRootOnBack) {\n                this.selection.backToRoot();\n            } else {\n                this.selection.back();\n            }\n            this._isBackNavigation = false;\n            this.hideElement = false;\n\n            // Back-button text fix: the back button re-renders (and reads our `back-button-txt`)\n            // BEFORE this handler runs — Trigger() sets its hideElement up front, scheduling its\n            // update first. At that point our `cardData` still holds the level we're leaving, so\n            // `SelectedLevel` for the level we returned to is undefined. `cardData` is only rebuilt\n            // during THIS container's next render (filter-only update, no refetch → synchronous in\n            // renderComplete). Re-read the button text once that render has committed.\n            this.updateComplete.then(() => CardContainerBackButtonComponent.HideStateUpdate());\n        });\n\n        this.addEventListener(CardContainerEvents.CardContainerPreFill, () => {\n            this.selection.root = this.Settings.Fetch[\"root-level\"];\n        });\n\n        this.addEventListener(CardContainerEvents.CardContainerPostFill, () => {\n            this.performSingleEntrySkip();\n        });\n    }\n\n    private performSingleEntrySkip(): void {\n        if (!this.skipOnSingleEntry) {\n            return;\n        }\n        if (this._suppressSingleEntrySkip) {\n            this._suppressSingleEntrySkip = false;\n            return;\n        }\n        if (this.selection.lastSelected) {\n            return;\n        }\n\n        const active = this.SelectedLevel;\n        if (!active || active.cards.length !== 1) {\n            return;\n        }\n\n        let nextKey = active.cards[0].click?.[\"next-level-key\"] as CardDataLevelKey | undefined;\n        if (typeof nextKey === \"number\") nextKey = String(nextKey);\n        if (typeof nextKey !== \"string\" || nextKey.length === 0) {\n            return; // leaf — don't auto-pick\n        }\n\n        // Replace (don't push) so the auto-skipped level vanishes from history — Back from the\n        // destination jumps straight to the parent, no double-back through the level the user\n        // never saw. Chains naturally for repeated single-entry levels.\n        this.selection.lastSelected = false;\n        this.selection.replaceHistory(nextKey);\n    }\n\n    private triggerUpdateRequest(hide = false) {\n        this.hideElement = hide;\n        if (this.filter == undefined) return;\n        this.filter.Set(this.selection.parseToFilter(this.Settings.Filter[\"selection-strategy\"]));\n        this.requestUpdate();\n    }\n}\n","import { customElement, property, state } from \"lit/decorators.js\";\r\nimport { css, html, nothing, TemplateResult, unsafeCSS } from \"lit\";\r\nimport { CardContainerContext, CardDataLevel, CardDataLevelKey, CardDataLevelMap, FetchResult, CardData, CardContainerEvents } from \"../../../../models/card-container\";\r\nimport { BaseCardContainer, RefreshCardDataResult } from \"../base/base-card-container\";\r\nimport { CardElementCreator } from \"../internals\";\r\nimport style from \"./multi-level-card-container.component.sass?inline\";\r\nimport { IProperty } from \"@dh-software/webui-configuration-parser\";\r\n\r\nexport class MultiCardElementCreator extends CardElementCreator\r\n{\r\n\r\n\tpublic CreateRenderedCards(levels: CardDataLevelMap, context: CardContainerContext, container: BaseCardContainer): TemplateResult<1> | undefined {\r\n\t\tif(!(container instanceof MultiLevelCardContainerComponent)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.createDisplayElements(levels, context, container);\r\n\t\tconst allElements = this.Elements;\r\n\t\tconst level1Elements = allElements.filter(elem => elem.getAttribute('level') === 'LEVEL1');\r\n\t\tconst otherElements = allElements.filter(elem => elem.getAttribute('level') !== 'LEVEL1');\r\n\r\n\t\tlet elementsToRender: HTMLElement[];\r\n\t\t\r\n\t\tif (level1Elements.length > 0) {\r\n\t\t\tif (container.currentLevelKey === null) {\r\n\t\t\t\telementsToRender = level1Elements;\r\n\t\t\t} else {\r\n\t\t\t\telementsToRender = otherElements.filter(elem => elem.getAttribute('level') === container.currentLevelKey);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\telementsToRender = otherElements;\r\n\t\t}\r\n\t\t\r\n\t\tif(!container.isInsideGroup() && container.currentLevelKey === null && level1Elements.length != 0) {\r\n\t\t\telementsToRender.forEach(x => {\r\n\t\t\t\tx.style.setProperty(\"--icon-background-size\", \"contain\")\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tconst N = elementsToRender.length;\r\n\t\tif (N === 0) return html``;\r\n\r\n\t\tcontainer.applyAspectRatio(elementsToRender);\r\n\r\n\t\tconst minWidth = 245;\r\n\t\tlet M = Math.max(1, Math.floor(container.hostWidth / minWidth));\r\n\t\tM = Math.min(M, N);\r\n\r\n\t\t// Skip rendering if we don't have a valid width yet to avoid flickering\r\n\t\tif (container.hostWidth === 0 && container.isConnected) {\r\n\t\t\treturn html`<slot class=\"loader-slot\" name=\"loader\"></slot>`;\r\n\t\t}\r\n\r\n\t\tconst groups: HTMLElement[][] = Array.from({ length: M }, () => []);\r\n\t\tfor (let i = 0; i < N; i++) {\r\n\t\t\tconst groupIndex = Math.min(i, M - 1); // Group extra elements into the last (rightmost) column\r\n\t\t\tconst elem = elementsToRender[i];\r\n\t\t\telem.style.setProperty(\"--flex-container-overflow\", \"visible\");\r\n\t\t\telem.style.setProperty(\"height\", \"auto\");\r\n\t\t\tgroups[groupIndex].push(elem);\r\n\t\t}\r\n\r\n\t\treturn html`\r\n\t\t\t${groups.map((group, groupIndex) => html`\r\n\t\t\t\t<fv-flex-container class=\"levels-container\">\r\n\t\t\t\t\t${group.map((elem, elemIndex) => html`\r\n\t\t\t\t\t\t${container.getTitleWithLevelKey(elem.getAttribute('level'))}\r\n\t\t\t\t\t\t${elem}\r\n\t\t\t\t\t\t${elemIndex < group.length - 1 ? html`\r\n\t\t\t\t\t\t\t<div class=\"level-divider-container horizontal\">\r\n\t\t\t\t\t\t\t\t<div class=\"level-divider\"></div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t` : nothing}\r\n\t\t\t\t\t`)}\r\n\t\t\t\t</fv-flex-container>\r\n\t\t\t\t${groupIndex < groups.length - 1 ? html`\r\n\t\t\t\t\t<div class=\"level-divider-container\">\r\n\t\t\t\t\t\t<div class=\"level-divider\"></div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t` : nothing}\r\n\t\t\t`)}\r\n\t\t`;\r\n\t}\r\n\r\n}\r\n\r\n@customElement('fv-multi-level-card-container')\r\nexport class MultiLevelCardContainerComponent extends BaseCardContainer {\r\n\tprivate initialAspectRatio: string | null = null;\r\n\tprotected cardCreator: MultiCardElementCreator;\r\n\r\n\tstatic styles = [\r\n        super.styles || [],\r\n        css`${unsafeCSS(style)}`\r\n    ];\r\n\r\n\t@property({type: String})\r\n\tcurrentLevelKey: string | null = null;\r\n\r\n\t@property({type: Number, reflect: true, attribute: false})\r\n\thostWidth = 0;\r\n\r\n\tprivate _resizeObserver: ResizeObserver | null = null;\r\n\r\n    constructor() {\r\n        super();\r\n\t\tthis.cardCreator = new MultiCardElementCreator();\r\n\t\tthis.addEventListener(CardContainerEvents.Back, (ev: Event) => {\r\n\t\t\tthis._handleBackEvent();\r\n\t\t})\r\n    }\r\n\r\n\tpublic override connectedCallback() {\r\n\t\tsuper.connectedCallback();\r\n\t\tthis.hostWidth = this.clientWidth;\r\n\t\tthis._resizeObserver = new ResizeObserver((entries) => {\r\n\t\t\tfor (const entry of entries) {\r\n\t\t\t\tif (entry.contentRect.width > 0) {\r\n\t\t\t\t\tthis.hostWidth = entry.contentRect.width;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis._resizeObserver.observe(this);\r\n\t}\r\n\r\n\tpublic override disconnectedCallback() {\r\n\t\tthis._resizeObserver?.disconnect();\r\n\t\tsuper.disconnectedCallback();\r\n\t}\r\n\r\n\tprotected CreateMultiLevelCardData(FetchedLevelData: FetchResult){\r\n\r\n\t\tlet mapCollection: Array<CardDataLevelMap> = [];\r\n\t\tconst cardDataLevelMap = this.CreateCards(\r\n\t\t\t{\r\n\t\t\t\tentries:[FetchedLevelData],\r\n\t\t\t\thasLevelOneImages: false\r\n\t\t\t}\r\n\t\t);\r\n\r\n\r\n\t\tif(cardDataLevelMap){\r\n\t\t\tmapCollection.push(cardDataLevelMap);\r\n\t\t}\r\n\t\tthis.toUnifiedMap(mapCollection)\r\n\r\n\r\n\t}\r\n\r\n\tprivate toUnifiedMap(ArrMap: Array<CardDataLevelMap>) {\r\n\t\tfor (const map of ArrMap) {\r\n\t\t\tif (map.has(\"root\") && map.size === 1) {\r\n\t\t\t\tmap.get('root')!.title = \"collections\";\r\n\t\t\t\tthis.cardData?.set(\"onlyLevelOne\", map.get(\"root\")!);\r\n\t\t\t} else {\r\n\t\t\t\tfor (const [key, value] of map) {\r\n\t\t\t\t\tif (key === \"root\") continue;\r\n\t\t\t\t\tconst existing = this.cardData?.get(key);\r\n\t\t\t\t\tif (existing && Array.isArray(existing.cards) && Array.isArray(value.cards)) {\r\n\t\t\t\t\t\texisting.cards.push(...value.cards);\r\n\t\t\t\t\t\tif (!existing.title && value.title) existing.title = value.title;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.cardData?.set(key, value);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected RefreshCardData(result: FetchResult | undefined): RefreshCardDataResult {\r\n\t\tif (result == undefined) {\r\n            return \"invalid\";\r\n        }\r\n        const old = this.cardData;\r\n\r\n        this.cardData = new Map<CardDataLevelKey, CardDataLevel>();\r\n        result.entries?.map((entry: FetchResult) => this.CreateMultiLevelCardData(entry));\r\n\r\n        this.initialAspectRatio = null;\r\n\r\n        if (old == this.cardData) {\r\n            return \"unchanged\";\r\n        }\r\n        return \"changed\";\r\n\t}\r\n\r\n\tgetTitleWithLevelKey(key: string | number | null) {\r\n\t\tif (key && this.cardData) {\r\n\t\t\tconst title = this.cardData.get(key)?.title;\r\n\t\t\tif (!title) return nothing;\r\n\t\t\treturn html`\r\n\t\t\t\t<fv-label i18n=\"${title}\" class=\"level-title\">${title}</fv-label>\r\n\t\t\t`;\r\n\t\t}\r\n\t\treturn nothing;\r\n\t}\r\n\r\n\tapplyAspectRatio(elementsToRender: HTMLElement[]): void {\r\n\t\tif (this.initialAspectRatio === null && elementsToRender.length > 0) {\r\n\t\t\tthis.initialAspectRatio = elementsToRender.length > 2 ? \"1 / 1\" : \"16 / 10\";\r\n\t\t}\r\n\r\n\t\tif (this.initialAspectRatio) {\r\n\t\t\telementsToRender.forEach(elem => {\r\n\t\t\t\tif (elem.style.getPropertyValue(\"--card-aspect-ratio\") !== this.initialAspectRatio) {\r\n\t\t\t\t\telem.style.setProperty(\"--card-aspect-ratio\", this.initialAspectRatio);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprotected override async Select(data: CardData): Promise<void> {\r\n\t\tif (data.click && typeof data.click['next-level-key'] === 'string') {\r\n\t\t\tconst nextLevelKey = data.click['next-level-key'];\r\n\r\n\t\t\tif (nextLevelKey.startsWith('LEVEL1:')) {\r\n\t\t\t\tthis.currentLevelKey = nextLevelKey;\r\n\t\t\t\tthis.initialAspectRatio = null;\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t} else if (nextLevelKey === '') {\r\n\t\t\t\tthis.currentLevelKey = null;\r\n\t\t\t\tthis.initialAspectRatio = null;\r\n\t\t\t\tthis.requestUpdate();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tawait super.Select(data);\r\n\t\tthis._dispatchStateChangeEvent();\r\n\t}\r\n\r\n\tpublic isInsideGroup(): boolean {\r\n\t\treturn this.currentLevelKey !== null && this.currentLevelKey.startsWith('LEVEL1:');\r\n\t}\r\n\r\n\tpublic _handleBackEvent(): void {\r\n\t\tif (this.currentLevelKey !== null) {\r\n\t\t\tthis.currentLevelKey = null;\r\n\t\t\tthis.initialAspectRatio = null;\r\n\t\t\tthis.requestUpdate();\r\n\t\t\tthis._dispatchStateChangeEvent();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _dispatchStateChangeEvent(): void {\r\n\t\tconst event = new CustomEvent('multi-level-state-changed', {\r\n\t\t\tdetail: {\r\n\t\t\t\tisInsideGroup: this.isInsideGroup()\r\n\t\t\t},\r\n\t\t\tbubbles: true,\r\n\t\t\tcomposed: true\r\n\t\t});\r\n\t\tthis.dispatchEvent(event);\r\n\t}\r\n}\r\n","import { css, unsafeCSS, html, TemplateResult } from \"lit\";\nimport style from \"./landscape-info.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-landscape-info\")\nexport class LandscapeInfo extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n    \n    constructor() {\n        super();\n    }\n\n    @property({ reflect: true, type: String })\n    text = \"\";\n\n    render(): TemplateResult<1> {\n        return html`\n            <div class=\"container\">\n                <div class=\"device\"></div>\n                <div class=\"message\" i18n=\"${ this.text }\"></div>\n            </div>\n        `;\n    }\n}","import { css, unsafeCSS, html, TemplateResult } from \"lit\";\nimport style from \"./catalog-information.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-catalog-information\")\nexport class CatalogInformationComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n    \n    constructor() {\n        super();\n    }\n\n    @property({ type: String, reflect: true, attribute: \"icon\" })\n    protected icon = \"\";\n\n    @property({ reflect: true, type: String })\n    title = \"\";\n    @property({ reflect: true, type: String })\n    text = \"\";\n\n    private getImage(): TemplateResult<1> {\n        return html`<i class=\"icon ${this.icon}\" part=\"icon\"></i>`;\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            <div class=\"container\">\n                <div class=\"image-container\">\n                    ${this.getImage()}\n                </div>\n                <div class=\"text-container\">\n                    <div class=\"title\" i18n=\"${this.title}\">${this.title}</div>\n                    <div class=\"text\" i18n=\"${this.text}\">${this.text}</div>\n                    <div class=\"button-container\"><slot name=\"button\"></slot></div>\n                </div>\n            </div>\n        `;\n    }\n}","import { customElement, property } from \"lit/decorators.js\";\r\nimport { BaseElement } from \"../base/base.component\";\r\nimport { TemplateResult, css, html, unsafeCSS } from \"lit\";\r\nimport style from \"./dimension-information.component.sass?inline\";\r\nimport { LocaleService } from \"@dh-software/webui-api\";\r\nimport { DimensionHelper } from \"../../../utils/dimension-helper.class\";\r\n\r\nexport type DecimalDivider = \",\" | \".\";// when adding possible dividers: DO NOT FORGET TO HANDLE IN getNoUnitValue() (in all inputs!)\r\n\r\n@customElement(\"fv-dimension-information\")\r\nexport class DimensionInformationComponent extends BaseElement {\r\n    static styles = [\r\n        super.styles || [],\r\n        css`${unsafeCSS(style)}`\r\n    ];\r\n\r\n    @property({ type: String, reflect: true, attribute: \"icon\" })\r\n    public icon = \"\";\r\n    @property({ type: String, reflect: true, attribute: \"src\" })\r\n    public src = \"\";\r\n    @property({ type: String, reflect: true, attribute: \"prefix\" })\r\n    public prefix = \"\";\r\n    @property({ type: Array, reflect: true, attribute: \"dimension\" })\r\n    public dimension: Array<number> | number = 0.0;\r\n    @property({ type: String, reflect: true, attribute: \"divider\" })\r\n    public divider = \"x\";\r\n    @property({ type: String, reflect: true, attribute: \"unit\" })\r\n    public unit = \"cm\";\r\n\r\n    @property({ type: Number, reflect: true, attribute: \"decimals\" })\r\n    public decimals = 1;\r\n    @property({ type: String, reflect: true, attribute: \"decimal-divider\" })\r\n    public decimalDivider: DecimalDivider = \".\";\r\n    @property({ type: Boolean, reflect: true, attribute: \"prevent-zero-decimals\" })\r\n    public preventZeroDecimals = false;\r\n\r\n    @property({ type: Object, reflect: true, attribute: \"dimension-text-keys\" })\r\n    public dimensionTextKeys: { [key: string]: string } = {\r\n        H: \"fv.generickatatree.h\",\r\n        B: \"fv.generickatatree.b\",\r\n        T: \"fv.generickatatree.t\"\r\n    };\r\n\r\n    private async UpdatePostLocalesModelRead() {\r\n        await LocaleService.IsFileRead();\r\n        this.requestUpdate();\r\n    }\r\n    constructor() {\r\n        super();// call baseElement constructor, do not register into locales model\r\n        this.baseOptions.registerLocalesModel = true;\r\n        this.UpdatePostLocalesModelRead();\r\n    }\r\n\r\n\r\n    private get unitifier(): number {\r\n        switch (this.unit) {\r\n            case \"cm\":\r\n                return 0.1;\r\n            case \"mm\":\r\n            default:\r\n                return 1;\r\n        }\r\n    }\r\n\r\n\r\n    private createDimensionTxt(dimension: number): string {\r\n        if (this.preventZeroDecimals) {\r\n            const dimensionInUnit = dimension * this.unitifier;\r\n            const dimensionDecimal = dimensionInUnit - Math.floor(dimensionInUnit);\r\n            if (dimensionDecimal < 0.1) {\r\n                return (dimensionInUnit).toFixed(0).replace(\".\", this.decimalDivider);\r\n            }\r\n        }\r\n        return (dimension * this.unitifier).toFixed(this.decimals).replace(\".\", this.decimalDivider);\r\n    }\r\n\r\n\r\n    private get dimtxt(): TemplateResult<1> {\r\n        const prefix = LocaleService.translate(this.prefix, this.prefix);\r\n        const unittxt = LocaleService.translate(\"dimension-information-unittxt-\" + this.unit, this.unit);\r\n\r\n        if (typeof this.dimension === \"number\") {\r\n            return html`\r\n                ${this.prefix ? html`<fv-label>${prefix}</fv-label>` : html``}\r\n                <fv-label>${this.createDimensionTxt(this.dimension)}</fv-label>\r\n                <fv-label>${unittxt}</fv-label>\r\n            `;\r\n        }\r\n\r\n        if (!Array.isArray(this.dimension)) {\r\n            console.error(\"this.dimension was not an array! type:\", typeof this.dimension);\r\n            return html``;\r\n        }\r\n\r\n        const createAxis = (dim: number, index: number, last: boolean) => {\r\n            const unittxt = LocaleService.translate(\"dimension-information-unittxt-\" + this.unit, this.unit);\r\n            const dimensionType = DimensionHelper.getDimensionTypeFromIndex(index);\r\n            const i18nKey = this.dimensionTextKeys[dimensionType] || '';\r\n\r\n            return html`\r\n                <div class=\"axis\">\r\n                    <fv-label i18n=\"${i18nKey}\">${dimensionType}</fv-label>\r\n                    <fv-label>${this.createDimensionTxt(dim)}</fv-label>\r\n                    <fv-label>${unittxt}</fv-label>\r\n                    ${last ? html`` : html`<fv-label>${this.divider}</fv-label>`}\r\n                </div>\r\n            `;\r\n        };\r\n\r\n        const dims = (this.dimension as Array<number>).filter(dim => dim > 0);\r\n        return html`${dims.map((value: number, index: number) => createAxis(value, index, index === dims.length - 1))}`;\r\n\r\n    }\r\n\r\n    protected render(): TemplateResult<1> {\r\n        if (this.icon && this.icon.length > 0) {\r\n            return html`\r\n                <fv-icon icon=\"${this.icon}\" src=\"${this.src}\"></fv-icon>\r\n                <div>${this.dimtxt}</div>\r\n            `;\r\n        }\r\n        return html`<div>${this.dimtxt}</div>`;\r\n    }\r\n}\r\n","import { BaseElement } from \"../base/base.component\";\nimport { css, html, PropertyDeclaration, PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./dimension-label.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { DimensionHelper } from \"./../../../utils/dimension-helper.class\";\n\n@customElement(\"fv-dimension-label\")\nexport class DimensionLabelComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Number, reflect: true, attribute: \"dimension-index\" })\n    public dimensionIndex = 0;\n\n    @property({ type: Object, reflect: true, attribute: \"dimension-text-keys\" })\n    public dimensionTextKeys: { [key: string]: string } = {\n        H: \"fv.heightInCm\",\n        B: \"fv.widthInCm\",\n        T: \"fv.depthInCm\"\n    };\n\n    constructor() {\n        super();\n\n        window.addEventListener(\"country-info\", ((ev: CustomEvent) => {\n            this.requestUpdate();\n        }) as EventListener);\n    }\n\n    private getDimensionTextKeyFromIndex(): string {\n        const dimensionType = DimensionHelper.getDimensionTypeFromIndex(this.dimensionIndex);\n        return this.dimensionTextKeys[dimensionType.toUpperCase()] || '';\n    }\n\n    protected render() {\n        const textKey = this.getDimensionTextKeyFromIndex();\n        return html`<fv-label class=\"custom\" i18n=\"${textKey}\">${textKey}</fv-label>`\n    }\n}\n","import { customElement, property } from \"lit/decorators.js\";\r\nimport { BaseElement } from \"../base/base.component\";\r\nimport { TemplateResult, css, html, unsafeCSS } from \"lit\";\r\nimport style from \"./dimensions-information.component.sass?inline\";\r\nimport { DecimalDivider } from \"./dimension-information.component\";\r\nimport { ifDefined } from 'lit/directives/if-defined.js';\r\n\r\nexport interface DimensionInformation {\r\n    prefix?: string,\r\n    dimension: Array<number> | number,\r\n    icon?: string,\r\n    src?: string,\r\n    divider?: string,\r\n    unit?: string,\r\n    decimals?: number,\r\n    \"decimal-divider\"?: DecimalDivider,\r\n    \"prevent-zero-decimals\"?: boolean,\r\n    order?: number,\r\n}\r\n\r\n@customElement(\"fv-dimensions-information\")\r\nexport class DimensionsInformationComponent extends BaseElement {\r\n    static styles = [\r\n        super.styles || [],\r\n        css`${unsafeCSS(style)}`\r\n    ];\r\n\r\n    @property({ type: Array, reflect: true, attribute: \"dimensions\" })\r\n    public dimensions: Array<DimensionInformation> = [];\r\n\r\n    constructor() {\r\n        super();\r\n    }\r\n    private createDimensionInformation(dimensionInfo: DimensionInformation) {\r\n        return html`\r\n            <fv-dimension-information\r\n                part=\"dimension\"\r\n                icon=\"${ifDefined(dimensionInfo.icon)}\"\r\n                src=\"${ifDefined(dimensionInfo.src)}\"\r\n                prefix=\"${dimensionInfo.prefix ? dimensionInfo.prefix : \"\"}\"\r\n                .dimension=\"${dimensionInfo.dimension}\"\r\n                divider=\"${dimensionInfo.divider ? dimensionInfo.divider : \"x\"}\"\r\n                unit=\"${dimensionInfo.unit ? dimensionInfo.unit : \"cm\"}\"\r\n                decimals=\"${dimensionInfo.decimals ? dimensionInfo.decimals : 1}\"\r\n                decimal-divider=\"${dimensionInfo[\"decimal-divider\"] ? dimensionInfo[\"decimal-divider\"] : \".\"}\"\r\n                ?prevent-zero-decimals=\"${dimensionInfo[\"prevent-zero-decimals\"]}\"\r\n            ></fv-dimension-information>\r\n        `;\r\n    }\r\n\r\n    protected render(): TemplateResult<1> {\r\n        return html`${this.dimensions.map(this.createDimensionInformation)}`;\r\n    }\r\n}\r\n","import { customElement, property, state } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport { TemplateResult, css, html, unsafeCSS, PropertyValues } from \"lit\";\nimport style from \"./dimension-inputs.component.sass?inline\";\n\nexport interface IDimensionInputData {\n    name?: string;\n    label: string;\n    values: number[];\n    selectedIndex?: number;\n}\n\nexport interface IDimensionInputChangeDetail {\n    index: number;\n    selectedIndex: number;\n    value: number;\n    name?: string;\n}\n\n@customElement(\"fv-dimension-inputs\")\nexport class DimensionInputsComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Array })\n    public dimensions: Array<IDimensionInputData> = [];\n\n    @property({ type: String, attribute: \"unit\" })\n    public unit = \"cm\";\n\n    @state()\n    private _selectedIndices: number[] = [];\n\n    constructor() {\n        super();\n        this.baseOptions.registerLocalesModel = true;\n        this.addEventListener(\"click\", (e_) => e_.stopPropagation());\n        this.addEventListener(\"pointerdown\", (e_) => e_.stopPropagation());\n    }\n\n    protected willUpdate(changedProperties_: PropertyValues) {\n        super.willUpdate(changedProperties_);\n        if (changedProperties_.has('dimensions')) {\n            this._selectedIndices = this.dimensions.map(dimension_ => dimension_.selectedIndex ?? 0);\n        }\n    }\n\n    private onSliderChange(dimensionIndex_: number, e_: CustomEvent<{ value: number }>) {\n        const selectedIndex = e_.detail.value;\n        this._selectedIndices = this._selectedIndices.map((v_, i_) => i_ === dimensionIndex_ ? selectedIndex : v_);\n\n        const dim = this.dimensions[dimensionIndex_];\n        this.dispatchEvent(new CustomEvent<IDimensionInputChangeDetail>(\"dimension-change\", {\n            detail: {\n                index: dimensionIndex_,\n                selectedIndex: selectedIndex,\n                value: dim.values[selectedIndex],\n                name: dim.name\n            },\n            bubbles: true,\n            composed: true\n        }));\n    }\n\n    private renderDimension(data_: IDimensionInputData, index_: number) {\n        const numValues = data_.values.length - 1;\n        const isAdjustable = numValues > 0;\n        const selectedIndex = this._selectedIndices[index_] ?? 0;\n        const displayValue = isAdjustable ? data_.values[selectedIndex] : data_.values[0];\n\n        return html`\n            <div class=\"dimension ${isAdjustable ? 'adjustable' : 'fixed'}\">\n                <div class=\"dimension-header\">\n                    <fv-label class=\"dimension-label\" i18n=\"${data_.label}\">${data_.label}</fv-label>\n                    <fv-label class=\"dimension-value\">${displayValue} ${this.unit}</fv-label>\n                </div>\n                <div class=\"dimension-slider-row\">\n                    <fv-label class=\"dimension-bound\">${data_.values[0]}</fv-label>\n                    <fv-basic-slider\n                        min=\"0\"\n                        max=\"${isAdjustable ? numValues : 1}\"\n                        step=\"1\"\n                        .value=\"${selectedIndex}\"\n                        ?disabled=\"${!isAdjustable}\"\n                        @slider-input=\"${(e_: CustomEvent<{ value: number }>) => this.onSliderChange(index_, e_)}\">\n                    </fv-basic-slider>\n                    <fv-label class=\"dimension-bound\">${data_.values[numValues]}</fv-label>\n                </div>\n            </div>\n        `;\n    }\n\n    protected render(): TemplateResult<1> {\n        return html`\n            ${this.dimensions.map((data_, i_) => this.renderDimension(data_, i_))}\n        `;\n    }\n}\n","import {nothing, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport {html, unsafeStatic} from \"lit/static-html.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport {repeat} from \"lit/directives/repeat.js\";\nimport {FetchParameters} from \"../../base/async.base.component\";\nimport {ComponentServiceSearchParams} from \"../../../../utils/component.service\";\nimport {EventHandlerEvent} from \"../../../../models/event-handler/event.handler.model\";\nimport {BaseElement} from \"../../base/base.component\";\nimport style from './card-container-filter-manager.component.style.sass?inline';\nimport {CardContainerSliderFilterComponent} from \"../containers\";\nimport {DimensionLabelComponent} from \"../../informationals\";\n\ninterface ManagedDimension {\n    index: number;\n    label: string;\n}\n\n@customElement(\"fv-dimension-filter-manager\")\nexport class CardContainerFilterManager extends BaseElement {\n\n    #defaultContainerTag = \"fv-flex-container\"\n\n    @property({type: String, reflect: true})\n    containerTag: string = this.#defaultContainerTag\n\n    @property({type: Array, reflect: true, attribute: \"filter-style-vars\"})\n    filterStyleVars: {[key: string]: string} = {};\n\n    @property({type: Object, reflect: true, attribute: \"base-settings\"})\n    baseSettings: FetchParameters = {};\n\n    @property({type: Array})\n    dimensions: ManagedDimension[] = [\n        {index: 0, label: 'width'},\n        {index: 1, label: 'depth'},\n        {index: 2, label: 'height'}\n    ];\n\n    @property({type: Object, reflect: true, attribute: \"target-query\"})\n    targetQuery: ComponentServiceSearchParams = {\n        tag: \"fv-card-container\",\n        query: \"*\"\n    }\n\n    @property({type: Array, reflect: true, attribute: \"base-classes\"})\n    baseClasses: string[] = [\"dimensions\"];\n\n    @property({type: String, reflect: true, attribute: \"identifier\"})\n    identifier: string = \"\";\n\n    @property({type: Boolean, reflect: true, attribute: 'use-cards'})\n    useCards = false;\n\n    @property({type: Number, reflect: true, attribute: 'max-entries'})\n    maxEntries = undefined;\n\n    @property({type: Object, reflect: true, attribute: \"on-filter-events\"})\n    public onCardFilterEvents: {\n        \"on-empty\"?: Array<EventHandlerEvent>,\n        \"over-max\"?: Array<EventHandlerEvent>,\n    } = {};\n\n    generateConfig(dim: ManagedDimension) {\n        const settings: any = JSON.parse(JSON.stringify(this.baseSettings));\n\n        if (!settings.fetch) settings.fetch = {};\n        if (!settings.fetch.parameters) settings.fetch.parameters = {};\n\n        settings.fetch.parameters[\"automatic-dimension-order-index\"] = dim.index;\n\n        if (dim.index > 0) {\n            settings.fetch.parameters[\"suspend-disable-source-on-first-clicked-container-of-method\"] = true;\n        }\n\n        settings.fetch.parameters[\"card-container-disable-source-selector\"] = this.targetQuery;\n\n        return settings;\n    }\n\n    // Disable shadowRoot so other components can query these children\n    protected createRenderRoot(): HTMLElement | DocumentFragment {\n        return this;\n    }\n\n    protected render(): TemplateResult {\n        const tagName = this.containerTag || this.#defaultContainerTag;\n        return html`\n            ${this.containerTag ? html`<${unsafeStatic(tagName)} class=\"filter-container\">` : nothing}\n                ${repeat(this.dimensions, (dim) => dim.index, (dim) => {\n                    const mergedSettings = this.generateConfig(dim);\n                    const identifierClass = `${this.identifier}`\n                    const childClasses = [...this.baseClasses, identifierClass, dim.label]\n                    const filterStyles = Object.entries(this.filterStyleVars).reduce((x, [key, value], index, arr) => {\n                        return x += `${key}: ${value}${++index === arr.length ? \"\" : \",\"}`\n                    }, \"\");\n                    \n                    const cardSliderFilter = new CardContainerSliderFilterComponent();\n                    cardSliderFilter.setAttribute(\"style\", `${filterStyles}`);\n                    cardSliderFilter.classList.add(...childClasses);\n                    cardSliderFilter.FetchParameters = mergedSettings;\n                    cardSliderFilter.onCardFilterEvents = this.onCardFilterEvents;\n                    cardSliderFilter.maxEntries = this.maxEntries;\n                    cardSliderFilter.useCards = this.useCards;\n                    cardSliderFilter.checkDimensions = `.${identifierClass}`;\n                    cardSliderFilter.mobileMode = this.mobileMode;\n                    \n                    const dimLabel = new DimensionLabelComponent();\n                    dimLabel.setAttribute(\"slot\", \"before\");\n                    dimLabel.dimensionIndex = dim.index;\n                    cardSliderFilter.appendChild(dimLabel);\n                    \n                    return cardSliderFilter;\n                })}\n            ${this.containerTag ? html`</${unsafeStatic(tagName)}>` : nothing}\n        `;\n    }\n\n}\n","import { html, nothing, PropertyValueMap, PropertyValues, unsafeCSS } from \"lit\";\nimport { BaseElement } from \"../../base/base.component\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { CardDataDropdownGroupItem, CardDataInputGroupItem, ICardDataInputSource, isCardDataSource } from \"../../../../models/card-container\";\nimport style from './card-container-input-manager.component.sass?inline';\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { IDropdownOptions } from \"../../dropdown/dropdown/dropdown.component\";\nimport { IDropdownItem } from \"../../dropdown/dropdown-item/dropdown-item.component\";\nimport { CardComponent } from \"../../cards\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport { IDimensionInputChangeDetail } from \"../../informationals/dimension-inputs.component\";\n\n@customElement('fv-card-container-input-manager')\nexport class CardContainerInputManagerComponent extends BaseElement {\n\n    static styles = [super.styles || [], unsafeCSS(style)]\n\n    @property({ type: Object })\n    card!: CardComponent;\n\n    protected firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        this.addEventListener(\"click\", (ev) => {\n            ev.preventDefault();\n        })\n    }\n\n    protected updated(_changedProperties: PropertyValueMap<this>) {\n        super.updated(_changedProperties);\n        if (_changedProperties.has(\"card\")) {\n            this.card?.style.setProperty(\"overflow\", \"visible\");\n        }\n    }\n\n    renderInput(input: CardDataInputGroupItem) {\n        return html`\n            <fv-labeled-input class=\"${classMap(input.classes || {})}\"\n                              moveable-placeholder\n                              @change=\"${(ev: Event) => this.valueChanged(ev, input)}\"\n                              @blur=\"${(ev: Event) => this.valueChanged(ev, input)}\"\n                              value=\"${input.value}\"\n                              type=\"${input.type}\"\n                              name=\"${input.name}\"\n                              min=\"${input.min}\"\n                              max=\"${input.max}\"\n                              ?readonly=\"${input.readonly}\"\n                              placeholder=\"${input.placeholder}\"\n                              ?required=\"${input.required}\"\n            >\n                ${input.suffix ? html`\n                    <div class=\"suffix-container\">\n                        <fv-label>${input.suffix}</fv-label>\n                    </div>\n                ` : nothing}\n            </fv-labeled-input>\n        `\n    }\n\n    renderInputs() {\n        const hasInputs = this.card.data.inputs?.length\n        if (!hasInputs) {\n            return nothing\n        }\n        return html`\n            <div class=\"inputs\">\n                ${this.card?.data?.inputs?.flatMap(x => x.items).map(x => {\n                    return this.renderInput(x);\n                })}\n            </div>\n        `\n    }\n\n    renderDropdown(inputData: CardDataDropdownGroupItem) {\n        const options = <IDropdownOptions>{\n            name: inputData.name,\n            items: inputData.values?.map(x => {\n                return <IDropdownItem>{\n                    value: x,\n                    text: `${x} ${inputData.suffix}`,\n                    active: inputData.value == x\n                }\n            })\n        }\n        const dropdownItemChanged = (ev: CustomEvent<IDropdownItem>) => {\n            this.valueChanged(ev, inputData);\n        }\n        return html`\n            <div class=\"dropdown-wrapper\">\n                <fv-label i18n=\"${inputData.placeholder}\">${inputData.placeholder}</fv-label>\n                <fv-dropdown @dropdown-item-changed=\"${dropdownItemChanged}\" name=\"${inputData.name}\" .dropdownOptions=\"${options}\" scrollbar compact></fv-dropdown>\n            </div>\n        `\n    }\n\n    renderDropdowns() {\n        const hasDropdowns = this.card?.data?.dropdowns?.length\n        if (!hasDropdowns) {\n            return nothing\n        }\n        return html`\n            <div class=\"dropdowns\">\n                ${this.card?.data?.dropdowns?.flatMap(x => x.items).map(x => {\n                    return this.renderDropdown(x);\n                })}\n            </div>\n        `\n    }\n\n    renderDimensionInputs() {\n        const ranges = this.card?.data?.[\"dimension-ranges\"];\n        if (!ranges?.length) return nothing;\n        const onDimChange = (ev: CustomEvent<IDimensionInputChangeDetail>) => {\n            const { name, value } = ev.detail;\n            if (name && this.card.cardContainerClickData?.context) {\n                const source: ICardDataInputSource = { name, value: value.toString() };\n                CardDataService.TextFieldChanged(this.card.data, this.card.cardContainerClickData.context, source);\n            }\n        };\n        return html`\n            <div class=\"dimension-inputs\">\n                <fv-dimension-inputs\n                    .dimensions=\"${ranges}\"\n                    @dimension-change=\"${onDimChange}\"\n                ></fv-dimension-inputs>\n            </div>\n        `;\n    }\n\n    render() {\n        return html`\n            ${this.renderInputs()}\n            ${this.renderDropdowns()}\n            ${this.renderDimensionInputs()}\n        `\n    }\n\n    valueChanged = (event: Event, entry: CardDataInputGroupItem | CardDataDropdownGroupItem) => {\n        const dataSource = event.target\n        if (isCardDataSource(dataSource) && this.card.cardContainerClickData?.context) {\n            CardDataService.TextFieldChanged(this.card.data, this.card.cardContainerClickData.context, dataSource);\n        }\n    }\n\n}\n","import { FetchParameters } from \"../../base/async.base.component\";\nimport { CardContainerCustomEvents, CardDataText } from \"../../../../models/card-container\";\n\n\n// ���������������������������������������������������������������������������\n// Defaults\n// ���������������������������������������������������������������������������\n\nexport const CONTAINER_DEFAULTS = {\n    TRIGGERS_NEXT:          true,\n    SKIP_ON_EMPTY:          true,\n    SKIP_ON_SINGLE_ENTRY:   false,\n    SKIP_ON_SINGLE_ENTRY_BACK: false,\n    NAVIGATE_BACK_ON_CLICK: false,\n    ADVANCE_TO_NEXT_ON_BACK: false,\n    RESET_ON_EMPTY_REFILL:  false,\n    BLOCK_IF_NEXT_EMPTY:    false,\n} as const;\n\nexport const LEVEL_DEFAULTS = {\n    LAYOUT: \"column\" as const,\n} as const;\n\n\n// ���������������������������������������������������������������������������\n// Interfaces\n// ���������������������������������������������������������������������������\n\nexport interface ContainerProperty {\n    key: string;\n    value: unknown;\n    attribute?: boolean;\n}\n\n/** The shared shape needed to instantiate & configure a card-container element. */\nexport interface BaseContainerConfig {\n    tag: string;\n    classes?: string[];\n    \"style-vars\"?: Record<string, string>;\n    \"fetch-parameters\"?: FetchParameters;\n    events?: CardContainerCustomEvents;\n    properties?: ContainerProperty[];\n    \"slots\"?: string[];\n}\n\nexport interface ContainerDefinition extends BaseContainerConfig {\n    /** @default true */\n    \"triggers-next\"?: boolean;\n    /** @default false */\n    \"navigate-back-on-click\"?: boolean;\n    /** @default false — after a navigate-back-on-click, drill straight into the next sibling (step through properties/values) */\n    \"advance-to-next-on-back\"?: boolean;\n    /** @default true */\n    \"skip-on-empty\"?: boolean;\n    /** @default false */\n    \"skip-on-single-entry\"?: boolean;\n    /** @default false — when set, navigating back also skips single-entry levels instead of landing on them */\n    \"skip-on-single-entry-back\"?: boolean;\n    /** @default false */\n    \"reset-on-empty-refill\"?: boolean;\n    /** Don't navigate forward if the immediate next level is empty. @default false */\n    \"block-if-next-empty\"?: boolean;\n\n    /**\n     * `[\"class-a\"]` → collect from named containers.\n     * `[]` → self-managed via source-elements-selectors.\n     * omitted → inherit from previous level.\n     */\n    \"filter-sources\"?: string[];\n}\n\n/** The per-container boolean behaviour flags (see {@link ContainerDefinition}). */\nexport type ContainerBoolFlag =\n    | \"triggers-next\"\n    | \"navigate-back-on-click\"\n    | \"advance-to-next-on-back\"\n    | \"skip-on-empty\"\n    | \"skip-on-single-entry\"\n    | \"skip-on-single-entry-back\"\n    | \"reset-on-empty-refill\"\n    | \"block-if-next-empty\";\n\nexport interface LevelDefinition {\n    containers: ContainerDefinition[];\n    /** @default \"column\" */\n    layout?: \"row\" | \"column\";\n    classes?: string[];\n    \"style-vars\"?: Record<string, string>;\n}\n\n/** Side view shown when a fixed card with a matching `view-key` is clicked. Static — no skip/forward/back-on-click logic. */\nexport type SideViewDefinition = BaseContainerConfig;\n\n\n// ���������������������������������������������������������������������������\n// Utilities\n// ���������������������������������������������������������������������������\n\nexport function applyProperty(element: Element, {key, value, attribute}: ContainerProperty): void {\n    if (typeof value === \"boolean\" && attribute) {\n        value ? element.setAttribute(key, \"\") : element.removeAttribute(key);\n    } else if (typeof value === \"object\" && attribute) {\n        element.setAttribute(key, JSON.stringify(value));\n    } else if (!attribute) {\n        (element as any)[key] = value;\n    } else {\n        element.setAttribute(key, String(value));\n    }\n}\n\nexport function extractCardTitle(txt: CardDataText | undefined): string | undefined {\n    if (!txt) return undefined;\n    return txt.title ?? Object.values(txt).find(v => typeof v === \"string\") as string | undefined;\n}\n","import { BaseCardContainer } from \"../base/base-card-container\";\nimport { FilterSelectionData, FilterSelectionStrategy } from \"../../../../models/card-container\";\nimport { ContainerDefinition } from \"./card-container-view.model\";\n\n/** Sentinel returned by {@link resolveFiltersForContainer}: the container manages its own filters. */\nexport const SELF_MANAGED_FILTERS = null;\n\n\n/** The container's current filter selection, normalised (NONE → OR), or undefined when it has none. */\nfunction getFilterSelection(container: BaseCardContainer): FilterSelectionData | undefined {\n    const filterKeys = container.Filter?.Filter;\n    if (!filterKeys?.length) return undefined;\n\n    const strategy = container.Filter!.Strategy;\n    return {\n        filter: filterKeys,\n        strategy: strategy === FilterSelectionStrategy.NONE ? FilterSelectionStrategy.OR : strategy,\n        priority: container.Filter!.Prio,\n        \"additional-params\": container.Filter!.AdditionalParams,\n    };\n}\n\nfunction collectFilters(containers: readonly BaseCardContainer[]): FilterSelectionData[] {\n    const filters: FilterSelectionData[] = [];\n    for (const container of containers) {\n        const selection = getFilterSelection(container);\n        if (selection) filters.push(selection);\n    }\n    return filters;\n}\n\n/**\n * Resolves the filters to feed a container before it fetches, from its `filter-sources`:\n * - `[\"class-a\"]` → collect from those named sibling containers\n * - `[]` → self-managed (returns {@link SELF_MANAGED_FILTERS})\n * - omitted → inherit from the source level's containers\n */\nexport function resolveFiltersForContainer(\n    definition: ContainerDefinition,\n    sourceLevelIndex: number,\n    containerByClass: Map<string, BaseCardContainer>,\n    containersByLevel: BaseCardContainer[][],\n): FilterSelectionData[] | null {\n    const explicitSources = definition[\"filter-sources\"];\n\n    if (explicitSources !== undefined && explicitSources.length === 0) return SELF_MANAGED_FILTERS;\n    if (explicitSources?.length) {\n        const sources = explicitSources\n            .map(name => containerByClass.get(name))\n            .filter((c): c is BaseCardContainer => c !== undefined);\n        return collectFilters(sources);\n    }\n    if (sourceLevelIndex < 0) return [];\n    return collectFilters(containersByLevel[sourceLevelIndex] ?? []);\n}\n","import { ReactiveController, ReactiveControllerHost } from \"lit\";\n\nexport type SlideDirection = \"forward\" | \"back\";\n\n/** The bits of the host the slide controller drives / reads. */\nexport interface SlideHost extends ReactiveControllerHost {\n    /** Opt-in flag — when false the controller tracks direction only and never keeps an underlay. */\n    readonly slideAnimation: boolean;\n    /** Reflected to the `slide-direction` attribute the CSS keyframes select on. */\n    slideDirection: SlideDirection;\n}\n\n/**\n * Owns the \"what slides over what\" bookkeeping for the level / side-view slide-over.\n *\n * The entering level (or side-view) animates *over* the element named here, which is kept visible\n * underneath until the animation ends. Exactly one underlay is tracked at a time:\n * - {@link fromLevel} — a level kept under an entering level or an opening side-view\n * - {@link fromSideView} — a closing side-view kept under the level sliding back in\n */\nexport class SlideController implements ReactiveController {\n    private _fromLevel: number | null = null;\n    private _fromSideView: string | null = null;\n\n    constructor(private readonly host: SlideHost) {\n        host.addController(this);\n    }\n\n    hostConnected(): void { /* nothing to wire on connect */ }\n\n    /** Level kept visible beneath the entering level / side-view (null = no slide running). */\n    get fromLevel(): number | null { return this._fromLevel; }\n    /** Side-view kept visible beneath the level sliding back in on close (null = none). */\n    get fromSideView(): string | null { return this._fromSideView; }\n\n    /** Forward level step — the source level stays under the entering one. */\n    enterForward(sourceLevel: number): void {\n        this.host.slideDirection = \"forward\";\n        this.begin(sourceLevel, null);\n    }\n\n    /** Back level step — the leaving level stays under the entering one. */\n    enterBack(leavingLevel: number): void {\n        this.host.slideDirection = \"back\";\n        this.begin(leavingLevel, null);\n    }\n\n    /** Side-view opens — it slides over (masks) the current level. */\n    openSideView(currentLevel: number): void {\n        this.host.slideDirection = \"forward\";\n        this.begin(currentLevel, null);\n    }\n\n    /** Side-view closes — the level slides back in over the still-visible side-view. */\n    closeSideView(sideViewKey: string, currentLevel: number): void {\n        this.host.slideDirection = \"back\";\n        this.begin(currentLevel, sideViewKey);\n    }\n\n    /** `animationend` / `animationcancel` handler — drops whatever was kept underneath. */\n    readonly onEnd = (e: AnimationEvent): void => {\n        if (e.animationName.startsWith(\"ccv-slide\")) this.set(null, null);\n    };\n\n    /** Arms the underlay for a slide, but only when the animation is actually enabled. */\n    private begin(fromLevel: number | null, fromSideView: string | null): void {\n        if (!this.host.slideAnimation) return;\n        this.set(fromLevel, fromSideView);\n    }\n\n    private set(fromLevel: number | null, fromSideView: string | null): void {\n        if (this._fromLevel === fromLevel && this._fromSideView === fromSideView) return;\n        this._fromLevel = fromLevel;\n        this._fromSideView = fromSideView;\n        this.host.requestUpdate();\n    }\n}\n","import {css, html, nothing, PropertyDeclaration, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, property, state} from \"lit/decorators.js\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {styleMap} from \"lit/directives/style-map.js\";\nimport {ifDefined} from \"lit/directives/if-defined.js\";\nimport {BaseElement} from \"../../base/base.component\";\nimport {BaseCardContainer} from \"../base/base-card-container\";\nimport {CardContainerBackButtonComponent} from \"../controls\";\nimport {\n    CardContainerBackEvent,\n    CardContainerEvents,\n    CardDataLevel,\n    CardDataLevelKey,\n    CardDataLevelMap,\n    UpdateAdditionalDataEvent,\n    UpdateAdditionalDataEventInit,\n    CardContainerAsyncEventDispatcher,\n    CARD_VIEW_KEY\n} from \"../../../../models/card-container\";\nimport {CardDataService} from \"../../../../utils/card.data.service\";\nimport {CardClickEventInit} from \"../../cards/base/base.card\";\nimport style from \"./card-container-view.component.sass?inline\";\nimport { EventHandlerService } from \"../../../../utils/event.handler.service\";\nimport { EventHandlerEvent } from \"../../../../models/event-handler/event.handler.model\";\nimport {\n    CONTAINER_DEFAULTS,\n    LEVEL_DEFAULTS,\n    applyProperty,\n    extractCardTitle,\n    type BaseContainerConfig,\n    type ContainerDefinition,\n    type ContainerBoolFlag,\n    type LevelDefinition,\n    type SideViewDefinition,\n} from \"./card-container-view.model\";\n\n// Re-exported so existing consumers can keep importing these from the component entrypoint.\nexport type {\n    ContainerProperty,\n    BaseContainerConfig,\n    ContainerDefinition,\n    ContainerBoolFlag,\n    LevelDefinition,\n    SideViewDefinition,\n} from \"./card-container-view.model\";\nimport { SELF_MANAGED_FILTERS, resolveFiltersForContainer } from \"./card-container-view.filters\";\nimport { SlideController } from \"./card-container-view.slide.controller\";\n\n\n// ���������������������������������������������������������������������������\n// Back-button protocol helper\n// ���������������������������������������������������������������������������\n\nclass BackButtonAdditionalData {\n    private readonly data = new Map<string, unknown>();\n    constructor(private readonly host: CardContainerViewComponent) {}\n\n    Set(key: string, value: unknown): void  { this.data.set(key, value); }\n    Exists(key: string): boolean             { return this.data.has(key); }\n    Remove(key: string): void                { this.data.delete(key); }\n    Reset(): void                            { this.data.clear(); }\n\n    Get(key: string, fallback: unknown): unknown {\n        this.host.Dispatcher.dispatch(done => new UpdateAdditionalDataEvent(key, done));\n        return this.data.get(key) ?? fallback;\n    }\n}\n\n\n// ���������������������������������������������������������������������������\n// Component\n// ���������������������������������������������������������������������������\n\n@customElement(\"fv-card-container-view\")\nexport class CardContainerViewComponent extends BaseElement {\n    static styles = [super.styles || [], css`${unsafeCSS(style)}`];\n\n    // ── Properties ──────────────────────────────────────────────────────\n\n    @property({type: Array, reflect: false, attribute: \"levels\"})\n    levels: LevelDefinition[] = [];\n\n    @property({type: Boolean, reflect: true, attribute: \"show-internal-back-button\"})\n    showInternalBackButton = false;\n\n    @property({type: String, reflect: true, attribute: \"back-button-icon\"})\n    backButtonIcon = \"\";\n\n    @property({type: String, reflect: true, attribute: \"back-button-class\"})\n    backButtonClass = \"\";\n\n    @property({type: String, reflect: false, attribute: \"back-button-text\"})\n    backButtonText = \"\";\n\n    @property({type: Boolean, reflect: true, attribute: \"text-in-button\"})\n    textInButton = false;\n\n    /** Opt-in: slide the entering level / side-view on forward/back navigation. */\n    @property({type: Boolean, reflect: true, attribute: \"slide-animation\"})\n    slideAnimation = false;\n\n    /** Reflected for the CSS direction selectors; set by the navigate / side-view handlers. */\n    @property({type: String, reflect: true, attribute: \"slide-direction\"})\n    slideDirection: \"forward\" | \"back\" = \"forward\";\n\n    @property({type: Number, reflect: true, attribute: \"active-level-index\"})\n    activeLevelIndex = 0;\n\n    @property({type: Array, reflect: false, attribute: \"level-changed-events\" })\n    levelChangedEvents: Array<EventHandlerEvent> | undefined = undefined;\n\n    /**\n     * Map of side-view-key → container definition. A side view is shown when a fixed card\n     * carrying the same `view-key` is clicked; back dismisses it and returns to the previous level.\n     */\n    @property({type: Object, reflect: false, attribute: \"fixed-card-views\"})\n    fixedCardViews: { [key: string]: SideViewDefinition } = {};\n\n    // ── Reactive state ──────────────────────────────────────────────────\n\n    @state() private activeLevelIsEmpty = false;\n    @state() private activeSideViewKey: string | null = null;\n    @state() private activeSideViewTitle: string | null = null;\n\n    // ── Internal state ──────────────────────────────────────────────────\n\n    /** Owns the slide-over bookkeeping (which level/side-view is kept under the entering one). */\n    private readonly slide = new SlideController(this);\n    private navigationHistory: number[] = [];\n    private containersByLevel: BaseCardContainer[][] = [];\n    private containerByClass = new Map<string, BaseCardContainer>();\n    private clickedTitleByLevel = new Map<number, string>();\n    private skipInProgress = false;\n    private advancing = false;\n    private suppressNextLevelFetch = false;\n    private sideViewContainerByKey = new Map<string, BaseCardContainer>();\n\n    public readonly AdditionalData = new BackButtonAdditionalData(this);\n\n    private get canGoBack(): boolean {\n        return this.activeSideViewKey !== null || this.navigationHistory.length > 0;\n    }\n\n    // ── Constructor ─────────────────────────────────────────────────────\n\n    constructor() {\n        super();\n\n        this.addEventListener(CardContainerEvents.Back, (e: Event) => {\n            e.stopPropagation();\n\n            // Side view active. If its container still has internal levels to pop (e.g. an\n            // fv-level-pages-card-container drilled past its root), delegate Back to it so it steps\n            // back one level. Only once it reports it's at its root do we dismiss the side view.\n            if (this.activeSideViewKey !== null) {\n                const sideContainer = this.sideViewContainerByKey.get(this.activeSideViewKey);\n                if (sideContainer?.CardContainerView_BackButtonOverwrite) {\n                    sideContainer.Dispatcher.dispatch(done => new CardContainerBackEvent(done));\n                    this.syncBackButtonVisibility();\n                    return;\n                }\n                this.deactivateSideView();\n                return;\n            }\n\n            const activeLevel = this.containersByLevel[this.activeLevelIndex];\n            for (const container of activeLevel) {\n                if (container.CardContainerView_BackButtonOverwrite) {\n                    container.Dispatcher.dispatch(done => new CardContainerBackEvent(done));\n                    this.syncBackButtonVisibility();\n                    return;\n                }\n            }\n\n            this.navigateBack();\n        });\n\n        this.addEventListener(CardContainerEvents.UpdateAdditionalData, (event: UpdateAdditionalDataEventInit) => {\n            const key = event.detail?.key;\n            if (!key) {\n                return;\n            }\n            if (key === \"show-back-button\") {\n                this.AdditionalData.Set(key, this.canGoBack);\n            } else if (key === \"back-button-txt\") {\n                const text = this.resolveBackButtonText();\n                if (text.length > 0) this.AdditionalData.Set(key, text);\n            }\n            event.detail?.[\"post-event\"]();\n        });\n    }\n\n    // ── Lifecycle ────────────────────────────────────────────────────────\n\n    protected shouldUpdate(changedProperties: PropertyValues): boolean {\n        if (this.advancing) return false;\n        return super.shouldUpdate(changedProperties);\n    }\n\n    protected willUpdate(changedProperties: PropertyValues): void {\n        super.willUpdate(changedProperties);\n        if (changedProperties.has(\"activeLevelIndex\")) {\n            const previous = changedProperties.get(\"activeLevelIndex\") as number | undefined;\n            if (previous === this.activeLevelIndex) {\n                changedProperties.delete(\"activeLevelIndex\");\n            }\n        }\n    }\n\n    protected updated(changedProperties: PropertyValues): void {\n        super.updated(changedProperties);\n        if (changedProperties.has(\"levels\")) this.buildContainers();\n        if (changedProperties.has(\"fixedCardViews\")) this.buildSideViewContainers();\n        if (changedProperties.has(\"activeSideViewKey\")) this.syncBackButtonVisibility();\n\n        if (changedProperties.has(\"activeLevelIndex\")) {\n            const previousLevel = changedProperties.get(\"activeLevelIndex\") as number | undefined;\n            const suppressFetch = this.suppressNextLevelFetch; // one-shot guard set by navigateForward\n            this.suppressNextLevelFetch = false;\n            if (previousLevel !== undefined && this.levelChangedEvents) {\n                EventHandlerService.dispatchEventList(this.levelChangedEvents, false);\n            }\n\n            if (this.activeLevelIndex === 0 && this.navigationHistory.length > 0) {\n                this.resetToFirstLevel();\n            } else if (previousLevel !== undefined && this.activeLevelIndex > previousLevel) {\n                if (!this.navigationHistory.includes(previousLevel)) {\n                    this.navigationHistory.push(previousLevel);\n                }\n                if (!suppressFetch) this.fetchLevelContainers(this.activeLevelIndex, previousLevel);\n                this.syncBackButtonState();\n            } else {\n                this.syncBackButtonVisibility();\n            }\n        }\n\n        // Cheap and idempotent (only flips hideElement when it actually changes), so we re-sync on\n        // every update — this also covers slide-state changes, which the SlideController drives\n        // outside the reactive-property system.\n        this.syncContainerVisibility();\n    }\n\n    private syncContainerVisibility(): void {\n        const sideViewActive = this.activeSideViewKey !== null;\n\n        const apply = (container: BaseCardContainer, hidden: boolean): void => {\n            if (!container.events?.show && !container.events?.hide) return;\n            if (container.hideElement !== hidden) container.hideElement = hidden;\n        };\n\n        this.containersByLevel.forEach((containers, levelIndex) => {\n            // a level kept under a slide-over stays visible until the slide ends, so the entering\n            // level / side-view actually has something to slide over\n            const masked = levelIndex === this.slide.fromLevel;\n            const hidden = !masked && (sideViewActive || levelIndex !== this.activeLevelIndex);\n            for (const container of containers) apply(container, hidden);\n        });\n\n        for (const [key, container] of this.sideViewContainerByKey) {\n            // keep the closing side-view's content visible while the level slides back over it\n            const masked = key === this.slide.fromSideView;\n            apply(container, !masked && key !== this.activeSideViewKey);\n        }\n    }\n\n    disconnectedCallback(): void {\n        this.teardownContainers();\n        super.disconnectedCallback();\n    }\n\n    // ���������������������������������������������������������������������\n    // Container lifecycle\n    // ���������������������������������������������������������������������\n\n    private teardownContainers(): void {\n        this.containersByLevel = [];\n        this.containerByClass.clear();\n        this.clickedTitleByLevel.clear();\n        this.navigationHistory = [];\n        this.activeLevelIndex = 0;\n        this.activeLevelIsEmpty = false;\n        this.activeSideViewKey = null;\n        this.activeSideViewTitle = null;\n    }\n\n    /** Builds the side-view containers from `fixedCardViews`. Called when the property changes. */\n    private buildSideViewContainers(): void {\n        this.sideViewContainerByKey.clear();\n        const keys = Object.keys(this.fixedCardViews);\n        if (keys.length === 0) return;\n\n        const wrappers = this.renderRoot.querySelectorAll<HTMLDivElement>(\".ccv-side-view-wrapper\");\n        keys.forEach((key, i) => {\n            const wrapper = wrappers[i];\n            if (!wrapper) return;\n            wrapper.innerHTML = \"\";\n\n            const container = this.configureContainer(this.fixedCardViews[key]);\n            container.classList.add(`ccv-side-view-${key}`);\n            wrapper.appendChild(container);\n            this.sideViewContainerByKey.set(key, container);\n        });\n    }\n\n    private buildContainers(): void {\n        this.teardownContainers();\n        if (this.levels.length === 0) return;\n\n        const wrappers = this.renderRoot.querySelectorAll<HTMLDivElement>(\".ccv-level-wrapper\");\n\n        for (let levelIndex = 0; levelIndex < this.levels.length; levelIndex++) {\n            const wrapper = wrappers[levelIndex];\n            if (!wrapper) continue;\n            // Only wipe the inner cards-host so the surrounding `<slot name=\"before-level-N\">` /\n            // `<slot name=\"after-level-N\">` elements survive (light-DOM children projected via\n            // those slots stay rendered).\n            const cardsHost = wrapper.querySelector<HTMLDivElement>(\".ccv-level-cards\") ?? wrapper;\n            cardsHost.innerHTML = \"\";\n\n            const definitions = this.getContainerDefinitions(levelIndex);\n            const containers: BaseCardContainer[] = [];\n\n            for (let containerIndex = 0; containerIndex < definitions.length; containerIndex++) {\n                const definition = definitions[containerIndex];\n                const container = this.createContainer(definition, levelIndex, containerIndex);\n                this.wireContainerEvents(container, definition, levelIndex, containerIndex);\n                containers.push(container);\n                cardsHost.appendChild(container);\n            }\n\n            this.containersByLevel.push(containers);\n        }\n\n        this.syncBackButtonState();\n    }\n\n    /** Instantiates a container element and applies the shared config: classes, style-vars, fetch-parameters, events, properties and slots. */\n    private configureContainer(config: BaseContainerConfig): BaseCardContainer {\n        const container = document.createElement(config.tag) as BaseCardContainer;\n\n        if (config.classes) container.classList.add(...config.classes);\n        for (const [prop, value] of Object.entries(config[\"style-vars\"] ?? {})) {\n            container.style.setProperty(prop, value);\n        }\n        if (config[\"fetch-parameters\"]) container.FetchParameters = config[\"fetch-parameters\"];\n        if (config.events) container.events = config.events;\n        for (const prop of config.properties ?? []) applyProperty(container, prop);\n\n        for (const slot of config[\"slots\"] ?? []) {\n            const slotElement = document.createElement(\"slot\");\n            slotElement.name = slot;\n            slotElement.slot = slot;\n            container.appendChild(slotElement);\n        }\n\n        return container;\n    }\n\n    private createContainer(definition: ContainerDefinition, levelIndex: number, containerIndex: number): BaseCardContainer {\n        const container = this.configureContainer(definition);\n        container.classList.add(`ccv-l${levelIndex}-c${containerIndex}`);\n        for (const cls of definition.classes ?? []) this.containerByClass.set(cls, container);\n        return container;\n    }\n\n    private wireContainerEvents(container: BaseCardContainer, definition: ContainerDefinition, levelIndex: number, containerIndex: number): void {\n        const triggersForward = definition[\"triggers-next\"] ?? CONTAINER_DEFAULTS.TRIGGERS_NEXT;\n        const navigatesBack = definition[\"navigate-back-on-click\"] ?? CONTAINER_DEFAULTS.NAVIGATE_BACK_ON_CLICK;\n\n        if (triggersForward || navigatesBack) {\n            container.addEventListener(\"cardclicked\", (event: CardClickEventInit) => {\n                this.handleCardClicked(levelIndex, event, navigatesBack);\n            });\n        }\n\n        // Fixed-card view-key → activate the matching side view. cardclick fires for fixed cards\n        // (see base.card.ts) and carries the view-key on `data.additional`.\n        container.addEventListener(\"cardclick\", (event: CardClickEventInit) => {\n            const data = event.detail?.data;\n            const viewKey = data?.additional?.[CARD_VIEW_KEY] as string | undefined;\n            if (viewKey && this.fixedCardViews[viewKey]) {\n                this.activateSideView(viewKey, extractCardTitle(data?.txt));\n            }\n        });\n\n        container.addEventListener(CardContainerEvents.CardContainerPostFill, () => {\n            this.handleContainerPostFill(levelIndex, containerIndex);\n        });\n    }\n\n    /** Switches the view to the named side view; current level is hidden until back is pressed. */\n    private activateSideView(key: string, title?: string): void {\n        if (!this.fixedCardViews[key]) return;\n        this.slide.openSideView(this.activeLevelIndex); // slides over (masks) the current level\n        this.activeSideViewKey = key;\n        this.activeSideViewTitle = title ?? null;\n        this.syncBackButtonState();\n    }\n\n    /** Dismisses the active side view and returns to the previous level (no history change). */\n    private deactivateSideView(): void {\n        if (this.activeSideViewKey !== null) {\n            this.slide.closeSideView(this.activeSideViewKey, this.activeLevelIndex); // level slides back over it\n        }\n        this.activeSideViewKey = null;\n        this.activeSideViewTitle = null;\n        this.syncBackButtonVisibility();\n    }\n\n    // ���������������������������������������������������������������������\n    // Level & container resolution\n    // ���������������������������������������������������������������������\n\n    /** Supports both `containers` array format and legacy flat format. */\n    private getContainerDefinitions(levelIndex: number): ContainerDefinition[] {\n        const level = this.levels[levelIndex];\n        if (!level) return [];\n        return level.containers ?? ((level as any).tag ? [level as unknown as ContainerDefinition] : []);\n    }\n\n    private isLevelEmpty(levelIndex: number): boolean {\n        const containers = this.containersByLevel[levelIndex];\n        return !containers?.length || containers.every(c => c.isEmpty());\n    }\n\n    // ���������������������������������������������������������������������\n    // Navigation\n    // ���������������������������������������������������������������������\n\n    private async navigateForward(): Promise<void> {\n        if (this.activeLevelIndex >= this.levels.length - 1) return;\n\n        const sourceLevelIndex = this.activeLevelIndex;\n        this.navigationHistory.push(this.activeLevelIndex);\n        let candidateIndex = this.activeLevelIndex + 1;\n\n        while (candidateIndex <= this.levels.length - 1) {\n            await this.fetchLevelContainers(candidateIndex, sourceLevelIndex);\n\n            const empty = this.isLevelEmpty(candidateIndex);\n            const block = this.levelFlag(sourceLevelIndex, \"block-if-next-empty\", CONTAINER_DEFAULTS.BLOCK_IF_NEXT_EMPTY);\n\n            if (!empty) {\n                if (this.levelFlag(candidateIndex, \"skip-on-single-entry\", CONTAINER_DEFAULTS.SKIP_ON_SINGLE_ENTRY) && this.checkSkipOnSingleEntry(candidateIndex)) {\n                    await this.autoSelectSingleEntry(candidateIndex);\n                    this.clickedTitleByLevel.delete(candidateIndex);\n                    this.navigationHistory.push(candidateIndex);\n                    candidateIndex++;\n                    continue;\n                }\n                // Arm the slide in the SAME update as activeLevelIndex so it only applies to the\n                // entering level — doing it before the await lets it animate the still-visible source\n                // level too (the \"animation runs twice\" bug).\n                this.slide.enterForward(sourceLevelIndex);\n                this.suppressNextLevelFetch = true; // already fetched here — don't let updated() refetch mid-slide\n                this.activeLevelIndex = candidateIndex;\n                this.activeLevelIsEmpty = false;\n                return;\n            }\n\n            if (block) {\n                this.revertHistoryTo(sourceLevelIndex);\n                this.navigationHistory.pop();\n                return;\n            }\n\n            this.clickedTitleByLevel.delete(candidateIndex);\n            this.navigationHistory.push(candidateIndex);\n            candidateIndex++;\n        }\n\n        this.revertHistoryTo(sourceLevelIndex);\n        if (this.canGoBack) await this.navigateBack();\n    }\n\n    private async navigateBack(): Promise<void> {\n        if (!this.canGoBack) return;\n        const leavingLevel = this.activeLevelIndex;\n\n        this.clearLevelFilters(this.activeLevelIndex);\n\n        let targetIndex = this.navigationHistory.pop()!;\n        while (this.navigationHistory.length > 0 && (\n            this.isLevelEmpty(targetIndex)\n            || (this.levelFlag(targetIndex, \"skip-on-single-entry-back\", CONTAINER_DEFAULTS.SKIP_ON_SINGLE_ENTRY_BACK) && this.checkSkipOnSingleEntry(targetIndex))\n        )) {\n            this.clearLevelFilters(targetIndex);\n            targetIndex = this.navigationHistory.pop()!;\n        }\n\n        for (const container of this.containersByLevel[targetIndex] ?? []) {\n            container.dispatchEvent(new Event(CardContainerEvents.Back, { bubbles: false }));\n        }\n\n        this.slide.enterBack(leavingLevel); // keep the leaving level visible under the slide\n        this.activeLevelIndex = targetIndex;\n        this.activeLevelIsEmpty = false;\n        this.syncBackButtonVisibility();\n    }\n\n    private resetToFirstLevel(): void {\n        for (let i = this.containersByLevel.length - 1; i >= 0; i--) this.clearLevelFilters(i);\n        this.navigationHistory = [];\n        this.clickedTitleByLevel.clear();\n        this.activeLevelIndex = 0;\n        this.activeLevelIsEmpty = false;\n        this.syncBackButtonVisibility();\n    }\n\n    // ── Navigation helpers ───────────────────────────────────────────────\n\n    private async fetchLevelContainers(levelIndex: number, sourceLevelIndex: number): Promise<void> {\n        const definitions = this.getContainerDefinitions(levelIndex);\n        const containers = this.containersByLevel[levelIndex] ?? [];\n\n        for (let i = 0; i < containers.length; i++) {\n            const filters = resolveFiltersForContainer(definitions[i], sourceLevelIndex, this.containerByClass, this.containersByLevel);\n            if (filters !== SELF_MANAGED_FILTERS) containers[i].States.SelectedFilters = filters;\n            containers[i].Refetch();\n        }\n\n        await CardDataService.WaitForAllCardContainerFetchPromises();\n    }\n\n    /** True when any container definition at the level sets the given boolean flag (else `fallback`). */\n    private levelFlag(levelIndex: number, key: ContainerBoolFlag, fallback: boolean): boolean {\n        return this.getContainerDefinitions(levelIndex).some(def => def[key] ?? fallback);\n    }\n\n    private async autoSelectSingleEntry(levelIndex: number): Promise<void> {\n        this.skipInProgress = true;\n        for (const container of this.containersByLevel[levelIndex] ?? []) {\n            if (container.RootLevelCardCount === 1) {\n                container.TriggerCardClick(0, false); // hidden container → applies the selection without navigating\n                break;\n            }\n        }\n        await CardDataService.WaitForAllCardContainerFetchPromises();\n        this.skipInProgress = false;\n    }\n\n    /**\n     * After a navigate-back-on-click returns to a list level, drill straight into the sibling\n     * after the one just configured — stepping through properties/values. Uses each container's\n     * last-clicked card to locate the position; no-ops at the end of the list (stays on the list).\n     */\n    private async advanceToNextSibling(): Promise<boolean> {\n        await Promise.all(this.containersByLevel[this.activeLevelIndex].map(x => x.updateComplete));\n        for (const container of this.containersByLevel[this.activeLevelIndex] ?? []) {\n            const lastKey = container.LastClicked?.click?.[\"level-key\"];\n            if (lastKey === undefined) continue;\n\n            const cards = container.CardData?.get(container.Settings.Fetch[\"root-level\"])?.cards ?? [];\n            const lastIndex = cards.findIndex(c => c.click?.[\"level-key\"] === lastKey);\n            if (lastIndex >= 0 && container.TriggerCardClick(lastIndex + 1, false)) {\n                return true; // drilled into the next sibling\n            }\n        }\n        return false;\n    }\n\n    private finishAdvancing(): void {\n        if (!this.advancing) return;\n        this.advancing = false;\n        this.requestUpdate();\n    }\n\n    private clearLevelFilters(levelIndex: number): void {\n        for (const container of this.containersByLevel[levelIndex] ?? []) {\n            container.Filter?.Reset(false, container.Context);\n            container.States.ResetSelectedFilters();\n        }\n    }\n\n    private revertHistoryTo(levelIndex: number): void {\n        while (this.navigationHistory.length > 0 && this.navigationHistory[this.navigationHistory.length - 1] >= levelIndex) {\n            this.navigationHistory.pop();\n        }\n        this.navigationHistory.push(levelIndex);\n    }\n\n\n    // ���������������������������������������������������������������������\n    // Event handlers\n    // ���������������������������������������������������������������������\n\n    private async handleCardClicked(levelIndex: number, event: CardClickEventInit, navigatesBack: boolean): Promise<void> {\n        if (levelIndex !== this.activeLevelIndex) return;\n        if (!event.detail?.data?.click) return;\n\n        const title = extractCardTitle(event.detail.data.txt);\n        if (title) this.clickedTitleByLevel.set(levelIndex, title);\n\n        if (navigatesBack) {\n            const advance = this.levelFlag(levelIndex, \"advance-to-next-on-back\", CONTAINER_DEFAULTS.ADVANCE_TO_NEXT_ON_BACK);\n            if (advance) this.advancing = true; // hold the view so the prev-level doesn't flash\n            await this.navigateBack();\n            if (advance && await this.advanceToNextSibling()) {\n                return;\n            }\n            this.finishAdvancing();\n            return;\n        }\n        if (this.activeLevelIsEmpty || this.activeLevelIndex >= this.levels.length - 1) {\n            this.finishAdvancing();\n            return;\n        }\n        await this.navigateForward();\n        this.finishAdvancing();\n    }\n\n    private async handleContainerPostFill(levelIndex: number, containerIndex: number): Promise<void> {\n        if (levelIndex !== this.activeLevelIndex) return;\n        if (this.skipInProgress) return;\n\n        const definition = this.getContainerDefinitions(levelIndex)[containerIndex];\n        const container = this.containersByLevel[levelIndex]?.[containerIndex];\n        if (!container || !definition) return;\n\n        this.activeLevelIsEmpty = this.isLevelEmpty(this.activeLevelIndex);\n\n        if ((definition[\"reset-on-empty-refill\"] ?? CONTAINER_DEFAULTS.RESET_ON_EMPTY_REFILL) && container.isEmpty() && this.activeLevelIndex > 0) {\n            this.resetToFirstLevel();\n            return;\n        }\n        // skip-on-single-entry is handled pre-reveal in navigateForward (so the skipped level never\n        // shows or animates) — no PostFill auto-click here.\n    }\n\n    // ���������������������������������������������������������������������\n    // Back-button protocol\n    // ���������������������������������������������������������������������\n\n    private resolveBackButtonText(): string {\n        if (this.backButtonText.length > 0) return this.backButtonText;\n        if (this.activeSideViewKey !== null) {\n            // Drilled past the side view's root → show the container's current internal level text\n            // (so Back reads \"Holz\", \"Wand\", … per level). At its root, fall back to the side-view\n            // title (the fixed card that opened it, e.g. \"Wand- und Bodenbelag ändern\").\n            const sideContainer = this.sideViewContainerByKey.get(this.activeSideViewKey);\n            if (sideContainer?.CardContainerView_BackButtonOverwrite) {\n                const sideText = sideContainer.AdditionalData.Get(\"back-button-txt\", \"\") as string;\n                if (sideText.length > 0) {\n                    return sideText;\n                }\n            }\n            if (this.activeSideViewTitle) {\n                return this.activeSideViewTitle;\n            }\n        }\n        for (let i = this.navigationHistory.length - 1; i >= 0; i--) {\n            const title = this.clickedTitleByLevel.get(this.navigationHistory[i]);\n            if (title?.length) return title;\n        }\n        return \"\";\n    }\n\n    private syncBackButtonState(): void {\n        this.AdditionalData.Set(\"show-back-button\", this.canGoBack);\n        const text = this.resolveBackButtonText();\n        if (text.length > 0) this.AdditionalData.Set(\"back-button-txt\", text);\n        CardContainerBackButtonComponent.HideStateUpdate();\n    }\n\n    private syncBackButtonVisibility(): void {\n        this.AdditionalData.Set(\"show-back-button\", this.canGoBack);\n        CardContainerBackButtonComponent.HideStateUpdate();\n    }\n\n    // ���������������������������������������������������������������������\n    // Render\n    // ���������������������������������������������������������������������\n\n    render(): TemplateResult<1> {\n        const selfQuery = this.classList.length > 0\n            ? `.${Array.from(this.classList).join(\".\")}`\n            : \"*\";\n\n        return html`\n            ${this.showInternalBackButton ? html`\n                <fv-card-container-back-button\n                    icon=\"${this.backButtonIcon}\"\n                    button-class=\"${ifDefined(this.backButtonClass || undefined)}\"\n                    ?text-in-button=${this.textInButton}\n                    .showAllways=${false}\n                    .targets=${[{tag: \"fv-card-container-view\", query: selfQuery, \"hidden-prevents-back\": undefined, \"partial-hide-limit-back-to-last\": undefined, \"txt-src-prio\": undefined, \"prevent-back\": undefined}]}\n                    ?hide-element=${!this.canGoBack}\n                ></fv-card-container-back-button>\n            ` : nothing}\n\n            <div class=\"ccv-levels\">\n                ${this.levels.map((level, index) => this.renderLevelWrapper(level, index))}\n                ${Object.keys(this.fixedCardViews).map(key => this.renderSideViewWrapper(key))}\n            </div>\n\n            <div class=\"no-content ${classMap({hidden: this.activeSideViewKey !== null || !this.activeLevelIsEmpty})}\">\n                <slot name=\"no-content\"></slot>\n            </div>\n        `;\n    }\n\n    private renderLevelWrapper(level: LevelDefinition, index: number): TemplateResult {\n        const isActive = index === this.activeLevelIndex;\n        const isLeaving = index === this.slide.fromLevel;\n        const wrapperClasses: Record<string, boolean> = {\n            \"ccv-level-wrapper\": true,\n            [`ccv-level-wrapper-${index}`]: true,\n            // keep the leaving level shown during a slide-over; both share one grid cell (.ccv-levels)\n            // so the box sizes to the taller of the two, and the entering one (z-indexed above) overlays it.\n            // when a side-view opens it slides over the level it masks (isLeaving), which stays until slide-end.\n            hidden: this.activeSideViewKey !== null ? !isLeaving : (!isActive && !isLeaving),\n            \"ccv-sliding-in\": isActive && this.slide.fromLevel !== null && this.activeSideViewKey === null,\n        };\n        for (const cls of level.classes ?? []) wrapperClasses[cls] = true;\n\n        const wrapperStyles: Record<string, string> = {\n            \"flex-direction\": level.layout ?? LEVEL_DEFAULTS.LAYOUT,\n            flex: \"1\",\n            overflow: \"auto\",\n            ...(level[\"style-vars\"] ?? {}),\n        };\n\n        // Card containers are appended into `.ccv-level-cards` by buildContainers(). The two\n        // slots sit outside it so light-DOM children projected via `slot=\"before-level-N\"` /\n        // `slot=\"after-level-N\"` survive the imperative wipe-and-fill.\n        return html`\n            <div class=${classMap(wrapperClasses)} style=${styleMap(wrapperStyles)}\n                 @animationend=${this.slide.onEnd} @animationcancel=${this.slide.onEnd}>\n                <slot name=\"before-level-${index}\" part=\"before-level-${index}\"></slot>\n                <div class=\"ccv-level-cards\" part=\"level-cards\"></div>\n                <slot name=\"after-level-${index}\" part=\"after-level-${index}\"></slot>\n            </div>\n        `;\n    }\n\n    private renderSideViewWrapper(key: string): TemplateResult {\n        const def = this.fixedCardViews[key];\n        const isActiveSide = this.activeSideViewKey === key;\n        const isLeavingSide = this.slide.fromSideView === key;\n        const wrapperClasses: Record<string, boolean> = {\n            \"ccv-side-view-wrapper\": true,\n            [`ccv-side-view-wrapper-${key}`]: true,\n            // keep the closing side-view shown (static, underneath) while the level slides back over it\n            hidden: !isActiveSide && !isLeavingSide,\n            // only the entering side-view animates (and overlays); the closing one stays still beneath\n            \"ccv-sliding-in\": isActiveSide && this.slide.fromLevel !== null,\n        };\n        for (const cls of def.classes ?? []) wrapperClasses[cls] = true;\n\n        const wrapperStyles: Record<string, string> = {\n            flex: \"1 1 auto\",\n            overflow: \"auto\",\n            ...(def[\"style-vars\"] ?? {}),\n        };\n\n        return html`\n            <div class=${classMap(wrapperClasses)} style=${styleMap(wrapperStyles)}\n                 @animationend=${this.slide.onEnd} @animationcancel=${this.slide.onEnd}>\n                <slot name=\"before-side-view-${key}\"></slot>\n                <!-- side-view container appended here by buildSideViewContainers() -->\n                <slot name=\"after-side-view-${key}\"></slot>\n            </div>\n        `;\n    }\n    public VerifyStepStageChange(): boolean {\n        const containers = this.containersByLevel[this.activeLevelIndex] ?? [];\n        for (const container of containers) {\n            if (!container.hideElement && container.CardContainerView_BackButtonOverwrite) {\n                container.Dispatcher.dispatch(done => new CardContainerBackEvent(done));\n                this.syncBackButtonVisibility();\n                return false;\n            }\n        }\n        return true;\n    }\n    public async ApplyStepStage(stage_: number): Promise<void> {\n        if (stage_ === this.activeLevelIndex) {\n            return;\n        }\n        if (stage_ < 0 || stage_ > this.levels.length - 1) {\n            return;\n        }\n\n        if (this.activeLevelIndex < stage_) {\n            const difference = stage_ - this.activeLevelIndex;\n            for (let index = 0; index < difference; ++index) {\n                await this.navigateForward();\n            }\n        }\n        else if (this.activeLevelIndex > stage_) {\n            const difference = this.activeLevelIndex - stage_;\n            for (let index = 0; index < difference; ++index) {\n                await this.navigateBack();\n            }\n        }\n\n        await this.updateComplete;\n        await CardDataService.WaitForAllCardContainerFetchPromises();\n    }\n\n    private checkSkipOnSingleEntry(level_: number): boolean {\n        const containers = this.containersByLevel[level_ < 0 ? 0 : level_];\n        return containers.some(container => {\n            if (container.CardData?.size !== 1) return false;\n            const rootLevel = container.CardData.get(container.Settings.Fetch[\"root-level\"] as CardDataLevelKey);\n            return rootLevel?.cards.length === 1;\n        });\n    }\n    private get firstStepStage(): number {\n        for (let index = this.activeLevelIndex; index > -1; --index) {\n            if (this.checkSkipOnSingleEntry(index - 1)) {\n                return index;\n            }\n        }\n        return 0;\n    }\n    public async DetermineStepStageEnvironment(): Promise<{ current: number, first: number, last: number } | undefined> {\n        await this.updateComplete;\n        await CardDataService.WaitForAllCardContainerFetchPromises();\n        return { current: this.activeLevelIndex, first: this.firstStepStage, last: this.levels.length - 1 };\n    }\n\n\n    public get CardData(): CardDataLevelMap | undefined {\n        let result: CardDataLevelMap = new Map<CardDataLevelKey, CardDataLevel>();\n        const activeLevel = this.containersByLevel[this.activeLevelIndex];\n        for (const container of activeLevel) {\n            if (container.CardData) {\n                for (const data of container.CardData) {\n                    result.set(data[0], data[1]);\n                }\n            }\n        }\n        return result;\n    }\n\n    public async CheckFetchPromise(): Promise<boolean> {\n        let result = 0;\n        const activeLevel = this.containersByLevel[this.activeLevelIndex];\n        for (const container of activeLevel) {\n            if (await container.CheckFetchPromise()) {\n                result += 1;\n            }\n        }\n        return result == activeLevel.length;\n    }\n\n    public get RootLevelCardCount(): number {\n        let count = 0;\n        const activeLevel = this.containersByLevel[this.activeLevelIndex - 1 < 0 ? 0 : this.activeLevelIndex - 1];\n        for (const container of activeLevel) {\n            const cardData = container.CardData;\n            if (cardData == undefined) continue;\n            const rootLevel = cardData.get(container.Settings.Fetch[\"root-level\"]);\n            if (rootLevel) {\n                count += rootLevel.cards.length;\n            }\n        }\n        return count;\n    }\n\n    private _dispatcher: CardContainerAsyncEventDispatcher | undefined = undefined;\n    public get Dispatcher(): CardContainerAsyncEventDispatcher {\n        if (this._dispatcher === undefined) {\n            this._dispatcher = new CardContainerAsyncEventDispatcher(this.dispatchEvent.bind(this));\n        }\n        return this._dispatcher;\n    }\n}\n","import {BaseElement} from \"../../base/base.component\";\nimport {customElement, property, state} from \"lit/decorators.js\";\nimport {css, html, nothing, PropertyValueMap, TemplateResult, unsafeCSS} from \"lit\";\nimport {CardContainerEvents, type CardData, type CardMagnifiedEventInit,} from \"../../../../models/card-container\";\nimport style from \"./card-magnifier-view.component.sass?inline\";\nimport {ComponentStateHandlerMap} from \"../../../../models/event-handler/component-state-event\";\nimport { classMap } from \"lit/directives/class-map\";\n\ndeclare global {\n    interface ComponentStates {\n        \"fv-card-magnifier-view:clear\": any;\n    }\n}\n\n/**\n * Renders the last \"magnified\" card. Cards opt in via `data.additional.magnify` (per-card) or\n * `settings.Card.additional.magnify` (container-wide); each magnify click dispatches a\n * `CardMagnifiedEvent` on the window which this component picks up.\n *\n * Slot `placeholder` is shown when no card has been magnified yet.\n */\n@customElement(\"fv-card-magnifier-view\")\nexport class CardMagnifierViewComponent extends BaseElement {\n    static styles = [super.styles || [], css`${unsafeCSS(style)}`];\n\n    /** Element tag used to render the magnified card (must extend BaseCard). */\n    @property({type: String, reflect: true, attribute: \"card-tag\"})\n    public cardTag: string = \"fv-card\";\n\n    /** Additional card style classes. */\n    @property({type: String, reflect: true, attribute: \"card-class\"})\n    public cardClass: string = \"\";\n\n    /** When true, a close button is shown that clears the current card. Hidden when nothing is magnified. */\n    @property({type: Boolean, reflect: true})\n    public cancelable: boolean = false;\n\n    @state() private currentCard: CardData | undefined = undefined;\n\n    private readonly _onMagnified = (e: Event) => {\n        const detail = (e as CardMagnifiedEventInit).detail;\n        if (!detail || !!detail.target && !this.matches(detail.target)) return;\n        this.currentCard = detail.data;\n        detail[\"post-event\"]?.();\n    };\n\n    stateHandlers: ComponentStateHandlerMap = {\n        \"fv-card-magnifier-view:clear\": () => this.clear()\n    }\n\n    connectedCallback(): void {\n        super.connectedCallback();\n        window.addEventListener(CardContainerEvents.CardMagnified, this._onMagnified);\n    }\n\n    disconnectedCallback(): void {\n        window.removeEventListener(CardContainerEvents.CardMagnified, this._onMagnified);\n        super.disconnectedCallback();\n    }\n\n    /** Clear the displayed card. */\n    public clear(): void {\n        this.currentCard = undefined;\n    }\n\n    /** Show a card programmatically (bypasses the click event). */\n    public magnify(data: CardData): void {\n        this.currentCard = data;\n    }\n\n    public get CurrentCard(): CardData | undefined {\n        return this.currentCard;\n    }\n\n    render(): TemplateResult<1> {\n        if (!this.currentCard) {\n            return html`\n                <div class=\"magnifier-placeholder\" part=\"placeholder\">\n                    <slot name=\"placeholder\"></slot>\n                </div>`;\n        }\n        return html`\n            <div class=\"magnifier-content\" part=\"content\">\n                ${this.cancelable ? html`\n                    <div class=\"cancel-button\" part=\"cancel-button\" @click=\"${this._onCancel}\">\n                        <span class=\"close-symbol\"></span>\n                    </div>\n                ` : nothing}\n                ${this._renderCard(this.currentCard)}\n            </div>\n        `;\n    }\n\n    private _onCancel(e: Event): void {\n        e.preventDefault();\n        e.stopPropagation();\n        this.clear();\n    }\n\n    /** No cardContainerClickData attached → rendered card is display-only (clicks inert). */\n    private _renderCard(data: CardData): TemplateResult<1> {\n        const tag = this.cardTag && this.cardTag.length > 0 ? this.cardTag : \"fv-card\";\n        const classes = (this.cardClass.includes(\" \") ? this.cardClass.split(\" \") : [this.cardClass || \"\"]).filter(Boolean);\n        const el = document.createElement(tag) as HTMLElement & { data?: CardData };\n        el.classList.add(\"magnified-card\", ...classes);\n        el.data = {\n            ...Object.assign<CardData, CardData>(data, {\n                additional: {\n                    magnify: false\n                }\n            })\n        };\n        return html`${el}`;\n    }\n}\n","import {customElement} from \"lit/decorators.js\";\nimport {BaseCard} from \"../base/base.card\";\nimport {css, html, nothing, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./card.component.sass?inline\";\nimport {unsafeHTML} from \"lit/directives/unsafe-html.js\";\nimport {LocaleService} from \"@dh-software/webui-api\";\nimport {CardDataService} from \"../../../../utils/card.data.service\";\n\n@customElement(\"fv-card\")\nexport class CardComponent extends BaseCard {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private makeTxtHtml(txt: string | undefined, txtClass: string | undefined): TemplateResult<1> {\n        if (txt && txt.length > 0) {\n            return html`\n                <fv-label class=\"${txtClass && txtClass.length > 0 ? txtClass : \"\"}\">\n                    ${this.data?.translate ? LocaleService.translate(txt, txt) : txt}\n                </fv-label>`;\n        }\n        return html``;\n    }\n\n    private get txtHtml(): TemplateResult<1> {\n        if (this.data.txt) {\n            return html`\n                ${this.makeTxtHtml(this.data.txt.title, \"text title\")}\n                ${this.makeTxtHtml(this.data.txt.subtitle, \"text subtitle\")}\n                ${this.makeTxtHtml(this.data.txt.txt, \"text txt\")}\n\n                ${this.data.txt.additional?.map(a => this.makeTxtHtml(a, \"text additional\"))}\n            `;\n        }\n        return html``;\n    }\n\n    private get tooltipHtml(): TemplateResult<1> {\n        if (this.data.tooltip && this.data.txt && this.data.txt.tooltip) {\n            return html`\n                <div class=\"tooltip-container\">\n                    <fv-label class=\"text tooltip\">\n                        ${this.data.txt.tooltip}\n                    </fv-label>\n                </div>\n            `;\n        }\n        return html``;\n    }\n\n    private clickTooltipButton(e: Event): void {\n        e.stopPropagation();\n        e.stopImmediatePropagation();\n        e.preventDefault();\n        this.classList.toggle(\"show-tooltip-static\");\n    }\n\n    private mouseEnterTooltip(): void {\n        this.classList.add(\"show-tooltip\");\n    }\n\n    private mouseLeaveTooltip(): void {\n        this.classList.remove(\"show-tooltip\");\n    }\n\n    private get tooltipButtonHtml(): TemplateResult<1> {\n        if (this.data.tooltip && this.data.txt && this.data.txt.tooltip) {\n            return html`\n                <div class=\"tooltip-button\" @click=\"${this.clickTooltipButton}\" @mouseenter=\"${this.mouseEnterTooltip}\"\n                     @mouseleave=\"${this.mouseLeaveTooltip}\">?\n                </div>`;\n        }\n        return html``;\n    }\n\n    private get iconHtml(): TemplateResult<1> {\n        const noImage = this.data.image == undefined || this.data.image.file == undefined || this.data.image.file.length < 1;\n        const empty = noImage && this.data.icon == undefined;\n        if (empty) {\n            this.classList.add(\"no-icon\");\n        } else {\n            this.classList.remove(\"no-icon\");\n        }\n        // Default: when there's no image/icon, render only the tooltip button (drop-in legacy\n        // behavior — no img-container in the DOM).\n        // Opt-in: add the `force-image` class to the host to always render the img-container so\n        // the layout reserves the image area (useful for placeholders or aligned card grids).\n        const forceImage = this.classList.contains(\"force-image\");\n        if (empty && !forceImage) {\n            return html`${this.tooltipButtonHtml}`;\n        }\n        return html`\n            <div class=\"img-container\" part=\"img-container\">\n                ${empty ? nothing : html`\n                    <fv-icon class=\"img\" part=\"img\"\n                             src=\"${this.imageSrc}\"\n                             icon=\"${this.data.icon ? this.data.icon : \"\"}\">\n                        ${this.magnifyButtonHtml}\n                    </fv-icon>\n                `}\n                ${this.tooltipButtonHtml}\n            </div>\n        `;\n    }\n\n    private get dimensionsHtml(): TemplateResult<1> {\n        if (this.data.dimensions == undefined || this.data.dimensions.length < 1) {\n            return html``;\n        }\n        return html`\n            <fv-dimensions-information class=\"dimensions\" part=\"dimensions\"\n                                       .dimensions=\"${this.data.dimensions}\"></fv-dimensions-information>`;\n    }\n\n    private get priceHtml(): TemplateResult<1> {\n        if (this.data.price == undefined || (this.data.price.uvp == undefined && this.data.price.value == undefined)) {\n            return html``;\n        }\n        return html`\n            <fv-price-display class=\"prices\" part=\"prices\" .price=\"${this.data.price}\"></fv-price-display>`;\n    }\n\n    private buttonClick(event: Event, params: { [key: string]: unknown } | undefined): void {\n        event.stopPropagation();\n        event.stopImmediatePropagation();\n        event.preventDefault();\n\n        if (this.cardContainerClickData) {\n            CardDataService.ClickCardButton(params, this.data, this.cardContainerClickData.context);\n        } else {\n            console.error(\"card.component: no cardContainerClickData provided!\");\n        }\n    }\n\n    private get buttonsHtml(): TemplateResult<1> {\n        if (!this.data[\"button-groups\"] || this.data[\"button-groups\"].length < 1) {\n            return html``;\n        }\n        return html`\n            <div class=\"group-wrapper\">\n                ${this.data[\"button-groups\"].map(buttonGroup => html`\n                    <div class=\"group\" style=\"${buttonGroup.style ? Object.entries(buttonGroup.style).map(([k, v]) => `${k}: ${v}`).join(';') : ''}\">\n                        ${buttonGroup.title ? html`${this.makeTxtHtml(buttonGroup.title, \"title\")}` : html``}\n                        <div class=\"buttons\">\n                            ${buttonGroup.items.map(entry => html`\n                                <fv-button\n                                        @click=\"${(e: Event) => {\n                                            this.buttonClick(e, entry[\"click-data\"])\n                                        }}\"\n                                        class=\"${entry.bordered && !entry.active ? \"bordered\" : \"\"}${entry.active && !entry.bordered ? \"active\" : \"\"}${entry.bordered && entry.active ? \"bordered active\" : \"\"}\"\n                                        icon=\"${entry.icon || \"\"}\">\n                                </fv-button>`\n                            )}\n                        </div>\n                    </div>\n                `)}\n            </div>\n        `;\n    }\n\n    private get textFieldsHtml() {\n        if ((!this.data.inputs || this.data.inputs.length <= 0) && (!this.data.dropdowns || this.data.dropdowns.length <= 0) && (!this.data[\"dimension-ranges\"] || this.data[\"dimension-ranges\"].length <= 0)) {\n            return html``\n        }\n        const clickGroup = (ev: MouseEvent) => {\n            ev.stopPropagation();\n            ev.stopImmediatePropagation();\n            ev.preventDefault();\n        }\n        return html`\n            <fv-card-container-input-manager .card=\"${this}\"></fv-card-container-input-manager>\n        `\n        // return html`\n        //     <div class=\"group-wrapper\" @click=\"${clickGroup}\">\n        //         ${this.data.inputs.map(group => html`\n        //             <div class=\"group\">\n        //                 ${group.title ? html`${this.makeTxtHtml(group.title, \"title\")}` : html``}\n        //                 <div class=\"inputs\">\n        //                     ${group.items.map(entry => {\n        //                         return html`\n        //                             <fv-labeled-input class=\"${classMap(entry.classes || {})}\"\n        //                                               @change=\"${(ev: Event) => textFieldChanged(ev, entry)}\"\n        //                                               @blur=\"${(ev: Event) => textFieldChanged(ev, entry)}\"\n        //                                               moveable-placeholder\n        //                                               value=\"${entry.value}\"\n        //                                               type=\"${entry.type}\"\n        //                                               name=\"${entry.name}\"\n        //                                               min=\"${entry.min}\"\n        //                                               max=\"${entry.max}\"\n        //                                               ?readonly=\"${entry.readonly}\"\n        //                                               placeholder=\"${entry.placeholder}\"\n        //                                               ?required=\"${entry.required}\"\n        //                             >\n        //                                 ${entry.suffix ? html`\n        //                                     <div class=\"suffix-container\">\n        //                                         <fv-label>${entry.suffix}</fv-label>\n        //                                     </div>\n        //                                 ` : nothing}\n        //                             </fv-labeled-input>\n        //                         `\n        //                     })}\n        //                 </div>\n        //             </div>\n        //         `)}\n        //     </div>\n        // `\n    }\n\n    protected render(): TemplateResult<1> {\n        if (this.mobile) {\n            this.classList.add(\"mobile\");\n            this.classList.remove(\"desktop\");\n        } else {\n            this.classList.add(\"desktop\");\n            this.classList.remove(\"mobile\");\n        }\n\n        return html`\n            ${this.iconHtml}\n            <div class=\"card-content\">\n                ${this.buttonsHtml}\n                ${this.textFieldsHtml}\n                ${this.dimensionsHtml}\n                <div class=\"text-container\">\n                    <slot name = \"text-before\"></slot>\n                    ${this.txtHtml}\n                    <slot name = \"text-after\"></slot>\n                </div>\n                ${this.tooltipHtml}\n                ${this.priceHtml}\n            </div>\n            <div class=\"free button-container\">\n                <slot name=\"button\"></slot>\n            </div>\n            <div class=\"free additional\">\n                <slot name=\"additional\"></slot>\n            </div>\n            ${super.render()}\n        `;\n    }\n}\n","import { css, html, notEqual, nothing, PropertyValues, unsafeCSS } from \"lit\";\r\nimport { CardComponent } from \"../basic.card/card.component\";\r\nimport { customElement, state } from \"lit/decorators.js\"\r\nimport style from \"./article-card.component.sass?inline\";\r\n\r\n@customElement(\"fv-article-card\")\r\nexport class ArticleCardComponent extends CardComponent {\r\n    static styles = [\r\n        super.styles || [],\r\n        css`${unsafeCSS(style)}`\r\n    ];\r\n\r\n    render() {\r\n        return html`\r\n            ${super.render()}\r\n            ${this.renderCheckmark()}\r\n        `\r\n    }\r\n\r\n    renderCheckmark() {\r\n        if (!this.data.active) return nothing;\r\n        return html`<fv-icon class=\"icon-check-circle\" icon=\"fv-icon-check-circle\"></fv-icon>`\r\n    }\r\n\r\n}","import { customElement } from \"lit/decorators.js\";\nimport { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { BaseCard } from \"../base/base.card\";\nimport { CardDataService } from \"../../../../utils/card.data.service\";\nimport style from \"./color-picker-card.component.sass?inline\";\n\n\n@customElement(\"fv-color-picker-card\")\nexport class ColorPickerCardComponent extends BaseCard {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private _applyTimer: number | undefined;\n\n    constructor() {\n        super();\n    }\n\n    disconnectedCallback(): void {\n        if (this._applyTimer != undefined) {\n            clearTimeout(this._applyTimer);\n            this._applyTimer = undefined;\n        }\n        super.disconnectedCallback();\n    }\n\n    private onColorChange(event_: Event): void {\n        const detail = (event_ as CustomEvent<{ red: number; green: number; blue: number }>).detail;\n        if (detail == undefined) {\n            return;\n        }\n        this.applyRgb(detail.red, detail.green, detail.blue);\n    }\n\n    private applyRgb(r_: number, g_: number, b_: number): void {\n        const clickData = this.cardContainerClickData;\n        if (clickData == undefined || clickData.context == undefined || this.data.click == undefined) {\n            return;\n        }\n\n        this.data.click[\"rgb-code\"] = {\n            r: r_,\n            g: g_,\n            b: b_\n        };\n\n        if (this._applyTimer != undefined) {\n            clearTimeout(this._applyTimer);\n        }\n        this._applyTimer = setTimeout(() => {\n            this._applyTimer = undefined;\n            CardDataService.ClickCard(this.data, clickData.context);\n        }, 500);\n    }\n\n    protected render(): TemplateResult<1> {\n        return html`\n            <div class=\"picker-wrapper\" @click=\"${(e: Event) => e.stopPropagation()}\">\n                <dh-color-picker mode=\"extended\" @colorChange=\"${this.onColorChange}\"></dh-color-picker>\n            </div>\n            ${super.render()}\n        `;\n    }\n}\n","import {\n    CardContainerContext,\n    CardContainerCustomIconButtonEvent,\n    CardContainerSelectionChangeEvent,\n    CardContainerSpecialInteractionContext,\n    CardContainerUpdate,\n    CardDataLevel,\n    CardDataLevelKey,\n    CardDataLevelMap,\n    CardDataUpdateEvent,\n    CardFetchMethod,\n    FetchResult,\n    FilterSelectionStrategy,\n    ICardDataInputSource\n} from \"../../models/card-container\";\nimport { CardData } from \"../../models/card-container\";\nimport { EventHandlerEvent } from \"../../models/event-handler/event.handler.model\";\nimport { IDragOptions } from \"@dh-software/webui-types\";\nimport {InputComponent} from \"../../components/standard/input\";\nimport {BaseInput} from \"../../components/standard/input/base/base-input\";\nimport {CardComponent} from \"../../components/standard/cards\";\nimport {BaseCardContainer} from \"../../components/standard/card-container/base/base-card-container\";\n\ninterface PersistentCardData {\n    [key: string]: unknown;\n}\n\nexport class CardContainerPersistentStorage<K extends string | number = string> extends Map<K, PersistentCardData> {\n\n    public getSubKeyItem<T = unknown>(key: K, subKey: string): T | undefined {\n        const cardData = this.get(key);\n        if (cardData) {\n            if (Object.prototype.hasOwnProperty.call(cardData, subKey)) {\n                return cardData[subKey] as T;\n            }\n        }\n        return undefined;\n    }\n\n    public setSubKeyItem(key: K, subKey: string, value: unknown): this {\n        let cardData = this.get(key);\n        if (!cardData) {\n            cardData = {};\n            this.set(key, cardData);\n        }\n        cardData[subKey] = value;\n        return this;\n    }\n\n    public deleteSubKeyItem(key: K, subKey: string, deleteIfEmpty: boolean = false): boolean {\n        const cardData = this.get(key);\n        if (cardData) {\n            if (Object.prototype.hasOwnProperty.call(cardData, subKey)) {\n                delete cardData[subKey];\n                if (deleteIfEmpty && Object.keys(cardData).length === 0) {\n                    this.delete(key);\n                }\n                return true;\n            }\n        }\n        return false;\n    }\n\n    public hasSubKey(key: K, subKey: string): boolean {\n        const cardData = this.get(key);\n        return cardData ? Object.prototype.hasOwnProperty.call(cardData, subKey) : false;\n    }\n\n}\n\nexport abstract class BaseCardDataAppConnection<T = FetchResult> {\n    private _persistentStore = new CardContainerPersistentStorage();\n    private _method: CardFetchMethod = CardFetchMethod.NONE;\n    public get Method(): CardFetchMethod {\n        if (this._method == CardFetchMethod.NONE) {\n            console.error(\"BaseCardDataAppConnection> CardFetchMethod not set in implementation! Please use 'this.Method = CardFetchMethod.[?]' in implementation!\");\n        }\n        return this._method;\n    }\n    protected set Method(method: CardFetchMethod) {\n        this._method = method;\n    }\n\n    public get Store(): CardContainerPersistentStorage {\n        return this._persistentStore;\n    }\n\n    public async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n        return CardContainerUpdate.NONE;\n    }\n    public InteractionOnSelectionChange(context: CardContainerContext, eventParameters: CardContainerSelectionChangeEvent): void {\n        return;\n    }\n    public InteractionOnIconButton(context: CardContainerContext, eventParameters: CardContainerCustomIconButtonEvent, preEvents: Array<EventHandlerEvent> | undefined, postEvents: Array<EventHandlerEvent> | undefined): void {\n        return;\n    }\n\n    public async CheckSpecialInteractionContext(context: CardContainerContext) {\n        return CardContainerSpecialInteractionContext.NONE;\n    }\n\n    public async Fetch(context: CardContainerContext): Promise<T> {\n        return {} as T;\n    }\n    public Filter(unfiltered: T, context: CardContainerContext, active: Array<CardDataLevelKey>): T {\n        return unfiltered as T;\n    }\n\n    public CreateCards(filtered: T, context: CardContainerContext): CardDataLevelMap {\n        return new Map<CardDataLevelKey, CardDataLevel>();\n    }\n\n    public GetFormattedDragData(card: CardData, context: CardContainerContext): IDragOptions | undefined {\n        return undefined;\n    }\n\n    public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n        return;\n    }\n\n    public async ClickCardButton(data: { [key: string]: unknown } | undefined, card: CardData, context: CardContainerContext): Promise<void> {\n        return;\n    }\n\n    public async TextFieldChanged(card: CardData, context: CardContainerContext, field: ICardDataInputSource): Promise<void> {\n        return;\n    }\n\n    public GetFilterSelectionAdditionalParams(context: CardContainerContext): { [key: string]: unknown } | undefined {\n        return undefined;\n    }\n    public GetFilterSelectionStrategy(context: CardContainerContext): FilterSelectionStrategy {\n        return FilterSelectionStrategy.NONE;\n    }\n    public InitFilterSelectionParams(context: CardContainerContext): void {\n        return;\n    }\n}\n","import {BaseCardDataAppConnection} from \"./base.card.app.connection\";\nimport {CardContainerContext, CardData} from \"../../models/card-container\";\nimport {CatalogService} from \"../catalog.service\";\nimport {ManuProgService} from \"../manu-prog.service\";\nimport {CommunicationMessageService, LocaleService} from \"@dh-software/webui-api\";\nimport {IArticleData, ICategoryData, IKataPageData, IKataTreeData} from \"@dh-software/webui-types\";\n\nexport interface OldGeneratedCatalogFetchResult {\n    articles: IArticleData[];\n    \"kata-pages\": Map<string, IKataPageData>;\n    \"kata-tree\": IKataTreeData;\n}\n\nexport class OldGeneratedCatalogBaseCardDataAppConnection<T extends OldGeneratedCatalogFetchResult> extends BaseCardDataAppConnection<T> {\n    private async FetchArticles(context: CardContainerContext, showCategoriesArray: Array<string>, fetchKey: string): Promise<OldGeneratedCatalogFetchResult> {\n        const result: OldGeneratedCatalogFetchResult = {\n            articles: [],\n            \"kata-pages\": new Map<string, IKataPageData>(),\n            \"kata-tree\": {\n                definedEquipmentFilterCategories: [],\n                definedFilterCategories: [],\n                FittingInfo: [],\n                allKataPages: [],\n                kataPages: [],\n                distinctProgCatsFromDb: []\n            }\n        };\n        if (context.settings.Fetch.parameters[\"only-specific-categories\"]) {\n            const categories = context.settings.Fetch.parameters[\"only-specific-categories\"] as Array<string>;\n            if (categories.length > 0) {\n                result.articles = await CommunicationMessageService.getArticleByCategories(context.settings.Fetch.manufacturer, context.settings.Fetch.program, categories);\n                OldGeneratedCatalogBaseCardDataAppConnection.fetchCache.set(fetchKey, result);\n                return result;\n            }\n        }\n\n\n        let forcedCategoryFilters: Array<string> = [];\n        if (window.g_article_categories?.length > 0) {\n            forcedCategoryFilters = window.g_article_categories;\n        } else {\n            const categoriesString: string = window.g_configuration?.webui_category_filter?.trim();\n            if (categoriesString) {\n                forcedCategoryFilters = categoriesString.split(\",\").map(x => x.trim());\n            }\n        }\n        if (forcedCategoryFilters.length > 0) {\n            result.articles = await CommunicationMessageService.getArticleByCategories(context.settings.Fetch.manufacturer, context.settings.Fetch.program, forcedCategoryFilters);\n            OldGeneratedCatalogBaseCardDataAppConnection.fetchCache.set(fetchKey, result);\n            return result;\n        }\n\n        const shouldMergeCategories = context.settings.Fetch.parameters[\"merge-categories\"] as boolean || false;\n        const kataTree = await CommunicationMessageService.getKataTreeJson({\n            manufacturer: context.settings.Fetch.manufacturer,\n            program: context.settings.Fetch.program,\n            mergeCategories: shouldMergeCategories\n        });\n\n        const kataPagesToShow = new Array<string>();\n        const kataPagesToShowParam = context.settings.Fetch.parameters[\"kata-pages-to-show\"] as {\n            [program: string]: Array<string>\n        } | Array<string>;\n        if (kataPagesToShowParam) {\n            if (Array.isArray(kataPagesToShowParam)) {\n                kataPagesToShow.push(...kataPagesToShowParam);\n            } else if (kataPagesToShowParam[context.settings.Fetch.program]) {\n                kataPagesToShow.push(...kataPagesToShowParam[context.settings.Fetch.program]);\n            }\n        }\n        const preventCatConfigFilter = context.settings.Fetch.parameters[\"prevent-cat-config-filter\"] ?? false;\n        let sortedKataPages = kataTree.kataPages\n        if (!preventCatConfigFilter) {\n            sortedKataPages = await CatalogService.filterKataModules(sortedKataPages)\n        }\n        sortedKataPages = (<ICategoryData[]>sortedKataPages).sort((a, b) => {\n            const aOrder = a.order ?? 9999;\n            const bOrder = b.order ?? 9999;\n            return aOrder - bOrder;\n        });\n\n        const relevantKataPages = new Map<string, IKataPageData>();\n        for (const kataPageCategory of sortedKataPages) {\n            if (kataPagesToShow.length < 1 || kataPagesToShow.includes(kataPageCategory.id)) {\n                if (kataPageCategory.id.includes(\"dhcat_\")) {\n                    if (relevantKataPages.has(kataPageCategory.id) == false) {\n                        const kataPageData = await CommunicationMessageService.getKataPage(kataPageCategory.id.replace(\"dhcat_\", \"\"), \"\", context.settings.Fetch.manufacturer, context.settings.Fetch.program);\n                        relevantKataPages.set(kataPageCategory.id, kataPageData);\n                    }\n                }\n            }\n        }\n\n        const anyCategoryInString = (catString: string, categories: Array<string>) => {\n            for (const category of categories) {\n                if (catString.includes(category)) {\n                    return true;\n                }\n            }\n            return false;\n        };\n        const resultArticles = new Array<IArticleData>();\n        for (const kataPageData of relevantKataPages) {\n            if (kataPageData && kataPageData[1] && kataPageData[1].Modules) {\n                for (const module of kataPageData[1].Modules) {\n                    for (let articles of module.Articles) {\n                        if(!preventCatConfigFilter) {\n                            articles = await CatalogService.filterArticlesList(articles);\n                        }\n                        for (const article of articles) {\n                            if (resultArticles.includes(article as IArticleData) == false) {\n                                if (showCategoriesArray.length == 0 || anyCategoryInString(article.CatString, showCategoriesArray)) {\n                                    resultArticles.push(article as IArticleData);\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        result.articles = resultArticles;\n        result[\"kata-pages\"] = relevantKataPages;\n        result[\"kata-tree\"] = kataTree;\n        OldGeneratedCatalogBaseCardDataAppConnection.fetchCache.set(fetchKey, result);\n        return result;\n    }\n\n    private static fetchCache = new Map<string, OldGeneratedCatalogFetchResult>();\n\n    private async _Fetch(context: CardContainerContext, fetchKey: string, showCategoriesArray: Array<string>): Promise<OldGeneratedCatalogFetchResult> {\n        let fetchResult = OldGeneratedCatalogBaseCardDataAppConnection.fetchCache.get(fetchKey);\n        if (fetchResult == undefined) {\n            fetchResult = await this.FetchArticles(context, showCategoriesArray, fetchKey);\n        }\n        const result = await super.Fetch(context);\n        result[\"articles\"] = fetchResult[\"articles\"];\n        result[\"kata-pages\"] = fetchResult[\"kata-pages\"];\n        result[\"kata-tree\"] = fetchResult[\"kata-tree\"];\n        return result;\n    }\n\n    private static fetches: Map<string, Promise<OldGeneratedCatalogFetchResult>> = new Map<string, Promise<OldGeneratedCatalogFetchResult>>();\n\n    public async Fetch(context: CardContainerContext): Promise<T> {\n        context.settings.Fetch.manufacturer = context.settings.Fetch.manufacturer && context.settings.Fetch.manufacturer.length > 0 ? context.settings.Fetch.manufacturer : await ManuProgService.getManufacturer();\n        context.settings.Fetch.program = context.settings.Fetch.program && context.settings.Fetch.program.length > 0 ? context.settings.Fetch.program : await ManuProgService.getProgram();\n        const showCategoriesArray = new Array<string>();\n        const categoriesToShowSettings = context.settings.Fetch.parameters[\"categories-to-show\"] as {\n            [program: string]: Array<string>\n        } | Array<string>;\n        const categoriesToHideSettings = context.settings.Fetch.parameters[\"categories-to-hide\"] as {\n            [program: string]: Array<string>\n        } | Array<string>;\n        if (categoriesToShowSettings) {\n            if (Array.isArray(categoriesToShowSettings)) {\n                showCategoriesArray.push(...categoriesToShowSettings);\n            } else {\n                const keys = Object.keys(categoriesToShowSettings);\n                for (const key of keys) {\n                    if (categoriesToShowSettings[key]) {\n                        showCategoriesArray.push(...categoriesToShowSettings[key]);\n                    }\n                }\n            }\n        }\n\n        if (context.settings.Fetch.parameters[\"clear-cache\"]) {\n            OldGeneratedCatalogBaseCardDataAppConnection.fetches.clear();\n            OldGeneratedCatalogBaseCardDataAppConnection.fetchCache.clear();\n        }\n\n        const fetchKey = context.settings.Fetch.manufacturer + \",\" + context.settings.Fetch.program + \",\" + showCategoriesArray.join(\",\") + \",\" + LocaleService.getLanguage();\n        let fetch = OldGeneratedCatalogBaseCardDataAppConnection.fetches.get(fetchKey);\n        if (!fetch) {\n            fetch = this._Fetch(context, fetchKey, showCategoriesArray);\n            OldGeneratedCatalogBaseCardDataAppConnection.fetches.set(fetchKey, fetch);\n        }\n        const fetchData = await fetch;\n        if (categoriesToHideSettings && fetchData && fetchData.articles) {\n            let categoriesToHide: Array<string> = [];\n            if (Array.isArray(categoriesToHideSettings)) {\n                categoriesToHide = categoriesToHideSettings;\n            } else {\n                const keys = Object.keys(categoriesToHideSettings);\n                for (const key of keys) {\n                    if (categoriesToHideSettings[key]) {\n                        categoriesToHide.push(...categoriesToHideSettings[key]);\n                    }\n                }\n            }\n            fetchData.articles = fetchData.articles.filter((article) => {\n                if (article.CatString) {\n                    for (const cat of categoriesToHide) {\n                        if ((article.CatString as string).includes(cat)) {\n                            return false;\n                        }\n                    }\n                }\n                return true;\n            });\n        }\n        return fetchData as T;\n    }\n\n    public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n        const resetLevelsFilterOnDisabledClick = context.settings.Fetch.parameters[\"disabled-reset-selection\"];\n        if (resetLevelsFilterOnDisabledClick && card.disabled) {\n            if (context.filter != undefined) {\n                context.filter.Reset(true, context);\n            }\n        }\n        await super.Click(card, context);\n    }\n}\n","import { OldGeneratedCatalogBaseCardDataAppConnection } from \"./old-generated-catalog-base.card.app.connection\";\nimport {\n    CardContainerBackToStartEvent,\n    CardContainerContext,\n    CardContainerSelectionChangeEvent,\n    CardContainerCustomIconButtonEvent,\n    CardContainerTriggerCardClickEvent,\n    CardContainerAsyncEventDispatcher,\n    CardContainerUpdate,\n    CardDataLevel,\n    CardDataLevelKey,\n    CardDataUpdateEvent,\n    CardFetchMethod,\n    FetchResult,\n    FilterSelectionStrategy\n} from \"../../models/card-container\";\nimport { CardDataService } from \"../card.data.service\";\nimport { CardData } from \"../../models/card-container\";\nimport { EventHandlerEvent } from \"../../models/event-handler/event.handler.model\";\nimport { UtilService } from \"../util.service\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\nimport {IArticleData, ICategoryData, IKataPageData, IKataTreeData, IPlannedArticle} from \"@dh-software/webui-types\";\nimport { EventHandlerService } from \"../event.handler.service\";\n\ninterface CardCategoryDataInternal extends ICategoryData {\n    \"next-level\": string\n}\n\nclass KataPageSelectionCardAppConnection extends OldGeneratedCatalogBaseCardDataAppConnection<any> {\n    constructor() {\n        super();\n        this.Method = CardFetchMethod.KataPageSelection;\n    }\n\n    public async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n        const showOnlyPlanned = context.settings.Fetch.parameters[\"show-only-planned\"] === true;\n        switch (event) {\n        case CardDataUpdateEvent.SelectionChanged:\n        case CardDataUpdateEvent.LastPOLoaded:\n            return showOnlyPlanned ? CardContainerUpdate.FETCH : CardContainerUpdate.FILTER;\n        default:\n            return CardContainerUpdate.NONE;\n        }\n    }\n\n    public InteractionOnSelectionChange(context: CardContainerContext, eventParameters: CardContainerSelectionChangeEvent): void {\n        if (context.settings.Fetch.parameters[\"select-from-selection-in-scene\"] === true) {// disable unless explicitly enabled!\n            const lastSelectedElement = eventParameters.objectInfo[eventParameters.objectInfo.length - 1];\n            if (lastSelectedElement) {\n                this._OpenArticleCardContainer(context, lastSelectedElement.instanceIdent);\n            }\n        }\n    }\n\n    public InteractionOnIconButton(context: CardContainerContext, eventParameters: CardContainerCustomIconButtonEvent, preEvents: Array<EventHandlerEvent> | undefined, postEvents: Array<EventHandlerEvent> | undefined): void {\n        if (context.settings.Fetch.parameters[\"select-from-icon-button-command\"] === eventParameters.command) {\n            this._OpenArticleCardContainer(context, eventParameters.instanceIdent, preEvents, postEvents);\n        }\n    }\n\n\n    private selectionState = new WeakMap<CardContainerContext, {\n        previousLastSelectedElement?: number;\n        lastSelectionChangeTime?: number;\n        selectionChangePromise?: Promise<void>;\n    }>();\n\n    // private previousLastSelectedElement: number | undefined = undefined;\n    // private lastSelectionChangeTime: number | undefined = undefined;\n    // private selectionChangePromise: Promise<void> | undefined = undefined;\n    private _InteractionOnSelectionChangeCheckLevel(level: CardDataLevel, plannedArticleNumber: string): string {\n        if (level.additional && level.additional[\"articles-by-level-key\"]) {\n            const keys = Object.keys(level.additional[\"articles-by-level-key\"]);\n            for (const key of keys) {\n                const aricles = (level.additional[\"articles-by-level-key\"] as { [key: string]: Array<IArticleData> })[key];\n\n                let articleInList = false;\n                for (const article of aricles) {\n                    if (article.ArtNr == plannedArticleNumber) {\n                        articleInList = true;\n                        break;\n                    }\n                }\n\n                if (articleInList) {\n                    return key;\n                }\n            }\n        }\n        return \"\";\n    }\n\n    private async _OpenArticleCardContainer(context: CardContainerContext, instanceIdent_: number, preEvents?: Array<EventHandlerEvent>, postEvents?: Array<EventHandlerEvent>): Promise<void> {\n        const triggerTime = Date.now();\n        if (instanceIdent_ == undefined) {\n            return;\n        }\n\n        let state = this.selectionState.get(context);\n        if (!state) {\n            state = {};\n            this.selectionState.set(context, state);\n        }\n\n        if (state.previousLastSelectedElement != undefined) {\n            if (state.lastSelectionChangeTime != undefined && triggerTime - state.lastSelectionChangeTime < 1000) {\n                if (state.previousLastSelectedElement == instanceIdent_) {\n                    return;\n                }\n            }\n        }\n\n        state.previousLastSelectedElement = instanceIdent_;\n        state.lastSelectionChangeTime = triggerTime;\n\n        if (state.selectionChangePromise != undefined) {\n            await state.selectionChangePromise;\n        }\n\n        const selectionChangePromise = new Promise<void>((resolve) => {\n            CommunicationMessageService.getLOsFromScene([instanceIdent_]).then(async articles => {\n                if (context.cards == undefined || articles.length === 0) {\n                    resolve();\n                    if (state.selectionChangePromise === selectionChangePromise) state.selectionChangePromise = undefined;\n                    return;\n                }\n\n                let katapageToOpen = \"\";\n\n                // check root level\n                const root = context.cards.get(context.settings.Fetch[\"root-level\"]);\n                if (root && root.additional) {\n                    katapageToOpen = this._InteractionOnSelectionChangeCheckLevel(root, articles[0].catalogArticleNumber ? articles[0].catalogArticleNumber : articles[0].articlenumber);\n                }\n\n                // check other levels, open first hit\n                if (katapageToOpen === \"\") {\n                    for (const card of context.cards) {\n                        if (card[0] == context.settings.Fetch[\"root-level\"]) {\n                            continue; // skip root level, already priotised before\n                        }\n                        katapageToOpen = this._InteractionOnSelectionChangeCheckLevel(card[1], articles[0].catalogArticleNumber ? articles[0].catalogArticleNumber : articles[0].articlenumber);\n                        if (katapageToOpen) break;\n                    }\n                }\n\n                if (katapageToOpen && context.cards.has(katapageToOpen))  {\n                    if (preEvents && preEvents.length > 0) {\n                        await EventHandlerService.dispatchEventList(preEvents, false);\n                    }\n\n                    await context.dispatchAsyncEvent(done => new CardContainerBackToStartEvent(done));\n                    await context.dispatchAsyncEvent(done => new CardContainerTriggerCardClickEvent([katapageToOpen], done));\n\n                    if (postEvents && postEvents.length > 0) {\n                        await EventHandlerService.dispatchEventList(postEvents, false);\n                    }\n                }\n\n                resolve();\n                if (state.selectionChangePromise === selectionChangePromise) state.selectionChangePromise = undefined;\n            }).catch(() => {\n                resolve();\n                if (state.selectionChangePromise === selectionChangePromise) state.selectionChangePromise = undefined;\n            });\n        });\n        state.selectionChangePromise = selectionChangePromise;\n    }\n\n    private CheckPageForCategoryCombnation = (articles: Array<IArticleData>, categories: Array<string>)=>{\n        for (const article of articles) {\n            let includes = true;\n            for (const category of categories) {\n                if (article.CatString.includes(category) == false) {\n                    includes = false;\n                    break;\n                }\n            }\n            if (includes) {\n                return true;// has any\n            }\n        }\n        return false;\n    };\n    private AppendLevel = (levels: Map<CardDataLevelKey, { data: Array<CardCategoryDataInternal>, name: string }>, level: Array<CardCategoryDataInternal>, key: string, name: string)=>{\n        if (level.length > 0) {\n            const existingLevel = levels.get(key);\n            if (existingLevel) {\n                for (const card of level) {\n                    if (existingLevel.data.includes(card) == false) {\n                        existingLevel.data.push(card);\n                    }\n                }\n                return;\n            }\n            levels.set(key, {\n                data: level,\n                name: name\n            });\n        }\n    };\n\n    public async Fetch(context: CardContainerContext): Promise<FetchResult> {\n        const result = await super.Fetch(context) as {\n            \"kata-tree\": IKataTreeData,\n            \"kata-pages\": Map<string, IKataPageData>,\n            \"levels-data\": Map<CardDataLevelKey, { data: Array<CardCategoryDataInternal>, name: string }>\n        };\n\n        if (result[\"kata-tree\"] == undefined) return result;\n        if (result[\"kata-tree\"].kataPages == undefined) {\n            console.error(\"kata page selection> katatree does not have the kataPages node!\", result[\"kata-tree\"]);\n            return result;\n        }\n        if (result[\"kata-pages\"].size < 1) return result;// no kata-pages\n\n        let plannedArtNrs: Set<string> | undefined;\n        if (context.settings.Fetch.parameters[\"only-planned-articles\"] === true) {\n            const plannedArticles: Array<IPlannedArticle> = await CommunicationMessageService.getPlannedArticles();\n            plannedArtNrs = new Set(plannedArticles.map(a => a.catalogArticleNumber));\n            if(context.settings.Fetch.parameters[\"use-default-artnr\"] === true) {\n                plannedArticles.map(a => a.articlenumber).map(artNr => plannedArtNrs!.add(artNr));\n            }\n        }\n\n        const levels = new Map<CardDataLevelKey, { data: Array<CardCategoryDataInternal>, name: string }>();\n        for (const kataPageCategory of result[\"kata-tree\"].kataPages) {\n            if (kataPageCategory.id.includes(\"dhcat_\") == false) continue; // skip accessoires, finishes etc.\n\n            if (context.settings.Fetch.parameters && context.settings.Fetch.parameters[\"categories-to-hide\"]) {\n                let categoriesToHide: Array<string> = [];\n                if (Array.isArray(context.settings.Fetch.parameters[\"categories-to-hide\"])) categoriesToHide = context.settings.Fetch.parameters[\"categories-to-hide\"];\n                else {\n                    Object.keys(context.settings.Fetch.parameters[\"categories-to-hide\"])\n                        .forEach((key: string) => {\n                            categoriesToHide.push(...(context.settings.Fetch.parameters[\"categories-to-hide\"] as {\n                                [key: string]: Array<string>\n                            })[key]);\n                        });\n                }\n                if (categoriesToHide.includes(kataPageCategory.id)) continue;\n            }\n\n            const page = result[\"kata-pages\"].get(kataPageCategory.id);\n            if (page === undefined || Object.keys(page).length === 0) continue;\n\n            const articles = page.Modules[0]?.Articles[0] as Array<IArticleData>;\n            if (articles == undefined) continue;\n\n            if (plannedArtNrs !== undefined && !articles.some(a => [...plannedArtNrs!].some(nr => a.ArtNr.startsWith(nr)))) continue;\n\n            if (kataPageCategory.children) {\n                const prioUnsortedLevelsData = new Map<number, Array<ICategoryData>>();\n                kataPageCategory.children.forEach(child=>{\n                    const existing = prioUnsortedLevelsData.get(child.priority);\n                    if (existing) {\n                        if (existing.includes(child) == false) {\n                            existing.push(child);\n                        }\n                    }\n                    else {\n                        prioUnsortedLevelsData.set(child.priority, [child]);\n                    }\n                });\n\n                const prioSortedLevelsData = new Map([...prioUnsortedLevelsData].sort());\n                const prioSortedLevelsDataKeys = new Array<number>();\n                prioSortedLevelsData.forEach((levelData, key)=>{\n                    prioSortedLevelsDataKeys.push(key);\n                });\n\n                for (let levelsDataKeyIndex = 0; levelsDataKeyIndex < prioSortedLevelsDataKeys.length; ++levelsDataKeyIndex) {\n                    const levelData = prioSortedLevelsData.get(prioSortedLevelsDataKeys[levelsDataKeyIndex]);\n                    if (levelData == undefined) continue;\n                    const nextLevelData = levelsDataKeyIndex < prioSortedLevelsDataKeys.length - 1 ? prioSortedLevelsData.get(prioSortedLevelsDataKeys[levelsDataKeyIndex+1]) : undefined;\n                    const previousLevelData = levelsDataKeyIndex > 0 ? prioSortedLevelsData.get(prioSortedLevelsDataKeys[levelsDataKeyIndex-1]) : undefined;\n\n                    const nextLevelKeys = new Array<string>();\n                    if (nextLevelData) {\n                        nextLevelData.forEach(cardData=>{\n                            nextLevelKeys.push(cardData.id);\n                        });\n                    }\n\n                    const previousLevels = new Array<{ id: string, name: string }>();\n                    if (previousLevelData) {\n                        previousLevelData.forEach(cardData=>{\n                            previousLevels.push({ id: cardData.id, name: cardData.name });\n                        });\n                    }\n\n\n                    if (previousLevels.length > 0) {\n                        for (const previousLevel of previousLevels) {\n                            const level = new Array<CardCategoryDataInternal>();\n                            levelData.forEach(cardData=>{\n                                const categories = [cardData.id, kataPageCategory.id, previousLevel.id];\n\n                                const validNextLevelCategories = new Array<string>();\n                                for (const nextLevelKey of nextLevelKeys) {\n                                    const checkCategories = new Array(...categories);\n                                    checkCategories.push(nextLevelKey);\n                                    if (this.CheckPageForCategoryCombnation(articles, checkCategories)) {\n                                        validNextLevelCategories.push(nextLevelKey);\n                                    }\n                                }\n\n                                if (this.CheckPageForCategoryCombnation(articles, categories)) {\n                                    const card: CardCategoryDataInternal = cardData as CardCategoryDataInternal;\n                                    card[\"next-level\"] = validNextLevelCategories.length > 0 ? cardData.id : \"\";\n                                    level.push(card);\n                                }\n                            });\n                            if (level.length > 0) {\n                                this.AppendLevel(levels, level, previousLevel.id, previousLevel.name);\n                            }\n                        }\n                    }\n                    else {\n                        const level = new Array<CardCategoryDataInternal>();\n                        levelData.forEach(cardData=>{\n                            const categories = [cardData.id, kataPageCategory.id];\n\n                            const validNextLevelCategories = new Array<string>();\n                            for (const nextLevelKey of nextLevelKeys) {\n                                const checkCategories = new Array(...categories);\n                                checkCategories.push(nextLevelKey);\n                                if (this.CheckPageForCategoryCombnation(articles, checkCategories)) {\n                                    validNextLevelCategories.push(nextLevelKey);\n                                }\n                            }\n\n                            if (this.CheckPageForCategoryCombnation(articles, categories)) {\n                                const card: CardCategoryDataInternal = cardData as CardCategoryDataInternal;\n                                card[\"next-level\"] = validNextLevelCategories.length > 0 ? cardData.id : \"\";\n                                level.push(card);\n                            }\n                        });\n                        if (level.length > 0) {\n                            this.AppendLevel(levels, level, kataPageCategory.id, kataPageCategory.name);\n                        }\n                    }\n                }\n            }\n\n            const categoryDataInternal: CardCategoryDataInternal = kataPageCategory as CardCategoryDataInternal;\n            categoryDataInternal[\"next-level\"] = kataPageCategory.id;\n\n            const existing = levels.get(context.settings.Fetch[\"root-level\"]);\n            if (existing) {\n                if (existing.data.includes(categoryDataInternal) == false) {\n                    existing.data.push(categoryDataInternal);\n                }\n            }\n            else {\n                levels.set(context.settings.Fetch[\"root-level\"], { data: [categoryDataInternal], name: context.settings.Fetch[\"root-level\"] });\n            }\n        }\n        result[\"levels-data\"] = levels;\n        return result;\n    }\n\n    public Filter(unfiltered: FetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): FetchResult {\n        const filtered = {\n            \"kata-tree\": unfiltered[\"kata-tree\"] || [],\n            \"kata-pages\": unfiltered[\"kata-pages\"] || [],\n            \"levels-data\": unfiltered[\"levels-data\"] || [],\n            \"active-keys\": new Array<CardDataLevelKey>(),\n            \"articles\": unfiltered[\"articles\"]\n        } as {\n            \"kata-tree\": IKataTreeData,\n            \"kata-pages\": Map<string, IKataPageData>,\n            \"levels-data\": Map<CardDataLevelKey, { data: Array<CardCategoryDataInternal>, name: string }>,\n            \"active-keys\": Array<CardDataLevelKey>,\n            \"articles\": Array<IArticleData>\n        };\n        filtered[\"active-keys\"] = active;\n\n        const sorted = new Map([...filtered[\"levels-data\"]].sort());\n        filtered[\"levels-data\"] = new Map<CardDataLevelKey, { data: Array<CardCategoryDataInternal>, name: string }>();\n\n        if (context.settings.Fetch.filter[\"level-key-filter\"] == undefined || context.settings.Fetch.filter[\"level-key-filter\"].length < 1) {\n            filtered[\"levels-data\"] = sorted;\n            return filtered;\n        }\n\n        for (const level of sorted) {\n            if (context.settings.Fetch.filter[\"level-key-filter\"].includes(level[0])) {\n                filtered[\"levels-data\"].set(level[0], level[1]);\n            }\n        }\n        return filtered;\n    }\n\n\n    private GetRelevantArticles(articles: Array<IArticleData>, katapageLevelKey: CardDataLevelKey) {\n        const relevantArticles = new Array<IArticleData>();\n        const levelKeyString = typeof katapageLevelKey == \"number\" ? katapageLevelKey.toFixed(0) : katapageLevelKey;\n\n        for (const article of articles) {\n            if (article.CatString.includes(levelKeyString)) {\n                relevantArticles.push(article);\n            }\n        }\n        return relevantArticles;\n    }\n    public CreateCards(filtered: FetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n        const result = new Map<CardDataLevelKey, CardDataLevel>();\n        if (filtered[\"levels-data\"] == undefined) return result;\n\n        for (const kataPage of filtered[\"levels-data\"] as Map<CardDataLevelKey, { data: Array<CardCategoryDataInternal>, name: string }>) {\n            const level: CardDataLevel = { title: kataPage[1].name, cards: new Array<CardData>() };\n\n            level.additional = { \"articles-by-level-key\": {} } as { \"articles-by-level-key\": { [key: CardDataLevelKey]: Array<IArticleData> }};\n            // : { \"articles-by-level-key\": { [key: CardDataLevelKey]: Array<IArticleData> } }\n            // this.GetRelevantArticles(filtered[\"articles\"] as Array<IArticleData>, kataPage[0])\n\n            for (const cardData of kataPage[1].data) {\n                if (kataPage[0] == cardData[\"next-level\"]) continue;\n\n                if (level.additional[\"articles-by-level-key\"]) {\n                    (level.additional[\"articles-by-level-key\"] as { [key: CardDataLevelKey]: Array<IArticleData> })[cardData.id] = this.GetRelevantArticles(filtered[\"articles\"] as Array<IArticleData>, cardData.id);\n                }\n\n                const cardDataParameters = context.settings.Fetch.parameters[cardData.id] as { prefix: string, file: string };\n                const imagePrefix = cardDataParameters && cardDataParameters.prefix ? cardDataParameters.prefix : \"\";\n                const imageFile = cardDataParameters && cardDataParameters.file ? cardDataParameters.file : \"\";\n\n                level.cards.push({\n                    txt: { title: UtilService.ncrToUTF8(cardData.name) },\n                    click: {\n                        \"previous-level-key\": kataPage[0],\n                        \"level-key\": cardData.id,\n                        strategy: FilterSelectionStrategy.AND,\n                        priority: cardData.priority,\n                        \"next-level-key\": cardData[\"next-level\"]\n                    },\n                    image: {\n                        prefix: imagePrefix,\n                        file: imageFile\n                    },\n                    active: context.settings.Fetch.parameters[\"selection-result-filter-is-last-clicked\"] ? (filtered[\"active-keys\"] as Array<CardDataLevelKey>).includes(cardData.id): undefined\n                });\n            }\n            result.set(kataPage[0], level);\n        }\n        return result;\n    }\n\n    public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n        if (context.settings.Fetch.parameters[\"selection-result-filter-is-last-clicked\"] == undefined) return;\n        if (context.filter == undefined) return;\n        if (card.click == undefined) return;\n\n        if (context.filter.Contains(card.click[\"level-key\"])) {\n            context.filter.Remove(card.click[\"level-key\"]);\n        }\n        else {\n            context.filter.Reset(false, context);\n            context.filter.Add(card.click[\"level-key\"]);\n        }\n        return;\n    }\n}\nCardDataService.RegisterAppConnection(new KataPageSelectionCardAppConnection());\n","import { CatalogService } from \"../catalog.service\";\nimport { CardDataService } from \"../card.data.service\";\nimport { ComponentService } from \"../component.service\";\nimport { DimensionHelper } from \"../../utils/dimension-helper.class\";\nimport { EventHandlerService } from \"../event.handler.service\";\nimport { InformationMaskComponent } from \"../../components/standard/modal/masks\";\nimport { UtilService } from \"../util.service\";\nimport { ManuProgService } from \"../../utils/manu-prog.service\";\nimport { DimensionInformation } from \"../../components/standard/informationals/dimensions-information.component\";\nimport { IDimensionInputData } from \"../../components/standard/informationals/dimension-inputs.component\";\nimport {\n    OldGeneratedCatalogBaseCardDataAppConnection,\n    OldGeneratedCatalogFetchResult\n} from \"./old-generated-catalog-base.card.app.connection\";\nimport {\n    CardContainerContext,\n    CardContainerCustomIconButtonEvent,\n    CardContainerUpdate,\n    CardData,\n    CardDataButtonGroupItem,\n    CardDataDropdownGroupItem,\n    CardDataGroup,\n    CardDataInputGroupItem,\n    CardDataLevel,\n    CardDataLevelKey,\n    CardDataLevelMap,\n    CardDataUpdateEvent,\n    CardFetchFilters,\n    CardFetchMethod,\n    FilterSelectionData,\n    FilterSelectionStrategy, ICardDataInputSource\n} from \"../../models/card-container\";\nimport {\n    DragType,\n    IArticleData,\n    IArtPropData,\n    IArtValue,\n    IDragOptions,\n    IExternalPlacerParameter,\n    IKataPageData,\n    IKataTreeData,\n    ILoadArticleParams,\n    IPlannedArticle,\n    IRangeInDimensions,\n    VIH_PLANTYPE_ANSCHLAG_INITIAL_CHANGED_L\n} from \"@dh-software/webui-types\";\nimport {\n    CommunicationMessageService,\n    WebViewerService\n} from \"@dh-software/webui-api\";\n\n\n/**\n * A consume-once, self-invalidating \"armed\" value, keyed per owner (default: a card\n * container context) in a WeakMap. Not a floating flag — the value lives keyed by its\n * owner and carries its own listener teardown. Reusable for any one-shot override.\n */\nexport class ArmedValue<T, K extends object = any> {\n    private store = new WeakMap<K, { value: T; dispose: () => void }>();\n\n    /**\n     * Arm (or re-arm) `value` for `owner`. `installInvalidators` receives a `disarm`\n     * callback, installs whatever live listeners should auto-clear the arming, and\n     * returns their teardown. It runs once at arm time; teardown runs on disarm/consume.\n     */\n    public arm(owner: K, value: T, installInvalidators?: (disarm: () => void) => (() => void)): void {\n        this.disarm(owner); // re-arming first tears down any prior listeners\n        const dispose = installInvalidators ? installInvalidators(() => this.disarm(owner)) : () => {};\n        this.store.set(owner, { value, dispose });\n    }\n\n    /** Read and clear in one shot. Returns undefined when nothing is armed. */\n    public consume(owner: K): T | undefined {\n        const entry = this.store.get(owner);\n        if (!entry) return undefined;\n        entry.dispose();\n        this.store.delete(owner);\n        return entry.value;\n    }\n\n    /** Clear without reading; idempotent. */\n    public disarm(owner: K): void {\n        const entry = this.store.get(owner);\n        if (entry) {\n            entry.dispose();\n            this.store.delete(owner);\n        }\n    }\n\n    public isArmed(owner: K): boolean {\n        return this.store.has(owner);\n    }\n}\n\n\nexport class ArticleDimension {\n    private dimension = \"\";\n    private article: IArticleData | undefined = undefined;\n    private value = 0;\n    private order = 0;\n    private others: { \"width\"?: number, \"depth\"?: number, \"height\"?: number } | undefined = undefined;\n    private DetermineValue = (kata: string | undefined, dispd: string | undefined, mmd: string | undefined, dmax: string | undefined) => {\n        if (kata && kata.length > 0) {\n            return kata;\n        }\n        if (dispd && dispd.length > 0) {\n            return dispd;\n        }\n        if (mmd && mmd.length > 0) {\n            return mmd;\n        }\n        if (dmax && dmax.length > 0) {\n            return dmax;\n        }\n        return \"0.0\";\n    };\n\n    constructor(article: IArticleData, dimension: string, dimOrderCode?: string) {\n        this.article = article;\n        this.dimension = dimension;\n        const dimOrder = dimOrderCode != undefined && dimOrderCode !== \"\" ? dimOrderCode : DimensionHelper.DimensionsOrder;\n\n        switch (dimension) {\n            case \"width\":\n                this.order = dimOrder.indexOf('B');\n                this.value = parseFloat(this.DetermineValue(article.kataWidth, article.Dispdx, article.MMdx, article.dxma));\n                break;\n            case \"depth\":\n                this.order = dimOrder.indexOf('T');\n                this.value = parseFloat(this.DetermineValue(article.kataDepth, article.Dispdy, article.MMdy, article.dyma));\n                break;\n            case \"height\":\n                this.order = dimOrder.indexOf('H');\n                this.value = parseFloat(this.DetermineValue(article.kataHeight, article.Dispdz, article.MMdz, article.dzma));\n                break;\n            default:\n                break;\n        }\n    }\n\n    public get Value(): number {\n        return this.value;\n    }\n\n    public get Order(): number {\n        return this.order;\n    }\n\n    public get Article(): IArticleData | undefined {\n        return this.article;\n    }\n\n    public get Others(): { \"width\"?: number, \"depth\"?: number, \"height\"?: number } {\n        if (this.Article == undefined) return {};\n        if (this.others != undefined) return this.others;\n\n        switch (this.dimension) {\n            case \"width\":\n                this.others = {\n                    \"depth\": parseFloat(this.DetermineValue(this.Article.kataDepth, this.Article.Dispdy, this.Article.MMdy, this.Article.dyma)),\n                    \"height\": parseFloat(this.DetermineValue(this.Article.kataHeight, this.Article.Dispdz, this.Article.MMdz, this.Article.dzma))\n                };\n                break;\n            case \"depth\":\n                this.others = {\n                    \"width\": parseFloat(this.DetermineValue(this.Article.kataWidth, this.Article.Dispdx, this.Article.MMdx, this.Article.dxma)),\n                    \"height\": parseFloat(this.DetermineValue(this.Article.kataHeight, this.Article.Dispdz, this.Article.MMdz, this.Article.dzma))\n                };\n                break;\n            case \"height\":\n                this.others = {\n                    \"depth\": parseFloat(this.DetermineValue(this.Article.kataDepth, this.Article.Dispdy, this.Article.MMdy, this.Article.dyma)),\n                    \"width\": parseFloat(this.DetermineValue(this.Article.kataWidth, this.Article.Dispdx, this.Article.MMdx, this.Article.dxma))\n                };\n                break;\n            default:\n                break;\n        }\n        return this.Others;\n    }\n\n    public get OthersKeys(): Array<\"width\" | \"depth\" | \"height\"> {\n        return Object.keys(this.Others) as Array<\"width\" | \"depth\" | \"height\">;\n    }\n\n    public get Dimension(): string {\n        return this.dimension;\n    }\n\n    public get TextLabel(): string {\n        switch (this.dimension) {\n            case \"width\":\n                return \"181\";\n            case \"depth\":\n                return \"182\";\n            case \"height\":\n                return \"183\";\n            default:\n                return \"\";\n        }\n    }\n\n    public get All(): { \"width\": number, \"depth\": number, \"height\": number } {\n        const result: { [key: string]: number } = this.Others;\n        result[this.dimension] = this.Value;\n        return result as { \"width\": number, \"depth\": number, \"height\": number };\n    }\n\n    public Equal(other: ArticleDimension): boolean {\n        return JSON.stringify(this.All) == JSON.stringify(other.All);\n    }\n}\n\nexport interface ArticlesByCategoriesFetchResult extends OldGeneratedCatalogFetchResult {\n    \"img-node-prefix\": string;\n    \"currency\": string;\n    \"planned-articles\": IPlannedArticle[]\n    \"dimension-scale\": number;\n    \"unit-fallback\": string;\n    \"art-prop-data\": IArtPropData[];\n    \"range-in-dimensions\": any\n}\n\ninterface InteractionVPlacerContext {\n    context: { [key: string]: unknown };\n    command: string;\n}\n\nexport class ArticlesByCategoriesCardAppConnection<T extends ArticlesByCategoriesFetchResult> extends OldGeneratedCatalogBaseCardDataAppConnection<T> {\n    private armedInteractionVPlacerContext = new ArmedValue<InteractionVPlacerContext[\"context\"], CardContainerContext>();\n\n    constructor() {\n        super();\n        this.Method = CardFetchMethod.ArticlesByCategories;\n    }\n\n    public InteractionOnIconButton(context: CardContainerContext, eventParameters: CardContainerCustomIconButtonEvent): void {\n        const entries = context.settings.Card[\"app-connection-settings\"][\"interaction-vplacer-contexts\"] as InteractionVPlacerContext[] | undefined;\n        const match = entries?.find(e => e.command === eventParameters.command);\n        if (!match) {\n            return;\n        }\n        // arm the context value; it is applied (consumed) at the next placement in loadArticle\n        this.armedInteractionVPlacerContext.arm(context, match.context);\n    }\n\n    public async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n        switch (event) {\n            case CardDataUpdateEvent.LastPOLoaded:\n                this.armedInteractionVPlacerContext.disarm(context); // defensive; consume() in loadArticle usually already cleared it\n                return CardContainerUpdate.FETCH;\n            case CardDataUpdateEvent.DeleteLO_after:\n                if (context.settings.Fetch.parameters[\"highlight-planned-articles\"] == true) {\n                    return CardContainerUpdate.FETCH;\n                }\n                return CardContainerUpdate.NONE;\n            case CardDataUpdateEvent.ChangePrice:\n                return CardContainerUpdate.FETCH;\n            case CardDataUpdateEvent.SelectionChanged:\n                this.armedInteractionVPlacerContext.disarm(context); // selection moved away from the replace target\n                return CardContainerUpdate.FETCH;\n            case CardDataUpdateEvent.VPlacerCancel:\n                this.armedInteractionVPlacerContext.disarm(context); // placement/replace aborted\n                return CardContainerUpdate.NONE;\n            default:\n                return CardContainerUpdate.NONE;\n        }\n    }\n\n    public async Fetch(context: CardContainerContext): Promise<T> {\n        const result = await super.Fetch(context);\n        result[\"img-node-prefix\"] = await CommunicationMessageService.getNodePrefix();\n\n        const currency = await CommunicationMessageService.getCurrency();\n        const dimensionScale = await CommunicationMessageService.getDimensionScale();\n        if (context.settings.Fetch.parameters[\"highlight-planned-articles\"] == true || context.settings.Fetch.parameters[\"include-planned-articles\"] == true) {\n            result[\"planned-articles\"] = await CommunicationMessageService.getPlannedArticles();\n        }\n        result[\"dimension-scale\"] = dimensionScale;\n        result[\"unit-fallback\"] = dimensionScale == 1.0 ? \"mm\" : \"cm\";\n        result[\"currency\"] = currency;\n\n        context.settings.Fetch.manufacturer = context.settings.Fetch.manufacturer && context.settings.Fetch.manufacturer.length > 0 ? context.settings.Fetch.manufacturer : await ManuProgService.getManufacturer();\n        context.settings.Fetch.program = context.settings.Fetch.program && context.settings.Fetch.program.length > 0 ? context.settings.Fetch.program : await ManuProgService.getProgram();\n\n        const articles = (result[\"articles\"] || []) as IArticleData[]\n        const artPropData = await CommunicationMessageService.getArtPropByArticle({\n            manufacturer: context.settings.Fetch.manufacturer,\n            program: context.settings.Fetch.program,\n            filter: articles.map(x => x.ArtNr).filter(x => !!x)\n        });\n        this.initializeArticleProperties(result[\"art-prop-data\"] = artPropData);\n        if (context.settings.Fetch.parameters[\"range-in-dimensions-to-sort-cards-by\"] != undefined) {\n            result[\"range-in-dimensions\"] = await CommunicationMessageService.getRangeInDimensions({ manufacturer: context.settings.Fetch.manufacturer });\n        }\n        return result;\n    }\n\n    private initializeArticleProperties(properties: IArtPropData[]) {\n        for (const prop of properties) {\n            const artNr = prop.artnr;\n            for (const variable of prop.Vars) {\n                const subKey = CatalogService.getAdditionalParamByKey(variable.key);\n                if (!this.Store.hasSubKey(artNr, subKey)) {\n                    this.Store.setSubKeyItem(artNr, subKey, variable.val)\n                }\n            }\n        }\n    }\n\n    public Filter(unfiltered: T, context: CardContainerContext, active: Array<CardDataLevelKey>): T {\n        const filtered: ArticlesByCategoriesFetchResult = {\n            \"img-node-prefix\": unfiltered[\"img-node-prefix\"],\n            \"currency\": unfiltered[\"currency\"],\n            \"dimension-scale\": unfiltered[\"dimension-scale\"],\n            \"unit-fallback\": unfiltered[\"unit-fallback\"],\n            \"articles\": new Array<IArticleData>(),\n            \"kata-pages\": unfiltered[\"kata-pages\"] as Map<string, IKataPageData>,\n            \"kata-tree\": unfiltered[\"kata-tree\"] as IKataTreeData,\n            \"planned-articles\": unfiltered[\"planned-articles\"] as Array<IPlannedArticle>,\n            \"range-in-dimensions\": unfiltered[\"range-in-dimensions\"] as IRangeInDimensions,\n            \"art-prop-data\": unfiltered[\"art-prop-data\"] as IArtPropData[]\n        };\n\n        const unfilteredArticles = unfiltered[\"articles\"] as Array<IArticleData>;\n        if (unfilteredArticles != undefined) {\n            const filter = context.settings.Fetch.filter ? context.settings.Fetch.filter as CardFetchFilters : {};\n            const categoriesToHide: Array<string> = context.settings.Fetch.parameters ? context.settings.Fetch.parameters[\"categories-to-hide\"] as Array<string> || [] : [];\n            if (filter[\"level-key-filter\"] && filter[\"level-key-filter\"].length > 0) {\n                for (const article of unfilteredArticles) {\n                    let includesAny = false;\n                    for (const category of filter[\"level-key-filter\"]) {\n                        if (typeof category == \"string\") {\n                            if (article.CatString.includes(category)) {\n                                includesAny = true;\n                                break;\n                            }\n                        }\n                    }\n                    for (const category of categoriesToHide) {\n                        if (typeof category == \"string\") {\n                            if (article.CatString.includes(category)) {\n                                includesAny = false;\n                                break;\n                            }\n                        }\n                    }\n                    if (includesAny) {\n                        if (filtered.articles.includes(article) == false) {\n                            filtered.articles.push(article);\n                        }\n                    }\n                }\n            } else {\n                for (const article of unfilteredArticles) {\n                    let includesAny = false;\n                    for (const category of categoriesToHide) {\n                        if (typeof category == \"string\") {\n                            if (article.CatString.includes(category)) {\n                                includesAny = true;\n                                break;\n                            }\n                        }\n                    }\n                    if (!includesAny) filtered.articles.push(article);\n                }\n            }\n        }\n\n        if (context.settings.Fetch.filter != undefined) {\n            filtered.articles = this.FilterByButtons(context.states.SelectedFilters, filtered.articles);\n        }\n\n        const firstSelectedLevelKey = context.states.SelectedFilters?.[0]?.filter?.[0] as string | undefined;\n        const sameArticleWidthEnabled =\n            context.settings.Fetch.parameters[\"filter-widths-from-scene\"] == true ||\n            (firstSelectedLevelKey != undefined && (context.settings.Fetch.parameters[firstSelectedLevelKey] as any)?.[\"filter-widths-from-scene\"] == true);\n\n        if (sameArticleWidthEnabled) {\n            const plannedArticles = unfiltered[\"planned-articles\"];\n            if (plannedArticles && plannedArticles.length > 0) {\n                const plannedWidths = new Set<number>();\n                for (const article of filtered.articles) {\n                    const isPlanned = plannedArticles.some(plannedArticle => article.ArtNr.startsWith(plannedArticle.catalogArticleNumber));\n                    if (isPlanned) {\n                        const width = new ArticleDimension(article, \"width\").Value;\n                        plannedWidths.add(width);\n                    }\n                }\n\n                filtered.articles = filtered.articles.filter(article => {\n                    const width = new ArticleDimension(article, \"width\").Value;\n                    return plannedWidths.has(width);\n                });\n            }\n        }\n\n        return filtered as T;\n    }\n\n    public getShowDimensions(data: ArticlesByCategoriesFetchResult): boolean {\n        const articles = data.articles || [];\n        let showDimensionsDefault: boolean = true;\n\n        return articles.some(article => {\n            const kataPage = article.ArtCategories?.map(cat => data[\"kata-pages\"].get(cat)).find(page => !!page);\n\n            const userVal = kataPage?.Modules?.[0]?.UserVal;\n            if (!userVal) return false;\n\n            try {\n                const userValJSON = JSON.parse(userVal);\n                if (userValJSON.showDimensions === undefined || userValJSON.showDimensions === null) {\n                    return showDimensionsDefault;\n                } else {\n                    return userValJSON.showDimensions;\n                }\n\n            } catch (e) {\n                console.error(e);\n                return false;\n            }\n        });\n    }\n\n    protected CreateCardsFromArticles(articles: IArticleData[] | undefined, filtered: ArticlesByCategoriesFetchResult, context: CardContainerContext, manufacturerToUse?: string, programToUse?: string) {\n        if (articles == undefined) {\n            const result: CardDataLevel = { title: \"\", cards: [] };\n            result.additional = {\n                articles: articles\n            };\n            const resultMap = new Map<CardDataLevelKey, CardDataLevel>();\n            resultMap.set(context.settings.Fetch[\"root-level\"], result);\n            return resultMap;\n        }\n\n        const data = filtered\n\n        let showTitleText = (window.g_configuration.show_article_number as boolean);\n        const showCardText = context.settings.Card[\"app-connection-settings\"][\"show-card-text\"] as boolean ?? true;\n        const showPrice = context.settings.Card[\"app-connection-settings\"][\"show-price\"] as boolean ?? false;\n        const showProductBrandText = context.settings.Card[\"app-connection-settings\"][\"show-product-brand-text\"] as boolean ?? false;\n        const showTitleTextOverwrite = context.settings.Card[\"app-connection-settings\"][\"show-title-text\"] as boolean | undefined;\n        if (showTitleTextOverwrite !== undefined) {\n            showTitleText = showTitleTextOverwrite;\n        }\n\n        const manufacturer = manufacturerToUse;\n        const program = programToUse;\n\n        const result: CardDataLevel = { title: \"\", cards: [] };\n        result.additional = {\n            articles: articles\n        };\n\n        const isHighlighted = (article: IArticleData): boolean => {\n            return data[\"planned-articles\"]?.some(x => article.ArtNr.startsWith(x.catalogArticleNumber)) ?? false;\n        };\n\n        const selectedFilters = context.states.SelectedFilters;\n\n        if (data[\"range-in-dimensions\"] != undefined && context.settings.Fetch.parameters[\"range-in-dimensions-to-sort-cards-by\"] != undefined) {\n            const relevantGroups: {\n                categories: string[];\n                articles: string[];\n                dx: number;\n                dy: number;\n                dz: number;\n            }[] = [];\n            data[\"range-in-dimensions\"].groups.forEach((value: any) => {\n                let includesAny = false;\n                articles.forEach((article) => {\n                    if (value.articles.includes(article.ArtNr)) {\n                        includesAny = true;\n                    }\n                });\n                if (includesAny) {\n                    relevantGroups.push(value);\n                }\n            });\n\n            if (relevantGroups.length > 0 && relevantGroups[0] != undefined) {\n                //\"width\", \"depth\", \"height\"// as array! first entry is most important loop it in reverse\n                const preferredDimensions = context.settings.Fetch.parameters[\"range-in-dimensions-to-sort-cards-by\"] as string[];\n                if (preferredDimensions.length > 0) {\n                    if (preferredDimensions.includes(\"width\") || preferredDimensions.includes(\"height\") || preferredDimensions.includes(\"depth\")) {\n                        preferredDimensions.reverse();//reverse to ensure first entry is most important!\n\n                        for (const preferredDimension of preferredDimensions) {\n                            let preferredDimInScene = 1000;\n                            if (preferredDimension === \"width\") {\n                                preferredDimInScene = relevantGroups[0].dx;\n                            } else if (preferredDimension === \"depth\") {\n                                preferredDimInScene = relevantGroups[0].dy;\n                            } else if (preferredDimension === \"height\") {\n                                preferredDimInScene = relevantGroups[0].dz;\n                            }\n\n                            articles.sort((a: IArticleData, b: IArticleData) => {\n                                const checkDimensionA = new ArticleDimension(a, preferredDimension);\n                                const differenceA = Math.abs(checkDimensionA.Value - preferredDimInScene);\n                                const checkDimensionB = new ArticleDimension(b, preferredDimension);\n                                const differenceB = Math.abs(checkDimensionB.Value - preferredDimInScene);\n                                return differenceA - differenceB;\n                            });\n                        }\n                    }\n                }\n            }\n        }\n\n        articles.forEach((article) => {\n            let highlighted = false;\n            if (context.settings.Fetch.parameters[\"highlight-planned-articles\"] == true) {\n                highlighted = isHighlighted(article);\n            }\n\n            const dimOrder = context.settings.Card[\"app-connection-settings\"][\"dim-order\"] as string | undefined;\n            const width = new ArticleDimension(article, \"width\", dimOrder);\n            const depth = new ArticleDimension(article, \"depth\", dimOrder);\n            const height = new ArticleDimension(article, \"height\", dimOrder);\n\n            const dimensionsArray = [width, depth, height];\n            dimensionsArray.sort((a, b) => (a.Order ?? 99999) - (b.Order ?? 99999));\n\n            const cardButtonGroups: Array<CardDataGroup<CardDataButtonGroupItem>> = [];\n            const showDoorHingeButtons = context.settings.Card[\"app-connection-settings\"][\"door-hinge-changeable\"];\n            const doorHingeIsChangeable = article.Anschl.length > 0 && article.Anschl !== \"D\" && article.Anschl !== \"FD\";\n\n            const artProps = (data[\"art-prop-data\"] || []).filter(x => x.artnr === article.ArtNr);\n\n            if (showDoorHingeButtons && doorHingeIsChangeable) {\n                const lastButtonState = this.Store.getSubKeyItem(this.getArticleKey(article), \"selected-door-hinge\");\n                const isLeftButtonActive = lastButtonState ? lastButtonState === \"L\" : article.Anschl === \"L\";\n                cardButtonGroups.push({\n                    title: \"fv.article.door_hinge\",\n                    items: [\n                        {\n                            bordered: true,\n                            active: isLeftButtonActive,\n                            icon: context.settings.Card[\"app-connection-settings\"][\"door-hinge-icon-left\"] as string || \"fv-icon-door-hinge-left\",\n                            \"click-data\": {\n                                \"door-hinge\": \"L\"\n                            }\n                        },\n                        {\n                            bordered: true,\n                            active: !isLeftButtonActive,\n                            icon: context.settings.Card[\"app-connection-settings\"][\"door-hinge-icon-right\"] as string || \"fv-icon-door-hinge-right\",\n                            \"click-data\": {\n                                \"door-hinge\": \"R\"\n                            }\n                        }\n                    ]\n                })\n            }\n\n            const isCrossArticle = article.HasCrossArticle === \"1\";\n            const isCrossArticleDelete = isCrossArticle && article.ArtNr.toLowerCase().includes(\"dummy\");\n            const articleManu = isCrossArticle || manufacturer == undefined ? article.ManuName : manufacturer;\n            const articleProg = isCrossArticle || program == undefined ? article.ProgName : program;\n\n            const additionalCardTexts: string[] = [];\n            if (showPrice && article.artPrice != undefined && !isCrossArticleDelete) {\n                const displayPrice = `${article.artPrice.toFixed(2)} ${data[\"currency\"]}`;\n                additionalCardTexts.push(displayPrice);\n            }\n\n            let brandArtValue: IArtValue | undefined = undefined;\n            if (showProductBrandText && article.ArtValues && article.ArtValues.length > 0) {\n                const brandValue = article.ArtValues.find(v => v.id === \"dhclass_markenkennzeichnung\");\n                if (brandValue) {\n                    brandArtValue = brandValue;\n                    const brandText = `${brandValue.text}: ${brandValue.values.join(', ')}${brandValue.unit ? ` ${brandValue.unit}` : ''}`;\n                    additionalCardTexts.push(brandText);\n                }\n            }\n\n            const showArticleSubTexts = context.settings.Card[\"app-connection-settings\"][\"article-sub-texts-info-modal-enabled\"] as boolean;\n            const showAdditionalInfoTexts = context.settings.Card[\"app-connection-settings\"][\"additional-info-texts-info-modal-enabled\"] as boolean;\n            if (showArticleSubTexts || showAdditionalInfoTexts) {\n                const infoTexts: Array<string> = [];\n                if (showArticleSubTexts && article.ArtTexts && article.ArtTexts.length > 0) {\n                    infoTexts.push(...article.ArtTexts);\n                }\n                if (showAdditionalInfoTexts && article.ArtValues && article.ArtValues.length > 0) {\n                    const filteredArtValues = brandArtValue\n                        ? article.ArtValues.filter(v => v.id !== \"dhclass_markenkennzeichnung\")\n                        : article.ArtValues;\n                    infoTexts.push(...filteredArtValues.map(v => `${v.text}: ${v.values.join(', ')}${v.unit ? ` ${v.unit}` : ''}`));\n                }\n                if (infoTexts.length > 0) {\n                    const infoModalButtonGroup: CardDataGroup<CardDataButtonGroupItem> = {\n                        title: \"\",\n                        items: [{\n                            active: false,\n                            icon: \"fv-icon-question-mark\",\n                            \"click-data\": {\n                                \"info-values\": infoTexts\n                            }\n                        }]\n                    };\n                    const infoModalButtonStyle = context.settings.Card[\"app-connection-settings\"][\"info-modal-button-style\"] as { [key: string]: string } | undefined;\n                    if (infoModalButtonStyle) {\n                        infoModalButtonGroup.style = infoModalButtonStyle;\n                    }\n                    cardButtonGroups.push(infoModalButtonGroup);\n                }\n            }\n\n            const inputData = this.buildInputData(context, article, artProps, data[\"dimension-scale\"], data[\"unit-fallback\"]);\n            const dropdownData = this.buildDropdownData(article, artProps, data[\"dimension-scale\"], data[\"unit-fallback\"]);\n            const dimRangeData = this.buildDimensionRangeData(article, artProps, dimensionsArray, data[\"dimension-scale\"]);\n            const dimSliderInput = context.settings.Card[\"app-connection-settings\"][\"dimensions-slider-input\"] === true && dimRangeData !== undefined && dimRangeData.length > 0;\n\n            result.cards.push({\n                image: {\n                    prefix: data[\"img-node-prefix\"],\n                    file: UtilService.ncrToUTF8(article.imgName)\n                },\n                txt: {\n                    title: showTitleText && !isCrossArticleDelete && article.artText && article.artText !== article.ArtNr ? article.ArtNr : \"\",\n                    txt: showCardText || isCrossArticleDelete ? article.artText : \"\",\n                    additional: additionalCardTexts.length > 0 ? additionalCardTexts : undefined\n                },\n                click: {\n                    nr: article.ArtNr,\n                    manufacturer: articleManu,\n                    program: articleProg,\n                    \"previous-level-key\": \"\",\n                    \"level-key\": context.settings.Fetch[\"root-level\"],\n                    \"next-level-key\": \"\",\n                    \"door-hinge\": doorHingeIsChangeable ? article.Anschl : \"\"\n                },\n                active: highlighted,\n                inputs: inputData,\n                dropdowns: !dimSliderInput ? dropdownData : [],\n                dimensions: !dimSliderInput && !isCrossArticleDelete && !inputData.length && this.getShowDimensions(data) ? this.buildDimensionInfoData(context, dimensionsArray, data) : undefined,\n                \"dimension-ranges\": dimSliderInput && !isCrossArticleDelete && this.getShowDimensions(data) ? dimRangeData : undefined,\n                \"button-groups\": cardButtonGroups,\n                additional: {\n                    \"categories\": article.CatString && article.CatString.length > 0 ? article.CatString.split(\",\") : [],\n                    \"selected-filters\": selectedFilters\n                }\n            });\n\n            result.cards.forEach(card => {\n                if (card.dimensions && card.dimensions.length > 1) {\n                    card.dimensions.sort((a, b) =>\n                        (a.order ?? 99999) - (b.order ?? 99999)\n                    );\n                }\n            });\n        });\n\n        const resultMap = new Map<CardDataLevelKey, CardDataLevel>();\n        resultMap.set(context.settings.Fetch[\"root-level\"], result);\n        return resultMap;\n    }\n\n    public CreateCards(filtered: ArticlesByCategoriesFetchResult, context: CardContainerContext): CardDataLevelMap {\n        return this.CreateCardsFromArticles(filtered.articles, filtered, context, context.settings.Fetch.manufacturer, context.settings.Fetch.program);\n    }\n\n\n    protected async loadArticle(card: CardData, context: CardContainerContext, crossArticleClients?: {\n        article: string;\n        manu: string;\n        prog: string;\n    }[]) {\n        if (card.click == undefined || card.click.nr == undefined) {\n            return;\n        }\n\n        const artNr = card.click.nr as string;\n\n        if (context.settings.Fetch.parameters[\"load-vz-planning\"] || (card.click.manufacturer as string).toLowerCase() == \"schlueter\") {\n            const specificLoadedCategories = context.settings.Fetch.parameters[\"only-specific-categories\"] ? context.settings.Fetch.parameters[\"only-specific-categories\"] as string[] : [];\n            const categories: string[] = card.additional && card.additional[\"categories\"] ? card.additional[\"categories\"] as string[] : [];\n            if (categories.includes(\"dhcat_vorschlagskombination\") || specificLoadedCategories.includes(\"dhcat_vorschlagskombination\")) {\n                await CommunicationMessageService.loadVZPlanning(card.click.manufacturer as string, card.click.program as string, artNr);\n                WebViewerService.FurnviewWebViewer?.focus();\n                return;\n            }\n        }\n\n\n        const selectedHinge = this.Store.getSubKeyItem(artNr, \"selected-door-hinge\");\n        const articleHinge = card.click[\"door-hinge\"];\n        const hasHingeChange = selectedHinge && articleHinge && selectedHinge !== articleHinge;\n\n        const persistentData = this.Store.get(artNr);\n        const extraDimensions: { [key: string]: any } = {\n            \"extraWidth\": persistentData?.[\"extraWidth\"] || \"\",\n            \"extraHeight\": persistentData?.[\"extraHeight\"] || \"\",\n            \"extraDepth\": persistentData?.[\"extraDepth\"] || \"\",\n        }\n        Object.keys(extraDimensions).forEach(key => {\n            if (!extraDimensions[key]) {\n                delete extraDimensions[key];\n            }\n        })\n\n        let categoryIncludesAnyPlacerOnce = false;\n        if (card.additional?.categories && context.settings.Behaviour?.[\"placer-once\"]?.categories) {\n            const categories = card.additional.categories as Array<string>;\n            for (const category of categories) {\n                if (context.settings.Behaviour[\"placer-once\"].categories.includes(category)) {\n                    categoryIncludesAnyPlacerOnce = true;\n                    break;\n                }\n            }\n        }\n\n        const defaultVplacerContext = context.settings.Card[\"app-connection-settings\"][\"vplacer-context\"] as any | undefined;\n        const consumedVplacerContext = this.armedInteractionVPlacerContext.consume(context);\n        const effectiveVplacerContext = consumedVplacerContext ?? defaultVplacerContext; // armed interaction context wins; else the current default\n        if (effectiveVplacerContext != undefined && Object.keys(effectiveVplacerContext).length > 0) {\n            await CommunicationMessageService.setVPlacerContextInfoData(effectiveVplacerContext);\n        }\n\n        const placerOnce = context.settings.Behaviour?.[\"placer-once\"]?.all || categoryIncludesAnyPlacerOnce || false;\n        if (placerOnce && Object.keys(extraDimensions).length === 0) {\n            const placeParams: IExternalPlacerParameter = {\n                manufacturer: card.click.manufacturer as string,\n                program: card.click.program as string,\n                articleNumber: card.click.nr as string,\n                once: placerOnce,\n            }\n            if (hasHingeChange) {\n                placeParams.extParameter = {\n                    [VIH_PLANTYPE_ANSCHLAG_INITIAL_CHANGED_L]: \"1\"\n                };\n            }\n            await CommunicationMessageService.placePO(placeParams);\n        } else {\n            const articleParams: ILoadArticleParams = {\n                artNr: card.click.nr as string,\n                hingeChanged: hasHingeChange ? \"1\" : \"\",\n                ...extraDimensions\n            }\n            await CommunicationMessageService.loadArticleWithParams(card.click.manufacturer as string, card.click.program as string, articleParams, crossArticleClients);\n            WebViewerService.FurnviewWebViewer?.focus();\n        }\n    }\n\n    public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n        await super.Click(card, context);\n        await this.loadArticle(card, context, undefined);\n    }\n\n    public override GetFormattedDragData(card: CardData, context: CardContainerContext): IDragOptions | undefined {\n        const articleNumber = card.click?.nr as string | undefined;\n        if (articleNumber == undefined || articleNumber.length < 1) {\n            return undefined;\n        }\n        const data: IDragOptions = { id: articleNumber, type: DragType.ARTICLE };\n\n        // Parity with loadArticle: carry extra dimensions (DX/DY/DZ) + hinge change from the per-article\n        // Store via extParam. Downstream (furnplan SetArticleData) already applies 10514-16 and 11205, so\n        // this is complete within furnview-components.\n        const extParam: { [key: string]: string } = {};\n        const persistent = this.Store.get(articleNumber);\n        const extraWidth = persistent?.[\"extraWidth\"] as string | undefined;\n        const extraDepth = persistent?.[\"extraDepth\"] as string | undefined;\n        const extraHeight = persistent?.[\"extraHeight\"] as string | undefined;\n        if (extraWidth) extParam[\"10514\"] = extraWidth;   // VIH_PLANTYPE_DX\n        if (extraDepth) extParam[\"10515\"] = extraDepth;   // VIH_PLANTYPE_DY\n        if (extraHeight) extParam[\"10516\"] = extraHeight; // VIH_PLANTYPE_DZ\n        const selectedHinge = this.Store.getSubKeyItem(articleNumber, \"selected-door-hinge\");\n        const articleHinge = card.click?.[\"door-hinge\"];\n        if (selectedHinge && articleHinge && selectedHinge !== articleHinge) {\n            extParam[\"11205\"] = \"1\";   // VIH_PLANTYPE_ANSCHLAG_INITIAL_CHANGED_L\n        }\n        if (Object.keys(extParam).length > 0) {\n            data.extData = extParam;\n        }\n        return data;\n    }\n\n    public async ClickCardButton(data: { [key: string]: unknown } | undefined, card: CardData, context: CardContainerContext): Promise<void> {\n        if (data == undefined) {\n            return;\n        }\n\n        const infoValues = data[\"info-values\"] as string[];\n        if (infoValues != undefined) {\n            const maskQuery = context.settings.Card[\"app-connection-settings\"][\"tooltip-button-target-information-mask-query\"];\n            if (typeof maskQuery != \"string\") {\n                return;\n            }\n\n            const elements = ComponentService.findAll(\"fv-information-mask\", maskQuery);\n            for (const element of elements) {\n                if (element instanceof InformationMaskComponent) {\n                    if (element.Modal == undefined) {\n                        continue;\n                    }\n\n                    const currentInfo = element.maskData[\"information-text\"] as string[] | undefined;\n                    const isSameInfo = element.Modal.hideElement == false && element.active && Array.isArray(currentInfo) && currentInfo.length === infoValues.length && currentInfo.every((t: string, i: number) => t === infoValues[i]);\n\n                    if (isSameInfo) {\n                        element.hide();\n                    } else {\n                        element.Modal.open(element.mask, { \"information-text\": infoValues }, maskQuery);\n                    }\n                }\n            }\n            return;\n        }\n\n        if (card.click == undefined || card.click.nr == undefined) {\n            return;\n        }\n\n        const artNr = card.click.nr as string;\n        if (artNr) {\n            this.Store.setSubKeyItem(artNr, \"selected-door-hinge\", data[\"door-hinge\"]);\n            await EventHandlerService.dispatchAsyncEvent(\"refresh-all-card-containers\", {\n                refetch: false,\n                \"include-hidden\": false\n            });\n        }\n    }\n\n    async TextFieldChanged(card: CardData, context: CardContainerContext, field: ICardDataInputSource): Promise<void> {\n        const artNr = card.click?.[\"nr\"] as string || \"\"\n        if (artNr) {\n            const storeKey = CatalogService.getAdditionalParamByKey(field.name) || field.name;\n            this.Store.setSubKeyItem(artNr, storeKey, field.value);\n        }\n    }\n\n    protected FilterByButtons(buttonsFilter: Array<FilterSelectionData> | undefined, unfilteredArticles: Array<IArticleData>): Array<IArticleData> {\n        if (buttonsFilter && buttonsFilter.length > 0) {\n            const checkDimension = (kata: string | undefined, dispd: string | undefined, mmd: string | undefined, dmax: string | undefined, filter: number) => {\n                if (kata && kata.length > 0) {\n                    if (parseFloat(kata) == filter) {\n                        return true;\n                    }\n                }\n                if (dispd && dispd.length > 0) {\n                    if (parseFloat(dispd) == filter) {\n                        return true;\n                    }\n                }\n                if (mmd && mmd.length > 0) {\n                    if (parseFloat(mmd) == filter) {\n                        return true;\n                    }\n                }\n                if (dmax && dmax.length > 0) {\n                    if (parseFloat(dmax) == filter) {\n                        return true;\n                    }\n                }\n                return false;\n            };\n\n            const checkCategory = (article: IArticleData, filter: string) => {\n                const articleCategories = article.CatString.includes(\",\") ? article.CatString.split(\",\") : [article.CatString];\n                return articleCategories.some(x => x.toLowerCase() === filter.toLowerCase());\n            }\n\n            const andFilter: (FilterSelectionData: FilterSelectionData, article: IArticleData) => boolean = (FilterSelectionData: FilterSelectionData, article: IArticleData) => {\n                if (FilterSelectionData.filter.length > 0) {\n                    const additionalParams = FilterSelectionData[\"additional-params\"] as {\n                        \"filter-type\": string,\n                        \"dimension\": string | undefined\n                    } | undefined;\n                    if (additionalParams && additionalParams[\"filter-type\"] == \"dimension\") {\n                        let doesNotInclude = false;\n                        for (const filter of FilterSelectionData.filter) {\n                            if (typeof filter == \"number\") {\n                                switch (additionalParams[\"dimension\"]) {\n                                    case \"width\":\n                                        if (checkDimension(article.kataWidth, article.Dispdx, article.MMdx, article.dxma, filter) == false) {\n                                            doesNotInclude = true;\n                                        }\n                                        break;\n                                    case \"depth\":\n                                        if (checkDimension(article.kataDepth, article.Dispdy, article.MMdy, article.dyma, filter) == false) {\n                                            doesNotInclude = true;\n                                        }\n                                        break;\n                                    case \"height\":\n                                        if (checkDimension(article.kataHeight, article.Dispdz, article.MMdz, article.dzma, filter) == false) {\n                                            doesNotInclude = true;\n                                        }\n                                        break;\n                                    default:\n                                        break;\n                                }\n                            }\n                        }\n                        return !doesNotInclude;\n                    }\n\n                    let doesNotInclude = false;\n                    for (const filter of FilterSelectionData.filter) {\n                        if (typeof filter == \"string\") {\n                            if (!checkCategory(article, filter)) {\n                                doesNotInclude = true;\n                            }\n                        }\n                    }\n                    return !doesNotInclude;\n                }\n                return true;\n            };\n            const orFilter: (FilterSelectionData: FilterSelectionData, article: IArticleData) => boolean = (FilterSelectionData: FilterSelectionData, article: IArticleData) => {\n                if (FilterSelectionData.filter.length > 0) {\n                    const additionalParams = FilterSelectionData[\"additional-params\"] as {\n                        \"filter-type\": string,\n                        \"dimension\": string | undefined\n                    } | undefined;\n                    if (additionalParams && additionalParams[\"filter-type\"] == \"dimension\") {\n                        for (const filter of FilterSelectionData.filter) {\n                            if (typeof filter == \"number\") {\n                                switch (additionalParams[\"dimension\"]) {\n                                    case \"width\":\n                                        if (checkDimension(article.kataWidth, article.Dispdx, article.MMdx, article.dxma, filter)) {\n                                            return true;\n                                        }\n                                        break;\n                                    case \"depth\":\n                                        if (checkDimension(article.kataDepth, article.Dispdy, article.MMdy, article.dyma, filter)) {\n                                            return true;\n                                        }\n                                        break;\n                                    case \"height\":\n                                        if (checkDimension(article.kataHeight, article.Dispdz, article.MMdz, article.dzma, filter)) {\n                                            return true;\n                                        }\n                                        break;\n                                    default:\n                                        break;\n                                }\n                            }\n                        }\n                        return false;\n                    }\n\n                    for (const filter of FilterSelectionData.filter) {\n                        if (typeof filter == \"string\") {\n                            if (checkCategory(article, filter)) {\n                                return true;\n                            }\n                        }\n                    }\n                    return false;\n                }\n                return true;\n            };\n\n            let filteredArticles: Array<IArticleData> = new Array<IArticleData>();\n            let tempUnfilered: Array<IArticleData> = unfilteredArticles;\n            // tempUnfilered.sort((a, b)=>a.);// TODO!\n\n            buttonsFilter.sort((a, b) => {\n                const left = a.priority ? a.priority : 0;\n                const right = b.priority ? b.priority : 0;\n                return right - left;\n            });\n\n\n            for (const filterEntry of buttonsFilter) {\n                switch (filterEntry.strategy) {\n                    case FilterSelectionStrategy.OR:\n                        tempUnfilered.forEach(article => {\n                            if (orFilter(filterEntry, article)) filteredArticles.push(article);\n                        });\n                        break;\n                    case FilterSelectionStrategy.AND:\n                    default:\n                        tempUnfilered.forEach(article => {\n                            if (andFilter(filterEntry, article)) filteredArticles.push(article);\n                        });\n                        break;\n                }\n\n                tempUnfilered = filteredArticles;\n                filteredArticles = [];\n            }\n            filteredArticles = tempUnfilered;\n            return filteredArticles;\n        } else {\n            return unfilteredArticles;\n        }\n    }\n\n    private getArticleKey(article: IArticleData) {\n        return article.ArtNr;\n    }\n\n    private buildDimensionInfoData(context: CardContainerContext, dimensionsArray: ArticleDimension[], data: ArticlesByCategoriesFetchResult): DimensionInformation[] {\n        const singleDimension = context.settings.Fetch.parameters[\"divided-inline-dimensions\"] || context.settings.Card[\"app-connection-settings\"][\"divided-inline-dimensions\"];\n        type DimPrefixType = \"width\" | \"depth\" | \"height\";\n        const buildCard = (dimensions: ArticleDimension | ArticleDimension[], prefix: DimPrefixType): DimensionInformation => {\n            const isArray = Array.isArray(dimensions);\n            return {\n                prefix: context.settings.Card.settings.dimensions?.prefixes?.[prefix] || \"\",\n                dimension: isArray ? dimensions.map(dim => dim.Value) : dimensions.Value,\n                order: isArray ? undefined : dimensions.Order,\n                icon: context.settings.Card.settings.dimensions?.icon || \"\",\n                src: context.settings.Card.settings.dimensions?.src || \"\",\n                divider: context.settings.Card.settings.dimensions?.divider || \"\",\n                unit: context.settings.Card.settings.dimensions?.unit || data[\"unit-fallback\"]?.toString() || \"\",\n                decimals: context.settings.Card.settings.dimensions?.decimals || undefined,\n                \"decimal-divider\": context.settings.Card.settings.dimensions?.[\"decimal-divider\"] || \".\",\n                \"prevent-zero-decimals\": context.settings.Card.settings.dimensions?.[\"prevent-zero-decimals\"] || true\n            }\n        }\n        if (singleDimension) {\n            return [buildCard(dimensionsArray, \"width\")]\n        }\n        const getDimensionCard = (prefix: DimPrefixType) => {\n            const dim = dimensionsArray.find(x => x.Dimension === prefix)\n            if (dim) {\n                return buildCard(dim, prefix);\n            }\n        }\n        return [\n            getDimensionCard(\"width\"),\n            getDimensionCard(\"depth\"),\n            getDimensionCard(\"height\"),\n        ].filter(x => !!x);\n    }\n\n    private buildInputData(context: CardContainerContext, article: IArticleData, propData: IArtPropData[], dimScale: number = 1, dimensionLabel: string = \"cm\"): CardDataGroup<CardDataInputGroupItem>[] {\n        if (propData.length <= 0) {\n            return [];\n        }\n        const items = propData.flatMap(x => x.Vars).map(x => {\n            const constraints = CatalogService.getMinMaxByParamName(x.key, article, dimScale);\n            const articleKey = this.getArticleKey(article);\n            if (x.values) {\n                return null;\n            }\n            const inputDefine = {\n                value: this.Store.getSubKeyItem(articleKey, CatalogService.getAdditionalParamByKey(x.key)) || x.val,\n                placeholder: x.tVal,\n                type: \"number\",\n                name: x.key,\n                min: 0,\n                classes: {\n                    \"no-spin-button\": true\n                }\n            } as CardDataInputGroupItem\n            if (Math.max(...constraints) !== 0) {\n                inputDefine.min = constraints[0];\n                inputDefine.max = constraints[1];\n            }\n            return inputDefine\n        }).filter(Boolean) as CardDataInputGroupItem[]\n        if (!items.length) {\n            return [];\n        }\n        return [\n            {\n                items\n            }\n        ]\n    }\n\n    private buildDimensionRangeData(article: IArticleData, propData: IArtPropData[], dimensionsArray: ArticleDimension[], dimScale: number = 1): IDimensionInputData[] {\n        let hasAdjustableDimension = false;\n        const dimData: Array<IDimensionInputData> = [];\n        const artPropDataVars = propData.flatMap(x => x.Vars);\n\n        for (const dim of dimensionsArray) {\n            const varKey = CatalogService.getVarKeyForDimension(dim.Dimension);\n            const dimRange = varKey ? artPropDataVars.find(v => v.key === varKey && !!v.values) : undefined;\n\n            if (dimRange) {\n                hasAdjustableDimension = true;\n                const values = [...new Set(dimRange.values!.split(\"#\").map(v => parseFloat(v)))].sort((a, b) => a - b);\n                const storeKey = CatalogService.getAdditionalParamByKey(dimRange.key) || dimRange.key;\n                const storedValue = this.Store.getSubKeyItem(this.getArticleKey(article), storeKey);\n                const currentValue = parseFloat(`${storedValue || dimRange.val}`);\n                const selectedIndex = Math.max(0, values.indexOf(currentValue));\n                dimData.push({\n                    name: storeKey,\n                    label: dim.TextLabel,\n                    values: values,\n                    selectedIndex: selectedIndex,\n                });\n            } else {\n                const dimValue = parseFloat((dim.Value * dimScale).toFixed(10));\n                dimData.push({\n                    label: dim.TextLabel,\n                    values: [dimValue]\n                });\n            }\n        }\n        return hasAdjustableDimension ? dimData : [];\n    }\n\n    private buildDropdownData(article: IArticleData, propData: IArtPropData[], dimScale: number = 1, dimensionLabel: string = \"cm\"): CardDataGroup<CardDataDropdownGroupItem>[] {\n        if (propData.length <= 0) {\n            return [];\n        }\n        const items = propData.flatMap(x => x.Vars).map(x => {\n            const constraints = CatalogService.getMinMaxByParamName(x.key, article, dimScale);\n            const articleKey = this.getArticleKey(article);\n            if (x.values) {\n                return <CardDataDropdownGroupItem>{\n                    value: this.Store.getSubKeyItem(articleKey, CatalogService.getAdditionalParamByKey(x.key)) || x.val,\n                    name: x.key,\n                    values: x.values?.split(\"#\") || [],\n                    suffix: dimensionLabel,\n                    placeholder: x.tVal\n                }\n            }\n        }).filter(Boolean) as CardDataDropdownGroupItem[]\n        if (!items.length) {\n            return [];\n        }\n        return [\n            {\n                items\n            }\n        ]\n    }\n\n}\n\nCardDataService.RegisterAppConnection(new ArticlesByCategoriesCardAppConnection());\n","import { CardDataService } from \"../card.data.service\";\nimport {\n    CardContainerContext,\n    CardData,\n    CardDataLevelKey,\n    CardFetchMethod,\n} from \"../../models/card-container\";\nimport {\n    ArticlesByCategoriesCardAppConnection,\n    ArticlesByCategoriesFetchResult\n} from \"./articles-by-categories.card.app.connection\";\nimport { ComponentService } from \"../component.service\"\nimport { FormElementInfo, FormElementsWrapper } from \"../../components/configurator/configurator.form.base\"\nimport { ConfiguratorFormComponent } from \"../../components/configurator/configurator.form.component\"\nimport { ConfiguratorApiDataService } from \"../../utils/configurator-api.data.service\";\nimport { ConfiguratorApiService } from \"@dh-software/webui-api\";\nimport { IConfiguratorApiSetParams } from \"@dh-software/webui-types\";\n\n\ninterface IAppConnectionSettingsConfiguratorForm {\n    target?: {\n        tag: string;\n        query?: string;\n    }\n    \"form-elements-settings\": Array<{ \"target\": { tag: string; query?: string; }, \"form-elements\": Array<FormElementInfo | FormElementsWrapper> }>;\n    \"click-target-form-elements\": {\n        [key: string]: string[]\n    }\n}\n\nexport class ArticlesByCategoriesConfiguratorFormCardAppConnection<T extends ArticlesByCategoriesFetchResult> extends ArticlesByCategoriesCardAppConnection<T> {\n    constructor() {\n        super();\n        this.Method = CardFetchMethod.ArticlesByCategoriesConfiguratorForm;\n    }\n\n    public Filter(unfiltered: T, context: CardContainerContext, active: Array<CardDataLevelKey>): T {\n        const result = super.Filter(unfiltered, context, active);\n\n        const selectedFilters = context.states.SelectedFilters;\n        if (selectedFilters.length < 1 || selectedFilters[0].filter.length < 1) {\n            return result;\n        }\n\n        const formSettings = context.settings.Card[\"app-connection-settings\"][\"configurator-form-settings\"] as IAppConnectionSettingsConfiguratorForm;\n        if (formSettings) {\n\n            const elementsSettings = formSettings[\"form-elements-settings\"];\n            if (elementsSettings) {\n                for (const targetNode of elementsSettings) {\n                    if (targetNode.target?.tag) {\n                        const prefixToAppend = selectedFilters[0].filter[0].toString().toUpperCase(); // first filter for now...\n                        const targetForm = ComponentService.find(targetNode.target.tag, targetNode.target.query) as ConfiguratorFormComponent;\n\n                        if (targetForm) {\n                            const formElements = targetNode[\"form-elements\"];\n                            const applyPrefix = (element_: FormElementInfo | FormElementsWrapper): FormElementInfo | FormElementsWrapper => {\n                                if ('elements' in element_) {\n                                    const wrapper = element_ as FormElementsWrapper;\n                                    return {\n                                        ...wrapper,\n                                        elements: wrapper.elements.map(applyPrefix),\n                                        ...( wrapper[\"inline-elements\"] ? { \"inline-elements\": wrapper[\"inline-elements\"].map(applyPrefix) } : {} )\n                                    };\n                                }\n                                const element = element_ as FormElementInfo;\n                                if (element.name !== undefined) {\n                                    return {\n                                        ...element,\n                                        name: `${prefixToAppend}_${element.name}`,\n                                    };\n                                }\n                                return element_;\n                            };\n                            const updatedElements = formElements.map(applyPrefix);\n\n\n                            if (JSON.stringify(targetForm.formElements) != JSON.stringify(updatedElements)) {\n                                targetForm.formElements = updatedElements;\n                                targetForm.Refetch();\n                            }\n                        }\n                    }\n                }\n            }\n\n\n            // if (formSettings.target?.tag) {\n            //     const prefixToAppend = selectedFilters[0].filter[0].toString().toUpperCase(); // first filter for now...\n            //     const targetForm = ComponentService.find(formSettings.target.tag, formSettings.target.query) as ConfiguratorFormComponent;\n\n            //     if (targetForm) {\n            //         const formElements = formSettings[\"form-elements\"];\n            //         const updatedElements = formElements.map(element_ => {\n            //             const element = element_ as FormElementInfo;\n\n            //             if (element.name !== undefined) {\n            //                 return {\n            //                     ...element,\n            //                     name: `${prefixToAppend}_${element.name}`,\n            //                 };\n            //             }\n\n            //             return element_;\n            //         });\n\n\n            //         if (JSON.stringify(targetForm.formElements) != JSON.stringify(updatedElements)) {\n            //             targetForm.formElements = updatedElements;\n            //             targetForm.Refetch();\n            //         }\n            //     }\n            // }\n        }\n        return result;\n    }\n\n    private AppendValidTarget(name_: string | undefined, group_: string, targets_: { name: string, group: string }[]): void {\n        if (name_ == undefined) {\n            return;\n        }\n\n        const target = targets_.find((value)=>{\n            return value.group == group_ && value.name == name_;\n        });\n        if (target == undefined) {\n            targets_.push({\n                name: name_,\n                group: group_\n            });\n        }\n    }\n\n    public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n        const formSettings = context.settings.Card[\"app-connection-settings\"][\"configurator-form-settings\"] as IAppConnectionSettingsConfiguratorForm;\n        if (formSettings) {\n            if (formSettings.target?.tag) {\n                const selectedFilters = context.states.SelectedFilters;\n                if (selectedFilters.length < 1 || selectedFilters[0].filter.length < 1) {\n                    await super.Click(card, context);\n                    return;\n                }\n\n                const prefixToAppend = selectedFilters[0].filter[0].toString().toUpperCase(); // first filter for now...\n\n                const clickTargetFormElements = formSettings[\"click-target-form-elements\"];\n                if (clickTargetFormElements == undefined) {\n                    await super.Click(card, context);\n                    return;\n                }\n\n                const possibleClickTargets: string[] = clickTargetFormElements[prefixToAppend];\n                if (possibleClickTargets == undefined) {\n                    await super.Click(card, context);\n                    return;\n                }\n\n                for (const clickTarget of possibleClickTargets) {\n                    if (clickTarget == undefined) {\n                        return;\n                    }\n                    const clickTargetFormElement = {\n                        \"tag\": \"\",\n                        \"name\": clickTarget\n                    };\n\n                    const targets: { name: string, group: string }[] = [];\n                    const groups = Object.keys(ConfiguratorApiDataService.Data);\n                    for (const group of groups) {\n                        const countedTargetFormElements = ConfiguratorApiDataService.GetElementsToCreateFromElementDefinition(group, ConfiguratorApiDataService.Data[group], [clickTargetFormElement], prefixToAppend + \"_\", \"\");\n                        for (const countedTargetFormElement of countedTargetFormElements) {\n                            this.AppendValidTarget((countedTargetFormElement as FormElementInfo).name, group, targets);\n                            const names = (countedTargetFormElement as FormElementInfo).names;\n                            if (names != undefined) {\n                                for (const name of names) {\n                                    this.AppendValidTarget(name, group, targets);\n                                }\n                            }\n                        }\n                    }\n\n                    const params: IConfiguratorApiSetParams = {\n                        groups: []\n                    };\n\n                    if (card.click && targets.length > 0) {\n                        const value = {\n                            hinge: card.click[\"door-hinge\"],\n                            article: card.click.nr\n                        };\n                        for (const target of targets) {\n                            const data = ConfiguratorApiDataService.Get(target.group, \"\", target.name);\n                            if (data.type == \"string\") {\n                                params.groups.push({\n                                    name: target.group,\n                                    modifications: [{\n                                        target: data.name ? data.name : \"\",\n                                        type: \"string\",\n                                        value: JSON.stringify(value)\n                                    }]\n                                });\n                            }\n                        }\n                        await ConfiguratorApiService.SetApiData(params);\n                    }\n                }\n                return;\n            }\n        }\n\n\n\n        await super.Click(card, context);// TODO PH/LL: different card click for replace/update logic (e.g via JSON-Input ...)\n    }\n}\n\nCardDataService.RegisterAppConnection(new ArticlesByCategoriesConfiguratorFormCardAppConnection());\n","import {\n    ArticleDimension,\n    ArticlesByCategoriesCardAppConnection,\n    ArticlesByCategoriesFetchResult\n} from \"./articles-by-categories.card.app.connection\";\nimport {\n    CardContainerContext,\n    CardContainerCustomIconButtonEvent,\n    CardContainerUpdate,\n    CardData,\n    CardDataLevel,\n    CardDataLevelKey,\n    CardDataLevelMap,\n    CardDataUpdateEvent,\n    CardFetch,\n    CardFetchMethod,\n    FilterSelectionStrategy\n} from \"../../models/card-container\";\nimport { ComponentService } from \"../component.service\";\nimport { BaseCardContainer } from \"../../components/standard/card-container/base/base-card-container\";\nimport { EventHandlerService } from \"../event.handler.service\";\nimport { CardDataService } from \"../card.data.service\";\nimport { DimensionHelper } from \"../dimension-helper.class\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\nimport { IArticleData } from \"@dh-software/webui-types\";\n\ninterface ArticlesByCategoriesDimensionFetchResult extends ArticlesByCategoriesFetchResult {\n    \"article-dimensions\": ArticleDimension[];\n    \"disabled-dimensions\": number[];\n    dimensions: number[];\n    active: CardDataLevelKey[]\n}\n\nexport class ArticlesByCategoriesDimensionCardAppConnection<T extends ArticlesByCategoriesDimensionFetchResult> extends ArticlesByCategoriesCardAppConnection<T> {\n    constructor() {\n        super();\n        this.Method = CardFetchMethod.ArticlesByCategoriesDimensions;\n    }\n\n    private getFetchDimension(context: CardContainerContext): string | undefined {\n        const dimension = context.settings.Fetch.parameters[\"dimension\"] as string | undefined;\n        const dimensionIndex = context.settings.Fetch.parameters[\"automatic-dimension-order-index\"] as number | undefined;\n        if (dimension) {\n            return dimension;\n        }\n        if (dimensionIndex !== undefined) {\n            return DimensionHelper.getDimensionNameFromIndex(dimensionIndex);\n        }\n        return undefined;\n    }\n\n    public async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n        if (event == CardDataUpdateEvent.LastPOLoaded) {\n            return CardContainerUpdate.FILTER;\n        }\n        if (event == CardDataUpdateEvent.CardContainerVisible) {\n            return CardContainerUpdate.FETCH;\n        }\n        return CardContainerUpdate.NONE;\n    }\n\n    private async GetDisabledDimensions(fetch: CardFetch, articleDimensions: Array<ArticleDimension>): Promise<Array<number>> {\n        const cardContainerDisableSource = fetch.parameters ? fetch.parameters[\"card-container-disable-source-selector\"] as {\n            tag: string,\n            query: string\n        } | undefined : undefined;\n        if (cardContainerDisableSource != undefined) {\n            const filteredArticleDimensionValues = new Array<Array<number>>();\n\n            const disableSource = ComponentService.find(cardContainerDisableSource.tag, cardContainerDisableSource.query) as BaseCardContainer;\n            if (disableSource != undefined) {\n                await disableSource.CheckFetchPromise();\n\n                if (disableSource.FilteredFetchResult != undefined) {\n                    const articles = disableSource.FilteredFetchResult.articles as Array<IArticleData>;\n                    for (const article of articles) {\n                        const articleDimension = new ArticleDimension(article, \"width\");\n                        filteredArticleDimensionValues.push([\n                            articleDimension.All.width,\n                            articleDimension.All.depth,\n                            articleDimension.All.height\n                        ]);\n                    }\n                }\n            }\n\n            const result = new Array<number>();\n            for (const articleDimension of articleDimensions) {\n                let any = false;\n                for (const value of filteredArticleDimensionValues) {\n                    if (value.includes(articleDimension.Value)) {\n                        any = true;\n                        break;\n                    }\n                }\n                if (!any) {\n                    result.push(articleDimension.Value);\n                }\n            }\n            return result;\n        }\n\n\n        const disablePrecheckSelectors = fetch.parameters ? fetch.parameters[\"disable-precheck-selectors\"] as Array<{\n            tag: string,\n            query: string\n        }> | undefined : undefined;\n        if (disablePrecheckSelectors != undefined) {\n            const result = new Array<number>();\n            for (const selector of disablePrecheckSelectors) {\n                const disablePrecheckElements = ComponentService.findAll(selector.tag, selector.query) as Array<BaseCardContainer>;\n                for (const element of disablePrecheckElements) {\n                    await element.CheckFetchPromise();\n                    if (element.CardData) {\n                        for (const level of element.CardData) {\n                            for (const articleDimension of articleDimensions) {\n                                if (level[1].additional && level[1].additional.articles) {\n                                    const filterResult = this.FilterByButtons([{\n                                        filter: [articleDimension.Value],\n                                        strategy: FilterSelectionStrategy.AND,\n                                        \"additional-params\": {\n                                            \"filter-type\": \"dimension\",\n                                            \"dimension\": articleDimension.Dimension\n                                        }\n                                    }], level[1].additional.articles as Array<IArticleData>);\n\n                                    if (filterResult.length < 1 && !result.includes(articleDimension.Value)) {\n                                        result.push(articleDimension.Value);\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n            return result;\n        }\n        return new Array<number>();\n    }\n\n    public async Fetch(context: CardContainerContext): Promise<T> {\n        const dimension = this.getFetchDimension(context);\n        if (dimension == undefined) {\n            console.error(\"articles-by-categories-dimension.card.app.connection> Fetch failed! No dimension provided in fetch.parameters.dimension\");\n            return {} as T;\n        }\n        let result = await super.Fetch(context);\n        result = super.Filter(result, context, []);\n\n        if (result.articles) {\n            result[\"article-dimensions\"] = new Array<ArticleDimension>();\n            for (const article of result.articles as Array<IArticleData>) {\n                (result[\"article-dimensions\"] as Array<ArticleDimension>).push(new ArticleDimension(article, dimension));\n            }\n            if (context.states.SuspendDisableSource) {\n                result[\"disabled-dimensions\"] = new Array<number>();\n            } else {\n                result[\"disabled-dimensions\"] = await this.GetDisabledDimensions(context.settings.Fetch, result[\"article-dimensions\"] as Array<ArticleDimension>);// TODO: Move to Filter by awaiting other fetches here...\n            }\n\n            const dimensions = new Array<number>();\n            for (const articleDimension of result[\"article-dimensions\"] as Array<ArticleDimension>) {\n                if (!dimensions.includes(articleDimension.Value)) {\n                    dimensions.push(articleDimension.Value);\n                }\n            }\n            result[\"dimensions\"] = dimensions;\n        }\n        return result;\n    }\n\n    public Filter(unfiltered: T, context: CardContainerContext, active: Array<CardDataLevelKey>): T {\n        const filtered = unfiltered\n\n        const options = active;\n        for (const option of options) {\n            if (typeof option == \"number\") {\n                if (!filtered.dimensions.includes(option)) {\n                    const index = active.indexOf(option);\n                    active = active.splice(index, 1);\n                }\n            }\n        }\n        filtered[\"active\"] = active;\n        return filtered;\n    }\n\n    public CreateCards(filtered: ArticlesByCategoriesDimensionFetchResult, context: CardContainerContext): CardDataLevelMap {\n        const fetchResult = filtered\n        const rootLevel: CardDataLevel = { title: \"\", cards: [] };\n        const groupings = new Map<CardDataLevelKey, CardDataLevel>();\n        if (fetchResult.dimensions) {\n            if (fetchResult.dimensions.length > 0) {\n                fetchResult.dimensions.sort((a, b) => {\n                    return a - b;\n                });\n\n                const dimensionScale = fetchResult[\"dimension-scale\"];\n                let fractionDigits = context.settings.Fetch.parameters[\"fraction-digits\"] ? context.settings.Fetch.parameters[\"fraction-digits\"] as number : 1;\n                if (typeof fractionDigits != \"number\") {\n                    fractionDigits = 1;\n                }\n                const valueGroupRange = (context.settings.Fetch.parameters[\"value-group-range\"] ? context.settings.Fetch.parameters[\"value-group-range\"] as number : 1000.0);\n                const disabledDimensions = fetchResult[\"disabled-dimensions\"];\n                const active = fetchResult[\"active\"];\n\n                const rangeGroups = new Array<Array<number>>();\n                let currentGroup = new Array<number>();\n                let groupRangeMax = valueGroupRange;\n                for (const dimension of fetchResult.dimensions) {\n                    if (dimension > groupRangeMax + 0.001) {\n                        rangeGroups.push(currentGroup);\n                        currentGroup = new Array<number>();\n                        groupRangeMax += valueGroupRange;\n                    }\n                    currentGroup.push(dimension);\n                }\n                if (!rangeGroups.includes(currentGroup)) {\n                    rangeGroups.push(currentGroup);\n                }\n\n                const maxSizeAdjustedGroups = new Array<Array<number>>();\n                const valueGroupMaxSize = context.settings.Fetch.parameters[\"value-group-max-size\"] as number | undefined;\n                if (valueGroupMaxSize != undefined) {\n                    for (const group of rangeGroups) {\n                        if (group.length > valueGroupMaxSize) {\n                            const leftHalf = group.splice(0, Math.ceil(group.length * 0.5));\n                            maxSizeAdjustedGroups.push(leftHalf);\n                        }\n                        maxSizeAdjustedGroups.push(group);\n                    }\n                } else {\n                    maxSizeAdjustedGroups.push(...rangeGroups);\n                }\n\n\n                const groups = new Array<Array<number>>();\n                const valueGroupMinSplitSize = context.settings.Fetch.parameters[\"value-group-min-split-size\"] as number | undefined;\n                if (valueGroupMinSplitSize != undefined && valueGroupMinSplitSize > maxSizeAdjustedGroups.length) {\n                    // valueGroupMinSplitSize\n                    let mergedGroup = undefined;\n                    for (const group of maxSizeAdjustedGroups) {\n                        if (mergedGroup != undefined) {\n                            mergedGroup.push(...group);\n\n                            if (mergedGroup.length > valueGroupMinSplitSize) {\n                                groups.push(mergedGroup);\n                                mergedGroup = undefined;\n                            }\n                            continue;\n                        }\n\n                        if (group.length < valueGroupMinSplitSize) {\n                            mergedGroup = new Array<number>();\n                            mergedGroup.push(...group);\n                            continue;\n                        }\n\n                        groups.push(group);\n                    }\n                } else {\n                    groups.push(...maxSizeAdjustedGroups);\n                }\n\n\n                if (groups.length == 1) {\n                    const group: Array<number> | undefined = groups.at(0);\n                    if (group && group.length > 0) {\n                        for (const option of group) {\n                            const optionDisabled = disabledDimensions.includes(option);\n\n                            let optionActive = false;\n                            if (active.includes(option)) {\n                                optionActive = true;\n                            }\n                            rootLevel.cards.push({\n                                txt: { title: (option * dimensionScale).toFixed(fractionDigits) },\n                                click: {\n                                    \"previous-level-key\": context.settings.Fetch[\"root-level\"],\n                                    \"level-key\": option,\n                                    \"next-level-key\": \"\"\n                                },\n                                active: optionActive,\n                                disabled: optionDisabled\n                            });\n                        }\n                    }\n                } else {\n                    for (const group of groups) {\n                        if (group.length > 0) {\n                            const first = (group.at(0) as number) * dimensionScale;\n                            const last = (group.at(group.length - 1) as number) * dimensionScale;\n\n                            const groupLevelKey = `${first.toFixed(fractionDigits)} - ${last.toFixed(fractionDigits)}`;\n                            rootLevel.cards.push({\n                                txt: { title: groupLevelKey },\n                                click: {\n                                    \"previous-level-key\": \"\",\n                                    \"level-key\": context.settings.Fetch[\"root-level\"],\n                                    \"next-level-key\": groupLevelKey\n                                }\n                            });\n\n                            const groupLevel: CardDataLevel = { title: groupLevelKey, cards: [] };\n                            for (const option of group) {\n                                const optionDisabled = disabledDimensions.includes(option);\n\n                                let optionActive = false;\n                                if (active.includes(option)) {\n                                    optionActive = true;\n                                }\n                                groupLevel.cards.push({\n                                    txt: { title: (option * dimensionScale).toFixed(fractionDigits) },\n                                    click: {\n                                        \"previous-level-key\": groupLevelKey,\n                                        \"level-key\": option,\n                                        \"next-level-key\": \"\"\n                                    },\n                                    active: optionActive,\n                                    disabled: optionDisabled\n                                });\n                            }\n                            groupings.set(groupLevelKey, groupLevel);\n                        }\n                    }\n                }\n            }\n        }\n\n        if (context.settings.Fetch.parameters[\"force-single-option-as-empty\"] == true) {\n            if (rootLevel.cards.length < 2 && groupings.size < 1) {\n                rootLevel.cards = [];\n            }\n        }\n\n        if (groupings.size == 1) {\n            rootLevel.cards = [];\n            for (const grouping of groupings) {\n                rootLevel.cards.push(...grouping[1].cards);\n            }\n            groupings.clear();\n        }\n\n        const result = new Map<CardDataLevelKey, CardDataLevel>();\n        result.set(context.settings.Fetch[\"root-level\"], rootLevel);\n        for (const group of groupings) {\n            result.set(group[0], group[1]);\n        }\n        return result;\n    }\n\n\n    private clickActive = false;\n\n    public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n        if (this.clickActive) return;\n        this.clickActive = true;\n        await super.Click(card, context);\n\n        if (context.filter != undefined) {\n            const dimension = this.getFetchDimension(context);\n            if (dimension) {\n                context.filter.AdditionalParams = {\n                    \"filter-type\": \"dimension\",\n                    \"dimension\": dimension\n                };\n            }\n            context.filter.Strategy = FilterSelectionStrategy.OR;\n\n            if (card.disabled == false && card.click != undefined) {\n                if (typeof card.click[\"level-key\"] == \"number\") {\n                    context.filter.Toggle(card.click[\"level-key\"]);\n                }\n            }\n            await EventHandlerService.dispatchAsyncEvent(\"refresh-all-card-containers\", {\n                refetch: true,\n                \"include-hidden\": false\n            });\n            await CardDataService.WaitForAllCardContainerFetchPromises();\n\n            if (context.settings.Fetch.parameters[\"disabled-reset-selection\"]) {\n                if (context.cards != undefined && card.click != undefined) {\n                    for (const level of context.cards) {\n                        for (const cardInLevel of level[1].cards) {\n                            if (cardInLevel.click == undefined) continue;\n                            if (cardInLevel.click[\"level-key\"] == card.click[\"level-key\"]) {\n                                if (cardInLevel.disabled == false && cardInLevel.active == false) {\n                                    context.filter.Add(card.click[\"level-key\"]);\n                                    break;\n                                }\n                            }\n                        }\n                    }\n                }\n                await EventHandlerService.dispatchAsyncEvent(\"refresh-all-card-containers\", {\n                    refetch: true,\n                    \"include-hidden\": false\n                });\n                await CardDataService.WaitForAllCardContainerFetchPromises();\n            }\n        }\n\n\n        this.clickActive = false;\n    }\n\n    public InitFilterSelectionParams(context: CardContainerContext): void {\n        if (context.filter != undefined) {\n            const dimension = this.getFetchDimension(context);\n            if (dimension) {\n                context.filter.AdditionalParams = {\n                    \"filter-type\": \"dimension\",\n                    \"dimension\": dimension\n                };\n            }\n            context.settings.Filter[\"selection-strategy\"] = FilterSelectionStrategy.OR;\n        }\n    }\n\n    private _lastInteractionTimer: number | undefined = undefined;\n    public InteractionOnIconButton(context: CardContainerContext, eventParameters: CardContainerCustomIconButtonEvent): void {\n        const triggerTime = Date.now();\n\n        if (context.settings.Fetch.parameters[\"icon-button-interaction-set-filter-dimension\"] !== eventParameters.command) {\n            return;\n        }\n        if (this._lastInteractionTimer !== undefined && triggerTime - this._lastInteractionTimer < 1000) {\n            return;\n        }\n\n        this._lastInteractionTimer = triggerTime;\n        const dimension = this.getFetchDimension(context);\n\n        CommunicationMessageService.getLOsFromScene([eventParameters.instanceIdent]).then(async articles => {\n            if (articles.length === 0) {\n                return;\n            }\n\n            const article = articles[0];\n            if (article === undefined) {\n                return;\n            }\n\n            context.filter?.Clear();\n\n            switch (dimension) {\n                case \"width\":\n                    if (article.dimension && article.dimension.length > 0 && article.dimension[0] !== undefined) {\n                        context.filter?.Add(article.dimension[0]);\n                    }\n                    break;\n                case \"depth\":\n                    if (article.dimension && article.dimension.length > 1 && article.dimension[1] !== undefined) {\n                        context.filter?.Add(article.dimension[1]);\n                    }\n                    break;\n                case \"height\":\n                    if (article.dimension && article.dimension.length > 2 && article.dimension[2] !== undefined) {\n                        context.filter?.Add(article.dimension[2]);\n                    }\n                    break;\n            }\n        });\n    }\n}\n\nCardDataService.RegisterAppConnection(new ArticlesByCategoriesDimensionCardAppConnection());\n","import {\n    ArticlesByCategoriesCardAppConnection,\n    ArticlesByCategoriesFetchResult\n} from \"./articles-by-categories.card.app.connection\";\nimport {\n    CardContainerContext,\n    CardContainerUpdate,\n    CardData,\n    CardDataLevel,\n    CardDataLevelKey,\n    CardDataLevelMap,\n    CardDataUpdateEvent,\n    CardFetchMethod,\n    FilterSelectionStrategy\n} from \"../../models/card-container\";\nimport {EventHandlerService} from \"../event.handler.service\";\nimport {CardDataService} from \"../card.data.service\";\nimport {ManuProgService} from \"../manu-prog.service\";\nimport {UtilService} from \"../util.service\";\nimport {IArticleData, ICategoryData} from \"@dh-software/webui-types\";\n\nexport interface ArticleByCategoriesCategoryFetchResult extends ArticlesByCategoriesFetchResult {\n    \"active\": CardDataLevelKey[];\n    \"categories\": Map<number, Map<string, { name: string, order: number }>>\n    \"kata-pages\": any;\n}\n\nexport class ArticlesByCategoriesCategorySelectionCardAppConnection<T extends ArticleByCategoriesCategoryFetchResult> extends ArticlesByCategoriesCardAppConnection<T> {\n    constructor() {\n        super();\n        this.Method = CardFetchMethod.ArticlesByCategoriesCategorySelection;\n    }\n\n    public async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n        if (event == CardDataUpdateEvent.SelectionChanged) {\n            return CardContainerUpdate.FILTER;\n        }\n        return await super.CheckUpdate(event, eventParameters, context);\n    }\n\n    public async Fetch(context: CardContainerContext) {\n        context.settings.Fetch.manufacturer = context.settings.Fetch.manufacturer && context.settings.Fetch.manufacturer.length > 0 ? context.settings.Fetch.manufacturer : await ManuProgService.getManufacturer();\n        context.settings.Fetch.program = context.settings.Fetch.program && context.settings.Fetch.program.length > 0 ? context.settings.Fetch.program : await ManuProgService.getProgram();\n        return await super.Fetch(context);\n    }\n\n\n    public Filter(unfiltered: T, context: CardContainerContext, active: Array<CardDataLevelKey>): T {\n        const filtered = super.Filter(unfiltered, context, active);\n        filtered[\"active\"] = active;\n        filtered[\"categories\"] = new Map<number, Map<string, { name: string, order: number }>>();\n\n\n        if (filtered[\"kata-pages\"]) {\n            const categoriesOccurrences = new Map<string, number>();\n            for (const article of filtered.articles) {\n                const categories = article.CatString.split(\",\");\n                for (const category of categories) {\n                    if (category.includes(\"manucat_\")) continue;\n\n                    let occurances = categoriesOccurrences.get(category);\n                    if (occurances == undefined) {\n                        occurances = 0;\n                    }\n                    occurances += 1;\n                    categoriesOccurrences.set(category, occurances);\n                }\n            }\n\n            const categoriesToSkip = new Array<string>();\n            for (const category of categoriesOccurrences) {\n                if (category[1] == filtered.articles.length) {\n                    categoriesToSkip.push(category[0]);\n                }\n            }\n            if (context.settings.Fetch.parameters[\"kata-pages-to-show\"]) {\n                const kataPagesToShowParam = context.settings.Fetch.parameters[\"kata-pages-to-show\"] as {\n                    [program: string]: Array<string>\n                } | Array<string>;\n                if (kataPagesToShowParam) {\n                    const kataPagesToShow = Array.isArray(kataPagesToShowParam) ? kataPagesToShowParam : kataPagesToShowParam[context.settings.Fetch.program];\n                    if (kataPagesToShow && kataPagesToShow.length > 0) {\n                        for (const katapage of filtered[\"kata-tree\"].kataPages) {\n                            if (!kataPagesToShow.includes(katapage.id)) {\n                                if (!categoriesToSkip.includes(katapage.id)) {\n                                    categoriesToSkip.push(katapage.id);\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n\n\n            const fill = (categoryDataList: Array<ICategoryData>, categoryLevels: Map<number, Map<string, {\n                name: string,\n                order: number\n            }>>) => {\n                for (const kategoryData of categoryDataList) {\n                    if (kategoryData.priority != undefined) {\n                        if (categoriesOccurrences.has(kategoryData.id)) {\n                            if (!categoriesToSkip.includes(kategoryData.id)) {\n                                let level = categoryLevels.get(kategoryData.priority);\n                                if (level) {\n                                    const category = level.get(kategoryData.id);\n                                    if (category == undefined) {\n                                        level.set(kategoryData.id, {\n                                            name: UtilService.ncrToUTF8(kategoryData.name),\n                                            order: kategoryData.order ? kategoryData.order : 99999\n                                        });\n                                    }\n                                } else {\n                                    level = new Map<string, { name: string, order: number }>();\n                                    level.set(kategoryData.id, {\n                                        name: UtilService.ncrToUTF8(kategoryData.name),\n                                        order: kategoryData.order ? kategoryData.order : 99999\n                                    });\n                                    categoryLevels.set(kategoryData.priority, level);\n                                }\n                            }\n                        }\n\n                        if (kategoryData.children) {\n                            fill(kategoryData.children, categoryLevels);\n                        }\n                    }\n                }\n            };\n            fill(filtered[\"kata-tree\"].kataPages, filtered[\"categories\"]);\n        }\n        return filtered;\n    }\n\n\n    public CreateCards(filtered: T, context: CardContainerContext): CardDataLevelMap {\n        const data: {\n            \"img-node-prefix\": string,\n            \"currency\": string,\n            \"dimension-scale\": number,\n            \"unit-fallback\": \"mm\" | \"cm\",\n            \"articles\": Array<IArticleData>,\n            \"categories\": Map<number, Map<string, { name: string, order: number }>>,\n            \"active\": Array<CardDataLevelKey>\n        } = filtered as {\n            \"img-node-prefix\": string,\n            \"currency\": string,\n            \"dimension-scale\": number,\n            \"unit-fallback\": \"mm\" | \"cm\",\n            \"articles\": Array<IArticleData>,\n            \"categories\": Map<number, Map<string, { name: string, order: number }>>,\n            \"active\": Array<CardDataLevelKey>\n        };\n\n        const sortedByKey = new Map([...data.categories].sort((a, b) => a[0] - b[0]));\n        const sorted = new Map<number, Map<string, { name: string, order: number }>>();\n        for (const level of sortedByKey) {\n            // const _unsorted = level[1];\n            const sortedLevel = new Map([...level[1]].sort((a, b) => {\n                return a[1].order - b[1].order;\n            }));\n            sorted.set(level[0], sortedLevel);\n        }\n\n        const resultMap = new Map<CardDataLevelKey, CardDataLevel>();\n        for (const level of sorted) {\n            const result: CardDataLevel = {title: \"\", cards: []};\n            result.additional = {\n                articles: data.articles\n            };\n            for (const categories of level[1]) {\n                result.cards.push({\n                    txt: {txt: categories[1].name},\n                    click: {\n                        \"previous-level-key\": \"\",\n                        \"level-key\": context.settings.Fetch[\"root-level\"],\n                        \"next-level-key\": categories[0]\n                    },\n                    active: data[\"active\"].includes(categories[0])\n                });\n            }\n            resultMap.set(level[0], result);\n        }\n        return resultMap;\n    }\n\n\n    private clickActive = false;\n\n    public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n        if (this.clickActive) return;\n        this.clickActive = true;\n\n        await super.Click(card, context);\n\n        if (context.filter != undefined && card.click != undefined) {\n            context.filter.Strategy = FilterSelectionStrategy.AND;\n            context.filter.Toggle(card.click[\"next-level-key\"]);\n        }\n\n        await EventHandlerService.dispatchAsyncEvent(\"refresh-all-card-containers\", {\n            refetch: true,\n            \"include-hidden\": false\n        });\n        await CardDataService.WaitForAllCardContainerFetchPromises();\n        this.clickActive = false;\n    }\n}\n\nCardDataService.RegisterAppConnection(new ArticlesByCategoriesCategorySelectionCardAppConnection());\n","import { BaseCardDataAppConnection } from \"./base.card.app.connection\";\nimport {\n    CardContainerContext,\n    CardContainerUpdate,\n    CardData,\n    CardDataUpdateEvent,\n    FilterSelectionStrategy\n} from \"../../models/card-container\";\nimport { ManuProgService } from \"../manu-prog.service\";\nimport { UtilService } from \"../util.service\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\nimport {\n    IArticleData,\n    IModifyPropertyOptions,\n    IPlannedArticle,\n    IProgProperty,\n    IProgPropertyValue\n} from \"@dh-software/webui-types\";\n\nexport type BasePropertyFetchResult = {\n    manufacturer: string;\n    program: string;\n    \"allowed-keys\"?: Array<number>;\n}\n\nexport abstract class BasePropertyCardAppConnection<T extends BasePropertyFetchResult = BasePropertyFetchResult> extends BaseCardDataAppConnection<T> {\n\n    public override async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n        if (event == CardDataUpdateEvent.RefreshPropertyPanel) {\n            this.onRefreshPropertyPanel();\n        }\n        if (event == CardDataUpdateEvent.LastPOLoaded || event == CardDataUpdateEvent.RefreshPropertyPanel) {\n            return CardContainerUpdate.FETCH;\n        }\n        return this.CheckUpdateInternal(event, eventParameters, context);\n    }\n\n    protected async CheckUpdateInternal(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n        if (event == CardDataUpdateEvent.CardContainerVisible) {\n            return CardContainerUpdate.FETCH;\n        }\n        return CardContainerUpdate.NONE;\n    }\n\n    protected onRefreshPropertyPanel(): void {\n        // override in subclass to update its own static timestamp\n    }\n\n    protected static propertyKeyMatches(propertyId: string, keys: Array<number | string>): boolean {\n        for (const key of keys) {\n            if (typeof key === \"string\" && key.startsWith(\"/\")) {\n                const lastSlash = key.lastIndexOf(\"/\");\n                const pattern = lastSlash > 0 ? key.slice(1, lastSlash) : key.slice(1);\n                const flags = lastSlash > 0 ? key.slice(lastSlash + 1) : \"\";\n                try {\n                    if (new RegExp(pattern, flags).test(propertyId)) return true;\n                } catch {\n                    // invalid regex, skip\n                }\n            } else {\n                if (key === propertyId || key === parseInt(propertyId)) return true;\n            }\n        }\n        return false;\n    }\n\n    protected async getCommonFetchParameters(context: CardContainerContext): Promise<{\n        useSelection: boolean;\n        useRelevant: boolean;\n        ignoreSingleValueProperties: boolean;\n        manufacturer: string;\n        program: string;\n    }> {\n        return {\n            useSelection: context.settings.Fetch.parameters[\"use-selection\"] != undefined ? context.settings.Fetch.parameters[\"use-selection\"] as boolean : false,\n            useRelevant: context.settings.Fetch.parameters[\"use-relevant\"] != undefined ? context.settings.Fetch.parameters[\"use-relevant\"] as boolean : true,\n            ignoreSingleValueProperties: context.settings.Fetch.parameters[\"ignore-single-value-properties\"] != undefined ? context.settings.Fetch.parameters[\"ignore-single-value-properties\"] as boolean : false,\n            manufacturer: context.settings.Fetch.manufacturer && context.settings.Fetch.manufacturer.length > 0 ? context.settings.Fetch.manufacturer : await ManuProgService.getManufacturer(),\n            program: context.settings.Fetch.program ? context.settings.Fetch.program : await ManuProgService.getProgram()\n        };\n    }\n\n    protected async cachedFind<R>(cacheKey: string, cache: Map<string, R | Promise<R>>, fetcher: () => Promise<R>): Promise<R> {\n        const cachedResult = cache.get(cacheKey);\n        if (cachedResult != undefined) {\n            if ((cachedResult as Promise<R>).then != undefined) {\n                return await (cachedResult as Promise<R>);\n            } else {\n                return cachedResult as R;\n            }\n        }\n        const fetchPromise = fetcher();\n        cache.set(cacheKey, fetchPromise);\n        const fetchedResult = await fetchPromise;\n        cache.set(cacheKey, fetchedResult);\n        return fetchedResult;\n    }\n\n    protected async fetchAllowedKeysByCategories(context: CardContainerContext, manufacturer: string, program: string): Promise<Array<number> | undefined> { // TODO: Switch to Context Based System (filtered on Category Basis)\n        if (!context.settings.Fetch.parameters[\"use-category-in-buttons-filter\"] && !context.settings.Fetch.parameters[\"use-category-in-selection-filter\"]) {\n            return undefined;\n        }\n\n        const categories = new Array<string>();\n        for (const filter of context.states.SelectedFilters) {\n            if (typeof filter.filter[0] === \"string\") {\n                categories.push(...filter.filter as Array<string>);\n            }\n        }\n\n        const [plannedArticles, articles]: [Array<IPlannedArticle>, Array<IArticleData>] = await Promise.all([\n            CommunicationMessageService.getPlannedArticles(),\n            CommunicationMessageService.getArticleByCategories(manufacturer, program, categories).then((r: Array<IArticleData> | null) => r ?? [])\n        ]);\n\n        const classIdStrings = new Array<string>();\n        for (const article of articles) {\n            if (!classIdStrings.includes(article.ClassID)) classIdStrings.push(article.ClassID);\n        }\n\n        const allowedKeys = new Array<number>();\n        for (const article of plannedArticles) {\n            if (classIdStrings.includes(article.typeInfo.toFixed(0))) {\n                allowedKeys.push(...article.keys);\n            }\n            if (article.typeInfo == 30012 /* POVZQUADER */) {\n                allowedKeys.push(...article.childrenKeys);\n            }\n        }\n\n        return [...new Set(allowedKeys)];\n    }\n\n    protected filterPropertiesByAllowedKeys(properties: Array<IProgProperty>, context: CardContainerContext, allowedKeys?: Array<number>): Array<IProgProperty> {\n        const orFilters = context.states.SelectedFilters\n            ?.filter(f => f.strategy === FilterSelectionStrategy.OR)\n            .sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));\n\n        const configFilter = context.settings.Fetch.filter[\"property-keys\"] as { keys: Array<number | string>, \"prohibit-listed\"?: boolean } | undefined;\n        const hasConfigFilter = !!configFilter?.keys?.length;\n        const configInclude = hasConfigFilter ? configFilter![\"prohibit-listed\"] !== true : true;\n\n        // A property-ui-group selection emits an OR filter tagged `filter-type: \"property-group\"`.\n        // While such a filter is active it *restricts* the list to that group's keys (rather than\n        // only protecting them, the way a plain selected filter — e.g. a category — does).\n        const hasGroupFilter = !!orFilters?.some(f =>\n            (f[\"additional-params\"] as { \"filter-type\"?: string } | undefined)?.[\"filter-type\"] === \"property-group\");\n\n        return properties.filter(p => {\n            if (orFilters?.length && orFilters.some(f => BasePropertyCardAppConnection.propertyKeyMatches(p.id, f.filter))) {\n                return true; // protected by SelectedFilters — skip remaining checks\n            }\n            if (hasGroupFilter) {\n                return false; // a property-ui-group filter is active → hide non-matching properties\n            }\n            if (hasConfigFilter && BasePropertyCardAppConnection.propertyKeyMatches(p.id, configFilter!.keys) !== configInclude) {\n                return false;\n            }\n            if (allowedKeys !== undefined) {\n                return allowedKeys.length > 0 && allowedKeys.includes(parseInt(p.id));\n            }\n            return true;\n        });\n    }\n\n    protected buildCardFromPropertyValue(\n        propertyValue: IProgPropertyValue,\n        propertyValueKey: string,\n        property: IProgProperty,\n        filtered: BasePropertyFetchResult,\n        context: CardContainerContext,\n        extraModifyRequestData?: Record<string, unknown>\n    ): CardData {\n        return {\n            txt: {\n                title: UtilService.ncrToUTF8(propertyValue.name),\n                tooltip: propertyValue.toolTipType == \"text\" ? propertyValue.toolTipData as string : \"\"\n            },\n            image: { prefix: \"\", file: propertyValue.alternativeImageUrl },\n            click: {\n                \"modify-property-request\": {\n                    manufacturer: filtered.manufacturer,\n                    program: filtered.program,\n                    key: property.id,\n                    property: propertyValue.key,\n                    propertyKey: propertyValue.propertyKey,\n                    ...extraModifyRequestData\n                },\n                \"previous-level-key\": context.settings.Fetch[\"root-level\"],\n                \"level-key\": property.id,\n                \"next-level-key\": \"\"\n            },\n            active: property.currentValue == propertyValueKey\n        };\n    }\n\n    public override async Click(card: CardData, context: CardContainerContext): Promise<void> {\n        if (card.click && card.click[\"modify-property-request\"]) {\n            await CommunicationMessageService.modifyProperty(JSON.stringify(card.click[\"modify-property-request\"]), card.click[\"modify-property-options\"] as IModifyPropertyOptions);\n\n            const clearSelection = !!context.settings.Card[\"app-connection-settings\"][\"clear-selection\"];\n            if (clearSelection) {\n                await CommunicationMessageService.clearSelectionHandler();\n            }\n        }\n    }\n\n    GetFilterSelectionStrategy(context: CardContainerContext): FilterSelectionStrategy {\n        if (context.states.SelectedFilters.length > 0) {\n            return FilterSelectionStrategy.OR;\n        }\n        return FilterSelectionStrategy.NONE;\n    }\n}\n","import { BasePropertyCardAppConnection, BasePropertyFetchResult } from \"./base-property-card-app.connection\";\nimport { CardFetchMethod, CardDataLevelKey, CardDataLevel, CardContainerContext, FilterSelectionStrategy } from \"../../models/card-container\";\nimport { CardDataService } from \"../card.data.service\";\nimport { UtilService } from \"../util.service\";\nimport { ProgPropertyModel } from \"@dh-software/webui-api\";\nimport { IProgProperty, IProgPropertyProgram } from \"@dh-software/webui-types\";\n\nexport type PropertyFetchResult = BasePropertyFetchResult & {\n    properties: Array<IProgProperty>;\n}\n\nexport class PropertySelectionCardAppConnection extends BasePropertyCardAppConnection<PropertyFetchResult> {\n    constructor() {\n        super();\n        this.Method = CardFetchMethod.PropertySelection;\n    }\n\n    private static lastRefreshPropertyPanelTimestamp: number | undefined = undefined;\n    protected override onRefreshPropertyPanel(): void {\n        PropertySelectionCardAppConnection.lastRefreshPropertyPanelTimestamp = Date.now();\n    }\n\n    private static propertiesCache = new Map<string, IProgPropertyProgram | Promise<IProgPropertyProgram>>();\n    protected async Find(manufacturer: string, program: string, useSelection: boolean, useRelevant: boolean, fullHierarchy: boolean, instanceIdents?: Array<number>): Promise<IProgPropertyProgram> {\n        const cacheKey = manufacturer + program\n            + (useSelection ? \"Selection\" : \"NoSelection\")\n            + (useRelevant ? \"Relevant\" : \"NotRelevant\")\n            + (fullHierarchy ? \"FullHierarchy\" : \"SmallHierarchy\")\n            + (instanceIdents != undefined ? instanceIdents.toString() : \"[]\")\n            + (PropertySelectionCardAppConnection.lastRefreshPropertyPanelTimestamp?.toString() ?? \"\");\n        return this.cachedFind(cacheKey, PropertySelectionCardAppConnection.propertiesCache, () =>\n            ProgPropertyModel.find(manufacturer, program, useSelection, useRelevant, fullHierarchy, instanceIdents) as Promise<IProgPropertyProgram>\n        );\n    }\n\n    public override async Fetch(context: CardContainerContext): Promise<PropertyFetchResult> {\n        const { useSelection, useRelevant, ignoreSingleValueProperties, manufacturer, program } = await this.getCommonFetchParameters(context);\n\n        const properties = new Array<IProgProperty>();\n        const propertiesHierarchy = await this.Find(manufacturer, program, useSelection, useRelevant, false);\n        if (propertiesHierarchy != undefined) {\n            const keys = propertiesHierarchy.propertyKeyOrder ?? Object.keys(propertiesHierarchy.children);\n            for (const key of keys) {\n                if (ignoreSingleValueProperties && Object.keys(propertiesHierarchy.children[key].children).length < 2) continue;\n                properties.push(propertiesHierarchy.children[key]);\n            }\n        } else {\n            console.error(\"PropertySelectionCardAppConnection.Fetch> ProgPropertyModel.find returned undefined!\", { manufacturer, program });\n        }\n\n        const result: PropertyFetchResult = { manufacturer, program, properties };\n        const allowedKeys = await this.fetchAllowedKeysByCategories(context, manufacturer, program);\n        if (allowedKeys !== undefined) result[\"allowed-keys\"] = allowedKeys;\n        return result;\n    }\n\n    public override Filter(unfiltered: PropertyFetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): PropertyFetchResult {\n        if (unfiltered.properties == undefined) return { ...unfiltered, properties: [] };\n        return { ...unfiltered, properties: this.filterPropertiesByAllowedKeys(unfiltered.properties, context, unfiltered[\"allowed-keys\"]) };\n    }\n\n    public override CreateCards(filtered: PropertyFetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n        const result = new Map<CardDataLevelKey, CardDataLevel>();\n        if (!filtered.properties?.length) return result;\n\n        const rootLevel: CardDataLevel = { title: \"\", cards: [] };\n        for (const property of filtered.properties) {\n            const current = property.children[property.currentValue];\n            rootLevel.cards.push({\n                txt: { title: UtilService.ncrToUTF8(property.name) },\n                image: { prefix: \"\", file: current ? current.alternativeImageUrl : \"\" },\n                click: {\n                    \"previous-level-key\": context.settings.Fetch[\"root-level\"],\n                    \"level-key\": property.id,\n                    strategy: FilterSelectionStrategy.AND,\n                    priority: 0,\n                    \"next-level-key\": \"\"\n                }\n            });\n        }\n        result.set(context.settings.Fetch[\"root-level\"], rootLevel);\n        return result;\n    }\n}\nCardDataService.RegisterAppConnection(new PropertySelectionCardAppConnection());\n","import { PropertySelectionCardAppConnection, PropertyFetchResult } from \"./property-selection.card.app.connection\";\nimport { CardData, CardFetchMethod, CardDataLevelKey, CardDataLevel, CardContainerContext } from \"../../models/card-container\";\nimport { CardDataService } from \"../card.data.service\";\nimport { DragType, IDragOptions, IProgPropertyValue } from \"@dh-software/webui-types\";\n\nexport class PropertyValueSelectionCardAppConnection extends PropertySelectionCardAppConnection {\n    constructor() {\n        super();\n        this.Method = CardFetchMethod.PropertyValueSelection;\n    }\n\n    public override CreateCards(filtered: PropertyFetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n        const result = new Map<CardDataLevelKey, CardDataLevel>();\n        if (!filtered.properties?.length) return result;\n\n        for (const property of filtered.properties) {\n            const level: CardDataLevel = { title: property.name, cards: [] };\n            if (property.children == undefined) {\n                result.set(property.id, level);\n                continue;\n            }\n\n            for (const [propertyValueKey, propertyValue] of Object.entries(property.children)) {\n                level.cards.push(this.buildCardFromPropertyValue(propertyValue as IProgPropertyValue, propertyValueKey, property, filtered, context));\n            }\n            result.set(property.id, level);\n        }\n        return result;\n    }\n\n    public override GetFormattedDragData(card: CardData, context: CardContainerContext): IDragOptions | undefined {\n        if (card.click) {\n            const request = card.click[\"modify-property-request\"] as {\n                manufacturer: string;\n                program: string;\n                key: string;\n                property: string;\n                propertyKey: string;\n            };\n            return {\n                id: request.key,\n                type: DragType.PROGPROPERTY,\n                extData: request,\n                options: { modifyElement: true }\n            };\n        }\n    }\n}\nCardDataService.RegisterAppConnection(new PropertyValueSelectionCardAppConnection());\n","import { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement, DhElement } from \"../base/base.component\";\nimport style from \"./steps.component.sass?inline\";\nimport { ComponentService } from \"../../../utils/component.service\";\nimport { EventHandlerEvent } from \"../../../models/event-handler/event.handler.model\";\nimport { EventHandlerService } from '../../../utils/event.handler.service';\nimport type { StepComponent } from \"../step/step.component\";\n\n// Runtime-resolved instanceof to keep type narrowing without a static import cycle.\nfunction isStepComponent(el: unknown): el is StepComponent {\n    const ctor = customElements.get(\"fv-step\");\n    return ctor != undefined && el instanceof ctor;\n}\nimport { CardDataService } from \"../../../utils/card.data.service\";\nimport { WebViewerService } from \"@dh-software/webui-api\";\nimport type { ComponentStateHandlerMap } from \"../../../models/event-handler/component-state-event\";\n\nexport interface NextPreviousData {\n    \"steps-component\": string,\n    \"selector\"?: string\n}\n\ndeclare global {\n    interface ComponentStates {\n        \"fv-steps:next\":             NextPreviousData;\n        \"fv-steps:previous\":         NextPreviousData;\n        \"fv-steps:activate-first\":   NextPreviousData;\n        \"fv-steps:activate\":         NextPreviousData & { index: number };\n        \"fv-steps:activate-current\": NextPreviousData;\n    }\n}\n\nexport interface StepTargetSelectorData {\n    modal: {\n        query: string,\n        mask: string,\n        dimmed?: boolean,\n        fade?: boolean,\n        data?: { [key: string]: unknown },\n        cancelable?: boolean,\n        \"mask-query\"?: string,\n        \"mask-query-container-query\"?: string,\n        \"mask-query-container-tag\"?: string,\n        \"dispatch-after-activation-events\"?: boolean\n    },\n    modals: Array<{\n        query: string,\n        mask: string,\n        dimmed?: boolean,\n        fade?: boolean,\n        data?: { [key: string]: unknown },\n        cancelable?: boolean,\n        \"mask-query\"?: string,\n        \"mask-query-container-query\"?: string,\n        \"mask-query-container-tag\"?: string,\n        \"dispatch-after-activation-events\"?: boolean\n    }>,\n    element: {\n        name: string,\n        selector: string,\n        all: boolean,\n        \"additional-target-contents\": Array<{ name: string, selector: string }>,\n        \"ignore-default-target-content\"?: boolean | undefined\n    },\n    elements: Array<{\n        name: string,\n        selector: string,\n        all: boolean,\n        \"additional-target-contents\": Array<{ name: string, selector: string }>,\n        \"ignore-default-target-content\"?: boolean | undefined\n    }>\n}\n\ninterface StepActivatedEvent extends EventHandlerEvent {\n    \"do-not-call-on\": Array<string>;\n    needsInteraction?: boolean\n}\n\n@customElement(\"fv-steps\")\nexport class StepsComponent extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Object, reflect: true, attribute: \"step-target-selectors\" })\n    public stepTargetSelectors: { [stepindex: string]: StepTargetSelectorData } = {};\n\n    @property({ type: Boolean, reflect: true, attribute: \"ignore-empty-targets\" })\n    public ignoreEmptyTargets = false;\n\n    @property({ type: Object, reflect: true, attribute: \"step-activated-events\" })\n    public stepActivatedEvents: { [stepindex: string | \"first\" | \"last\" | \"any\"]: Array<StepActivatedEvent> } = {};\n\n    @property({type: Boolean, reflect: true, attribute: \"hide-empty-content\"})\n    public hideEmptyContent = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"auto-disable-steps\"})\n    public autoDisableSteps = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"reactivate-step\" })\n    public reactivateStep = false;\n\n    stateHandlers: ComponentStateHandlerMap = {\n        \"fv-steps:next\":             async () => { await this._traverseAndActivate(false); },\n        \"fv-steps:previous\":         async () => { await this._traverseAndActivate(true);  },\n        \"fv-steps:activate-first\":   ()       => { this.activateFirst(); },\n        \"fv-steps:activate\":         (data)   => { this.activate(data.index); },\n        \"fv-steps:activate-current\": ()       => { this.activate(this.activeIndex); },\n    };\n\n    private async _traverseAndActivate(previous: boolean): Promise<void> {\n        if (await this.traverseStages(previous)) return;\n        if (this.reactivateStep) {\n            this.activate(this.activeIndex);\n        } else {\n            this.activate(previous ? this.getPreviousStepIndex() : this.getNextStepIndex());\n        }\n    }\n\n    @property({ type: Number, reflect: true, attribute: \"start-index\" })\n    public startIndex = 0;\n\n    @property({ type: Number, reflect: true, attribute: \"start-index-cloud-id-overwrite\" })\n    public startIndexCloudIdOverwrite?: number;\n\n    @property({ type: String, reflect: true, attribute: \"step-query\" })\n    public stepQuery = \"fv-step\";\n\n    @property({ type: Object, reflect: true, attribute: \"step-translation\" })\n    public stepTranslation: { [key: string]: string } = {};\n\n    @property({ type: Object, reflect: true, attribute: \"step-order\" })\n    public stepOrder: { [key: string]: number } = {};\n\n    @property({ type: Array, attribute: false })\n    private _allowedIndices: Array<number> = this.getAvailableIndices();\n\n    private _currentIndex: number;\n    private _nextIndex?: number;\n    private _currentAction?: Promise<boolean>;\n\n    constructor() {\n        super();\n        this._currentIndex = this.startIndex;\n        this.addEventListener(\"fv-step-clicked\", async (e: CustomEventInit) => {\n            if (e.detail && e.detail[\"index\"]) {\n                this._nextIndex = e.detail[\"index\"];\n            } else {\n                return false;\n            }\n            if (this._currentAction) await this._currentAction;\n            const stepEventHandler = async () => {\n                if (e.detail && e.detail[\"index\"]) {\n                    if (typeof e.detail[\"index\"] == \"string\") {\n                        this._currentIndex = parseInt(e.detail[\"index\"]);\n                    } else {\n                        this._currentIndex = e.detail[\"index\"];\n                    }\n                } else {\n                    return false;\n                }\n                await this.deactivateAll();\n\n                if (this.stepTargetSelectors[this._currentIndex]) {\n                    const targetSelector = this.stepTargetSelectors[this._currentIndex];\n                    if (targetSelector.modal) {\n                        if (!targetSelector.modal[\"dispatch-after-activation-events\"]) {\n                            await EventHandlerService.dispatchAsyncEvent(\"open-modal\", targetSelector.modal);\n                        }\n                    }\n                    if (targetSelector.modals) {\n                        for (const modal of targetSelector.modals) {\n                            if (!modal[\"dispatch-after-activation-events\"]) {\n                                await EventHandlerService.dispatchAsyncEvent(\"open-modal\", modal);\n                            }\n                        }\n                    }\n                    if (targetSelector.element) {\n                        await EventHandlerService.dispatchAsyncEvent(\"set-attribute\", {\n                            components: [targetSelector.element],\n                            attribute: \"hide-element\",\n                            value: false\n                        });\n                    }\n                    if (targetSelector.elements) {\n                        await EventHandlerService.dispatchAsyncEvent(\"set-attribute\", {\n                            components: targetSelector.elements,\n                            attribute: \"hide-element\",\n                            value: false\n                        });\n                    }\n                }\n                if (e.detail.currentTarget) {\n                    e.detail.currentTarget.dispatchEvent(new CustomEvent(\"step-index-changed\", {\n                        detail: {}\n                    }));\n                    e.detail.currentTarget.classList.add(\"active\");\n                }\n\n                await this.triggerStepActivatedEvents(e.detail.userInteraction);\n\n\n                if (this.stepTargetSelectors[this._currentIndex]) {\n                    const targetSelector = this.stepTargetSelectors[this._currentIndex];\n                    if (targetSelector.modal) {\n                        if (targetSelector.modal[\"dispatch-after-activation-events\"]) {\n                            await EventHandlerService.dispatchAsyncEvent(\"open-modal\", targetSelector.modal);\n                        }\n                    }\n                    if (targetSelector.modals) {\n                        for (const modal of targetSelector.modals) {\n                            if (modal[\"dispatch-after-activation-events\"]) {\n                                await EventHandlerService.dispatchAsyncEvent(\"open-modal\", modal);\n                            }\n                        }\n                    }\n                }\n                return true;\n            };\n            if (e.detail[\"index\"] && this._nextIndex === e.detail[\"index\"]) {\n                this._currentAction = stepEventHandler();\n            }\n        });\n\n        window.addEventListener(\"onUpdated\", ((e: CustomEvent) => {\n            if (isStepComponent(e.detail)) {\n                return;\n            }\n            this._allowedIndices = this.getAvailableIndices();\n            // CardDataService.WaitForAllCardContainerFetchPromises().then(() => {\n            //     this._allowedIndices = this.getAvailableIndices();\n            // });\n        }) as EventListener);\n\n        this.addEventListener(\"fv-steps-request-step-activated-events\", async (e: CustomEventInit) => {\n            if (this._currentIndex == e.detail[\"requesting-step-index\"]) {\n                await this.triggerStepActivatedEvents(false);\n            }\n        });\n    }\n\n    connectedCallback(): void {\n        super.connectedCallback();\n\n        if (this.startIndexCloudIdOverwrite != undefined) {\n            const urlParser      = new URL(window.location.href);\n            const initialCloudId = urlParser.searchParams.get(\"cloudId\") || \"\";\n\n            if (initialCloudId && initialCloudId.length > 0) {\n                this.startIndex    = this.startIndexCloudIdOverwrite;\n                this._currentIndex = this.startIndex;\n            }\n        }\n    }\n\n    private async dispatchEventList(events: Array<StepActivatedEvent>, currentActiveIndex: string, userInteraction: boolean) {\n        for (const stepActivatedEvent of events) {\n            if (stepActivatedEvent[\"do-not-call-on\"] && stepActivatedEvent[\"do-not-call-on\"].includes(currentActiveIndex)) continue; //skip entries that should not be called\n            if (stepActivatedEvent?.needsInteraction && !userInteraction) continue; // skip entries that only occur if the user clicked the steps\n            await EventHandlerService.dispatchAsyncEvent(stepActivatedEvent.id, stepActivatedEvent.data ? stepActivatedEvent.data : {});\n        }\n    }\n\n    public async triggerStepActivatedEvents(userInteraction: boolean = false): Promise<void> {\n        const eventsToCall = this.stepActivatedEvents[this._currentIndex.toFixed(0)];\n        if (eventsToCall != undefined && eventsToCall.length > 0) {\n            await this.dispatchEventList(eventsToCall, this._currentIndex.toFixed(0), userInteraction);\n        }\n\n        //await CardDataService.WaitForAllCardContainerFetchPromises();\n        const availableIndex = this.getAvailableIndices();\n        if (this.stepActivatedEvents[\"any\"] != undefined && this.stepActivatedEvents[\"any\"].length > 0) {\n            await this.dispatchEventList(this.stepActivatedEvents[\"any\"], this._currentIndex.toFixed(0), userInteraction);\n        }\n        if (availableIndex.at(0) == this._currentIndex) {\n            if (this.stepActivatedEvents[\"first\"] != undefined && this.stepActivatedEvents[\"first\"].length > 0) {\n                await this.dispatchEventList(this.stepActivatedEvents[\"first\"], this._currentIndex.toFixed(0), userInteraction);\n            }\n        }\n        if (availableIndex.at(availableIndex.length - 1) == this._currentIndex) {\n            if (this.stepActivatedEvents[\"last\"] != undefined && this.stepActivatedEvents[\"last\"].length > 0) {\n                await this.dispatchEventList(this.stepActivatedEvents[\"last\"], this._currentIndex.toFixed(0), userInteraction);\n            }\n        }\n    }\n\n    public getAvailableIndices() {\n        const availableIndex = new Array<number>();\n        const steps = this.querySelectorAll(this.stepQuery);\n        steps.forEach((step) => {\n            if (step.classList.contains(\"hide-while-empty-content\") == false) {\n                const index = step.getAttribute(\"index\");\n                if (index != undefined) {\n                    availableIndex.push(parseInt(index));\n                }\n            }\n        });\n        return availableIndex.sort((a, b) => {\n            const orderA = this.stepOrder?.[a.toString()] ?? a;\n            const orderB = this.stepOrder?.[b.toString()] ?? b;\n            return orderA - orderB;\n        });\n    }\n\n    private async UpdateActivation() {\n        await WebViewerService.IsAppReady;\n        await CardDataService.WaitForAllCardContainerFetchPromises();\n        this.activate(this._allowedIndices[0], false);\n    }\n\n    private applyStepTranslations(): void {\n        if (!this.stepTranslation || Object.keys(this.stepTranslation).length === 0) return;\n        this.querySelectorAll<StepComponent>(this.stepQuery).forEach(step => {\n            const index = step.getAttribute(\"index\");\n            if (index !== null && this.stepTranslation[index] !== undefined) {\n                step.text = this.stepTranslation[index];\n            }\n        });\n    }\n\n    private applyStepOrder(): void {\n        const steps = Array.from(this.querySelectorAll<HTMLElement>(this.stepQuery));\n        if (steps.length === 0) return;\n\n        steps.sort((a, b) => {\n            const indexA = parseInt(a.getAttribute(\"index\") ?? \"0\");\n            const indexB = parseInt(b.getAttribute(\"index\") ?? \"0\");\n            const orderA = this.stepOrder?.[indexA.toString()] ?? indexA;\n            const orderB = this.stepOrder?.[indexB.toString()] ?? indexB;\n            return orderA - orderB;\n        }).forEach(step => this.appendChild(step));\n    }\n\n    protected updated(_changedProperties: PropertyValues) {\n        if (_changedProperties.has(\"stepTranslation\")) {\n            this.applyStepTranslations();\n        }\n        if (_changedProperties.has(\"stepOrder\")) {\n            this._allowedIndices = this.getAvailableIndices();\n        }\n        if (_changedProperties.has(\"_allowedIndices\")) {\n            const oldValue = _changedProperties.get(\"_allowedIndices\");\n            const changed = !(Array.isArray(this._allowedIndices) && Array.isArray(oldValue) && this._allowedIndices.length === oldValue.length && this._allowedIndices.every((val, index) => val === oldValue[index]));\n            if (changed) {\n                this.UpdateActivation();\n            }\n        }\n        super.updated(_changedProperties);\n\n        this.querySelectorAll<StepComponent>(\"fv-step\").forEach(step => {\n            step.requestUpdate()\n        });\n    }\n\n    public getTargetContentsList(index_: string | number): Array<DhElement> {\n        if (this.stepTargetSelectors[index_]) {\n            if (this.stepTargetSelectors[index_].element) {\n                const targetContents = new Array<DhElement>();\n\n                if (this.stepTargetSelectors[index_].element[\"ignore-default-target-content\"] == false || this.stepTargetSelectors[index_].element[\"ignore-default-target-content\"] == undefined) {\n                    const target = ComponentService.find(this.stepTargetSelectors[index_].element.name, this.stepTargetSelectors[index_].element.selector);\n                    if (target != undefined) {\n                        targetContents.push(target);\n                    }\n                }\n\n                const targetContentAlternatives = this.stepTargetSelectors[index_].element[\"additional-target-contents\"];\n                if (targetContentAlternatives) {\n                    for (const targetContentAlternative of targetContentAlternatives) {\n                        if (targetContentAlternative.name.length > 0) {\n                            const alternative = ComponentService.find(targetContentAlternative.name, targetContentAlternative.selector);\n                            if (alternative != undefined) {\n                                targetContents.push(alternative);\n                            }\n                        }\n                    }\n                }\n                return targetContents;\n            }\n        }\n        return [];\n    }\n\n    private previous() {\n        let selector = \"\";\n        this.classList.forEach((value: string) => {\n            selector += \".\";\n            selector += value;\n        });\n\n        StepsComponent.previous({\n            \"steps-component\": \"fv-steps\",\n            \"selector\": selector\n        });\n    }\n\n    private next() {\n        let selector = \"\";\n        this.classList.forEach((value: string) => {\n            selector += \".\";\n            selector += value;\n        });\n\n        StepsComponent.next({\n            \"steps-component\": \"fv-steps\",\n            \"selector\": selector\n        });\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            <span class=\"previous-button\" @click=\"${this.previous}\">\n                <slot name=\"previous-button\"></slot>\n            </span>\n            <span class=\"custom-previous-button\">\n                <slot name=\"custom-previous-button\"></slot>\n            </span>\n\n            <span class=\"steps\"><slot></slot></span>\n\n            <span class=\"next-button\" @click=\"${this.next}\">\n                <slot name=\"next-button\"></slot>\n            </span>\n            <span class=\"custom-next-button\">\n                <slot name=\"custom-next-button\"></slot>\n            </span>\n        `;\n    }\n\n    firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        this.activateFirst(false);\n    }\n\n    private async activateFirst(userInteraction_: boolean = true) {\n        await WebViewerService.IsAppReady;\n\n        this.applyStepOrder();\n        this.applyStepTranslations();\n\n        this.activate(this.startIndex, userInteraction_);\n    }\n\n\n    private async deactivateAll() {\n        const activeElements = this.querySelectorAll(\".active\");\n        activeElements.forEach((element) => {\n            element.classList.remove(\"active\");\n        });\n\n        const elements: Array<{\n            name: string,\n            selector: string,\n            all: boolean\n        }> = [];\n        const targetSelectorKeys = Object.keys(this.stepTargetSelectors);\n        for (const key of targetSelectorKeys) {\n            const targetSelector: StepTargetSelectorData = this.stepTargetSelectors[key];\n            if (targetSelector.modal) {\n                await EventHandlerService.dispatchAsyncEvent(\"close-modal\", targetSelector.modal);\n            }\n            if (targetSelector.modals) {\n                for (const modal of targetSelector.modals) {\n                    await EventHandlerService.dispatchAsyncEvent(\"close-modal\", modal);\n                }\n            }\n            if (targetSelector.element) {\n                elements.push(targetSelector.element);\n            }\n            if (targetSelector.elements) {\n                elements.push(...targetSelector.elements);\n            }\n        }\n\n        if (elements.length > 0) {\n            await EventHandlerService.dispatchAsyncEvent(\"set-attribute\", {\n                components: elements,\n                attribute: \"hide-element\",\n                value: true\n            });\n        }\n    }\n\n    public activate(index_: number, userInteraction_: boolean = true) {\n        const step = this.querySelector(\"[index='\" + index_ + \"']\");\n        step?.dispatchEvent(new CustomEvent(\"click\", {\n            detail: {\n                userInteraction: userInteraction_,\n            }\n        }));\n    }\n\n    public get activeIndex(): number {\n        const activeElements = this.querySelectorAll(\".active\");\n        for (let index = 0; index < activeElements.length; ++index) {\n            const element = activeElements.item(index);\n            if (element && element.hasAttribute(\"index\")) {\n                return parseInt(element.getAttribute(\"index\") as string);\n            }\n        }\n        return -1;\n    }\n\n    getPreviousStepIndex(): number {\n        const indices = this.getAvailableIndices();\n        const pos = indices.indexOf(this.activeIndex);\n        return pos > 0 ? indices[pos - 1] : -1;\n    }\n\n    getNextStepIndex(): number {\n        const indices = this.getAvailableIndices();\n        const pos = indices.indexOf(this.activeIndex);\n        return pos >= 0 && pos < indices.length - 1\n            ? indices[pos + 1]\n            : indices[indices.length - 1] + 1;\n    }\n\n    private async traverseStages(previous_: boolean) : Promise<boolean> {\n        const activeElements = this.querySelectorAll(\".active\") as NodeListOf<StepComponent>;\n        let consumed = false;\n        for (const element of activeElements) {\n            if (!element.traverseStages) {\n                continue;\n            }\n            const traversed = previous_ ? await element.PreviousStage() : await element.NextStage();\n            if (traversed === true) {\n                consumed = true;\n            }\n        }\n        return consumed;\n    }\n\n    public static async traverse(data: NextPreviousData, previous_: boolean): Promise<void> {\n        const _stepsComponent = ComponentService.find(data[\"steps-component\"], data.selector) as StepsComponent;\n        if (_stepsComponent) {\n            if (await _stepsComponent.traverseStages(previous_)) {\n                return;\n            }\n            if (_stepsComponent.reactivateStep) {\n                _stepsComponent.activate(_stepsComponent.activeIndex);\n            } else {\n                _stepsComponent.activate(previous_ ? _stepsComponent.getPreviousStepIndex() : _stepsComponent.getNextStepIndex());\n            }\n        }\n    }\n\n    public static next(data: NextPreviousData): void {\n        StepsComponent.traverse(data, false);\n    }\n\n    public static previous(data: NextPreviousData): void {\n        StepsComponent.traverse(data, true);\n    }\n\n    public static activateFirst(data: NextPreviousData): void {\n        const _stepsComponent = ComponentService.find(data[\"steps-component\"], data.selector) as StepsComponent;\n        if (_stepsComponent) {\n            _stepsComponent.activateFirst();\n        }\n    }\n\n    public static activate(data: NextPreviousData, index: number): void {\n        const _stepsComponent = ComponentService.find(data[\"steps-component\"], data.selector) as StepsComponent;\n        if (_stepsComponent) {\n            _stepsComponent.activate(index);\n        }\n    }\n\n    public static activateCurrent(data: NextPreviousData): void {\n        const _stepsComponent = ComponentService.find(data[\"steps-component\"], data.selector) as StepsComponent;\n        if (_stepsComponent) {\n            _stepsComponent.activate(_stepsComponent.activeIndex);\n        }\n    }\n\n    public static async notifyStepStateChanged(data_: { tag: string, query: string }): Promise<void> {\n        const tag = data_.tag as string | undefined;\n        const query = data_.query as string | undefined;\n        if (!tag) {\n            return;\n        }\n        const steps = document.querySelectorAll(\"fv-step\");\n        for (const step of Array.from(steps)) {\n            if (!isStepComponent(step)) {\n                continue;\n            }\n            const ce = step.stages?.[\"controlled-element\"];\n            if (!ce) {\n                continue;\n            }\n            if (ce.tag === tag && (query === undefined || ce.query === query)) {\n                await step.RefreshStageEnvironment();\n            }\n        }\n    }\n}\n","import {LoadingModalComponent} from \"../components/standard/loading\"\nimport {EventHandlerService} from \"./event.handler.service\";\nimport {CardContainerEventContainer} from \"./card-container-event.service\";\nimport {CardDataService} from \"./card.data.service\";\nimport {StepsComponent} from \"../components/standard/steps\";\nimport {ManuProgService} from \"./manu-prog.service\";\nimport {EquipmentListComponent} from \"../components/catalog/equipment-list\"\nimport {DeferHelperClass, IDeferHelperClass} from \"./defer-helper.class\";\nimport {ComponentService} from \"./component.service\";\nimport {ProgramSelectionComponent} from \"../components/standard/program-selection\";\nimport {CatalogService} from \"./catalog.service\";\nimport {CommunicationMessageService, EventFactoryService} from \"@dh-software/webui-api\";\nimport {ICatConfig} from \"@dh-software/webui-types\";\n\nexport interface SubKatalogLevel {\n    parentLevel?: string,\n    level: string,\n    category?: string\n}\n\nexport interface IProgramSelectionHelperConfigurationParameters {\n    detail: SubKatalogLevel,\n    showLoadingModal?: boolean,\n    closeModalQuery?: string,\n    initialArticle?: string,\n    activeStepAfterSelection?: number,\n    confirmModal?: boolean,\n    clearScene?: boolean\n    overrideInitialArticle?: boolean,\n    finishDefer?: Promise<any>\n}\n\nclass ProgramSelectionHelperClass {\n\n    constructor() {\n    }\n\n    private programSelectionDefer?: IDeferHelperClass\n    private configuredOnce: boolean = false\n\n    public resolveProgramSelectionDefer(state = false) {\n        this.programSelectionDefer?.resolve([state]);\n    }\n\n    public get canBeCancelled(): boolean {\n        return this.configuredOnce;\n    }\n\n    private async isSceneEmpty(catConfigData?: ICatConfig[]) {\n        let plannedArticles = await CommunicationMessageService.getPlannedArticles();\n        if (Array.isArray(plannedArticles)) {\n            plannedArticles = plannedArticles.filter(x => !!x.articlenumber)\n            if (catConfigData && catConfigData.length > 0) {\n                plannedArticles = plannedArticles.filter(article => !catConfigData.some(config => config.defaultArt.includes(article?.catalogArticleNumber || article.articlenumber)));\n            }\n            return plannedArticles.length == 0;\n        }\n        return true;\n    }\n\n    public async openConfirmationModal(catConfigData?: ICatConfig[]) {\n        const programSelection = ComponentService.find(\"fv-program-selection\") as ProgramSelectionComponent\n        if (!programSelection) {\n            return true;\n        }\n        this.resolveProgramSelectionDefer();\n        this.programSelectionDefer = DeferHelperClass();\n        return await programSelection.openConfirmationModal(this.programSelectionDefer);\n    }\n\n    public async Configure(params: IProgramSelectionHelperConfigurationParameters) {\n        params = Object.assign({\n            overrideInitialArticle: true,\n            clearScene: true,\n            confirmModal: true,\n            showLoadingModal: false,\n            activeStepAfterSelection: 0,\n            closeModalQuery: \"\",\n            finishDefer: Promise.resolve({})\n        } as IProgramSelectionHelperConfigurationParameters, params);\n        const loadingComponent = document.querySelector(\"fv-loading-modal\") as LoadingModalComponent;\n        const afterLoaded = () => {\n            loadingComponent?.hide(false, true);\n            EventFactoryService.LastPOLoaded.unregister(afterLoaded);\n            this.resolveProgramSelectionDefer();\n            this.configuredOnce = true;\n        };\n        EventFactoryService.LastPOLoaded.register(afterLoaded);\n\n        const selectedManufacturer = await ManuProgService.getManufacturer();\n        const currentSelectedProgram = await ManuProgService.getProgram();\n\n        const selectedProgram_ = params.detail.level;\n        const programChanged = currentSelectedProgram != selectedProgram_ || window.g_dataInterface[\"selected_program\"] != selectedProgram_\n        const catConfig = await CatalogService.retrieveCatConfig(selectedManufacturer, selectedProgram_);\n\n        let modalProceed = true;\n        let userDefinedArticle = params.initialArticle && params.initialArticle !== \"\" ? params.initialArticle : \"\";\n        const isSceneEmpty = await this.isSceneEmpty(catConfig);\n        let articleChanged = false;\n        if (params.overrideInitialArticle) {\n            const newArticle = await CatalogService.getInitialArticle(userDefinedArticle, selectedProgram_);\n            if (!userDefinedArticle && newArticle && userDefinedArticle != newArticle) {\n                userDefinedArticle = newArticle;\n                articleChanged = true;\n            }\n        }\n        const placeArticle = programChanged && userDefinedArticle.length > 0;\n        if (params.confirmModal && programChanged && !isSceneEmpty) {\n            modalProceed = await this.openConfirmationModal(catConfig);\n        }\n        if (modalProceed) {\n            if (params.showLoadingModal || placeArticle) {\n                loadingComponent?.show(false, true);\n            }\n            if (programChanged) {\n                await ManuProgService.setManuProg(selectedManufacturer, selectedManufacturer, selectedProgram_)\n                window.selectedProgram = params.detail as any;\n                window.g_dataInterface[\"selected_program\"] = selectedProgram_ as never;\n            }\n            if (params.clearScene && (programChanged || placeArticle)) {\n                await CommunicationMessageService.clearScene();\n                await CommunicationMessageService.loadInitialStateDHP();\n                await EventHandlerService.dispatchAsyncEvent(\"update-animation-toolbar-button\", {});\n            }\n            await CardContainerEventContainer.RefreshAll({\n                refetch: true,\n                includeHidden: true,\n                forceSwapSelectedProgramBeforeRefetch: selectedProgram_\n            });\n            await CardDataService.WaitForAllCardContainerFetchPromises();\n            StepsComponent.activate({\n                \"steps-component\": \"fv-steps\",\n                selector: \"*\"\n            }, params?.activeStepAfterSelection || 0);\n            await EquipmentListComponent.Reload();\n\n            if (placeArticle) {\n                await CommunicationMessageService.placePO({\n                    manufacturer: selectedManufacturer,\n                    program: selectedProgram_,\n                    extParameter: {},\n                    articleNumber: userDefinedArticle,\n                    preventVPlacer: articleChanged\n                });\n            }\n            await params.finishDefer;\n            afterLoaded();\n\n            if (params.closeModalQuery) {\n                EventHandlerService.dispatch(\"close-modal\", {query: params.closeModalQuery});\n            }\n        }\n    }\n}\n\nexport const ProgramSelectionHelper = new ProgramSelectionHelperClass();\n","import {BaseCardDataAppConnection} from \"./base.card.app.connection\";\nimport {\n    CardContainerContext,\n    CardContainerUpdate,\n    CardData,\n    CardDataLevel,\n    CardDataLevelKey,\n    CardDataUpdateEvent,\n    CardFetchMethod,\n    FetchResult,\n} from \"../../models/card-container\";\nimport {CardDataService} from \"../card.data.service\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\nimport {ImageService, IProgramImage, IProgramImageFilter} from \"../image.service\";\nimport {ProgramSelectionHelper} from \"../program-selection.helper\";\nimport {EventHandlerService} from \"../event.handler.service\";\nimport {EventHandlerEvent} from \"../../models/event-handler/event.handler.model\";\nimport { IModuleElement } from \"@dh-software/webui-configuration-parser\";\n\n// ─── Constants ───────────────────────────────────────────────────────────────\n\n/** Synthetic entry id for the \"level1-only programs\" / \"collections\" bucket. */\nconst ONLY_LEVEL_ONE_ID = \"onlyLevelOne\";\n\n/** Default root level key if `settings.Fetch[\"root-level\"]` is not provided. */\nconst DEFAULT_ROOT_LEVEL_KEY = \"root\";\n\n/** Label shown on the synthetic onlyLevelOne entry when groups also exist. */\nconst COLLECTIONS_LABEL = \"collections\";\n\n/** Non-\"root\" level key for the category-selection layer (survives multi-level \"root\"-stripping). */\nconst LEVEL_ONE_LEVEL_KEY = \"LEVEL1\";\n\n/** Prefix for per-category sublevel keys (`LEVEL1:<group.id>`) so callers can pull them back by key. */\nconst LEVEL_ONE_SUBLEVEL_PREFIX = \"LEVEL1:\";\n\n\n// ─── Public types ────────────────────────────────────────────────────────────\n\n/** A single program (leaf) or a group (non-leaf with `children`) inside the fetch result. */\nexport interface ProgramSelectionEntry {\n    id: string;\n    /** Program code consumed by ProgramSelectionHelper.Configure(); empty for the synthetic group container. */\n    index: string;\n    name: string;\n    imageUrl: string;\n    /** Descriptive text from the image fetch — consumed by the program-information mask. */\n    textInfo: { text?: string; heading?: string; subheading?: string };\n    children: ProgramSelectionEntry[];\n}\n\nexport interface ProgramSelectionFetchResult extends FetchResult {\n    entries: ProgramSelectionEntry[] | [];\n    /** True when at least one group has a level1 header image — drives `only-level-one` styling outside. */\n    hasLevelOneImages: boolean;\n}\n\n\n// ─── Internal types ──────────────────────────────────────────────────────────\n\n/** Resolved + defaulted parameters used while fetching/shaping the data. */\ninterface FetchParameters {\n    includeWithoutImages: boolean;\n    /** When true, drop a level1-direct entry whose program code also appears under any group. Off by default (matches old fillKatalogEnvironment behavior). */\n    dedupeByProgramCode: boolean;\n}\n\n/** Resolved + defaulted parameters used while turning entries into card data levels. */\ninterface CreateCardsParameters {\n    /** LEVEL1-layer membership for groups w/o header image: false=skip, true=keep, N=keep when ≥N have images. */\n    showFirstLevelImages: boolean | number;\n}\n\n/** Resolved + defaulted parameters used while handling a card click. */\ninterface ClickParameters {\n    preventConfirmationModal: boolean;\n    overrideInitialArticle: boolean;\n    activeStepAfterSelection: number;\n    closeModalQuery: string;\n    onSelectionEvents: EventHandlerEvent[];\n    showLoadingModal: boolean;\n    initialArticle: string;\n}\n\n/** Lookups produced from a single walk of the raw level tree. */\ninterface CollectedReferences {\n    /** Every program we want image data for (level1-direct + level2). */\n    allProgramFilters: Set<IProgramImageFilter>;\n    /** level1 ids that contain level2 children → used to fetch group header images. */\n    groupParentIds: Set<string>;\n    /** Program codes appearing under any group — used when dedupeByProgramCode is on. */\n    programsInGroups: Set<string>;\n}\n\n/** Map: program code → image bundle (from ImageService). */\ntype ProgramImageMap = { [program: string]: IProgramImage | undefined };\n\n\n// ─── card-container settings.Fetch.parameters ────────────────────────────────\n//\n//  Selection behavior (consumed in Click()):\n//   - \"prevent-confirmation-modal\"      boolean              skip the confirmation dialog on program change\n//   - \"override-initial-article\"        boolean              override the initial article after program switch\n//   - \"active-step-after-selection\"     number               step index to activate after a program is selected\n//   - \"close-modal-query\"               string               CSS selector of the modal to close after selection\n//   - \"on-selection-events\"             EventHandlerEvent[]  events to fire after a program is selected\n//   - \"show-loading-modal\"              boolean              show the loading modal during program switch\n//   - \"initial-article\"                 string               article number placed after the program switch\n//                                                            (default: \"\")\n//\n//  Data shaping (consumed in Fetch()):\n//   - \"include-programs-without-images\" boolean              keep programs without an image (default: false)\n//   - \"dedupe-by-program-code\"          boolean              drop a level1-direct entry when its program code\n//                                                            also appears under any group (default: false —\n//                                                            matches the old fillKatalogEnvironment behavior)\n//\n//  Layout shaping (consumed in CreateCards()):\n//   - \"show-first-level-images\"         boolean | number     LEVEL1 layer membership for groups w/o image:\n//                                                            false=skip, true=keep, N=keep when ≥N have images\n//\n//  Layout logic (driven by data shape + the param above):\n//   - level1-only data             → \"onlyLevelOne\" entry; programs render directly at root.\n//   - level1 → level2 data         → one nav card per group at root; sub-level per group holds its programs.\n//   - + at least one image         → also emit a \"LEVEL1\" level (non-\"root\", survives multi-level\n//                                    \"root\"-stripping) and key sublevels `LEVEL1:<group.id>`.\n//   - Programs that appear under any group are dropped from the onlyLevelOne bucket (no duplicates).\n\nexport class ProgramSelectionCardAppConnection<T extends ProgramSelectionFetchResult = ProgramSelectionFetchResult> extends BaseCardDataAppConnection<T> {\n    constructor() {\n        super();\n        this.Method = CardFetchMethod.ProgramSelection;\n    }\n\n    public async CheckUpdate(event: CardDataUpdateEvent, _eventParameters: unknown, _context: CardContainerContext): Promise<CardContainerUpdate> {\n        if (event === CardDataUpdateEvent.CardContainerVisible) return CardContainerUpdate.FETCH;\n        if (event === CardDataUpdateEvent.LastPOLoaded) return CardContainerUpdate.FETCH;\n        return CardContainerUpdate.NONE;\n    }\n\n\n    // ─── Fetch pipeline ──────────────────────────────────────────────────────\n    //\n    //   1. Pull and sort the manufacturer's program tree.\n    //   2. Walk the tree once → collect program filters, group parent ids, dedupe set.\n    //   3. Resolve images (per-program selection images + per-group header images).\n    //   4. Fold the tree into ProgramSelectionEntry[], deduping level1-only against groups.\n\n    async Fetch(context: CardContainerContext): Promise<T> {\n        if (!window?.g_article?.manu) {\n            return {entries: [], hasLevelOneImages: false} as T;\n        }\n\n        const params = this._readFetchParameters(context);\n\n        const levelTree = await this._fetchSortedLevelTree(window.g_article.manu);\n        const collected = this._collectProgramReferences(levelTree);\n\n        const programImages = await ImageService.getProgramSelectionImages([...collected.allProgramFilters]);\n        const groupHeaderImages = await this._fetchGroupHeaderImages(collected.groupParentIds);\n\n        const entries = this._buildEntries(\n            levelTree,\n            programImages,\n            groupHeaderImages,\n            params.dedupeByProgramCode ? collected.programsInGroups : undefined,\n            params.includeWithoutImages,\n        );\n\n        return {entries, hasLevelOneImages: groupHeaderImages.size > 0} as T;\n    }\n\n    /** Reads + defaults the Fetch parameters from the card-container settings. */\n    private _readFetchParameters(context: CardContainerContext): FetchParameters {\n        const params = context.settings.Fetch.parameters ?? {};\n        return {\n            includeWithoutImages: (params[\"include-programs-without-images\"] as boolean) ?? false,\n            dedupeByProgramCode: (params[\"dedupe-by-program-code\"] as boolean) ?? false,\n        };\n    }\n\n    private _readCardModules(context: CardContainerContext, currentLevelKey: CardDataLevelKey) {\n        const programCardModules = context?.settings.Fetch.parameters?.[\"program-card-modules\"] as IModuleElement[] ?? [];\n        return currentLevelKey == LEVEL_ONE_LEVEL_KEY ? [] : programCardModules;\n    }\n\n    /** Reads + defaults the CreateCards parameters from the card-container settings. */\n    private _readCreateCardsParameters(context: CardContainerContext): CreateCardsParameters {\n        const params = context.settings.Fetch.parameters ?? {};\n        const raw = params[\"show-first-level-images\"];\n        const showFirstLevelImages: boolean | number =\n            typeof raw === \"boolean\" || typeof raw === \"number\" ? raw : false;\n        return {showFirstLevelImages};\n    }\n\n    /** Loads the program level tree and sorts level1 + level2 entries by their `order` field. */\n    private async _fetchSortedLevelTree(manu: string): Promise<any> {\n        const tree = await CommunicationMessageService.getProgramLevelTree(manu, true);\n        tree.level1.sort((a: any, b: any) => a.order - b.order);\n        for (const levelOne of tree.level1) {\n            levelOne.level2?.sort((a: any, b: any) => a.order - b.order);\n        }\n        return tree;\n    }\n\n    /** Single tree walk → image filters + group parent ids + grouped program codes. */\n    private _collectProgramReferences(levelTree: any): CollectedReferences {\n        const allProgramFilters = new Set<IProgramImageFilter>();\n        const groupParentIds = new Set<string>();\n        const programsInGroups = new Set<string>();\n\n        for (const levelOne of levelTree.level1) {\n            if (!levelOne.level2 && levelOne.program) {\n                allProgramFilters.add({program: levelOne.program, kataId: levelOne.id});\n                continue;\n            }\n            for (const levelTwo of (levelOne.level2 || [])) {\n                if (!levelTwo.program) continue;\n                groupParentIds.add(levelOne.id);\n                allProgramFilters.add({program: levelTwo.program, kataId: levelTwo.id});\n                programsInGroups.add(levelTwo.program);\n            }\n        }\n\n        return {allProgramFilters, groupParentIds, programsInGroups};\n    }\n\n    /** Resolves the level1 header image (used as the group navigation card image) per group id. */\n    private async _fetchGroupHeaderImages(groupParentIds: Set<string>): Promise<Map<string, string>> {\n        // ImageService caches per-id, so resolving each parent individually keeps the cache hot.\n        const headerByGroup = new Map<string, string>();\n        await Promise.all([...groupParentIds].map(async (parentId) => {\n            const images = await ImageService.getKataLevelOneMediaImages([parentId]);\n            if (images.length > 0) headerByGroup.set(parentId, images[0].url);\n        }));\n        return headerByGroup;\n    }\n\n    /**\n     * Folds the raw tree into ProgramSelectionEntry[], adding the synthetic onlyLevelOne bucket if it has survivors.\n     * Pass `programsInGroups` to drop level1-direct entries whose program code also appears under a group;\n     * omit it (or pass undefined) for the legacy fillKatalogEnvironment behavior where everything is kept.\n     */\n    private _buildEntries(\n        levelTree: any,\n        programImages: ProgramImageMap,\n        groupHeaderImages: Map<string, string>,\n        programsInGroups: Set<string> | undefined,\n        includeWithoutImages: boolean,\n    ): ProgramSelectionEntry[] {\n        const groupEntries: ProgramSelectionEntry[] = [];\n        const onlyLevelOneChildren: ProgramSelectionEntry[] = [];\n        for (const levelOne of levelTree.level1) {\n            const isGroup = levelOne.level2 && levelOne.level2.length > 0;\n\n            if (isGroup) {\n                // Group entry: its level2 programs become the group's children\n                const children = levelOne.level2\n                    .filter((level2: any) => this._hasUsableImage(level2.program, programImages, includeWithoutImages))\n                    .map((level2: any) => this._buildLeafEntry(level2, programImages));\n\n                if (children.length === 0) continue;\n                groupEntries.push({\n                    id: levelOne.id,\n                    index: levelOne.program ?? \"\",\n                    name: levelOne.name,\n                    imageUrl: groupHeaderImages.get(levelOne.id) ?? \"\",\n                    textInfo: {},\n                    children,\n                });\n                continue;\n            }\n\n            // level1-only program: candidate for the onlyLevelOne bucket\n            if (!levelOne.program) continue;\n            if (programsInGroups?.has(levelOne.program)) continue;\n            if (!this._hasUsableImage(levelOne.program, programImages, includeWithoutImages)) continue;\n\n            onlyLevelOneChildren.push(this._buildLeafEntry(levelOne, programImages));\n        }\n\n        // No survivors → no synthetic bucket; just return the groups\n        if (onlyLevelOneChildren.length === 0) return groupEntries;\n\n        // Synthetic onlyLevelOne entry sits at the front; it gets the \"collections\" label only when groups also exist\n        const onlyLevelOneEntry: ProgramSelectionEntry = {\n            id: ONLY_LEVEL_ONE_ID,\n            index: \"\",\n            name: groupEntries.length > 0 ? COLLECTIONS_LABEL : \"\",\n            imageUrl: \"\",\n            textInfo: {},\n            children: onlyLevelOneChildren,\n        };\n        return [onlyLevelOneEntry, ...groupEntries];\n    }\n\n    /** True when the program has at least one image, or when missing-image programs are explicitly allowed. */\n    private _hasUsableImage(programCode: string, programImages: ProgramImageMap, includeWithoutImages: boolean): boolean {\n        if (includeWithoutImages) return true;\n        const entry = programImages[programCode];\n        return !!entry && (entry.images?.length ?? 0) > 0;\n    }\n\n    /** Builds a leaf ProgramSelectionEntry (level1-direct or level2). */\n    private _buildLeafEntry(raw: { id: string; program: string; name: string }, programImages: ProgramImageMap): ProgramSelectionEntry {\n        const imageEntry = programImages[raw.program];\n        return {\n            id: raw.id,\n            index: raw.program,\n            name: raw.name,\n            imageUrl: imageEntry?.images?.[0]?.url ?? \"\",\n            textInfo: {\n                text: imageEntry?.text,\n                heading: imageEntry?.heading,\n                subheading: imageEntry?.subheading,\n            },\n            children: [],\n        };\n    }\n\n\n    // ─── CreateCards: ProgramSelectionEntry[] → CardDataLevel map ────────────\n\n    public CreateCards(filtered: ProgramSelectionFetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n        const result = new Map<CardDataLevelKey, CardDataLevel>();\n        const {entries} = filtered;\n        if (!entries || entries.length === 0) return result;\n\n        const rootLevelKey = (context.settings.Fetch[\"root-level\"] as string) ?? DEFAULT_ROOT_LEVEL_KEY;\n        const onlyLevelOneEntry = entries.find(e => e.id === ONLY_LEVEL_ONE_ID);\n\n        if (onlyLevelOneEntry) {\n            // Pure / mixed onlyLevelOne layout: the bucket's programs render directly at the root level.\n            // (Use `only-level-one` on fv-root-level-selection-card-container for direct click handling.)\n            result.set(rootLevelKey, {\n                title: \"\",\n                cards: onlyLevelOneEntry.children.map(prog => this._buildProgramCard(prog, rootLevelKey, context, rootLevelKey, ONLY_LEVEL_ONE_ID)),\n            });\n            return result;\n        }\n\n        // Grouped layout: nav card per group at root, sub-level per group. LEVEL1 layer + sublevel\n        // prefix only when at least one group survives the `show-first-level-images` filter.\n        const groupEntries = entries.filter(g => g.children.length > 0);\n        const createCardsParams = this._readCreateCardsParameters(context);\n\n        const groupsWithImage = groupEntries.filter(g => !!g.imageUrl);\n        const keepGroupsWithoutImage = (() => {\n            const s = createCardsParams.showFirstLevelImages;\n            return typeof s === \"boolean\" ? s : groupsWithImage.length >= s;\n        })();\n        const levelOneGroups = keepGroupsWithoutImage ? groupEntries : groupsWithImage;\n        const shouldEmitLevelOneLayer = levelOneGroups.length > 0;\n\n        // Sublevel keys get the \"LEVEL1:\" prefix only when the LEVEL1 layer is emitted.\n        const sublevelKeyFor = (group: ProgramSelectionEntry): CardDataLevelKey =>\n            shouldEmitLevelOneLayer ? `${LEVEL_ONE_SUBLEVEL_PREFIX}${group.id}` : group.id;\n\n        // Root: nav cards for every group (so all programs stay reachable).\n        result.set(rootLevelKey, {\n            title: \"\",\n            cards: groupEntries.map(group =>\n                this._buildGroupNavigationCard(group, rootLevelKey, sublevelKeyFor(group), context)),\n        });\n\n        // LEVEL1: category-selection cards (filtered).\n        if (shouldEmitLevelOneLayer) {\n            result.set(LEVEL_ONE_LEVEL_KEY, {\n                title: \"\",\n                cards: levelOneGroups.map(group =>\n                    this._buildGroupNavigationCard(group, LEVEL_ONE_LEVEL_KEY, sublevelKeyFor(group), context)),\n            });\n        }\n\n        // Per-group sublevels with program cards (one per group, regardless of image).\n        for (const group of groupEntries) {\n            const subKey = sublevelKeyFor(group);\n            result.set(subKey, {\n                title: group.name,\n                cards: group.children.map(prog => this._buildProgramCard(prog, subKey, context, subKey, group.id)),\n            });\n        }\n        return result;\n    }\n\n    /** Leaf card → clicking it selects the program (handled by `Click` below). */\n    protected _buildProgramCard(entry: ProgramSelectionEntry, parentId: CardDataLevelKey, context: CardContainerContext, currentLevelKey?: CardDataLevelKey, parentKataId?: string): CardData {\n        const modules = currentLevelKey ? this._readCardModules(context!, currentLevelKey) : [];\n        return {\n            txt: {title: entry.name},\n            image: entry.imageUrl ? {prefix: \"\", file: entry.imageUrl} : undefined,\n            click: {\n                \"previous-level-key\": parentId,\n                \"level-key\": entry.id,\n                \"next-level-key\": \"\",\n            },\n            additional: {entry, parentKataId},\n            modules\n        };\n    }\n\n    /** Group card → clicks navigate into the group's sub-level. `sublevelKey` defaults to `group.id`. */\n    protected _buildGroupNavigationCard(\n        group: ProgramSelectionEntry,\n        currentLevelKey: CardDataLevelKey,\n        sublevelKey: CardDataLevelKey = group.id,\n        context: CardContainerContext,\n    ): CardData {\n        const programCards = group.children.map(prog => this._buildProgramCard(prog, sublevelKey, context, undefined, group.id));\n        const modules = this._readCardModules(context!, currentLevelKey);\n        return {\n            txt: {title: group.name},\n            image: group.imageUrl ? {prefix: \"\", file: group.imageUrl} : undefined,\n            click: {\n                \"previous-level-key\": currentLevelKey,\n                \"level-key\": currentLevelKey,\n                \"next-level-key\": sublevelKey,\n            },\n            children: programCards,\n            additional: {entry: group},\n            modules\n        } as CardData;\n    }\n\n\n    // ─── Click: program selected → configure ProgramSelectionHelper ──────────\n\n    public async Click(card: CardData, context: CardContainerContext, loadingModalDefer?: Promise<any>): Promise<void> {\n        // Group navigation cards (next-level-key set) are handled by the card container itself.\n        if (card.click?.[\"next-level-key\"]) return;\n\n        const entry = card.additional?.[\"entry\"] as ProgramSelectionEntry | undefined;\n        if (!entry) return;\n\n        const parentKataId = card.additional?.[\"parentKataId\"] as string | undefined;\n        const params = this._readClickParameters(context);\n\n        await ProgramSelectionHelper.Configure({\n            detail: {\n                level: entry.index,\n                parentLevel: parentKataId,\n            },\n            closeModalQuery: params.closeModalQuery,\n            showLoadingModal: params.showLoadingModal,\n            initialArticle: params.initialArticle,\n            activeStepAfterSelection: params.activeStepAfterSelection,\n            // Clear the scene unless the confirmation modal was suppressed; even then honor the global flag.\n            clearScene: !params.preventConfirmationModal || (window.g_configuration?.clear_scene_by_basic_planing ?? false),\n            confirmModal: !params.preventConfirmationModal,\n            overrideInitialArticle: params.overrideInitialArticle,\n            finishDefer: loadingModalDefer,\n        });\n        await EventHandlerService.dispatchEventList(params.onSelectionEvents, false);\n    }\n\n    /** Reads + defaults the Click parameters from the card-container settings. */\n    private _readClickParameters(context: CardContainerContext): ClickParameters {\n        const params = context.settings.Fetch.parameters ?? {};\n        return {\n            preventConfirmationModal: (params[\"prevent-confirmation-modal\"] as boolean) ?? false,\n            overrideInitialArticle: (params[\"override-initial-article\"] as boolean) ?? false,\n            activeStepAfterSelection: (params[\"active-step-after-selection\"] as number) ?? 0,\n            closeModalQuery: (params[\"close-modal-query\"] as string) ?? \"\",\n            onSelectionEvents: (params[\"on-selection-events\"] as EventHandlerEvent[]) ?? [],\n            showLoadingModal: (params[\"show-loading-modal\"] as boolean) ?? false,\n            initialArticle: (params[\"initial-article\"] as string) ?? \"\",\n        };\n    }\n}\n\nCardDataService.RegisterAppConnection(new ProgramSelectionCardAppConnection());\n","import {ProgramSelectionCardAppConnection, ProgramSelectionEntry, ProgramSelectionFetchResult} from \"./program-selection.card.app.connection\";\nimport {\n    CardContainerContext,\n    CardData,\n    CardDataLevel,\n    CardDataLevelKey,\n    CardFetchMethod\n} from \"../../models/card-container\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\nimport {CardDataService} from \"../card.data.service\";\nimport {EventHandlerEvent} from \"../../models/event-handler/event.handler.model\";\nimport {EventHandlerService} from \"../event.handler.service\";\nimport {IPlacerGroup, IPlacerGroupProgram, IPossiblePlacerGroupResponse } from \"@dh-software/webui-types\";\n\ntype PlacerGroupFetchResult = ProgramSelectionFetchResult & IPossiblePlacerGroupResponse;\n\n// Level key helpers\n// Root level:      \"root\"\n// Component level: \"{groupId}:{cat}\"  e.g. \"TischMitBank:dhcat_tisch\"\nconst componentLevelKey = (groupId: string, cat: string): string =>\n    `${groupId}:${cat}`;\n\nexport class PlacerGroupSelectionCardAppConnection extends ProgramSelectionCardAppConnection<PlacerGroupFetchResult> {\n    /** Kept so Click() can look up the full component list by groupId */\n    private _groups: IPlacerGroup[] = [];\n\n    constructor() {\n        super();\n        this.Method = CardFetchMethod.PlacerGroupSelection;\n    }\n\n    async Fetch(context: CardContainerContext): Promise<PlacerGroupFetchResult> {\n        const base = await super.Fetch(context) as PlacerGroupFetchResult;\n        const placer = await CommunicationMessageService.getPossiblePlacerGroups();\n        return Object.assign(base, placer);\n    }\n\n    CreateCards(filtered: PlacerGroupFetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n        this._groups = filtered.groups ?? [];\n\n        // Build a lookup: prog code (lowercase) → ProgramSelectionEntry (name + image)\n        // Entries can be flat (top-level) or nested inside a parent entry's children.\n        const allEntries = [\n            ...filtered.entries,\n            ...filtered.entries.flatMap(e => e.children ?? [])\n        ];\n        const entryByProg = new Map<string, ProgramSelectionEntry>();\n        for (const entry of allEntries) {\n            if (entry.index) {\n                entryByProg.set(entry.index.toLowerCase(), entry);\n            }\n        }\n\n        const map = new Map<CardDataLevelKey, CardDataLevel>();\n        const singleProgramMode = !!(context.settings.Fetch.parameters?.[\"single-program-mode\"]);\n        const includeWithoutImages = !!(context.settings.Fetch.parameters?.[\"include-programs-without-images\"]);\n\n        /**\n         * Returns true if a program should be shown in the sub-level cards.\n         * - The program must have a matching entry in entryByProg (i.e. it exists in the program level tree)\n         * - If include-programs-without-images is false, the entry must also have an imageUrl\n         */\n        const shouldIncludeProgram = (program: IPlacerGroupProgram): boolean => {\n            const entry = entryByProg.get(program.prog.toLowerCase());\n            if (!entry) return false;\n            return includeWithoutImages || !!entry.imageUrl;\n        };\n\n        // ── Root level — one card per placer group ───────────────────────────\n        map.set(\"root\", {\n            title: \"VPlacer Groups\",\n            cards: this._groups.map((group): CardData => {\n                const entry = entryByProg.get(group.id.toLowerCase());\n                const baseCard = entry\n                    ? this._buildProgramCard(entry, \"root\", context)\n                    : { txt: { title: group.id } } as CardData;\n\n                const nextKey = group.components.length > 0\n                    ? singleProgramMode\n                        ? componentLevelKey(group.id, \"all\")\n                        : componentLevelKey(group.id, group.components[0])\n                    : \"\";\n\n                return {\n                    ...baseCard,\n                    click: {\n                        \"previous-level-key\": \"\",\n                        \"level-key\": \"root\",\n                        \"next-level-key\": nextKey\n                    },\n                    additional: { ...baseCard.additional, group }\n                };\n            })\n        });\n\n        // ── Sub-levels per group ────────────────────────────────────────────\n        for (const group of this._groups) {\n            if (singleProgramMode) {\n                // Single level: only programs that cover ALL components\n                const levelKey = componentLevelKey(group.id, \"all\");\n                const compatiblePrograms = (filtered.programs ?? [])\n                    .filter(p => group.components.every(\n                        cat => p.components.some(c => c.cat === cat)\n                    ))\n                    .filter(shouldIncludeProgram);\n\n                map.set(levelKey, {\n                    title: group.id,\n                    cards: compatiblePrograms.map((program: IPlacerGroupProgram): CardData => {\n                        const entry = entryByProg.get(program.prog.toLowerCase());\n                        const baseCard = entry\n                            ? this._buildProgramCard(entry, levelKey, context)\n                            : { txt: { title: program.prog } } as CardData;\n                        return {\n                            ...baseCard,\n                            click: {\n                                \"previous-level-key\": \"root\",\n                                \"level-key\": levelKey,\n                                \"next-level-key\": \"\"\n                            },\n                            additional: {\n                                ...baseCard.additional,\n                                groupId: group.id,\n                                cat: \"all\",\n                                program\n                            }\n                        };\n                    })\n                });\n            } else {\n                // Per-component levels (one level per category)\n                for (let i = 0; i < group.components.length; i++) {\n                    const cat     = group.components[i];\n                    const isLast  = i === group.components.length - 1;\n                    const prevKey: CardDataLevelKey = i === 0\n                        ? \"root\"\n                        : componentLevelKey(group.id, group.components[i - 1]);\n                    const nextKey: CardDataLevelKey = isLast\n                        ? \"\"\n                        : componentLevelKey(group.id, group.components[i + 1]);\n                    const levelKey = componentLevelKey(group.id, cat);\n\n                    const compatiblePrograms = (filtered.programs ?? [])\n                        .filter(p => p.components.some(c => c.cat === cat))\n                        .filter(shouldIncludeProgram);\n\n                    map.set(levelKey, {\n                        title: cat,\n                        cards: compatiblePrograms.map((program: IPlacerGroupProgram): CardData => {\n                            const entry = entryByProg.get(program.prog.toLowerCase());\n                            const baseCard = entry ? this._buildProgramCard(entry, levelKey, context) : { txt: { title: program.prog } } as CardData;\n                            return {\n                                ...baseCard,\n                                click: {\n                                    \"previous-level-key\": prevKey,\n                                    \"level-key\": levelKey,\n                                    \"next-level-key\": nextKey\n                                },\n                                additional: {\n                                    ...baseCard.additional,\n                                    groupId: group.id,\n                                    cat,\n                                    componentIndex: i,\n                                    totalComponents: group.components.length,\n                                    program\n                                }\n                            };\n                        })\n                    });\n                }\n            }\n        }\n\n        return map;\n    }\n\n    public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n        if (!card.click) return;\n\n        const levelKey     = card.click[\"level-key\"]      as string;\n        const nextLevelKey = card.click[\"next-level-key\"] as string;\n\n        // ── Root navigation card: clear stale Store entries ──────────────────\n        if (levelKey === \"root\") {\n            this.Store.clear();\n            return;\n        }\n\n        // ── Component-level card ─────────────────────────────────────────────\n        const groupId = card.additional?.[\"groupId\"] as string | undefined;\n        const cat     = card.additional?.[\"cat\"]     as string | undefined;\n        const program = card.additional?.[\"program\"] as IPlacerGroupProgram | undefined;\n        const entry   = card.additional?.[\"entry\"]   as ProgramSelectionEntry | undefined;\n\n        if (!groupId || !cat || !program) return;\n\n        const group = this._groups.find(g => g.id === groupId);\n        if (!group) return;\n\n        // ── Single-program mode: one program covers all components ──────────\n        if (cat === \"all\") {\n            // Configure the active program from this selection\n            if (entry) {\n                await super.Click({\n                    click: { \"previous-level-key\": \"\", \"level-key\": groupId, \"next-level-key\": \"\" },\n                    additional: { entry }\n                } as CardData, context);\n            }\n\n            // Use the single program for every component category\n            const components: { [key: string]: { manu: string; prog: string; article: string } } = {};\n            for (const c of group.components) {\n                const article = program.components.find(pc => pc.cat === c)?.article ?? \"\";\n                components[c] = { manu: program.manu, prog: program.prog, article };\n            }\n\n            await CommunicationMessageService.createPlacerGroup({ groupId, components, resetScene: true });\n\n            const params = context.settings.Fetch.parameters ?? {};\n            const onSelectionEvents = (params[\"on-selection-events\"] as EventHandlerEvent[]) ?? [];\n            await EventHandlerService.dispatchEventList(onSelectionEvents, false);\n            return;\n        }\n\n        // ── Multi-step mode: per-component selection ────────────────────────\n        // Record this category's selection and its display entry (overwrite-safe for back + re-pick)\n        this.Store.setSubKeyItem(groupId, cat, program);\n        if (entry) this.Store.setSubKeyItem(groupId, `${cat}:entry`, entry);\n\n        // If more components remain, let the container navigate to the next one\n        if (nextLevelKey !== \"\") return;\n\n        // ── Last component selected → create the placer group ────────────────\n        // Configure the active program from the first component's selection before creating the group\n        const firstCat = group.components[0];\n        const firstEntry = this.Store.getSubKeyItem<ProgramSelectionEntry>(groupId, `${firstCat}:entry`);\n\n        const components: { [key: string]: { manu: string; prog: string; article: string } } = {};\n        for (const c of group.components) {\n            const selection = this.Store.getSubKeyItem<IPlacerGroupProgram>(groupId, c);\n            if (selection) {\n                const article = selection.components.find(pc => pc.cat === c)?.article ?? \"\";\n                components[c] = { manu: selection.manu, prog: selection.prog, article };\n            }\n        }\n        const createPlacerGroupPromise = CommunicationMessageService.createPlacerGroup({ groupId, components, resetScene: true });\n\n        if (firstEntry) {\n            await super.Click({\n                click: { \"previous-level-key\": \"\", \"level-key\": firstCat, \"next-level-key\": \"\" },\n                additional: { entry: firstEntry }\n            } as CardData, context, createPlacerGroupPromise);\n        }\n        await createPlacerGroupPromise;\n        this.Store.delete(groupId);\n\n        const params = context.settings.Fetch.parameters ?? {};\n        const onSelectionEvents = (params[\"on-selection-events\"] as EventHandlerEvent[]) ?? [];\n        await EventHandlerService.dispatchEventList(onSelectionEvents, false);\n    }\n}\n\nCardDataService.RegisterAppConnection(new PlacerGroupSelectionCardAppConnection());\n","import { DimensionInformation } from \"../components/standard/informationals/dimensions-information.component\";\nimport { PriceDisplayData } from \"../components/price/price-display/price-display.component\";\nimport {CommunicationMessageService, RequestService} from \"@dh-software/webui-api\";\n\nexport interface IPlanningFileDescriptor {\n    file: string;\n    file_type: string;\n    __type: string;\n}\n\nexport interface ILandingPageItem {\n    items?: unknown[];\n    description?: string;\n    image?: IPlanningFileDescriptor;\n    planning?: IPlanningFileDescriptor;\n    txt?: { [key: string]: string }\n    custom?: {\n        mirror: boolean;\n        icon?: string;\n        [key: string]: unknown\n    };\n    price?: PriceDisplayData,\n    dimensions?: DimensionInformation[]\n    category?: {\n        mode: string;\n    };\n}\n\nexport interface LandingPageLevel {\n    items: string[];\n    name: string;\n}\n\ninterface ILandingPageCollection {\n    rootNode: LandingPageLevel[];\n\n    [key: string]: ILandingPageItem | LandingPageLevel[];\n}\n\nexport const rootKey = \"rootNode\";\n\nclass LandingPageServiceClass {\n\n    private _landingPageElements?: ILandingPageCollection;\n\n    constructor() {\n    }\n\n    async LandingPageData(local = false): Promise<ILandingPageCollection> {\n        if (!this._landingPageElements) {\n            const configURL = local ? (\"/webui/readConfig\" + (window.g_configuration.webuiProject ? \"/\" + window.g_configuration.webuiProject : \"\")) : \"webui/modular/config/data/elements.json\";\n            this._landingPageElements = await RequestService.fetchJSON<ILandingPageCollection>(configURL);\n        }\n        return this._landingPageElements;\n    }\n\n    async getLandingPageItems(local = false): Promise<ILandingPageItem[]> {\n        const collection = await this.LandingPageData(local);\n        return Object.keys(collection).filter(x => x == rootKey).map(x => collection[x]) as ILandingPageItem[];\n    }\n\n    async getLandingPages(local = false): Promise<LandingPageLevel[]> {\n        const collection = await this.LandingPageData(local);\n        return collection.rootNode;\n    }\n\n    async getItemById(id: string, local = false): Promise<ILandingPageItem> {\n        if (id === rootKey) return {};\n        const collection = await this.LandingPageData(local);\n        return Promise.resolve(collection[id] as ILandingPageItem);\n    }\n\n    async hasItemWithId(id: string, local = false) {\n        if (id === rootKey) return false;\n        const landingPageData = await this.LandingPageData(local);\n        return id in landingPageData;\n    }\n\n    async loadPlanningFile(id_: string, local = false) {\n        const item = await this.getItemById(id_, local);\n        if (item) {\n            return await CommunicationMessageService.loadPlanningFile(item.planning?.file || \"\"), item;\n        }\n        return undefined;\n    }\n\n}\n\nexport const LandingPageService = new LandingPageServiceClass();\n","import { BaseCardDataAppConnection } from \"./base.card.app.connection\";\nimport { CardFetchMethod, FetchResult, CardDataLevelKey, CardDataLevel, CardContainerContext } from \"../../models/card-container\";\nimport { CardData } from \"../../models/card-container\";\nimport { ILandingPageItem, LandingPageLevel, LandingPageService } from \"../../utils/landing-page.service\";\nimport { CardContainerSettings } from \"../../components/standard/card-container/internals\";\nimport { CardDataService } from \"../card.data.service\";\n\n\nexport class LandingPageCardAppConnection extends BaseCardDataAppConnection {\n    constructor() {\n        super();\n        this.Method = CardFetchMethod.LandingPageView;\n    }\n\n\n    public async Fetch(context: CardContainerContext): Promise<FetchResult> {\n        const result = {\n            \"landing-pages\": await LandingPageService.getLandingPages(),\n            \"entries\": new Map<string, Map<string, ILandingPageItem>>()\n        };\n\n        if (context.settings.Fetch.parameters?.levels && Array.isArray(context.settings.Fetch.parameters.levels)) {\n            const levelsToShow = context.settings.Fetch.parameters.levels as Array<string>;\n            result[\"landing-pages\"] = result[\"landing-pages\"].filter((pageData: LandingPageLevel) => {\n                if (!levelsToShow.includes(pageData.name)) {\n                    return false;\n                }\n                return true;\n            });\n        }\n\n        for (const pageData of result[\"landing-pages\"]) {\n            const entries = new Map();\n            for (const item of pageData.items) {\n                const hasItem = await LandingPageService.hasItemWithId(item);\n                if (hasItem) {\n                    const landingPageEntry = await LandingPageService.getItemById(item);\n                    entries.set(item, landingPageEntry);\n                }\n            }\n            result.entries.set(pageData.name, entries);\n        }\n        return result;\n    }\n    public CreateCards(filtered: FetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n        const result = new Map<CardDataLevelKey, CardDataLevel>();\n        const fetchResult = filtered as {\n            \"landing-pages\": Array<LandingPageLevel>,\n            \"entries\": Map<string, Map<string, ILandingPageItem>>\n        };\n        for (const pageData of fetchResult[\"landing-pages\"]) {\n            const entries = fetchResult.entries.get(pageData.name);\n            const cardDataCollection: CardDataLevel = { cards: [], title: pageData.name };\n            if (entries) {\n                for (const [id, value] of entries) {\n                    const cardData = this._buildCardData(id, value, pageData.name, context.settings);\n                    cardDataCollection.cards.push(cardData);\n                }\n            }\n            result.set(pageData.name, cardDataCollection);\n        }\n        return result;\n    }\n    public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n        if (card.click == undefined) return;\n\n        if (\"planningId\" in card.click) {\n            const result = await LandingPageService.loadPlanningFile(card.click[\"planningId\"] as string, true);\n            if (result) {\n                context.dispatchEvent(new CustomEvent(\"planningLoaded\", { composed: true, bubbles: true, detail: { planningId: card.click[\"planningId\"] } }));\n            }\n        }\n    }\n\n    private _buildCardData(id: string, landingPage: ILandingPageItem, pageName: string, settings: CardContainerSettings): CardData {\n        return {\n            image: { prefix: \"\", file: landingPage.image?.file || \"\" },\n            icon: landingPage?.custom?.icon,\n            price: landingPage.price,\n            dimensions: landingPage.dimensions,\n            txt: landingPage.txt,\n            click: {\n                \"previous-level-key\": settings.Fetch[\"root-level\"],\n                \"level-key\": pageName,\n                \"next-level-key\": id,\n                \"planningId\": id\n            } as { [key: string]: unknown },\n            modules: settings.Fetch.parameters[\"modules\"]\n        } as CardData;\n    }\n}\nCardDataService.RegisterAppConnection(new LandingPageCardAppConnection());","\nexport class MediaServiceClass {\n\n    // implementation of CommunicationMessageService.getMediaUrl without async!\n    getUrl(manufacturer?: string, program?: string, type?: string, name?: string, hasExtension?: boolean, returnPlaceholder: boolean = true): string {\n        if (!name || !name.length) {\n            return \"\";\n        }\n\n\n        let url = window.g_node_url_prefix + \"/media/\";\n\n        if (name) {\n            name = name.replace(new RegExp(\"[\\\\\\\\]+\", \"g\"), \"/\");\n        }\n\n        url += manufacturer ? encodeURIComponent(manufacturer) + \"/\" : \"-\" + \"/\";\n        url += program ? encodeURIComponent(program) + \"/\" : \"-\" + \"/\";\n        url += type ? encodeURIComponent(type) + \"/\" : \"-\" + \"/\";\n        url += type === \"texPath\" ? name : encodeURIComponent(name);\n\n        if (!hasExtension) {\n            url += \".jpg\";\n        }\n        if (returnPlaceholder) {\n            url += \"?placeholder=false\"\n        }\n\n        return url;\n    }\n}\n\nexport const MediaService = new MediaServiceClass();\n","import { CardDataService } from \"../card.data.service\";\nimport { BaseCardDataAppConnection } from \"./base.card.app.connection\";\nimport {\n    CardContainerContext,\n    CardContainerUpdate,\n    CardData,\n    CardDataLevel,\n    CardDataLevelKey,\n    CardDataLevelMap,\n    CardDataUpdateEvent,\n    CardFetchMethod,\n    FetchResult\n} from \"../../models/card-container\";\nimport { UtilService } from \"../util.service\";\nimport { MediaService } from \"../../utils/media.service\";\nimport { IMaterialCatalog, IMaterialCatalogItem } from \"@dh-software/webui-types\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\n\n\nexport enum EMaterialTarget {\n    Wall = \"wall\",\n    Floor = \"floor\",\n    Ceiling = \"ceiling\",\n    Door = \"door\",\n    Window = \"window\",\n    WindowSill = \"window_sill\",\n}\n\nexport enum EGlobalTextureVariable {\n    Wall = \"13202\",                 // VIH_TEXTURE_WALL\n    Floor = \"13201\",                // VIH_TEXTURE_FLOOR\n    Ceiling = \"13203\",              // VIH_TEXTURE_ROOF\n    Door = \"13204\",                 // VIH_TEXTURE_DOOR\n    Window = \"13205\",               // VIH_TEXTURE_WINDOW\n    WindowSillTexture = \"13211\",    // VIH_BG_WINDOW_SILL_TEXTURE\n}\n\nexport interface IMaterialTargetInfo {\n    label: string;\n    target: EMaterialTarget;\n    variable: EGlobalTextureVariable;\n}\n\nconst MATERIAL_TARGETS: IMaterialTargetInfo[] = [\n    {\n        label: \"6101\",\n        target: EMaterialTarget.Wall,\n        variable: EGlobalTextureVariable.Wall\n    },\n    {\n        label: \"6100\",\n        target: EMaterialTarget.Floor,\n        variable: EGlobalTextureVariable.Floor\n    },\n    {\n        label: \"6102\",\n        target: EMaterialTarget.Ceiling,\n        variable: EGlobalTextureVariable.Ceiling\n    },\n    {\n        label: \"6104\",\n        target: EMaterialTarget.Door,\n        variable: EGlobalTextureVariable.Door\n    },\n    {\n        label: \"6103\",\n        target: EMaterialTarget.Window,\n        variable: EGlobalTextureVariable.Window\n    },\n    {\n        label: \"60293\",\n        target: EMaterialTarget.WindowSill,\n        variable: EGlobalTextureVariable.WindowSillTexture\n    },\n];\n\nexport interface IMaterialSelectionFetchResult extends FetchResult {\n    targets: EMaterialTarget[];\n    catalog: IMaterialCatalog;\n}\n\nexport class MaterialSelectionCardAppConnection extends BaseCardDataAppConnection<IMaterialSelectionFetchResult> {\n    constructor() {\n        super();\n        this.Method = CardFetchMethod.MaterialSelection;\n    }\n\n    private getTargetInfo(target_: EMaterialTarget): IMaterialTargetInfo | undefined {\n        return MATERIAL_TARGETS.find(t => t.target === target_);\n    }\n\n    private getTargetCategory(target_: EMaterialTarget): string {\n        return `dhcat_${target_}`;\n    }\n\n    private getTargetCategories(): Set<string> {\n        return new Set(MATERIAL_TARGETS.map(t => this.getTargetCategory(t.target)));\n    }\n\n    private getAllowedTargets(context_: CardContainerContext): Set<EMaterialTarget> {\n        const allTargets = new Set<EMaterialTarget>(MATERIAL_TARGETS.map(t => t.target));\n\n        const configured = context_.settings.Fetch.parameters?.[\"allowed-targets\"] as Array<string> | undefined;\n        if (!configured) {\n            return allTargets;\n        }\n\n        const allowedTargets = new Set<EMaterialTarget>();\n        for (const item of configured) {\n            const value = item.toLowerCase();\n            if (allTargets.has(value as EMaterialTarget)) {\n                allowedTargets.add(value as EMaterialTarget);\n            }\n        }\n        return allowedTargets;\n    }\n\n    private async setGlobalMaterial(target_: EMaterialTarget, materialName_: string): Promise<void> {\n        const info = this.getTargetInfo(target_);\n        if (info == undefined) {\n            return;\n        }\n\n        await CommunicationMessageService.dhTodo([\"3\" /* PropTransferWorld */, {\n            params: [\n                \"-1\"             /* GlobalTransfer */,\n                \"0\"              /* Put */,\n                info.variable    /* Key */,\n                \"S\"              /* Type */,\n                materialName_    /* Value */\n            ]\n        }]);\n    }\n\n    private getImageUrl(img_: string): string {\n        if (!img_ || img_.length == 0) {\n            return \"\";\n        }\n\n        const filename = img_.split(/[\\\\/]/).pop();\n        if (img_.startsWith(\"./images\")) {\n            return MediaService.getUrl(\"_global\", undefined, \"wall_img\", filename, true, false);\n        }\n        if (img_.includes(\"textures\")) {\n            return MediaService.getUrl(\"_global\", undefined, \"tex\", filename, true, false);\n        }\n\n        return \"\";\n    }\n\n    public async CheckUpdate(event_: CardDataUpdateEvent, eventParameters_: unknown, context_: CardContainerContext): Promise<CardContainerUpdate> {\n        if (event_ == CardDataUpdateEvent.CardContainerVisible) {\n            return CardContainerUpdate.FETCH;\n        }\n        return await super.CheckUpdate(event_, eventParameters_, context_);\n    }\n\n    public async Fetch(context_: CardContainerContext): Promise<FetchResult> {\n        const catalog = await CommunicationMessageService.getMaterialCatalog();\n        return {\n            catalog: catalog,\n            targets: MATERIAL_TARGETS.map(t => t.target)\n        };\n    }\n\n    public Filter(unfiltered_: IMaterialSelectionFetchResult, context_: CardContainerContext, active_: Array<CardDataLevelKey>): FetchResult {\n        const allowedTargets = this.getAllowedTargets(context_);\n        const allowedTargetCats = new Set([...allowedTargets].map(t => this.getTargetCategory(t)));\n\n        const excludeCategories = new Set(context_.settings.Fetch.parameters?.[\"exclude-categories\"] as Array<string> ?? []);\n        const onlyFeaturedMaterials = context_.settings.Fetch.parameters?.[\"only-featured-materials\"] as boolean ?? false;\n        const excludeManufacturerMaterials = context_.settings.Fetch.parameters?.[\"exclude-manufacturer-materials\"] as boolean ?? false;\n\n        let baseItems = unfiltered_.catalog.items;\n        if (excludeManufacturerMaterials) {\n            baseItems = baseItems.filter(item => !item.categories.includes(\"dhcat_brandedmat\"));\n        }\n        if (excludeCategories.size > 0) {\n            baseItems = baseItems.filter(item => !item.categories.some(cat => excludeCategories.has(cat)));\n        }\n\n        const hasFeatured = baseItems.some(item => item.categories.includes(\"dhcat_featured\"));\n        const featuredItems = onlyFeaturedMaterials && hasFeatured\n            ? baseItems.filter(item => item.categories.includes(\"dhcat_featured\"))\n            : baseItems;\n\n        const targeted = featuredItems.filter(\n            item => item.categories.some(cat => allowedTargetCats.has(cat))\n        );\n        const items = targeted.length > 0 ? targeted : featuredItems;\n\n        return {\n            catalog: { data: unfiltered_.catalog.data, items },\n            targets: unfiltered_.targets.filter(t => allowedTargets.has(t))\n        };\n    }\n\n    public CreateCards(filtered_: IMaterialSelectionFetchResult, context_: CardContainerContext): CardDataLevelMap {\n        const { catalog, targets } = filtered_;\n        const levels = new Map<CardDataLevelKey, CardDataLevel>();\n        const targetCats = this.getTargetCategories();\n        const rootLevelKey = (context_.settings.Fetch[\"root-level\"] as CardDataLevelKey) || \"root\";\n\n        const allowedTargetCats = new Set(targets.map(t => this.getTargetCategory(t)));\n        const isTargetTagged = catalog.items.some(item => item.categories.some(cat => allowedTargetCats.has(cat)));\n\n        const rootCards: CardData[] = [];\n        levels.set(rootLevelKey, {\n            title: \"\",\n            cards: rootCards\n        });\n\n        for (const target of targets) {\n            const info = this.getTargetInfo(target);\n            if (info == undefined) {\n                continue;\n            }\n\n            const targetCat = this.getTargetCategory(target);\n            const itemsForTarget = isTargetTagged\n                ? catalog.items.filter(item => item.categories.includes(targetCat))\n                : catalog.items;\n            if (itemsForTarget.length === 0) {\n                continue;\n            }\n\n            const targetKey = `target-${target}`;\n            rootCards.push({\n                txt: {\n                    title: info.label\n                },\n                click: {\n                    \"previous-level-key\": \"\",\n                    \"level-key\": targetKey,\n                    \"next-level-key\": targetKey\n                }\n            });\n\n            this.buildLevels(levels, catalog, targetKey, info.label, itemsForTarget, 0, targetCats, target);\n\n            const customColor = context_.settings.Fetch.parameters?.[\"custom-color\"] as boolean ?? false;\n            if (customColor) {\n                this.buildCustomColorLevel(levels, targetKey, target);\n            }\n        }\n\n        return levels;\n    }\n\n    private buildLevels(levels_: CardDataLevelMap, catalog_: IMaterialCatalog, key_: string, title_: string, items_: IMaterialCatalogItem[], depth_: number, targetCats_: Set<string>, target_: EMaterialTarget): void {\n        const cards: CardData[] = [];\n        const groups = new Map<string, IMaterialCatalogItem[]>();\n        const leaves: IMaterialCatalogItem[] = [];\n\n        for (const item of items_) {\n            const path = item.categories.filter(cat => !targetCats_.has(cat));\n            if (depth_ < path.length) {\n                const cat = path[depth_];\n                const group = groups.get(cat);\n                if (group) {\n                    group.push(item);\n                } else {\n                    groups.set(cat, [item]);\n                }\n            } else {\n                leaves.push(item);\n            }\n        }\n\n        for (const [cat, groupItems] of groups) {\n            const childKey = `${key_}:${UtilService.sanitizeKey(cat)}`;\n            const data = catalog_.data[cat] as { img: string };\n            cards.push({\n                txt: {\n                    title: cat\n                },\n                image: data?.img ? {\n                    prefix: \"\",\n                    file: this.getImageUrl(data.img)\n                } : undefined,\n                click: {\n                    \"previous-level-key\": key_,\n                    \"level-key\": childKey,\n                    \"next-level-key\": childKey\n                }\n            });\n\n            this.buildLevels(levels_, catalog_, childKey, cat, groupItems, depth_ + 1, targetCats_, target_);\n        }\n\n        for (const item of leaves) {\n            cards.push({\n                image: {\n                    prefix: \"\",\n                    file: this.getImageUrl(item.img)\n                },\n                click: {\n                    \"previous-level-key\": key_,\n                    \"level-key\": item.id,\n                    \"next-level-key\": \"\",\n                    \"item\": item,\n                    \"target\": target_,\n                },\n            });\n        }\n\n        levels_.set(key_, {\n            title: title_,\n            cards: cards,\n            additional: leaves.length > 0 ? {\n                \"style-type\": \"textures\"\n            } : undefined\n        });\n    }\n\n    private buildCustomColorLevel(levels_: CardDataLevelMap, targetKey_: string, target_: EMaterialTarget): void {\n        const targetLevel = levels_.get(targetKey_);\n        if (targetLevel == undefined) {\n            return;\n        }\n\n        const colorKey = `${targetKey_}:custom-color`;\n        targetLevel.cards.push({\n            txt: {\n                title: \"farbauswahl\",\n            },\n            click: {\n                \"previous-level-key\": targetKey_,\n                \"level-key\": colorKey,\n                \"next-level-key\": colorKey,\n                \"target\": target_,\n            },\n        });\n\n        levels_.set(colorKey, {\n            title: \"\",\n            cards: [\n                {\n                    click: {\n                        \"previous-level-key\": colorKey,\n                        \"level-key\": `${colorKey}:picker`,\n                        \"next-level-key\": \"\",\n                        \"target\": target_,\n                    },\n                    additional: {\n                        \"card-tag\": \"fv-color-picker-card\"\n                    },\n                },\n            ],\n            additional: {\n                \"style-type\": \"color-picker\"\n            }\n        });\n    }\n\n    public async Click(card_: CardData, context_: CardContainerContext): Promise<void> {\n        super.Click(card_, context_);\n\n        const target = card_.click?.[\"target\"] as EMaterialTarget | undefined;\n        if (target == undefined) {\n            return;\n        }\n\n        const matItem = card_.click?.[\"item\"] as IMaterialCatalogItem | undefined;\n        const rgbCode = card_.click?.[\"rgb-code\"] as { r: number; g: number; b: number } | undefined;\n        const matName = matItem ? matItem.id : rgbCode ? `RGB_${rgbCode.r}_${rgbCode.g}_${rgbCode.b}` : \"\";\n\n        if (matName.length > 0) {\n            await this.setGlobalMaterial(target, matName);\n        }\n    }\n}\nCardDataService.RegisterAppConnection(new MaterialSelectionCardAppConnection());\n","import { BaseCardDataAppConnection } from \"./base.card.app.connection\";\nimport { CardFetchMethod, FetchResult, CardDataLevelKey, CardDataLevel, CardFetchFilters, CardContainerContext, CardData } from \"../../models/card-container\";\nimport { CardDataService } from \"../card.data.service\";\nimport {LocaleService} from \"@dh-software/webui-api\";\n\nexport class CardsFromConfigurationCardAppConnection extends BaseCardDataAppConnection {\n    constructor() {\n        super();\n        this.Method = CardFetchMethod.CardsFromConfiguration;\n    }\n\n    public async Fetch(context: CardContainerContext): Promise<FetchResult> {\n        const cardsParameter = context.settings.Fetch.parameters[\"cards\"] as { [level: string]: { titleTxtId: string, cards: Array<CardData> } };\n        const result = {\n            cards: new Map<string, { titleTxtId: string, cards: Array<CardData> }>()\n        };\n        const levels = Object.keys(cardsParameter);\n        for (const level of levels) {\n            result.cards.set(level, cardsParameter[level]);\n        }\n        return result;\n    }\n\n    public Filter(unfiltered: FetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): FetchResult {\n        const filtered = {\n            cards: new Map<string, Map<string, { titleTxtId: string, cards: Array<CardData> }>>()\n        };\n        const filter = context.settings.Fetch.filter ? context.settings.Fetch.filter as CardFetchFilters : {};\n        if (filter[\"level-key-filter\"]) {\n            for (const card of unfiltered.cards as Map<string, Map<string, { titleTxtId: string, cards: Array<CardData> }>>) {\n                if (filter[\"level-key-filter\"].includes(card[0])) {\n                    filtered.cards.set(card[0], card[1]);\n                }\n            }\n        }\n        else if (context.states.SelectedFilters && context.states.SelectedFilters.length > 0) {\n            for (const selectedFilter of context.states.SelectedFilters) {\n                for (const card of unfiltered.cards as Map<string, Map<string, { titleTxtId: string, cards: Array<CardData> }>>) {\n                    if (selectedFilter.filter.includes(card[0])) {\n                        filtered.cards.set(card[0], card[1]);\n                    }\n                }\n            }\n        }\n        else {\n            filtered.cards = unfiltered.cards as Map<string, Map<string, { titleTxtId: string, cards: Array<CardData> }>>;\n        }\n        return filtered;\n    }\n\n    public CreateCards(filtered: FetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n        const cards = super.CreateCards(filtered, context);\n        cards.clear();\n\n        if (filtered.cards) {\n            for (const cardLevelData of filtered.cards as Map<string, { titleTxtId: string, cards: Array<CardData> }>) {\n                cards.set(cardLevelData[0], {\n                    title: LocaleService.translate(cardLevelData[1].titleTxtId, cardLevelData[1].titleTxtId),\n                    cards: cardLevelData[1].cards\n                });\n            }\n        }\n        return cards;\n    }\n}\nCardDataService.RegisterAppConnection(new CardsFromConfigurationCardAppConnection());\n","import {\n\tBasePropertyCardAppConnection,\n\tBasePropertyFetchResult,\n} from \"./base-property-card-app.connection\";\nimport {\n\tCardFetchMethod,\n\tCardDataLevelKey,\n\tCardDataLevel,\n\tCardContainerContext,\n\tFilterSelectionStrategy,\n\tCardDataButtonGroupItem,\n\tCardDataGroup,\n} from \"../../models/card-container\";\nimport { CardDataService } from \"../card.data.service\";\nimport {\n\tCommunicationMessageService,\n\tProgContextModel,\n} from \"@dh-software/webui-api\";\nimport {\n\tContextFilterStrategy,\n\tIProgProperty,\n\tIProgPropertyContext,\n\tIProgPropertyRootList,\n\tIPropTransferItem,\n} from \"@dh-software/webui-types\";\nimport { UtilService } from \"../util.service\";\n\nexport type PropertyContext = {\n\tcontextId: string;\n\tproperties: Array<IProgProperty>;\n};\n\nexport type PropertyGroup /* MerkmalLegacyGroupInfoData */ = {\n\tid: string;\n\ttitle: string;\n\tkeys: Array<{\n\t\tkey: number;\n\t\ttitle: string;\n\t\tinfoText?: string;\n\t\tpreventImages?: number;\n\t}>;\n};\n\nexport type PropertyContextFetchResult = BasePropertyFetchResult & {\n\tcontexts: Array<PropertyContext>;\n\tgroups: Array<PropertyGroup>;\n\tcatalogOrder?: { [merkmalKey: number]: number }; // merkmal key -> global display order index (lower = earlier)\n};\n\nexport class PropertyContextSelectionAppConnection extends BasePropertyCardAppConnection<PropertyContextFetchResult> {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.Method = CardFetchMethod.PropertyContextSelection;\n\t}\n\n\tprivate static lastRefreshPropertyPanelTimestamp: number | undefined =\n\t\tundefined;\n\tprotected override onRefreshPropertyPanel(): void {\n\t\tPropertyContextSelectionAppConnection.lastRefreshPropertyPanelTimestamp =\n\t\t\tDate.now();\n\t}\n\n\tprivate static propertiesCache = new Map<\n\t\tstring,\n\t\t| IProgPropertyRootList<IProgPropertyContext>\n\t\t| Promise<IProgPropertyRootList<IProgPropertyContext>>\n\t>();\n\tprotected async Find(\n\t\tmanufacturer: string,\n\t\tprogram: string,\n\t\tuseSelection: boolean,\n\t\tuseRelevant: boolean,\n\t\tinstanceIdents?: Array<number>,\n\t): Promise<IProgPropertyRootList<IProgPropertyContext>> {\n\t\tconst cacheKey =\n\t\t\tmanufacturer +\n\t\t\tprogram +\n\t\t\t(useSelection ? \"Selection\" : \"NoSelection\") +\n\t\t\t(useRelevant ? \"Relevant\" : \"NotRelevant\") +\n\t\t\t(instanceIdents != undefined ? instanceIdents.toString() : \"[]\") +\n\t\t\t(PropertyContextSelectionAppConnection.lastRefreshPropertyPanelTimestamp?.toString() ??\n\t\t\t\t\"\");\n\t\treturn this.cachedFind(\n\t\t\tcacheKey,\n\t\t\tPropertyContextSelectionAppConnection.propertiesCache,\n\t\t\t() =>\n\t\t\t\tProgContextModel.findAll(\n\t\t\t\t\tuseSelection,\n\t\t\t\t\tuseRelevant,\n\t\t\t\t\tinstanceIdents,\n\t\t\t\t\tContextFilterStrategy.ALL,\n\t\t\t\t) as Promise<IProgPropertyRootList<IProgPropertyContext>>,\n\t\t);\n\t}\n\n\tprotected async FindGroupInformation(\n\t\tmanufacturer: string,\n\t\tprogram: string,\n\t): Promise<Array<PropertyGroup>> {\n\t\treturn await CommunicationMessageService.getMerkmalGroupInformation({\n\t\t\tmanufacturer,\n\t\t\tprogram,\n\t\t});\n\t}\n\n\tprivate getContextProperties(\n\t\tcontext: IProgPropertyContext,\n\t\texportCondition?: (property: IProgProperty) => boolean,\n\t): PropertyContext {\n\t\tconst properties = Object.values(context.children).flatMap((program) =>\n\t\t\tObject.values(program.children).filter(\n\t\t\t\t(property) => !exportCondition || exportCondition(property),\n\t\t\t),\n\t\t);\n\t\treturn { contextId: context.contextId, properties };\n\t}\n\n\tpublic override async Fetch(\n\t\tcontext: CardContainerContext,\n\t): Promise<PropertyContextFetchResult> {\n\t\tconst {\n\t\t\tuseSelection,\n\t\t\tuseRelevant,\n\t\t\tignoreSingleValueProperties,\n\t\t\tmanufacturer,\n\t\t\tprogram,\n\t\t} = await this.getCommonFetchParameters(context);\n\n\t\tconst propertiesHierarchy = await this.Find(\n\t\t\tmanufacturer,\n\t\t\tprogram,\n\t\t\tuseSelection,\n\t\t\tuseRelevant,\n\t\t);\n\t\tconst groupInfo = await this.FindGroupInformation(\n\t\t\tmanufacturer,\n\t\t\tprogram,\n\t\t);\n\t\tconst contexts = Object.values(propertiesHierarchy.children).flatMap(\n\t\t\t(x) =>\n\t\t\t\tthis.getContextProperties(\n\t\t\t\t\tx,\n\t\t\t\t\t(value) =>\n\t\t\t\t\t\t!ignoreSingleValueProperties ||\n\t\t\t\t\t\tObject.keys(value.children).length >= 2,\n\t\t\t\t),\n\t\t);\n\n\t\tconst result: PropertyContextFetchResult = {\n\t\t\tmanufacturer,\n\t\t\tprogram,\n\t\t\tcontexts,\n\t\t\tgroups: groupInfo,\n\t\t};\n\t\tif (context.settings.Fetch.parameters[\"order-by-catalog\"] === true) {\n\t\t\tconst { keyRank, categoryRank } = await this.fetchCatalogRanks(\n\t\t\t\tmanufacturer,\n\t\t\t\tprogram,\n\t\t\t);\n\t\t\tresult.catalogOrder = this.buildContextOrder(\n\t\t\t\tcontexts,\n\t\t\t\tkeyRank,\n\t\t\t\tcategoryRank,\n\t\t\t);\n\t\t}\n\t\tconst allowedKeys = await this.fetchAllowedKeysByCategories(\n\t\t\tcontext,\n\t\t\tmanufacturer,\n\t\t\tprogram,\n\t\t);\n\t\tif (allowedKeys !== undefined) result[\"allowed-keys\"] = allowedKeys;\n\t\treturn result;\n\t}\n\n\tpublic override Filter(\n\t\tunfiltered: PropertyContextFetchResult,\n\t\tcontext: CardContainerContext,\n\t\tactive: Array<CardDataLevelKey>,\n\t): PropertyContextFetchResult {\n\t\tif (unfiltered.contexts == undefined)\n\t\t\treturn { ...unfiltered, contexts: [] };\n\n\t\tconst filteredContexts = unfiltered.contexts.map((propertyContext) => ({\n\t\t\tcontextId: propertyContext.contextId,\n\t\t\tproperties: this.filterPropertiesByAllowedKeys(\n\t\t\t\tpropertyContext.properties,\n\t\t\t\tcontext,\n\t\t\t\tunfiltered[\"allowed-keys\"],\n\t\t\t),\n\t\t}));\n\n\t\treturn { ...unfiltered, contexts: filteredContexts };\n\t}\n\n\t// Fetches the two ranking inputs used to order merkmal cards by catalog:\n\t//  - categoryRank: generated-catalog category id -> rank (GetCategoriesMergedFP order)\n\t//  - keyRank: merkmal key -> its component's category rank, via the PropTransfer Cat mapping\n\tprivate async fetchCatalogRanks(\n\t\tmanufacturer: string,\n\t\tprogram: string,\n\t): Promise<{\n\t\tkeyRank: { [key: number]: number };\n\t\tcategoryRank: Map<string, number>;\n\t}> {\n\t\t// 1) ordered equipment categories (mirror article-category.js: equipment band 10000, sorting 10001)\n\t\tconst merged = await CommunicationMessageService.getCategoriesMerged(\n\t\t\tmanufacturer,\n\t\t\t\"dhcat_\",\n\t\t\t10001,\n\t\t\t10001,\n\t\t\tprogram,\n\t\t);\n\t\t// A merged category row is [id, text, priority, <unused>, order, ...].\n\t\t// Sort by `order`; when order is blank, fall back to `priority`, then to source order.\n\t\t// (Matches the legacy article-category.js ordering.)\n\t\tconst categoryRows = (merged?.category ?? []) as Array<Array<string>>;\n\t\tconst ranked = categoryRows\n\t\t\t.map(([id, , priorityText, , orderText], sourceIndex) => ({\n\t\t\t\tid,\n\t\t\t\tsort:\n\t\t\t\t\torderText !== \"\"\n\t\t\t\t\t\t? parseInt(orderText)\n\t\t\t\t\t\t: parseInt(priorityText) || sourceIndex,\n\t\t\t}))\n\t\t\t.sort((a, b) => a.sort - b.sort);\n\n\t\tconst categoryRank = new Map<string, number>();\n\t\tranked.forEach((rankedRow, index) => {\n\t\t\tif (rankedRow.id && !categoryRank.has(rankedRow.id)) {\n\t\t\t\tcategoryRank.set(rankedRow.id, index);\n\t\t\t}\n\t\t});\n\n\t\t// 2) merkmal key -> best (lowest) category rank via PropTransfer items\n\t\tconst items = (await CommunicationMessageService.getPropTransfer({\n\t\t\tmanufacturer,\n\t\t\tprogram,\n\t\t})) as Array<IPropTransferItem>;\n\t\tconst keyRank: { [key: number]: number } = {};\n\t\tfor (const item of items ?? []) {\n\t\t\tconst key = parseInt(item.key); // item.key matches property.id base (same numbering as IProgProperty.id)\n\t\t\tlet bestRank = Number.MAX_SAFE_INTEGER;\n\t\t\tfor (const cat of item.Cat ?? []) {\n\t\t\t\tconst rank = categoryRank.get(cat);\n\t\t\t\tif (rank !== undefined && rank < bestRank) bestRank = rank;\n\t\t\t}\n\t\t\tif (bestRank !== Number.MAX_SAFE_INTEGER) keyRank[key] = bestRank;\n\t\t}\n\t\treturn { keyRank, categoryRank };\n\t}\n\n\t// Produces merkmalKey -> global display order index. Each merkmal is owned by the highest-ranked context\n\t// it appears in (a per-component context outranks the general -1 context), and is ordered by (owning\n\t// context rank, its natural position within that context). This groups merkmale by component in catalog\n\t// order while preserving each component's own merkmal order (so the \"erzeugen\" creation toggle stays first\n\t// in its group) — no numeric-key tiebreak needed.\n\tprivate buildContextOrder(\n\t\tcontexts: Array<PropertyContext>,\n\t\tkeyRank: { [key: number]: number },\n\t\tcategoryRank: Map<string, number>,\n\t): { [key: number]: number } {\n\t\tconst ownership = new Map<number, { rank: number; position: number }>();\n\t\tfor (const ctx of contexts) {\n\t\t\tconst contextRank = this.rankForContext(ctx, keyRank, categoryRank);\n\t\t\tctx.properties.forEach((property, position) => {\n\t\t\t\tconst merkmalKey = parseInt(property.id);\n\t\t\t\tconst owning = ownership.get(merkmalKey);\n\t\t\t\tif (owning === undefined || contextRank > owning.rank) {\n\t\t\t\t\townership.set(merkmalKey, { rank: contextRank, position });\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tconst orderIndexByKey: { [key: number]: number } = {};\n\t\t[...ownership.entries()]\n\t\t\t.sort(([, a], [, b]) => a.rank - b.rank || a.position - b.position)\n\t\t\t.forEach(([merkmalKey], orderIndex) => {\n\t\t\t\torderIndexByKey[merkmalKey] = orderIndex;\n\t\t\t});\n\t\treturn orderIndexByKey;\n\t}\n\n\t// The catalog rank of one context. The general context (manufacturer#program, no component segment) is -1\n\t// so it sorts first. A per-component context takes the category rank of any PropTransfer key present in it;\n\t// when none is present yet (only the \"erzeugen\" toggle exists) it falls back to the component name in its\n\t// contextId.\n\tprivate rankForContext(\n\t\tctx: PropertyContext,\n\t\tkeyRank: { [key: number]: number },\n\t\tcategoryRank: Map<string, number>,\n\t): number {\n\t\tif (ctx.contextId.split(\"#\").length < 3) return -1; // general context\n\t\tlet bestRank = Number.MAX_SAFE_INTEGER;\n\t\tfor (const property of ctx.properties) {\n\t\t\tconst rank = keyRank[parseInt(property.id)];\n\t\t\tif (rank !== undefined && rank < bestRank) bestRank = rank;\n\t\t}\n\t\tif (bestRank !== Number.MAX_SAFE_INTEGER) return bestRank;\n\t\treturn this.categoryRankForContextId(ctx.contextId, categoryRank) ?? -1;\n\t}\n\n\t// Maps a component context's trailing \"#<COMPONENT>\" segment to its \"dhcat_proptransfer_<component>\"\n\t// category rank (matched on an underscore boundary to avoid a substring false-match). Used only when a\n\t// component isn't created yet, so its context has no PropTransfer key to rank it by.\n\tprivate categoryRankForContextId(\n\t\tcontextId: string,\n\t\tcategoryRank: Map<string, number>,\n\t): number | undefined {\n\t\tconst segments = contextId.split(\"#\");\n\t\tif (segments.length < 3) return undefined;\n\t\tconst component = segments[segments.length - 1].toLowerCase();\n\t\tfor (const [categoryId, rank] of categoryRank) {\n\t\t\tif (categoryId.toLowerCase().endsWith(\"_\" + component)) return rank;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t// Stable-sorts the flat property list by global catalog order index; properties without an index keep\n\t// their prior (fetch) order, at the end.\n\tprivate orderPropertiesByCatalog(\n\t\tproperties: Array<IProgProperty>,\n\t\tcatalogOrder?: { [key: number]: number },\n\t): Array<IProgProperty> {\n\t\tif (!catalogOrder) return properties;\n\t\tconst UNRANKED = Number.MAX_SAFE_INTEGER;\n\t\treturn properties\n\t\t\t.map((property, originalIndex) => ({\n\t\t\t\tproperty,\n\t\t\t\toriginalIndex,\n\t\t\t\torder: catalogOrder[parseInt(property.id)] ?? UNRANKED,\n\t\t\t}))\n\t\t\t.sort((a, b) => a.order - b.order || a.originalIndex - b.originalIndex)\n\t\t\t.map((entry) => entry.property);\n\t}\n\n\tpublic override CreateCards(\n\t\tfiltered: PropertyContextFetchResult,\n\t\tcontext: CardContainerContext,\n\t): Map<CardDataLevelKey, CardDataLevel> {\n\t\tconst result = new Map<CardDataLevelKey, CardDataLevel>();\n\t\tif (!filtered.contexts?.length) return result;\n\n\t\tconst makeToolTipButton =\n\t\t\t!!context.settings.Card[\"app-connection-settings\"][\n\t\t\t\t\"tooltip-only-creates-button\"\n\t\t\t];\n\t\tconst properties = filtered.contexts\n\t\t\t.flatMap((x) => x.properties)\n\t\t\t.filter(\n\t\t\t\t(property, index, arr) =>\n\t\t\t\t\tarr.findIndex((x) => x.id == property.id) === index,\n\t\t\t);\n\n\t\tconst orderedProperties = this.orderPropertiesByCatalog(\n\t\t\tproperties,\n\t\t\tfiltered.catalogOrder,\n\t\t);\n\n\t\tconst rootLevel: CardDataLevel = { title: \"\", cards: [] };\n\t\tfor (const property of orderedProperties) {\n\t\t\tconst propertyIdNum = parseInt(property.id);\n\t\t\tconst group = filtered.groups?.find((g) =>\n\t\t\t\tg.keys.some((k) => k.key === propertyIdNum),\n\t\t\t);\n\t\t\tconst groupKey = group?.keys.find((k) => k.key === propertyIdNum);\n\t\t\tconst infoText = groupKey?.infoText?.length\n\t\t\t\t? groupKey.infoText\n\t\t\t\t: undefined;\n\n\t\t\tconst buttonGroups: Array<CardDataGroup<CardDataButtonGroupItem>> =\n\t\t\t\tmakeToolTipButton && infoText\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttitle: \"\",\n\t\t\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tactive: false,\n\t\t\t\t\t\t\t\t\t\ticon: \"fv-icon-question-mark\",\n\t\t\t\t\t\t\t\t\t\t\"click-data\": { txt: infoText },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]\n\t\t\t\t\t: [];\n\n\t\t\tconst current = property.children[property.currentValue];\n\t\t\trootLevel.cards.push({\n\t\t\t\ttxt: makeToolTipButton\n\t\t\t\t\t? { title: UtilService.ncrToUTF8(property.name) }\n\t\t\t\t\t: {\n\t\t\t\t\t\t\ttitle: UtilService.ncrToUTF8(property.name),\n\t\t\t\t\t\t\ttooltip: infoText ?? \"\",\n\t\t\t\t\t\t},\n\t\t\t\timage: {\n\t\t\t\t\tprefix: \"\",\n\t\t\t\t\tfile: current ? current.alternativeImageUrl : \"\",\n\t\t\t\t},\n\t\t\t\tclick: {\n\t\t\t\t\t\"previous-level-key\": context.settings.Fetch[\"root-level\"],\n\t\t\t\t\t\"level-key\": property.id,\n\t\t\t\t\tstrategy: FilterSelectionStrategy.AND,\n\t\t\t\t\tpriority: 0,\n\t\t\t\t\t\"next-level-key\": \"\",\n\t\t\t\t},\n\t\t\t\t\"button-groups\":\n\t\t\t\t\tbuttonGroups.length > 0 ? buttonGroups : undefined,\n\t\t\t});\n\t\t}\n\t\tresult.set(context.settings.Fetch[\"root-level\"], rootLevel);\n\t\treturn result;\n\t}\n}\nCardDataService.RegisterAppConnection(\n\tnew PropertyContextSelectionAppConnection(),\n);\n","import { PropertyContextSelectionAppConnection, PropertyContextFetchResult, PropertyContext } from \"./property-context-selection.app.connection\";\nimport { CardData, CardFetchMethod, CardDataLevelKey, CardDataLevel, CardContainerContext, CardDataButtonGroupItem, CardDataGroup } from \"../../models/card-container\";\nimport { CardDataService } from \"../card.data.service\";\nimport { IProgPropertyValue } from \"@dh-software/webui-types\";\nimport { ComponentService } from \"../../utils/component.service\";\nimport { InformationMaskComponent } from \"../../components/standard/modal/masks\";\n\n// Re-export types for external consumers\nexport type { PropertyContext, PropertyGroup, PropertyContextFetchResult } from \"./property-context-selection.app.connection\";\n\nexport class PropertyContextValueSelectionCardAppConnection extends PropertyContextSelectionAppConnection {\n    constructor() {\n        super();\n        this.Method = CardFetchMethod.PropertyContextValueSelection;\n    }\n\n    public override CreateCards(filtered: PropertyContextFetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n        const result = new Map<CardDataLevelKey, CardDataLevel>();\n        if (!filtered.contexts?.length) return result;\n\n        for (const propertyContext of filtered.contexts) {\n            for (const property of propertyContext.properties) {\n                const level: CardDataLevel = { title: property.name, cards: [] };\n                if (property.children == undefined) continue;\n\n                for (const [propertyValueKey, propertyValue] of Object.entries(property.children)) {\n                    const buttonGroups = new Array<CardDataGroup<CardDataButtonGroupItem>>();\n                    if (context.settings.Card[\"app-connection-settings\"][\"tooltip-only-creates-button\"]) {\n                        if ((propertyValue as IProgPropertyValue).toolTipType == \"text\") {\n                            buttonGroups.push({\n                                title: \"\",\n                                items: [{\n                                    active: false,\n                                    icon: \"fv-icon-question-mark\",\n                                    \"click-data\": { \"txt\": (propertyValue as IProgPropertyValue).toolTipData as string }\n                                }]\n                            });\n                        }\n                    }\n\n                    const card = this.buildCardFromPropertyValue(propertyValue as IProgPropertyValue, propertyValueKey, property, filtered, context, { contextId: propertyContext.contextId });\n                    card.click![\"button-groups\"] = [];\n                    if (buttonGroups.length > 0) card[\"button-groups\"] = buttonGroups;\n                    level.cards.push(card);\n                }\n                result.set(property.id, level);\n            }\n        }\n        return result;\n    }\n\n    public override async ClickCardButton(data: { [key: string]: unknown } | undefined, card: CardData, context: CardContainerContext): Promise<void> {\n        const query = context.settings.Card[\"app-connection-settings\"][\"tooltip-button-target-information-mask-query\"];\n        if (typeof query != \"string\") {\n            console.error(\"property-context-value-selection> tooltip-button-target-information-mask-query is not a string! (or just undefined): \", query);\n            return;\n        }\n\n        if (data == undefined || data[\"txt\"] == undefined) {\n            console.error(\"property-context-value-selection> data invalid!\");\n            return;\n        }\n\n        const elements = ComponentService.findAll(\"fv-information-mask\", query);\n        for (const element of elements) {\n            if (element instanceof InformationMaskComponent) {\n                if (element.Modal == undefined) continue;\n\n                if (element.maskData[\"information-text\"] === data[\"txt\"]) {\n                    element.Modal.toggle(element.mask, { \"information-text\": data[\"txt\"] as string }, query);\n                    continue;\n                }\n                element.Modal.open(element.mask, { \"information-text\": data[\"txt\"] as string }, query);\n            }\n        }\n    }\n}\nCardDataService.RegisterAppConnection(new PropertyContextValueSelectionCardAppConnection());\n","import { PropertySelectionCardAppConnection, PropertyFetchResult } from \"./property-selection.card.app.connection\";\nimport { CardData, CardFetchMethod, CardDataLevelKey, CardDataLevel, CardContainerContext, FilterSelectionStrategy } from \"../../models/card-container\";\nimport { CardDataService } from \"../card.data.service\";\nimport { EventHandlerService } from \"../event.handler.service\";\nimport { UtilService } from \"../util.service\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\nimport type { PropertyGroup } from \"./property-context-selection.app.connection\";\n\n// Re-export the group type for external consumers\nexport type { PropertyGroup } from \"./property-context-selection.app.connection\";\n\nexport type PropertyUiGroupFetchResult = PropertyFetchResult & {\n    groups: Array<PropertyGroup>;\n}\n\n/**\n * Renders the Merkmal \"UI groups\" (e.g. \"Modellauswahl\", \"Sitz\", \"Lehne\", \"Gestell\")\n * as a flat list of cards.\n *\n * Extends {@link PropertySelectionCardAppConnection} so the property set that decides which\n * groups are relevant is the *exact same* `ProgPropertyModel.find` result (and shared static\n * cache) a sibling `property-selection` level uses — only groups whose keys occur in the\n * current article's (category-filtered) property list are shown. The group information itself\n * is layered on via `CommunicationMessageService.getMerkmalGroupInformation`.\n *\n * Acts as a *filter source*: clicking a group writes that group's property keys into this\n * container's filter selection with an OR strategy, tagged `filter-type: \"property-group\"`.\n * A sibling property container that lists this container in its `filter-sources` then restricts\n * its property list to those keys (see BasePropertyCardAppConnection.filterPropertiesByAllowedKeys).\n *\n * Selection is single-group (radio): clicking the active group again clears the filter.\n */\nexport class PropertyUiGroupSelectionCardAppConnection extends PropertySelectionCardAppConnection {\n    constructor() {\n        super();\n        this.Method = CardFetchMethod.PropertyUiGroupSelection;\n    }\n\n    /** Group cards always feed an OR filter to sibling property containers. */\n    public override GetFilterSelectionStrategy(): FilterSelectionStrategy {\n        return FilterSelectionStrategy.OR;\n    }\n\n    public override async Fetch(context: CardContainerContext): Promise<PropertyUiGroupFetchResult> {\n        const base = await super.Fetch(context);\n        const groups = await CommunicationMessageService.getMerkmalGroupInformation({\n            manufacturer: base.manufacturer,\n            program: base.program\n        }) as Array<PropertyGroup>;\n        return { ...base, groups };\n    }\n\n    public override Filter(unfiltered: PropertyUiGroupFetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): PropertyUiGroupFetchResult {\n        return super.Filter(unfiltered, context, active) as PropertyUiGroupFetchResult;\n    }\n\n    /** Numeric property keys that exist (and survive filtering) in the current article. */\n    private collectPresentKeys(filtered: PropertyUiGroupFetchResult): Set<number> {\n        const present = new Set<number>();\n        for (const property of filtered.properties ?? []) {\n            const id = parseInt(property.id);\n            if (!isNaN(id)) present.add(id);\n        }\n        return present;\n    }\n\n    /** The subset of a group's keys that is actually present in the current article. */\n    private relevantGroupKeys(group: PropertyGroup, presentKeys: Set<number>): Array<number> {\n        return group.keys.map(k => k.key).filter(key => presentKeys.has(key));\n    }\n\n    public override CreateCards(filtered: PropertyUiGroupFetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n        const result = new Map<CardDataLevelKey, CardDataLevel>();\n        if (!filtered.groups?.length) return result;\n\n        const presentKeys = this.collectPresentKeys(filtered);\n        const cardKeyFilter = context.settings.Fetch.filter?.[\"group-keys\"] as { keys: Array<number | string>, \"prohibit-listed\"?: boolean } | undefined;\n        const hasCardKeyFilter = !!cardKeyFilter?.keys?.length;\n        const cardKeyInclude = hasCardKeyFilter ? cardKeyFilter![\"prohibit-listed\"] !== true : true;\n        const emptyTitleFallback = context.settings.Fetch.parameters?.[\"empty-group-title-fallback\"] as string | undefined;\n        const rootLevelKey = context.settings.Fetch[\"root-level\"];\n\n        const rootLevel: CardDataLevel = { title: \"\", cards: [] };\n        for (const group of filtered.groups) {\n            // Strip / keep group cards by their level-key (the group id), mirroring the property-keys\n            // filter: with `prohibit-listed: true` a match is removed, otherwise only matches are kept.\n            // `keys` supports `/regex/flags` and exact ids (same matcher as property-keys).\n            if (hasCardKeyFilter && PropertyUiGroupSelectionCardAppConnection.propertyKeyMatches(group.id, cardKeyFilter!.keys) !== cardKeyInclude) continue;\n\n            const keys = this.relevantGroupKeys(group, presentKeys);\n            if (keys.length === 0) continue; // group is not relevant to the current article\n\n            const active = context.filter != undefined\n                && context.filter.Filter.length === keys.length\n                && keys.every(key => context.filter!.Contains(key));\n\n            rootLevel.cards.push({\n                txt: { title: UtilService.ncrToUTF8(group.title) || emptyTitleFallback || \"\" },\n                click: {\n                    \"previous-level-key\": rootLevelKey,\n                    \"level-key\": group.id,\n                    \"next-level-key\": \"\",\n                    strategy: FilterSelectionStrategy.OR\n                },\n                active,\n                additional: {\n                    \"group-id\": group.id,\n                    \"property-keys\": keys\n                }\n            });\n        }\n\n        result.set(rootLevelKey, rootLevel);\n        return result;\n    }\n\n    private clickActive = false;\n\n    public override async Click(card: CardData, context: CardContainerContext): Promise<void> {\n        if (this.clickActive) return;\n        this.clickActive = true;\n\n        if (context.filter != undefined && card.additional != undefined) {\n            const keys = (card.additional[\"property-keys\"] as Array<number> | undefined) ?? [];\n            const wasActive = keys.length > 0\n                && context.filter.Filter.length === keys.length\n                && keys.every(key => context.filter!.Contains(key));\n\n            // single-group (radio) selection: drop the previous selection, then either\n            // apply this group's keys or — if it was already the active one — clear it\n            context.filter.Strategy = FilterSelectionStrategy.OR;\n            context.filter.AdditionalParams = { \"filter-type\": \"property-group\" }; // lets consumers restrict on this filter\n            context.filter.Clear();\n            if (!wasActive) {\n                for (const key of keys) context.filter.Add(key);\n            }\n        }\n\n        await EventHandlerService.dispatchAsyncEvent(\"refresh-all-card-containers\", {\n            refetch: false,\n            \"include-hidden\": false\n        });\n        await CardDataService.WaitForAllCardContainerFetchPromises();\n        this.clickActive = false;\n    }\n}\nCardDataService.RegisterAppConnection(new PropertyUiGroupSelectionCardAppConnection());\n","import { BaseCardDataAppConnection } from \"./base.card.app.connection\";\nimport { CardDataService } from \"../card.data.service\";\nimport { CardContainerContext, CardContainerSpecialInteractionContext, CardContainerUpdate, CardData, CardDataLevel, CardDataLevelKey, CardDataUpdateEvent, CardFetchMethod, FetchResult, FilterSelectionData, CardDataImage } from \"../../models/card-container\";\nimport { CommunicationMessageService, LocaleService } from \"@dh-software/webui-api\";\nimport { ComponentService, ComponentServiceSearchParams } from \"../../utils/component.service\";\nimport { BaseCardContainer } from \"../../components/standard/card-container/base/base-card-container\";\nimport { MediaService } from \"../media.service\"\nimport { IArticleData, IKataPageData, IPlaceWallElementNextCenterParams } from \"@dh-software/webui-types\";\nimport { CatalogService } from \"../../utils/catalog.service\";\nimport { UtilService } from \"../../utils/util.service\";\n\ninterface IWallElementItem {\n    \"article\": string,\n    \"type\": string,\n    \"text\": string,\n    \"initial-dimension\": Array<number>,\n    \"parapet\": number,\n    \"image\": CardDataImage,\n}\n\ninterface IWallElementsGroup {\n    \"type\": string,\n    \"txt\": string,\n    \"txt2\": string,\n    \"divider\": string,\n    \"elements\": Array<IWallElementItem>,\n}\n\nexport class WallElementsCardAppConnection extends BaseCardDataAppConnection {\n    constructor() {\n        super();\n        this.Method = CardFetchMethod.WallElements;\n    }\n\n    public async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n        if (event == CardDataUpdateEvent.CardContainerVisible) {\n            return CardContainerUpdate.FILTER;\n        }\n        if (event == CardDataUpdateEvent.WallFitting_end) {\n            return CardContainerUpdate.FILTER;\n        }\n        if (event == CardDataUpdateEvent.LastPOLoaded) {\n            return CardContainerUpdate.FILTER;\n        }\n        return await super.CheckUpdate(event, eventParameters, context);\n    }\n\n\n    private GetFilterSelection(selectors: ComponentServiceSearchParams[]): FilterSelectionData[] {\n        let prio = 0;\n        const result: FilterSelectionData[] = [];\n        for (const selector of selectors) {\n            const targets = ComponentService.findAll(selector.tag, selector.query);\n            for (const target of targets) {\n                if (target instanceof BaseCardContainer) {\n                    if (target == undefined || target.Filter == undefined) continue;// skip elements that do not act as filters / could not be found\n                    if (CardDataService.GetMethod(target.Context) !== CardFetchMethod.WallSelection) continue;\n\n                    const targetFilter = target.Filter;\n                    if (targetFilter == undefined || targetFilter.Filter == undefined || targetFilter.Filter.length < 1) continue;\n\n                    result.push({\n                        filter: targetFilter.Filter,\n                        strategy: targetFilter.Strategy,\n                        priority: targetFilter.Prio != undefined ? targetFilter.Prio : prio++,\n                        \"additional-params\": targetFilter.AdditionalParams ? targetFilter.AdditionalParams : undefined\n                    });\n                }\n            }\n        }\n        return result;\n    }\n    public async CheckSpecialInteractionContext(context: CardContainerContext) {\n        const onlyPrimaryWalls = (context.settings.Fetch.parameters[\"only-primary-walls\"] as boolean | undefined) || false;\n        const walls = await CommunicationMessageService.getFurnplanWallsDoorsWindowsAndUtilities(true, onlyPrimaryWalls);\n        const dataFilterSelection = this.GetFilterSelection(context.settings.SpecialInteractionContext[\"data-sources\"]);\n\n        if (context.cards == undefined) {\n            return CardContainerSpecialInteractionContext.ENABLED;\n        }\n\n        const filteredWalls = [];\n        for (const wall of walls) {\n            for (const dataFilter of dataFilterSelection) {\n                if (dataFilter.filter.includes(wall.guid)) {\n                    filteredWalls.push(wall);\n                }\n            }\n        }\n\n        const situation: number[] = [];\n        for (const wall of filteredWalls) {\n            for (const cardLevel of context.cards) {\n                for (const selectedFilter of context.states.SelectedFilters) {\n                    if (selectedFilter.filter.includes(cardLevel[0])) {\n                        if (wall[cardLevel[0]] != undefined) {\n                            situation.push(...wall[cardLevel[0]]);\n                        }\n                    }\n                }\n            }\n        }\n        if (situation.length < 1) {\n            return CardContainerSpecialInteractionContext.DISABLED;\n        }\n        return CardContainerSpecialInteractionContext.ENABLED;\n    }\n\n    public async Fetch(context: CardContainerContext): Promise<FetchResult> {\n        const nodePrefix = await CommunicationMessageService.getNodePrefix();\n        const wallElements = await CommunicationMessageService.getWallElements();\n\n        let allElements: Array<any> = [];\n        for (const item of wallElements) {\n            for (const element of item.elements) {\n                const alreadyExists = allElements.some(element_ => element_.artNo === element.artNo);\n                if (!alreadyExists) {\n                    allElements.push(element);\n                }\n            }\n        }\n\n        const elementsToShow = context.settings.Fetch.parameters[\"wall-elements-to-show\"] as Array<string>;\n        if (elementsToShow !== undefined) {\n            allElements = allElements\n                .filter(element_ => elementsToShow.includes(element_.artNo))\n                .sort((a, b) => elementsToShow.indexOf(a.artNo) - elementsToShow.indexOf(b.artNo));\n        }\n\n        const groupedElements: Record<string, any[]> = {};\n        for (const element of allElements) {\n            const type = element.type.toLowerCase();\n            if (!groupedElements[type]) {\n                groupedElements[type] = [];\n            }\n            groupedElements[type].push(element);\n        }\n\n        const alternativeImages = context.settings.Fetch.parameters[\"alternative-images\"] as { [artNr: string]: CardDataImage };\n        const _getWallElementItemImage = (article_: string, defaultImage_: string, defaultImageManu_: string): CardDataImage => {\n            if (alternativeImages !== undefined && alternativeImages[article_]) {\n                return alternativeImages[article_];\n            }\n            const defaultUrl = MediaService.getUrl(defaultImageManu_, undefined, \"fp_ui\", defaultImage_, true, false);\n            return { file: defaultUrl, prefix: \"\" }\n        }\n\n        const windowInsertHeight = context.settings.Fetch.parameters[\"window-insert-height\"] as number | undefined;\n        const result = Object.entries(groupedElements).map(([typeKey, elements]): IWallElementsGroup => {\n            const mappedElements = elements.map((element: any): IWallElementItem => ({\n                \"article\": element.artNo,\n                \"type\": element.type,\n                \"text\": element.text,\n                \"initial-dimension\": [element.width, element.height],\n                \"parapet\": element.parapetHeight <= 0 ? element.parapetHeight : (windowInsertHeight || element.parapetHeight),\n                \"image\": _getWallElementItemImage(element.artNo, element.image, element.manu)\n            }));\n\n            return {\n                type: `${typeKey}s`,\n                txt: typeKey === \"door\" ? \"51090\" : \"6103\",\n                txt2: \"\",\n                divider: \"\",\n                elements: mappedElements\n            };\n        });\n\n\n\n        const utilitiesKataPage: IKataPageData = await CommunicationMessageService.getKataPage(\"access_raumplanung\", \"\");\n        const elektro: IWallElementsGroup = { \"type\": \"electrical\", txt: \"51153\", txt2: \"\", divider: \"\", elements: [] };\n        const sanitaer: IWallElementsGroup = { \"type\": \"plumbing\", txt: \"cat.dhacces_installationselemente_sanitaer\", txt2: \"\", divider: \"\", elements: [] };\n\n        for (const module of utilitiesKataPage.Modules) {\n            for (let articles of module.Articles) {\n                articles = await CatalogService.filterArticlesList(articles);\n                for (const article of articles) {\n                    if (elementsToShow !== undefined && elementsToShow.length > 0 && !elementsToShow.includes(article.ArtNr)) {\n                        continue;\n                    }\n\n                    if (article.CatString.includes(\"dhacces_installationselemente_sanitaer\")) {\n                        sanitaer.elements.push({\n                            \"article\": article.ArtNr,\n                            \"type\": \"plumbing\",\n                            \"text\": article.artText,\n                            \"initial-dimension\": [parseFloat((article as IArticleData).dxma), parseFloat((article as IArticleData).dzma)],\n                            \"parapet\": 50.0,// in cm (Kommentar #4 aus Ticket #79088 TODO: einstellbar machen!)\n                            \"image\": { prefix: nodePrefix, file: UtilService.ncrToUTF8(article.imgName) }\n                        });\n                        continue;\n                    }\n                    if (article.CatString.includes(\"dhacces_installationselemente_elektro\")) {\n                        elektro.elements.push({\n                            \"article\": article.ArtNr,\n                            \"type\": \"electrical\",\n                            \"text\": article.artText,\n                            \"initial-dimension\": [parseFloat((article as IArticleData).dxma), parseFloat((article as IArticleData).dzma)],\n                            \"parapet\": 100.5,// in cm, just for now, needs to be defined!\n                            \"image\": { prefix: nodePrefix, file: UtilService.ncrToUTF8(article.imgName) }\n                        });\n                        continue;\n                    }\n                }\n            }\n        }\n\n        if (elementsToShow !== undefined && elementsToShow.length > 0) {\n            elektro.elements.sort((a, b) => elementsToShow.indexOf(a.article) - elementsToShow.indexOf(b.article));\n            sanitaer.elements.sort((a, b) => elementsToShow.indexOf(a.article) - elementsToShow.indexOf(b.article));\n        }\n\n        result.push(elektro);\n        result.push(sanitaer);\n\n        return {\n            \"element-data\": result,\n            \"node-prefix\": nodePrefix\n        };\n    }\n\n    public Filter(unfiltered: FetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): FetchResult {\n        if (context.states.SelectedFilters && context.states.SelectedFilters.length > 0) {\n            const filtered: Array<IWallElementsGroup> = [];\n            const unfilteredElementData = unfiltered[\"element-data\"] as Array<IWallElementsGroup>;\n\n            for (const selectedFilter of context.states.SelectedFilters) {\n                for (const elementData of unfilteredElementData) {\n                    if (selectedFilter.filter.includes(elementData.type)) {\n                        if (!filtered.includes(elementData)) {\n                            filtered.push(elementData);\n                        }\n                    }\n                }\n            }\n\n            return {\n                \"element-data\": filtered,\n                \"node-prefix\": unfiltered[\"node-prefix\"]\n            }\n        }\n        return unfiltered;\n    }\n\n    public CreateCards(filtered: FetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n        const levels = super.CreateCards(filtered, context);\n        levels.clear();\n\n        if (filtered) {\n            const cardData = filtered[\"element-data\"] as Array<IWallElementsGroup>;\n            if (context.settings.Fetch.parameters[\"root-as-cards\"]) {\n                const types: string[] = [];\n                const cards: CardData[] = [];\n                for (const card of cardData) {\n                    cards.push({\n                        txt: {\n                            title: LocaleService.translate(card.txt, card.txt) + LocaleService.translate(card.divider, card.divider) + LocaleService.translate(card.txt2, card.txt2)\n                        },\n                        click: {\n                            \"previous-level-key\": \"\",\n                            \"level-key\": card.type,\n                            \"next-level-key\": \"\"\n                        }\n                    });\n                    if (!types.includes(card.type)) {\n                        types.push(card.type);\n                    }\n                }\n\n                levels.set(\"root\", {\n                    title: \"\",\n                    cards: cards,\n                    additional: {\n                        \"element-types\": types\n                    }\n                });\n                return levels;\n            }\n\n            for (const card of cardData) {\n                const types: string[] = [];\n                const cards: CardData[] = [];\n                for (const element of card.elements) {\n                    cards.push({\n                        image: {\n                            prefix: element.image.prefix,\n                            file: element.image.file\n                        },\n                        txt: {\n                            title: element.text\n                        },\n                        click: {\n                            \"previous-level-key\": \"\",\n                            \"level-key\": element.article,\n                            \"next-level-key\": \"\",\n                            \"type\": element.type,\n                            \"initial-dimension\": element[\"initial-dimension\"],\n                            \"parapet\": element.parapet\n                        }\n                    });\n                    if (!types.includes(element.type)) {\n                        types.push(element.type);\n                    }\n                }\n\n                levels.set(card.type, {\n                    title: LocaleService.translate(card.txt, card.txt) + LocaleService.translate(card.divider, card.divider) + LocaleService.translate(card.txt2, card.txt2),\n                    cards: cards,\n                    additional: {\n                        \"element-types\": types\n                    }\n                });\n            }\n        }\n        return levels;\n    }\n\n    public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n        await super.Click(card, context);\n\n        if (card.click == undefined || card.click[\"level-key\"] == undefined || card.click.type == undefined || card.click[\"initial-dimension\"] == undefined || (card.click[\"initial-dimension\"] as number[]).length != 2) {\n            return;\n        }\n\n        const onlyPrimaryWalls = (context.settings.Fetch.parameters[\"only-primary-walls\"] as boolean | undefined) || false;\n        const wallSelectionSelector = context.settings.Fetch.parameters[\"wall-selection-selector\"] as { tag: string, query: string };\n        if (wallSelectionSelector != undefined) {\n            const targets = ComponentService.findAll(wallSelectionSelector.tag, wallSelectionSelector.query);\n            if (targets.length > 0 && targets[0] instanceof BaseCardContainer) {\n                const filter = targets[0].Filter;\n                if (filter != undefined) {\n                    let targetWall = undefined;\n                    const walls = await CommunicationMessageService.getFurnplanWallsDoorsWindowsAndUtilities(true, onlyPrimaryWalls);\n                    for (const wall of walls) {\n                        if (filter.Filter.includes(wall.guid)) {\n                            targetWall = wall.ii;\n                            break;\n                        }\n                    }\n\n                    if (targetWall != undefined) {\n                        const type = (card.click.type as string).toUpperCase() as \"DOOR\" | \"WINDOW\" | \"ELECTRICAL\" | \"PLUMBING\" | \"VENTILATION\" | \"COMMUNICATION\" | \"HEATING\";\n                        if (type.length > 0) {\n                            const placeWallCentered: IPlaceWallElementNextCenterParams = {\n                                type: type,\n                                wallinstanceident: targetWall as number,\n                                article: card.click[\"level-key\"] as string\n                            };\n\n                            if (card.click.type == \"Window\" || card.click.type == \"Door\") {\n                                const initialDimension = card.click[\"initial-dimension\"] as number[];\n                                placeWallCentered.width = initialDimension[0];\n                                placeWallCentered.height = initialDimension[1];\n                                if (card.click.type == \"Door\") {\n                                    placeWallCentered.frame = \"I\";\n                                }\n                            }\n                            if (card.click.parapet) {\n                                placeWallCentered.parapet = card.click.parapet as number;\n                            }\n                            await CommunicationMessageService.placeWallElementNextCenter(placeWallCentered);\n                            await CommunicationMessageService.resetSceneAction();\n                        }\n                    }\n                }\n            }\n            return;// if wall-selection-selector is set: place Wall element directly onto the selected wall!\n        }\n\n        if (card.click.type == \"Window\" || card.click.type == \"Door\") {\n            const initialDimension = card.click[\"initial-dimension\"] as number[];\n            const data = {\n                width: initialDimension[0],\n                height: initialDimension[1],\n                parapet: card.click.parapet ? card.click.parapet : -1.0,\n                type: card.click[\"level-key\"],\n                elementType: card.click.type\n            };\n            await CommunicationMessageService.addWallChildElement(data);\n            return;\n        }\n\n        if (card.click.type == \"plumbing\" || card.click.type == \"electrical\") {\n            await CommunicationMessageService.placePO({ articleNumber: card.click[\"level-key\"] as string, manufacturer: \"_global\", program: \"acce\" });\n            return;\n        }\n        console.warn(\"TODO: implement po placement!\")\n\n\n        // await CommunicationMessageService.placePO({\n        //     manufacturer: card.click.manufacturer as string,\n        //     program: card.click.program as string,\n        //     articleNumber: card.click[\"level-key\"] as string,\n        //     once: true\n        // });\n\n        //     const articleParams: ILoadArticleParams = {\n        //         artNr: card.click.nr as string,\n        //         hingeChanged: hasHingeChange ? \"1\" : \"\",\n        //         ...extraDimensions\n        //     }\n        //     await CommunicationMessageService.loadArticleWithParams(card.click.manufacturer as string, card.click.program as string, articleParams);\n        //     WebViewerService.FurnviewWebViewer?.focus();\n    }\n\n\n}\nCardDataService.RegisterAppConnection(new WallElementsCardAppConnection());","import { CardDataService } from \"../card.data.service\";\nimport { BaseCardDataAppConnection } from \"./base.card.app.connection\";\nimport { CardContainerContext, CardContainerUpdate, CardData, CardDataLevel, CardDataLevelKey, CardDataUpdateEvent, CardFetchMethod, FetchResult } from \"../../models/card-container\";\nimport { CommunicationMessageService, LocaleService } from \"@dh-software/webui-api\";\n\n\nexport class WallSelectionCardAppConnection extends BaseCardDataAppConnection {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.Method = CardFetchMethod.WallSelection;\n\t}\n\n\tpublic async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n\t\tif (event == CardDataUpdateEvent.CardContainerVisible) {\n\t\t\treturn CardContainerUpdate.FETCH;\n\t\t}\n\t\tif (event == CardDataUpdateEvent.WallFitting_end) {\n\t\t\treturn CardContainerUpdate.FETCH;\n\t\t}\n\t\tif (event == CardDataUpdateEvent.LastPOLoaded) {\n\t\t\treturn CardContainerUpdate.FETCH;\n\t\t}\n\t\treturn await super.CheckUpdate(event, eventParameters, context);\n\t}\n\n\tpublic async Fetch(context: CardContainerContext): Promise<FetchResult> {\n\t\tconst onlyPrimaryWalls = (context.settings.Fetch.parameters[\"only-primary-walls\"] as boolean | undefined) || false;\n\t\treturn await CommunicationMessageService.getFurnplanWallsDoorsWindowsAndUtilities(false, onlyPrimaryWalls);\n\t}\n\n\tpublic Filter(unfiltered: FetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): FetchResult {\n\t\tconst filtered: {txt: string, \"level-key\": number, instanceIdent: number}[] = [];\n\t\tconst prefix = LocaleService.translate(\"6101\", \"\");\n\t\tfor (let index = 0; index < unfiltered.length; ++index) {\n\t\t\tconst letterIndex = index % 26;\n\t\t\tconst letter = String.fromCharCode('A'.charCodeAt(0) + letterIndex);\n\t\t\tconst suffix = unfiltered.length > 1 ? (\" \" + letter) : \"\";\n\n\t\t\tfiltered.push({\n\t\t\t\ttxt: prefix + suffix,\n\t\t\t\t\"level-key\": unfiltered[index][\"guid\"],\n\t\t\t\tinstanceIdent: unfiltered[index][\"ii\"]\n\t\t\t});\n\t\t}\n\t\treturn filtered;\n\t}\n\n\tpublic CreateCards(filtered: FetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n\t\tconst levels = super.CreateCards(filtered, context);\n\t\tlevels.clear();\n\n\t\tconst cards: CardData[] = [];\n\t\tfor (const level of filtered as {txt: string, \"level-key\": number, instanceIdent: number}[]) {\n\t\t\tcards.push({\n\t\t\t\ttxt: {\n\t\t\t\t\ttitle: level.txt\n\t\t\t\t},\n\t\t\t\tclick: {\n\t\t\t\t\t\"previous-level-key\": \"\",\n\t\t\t\t\t\"level-key\": level[\"level-key\"],\n\t\t\t\t\t\"next-level-key\": \"\"\n\t\t\t\t},\n\t\t\t\tadditional: {\n\t\t\t\t\tinstanceIdent: level.instanceIdent\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tlevels.set(\"root\", {\n\t\t\ttitle: \"\",\n\t\t\tcards: cards\n\t\t});\n\t\treturn levels;\n\t}\n\n\tpublic async Click(card: CardData, context: CardContainerContext): Promise<void> {\n\t\tif(context.settings.Fetch.parameters[\"fit-viewport-after-selection\"]) {\n\t\t\tconst instanceIdent = <number>card.additional?.instanceIdent || -1\n\t\t\tif(instanceIdent !== -1) {\n\t\t\t\tCommunicationMessageService.fitCamera({\n\t\t\t\t\tinstanceIdents: [instanceIdent]\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\treturn super.Click(card, context);\n\t}\n}\nCardDataService.RegisterAppConnection(new WallSelectionCardAppConnection());\n","\nimport { property } from \"lit/decorators.js\";\nimport { AsyncBaseElement } from \"../standard/base/async.base.component\";\nimport { ConfiguratorFormBaseElement } from \"./configurator-form-elements/configurator.form.base.element.component\";\nimport { EventHandlerEvent, EventHandlerDispatchEvent } from \"../../models/event-handler/event.handler.model\";\nimport { EventFactoryService } from \"@dh-software/webui-api\";\nimport { IConfiguratorApiData } from \"@dh-software/webui-types\";\nimport { ConfiguratorApiDataService } from \"../../utils/configurator-api.data.service\";\nimport type { ComponentStateHandlerMap } from \"../../models/event-handler/component-state-event\";\n\ndeclare global {\n    interface ComponentStates {\n        \"fv-configurator-form:refetch\": Record<string, never>;\n    }\n}\n\nexport interface FormElementInfo {\n    tag: string,\n    name?: string,\n    names?: Array<string>,\n    attributes?: {\n        [attribute: string]: unknown\n    },\n    styleVars?: {\n        [styleVar: string]: string\n    }\n}\n\nexport interface FormElementsWrapper {\n    title?: string,\n    \"enable-toggle\"?: boolean,\n    \"clickable\"?: boolean,\n    elements: Array<FormElementInfo | FormElementsWrapper>,\n    \"inline-elements\"?: Array<FormElementInfo | FormElementsWrapper>,\n    styleVars?: {\n        [styleVar: string]: string\n    }\n    \"closed-icon\"?: string,\n    \"open-icon\"?: string,\n    \"starts-closed\"?: boolean\n}\n\n\nexport abstract class ConfiguratorFormBase extends AsyncBaseElement<undefined, IConfiguratorApiData> {\n    stateHandlers: ComponentStateHandlerMap = {\n        \"fv-configurator-form:refetch\": async () => { await this.Refetch(); },\n    };\n    //                                   _   _\n    //   _ __  _ __ ___  _ __   ___ _ __| |_(_) ___  ___\n    //  | '_ \\| '__/ _ \\| '_ \\ / _ \\ '__| __| |/ _ \\/ __|\n    //  | |_) | | | (_) | |_) |  __/ |  | |_| |  __/\\__ \\\n    //  | .__/|_|  \\___/| .__/ \\___|_|   \\__|_|\\___||___/\n    //  |_|             |_|\n    @property({ type: Object, reflect: false, attribute: \"list-tags\" })\n    public listTags: { [groupName: string]: string } = {\n        default: \"fv-configurator-form-element-list\"\n    };\n\n    @property({ type: Object, reflect: false, attribute: \"list-properties\" })\n    public listProperties: { [groupName: string]: { [attribute: string]: unknown } } = {};\n\n    @property({ type: Object, reflect: false, attribute: \"list-styles\" })\n    public listStyles: { [groupName: string]: { [styleVar: string]: string } } = {};\n\n    @property({ type: Boolean, reflect: true })\n    public refresh = false;\n\n    @property({ type: Object, reflect: true, attribute: \"events\" })\n    public events: {\n        hide?: Array<EventHandlerEvent>,\n        show?: Array<EventHandlerEvent>\n    } = {};\n\n    @property({ type: String, reflect: true, attribute: \"decimal-divider\" })\n    public decimalDivider: \".\" | \",\" = \".\";\n\n    @property({ type: Number, reflect: true, attribute: \"float-digits\" })\n    public floatDigits = 2;\n\n    @property({ type: Number, reflect: true, attribute: \"value-info-timeout\" })\n    public valueInfoTimeout = 3500;\n\n    @property({ type: Boolean, reflect: true, attribute: \"prevent-view-recenter\" })\n    public preventViewRecenter = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"prevent-refresh\" })\n    public preventRefresh = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"prevent-regen-all\" })\n    public preventRegenAll = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"force-read-groups-on-refresh\" })\n    public forceReadGroupsOnRefresh = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"refresh-on-hide-state-change\" })\n    public refreshOnHideStateChange = false;\n\n    @property({ type: Array, reflect: true, attribute: \"update-events\" })\n    public updateEvents: Array<EventHandlerEvent> = [];\n\n    @property({ type: Boolean, reflect: true, attribute: \"group-title-toggles\" })\n    public groupTitleToggles = false;\n\n\n    @property({ type: String, reflect: false })\n    public elementNamePrefix = \"\";\n\n\n    private static AllFormComponents: ConfiguratorFormBase[] = [];\n    connectedCallback() {\n        super.connectedCallback();\n        ConfiguratorFormBase.AllFormComponents.push(this);\n    }\n    disconnectedCallback() {\n        const index = ConfiguratorFormBase.AllFormComponents.indexOf(this);\n        if (index != -1) {\n            ConfiguratorFormBase.AllFormComponents.splice(index, 1);\n        }\n        super.disconnectedCallback();\n    }\n\n\n    //                       _                   _\n    //    ___ ___  _ __  ___| |_ _ __ _   _  ___| |_ ___  _ __\n    //   / __/ _ \\| '_ \\/ __| __| '__| | | |/ __| __/ _ \\| '__|\n    //  | (_| (_) | | | \\__ \\ |_| |  | |_| | (__| || (_) | |\n    //   \\___\\___/|_| |_|___/\\__|_|   \\__,_|\\___|\\__\\___/|_|\n    constructor() {\n        super();\n\n        this.addHideStateUpdatedEventListener(async (value: boolean) => {\n            if (value) {\n                if (this.events.hide) {\n                    window.dispatchEvent(new EventHandlerDispatchEvent({\n                        async: false,\n                        events: this.events.hide\n                    }));\n                }\n            }\n            else {\n                if (this.events.show) {\n                    window.dispatchEvent(new EventHandlerDispatchEvent({\n                        async: false,\n                        events: this.events.show\n                    }));\n                }\n            }\n\n            if (this.refreshOnHideStateChange) {\n                await this.Refetch();\n                // await ConfiguratorFormBase.Refresh(\"\", this, true, this.preventRefresh, this.preventRegenAll);\n                await this.updateComplete;\n                return;\n            }\n\n            this.requestUpdate();\n            await this.updateComplete;\n        });\n    }\n\n\n\n    //    __      _       _\n    //   / _| ___| |_ ___| |__\n    //  | |_ / _ \\ __/ __| '_ \\\n    //  |  _|  __/ || (__| | | |\n    //  |_|  \\___|\\__\\___|_| |_|\n    protected async Fetch(parameters: undefined): Promise<IConfiguratorApiData | undefined> {\n        return ConfiguratorApiDataService.Fetch(this.preventRefresh, this.preventRegenAll);\n    }\n\n\n    //                   _       _\n    //   _   _ _ __   __| | __ _| |_ ___\n    //  | | | | '_ \\ / _` |/ _` | __/ _ \\\n    //  | |_| | |_) | (_| | (_| | ||  __/\n    //   \\__,_| .__/ \\__,_|\\__,_|\\__\\___|\n    //        |_|\n    public async UpdateAll(data_: IConfiguratorApiData | undefined = undefined, preventUpdateEvents_ = false) {\n        if (data_) {\n            // if (JSON.stringify(ConfiguratorApiDataService.Data) == JSON.stringify(data_)) {\n            //     return;\n            // }\n\n            if (!this.forceReadGroupsOnRefresh) {\n                ConfiguratorApiDataService.Data = data_;\n            }\n        }\n\n        const doFetch = data_ == undefined || this.forceReadGroupsOnRefresh;\n        if (doFetch) {\n            await this.Refetch();\n        }\n        else {\n            this.requestUpdate();\n            await this.updateComplete;\n        }\n\n        if (preventUpdateEvents_) {\n            return;\n        }\n\n        this.triggerUpdateEvents();\n    }\n\n    public static async Refresh(fetch_ = true, preventRefresh_ = false, preventRegenAll_ = false, preventFormRender_ = false, triggerUpdateEvents_ = false): Promise<void> {\n        if (fetch_) {\n            const previousData = ConfiguratorApiDataService.Data;\n            const currentData = await ConfiguratorApiDataService.Fetch(preventRefresh_, preventRegenAll_);\n\n            if (JSON.stringify(currentData) == JSON.stringify(previousData)) {\n                return;// prevent further\n            }\n        }\n\n        if (!preventFormRender_) {\n            const promises = [];\n            for (const form of ConfiguratorFormBase.AllFormComponents) {\n                promises.push(form.UpdateAll(ConfiguratorApiDataService.Data, true));// trigger all updates in parallel\n            }\n\n            for (const promise of promises) {\n                await promise;\n            }\n        }\n\n        await new Promise(requestAnimationFrame); // LL [2026|January|07] fix accordion + configurator form, await one frame before triggering the update events (e.g accordion height update)\n\n        if (triggerUpdateEvents_) {\n            ConfiguratorFormBase.AllFormComponents.forEach((form) => {\n                form.triggerUpdateEvents();\n            });\n        }\n    }\n\n    public triggerUpdateEvents(): void {\n        if (this.updateEvents && this.updateEvents.length > 0) {\n            window.dispatchEvent(new EventHandlerDispatchEvent({\n                async: false,\n                events: this.updateEvents\n            }));\n        }\n    }\n\n    public attributeChangedCallback(name: string, _old: string | null, value: string | null): void {\n        super.attributeChangedCallback(name, _old, value);\n        if (name === \"refresh\") {\n            this.Refetch();\n        }\n    }\n\n\n    private GetPrefixedName(name_: string | undefined): string {\n        if (name_ == undefined) {\n            return \"\";\n        }\n        if (this.elementNamePrefix.length < 1) {\n            return name_;\n        }\n        return /*this.elementNamePrefix + */name_;\n    }\n\n\n    //        _                           _                         _   _\n    //    ___| | ___ _ __ ___   ___ _ __ | |_    ___ _ __ ___  __ _| |_(_) ___  _ __\n    //   / _ \\ |/ _ \\ '_ ` _ \\ / _ \\ '_ \\| __|  / __| '__/ _ \\/ _` | __| |/ _ \\| '_ \\\n    //  |  __/ |  __/ | | | | |  __/ | | | |_  | (__| | |  __/ (_| | |_| | (_) | | | |\n    //   \\___|_|\\___|_| |_| |_|\\___|_| |_|\\__|  \\___|_|  \\___|\\__,_|\\__|_|\\___/|_| |_|\n    public static CreateElement(formElement_: FormElementInfo, group_: string, form_: ConfiguratorFormBase, groupReference_: string): ConfiguratorFormBaseElement {\n        const elementInfo = formElement_ as FormElementInfo;\n        const component: ConfiguratorFormBaseElement = document.createElement(elementInfo.tag) as ConfiguratorFormBaseElement;\n\n        const elementName = form_.GetPrefixedName(elementInfo.name);\n        const elementNames = elementInfo.names ? elementInfo.names.map(name => form_.GetPrefixedName(name)) : [];\n        component.Form = form_;\n        // component.InitData(ConfiguratorApiDataService.Data, form_);\n\n        component.id = \"id-\" + elementName;\n        component.name = elementName;\n        component.names = elementNames;\n        component.group = group_;\n        component.groupReference = groupReference_;\n\n        component.decimalDivider = form_.decimalDivider;\n        component.floatDigits = form_.floatDigits;\n        component.valueInfoTimeout = form_.valueInfoTimeout;\n\n        if (elementInfo.attributes) {\n            const attributes = Object.keys(elementInfo.attributes);\n            for (const attribute of attributes) {\n                const attributeValue = elementInfo.attributes[attribute];\n\n                if (typeof attributeValue === \"boolean\" && attributeValue) {\n                    component.setAttribute(attribute, \"\");\n                }\n                else if (typeof attributeValue === \"boolean\" && !attributeValue) {\n                    component.removeAttribute(attribute);\n                }\n                else if (typeof attributeValue === \"object\") {\n                    component.setAttribute(attribute, JSON.stringify(attributeValue));\n                }\n                else {\n                    component.setAttribute(attribute, attributeValue as string);\n                }\n            }\n        }\n\n        if (elementInfo.styleVars) {\n            const vars = Object.keys(elementInfo.styleVars);\n            for (const variable of vars) {\n                component.style.setProperty(variable, elementInfo.styleVars[variable]);\n            }\n        }\n\n        if (component == undefined/* || component.Refresh == undefined*/) {\n            console.error(\"configurator.form.base> No component!\");\n        }\n\n        // if (form_.refresh) {\n        //     component.Refresh(ConfiguratorApiDataService.Data, form_.preventViewRecenter);\n        // }\n        return component;\n    }\n}\n\n// Trigger a global form refresh on external events. Lives here instead of in\n// ConfiguratorApiDataService to avoid a service ↔ component cycle.\nEventFactoryService.LastPOLoaded.register(() => {\n    ConfiguratorFormBase.Refresh(true, true, true, false, true);\n});\nEventFactoryService.RefreshPropertyPanel.register(() => {\n    ConfiguratorFormBase.Refresh(true, true, true, false, true);\n});\nEventFactoryService.SendEvent.register((eventId_) => {\n    if (eventId_ == 55665533) {\n        ConfiguratorFormBase.Refresh(true, true, true, false, true);\n    }\n});\nEventFactoryService.WallFitting_end.register(() => {\n    ConfiguratorFormBase.Refresh(true, true, true, false, true);\n});\n","import {\n    BaseCardDataAppConnection,\n} from \"./base.card.app.connection\";\nimport {\n    CardDataService,\n    CardDataServiceAction,\n    CheckSpecialInteractionContextParameters,\n    CheckUpdateParameters,\n    ClickCardButtonParameters,\n    ClickCardParameters,\n    CreateCardsParameters,\n    FetchParameters,\n    FilterParameters,\n    GetFilterSelectionAdditionalParamsParameters,\n    GetFilterSelectionStrategyParameters,\n    InitFilterSelectionParamsParameters,\n    TextFieldChangedParameters,\n} from \"../card.data.service\";\nimport {\n    CardContainerContext,\n    CardContainerSpecialInteractionContext,\n    CardContainerUpdate,\n    CardData,\n    CardDataLevel,\n    CardDataLevelKey,\n    CardDataUpdateEvent,\n    CardFetchMethod,\n    FetchResult,\n    FilterSelectionStrategy,\n} from \"../../models/card-container\";\nimport { BaseInput } from \"../../components/standard/input/base/base-input\";\nimport { CardContainerSettings } from \"../../components/standard/card-container/internals\";\nimport { ConfiguratorFormBase } from \"../../components/configurator/configurator.form.base\";\nimport { ComponentService } from \"../../utils/component.service\";\n\nexport class ConfiguratorFormFilterCardAppConnection extends BaseCardDataAppConnection {\n    constructor() {\n        super();\n        this.Method = CardFetchMethod.ConfiguratorFormFilter;\n    }\n\n    private derefContextMethod(context: CardContainerContext): CardContainerContext {\n        const result = {\n            settings: new CardContainerSettings(),\n            states: context.states,\n            filter: context.filter,\n            cards: context.cards,\n            dispatchEvent: context.dispatchEvent,\n            dispatchAsyncEvent: context.dispatchAsyncEvent\n        };\n        result.settings.Initialize(context.settings.ToJson() as any);\n        return result;\n    }\n\n    private GetForms(context: CardContainerContext): ConfiguratorFormBase[] {\n        if (context.settings.Fetch.parameters.targets == undefined) {\n            return [];\n        }\n        const forms: ConfiguratorFormBase[] = [];\n        for (const target of context.settings.Fetch.parameters.targets as { tag: string, query: string }[]) {\n            for (const found of ComponentService.findAll(target.tag, target.query)) {\n                if (found instanceof ConfiguratorFormBase) {\n                    forms.push(found);\n                }\n            }\n        }\n        return forms;\n    }\n\n    private SetConfiguratorFormPrefixFromFilter(context: CardContainerContext) {\n        if (context.filter) {\n            let prefix = context.filter.Join(\"-\");\n            if (prefix.length > 0) {\n                prefix += \"-\";\n                const forms = this.GetForms(context);\n                for (const form of forms) {\n                    form.elementNamePrefix = prefix;\n                }\n            }\n        }\n    }\n\n    public async CheckUpdate(event: CardDataUpdateEvent, eventParameters: unknown, context: CardContainerContext): Promise<CardContainerUpdate> {\n        const checkUpdateParameters: CheckUpdateParameters = {\n            event,\n            eventParameters,\n            context: this.derefContextMethod(context)\n        };\n        const update = await CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.CheckUpdate, checkUpdateParameters);\n        // if (update == CardContainerUpdate.FETCH || update == CardContainerUpdate.FILTER) {\n        //     this.SetConfiguratorFormPrefixFromFilter(context);\n        // }\n        if (event == CardDataUpdateEvent.WallFitting_end || event == CardDataUpdateEvent.LastPOLoaded || event == CardDataUpdateEvent.DeleteLO_after) {\n            // EventHandlerService.dispatchAsyncEvent(\"refresh-all-configurator-forms\", {});\n        }\n        return update;\n    }\n    public CheckSpecialInteractionContext(context: CardContainerContext): Promise<CardContainerSpecialInteractionContext> {\n        const checkUpdateParameters: CheckSpecialInteractionContextParameters = {\n            context: this.derefContextMethod(context)\n        };\n        return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.CheckSpecialInteractionContext, checkUpdateParameters);\n    }\n    public async Fetch(context: CardContainerContext): Promise<FetchResult> {\n        const checkUpdateParameters: FetchParameters = {\n            context: this.derefContextMethod(context)\n        };\n        return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.Fetch, checkUpdateParameters);\n    }\n    public Filter(unfiltered: FetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): FetchResult {\n        const checkUpdateParameters: FilterParameters = {\n            unfiltered, context: this.derefContextMethod(context), active\n        };\n        return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.Filter, checkUpdateParameters);\n    }\n    public CreateCards(filtered: FetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n        const checkUpdateParameters: CreateCardsParameters = {\n            filtered,\n            context: this.derefContextMethod(context)\n        };\n        return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.CreateCards, checkUpdateParameters);\n    }\n    public GetFilterSelectionAdditionalParams(context: CardContainerContext): { [key: string]: unknown; } | undefined {\n        const checkUpdateParameters: GetFilterSelectionAdditionalParamsParameters = {\n            context: this.derefContextMethod(context)\n        };\n        return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.GetFilterSelectionAdditionalParams, checkUpdateParameters);\n    }\n    public GetFilterSelectionStrategy(context: CardContainerContext): FilterSelectionStrategy {\n        const checkUpdateParameters: GetFilterSelectionStrategyParameters = {\n            context: this.derefContextMethod(context)\n        };\n        return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.GetFilterSelectionStrategy, checkUpdateParameters);\n    }\n    public InitFilterSelectionParams(context: CardContainerContext): void {\n        const checkUpdateParameters: InitFilterSelectionParamsParameters = {\n            context: this.derefContextMethod(context)\n        };\n        return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.InitFilterSelectionParams, checkUpdateParameters);\n    }\n    public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n        const checkUpdateParameters: ClickCardParameters = {\n            card,\n            context: this.derefContextMethod(context)\n        };\n        const result = await CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.ClickCard, checkUpdateParameters);\n        this.SetConfiguratorFormPrefixFromFilter(context);\n        return result;\n    }\n    public ClickCardButton(data: { [key: string]: unknown; } | undefined, card: CardData, context: CardContainerContext): Promise<void> {\n        const checkUpdateParameters: ClickCardButtonParameters = {\n            data, card,\n            context: this.derefContextMethod(context)\n        };\n        return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.ClickCardButton, checkUpdateParameters);\n    }\n    public TextFieldChanged(card: CardData, context: CardContainerContext, field: BaseInput<any>): Promise<void> {\n        const checkUpdateParameters: TextFieldChangedParameters = {\n            card,\n            context: this.derefContextMethod(context),\n            field\n        };\n        return CardDataService.TriggerAction(context.settings.Fetch.parameters[\"method\"] as string | undefined, CardDataServiceAction.TextFieldChanged, checkUpdateParameters);\n    }\n}\nCardDataService.RegisterAppConnection(new ConfiguratorFormFilterCardAppConnection());","import { BaseCardDataAppConnection } from \"./base.card.app.connection\";\nimport { CardFetchMethod, FetchResult, CardDataLevelKey, CardDataLevel, CardContainerContext, CardData } from \"../../models/card-container\";\nimport { CardDataService } from \"../card.data.service\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\nimport { ComponentService, ComponentServiceSearchParams } from \"../component.service\";\nimport { BaseCardContainer } from \"../../components/standard/card-container/base/base-card-container\";\nimport { IArticleData } from \"@dh-software/webui-types\";\nimport { ArticlesByCategoriesCardAppConnection, ArticlesByCategoriesFetchResult } from \"./articles-by-categories.card.app.connection\";\n\n\ninterface CrossArticleHostSelectionFetchResult extends ArticlesByCategoriesFetchResult {\n    \"host-articles\": IArticleData[],\n    \"client\": CardData\n}\n\nexport class CrossArticleHostSelectionCardAppConnection<T extends CrossArticleHostSelectionFetchResult> extends ArticlesByCategoriesCardAppConnection<T> {\n    constructor() {\n        super();\n        this.Method = CardFetchMethod.CrossArticleHostSelection;\n    }\n\n    // keyed by the SOURCE container element (stable across modal/page open-close), not the\n    // host-selection context (which is recreated on close -> the original desync that re-showed)\n    private lastShownForClickOf = new WeakMap<BaseCardContainer, CardData | undefined>();\n\n    public async Fetch(context: CardContainerContext): Promise<FetchResult> {\n        const selector = context.settings.Fetch.parameters[\"cross-article-selection-selector\"] as ComponentServiceSearchParams;\n        if (selector == undefined)\n        {\n            return super.Fetch(context);\n        }\n\n        const element = ComponentService.find(selector.tag, selector.query) as BaseCardContainer;\n        if (element.LastClicked == undefined || element.LastClicked.click == undefined) {\n            return super.Fetch(context);\n        }\n\n        const clickdata = element.LastClicked.click;\n        if (clickdata.program == undefined || clickdata.manufacturer == undefined || clickdata.nr == undefined) {\n            return super.Fetch(context);\n        }\n\n        const filterVzElements = context.settings.Fetch.parameters[\"filter-vz-elements\"] !== false; // default ON; layout sets false to disable\n        const hostList = await CommunicationMessageService.getKataPageHostListByCrossArticle(clickdata.program as string, clickdata.manufacturer as string, clickdata.nr as string, filterVzElements);\n        console.log(\"possible hosts:\", hostList);\n        if (hostList.Modules == undefined) {\n            return super.Fetch(context);\n        }\n\n        const articles: IArticleData[]  = [];\n        for (const module of hostList.Modules) {\n            if (module.Articles == undefined) {\n                continue;\n            }\n            for (const article of module.Articles) {\n                if (Array.isArray(article)) {\n                    articles.push(...article);\n                }\n                else {\n                    articles.push(article);\n                }\n            }\n\n            if (module.hostsInScene) {\n                return super.Fetch(context);\n            }\n        }\n\n        if (context.settings.Behaviour[\"connection-defined-hide-show\"]) {\n            const currentLastClicked = element.LastClicked;\n            const lastActedOn = this.lastShownForClickOf.get(element);\n            this.lastShownForClickOf.set(element, currentLastClicked);\n\n            // element.LastClicked only changes on a genuine click in the source container, so a\n            // difference here means \"a card was just clicked\" - never a stray refetch / visibility\n            // change / page reopen / initial render.\n            if (lastActedOn != currentLastClicked) {\n                context.dispatchEvent(new CustomEvent(\"modifyhideelement\", { detail: articles.length === 0 }));\n            }\n        }\n\n        const result = await super.Fetch(context);\n        result[\"host-articles\"] = articles;\n        result[\"client\"] = element.LastClicked;\n        return result;\n    }\n\n    public Filter(unfiltered: FetchResult, context: CardContainerContext, active: Array<CardDataLevelKey>): FetchResult {\n        const filtered = super.Filter(unfiltered, context, active);\n        filtered[\"host-articles\"] = unfiltered[\"host-articles\"];\n        filtered[\"client\"] = unfiltered[\"client\"];\n        return filtered;\n    }\n\n    public CreateCards(filtered: FetchResult, context: CardContainerContext): Map<CardDataLevelKey, CardDataLevel> {\n        const result = this.CreateCardsFromArticles(filtered[\"host-articles\"], filtered, context);\n        const level = result.get(context.settings.Fetch[\"root-level\"]);\n        if (level != undefined) {\n            for (const card of level.cards) {\n                if (card.additional == undefined) {\n                    card.additional = {\n                        \"client\": filtered[\"client\"]\n                    };\n                    continue;\n                }\n                card.additional[\"client\"] = filtered[\"client\"];\n            }\n        }\n        return result;\n    }\n\n    public async Click(card: CardData, context: CardContainerContext): Promise<void> {\n        if (card.additional == undefined || card.additional.client == undefined) {\n            return;\n        }\n\n        const clientCard: CardData = card.additional.client;\n        if (clientCard.click == undefined) {\n            return;\n        }\n\n        const client = {\n            article: clientCard.click.nr as string,\n            manu: clientCard.click.manufacturer as string,\n            prog: clientCard.click.program as string\n        };\n        await this.loadArticle(card, context, [client]);\n\n        // Placement done: close the host-selection modal by driving the slotted\n        // card-container back to hidden - the same channel Fetch() uses to open it\n        // (modifyhideelement -> hideElement -> mask -> modal.hide()). Gated by the\n        // connection-driven show/hide mechanism AND a dedicated opt-out flag (default\n        // ON) so a future layout can deliberately keep the modal open after a click.\n        if (context.settings.Behaviour[\"connection-defined-hide-show\"]\n            && context.settings.Behaviour[\"auto-hide-after-click\"] !== false) {\n            context.dispatchEvent(new CustomEvent(\"modifyhideelement\", { detail: true }));\n        }\n\n        // await super.Click(card, context);// TODO: replace with new function\n        // if (!card.click) {\n        //     return;\n        // }\n        // const article = card.click.nr as string;\n        // const manu = card.click.manufacturer as string;\n        // const prog = card.click.program as string;\n\n        // if (card.additional == undefined || card.additional.client == undefined) {\n        //     return;\n        // }\n\n        // const clientCard: CardData = card.additional.client;\n        // if (clientCard.click == undefined) {\n        //     return;\n        // }\n\n        // const client = {\n        //     article: clientCard.click.nr,\n        //     manu: clientCard.click.manufacturer,\n        //     prog: clientCard.click.program\n        // };\n\n        // await CommunicationMessageService.dhTodo([\n        //     \"0\",\n        //     {\n        //         manu: manu,\n        //         kataManu: manu,\n        //         prog: prog,\n        //         params: [article],\n        //         crossArticleClientsToUse: [client]\n        //     }\n        // ]);\n        // await CommunicationMessageService.placeCrossArticleHostWithClients({ manu, prog, article }, [client]);\n    }\n}\nCardDataService.RegisterAppConnection(new CrossArticleHostSelectionCardAppConnection());","import { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./program-selection-program.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport { IKatalogLevelEntry } from \"./program-selection.component\";\nimport { LocaleService } from \"@dh-software/webui-api\";\n\n@customElement(\"fv-program-selection-program\")\nexport class ProgramSelectionProgramComponent extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    public category?: IKatalogLevelEntry;\n    public staticColumn?: number;\n\n    @property({ type: Object, attribute: \"parent-level\" })\n    public parentLevel: IKatalogLevelEntry = {\n        id: \"\",\n        index: \"\",\n        name: \"\",\n        entries: [],\n        programImageFilter: [],\n        textInfo: {}\n    };\n\n    @property({ type: Object, attribute: \"level\" })\n    public level: IKatalogLevelEntry = {\n        id: \"\",\n        index: \"\",\n        name: \"\",\n        entries: [],\n        programImageFilter: [],\n        textInfo: {}\n    };\n\n    @property({ type: Boolean, attribute: \"info-button\" })\n    public infoButton = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"image-zoom-on-hover\" })\n    public imageZoomOnHover = false;\n\n\n    private activeImageIndex = 0;\n\n\n    constructor() {\n        super();\n\n        this.addEventListener(\"click\", () => {\n            if (this.level.entries.length > 0) return;\n            if (this.level.programImageFilter.length < 1) return;\n            this.dispatchEvent(new CustomEvent(\"program-selected\", {\n                detail: {\n                    parentLevel: this.parentLevel.id,\n                    level: this.level.index,\n                    category: this.category?.index\n                }, bubbles: true, composed: true\n            }));\n        });\n    }\n\n    private infoIconClicked(e: Event) {\n        e.stopPropagation();\n        this.dispatchEvent(new CustomEvent(\"program-info-button-clicked\", {\n            detail: {\n                parentLevel: this.parentLevel.id,\n                category: this.category?.index,\n                program: this.level.index,\n                image: {\n                    programFilter: this.level.programImageFilter,\n                    activeImage: this.activeImageIndex\n                },\n                textInfo: this.level.textInfo,\n                name: this.level.name\n            }, bubbles: true, composed: true\n        }));\n    }\n\n    protected render(): TemplateResult<1> {\n        if (this.staticColumn) {\n            this.classList.add(\"static-columns\");\n        }\n        else {\n            this.classList.remove(\"static-columns\");\n        }\n        return html`\n            <div class=\"program-container\">\n                <div class=\"program-img-container\">\n                    <fv-image class=\"use-img ${this.imageZoomOnHover ? \"zoom-on-hover\" : \"\"}\" .programFilter=\"${this.level.programImageFilter}\" kataId=\"${this.level.id}\"></fv-image>\n                    <div class=\"program-title-container\">\n                        <div class=\"program-title\">${this.level.name}</div>\n                        ${this.infoButton ? html`\n                            <div class=\"program-info-button-container\">\n                                <fv-info-button\n                                    @info-button-clicked=\"${this.infoIconClicked}\"\n                                    title=\"${LocaleService.translate(\"21015\")}\"\n                                    class=\"program-info-button\">\n                                </fv-info-button>\n                            </div>\n                        ` : html``}\n                    </div>\n                    <slot></slot>\n                </div>\n            </div>\n        `;\n    }\n}\n","import { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./program-selection-level.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport { IKatalogLevelEntry } from \"./program-selection.component\";\nimport { ProgramSelectionProgramComponent } from \"./program-selection-program.component\";\n\n\n@customElement(\"fv-program-selection-level\")\nexport class ProgramSelectionLevelComponent extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    public category?: IKatalogLevelEntry;\n    public staticColumn?: number;\n\n    @property({ type: Object, attribute: \"level\" })\n    public level: IKatalogLevelEntry = {\n        id: \"\",\n        index: \"\",\n        name: \"\",\n        entries: [],\n        programImageFilter: [],\n        textInfo: {}\n    };\n\n    @property({ type: String, attribute: \"grid-area-prefix\" })\n    public gridAreaPrefix = \"\";\n\n    @property({ type: Boolean, attribute: \"info-button\" })\n    public infoButton = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"level-one-selection\" })\n    public levelOneSelection = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"image-zoom-on-hover\" })\n    public imageZoomOnHover = false;\n\n    constructor() {\n        super();\n    }\n\n    protected render(): TemplateResult<1> {\n        return html`\n            <div class=\"level-container\">\n                <div class=\"level-title\" i18n=\"${this.level.id}\">${this.level.name}</div>\n                <div class=\"programs-outer-container\">\n                    <div class=\"programs-container\">\n                        ${this.levelOneSelection && this.level.id != \"onlyLevelOne\" ? html`\n                            <div class=\"program-container\">\n                                <div class=\"program-img-container\">\n                                    <fv-image class=\"use-img ${this.imageZoomOnHover ? \"zoom-on-hover\" : \"\"}\" .programFilter=\"${this.level.programImageFilter}\" kataId=\"${this.level.id}\"></fv-image>\n                                </div>\n                            </div>` : html`\n                            ${this.level.entries.map((level) => {\n                                const programSelectionProgram = new ProgramSelectionProgramComponent();\n                                programSelectionProgram.staticColumn = this.staticColumn;\n                                programSelectionProgram.infoButton = this.infoButton;\n                                programSelectionProgram.parentLevel = this.level;\n                                programSelectionProgram.level = level;\n                                programSelectionProgram.category = this.level;\n                                programSelectionProgram.imageZoomOnHover = this.imageZoomOnHover;\n                                return programSelectionProgram;\n                            })}`\n                        }\n                    </div>\n                </div>\n                <slot></slot>\n            </div>\n        `;\n    }\n}\n","import { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./program-selection.component.sass?inline\";\nimport { customElement, property, query, state } from \"lit/decorators.js\";\nimport \"./program-selection-level.component\";\nimport { BaseMaskElement } from \"../base/mask.component\";\nimport { EventHandlerDispatchEvent, EventHandlerEvent } from \"../../../models/event-handler/event.handler.model\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\nimport { ProgramSelectionLevelComponent } from \"./program-selection-level.component\";\nimport { ImageService, IProgramImage, IProgramImageFilter } from \"../../../utils/image.service\";\nimport { ProgramSelectionHelper } from \"../../../utils/program-selection.helper\";\nimport { ProgramSelectionConfirmationMaskComponent } from \"../modal/masks\";\nimport { IDeferHelperClass } from \"../../../utils/defer-helper.class\";\nimport { IMediaImage } from \"../../../utils/image.service\"\nimport { CommunicationMessageService, WebViewerService } from \"@dh-software/webui-api\";\nimport {LoadingModalComponent} from \"../loading\";\nimport { CardComponent } from \"../cards\";\nimport { MultiLevelCardContainerComponent } from \"../card-container\";\nimport { LocaleService } from \"@dh-software/webui-api\";\n\n\nexport interface IKataTreeLevelEntry {\n    id: string,\n    program?: string,\n    name: string,\n    level2?: Array<{ id: string, program: string, name: string }>\n}\n\nexport interface IKatalogLevelEntry {\n    id: string,\n    index: string,\n    name: string,\n    entries: KatalogEnvironment,\n    programImageFilter: Array<string>,\n    textInfo: { text?: string, heading?: string, subheading?: string }\n}\n\n\n\nexport type KatalogEnvironment = Array<IKatalogLevelEntry>;\n\n@customElement(\"fv-program-selection\")\nexport class ProgramSelectionComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @query(\".levels-container\")\n    private _levelsContainer?: HTMLDivElement;\n\n    @query(\"fv-multi-level-card-container.program-selection\")\n    private _cardContainer?: MultiLevelCardContainerComponent;\n\n    @property({ type: Number, reflect: true, attribute: \"group-columns\" })\n    public groupColumns = 2;\n\n    @property({ type: Number, reflect: true, attribute: \"program-columns\" })\n    public programColumns = 2;\n\n    @property({ type: Boolean, reflect: true, attribute: \"info-buttons\" })\n    public infoButtons = false;\n\n    @property({ type: String, reflect: true, attribute: \"close-modal-query\" })\n    public closeModalQuery = \".general-modal\";\n\n    @property({ type: String, reflect: true, attribute: \"info-modal-query\" })\n    public infoModalQuery = \".general-modal\";\n\n    @property({ type: String, reflect: true, attribute: \"info-mask\" })\n    public infoMask = \"program-information\";\n\n    @property({ type: Array, reflect: true, attribute: \"on-selection-events\" })\n    public onSelectionEvents = new Array<EventHandlerEvent>();\n\n    @property({ type: Number, reflect: true, attribute: \"active-step-after-selection\" })\n    public activeStepAfterSelection = 0;\n\n    @property({ type: Boolean, reflect: true, attribute: \"override-initial-article\" })\n    public overrideInitialArticle = false;\n\n    @property({ type: String, reflect: true, attribute: \"template-id\" })\n    public templateId: string = \"program-selection\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"level-one-selection\" })\n    public levelOneSelection = false;\n\n    @property({ type: String, reflect: true, attribute: \"overview-icon\" })\n    private overviewIcon = \"\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"image-zoom-on-hover\" })\n    public imageZoomOnHover = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"prevent-confirmation-modal\" })\n    public preventConfirmationModal = false;\n\n    @property({type: Object, reflect: true, attribute: \"multi-fetch-params\"})\n    multiFetchParams = this.DefaultFetchParameters;\n\n    private _levelContainerScrollOffset = 0;\n\n    @state()\n    public mask = \"program-selection\";\n\n    @state()\n    private isInsideCardGroup = false;\n\n    public initialArticle?: string;\n\n    private katalogEnvironment: KatalogEnvironment = [];\n    private levelOneImages: Array<IMediaImage> = [];\n\n    private onProgramInformationClosed = async () => {\n        await this._cardContainer?.updateComplete;\n        this.isInsideCardGroup = this._cardContainer?.isInsideGroup() ?? false;\n    };\n\n    get DefaultFetchParameters() {\n        return {\n            fetch: {\n                method: \"program-selection\",\n                \"root-level\": \"root\",\n                parameters: {\n                    \"single-program-mode\": true,\n                    \"close-modal-query\": \".general-modal\",\n                    \"show-loading-modal\": true,\n                    \"include-programs-without-images\": false,\n                    \"override-initial-article\": true,\n                    \"program-card-modules\": [\n                        {\n                            tag: \"fv-info-button\",\n                            properties: [\n                                {\n                                    key: \"slot\",\n                                    attribute: true,\n                                    value: \"text-after\"\n                                }\n                            ]\n                        }\n                    ],\n                    \"on-selection-events\": [\n                        {\n                            id: \"set-attribute\",\n                            data: {\n                                attribute: \"active-level-index\",\n                                value: \"0\",\n                                components: [\n                                    {\n                                        name: \"fv-card-container-view\",\n                                        selector: \".catalog-card-view\"\n                                    }\n                                ]\n                            }\n                        }\n                    ]\n                }\n            },\n            card: {\n                classes: [\n                    \"zoom-on-hover\"\n                ]\n            },\n            levels: {\n                tag: \"fv-flex-container\",\n                \"style-vars-all\": {\n                    \"--card-width\": \"50%\",\n                    \"--flex-container-direction\": \"row\",\n                    \"--flex-container-overflow\": \"hidden auto\",\n                    \"--card-min-height\": \"345px\",\n                    \"--flex-container-gap\": \"20px\",\n                    \"--icon-overflow\": \"hidden\",\n                    \"--icon-background-size\": \"contain\",\n                    \"--icon-display\": \"block\",\n                    \"--icon-img-border-radius\": \"16px\",\n                    \"--card-title-padding\": \"8px\",\n                    \"--program-selection-divider-thickness\": \"1px\",\n                    \"--flex-container-padding\": \"0px 5px 0px 0px\",\n                    \"--card-text-container-display\": \"flex\",\n                    \"--card-text-container-justify-content\": \"center\",\n                    \"--card-text-container-align-items\": \"center\",\n                    \"--info-button-order\": \"1\",\n                    \"--card-text-container-padding\": \"0px 6px 0px 6px\",\n                    \"--img-container-flex\": \"1\",\n                    \"--flex-container-mobile-align-items\": \"center\",\n                    \"--flex-container-flex-wrap\": \"wrap\",\n                    \"--card-max-width\": \"max(48%, 280px)\",\n                    \"--flex-container-max-width\": \"100%\",\n                    \"--card-min-width\": \"200px\",\n                    \"--flex-container-mobile-justify-content\": \"center\",\n                    \"--card-mobile-min-width\": \"270px\",\n                    \"--flex-container-justify-content\": \"center\",\n                    \"--card-hover-zoom\": \"1.03\",\n                    \"--card-hover-zoom-transition-time\": \"400ms\",\n                    \"--card-img-container-border-radius\": \"16px\",\n                    \"--card-isolation\": \"isolate\",\n                    \"--card-contain\": \"paint\",\n                    \"--card-img-container-overflow\": \"hidden\",\n                    \"--card-title-text-color\": \"black\"\n                },\n                properties: [\n                    {\n                        key: \"zoom-on-hover\",\n                        attribute: true,\n                        value: false\n                    }\n                ]\n            }\n        }\n    }\n\n    constructor() {\n        super();\n\n        window.addEventListener(\"onCloudId\", this.configureWithUIManuProg.bind(this));\n\n        this.addEventListener(\"program-selected\", async (e: CustomEventInit) => {\n            await ProgramSelectionHelper.Configure({\n                detail: e.detail,\n                closeModalQuery: this.closeModalQuery,\n                initialArticle: this.initialArticle || \"\",\n                activeStepAfterSelection: this.activeStepAfterSelection,\n                clearScene: !this.preventConfirmationModal || window.g_configuration.clear_scene_by_basic_planing,\n                confirmModal: !this.preventConfirmationModal,\n                overrideInitialArticle: this.overrideInitialArticle\n            });\n            await EventHandlerService.dispatchEventList(this.onSelectionEvents, false);\n        });\n\n        this.addEventListener(\"info-button-clicked\", ((e: CustomEvent) => {\n            const cardTarget = e.composedPath().find(x => x instanceof CardComponent);\n\n            if(cardTarget instanceof CardComponent) {\n                const entry = cardTarget.data.additional?.entry as { index?: string; textInfo?: { text?: string; heading?: string; subheading?: string } } | undefined;\n                const index = entry?.index;\n                const data = {\n                    parentLevel: cardTarget.data.click?.[\"previous-level-key\"],\n                    category: \"\",\n                    program: index,\n                    image: {\n                        programFilter: [index],\n                        activeImage: 0\n                    },\n                    textInfo: entry?.textInfo ?? {},\n                    name: cardTarget.data.txt?.title || \"\"\n                }\n                EventHandlerService.dispatch(\"open-modal\", {\n                    query: this.infoModalQuery,\n                    mask: this.infoMask,\n                    fade: false,\n                    dimmed: false,\n                    cancelable: ProgramSelectionHelper.canBeCancelled,\n                    data: data\n\n                });\n            }\n        }) as EventListener);\n    }\n\n    disconnectedCallback() {\n        document.removeEventListener(\"program-information-closed\", this.onProgramInformationClosed);\n        this.configureWithUIManuProg();\n        super.disconnectedCallback();\n    }\n\n    private async init() {\n        await WebViewerService.IsAppReady;\n        await this.fillKatalogEnvironment();\n        const loadingComponent = document.querySelector(\"fv-loading-modal\") as LoadingModalComponent;\n        loadingComponent.hide(false, true);\n    }\n\n\n    protected updated(_changedProperties: PropertyValues): void {\n        if (this._cardContainer) {\n            this._cardContainer.addEventListener('multi-level-state-changed', ((ev: Event) => {\n                const customEvent = ev as CustomEvent;\n                this.isInsideCardGroup = customEvent.detail?.isInsideGroup ?? false;\n            }) as EventListener);\n        }\n    }\n\n    protected async firstUpdated(_changedProperties: PropertyValues<this>) {\n        if (this.overrideInitialArticle) {\n            await WebViewerService.IsAppReady;\n            await CommunicationMessageService.clearScene();\n        }\n        await this.init();\n\n        await this.updateComplete;\n\n        document.addEventListener(\"program-information-closed\", this.onProgramInformationClosed);\n\n\n        window.addEventListener('language-changed', (async (ev: CustomEvent) => {\n            await this.init();\n            const level = this.selectedLevelOne\n            if (level) {\n                this.selectedLevelOne = this.katalogEnvironment.find(x => x.id === level.id) || this.selectedLevelOne;\n            }\n        }) as unknown as EventListener);\n        super.firstUpdated(_changedProperties);\n    }\n\n    private async configureWithUIManuProg() {\n        const uiManuProg = await CommunicationMessageService.getUserinterfaceManuProg();\n        if (uiManuProg && uiManuProg?.uimanu && uiManuProg?.uiprog) {\n            await ProgramSelectionHelper.Configure({\n                detail: {\n                    level: uiManuProg.uiprog,\n                },\n                closeModalQuery: this.closeModalQuery,\n                initialArticle: this.initialArticle || \"\",\n                activeStepAfterSelection: this.activeStepAfterSelection,\n                clearScene: false,\n                confirmModal: false,\n                overrideInitialArticle: this.overrideInitialArticle\n            });\n            await EventHandlerService.dispatchEventList(this.onSelectionEvents, false);\n        }\n    }\n\n    private async fillKatalogEnvironment() {\n        if (!window) return;\n        if (!window.g_article) return;\n        if (!window.g_article.manu) return;\n        this.katalogEnvironment = [];\n\n        const programs: Set<IProgramImageFilter> = new Set();\n        const levelOneParents: Set<string> = new Set();\n        const levelTree = await CommunicationMessageService.getProgramLevelTree(window.g_article.manu, true);\n\n        levelTree.level1.sort((a, b) => a.order - b.order);\n        for (const levelOne of levelTree.level1) {\n            if (levelOne.level2) {\n                levelOne.level2.sort((a, b) => a.order - b.order);\n            }\n        }\n\n        for (const levelOne of levelTree.level1) {\n            if (!levelOne.level2 && levelOne.program) {\n                programs.add({ program: levelOne.program, kataId: levelOne.id });\n                continue;\n            }\n            for (const levelTwo of levelOne.level2 || []) {\n                if (levelTwo.program) {\n                    levelOneParents.add(levelOne.id);\n                    programs.add({ program: levelTwo.program, kataId: levelTwo.id });\n                }\n            }\n        }\n\n        const onlyLevelOne: IKataTreeLevelEntry = {\n            id: \"onlyLevelOne\",\n            name: \"\",\n            level2: [],\n            program: \"\"\n        };\n\n        const pushToKataTreeList = (level: IKataTreeLevelEntry, images: { [p: string]: IProgramImage }) => {\n            if (level.level2 && level.level2.length > 0) {\n                this.katalogEnvironment.push(\n                    {\n                        id: level.id,\n                        index: level.program!,\n                        name: level.name as string,\n                        entries: level.level2.filter((level2) => {\n                            return images[level2.program] && (images[level2.program]?.images || []).length > 0;\n                        }).map((level2) => {\n                            return {\n                                id: level2.id,\n                                index: level2.program!,\n                                name: level2.name as string,\n                                entries: [],\n                                programImageFilter: [level2.program],\n                                textInfo: {\n                                    text: images[level2.program].text,\n                                    heading: images[level2.program].heading,\n                                    subheading: images[level2.program].subheading\n                                }\n                            };\n                        }),\n                        programImageFilter: [],\n                        textInfo: {\n                            text: \"\",\n                            heading: \"\",\n                            subheading: \"\"\n                        }\n                    }\n                );\n            }\n            else if (level.program && images[level.program] && onlyLevelOne.level2) {\n                onlyLevelOne.level2.push({ id: level.id, program: level.program, name: level.name });\n            }\n        };\n\n        this.levelOneImages = await ImageService.getKataLevelOneMediaImages([...levelOneParents]);\n        const programImages = await ImageService.getProgramSelectionImages([...programs]);\n        if (programImages) {\n            for (const levelOne of levelTree.level1) {\n                pushToKataTreeList(levelOne, programImages);\n            }\n            pushToKataTreeList(onlyLevelOne, programImages);\n        }\n        if (this.katalogEnvironment.length > 1) {\n            const entry = this.katalogEnvironment.find(e => e.id === \"onlyLevelOne\");\n            if (entry && entry.name == \"\") {\n                entry.name = \"collections\";\n            }\n\n            this.katalogEnvironment.sort((a, b) => {\n                if (a.id === \"onlyLevelOne\") return -1;\n                if (b.id === \"onlyLevelOne\") return 1;\n                return 0;\n            });\n        }\n        this.requestUpdate();\n    }\n\n    async openConfirmationModal(defer: IDeferHelperClass) {\n        const confirmationModal = this.querySelector(\"fv-program-selection-confirmation\") as ProgramSelectionConfirmationMaskComponent\n        confirmationModal.ResponseDefer = defer;\n        if (!confirmationModal) {\n            defer.resolve([true]);\n            return true;\n        }\n        confirmationModal.active = true;\n        const result = await defer as boolean\n        confirmationModal.active = false\n        return result;\n    }\n\n    private enableLevelOneSelection(): boolean {\n        const hasLevelOneOnlyPrograms = this.katalogEnvironment.some(entry => entry.id === \"onlyLevelOne\");\n        return hasLevelOneOnlyPrograms == false && this.levelOneSelection && this.katalogEnvironment.length > 1 && this.levelOneImages.length > 0;\n    }\n\n    private isLevelOneLevelContainer(): boolean {\n        return this.enableLevelOneSelection() && this.selectedLevelOne === undefined;\n    }\n\n    private selectedLevelOne: IKatalogLevelEntry | undefined = undefined;\n    private levelContainerClicked(level: IKatalogLevelEntry) {\n        if (this.enableLevelOneSelection()) {\n            if (!this.selectedLevelOne || this.selectedLevelOne.id != level.id) {\n                this.selectedLevelOne = level;\n                this.requestUpdate();\n            }\n        }\n    }\n\n    private overviewClicked() {\n        this.selectedLevelOne = undefined;\n        this.requestUpdate();\n    }\n\n    private getSubLevel(level: IKatalogLevelEntry) {\n        const programSelectionLevel = new ProgramSelectionLevelComponent();\n        programSelectionLevel.staticColumn = this.katalogEnvironment.length === 1 || this.selectedLevelOne !== undefined ? 0 : 2;\n        programSelectionLevel.infoButton = this.infoButtons;\n        programSelectionLevel.levelOneSelection = this.enableLevelOneSelection() && (this.selectedLevelOne != level);\n        programSelectionLevel.gridAreaPrefix = \"level\";\n        programSelectionLevel.level = level;\n        programSelectionLevel.imageZoomOnHover = this.imageZoomOnHover;\n        return programSelectionLevel;\n    }\n\n    private buildLevel(level: IKatalogLevelEntry, index?: number): TemplateResult<1> {\n        return html`\n            <div class=\"program-selection-level-container ${this.isLevelOneLevelContainer() ? \"program-selection-level-one-container\" : \"\"}\" @click=\"${() => this.levelContainerClicked(level)}\">\n                ${this.getSubLevel(level)}\n            </div>\n            ${index !== undefined && index != this.katalogEnvironment.length - 1 && this.enableLevelOneSelection() == false ? html`\n                <div class=\"level-divider-container\" style=\"grid-area: level-divider-${level.index}\">\n                    <div class=\"level-divider\"></div>\n                </div>` : html``}\n        `;\n    }\n\n    private buildLevels(catalogEnvironment: KatalogEnvironment, levelOne?: IKatalogLevelEntry) {\n        if (levelOne) {\n            return this.buildLevel(levelOne)\n        }\n        const environmentFilled = catalogEnvironment && catalogEnvironment.length > 0\n\n        if (!environmentFilled) {\n            return html`\n                <slot name=\"loader\"></slot>`\n        }\n        return catalogEnvironment.map((level, index) => {\n            if (level.entries && level.entries.length > 0) {\n                return this.buildLevel(level, index);\n            }\n        })\n    }\n\n    private buildControlsContainer(): TemplateResult<1> {\n        if (!this.selectedLevelOne) return html``\n        return html`\n            <div class=\"controls-container\">\n                <div class=\"overview button\" @click=${this.overviewClicked}>\n                    <i class=\"icon ${this.overviewIcon ? this.overviewIcon : \"fv-icon-arrow\"}\"></i>\n                    <div class=\"text\" i18n=\"program.information.overview.button\"></div>\n                </div>\n            </div>\n        `;\n    }\n\n    protected build(content: TemplateResult = html``): TemplateResult<1> {\n        return super.build(html`\n            <div class=\"selection-container\">\n                <div class=\"selection-header\">\n                    <slot name=\"before\"></slot>\n                    <div class=\"selection-title\" i18n=\"program.selection.title\"></div>\n                    <slot name=\"after\"></slot>\n                </div>\n                <div class=\"levels-outer-container\">\n                    <fv-multi-level-card-container class=\"program-selection\"  fetch-parameters=\"${JSON.stringify(this.multiFetchParams)}\"></fv-multi-level-card-container>\n                </div>\n                <div class = \"back-button-container\">\n                    ${this.buildBackButton()}\n                </div>\n                ${this.buildControlsContainer()}\n                ${content}\n            </div>\n        `);\n    }\n\n    private buildBackButton(): TemplateResult<1> {\n        return html`<fv-card-container-back-button\n            class=\"program-selection-back-button\"\n            txt=\"${LocaleService.translate(\"program.information.overview.button\")}\"\n            icon = \"fv-icon-arrow\"\n            ?hide-element=${!this.isInsideCardGroup}\n            .targets=\"${[{\n                tag: \"fv-multi-level-card-container\",\n                query: \".program-selection\",\n                \"hidden-prevents-back\": undefined,\n                \"partial-hide-limit-back-to-last\": undefined,\n                \"txt-src-prio\": undefined,\n                \"prevent-back\": undefined\n            }]}\"\n        > </fv-card-container-back-button>`;\n    }\n\n    protected render(): TemplateResult<1> {\n        return this.build(html`<slot></slot>`);\n    }\n}\n","import { BaseElement } from \"../../base/base.component\";\nimport { html, PropertyValues, PropertyValueMap, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport style from './page-controller.component.sass?inline';\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { EventHandlerService } from \"../../../../utils/event.handler.service\";\nimport { EventHandlerEvent } from \"../../../../models/event-handler/event.handler.model\";\n\n\nexport class PageControllerUpdateControllableItemCount extends CustomEvent<void> {\n    constructor() {\n        super(\"pagecontrollerupdatecontrollableitemcount\", { bubbles: true, composed: false });\n    }\n}\n\nexport interface IPageController extends Element {\n    next(): void;\n    previous(): void;\n}\n\nexport interface IPageControllableItem extends IPageController {\n    // index\n    getCount(): number;\n    getIndex(): number;\n    setIndex(index: number): void;\n\n    // viewed\n    setViewed?(index: number): void;\n    setViewedAll?(viewedAll: boolean): void;\n\n    // controls\n    showPageControls?(): boolean;\n}\n\n@customElement(\"fv-page-controller\")\nexport class PageControllerComponent extends BaseElement implements IPageController {\n\n    static styles = [super.styles || [], unsafeCSS(style)];\n\n    @query(\"slot\")\n    private _controllerSlot: HTMLSlotElement | undefined;\n\n    @property({ type: String, reflect: true, attribute: \"controls-icon\" })\n    private controlsIconName = \"fv-icon-arrow-left\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"use-buttons\" })\n    private useButtons = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"custom-next-button\" })\n    private customNextButton = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"custom-previous-button\" })\n    private customPreviousButton = false;\n\n    @property({ type: Object, reflect: true, attribute: \"events\" })\n    public events: {\n        \"custom-next\"?: Array<EventHandlerEvent>,\n        \"custom-previous\"?: Array<EventHandlerEvent>\n    } = {};\n\n    private _viewedPages: Set<number> = new Set();\n\n    constructor() {\n        super();\n\n        let _this = this;\n        this.addEventListener(\"triggernextpage\", async ()=>{\n            await _this.updateComplete;\n            _this.next();\n        });\n        this.addEventListener(\"triggerpreviouspage\", async ()=>{\n            await _this.updateComplete;\n            _this.previous();\n        });\n    }\n\n    private async onCustomNext(): Promise<void> {\n        if (this.events[\"custom-next\"]) {\n            await EventHandlerService.dispatchEventList(this.events[\"custom-next\"], false);\n        }\n    }\n\n    private async onCustomPrevious(): Promise<void> {\n        if (this.events[\"custom-previous\"]) {\n            await EventHandlerService.dispatchEventList(this.events[\"custom-previous\"], false);\n        }\n    }\n\n    public get CustomNextButton(): boolean {\n        const events = this.events[\"custom-next\"];\n        return this.customNextButton && events !== undefined && events.length > 0;\n    }\n\n    public get CustomPreviousButton(): boolean {\n        const events = this.events[\"custom-previous\"];\n        return this.customPreviousButton && events !== undefined && events.length > 0;\n    }\n\n    public get Items(): IPageControllableItem[] {\n        const children = Array.from(this._controllerSlot?.assignedElements() || []);\n        return children.filter(this.isControllable);\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues<this>) {\n        super.firstUpdated(_changedProperties);\n        this.addEventListener(\"pagecontrollerupdatecontrollableitemcount\", () => {\n            this.requestUpdate();\n        });\n    }\n\n    protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n        super.updated(_changedProperties);\n\n        if (this.Items.length == 1) {\n            const child = this.Items[0];\n            const numPagesViewed = this._viewedPages.size;\n            const numPagesTotal = child.getCount();\n            child.setViewedAll?.(numPagesViewed === numPagesTotal);\n        }\n    }\n\n    private buildPageWithIcons(): TemplateResult<1> {\n        const { next, previous } = this.getClasses();\n        return html`\n            <fv-icon\n                @click=${previous.custom ? this.onCustomPrevious : this.previous}\n                icon=\"${this.controlsIconName}\"\n                class=\"${classMap(previous)}\">\n            </fv-icon>\n            <slot></slot>\n            <fv-icon\n                @click=${next.custom ? this.onCustomNext : this.next}\n                icon=\"${this.controlsIconName}\"\n                class=\"${classMap(next)}\">\n            </fv-icon>\n        `\n    }\n\n    private buildPageWithButtons(): TemplateResult<1> {\n        const { next, previous } = this.getClasses();\n        return html`\n            <div class=\"page-container\">\n                <div class=\"content-container page-item\">\n                    <div class=\"content-wrapper\">\n                        <slot></slot>\n                    </div>\n                </div>\n                <div class=\"controls-container page-item\">\n                    <fv-button\n                        class=\"previous button text bordered ${classMap(previous)}\"\n                        i18n=\"114\"\n                        @click=${previous.custom ? this.onCustomPrevious : this.previous}\n                        icon=\"fv-icon-arrow\">\n                    </fv-button>\n                    <fv-button\n                        class=\"next button text bordered ${classMap(next)}\"\n                        i18n=\"fv.button.next\"\n                        @click=${next.custom ? this.onCustomNext : this.next}\n                        icon=\"fv-icon-arrow mirrored-x\">\n                    </fv-button>\n                </div>\n            </div>\n        `;\n    }\n\n    protected render(): TemplateResult<1> {\n        return this.useButtons ? this.buildPageWithButtons() : this.buildPageWithIcons();\n    }\n\n    isControllable(element: Element): element is IPageControllableItem {\n        const castObj = (<IPageControllableItem>element);\n        return castObj.next !== undefined && castObj.previous !== undefined;\n    }\n\n    next(): void {\n        this.Items.forEach(x => x.next());\n        this.requestUpdate();\n    }\n\n    previous(): void {\n        this.Items.forEach(x => x.previous());\n        this.requestUpdate();\n    }\n\n    setViewed(index: number): void {\n        this._viewedPages.add(index);\n    }\n\n    getClasses(): { next: any, previous: any } {\n        const data = {\n            previous: {\n                hidden: true,\n                custom: false\n            },\n            next: {\n                flip: !this.useButtons,\n                hidden: true,\n                custom: false\n            }\n        }\n\n        if (this.Items.length == 1) {\n            const child = this.Items[0];\n\n            const activeIndex = child.getIndex();\n            this.setViewed(activeIndex);\n            child.setViewed?.(activeIndex);\n\n            const showControls = child.showPageControls?.();\n            if (showControls !== false) {\n                data.previous.hidden = child.getIndex() <= 0 || child.getCount() === 0\n                data.next.hidden = child.getIndex() >= child.getCount() - 1 && child.getCount() !== 0\n            }\n            else {\n                data.previous.hidden = true;\n                data.next.hidden = true;\n            }\n        }\n        else if (this.Items.length > 0) {\n            data.previous.hidden = this.Items.every(child => child.getIndex() < 0 && child.getCount() != 0);\n            data.next.hidden = this.Items.every(child => child.getIndex() > child.getCount() - 1);\n        }\n        else {\n            data.next.hidden = true\n        }\n\n        if (data.next.hidden && this.CustomNextButton) {\n            data.next.custom = true;\n        }\n        if (data.previous.hidden && this.CustomPreviousButton) {\n            data.previous.custom = true;\n        }\n\n        return data;\n    }\n}\n","import { BaseElement } from \"../base/base.component\";\nimport { css, html, PropertyDeclaration, PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./image.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { ImageService, IMediaImage } from \"../../../utils/image.service\";\nimport { IPageControllableItem, PageControllerUpdateControllableItemCount } from \"../arrange/page/page-controller.component\"\n\n@customElement(\"fv-image\")\nexport class ImageComponent extends BaseElement implements IPageControllableItem {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Array, reflect: true })\n    programFilter: string[] = [];\n\n    @property({ type: Number, reflect: true })\n    activeIndex: number;\n\n    @property({ type: String, reflect: true })\n    imageType = \"milieu\";\n\n    @property({ type: String, reflect: true })\n    kataId: string = \"\";\n\n    public _imagePreloadedSources: Array<IMediaImage> = [];\n\n    constructor() {\n        super();\n        this.activeIndex = 0;\n    }\n\n    async preloadedImageCollection() {\n        const programFilters = this.programFilter.map(program => ({ program: program, kataId: this.kataId }));\n        this._imagePreloadedSources = await ImageService.getProgramMediaImages(programFilters, this.imageType);\n        if (this._imagePreloadedSources.length === 0) {\n            this._imagePreloadedSources = await ImageService.getKataLevelOneMediaImages([this.kataId]);\n        }\n        this.dispatchEvent(new PageControllerUpdateControllableItemCount());\n    }\n\n    protected async firstUpdated(_changedProperties: PropertyValues) {\n        await this.preloadedImageCollection();\n        super.firstUpdated(_changedProperties);\n    }\n\n    async scheduleUpdate() {\n        await this.preloadedImageCollection();\n        return super.scheduleUpdate();\n    }\n\n    protected render() {\n        this.activeIndex = Math.min(Math.max(this.activeIndex, 0), this._imagePreloadedSources.length - 1);\n        return html`\n            <div style=\"${!this.classList.contains(\"use-img\") ? `background-image: url(${this._imagePreloadedSources[this.activeIndex]?.url});` : \"\"}\">\n                ${this.classList.contains(\"use-img\") ? html`<img src=\"${this._imagePreloadedSources[this.activeIndex]?.url}\"/>` : \"\"}\n            </div>\n        `;\n    }\n\n    // IPageControllableItem\n\n    getCount(): number {\n        return this._imagePreloadedSources.length;\n    }\n\n    getIndex(): number {\n        return this.activeIndex;\n    }\n\n    setIndex(index: number) {\n        this.activeIndex = index;\n    }\n\n    next() {\n        this.activeIndex++;\n    }\n\n    previous() {\n        this.activeIndex--;\n    }\n}\n","import { BaseElement } from \"../base/base.component\";\nimport { css, html, PropertyDeclaration, PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./logo.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\nexport interface LogoEntry {\n    lang: string,\n    srcImg: string\n}\n\n@customElement(\"fv-logo\")\nexport class LogoComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Array, reflect: true, attribute: \"logos\" })\n    public logos?: LogoEntry[]\n\n    @property({ type: String, reflect: true, attribute: \"fallback-language\" })\n    public fallbackLanguage = \"de\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"use-pricelist-logo\" })\n    public usePriceListLogo = false;\n\n    private _priceListImage = \"\";\n\n    constructor() {\n        super();\n    }\n\n    private async fetchPriceListImageUrl() {\n        if (this.usePriceListLogo) {\n            const manu = window.g_article.manu.toLowerCase();\n            const prog = window.g_article.prog.toLowerCase();\n\n            let logoFileName = manu + \"_logo.gif\"; // fallback fp manufacturer image\n            const priceReferenceLogo = await CommunicationMessageService.getManufacturerLogoNameFromPriceReference(manu, prog);\n            if (priceReferenceLogo !== undefined && priceReferenceLogo?.LogoFileName) {\n                logoFileName = priceReferenceLogo.LogoFileName;\n            }\n\n            const imgSrc = await CommunicationMessageService.getMediaUrl(window.g_article.manu.toLowerCase(), \"\", \"logo_custom\", logoFileName, true, false);\n            this._priceListImage = imgSrc;\n        }\n    }\n\n    private getUserLanguage() {\n        const url = new URL(window.location.href);\n        const language = url.searchParams.has(\"lang\") ? url.searchParams.get(\"lang\") : this.fallbackLanguage;\n        return language;\n    }\n\n    private getLogoPath() {\n        if (this.usePriceListLogo) {\n            return this._priceListImage;\n        }\n        const userLang = this.getUserLanguage();\n        const logoEntry = this.logos?.find(logo => logo.lang === userLang);\n        const logoFallback = this.logos?.find(logo => logo.lang === this.fallbackLanguage);\n        const imgSrc = logoEntry ? logoEntry.srcImg : logoFallback ? logoFallback.srcImg : '';\n        return imgSrc;\n    }\n\n    private renderLogoImage() {\n        const imgPath = this.getLogoPath();\n        return imgPath ? html`\n            <div class=\"logo\">\n                <img class=\"logo-image\" src=\"${this.getLogoPath()}\"/>\n            </div>\n        ` : html``;\n    }\n\n    protected async firstUpdated(_changedProperties: PropertyValues) {\n        await this.fetchPriceListImageUrl();\n        super.firstUpdated(_changedProperties);\n    }\n\n    async requestUpdate(name?: PropertyKey, oldValue?: unknown, options?: PropertyDeclaration) {\n        await this.fetchPriceListImageUrl();\n        super.requestUpdate(name, oldValue, options);\n    }\n\n    protected render() {\n        return this.renderLogoImage();\n    }\n}\n","import {BaseElement} from \"../base/base.component\";\nimport {html, nothing, PropertyValues, unsafeCSS} from \"lit\";\nimport {CommunicationMessageService, EventHandler, EventService} from \"@dh-software/webui-api\";\nimport {ISetManuProgData, ManuProgService} from \"../../../utils/manu-prog.service\";\nimport {customElement, property, state} from \"lit/decorators.js\";\nimport style from './program-image.component.sass?inline'\n\n@customElement(\"fv-program-image\")\nexport class ProgramImageComponent extends BaseElement {\n\n    static styles = [super.styles || [], unsafeCSS(style)];\n\n    @state()\n    private _logoURL: string = \"\";\n\n    connectedCallback() {\n        EventService.register(this);\n        super.connectedCallback();\n    }\n\n    disconnectedCallback() {\n        super.disconnectedCallback();\n        EventService.unregister(this);\n    }\n\n    protected async firstUpdated(_changedProperties: PropertyValues) {\n        const manu = await ManuProgService.getManufacturer();\n        const prog = await ManuProgService.getProgram();\n        await this.fetchLogoURL(manu, prog);\n        super.firstUpdated(_changedProperties);\n    }\n\n    private async fetchLogoURL(newManu: string, newProgram: string) {\n        const progImageResponse = await CommunicationMessageService.getPrintLogoPath(newManu, newProgram, newManu);\n        if (progImageResponse) {\n            this._logoURL = `${window.g_node_url_prefix}${progImageResponse.imgPath}`;\n        }\n    }\n\n    @EventHandler(\"set-manu-prog\")\n    private async onManuProgChanged(data: ISetManuProgData) {\n        this.fetchLogoURL(data.manu, data.prog);\n    }\n\n    render() {\n        if (!this._logoURL) {\n            return nothing\n        }\n        return html`\n            <img src=\"${this._logoURL}\">\n        `\n    }\n\n}\n","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup, PropertyValues } from \"lit\";\nimport style from \"./program-information.component.sass?inline\";\nimport { BaseMaskElement } from \"../base/mask.component\";\nimport { property, customElement, state } from \"lit/decorators.js\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\nimport { LoadingModalComponent } from \"../loading\";\nimport { ProgramInformationComponentImg } from \"./program-information-img.component\";\nimport { StyleHelper } from \"../../../utils/style.helper\";\nimport { ImageComponent } from \"../image\";\nimport { ProgramSelectionHelper } from \"../../../utils/program-selection.helper\";\nimport { ManuProgService } from \"../../../utils/manu-prog.service\";\n\ninterface ImageDescriptor {\n    programFilter: string[];\n    activeImageIndex: number;\n    imageType?: string;\n}\n\ntype TextInfoType = { text?: string, heading?: string, subheading?: string }\n\n@customElement(\"fv-program-information\")\nexport class ProgramInformationComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @state()\n    public mask = \"program-information\";\n\n    public initialArticle = \"\";\n\n    @property({ type: String, reflect: true, attribute: \"overview-icon\" })\n    private overviewIcon = \"\";\n    @property({ type: String, reflect: true, attribute: \"configure-icon\" })\n    private configureIcon = \"\";\n    @property({ type: String, reflect: true, attribute: \"parent-modal-query\" })\n    private parentModalQuery = \".general-modal\";\n    @property({ type: String, reflect: true, attribute: \"program-selection-modal-query\" })\n    private programSelectionModalQuery = \".general-modal\";\n    @property({ type: Boolean, reflect: true, attribute: \"auto-detect-grid-rows-and-areas\" })\n    private autoDetectGridRowsAndAreas = false;\n    @property({ type: Boolean, reflect: true, attribute: \"use-image-controller\" })\n    private useImageController = true;\n\n    private get program(): string {\n        const program = (this.maskData as { [key: string]: unknown })[\"program\"];\n        if (program && typeof program === \"string\") {\n            return program as string;\n        }\n        return \"\";\n    }\n\n    private get category(): string {\n        const category = (this.maskData as { [key: string]: unknown })[\"category\"];\n        if (category && typeof category === \"string\") {\n            return category as string;\n        }\n        return \"\";\n    }\n\n    private get parentLevel(): string {\n        const parentLevel = (this.maskData as { [key: string]: unknown })[\"parentLevel\"];\n        if (parentLevel && typeof parentLevel === \"string\") {\n            return parentLevel as string;\n        }\n        return \"\";\n    }\n\n    private get image(): ImageDescriptor {\n        const image = (this.maskData as { [key: string]: unknown })[\"image\"];\n        if (image && typeof image === \"object\") {\n            return image as ImageDescriptor;\n        }\n        return { programFilter: [], activeImageIndex: 0 };\n    }\n\n    private get textInfo(): TextInfoType {\n        const textInfo = (this.maskData as { [key: string]: unknown })[\"textInfo\"];\n        if (textInfo) {\n            return textInfo as { text?: string, heading?: string, subheading?: string };\n        }\n        return {};\n    }\n\n    private async overview() {\n        EventHandlerService.dispatch(\"open-modal\", {\n            query: this.programSelectionModalQuery,\n            mask: \"program-selection\",\n            fade: false,\n            dimmed: false,\n            cancelable: ProgramSelectionHelper.canBeCancelled\n        });\n\n        this.dispatchClosed();\n\n    }\n\n    private async configure() {\n        await ProgramSelectionHelper.Configure({\n            detail: {\n                category: this.category,\n                level: this.program,\n                parentLevel: this.parentLevel\n            },\n            closeModalQuery: this.parentModalQuery,\n            confirmModal: true,\n            initialArticle: this.initialArticle || \"\",\n            clearScene: true,\n            activeStepAfterSelection: 0,\n            overrideInitialArticle: true\n        })\n    }\n\n    private dispatchClosed(){\n        this.dispatchEvent(new CustomEvent(\"program-information-closed\", {\n            bubbles: true,\n            composed: true\n        }));\n    }\n\n    constructor() {\n        super();\n    }\n\n    private createProgramInformationImage(controller: boolean) {\n        const programInformationImage = new ImageComponent();\n\n        programInformationImage.classList.add(\"fill-height\", \"use-img\", \"single\");\n\n\n        programInformationImage.programFilter = this.image?.programFilter || [];\n        programInformationImage.activeIndex = this.image.activeImageIndex || 0;\n        programInformationImage.imageType = this.image?.imageType || \"milieu\";\n\n        if (controller) {\n            return html`\n                <fv-page-controller class=\"fill-height\">\n                    ${programInformationImage}\n                </fv-page-controller>\n            `\n        }\n        return programInformationImage;\n    }\n\n\n    private get HeadingHTML(): TemplateResult<1> {\n        if (this.textInfo && this.textInfo.heading && this.textInfo.heading.length > 0) {\n            return html`<div class=\"title information-item\">${this.textInfo.heading}</div>`;\n        }\n        if (this.maskData && this.maskData.name && (this.maskData.name as string).length > 0) {\n            return html`<div class=\"title information-item\">${this.maskData.name}</div>`;\n        }\n        return html``;\n    }\n    private CreateTxtHtml(txt: string | undefined, classString?: string): TemplateResult<1> {\n        if (txt != undefined && txt.length > 0) {\n            return html`<div class=\"${classString != undefined ? classString : \"\"}\">${txt}</div>`;\n        }\n        return html``;\n    }\n\n    private AreasData: { [key: string]: { style: string, conditions?: { txtInfo?: string, maskData?: string } } } = {\n        \"title\": { style: \"auto\", conditions: { txtInfo: \"heading\", maskData: \"name\" } },\n        \"sub-title\": { style: \"auto\", conditions: { txtInfo: \"subheading\" } },\n        \"text\": { style: \"auto\", conditions: { txtInfo: \"text\" } },\n        \"img-container\": { style: \"1fr\" },\n        \"controls-container\": { style: \"auto\" }\n    }\n\n    show(showModal_?: boolean) {\n        super.show(showModal_);\n    }\n\n    protected build(content: TemplateResult = html``) {\n        if (this.autoDetectGridRowsAndAreas) {\n            const checkConditions = (conditions?: { txtInfo?: string, maskData?: string }) => {\n                if (conditions == undefined) return false;\n\n                if (conditions.txtInfo && conditions.txtInfo.length > 0) {\n                    const txtInfoValue = (this.textInfo as { [key: string]: \"\" | undefined })[conditions.txtInfo];\n                    if (txtInfoValue != undefined && txtInfoValue.length > 0) {\n                        return true;\n                    }\n                }\n                if (conditions.maskData) {\n                    const msakDataValue = (this.maskData as { [key: string]: \"\" | undefined })[conditions.maskData];\n                    if (msakDataValue != undefined && msakDataValue.length > 0) {\n                        return true;\n                    }\n                }\n                return false;\n            };\n\n            const areas = new Array<string>();\n            const rows = new Array<string>();\n            const areaNames = Object.keys(this.AreasData);\n            for (let index = 0; index < areaNames.length; ++index) {\n                const name = areaNames[index];\n                const area = this.AreasData[name];\n                const noConditions = area.conditions == undefined;\n                const areaConditionApplies = noConditions ? false : checkConditions(area.conditions);\n                if (noConditions || areaConditionApplies) {\n                    areas.push(name);\n                    rows.push(area.style);\n                }\n            }\n            this.style.setProperty(\"--information-container-grid-auto-areas\", \"\\\"\" + areas.join(\"\\\" \\\"\") + \"\\\"\");\n            this.style.setProperty(\"--information-container-grid-auto-rows\", rows.join(\" \"));\n        }\n        else {\n            this.style.removeProperty(\"--information-container-grid-auto-areas\");\n            this.style.removeProperty(\"--information-container-grid-auto-rows\");\n        }\n\n        return super.build(html`\n            <div class=\"information-container\">\n                ${this.HeadingHTML}\n                ${this.CreateTxtHtml(this.textInfo.subheading, \"sub-title information-item\")}\n                ${this.CreateTxtHtml(this.textInfo.text, \"text information-item\")}\n                <div class=\"img-container information-item\">\n                    ${this.createProgramInformationImage(this.useImageController)}\n                </div>\n                <div class=\"controls-container information-item\">\n                    <fv-button\n                        class=\"overview button text bordered\"\n                        i18n=\"program.information.overview.button\"\n                        @click=${this.overview}\n                        icon=${this.overviewIcon ? this.overviewIcon : \"fv-icon-arrow\"}>\n                    </fv-button>\n                    <fv-button\n                        class=\"configure button text bordered\"\n                        i18n=\"program.information.configure.button\"\n                        @click=${this.configure}\n                        icon=${this.overviewIcon ? this.configureIcon : \"\"}>\n                            ${StyleHelper.getVar(this, \"--open-planning-image\") ? html`\n                                <img src=\"${StyleHelper.getVar(this, \"--open-planning-image\")}\"/>` : html``\n                            }\n                    </fv-button>\n                </div>\n                ${content}\n            </div>\n        `);\n    }\n\n    protected render(): TemplateResult<1> {\n        return this.build(html`<slot></slot>`);\n    }\n}\n","\nimport { html, css, unsafeCSS, TemplateResult, CSSResultGroup } from \"lit\";\nimport style from \"./program-information-img.component.sass?inline\";\nimport { property, customElement } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-program-information-img\")\nexport class ProgramInformationComponentImg extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    //private activeImageIndex = 0;\n\n\n    private url = \"\";\n    public async setImage(image: string) {\n        this.url = image;\n        this.requestUpdate();\n    }\n\n    constructor() {\n        super();\n    }\n\n    protected render(): TemplateResult<1> {\n        return html`<img class=\"img\" src=\"${this.url}\">`;\n    }\n}\n","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup } from \"lit\";\nimport { property, customElement } from \"lit/decorators.js\";\nimport { ConfiguratorFormBase, FormElementInfo, FormElementsWrapper } from \"./configurator.form.base\"\nimport style from \"./configurator.form.component.sass?inline\";\nimport { IConfiguratorApiData, IConfiguratorApiDataGroup, IConfiguratorApiDataGroupParams, IConfiguratorApiValueModification } from \"@dh-software/webui-types\";\nimport { ConfiguratorApiDataService } from \"../../utils/configurator-api.data.service\";\nimport { SceneHelperService } from \"../../utils/scene-helper.service\";\nimport { EventHandlerDispatchEvent } from \"../../models/event-handler/event.handler.model\";\nimport { SceneButtonPage } from \"../standard/arrange\";\n\n\n@customElement(\"fv-configurator-form\")\nexport class ConfiguratorFormComponent extends ConfiguratorFormBase {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n\n\n    //                                   _   _           \n    //   _ __  _ __ ___  _ __   ___ _ __| |_(_) ___  ___ \n    //  | '_ \\| '__/ _ \\| '_ \\ / _ \\ '__| __| |/ _ \\/ __|\n    //  | |_) | | | (_) | |_) |  __/ |  | |_| |  __/\\__ \\\n    //  | .__/|_|  \\___/| .__/ \\___|_|   \\__|_|\\___||___/\n    //  |_|             |_|                              \n    @property({ type: Array, reflect: false, attribute: \"form-elements\" })\n    public formElements: Array<FormElementInfo | FormElementsWrapper> = [];\n\n    @property({ type: Object, reflect: true, attribute: \"configurator-title\" })\n    public configuratorTitle: {\n        default?: string | undefined,\n        specific?: { [key: string]: string | undefined } | undefined\n    } = {};\n\n    @property({ type: Boolean, reflect: true, attribute: \"number-group-titles\" })\n    public numberGroupTitles = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"number-wrapper-titles\" })\n    public numberWrapperTitles = false;\n\n    @property({ type: Array, reflect: true, attribute: \"groups-to-skip-numbering\" })\n    public groupsToSkipNumbering: Array<string> = [];\n\n    @property({ type: Array, reflect: true, attribute: \"groups-to-ignore\" })\n    public groupsToIgnore = new Array<string>();\n\n    @property({ type: Boolean, reflect: true, attribute: \"group-title-toggles-start-closed\" })\n    public groupTitleTogglesStartClosed = false;\n\n    // @property({ type: Boolean, reflect: true, attribute: \"form-elements-wrapper-toggles-start-closed\" }) // PH removed for now. looks like this was not used.\n    // public formElementWrapperTogglesStartClosed = false;\n\n    @property({ type: String, reflect: true, attribute: \"group-title-toggle-open-icon\" })\n    public groupTitleToggleOpenIcon = \"fv-icon-eye-2\";\n\n    @property({ type: String, reflect: true, attribute: \"group-title-toggle-closed-icon\" })\n    public groupTitleToggleClosedIcon = \"fv-icon-eye-closed\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"highlight-element-on-group-form-edit\" })\n    public highlightElementOnGroupFormEdit = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"hide-empty\" })\n    public hideEmpty = false;\n\n\n    private createGroupNumberingText(group_: string, numberedGroups_: string[]): string | undefined {\n        if (!this.numberGroupTitles && this.groupsToSkipNumbering.includes(group_)) {\n            return undefined;\n        }\n        const groupIndex = numberedGroups_.indexOf(group_);\n        if (groupIndex < 0) {\n            return undefined;\n        }\n        return \" \" + (groupIndex + 1).toFixed(0);\n    }\n\n    private createTitleText(group_: string, numberedGroups_: string[]): string | undefined {\n        const titleSuffix = this.createGroupNumberingText(group_, numberedGroups_);\n        const specificEntry = this.configuratorTitle?.specific?.[group_];\n        if (specificEntry != undefined) {\n            if (specificEntry.length < 1) {\n                return undefined;\n            }\n            return specificEntry + titleSuffix;\n        }\n        if (this.configuratorTitle?.default && titleSuffix) {\n            return this.configuratorTitle.default + titleSuffix;\n        }\n        if (this.configuratorTitle.default == undefined || this.configuratorTitle.default?.length < 1) {\n            return undefined;\n        }\n        return this.configuratorTitle.default;\n    }\n    private createConfiguratorTitle(group_: string, numberedGroups_: string[]): TemplateResult<1> {\n        if (this.groupTitleToggles) {\n            return html``;\n        }\n\n        const titleText = this.createTitleText(group_, numberedGroups_);\n        if (titleText == undefined) {\n            return html``;\n        }\n\n        return html`\n            <fv-label class=\"custom form-title form-title-${group_}\">${titleText}</fv-label>\n        `;\n    }\n\n\n    private createGroup(group_: string, numberedGroups_: string[], index_: number): TemplateResult | undefined {\n        if (this.groupsToIgnore.includes(group_)) {\n            return undefined;\n        }\n\n        const tag = this.listTags[group_] || this.listTags[\"default\"] || \"fv-configurator-form-element-list\";\n        const attributes = this.listProperties[group_] || this.listProperties[\"default\"] || { \"form-elements\": this.formElements };\n        const element = ConfiguratorFormBase.CreateElement({\n            tag: tag,\n            name: group_,\n            attributes: attributes\n        }, group_, this, \"\");\n\n        if (!element.WillRenderChildren(this.formElements, this.listTags, this.elementNamePrefix)) {\n            return undefined;\n        }\n\n        // add highlighting event\n        if (this.highlightElementOnGroupFormEdit) {\n            element.setAttribute(\"highlight-element-while-editing\", \"\");\n        }\n        else {\n            element.removeAttribute(\"highlight-element-while-editing\");\n        }\n\n        // set title as toggle button\n        if (this.groupTitleToggles) {\n            const title = this.createTitleText(group_, numberedGroups_);\n            if (title != undefined) {\n                element.setAttribute(\"toggle-button\", title);\n                if (!this.groupTitleTogglesStartClosed) {\n                    element.setAttribute(\"toggle-starts-opened\", \"\");\n                }\n                else {\n                    element.removeAttribute(\"toggle-starts-opened\");\n                }\n                if (this.groupTitleToggleOpenIcon.length > 0 || this.groupTitleToggleClosedIcon.length > 0) {\n                    element.setAttribute(\"show-toggle-button-arrow\", \"\");// TODO PH add custom icon!\n                }\n                else {\n                    element.removeAttribute(\"show-toggle-button-arrow\");\n                }\n            }\n        }\n\n        if (this.numberWrapperTitles) {\n            element.setAttribute(\"group-number-txt\", index_.toString());\n        }\n\n        return html`\n            ${this.createConfiguratorTitle(group_, numberedGroups_)}\n            <div class=\"group-container\">\n                ${element}\n            </div>\n        `;\n    }\n\n\n    //                       _                   _             \n    //    ___ ___  _ __  ___| |_ _ __ _   _  ___| |_ ___  _ __ \n    //   / __/ _ \\| '_ \\/ __| __| '__| | | |/ __| __/ _ \\| '__|\n    //  | (_| (_) | | | \\__ \\ |_| |  | |_| | (__| || (_) | |   \n    //   \\___\\___/|_| |_|___/\\__|_|   \\__,_|\\___|\\__\\___/|_|   \n    constructor() {\n        super();\n\n        this.addEventListener(\"configurator-form-update-highlight\", async (event: CustomEventInit) => {\n            if (this.highlightElementOnGroupFormEdit && event.detail?.ii) {\n                await SceneHelperService.updateHighlightBox(event.detail.ii);\n            }\n        });\n\n        this.addEventListener(\"openscenebuttonpage\", async (e: CustomEventInit) => {\n            if (e.detail) {\n                window.dispatchEvent(new EventHandlerDispatchEvent({\n                    async: false,\n                    events: [e.detail.value]\n                }));\n            }\n        });\n\n        this.addEventListener(\"closescenebuttonpage\", async (e: CustomEventInit) => {\n            if (e.detail) {\n                const detail = e.detail as {\n                    page: SceneButtonPage\n                    owners: Array<string>,\n                    value: IConfiguratorApiValueModification\n                };\n\n                for (const group of detail.owners) {\n                    await ConfiguratorApiDataService.Set([{\n                        name: group,\n                        modifications: [detail.value as IConfiguratorApiValueModification]\n                    }], this.preventRegenAll);\n                }\n            }\n        });\n    }\n\n\n    //                      _           \n    //   _ __ ___ _ __   __| | ___ _ __ \n    //  | '__/ _ \\ '_ \\ / _` |/ _ \\ '__|\n    //  | | |  __/ | | | (_| |  __/ |   \n    //  |_|  \\___|_| |_|\\__,_|\\___|_|   \n    private _nonEmptyHideState: undefined | boolean = undefined;\n    protected renderComplete(result: IConfiguratorApiData | undefined, renderResult: TemplateResult<1> | undefined): TemplateResult<1> {\n        if (result == undefined) {\n            return super.renderComplete(result, renderResult);\n        }\n\n        const numberedGroups: string[] = [];\n        if (this.numberGroupTitles) {\n            for (const group of ConfiguratorApiDataService.Groups) {\n                if (this.groupsToIgnore.includes(group)) continue;\n                if (!this.groupsToSkipNumbering.includes(group)) {\n                    numberedGroups.push(group);\n                }\n            }\n        }\n\n        let index = 1;\n        const templateResults: TemplateResult[] = [];\n        for (const group of ConfiguratorApiDataService.Groups) {\n            const templateResult = this.createGroup(group, numberedGroups, index);\n            if (templateResult != undefined) {\n                templateResults.push(templateResult);\n                ++index;\n            }\n        }\n\n        if (this.hideEmpty && templateResults.length < 1) {\n            if (this._nonEmptyHideState == undefined) {\n                this._nonEmptyHideState = this.hideElement;\n            }\n            this.hideElement = true;\n        }\n        else if (this._nonEmptyHideState !== undefined) {\n            this.hideElement = this._nonEmptyHideState;\n            this._nonEmptyHideState = undefined;\n        }\n        return super.renderComplete(result, html`${templateResults}`);\n    }\n\n}","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup } from \"lit\";\nimport { property, customElement } from \"lit/decorators.js\";\nimport style from \"./configurator.form.page.component.sass?inline\"\nimport { ConfiguratorApiDataService } from \"../../utils/configurator-api.data.service\";\nimport { ConfiguratorFormBase } from \"./configurator.form.base\"\nimport { IConfiguratorApiDataGroupParams, IConfiguratorApiDataValue, IConfiguratorApiDataGroup } from \"@dh-software/webui-types\"\nimport { MediaService } from \"../../utils/media.service\";\nimport { PageControllerUpdateControllableItemCount, IPageControllableItem } from \"../standard/arrange/page/page-controller.component\"\nimport type { ComponentStateHandlerMap } from \"../../models/event-handler/component-state-event\";\n\ndeclare global {\n    interface ComponentStates {\n        \"fv-configurator-form-page:open-view-mode\": { checkViewed?: boolean };\n    }\n}\n\nexport enum EConfiguratorFormPageViewMode {\n    MODE_PAGINATION = 0,\n    MODE_OVERVIEW = 1,\n}\n\n@customElement(\"fv-configurator-form-page\")\nexport class ConfiguratorFormPageComponent extends ConfiguratorFormBase implements IPageControllableItem {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private _activeIndex = 0;\n    @property({ type: Number, reflect: true })\n    public get activeIndex(): number {\n        return this._activeIndex;\n    }\n    public set activeIndex(index: number) {\n        const old = this._activeIndex;\n        this._activeIndex = index;\n        this.requestUpdate('activeIndex', old);\n\n        const groupName = this._groupsToDisplay[index];\n        const children = ConfiguratorApiDataService.GetGroupValuesCount(groupName, \"\", groupName);\n        if (children < 1) {\n            this.updateComplete.then(()=>{\n                if (old < index) {\n                    this.dispatchEvent(new CustomEvent(\"triggernextpage\", { bubbles: true }));\n                }\n                else {\n                    this.dispatchEvent(new CustomEvent(\"triggerpreviouspage\", { bubbles: true }));\n                }\n            });\n        }\n    }\n\n    // @property({ type: Number, reflect: true })\n    // public activeIndex = 0;\n\n    @property({ type: Array, reflect: true, attribute: \"group-names\" })\n    public groupNames: Array<string> = [];\n\n    @property({ type: Number, reflect: true, attribute: \"view-mode\" })\n    public viewMode = EConfiguratorFormPageViewMode.MODE_PAGINATION;\n\n    private _prevPageCount: number = 0;\n    private _groupsToDisplay: Array<string> = [];\n\n    public _viewedAll = false;\n    public _pageControls = true;\n\n    // Spread the inherited (ConfiguratorFormBase) handlers so they are not shadowed.\n    stateHandlers: ComponentStateHandlerMap = {\n        ...this.stateHandlers,\n        \"fv-configurator-form-page:open-view-mode\": (data) => { this.openOverview(data); },\n    };\n\n    constructor() {\n        super();\n\n        // Backwards-compat: still answer a direct DOM CustomEvent dispatch.\n        this.addEventListener(\"configuratorformpageopenoverview\", (ev: CustomEventInit): void => {\n            this.openOverview(ev?.detail);\n        });\n    }\n\n    private openOverview(data?: { checkViewed?: boolean }): void {\n        if (data?.checkViewed && this._viewedAll !== true) {\n            return;\n        }\n\n        this._pageControls = false; // no buttons to click through the pages\n        this.updatePageCount();\n        this.viewMode = EConfiguratorFormPageViewMode.MODE_OVERVIEW;\n    }\n\n    private updatePageCount(): void {\n        this.dispatchEvent(new PageControllerUpdateControllableItemCount());\n    }\n\n    protected willUpdate(changedProperties: Map<string, unknown>): void {\n        super.willUpdate(changedProperties);\n\n        this._groupsToDisplay = this.groupNames.length > 0 ? this.groupNames : ConfiguratorApiDataService.Groups\n\n        if (this._prevPageCount != this._groupsToDisplay.length) {\n            this._prevPageCount = this._groupsToDisplay.length;\n            this.updatePageCount();\n        }\n    }\n\n    private openPageByGroupName(targetGroupName_: string) {\n        const targetIndex = this._groupsToDisplay.indexOf(targetGroupName_);\n        if (targetIndex !== -1) {\n            this.activeIndex = targetIndex;\n            this.viewMode = EConfiguratorFormPageViewMode.MODE_PAGINATION; // switch back to pagination\n        }\n    }\n\n    private getOverviewGroupImage(targetGroupName_: string): string {\n        const data = ConfiguratorApiDataService.Data;\n        const groupData = ConfiguratorApiDataService.GetGroup(targetGroupName_, data) as IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams;\n\n        let groupImage = groupData?.image;\n        if (groupImage === undefined) {\n            ConfiguratorApiDataService.ForEachRecursive(groupData as IConfiguratorApiDataGroup, (valueOrGroup_: IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams, name_: string) => {\n                if (valueOrGroup_?.image) {\n                    groupImage = valueOrGroup_.image;\n                    return true;\n                }\n\n                const elementData = valueOrGroup_ as IConfiguratorApiDataValue;\n                const optionsImages = elementData[\"options-images\"];\n\n                if (optionsImages && optionsImages.length > 0) {\n                    const optionImage = optionsImages.find(value => value.option == elementData.active) || optionsImages[0];\n                    if (optionImage) {\n                        groupImage = optionImage;\n                        return true;\n                    }\n                }\n\n                return false;\n            });\n        }\n\n        if (groupImage) {\n            return MediaService.getUrl(groupImage.manufacturer, groupImage.program, groupImage.type, groupImage.name, true, false);\n        }\n\n        return \"\";\n    }\n\n    private getOverviewGroupTitle(targetGroupName_: string): string {\n        const data = ConfiguratorApiDataService.Data;\n        const groupData = ConfiguratorApiDataService.GetGroup(targetGroupName_, data) as IConfiguratorApiDataValue | IConfiguratorApiDataGroupParams;\n        return groupData?.text || targetGroupName_;\n    }\n\n    private buildPage(): TemplateResult<1> {\n        if (this.activeIndex < 0 || this.activeIndex >= this._groupsToDisplay.length) {\n            return html``;\n        }\n\n        const groupName = this._groupsToDisplay[this.activeIndex];\n        if (!groupName) {\n            return html``;\n        }\n\n        const tag = this.listTags[groupName] || this.listTags[\"default\"] || \"\";\n        const attributes = this.listProperties[groupName] || this.listProperties[\"default\"];\n        const styles = this.listStyles[groupName] || this.listStyles[\"default\"];\n\n        const component = ConfiguratorFormBase.CreateElement({\n            tag: tag,\n            name: groupName,\n            attributes: attributes,\n            styleVars: styles\n        }, groupName, this, \"\");\n\n        return html`${component}`;\n    }\n\n    private buildOverviewItem(groupName: string): TemplateResult<1> {\n        const children = ConfiguratorApiDataService.GetGroupValuesCount(groupName, \"\", groupName);\n        if (children < 1) {\n             return html`\n                <div class=\"overview-item disabled\">\n                    <div class=\"overview-image\" style=\"background-image: url('${this.getOverviewGroupImage(groupName)}');\"></div>\n                    <fv-label class=\"overview-title\" i18n=\"${this.getOverviewGroupTitle(groupName)}\">${this.getOverviewGroupTitle(groupName)}</fv-label>\n                </div>\n            `;\n        }\n        return html`\n            <div class=\"overview-item\" @click=\"${() => this.openPageByGroupName(groupName)}\">\n                <div class=\"overview-image\" style=\"background-image: url('${this.getOverviewGroupImage(groupName)}');\"></div>\n                <fv-label class=\"overview-title\" i18n=\"${this.getOverviewGroupTitle(groupName)}\">${this.getOverviewGroupTitle(groupName)}</fv-label>\n            </div>\n        `;\n    }\n\n    private buildOverview(): TemplateResult<1> {\n        this.activeIndex = 0;\n        return html`\n            <slot name=\"overview-before\"></slot>\n            <div class=\"overview-container\">\n                ${this._groupsToDisplay.map(groupName => this.buildOverviewItem(groupName))}\n            </div>\n            <slot name=\"overview-after\"></slot>\n        `;\n    }\n\n    protected render(): TemplateResult<1> {\n        switch (this.viewMode) {\n            case EConfiguratorFormPageViewMode.MODE_PAGINATION:\n                return this.buildPage();\n            case EConfiguratorFormPageViewMode.MODE_OVERVIEW:\n                return this.buildOverview();\n            default:\n                break;\n        }\n        return html``;\n    }\n\n    getCount(): number {\n        return this._groupsToDisplay.length;\n    }\n\n    getIndex(): number {\n        return this.activeIndex;\n    }\n\n    setIndex(index: number): void {\n        this.activeIndex = index;\n    }\n\n    next(): void {\n        this.activeIndex++;\n    }\n\n    previous() {\n        this.activeIndex--;\n    }\n\n    setViewedAll(viewedAll: boolean): void {\n        this._viewedAll = viewedAll;\n    }\n\n    showPageControls(): boolean {\n        return this._pageControls;\n    }\n}\n","import { CSSResultGroup, html, TemplateResult, css, unsafeCSS, PropertyDeclaration } from \"lit\";\nimport { property, query } from \"lit/decorators.js\";\nimport { LocaleService } from \"@dh-software/webui-api\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport style from \"./configurator.form.base.element.component.sass?inline\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\nimport { IConfiguratorApiDataGroup, IConfiguratorApiDataValue, IConfiguratorApiValueModificationGroup } from \"@dh-software/webui-types\";\nimport { ConfiguratorFormBase, FormElementInfo, FormElementsWrapper } from \"../configurator.form.base\";\nimport { MediaService } from \"../../../utils/media.service\";\n\n\nexport class ConfiguratorFormElementDataContainer {\n    private _data: (IConfiguratorApiDataValue | IConfiguratorApiDataGroup)[] = [{ type: \"\" }]\n    private _initialized = false;\n\n    constructor() { }\n\n    public Read(group_: string, names_: string[], groupReference_: string): ConfiguratorFormElementDataContainer {\n        this._data = [];\n        for (const name of names_) {\n            this._data.push(ConfiguratorApiDataService.Get(group_, groupReference_, name));\n        }\n        if (this._data.length < 1) {\n            this._data = [{ type: \"\" }];\n        }\n        this._initialized = true;\n        return this;\n    }\n\n    public Get(index_: number): IConfiguratorApiDataValue {\n        if (this._data.length > index_ && index_ > -1) {\n            return this._data[index_];\n        }\n        return { type: \"\" }\n    }\n    public get first(): IConfiguratorApiDataValue {\n        return this.Get(0);\n    }\n    public get last(): IConfiguratorApiDataValue {\n        return this.Get(this._data.length - 1);\n    }\n\n    public get initialized(): boolean {\n        return this._initialized;\n    }\n    public set initialized(value_: boolean) {\n        this._initialized = value_;\n    }\n}\n\nexport interface ConfiguratorFormUpdateAllEventInit extends CustomEventInit {\n    detail: ConfiguratorFormBaseElement\n}\nexport class ConfiguratorFormUpdateAllEvent extends CustomEvent<ConfiguratorFormBaseElement> {\n    constructor(element: ConfiguratorFormBaseElement) {\n        super(\"configuratorformupdatedall\", { detail: element, bubbles: true });\n    }\n}\n\n\nexport class ConfiguratorFormBaseElement extends BaseElement {\n    //       _         _           \n    //   ___| |_ _   _| | ___  ___ \n    //  / __| __| | | | |/ _ \\/ __|\n    //  \\__ \\ |_| |_| | |  __/\\__ \\\n    //  |___/\\__|\\__, |_|\\___||___/\n    //           |___/             \n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n\n\n    //                                   _   _           \n    //   _ __  _ __ ___  _ __   ___ _ __| |_(_) ___  ___ \n    //  | '_ \\| '__/ _ \\| '_ \\ / _ \\ '__| __| |/ _ \\/ __|\n    //  | |_) | | | (_) | |_) |  __/ |  | |_| |  __/\\__ \\\n    //  | .__/|_|  \\___/| .__/ \\___|_|   \\__|_|\\___||___/\n    //  |_|             |_|                              \n    @property({ type: String, reflect: true })\n    public group = \"\";\n    @property({ type: String, reflect: true })\n    public name = \"\";\n    @property({ type: Array, reflect: true })\n    public names = new Array<string>();\n\n    @property({ type: Number, reflect: true })\n    public index: number | undefined = undefined;\n\n    @property({ type: String, reflect: true })\n    nameTextOverwrite = \"\";\n\n    @property({ type: Boolean, reflect: true })\n    hideAlternativeName = false;\n\n    @property({ type: String, reflect: true, attribute: \"decimal-divider\" })\n    public decimalDivider: \".\" | \",\" = \".\";\n\n    @property({ type: Number, reflect: true, attribute: \"float-digits\" })\n    public floatDigits = 2;\n\n    @property({ type: Array, reflect: true, attribute: \"value-info\" })\n    protected valueInfos = new Array<string>();\n\n    @property({ type: Number, reflect: true, attribute: \"value-info-timeout\" })\n    public valueInfoTimeout = 3500;\n\n    @property({ type: String, reflect: false, attribute: \"group-reference\" })\n    public groupReference = \"\";\n\n\n    //                   _       _     _           \n    //  __   ____ _ _ __(_) __ _| |__ | | ___  ___ \n    //  \\ \\ / / _` | '__| |/ _` | '_ \\| |/ _ \\/ __|\n    //   \\ V / (_| | |  | | (_| | |_) | |  __/\\__ \\\n    //    \\_/ \\__,_|_|  |_|\\__,_|_.__/|_|\\___||___/\n    protected _data: ConfiguratorFormElementDataContainer;\n\n\n\n    //                         _           \n    //    __ _ _   _  ___ _ __(_) ___  ___ \n    //   / _` | | | |/ _ \\ '__| |/ _ \\/ __|\n    //  | (_| | |_| |  __/ |  | |  __/\\__ \\\n    //   \\__, |\\__,_|\\___|_|  |_|\\___||___/\n    //      |_|                            \n    @query(\".info-display\")\n    public infoDisplay: HTMLDivElement | undefined;\n\n\n\n    //                       _                   _             \n    //    ___ ___  _ __  ___| |_ _ __ _   _  ___| |_ ___  _ __ \n    //   / __/ _ \\| '_ \\/ __| __| '__| | | |/ __| __/ _ \\| '__|\n    //  | (_| (_) | | | \\__ \\ |_| |  | |_| | (__| || (_) | |   \n    //   \\___\\___/|_| |_|___/\\__|_|   \\__,_|\\___|\\__\\___/|_|   \n    constructor() {\n        super();\n\n        this._data = new ConfiguratorFormElementDataContainer();\n\n        LocaleService.IsFileRead().then(() => {\n            this.requestUpdate();\n        });\n    }\n\n\n\n    //        _                           _                                                                 _   \n    //    ___| | ___ _ __ ___   ___ _ __ | |_   _ __ ___   __ _ _ __   __ _  __ _  ___ _ __ ___   ___ _ __ | |_ \n    //   / _ \\ |/ _ \\ '_ ` _ \\ / _ \\ '_ \\| __| | '_ ` _ \\ / _` | '_ \\ / _` |/ _` |/ _ \\ '_ ` _ \\ / _ \\ '_ \\| __|\n    //  |  __/ |  __/ | | | | |  __/ | | | |_  | | | | | | (_| | | | | (_| | (_| |  __/ | | | | |  __/ | | | |_ \n    //   \\___|_|\\___|_| |_| |_|\\___|_| |_|\\__| |_| |_| |_|\\__,_|_| |_|\\__,_|\\__, |\\___|_| |_| |_|\\___|_| |_|\\__|\n    //                                                                      |___/                               \n    private static AllElements: Array<ConfiguratorFormBaseElement> = [];\n    connectedCallback(): void {\n        super.connectedCallback();\n        ConfiguratorFormBaseElement.AllElements.push(this);\n    }\n    disconnectedCallback(): void {\n        super.disconnectedCallback();\n\n        const index = ConfiguratorFormBaseElement.AllElements.indexOf(this);\n        if (index > -1) {\n            ConfiguratorFormBaseElement.AllElements.splice(index, 1);\n        }\n    }\n    public get All(): Array<ConfiguratorFormBaseElement> {\n        return ConfiguratorFormBaseElement.AllElements;\n    }\n    protected async UpdateAll(includingForm = false, skip?: Array<ConfiguratorFormBaseElement | ConfiguratorFormBase>): Promise<void> {\n        for (const element of this.All) {\n            if (skip && skip.includes(element)) {\n                continue;//skip\n            }\n            element.requestUpdate();\n            await element.updateComplete;\n        }\n        if (includingForm && this.Form) {\n            if (skip == undefined || !skip.includes(this.Form)) {\n                await this.Form?.UpdateAll(ConfiguratorApiDataService.Data);\n                await this.Form?.CheckFetchPromise();\n                await this.Form?.updateComplete;\n            }\n        }\n        window.dispatchEvent(new ConfiguratorFormUpdateAllEvent(this));\n    }\n    protected async Set(group: IConfiguratorApiValueModificationGroup, preventRegenAll = false, ignorePriceChange = false): Promise<boolean> {\n        group.name = ConfiguratorApiDataService.CreateFullTargetGroupReference(group.name, this.groupReference);\n        return this.SetMultiple([group], preventRegenAll, ignorePriceChange);\n    }\n    protected async SetMultiple(groups: IConfiguratorApiValueModificationGroup[], preventRegenAll = false, ignorePriceChange = false): Promise<boolean> {\n        const result = await ConfiguratorApiDataService.Set(groups, preventRegenAll, ignorePriceChange);\n        return result;\n    }\n\n\n    //             __                                _           __                      \n    //   _ __ ___ / _| ___ _ __ ___ _ __   ___ ___  | |_ ___    / _| ___  _ __ _ __ ___  \n    //  | '__/ _ \\ |_ / _ \\ '__/ _ \\ '_ \\ / __/ _ \\ | __/ _ \\  | |_ / _ \\| '__| '_ ` _ \\ \n    //  | | |  __/  _|  __/ | |  __/ | | | (_|  __/ | || (_) | |  _| (_) | |  | | | | | |\n    //  |_|  \\___|_|  \\___|_|  \\___|_| |_|\\___\\___|  \\__\\___/  |_|  \\___/|_|  |_| |_| |_|\n    private _form: ConfiguratorFormBase | undefined = undefined;\n    public get Form(): ConfiguratorFormBase | undefined {\n        return this._form;\n    }\n    public set Form(form: ConfiguratorFormBase) {\n        this._form = form;\n    }\n\n    //   _     _       _     _ _       _     _   _             \n    //  | |__ (_) __ _| |__ | (_) __ _| |__ | |_(_)_ __   __ _ \n    //  | '_ \\| |/ _` | '_ \\| | |/ _` | '_ \\| __| | '_ \\ / _` |\n    //  | | | | | (_| | | | | | | (_| | | | | |_| | | | | (_| |\n    //  |_| |_|_|\\__, |_| |_|_|_|\\__, |_| |_|\\__|_|_| |_|\\__, |\n    //           |___/           |___/                   |___/ \n    protected UpdateHighlight(ii_: number): void {\n        this.dispatchEvent(new CustomEvent(\"configurator-form-update-highlight\", { bubbles: true, composed: true, detail: { ii: ii_ } }));\n    }\n\n\n    //       _       _                                                                      _   \n    //    __| | __ _| |_ __ _   _ __ ___   __ _ _ __   __ _  __ _  ___ _ __ ___   ___ _ __ | |_ \n    //   / _` |/ _` | __/ _` | | '_ ` _ \\ / _` | '_ \\ / _` |/ _` |/ _ \\ '_ ` _ \\ / _ \\ '_ \\| __|\n    //  | (_| | (_| | || (_| | | | | | | | (_| | | | | (_| | (_| |  __/ | | | | |  __/ | | | |_ \n    //   \\__,_|\\__,_|\\__\\__,_| |_| |_| |_|\\__,_|_| |_|\\__,_|\\__, |\\___|_| |_| |_|\\___|_| |_|\\__|\n    //                                                      |___/                               \n    public get Data(): ConfiguratorFormElementDataContainer {\n        if (!this._data.initialized) {\n            this.ReadData();\n        }\n        return this._data;\n    }\n    protected ReadData(): void {\n        if (this.names.length < 1) {\n            this._data.Read(this.group, [this.name], this.groupReference);\n            return;\n        }\n        this._data.Read(this.group, this.names, this.groupReference);\n    }\n    protected get TextId(): string {\n        const txt = (this.Data.first as IConfiguratorApiDataValue).text;\n        if (txt && txt.length > 0) {\n            return txt;\n        }\n        return this.name;\n    }\n    protected get Text(): string {\n        const txtId = this.TextId;\n        return LocaleService.translate(txtId, txtId);\n    }\n\n    protected get ValueInfo(): Array<string> {\n        return ConfiguratorApiDataService.GetValueInfo(this.group, this.groupReference, [this.name]);\n    }\n\n    public WillRenderChildren(formElements_: (FormElementInfo | FormElementsWrapper)[], tags_: { [type: string]: string }, namePrefix_: string): boolean {\n        const children = ConfiguratorApiDataService.GetElementsToCreateFromElementDefinition(this.name, this.Data.first as IConfiguratorApiDataGroup, formElements_, namePrefix_, this.groupReference);\n        if (children.length > 0) {\n            return true;\n        }\n        if (tags_[this.Data.first.type] != undefined) {\n            return true;\n        }\n        return false;\n    }\n\n\n\n    //                      _           _                               _             _ _ _                _        \n    //   _ __ ___ _ __   __| | ___ _ __(_)_ __   __ _    __ _ _ __   __| |   ___ __ _| | | |__   __ _  ___| | _____ \n    //  | '__/ _ \\ '_ \\ / _` |/ _ \\ '__| | '_ \\ / _` |  / _` | '_ \\ / _` |  / __/ _` | | | '_ \\ / _` |/ __| |/ / __|\n    //  | | |  __/ | | | (_| |  __/ |  | | | | | (_| | | (_| | | | | (_| | | (_| (_| | | | |_) | (_| | (__|   <\\__ \\\n    //  |_|  \\___|_| |_|\\__,_|\\___|_|  |_|_| |_|\\__, |  \\__,_|_| |_|\\__,_|  \\___\\__,_|_|_|_.__/ \\__,_|\\___|_|\\_\\___/\n    //                                          |___/                                                               \n    public attributeChangedCallback(name: string, _old: string | null, value: string | null): void {\n        super.attributeChangedCallback(name, _old, value);\n        if (name === \"value-info\") {\n            // timed-out\n            if (value && value.length > 0) {\n                setTimeout(() => {\n                    this.infoDisplay?.classList.add(\"timed-out\");\n                }, this.valueInfoTimeout);\n            }\n        }\n    }\n\n    public createTemplate(children: TemplateResult): TemplateResult<1> {\n        this.valueInfos = this.ValueInfo;\n\n        return html`\n            ${this.valueInfos.length > 0 ? html`\n                <div class=\"info-display-container\">\n                    <div class=\"info-display\">${this.valueInfos.map(valueInfo => html`<fv-label>${valueInfo}</fv-label>`)}</div>\n                </div>` : html``\n            }\n            ${children}\n        `;\n    }\n\n    public requestUpdate(name?: PropertyKey, oldValue?: unknown, options?: PropertyDeclaration): void {\n        if (this._data != undefined) {\n            this._data.initialized = false;\n        }\n        super.requestUpdate(name, oldValue, options);\n    }\n}\n","import { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport { ConfiguratorFormBaseElement } from \"./configurator.form.base.element.component\";\nimport style from \"./configurator.form.element.button.component.sass?inline\";\nimport { EventHandlerEvent } from \"../../../models/event-handler/event.handler.model\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { UtilService } from \"../../../utils/util.service\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\nimport { IConfiguratorApiDataValue } from \"@dh-software/webui-types\"\n\n@customElement(\"fv-configurator-form-element-button\")\nexport class ConfiguratorFormElementButtonComponent extends ConfiguratorFormBaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Boolean, reflect: true, attribute: \"bordered\" })\n    public bordered = false;\n\n    @property({ type: Array, reflect: true, attribute: \"events\" })\n    public events: Array<EventHandlerEvent> = [];\n\n    @property({type: String, reflect: true})\n    icon: string = \"\";\n\n    @property({type: Boolean, reflect: true, attribute: \"icon-only\" })\n    iconOnly = false;\n\n    protected async clicked(): Promise<void> {\n        if (await this.Set({\n            name: this.group,\n            modifications: [{\n                target: this.name,\n                type: \"button\",\n                value: 1\n            }]\n        })) {\n            const data = ConfiguratorApiDataService.Data;\n            const groupData = ConfiguratorApiDataService.GetGroup(this.group, data) as IConfiguratorApiDataValue;\n\n            if (groupData?.[\"instance-ident\"]) {\n                this.events.forEach((event: EventHandlerEvent) => {\n                    if (event.data) {\n                        UtilService.replaceValueInObject(event.data, \"##INSTANCE_IDENT##\", groupData?.[\"instance-ident\"]);\n                    }\n                });\n            }\n            await EventHandlerService.dispatchEventList(this.events, false);\n            await this.UpdateAll(true);\n            return; // modification sucessful\n        }\n    }\n\n    getText(txt: string) {\n        if(this.iconOnly) return \"\";\n        return txt;\n    }\n\n    protected render(): TemplateResult<1> {\n        if (ConfiguratorApiDataService.Data) {\n            const data = this.Data.first;\n            if (data.type.length < 1) {\n                return this.createTemplate(html``);\n            }\n            return this.createTemplate(html`\n                <fv-button @click=\"${this.clicked}\" icon=\"${this.icon}\" class=\"${this.bordered ? \"bordered\" : \"\"}\" i18n=\"${this.getText(this.TextId)}\">${this.getText(this.Text)}</fv-button>\n            `);\n        }\n        return this.createTemplate(html``);\n    }\n}\n","\nimport { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport { ConfiguratorFormBaseElement } from \"./configurator.form.base.element.component\";\nimport style from \"./configurator.form.element.checkbox.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { LocaleService } from \"@dh-software/webui-api\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\n\n\n@customElement(\"fv-configurator-form-element-checkbox\")\nexport class ConfiguratorFormElementCheckbox extends ConfiguratorFormBaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Boolean, reflect: true })\n    public state = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"change-able\" })\n    public changeable = false;\n\n    protected async clicked(): Promise<void> {\n        if (this.changeable) {\n            if (await this.Set({\n                name: this.group,\n                modifications: [{\n                    target: this.name,\n                    type: \"checkbox\",\n                    value: this.state ? 0 : 1\n                }]\n            })) {\n                await this.UpdateAll(true);\n                return; // modification sucessful\n            }\n        }\n    }\n\n    protected render(): TemplateResult<1> {\n        if (ConfiguratorApiDataService.Data == undefined) {\n            return this.createTemplate(html``);\n        }\n\n        const data = this.Data.first;\n        if (data.type.length < 1) {\n            this.classList.add(\"hidden\");\n            return this.createTemplate(html``);\n        }\n        this.classList.remove(\"hidden\");\n\n        this.state = data.state != undefined ? data.state as boolean : false;\n        this.changeable = data.changeable != undefined ? data.changeable as boolean : true;\n\n        const nametxt = this.nameTextOverwrite.length > 0 ? this.nameTextOverwrite : this.TextId;\n        return this.createTemplate(html`\n            <div @click=\"${this.clicked}\" class=\"outer-container\">\n                <div class=\"label-container\">\n                    <span i18n=\"${nametxt}\">${LocaleService.translate(nametxt, nametxt)}</span>\n                </div>\n                <div class=\"checkcontainer${this.state ? \" checked\" : \"\"}\">\n                    <div class=\"checkmark${this.state ? \" checked\" : \"\"}\"></div>\n                </div>\n            </div>\n        `);\n    }\n}\n","import { LitElement } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { ConfiguratorFormBaseElement } from \"./configurator.form.base.element.component\";\nimport { IConfiguratorApiDataGroup, IConfiguratorApiDataValue } from \"@dh-software/webui-types\";\nimport { ConfiguratorFormBase, FormElementInfo, FormElementsWrapper } from \"../configurator.form.base\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\nimport { ConfiguratorFormWrapperElementComponent } from \"../configurator-form-internal-elements/configurator.form.wrapper.component\";\n\n\nexport class ConfiguratorFormElementListBase extends ConfiguratorFormBaseElement {\n\n    @property({ type: Object, reflect: false, attribute: \"elements-tags\" })\n    public elementsTags: { [type: string]: string } = {};\n\n    @property({ type: String, reflect: true, attribute: \"group-number-txt\" })\n    public groupNumberTxt: string = \"\";\n\n    @property({ type: Object, reflect: false, attribute: \"elements-attributes\" })\n    public elementsAttributes: { [type: string]: { [attribute: string]: string } } = {};\n\n    @property({ type: Object, reflect: false, attribute: \"elements-style-vars\" })\n    public elementsStyleVars: { [type: string]: { [styleVar: string]: string } } = {};\n\n    @property({ type: Array, reflect: false, attribute: \"form-elements\" })\n    public formElements: Array<FormElementInfo> | undefined = undefined;\n\n    @property({ type: Array, reflect: true, attribute: \"elements-to-skip\" })\n    public elementsToSkip: Array<string> = [];\n\n    @property({ type: Boolean, reflect: true, attribute: \"hide-alternative-name-on-single-entry\" })\n    public hideAlternativeNameOnSingleEntry = false;\n\n\n    public static CreateWrapperOrElement(elementToCreate_: FormElementInfo | FormElementsWrapper, form_: ConfiguratorFormBase, name_: string, group_: string, elementData_: IConfiguratorApiDataGroup, groupReference_: string, isLast_: boolean = false): LitElement {\n        const formElementInfo = elementToCreate_ as FormElementInfo;\n        if (formElementInfo.tag == undefined) {\n            const formElementsWrapper = elementToCreate_ as FormElementsWrapper;\n\n            const element = document.createElement(\"fv-configurator-form-wrapper-element\") as ConfiguratorFormWrapperElementComponent;\n            element.group = group_;\n            element.toggles = formElementsWrapper[\"enable-toggle\"] != undefined ? formElementsWrapper[\"enable-toggle\"] : false;\n            element.clickable = formElementsWrapper[\"clickable\"] != undefined ? formElementsWrapper[\"clickable\"] : true;\n            element.title = formElementsWrapper.title != undefined ? formElementsWrapper.title : \"\";\n            element.closedIcon = formElementsWrapper[\"closed-icon\"] ? formElementsWrapper[\"closed-icon\"] : \"\";\n            element.openIcon = formElementsWrapper[\"open-icon\"] ? formElementsWrapper[\"open-icon\"] : \"\";\n            element.startsClosed = isLast_ ? false : (formElementsWrapper[\"starts-closed\"] != undefined ? formElementsWrapper[\"starts-closed\"] : false);\n            element.isClosed = element.startsClosed;\n\n            if (formElementsWrapper.styleVars != undefined) {\n                const keys = Object.keys(formElementsWrapper.styleVars);\n                for (const styleVar of keys) {\n                    const value = formElementsWrapper.styleVars[styleVar];\n                    element.style.setProperty(styleVar, value);\n                }\n            }\n\n            element.addEventListener(\"wrapper-clicked\", async (e: CustomEventInit) => {\n                form_.triggerUpdateEvents();\n            });\n\n            if (formElementsWrapper[\"inline-elements\"] != undefined && formElementsWrapper[\"inline-elements\"].length > 0) {\n                const inlineElementsToCreate = ConfiguratorApiDataService.GetElementsToCreateFromElementDefinition(name_, elementData_, formElementsWrapper[\"inline-elements\"], form_.elementNamePrefix, groupReference_);\n                for (const inlineElementToCreate of inlineElementsToCreate) {\n                    const inlineElement = ConfiguratorFormElementListBase.CreateWrapperOrElement(inlineElementToCreate, form_, name_, group_, elementData_, groupReference_);\n                    inlineElement.setAttribute(\"slot\", \"title\");\n                    element.appendChild(inlineElement);\n                }\n            }\n\n            const elmentsToCreate = ConfiguratorApiDataService.GetElementsToCreateFromElementDefinition(name_, elementData_, formElementsWrapper.elements, form_.elementNamePrefix, groupReference_);\n            for (const elementToCreate of elmentsToCreate) {\n                element.appendChild(ConfiguratorFormElementListBase.CreateWrapperOrElement(elementToCreate, form_, name_, group_, elementData_, groupReference_));\n            }\n            return element;\n        }\n        return ConfiguratorFormBase.CreateElement(formElementInfo, name_, form_, groupReference_);\n    }\n\n    protected createChildrenByFormElementDefinition(container_: HTMLElement, elementData_: IConfiguratorApiDataGroup, elementsToCreate_: (FormElementsWrapper | FormElementInfo)[], groupReference_: string) {\n        if (this.formElements == undefined || this.formElements.length < 1) {\n            return;\n        }\n\n        const form = this.Form;\n        if (form == undefined) {\n            return;\n        }\n\n        if (elementsToCreate_.length < 1) {\n            return;\n        }\n\n        for (let i = 0; i < elementsToCreate_.length; i++) {\n            const element = ConfiguratorFormElementListBase.CreateWrapperOrElement(elementsToCreate_[i], form, this.name, this.group, elementData_, groupReference_, i === elementsToCreate_.length - 1);\n            if (element != undefined) {\n                if (this.groupNumberTxt) {\n                    element.setAttribute(\"title-suffix\", this.groupNumberTxt);\n                }\n                container_.appendChild(element);\n            }\n        }\n    }\n\n    protected createChildrenByTagsAndAttributes(container_: HTMLElement, elementData_: IConfiguratorApiDataGroup, elementsNotToCreate_: (FormElementsWrapper | FormElementInfo)[]) {\n        const names = Object.keys(elementData_);\n        for (const name of names) {\n            const skipElement = this.elementsToSkip.includes(name) || elementsNotToCreate_.find(elementNotToCreate => {\n                const elementData_ = (elementNotToCreate as FormElementInfo);\n                return (elementData_.name === name || (elementData_.names !== undefined && elementData_.names.includes(name)));\n            });\n            if (skipElement) {\n                continue;\n            }\n\n            const data = elementData_[name] as IConfiguratorApiDataGroup | IConfiguratorApiDataValue;\n            const component = this.createChildrenByTagsAndAttributesFromValue(name, data);\n\n            if (component) {\n                container_.appendChild(component);\n            }\n        }\n    }\n\n    protected createChildrenByTagsAndAttributesFromValue(name_: string, data_: IConfiguratorApiDataGroup | IConfiguratorApiDataValue): ConfiguratorFormBaseElement | undefined {\n        if (data_.type == \"\" || data_.type == undefined) {\n            return;// skip empty\n        }\n\n        const form = this.Form;\n        if (form == undefined) {\n            return;\n        }\n\n        const tag = this.elementsTags[data_.type];\n        if (tag == undefined) {\n            return;// skip types that do not have tags assigned!\n        }\n\n        const component = ConfiguratorFormBase.CreateElement({\n            tag: tag,\n            name: name_,\n            attributes: this.elementsAttributes[data_.type],\n            styleVars: this.elementsStyleVars[data_.type]\n        }, this.group, form, this.groupReference);\n\n        component.index = data_.index ? (data_.index as number) : 0;\n        component.nameTextOverwrite = data_.name && !data_.text ? (data_.name as string) : \"\";\n        component.hideAlternativeName = false;\n        component.decimalDivider = this.decimalDivider;\n\n        if (this.hideAlternativeNameOnSingleEntry) {\n            const values = ConfiguratorApiDataService.GetGroupValuesCount(this.group, this.groupReference, this.name);\n            if (values === 1) {\n                component.hideAlternativeName = true;\n            }\n            // const elementData = ConfiguratorApiDataService.Get(this.group, this.groupReference, this.name);\n            // if (elementData != undefined) {\n            //     const childNames = Object.keys(elementData);\n            //     if (childNames.length === 9) {// PH [2025|August|26] changed 1 to 9 since 8 values exist besides the values of the group\n            //         component.hideAlternativeName = true;\n            //     }\n            // }\n        }\n\n        return component;\n    }\n}\n","import { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./configurator.form.element.images.aligned.inputs.component.sass?inline\"\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\nimport { IConfiguratorApiDataValue } from \"@dh-software/webui-types\";\nimport { MediaService } from \"../../../utils/media.service\";\nimport { ConfiguratorFormElementListBase } from \"./configurator.form.element.list.base\"\nimport { ImageAlignedContainerComponent, IImageAlignedContainerOverlayItem } from \"../../standard/arrange/image-container/image.aligned.container.component\";\n\n\n@customElement(\"fv-configurator-form-element-images-aligned-inputs\")\nexport class ConfiguratorFormElementImagesAlignedInputsComponent extends ConfiguratorFormElementListBase {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private _groupedImageInputs = new Map<string, Array<IConfiguratorApiDataValue>>();\n\n    constructor() {\n        super();\n    }\n\n    private collectGroupedImageInputsData(): void {\n        this._groupedImageInputs.clear();\n\n        for (let i = 0; i < this.names.length; i++) {\n            const data = this.Data.Get(i);\n\n            if (data.image && data.name) {\n                const imageKey = `${data.image.manufacturer}#${data.image.program}#${data.image.type}#${data.image.name}`;\n                const inputNames = this._groupedImageInputs.get(imageKey);\n\n                if (inputNames) {\n                    inputNames.push(data);\n                }\n                else {\n                    this._groupedImageInputs.set(imageKey, [data]);\n                }\n            }\n        }\n    }\n\n    private buildImageAlignedInputsContainer(): TemplateResult<1> {\n        return html`${Array.from(this._groupedImageInputs.entries()).map(([imageKey, inputs]): TemplateResult<1> => {\n            if (inputs.length === 0) {\n                return html``;\n            }\n\n            const firstInput = inputs[0];\n            if (!firstInput) {\n                return html``;\n            }\n\n            const imageData = firstInput.image;\n            if (!imageData) {\n                return html``;\n            }\n\n            const imgSrc = MediaService.getUrl(imageData.manufacturer, imageData.program, imageData.type, imageData.name, true, false);\n            if (imgSrc.length <= 0) {\n                return html``;\n            }\n\n            const overlayItems: Array<IImageAlignedContainerOverlayItem> = [];\n            const imageContainer = document.createElement(\"fv-image-aligned-container\") as ImageAlignedContainerComponent;\n            imageContainer._src = imgSrc;\n\n            inputs.forEach(inputData => {\n                if (inputData && inputData.name && inputData.additional?.[\"alignment\"]) {\n                    const component = this.createChildrenByTagsAndAttributesFromValue(inputData.name, inputData);\n\n                    if (component) {\n                        component.slot = inputData.name;\n                        imageContainer.appendChild(component);\n                        const isTextOverlay = inputData.type === \"string\";\n\n                        const inputAlignment = inputData.additional[\"alignment\"] as {\n                            left: number,\n                            top: number,\n                            rot: number\n                        };\n                        overlayItems.push({\n                            name: inputData.name,\n                            left: inputAlignment.left,\n                            top: inputAlignment.top,\n                            zIndex: !isTextOverlay ? 999 : undefined,\n                            skipHorizontalCenter: isTextOverlay && inputAlignment.rot == 0.0\n                        });\n                        if (inputAlignment.rot) {\n                            component.style.transform = `rotate(${inputAlignment.rot}deg)`;\n                        }\n                    }\n                }\n            });\n\n            imageContainer.overlayItems = overlayItems;\n            return html`${imageContainer}`;\n        })}`;\n    }\n\n    protected render(): TemplateResult<1> {\n        if (this.names.length === 0) {\n            console.error(\"fv-configurator-form-element-images-aligned-inputs: no names!\");\n            return this.createTemplate(html``);\n        }\n\n        if (ConfiguratorApiDataService.Data === undefined) {\n            return this.createTemplate(html``);\n        }\n\n        this.collectGroupedImageInputsData();\n\n        return this.createTemplate(html`\n            <div class=\"image-aligned-inputs-container\">\n                ${this.buildImageAlignedInputsContainer()}\n            </div>\n        `);\n    }\n}\n","import { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./configurator.form.element.list.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { LocaleService } from \"@dh-software/webui-api\";\nimport { IConfiguratorApiDataGroup } from \"@dh-software/webui-types\";\nimport { ArrowComponent } from \"../../configurable-icons/arrow.component\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\nimport { SceneHelperService } from \"../../../utils/scene-helper.service\";\nimport { ConfiguratorFormElementListBase } from \"./configurator.form.element.list.base\"\n\n\n@customElement(\"fv-configurator-form-element-list\")\nexport class ConfiguratorFormElementList extends ConfiguratorFormElementListBase {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    //                                   _   _           \n    //   _ __  _ __ ___  _ __   ___ _ __| |_(_) ___  ___ \n    //  | '_ \\| '__/ _ \\| '_ \\ / _ \\ '__| __| |/ _ \\/ __|\n    //  | |_) | | | (_) | |_) |  __/ |  | |_| |  __/\\__ \\\n    //  | .__/|_|  \\___/| .__/ \\___|_|   \\__|_|\\___||___/\n    //  |_|             |_|                              \n    @property({ type: String, reflect: true, attribute: \"toggle-button\" })\n    public toggleButton = \"\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"title-as-toggle-button\" })\n    public titleAsToggleButton = true;\n\n    @property({ type: Boolean, reflect: true, attribute: \"bordered-toggle-button\" })\n    public borderedToggleButton = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"hide-alternative-name-on-single-entry\" })\n    public hideAlternativeNameOnSingleEntry = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"show-toggle-button-arrow\" })\n    public showToggleButtonArrow = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"highlight-element-while-editing\" })\n    public highlightElementWhileEditing = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"toggle-starts-opened\" })\n    public toggleStartsOpened = false;\n\n\n    //                         _           \n    //    __ _ _   _  ___ _ __(_) ___  ___ \n    //   / _` | | | |/ _ \\ '__| |/ _ \\/ __|\n    //  | (_| | |_| |  __/ |  | |  __/\\__ \\\n    //   \\__, |\\__,_|\\___|_|  |_|\\___||___/\n    //      |_|                            \n    @query(\".child-components-container\")\n    private childComponentsContainer: HTMLDivElement | undefined;\n\n    @query(\".drop-down-button\")\n    private dropDownButtonElement: HTMLElement | undefined;\n\n    @query(\"fv-arrow-component\")\n    private arrow: ArrowComponent | undefined;\n\n\n    //   _       _                        _     \n    //  (_)_ __ | |_ ___ _ __ _ __   __ _| |___ \n    //  | | '_ \\| __/ _ \\ '__| '_ \\ / _` | / __|\n    //  | | | | | ||  __/ |  | | | | (_| | \\__ \\\n    //  |_|_| |_|\\__\\___|_|  |_| |_|\\__,_|_|___/\n    private createContainer(): HTMLDivElement {\n        const container = document.createElement(\"div\");\n        container.classList.add(\"child-components-container\");\n        if (this.showToggleButton) {\n            const active = ConfiguratorFormElementList.activeElements.includes(this.name);\n            if (!active) {\n                container.classList.add(\"hidden\");\n            }\n            else {\n                container.classList.remove(\"hidden\");\n            }\n        }\n        return container;\n    }\n    private get showToggleButton() {\n        return this.toggleButton.length > 0;\n    }\n    private triggerToggleButton() {\n        if (this.childComponentsContainer) {\n            this.childComponentsContainer.classList.toggle(\"hidden\");\n\n            if (this.childComponentsContainer != undefined && !this.childComponentsContainer.classList.contains(\"hidden\")) {\n                this.arrow?.classList.add(\"active\");\n                if (this.titleAsToggleButton) {\n                    this.dropDownButtonElement?.classList.add(\"active\");\n                }\n                if (!ConfiguratorFormElementList.activeElements.includes(this.name)) {\n                    ConfiguratorFormElementList.activeElements.push(this.name);\n                }\n            }\n            else {\n                this.arrow?.classList.remove(\"active\");\n                if (this.titleAsToggleButton) {\n                    this.dropDownButtonElement?.classList.remove(\"active\");\n                }\n                ConfiguratorFormElementList.activeElements = ConfiguratorFormElementList.activeElements.filter((active_) => active_ != this.name);\n            }\n\n            this.Form?.triggerUpdateEvents();\n        }\n    }\n    private static initializedToggles: string[] = [];\n    private createToggleButton(): TemplateResult<1> {\n        if (this.showToggleButton) {\n            const active = ConfiguratorFormElementList.activeElements.includes(this.name);\n            ConfiguratorFormElementList.activeElements = ConfiguratorFormElementList.activeElements.filter((active_) => {\n                return ConfiguratorApiDataService.Exists(active_);\n            });\n            if (this.toggleStartsOpened && !ConfiguratorFormElementList.initializedToggles.includes(this.name)) {\n                ConfiguratorFormElementList.activeElements.push(this.name);\n                ConfiguratorFormElementList.initializedToggles.push(this.name);//only on first load of element\n            }\n\n            if (this.titleAsToggleButton) {\n                if (this.showToggleButtonArrow) {\n                    return html`\n                        <div @click=\"${this.triggerToggleButton}\" class=\"drop-down-button${this.borderedToggleButton ? \" bordered\" : \"\"} ${active ? \"active\" : \"\"}\">\n                            <div class=\"toggle-button-txt-container\">\n                                <span i18n=\"${this.toggleButton}\">${LocaleService.translate(this.toggleButton, this.toggleButton)}</span>\n                                <fv-arrow-component class=\"${active ? \"active\" : \"\"}\"></fv-arrow-component>\n                            </div>\n                        </div>\n                    `;\n                }\n                return html`\n                    <div @click=\"${this.triggerToggleButton}\" class=\"drop-down-button${this.borderedToggleButton ? \" bordered\" : \"\"} ${active ? \"active\" : \"\"}\" i18n=\"${this.toggleButton}\">\n                        ${LocaleService.translate(this.toggleButton, this.toggleButton)}\n                    </div>\n                `;\n            }\n\n            if (this.showToggleButtonArrow) {\n                return html`\n                    <fv-button @click=\"${this.triggerToggleButton}\" class=\"drop-down-button${this.borderedToggleButton ? \" bordered\" : \"\"}\">\n                        <div class=\"toggle-button-txt-container\">\n                            <span i18n=\"${this.toggleButton}\">${LocaleService.translate(this.toggleButton, this.toggleButton)}</span>\n                            <fv-arrow-component class=\"${active ? \"active\" : \"\"}\"></fv-arrow-component>\n                        </div>\n                    </fv-button>\n                `;\n            }\n            return html`\n                <fv-button @click=\"${this.triggerToggleButton}\" class=\"drop-down-button${this.borderedToggleButton ? \" bordered\" : \"\"}\" i18n=\"${this.toggleButton}\">\n                    ${LocaleService.translate(this.toggleButton, this.toggleButton)}\n                </fv-button>\n            `;\n        }\n        return html``;\n    }\n    private static activeElements: string[] = [];\n\n    private async mouseEnter() {\n        if (!this.highlightElementWhileEditing) {\n            return;\n        }\n        if (this.Data.first == undefined || this.Data.first[\"lo-owned\"] == undefined || this.Data.first[\"instance-ident\"] == undefined) {\n            return;\n        }\n        await SceneHelperService.addHighlightBox(this.Data.first[\"instance-ident\"] as number);\n    }\n\n    private async mouseLeave() {\n        if (!this.highlightElementWhileEditing) {\n            return;\n        }\n        if (this.Data.first == undefined || this.Data.first[\"lo-owned\"] == undefined || this.Data.first[\"instance-ident\"] == undefined) {\n            return;\n        }\n        await SceneHelperService.removeHighlightBox(this.Data.first[\"instance-ident\"] as number);\n    }\n\n\n    //                       _                   _             \n    //    ___ ___  _ __  ___| |_ _ __ _   _  ___| |_ ___  _ __ \n    //   / __/ _ \\| '_ \\/ __| __| '__| | | |/ __| __/ _ \\| '__|\n    //  | (_| (_) | | | \\__ \\ |_| |  | |_| | (__| || (_) | |   \n    //   \\___\\___/|_| |_|___/\\__|_|   \\__,_|\\___|\\__\\___/|_|   \n    constructor() {\n        super();\n\n        this.addEventListener(\"mouseenter\", this.mouseEnter);\n        this.addEventListener(\"mouseleave\", this.mouseLeave);\n    }\n\n\n    //                      _           \n    //   _ __ ___ _ __   __| | ___ _ __ \n    //  | '__/ _ \\ '_ \\ / _` |/ _ \\ '__|\n    //  | | |  __/ | | | (_| |  __/ |   \n    //  |_|  \\___|_| |_|\\__,_|\\___|_|   \n    protected render(): TemplateResult<1> {\n        if (!ConfiguratorApiDataService.Valid) {\n            return this.createTemplate(html``);\n        }\n\n        const data = this.Data.first;\n        if (data == undefined) {\n            return this.createTemplate(html``);\n        }\n\n        if (this.Form == undefined) {\n            return this.createTemplate(html``);\n        }\n\n        if (data.type != \"list\") {\n            if (data.type == \"\") {\n                this.classList.add(\"hidden\");\n                return this.createTemplate(html``);\n            }\n            return this.createTemplate(html`<div>Element Data not intended for list component</div>`);\n        }\n\n        const groupData = data as IConfiguratorApiDataGroup;\n        const nameList = Object.keys(groupData);\n\n        let reference = \"\";\n        if (this.groupReference.length < 1) {\n            reference = this.group;\n        }\n        else if (this.groupReference == this.group) {\n            reference = this.group;\n        }\n        else {\n            reference = this.groupReference + \"#\" + this.group;\n        }\n\n        const noListData = nameList.length < 8;\n        const noFormElements = this.formElements == undefined || this.formElements.length < 1;\n        const elementsToCreateFromElementDefinition = ConfiguratorApiDataService.GetElementsToCreateFromElementDefinition(this.name, groupData, this.formElements || [], this.Form.elementNamePrefix, reference);\n\n        if (noListData && noFormElements) {\n            this.classList.add(\"hidden\");\n            return this.createTemplate(html`<div>No children in list component and no formElements defined!</div>`);\n        }\n        if (noListData && elementsToCreateFromElementDefinition.length < 1) {\n            this.classList.add(\"hidden\");\n            return this.createTemplate(html`<div>No children in list component and no elements to create from formElements!</div>`);\n        }\n\n        this.classList.remove(\"hidden\");\n\n        const container = this.createContainer();\n        this.createChildrenByFormElementDefinition(container, groupData, elementsToCreateFromElementDefinition, reference);\n        this.createChildrenByTagsAndAttributes(container, groupData, elementsToCreateFromElementDefinition);\n\n        if (container.children.length < 1) {\n            return this.createTemplate(html`<div>No children in list component!</div>`);\n        }\n\n        return this.createTemplate(html`\n            ${this.createToggleButton()}\n            ${container}\n        `);\n    }\n}\n","import { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport { ConfiguratorFormBaseElement } from \"./configurator.form.base.element.component\";\nimport style from \"./configurator.form.element.number.input.component.sass?inline\";\nimport { Units } from \"../../standard/base/base.component\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { ConstrainedInputComponent } from \"../../standard/input/contrained-input/constrained.input.component\";\nimport { LocaleService } from \"@dh-software/webui-api\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\n\n@customElement(\"fv-configurator-form-element-number-input\")\nexport class ConfiguratorFormElementNumberInputComponent extends ConfiguratorFormBaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Number, reflect: true })\n    public value = 0;\n\n    @property({ type: Number, reflect: true })\n    public min = 0;\n\n    @property({ type: Number, reflect: true })\n    public max = 99999999;\n\n    @property({ type: Number, reflect: true })\n    public step = 1;\n\n    @property({ type: String, reflect: true, attribute: \"float-unit\" })\n    public floatUnit = \"cm\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"no-min-max-check\" })\n    public noMinMaxCheck = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"show-min-max-title\" })\n    public showMinMaxTitle = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"hide-title\" })\n    public hideTitle = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"hide-increase-decrease-buttons\" })\n    public hideIncreaseDecreaseButtons = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"hide-unused-unit-container\" })\n    public hideUnusedUnitContainer = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"hide-unused-unit-container-when-disabled\" })\n    public hideUnusedUnitContainerWhenDisabled = false;\n\n    @query(\"fv-constrained-input\")\n    private constrainedInput: ConstrainedInputComponent | undefined;\n\n    private _previousTransform = \"\";\n\n    constructor() {\n        super();\n\n        // this.addEventListener(\"click\", (e) => {\n        //     e.preventDefault();\n        //     e.stopImmediatePropagation();\n        //     e.stopPropagation();\n        // });\n        this.addEventListener(\"mousemove\", (e) => {\n            e.preventDefault();\n            e.stopImmediatePropagation();\n            e.stopPropagation();\n        });\n        this.addEventListener(\"mouseleave\", (e) => {\n            e.preventDefault();\n            e.stopImmediatePropagation();\n            e.stopPropagation();\n        });\n        this.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n            if (e.key == \"Enter\") {\n                e.stopImmediatePropagation();\n                e.stopPropagation();\n            }\n        });\n    }\n\n    private async onChange(ev_: CustomEventInit) {\n        if (ev_.detail.value != undefined) {\n            const changeFunction = async () => {\n                const apiDataPromise = this.Set({\n                    name: this.group,\n                    modifications: [{\n                        target: this.name,\n                        type: this._type,\n                        value: ev_.detail.value\n                    }]\n                });\n                if (await apiDataPromise) {\n                    await this.UpdateAll(true);\n                    this.UpdateHighlight(ConfiguratorApiDataService.Data[this.group]?.[\"instance-ident\"] as unknown as number || 0);\n                }\n            };\n\n            const changePromise = changeFunction();\n            if (this.constrainedInput) {\n                this.constrainedInput.FinalizeClickPromise = changePromise;\n            }\n            await changePromise;\n        }\n    }\n\n    private onFocus(): void {\n        this._previousTransform = this.style.transform;\n        this.style.transform = \"\";\n    }\n\n    private onBlur(): void {\n        this.style.transform = this._previousTransform;\n    }\n\n    private getDisplayValue(value: number): string {\n        const result = (value * this.Unitifier).toFixed(this.Digits);\n        return result.replace(\".\", this.decimalDivider);\n    }\n\n    public get Unit(): Units {\n        if (this._type == \"float\") {\n            return super.Unit;\n        }\n        return \"error\";\n    }\n    public get Unitifier(): number {\n        switch (this.Unit) {\n            case \"cm\":\n                return 0.1;\n            case \"m\":\n                return 0.001;\n            case \"mm\":\n            default:\n                return 1;\n        }\n    }\n    public get UnitLongname(): string {\n        if (this._type == \"float\") {\n            switch (this.Unit) {\n                case \"cm\":\n                    return LocaleService.translate(\"unit.name.cm\");\n                case \"m\":\n                    return LocaleService.translate(\"unit.name.m\");\n                case \"mm\":\n                    return LocaleService.translate(\"unit.name.mm\");\n            }\n        }\n        return \"\";\n    }\n    public get Digits(): number {\n        if (this._type == \"float\") {\n            return super.Digits;\n        }\n        return 0;\n    }\n\n\n    private _type: \"int\" | \"float\" = \"float\";\n\n    protected render(): TemplateResult<1> {\n        if (ConfiguratorApiDataService.Data) {\n            const elementData = this.Data.first;\n            this._type = elementData.type == \"int\" ? \"int\" : \"float\";\n            if (elementData.type.length < 1) {\n                this.classList.add(\"hidden\");\n                return this.createTemplate(html``);\n            }\n            this.classList.remove(\"hidden\");\n\n            this.min = elementData.min !== undefined ? elementData.min as number : this.min;\n            this.max = elementData.max !== undefined ? elementData.max as number : this.max;\n            if (elementData.max == undefined || elementData.min == undefined || elementData.value == undefined) return this.createTemplate(html`<div>Data Wrong for this Type of Element! (no min, no max or no value)</div>`);\n            this.value = elementData.value as number;\n            const minMaxEqual = this.min === this.max;\n            const nametxt = this.nameTextOverwrite.length > 0 ? this.nameTextOverwrite : this.TextId;\n            const titleMinMax = this.getDisplayValue(this.min) + \" - \" + this.getDisplayValue(this.max) + \" \" + this.UnitLongname;\n\n            return this.createTemplate(html`\n                ${!this.hideTitle ? html`\n                    <div class=\"label-outer-container\">\n                        <div class=\"label-container\">\n                            <span i18n=\"${nametxt}\">${LocaleService.translate(nametxt, nametxt)}</span>\n                            ${this.index != undefined && !this.hideAlternativeName ? html`<span i18n=\"index-alternative-${this.nameTextOverwrite}-${this.index}\">${LocaleService.translate(this.nameTextOverwrite + \"-\" + this.index, (this.index + 1).toString())}</span>` : html``}\n                        </div>\n                        ${this.showMinMaxTitle && !minMaxEqual ? html`\n                            <div class=\"label-min-max-container\">\n                                <span>${titleMinMax}</span>\n                            </div>` : html``}\n                    </div>` : html``}\n\n                <div class=\"input-container\">\n                    <span class=\"input-inner-container\">\n                        <fv-constrained-input\n                            @change=\"${this.onChange}\"\n                            @focus=${this.onFocus}\n                            @blur=${this.onBlur}\n                            min=\"${this.min}\"\n                            max=\"${this.max}\"\n                            value=\"${this.value}\"\n                            step=\"${this.step}\"\n                            unit=\"${this.Unit}\"\n                            decimal-divider=\"${this.decimalDivider}\"\n                            decimals=\"${this.Digits}\"\n                            ?no-min-max-check=\"${this.noMinMaxCheck}\"\n                            ?hide-unused-unit-container=\"${this.hideUnusedUnitContainer}\"\n                            ?hide-unused-unit-container-when-disabled=\"${this.hideUnusedUnitContainerWhenDisabled}\"\n                            pool-repeated-button-clicks\n                            ?show-increase-decrease=\"${!this.hideIncreaseDecreaseButtons}\">\n                            <div slot=\"increase\" class=\"increase-button\">\n                                <div class=\"increase-button-horizontal-container\">\n                                    <div class=\"increase-button-horizontal\"></div>\n                                </div>\n                                <div class=\"increase-button-vertical-container\">\n                                    <div class=\"increase-button-vertical\"></div>\n                                </div>\n                            </div>\n                            <div slot=\"decrease\" class=\"decrease-button\"></div>\n                        </fv-constrained-input>\n                    </span>\n                </div>\n            `);\n        }\n        return this.createTemplate(html``);\n    }\n}\n","import { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport { until } from \"lit/directives/until.js\"\nimport { ConfiguratorFormBaseElement } from \"./configurator.form.base.element.component\";\nimport style from \"./configurator.form.element.option.selection.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { CommunicationMessageService, LocaleService } from \"@dh-software/webui-api\";\nimport { IConfiguratorApiDataOptionsTexts, IConfiguratorApiDataOptionsImages } from \"@dh-software/webui-types\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\nimport { MediaService } from \"../../../utils/media.service\";\nimport { ConfiguratorFormBase, FormElementInfo } from \"../configurator.form.base\"\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\nimport { EventHandlerEvent } from \"../../../models/event-handler/event.handler.model\";\n\ninterface IConfiguratorApiDataOptionsChildren {\n    option: string;\n    elements: Array<FormElementInfo>;\n}\n\ninterface IConfiguratorApiDataOptionsTitles {\n    option: string;\n    title: string;\n}\n\ninterface IConfiguratorApiDataOptionsSubtitles {\n    option: string;\n    subtitle: string;\n}\n\ninterface IOptionSelectionCreateInfo {\n    option: string;\n    active: boolean;\n    disabled: boolean;\n    text?: IConfiguratorApiDataOptionsTexts;\n    image?: IConfiguratorApiDataOptionsImages;\n    children?: IConfiguratorApiDataOptionsChildren;\n    title?: IConfiguratorApiDataOptionsTitles;\n    subtitle?: IConfiguratorApiDataOptionsSubtitles;\n}\n\n\n@customElement(\"fv-configurator-form-element-option-selection\")\nexport class ConfiguratorFormElementOptionSelection extends ConfiguratorFormBaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Boolean, reflect: true, attribute: \"hide-title\" })\n    public hideTitle = false; // TODO: move into ConfiguratorFormBaseElement and use it in all form components!\n\n    @property({ type: Boolean, reflect: true, attribute: \"bordered\" })\n    public bordered = false;\n\n    @property({ type: Array, reflect: true, attribute: \"options-children\" })\n    public optionsChildren: Array<IConfiguratorApiDataOptionsChildren> = [];\n\n    @property({ type: Object, reflect: true, attribute: \"txt-id-mapping\" })\n    public txtIdMapping: { [value: string]: string } = {};\n\n    @property({type: Boolean, reflect: false, attribute: \"additional-option-data-selects-element\"})\n    public additionalOptionDataSelectsElement = false;\n\n    @property({ type: Object, reflect: false, attribute: \"selection-events\" })\n    public selectionEvents: { [key: string]: EventHandlerEvent[] } = {};\n\n\n    private triggerSelectionEvents(triggeredOption: string) {\n        const events = this.selectionEvents[triggeredOption];\n        if (events != undefined) {\n            EventHandlerService.dispatchEventList(events, false);\n        }\n    }\n\n    private async optionClicked(e: Event): Promise<void> {\n        if (e && e.target) {\n            const target = e.target as HTMLElement;\n            const optionElement = target?.closest('[option]');\n            const optionName = optionElement?.getAttribute(\"option\");\n            const targetIsActive = optionElement?.classList.contains(\"active\") || false;\n\n            if (optionName == undefined) {\n                return;\n            }\n            if (target instanceof ConfiguratorFormBaseElement) {\n                return;\n            }\n\n            let targetOption = optionName ? optionName : \"\";\n            const allowEmptySelection = this.Data.first?.additional?.[\"allow-empty-selection\"] as boolean;\n            if (allowEmptySelection && targetIsActive) {\n                targetOption = \"\";\n            }\n\n            if (this.additionalOptionDataSelectsElement) {\n                if (this.Data.first && this.Data.first.additional && this.Data.first.additional.options) {\n                    const target = (this.Data.first.additional.options as [{option: string, data: string}]).find(entry => entry.option == targetOption);\n                    if (target != undefined) {\n                        const result = await CommunicationMessageService.getPlanningObjectByGuid([target.data]);\n                        if (result != undefined) {\n                            const ii = result[target.data];\n                            if (ii != undefined) {\n                                this.triggerSelectionEvents(targetOption);\n                                await CommunicationMessageService.selectObjectInScene(ii);\n                                await ConfiguratorApiDataService.Fetch(true, true);\n                                await this.UpdateAll(true);\n                            }\n                        }\n                        return;\n                    }\n                }\n            }\n\n            const result = await this.Set({\n                name: this.group,\n                modifications: [{\n                    target: this.name,\n                    type: \"string\",\n                    value: targetOption\n                }]\n            });\n            if (result) {\n                this.triggerSelectionEvents(targetOption);\n                await this.UpdateAll(true);\n            }\n        }\n    }\n\n    private createOption(createInfo_: IOptionSelectionCreateInfo): TemplateResult<1> {\n        const txt = this.txtIdMapping[createInfo_.option] ?\n            this.txtIdMapping[createInfo_.option] : createInfo_.text?.txt?.length ?\n                createInfo_.text.txt : createInfo_.option;\n\n        const title = createInfo_.title?.title ?? \"\";\n        const subtitle = createInfo_.subtitle?.subtitle ?? \"\";\n\n        // Title -> Subtitle -> Text. Each new line is only emitted when present, so options\n        // without titles/subtitles render exactly as before (just the text line).\n        const texts = html`\n            ${title ? html`<fv-label class=\"option-title\" i18n=\"${title}\">${title}</fv-label>` : html``}\n            ${subtitle ? html`<fv-label class=\"option-subtitle\" i18n=\"${subtitle}\">${subtitle}</fv-label>` : html``}\n            <fv-label class=\"option-text\" i18n=\"${txt}\">${txt}</fv-label>`;\n\n        if (createInfo_.image) {\n            const imgSrc = MediaService.getUrl(createInfo_.image.manufacturer, createInfo_.image.program, createInfo_.image.type, createInfo_.image.name, true, false);\n            return html`\n                <div\n                    @click=\"${this.optionClicked}\"\n                    class=\"option image ${this.bordered ? \"bordered\" : \"\"}${createInfo_.active ? \" active\" : \"\"}\"\n                    option=\"${createInfo_.option}\"\n                    ?disabled=\"${createInfo_.disabled}\"\n                    >\n                        <img src=\"${imgSrc}\" class=\"option-image\" />\n                        ${texts}\n                </div>\n            `\n        }\n\n        if (this.optionsChildren.length > 0) {\n            const optionElement = document.createElement(\"div\");\n            optionElement.classList = \"option child-items\";\n\n            if (title) {\n                const titleLabel = document.createElement(\"fv-label\");\n                titleLabel.className = \"option-title\";\n                titleLabel.setAttribute(\"i18n\", title);\n                titleLabel.innerHTML = title;\n                optionElement.appendChild(titleLabel);\n            }\n            if (subtitle) {\n                const subtitleLabel = document.createElement(\"fv-label\");\n                subtitleLabel.className = \"option-subtitle\";\n                subtitleLabel.setAttribute(\"i18n\", subtitle);\n                subtitleLabel.innerHTML = subtitle;\n                optionElement.appendChild(subtitleLabel);\n            }\n\n            const label = document.createElement(\"fv-label\");\n            label.className = \"option-text\";\n            label.setAttribute(\"i18n\", txt);\n            label.innerHTML = txt;\n            optionElement.appendChild(label);\n\n            if (createInfo_.active) {\n                createInfo_.children?.elements.forEach(element => {\n                    const form = this.Form;\n                    if (!form) {\n                        return;\n                    }\n\n                    const component = ConfiguratorFormBase.CreateElement(element, this.group, form, this.groupReference);\n                    optionElement.appendChild(component);\n                });\n                optionElement.classList.add(\"active\");\n            }\n            if (createInfo_.disabled) {\n                optionElement.setAttribute(\"disabled\", \"true\");\n            }\n            if (this.bordered) {\n                optionElement.classList.add(\"bordered\");\n            }\n\n            optionElement.addEventListener(\"click\", this.optionClicked.bind(this));\n            optionElement.setAttribute(\"option\", createInfo_.option);\n\n            return html`${optionElement}`;\n        }\n\n        return html`\n            <fv-button\n                @click=\"${this.optionClicked}\"\n                class=\"option ${this.bordered ? \"bordered\" : \"\"}${createInfo_.active ? \" active\" : \"\"}\"\n                option=\"${createInfo_.option}\"\n                ?disabled=\"${createInfo_.disabled}\">\n                    ${title ? html`<span class=\"option-title\" i18n=\"${title}\">${LocaleService.translate(title, title)}</span>` : html``}\n                    ${subtitle ? html`<span class=\"option-subtitle\" i18n=\"${subtitle}\">${LocaleService.translate(subtitle, subtitle)}</span>` : html``}\n                    <span class=\"option-text\" i18n=\"${txt}\">${LocaleService.translate(txt, txt)}</span>\n            </fv-button>`;\n    }\n\n    protected render(): TemplateResult<1> {\n        if (ConfiguratorApiDataService.Data) {\n            const elementData = this.Data.first;\n            const disabledOptions = elementData?.[\"disabled-options\"] as string[] | undefined || [];\n            const optionsTexts = elementData?.[\"options-texts\"] || [];\n            const optionsImages = elementData?.[\"options-images\"] || [];\n            const optionsTitles = (elementData as unknown as { \"options-titles\"?: IConfiguratorApiDataOptionsTitles[] })[\"options-titles\"] || [];\n            const optionsSubtitles = (elementData as unknown as { \"options-subtitles\"?: IConfiguratorApiDataOptionsSubtitles[] })[\"options-subtitles\"] || [];\n\n            if (elementData.type.length < 1) {\n                this.classList.add(\"hidden\");\n                return this.createTemplate(html``);\n            }\n            this.classList.remove(\"hidden\");\n\n            const options = elementData.options as string[] | undefined;\n            if (options == undefined || options.length < 1) {\n                return this.createTemplate(html`No Options!`);\n            }\n\n            const makeOption = (option: string): TemplateResult<1> => {\n                const isDisabled = disabledOptions.includes(option);\n                const isActive = elementData.active === option && !isDisabled;\n                const textData = optionsTexts.find(value => value.option == option);\n                const imageData = optionsImages.find(value => value.option == option);\n                const childrenData = this.optionsChildren.find(value => value.option == option);\n                const titleData = optionsTitles.find(value => value.option == option);\n                const subtitleData = optionsSubtitles.find(value => value.option == option);\n\n                return this.createOption({\n                    option: option,\n                    active: isActive,\n                    disabled: isDisabled,\n                    text: textData,\n                    image: imageData,\n                    children: childrenData,\n                    title: titleData,\n                    subtitle: subtitleData\n                });\n            };\n\n            const nametxt = this.nameTextOverwrite.length > 0 ? this.nameTextOverwrite : this.TextId;\n            return this.createTemplate(html`\n                ${!this.hideTitle ? html`\n                    <div class=\"label-container\">\n                        <span i18n=\"${nametxt}\">${LocaleService.translate(nametxt, nametxt)}</span>\n                    </div>` : html``}\n                <div class=\"options-container\">\n                    ${options.map(option => makeOption(option))}\n                </div>\n            `);\n        }\n        return this.createTemplate(html``);\n    }\n}\n","import {css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport {ConfiguratorFormBaseElement} from \"./configurator.form.base.element.component\";\nimport style from \"./configurator.form.element.option.selection.dropdown.component.sass?inline\";\nimport {customElement, property, query} from \"lit/decorators.js\";\nimport {LocaleService} from \"@dh-software/webui-api\";\nimport {ConfiguratorApiDataService} from \"../../../utils/configurator-api.data.service\";\nimport {DropDownComponent, IDropdownOptions} from \"../../standard/dropdown/dropdown/dropdown.component\";\nimport {IDropdownItem} from \"../../standard/dropdown/dropdown-item/dropdown-item.component\";\n\n\n@customElement(\"fv-configurator-form-element-dropdown-option-selection\")\nexport class ConfiguratorFormElementOptionSelectionDropdown extends ConfiguratorFormBaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({type: Object, reflect: true, attribute: \"txt-id-mapping\"})\n    public txtIdMapping: { [value: string]: string } = {};\n    @property({type: Boolean, reflect: true, attribute: \"bordered\"})\n    public bordered = false;\n\n    @query(\"fv-dropdown\")\n    private _dropdownElement!: DropDownComponent\n\n\n    constructor() {\n        super();\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        this.addEventListener(this._dropdownElement.changedEvent.name, async (ev: CustomEventInit<IDropdownItem>) => {\n            if (ev.detail) {\n                const value = ev.detail.value\n                const changeFunction = async () => {\n                    const apiDataPromise = this.Set({\n                        name: this.group,\n                        modifications: [{\n                            target: this.name,\n                            type: \"string\",\n                            value: value\n                        }]\n                    });\n                    if (await apiDataPromise) {\n                        await this.UpdateAll(true);\n                    }\n                };\n                await changeFunction();\n            }\n        })\n    }\n\n\n    private determineOptionTxt(option: string, txts: { option: string, txt: string }[] | undefined): string {\n        if (txts != undefined) {\n            const found = txts.find(value => value.option == option);\n            if (found != undefined) {\n                return found.txt;\n            }\n        }\n        return option;\n    }\n\n    private createOption(option: string, disabled: string[] | undefined, txts: {\n        option: string,\n        txt: string\n    }[] | undefined): TemplateResult<1> {\n        if (disabled != undefined) {\n            if (disabled.includes(option)) {\n                return html``;\n            }\n        }\n        const txt = this.determineOptionTxt(option, txts);\n        return html`\n            <fv-select-option option=\"${option}\" display-value=\"${txt}\">${txt}</fv-select-option>`;\n    }\n\n    protected render(): TemplateResult<1> {\n        if (ConfiguratorApiDataService.Data) {\n            const data = this.Data.first;\n\n            if (data.type.length < 1) {\n                this.classList.add(\"hidden\");\n                return this.createTemplate(html``);\n            }\n            this.classList.remove(\"hidden\");\n\n            const options = data.options as string[] | undefined;\n            if (options == undefined || options.length < 1) {\n                return this.createTemplate(html`No Options!`);\n            }\n\n            const disabled = data?.[\"disabled-options\"] as string [] | undefined || [];\n            const nametxt = this.nameTextOverwrite.length > 0 ? this.nameTextOverwrite : this.TextId;\n            const optionTexts = data[\"options-texts\"] as { option: string; txt: string; }[] | undefined;\n\n            const dropdownData = <IDropdownOptions>{\n                placeholder: data.placeholder ?? \"\",\n                items: data.options?.filter(x => !disabled.includes(x))?.map(x => {\n                    return <IDropdownItem>{\n                        active: x === data.active,\n                        text: this.determineOptionTxt(x, optionTexts),\n                        value: x\n                    }\n                })\n            }\n            return this.createTemplate(html`\n                <div i18n=\"${nametxt}\">${LocaleService.translate(nametxt, nametxt)}</div>\n                <div class=\"dropdown-container\">\n                    <fv-dropdown .dropdownOptions=\"${dropdownData}\" grow></fv-dropdown>\n                </div>\n            `);\n        }\n        return this.createTemplate(html``);\n    }\n}\n","import { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport { ifDefined } from \"lit/directives/if-defined.js\";\nimport { ConfiguratorFormBaseElement } from \"./configurator.form.base.element.component\";\nimport { Units } from \"../../standard/base/base.component\";\nimport style from \"./configurator.form.element.range.slider.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport {LocaleService} from \"@dh-software/webui-api\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\n\n\n@customElement(\"fv-configurator-form-element-range-slider\")\nexport class ConfiguratorFormElementRangeSliderComponent extends ConfiguratorFormBaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Number, reflect: true })\n    public value = 0;\n    @property({ type: Number, reflect: true })\n    public min = 0;\n    @property({ type: Number, reflect: true })\n    public max = 99999999;\n\n    constructor() {\n        super();\n\n        this.addEventListener(\"slider-release\", async (event_: CustomEventInit)=>{\n            const releaseDetail: { min: number, max: number, value: number } = event_.detail as { min: number, max: number, value: number };\n            this.value = releaseDetail.value;\n\n            if (await this.Set({\n                name: this.group,\n                modifications: [{\n                    target: this.name,\n                    type: this._type,\n                    value: this.value\n                }]\n            })) {\n                await this.UpdateAll(true);\n            }\n        });\n    }\n\n    private _type: \"int\" | \"float\" = \"float\";\n\n    public get Unit(): Units {\n        if (this._type == \"float\") {\n            return super.Unit;\n        }\n        return \"error\";\n    }\n    public get Digits(): number {\n        if (this._type == \"float\") {\n            return super.Digits;\n        }\n        return 0;\n    }\n\n\n    protected render(): TemplateResult<1> {\n        if (ConfiguratorApiDataService.Data) {\n            this._type = this.Data.first.type == \"int\" ? \"int\" : \"float\";\n            if (this.Data.first.type.length < 1) {\n                this.classList.add(\"hidden\");\n                return this.createTemplate(html``);\n            }\n            this.classList.remove(\"hidden\");\n\n            const nametxt = this.nameTextOverwrite.length > 0 ? this.nameTextOverwrite : this.TextId;\n            return this.createTemplate(html`\n                <div class=\"label-outer-container\">\n                    <div class=\"label-container\">\n                        <span i18n=\"${nametxt}\">${LocaleService.translate(nametxt, nametxt)}</span>\n                        ${this.index != undefined && !this.hideAlternativeName ? html`<span i18n=\"index-alternative-${this.nameTextOverwrite}-${this.index}\">${this.index + 1}</span>` : html``}\n                    </div>\n                </div>\n                <div class=\"slider-container\">\n                    <fv-range-slider-input min=\"${ifDefined(this.Data.first.min)}\" max=\"${ifDefined(this.Data.first.max)}\" value=\"${ifDefined(this.Data.first.value)}\" decimals=\"${this.Digits}\" decimal-divider=\"${this.decimalDivider}\" unit=\"${this.Unit}\"></fv-range-slider-input>\n                </div>\n            `);\n        }\n        return this.createTemplate(html``);\n    }\n}\n","import { ConfiguratorFormBaseElement } from \"./configurator.form.base.element.component\";\nimport { CSSResultGroup, TemplateResult, css, unsafeCSS, html } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport style from \"./configurator.form.element.shared.range.slider.component.sass?inline\";\nimport { SharedRangeSliderInputChangeData, SharedRangeSliderInputComponent } from \"../../standard/input/range-slider/shared.range.slider.input.component\";\nimport { ConfiguratorFormBase, FormElementInfo } from \"../configurator.form.base\";\nimport { LocaleService } from \"@dh-software/webui-api\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\n\n\n@customElement(\"fv-configurator-form-element-shared-range-slider\")\nexport class ConfiguratorFormElementSharedRangeSliderComponent extends ConfiguratorFormBaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true, attribute: \"float-unit\" })\n    public floatUnit = \"cm\";\n    @property({ type: Object, reflect: true, attribute: \"left-input-replacement\" })\n    public leftInputReplacement: FormElementInfo | undefined = undefined;\n    @property({ type: Object, reflect: true, attribute: \"right-input-replacement\" })\n    public rightInputReplacement: FormElementInfo | undefined = undefined;\n    @property({ type: String, reflect: true, attribute: \"range-slider-input-class\" })\n    public rangeSliderInputClass = \"\";\n    @property({ type: Boolean, reflect: true, attribute: \"trigger-change-on-mousemove\" })\n    public triggerChangeOnMousemove = false;\n    @property({ type: Number, reflect: true, attribute: \"mousemove-change-trigger-distance\" })\n    public mousemoveChangeTriggerDistance = 10.0;\n\n\n    @query(\"fv-shared-range-slider-input\")\n    public sharedRangeSliderInput: SharedRangeSliderInputComponent | undefined;\n\n    constructor() {\n        super();\n\n        this.addEventListener(\"sharedrangesliderinputchange\", async (event: CustomEventInit<SharedRangeSliderInputChangeData>) => {\n            const performChange = async () => {\n                if (event.detail) {\n                    const leftName = this.names[0];\n                    const leftData = this.Data.first;\n                    if (leftData.value == undefined) return;\n                    const leftType = ConfiguratorApiDataService.GetModificationType(leftData.type);\n                    if (leftType == \"error\") return;\n\n                    // const rightName = this.names[1];\n                    const rightData = this.Data.last;\n                    if (rightData.value == undefined) return;\n                    const rightType = ConfiguratorApiDataService.GetModificationType(rightData.type);\n                    if (rightType == \"error\") return;\n\n                    if (await this.Set({\n                        name: this.group,\n                        modifications: [{\n                            target: leftName,\n                            type: leftType,\n                            value: event.detail.left\n                        }/*, {\n                            target: rightName,\n                            type: rightType,\n                            value: event.detail.right\n                        } */]\n                    }, event.detail[\"triggered-from-move\"], event.detail[\"triggered-from-move\"])) {\n                        await this.UpdateAll(event.detail[\"triggered-from-move\"], [this]);\n                    }\n                }\n            };\n            const changePromise = performChange();\n            if (this.sharedRangeSliderInput) {\n                this.sharedRangeSliderInput.FinalizeChangePromise = changePromise;\n            }\n            await changePromise;\n        });\n    }\n\n    private getDigits(type_: string) {\n        if (type_ == \"float\") return this.floatDigits;\n        return 0;\n    }\n    private getUnit(type_: string): string {\n        return type_ == \"float\" ? this.floatUnit : \"no\";\n    }\n\n    protected get ValueInfo(): Array<string> {\n        return ConfiguratorApiDataService.GetValueInfo(this.group, this.groupReference, this.names);\n    }\n\n    protected MakeInputReplacement(property: FormElementInfo | undefined, slotPrefix: string): TemplateResult<1> {\n        if (property == undefined) {\n            return html``;\n        }\n        if (this.Form == undefined) {\n            return html``;\n        }\n\n        if (property.name) {\n            const targetFormElementData = ConfiguratorApiDataService.Get(this.group, this.groupReference, property.name);\n            if (targetFormElementData.type === \"\") {\n                return html``;\n            }\n        }\n        if (property.names) {\n            for (const name of property.names) {\n                const targetFormElementData = ConfiguratorApiDataService.Get(this.group, this.groupReference, name);\n                if (targetFormElementData.type === \"\") {\n                    return html``;\n                }\n            }\n        }\n\n        let name = property.name ? property.name : \"\";\n        if (property.names != undefined) {\n            for (const elementName of property.names) {\n                name += elementName;\n                name += \"-\";\n            }\n            name = name.substring(0, name.length - 1);\n        }\n\n        const component = ConfiguratorFormBase.CreateElement(property, this.group, this.Form, this.groupReference);\n        component.id = \"id-\" + name;\n\n        const slot = document.createElement(\"slot\");\n        slot.name = \"slot-\" + name;\n\n        const container = document.createElement(\"div\");\n        container.classList.add(\"input-form-element\");\n        container.slot = slotPrefix + \"-input-overwrite-slot\";\n        container.appendChild(component);\n        container.appendChild(slot);\n\n        return html`${container}`;\n    }\n\n    protected render(): TemplateResult<1> {\n        if (this.names.length < 2) {\n            console.error(\"fv-configurator-form-element-shared-range-slider: too few names in json(should be exactly 2)!\", this.names);\n            return html``;\n        }\n        if (this.names.length > 2) {\n            console.error(\"fv-configurator-form-element-shared-range-slider: too many names in json(should be exactly 2)!\", this.names);\n            return html``;\n        }\n\n        const leftName = this.names[0];\n        const leftData = this.Data.first;\n        if (leftData.type === \"\") {\n            return html``;\n        }\n\n        const rightName = this.names[1];\n        const rightData = this.Data.last;\n        if (rightData.type === \"\") {\n            return html``;\n        }\n\n        const disableInput = leftData.min == leftData.max;\n        const textName = leftName + \"-\" + rightName;\n        const textLabel = LocaleService.translate(textName, \"\");\n        return this.createTemplate(html`\n            ${textLabel ? html`\n                <div class=\"label-container\">\n                    <span i18n=\"${textName}\">${textLabel}</span>\n                </div>\n            ` : \"\"}\n            <fv-shared-range-slider-input\n                class=\"${this.rangeSliderInputClass}\"\n                decimals=\"${this.getDigits(leftData.type)}\"\n                decimal-divider=\"${this.decimalDivider}\"\n                unit=\"${this.getUnit(leftData.type)}\"\n                left-value=\"${leftData.value ? leftData.value : 0}\"\n                left-min=\"${leftData.min ? leftData.min : 0}\"\n                left-max=\"${leftData.max ? leftData.max : 9999999}\"\n                left-placeholder=\"${leftData.text ? leftData.text : \"\"}\"\n                right-value=\"${rightData.value ? rightData.value : 0}\"\n                right-min=\"${rightData.min ? rightData.min : 0}\"\n                right-max=\"${rightData.max ? rightData.max : 9999999}\"\n                right-placeholder=\"${rightData.text ? rightData.text : \"\"}\"\n                ?disabled=\"${disableInput}\"\n                ?trigger-change-on-mousemove=\"${this.triggerChangeOnMousemove}\"\n                mousemove-change-trigger-distance=\"${this.mousemoveChangeTriggerDistance}\">\n                ${this.MakeInputReplacement(this.leftInputReplacement, \"left\")}\n                ${this.MakeInputReplacement(this.rightInputReplacement, \"right\")}\n            </fv-shared-range-slider-input>\n        `);\n    }\n}\n","import { CSSResultGroup, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport { ConfiguratorFormBaseElement } from \"./configurator.form.base.element.component\";\nimport style from \"./configurator.form.element.text.input.component.sass?inline\";\nimport { customElement } from \"lit/decorators.js\";\nimport { LocaleService } from \"@dh-software/webui-api\";\nimport { ConfiguratorApiDataService } from \"../../../utils/configurator-api.data.service\";\n\n\n@customElement(\"fv-configurator-form-element-text-input\")\nexport class ConfiguratorFormElementTextInputComponent extends ConfiguratorFormBaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n    }\n\n    protected render(): TemplateResult<1> {\n        if (ConfiguratorApiDataService.Data) {\n            if (this.Data.first.type !== \"string\") {\n                this.classList.add(\"hidden\");\n                return this.createTemplate(html``);\n            }\n\n            this.classList.remove(\"hidden\");\n\n            const txt = this.nameTextOverwrite.length > 0 ? this.nameTextOverwrite : this.TextId;\n            if (this.Data.first.changeable) {\n                return this.createTemplate(html``);\n            }\n            return this.createTemplate(html`<span class=\"unchangeable-txt\" i18n=\"${txt}\">${LocaleService.translate(txt, txt)}</span>`);\n        }\n        return this.createTemplate(html``);\n    }\n};","import { CSSResultGroup, css, unsafeCSS, TemplateResult, html } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport style from \"./configurator.form.wrapper.component.sass?inline\";\nimport { BaseElement } from \"../../standard/base/base.component\";\n\n@customElement(\"fv-configurator-form-wrapper-element\")\nexport class ConfiguratorFormWrapperElementComponent extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: false, attribute: \"group\" })\n    public group: string = \"\";\n\n    @property({ type: String, reflect: false, attribute: \"title\" })\n    public title: string = \"\";\n\n    @property({ type: String, reflect: false, attribute: \"title-suffix\" })\n    public titleSuffix: string = \"\";\n\n    @property({ type: Boolean, reflect: false, attribute: \"toggles\" })\n    public toggles = false;\n\n    @property({ type: Boolean, reflect: false, attribute: \"clickable\" })\n    public clickable = true;\n\n    @property({ type: String, reflect: false, attribute: \"closed-icon\" })\n    public closedIcon = \"\";\n\n    @property({ type: String, reflect: false, attribute: \"open-icon\" })\n    public openIcon = \"\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"starts-closed\" })\n    public startsClosed = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"is-closed\"})\n    public isClosed = false;\n\n    private static closedStates: { [key: string]: boolean } = {};\n\n    connectedCallback() {\n        super.connectedCallback();\n        const key = this.getKey();\n        if (ConfiguratorFormWrapperElementComponent.closedStates[key] === undefined) {\n            ConfiguratorFormWrapperElementComponent.closedStates[key] = this.startsClosed;\n        }\n        this.isClosed = ConfiguratorFormWrapperElementComponent.closedStates[key];\n    }\n\n    private getKey(): string {\n        return `${this.group}-${this.title}`;\n    }\n\n    private handleTitleClick() {\n        if (!this.clickable) {\n            return;\n        }\n\n        const key = this.getKey();\n        this.isClosed = !this.isClosed;\n        ConfiguratorFormWrapperElementComponent.closedStates[key] = this.isClosed;\n    }\n\n    private handleTransitionEnd(event: TransitionEvent) {\n        if (event.propertyName === \"max-height\") {\n            this.dispatchEvent(new CustomEvent(\"wrapper-clicked\", {\n                detail: { key: this.getKey() }\n            }));\n        }\n    }\n\n    private getWrapperTitleClasses() {\n        return {\n            'wrapper-title': true,\n            [`wrapper-title-${this.group}-${this.title}`]: true,\n            'toggling-wrapper-title': this.toggles\n        };\n    }\n\n    private getWrapperClasses() {\n        return {\n            'wrapper': true,\n            [`wrapper-${this.group}-${this.title}`]: true,\n            'closed': this.isClosed,\n            'open': !this.isClosed\n        };\n    }\n\n    private getToggleIconClasses() {\n        const iconClasses = this.isClosed ? this.closedIcon : this.openIcon;\n        const classArray = iconClasses.split(' ').filter(c => c.trim());\n\n        return {\n            'toggle-icon': true,\n            ...Object.fromEntries(classArray.map(c => [c, true]))\n        };\n    }\n\n    private renderTitle() {\n        if (!this.title) {\n            return '';\n        }\n        if (this.titleSuffix == \"\") {\n            return html`<fv-label class=\"custom\" i18n=\"${this.title}\">${this.title}</fv-label>`;\n        }\n        return html`<fv-label class=\"custom\" i18n=\"${this.title}\">${this.title}</fv-label><fv-label i18n=\"${this.titleSuffix}\">${this.titleSuffix}</fv-label>`;\n    }\n\n    private renderToggleIcon() {\n        if (!this.toggles) {\n            return '';\n        }\n        return html`<div class=\"${classMap(this.getToggleIconClasses())}\"></div>`;\n    }\n\n    protected render(): TemplateResult<1> {\n        const containerClass = `wrapper-container wrapper-container-${this.group}-${this.title}`;\n\n        return html`\n            <div class=\"${containerClass}\">\n                <div class=\"${classMap(this.getWrapperTitleClasses())}\">\n                    <slot id=\"title\" name=\"title\"></slot>\n                    <div class=\"wrapper-toggle\" @click=\"${this.handleTitleClick}\">\n                        ${this.renderTitle()}\n                        ${this.renderToggleIcon()}\n                    </div>\n                </div>\n                <div class=\"${classMap(this.getWrapperClasses())}\" @transitionend=\"${this.handleTransitionEnd}\">\n                    <slot></slot>\n                </div>\n            </div>\n        `;\n    }\n}\n","import {css, CSSResultGroup, html, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport style from \"./webcab-enable-disable-button.component.sass?inline\";\nimport {BaseElement} from \"../../standard/base/base.component\";\nimport {WebCabApiService} from \"@dh-software/webui-api\";\nimport {IWebCabApiClick, IWebCabApiUiData } from \"@dh-software/webui-types\";\n\n@customElement(\"fv-webcab-enable-disable-button\")\nexport class WebcabEnableDisableButtonComponent extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({reflect: false, attribute: false})\n    clickDetails: IWebCabApiClick | undefined = undefined\n\n    @property({type: String, reflect: true, attribute: \"customer-type\"})\n    customerType = \"\"\n\n    @property({type: String, reflect: true, attribute: \"config-suffix\"})\n    configSuffix = \"\"\n\n    constructor() {\n        super();\n\n        this.setAttribute(\"component-name\", \"EnableDisableWebCabButton\");\n        this.addEventListener(\"click\", async () => {\n            if (this.clickDetails) {\n                const enable: boolean = parseInt(this.clickDetails.value) > 0;\n                let res: IWebCabApiUiData | undefined = undefined;\n                if (enable) {\n                    res = await WebCabApiService.EnableWebCabs(this.customerType, this.configSuffix, this.clickDetails.InstanceIdentFilter);\n                } else {\n                    res = await WebCabApiService.DisableWebCabs(this.customerType, this.configSuffix, this.clickDetails.InstanceIdentFilter);\n                }\n                if (res) {\n                    // res = await WebCabApi.GetUIs(this.customerType, this.configSuffix);\n                    this.dispatchEvent(new WebCabEnableDisableButtonToggleEvent(res));\n                }\n            }\n        });\n    }\n\n    protected render(): TemplateResult<1> {\n        this.setAttribute(\"exportparts\", \"enable-button,disable-button\");\n\n        if (this.clickDetails) {\n            const enable: boolean = parseInt(this.clickDetails.value) > 0;\n            if (enable) {\n                return html`\n                    <div class=\"button enable\" part=\"enable-button\"></div>`;//enable\n            }\n            return html`\n                <div class=\"button disable\" part=\"disable-button\"></div>`;//disable\n        }\n        return html``;//error click-data not set\n    }\n}\n\n\nexport class WebCabEnableDisableButtonToggleEvent extends CustomEvent<IWebCabApiUiData> {\n    constructor(data_: IWebCabApiUiData) {\n        super(\"webcab-enable-disable-button-toggle\", {detail: data_, bubbles: true, composed: true});\n    }\n}\n","import { html, css, unsafeCSS, TemplateResult } from \"lit\";\nimport { OptionSelectionModalComponent, OptionSelectionModalOption, OptionSelectionOptionClickedEventData } from \"../../standard/modal/option-selection-modal.component\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport style from \"./webcab-option-selection.component.sass?inline\";\nimport {WebCabApiService} from \"@dh-software/webui-api\";\nimport { IBulkValueModification, IWebCabApiUiComponentsData } from \"@dh-software/webui-types\";\n\n@customElement(\"fv-webcab-option-selection\")\nexport class WebCabOptionSelection extends OptionSelectionModalComponent {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property()\n    webcabSettings: WebCabOptionSelectionSettings = {\n        \"close-on-active-option-click\": false,\n        manufacturer: \"\",\n        program: \"\",\n        \"ui-type\": \"\"\n    }\n\n    @property()\n    configurationState: \"\" | \"open\" = \"\";\n\n\n    private planning = \"\";\n    private configuration = false;\n    private activeOption: WebCabOptionSelectionActiveOption = { key: \"\", option: { replacers: {} }, \"option-element\": undefined };\n\n    constructor() {\n        super();\n\n        this.addEventListener(\"option-selection-option-clicked\", this.onOptionSelectionClicked);\n\n        this.addEventListener(\"option-selection-options-hidden\", ()=>{\n            this.close(true);\n        });\n    }\n\n    private onOptionSelectionClicked(ev: any): void {\n        const eventDetail: OptionSelectionOptionClickedEventData = ev.detail;\n        const option: HTMLDivElement = eventDetail[\"option-element\"];\n\n        // skip as needed\n        if ( this.webcabSettings[\"close-on-active-option-click\"] && option.classList.contains(\"active\") ) {\n            this.continue();\n            return;\n        }\n\n        // set values based on clicked element\n        const additional = eventDetail && eventDetail.option ? eventDetail.option[\"additional-data\"] : undefined;\n        if ( additional ) {\n            this.planning = additional && additional[\"planning-name\"] ? additional[\"planning-name\"] as string : \"\";\n            this.configuration = additional && additional[\"show-configuration\"] ? additional[\"show-configuration\"] as boolean : false;\n            this.activeOption.key = eventDetail.key;\n            this.activeOption.option = eventDetail.option;\n            this.activeOption[\"option-element\"] = eventDetail[\"option-element\"];\n        }\n\n        // dispatch additional Event\n        this.dispatchEvent(new WebCabOptionSelectionOptionClicked(eventDetail));\n\n        //enable control-button\n        const controls: HTMLDivElement | null = this.shadowRoot ? this.shadowRoot?.querySelector(\".controls-container\") : null;\n        if ( controls ) {\n            controls.part.remove(\"controls-disabled\");\n            controls.classList.remove(\"disabled\");\n        }\n    }\n\n\n    private getControls() {\n        return {\n            \"container-class\": this.activeOption.key.length > 0 ? \"\" : \" disabled\",\n            \"container-part\": this.activeOption.key.length > 0 ? \"\": \"controls-disabled\"\n        };\n    }\n\n    private basicRender(containerClass: string, containerPart: string) {\n        return super.buildContent(html`\n            <div class=\"controls-container${containerClass}\" part=\"${containerPart}\">\n                <slot name=\"controls\"></slot>\n            </div>\n        `);\n    }\n    private configurationRender(containerClass: string, containerPart: string): TemplateResult<1> {\n        return super.build(html`\n            <div class=\"configuration-container\">\n                <slot name=\"configuration\"></slot>\n            </div>\n            <div class=\"controls-container${containerClass}\" part=\"${containerPart}\">\n                <slot name=\"controls\"></slot>\n            </div>\n        `);\n    }\n\n    render(): TemplateResult<1> {\n        const controls = this.getControls();\n\n        let content: unknown = undefined;\n        if ( this.configurationState.length > 0 ) {\n            content = this.configurationRender(controls[\"container-class\"], controls[\"container-part\"]);\n        }\n        if ( !content ) {\n            content = this.basicRender(controls[\"container-class\"], controls[\"container-part\"]);\n        }\n\n        this.dispatchEvent(new WebcabOptionSelectionRenderedEvent());\n        return content as TemplateResult<1>;\n    }\n\n    public async continue(): Promise<void> {\n        if ( this.planning.length > 0 ) {\n            if ( this.configuration && this.configurationState.length < 1 ) {\n                this.configurationState = \"open\";// set and thus render anew\n                return;\n            }\n            this.close();\n            this.configurationState = \"\";\n        }\n    }\n\n    public async close(skipHide_ = false): Promise<void> {\n        this.dispatchEvent(new WebCabOptionSelectionSelectionCloseEvent({\n            \"active-option\": {\n                key: this.activeOption.key,\n                option: this.activeOption.option,\n                \"option-element\": this.activeOption[\"option-element\"]\n            },\n            planning: this.planning,\n            configuration: this.configuration\n        }));\n\n        if ( !skipHide_ ) {\n            this.hide();\n        }\n    }\n    public async open(): Promise<void> {\n        this.configurationState = \"\";\n        this.show();\n    }\n\n    public async SetCornerPlanningValues(params_: WebCabCornerPlanningValues, customerType_: string, configuSuffix_?: string | undefined): Promise<void> {\n        const bulk: Array<IBulkValueModification> = new Array<IBulkValueModification>();\n        bulk.push({\n            key: params_.left.instanceIdent,\n            modifications: [\n                { target: \"ItemManager.OuterFrameWidth\", value: params_.left.width.toFixed(2) },\n                { target: \"OuterFrame.Height\", value: params_.left.height.toFixed(2) },\n                { target: \"ItemManager.Depth\", value: params_.left.depth.toFixed(2) }\n            ]\n        });\n        bulk.push({\n            key: params_.right.instanceIdent,\n            modifications: [\n                { target: \"ItemManager.OuterFrameWidth\", value: params_.right.width.toFixed(2) },\n                { target: \"OuterFrame.Height\", value: params_.right.height.toFixed(2) },\n                { target: \"ItemManager.Depth\", value: params_.right.depth.toFixed(2) }\n            ]\n        });\n        await WebCabApiService.BulkModifyValues(customerType_, bulk, configuSuffix_ ? configuSuffix_ : \"\");\n    }\n    public async GetRelevantArticles(): Promise<number[]> {\n        const relevantArticles: Array<number> = new Array<number>();\n        const articles = await WebCabApiService.GetPlanned();\n        for ( const article of articles ) {\n            relevantArticles.push(article.instanceIdent);\n        }\n        // const articles = await CommunicationMessageService.getPlannedArticles();\n        // for ( const article of articles ) {\n        //     if ( article.keys.includes(10017) || article.keys.includes(10019) ) {// Check if article has the WebCab-Key\n        //         relevantArticles.push(article.instanceIdent);\n        //     }\n        // }\n        return relevantArticles;\n    }\n\n    public async GetUiFromPoConfig(manufacturer_: string, program_: string, article_: string, configSuffix_: string, customerType_: string, forceCorner_: boolean): Promise<IWebCabApiUiComponentsData> {\n        return await WebCabApiService.GetUiFromPoConfig(manufacturer_, program_, article_, configSuffix_, customerType_, forceCorner_);\n    }\n}\n\nexport interface WebCabOptionSelectionSettings {\n    \"close-on-active-option-click\": boolean,\n    manufacturer: string,\n    program: string,\n    \"ui-type\": string\n}\nexport interface WebCabPlanningValues {\n    instanceIdent: number,\n    height: number,\n    width: number,\n    depth: number\n}\nexport interface WebCabCornerPlanningValues {\n    left: WebCabPlanningValues,\n    right: WebCabPlanningValues\n}\n\nexport class WebCabOptionSelectionOptionClicked extends CustomEvent<OptionSelectionOptionClickedEventData> {\n    constructor(callbackData_: OptionSelectionOptionClickedEventData) {\n        super(\"webcab-option-selection-option-clicked\", { detail: callbackData_, bubbles: true });\n    }\n}\n\nexport class WebcabOptionSelectionRenderedEvent extends CustomEvent<unknown> {\n    constructor() {\n        super(\"webcab-option-selection-rendered\", { detail: {}, bubbles: true });\n    }\n}\n\nexport interface WebCabOptionSelectionActiveOption {\n    key: string,\n    option: OptionSelectionModalOption,\n    \"option-element\": HTMLDivElement | undefined\n}\nexport interface WebCabOptionSelectionSelectionCloseEventData {\n    \"active-option\"?: WebCabOptionSelectionActiveOption,\n    planning: string,\n    configuration: boolean\n}\nexport class WebCabOptionSelectionSelectionCloseEvent extends CustomEvent<WebCabOptionSelectionSelectionCloseEventData> {\n    constructor(callbackData_: WebCabOptionSelectionSelectionCloseEventData) {\n        super(\"webcab-option-selection-close-event\", { detail: callbackData_, bubbles: true });\n    }\n}\n","import { BaseElement } from \"../../standard/base/base.component\";\nimport style from \"./webcab-display-option-selection.component.sass?inline\";\nimport { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\n// Inlined \"webcabchangeloading\" — avoids importing WebCabChangeLoadingEvent\n// from webcab-ui.component (which depends on this file).\nfunction dispatchWebCabChangeLoading(target: EventTarget, value: boolean): void {\n    target.dispatchEvent(new CustomEvent<boolean>(\"webcabchangeloading\", {\n        bubbles: true,\n        composed: true,\n        detail: value,\n    }));\n}\nimport { SelectionChangeEventInit } from \"../../standard/select/select-option.component\";\nimport { PopUpChangeEventInit } from \"../../standard/select/select.component\";\nimport {LocaleService, WebCabApiService} from \"@dh-software/webui-api\";\nimport {IDisplayOptionSelectionModification, IWebCabApiComponentData, IWebCabApiUiData } from \"@dh-software/webui-types\";\n\n\nexport type WebCabSelectionChangeEventInit = CustomEventInit<{ option: string, element: HTMLElement, uidata: IWebCabApiUiData }>;\nclass WebCabSelectionChangeEvent extends CustomEvent<{ option: string, element: HTMLElement, uidata: IWebCabApiUiData }> {\n    constructor(option: string, element: HTMLElement, uidata: IWebCabApiUiData) {\n        super(\"webcabselectionchange\", {\n            bubbles: true,\n            composed: true,\n            detail: { option: option, element: element, uidata: uidata }\n        } as WebCabSelectionChangeEventInit);\n    }\n}\n\nexport type WebCabPopUpChangeEventInit = CustomEventInit<{ open: boolean, element: WebCabDisplayOptionSelectionComponent }>;\nclass WebCabPopUpChangeEvent extends CustomEvent<{ open: boolean, element: WebCabDisplayOptionSelectionComponent }> {\n    constructor(open: boolean, element: WebCabDisplayOptionSelectionComponent) {\n        super(\"webcabpopupchange\", {\n            bubbles: true,\n            composed: true,\n            detail: { open: open, element: element }\n        } as WebCabPopUpChangeEventInit);\n    }\n}\n\n\n@customElement(\"fv-webcab-display-option-selection\")\nexport class WebCabDisplayOptionSelectionComponent extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Object, reflect: true, attribute: \"component-data\" })\n    public componentData: IWebCabApiComponentData = { name: \"\" };\n\n    @property({ type: Number, reflect: true, attribute: \"max-amount-select-by-buttons\" })\n    public maxAmountSelectByButtons = 3;\n\n    @property({ type: String, reflect: true, attribute: \"customer-type\" })\n    customerType = \"\";\n\n    @property({ type: String, reflect: true, attribute: \"config-suffix\" })\n    configSuffix = \"\";\n\n    @property({ type: Number, reflect: true, attribute: \"instance-ident\" })\n    instanceIdent = -1;\n\n    @property({ type: Boolean, reflect: true, attribute: \"open\" })\n    open = false;\n\n    @property({ type: Object, reflect: true, attribute: \"selected\" })\n    selected: IWebCabApiComponentData | undefined = undefined;\n\n    constructor() {\n        super();\n\n        this.addEventListener(\"selectionchange\", (event: SelectionChangeEventInit)=>{\n            if (event.detail && event.detail.option) {\n                dispatchWebCabChangeLoading(this, true);\n                this.selectOption(JSON.parse(event.detail.option.replaceAll(\"\\\\\\\"\", \"\\\"\"))).then((result)=>{\n                    if (result == undefined || event.detail == undefined || event.detail.option == undefined || event.detail.element == undefined) return;\n                    this.dispatchEvent(new WebCabSelectionChangeEvent(event.detail.option, event.detail.element, result));\n                    dispatchWebCabChangeLoading(this, false);\n                });\n            }\n        });\n\n        this.addEventListener(\"popupchange\", (event: PopUpChangeEventInit)=>{\n            if (event.detail && event.detail.open != undefined) {\n                this.dispatchEvent(new WebCabPopUpChangeEvent(event.detail.open, this));\n            }\n        });\n    }\n\n    private async selectOption(component : IWebCabApiComponentData): Promise<IWebCabApiUiData | undefined> {\n        if (component.click == undefined || component.click.xGroupId == undefined || component.click.xInGroupId == undefined) return undefined;\n\n        this.selected = component;\n\n        const modifications: Array<IDisplayOptionSelectionModification> = [];\n        for (const target of component.click.ModificationTargets) {\n            const modification: IDisplayOptionSelectionModification = {\n                target: target,\n                value: component.click.value,\n                additional: \"\"\n            };\n            const additional: {\n                xGroupId: string,\n                xInGroupId: string,\n                definition: string,\n                zSpaceId?: string,\n            } = {\n                xGroupId: component.click.xGroupId,\n                xInGroupId: component.click.xInGroupId,\n                definition: this.componentData.name\n            };\n            if (component.click.zSpaceId != undefined) additional.zSpaceId = component.click.zSpaceId;\n            modification.additional = JSON.stringify(additional);\n            modifications.push(modification);\n        }\n        return await WebCabApiService.ModifyValues(this.customerType, modifications, this.configSuffix, [this.instanceIdent]);\n    }\n\n    private createOption(component: IWebCabApiComponentData): TemplateResult<1> {\n        return html`<fv-select-option class=\"option\" option=\"${JSON.stringify(component).replaceAll(\"\\\"\", \"\\\\\\\"\")}\" display-value=\"${LocaleService.translate(component.name, component.name)}\">${LocaleService.translate(component.name, component.name)}</fv-select-option>`;\n    }\n\n    private createOptions(components: Array<IWebCabApiComponentData>): Array<TemplateResult<1>> {\n        const result = new Array<TemplateResult<1>>();\n        for (const component of components) {\n            result.push(this.createOption(component));\n        }\n        return result;\n    }\n\n    render(): TemplateResult<1> {\n        if (this.componentData.components == undefined) return html`<div>ERROR!! ${this.componentData.name} - does not define any display options!</div>`;\n\n        const currentValue = this.componentData.attributes ? this.componentData.attributes.value : \"\";\n        const selectedComponent = this.componentData.components.find((value: IWebCabApiComponentData)=>{\n            return value.name === currentValue;\n        });\n        if (this.selected != selectedComponent) {\n            this.selected = selectedComponent;\n        }\n        const selected = selectedComponent != undefined ? JSON.stringify(selectedComponent).replaceAll(\"\\\"\", \"\\\\\\\"\") : \"\";\n\n        if (this.componentData.components.length <= this.maxAmountSelectByButtons) {\n            this.classList.add(\"select-by-buttons\");\n        }\n        else {\n            this.classList.remove(\"select-by-buttons\");\n        }\n\n        return html`\n            <fv-select class=\"container\" max-amount-select-by-buttons=\"${this.maxAmountSelectByButtons}\" i18n-placeholder=\"your_selection\" selected=\"${selected}\" selected-display-value=\"${selectedComponent ? LocaleService.translate(selectedComponent.name, selectedComponent.name) : \"\"}\" ?open=\"${this.open}\">\n                ${this.createOptions(this.componentData.components)}\n            </fv-select>\n        `;\n    }\n}\n","import { css, html, unsafeCSS, TemplateResult, PropertyValues } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport style from \"./webcab-value-input.component.sass?inline\";\nimport { BaseElement, Units } from \"../../standard/base/base.component\";\nimport { ConstrainedInputComponent } from \"../../standard/input/contrained-input/constrained.input.component\";\nimport { IGroupModification, ISpaceModification, IValueModification, IWebCabApiUiData, IZSplittingModification } from \"@dh-software/webui-types\";\nimport {WebCabApiService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-webcab-value-input\")\nexport class WebCabValueInputComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private get min () {\n        return this.minValue ? this.minValue : 0.0;\n    }\n    private get max () {\n        return this.maxValue ? this.maxValue : 99999999.99;\n    }\n\n    @property({ type: Number, reflect: true })\n    increment: number | undefined = undefined;\n\n    @property({ type: Number, reflect: true, attribute: \"fraction-digits\" })\n    fractionDigits = 0;\n\n    @property({ type: Number, reflect: true })\n    timeoutms = 500;\n\n    @property({ type: Boolean, reflect: true, attribute: \"prevent-inline-label\" })\n    preventInlineLabel = false;\n\n    @property({ type: String, reflect: true, attribute: \"customer-type\" })\n    customerType = \"\";\n\n    @property({ type: String, reflect: true, attribute: \"config-suffix\" })\n    configSuffix = \"\";\n\n    @property({ type: Number, reflect: true, attribute: \"instance-ident\" })\n    instanceIdent = -1;\n\n    @property({ type: Number, reflect: true })\n    value = 0;\n\n    @property({ type: String, reflect: true })\n    name = \"\";\n\n    @property({ type: String, reflect: true, attribute: \"group-id\" })\n    GroupID: string | undefined = undefined;\n\n    @property({ type: String, reflect: true, attribute: \"in-group-id\" })\n    InGroupID: string | undefined = undefined;\n    @property({ type: String, reflect: true, attribute: \"z-space-id\" })\n    ZSpaceID: string | undefined = undefined;\n\n    @property({ type: String, reflect: true, attribute: \"modification-targets\" })\n    ModificationTargets: string | undefined = undefined;\n\n    @property({ type: Number, reflect: true, attribute: \"min-value\" })\n    minValue: number | undefined = undefined;\n\n    @property({ type: Number, reflect: true, attribute: \"max-value\" })\n    maxValue: number | undefined = undefined;\n\n    @property({ type: String, reflect: true, attribute: \"unit-txt\" })\n    unitTxt: Units = \"error\";\n\n    @property({ type: Number, reflect: true, attribute: \"dim-scale\" })\n    dimScale: number | undefined = undefined;\n\n\n    private oldvalue = 0;\n\n    constructor() {\n        super();\n    }\n    private change(ev_: Event) {\n        const target: ConstrainedInputComponent = ev_.target as ConstrainedInputComponent;\n        if ( target ) {\n            const changeEventData: WebCabValueInputChangedData = {\n                \"old-value\": this.value,\n                value: 0\n            };\n            this.value = target.value;\n            changeEventData.value = this.value;\n\n            const changeEvent = new WebCabValueInputChanged(changeEventData);\n            this.dispatchEvent(changeEvent);\n        }\n    }\n\n    private applyDimScale(value_: number) {\n        if (this.dimScale) {\n            return value_ * (1 / this.dimScale);\n        }\n        return value_;\n    }\n\n    render(): TemplateResult<1> {\n        const increase = this.value != this.max, decrease = this.value != this.min;\n\n        const additionalSuffix = this.querySelector(\"[slot='additional-suffix']\");\n\n        const hasInlinesuffix = this.unitTxt != undefined && this.unitTxt.length > 0 && this.unitTxt != \"error\";\n        const inlineSuffix = hasInlinesuffix ? \" \"+this.unitTxt : \"\";\n        const result = html`\n            <div class=\"label-outer-container${this.preventInlineLabel ? \"\" : \" inline\"}\">\n                <div class=\"label-container\">\n                    <span><slot name=\"label\"></slot></span>\n                </div>\n                <div part=\"label-suffixes-container\" class=\"label-suffixes-container\">\n                    <div part=\"min-max-label\" class=\"label-suffix-container\">\n                        <span><label part=\"min-label\" class=\"minmax-labels\">${this.min.toFixed(this.fractionDigits) + inlineSuffix}</label></span>\n                        <span><label part=\"min-max-label-dash\" class=\"min-max-label-dash\"> - </label></span>\n                        <span><label part=\"max-label\" class=\"minmax-labels\">${this.max.toFixed(this.fractionDigits) + inlineSuffix}</label></span>\n                    </div>\n                    ${ additionalSuffix != undefined ? html`<div part=\"additional-suffix-container\"><slot name=\"additional-suffix\"></slot></div>` : html`` }\n                </div>\n            </div>\n            <fv-constrained-input \n                    @change=\"${this.change}\"\n                    min=\"${this.minValue ? this.applyDimScale(this.minValue) : 0}\"\n                    max=\"${this.maxValue ? this.applyDimScale(this.maxValue) : 0}\"\n                    value=\"${this.value ? this.applyDimScale(this.value) : 0}\"\n                    step=\"${this.increment ? this.increment : 1}\"\n                    decimals=\"${this.fractionDigits}\"\n                    unit=\"${this.unitTxt}\"\n                    timeoutms=\"${this.timeoutms}\"\n                    show-increase-decrease hide-unused-unit-container pool-repeated-button-clicks>\n\n                <div slot=\"increase\" part=\"increase-button${increase ? \"\" : \" disabled\"}\" class=\"indecrease-button increase-button${increase ? \"\" : \" disabled\"}\">\n                    <slot name=\"increase-button\"></slot>\n                </div>\n                <div slot=\"decrease\" part=\"decrease-button${decrease ? \"\" : \" disabled\"}\" class=\"indecrease-button decrease-button${decrease ? \"\" : \" disabled\"}\">\n                    <slot name=\"decrease-button\"></slot>\n                </div>\n\n            </fv-constrained-input>\n        `;\n        this.oldvalue = this.value;\n\n        this.setAttribute(\"exportparts\", \"label-suffixes-container, additional-suffix-container, min-max-label, min-label, min-max-label-dash, max-label, input, input-suffix-container, input-suffix, increase-button, decrease-button, disabled\");\n        return result;\n    }\n\n    async updated(_changedProperties: PropertyValues): Promise<void> {\n        super.updated(_changedProperties);\n        this.dispatchEvent(new WebCabValueInputRenderedEvent());\n    }\n\n    private async refreshComponent(uidata_?: IWebCabApiUiData | undefined) {\n        if ( this.name && this.name.length > 0 ) {\n            let uidata = uidata_;\n            if (uidata_ == undefined) {\n                uidata = await WebCabApiService.GetUIs(this.customerType, this.configSuffix, [this.instanceIdent]);\n            }\n            if (uidata != undefined && uidata[this.instanceIdent] != undefined && uidata[this.instanceIdent].components != undefined) {\n                const components = uidata[this.instanceIdent].components;\n                for (const component of components) {\n                    if (component && component.name === this.name) {\n                        if (component.change) {\n                            this.GroupID = component.change.GroupID ? component.change.GroupID : undefined;\n                            this.InGroupID = component.change.InGroupID ? component.change.InGroupID : undefined;\n                            this.ModificationTargets = component.change.ModificationTargets ? JSON.stringify(component.change.ModificationTargets) : undefined;\n                        }\n                        if (component.attributes) {\n                            this.maxValue = component.attributes.max;\n                            this.minValue = component.attributes.min;\n                            this.unitTxt = component.attributes[\"unit-txt\"] == \"\" ? \"error\" : component.attributes[\"unit-txt\"];\n                        }\n                        return;\n                    }\n                }\n            }\n        }\n    }\n\n    public dispatchLoadingEvent(loading_: boolean, uiData_?: IWebCabApiUiData): void {\n        this.dispatchEvent(new CustomEvent(\"webcab-value-input-loading\", { detail: { loading: loading_, uiData: uiData_ }, bubbles: true, composed: true }));\n    }\n    public async ChangeCount(preventLimitToInstanceIdent_ = false): Promise<void> {\n        if ( this.oldvalue != this.value ) {\n            if (!this.GroupID) {\n                console.error(\"groupId invalid:\", this.GroupID);\n                return;\n            }\n            if (!this.ModificationTargets) {\n                console.error(\"ModificationTargets invalid!\");\n                return;\n            }\n\n            this.dispatchLoadingEvent(true);\n\n            const modificationTargets: Array<string> = JSON.parse(this.ModificationTargets);\n            const modifications: Array<IGroupModification> = [];\n            for (const target of modificationTargets) {\n                modifications.push({\n                    GroupID: this.GroupID,\n                    target: target,\n                    value: this.value.toFixed(0)\n                });\n            }\n            const uidata = await WebCabApiService.ModifyGroups(this.customerType, modifications, this.configSuffix, preventLimitToInstanceIdent_ ? undefined : [this.instanceIdent]);\n            await this.refreshComponent(uidata);\n\n            this.dispatchLoadingEvent(false, uidata);\n        }\n    }\n    public async ModifyFloatValue(preventLimitToInstanceIdent_ = false): Promise<void> {\n        if ( this.oldvalue != this.value ) {\n            if (this.ModificationTargets == undefined) {\n                console.error(\"ModificationTargets are not set!\");\n                return;\n            }\n\n            this.dispatchLoadingEvent(true);\n\n            const modificationTargets: Array<string> = JSON.parse(this.ModificationTargets);\n            const modifications: Array<IValueModification> = [];\n            for (const target of modificationTargets) {\n                modifications.push({\n                    target: target,\n                    value: this.value.toFixed(2)\n                });\n            }\n            const uidata = await WebCabApiService.ModifyValues(this.customerType, modifications, this.configSuffix, preventLimitToInstanceIdent_ ? undefined : [this.instanceIdent]);\n            await this.refreshComponent(uidata);\n\n            this.dispatchLoadingEvent(false, uidata);\n        }\n    }\n    public async ModifyZSplitting(preventLimitToInstanceIdent_ = false, isFloat: boolean): Promise<void> {\n        if ( this.oldvalue != this.value ) {\n            if (this.ModificationTargets == undefined) {\n                console.error(\"ModificationTargets are not set!\");\n                return;\n            }\n\n            this.dispatchLoadingEvent(true);\n\n            const modificationTargets: Array<string> = JSON.parse(this.ModificationTargets);\n            const modifications: Array<IZSplittingModification> = [];\n            for (const target of modificationTargets) {\n                modifications.push({\n                    XGroupID: this.GroupID ? this.GroupID : \"\",\n                    XInGroupID: this.InGroupID ? this.InGroupID : \"\",\n                    ZSpaceIndex: this.ZSpaceID ? this.ZSpaceID : undefined,\n                    target: target,\n                    value: isFloat ? this.value.toFixed(2) : this.value.toFixed(0)\n                });\n            }\n\n            await WebCabApiService.ModifyZSplitting(this.customerType, modifications, this.configSuffix, preventLimitToInstanceIdent_ ? undefined : [this.instanceIdent]);\n            const uidata = await WebCabApiService.GetUIs(this.customerType, this.configSuffix, preventLimitToInstanceIdent_ ? undefined : [this.instanceIdent]);\n            await this.refreshComponent(uidata);\n\n            this.dispatchLoadingEvent(false, uidata);\n        }\n    }\n    public async ModifySingleSpace(preventLimitToInstanceIdent_ = false): Promise<void> {\n        if ( this.oldvalue != this.value ) {\n            if (!this.GroupID || !this.InGroupID || !this.ModificationTargets) {\n                if (!this.GroupID) {\n                    console.error(\"GroupId invalid:\", this.GroupID);\n                }\n                if (!this.InGroupID) {\n                    console.error(\"InGroupId invalid:\", this.InGroupID);\n                }\n                if (!this.ModificationTargets) {\n                    console.error(\"modificationTarget invalid!\");\n                }\n                return;\n            }\n\n            this.dispatchLoadingEvent(true);\n\n            const modificationTargets: Array<string> = JSON.parse(this.ModificationTargets);\n            const modifications: Array<ISpaceModification> = [];\n            for (const target of modificationTargets) {\n                modifications.push({\n                    GroupID: this.GroupID,\n                    InGroupID: this.InGroupID,\n                    target: target,\n                    value: this.value.toFixed(2)\n                });\n            }\n            await WebCabApiService.ModifySpaces(this.customerType, modifications, this.configSuffix, preventLimitToInstanceIdent_ ? undefined : [this.instanceIdent]);\n            const uidata = await WebCabApiService.GetUIs(this.customerType, this.configSuffix, preventLimitToInstanceIdent_ ? undefined : [this.instanceIdent]);\n            await this.refreshComponent(uidata);\n\n            this.dispatchLoadingEvent(false, uidata);\n        }\n    }\n}\n\nexport class WebCabValueInputRenderedEvent extends CustomEvent<unknown> {\n    constructor() {\n        super(\"webcab-value-input-rendered\", { detail: {}, bubbles: true, composed: true });\n    }\n}\nexport interface WebCabValueInputChangedData {\n    \"old-value\": number,\n    value: number\n}\nexport class WebCabValueInputChanged extends CustomEvent<WebCabValueInputChangedData> {\n    constructor(data_: WebCabValueInputChangedData) {\n        super(\"webcab-value-input-changed\", { detail: data_, bubbles: true, composed: true });\n    }\n}\n","import { css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { WebCabValueInputComponent } from \"./webcab-value-input.component\";\nimport style from \"./webcab-ui.component.sass?inline\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { WebcabEnableDisableButtonComponent } from \"./webcab-enable-disable-button.component\";\nimport type { WebCabDisplayOptionSelectionComponent, WebCabSelectionChangeEventInit } from \"../base/webcab-display-option-selection.component\";\nimport type { WebCabPopUpChangeEventInit } from \"../base/webcab-display-option-selection.component\";\n\n// Runtime-resolved instanceof to keep type narrowing without a static import cycle.\nfunction isDisplayOptionSelection(el: unknown): el is WebCabDisplayOptionSelectionComponent {\n    const ctor = customElements.get(\"fv-webcab-display-option-selection\");\n    return ctor != undefined && el instanceof ctor;\n}\nimport {\n    IValueModification,\n    IWebCabApiClick,\n    IWebCabApiComponentData,\n    IWebCabApiUiComponentsData,\n    IWebCabApiUiData,\n} from \"@dh-software/webui-types\";\nimport {EventFactoryService, WebCabApiService} from \"@dh-software/webui-api\";\nimport type { ComponentStateHandlerMap } from \"../../../models/event-handler/component-state-event\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\n\ndeclare global {\n    interface ComponentStates {\n        \"fv-webcab-ui:toggle-dimension-visuals\": Record<string, never>;\n    }\n}\n\nexport type WebCabChangeLoadingEventInit = CustomEventInit<boolean>;\nexport class WebCabChangeLoadingEvent extends CustomEvent<boolean> {\n    constructor(value: boolean) {\n        super(\"webcabchangeloading\", {\n            bubbles: true,\n            composed: true,\n            detail: value\n        });\n    }\n}\n\n\nexport type WebCabTemplateReplaceEventInit = CustomEventInit<{ template: string, webcabui: WebCabUiComponent, index: number }>;\nexport class WebCabTemplateReplaceEvent extends CustomEvent<{ template: string, webcabui: WebCabUiComponent, index: number }> {\n    constructor(template: string, webcabui: WebCabUiComponent, index: number) {\n        super(\"webcabtemplatereplace\", {\n            bubbles: true,\n            composed: true,\n            detail: { template: template, webcabui: webcabui, index: index }\n        });\n    }\n}\n\n\n@customElement(\"fv-webcab-ui\")\nexport class WebCabUiComponent extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private openedPopups: Array<string> = [];\n\n    stateHandlers: ComponentStateHandlerMap = {\n        \"fv-webcab-ui:toggle-dimension-visuals\": async () => {\n            await this.SetDisableDimensionVisuals(!await this.GetDisableDimensionVisuals());\n        },\n    };\n\n    private showing = false;\n    private shown = false;\n    private updateEventActive = false;\n    private _components: WebCabUiDataList = {};\n    private _elementControlsComponents: { [key: number]: {[key: string]: IWebCabApiComponentData}} = {};\n\n    private setElementUiComponents(instanceIdent_: number, webcabUiData_: WebCabUiData, preventUpdateRequest_ = false) {\n        this._components[instanceIdent_] = webcabUiData_;\n\n        for (let index = 0; index < this.webcabuis.length; ++index) {\n            if (this.webcabuis[index][\"instance-ident\"] == instanceIdent_) {\n                this.webcabuis[index].disabled = webcabUiData_.disabled;\n            }\n        }\n\n        const controlsTemplate = this.querySelector(this.settings[\"element-controls-template-selector\"]);\n        if (!controlsTemplate) return;\n\n        const componentName = controlsTemplate.getAttribute(\"component-name\");\n        if (!componentName) return;\n\n        const components = webcabUiData_.data[componentName].components;\n        if (components) {\n            this._elementControlsComponents[instanceIdent_] = {};\n\n            for (const component of components) {\n                if (component.name) {\n                    this._elementControlsComponents[instanceIdent_][component.name] = component;\n                }\n            }\n            if (!preventUpdateRequest_) {\n                this.requestUpdate();\n            }\n        }\n    }\n    public get components(): WebCabUiDataList {\n        return this._components;\n    }\n\n    @property({ attribute: false })\n    webcabuis: Array<WebCabObjectUiAttributes> = new Array<WebCabObjectUiAttributes>();\n\n    @property({ type: Object, attribute: true })\n    settings: WebCabUiSettings = {\n        \"object-ui-settings\": {\n            \"customer-type\": \"\",\n            \"config-suffix\": \"\",\n            increment: 0,\n            \"fraction-digits\": 0,\n            \"input-buttons-timeout-ms\": 500,\n        },\n        \"object-heading-template-selector\": \"\",\n        \"controls-template-selector\": \"\",\n        \"element-controls-template-selector\": \"\",\n        \"content-option-selection-template-selector\": \"\",\n        replacers: {\n            \"by-object-ui\": {},\n            general: {}\n        }\n    }\n    private getTemplate(webcabui_: WebCabObjectUiAttributes): string {\n        const headingTemplateElement = this.querySelector(this.settings[\"object-heading-template-selector\"]);\n        const headingTemplate = headingTemplateElement ? headingTemplateElement.innerHTML : \"\";\n\n        const controlsTemplateElement = this.querySelector(this.settings[\"controls-template-selector\"]);\n        if (!controlsTemplateElement) {\n            return \"\";\n        }\n        const controlsTemplate = webcabui_.disabled ? \"\" : controlsTemplateElement.innerHTML;\n\n        return this.applyGeneralReplacers(headingTemplate + controlsTemplate);\n    }\n\n    @property({ type: String, reflect: true, attribute: \"object-ui-exportparts\" })\n    objectUiExportparts = \"\"\n\n    private _loading = false;\n    get loading() {\n        return this._loading;\n    }\n    set loading(loading_: boolean) {\n        this._loading = loading_;\n        if (loading_) {\n            // this.dispatchEvent start\n            return;\n        }\n        // this.dispatchEvent finish\n    }\n    @property({ type: Boolean, reflect: true })\n\n    @property({ type: Boolean, reflect: true })\n    dimmed = false\n\n    @property({ type: String, reflect: true, attribute: \"template-replace-event-result\" })\n    TemplateReplaceEventResult: string | undefined = undefined;\n\n    constructor() {\n        super();\n\n        this.addEventListener(\"webcabstartloading\", (event: WebCabChangeLoadingEventInit)=>{\n            this.loading = event.detail ? event.detail : false;\n        });\n        this.addEventListener(\"webcabselectionchange\", (event: WebCabSelectionChangeEventInit)=>{\n            if (event.detail == undefined) return;\n            const instances = Object.keys(event.detail.uidata);\n            const uidata = this.breakDownUiData(event.detail.uidata);\n            for (const instance of instances) {\n                const instanceIdent = parseInt(instance);\n                this.setElementUiComponents(instanceIdent, uidata[instanceIdent], true);\n            }\n            this.requestUpdate();\n            this.loading = false;\n        });\n\n        this.addEventListener(\"webcab-value-input-loading\", async (event_: CustomEventInit<{ loading: boolean, uiData: IWebCabApiUiData }>)=>{\n            if (event_.detail != undefined) {\n                if (event_.detail.uiData) {\n                    const instances = Object.keys(event_.detail.uiData);\n                    const uidata = this.breakDownUiData(event_.detail.uiData);\n                    for (const instance of instances) {\n                        const instanceIdent = parseInt(instance);\n                        this.setElementUiComponents(instanceIdent, uidata[instanceIdent], true);\n                    }\n                    this.requestUpdate();\n                }\n                this.loading = event_.detail.loading;\n            }\n        });\n        this.addEventListener(\"webcab-enable-disable-button-toggle\", async (event_: CustomEventInit<IWebCabApiUiData>)=>{\n            if (event_.detail) {\n                const instances = Object.keys(event_.detail);\n                const uidata = this.breakDownUiData(event_.detail);\n                for (const instance of instances) {\n                    const instanceIdent = parseInt(instance);\n                    this.setElementUiComponents(instanceIdent, uidata[instanceIdent], true);\n                }\n                this.requestUpdate();\n            }\n        });\n\n        this.addEventListener(\"webcabpopupchange\", (event: WebCabPopUpChangeEventInit)=>{\n            if (event.detail && event.detail.open != undefined && event.detail.element != undefined && event.detail.element.componentData != undefined && event.detail.element.componentData.change != undefined) {\n                const xGroupId = event.detail.element.componentData.change.xGroupId;\n                const xInGroupId = event.detail.element.componentData.change.xInGroupId;\n                const zSpaceId = event.detail.element.componentData.change.zSpaceId;\n                if (xGroupId != undefined && xInGroupId != undefined) {\n                    const zSpaceOpenId = zSpaceId != undefined ? \"-\" + zSpaceId.toFixed(0) : \"\";\n                    const openedId = xGroupId.toFixed(0) + \"-\" + xInGroupId.toFixed(0) + zSpaceOpenId;\n                    if (event.detail.open) {\n                        if (!this.openedPopups.includes(openedId)) {\n                            this.openedPopups.push(openedId);\n                        }\n                    }\n                    else {\n                        const index = this.openedPopups.indexOf(openedId);\n                        if (index != -1) {\n                            this.openedPopups.splice(index, 1);\n                        }\n                    }\n                }\n            }\n        });\n\n        EventFactoryService.SendEvent.register((eventId_)=>{\n            if (this.loading) return;// skip if already loading\n            if (this.shown == false) return;// prevent if not shown\n\n            switch (eventId_) {\n            case 914472533:\n            case 451786:\n                this.updateArticles();\n                break;\n            default:\n                break;\n            }\n        });\n\n        EventFactoryService.LastPOLoaded.register(()=>{\n            if (this.loading) return;// skip if already loading\n            if (this.shown == false) return;// prevent if not shown\n            this.updateArticles();\n        });\n    }\n\n    protected render(): TemplateResult<1> {\n        let exportparts = \"element-ui\";\n        for ( const ui of this.webcabuis) {\n            exportparts += \",nr-\" + ui.index;\n        }\n        this.setAttribute(\"exportparts\", exportparts);\n        this.applyReplacersToSlots();\n\n        return html`\n            <slot name=\"above\"></slot>\n            ${this.webcabuis.map((webcabui) => html`\n                <div class=\"element-ui nr-${webcabui.index}\" part=\"element-ui nr-${webcabui.index}\" instance-ident=\"${webcabui[\"instance-ident\"]}\" ui-index=\"${webcabui.index}\">\n                    ${document.createRange().createContextualFragment(this.getObjectUiTemplate(this.getTemplate(webcabui), webcabui.index, this.webcabuis.length, webcabui[\"instance-ident\"]))}\n                </div>\n            `)}\n        `;\n    }\n\n    private postUpdateEventPromise: Promise<void> | undefined = undefined;\n    protected updated(_changedProperties: PropertyValues): void {\n        super.updated(_changedProperties);\n        this.postUpdateEventPromise = this.postUpdateEvent();\n    }\n    private async postUpdateEvent() {\n        this.loading = true;\n\n        await this.updateElementUIs();\n\n        if (!this.updateEventActive) {\n            this.updateEventActive = true;\n            this.dispatchEvent(new WebCabUiRenderedEvent());\n            this.updateEventActive = false;\n        }\n\n        this.loading = false;\n    }\n\n    private createZSplittingTemplate(component: IWebCabApiComponentData, internalIndex: number): string {\n        const zSplittingUi = component[\"z-splitting-ui\"];\n        if (zSplittingUi == undefined || zSplittingUi.length < 1) return \"\";\n\n        let result = \"\";\n        for (let zSplittingIndex = 0; zSplittingIndex < zSplittingUi.length; ++zSplittingIndex) {\n            const inputComponent = zSplittingUi[zSplittingIndex];\n            if (inputComponent == undefined) continue;\n            const dataAttributes = inputComponent[\"data-attributes\"];\n            if (dataAttributes == undefined) continue;\n\n            if (dataAttributes.type == \"intInput\") {\n                result += \"<fv-webcab-value-input part=\\\"webcab-input z-splitting-count-input\\\" class=\\\"webcab-input z-splitting-count-input\\\" component-name=\\\"\"+ inputComponent.name +\"\\\">\";\n                result += \"<label slot=\\\"label\\\" i18n=\\\"webcab.item.count.input.label\\\" part=\\\"webcab-input-label\\\"></label>\";\n                result += \"<label slot=\\\"increase-button\\\" part=\\\"toggle-indecrease-container\\\"><div part=\\\"toggle-increase-button\\\"><div part=\\\"toggle-increase-button-horizontal-container\\\"><div part=\\\"toggle-increase-button-horizontal\\\"></div></div><div part=\\\"toggle-increase-button-vertical-container\\\"><div part=\\\"toggle-increase-button-vertical\\\"></div></div></div></label>\";\n                result += \"<label slot=\\\"decrease-button\\\" part=\\\"toggle-indecrease-container\\\"><div part=\\\"toggle-decrease-button\\\"></div></label>\";\n                result += \"</fv-webcab-value-input>\";\n            }\n            else if (dataAttributes.type == \"floatInput\") {\n                result += \"<fv-webcab-value-input part=\\\"webcab-input z-splitting-height-input\\\" class=\\\"webcab-input z-splitting-height-input\\\" component-name=\\\"\" + inputComponent.name + \"\\\">\";\n                result += \"<label slot=\\\"label\\\" part=\\\"webcab-input-label\\\"><label i18n=\\\"webcab.height.input.label\\\"></label> \" + (zSplittingIndex).toFixed(0) + \":</label>\";\n                result += \"<label slot=\\\"increase-button\\\" part=\\\"toggle-indecrease-container\\\"><div part=\\\"toggle-increase-button\\\"><div part=\\\"toggle-increase-button-horizontal-container\\\"><div part=\\\"toggle-increase-button-horizontal\\\"></div></div><div part=\\\"toggle-increase-button-vertical-container\\\"><div part=\\\"toggle-increase-button-vertical\\\"></div></div></div></label>\";\n                result += \"<label slot=\\\"decrease-button\\\" part=\\\"toggle-indecrease-container\\\"><div part=\\\"toggle-decrease-button\\\"></div></label>\";\n                result += \"</fv-webcab-value-input>\";\n            }\n\n            if (inputComponent[\"content-option-selection-ui\"] != undefined) {\n                const contentOptionSelectionTemplate = this.querySelector(this.settings[\"content-option-selection-template-selector\"]);\n                const contentOptionSelectionUi = inputComponent[\"content-option-selection-ui\"];\n                if (contentOptionSelectionUi && contentOptionSelectionTemplate && contentOptionSelectionTemplate.innerHTML.length > 0) {\n                    let contentOptionSelectionsTemplates = \"\";\n                    for (const optionSelection of contentOptionSelectionUi) {\n                        let optionSelectionTemplate = contentOptionSelectionTemplate.innerHTML;\n                        let optionSelectionPieces = optionSelectionTemplate.split(\"|internal-index|\");\n                        optionSelectionTemplate = optionSelectionPieces.join(\"-\" + optionSelection.name + internalIndex.toFixed(0));\n                        optionSelectionPieces = optionSelectionTemplate.split(\"|content-option-selection-component-name|\");\n                        optionSelectionTemplate = optionSelectionPieces.join(inputComponent.name + \"-\" + optionSelection.name);\n                        optionSelectionPieces = optionSelectionTemplate.split(\"|content-option-selection-class|\");\n                        optionSelectionTemplate = optionSelectionPieces.join(\"z-splitting-content-option-selection\");\n                        contentOptionSelectionsTemplates += optionSelectionTemplate;\n                    }\n                    result += contentOptionSelectionsTemplates;\n                }\n            }\n        }\n\n\n        return result;\n    }\n\n    private pushElementControlsToTemplate(instanceIdent_: number, template_: string): string {\n        const elementControlsTemplate = this.querySelector(this.settings[\"element-controls-template-selector\"]);\n        if (!elementControlsTemplate) return template_;\n        if (elementControlsTemplate.innerHTML.length < 1) return template_;\n        const contentOptionSelectionTemplate = this.querySelector(this.settings[\"content-option-selection-template-selector\"]);\n\n        const templatePieces = template_.split(\"|element-controls|\");\n        let index = 0;\n        let elementControlsTemplates = \"\";\n\n        const components = this._elementControlsComponents[instanceIdent_];\n        if (components) {\n            const names = Object.keys(components);\n            for (const name of names) {\n                const component = components[name];\n                if (component) {\n                    let template = elementControlsTemplate.innerHTML;\n                    let pieces = template.split(\"|component-name|\");\n                    template = pieces.join(name);\n\n                    const internalIndex = index;\n                    pieces = template.split(\"|index|\");\n                    template = pieces.join((++index).toFixed(0));\n\n                    const contentOptionSelectionUi = component[\"content-option-selection-ui\"];\n                    if (contentOptionSelectionUi && contentOptionSelectionTemplate && contentOptionSelectionTemplate.innerHTML.length > 0) {\n                        pieces = template.split(\"|content-option-selection|\");\n                        let contentOptionSelectionsTemplates = \"\";\n                        for (const optionSelection of contentOptionSelectionUi) {\n                            let optionSelectionTemplate = contentOptionSelectionTemplate.innerHTML;\n                            let optionSelectionPieces = optionSelectionTemplate.split(\"|internal-index|\");\n                            optionSelectionTemplate = optionSelectionPieces.join(\"-\" + optionSelection.name + internalIndex.toFixed(0));\n\n                            optionSelectionPieces = optionSelectionTemplate.split(\"|content-option-selection-component-name|\");\n                            optionSelectionTemplate = optionSelectionPieces.join(component.name + \"-\" + optionSelection.name);\n\n                            optionSelectionPieces = optionSelectionTemplate.split(\"|content-option-selection-class|\");\n                            optionSelectionTemplate = optionSelectionPieces.join(\"\");\n\n                            contentOptionSelectionsTemplates += optionSelectionTemplate;\n                        }\n                        template = pieces.join(contentOptionSelectionsTemplates);\n                    }\n                    else {\n                        pieces = template.split(\"|content-option-selection|\");\n                        template = pieces.join(\"\");\n                    }\n\n                    pieces = template.split(\"|z-splitting-ui|\");\n                    const zSplittingTemplate = this.createZSplittingTemplate(component, internalIndex);\n                    template = pieces.join(zSplittingTemplate);\n\n                    elementControlsTemplates += template;\n                }\n            }\n            template_ = templatePieces.join(elementControlsTemplates);\n        }\n        return template_;\n    }\n    private applyGeneralReplacers(template_: string) {\n        const genaralReplacers = Object.keys(this.settings.replacers.general);\n        for ( const replacer of genaralReplacers ) {\n            const pieces = template_.split(replacer);\n            template_ = pieces.join(this.settings.replacers.general[replacer]);\n        }\n        return template_;\n    }\n    private applyReplacersToSlots() {\n        const slots = this.querySelectorAll(\"[slot]\");\n        slots.forEach((slot)=>{\n            this.applyReplacersToSlot(slot);\n        });\n    }\n    private applyReplacersToSlot(slot_: Element) {\n        let replacedSlot = this.applyGeneralReplacers(slot_.innerHTML);\n        this.webcabuis.map((webcabui) => {\n            const replacersKey: string = webcabui.index.toFixed(0) + \"_\" + this.webcabuis.length.toFixed(0);\n            const replacers = this.settings.replacers[\"by-object-ui\"][replacersKey];\n            if (replacers) {\n                const replacerKeys = Object.keys(replacers);\n                for ( const key of replacerKeys ) {\n                    const pieces = replacedSlot.split(key);\n                    replacedSlot = pieces.join(replacers[key]);\n                }\n            }\n        });\n        slot_.innerHTML = replacedSlot;\n    }\n\n    private getObjectUiTemplate(baseTemplate_: string, index_: number, totalUiAmount: number, instanceIdent_: number): string {\n        if (baseTemplate_.length < 1) {\n            console.error(\"webcab-ui: render failed! template not found!\");\n            return \"\";\n        }\n\n        const replacersKey: string = index_.toFixed(0) + \"_\" + totalUiAmount.toFixed(0);\n        const replacers = this.settings.replacers[\"by-object-ui\"][replacersKey];\n        if (replacers) {\n            const replacerKeys = Object.keys(replacers);\n            for ( const key of replacerKeys ) {\n                const pieces = baseTemplate_.split(key);\n                baseTemplate_ = pieces.join(replacers[key]);\n            }\n        }\n\n        const pieces = baseTemplate_.split(\"|index|\");\n        baseTemplate_ = pieces.join((index_+1).toFixed(0));\n\n        this.dispatchEvent(new WebCabTemplateReplaceEvent(baseTemplate_, this, index_));\n        baseTemplate_ = this.TemplateReplaceEventResult ? this.TemplateReplaceEventResult : baseTemplate_;\n        this.TemplateReplaceEventResult = undefined;\n\n        baseTemplate_ = this.pushElementControlsToTemplate(instanceIdent_, baseTemplate_);\n        return baseTemplate_;\n    }\n\n    private async updateElementUIs() {\n\n        const elementuis: NodeListOf<HTMLDivElement> = this.renderRoot.querySelectorAll(\".element-ui\") as NodeListOf<HTMLDivElement>;\n        if (elementuis) {\n            for (let index = 0; index < elementuis.length; ++index) {\n                await this.updateComponentElements(elementuis.item(index));\n            }\n        }\n    }\n    private getElementAttribute(element_: Element, name_: string): string {\n        if (element_.hasAttribute(name_)) {\n            const attribute = element_.getAttribute(name_);\n            if (attribute) {\n                return attribute;\n            }\n        }\n        return \"\";\n    }\n    private async ArrangeEquallyButtonClick(element_: Element, click_: IWebCabApiClick | undefined) {\n        this.loading = true;\n\n        if (click_ && click_.GroupID) {\n            const instanceIdent = parseInt(this.getElementAttribute(element_, \"instance-ident\"));\n            const customerType = this.settings[\"object-ui-settings\"][\"customer-type\"];\n            const brokenDownResult = this.breakDownUiData(await WebCabApiService.ArrangeEqually(customerType, [click_.GroupID], this.settings[\"object-ui-settings\"][\"config-suffix\"], [instanceIdent]));\n            this._components[instanceIdent] = brokenDownResult[instanceIdent];\n        }\n\n        this.loading = false;\n        await this.updateArticles();//this._components\n    }\n    private static getComponentFromArray(components_: IWebCabApiComponentData[], name_: string): IWebCabApiComponentData | undefined {\n        let componentData: IWebCabApiComponentData | undefined = undefined;\n        for (const component of components_) {\n            if (component.name === name_) {\n                componentData = component;\n                break;\n            }\n\n            if (component.components) {\n                componentData = this.getComponentFromArray(component.components, name_);\n                if (componentData) break;\n            }\n        }\n        return componentData;\n    }\n    private static getComponent(components_: {[key: string]: IWebCabApiComponentData;}, name_: string): IWebCabApiComponentData | undefined {\n        if (components_[name_]) return components_[name_];\n\n        const names = Object.keys(components_);\n        for (const name of names) {\n            const component = components_[name];\n            if (component && component.components) {\n                const componentFromArray = this.getComponentFromArray(component.components, name_);\n                if (componentFromArray) {\n                    return componentFromArray;\n                }\n            }\n        }\n        return undefined;\n    }\n    private static getComponentFromContentOptionSelection(components_: IWebCabApiComponentData[], name_: string, parent_?: IWebCabApiComponentData): IWebCabApiComponentData | undefined {\n        for (const component of components_) {\n            if (component.name == name_) {\n                return component;\n            }\n            if (parent_ && (parent_.name + \"-\" + component.name) == name_) {\n                return component;\n            }\n\n            if (component.components) {\n                const subComponentsResult = this.getComponentFromContentOptionSelection(component.components, name_, component);\n                if (subComponentsResult != undefined) return subComponentsResult;\n            }\n            if (component[\"content-option-selection-ui\"]) {\n                const subComponentsResult = this.getComponentFromContentOptionSelection(component[\"content-option-selection-ui\"], name_, component);\n                if (subComponentsResult != undefined) return subComponentsResult;\n            }\n            if (component[\"z-splitting-ui\"]) {\n                const subComponentsResult = this.getComponentFromContentOptionSelection(component[\"z-splitting-ui\"], name_, component);\n                if (subComponentsResult != undefined) return subComponentsResult;\n            }\n        }\n        return undefined;\n    }\n\n    private static getComponentFromZSplitting(components_: IWebCabApiComponentData[], name_: string, parent_?: IWebCabApiComponentData): IWebCabApiComponentData | undefined {\n        for (const component of components_) {\n            if (component.name == name_) {\n                return component;\n            }\n            if (parent_ && (parent_.name + \"-\" + component.name) == name_) {\n                return component;\n            }\n\n            if (component.components) {\n                const subComponentsResult = this.getComponentFromZSplitting(component.components, name_, component);\n                if (subComponentsResult != undefined) return subComponentsResult;\n            }\n            if (component[\"z-splitting-ui\"]) {\n                const subComponentsResult = this.getComponentFromZSplitting(component[\"z-splitting-ui\"], name_, component);\n                if (subComponentsResult != undefined) return subComponentsResult;\n            }\n        }\n        return undefined;\n    }\n\n    private static getComponentForElement(components_: {[key: string]: IWebCabApiComponentData}, componentName: string): IWebCabApiComponentData | undefined {\n        let component = WebCabUiComponent.getComponent(components_, componentName);\n        if (component == undefined) {\n            const componentsArray = [];\n            const names = Object.keys(components_);\n            for (const name of names) {\n                componentsArray.push(components_[name]);\n            }\n            component = WebCabUiComponent.getComponentFromContentOptionSelection(componentsArray, componentName);\n            if (component == undefined) {\n\n                component = WebCabUiComponent.getComponentFromZSplitting(componentsArray, componentName);\n            }\n        }\n        if (component == undefined) {\n            console.warn(\"no component found!\", componentName, components_);\n        }\n        return component;\n    }\n\n    public static async updateComponentElement(components_: {[key: string]: IWebCabApiComponentData}, element_: Element, instanceIdent_: number, settings_: WebCabUiSettings, arrangeEquallyEvent_: (element_: Element, click_: IWebCabApiClick | undefined)=>void) {\n        if (!element_) return;\n\n        const componentName = element_.getAttribute(\"component-name\");\n        if (!componentName || componentName.length < 1) return;\n\n        const component = this.getComponentForElement(components_, componentName);\n        if (component == undefined) {\n            element_.classList.add(\"hidden\");\n            return;\n        }\n        element_.classList.remove(\"hidden\");\n        element_.setAttribute(\"instance-ident\", instanceIdent_.toFixed(0));\n\n        const dataAttributes = component[\"data-attributes\"];\n        let fractionDigits = 0;\n        if (dataAttributes && dataAttributes.type && dataAttributes.type == \"floatInput\") {\n            fractionDigits = settings_[\"object-ui-settings\"][\"fraction-digits\"];\n        }\n\n        element_.setAttribute(\"name\", componentName);\n        if (component.attributes) {\n            if (component.attributes.value && component.attributes.value.toFixed) {\n                element_.setAttribute(\"value\", component.attributes.value.toFixed(fractionDigits));\n            }\n            if (component.attributes.min && component.attributes.min.toFixed) {\n                element_.setAttribute(\"min-value\", component.attributes.min.toFixed(fractionDigits));\n            }\n            if (component.attributes.max && component.attributes.max.toFixed) {\n                element_.setAttribute(\"max-value\", component.attributes.max.toFixed(fractionDigits));\n            }\n            if (component.attributes[\"unit-txt\"] != undefined) {\n                element_.setAttribute(\"unit-txt\", component.attributes[\"unit-txt\"] == \"\" ? \"error\" : component.attributes[\"unit-txt\"]);\n            }\n            if (component.attributes[\"dim-scale\"]) {\n                element_.setAttribute(\"dim-scale\", component.attributes[\"dim-scale\"].toString());\n            }\n        }\n        if (component.change) {\n            element_.setAttribute(\"modification-targets\", JSON.stringify(component.change.ModificationTargets));\n            if (component.change.GroupID) {\n                element_.setAttribute(\"group-id\", component.change.GroupID);\n            }\n            else if (component.change.ZSplittingXGroupId) {\n                element_.setAttribute(\"group-id\", component.change.ZSplittingXGroupId);\n            }\n            if (component.change.InGroupID) {\n                element_.setAttribute(\"in-group-id\", component.change.InGroupID);\n            }\n            else if (component.change.ZSplittingXInGroupId) {\n                element_.setAttribute(\"in-group-id\", component.change.ZSplittingXInGroupId);\n            }\n            if (component.change.ZSplittingZSpaceIndex) {\n                element_.setAttribute(\"z-space-id\", component.change.ZSplittingZSpaceIndex);\n            }\n        }\n\n\n        if (element_ && isDisplayOptionSelection(element_)) {\n            element_.componentData = component;\n            element_.customerType = settings_[\"object-ui-settings\"][\"customer-type\"];\n            element_.configSuffix = settings_[\"object-ui-settings\"][\"config-suffix\"];\n        }\n\n        if (dataAttributes) {\n            if (dataAttributes.type == \"floatInput\") {\n                const input = element_ as WebCabValueInputComponent;\n                input.addEventListener(\"webcab-value-input-changed\", async ()=>{\n                    if (component.change && component.change.ZSplittingXGroupId && component.change.ZSplittingXInGroupId) {\n                        await input.ModifyZSplitting(false, component.change.ZSplittingZSpaceIndex != undefined);\n                        return;\n                    }\n                    if (component.change && component.change.GroupID && component.change.InGroupID) {\n                        await input.ModifySingleSpace();\n                        return;\n                    }\n                    await input.ModifyFloatValue();\n                });\n\n                input.increment = dataAttributes.step;\n                input.fractionDigits = fractionDigits;\n                input.timeoutms = settings_[\"object-ui-settings\"][\"input-buttons-timeout-ms\"];\n                input.customerType = settings_[\"object-ui-settings\"][\"customer-type\"];\n                input.configSuffix = settings_[\"object-ui-settings\"][\"config-suffix\"];\n            }\n            else if (dataAttributes.type == \"intInput\") {\n                const input = element_ as WebCabValueInputComponent;\n                input.addEventListener(\"webcab-value-input-changed\", ()=>{\n                    if (component.change && component.change.ZSplittingXGroupId && component.change.ZSplittingXInGroupId) {\n                        input.ModifyZSplitting(false, component.change.ZSplittingZSpaceIndex != undefined);\n                        return;\n                    }\n                    input.ChangeCount();\n                });\n                input.increment = dataAttributes.step;\n                input.timeoutms = settings_[\"object-ui-settings\"][\"input-buttons-timeout-ms\"];\n                input.customerType = settings_[\"object-ui-settings\"][\"customer-type\"];\n                input.configSuffix = settings_[\"object-ui-settings\"][\"config-suffix\"];\n            }\n            else if (dataAttributes.type == \"command\") {\n                if (component.click) {\n                    if (component.click.WebCabCommand == \"ArrangeEqually\") {\n                        element_.addEventListener(\"click\", async ()=>{\n                            await arrangeEquallyEvent_(element_, component.click);\n                        });\n                    }\n                    else if (component.click.WebCabCommand == \"EnableWebCabs\" || component.click.WebCabCommand == \"DisableWebCabs\") {\n                        const button = element_ as WebcabEnableDisableButtonComponent;\n                        button.clickDetails = component.click;\n                    }\n                }\n            }\n        }\n    }\n    private async updateComponentElements(elementUi_: HTMLDivElement) {\n        const instanceIdent = parseInt(this.getElementAttribute(elementUi_, \"instance-ident\"));\n        if (this._components[instanceIdent]) {\n            const elemets = new Array<Element>();\n            this.getComponentElements(elemets, elementUi_);\n\n            if (elemets.length > 0) {\n                for (let index = 0; index < elemets.length; ++index) {\n                    const element = elemets[index];\n                    if (element) {\n                        await WebCabUiComponent.updateComponentElement(this._components[instanceIdent].data, element, instanceIdent, this.settings, async (element_: Element, click_: IWebCabApiClick | undefined)=>{\n                            await this.ArrangeEquallyButtonClick(element_, click_);\n                        });\n\n                        if (element && isDisplayOptionSelection(element) && element.componentData != undefined && element.componentData.change != undefined) {\n                            const xGroupId = element.componentData.change.xGroupId;\n                            const xInGroupId = element.componentData.change.xInGroupId;\n                            const zSpaceId = element.componentData.change.zSpaceId;\n                            if (xGroupId != undefined && xInGroupId != undefined) {\n                                const zSpaceOpenId = zSpaceId != undefined ? \"-\" + zSpaceId.toFixed(0) : \"\";\n                                const openedId = xGroupId.toFixed(0) + \"-\" + xInGroupId.toFixed(0) + zSpaceOpenId;\n                                (element as WebCabDisplayOptionSelectionComponent).open = this.openedPopups.includes(openedId);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    private updatePromise: Promise<WebCabUiDataList> | undefined = undefined;\n    public async updateArticles(/*uidata_?: WebCabUiDataList | undefined*/): Promise<void> {\n        this.loading = true;\n\n        if (this.updatePromise != undefined) {\n            await this.updatePromise;\n        }\n\n        this.updatePromise = this.ReadUiData();\n        const uidata = await this.updatePromise;\n        // let uidata = uidata_;\n        // if (uidata == undefined) {\n        //     uidata = await this.ReadUiData();\n        // }\n\n        let index = 0;\n        this.webcabuis = [];\n        this._components = {};\n        this._elementControlsComponents = {};\n\n        const instanceIdents = Object.keys(uidata);\n        for (const instanceIdentString of instanceIdents) {\n            const instanceIdent = parseInt(instanceIdentString);\n            this.webcabuis.push({\n                index: index++,\n                \"instance-ident\": instanceIdent,\n                disabled: uidata[instanceIdent].disabled\n            });\n            this.setElementUiComponents(instanceIdent, uidata[instanceIdent], true);\n        }\n        this.requestUpdate();\n        await this.updateComplete;\n        if (this.postUpdateEventPromise != undefined) {\n            await this.postUpdateEventPromise;\n            this.postUpdateEventPromise = undefined;\n        }\n        this.updatePromise = undefined;\n    }\n    public async show(uidata_?: WebCabUiDataList | undefined): Promise<void> {\n        if (!this.showing) {\n            this.showing = true;\n            await this.updateArticles();//uidata_\n            this.shown = true;\n            this.showing = false;\n        }\n    }\n\n    private getObjectUiIndex(value_: Element) {\n        const attribute = value_.getAttribute(\"ui-index\");\n        if (attribute) {\n            return parseInt(attribute);\n        }\n        return -1;\n    }\n    public EachObjectUi(callback_: (element: Element, index: number) => void): void {\n        const objects = this.renderRoot.querySelectorAll(\".element-ui\");\n        objects.forEach((value) => {\n            callback_(value, this.getObjectUiIndex(value));\n        });\n    }\n    public getFirstObjectUi(): HTMLElement | undefined {\n        const objects = this.renderRoot.querySelectorAll(\".element-ui\");\n        if (objects.length > 0) {\n            return objects.item(0) as HTMLElement;\n        }\n        return undefined;\n    }\n\n\n    private getComponentElements(list: Array<Element>, curr: Element) {\n        if (curr.hasAttribute(\"component-name\")) {\n            list.push(curr);\n        }\n        for (let index = 0; index < curr.children.length; ++index) {\n            const item = curr.children.item(index);\n            if (item) {\n                this.getComponentElements(list, item);\n            }\n        }\n    }\n\n    private breakDownUiData(uidata_: IWebCabApiUiData): WebCabUiDataList {\n        const instanceIdents = Object.keys(uidata_);\n        const ret: WebCabUiDataList = {};\n        for (const instanceIdentString of instanceIdents) {\n            const instanceIdent: number = parseInt(instanceIdentString);\n            const data: IWebCabApiUiComponentsData | undefined = uidata_[instanceIdent];\n            if (data != undefined && data.components != undefined) {\n                const components = data.components;\n                ret[instanceIdent] = { data: {}, disabled: uidata_[instanceIdent].disabled };\n                for (const component of components) {\n                    if (component.name) {\n                        ret[instanceIdent].data[component.name] = component;\n                    }\n                }\n            }\n        }\n        return ret;\n    }\n\n    public async ReadUiData(): Promise<WebCabUiDataList> {\n        const data = await WebCabApiService.GetUIs(this.settings[\"object-ui-settings\"][\"customer-type\"], this.settings[\"object-ui-settings\"][\"config-suffix\"]);\n        return this.breakDownUiData(data);\n    }\n\n\n    public async ModifyFloatValueAllInstances(modificationTargets_: Array<string>, value_: number): Promise<WebCabUiDataList> {\n        const modifications: Array<IValueModification> = [];\n        for (const target of modificationTargets_) {\n            modifications.push({\n                target: target,\n                value: (value_ * 10.0).toFixed(2)\n            });\n        }\n        const uidata = await WebCabApiService.ModifyValues(this.settings[\"object-ui-settings\"][\"customer-type\"], modifications, this.settings[\"object-ui-settings\"][\"config-suffix\"]);\n        return this.breakDownUiData(uidata);\n    }\n\n\n    public async SetDisableDimensionVisuals(value_: boolean, instanceIdentFilter_?: Array<number> | undefined): Promise<void> {\n        await WebCabApiService.SetDisableDimensionVisuals(this.settings[\"object-ui-settings\"][\"customer-type\"], value_ ? 1 : 0, this.settings[\"object-ui-settings\"][\"config-suffix\"], instanceIdentFilter_);\n    }\n    public async GetDisableDimensionVisuals(instanceIdentFilter_?: Array<number> | undefined): Promise<boolean> {\n        const disableDimensionVisuals = await WebCabApiService.GetDisableDimensionVisuals(this.settings[\"object-ui-settings\"][\"customer-type\"], this.settings[\"object-ui-settings\"][\"config-suffix\"], instanceIdentFilter_);\n        return disableDimensionVisuals;\n    }\n}\n\nexport class WebCabUiRenderedEvent extends CustomEvent<unknown> {\n    constructor() {\n        super(\"webcab-ui-rendered\", { detail: {}, bubbles: true, composed: true });\n    }\n}\n\nexport interface WebCabUiSettings {\n    \"object-ui-settings\": {\n        \"customer-type\": string,\n        \"config-suffix\": string,\n        increment: number,\n        \"fraction-digits\": number,\n        \"input-buttons-timeout-ms\": number\n    },\n    \"object-heading-template-selector\": string,\n    \"controls-template-selector\": string,\n    \"element-controls-template-selector\": string,\n    \"content-option-selection-template-selector\": string,\n    replacers: {\n        \"by-object-ui\": {\n            [key: string]: {[key: string]: string}\n        },\n        \"general\": {\n            [key: string]: string\n        }\n    }\n}\ninterface WebCabObjectUiAttributes {\n    index: number,\n    \"instance-ident\": number,\n    disabled: boolean\n}\ninterface WebCabUiDataList {\n    [key: number]: WebCabUiData\n}\ninterface WebCabUiData {\n    data: {[key: string]: IWebCabApiComponentData},\n    disabled: boolean\n}\n","import { BaseElement } from \"../../../standard/base/base.component\";\nimport { WebCabUiComponent } from \"../../base/webcab-ui.component\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./webcab-ui-cabinets-toggle.sass?inline\";\nimport { WebCabValueInputComponent } from \"../../base/webcab-value-input.component\";\nimport { WebCabTemplateReplaceEventInit, WebCabUiSettings } from \"../../base/webcab-ui.component\";\nimport {CommunicationMessageService, WebViewerService} from \"@dh-software/webui-api\";\nimport { IPlannedArticle } from \"@dh-software/webui-types\";\nimport type { ComponentStateHandlerMap } from \"../../../../models/event-handler/component-state-event\";\n\ndeclare global {\n    interface ComponentStates {\n        \"fv-webcab-ui-cabinets-toggle:refresh\": Record<string, never>;\n    }\n}\n\n\n@customElement(\"fv-webcab-ui-cabinets-toggle\")\nexport class WebCabUiImplementationCabinetsToggle extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Object, reflect: true })\n    public config = {\n        increment: 10.0,\n        timeout: 500,\n        fraction: 2\n    };\n    @property({ type: Boolean, reflect: true })\n    public active = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"corner-hide-depth\" })\n    public cornerHideDepth = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"corner-hide-total\" })\n    public cornerHideTotal = false;\n\n    @property({ type: String, reflect: true, attribute: \"corner-config-suffix\" })\n    public cornerConfigSuffix: string | undefined = undefined;\n\n    @property({ type: String, reflect: true, attribute: \"config-suffix\" })\n    public configSuffix: string | undefined = undefined;\n    @property({ type: Number, reflect: true, attribute: \"max-amount-select-by-buttons\" })\n    public maxAmountSelectByButtons = 3;\n\n    private corner = false;\n\n    private get currentConfigSuffix() {\n        const getConfigSuffixVal = (suffix: string | undefined, fallback: string)=>{\n            return suffix ? suffix : fallback;\n        };\n        if (this.corner) {\n            return getConfigSuffixVal(this.cornerConfigSuffix, getConfigSuffixVal(this.configSuffix, \"\"));\n        }\n        return getConfigSuffixVal(this.configSuffix, \"\");\n    }\n\n\n    stateHandlers: ComponentStateHandlerMap = {\n        \"fv-webcab-ui-cabinets-toggle:refresh\": async () => { await this.refresh(); },\n    };\n\n    private togglesState = new Map<number, boolean>();\n    private get settings(): WebCabUiSettings {\n        return {\n            \"object-ui-settings\": {\n                \"customer-type\": \"\",\n                \"config-suffix\": this.currentConfigSuffix,\n                \"increment\": this.config.increment,\n                \"fraction-digits\": this.config.fraction,\n                \"input-buttons-timeout-ms\": this.config.timeout\n            },\n            \"object-heading-template-selector\": \".title-template\",\n            \"controls-template-selector\": \".controls-template\",\n            \"element-controls-template-selector\": \".element-controls-template\",\n            \"content-option-selection-template-selector\": \".content-option-selection-template\",\n            \"replacers\": {\n                \"by-object-ui\": {\n                    \"0_2\": {\n                        \"|subtitle|\": \"webcab.title.corner.left\",\n                        \"|height-depth|\": \"\",\n                        \"|DisableEnable|\": \"\",\n                        \"|config-suffix|\": this.currentConfigSuffix,\n                        \"|title|\": \"webcab.title.corner\"\n                    },\n                    \"1_2\": {\n                        \"|subtitle|\": \"webcab.title.corner.right\",\n                        \"|height-depth|\": \"\",\n                        \"|DisableEnable|\": \"\",\n                        \"|config-suffix|\": this.currentConfigSuffix,\n                        \"|title|\": \"webcab.title.corner\"\n                    },\n                    \"0_1\": {\n                        \"|subtitle|\": \"webcab.title\",\n                        \"|height-depth|\": `\n                            <div part=\"webcab-control height-container\">\n                                <fv-webcab-value-input part=\"webcab-input height-input\" component-name=\"CabinetHeight\">\n                                    <label slot=\"label\" i18n=\"webcab.height.input.label\" part=\"webcab-input-label\"></label>\n                                    <label slot=\"increase-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-increase-button\"><div part=\"toggle-increase-button-horizontal-container\"><div part=\"toggle-increase-button-horizontal\"></div></div><div part=\"toggle-increase-button-vertical-container\"><div part=\"toggle-increase-button-vertical\"></div></div></div></label>\n                                    <label slot=\"decrease-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-decrease-button\"></div></label>\n                                </fv-webcab-value-input>\n                            </div>\n                            <div part=\"webcab-control depth-container\">\n                                <fv-webcab-value-input part=\"webcab-input depth-input\" component-name=\"Depth\">\n                                    <label slot=\"label\" i18n=\"webcab.depth.input.label\" part=\"webcab-input-label\"></label>\n                                    <label slot=\"increase-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-increase-button\"><div part=\"toggle-increase-button-horizontal-container\"><div part=\"toggle-increase-button-horizontal\"></div></div><div part=\"toggle-increase-button-vertical-container\"><div part=\"toggle-increase-button-vertical\"></div></div></div></label>\n                                    <label slot=\"decrease-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-decrease-button\"></div></label>\n                                </fv-webcab-value-input>\n                            </div>\n                        `,\n                        \"|DisableEnable|\": \"webcab-hidden\",\n                        \"|config-suffix|\": this.currentConfigSuffix,\n                    }\n                },\n                \"general\": {}\n            }\n        } as WebCabUiSettings;\n    }\n\n    private async init() {\n        await WebViewerService.IsAppReady;\n\n        const webcabui: WebCabUiComponent | null = this.renderRoot.querySelector(\"fv-webcab-ui\");\n        if (webcabui) {\n            const planedArticles = await CommunicationMessageService.getPlannedArticles();\n            const webcabs = planedArticles.filter((article: IPlannedArticle)=>{\n                return article.keys.includes(10017) || article.keys.includes(10019);\n            });\n\n            this.corner = webcabs.length == 2;\n            webcabui.settings = this.settings;\n            const uidata = await webcabui.ReadUiData();\n            const uiDataKeys = Object.keys(uidata);\n            if (uiDataKeys.length > 0) {\n                await webcabui.show();\n            }\n        }\n    }\n\n    constructor() {\n        super();\n\n        // add prepare-render event...\n\n        this.addEventListener(\"webcab-ui-rendered\", (e)=>{\n            const webcabui: WebCabUiComponent | null = this.renderRoot.querySelector(\"fv-webcab-ui\");\n            if (webcabui) {\n                webcabui.EachObjectUi((value: Element, index_: number)=>{\n                    const toggleButton = value.querySelector(\".toggle-button\");\n                    if (toggleButton && toggleButton.hasAttribute(\"has-click\") == false) {\n                        toggleButton.setAttribute(\"has-click\", \"true\");\n                        toggleButton.addEventListener(\"click\", ()=>{\n                            this.toggle(toggleButton, value, index_);\n                        });\n                    }\n\n                    const container = value.querySelector(\".element-controls-outer-container\");\n                    if (toggleButton && this.togglesState.get(index_)) {\n                        const arrow = toggleButton.querySelector(\".toggle-arrow\");\n                        if (container == undefined || arrow == undefined) return;\n                        const elementControlsContainer = container.querySelector(\".element-controls-container\");\n                        const arrangeEqually = container.querySelector(\".arrange-equally\");\n                        if (elementControlsContainer == undefined || arrangeEqually == undefined) return;\n                        this.open(toggleButton, arrow, container, elementControlsContainer, arrangeEqually, index_);\n                    }\n                });\n\n                if (webcabui.components) {\n                    const componentKeys = Object.keys(webcabui.components);\n                    this.corner = componentKeys.length == 2;\n                    if (componentKeys.length == 2) {\n                        if (componentKeys[0] && componentKeys[1]) {\n                            const component1 = webcabui.components[parseInt(componentKeys[0])];\n                            const component2 = webcabui.components[parseInt(componentKeys[1])];\n                            if (component1 && component1.data && component2 && component2.data) {\n                                // const inputElements1Keys = Object.keys(component1.data);\n                                // const leftCornerElement = inputElements1Keys.includes(\"corner_input#R\") || inputElements1Keys.includes(\"corner_input#L\");\n                                // // const leftCornerElement = component1.data[\"input_1_R\"];\n                                // // const rightCornerElement = component2.data[\"input_1_L\"];\n                                // const inputElements2Keys = Object.keys(component2.data);\n                                // const rightCornerElement = inputElements2Keys.includes(\"corner_input#R\") || inputElements2Keys.includes(\"corner_input#L\");\n\n                                // if (leftCornerElement && rightCornerElement) {\n                                const cornerInputs = this.renderRoot.querySelector(\".corner-inputs-container\");\n                                if (cornerInputs) {\n                                    cornerInputs.classList.remove(\"hidden\");\n\n                                    // height\n                                    const height = cornerInputs.querySelector(\".webcab-corner-input.height\") as WebCabValueInputComponent;\n                                    if (height) {\n                                        const componentName = height.getAttribute(\"component-name\");\n                                        if (componentName) {\n                                            const digits = webcabui.settings[\"object-ui-settings\"][\"fraction-digits\"];\n                                            height.classList.remove(\"hidden\");\n                                            height.setAttribute(\"instance-ident\", componentKeys[1]);\n                                            height.setAttribute(\"name\", componentName);\n\n                                            const heightComponent1 = component1.data[componentName];\n                                            const heightComponent2 = component2.data[componentName];\n                                            if (heightComponent1 && heightComponent2) {\n                                                if (heightComponent1.attributes && heightComponent2.attributes) {\n                                                    height.setAttribute(\"value\", Math.min(heightComponent1.attributes.value, heightComponent2.attributes.value).toFixed(digits));\n                                                    height.setAttribute(\"min-value\", Math.min(heightComponent1.attributes.min, heightComponent2.attributes.min).toFixed(digits));\n                                                    height.setAttribute(\"max-value\", Math.max(heightComponent1.attributes.max, heightComponent2.attributes.max).toFixed(digits));\n                                                    height.setAttribute(\"unit-txt\", heightComponent1.attributes[\"unit-txt\"] == \"\" ? \"error\" : heightComponent1.attributes[\"unit-txt\"]);\n                                                    height.setAttribute(\"dim-scale\", heightComponent1.attributes[\"dim-scale\"].toString());\n                                                }\n\n                                                if (heightComponent1.change && heightComponent2.change && heightComponent1[\"data-attributes\"]) {\n                                                    height.setAttribute(\"modification-targets\", JSON.stringify(heightComponent1.change.ModificationTargets));\n                                                    height.addEventListener(\"webcab-value-input-changed\", async ()=>{\n                                                        await height.ModifyFloatValue(true);\n                                                    });\n\n                                                    height.increment = heightComponent1[\"data-attributes\"].step;\n                                                    height.fractionDigits = digits;\n                                                    height.timeoutms = webcabui.settings[\"object-ui-settings\"][\"input-buttons-timeout-ms\"];\n                                                    height.customerType = webcabui.settings[\"object-ui-settings\"][\"customer-type\"];\n                                                    height.configSuffix = webcabui.settings[\"object-ui-settings\"][\"config-suffix\"];\n                                                }\n                                            }\n                                        }\n                                    }\n\n                                    const cornerOnlyDepth = cornerInputs.querySelector(\".webcab.corner-only-depth\");\n                                    const cornerTotal = cornerInputs.querySelector(\".webcab.corner-total\");\n\n                                    if (cornerOnlyDepth && cornerTotal) {\n                                        cornerOnlyDepth.classList.add(\"hidden\");\n                                        cornerTotal.classList.add(\"hidden\");\n\n                                        if (this.cornerHideTotal == false) {\n                                            cornerTotal.classList.remove(\"hidden\");\n                                            const left = cornerTotal.querySelector(\".webcab-corner-input.left\");\n                                            if (left) {\n                                                WebCabUiComponent.updateComponentElement(component2.data, left, parseInt(componentKeys[1]), webcabui.settings, ()=>{\n                                                    console.error(\"no arrange equally function set.\");\n                                                });\n                                            }\n                                            const right = cornerTotal.querySelector(\".webcab-corner-input.right\");\n                                            if (right) {\n                                                WebCabUiComponent.updateComponentElement(component1.data, right, parseInt(componentKeys[0]), webcabui.settings, ()=>{\n                                                    console.error(\"no arrange equally function set.\");\n                                                });\n                                            }\n                                        }\n\n                                        if (this.cornerHideDepth == false) {\n                                            cornerOnlyDepth.classList.remove(\"hidden\");\n\n                                            const left = cornerOnlyDepth.querySelector(\".webcab-input.depth-input.left\");\n                                            if (left) {\n                                                WebCabUiComponent.updateComponentElement(component1.data, left, parseInt(componentKeys[0]), webcabui.settings, ()=>{\n                                                    console.error(\"no arrange equally function set.\");\n                                                });\n                                            }\n                                            const right = cornerOnlyDepth.querySelector(\".webcab-input.depth-input.right\");\n                                            if (right) {\n                                                WebCabUiComponent.updateComponentElement(component2.data, right, parseInt(componentKeys[1]), webcabui.settings, ()=>{\n                                                    console.error(\"no arrange equally function set.\");\n                                                });\n                                            }\n                                        }\n                                    }\n                                }\n                                // }\n                            }\n                        }\n                    }\n                }\n            }\n        });\n\n        this.addEventListener(\"webcab-enable-disable-button-toggle\", async ()=>{\n            // this.init();\n        });\n\n        this.addEventListener(\"webcabtemplatereplace\", (e: WebCabTemplateReplaceEventInit)=>{\n            if (e.detail) {\n                const state = this.togglesState.get(e.detail.index);\n                e.detail.webcabui.TemplateReplaceEventResult = e.detail.template;\n                let pieces = e.detail.webcabui.TemplateReplaceEventResult.split(\"|active|\");\n                e.detail.webcabui.TemplateReplaceEventResult = pieces.join(state ? \" active\" : \"\");\n\n                pieces = e.detail.webcabui.TemplateReplaceEventResult.split(\"|closed|\");\n                e.detail.webcabui.TemplateReplaceEventResult = pieces.join(state ? \"\" : \" closed\");\n            }\n        });\n\n        this.init();\n    }\n\n    protected render(): TemplateResult<1> {\n        return html`\n            <div class=\"webcab-container\">\n                <fv-webcab-ui .settings=\"${this.settings}\" object-ui-exportparts=\"webcab-hidden, count-input-additional-suffix, active, element-controls-container, element-control-input, 1, webcab-control toggle-indecrease-container, toggle-decrease-button, toggle-increase-button-horizontal, toggle-increase-button-vertical, toggle-increase-button, webcab-input, depth-container, height-container, width-container, count-container, width-input, height-input, depth-input, count-input, toggle-button, toggle-text, toggle-arrow, element-controls-outer-container, webcab-input-label-container, hidden, arrange-equally, arrange-equally-button, webcab subtitle\">\n                    <div slot=\"above\" class=\"webcab above-slot-content\">\n                        <div class=\"corner-inputs-container hidden\">\n                            <div class=\"webcab title\" i18n=\"|title|\"></div>\n\n\n                            <fv-webcab-value-input class=\"webcab-corner-input height\" component-name=\"CabinetHeight\">\n                                <label slot=\"label\" i18n=\"webcab.height.input.label\" class=\"webcab-input-label\"></label>\n                                <label slot=\"increase-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-increase-button\"><div class=\"toggle-increase-button-horizontal-container\"><div class=\"toggle-increase-button-horizontal\"></div></div><div class=\"toggle-increase-button-vertical-container\"><div class=\"toggle-increase-button-vertical\"></div></div></div></label>\n                                <label slot=\"decrease-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-decrease-button\"></div></label>\n                            </fv-webcab-value-input>\n\n\n                            <div class=\"webcab corner-only-depth hidden\">\n                                <fv-webcab-value-input class=\"webcab-input depth-input left\" component-name=\"Depth\">\n                                    <label slot=\"label\" i18n=\"webcab.depth.input.label.left\" class=\"webcab-input-label\"></label>\n                                    <label slot=\"increase-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-increase-button\"><div class=\"toggle-increase-button-horizontal-container\"><div class=\"toggle-increase-button-horizontal\"></div></div><div class=\"toggle-increase-button-vertical-container\"><div class=\"toggle-increase-button-vertical\"></div></div></div></label>\n                                    <label slot=\"decrease-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-decrease-button\"></div></label>\n                                </fv-webcab-value-input>\n                                <fv-webcab-value-input class=\"webcab-input depth-input right\" component-name=\"Depth\">\n                                    <label slot=\"label\" i18n=\"webcab.depth.input.label.right\" class=\"webcab-input-label\"></label>\n                                    <label slot=\"increase-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-increase-button\"><div class=\"toggle-increase-button-horizontal-container\"><div class=\"toggle-increase-button-horizontal\"></div></div><div class=\"toggle-increase-button-vertical-container\"><div class=\"toggle-increase-button-vertical\"></div></div></div></label>\n                                    <label slot=\"decrease-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-decrease-button\"></div></label>\n                                </fv-webcab-value-input>\n                            </div>\n\n\n                            <div class=\"webcab corner-total hidden\">\n                                <fv-webcab-value-input class=\"webcab-corner-input left\" component-name=\"corner_input#L\">\n                                    <label slot=\"label\" i18n=\"webcab.title.corner.left\" class=\"webcab-input-label\"></label>\n                                    <label slot=\"increase-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-increase-button\"><div class=\"toggle-increase-button-horizontal-container\"><div class=\"toggle-increase-button-horizontal\"></div></div><div class=\"toggle-increase-button-vertical-container\"><div class=\"toggle-increase-button-vertical\"></div></div></div></label>\n                                    <label slot=\"decrease-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-decrease-button\"></div></label>\n                                </fv-webcab-value-input>\n                                <fv-webcab-value-input class=\"webcab-corner-input right\" component-name=\"corner_input#R\">\n                                    <label slot=\"label\" i18n=\"webcab.title.corner.right\" class=\"webcab-input-label\"></label>\n                                    <label slot=\"increase-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-increase-button\"><div class=\"toggle-increase-button-horizontal-container\"><div class=\"toggle-increase-button-horizontal\"></div></div><div class=\"toggle-increase-button-vertical-container\"><div class=\"toggle-increase-button-vertical\"></div></div></div></label>\n                                    <label slot=\"decrease-button\" class=\"toggle-indecrease-container\"><div class=\"toggle-decrease-button\"></div></label>\n                                </fv-webcab-value-input>\n                            </div>\n                        </div>\n                    </div>\n\n                    <template class=\"title-template\">\n                        <div part=\"webcab subtitle hideable-on-mobile\"><div i18n=\"|subtitle|\"></div><fv-webcab-enable-disable-button config-suffix=\"|config-suffix|\" class=\"|DisableEnable|\" part=\"|DisableEnable|\"></fv-webcab-enable-disable-button></div>\n                    </template>\n                    <template class=\"controls-template\">\n                        <div part=\"webcab-control width-container\">\n                            <fv-webcab-value-input part=\"webcab-input width-input\" component-name=\"CabinetWidth\">\n                                <label slot=\"label\" i18n=\"webcab.width.input.label\" part=\"webcab-input-label\"></label>\n                                <label slot=\"increase-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-increase-button\"><div part=\"toggle-increase-button-horizontal-container\"><div part=\"toggle-increase-button-horizontal\"></div></div><div part=\"toggle-increase-button-vertical-container\"><div part=\"toggle-increase-button-vertical\"></div></div></div></label>\n                                <label slot=\"decrease-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-decrease-button\"></div></label>\n                            </fv-webcab-value-input>\n                        </div>\n                        |height-depth|\n                        <div part=\"webcab-control count-container\">\n                            <fv-webcab-value-input part=\"webcab-input count-input\" component-name=\"MiddleOnly_ItemCountInput\">\n                                <label slot=\"label\" i18n=\"webcab.item.count.input.label\" part=\"webcab-input-label\"></label>\n                                <label slot=\"increase-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-increase-button\"><div part=\"toggle-increase-button-horizontal-container\"><div part=\"toggle-increase-button-horizontal\"></div></div><div part=\"toggle-increase-button-vertical-container\"><div part=\"toggle-increase-button-vertical\"></div></div></div></label>\n                                <label slot=\"decrease-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-decrease-button\"></div></label>\n                                <label slot=\"additional-suffix\" part=\"count-input-additional-suffix\" i18n=\"webcab.item.count.input.label.additional.suffix\"></label>\n                            </fv-webcab-value-input>\n                        </div>\n                        <div part=\"webcab-control toggle-button\" class=\"toggle-button\">\n                            <div part=\"toggle-button-inner\" class=\"toggle-button-inner\">\n                                <div part=\"toggle-text\" i18n=\"webcab.define.single.cabinets\"></div>\n                                <fv-arrow-component part=\"toggle-arrow\" class=\"toggle-arrow|active|\"></fv-arrow-component>\n                            </div>\n                        </div>\n                        <div part=\"element-controls-outer-container|closed|\" class=\"element-controls-outer-container\">\n                            <div class=\"element-controls-container\" part=\"element-controls-container|closed|\" component-name=\"MiddleOnly_Components\">|element-controls|</div>\n                            <div class=\"arrange-equally\" part=\"arrange-equally|closed|\">\n                                <button part=\"arrange-equally-button\" component-name=\"MiddleOnly_ArrangeEqually\" i18n=\"webcab.arrange.equally\"></button>\n                            </div>\n                        </div>\n                    </template>\n                    <template class=\"element-controls-template\" component-name=\"MiddleOnly_Components\">\n                        <fv-webcab-value-input part=\"element-control-input part|index|\" component-name=\"|component-name|\">\n                            <div slot=\"label\" part=\"webcab-input-label-container\">\n                                <label i18n=\"webcab.label.single.cabinet\" part=\"webcab-input-label\"></label>\n                                <label>|index|</label>\n                                <label part=\"webcab-input-label-suffix\">:</label>\n                            </div>\n                            <label slot=\"increase-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-increase-button\"><div part=\"toggle-increase-button-horizontal-container\"><div part=\"toggle-increase-button-horizontal\"></div></div><div part=\"toggle-increase-button-vertical-container\"><div part=\"toggle-increase-button-vertical\"></div></div></div></label>\n                            <label slot=\"decrease-button\" part=\"toggle-indecrease-container\"><div part=\"toggle-decrease-button\"></div></label>\n                        </fv-webcab-value-input>\n                        |content-option-selection|\n                        |z-splitting-ui|\n                    </template>\n                    <template class=\"content-option-selection-template\">\n                        <fv-webcab-display-option-selection max-amount-select-by-buttons=\"1\" part=\"element-control-option-selection part-content-option-selection|internal-index|\" class=\"|content-option-selection-class|\" component-name=\"|content-option-selection-component-name|\"></fv-webcab-option-selection>\n                    </template>\n                </fv-webcab-ui>\n            </div>\n        `;\n        // TODO: replace max-amount-select-by-buttons=\"1\" with: this.maxAmountSelectByButtons.toFixed(0)\n    }\n\n\n    public async refresh() {\n        await this.init();\n    }\n\n    public close(button_: Element, arrow_: Element, container_: Element, elementControlsCOntainer_: Element, arrangeEqually_: Element, index_: number) {\n        button_.part.remove(\"active\");\n        arrow_.part.remove(\"active\");\n        arrow_.classList.remove(\"active\");\n        container_.part.add(\"closed\");\n        elementControlsCOntainer_.part.add(\"closed\");\n        arrangeEqually_.part.add(\"closed\");\n        this.togglesState.set(index_, false);\n    }\n    private open(button_: Element, arrow_: Element, container_: Element, elementControlsCOntainer_: Element, arrangeEqually_: Element, index_: number) {\n        button_.part.add(\"active\");\n        arrow_.part.add(\"active\");\n        arrow_.classList.add(\"active\");\n        container_.part.remove(\"closed\");\n        elementControlsCOntainer_.part.remove(\"closed\");\n        arrangeEqually_.part.remove(\"closed\");\n        this.togglesState.set(index_, true);\n    }\n\n    public toggle(button_: Element, objectUi_: Element, index_: number) {\n        const container = objectUi_.querySelector(\".element-controls-outer-container\");\n        const arrow = button_.querySelector(\".toggle-arrow\");\n        if (container == undefined || arrow == undefined) return;\n\n        const elementControlsContainer = container.querySelector(\".element-controls-container\");\n        const arrangeEqually = container.querySelector(\".arrange-equally\");\n        if (elementControlsContainer == undefined || arrangeEqually == undefined) return;\n\n        if (button_.part.contains(\"active\")) { // close\n            this.close(button_, arrow, container, elementControlsContainer, arrangeEqually, index_);\n            return;\n        }\n        this.open(button_, arrow, container, elementControlsContainer, arrangeEqually, index_);// open\n    }\n}\n","import { css, html, unsafeCSS, TemplateResult } from \"lit\";\nimport style from \"./webcab-overview.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport {CommunicationMessageService, WebCabApiService} from \"@dh-software/webui-api\";\nimport { IWebCabApiUiData } from \"@dh-software/webui-types\";\n\n@customElement(\"fv-webcab-overview\")\nexport class WebCabOverviewComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true, attribute: \"customer-type\" })\n    public customerType = \"\";\n\n    @property({ type: String, reflect: true, attribute: \"config-suffix\" })\n    public configSuffix = \"\";\n\n    private image = \"\";\n\n    private width = 0;\n    private height = 0;\n    private depth = 0;\n    private amount = 0;\n    private childCount = 0;\n\n    constructor() {\n        super();\n\n        this.addHideStateUpdatedEventListener((value: boolean)=>{\n            if (value == false) {\n                this.change();\n            }\n        });\n    }\n\n    private async change() {\n        let width = 0, height = 0, depth = 0;\n        const articles = await WebCabApiService.GetPlanned();\n        if (articles.length > 0) {\n            if (articles[0].dimension.length > 0) {\n                width = articles[0].dimension[0] * 0.1;\n                height = articles[0].dimension[2] * 0.1;\n                depth = articles[0].dimension[1] * 0.1;\n            }\n        }\n        const img = this.renderRoot.querySelector(\".img\");\n        const imgWidth = img ? img.clientWidth : width;\n        const imgHeight = img ? img.clientHeight : height;\n\n        const disableDimensionVisuals = await WebCabApiService.GetDisableDimensionVisuals(this.customerType, this.configSuffix);\n        if (disableDimensionVisuals == false) {\n            await WebCabApiService.SetDisableDimensionVisuals(this.customerType, 1, this.configSuffix);\n        }\n        this.image = URL.createObjectURL(await CommunicationMessageService.takeCenteredSnap(false, 0, imgWidth, imgHeight) as Blob);\n        if (disableDimensionVisuals == false) {\n            await WebCabApiService.SetDisableDimensionVisuals(this.customerType, 0, this.configSuffix);\n        }\n\n        let childCount = 0;\n        articles.forEach((article)=>{\n            childCount += article.children;\n        });\n\n        if (this.width != width || this.height != height || this.depth != depth || this.childCount != childCount) {\n            let amount = 0;\n            const uis: IWebCabApiUiData = await WebCabApiService.GetUIs(this.customerType, this.configSuffix);\n            const uiKeys = Object.keys(uis);\n            if (uiKeys.length > 0) {\n                uiKeys.forEach((uiKey: string)=>{\n                    const ui = uis[parseInt(uiKey)];\n                    ui.components.forEach((component)=>{\n                        if (component.name.includes(\"_ItemCountInput\")) {\n                            if (component.attributes && component.attributes.value) {\n                                amount += component.attributes.value;\n                            }\n                        }\n                    });\n                });\n            }\n\n            this.width = width;\n            this.height = height;\n            this.depth = depth;\n            this.amount = amount;\n            this.childCount = childCount;\n        }\n        this.requestUpdate();\n    }\n\n    private getPriceFormatText(price: number): string {\n        return price.toFixed(2).replace(\".\", \",\");\n    }\n\n    protected render(): TemplateResult<1> {\n        return html`\n            <div class=\"overview-container\">\n                <span class=\"img\" style=\"background-image: url(${this.image})\">\n                </span>\n                <span class=\"additional-container\">\n                    <div>\n                        <span>${this.amount}</span>\n                        <span i18n=\"webcab.overview.cabinets.amount.text\"></span>\n                    </div>\n                    <div class=\"dimension\">\n                        <span i18n=\"webcab.width.input.label\"></span>\n                        <span>\n                            <span>${this.getPriceFormatText(this.width)}</span>\n                            <span i18n=\"webcab.dimension.input.suffix\"></span>\n                        </span>\n                    </div>\n                    <div class=\"dimension\">\n                        <span i18n=\"webcab.height.input.label\"></span>\n                        <span>\n                            <span>${this.getPriceFormatText(this.height)}</span>\n                            <span i18n=\"webcab.dimension.input.suffix\"></span>\n                        </span>\n                    </div>\n                    <div class=\"dimension\">\n                        <span i18n=\"webcab.depth.input.label\"></span>\n                        <span>\n                            <span>${this.getPriceFormatText(this.depth)}</span>\n                            <span i18n=\"webcab.dimension.input.suffix\"></span>\n                        </span>\n                    </div>\n                </span>\n            </div>\n        `;\n    }\n}\n","import { css, html, unsafeCSS, TemplateResult } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport style from \"./toolbar.component.sass?inline\";\nimport { BaseElement } from \"../../base/base.component\";\n\n@customElement(\"fv-toolbar\")\nexport class ToolbarComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n\n        this.addEventListener(\"wheel\", (e: WheelEvent) => {\n            e.preventDefault();\n        }, { passive: false });\n    }\n\n    render(): TemplateResult<1> {\n        if (this.classList.contains(\"wrappable\")) {\n            return html`\n                <div class=\"content\">\n                    <slot></slot>\n                </div>\n            `;\n        }\n        return html`<slot></slot>`;\n    }\n}","import { html, TemplateResult } from \"lit\";\nimport { customElement, query } from \"lit/decorators.js\";\nimport { ComponentService } from \"../../../../utils/component.service\";\nimport { ToolbarComponent } from \"./toolbar.component\";\nimport type { ComponentStateHandlerMap } from \"../../../../models/event-handler/component-state-event\";\n\ndeclare global {\n    interface ComponentStates {\n        \"fv-toggle-toolbar:toggle\": Record<string, never>;\n    }\n}\n\n@customElement(\"fv-toggle-toolbar\")\nexport class ToggleToolbarComponent extends ToolbarComponent {\n    static styles = [\n        super.styles || []\n    ];\n\n    constructor() {\n        super();\n    }\n\n    @query(\"fv-toolbar\")\n    public container: HTMLDivElement | undefined;\n\n    stateHandlers: ComponentStateHandlerMap = {\n        \"fv-toggle-toolbar:toggle\": () => { this.toggleVisibility(); },\n    };\n\n    public toggleVisibility(): void {\n        if (!this.container) return;\n        if (this.container.classList.contains(\"hidden\")) {\n            this.container.classList.remove(\"hidden\");\n            return;\n        }\n        this.container.classList.add(\"hidden\");\n    }\n\n    public static toggle(query?: string) {\n        const clickedComponent = ComponentService.find(\"fv-toggle-toolbar\", query ? query as string : \"\") as ToggleToolbarComponent;\n        clickedComponent?.toggleVisibility();\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            <slot name=\"toggle-button\"></slot>\n            <fv-toolbar class=\"hidden\">${super.render()}</fv-toolbar>\n        `;\n    }\n}\n","import { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport { css, unsafeCSS, PropertyValueMap } from \"lit\";\nimport style from \"./svg-icon.component.sass?inline\";\n\n@customElement(\"svg-icon\")\nexport class SVGIconComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true, attribute: \"src\" })\n    public _src = \"\";\n\n    private _color = \"#ffffff\";\n\n    get Color() : string {\n        return this._color;\n    }\n\n    set Color(val_ : string) {\n        this.style.setProperty(\"background-color\", val_);\n        this._color = val_;\n    }\n\n    constructor() {\n        super();\n    }\n\n    protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>) {\n        const color = this.style.getPropertyValue(\"color\");\n        if (color && this._color !== color) {\n            this.Color = color;\n        }\n        this.style.removeProperty(\"color\");\n        this.style.setProperty(\"background-color\", this.style.getPropertyValue(\"color\"));\n        this.style.setProperty(\"mask-image\", \"url(\" + this._src + \")\");\n        super.updated(_changedProperties);\n    }\n}\n","import { css, html, unsafeCSS, TemplateResult, PropertyValues } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport style from \"./toolbar.button.component.sass?inline\";\nimport { BaseElement } from \"../../base/base.component\";\nimport { StyleHelper } from \"../../../../utils/style.helper\";\nimport { EventHandlerService } from \"../../../../utils/event.handler.service\";\nimport { ImageService } from \"../../../../utils/image.service\";\nimport { SVGIconComponent } from \"../../embedded-svg-icon\";\nimport {EventFactoryService} from \"@dh-software/webui-api\";\nimport type { ComponentStateHandlerMap } from \"../../../../models/event-handler/component-state-event\";\n\ndeclare global {\n    interface ComponentStates {\n        \"fv-toolbar-button:set-active\":            { value: boolean };\n        \"fv-animation-toolbar-button:sync-active\": { mode: boolean };\n    }\n}\n\n@customElement(\"fv-toolbar-button\")\nexport class ToolbarButtonComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true, attribute: \"title-text\" })\n    public titleText = \"\";\n    @property({ type: String, reflect: true, attribute: \"config-id\" })\n    protected configId = \"\";\n    @property({ type: String, reflect: true, attribute: \"icon\" })\n    protected icon = \"\";\n    @property({ type: String, reflect: true, attribute: \"active-icon\" })\n    protected activeIcon = \"\";\n    @property({ type: Boolean, reflect: true, attribute: \"handle-active\" })\n    public handleActive = false;\n    @property({ type: Boolean, reflect: true, attribute: \"prevent-click-on-active\" })\n    protected preventClickOnActive = false;\n    @property({ type: Boolean, reflect: true, attribute: \"active-is-loading\" })\n    public activeIsLoading = false;\n    @property({ type: String, reflect: true, attribute: \"event-id\" })\n    protected eventId = \"\";\n    @property({ type: Boolean, reflect: true, attribute: \"initial-active\" })\n    public initialActive = false;\n\n    stateHandlers: ComponentStateHandlerMap = {\n        \"fv-toolbar-button:set-active\": ({ value }) => { this.active = value; },\n        \"fv-animation-toolbar-button:sync-active\": ({ mode }) => {\n            if (this.handleActive) this.active = mode;\n        },\n    };\n\n    public set active(value: boolean) {\n        const button = this.renderRoot.querySelector(\".button\");\n        if (button) {\n            if (value) {\n                button.classList.add(\"active\");\n                this.requestUpdate();\n                return;\n            }\n            button.classList.remove(\"active\");\n        }\n        this.requestUpdate();\n    }\n    public get active(): boolean {\n        const button = this.renderRoot.querySelector(\".button\");\n        if (button) {\n            return button.classList.contains(\"active\");\n        }\n        return false;\n    }\n\n    protected async clickEvent(e: Event) {\n        if (this.preventClickOnActive && this.active) {\n            e.stopPropagation();\n            e.preventDefault();\n            e.stopImmediatePropagation();\n            return;\n        }\n\n        if (this.handleActive) {\n            this.active = !this.active;\n        }\n\n\n        if (this.eventId) {\n            let classes = \"[event-id='\" + this.eventId + \"'][title-text='\" + this.titleText + \"'] \";\n            this.classList.forEach((className) => {\n                classes += \".\";\n                classes += className;\n            });\n            if (EventHandlerService.dispatch(this.eventId, {\n                components: [{\n                    name: \"fv-toolbar-button\",\n                    selector: classes\n                }]\n            })) return;\n        }\n        this.dispatchEvent(new CustomEvent<{ \"button-type\": string }>(\"fv-toolbar-button-clicked\", {\n            detail: { \"button-type\": this.eventId },\n            bubbles: true,\n            composed: true\n        }));\n    }\n    protected async dblclickEvent(e: Event) {\n        return;\n    }\n\n    constructor() {\n        super();\n\n        this.addEventListener(\"click\", (e: Event) => {\n            this.clickEvent(e);\n        });\n    }\n\n    connectedCallback() {\n        super.connectedCallback();\n        EventFactoryService.ToolbarButtonStateToggled.register(this.onToolbarButtonToggled);\n    }\n\n    disconnectedCallback() {\n        EventFactoryService.ToolbarButtonStateToggled.unregister(this.onToolbarButtonToggled);\n        super.disconnectedCallback();\n    }\n\n    private onToolbarButtonToggled = (...args: any[]) => {\n        const data: {id: string, isActive: boolean} = args[0];\n        if(data && this.classList.contains(data.id)) {\n            this.active = data.isActive;\n        }\n    }\n\n    protected build(inner: TemplateResult): TemplateResult<1> {\n        if (window.g_configuration == undefined || window.g_configuration[this.configId] === false) {\n            this.classList.add(\"disabled-in-config\");\n            return html``;\n        }\n        this.classList.remove(\"disabled-in-config\");\n\n        if (this.classList.contains('invalid-image-src')) {\n            return html``;\n        }\n\n        return html`\n            <div class=\"button-container\">\n                <button @dblclick=\"${this.dblclickEvent}\" part=\"button\" class=\"button\" title=\"${this.titleText}\" tabindex=\"-1\">\n                    ${inner}\n                </button>\n            </div>\n        `;\n    }\n\n    protected getImageIcon(): string {\n        if (this.handleActive && this.active) {\n            const iconActive = StyleHelper.getVar(this, \"--toolbar-icon-active\");\n            if (iconActive.length > 0) {\n                return iconActive;\n            }\n        }\n        return StyleHelper.getVar(this, \"--toolbar-icon\");\n    }\n\n    private getAttributeIcon(): string {\n        if (this.handleActive && this.active && this.activeIcon.length > 0) {\n            return this.activeIcon;\n        }\n        return this.icon;\n    }\n\n    render(): TemplateResult<1> {\n        const icon = this.getImageIcon();\n\n        if (icon) {\n            if (ImageService.getExtension(icon) === \"svg\") {\n                const svgIcon = new SVGIconComponent();\n                svgIcon.classList.add(\"image\");\n                svgIcon.classList[this.active ? \"add\" : \"remove\"](\"active\");\n                svgIcon._src = icon;\n                return this.build(html`${svgIcon}`);\n            }\n            return this.build(html`<img class=\"image\" src=${icon}/>`);\n        }\n        else if (this.icon) {\n            return this.build(html`<i class=\"icon ${this.getAttributeIcon()}\" part=\"icon\"></i>`);\n        }\n        return this.build(html`<slot></slot>`);\n    }\n\n    protected async firstUpdated(_changedProperties: PropertyValues) {\n        const imageSrc = this.getImageIcon();\n\n        if (imageSrc.length > 0) {\n            const imageValid = await this.checkImageSource(imageSrc)\n            if (!imageValid) {\n                this.classList.add(\"invalid-image-src\");\n            }\n        }\n\n        if (this.initialActive) {\n            this.active = true;\n        }\n\n        super.firstUpdated(_changedProperties);\n    }\n\n    public attributeChangedCallback(name: string, _old: string | null, value: string | null): void {\n        super.attributeChangedCallback(name, _old, value);\n        if (name === \"title-text\" && this.titleText) {\n            this.title = this.titleText;\n        }\n    }\n\n    async checkImageSource(src: string): Promise<boolean> {\n        return new Promise((resolve) => {\n            const img = new Image();\n            img.onload = () => {\n                resolve(true);\n            };\n            img.onerror = () => {\n                resolve(false);\n            };\n            img.src = src;\n        });\n    }\n\n}\n","import { html, TemplateResult } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { ToolbarButtonComponent } from \"./toolbar.button.component\";\nimport { PopupComponent } from \"../../popup\";\nimport { HRListComponent } from \"../../../hr\";\nimport { ComponentService } from \"../../../../utils/component.service\";\nimport { StyleHelper } from \"../../../../utils/style.helper\";\nimport {CommunicationMessageService, RequestService, WebViewerService} from \"@dh-software/webui-api\";\n// import { EventHandlerService } from \"../../../../utils/event.handler.service\";\n\n@customElement(\"fv-hr-mode-toolbar-button\")\nexport class HrModeToolbarButtonComponent extends ToolbarButtonComponent {\n    static styles = super.styles || [];\n\n    @property({ type: String, reflect: true, attribute: \"popup-selector\" })\n    public popupSelector = \"\";\n\n    @property({ type: String, reflect: true, attribute: \"list-selector\" })\n    public listSelector = \"\";\n\n    @property({ type: String, reflect: true, attribute: \"popup-closer-selector\" })\n    public popupCloserSelector = \"\";\n\n    private hrThemeCount = 0;\n\n    constructor() {\n        super();\n        this.configId = \"new_hr_mode\";\n\n        this.addEventListener(\"connected\", async ()=>{\n            await RequestService.Initialized;\n            const themes = await CommunicationMessageService.getHRThemes();\n            this.hrThemeCount = Object.keys(themes).length;\n            this.requestUpdate();\n        });\n\n        this.addEventListener(\"fv-toolbar-button-clicked\", ()=>{\n            // let selector = \"[title-text='\" + this.titleText + \"']\";\n            // this.classList.forEach((className)=>{\n            //     selector += \".\";\n            //     selector += className;\n            // });\n            // if (EventHandlerService.dispatch(\"toggle-hr-mode\", {\n            //     components: [{\n            //         name: \"fv-toolbar-button\",\n            //         selector: selector\n            //     }]\n            // })) return;\n\n            let popupComponent: PopupComponent = ComponentService.find(\"FV-POPUP\", this.popupSelector ? this.popupSelector : \"\") as PopupComponent;\n            if (popupComponent == undefined) {\n                popupComponent = new PopupComponent();\n                document.body.append(popupComponent);\n            }\n\n            const element = this.renderRoot.querySelector(\"button\") as HTMLElement;\n            if (element == undefined) return;\n\n            popupComponent.owner = element;\n            if (this.classList.contains(\"prevent-pointer\")) {\n                popupComponent.pointer = false;\n            }\n\n            let hrListComponent: HRListComponent = ComponentService.find(\"FV-HR-LIST\", this.listSelector ? this.listSelector : \"\") as HRListComponent;\n            if (hrListComponent == undefined) {\n                hrListComponent = new HRListComponent();\n                popupComponent.append(hrListComponent);\n            }\n            const hidePopup = (e: Event | MouseEvent) => {\n                popupComponent.hide();\n                this.active = false;\n                hrListComponent.removeEventListener(\"onChange\", hidePopup);\n                WebViewerService.FurnviewWebViewer?.contentWindow?.removeEventListener( \"mousedown\", hidePopup );\n            };\n            hrListComponent.addEventListener(\"onChange\", hidePopup);\n            WebViewerService.FurnviewWebViewer?.contentWindow?.addEventListener( \"mousedown\", hidePopup, { passive: true, capture: true });\n\n            //const popupCloserComponent: PopupCloserComponent = ComponentService.find(\"FV-POPUP-CLOSER\", this.popupCloserSelector ? this.popupCloserSelector : \"\") as PopupCloserComponent;\n            if (popupComponent.IsActive) {\n                popupComponent.hide();\n\n                //if (popupCloserComponent) popupCloserComponent.hide();\n            }\n            else {\n                popupComponent.show();\n                //if (popupCloserComponent) popupCloserComponent.show();\n                hrListComponent.onResize();\n            }\n        });\n    }\n\n    connectedCallback(): void {\n        super.connectedCallback();\n        this.dispatchEvent(new CustomEvent(\"connected\"));\n    }\n\n    protected build(inner: TemplateResult): TemplateResult<1> {\n        if (this.hrThemeCount < 1) {\n            this.classList.add(\"disabled-in-config\");\n            return html``;\n        }\n        return super.build(inner);\n    }\n\n    render(): TemplateResult<1> {\n        const icon = this.getImageIcon();\n        if (icon) {\n            return this.build(html`<img class=\"image\" src=${icon}/>`);\n        }\n        else if (this.icon) {\n            return this.build(html`<i class=\"icon ${this.icon}\" part=\"icon hr-mode\"></i>`);\n        }\n        return this.build(html`<slot></slot>`);\n    }\n}\n","import { TemplateResult } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport { ToolbarButtonComponent } from \"./toolbar.button.component\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-animation-toolbar-button\")\nexport class AnimationToolbarButtonComponent extends ToolbarButtonComponent {\n    static styles = super.styles || [];\n\n    protected async clickEvent(e: Event) {\n        super.clickEvent(e);\n\n        const status = await CommunicationMessageService.getAnimationStatus();\n        if (status.running) {\n            await CommunicationMessageService.setAnimationMode(status.mode, true);\n            if (this.handleActive) {\n                this.active = status.mode;\n            }\n            return;\n        }\n        await CommunicationMessageService.setAnimationMode(!status.mode, false);\n        if (this.handleActive) {\n            this.active = !status.mode;\n        }\n    }\n\n    constructor() {\n        super();\n        this.configId = \"toolbar_button_animation\";\n    }\n\n    connectedCallback(): void {\n        super.connectedCallback();\n    }\n\n    render(): TemplateResult<1> {\n        return super.render();\n    }\n}\n","import {\n\tcss,\n\tCSSResultGroup,\n\thtml,\n\tPropertyValues,\n\tTemplateResult,\n\tunsafeCSS,\n} from \"lit\";\nimport {\n\tcustomElement,\n\tproperty,\n\tquery,\n\tqueryAll,\n\tstate,\n} from \"lit/decorators.js\";\nimport { BaseElement, DhElement } from \"../base/base.component\";\nimport { ModularSystemEventData } from \"../../../define/interface\";\nimport style from \"./step.component.sass?inline\";\nimport type { StepsComponent } from \"../steps/steps.component\";\n\n// Runtime-resolved instanceof to keep type narrowing without a static import cycle.\nfunction isStepsComponent(el: unknown): el is StepsComponent {\n\tconst ctor = customElements.get(\"fv-steps\");\n\treturn ctor != undefined && el instanceof ctor;\n}\nimport { CardDataService } from \"../../../utils/card.data.service\";\nimport { EventHandlerEvent } from \"../../../models/event-handler/event.handler.model\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\nimport {ComponentService, ComponentServiceSearchParams} from \"../../../utils/component.service\";\nimport type { ComponentStateHandlerMap } from \"../../../models/event-handler/component-state-event\";\n\ndeclare global {\n\tinterface ComponentStates {\n\t\t\"fv-step:notify-stage-changed\": ComponentServiceSearchParams;\n\t}\n}\n\ninterface TraversalEventsContainer {\n\tevents: Array<EventHandlerEvent>;\n\t\"prevent-controlled-element-update\"?: boolean;\n}\n\ninterface StepStagesSettings {\n\t\"controlled-element\": { tag: string; query: string };\n\t\"traversal-events\": {\n\t\t[stage: string]: {\n\t\t\tentry: { events: Array<EventHandlerEvent> },\n\t\t\tnext: TraversalEventsContainer,\n\t\t\tprevious: TraversalEventsContainer\n\t\t};\n\t};\n\t\"block-step-advance-on-boundary\"?: {\n\t\t\"next\"?: boolean,\n\t\t\"previous\"?: boolean\n\t};\n}\n\n@customElement(\"fv-step\")\nexport class StepComponent extends BaseElement {\n\tstatic styles: CSSResultGroup[] = [\n\t\tsuper.styles || [],\n\t\tcss`\n\t\t\t${unsafeCSS(style)}\n\t\t`,\n\t];\n\n\t@queryAll(\".circle-number-symbol\")\n\tprivate _circleNumberSymbol?: Array<Element>;\n\n\t@property({ type: String, reflect: true })\n\tpublic text = \"\";\n\n\t@property({ type: String, reflect: true, attribute: \"mobile-text\" })\n\tpublic mobileText = \"\";\n\n\t@property({ type: String, reflect: true })\n\tpublic icon = \"\";\n\n\t@property({ type: Number, reflect: true, attribute: \"index\" })\n\tpublic index = -1;\n\n\t@property({ type: Object, reflect: false, attribute: \"stages\" })\n\tpublic stages: StepStagesSettings | undefined = undefined;\n\n\t@property({ type: Boolean, reflect: true, attribute: \"show-index\" })\n\tprivate _showIndex = false;\n\n\t@property({ type: Boolean, reflect: true, attribute: \"disabled\" })\n\tprivate _disabled = false;\n\n\t@property({ type: Number })\n\tdisplayIndex = this.index;\n\n\tstateHandlers: ComponentStateHandlerMap = {\n\t\t\"fv-step:notify-stage-changed\": async ({ tag, query }) => {\n\t\t\tconst ce = this.stages?.[\"controlled-element\"];\n\t\t\tif (!ce || ce.tag !== tag) return;\n\t\t\tif (query !== undefined && ce.query !== query) return;\n\t\t\tawait this.RefreshStageEnvironment();\n\t\t},\n\t};\n\n\tprivate _stage:\n\t\t| { current: number; first: number; last: number }\n\t\t| undefined = undefined;\n\tprivate set stage(stage_: number) {\n\t\tif (this.stages == undefined || this._stage == undefined) {\n\t\t\treturn;\n\t\t}\n\t\tif (stage_ < this._stage.first) {\n\t\t\tthis._stage.current = this._stage.first;\n\t\t\treturn;\n\t\t}\n\t\tif (stage_ > this._stage.last) {\n\t\t\tthis._stage.current = this._stage.last;\n\t\t\treturn;\n\t\t}\n\t\tthis._stage.current = stage_;\n\t}\n\tpublic get traverseStages(): boolean {\n\t\treturn !(this.stages == undefined || this._stage == undefined);\n\t}\n\n\tprivate async DispatchTraversalEvents(stageToDispatch_: number, next_: boolean): Promise<boolean> {\n\t\tif (this.stages == undefined || this._stage == undefined) {\n\t\t\treturn true;\n\t\t}\n\t\tconst stageTraversalEvents = this.stages[\"traversal-events\"][stageToDispatch_.toFixed()];\n\t\tif (stageTraversalEvents == undefined) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (next_) {\n\t\t\tif (stageTraversalEvents.next && stageTraversalEvents.next.events) {\n\t\t\t\tawait EventHandlerService.dispatchEventList(stageTraversalEvents.next.events, false);\n\t\t\t\treturn stageTraversalEvents.next[\"prevent-controlled-element-update\"] ? false : true;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\tif (stageTraversalEvents.previous && stageTraversalEvents.previous.events) {\n\t\t\tawait EventHandlerService.dispatchEventList(stageTraversalEvents.previous.events, false);\n\t\t\treturn stageTraversalEvents.previous[\"prevent-controlled-element-update\"] ? false : true;\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate async TraverseToStage(target_: number): Promise<boolean | undefined> {\n\t\tif (this.stages == undefined || this._stage == undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (target_ === this._stage.current) {\n\t\t\t// no need for events if no change!\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst controlledElement = this.stages[\"controlled-element\"];\n\t\tconst stageElement = ComponentService.find(controlledElement.tag, controlledElement.query);\n\n\n\t\tif (stageElement && !stageElement.VerifyStepStageChange()) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst targetStageTraversalEvents = this.stages[\"traversal-events\"][target_.toFixed()];\n\t\tif (targetStageTraversalEvents && targetStageTraversalEvents.entry && targetStageTraversalEvents.entry.events) {\n\t\t\tawait EventHandlerService.dispatchEventList(targetStageTraversalEvents.entry.events, false);\n\t\t}\n\n\t\tconst applyStageToControlledElement = await this.DispatchTraversalEvents(this._stage.current, this._stage.current < target_);\n\n\t\tif (target_ < this._stage.first) {\n\t\t\tif (this.stages[\"block-step-advance-on-boundary\"]) {\n\t\t\t\treturn this.stages[\"block-step-advance-on-boundary\"].previous ? true : false;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\tif (target_ > this._stage.last) {\n\t\t\tif (this.stages[\"block-step-advance-on-boundary\"]) {\n\t\t\t\treturn this.stages[\"block-step-advance-on-boundary\"].next ? true : false;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.stage = target_;\n\n\t\tif (!applyStageToControlledElement) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (stageElement != undefined) {\n\t\t\tawait stageElement.ApplyStepStage(this._stage.current);\n\t\t}\n\t\treturn true;\n\t}\n\tpublic async RefreshStageEnvironment(): Promise<void> {\n\t\tif (!this.stages) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst controlledElement = this.stages[\"controlled-element\"];\n\t\tconst stageElement = ComponentService.find(controlledElement.tag, controlledElement.query);\n\t\tif (stageElement == undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst stage = await stageElement.DetermineStepStageEnvironment();\n\t\tif (stage == undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst targetStageTraversalEvents = this.stages[\"traversal-events\"][stage.current.toFixed()];\n\t\tif (targetStageTraversalEvents && targetStageTraversalEvents.entry && targetStageTraversalEvents.entry.events) {\n\t\t\tawait EventHandlerService.dispatchEventList(targetStageTraversalEvents.entry.events, false);\n\t\t}\n\n\t\tthis._stage = stage; // set stage on open of step\n\t}\n\tprivate async InitStageEnvironment(): Promise<void> {\n\t\tawait this.RefreshStageEnvironment();\n\t}\n\n\tpublic async PreviousStage(): Promise<boolean | undefined> {\n\t\tif (this._stage == undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this.TraverseToStage(this._stage.current - 1);\n\t}\n\tpublic async NextStage(): Promise<boolean | undefined> {\n\t\tif (this._stage == undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this.TraverseToStage(this._stage.current + 1);\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.addEventListener(\"click\", async (ev: CustomEventInit) => {\n\t\t\t// const steps = this.parentElement as StepsComponent;\n\t\t\tif (!this.classList.contains(\"only-action\")) {\n\t\t\t\tawait this.InitStageEnvironment();\n\n\t\t\t\tconst event = new CustomEvent<ModularSystemEventData>(\n\t\t\t\t\t\"fv-step-clicked\",\n\t\t\t\t\t{\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tid: this.id,\n\t\t\t\t\t\t\tcurrentTarget: this,\n\t\t\t\t\t\t\tindex: this.index.toString(),\n\t\t\t\t\t\t\tuserInteraction:\n\t\t\t\t\t\t\t\tev?.detail?.userInteraction !== undefined\n\t\t\t\t\t\t\t\t\t? ev.detail.userInteraction\n\t\t\t\t\t\t\t\t\t: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tthis.dispatchEvent(event);\n\t\t\t\t// steps?.dispatchEvent(event);\n\t\t\t\tthis.classList.add(\"active\");\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate updateIndex() {\n\t\tif (\n\t\t\t!this._showIndex ||\n\t\t\t!this._circleNumberSymbol ||\n\t\t\t!this.parentElement\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst steps = this.parentElement as StepsComponent;\n\t\tconst visibleSteps: StepComponent[] = Array.from(\n\t\t\tsteps.querySelectorAll(\n\t\t\t\t`${steps.stepQuery}:not(.hide-while-empty-content)`,\n\t\t\t),\n\t\t);\n\t\tconst visibleIndex = visibleSteps.indexOf(this);\n\n\t\tif (visibleIndex >= 0) {\n\t\t\tthis.displayIndex = visibleIndex;\n\t\t}\n\n\t\tthis._circleNumberSymbol.forEach((item) => {\n\t\t\titem.textContent = (this.displayIndex + 1).toString();\n\t\t});\n\t}\n\n\tprivate checkStepTargetElementVisibility(\n\t\telement_?: DhElement | undefined,\n\t) {\n\t\tlet emptyElements = 0;\n\t\tlet disabledElements = 0;\n\n\t\tconst steps = this.parentElement as StepsComponent;\n\t\tif (steps && isStepsComponent(steps) && this.index > -1) {\n\t\t\tconst elements = new Array<DhElement>();\n\t\t\tif (element_) {\n\t\t\t\telements.push(element_);\n\t\t\t} else {\n\t\t\t\telements.push(...steps.getTargetContentsList(this.index));\n\t\t\t}\n\n\t\t\tif (steps.hideEmptyContent) {\n\t\t\t\tthis.classList.remove(\"hide-while-empty-content\");\n\t\t\t}\n\t\t\tif (steps.autoDisableSteps) {\n\t\t\t\tthis._disabled = false;\n\t\t\t}\n\n\t\t\tif (steps.ignoreEmptyTargets && elements.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (const element of elements) {\n\t\t\t\tif (element) {\n\t\t\t\t\tconst isDisabled =\n\t\t\t\t\t\telement.classList.contains(\"step-disabled\");\n\t\t\t\t\tconst isEmpty = element.isEmpty();\n\n\t\t\t\t\tif (steps.hideEmptyContent && isEmpty && !isDisabled) {\n\t\t\t\t\t\t++emptyElements;\n\t\t\t\t\t}\n\t\t\t\t\tif (steps.autoDisableSteps && isDisabled) {\n\t\t\t\t\t\t++disabledElements;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (steps.hideEmptyContent && emptyElements == elements.length) {\n\t\t\t\tthis.classList.add(\"hide-while-empty-content\");\n\t\t\t}\n\t\t\tif (\n\t\t\t\tsteps.autoDisableSteps &&\n\t\t\t\telements.length != 0 &&\n\t\t\t\tdisabledElements == elements.length\n\t\t\t) {\n\t\t\t\tthis._disabled = true;\n\t\t\t}\n\t\t\tthis.updateIndex();\n\t\t\tsteps.dispatchEvent(\n\t\t\t\tnew CustomEvent(\"fv-steps-request-step-activated-events\", {\n\t\t\t\t\tdetail: { \"requesting-step-index\": this.index },\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t}\n\n\tprotected firstUpdated(_changedProperties: PropertyValues) {\n\t\tsuper.firstUpdated(_changedProperties);\n\t\twindow.addEventListener(\"onUpdated\", ((e: CustomEvent) => {\n\t\t\tthis.checkStepTargetElementVisibility();\n\t\t\tCardDataService.WaitForAllCardContainerFetchPromises().then(() => {\n\t\t\t\tthis.checkStepTargetElementVisibility();\n\t\t\t});\n\t\t}) as EventListener);\n\t}\n\n\tprivate buildIcon() {\n\t\tif (this._showIndex) {\n\t\t\treturn html`<div class=\"circle-number-symbol\">\n\t\t\t\t${this.index + 1}\n\t\t\t</div>`;\n\t\t}\n\t\tconst image = this.style.getPropertyValue(\"--icon-image\");\n\t\tif (image) {\n\t\t\treturn html`<img class=\"icon-image\" src=\"${image}\" part=\"image\" />`;\n\t\t}\n\t\treturn html`<div class=\"icon ${this.icon}\"></div>`;\n\t}\n\tprivate buildText() {\n\t\treturn html`\n\t\t\t<span class=\"text-span\" i18n=\"${this.text}\">${this.text}</span>\n\t\t\t<span class=\"mobile-text-span\" i18n=\"${this.mobileText}\"\n\t\t\t\t>${this.mobileText}</span\n\t\t\t>\n\t\t`;\n\t}\n\n\tpublic build(additional: TemplateResult): TemplateResult<1> {\n\t\tthis.classList.remove(\"show-mobile-text\");\n\t\tthis.checkStepTargetElementVisibility();\n\t\tif (this.mobileText.length > 0) this.classList.add(\"show-mobile-text\");\n\n\t\tconst textAboveImage = this.classList.contains(\"text-above-image\");\n\n\t\treturn html`\n\t\t\t<div class=\"step-container\">\n\t\t\t\t${this.classList.contains(\"prevent-default\")\n\t\t\t\t\t? html``\n\t\t\t\t\t: html`\n\t\t\t\t\t\t\t<div class=\"inner-container\">\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tpart=\"${textAboveImage ? \"text\" : \"img\"}\"\n\t\t\t\t\t\t\t\t\tclass=\"upper-container ${textAboveImage\n\t\t\t\t\t\t\t\t\t\t? \"text\"\n\t\t\t\t\t\t\t\t\t\t: \"img\"}\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t${textAboveImage\n\t\t\t\t\t\t\t\t\t\t? this.buildText()\n\t\t\t\t\t\t\t\t\t\t: this.buildIcon()}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tpart=\"${!textAboveImage ? \"text\" : \"img\"}\"\n\t\t\t\t\t\t\t\t\tclass=\"lower-container ${!textAboveImage\n\t\t\t\t\t\t\t\t\t\t? \"text\"\n\t\t\t\t\t\t\t\t\t\t: \"img\"}\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t${textAboveImage\n\t\t\t\t\t\t\t\t\t\t? this.buildIcon()\n\t\t\t\t\t\t\t\t\t\t: this.buildText()}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\t\t\tname=\"step-content\"\n\t\t\t\t\t\t\t\t\tclass=\"step-content\"\n\t\t\t\t\t\t\t\t></slot>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`}\n\t\t\t\t${additional}\n\t\t\t</div>\n\t\t`;\n\t}\n\trender(): TemplateResult<1> {\n\t\treturn this.build(html`<slot></slot>`);\n\t}\n}\n","import { css, CSSResultGroup, html, PropertyValueMap, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport { StepComponent } from \"./step.component\";\nimport style from \"./icon.step.component.sass?inline\";\n\n\n@customElement(\"fv-icon-step\")\nexport class IconStepComponent extends StepComponent {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n    }\n\n    render(): TemplateResult<1> {\n        return super.build(html`<slot></slot>`);\n    }\n    protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n        super.updated(_changedProperties);\n\n        if (this.classList.contains(\"underline\")) {\n            let container = undefined;\n            const textAboveImage = this.classList.contains(\"text-above-image\");\n            if (textAboveImage) {\n                container = this.renderRoot.querySelector(\".upper-container\");\n            }\n            else {\n                container = this.renderRoot.querySelector(\".lower-container\");\n            }\n            container?.classList.add(\"underline-active\");\n        }\n    }\n}","import {customElement, property} from \"lit/decorators.js\";\r\nimport { LitElement, html, css, TemplateResult, CSSResultGroup, unsafeCSS, nothing } from 'lit';\r\nimport { StepComponent } from \"../step\";\r\nimport { StepsComponent } from \"../steps\";\r\nimport style from \"./pill-step.component.ts.sass?inline\";\r\n\r\n@customElement('fv-pill-step')\r\nexport class PillStepComponent extends StepComponent{\r\n\tstatic styles: CSSResultGroup[] = [\r\n\t\tsuper.styles || [],\r\n\t\tcss`${unsafeCSS(style)}`\r\n\t];\r\n\r\n\t@property({type:Boolean, reflect: true})\r\n\tchecked = false;\r\n\r\n\tconstructor()\r\n\t{\r\n\t\tsuper();\r\n\r\n\t\tthis.addEventListener(\"fv-step-clicked\", this.onPillStepClicked.bind(this));\r\n\t}\r\n\r\n    private onPillStepClicked(e: CustomEventInit) {\r\n        const clickedIndex = parseInt(e.detail.index);\r\n        const stepsParent = this.parentElement as StepsComponent;\r\n        const orderedIndices = stepsParent?.getAvailableIndices() ?? [];\r\n        const clickedPos = orderedIndices.indexOf(clickedIndex);\r\n\r\n        const pillSteps = this.parentElement?.querySelectorAll('fv-pill-step') as NodeListOf<PillStepComponent>;\r\n        pillSteps.forEach((pill) => {\r\n            pill.checked = orderedIndices.indexOf(pill.index) < clickedPos;\r\n        });\r\n    }\r\n\r\n\trenderCircleCheckContent() {\r\n\t\treturn html`\r\n\t\t\t<div class=\"circle\">\r\n\t\t\t\t<span class=\"check ${this.checked ? 'checked' : ''}\">\r\n\t\t\t\t\t<svg width=\"12\" height=\"12\" viewBox=\"0 0 22 23\" fill=\"none\"\r\n\t\t\t\t\t\tstroke=\"currentColor\" stroke-width=\"3\"\r\n\t\t\t\t\t\tstroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n\t\t\t\t\t<polyline points=\"20 6 9 17 4 12\"/>\r\n\t\t\t\t\t</svg>\r\n\t\t\t\t</span>\r\n\t\t\t</div>\r\n\t\t`;\r\n\t}\r\n\r\n\trenderCircleIndexContent() {\r\n\t\treturn html`\r\n\t\t<div class=\"circle\">\r\n\t\t\t${this.displayIndex + 1}\r\n\t\t</div>\r\n      `;\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn html`\r\n\t\t\t<div class=\"fv-step-container\">\r\n\t\t\t\t<div class=\"circle\">\r\n\t\t\t\t\t<span class=\"index ${this.checked ? 'hide' : ''}\">\r\n\t\t\t\t\t\t${this.displayIndex + 1}\r\n\t\t\t\t\t</span>\r\n\r\n\t\t\t\t\t<span class=\"check ${this.checked ? 'checked' : ''}\">\r\n\t\t\t\t\t\t<svg class=\"check-svg\" viewBox=\"0 0 22 24\">\r\n\t\t\t\t\t\t\t<polyline points=\"20 6 9 17 4 12\"/>\r\n\t\t\t\t\t\t</svg>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<fv-label class=\"step-text\" i18n=\"${this.text}\"></fv-label>\r\n\t\t\t</div>\r\n\t\t`;\r\n\t}\r\n\r\n\r\n}","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./info.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-info-button\")\nexport class InfoComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n    }\n\n    connectedCallback(): void {\n        super.connectedCallback();\n        this.addEventListener(\"click\", this.handleClick);\n    }\n\n    handleClick(ev: MouseEvent) {\n        ev.stopPropagation();\n        ev.preventDefault();\n        ev.stopImmediatePropagation();\n\n        this.dispatchEvent(new CustomEvent(\"info-button-clicked\", {\n            detail: {\n            }, bubbles: true, composed: true\n        }));\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            <span aria-hidden=\"true\">i</span>\n        `;\n    }\n}\n","import { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./titled-image.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../../../standard/base/base.component\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport \"../../../../standard/info_button/info.component\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-titled-image\")\nexport class TitledImageComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Boolean, reflect: true })\n    zoomable = true;\n\n    @property({ type: String, reflect: true })\n    image = \"\";\n\n    @property({ type: String, reflect: true })\n    activeIcon = \"fv-icon-plus\";\n\n    @property({ type: String, reflect: true })\n    inactiveIcon = \"fv-icon-maximize\";\n\n    @property({ type: String, reflect: true })\n    text = \"\";\n\n    @property({ type: String })\n    infoData = \"\";\n\n    @property({ type: String })\n    infoType = \"\";\n\n    @property({ type: String })\n    manufacturer = \"\";\n\n    @property({ type: Boolean, reflect: true })\n    selected = false;\n\n    @query(\".zoomButton\")\n    private _zoomButton: HTMLDivElement | undefined;\n\n    @property({ type: Boolean })\n    private _isActive = false;\n\n    public className = \"flex\";\n\n    public set Image(val_: string) {\n        this.image = val_ ? `background-${\n            val_.startsWith(\"#\") ?\n                `color: ${val_}` :\n                val_.split(\",\").length >= 2 ?\n                    `color: rgba(${val_})`\n                    : `image: url(${val_})`\n        }` : this.image;\n    }\n\n    set IsActive(active: boolean) {\n        this._isActive = active;\n        this.requestUpdate();\n    }\n\n    constructor() {\n        super();\n        this.addEventListener(\"click\", ()=>{\n            this._isActive = false;\n            this.requestUpdate();\n        });\n    }\n\n    private zoom(e: Event) {\n        e.preventDefault();\n        e.stopPropagation();\n        this._isActive = !this._isActive;\n        this.dispatchEvent(new CustomEvent(\"zoomClicked\", { detail: { zoomable: this.zoomable, active: this._isActive } }));\n        this.requestUpdate();\n    }\n\n    private infoClick (e: PointerEvent) {\n        e.preventDefault();\n        e.stopPropagation();\n        CommunicationMessageService.showToolTipData({\n            \"manufacturer\": this.manufacturer,\n            \"type\": this.infoType,\n            \"data\": this.infoData\n        });\n    }\n\n    protected updated(changedProps: PropertyValues): void {\n        super.updated?.(changedProps);\n        // Mirror the reactive `selected` prop onto the legacy `.selected` class so\n        // existing themed CSS that targets `.selected` keeps working without change.\n        if (changedProps.has(\"selected\")) {\n            this.classList.toggle(\"selected\", this.selected);\n        }\n    }\n\n    render(): TemplateResult<1> {\n        this.classList[this._isActive ? \"add\" : \"remove\"](\"zoomed\");\n        if (this._isActive) {\n            this.setAttribute(\"part\", \"zoomed\");\n        }\n        else {\n            this.removeAttribute(\"part\");\n        }\n        const iconClass: { [key: string]: boolean } = {}\n        iconClass[this.activeIcon] = this._isActive;\n        iconClass[this.inactiveIcon] = !this._isActive;\n\n        return html`\n            <div part=\"image\" class=\"image\" style=\"${this.image.startsWith(\"background-\") ? this.image : `background-image: url('${this.image}')`}\">\n        ${ this.zoomable ?\n        html`<div part=\"zoomButton\" class=\"zoomButton\" @click=\"${this.zoom}\">\n                <i class=${classMap(iconClass)}></i>\n            </div>\n        ` : \"\"}\n            </div>\n            ${this.text ? html` <div part=\"text\" class=\"text\">\n                                    <span>${this.text}</span>\n                                    ${ this.infoData ? html`<fv-info-button @info-button-clicked=\"${this.infoClick}\"></fv-info-button>` : \"\" } \n                                </div>\n        ` : \"\"}\n        `;\n    }\n}\n","import {css, html, HTMLTemplateResult, PropertyValueMap, PropertyValues, unsafeCSS} from \"lit\";\nimport style from \"./accordion-item.component.sass?inline\";\nimport {customElement, property, query} from \"lit/decorators.js\";\nimport {BaseElement} from \"../../base/base.component\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {AccordionComponent} from \"../accordion/accordion.component\";\nimport {ComponentService} from \"../../../../utils/component.service\";\nimport {EventHandlerDispatchEvent, EventHandlerEvent} from \"../../../../models/event-handler/event.handler.model\";\nimport {ImageService} from \"../../../../utils/image.service\";\nimport {\n    ConfiguratorFormUpdateAllEventInit\n} from \"components/configurator/configurator-form-elements/configurator.form.base.element.component\";\nimport {AccordionContentComponent} from \"../accordion-content/accordion-content.component\";\nimport {StyleHelper} from \"../../../../utils/style.helper\";\nimport type { ComponentStateHandlerMap } from \"../../../../models/event-handler/component-state-event\";\n\ndeclare global {\n    interface ComponentStates {\n        \"fv-accordion-item:update-height\": Record<string, never>;\n    }\n}\n\nexport interface IAccordionItem {\n    header: string;\n    image: string;\n}\n\nenum AccordionIconMode {\n    DEFAULT,\n    ICON,\n    CHEVRON,\n    CUSTOM\n}\n\n@customElement(\"fv-accordion-item\")\nexport class AccordionItemComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({type: Boolean, reflect: true, attribute: \"forced-open\"})\n    public forcedOpen = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"singular\"})\n    public isSingular?: boolean;\n    @property({type: Boolean, reflect: true, attribute: \"allow-close-of-forced-open\"})\n    public allowCloseOfForcedOpen = false;\n    @property({type: Boolean})\n    public isActive = false;\n\n    @property({type: String})\n    protected header: string | undefined;\n\n    @property({type: String})\n    protected image = \"\";\n\n    @property({type: Number})\n    public iconMode: AccordionIconMode = AccordionIconMode.DEFAULT;\n\n    @query(\"#content\")\n    protected content: AccordionContentComponent | undefined;\n\n    @property({type: Boolean, reflect: true, attribute: \"header-as-slot\"})\n    public headerAsSlot = false;\n\n    @property({type: Array, reflect: true, attribute: \"on-open-events\"})\n    public onOpenEvents = new Array<EventHandlerEvent>();\n    @property({type: Array, reflect: true, attribute: \"on-close-events\"})\n    public onCloseEvents = new Array<EventHandlerEvent>();\n\n    @property({type: Boolean, reflect: true, attribute: \"inert-on-close\"})\n    public inertOnClose = true;\n\n    stateHandlers: ComponentStateHandlerMap = {\n        \"fv-accordion-item:update-height\": () => { this.requestHeightUpdate(); },\n    };\n\n    get Header(): string | undefined {\n        return this.header;\n    }\n\n    set Header(header_: string | undefined) {\n        this.header = header_;\n        this.requestUpdate(\"header\");\n    }\n\n    get Image(): string {\n        return this.image;\n    }\n\n    public set Image(val_: string) {\n        this.image = val_ ? `background-${val_.startsWith(\"#\") ? `color: ${val_}` : val_.split(\",\").length >= 2 ? `color: rgba(${val_})` : `image: url(${val_})`}` : val_;\n        this.requestUpdate(\"image\");\n\n    }\n\n    protected getDefaultImageIcon(): string {\n        const styles = getComputedStyle(this);\n        return styles.getPropertyValue(\"--default-image\");\n    }\n\n    public requestHeightUpdate() {\n        return this.content?.setHeightAndAnimate() || Promise.resolve()\n    }\n\n    constructor(parameters_?: IAccordionItem) {\n        super();\n        if (parameters_) {\n            this.header = parameters_.header;\n            this.image = parameters_.image;\n        }\n        this.AddConnectedCallbackAction(async () => {\n            this.tabIndex = 0;\n        });\n        this.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n            if (e.key == \"Enter\") {\n                this.clickHeader(e);\n            }\n        });\n\n        this.addHideStateUpdatedEventListener((value, changedByParent) => {\n            if(changedByParent) this.requestHeightUpdate();\n        })\n\n        window.addEventListener(\"configuratorformupdatedall\", async (event_: CustomEventInit) => {\n            const eventInit = event_ as ConfiguratorFormUpdateAllEventInit;\n            for (const input of eventInit.detail.All) {\n                await input.updateComplete;\n            }\n            this.parentAccordion?.ActiveItem?.forceOpen();\n        });\n    }\n\n    public get parentAccordion(): AccordionComponent {\n        let parentNode = this.parentElement || this.parentNode\n        if (parentNode && (parentNode as ShadowRoot).host) {\n            parentNode = (parentNode as ShadowRoot).host;\n        }\n        if (parentNode instanceof AccordionItemComponent) {\n            return parentNode.parentAccordion\n        }\n        return parentNode as AccordionComponent;\n    }\n\n    async append(...nodes: any[]) {\n        super.append(...nodes);\n        await StyleHelper.requestAnimationFrame();\n        await this.requestHeightUpdate()\n    }\n\n    appendChild<T extends Node>(node: T): T {\n        this.append(node);\n        return node as T;\n    }\n\n    getScrollOffsetNeeded(element: Element, scrollableParent: HTMLElement) {\n        return scrollableParent.scrollTop + element.getBoundingClientRect().top - scrollableParent.offsetTop;\n    }\n\n    // Standalone-mode guard — a bare <fv-accordion-item> (no parent <fv-accordion>) can\n    // only work if it isn't nesting other accordion-items; nested ones would need the\n    // parent's ActiveItem bookkeeping to swap correctly.\n    private needParentToFunction(): boolean {\n        return [...this.children].some(x => x instanceof AccordionItemComponent);\n    }\n\n    public open() {\n        const parent = this.parentAccordion;\n        if (parent) {\n            // Imperative coordination — restored from before the setter centralization.\n            // Guarded with !== this to avoid self-deactivate (was the source of the prior loop bug).\n            if (parent.ActiveItem !== undefined && parent.ActiveItem !== this) {\n                parent.ActiveItem.isActive = false;\n            }\n            parent.ActiveItem = this;\n            this.isActive = true;\n        } else {\n            if (this.needParentToFunction()) return;\n            this.isActive = true;\n        }\n        this.requestHeightUpdate();\n    }\n\n    public forceOpen() {\n        this.forcedOpen = true;\n        const parent = this.parentAccordion;\n        if (parent) {\n            if (parent.ActiveItem !== undefined && parent.ActiveItem !== this) {\n                parent.ActiveItem.isActive = false;\n            }\n            parent.ActiveItem = this;\n            this.isActive = true;\n        } else {\n            if (this.needParentToFunction()) {\n                console.error(\"accordion-item> cant be forced open! No Parent!\");\n                return;\n            }\n            this.isActive = true;\n        }\n        this.requestHeightUpdate();\n    }\n\n\n    private _HeaderClickDefers = new Array<() => Promise<void>>();\n\n    public AddHeaderClickDefer(defer_: () => Promise<void>) {\n        this._HeaderClickDefers.push(defer_);\n    }\n\n    private async WaitForHeaderClickDefers(): Promise<void> {\n        for (const defer of this._HeaderClickDefers) {\n            await defer();\n        }\n        return;\n    }\n\n    protected clickHeader = async (e: Event) => {\n        e.preventDefault();\n        e.stopPropagation();\n        await this.WaitForHeaderClickDefers();\n\n        this.forcedOpen = false;\n        const parent = this.parentAccordion;\n        if (parent) {\n            if (parent.ActiveItem) {\n                parent.ActiveItem.isActive = false;\n                if (this.allowCloseOfForcedOpen) this.forcedOpen = false;\n            }\n            if (parent.ActiveItem !== this) {\n                this.isActive = true;\n                parent.ActiveItem = this;\n            } else {\n                parent.ActiveItem = undefined;\n                this.isActive = false;\n            }\n        } else {\n            if (this.needParentToFunction()) return;\n            this.isActive = !this.isActive;\n        }\n        if (!this.isActive) return;\n        await this.updateComplete;\n        await this.content?.updateComplete;\n        this.scrollIntoView({block: 'start', behavior: 'smooth'})\n    };\n\n    protected build() {\n        this.image = this.image.replace(/.*url\\(([^)]+)\\).*/, \"$1\");\n        if (this.headerAsSlot) {\n            return html`\n                <slot name=\"header\"></slot>`;\n        }\n\n        const iconURL = this.getDefaultImageIcon().replace(/url\\('(.+)'\\)/, '$1');\n        let imageTemplate: HTMLTemplateResult\n\n        const image = this.image || iconURL\n        if (image) {\n            const extension = ImageService.getExtension(image);\n            if (extension.endsWith(\"svg\")) {\n                imageTemplate = html`\n                    <svg-icon class=\"img-content\" src=\"${image}\"></svg-icon>`\n            } else if (image.startsWith('fv-icon')) {\n                imageTemplate = html`\n                    <fv-icon class=\"img-content iconimage\" icon=\"${image}\"></fv-icon>`\n            } else {\n                imageTemplate = html`\n                    <fv-icon class=\"img-content\" src=\"${image}\"></fv-icon>`\n            }\n        }\n        return html`\n            <div class=\"image\">\n                ${imageTemplate!}\n            </div>\n            <div class=\"text\">${this.header}</div>\n        `;\n    }\n\n\n    public async TriggerOnOpenCloseEvents(opening: boolean): Promise<void> {\n        if (opening) {\n            window.dispatchEvent(new EventHandlerDispatchEvent({\n                async: false,\n                events: this.onOpenEvents\n            }));\n        } else {\n            window.dispatchEvent(new EventHandlerDispatchEvent({\n                async: false,\n                events: this.onCloseEvents\n            }));\n        }\n    }\n\n    protected updated(_changedProperties: PropertyValueMap<unknown>) {\n        super.updated(_changedProperties);\n        if (this.isSingular) this.open();\n    }\n\n\n    render() {\n        const headerClass = {header: true, hidden: !!this.isSingular};\n        let chevronClass = {};\n        switch (this.iconMode) {\n            case AccordionIconMode.ICON:\n                chevronClass = {\"accordion-symbol\": true, \"down\": !this.isActive, \"up\": this.isActive};\n                break;\n            case AccordionIconMode.CHEVRON:\n                chevronClass = {\"chevron-symbol\": true, \"down\": !this.isActive, \"up\": this.isActive};\n                break;\n            case AccordionIconMode.CUSTOM:\n                chevronClass = {\"custom-symbol\": true, \"down\": !this.isActive, \"up\": this.isActive};\n                break;\n            case AccordionIconMode.DEFAULT:\n            default:\n                chevronClass = {\"icon\": true, \"fv-icon-plus\": !this.isActive, \"fv-icon-minus\": this.isActive};\n                break;\n        }\n        const contentActive = this.isActive || !!this.isSingular\n        return html`\n            <div class=\"${classMap(headerClass)}\" @click=${this.clickHeader}>\n                ${this.build()}\n                <div class=\"${classMap(chevronClass)}\"></div>\n            </div>\n            <fv-accordion-content id=\"content\" ?active=\"${contentActive}\" ?inert=\"${this.inertOnClose && !contentActive}\" ?disable-animation=\"${this.forcedOpen}\">\n                <slot @slotchange=\"${() => this.requestHeightUpdate()}\"></slot>\n            </fv-accordion-content>\n        `;\n    }\n}\n","import { css, html, PropertyValueMap, PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./accordion.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport { AccordionItemComponent } from \"../accordion-item/accordion-item.component\";\n\n@customElement(\"fv-accordion\")\nexport class AccordionComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Boolean, reflect: true, attribute: \"first-starts-open\" })\n    public firstStartsOpen = false;\n\n    private _activeItem: AccordionItemComponent | undefined;\n\n    get ActiveItem(): AccordionItemComponent | undefined {\n        return this._activeItem;\n    }\n\n    // Single source of truth for active-item state. Dedupes (idempotent reassignment is a no-op,\n    // killing the reactive-loop class) and atomically syncs isActive + open/close events on prev/new.\n    // Callers MUST NOT write `item.isActive` directly — go through this setter.\n    set ActiveItem(item: AccordionItemComponent | undefined) {\n        const prev = this._activeItem;\n        if (prev === item) return;\n        this._activeItem = item;\n        if (prev) {\n            prev.isActive = false;\n            prev.TriggerOnOpenCloseEvents(false);\n        }\n        if (item) {\n            item.isActive = true;\n            item.TriggerOnOpenCloseEvents(true);\n        }\n    }\n\n    constructor() {\n        super();\n\n        this.addHideStateUpdatedEventListener((value: boolean)=>{\n            if (!value) {\n                this.ActiveItem?.TriggerOnOpenCloseEvents(true);\n            }\n    \n            if (this.updateCounter == 1) {\n                if (this.firstStartsOpen) {\n                    if (this.firstChild) {\n                        if (this.firstChild instanceof AccordionItemComponent) {\n                            this.firstChild.open();\n                        }\n                    }\n                }\n            }\n        });\n    }\n\n    protected updateCounter = 0;\n    protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n        ++this.updateCounter;\n        super.updated(_changedProperties);\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n    }\n\n    render() {\n        return html`\n            <slot></slot>\n        `;\n    }\n}\n","import {AccordionItemComponent} from \"../accordion-item/accordion-item.component\";\n\nimport style from './accordion-layer.component.sass?inline';\nimport {PropertyValues, unsafeCSS} from \"lit\";\nimport {StyleHelper} from \"../../../../utils/style.helper\";\nimport {AccordionComponent} from \"../accordion/accordion.component\";\n\nexport class AccordionLayerComponent extends AccordionItemComponent {\n\n    static styles = [super.styles || [], unsafeCSS(style)]\n\n    connectedCallback() {\n        this.inertOnClose = false;\n        super.connectedCallback();\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        this.isActive = true;\n    }\n\n    open() {\n        (this.firstChild as AccordionItemComponent)?.open();\n    }\n\n    forceOpen() {\n        (this.firstChild as AccordionItemComponent)?.forceOpen();\n    }\n\n}\n","import {BaseElement} from \"../../base/base.component\";\nimport {customElement, property, query} from \"lit/decorators.js\";\nimport {html, PropertyValues, unsafeCSS} from \"lit\";\nimport style from \"./accordion-content.component.sass?inline\";\n\n@customElement(\"fv-accordion-content\")\nexport class AccordionContentComponent extends BaseElement {\n\n    @property({type: Boolean, reflect: true})\n    active: boolean = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"disable-animation\"})\n    disableAnimation = false;\n\n    @query(\"slot\")\n    slotElement!: HTMLSlotElement;\n\n    private _animationPromise = Promise.resolve();\n\n    static styles = [\n        super.styles || [],\n        unsafeCSS(style)\n    ]\n\n    render() {\n        return html`\n            <slot></slot>\n        `\n    }\n\n    protected update(changedProperties: PropertyValues) {\n        super.update(changedProperties);\n        if(changedProperties.has(\"active\")){\n            this.setHeightAndAnimate()\n        }\n    }\n    public async setHeightAndAnimate(targetHeight?: number): Promise<void> {\n        return (this._animationPromise = new Promise((resolve, rej) => {\n            let animationHeight = targetHeight ?? 0;\n            if (this.active) {\n                animationHeight = this.slotElement.clientHeight\n            }\n            const prev = this.style.getPropertyValue(\"--max-transition-height\");\n            const next = `${animationHeight}px`;\n            this.style.setProperty(\"--max-transition-height\", next);\n\n            if (prev === next || this.disableAnimation) {\n                resolve();\n                return;\n            }\n            const end = (ev: TransitionEvent) => {\n                if (ev.target !== this || ev.propertyName !== \"max-height\") return;\n                this.removeEventListener(\"transitionend\", end);\n                this.removeEventListener(\"transitioncancel\", end);\n                resolve();\n            };\n            this.addEventListener(\"transitionend\", end);\n            this.addEventListener(\"transitioncancel\", end);\n        }));\n    }\n\n    protected async getUpdateComplete(): Promise<boolean> {\n        const result = await super.getUpdateComplete();\n        await this._animationPromise;\n        return result;\n    }\n\n}\n","import {css, html, nothing, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./property-list.component.sass?inline\";\nimport {customElement, property, query, queryAll} from \"lit/decorators.js\";\nimport {BaseElement} from \"../../../../standard/base/base.component\";\nimport {TitledImageComponent} from \"./titled-image.component\";\nimport {AccordionItemComponent} from \"../../../../standard/accordion\";\nimport {SikkensPickerComponent} from \"../../../../colorpicker/sikkens\";\nimport {NcsPickerComponent} from \"../../../../colorpicker/ncs\";\nimport {RalPickerComponent} from \"../../../../colorpicker/ral\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {IColorPicker} from \"@dh-software/webui-types\";\nimport { LocaleService } from \"@dh-software/webui-api\";\n\nenum ZoomStyle {\n\n    TOP,\n    INLINE,\n    OVERLAY,\n\n}\n\ninterface ZoomOptions {\n    zoomable: boolean\n    active: boolean\n}\n\n@customElement(\"fv-property-list\")\nexport class PropertyListComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @query(\".items\")\n    private _itemsElement?: HTMLDivElement;\n\n    @queryAll(\".color-picker\")\n    private _colorPickers?: NodeListOf<Element>;\n\n    @property({\"type\": ZoomStyle, \"reflect\": true})\n    public zoomStyle?: ZoomStyle = ZoomStyle.OVERLAY;\n\n    private readonly zoomedImage?: HTMLDivElement;\n    private currentImage: TitledImageComponent | undefined;\n    private imageSibling: TitledImageComponent | undefined;\n\n    @property()\n    private _colorPicker: {\n        [key: string]: {\n            component?: RalPickerComponent | NcsPickerComponent | SikkensPickerComponent | undefined\n            onColorChangeEvent?: (e: Event) => void\n        }\n    } = {};\n\n    @property()\n    private _preventBackButton = false;\n\n    protected firstUpdated(_changedProperties : PropertyValues<this>) {\n        super.firstUpdated(_changedProperties);\n    }\n\n    setZoomImage(item?: TitledImageComponent, parameters?: ZoomOptions) {\n        const isFocused = (this.currentImage?.text == item?.text && this.currentImage?.image == item?.image)\n        if (!item || !parameters) {\n            this.currentImage = undefined;\n            this.imageSibling = undefined;\n            this.requestUpdate();\n            return;\n        }\n        this._itemsElement?.classList.remove('hidden')\n        // else if(this.zoomStyle === ZoomStyle.OVERLAY && isFocused) {\n        //     this.currentImage = undefined;\n        //     this.imageSibling = undefined;\n        //     this.requestUpdate();\n        //     return;\n        // }\n\n        if(this.zoomStyle === ZoomStyle.OVERLAY) {\n            item.IsActive = false;\n            this.setOverlayZoomImage(item, parameters)\n        } else {\n            this._setZoomImage(item, this.zoomStyle === ZoomStyle.INLINE, parameters);\n        }\n        this.requestUpdate();\n        if(this.parentElement instanceof AccordionItemComponent) {\n            this.parentElement.requestHeightUpdate();\n        }\n    }\n\n    _setZoomImage(item: TitledImageComponent, inline: boolean, parameters: ZoomOptions, moveImage: boolean = true) {\n        if (this.currentImage && this.currentImage != item) {\n            this.currentImage.IsActive = false;\n            if(moveImage) {\n                if (!this.imageSibling) {\n                    this.append(this.currentImage);\n                } else {\n                    this.insertBefore(this.currentImage, this.imageSibling as HTMLElement);\n                }\n            }\n        }\n        if (parameters.active) {\n            if (this.currentImage !== item) {\n                this.imageSibling = item.nextSibling as TitledImageComponent\n                if (inline && this.zoomedImage) {\n                    this.zoomedImage.classList.add(\"hidden\");\n                }\n                this.currentImage = moveImage ? item : item.cloneNode(true) as TitledImageComponent;\n                this.currentImage.IsActive = true;\n                if(!moveImage) {\n                    this.currentImage.addEventListener('click', (ev) => {\n                        ev.preventDefault()\n                        item.click();\n                        this.currentImage = this.imageSibling = undefined;\n                        this.requestUpdate();\n                    })\n                    this.currentImage.addEventListener('zoomClicked', (ev) => {\n                        this.currentImage = this.imageSibling = undefined;\n                        this.requestUpdate();\n                    })\n                }\n                if (inline && this.zoomedImage && moveImage) {\n                    this.zoomedImage.append(this.currentImage);\n                    this.zoomedImage.classList.remove(\"hidden\");\n                    if (this.zoomedImage) this.insertBefore(this.zoomedImage, this.imageSibling || null);\n                }\n            }\n        } else {\n            if (inline && this.zoomedImage) this.zoomedImage.classList.add(\"hidden\");\n            item.IsActive = false;\n            if(moveImage) {\n                this.insertBefore(item, this.imageSibling || null);\n            }\n            this.currentImage = undefined;\n        }\n    }\n\n    setOverlayZoomImage(item: TitledImageComponent, parameters: ZoomOptions) {\n        this._setZoomImage(item, false, parameters, false);\n    }\n\n    constructor() {\n        super();\n        this.baseOptions.registerLocalesModel = true;\n        this.zoomedImage = Object.assign(document.createElement(\"div\"), {className: \"zoomedImage\"});\n    }\n\n\n    onColorChange(e: CustomEvent) {\n\n    }\n\n    addColorPicker(colorPicker: IColorPicker, onChange: (e: CustomEvent) => void) {\n        if (colorPicker && colorPicker.type && (!this._colorPicker[colorPicker.type] || !this._colorPicker[colorPicker.type].component)) {\n            this._colorPicker[colorPicker.type] = {};\n            switch (colorPicker.type) {\n                case \"RAL\":\n                    this._colorPicker[colorPicker.type].component = new RalPickerComponent();\n                    this._colorPicker[colorPicker.type].component?.setAttribute(\"disable-fade\", \"\");\n                    break;\n                case \"NCS\":\n                    this._colorPicker[colorPicker.type].component = new NcsPickerComponent();\n                    break;\n                case \"SIKKENS\":\n                    this._colorPicker[colorPicker.type].component = new SikkensPickerComponent();\n                    break;\n                default:\n                    break;\n            }\n            if (this._colorPicker && this._colorPicker[colorPicker.type] && this._colorPicker[colorPicker.type].component) {\n                this._colorPicker[colorPicker.type].component!.addEventListener(\"onRender\", () => {\n                    (this.parentElement as AccordionItemComponent)?.requestHeightUpdate();\n                });\n                this._colorPicker[colorPicker.type].component!.addEventListener(\"colorChange\", (e: Event) => {\n                    if (this._colorPicker[colorPicker.type!].onColorChangeEvent) {\n                        this._colorPicker[colorPicker.type!].onColorChangeEvent!(e);\n                    }\n                });\n            }\n        }\n        if (colorPicker && colorPicker.type) {\n            this._colorPicker[colorPicker.type].component?.setAttribute(\"disable-fade\", \"\");\n            this._colorPicker[colorPicker.type].onColorChangeEvent = onChange as EventListener;\n        }\n        this.requestUpdate();\n    }\n\n    async showColorPicker(colorPicker?: IColorPicker, preventBackButton = false) {\n        await this.updateComplete;\n        this._preventBackButton = preventBackButton;\n        if (colorPicker?.type && this._colorPicker[colorPicker?.type]) {\n            if (this._colorPicker) {\n                this._colorPickers?.forEach((element) => {\n                    if (element !== this._colorPicker[colorPicker!.type!].component?.parentElement) {\n                        element.classList.add(\"hidden\");\n                    }\n                });\n            }\n            const currentCode = colorPicker?.code || this._colorPicker[colorPicker?.type]?.component?.getAttribute(\"currentCode\");\n            if (currentCode) this._colorPicker[colorPicker?.type]?.component?.setAttribute(\"currentCode\", currentCode);\n            this._itemsElement?.classList.add(\"hidden\");\n            this._colorPickers?.forEach((element) => {\n                if (element.classList.contains(colorPicker.type!)) {\n                    element.classList.remove(\"hidden\");\n                }\n            });\n            (this.parentElement as AccordionItemComponent)?.requestHeightUpdate();\n            this.scrollIntoView({behavior: \"smooth\", block: \"start\"});\n        }\n    }\n\n    hideColorPicker() {\n        if (this._colorPicker) {\n            this._colorPickers?.forEach((element) => {\n                element.classList.add(\"hidden\");\n            });\n            this._itemsElement?.classList.remove(\"hidden\");\n        }\n        (this.parentElement as AccordionItemComponent)?.requestHeightUpdate();\n        this.dispatchEvent(new CustomEvent(\"colorPickerClosed\"));\n    }\n\n    append(...nodes: any[]) {\n        super.append(...nodes);\n        nodes.forEach((node) => {\n            //if (!this.contains(node)) {\n            const zoomClick = (e: CustomEventInit) => {\n                this.setZoomImage(node, e.detail);\n            };\n            const click = (e: CustomEventInit) => {\n                if (this.currentImage === node) {\n                    this.setZoomImage(node, e.detail);\n                }\n            };\n            node.removeEventListener(\"zoomClicked\", zoomClick);\n            node.removeEventListener(\"click\", click);\n            node.addEventListener(\"zoomClicked\", zoomClick);\n            node.addEventListener(\"click\", click);\n            //}\n        });\n    }\n\n    appendChild<T extends Node>(node: T): T {\n        this.append(node);\n        return node;\n    }\n\n    preventScrolling(ev: MouseEvent) {\n        ev.preventDefault();\n        ev.stopPropagation();\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            ${this.zoomStyle == ZoomStyle.TOP ? html`\n                <div class=\"zoomedImage\">\n                    ${this.currentImage}\n                </div>\n            ` : \"\"}\n            ${this.zoomStyle === ZoomStyle.OVERLAY ? html`\n                <div class=\"overlay ${classMap({hidden: !this.currentImage})}\" @wheel=\"${this.preventScrolling}\">\n                    ${this.currentImage}\n                </div>\n            ` : nothing}\n            <div class=\"items\">\n                <slot></slot>\n            </div>\n            ${Object.keys(this._colorPicker).map((type) => {\n                this._colorPicker[type].component?.classList.add(\"color-picker-container\");\n                return html`\n                    <div class=\"color-picker hidden ${type}\">\n                        ${!this._preventBackButton ? html`\n                            <fv-button @click=\"${this.hideColorPicker}\">${LocaleService.translate(\"114\", \"Zurück\")}</fv-button>` : \"\"}\n                        ${this._colorPicker[type].component ? this._colorPicker[type].component : \"\"}\n                    </div>`;\n            })}\n        `;\n    }\n\n}\n","import { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./radio.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-radio\")\nexport class RadioComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true })\n    name = \"\";\n\n    @property({ type: Boolean, reflect: true })\n    checked = false;\n\n    @property({ type: String, reflect: true, attribute: \"closest-query\" })\n    private closestQuery = \"\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"mark-parent\" })\n    private markParent = false;\n\n    @query(\"input\")\n    private input: HTMLInputElement | undefined;\n\n    constructor() {\n        super();\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        this.addEventListener(\"click\", (e) => {\n            e.stopPropagation();\n            if (this.input && this.checked != true) {\n                const checkedQuery = `[name=\"${this.name}\"][checked]`;\n                const container = this.closestQuery ? this.closest(this.closestQuery) : this.parentElement;\n                const checkedElement = container?.querySelector(checkedQuery)\n                checkedElement?.removeAttribute(\"checked\");\n                this.input.checked = true;\n                this.checked = true;\n\n                if (this.markParent) {\n                    this.parentElement?.classList.add(\"checked\");\n                    checkedElement?.parentElement?.classList.remove(\"checked\");\n                }\n                this.requestUpdate();\n                this.dispatchEvent(new CustomEvent(\"radio-click\", { bubbles: true, composed: true }));\n            }\n        });\n    }\n    private preventClick(e: PointerEvent) {\n        e.stopPropagation();\n        return false;\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            <label>\n                <input type=\"radio\" name=\"${this.name}\" .checked=${this.checked} @click=\"${this.preventClick}\"/>\n                <div class=\"indicator\">\n                    <div class=\"position-wrapper\">\n                        <div class=\"unchecked\"></div>\n                        <div class=\"checked\"></div>\n                    </div>\n                </div>\n                <span>${this.textContent}</span>\n            </label>\n        `;\n    }\n}","import {AccordionLayerComponent} from \"../../standard/accordion\";\nimport {IGetAccordionItemsParams} from \"./base-accordion.theme\";\nimport {PPContainerComponent} from \"../prog-property\";\nimport {property} from \"lit/decorators.js\";\nimport {ComponentService} from \"../../../utils/component.service\";\nimport {StyleHelper} from \"../../../utils/style.helper\";\nimport {html, PropertyValues, TemplateResult} from \"lit\";\nimport {EventFactoryService, WebViewerService} from \"@dh-software/webui-api\";\nimport {IGetProgPropertiesParams, IProgPropertyCatalogFilterParams} from \"@dh-software/webui-types\";\n\nexport enum RenderMode {\n    LIT_STATE,\n    REPLACE_CHILDREN\n}\n\nexport interface IPPLayerGetAccordionItemsParams extends IGetAccordionItemsParams {\n    progPropertiesParams?: IGetProgPropertiesParams\n}\n\n/** Layer item: DOM element (legacy) or Lit TemplateResult (declarative). */\nexport type PPLayerItem<T extends HTMLElement = HTMLElement> = T | TemplateResult;\n\nexport class PPLayerComponent<T extends HTMLElement> extends AccordionLayerComponent {\n    static _globalLayerId = 0;\n\n    protected ignoredAttributes = [\"image\"]\n    protected preventEmpty: boolean = false;\n    protected propertyFilters: { [key: string]: IProgPropertyCatalogFilterParams } = {};\n\n    private refreshPromise?: Promise<boolean>;\n\n    @property({type: Number, reflect: false, state: true})\n    protected renderMode = RenderMode.LIT_STATE;\n\n    @property({type: Number, state: false})\n    protected layerId: number = -1;\n\n    @property({type: Array, state: true})\n    protected _items: PPLayerItem<T>[] = [];\n\n    get PPContainer(): PPContainerComponent {\n        return ComponentService.getParentShadowRoot(this.parentAccordion, \"fv-pp-container\")!.host as PPContainerComponent\n    }\n\n    connectedCallback() {\n        this.layerId = PPLayerComponent._globalLayerId++;\n        super.connectedCallback();\n    }\n\n    disconnectedCallback() {\n        PPLayerComponent._globalLayerId--;\n        this.layerId = -1;\n        super.disconnectedCallback();\n    }\n\n    protected async firstUpdated(_changedProperties: PropertyValues<this>): Promise<void> {\n        super.firstUpdated(_changedProperties);\n\n        EventFactoryService.RefreshPropertyPanel.register(async () => {\n            await this.refreshProperties();\n        });\n        this.addEventListener(\"onFinishParamsFilter\", async (ev: CustomEventInit) => {\n            if (ev.detail == undefined) {\n                return;\n            }\n            this.propertyFilters[ev.detail.key] = ev.detail;\n            await this.refreshProperties();\n        });\n        window.addEventListener(\"onUpdated\", ((ev: CustomEvent) => {\n            this.refreshProperties();\n        }) as EventListener);\n    }\n\n    private async refreshProperties(): Promise<boolean> {\n        return await this.refreshPropertyPanel({\n            progPropertiesParams: {\n                propertyFilters: this.propertyFilters,\n                fullHierarchy: true,\n                useRelevant: true,\n                useSelection: true,\n            }\n        });\n    }\n\n    async refreshPropertyPanel(params: IPPLayerGetAccordionItemsParams) {\n        if (this.refreshPromise) {\n            await this.refreshPromise;\n        }\n        // try/catch — Promise() doesn't catch async-executor rejections; an uncaught throw would hang refreshPromise forever.\n        this.refreshPromise = new Promise(async (resolve) => {\n            try {\n                if (this.parentAccordion) {\n                    const newItems = await this.getAccordionItems(params);\n                    await StyleHelper.requestAnimationFrame();\n                    const isEmpty = Array.isArray(newItems) && newItems.length === 0;\n                    if (this.preventEmpty && isEmpty) {\n                        return resolve(false);\n                    }\n                    this.childrenChanged(newItems);\n                }\n                return resolve(true);\n            } catch (err) {\n                console.error(\"[pp-layer] refreshPropertyPanel failed:\", err);\n                return resolve(false);\n            }\n        })\n        return this.refreshPromise\n    }\n\n    // LIT_STATE: rendered by Lit into `this`. REPLACE_CHILDREN: shadow DOM + manual replaceChildren.\n    private childrenChanged(items: PPLayerItem<T>[]) {\n        if (this.renderMode === RenderMode.LIT_STATE) {\n            this._items = items;\n        } else {\n            // replaceChildren needs Nodes — drop any TemplateResults.\n            const nodes = items.filter((it): it is T => it instanceof Node);\n            this.replaceChildren(...nodes);\n        }\n    }\n\n    render() {\n        if (this.renderMode === RenderMode.LIT_STATE) {\n            return html`\n                ${this._items}\n            `\n        }\n        return super.render();\n    }\n\n    protected async getUpdateComplete(): Promise<boolean> {\n        const result = await super.getUpdateComplete();\n        if(this.refreshPromise) {\n            await this.refreshPromise\n        }\n        return result;\n    }\n\n    protected createRenderRoot(): HTMLElement | DocumentFragment {\n        if (this.renderMode === RenderMode.LIT_STATE) {\n            return this;\n        }\n        return super.createRenderRoot();\n    }\n\n    requestUpdate(name?: string, oldValue?: any) {\n        const isIgnored = !!(name && this.ignoredAttributes?.includes(name));\n        this.requestHeightUpdate(false);\n        super.requestUpdate(name, oldValue);\n    }\n\n    async getAccordionItems(params: IPPLayerGetAccordionItemsParams): Promise<PPLayerItem<T>[]> {\n        return []\n    }\n\n    isEmpty() {\n        const itemCount = this.renderMode === RenderMode.LIT_STATE ? this._items.length : this.childElementCount;\n        const isEmpty = itemCount === 0\n        return isEmpty;\n    }\n\n\n}\n","import {AccordionItemComponent} from \"../../standard/accordion\";\nimport {PPLayerComponent} from \"./pp-layer.component\";\nimport {\n    IProgProperty,\n    IProgPropertyContext,\n    IProgPropertyManufacturer,\n    IProgPropertyProgram,\n    IProgPropertyValue,\n} from \"@dh-software/webui-types\";\n\nexport interface IAccordionHeader {\n    key: string;\n    name?: string;\n    image?: string;\n}\n\nexport interface IAccordionOverride {\n    image?: string;\n}\n\nexport interface IGetAccordionItemsParams {\n}\n\nexport type AccordionHandle = IProgPropertyContext | IProgPropertyManufacturer;\n\nexport abstract class BaseAccordionTheme extends PPLayerComponent<AccordionItemComponent> {\n    getModifyParameters(handle: AccordionHandle, programModel: IProgPropertyProgram, propertyModel: IProgProperty, propertyValue: IProgPropertyValue) {\n        return {\n            manufacturer: handle.manufacturerName.toLowerCase(),\n            program: programModel.programName.toLowerCase(),\n            key: propertyModel.id,\n            property: propertyValue.key,\n            propertyKey: propertyValue.propertyKey,\n            contextId: \"contextId\" in handle ? handle.contextId : undefined,\n        };\n    }\n}\n","import { html, TemplateResult } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport { createRef, ref, Ref } from \"lit/directives/ref.js\";\n// Side-effect imports — custom elements used only as types/tag names below;\n// without forced module loads, bundlers tree-shake the registration side-effects.\nimport \"../../prog-property/accordion_theme/image/titled-image.component\";\nimport \"../../prog-property/accordion_theme/image/property-list.component\";\nimport \"../../../standard/radio/radio.component\";\nimport { PropertyListComponent, TitledImageComponent } from \"../../prog-property/accordion_theme/image\";\nimport { BaseAccordionTheme, IGetAccordionItemsParams } from \"../../pp-layer/base-accordion.theme\";\nimport {\n    DragType,\n    IGetProgContextParameters,\n    IProgProperty,\n    IProgPropertyContext,\n    IProgPropertyProgram,\n    IProgPropertyValue,\n} from \"@dh-software/webui-types\";\nimport {\n    CommunicationMessageService,\n    DragDropService,\n    ProgContextModel,\n    WebViewerService,\n} from \"@dh-software/webui-api\";\n\ninterface PropertyRow {\n    key: string;\n    context: IProgPropertyContext;\n    program: IProgPropertyProgram;\n    model: IProgProperty;\n    values: IProgPropertyValue[];\n    current?: IProgPropertyValue;\n    headerImage: string;\n    additionalClasses: string[];\n}\n\n@customElement(\"fv-prog-context-accordion-layer\")\nexport class ProgContextAccordionLayer extends BaseAccordionTheme {\n\n    @property({ type: Array })\n    contexts?: string[];\n\n    private wiredDrag = new WeakSet<Element>();\n    private wiredColorPicker = new WeakSet<Element>();\n    private currentProgramId = \"\";\n\n    async getAccordionItems(_params: IGetAccordionItemsParams): Promise<TemplateResult[]> {\n        DragDropService.cleanUp();\n        this.wiredDrag = new WeakSet<Element>();\n        this.wiredColorPicker = new WeakSet<Element>();\n\n        const additionalClasses = this.PPContainer.accordionItemClasses;\n        const rows: PropertyRow[] = [];\n        const options = {\n            useRelevant: true,\n            useSelection: true,\n            contextInfo: this.contexts?.map(x => ({ contextId: x })) || [],\n        } as IGetProgContextParameters;\n\n        await ProgContextModel.traverse({\n            propertyCallback: async (context, program, propertyModel, values, current) => {\n                if (!this.contexts?.includes(context.contextId)) return;\n                if (values.length === 0) return;\n                if (this.PPContainer.hideSingleValueProperties && Object.keys(propertyModel.children).length < 2) return;\n\n                const headerImage = current?.alternativeImageUrl || current?.colorPicker?.rgb || \"\";\n                rows.push({\n                    key: propertyModel.id,\n                    context, program,\n                    model: propertyModel,\n                    values,\n                    current,\n                    headerImage,\n                    additionalClasses,\n                });\n            },\n        }, options);\n\n        // Program switched: clear ActiveItem so a stale item doesn't stay open.\n        const programId = rows[0]?.program?.programID ?? \"\";\n        if (programId && this.currentProgramId !== programId) {\n            this.currentProgramId = programId;\n            const parent = this.parentAccordion;\n            if (parent) parent.ActiveItem = undefined;\n        }\n\n        return rows.map(r => this.renderProperty(r));\n    }\n\n    private renderProperty(r: PropertyRow): TemplateResult {\n        const listRef = createRef<PropertyListComponent>();\n        const classes: Record<string, boolean> = {};\n        for (const cls of r.additionalClasses) classes[cls] = true;\n        const isRadioList = r.values.some(v => !v.alternativeImageUrl && !v.colorPicker?.type);\n\n        return html`\n            <fv-accordion-item\n                data-property-id=${r.key}\n                .Header=${r.model.name || \"Undefined\"}\n                .Image=${r.headerImage}\n                class=${classMap(classes)}\n            >\n                <fv-property-list\n                    ${ref(listRef)}\n                    id=${r.model.id}\n                    class=${classMap({ radioList: isRadioList })}\n                >\n                    ${repeat(r.values, v => v.propertyKey, v => this.renderValue(r, v, listRef))}\n                </fv-property-list>\n            </fv-accordion-item>\n        `;\n    }\n\n    private renderValue(r: PropertyRow, v: IProgPropertyValue, listRef: Ref<PropertyListComponent>): unknown {\n        if (v.alternativeImageUrl) return this.renderImageValue(r, v, listRef);\n        if (v.colorPicker?.type) return this.renderColorPickerValue(r, v, listRef);\n        return this.renderRadioValue(r, v);\n    }\n\n    private renderImageValue(r: PropertyRow, v: IProgPropertyValue, listRef: Ref<PropertyListComponent>): TemplateResult {\n        const modifyParams = this.getModifyParameters(r.context, r.program, r.model, v);\n        const isCurrent = r.current?.propertyKey === v.propertyKey;\n\n        const wireDrag = (el: Element | undefined) => {\n            if (!el || this.wiredDrag.has(el)) return;\n            this.wiredDrag.add(el);\n            DragDropService.addElement(el as HTMLElement, {\n                extData: modifyParams,\n                id: r.model.id,\n                type: DragType.PROGPROPERTY,\n            }, undefined, false);\n        };\n\n        const onClick = (e: Event) => {\n            e.stopPropagation();\n            const list = listRef.value;\n            list?.querySelectorAll(\".selected\").forEach(el => el.classList.remove(\"selected\"));\n            list?.hideColorPicker();\n            (e.currentTarget as TitledImageComponent).classList.add(\"selected\");\n            CommunicationMessageService.modifyProperty(JSON.stringify([modifyParams]), this.PPContainer.PPOptions);\n            WebViewerService.FurnviewWebViewer?.focus();\n        };\n\n        return html`\n            <fv-titled-image\n                ${ref(wireDrag)}\n                .text=${v.name}\n                .image=${v.alternativeImageUrl}\n                .infoData=${(v.toolTipData as string) || \"\"}\n                .infoType=${(v.toolTipType as string) || \"\"}\n                .manufacturer=${r.context.manufacturerName as string}\n                .IsActive=${false}\n                ?selected=${isCurrent}\n                @click=${onClick}\n            ></fv-titled-image>\n        `;\n    }\n\n    private renderColorPickerValue(r: PropertyRow, v: IProgPropertyValue, listRef: Ref<PropertyListComponent>): TemplateResult {\n        const modifyParams = this.getModifyParameters(r.context, r.program, r.model, v);\n        const isCurrent = r.current?.propertyKey === v.propertyKey;\n\n        // addColorPicker is stateful imperative API — wire exactly once per element.\n        const wirePicker = (el: Element | undefined) => {\n            const ppList = listRef.value;\n            if (!el || !ppList || !v.colorPicker || this.wiredColorPicker.has(el)) return;\n            this.wiredColorPicker.add(el);\n            ppList.addColorPicker(v.colorPicker, (e) => {\n                const detail = (e as CustomEvent).detail as {\n                    code: string;\n                    rgba: { r: number; g: number; b: number; a: 1 };\n                };\n                CommunicationMessageService.modifyProperty(\n                    JSON.stringify([modifyParams]),\n                    Object.assign({\n                        modifyColorPicker: {\n                            code: detail.code,\n                            rgb: `${detail.rgba.r},${detail.rgba.g},${detail.rgba.b}`,\n                            key: v.propertyKey,\n                            id: r.model.id,\n                        },\n                    }, this.PPContainer.PPOptions),\n                );\n                WebViewerService.FurnviewWebViewer?.focus();\n            });\n            if (isCurrent) {\n                ppList.showColorPicker(r.current?.colorPicker, Object.keys(r.model.children).length === 1);\n            }\n        };\n\n        const onClick = (e: Event) => {\n            e.stopPropagation();\n            const list = listRef.value;\n            list?.querySelectorAll(\".selected\").forEach(el => el.classList.remove(\"selected\"));\n            (e.currentTarget as TitledImageComponent).classList.add(\"selected\");\n            list?.showColorPicker(v.colorPicker);\n        };\n\n        return html`\n            <fv-titled-image\n                ${ref(wirePicker)}\n                .text=${v.name}\n                .image=${v.alternativeImageUrl}\n                .infoData=${(v.toolTipData as string) || \"\"}\n                .infoType=${(v.toolTipType as string) || \"\"}\n                .manufacturer=${r.context.manufacturerName as string}\n                .IsActive=${isCurrent}\n                ?selected=${isCurrent}\n                @click=${onClick}\n            ></fv-titled-image>\n        `;\n    }\n\n    private renderRadioValue(r: PropertyRow, v: IProgPropertyValue): TemplateResult {\n        const modifyParams = this.getModifyParameters(r.context, r.program, r.model, v);\n        const isCurrent = r.current?.propertyKey === v.propertyKey;\n\n        const onClick = (e: Event) => {\n            e.stopPropagation();\n            CommunicationMessageService.modifyProperty(JSON.stringify([modifyParams]), this.PPContainer.PPOptions);\n            WebViewerService.FurnviewWebViewer?.focus();\n        };\n\n        return html`\n            <fv-radio\n                class=\"top-radio\"\n                .name=${r.model.key}\n                ?checked=${isCurrent}\n                @click=${onClick}\n            >${v.name}</fv-radio>\n        `;\n    }\n}\n","import { html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport style from \"./pp-furnview-accordion-layer.component.sass?inline\";\n// Side-effect imports — register custom elements used by tag name in templates.\nimport \"./pp-property.component\";\nimport \"./pp-property-values.component\";\nimport \"./pp-property-value.component\";\nimport { PPLayerComponent } from \"../../pp-layer/pp-layer.component\";\nimport { IGetAccordionItemsParams } from \"../../pp-layer/base-accordion.theme\";\nimport { CombineChildren } from \"../combine_theme/pp-combine-accordion-layer.component\";\nimport { PPContainerComponent, PPTheme } from \"../pp-container.component\";\nimport {\n    IProgProperty,\n    IProgPropertyManufacturer,\n    IProgPropertyProgram,\n    IProgPropertyValue,\n} from \"@dh-software/webui-types\";\nimport { DragDropService, ProgPropertyModel } from \"@dh-software/webui-api\";\n\nexport interface FurnviewValueRow {\n    propertyKey: string;\n    property: string;\n    name: string;\n    imgUrl: string;\n    colorPicker?: { type?: string, code?: string, rgb?: string };\n}\n\nexport interface FurnviewRow {\n    key: string;\n    id: string;\n    title: string;\n    currentImage: string;\n    currentName: string;\n    manufacturer: string;\n    program: string;\n    halfSize: boolean;\n    hideItemCount: boolean;\n    disabled: boolean;\n    transparentPlaceholder: boolean;\n    values: FurnviewValueRow[];\n}\n\n/**\n * Build a single property's menu+items template pair. Shared with the combine\n * theme (which mixes these with its own PT groups in the same layer).\n */\nexport function renderFurnviewRow(\n    container: PPContainerComponent,\n    row: FurnviewRow,\n    openKey: string | null,\n    onMenuClick: (e: Event, key: string) => void,\n): TemplateResult {\n    const active = openKey === row.key;\n    const hidden = openKey !== null && !active;\n    return html`\n        <fv-pp-property\n            data-key=${row.key}\n            ?active=${active}\n            ?disabled=${row.disabled}\n            ?half-size=${row.halfSize}\n            ?hide-item-count=${row.hideItemCount}\n            .titleText=${row.title}\n            .currentImage=${row.currentImage}\n            .currentName=${row.currentName}\n            .itemCount=${row.values.length}\n            .transparentPlaceholder=${row.transparentPlaceholder}\n            class=${classMap({ hidden })}\n            @click=${(e: Event) => onMenuClick(e, row.key)}\n        ></fv-pp-property>\n        <fv-pp-values id=\"item_${row.id}\" ?active=${active}>\n            ${repeat(row.values, v => v.propertyKey, v => html`\n                <fv-pp-value\n                    ?half-size=${row.halfSize}\n                    .itemName=${v.name}\n                    .image=${v.imgUrl}\n                    .manufacturer=${row.manufacturer}\n                    .program=${row.program}\n                    .propertyId=${row.id}\n                    .propertyKeyValue=${v.property}\n                    .propertyKey=${v.propertyKey}\n                    .colorPicker=${v.colorPicker}\n                    .PPContainerComponent=${container}\n                ></fv-pp-value>\n            `)}\n        </fv-pp-values>\n    `;\n}\n\n/** Map a single ProgPropertyModel row to FurnviewRow; returns null if the property should be skipped. */\nexport function buildFurnviewRow(\n    container: PPContainerComponent,\n    manufacturerModel: { manufacturerName?: string } | IProgPropertyManufacturer,\n    programModel: { programName?: string } | IProgPropertyProgram,\n    propertyModel: IProgProperty,\n    values: IProgPropertyValue[],\n    currentValue?: IProgPropertyValue,\n): FurnviewRow | null {\n    if (!propertyModel.name) return null;\n\n    let current = currentValue\n        ?? values.find(v => v.propertyKey === propertyModel.currentValue);\n    let disabled = false;\n    if (values.length === 1) {\n        if (container.hideNotSettable) return null;\n        if (container.disableNotSettable) disabled = true;\n        current = values[0];\n    }\n\n    const currentImage = current?.colorPicker?.rgb || current?.alternativeImageUrl || \"\";\n    return {\n        key: propertyModel.key,\n        id: propertyModel.id,\n        title: propertyModel.name,\n        currentImage,\n        currentName: current?.name ?? \"\",\n        manufacturer: manufacturerModel.manufacturerName?.toLowerCase() ?? \"\",\n        program: programModel.programName?.toLowerCase() ?? \"\",\n        halfSize: container.halfSize,\n        hideItemCount: container.hideItemCount || (container.disableNotSettable && values.length === 1),\n        disabled,\n        transparentPlaceholder: +container.theme === +PPTheme.FURNVIEW,\n        values: values.map(v => ({\n            propertyKey: v.propertyKey,\n            property: v.key,\n            name: v.name,\n            imgUrl: v.alternativeImageUrl ?? \"\",\n            colorPicker: v.colorPicker,\n        })),\n    };\n}\n\n@customElement(\"fv-prog-property-furnview-accordion-layer\")\nexport class ProgPropertyFurnviewAccordionLayer extends PPLayerComponent<CombineChildren> {\n\n    static styles = [super.styles || [], unsafeCSS(style)];\n\n    @state()\n    protected _rows: FurnviewRow[] = [];\n\n    @state()\n    protected _openKey: string | null = null;\n\n    async getAccordionItems(_params: IGetAccordionItemsParams): Promise<TemplateResult[]> {\n        DragDropService.cleanUp();\n        const rows: FurnviewRow[] = [];\n        await ProgPropertyModel.traverse({\n            propertyCallback: (m, p, propertyModel, values, currentValue) => {\n                const row = buildFurnviewRow(this.PPContainer, m, p, propertyModel, values, currentValue);\n                if (row) rows.push(row);\n            },\n        });\n        this._rows = rows;\n        return this._buildTemplates();\n    }\n\n    protected _buildTemplates(): TemplateResult[] {\n        return this._rows.map(r => renderFurnviewRow(this.PPContainer, r, this._openKey, this._onMenuClick));\n    }\n\n    protected _onMenuClick = (e: Event, key: string) => {\n        e.stopPropagation();\n        e.preventDefault();\n        this._openKey = this._openKey === key ? null : key;\n        // Re-render templates so child bindings pick up the new active/hidden state.\n        this._items = this._buildTemplates();\n    };\n}\n\nexport const PpFurnviewAccordionLayerComponent = new ProgPropertyFurnviewAccordionLayer();\n","import { customElement, property } from \"lit/decorators.js\";\nimport { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./pp-menu.component.sass?inline\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { BaseElement } from \"../../../standard/base/base.component\";\n\nexport interface IPPMenu {\n    title?: string\n    hideItemCount?: boolean\n}\n\n@customElement(\"fv-pp-menu\")\nexport class PPMenuComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true })\n    currentImage = \"\";\n\n    @property({ type: String, reflect: true })\n    currentName = \"\";\n\n    @property({ type: Number, reflect: true })\n    itemCount = 0;\n\n    @property({ type: Boolean, reflect: true })\n    active = false;\n\n    @property({ type: String, reflect: true })\n    titleText = \"\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"hide-item-count\" })\n    hideItemCount = false;\n\n    /** @deprecated kept for back-compat — pass `.titleText` / `.hideItemCount` directly instead. */\n    constructor(options?: IPPMenu) {\n        super();\n        if (options) {\n            this.titleText = options.title || \"\";\n            this.hideItemCount = !!options.hideItemCount;\n        }\n    }\n\n    protected render(): TemplateResult<1> {\n        const disabled = !!this.getAttribute(\"disabled\");\n        const chevronClass = {\n            \"chevron-symbol\": !disabled,\n            up: this.active && !disabled,\n            down: !this.active && !disabled,\n        };\n        const classMapCurrentImage = {\n            \"not-found\": !this.currentImage,\n            \"pp-image\": true,\n        };\n        return html`<div class=\"pp-current-image\">\n            <div class=${classMap(classMapCurrentImage)} style=\"${this.currentImage ? `background-${\n    this.currentImage.startsWith(\"#\") ?\n        `color: ${this.currentImage}` :\n        this.currentImage.split(\",\").length >= 2 ?\n            `color: rgba(${this.currentImage})` :\n            `image: url(${this.currentImage})`}` : \"\"}\"></div>\n            </div>\n            <div class=\"pp-info\">\n                <div class=\"pp-group-title\">\n                    <span>${this.titleText}</span>\n                    <span class=${classMap(chevronClass)}></span>\n                </div>\n                <div class=\"pp-current-name\">\n                    <span>${this.currentName}</span>\n                </div>\n            </div>\n        ${!this.hideItemCount ? html`\n            <div class=\"pp-items-counter\">\n                <span>${this.itemCount}</span>\n            </div>` : \"\"}\n        `;\n    }\n}\n","import {PPContainerComponent} from \"../pp-container.component\";\nimport {customElement, property, query} from \"lit/decorators.js\";\nimport {css, html, PropertyValues, unsafeCSS} from \"lit\";\nimport style from \"./pp-item.component.sass?inline\";\nimport {classMap} from \"lit/directives/class-map.js\";\nimport {BaseElement} from \"../../../standard/base/base.component\";\nimport {ProgressComponent} from \"../../../standard/loading/progress\";\nimport {CommunicationMessageService, DragDropService} from \"@dh-software/webui-api\";\nimport {RalPickerComponent} from \"../../../colorpicker/ral\";\nimport {NcsPickerComponent} from \"../../../colorpicker/ncs\";\nimport {SikkensPickerComponent} from \"../../../colorpicker/sikkens\";\nimport {DragType} from \"@dh-software/webui-types\";\n\nexport interface IPPItem {\n    imgUrl: string\n    name: string\n    manufacturer: string\n    program: string\n    key: string\n    property: string\n    propertyKey: string\n    colorPicker?: { code?: string, rgb?: string, type?: string }\n    containerComponent: PPContainerComponent\n}\n\ntype PickerComponent = RalPickerComponent | NcsPickerComponent | SikkensPickerComponent;\n\n@customElement(\"fv-pp-item\")\nexport class PPItemComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({attribute: false})\n    PPContainerComponent: PPContainerComponent | null = null;\n\n    @property({type: String, reflect: true})\n    itemName = \"\";\n\n    @property({type: String, reflect: true})\n    image = \"\";\n\n    @property({type: String}) manufacturer = \"\";\n    @property({type: String}) program = \"\";\n    @property({type: String}) propertyId = \"\";\n    @property({type: String}) propertyKeyValue = \"\";\n    @property({type: String}) propertyKey = \"\";\n    @property({type: Object}) colorPicker?: { code?: string, rgb?: string, type?: string };\n\n    @property({type: Boolean, reflect: true})\n    draggable = false;\n\n    @query(\".color-picker\")\n    private colorPickerDiv: HTMLDivElement | undefined;\n\n    @query(\"fv-progress\")\n    private _progress: ProgressComponent | undefined;\n\n    private _progressTimer: number | undefined;\n    private _colorPickerInstance?: PickerComponent;\n\n    public get ColorPicker(): PickerComponent | undefined {\n        return this._colorPickerInstance;\n    }\n\n    public set Image(val_: string) {\n        this.image = val_ ? `background-${\n            val_.startsWith(\"#\") ?\n                `color: ${val_}` :\n                val_.split(\",\").length >= 2 ?\n                    `color: rgba(${val_})`\n                    : `image: url(${val_})`\n        }` : this.image;\n    }\n\n    /** @deprecated pass reactive props directly via the template instead. */\n    constructor(options?: IPPItem) {\n        super();\n        if (options) {\n            this.itemName = options.name || \"\";\n            this.manufacturer = options.manufacturer || \"\";\n            this.program = options.program || \"\";\n            this.propertyId = options.key || \"\";\n            this.propertyKeyValue = options.property || \"\";\n            this.propertyKey = options.propertyKey || \"\";\n            this.PPContainerComponent = options.containerComponent;\n            this.draggable = !!options.containerComponent?.draggable\n                || options.containerComponent?.getAttribute(\"draggable\") !== null;\n            this.Image = options.imgUrl;\n            if (options.colorPicker) this.colorPicker = options.colorPicker;\n        }\n    }\n\n    protected willUpdate(changed: PropertyValues): void {\n        super.willUpdate(changed);\n        if (changed.has(\"colorPicker\") && this.colorPicker?.type) {\n            this._ensurePicker(this.colorPicker.type);\n        }\n    }\n\n    private _ensurePicker(type: string): void {\n        if (this._colorPickerInstance) return;\n        switch (type) {\n            case \"RAL\": this._colorPickerInstance = new RalPickerComponent(); break;\n            case \"NCS\": this._colorPickerInstance = new NcsPickerComponent(); break;\n            case \"SIKKENS\": this._colorPickerInstance = new SikkensPickerComponent(); break;\n            default: return;\n        }\n        this._colorPickerInstance.getColorByCode(this.propertyKeyValue.replace(/\\[CP\\].*\\[CP\\]/g, \"\")).then(imgUrl => {\n            if (imgUrl) this.Image = imgUrl;\n        });\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues): void {\n        super.firstUpdated(_changedProperties);\n        this.addEventListener(\"click\", this._onClick);\n        if (this._colorPickerInstance) {\n            this.colorPickerDiv?.appendChild(this._colorPickerInstance);\n            this._colorPickerInstance.classList.add(\"color-picker\");\n            this._colorPickerInstance.addEventListener(\"colorChange\", this._onColorChange);\n        }\n    }\n\n    private _onClick = (e: Event) => {\n        e.stopPropagation();\n        if (!this.PPContainerComponent || this.PPContainerComponent.IsBusy) return;\n        if (this._progressTimer) {\n            clearTimeout(this._progressTimer);\n            this._progressTimer = undefined;\n        }\n        this._progress?.show();\n\n        if (this._colorPickerInstance) {\n            this.classList.add(\"color-picker\");\n            const isActive = this.classList.contains(\"active\");\n            if (isActive) return;\n            this.classList.add(\"active\");\n            this.colorPickerDiv?.classList.remove(\"hidden\");\n            this.parentNode?.childNodes.forEach((child: ChildNode) => {\n                (child as HTMLElement).classList[child !== this ? \"add\" : \"remove\"](\"hidden\");\n                const shadowChild = (child as HTMLElement).shadowRoot;\n                if (shadowChild) {\n                    for (let i = 0; i < shadowChild.children.length; i++) {\n                        shadowChild.children[i].classList[shadowChild.children[i] !== this.colorPickerDiv ? \"add\" : \"remove\"](\"hidden\");\n                    }\n                }\n            });\n            return;\n        }\n\n        this.PPContainerComponent.IsBusy = true;\n        CommunicationMessageService.modifyProperty(JSON.stringify([{\n            manufacturer: this.manufacturer,\n            program: this.program,\n            key: this.propertyId,\n            property: this.propertyKeyValue,\n            propertyKey: this.propertyKey,\n        }]), this.PPContainerComponent.PPOptions).then(async () => {\n            if (this._progress) this._progress.finished = true;\n            this.PPContainerComponent?.requestUpdate();\n            this._progressTimer = setTimeout(() => {\n                this._progressTimer = undefined;\n                this._progress?.hide();\n            }, 1000) as unknown as number;\n        });\n    };\n\n    private _onColorChange = (e: Event) => {\n        const detail = (e as CustomEvent).detail as {\n            code: string;\n            rgba: { r: number; g: number; b: number; a: 1 };\n        };\n        CommunicationMessageService.modifyProperty(JSON.stringify([{\n            manufacturer: this.manufacturer,\n            program: this.program,\n            key: this.propertyId,\n            property: this.propertyKeyValue,\n            propertyKey: this.propertyKey,\n        }]), Object.assign({\n            modifyColorPicker: {\n                code: detail.code,\n                rgb: `${detail.rgba.r},${detail.rgba.g},${detail.rgba.b}`,\n                key: this.propertyKey,\n                id: this.propertyId,\n            },\n        }, this.PPContainerComponent?.PPOptions)).then(async () => {\n            if (this._progress) this._progress.finished = true;\n            this.PPContainerComponent?.requestUpdate();\n            setTimeout(() => this._progress?.hide(), 1000);\n        });\n    };\n\n    render() {\n        DragDropService.removeElement(this);\n        if (this.draggable && !this._colorPickerInstance) {\n            DragDropService.addElement(this, {\n                extData: {\n                    manufacturer: this.manufacturer,\n                    program: this.program,\n                    key: this.propertyId,\n                    property: this.propertyKeyValue,\n                    propertyKey: this.propertyKey,\n                },\n                id: this.propertyId,\n                type: DragType.PROGPROPERTY,\n            });\n        }\n        const classMapImage = {\n            \"not-found\": !this.image,\n            \"pp-image\": true,\n        };\n        return html`\n            <div class=\"pp-item-content\">\n                <div class=\"pp-item-image\">\n                    <div class=${classMap(classMapImage)} style=\"${this.image ? `${this.image}` : \"\"}\">\n                        <fv-progress></fv-progress>\n                    </div>\n                </div>\n                <div class=\"pp-item-name\">\n                    <span>${this.itemName}</span>\n                </div>\n            </div>\n            <div class=\"color-picker hidden\"></div>\n        `;\n    }\n}\n","import { IPPItem, PPItemComponent } from \"./pp-item.component\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { css, html, PropertyDeclaration, PropertyValueMap, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./pp-items.component.sass?inline\";\nimport { BaseElement } from \"../../../standard/base/base.component\";\nimport { StyleHelper } from \"../../../../utils/style.helper\";\n\n@customElement(\"fv-pp-items\")\nexport class PPItemsComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Boolean, reflect: true })\n    active = false;\n\n    @property({ type: Boolean, reflect: true })\n    noTransition = false;\n\n    constructor() {\n        super();\n    }\n\n    private updateHeight = () => {\n        StyleHelper.updateMaxTransitionHeight(this);\n    }\n\n    async requestUpdate(name?: PropertyKey, oldValue?: unknown, options?: PropertyDeclaration) {\n        await StyleHelper.updateMaxTransitionHeight(this as HTMLElement);\n        super.requestUpdate(name, oldValue, options);\n    }\n\n    render(): TemplateResult<1> {\n        return html`<slot></slot>`;\n    }\n\n    addItem(item_: IPPItem): PPItemComponent {\n        const item = new PPItemComponent(item_);\n        return item;\n    }\n\n    colorPickerCheck() {\n        const elements = this.querySelectorAll(\"fv-pp-item:not(.hidden)\");\n        if (elements.length === 1) {\n            const element = (elements[0] as PPItemComponent);\n            if (element.ColorPicker) {\n                element.ColorPicker.removeEventListener(\"onRender\", this.updateHeight);\n                element.ColorPicker.addEventListener(\"onRender\", this.updateHeight);\n                element.click();\n            }\n            this.updateHeight();\n        }\n    }\n}\n\n","import { html, TemplateResult } from \"lit\";\nimport { customElement, state } from \"lit/decorators.js\";\nimport { repeat } from \"lit/directives/repeat.js\";\n// Side-effect imports — register custom elements used by tag name in templates.\nimport \"./pp-menu.component\";\nimport \"./pp-items.component\";\nimport \"./pp-item.component\";\nimport { PPItemsComponent } from \"./pp-items.component\";\nimport { PPLayerComponent } from \"../../pp-layer/pp-layer.component\";\nimport { IGetAccordionItemsParams } from \"../../pp-layer/base-accordion.theme\";\nimport { PPMenuComponent } from \"./pp-menu.component\";\nimport {\n    IProgProperty,\n    IProgPropertyManufacturer,\n    IProgPropertyProgram,\n    IProgPropertyValue,\n} from \"@dh-software/webui-types\";\nimport { DragDropService, ProgPropertyModel } from \"@dh-software/webui-api\";\n\ntype WebUIChild = PPItemsComponent | PPMenuComponent;\n\ninterface WebUIValueRow {\n    propertyKey: string;\n    property: string;\n    name: string;\n    imgUrl: string;\n    colorPicker?: { type?: string, code?: string, rgb?: string };\n}\n\ninterface WebUIRow {\n    key: string;\n    id: string;\n    title: string;\n    currentImage: string;\n    currentName: string;\n    manufacturer: string;\n    program: string;\n    hideItemCount: boolean;\n    disabled: boolean;\n    values: WebUIValueRow[];\n}\n\n@customElement(\"fv-prog-property-webui-accordion-layer\")\nexport class ProgPropertyWebUIAccordionLayer extends PPLayerComponent<WebUIChild> {\n\n    @state()\n    protected _rows: WebUIRow[] = [];\n\n    @state()\n    protected _openKey: string | null = null;\n\n    async getAccordionItems(_params: IGetAccordionItemsParams): Promise<TemplateResult[]> {\n        DragDropService.cleanUp();\n        const rows: WebUIRow[] = [];\n        await ProgPropertyModel.traverse({\n            propertyCallback: (manufacturerModel: IProgPropertyManufacturer, programModel: IProgPropertyProgram,\n                propertyModel: IProgProperty, values: IProgPropertyValue[], currentValue?: IProgPropertyValue) => {\n                if (!propertyModel.name) return false;\n\n                let current = currentValue\n                    ?? values.find(v => v.propertyKey === propertyModel.currentValue);\n                let disabled = false;\n                if (values.length === 1) {\n                    if (this.PPContainer.hideNotSettable) return false;\n                    if (this.PPContainer.disableNotSettable) disabled = true;\n                    current = values[0];\n                }\n\n                const currentImage = current?.colorPicker?.rgb\n                    ? `${current.colorPicker.rgb},1`\n                    : current?.alternativeImageUrl || \"\";\n\n                rows.push({\n                    key: propertyModel.key,\n                    id: propertyModel.id,\n                    title: propertyModel.name,\n                    currentImage,\n                    currentName: current?.name ?? \"\",\n                    manufacturer: manufacturerModel.manufacturerName?.toLowerCase() ?? \"\",\n                    program: programModel.programName?.toLowerCase() ?? \"\",\n                    hideItemCount: this.PPContainer.hideItemCount\n                        || (this.PPContainer.disableNotSettable && values.length === 1),\n                    disabled,\n                    values: values.map(v => ({\n                        propertyKey: v.propertyKey,\n                        property: v.key,\n                        name: v.name,\n                        imgUrl: v.alternativeImageUrl ?? \"\",\n                        colorPicker: v.colorPicker,\n                    })),\n                });\n            },\n        });\n        this._rows = rows;\n        return this._buildTemplates();\n    }\n\n    protected _buildTemplates(): TemplateResult[] {\n        return this._rows.map(r => this._renderRow(r));\n    }\n\n    private _renderRow(r: WebUIRow): TemplateResult {\n        const active = this._openKey === r.key;\n        return html`\n            <fv-pp-menu\n                data-key=${r.key}\n                ?active=${active}\n                ?disabled=${r.disabled}\n                ?hide-item-count=${r.hideItemCount}\n                .titleText=${r.title}\n                .currentImage=${r.currentImage}\n                .currentName=${r.currentName}\n                .itemCount=${r.values.length}\n                @click=${(e: Event) => this._onMenuClick(e, r.key)}\n            ></fv-pp-menu>\n            <fv-pp-items data-key=${r.key} id=\"item_${r.id}\" ?active=${active}>\n                ${repeat(r.values, v => v.propertyKey, v => html`\n                    <fv-pp-item\n                        .itemName=${v.name}\n                        .image=${v.imgUrl}\n                        .manufacturer=${r.manufacturer}\n                        .program=${r.program}\n                        .propertyId=${r.id}\n                        .propertyKeyValue=${v.property}\n                        .propertyKey=${v.propertyKey}\n                        .colorPicker=${v.colorPicker}\n                        .PPContainerComponent=${this.PPContainer}\n                    ></fv-pp-item>\n                `)}\n            </fv-pp-items>\n        `;\n    }\n\n    protected _onMenuClick = (e: Event, key: string) => {\n        e.stopPropagation();\n        e.preventDefault();\n        this._openKey = this._openKey === key ? null : key;\n        this._items = this._buildTemplates();\n        if (this._openKey !== null) {\n            this.updateComplete.then(() => {\n                const items = this.querySelector(`fv-pp-items[data-key=\"${key}\"]`) as PPItemsComponent | null;\n                items?.colorPickerCheck();\n            });\n        }\n    };\n}\n","import { html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport style from \"../furnview_theme/pp-furnview-accordion-layer.component.sass?inline\";\n// Side-effect imports — register custom elements used by tag name in templates\n// (plus those used by the shared `renderFurnviewRow` helper).\nimport \"../../prop-transfer/furnview_theme/pt-property-group.component\";\nimport \"../../prop-transfer/furnview_theme/pt-property-item.component\";\nimport \"../furnview_theme/pp-property.component\";\nimport \"../furnview_theme/pp-property-values.component\";\nimport \"../furnview_theme/pp-property-value.component\";\nimport { PPLayerComponent } from \"../../pp-layer/pp-layer.component\";\nimport { IGetAccordionItemsParams } from \"../../pp-layer/base-accordion.theme\";\nimport { PTPropertyGroupComponent } from \"../../prop-transfer/furnview_theme/pt-property-group.component\";\nimport { PTPropertyItemComponent } from \"../../prop-transfer/furnview_theme/pt-property-item.component\";\nimport { PPPropertyValuesComponent } from \"../furnview_theme/pp-property-values.component\";\nimport { PPPropertyComponent } from \"../furnview_theme/pp-property.component\";\nimport { PPPropertyValueComponent } from \"../furnview_theme/pp-property-value.component\";\nimport {\n    buildFurnviewRow,\n    FurnviewRow,\n    renderFurnviewRow,\n} from \"../furnview_theme/pp-furnview-accordion-layer.component\";\nimport {\n    IGetPropTransferParams,\n    IProgPropertyExt,\n    IProgPropertyValue,\n    IPropTransferItem,\n} from \"@dh-software/webui-types\";\nimport { ProgPropertyModel, PropTransferModel } from \"@dh-software/webui-api\";\n\ntype PTChildren = PTPropertyItemComponent | PTPropertyGroupComponent;\ntype PPChildren = PPPropertyValueComponent | PPPropertyValuesComponent | PPPropertyComponent;\nexport type CombineChildren = PTChildren | PPChildren;\n\ninterface PTGroupRow {\n    kind: \"pt-group\";\n    key: string;\n    items: IPropTransferItem[];\n}\n\ninterface PPRow {\n    kind: \"pp-row\";\n    key: string;\n    row: FurnviewRow;\n}\n\ntype CombineRow = PTGroupRow | PPRow;\n\n@customElement(\"fv-prog-property-combine-accordion-layer\")\nexport class ProgPropertyCombineAccordionLayer extends PPLayerComponent<CombineChildren> {\n\n    static styles = [super.styles || [], unsafeCSS(style)];\n\n    @property({ type: Object, reflect: true })\n    parameters?: IGetPropTransferParams;\n\n    @state()\n    protected _rows: CombineRow[] = [];\n\n    @state()\n    protected _openKey: string | null = null;\n\n    async getAccordionItems(_params: IGetAccordionItemsParams): Promise<TemplateResult[]> {\n        const combinedProperties = new Set<string>();\n        const rows: CombineRow[] = [];\n        let useCache = false;\n\n        await PropTransferModel.traverse({\n            groupCallback: async (manufacturer, program, group, items) => {\n                const groupKey = `${manufacturer}_${program}_${group}`;\n                const progProperties: string[] = [];\n                for (const item of items) {\n                    for (const p of item.progProperties ?? []) {\n                        if (!progProperties.includes(p)) progProperties.push(p);\n                    }\n                }\n\n                rows.push({\n                    kind: \"pt-group\",\n                    key: groupKey,\n                    items: this.PPContainer.grouped ? items : [],\n                });\n\n                const filteredProgProperties = await ProgPropertyModel.findMany(manufacturer, program, progProperties, useCache);\n                useCache = true;\n                for (const propertyModel of Object.values(filteredProgProperties) as IProgPropertyExt[]) {\n                    combinedProperties.add(propertyModel.key);\n                    const values = Object.values(propertyModel.children) as IProgPropertyValue[];\n                    const currentValue = propertyModel.currentValue as unknown as IProgPropertyValue;\n                    const row = buildFurnviewRow(this.PPContainer, { manufacturerName: manufacturer }, { programName: program }, propertyModel, values, currentValue);\n                    if (row) rows.push({ kind: \"pp-row\", key: `pp_${row.key}_${groupKey}`, row });\n                }\n            },\n            itemsCallback: async (item: IPropTransferItem) => {\n                if (!this.PPContainer.grouped) {\n                    rows.push({ kind: \"pt-group\", key: item.id, items: [item] });\n                }\n            },\n        }, this.parameters);\n\n        await ProgPropertyModel.traverse({\n            propertyCallback: (manufacturerModel, programModel, propertyModel, values, currentValue) => {\n                if (values.length <= 1 || combinedProperties.has(propertyModel.key)) return;\n                const row = buildFurnviewRow(this.PPContainer, manufacturerModel, programModel, propertyModel, values, currentValue);\n                if (row) rows.push({ kind: \"pp-row\", key: `pp_${row.key}`, row });\n            },\n        });\n\n        this._rows = rows;\n        return this._buildTemplates();\n    }\n\n    protected _buildTemplates(): TemplateResult[] {\n        return this._rows.map(r => this._renderRow(r));\n    }\n\n    private _renderRow(r: CombineRow): TemplateResult {\n        if (r.kind === \"pt-group\") return this._renderPtGroup(r);\n        // Combine theme's PP click is one-way \"open\" rather than toggle.\n        return renderFurnviewRow(this.PPContainer, r.row, this._openKey, (e, key) => {\n            e.stopPropagation();\n            e.preventDefault();\n            if (this._openKey === key) return;\n            this._openKey = key;\n            this._items = this._buildTemplates();\n        });\n    }\n\n    private _renderPtGroup(g: PTGroupRow): TemplateResult {\n        return html`\n            <fv-pt-group data-key=${g.key}>\n                ${repeat(g.items, it => it.id, it => html`\n                    <fv-pt-property-item\n                        .titleText=${it.text || it.id}\n                        .currentImage=${it.image || \"\"}\n                        ?deletable=${(it.deletable ?? []).length > 0}\n                        .itemId=${it.id}\n                        .manufacturer=${it.manufacturer || \"\"}\n                        .program=${it.program || \"\"}\n                    ></fv-pt-property-item>\n                `)}\n            </fv-pt-group>\n        `;\n    }\n}\n\nexport const PPCombineThemeIndex = new ProgPropertyCombineAccordionLayer();\n","import { BaseElement } from \"../base/base.component\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { StyleHelper } from \"../../../utils/style.helper\";\nimport style from \"./single-color.component.sass?inline\";\n\n@customElement(\"fv-single-color\")\nexport class SingleColorComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private readonly colorCode: string = \"\";\n\n    @property({ type: Boolean })\n    public disabled = false;\n\n    constructor(colorCode: string) {\n        super();\n        this.colorCode = colorCode;\n    }\n\n    private colorBoxClick() {\n        this.classList.add(\"selected\");\n        this.dispatchEvent(new CustomEvent(\"colorBoxClick\", { detail: { colorCode: this.colorCode } }));\n    }\n\n    private getRGB() {\n        const rgb = StyleHelper.hexToRgb(this.colorCode);\n        if (rgb) {\n            return rgb;\n        }\n        return { r: 119, g: 119, b: 119 };\n    }\n\n    protected render(): TemplateResult<1> {\n        const rgb = this.getRGB();\n        const classes = {\n            \"color-box\": true,\n            \"disabled\": this.disabled,\n            \"fv-icon-close\": this.disabled,\n            \"fv-icon-check\": this.classList.contains(\"selected\")\n        };\n\n        return html`\n            <div\n                class=\"${classMap(classes)}\"\n                @click=\"${this.colorBoxClick}\"\n                style=\"background-color: rgba(${rgb?.r}, ${rgb?.g}, ${rgb?.b}, ${this.disabled ? \"0.2\" : \"1\"});\">\n            </div>\n        `;\n    }\n}","import { css, html, unsafeCSS, TemplateResult } from \"lit\";\nimport style from \"./finish-params-container.component.sass?inline\";\nimport { customElement, state } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../../standard/base/base.component\";\nimport { SingleColorComponent } from \"../../../standard/color/single-color.component\";\nimport {\n    eCatalogFilterState,\n    ICreateStdCatalogFilterCtxRequest,\n    IProgPropertyFinishParams,\n    IProgPropertyFinishParamsProperty,\n    IProgPropertyProgramFinishParams,\n    IRunStdCatalogFilterCtxResponse\n} from \"@dh-software/webui-types\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\n\n\n@customElement(\"fv-finish-params-container\")\nexport class FinishParamsContainerComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private readonly manufacturer: string;\n    private readonly program: string;\n    private readonly propertyKey: string;\n\n    private currentSelection: Array<string> = [];\n    private propertyFinishParams: IProgPropertyFinishParamsProperty | undefined = undefined;\n    private propertyFinishParamValues: Array<IProgPropertyFinishParams> = []\n\n    @state()\n    private _filterData: IRunStdCatalogFilterCtxResponse | undefined = undefined;\n\n    constructor(manufacturer_: string, program_: string, propertyKey_: string, finishParams_: IProgPropertyProgramFinishParams) {\n        super();\n        this.manufacturer = manufacturer_;\n        this.program = program_;\n        this.propertyKey = propertyKey_;\n\n        this.propertyFinishParams = finishParams_[propertyKey_];\n\n        if (this.propertyFinishParams) {\n            this.propertyFinishParamValues = Object.values(this.propertyFinishParams).sort((a, b) => a.prio - b.prio);\n            this.initFilterContext();\n        }\n    }\n\n    private async initFilterContext() {\n        if (this.propertyFinishParams) {\n            const propertyFilter = this.getFinishParamsStdCatalogFilter(this.FilterContextKey, this.propertyFinishParams);\n            await CommunicationMessageService.createStdCatalogFilterCtx(propertyFilter);\n        }\n    }\n\n    private getFinishParamsStdCatalogFilter(context_: string, items_: IProgPropertyFinishParamsProperty): ICreateStdCatalogFilterCtxRequest {\n        const filter: [string, string[]][] = [];\n        const itemToFilterValuesMap = new Map();\n\n        for (const groupName in items_) {\n            const group = items_[groupName];\n            if (!group || !group.values) {\n                continue;\n            }\n\n            const filterValues = Object.keys(group.values);\n            if (filterValues.length > 0) {\n                filter.push([groupName, filterValues]);\n\n                for (const filterValue of filterValues) {\n                    const valueObj = group.values[filterValue];\n                    const items = valueObj.auspraegung || []\n\n                    for (const item of items) {\n                        if (!itemToFilterValuesMap.has(item)) {\n                            itemToFilterValuesMap.set(item, new Set());\n                        }\n                        itemToFilterValuesMap.get(item).add(filterValue);\n                    }\n                }\n            }\n        }\n\n        const items: [string, string[]][] = Array.from(itemToFilterValuesMap.entries()).map(([item, filterValuesSet]) => [\n            item,\n            Array.from(filterValuesSet)\n        ]);\n\n        return { ctx: context_, filter, items };\n    }\n\n    get FilterContextKey(): string {\n        return `${this.manufacturer}_${this.program}_${this.propertyKey}`;\n    }\n\n    private toggleSelection(value: string) {\n        if (this.currentSelection.includes(value)) {\n            this.currentSelection = this.currentSelection.filter(item => item !== value);\n        }\n        else {\n            this.currentSelection.push(value);\n        }\n    }\n\n    private async runCatalogFilter() {\n        this._filterData = await CommunicationMessageService.runCatalogFilterCtx({ ctx: this.FilterContextKey, selection: this.currentSelection })\n        this.dispatchEvent(new CustomEvent(\"onFinishParamsFilter\", { detail: { filter: this._filterData, key: this.propertyKey }, composed: true, bubbles: true }));\n    }\n\n    private renderFinishParams(): TemplateResult<1> {\n        const filterContainer = document.createElement('div');\n        filterContainer.classList = \"filter-lists\";\n\n        for (const finishGroup of this.propertyFinishParamValues) {\n            const groupContainer = document.createElement('div');\n            groupContainer.classList.add(\"filter-group\");\n\n            const groupItems = document.createElement('div');\n            groupItems.classList.add(\"group-items\");\n\n            if (finishGroup.text) {\n                const groupTitle = document.createElement(\"fv-label\");\n                groupTitle.setAttribute(\"i18n\", finishGroup.text);\n                groupTitle.innerText = finishGroup.text;\n                groupTitle.classList.add(\"group-title\");\n                groupContainer.appendChild(groupTitle);\n            }\n\n            for (const filterValue in finishGroup.values) {\n                const isColor = /[a-fA-F0-9]{6}/.test(filterValue);\n                const isSelected = this.currentSelection.includes(filterValue);\n                const isDisabled = this._filterData?.filterGroups[finishGroup.id].find(entry => entry.id === filterValue)?.state === eCatalogFilterState.DISABLED;\n\n                if (isColor) {\n                    const colorComponent = new SingleColorComponent(finishGroup.values[filterValue].id);\n                    colorComponent.disabled = isDisabled;\n                    colorComponent.addEventListener(\"colorBoxClick\", async () => {\n                        this.toggleSelection(filterValue);\n                        await this.runCatalogFilter();\n                    });\n                    if (isSelected) {\n                        colorComponent.classList.add(\"selected\");\n                    }\n\n                    groupItems.appendChild(colorComponent);\n                }\n                else {\n                    const buttonComponent = document.createElement(\"fv-button\");\n                    buttonComponent.classList.add(\"bordered\");\n                    buttonComponent.textContent = finishGroup.values[filterValue].text;\n                    buttonComponent.addEventListener(\"click\", async () => {\n                        this.toggleSelection(filterValue);\n                        await this.runCatalogFilter();\n                    });\n                    if (isDisabled) {\n                        buttonComponent.setAttribute(\"disabled\", \"true\");\n                    }\n                    if (isSelected) {\n                        buttonComponent.classList.add(\"active\");\n                    }\n\n                    groupItems.appendChild(buttonComponent);\n                }\n            }\n\n            groupContainer.appendChild(groupItems);\n            filterContainer.appendChild(groupContainer);\n        }\n        return html`${filterContainer}`;\n    }\n\n    protected render(): unknown {\n        return html`${this.renderFinishParams()}`;\n    }\n}\n","import { html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { repeat } from \"lit/directives/repeat.js\";\nimport { createRef, ref, Ref } from \"lit/directives/ref.js\";\nimport style from \"./pp-accordion-layer.component.sass?inline\";\nimport { AccordionItemComponent } from \"../../../standard/accordion\";\n// Side-effect imports — these custom elements are only used as types or tag\n// names below; bundlers tree-shake value imports of unused classes, which\n// stops the @customElement registration side-effects from firing.\nimport \"./image/titled-image.component\";\nimport \"./image/property-list.component\";\nimport \"../../../standard/radio/radio.component\";\nimport { PropertyListComponent, TitledImageComponent } from \"./image\";\nimport { FinishParamsContainerComponent } from \"../finish-params/finish-params-container.component\";\nimport { BaseAccordionTheme } from \"../../pp-layer/base-accordion.theme\";\nimport { IPPLayerGetAccordionItemsParams, RenderMode } from \"../../pp-layer/pp-layer.component\";\nimport {\n    DragType,\n    IProgProperty,\n    IProgPropertyGroupInformationExt,\n    IProgPropertyManufacturer,\n    IProgPropertyProgram,\n    IProgPropertyProgramFinishParams,\n    IProgPropertyValue,\n    IPropertyGroupedCallbackParams,\n} from \"@dh-software/webui-types\";\nimport {\n    CommunicationMessageService,\n    DragDropService,\n    ProgPropertyModel,\n    WebViewerService,\n} from \"@dh-software/webui-api\";\n\ninterface GroupRow {\n    key: string;\n    title: string;\n    headerImage: string;\n    isSingular: boolean;\n    additionalClasses: string[];\n    program: IProgPropertyProgram;\n    manufacturer: IProgPropertyManufacturer;\n    finishParams: IProgPropertyProgramFinishParams;\n    properties: PropertyRow[];\n}\n\ninterface PropertyRow {\n    key: string;\n    model: IProgProperty;\n    values: IProgPropertyValue[];\n    current?: IProgPropertyValue;\n}\n\n@customElement(\"fv-prog-property-accordion-layer\")\nexport class ProgPropertyAccordionLayer extends BaseAccordionTheme {\n    static styles = [super.styles || [], unsafeCSS(style)];\n\n    constructor() {\n        super();\n        this.preventEmpty = false;\n        this.renderMode = RenderMode.LIT_STATE;\n    }\n\n    // One-shot wiring guards per live DOM element; GC'd when the node disappears.\n    private wiredDrag = new WeakSet<Element>();\n    private wiredColorPicker = new WeakSet<Element>();\n\n    // FinishParamsContainer has a positional constructor with side effects — cache to avoid re-firing.\n    private finishParamsByKey = new Map<string, FinishParamsContainerComponent>();\n\n    private currentProgramId = \"\";\n    private initiallyOpened = false;\n\n    async getAccordionItems(params: IPPLayerGetAccordionItemsParams): Promise<TemplateResult[]> {\n        DragDropService.cleanUp();\n        this.wiredDrag = new WeakSet<Element>();\n        this.wiredColorPicker = new WeakSet<Element>();\n\n        const additionalClasses = this.PPContainer.accordionItemClasses;\n        const groups: GroupRow[] = [];\n\n        await ProgPropertyModel.traverse({\n            propertyGroupedCallback: async (data: IPropertyGroupedCallbackParams<IProgPropertyManufacturer, IProgPropertyGroupInformationExt>) => {\n                if (this.PPContainer.hideSingleValueProperties) {\n                    let hasFilter = false;\n                    let noProgPropertyValueList = false;\n                    let totalPropertiesCount = 0;\n                    for (const item of data.propertyGroup.keys) {\n                        if (item.progPropertyValueList) totalPropertiesCount += item.progPropertyValueList.length;\n                        else noProgPropertyValueList = true;\n                        if (data.finishParams?.[item.key]) hasFilter = true;\n                    }\n                    if (totalPropertiesCount < 2 && !noProgPropertyValueList && !hasFilter) return;\n                }\n                if (data.propertyGroup?.id === \"hidden\") return;\n\n                if (!data.propertyGroup.title) {\n                    data.propertyGroup.title = data.propertyGroup.keys[0].progPropertyModel?.name || \"\";\n                }\n\n                const groupKey = `${data.propertyGroup.title}_${data.propertyGroup.id ?? \"\"}`;\n                const properties: PropertyRow[] = [];\n\n                for (const item of data.propertyGroup.keys) {\n                    const itemHasFinishParams = !!data.finishParams?.[item.key];\n                    if (!item.progPropertyModel?.name) continue;\n\n                    const hasManyValues =\n                        !!item.progPropertyValueList &&\n                        (item.progPropertyValueList.length > 1 || !this.PPContainer.hideSingleValueProperties);\n                    if (!hasManyValues && !itemHasFinishParams) continue;\n\n                    let current = item.currentValue;\n                    if (!current && item.progPropertyValueList) {\n                        current = item.progPropertyValueList.find(c => c.propertyKey === item.progPropertyModel?.currentValue);\n                    }\n\n                    properties.push({\n                        key: item.progPropertyModel.key,\n                        model: item.progPropertyModel,\n                        values: hasManyValues ? item.progPropertyValueList! : [],\n                        current,\n                    });\n                }\n\n                if (properties.length === 0) return;\n\n                // Header image: group override, else first current-selection image (matches old setHeaderImage order).\n                let headerImage = data.propertyGroup.imgSrc || \"\";\n                if (!headerImage) {\n                    for (const p of properties) {\n                        const img = p.current?.alternativeImageUrl || p.current?.colorPicker?.rgb;\n                        if (img) { headerImage = img; break; }\n                    }\n                }\n\n                groups.push({\n                    key: groupKey,\n                    title: data.propertyGroup.title || \"Undefined\",\n                    headerImage,\n                    isSingular: false,\n                    additionalClasses,\n                    program: data.programModel,\n                    manufacturer: data.manufacturerModel,\n                    finishParams: data.finishParams || ({} as IProgPropertyProgramFinishParams),\n                    properties,\n                });\n            },\n        }, params?.progPropertiesParams);\n\n        // Program switched: clear ActiveItem so a stale group doesn't stay open;\n        const programId = groups[0]?.program?.programID ?? \"\";\n        if (programId && this.currentProgramId !== programId) {\n            this.currentProgramId = programId;\n            const parent = this.parentAccordion;\n            if (parent) parent.ActiveItem = undefined;\n            this.initiallyOpened = false;\n        }\n\n        if (groups.length === 1) groups[0].isSingular = true;\n\n        return groups.map(g => this.renderGroup(g));\n    }\n\n    protected updated(_changedProperties: PropertyValues): void {\n        super.updated?.(_changedProperties);\n        if (this.initiallyOpened) return;\n        const firstItem = this.querySelector<AccordionItemComponent>(\"fv-accordion-item\");\n        if (!firstItem) return;\n        const accordion = firstItem.parentAccordion;\n        if (accordion && accordion.ActiveItem !== firstItem) {\n            accordion.ActiveItem = firstItem;\n        }\n        this.initiallyOpened = true;\n    }\n\n    private renderGroup(g: GroupRow): TemplateResult {\n        const classes: Record<string, boolean> = {};\n        for (const cls of g.additionalClasses) classes[cls] = true;\n\n        return html`\n            <fv-accordion-item\n                data-group-key=${g.key}\n                .Header=${g.title}\n                .Image=${g.headerImage}\n                ?singular=${g.isSingular}\n                ?forced-open=${g.isSingular}\n                class=${classMap(classes)}\n            >\n                ${repeat(g.properties, p => p.key, p => this.renderProperty(g, p))}\n            </fv-accordion-item>\n        `;\n    }\n\n    private renderProperty(g: GroupRow, p: PropertyRow): TemplateResult {\n        const listRef = createRef<PropertyListComponent>();\n        // Any radio value flips the list into `.radioList` mode (matches old buildRadioProperty).\n        const isRadioList = p.values.some(v => !v.alternativeImageUrl && !v.colorPicker?.type);\n\n        return html`\n            <label class=\"pp-property-label\" style=\"font-weight: bold\">${p.model.name}</label>\n            <fv-property-list\n                ${ref(listRef)}\n                id=${p.model.id}\n                class=${classMap({ radioList: isRadioList })}\n            >\n                ${this.getFinishParamsContainer(g, p)}\n                ${repeat(p.values, v => v.propertyKey, v => this.renderValue(g, p, v, listRef))}\n            </fv-property-list>\n        `;\n    }\n\n    private renderValue(g: GroupRow, p: PropertyRow, v: IProgPropertyValue, listRef: Ref<PropertyListComponent>): unknown {\n        if (v.alternativeImageUrl) return this.renderImageValue(g, p, v, listRef);\n        if (v.colorPicker?.type) return this.renderColorPickerValue(g, p, v, listRef);\n        return this.renderRadioValue(g, p, v);\n    }\n\n    private renderImageValue(g: GroupRow, p: PropertyRow, v: IProgPropertyValue, listRef: Ref<PropertyListComponent>): TemplateResult {\n        const modifyParams = this.getModifyParameters(g.manufacturer, g.program, p.model, v);\n        const isCurrent = p.current?.propertyKey === v.propertyKey;\n\n        const wireDrag = (el: Element | undefined) => {\n            if (!el || this.wiredDrag.has(el)) return;\n            this.wiredDrag.add(el);\n            DragDropService.addElement(el as HTMLElement, {\n                extData: modifyParams,\n                id: p.model.id,\n                type: DragType.PROGPROPERTY,\n            }, undefined, false);\n        };\n\n        const onClick = (e: Event) => {\n            e.stopPropagation();\n            const list = listRef.value;\n            list?.querySelectorAll(\".selected\").forEach(el => el.classList.remove(\"selected\"));\n            list?.hideColorPicker();\n            (e.currentTarget as TitledImageComponent).classList.add(\"selected\");\n            CommunicationMessageService.modifyProperty(JSON.stringify([modifyParams]), this.PPContainer.PPOptions);\n            WebViewerService.FurnviewWebViewer?.focus();\n        };\n\n        return html`\n            <fv-titled-image\n                ${ref(wireDrag)}\n                .text=${v.name}\n                .image=${v.alternativeImageUrl}\n                .infoData=${(v.toolTipData as string) || \"\"}\n                .infoType=${(v.toolTipType as string) || \"\"}\n                .manufacturer=${g.manufacturer.manufacturerName as string}\n                .IsActive=${false}\n                ?selected=${isCurrent}\n                @click=${onClick}\n            ></fv-titled-image>\n        `;\n    }\n\n    private renderColorPickerValue(g: GroupRow, p: PropertyRow, v: IProgPropertyValue, listRef: Ref<PropertyListComponent>): TemplateResult {\n        const modifyParams = this.getModifyParameters(g.manufacturer, g.program, p.model, v);\n        const isCurrent = p.current?.propertyKey === v.propertyKey;\n\n        // addColorPicker is stateful imperative API — wire exactly once per element.\n        const wirePicker = (el: Element | undefined) => {\n            const ppList = listRef.value;\n            if (!el || !ppList || !v.colorPicker || this.wiredColorPicker.has(el)) return;\n            this.wiredColorPicker.add(el);\n            ppList.addColorPicker(v.colorPicker, (e) => {\n                const detail = (e as CustomEvent).detail as {\n                    code: string;\n                    rgba: { r: number; g: number; b: number; a: 1 };\n                };\n                CommunicationMessageService.modifyProperty(\n                    JSON.stringify([modifyParams]),\n                    Object.assign({\n                        modifyColorPicker: {\n                            code: detail.code,\n                            rgb: `${detail.rgba.r},${detail.rgba.g},${detail.rgba.b}`,\n                            key: v.propertyKey,\n                            id: p.model.id,\n                        },\n                    }, this.PPContainer.PPOptions),\n                );\n                WebViewerService.FurnviewWebViewer?.focus();\n            });\n            if (isCurrent) {\n                ppList.showColorPicker(p.current?.colorPicker, Object.keys(p.model.children).length === 1);\n            }\n        };\n\n        const onClick = (e: Event) => {\n            e.stopPropagation();\n            const list = listRef.value;\n            list?.querySelectorAll(\".selected\").forEach(el => el.classList.remove(\"selected\"));\n            (e.currentTarget as TitledImageComponent).classList.add(\"selected\");\n            list?.showColorPicker(v.colorPicker);\n        };\n\n        return html`\n            <fv-titled-image\n                ${ref(wirePicker)}\n                .text=${v.name}\n                .image=${v.alternativeImageUrl}\n                .infoData=${(v.toolTipData as string) || \"\"}\n                .infoType=${(v.toolTipType as string) || \"\"}\n                .manufacturer=${g.manufacturer.manufacturerName as string}\n                .IsActive=${isCurrent}\n                ?selected=${isCurrent}\n                @click=${onClick}\n            ></fv-titled-image>\n        `;\n    }\n\n    private renderRadioValue(g: GroupRow, p: PropertyRow, v: IProgPropertyValue): TemplateResult {\n        const modifyParams = this.getModifyParameters(g.manufacturer, g.program, p.model, v);\n        const isCurrent = p.current?.propertyKey === v.propertyKey;\n\n        const onClick = (e: Event) => {\n            e.stopPropagation();\n            CommunicationMessageService.modifyProperty(JSON.stringify([modifyParams]), this.PPContainer.PPOptions);\n            WebViewerService.FurnviewWebViewer?.focus();\n        };\n\n        return html`\n            <fv-radio\n                class=\"top-radio\"\n                .name=${p.model.key}\n                ?checked=${isCurrent}\n                @click=${onClick}\n            >${v.name}</fv-radio>\n        `;\n    }\n\n    // Cached because FinishParamsContainer's constructor fires a backend filter-context request.\n    private getFinishParamsContainer(g: GroupRow, p: PropertyRow): FinishParamsContainerComponent {\n        const cacheKey = `${g.key}/${p.model.key}`;\n        let el = this.finishParamsByKey.get(cacheKey);\n        if (!el) {\n            el = new FinishParamsContainerComponent(\n                g.manufacturer.manufacturerName,\n                g.program.programName,\n                p.model.id,\n                g.finishParams,\n            );\n            this.finishParamsByKey.set(cacheKey, el);\n        }\n        return el;\n    }\n}\n","export class NoticeUtils {\n    public static selectedNoticeItems: Array<any> = [];\n    public static currentNoticeItem: any;\n    public static getProperties(sceneSettings: { cloudId: string, properties: any }) {\n        const properties: { [key: string]: { name: string, title: string } } = {};\n\n        for (const key in sceneSettings.properties) {\n            for (const group of sceneSettings.properties[key]) {\n                group.keys.forEach((gkey: any) => {\n                    if (gkey && gkey.value) {\n                        properties[gkey.key] = { title: gkey.title, name: gkey.value.name };\n                    }\n                });\n            }\n        }\n        return properties;\n    }\n\n    public static getPropertyValues(noticeValues: Array<{ title: string, properties: Array<string> }>, properties: {[p: string]: {name: string, title: string}}) {\n        const propertiesKeys = Object.keys(properties);\n        return noticeValues.map((value) => {\n            const propertyList = value.properties.map((v) => {\n                const propertyRegex = new RegExp(\"\" + v);\n                const propertiesKey = propertiesKeys.find((key) => {\n                    return propertyRegex.test(key);\n                });\n                return properties[propertiesKey||\"\"];\n            }).filter((p) => p !== undefined);\n\n            return {\n                propertyValues: propertyList\n            };\n        });\n    }\n}\n","import { css, html, PropertyDeclaration, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./property-info.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport { NoticeUtils } from \"../../notice/notice-utils\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport {CommunicationMessageService, EventFactoryService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-property-info\")\nexport class PropertyInfoComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private program = \"\";\n    private propertyList: Array<{[key: string]: string} | undefined>;\n\n    public isActive = true;\n    public properties = [];\n\n    constructor() {\n        super();\n        this.propertyList = [];\n\n    }\n\n    private async updateProperties() {\n        const programs = await CommunicationMessageService.getProgramsInScene() as Array<string>;\n        this.program = programs[0] || \"\";\n        const currentProperties = await CommunicationMessageService.getCurrentProgProperties({\n            manufacturer: window.g_article.manu,\n            useRelevant: true\n        });\n        const properties = NoticeUtils.getProperties({ cloudId: \"\", properties: currentProperties });\n        const propertiesKeys = Object.keys(properties);\n        this.propertyList = this.properties.map((v) => {\n            const propertyRegex = new RegExp(v);\n            const propertiesKey = propertiesKeys.find((key) => {\n                return propertyRegex.test(key);\n            });\n            if (propertiesKey) {\n                return properties[propertiesKey];\n            }\n            return undefined;\n        });\n        for (let i = this.propertyList.length - 1; i < 0; i++) {\n            if (this.propertyList[i] === undefined) this.propertyList.splice(i, 1);\n        }\n\n        this.requestUpdate();\n    }\n\n    protected async firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        await this.updateProperties();\n        EventFactoryService.RefreshPropertyPanel.register(() => {\n            this.updateProperties();\n        });\n    }\n\n    private toggleInfo() {\n        this.isActive = !this.isActive;\n        this.requestUpdate();\n    }\n\n    render(): TemplateResult<1> {\n        const propertyInfoClass = { \"property-info-text\": true, active: this.isActive };\n        return html`\n            <span>\n                <fv-info-button @info-button-clicked=\"${this.toggleInfo}\"></fv-info-button>\n                <span class=\"${classMap(propertyInfoClass)}\">\n                ${this.program ? html`<span>Modell: <span class=\"bold\">${this.program}</span></span>` : \"\"} \n                ${this.propertyList.map((property) => {\n        if (property) return html`<span>| ${property.title}: <span class=\"bold\">${property.name} </span></span>`;\n    })}\n                </span>\n            </span>\n        `;\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./separator.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n@customElement(\"fv-separator\")\nexport class SeparatorComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n    }\n\n    render(): TemplateResult<1> {\n        return html``;\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./dockable-menu.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport { SeparatorComponent } from \"../../separator\";\nimport {IconStepComponent} from \"../../step\";\n\n@customElement(\"fv-dockable-menu\")\nexport class DockableMenuComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Boolean, reflect: true })\n    public toggleable = true;\n\n    constructor() {\n        super();\n    }\n\n    menuToggleClick() {\n        this.classList.toggle(\"hide\");\n    }\n\n    appendChild<T extends Node>(node: T): T {\n        this.append(node);\n        return node;\n    }\n    append(...nodes: Node[]) {\n        nodes.forEach((node: Node)=>{\n            (node as unknown as HTMLElement)?.classList?.add(\"docked\");\n        });\n\n        super.append(...nodes);\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            ${ this.toggleable ? html`<div @click=\"${this.menuToggleClick}\" class=\"menu-toggle\"><i class=\"fv-icon-arrow-down-2\"></i></div>` : \"\" }\n            <div class=\"menu-content invisible-scroll bottom\">\n                <div class=\"scroll-content\">\n                    <slot></slot>\n                </div>\n            </div>\n        `;\n    }\n}\n","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup } from \"lit\";\nimport style from \"./finish-modal.component.sass?inline\";\nimport { BaseMaskElement } from \"../../standard/base/mask.component\";\nimport { property, customElement, state } from \"lit/decorators.js\";\nimport { EventHandlerDispatchEvent } from \"../../../models/event-handler/event.handler.model\";\nimport { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\n\n@customElement(\"fv-finish-modal-mask\")\nexport class FinishModalComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @state()\n    public mask = \"finish-modal\";\n    public reloadEvent?: { command: string, data: unknown };\n\n    @property({type: String})\n    public dealerLink = \"\";\n\n    constructor() {\n        super();\n    }\n\n    private findDealer() {\n        if (this.dealerLink) {\n            window.open(this.dealerLink, \"_blank\");\n        }\n    }\n\n    private reload() {\n        if (this.reloadEvent) {\n            window.dispatchEvent(new EventHandlerDispatchEvent({\n                async: false,\n                events: [{\n                    id: this.reloadEvent.command,\n                    data: this.reloadEvent.data as EventHandlerEventData\n                }]\n            }));\n        }\n        else {\n            window.dispatchEvent(new EventHandlerDispatchEvent({\n                async: false,\n                events: [{\n                    id: \"reload-window\",\n                    data: {}\n                }]\n            }));\n        }\n    }\n\n    protected build(content: TemplateResult = html``) {\n        return html`\n            <div class=\"finish-header\">\n                <h3>\n                    <span i18n=\"modal.finish.head-text\"></span>\n                </h3>\n            </div>\n            <div class=\"finish-content\">\n                <div class=\"finish-header\" i18n=\"modal.finish.content.head-text\">\n                    <span></span>\n                </div>\n                <div class=\"finish-text\">\n                    <span i18n=\"modal.finish.content.text\"></span>\n                </div>\n                <div class=\"finish-illustration\">\n                    <div>\n                        <div class=\"finish-image\">\n                            <img part=\"finish-illustration-first\"/>\n                        </div>\n                        <div>\n                            <span i18n=\"modal.finish.content.illustration.left\"></span>\n                        </div>\n                    </div>\n                    <div class=\"finish-image\">\n                        <img part=\"finish-illustration-arrow\"/>\n                    </div>\n                    <div>\n                        <div class=\"finish-image\">\n                            <img part=\"finish-illustration-second\"/>\n                        </div>\n                        <div>\n                            <span i18n=\"modal.finish.content.illustration.right\"></span>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <div class=\"notice-footer\">\n                <fv-button class=\"bordered\" i18n=\"modal.finish.restart\" @click=\"${this.reload}\"></fv-button>\n                ${this.dealerLink ? html`<fv-button class=\"bordered\" i18n=\"modal.finish.find_dealer\" @click=\"${this.findDealer}\"></fv-button>`: \"\"}\n            </div>\n        `;\n    }\n}\n","import { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./notice-accordion-item.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { StyleHelper } from \"../../../utils/style.helper\";\nimport { AccordionItemComponent } from \"../../standard/accordion\";\nimport { LoadingModalComponent } from \"../../standard/loading\";\nimport { NoticeModalComponent } from \"./notice-list.component\";\nimport { INoticeItem } from \"../interface\";\nimport { CheckboxComponent } from \"../../standard/checkbox\";\n\n\nexport interface IAccordionItem {\n    header: string;\n    image: string;\n}\n\n@customElement(\"fv-notice-accordion-item\")\nexport class NoticeAccordionItemComponent extends AccordionItemComponent {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Boolean, reflect: true })\n    public selected = false;\n\n    public item: INoticeItem;\n\n    @query(\".checkbox\")\n    private selectionCheckbox: CheckboxComponent | undefined;\n\n    constructor() {\n        super();\n        this.item = { properties: [], id: \"\", manufacturer: \"\", program: \"\", selected: false };\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        if (this.selectionCheckbox)\n            this.selectionCheckbox.onChange = (e, component) => {\n                this.selected = component.checked;\n                this.requestUpdate();\n                this.updateComplete.then(()=>{\n                    this.dispatchEvent(new CustomEvent(\"onselectionchange\", {}));\n                });\n            };\n    }\n\n    async append(...nodes: any[]) {\n        super.append(...nodes);\n        StyleHelper.updateMaxTransitionHeight(this.content as HTMLElement);\n    }\n\n    appendChild<T extends Node>(node: T): T {\n        this.append(node);\n        return node as T;\n    }\n\n\n    private openPlanning(e: MouseEvent) {\n        this.dispatchEvent(new CustomEvent(\"open-planning\", {\n            detail: this.item,\n            bubbles: true\n        }));\n    }\n\n    private checkboxClicked(e: MouseEvent) {\n        e.cancelBubble = true;\n        e.stopPropagation();\n    }\n\n    protected build(): TemplateResult<1> {\n        return html`\n            <div class=\"header-content\">\n                ${this.classList.contains(\"view-only\") ? \"\" :\n        html`<div class = \"checkbox-content\" >\n                <fv-checkbox class=\"checkbox\" .checked=\"${this.selected}\" @click=\"${this.checkboxClicked}\"></fv-checkbox>\n             </div>`}\n                <div class=\"image-content\">\n                    <img src=\"${this.item.image}\">\n                </div>\n                <div class=\"header-text\">\n                    <span>${this.item.programName}</span>\n                </div>\n                <div class=\"header-text\">\n                    <span>${this.item.price}</span>\n                </div>\n                ${this.classList.contains(\"view-only\") ? \"\" :\n        html`<div class=\"open-planning\">\n                ${StyleHelper.getVar(this.parentAccordion as HTMLElement, \"--open-planning-image\") ? html`<img @click=${this.openPlanning} src=\"${StyleHelper.getVar(this.parentAccordion as HTMLElement, \"--open-planning-image\")}\">` : html`<i class=\"icon fv-icon-folder\" @click=${this.openPlanning}></i>` }\n\n\n             </div>`}\n\n            </div>\n        `;\n    }\n}\n","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup, PropertyValues } from \"lit\";\nimport style from \"./notice-carousel.component.sass?inline\";\nimport { property, customElement, query } from \"lit/decorators.js\";\nimport { INoticeItem, INoticeProperty } from \"./interface\";\nimport { BaseElement } from \"../standard/base/base.component\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { LocalStorageService } from \"../../utils/local-storage.service\";\nimport { NoticeUtils } from \"./notice-utils\";\nimport { NoticeAccordionItemComponent } from \"./modal/notice-accordion-item.component\";\n\n@customElement(\"fv-notice-carousel\")\nexport class NoticeCarouselComponent extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Boolean, attribute: \"hide-price\", reflect: true })\n    private hidePrice = false;\n\n    @property()\n    public noticeValues: Array<{ title: string, properties: Array<string> }> = [];\n\n    public items: Array<INoticeItem>;\n\n    private itemIndex: number;\n    private onlyCurrent = false;\n\n    constructor() {\n        super();\n        this.itemIndex = 0;\n        this.items = [];\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        if (this.noticeValues?.length > 0) this.updateItems();\n    }\n\n    public updateItems(onlyCurrent?: boolean) {\n        this.onlyCurrent = !!onlyCurrent;\n        this.items = [];\n        this.itemIndex = 0;\n        const sceneSettings: Array<any> = [];\n\n        if (onlyCurrent) {\n            sceneSettings.push(NoticeUtils.currentNoticeItem);\n        }\n        else {\n            NoticeUtils.selectedNoticeItems.forEach((components)=>{\n                if (components.listItem.selected) {\n                    sceneSettings.push(components.listItem.item);\n                }\n            });\n        }\n        sceneSettings.forEach((setting: any) => {\n            let rawProperties: any;\n\n            this.items.push({\n                selected: false,\n                price: setting.price,\n                properties: (()=> {\n                    if (setting.properties && Array.isArray(setting.properties)) {\n                        rawProperties = setting.properties;\n                        return setting.properties;\n                    }\n                    rawProperties = NoticeUtils.getProperties(setting);\n                    return NoticeUtils.getPropertyValues(this.noticeValues, rawProperties);\n                })(),\n                image: setting.image,\n                programName: setting.programName,\n                program: setting.program,\n                manufacturer: setting.manufacturer,\n                id: setting.cloudId || setting.id,\n                rawProperties: rawProperties\n            });\n        });\n        this.requestUpdate();\n    }\n\n    public requestResetOfCurrentItem() {\n        if (this.onlyCurrent) {\n            NoticeUtils.currentNoticeItem = undefined;\n            this.onlyCurrent = false;\n        }\n    }\n\n    private renderItems() {\n        if (this.items.length > 0) {\n            const noticeItem = this.items[this.itemIndex];\n            const element = document.createElement(\"div\");\n            element.classList.add(\"item\");\n\n\n\n            this.noticeValues.forEach((value) => {\n                const titleDiv = Object.assign(document.createElement(\"div\"), { className: \"title-text\" });\n                const textDiv = Object.assign(document.createElement(\"div\"), { className: \"value-text\" });\n\n                if (noticeItem.rawProperties) {\n                    const propertyKeys = Object.keys(noticeItem.rawProperties);\n                    value.properties.forEach((v) => {\n                        const propertyRegex = new RegExp(\"\" + v);\n                        const propertiesKey = propertyKeys.find((key) => {\n                            return propertyRegex.test(key);\n                        });\n                        if (propertiesKey && noticeItem.rawProperties) {\n                            textDiv.append(Object.assign(document.createElement(\"span\"), { textContent: `${noticeItem.rawProperties[propertiesKey].title}: ${noticeItem.rawProperties[propertiesKey].name}` }));\n                        }\n                    });\n                }\n\n                const contentDiv = Object.assign(document.createElement(\"div\"), { className: \"content-div\" });\n                contentDiv.append(titleDiv, textDiv);\n                element.append(contentDiv);\n                titleDiv.setAttribute(\"i18n\", value.title);\n            });\n            return html`${element}`;\n        }\n        return html``;\n    }\n\n    private renderAccordionItems() {\n        if (!(this.noticeValues?.length > 0)) return \"\";\n        const noticeAccordionItemList: Array<NoticeAccordionItemComponent> = [];\n        this.items.forEach((noticeItem) => {\n            const noticeAccordionItem = new NoticeAccordionItemComponent();\n            noticeAccordionItem.classList.add(\"view-only\");\n            noticeAccordionItem.item.price = noticeItem.price;\n            noticeAccordionItem.item.properties = noticeItem.properties;\n            noticeAccordionItem.item.image = noticeItem.image;\n            noticeAccordionItem.item.programName = noticeItem.programName;\n            noticeAccordionItem.item.program = noticeItem.program;\n            noticeAccordionItem.item.manufacturer = noticeItem.manufacturer;\n            noticeAccordionItem.item.id = noticeItem.id;\n            noticeAccordionItemList.push(noticeAccordionItem);\n            this.noticeValues.forEach((value) => {\n                const titleDiv = Object.assign(document.createElement(\"div\"), { className: \"title-text\" });\n                const textDiv = Object.assign(document.createElement(\"div\"), { className: \"value-text\" });\n\n                if (noticeItem.rawProperties) {\n                    const propertyKeys = Object.keys(noticeItem.rawProperties);\n                    value.properties.forEach((v) => {\n                        const propertyRegex = new RegExp(\"\" + v);\n                        const propertiesKey = propertyKeys.find((key) => {\n                            return propertyRegex.test(key);\n                        });\n                        if (propertiesKey && noticeItem.rawProperties) {\n                            textDiv.append(Object.assign(document.createElement(\"span\"), { textContent: `${noticeItem.rawProperties[propertiesKey].title}: ${noticeItem.rawProperties[propertiesKey].name}` }));\n                        }\n                    });\n                }\n\n                const contentDiv = Object.assign(document.createElement(\"div\"), { className: \"content-div\" });\n                contentDiv.append(titleDiv, textDiv);\n                noticeAccordionItem.append(contentDiv);\n                titleDiv.setAttribute(\"i18n\", value.title);\n            });\n        });\n        if (this.items.length > 0) {\n            return html`${\n                noticeAccordionItemList\n            }\n            `;\n        }\n        return html``;\n    }\n\n    private lastNotice() {\n        this.itemIndex--;\n        if (this.itemIndex < 0) this.itemIndex = 0;\n        this.requestUpdate();\n    }\n\n    private nextNotice() {\n        this.itemIndex++;\n        if (this.itemIndex >= this.items.length) this.itemIndex = this.items.length - 1;\n        this.requestUpdate();\n    }\n\n    protected render(content: TemplateResult = html``) {\n        const lastNoticeClass = { \"hidden\": this.itemIndex === 0 };\n        const nextNoticeClass = { \"hidden\": this.itemIndex === this.items.length - 1 };\n        return html`\n            <div class=\"carousel-content only-desktop\">\n                <div class=\"last-notice\" @click=\"${this.lastNotice}\" part=\"last-notice-image\">\n                    <svg class=\"${classMap(lastNoticeClass)}\" width=\"20\" height=\"65\" viewBox=\"0 0 20 65\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                        <path d=\"M19.2378 1L1.00009 32.5L19.2378 64\" stroke=\"#777777\" stroke-width=\"0.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n                    </svg>\n                </div>\n                <div class=\"notice-view\">\n                    <div class=\"notice-image\">\n                        <img src=\"${this.items[this.itemIndex]?.image}\"/>\n                    </div>\n                    <div class=\"notice-content\">\n                        <div class=\"notice-title\">\n                            ${this.items[this.itemIndex]?.programName}\n                        </div>\n                        <div class=\"notice-properties\">\n                            ${this.renderItems()}\n                            ${this.hidePrice ? html`` : html`\n                                <div class=\"item\">\n                                    <div class=\"content-div\">\n                                        <div class=\"title-text\">Preis:</div>\n                                        <div class=\"value-text\">${this.items[this.itemIndex]?.price} (UVP)</div>\n                                    </div>\n                                </div>\n                            `}\n                        </div>\n                    </div>\n                </div>\n                <div class=\"next-notice\" @click=\"${this.nextNotice}\"  part=\"next-notice-image\">\n                    <svg class=\"${classMap(nextNoticeClass)}\" width=\"20\" height=\"65\" viewBox=\"0 0 20 65\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                        <path d=\"M1 64L19.2377 32.5L0.999997 1\" stroke=\"#777777\" stroke-width=\"0.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n                    </svg>\n                </div>\n            </div>\n            <div class=\"accordion-content only-mobile\">\n                <fv-accordion>${this.renderAccordionItems()}</fv-accordion>\n            </div>\n        `;\n    }\n}\n","class LocalStorageServiceClass {\n    private readonly _prefix: string = \"LSS_\";\n\n    update(key_: string, data_: {[key: string]: unknown} | Array<unknown>) {\n        if (key_.length > 0) {\n            const jsonString = JSON.stringify(data_);\n            const base64String = btoa(jsonString);\n            localStorage.setItem(this._prefix + key_, base64String);\n        }\n        return data_;\n    }\n\n    get(key_: string) {\n        if (key_.length > 0) {\n            const base64String = localStorage.getItem(this._prefix + key_);\n            if (base64String) {\n                const jsonString = atob(base64String);\n                try {\n                    return JSON.parse(jsonString);\n                }\n                catch {\n                    return null;\n                }\n            }\n        }\n    }\n\n    remove(key_: string) {\n        localStorage.removeItem(this._prefix + key_);\n    }\n}\nexport const LocalStorageService = new LocalStorageServiceClass();\n","import \"../../standard/checkbox/checkbox.component\";\nimport { INoticeItem } from \"../interface\";\nimport { CheckboxComponent } from \"../../standard/checkbox\";\nimport { StyleHelper } from \"../../../utils/style.helper\";\nexport class NoticeTableRowComponent extends HTMLTableRowElement {\n    public item: INoticeItem;\n    public hidePrice = false;\n    private selected_ = false;\n    public set selected (val: boolean) {\n        this.selected_ = val;\n        if (this.selectionCheckbox) this.selectionCheckbox.checked = this.selected_;\n    }\n\n    public get selected (): boolean {\n        return this.selected_;\n    }\n\n    private selectionCheckbox?: CheckboxComponent | null;\n\n    constructor() {\n        super();\n        this.item = { properties: [], id: \"\", selected: false, program: \"\", manufacturer: \"\" };\n    }\n\n    connectedCallback() {\n        this.render();\n        this.selectionCheckbox = this.querySelector(\".checkbox\");\n        if (this.selectionCheckbox) {\n            this.selectionCheckbox.checked = this.selected_;\n            this.selectionCheckbox.onChange = (e, component) => {\n                this.selected_ = component.checked;\n                this.dispatchEvent(new CustomEvent(\"onselectionchange\", {}));\n            };\n        }\n        this.querySelector(\".open-planning\")?.children[0]?.addEventListener(\"click\", ()=>{\n            this.openPlanning();\n        });\n    }\n\n    private renderItems() {\n        return `${\n            this.item.properties.map((item) => {\n                const element = document.createElement(\"td\");\n                element.classList.add(\"item\");\n                if (item) {\n                    for (const value of item.propertyValues) {\n                        if (value) {\n                            const propertyValue = element.appendChild(Object.assign(document.createElement(\"div\"), {\n                                textContent: `${value.title}: ${value.name}`\n                            }));\n                            propertyValue.classList.add(\"item-value\");\n                        }\n                    }\n                }\n\n                return element.outerHTML;\n            }).join(\"\")\n        }\n        `;\n    }\n\n    private openPlanning() {\n        this.dispatchEvent(new CustomEvent(\"open-planning\", {\n            detail: this.item,\n            bubbles: true\n        }));\n    }\n\n    private render() {\n        this.innerHTML = `\n            <td>\n                <fv-checkbox class=\"checkbox\" checked=\"${this.selected_}\"></fv-checkbox>\n            </td>\n            <td class=\"model\">\n                <div class=\"model-image\">\n                    <img src=\"${this.item.image}\">\n                </div>\n                <div class=\"model-text\">${this.item.programName}</div>\n            </td>\n            ${ this.renderItems() }\n             ${this.hidePrice ? `` : `\n                <td class=\"price\">${this.item.price}</td>\n            `}\n            <td class=\"open-planning\">\n                ${StyleHelper.getVar(this.parentElement as HTMLElement, \"--open-planning-image\") ? \n        `<img src=\"${StyleHelper.getVar(this.parentElement as HTMLElement, \"--open-planning-image\")}\">` :\n        \"<i class=\\\"icon fv-icon-folder\\\"></i>\" }\n            </td>\n        `;\n    }\n}\ncustomElements.define( \"table-row\", NoticeTableRowComponent, { extends: \"tr\" } );\n","import {ConfigurationService, RequestService} from \"@dh-software/webui-api\";\n\nclass NoticeStorageServiceClass {\n    private readonly _prefix: string = \"SSS_\";\n    private _noticeKey = \"\";\n\n    private async createNoticeKey() {\n        if (this._noticeKey) return;\n        const queryParameters: string = (await ConfigurationService.Configuration)[\"query_parameters\"] as string;\n        if (queryParameters) {\n            const url = new URL(window.location.href);\n            queryParameters.split(\",\").forEach((key) => {\n                if (url.searchParams.has(key)) {\n                    if (this._noticeKey.length > 0) {\n                        this._noticeKey += \"_\";\n                    }\n                    this._noticeKey += url.searchParams.get(key);\n                }\n            });\n        }\n    }\n\n    has() {\n        return !!this._noticeKey;\n    }\n\n    async set(data_: { [key: string]: unknown }) {\n        await this.createNoticeKey();\n        if (this._noticeKey.length > 0) {\n            const jsonString = JSON.stringify(data_);\n            const url = new URL(window.location.href);\n            const token = url.searchParams.get(\"token\");\n            if (!token) return null;\n\n            const noticePosition = {\n                noticeKey: this._noticeKey,\n                token: token,\n                noticePositionData: btoa(jsonString),\n                cloudId: data_.cloudId as string\n            };\n            await RequestService.post(RequestService.setQuery(\"/notice-list\") + \"&noticeKey=\" + this._noticeKey, noticePosition);\n        }\n        return data_;\n    }\n\n    async get(): Promise<Array<{ [key: string]: never } | never> | null> {\n        await this.createNoticeKey();\n        if (this._noticeKey.length > 0) {\n            const response: Array<never> = await RequestService.fetchJSON(RequestService.setQuery(\"/notice-list\") + \"&noticeKey=\" + this._noticeKey) as Array<never>;\n            const noticePositions: Array<{ [key: string]: never } | never> = [];\n\n            if (response) {\n                response.forEach((noticePosition: { [key: string]: never }) => {\n                    if (noticePosition && noticePosition.noticePositionData) {\n                        const jsonString = atob(noticePosition.noticePositionData);\n                        try {\n                            const data: { [key: string]: never } = JSON.parse(jsonString) as never;\n                            data.id = noticePosition._id;\n                            noticePositions.push(data);\n                        } catch {\n                            //\n                        }\n                    }\n                });\n            }\n\n            if (noticePositions.length > 0) {\n                return noticePositions;\n            } else {\n                return null;\n            }\n        }\n        return null;\n    }\n\n    async remove(id_: string) {\n        await this.createNoticeKey();\n        await RequestService.fetch(RequestService.setQuery(\"/notice-list/\" + id_) + \"&noticeKey=\" + this._noticeKey, {\n            method: \"DELETE\"\n        });\n    }\n}\n\nexport const NoticeStorageService = new NoticeStorageServiceClass();\n","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup, PropertyValues } from \"lit\";\nimport style from \"./notice-list.component.sass?inline\";\nimport { BaseMaskElement } from \"../../standard/base/mask.component\";\nimport { property, customElement, query, queryAll, state } from \"lit/decorators.js\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\nimport { LocalStorageService } from \"../../../utils/local-storage.service\";\nimport { CheckboxComponent } from \"../../standard/checkbox\";\nimport { StyleHelper } from \"../../../utils/style.helper\";\nimport { LoadingModalComponent } from \"../../standard/loading\";\nimport { AccordionComponent } from \"../../standard/accordion\";\nimport { NoticeAccordionItemComponent } from \"./notice-accordion-item.component\";\nimport { INoticeItem } from \"../interface\";\nimport { NoticeUtils } from \"../notice-utils\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { NoticeTableRowComponent } from \"./notice-table-row.component\";\nimport { NoticeStorageService } from \"../../../utils/notice-storage.service\";\nimport { CloudIdService } from \"../../../utils/cloud-id.service\";\nimport { ManuProgService } from \"../../../utils/manu-prog.service\";\nimport {CommunicationMessageService, WebViewerService} from \"@dh-software/webui-api\";\nimport { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\nimport { ComponentStateHandlerMap } from \"../../../models/event-handler/component-state-event\";\n\n\ndeclare global {\n    interface ComponentStates {\n        \"notice-list-mask:save-current-scene-settings\": any;\n    }\n}\n\n\n@customElement(\"fv-notice-list-mask\")\nexport class NoticeModalComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private noticeDomItems: Array<{ listItem: NoticeTableRowComponent, accordionItem: NoticeAccordionItemComponent }> = [];\n\n    @state()\n    public mask = \"notice-list-modal\";\n\n    @property()\n    public noticeValues: Array<{ title: string, properties: Array<string> }> = [];\n\n    @property({ type: Boolean, attribute: \"hide-price\", reflect: true })\n    private hidePrice = false;\n\n    @queryAll(\".select-all\")\n    private selectAllCheckboxes: Array<CheckboxComponent> | undefined;\n\n    @query(\".mobile-accordion\")\n    private accordionComponent: AccordionComponent | undefined;\n\n    @query(\"tbody\")\n    private tableBody?: HTMLTableSectionElement;\n\n    @query(\"#price-cell\")\n    private priceCell?: HTMLTableCellElement;\n\n    private allSelected = false;\n    private noticeCount = 0;\n    private maxNoticeCount = 10;\n\n    stateHandlers: ComponentStateHandlerMap = {\n        \"notice-list-mask:save-current-scene-settings\": async (e: EventHandlerEventData) => {\n            let loadingModal: LoadingModalComponent | null = null;\n            this.Modal?.setLoading(true);\n            if ((await CommunicationMessageService.getPlannedArticles()).length > 0) {\n                const urlParams = new URL(window.location.href);\n                const configurationID = urlParams.searchParams.get(\"a\");\n                let storageKey = \"currentSceneSettings_\" + configurationID;\n                if (e.onlyCurrent) {\n                    storageKey = \"currentSceneSettings\";\n                    loadingModal = document.querySelector(\"fv-loading-modal\");\n                    if (loadingModal) {\n                        loadingModal.show(false, true);\n                    }\n                }\n                const noticeData = await NoticeStorageService.get();\n\n\n                const currentSceneSettings: Array<{\n                    cloudId: string,\n                    properties: unknown\n                }> = NoticeStorageService.has() ? noticeData || [] : LocalStorageService.get(storageKey) || [];\n\n                await WebViewerService.IsAppReady;\n                const properties = await CommunicationMessageService.getCurrentProgProperties({\n                    manufacturer: window.g_article.manu,\n                    useRelevant: true\n                });\n                const cloudID = await CloudIdService.createCloudId();\n                if (cloudID) {\n                    const mimeType = \"image/png\";\n                    const imageData = await CommunicationMessageService.takeSnap(300, 300, mimeType, 0.9, true);\n                    const price = await CommunicationMessageService.getAppConnectionData() as any;\n                    const plannedArticle = await CommunicationMessageService.getPlannedArticles();\n                    const sceneSettings = {\n                        price: price.totalPrice,\n                        image: `data:${mimeType};base64,${imageData}`,\n                        cloudId: cloudID,\n                        manufacturer: price.Articles[0]?.DH_Manu,\n                        program: price.Articles[0]?.DH_Prog,\n                        programName: plannedArticle[0]?.progName,\n                        manufacturerName: price.Articles[0].Manu,\n                        properties: properties\n                    };\n                    NoticeUtils.currentNoticeItem = Object.assign(sceneSettings);\n                    currentSceneSettings.push(sceneSettings);\n                    if (!e.onlyCurrent) {\n                        if (NoticeStorageService.has()) {\n                            await NoticeStorageService.set(sceneSettings);\n                        }\n                        this.createItem(sceneSettings);\n                    }\n                }\n\n                if (!NoticeStorageService.has()) {\n                    for (let i = currentSceneSettings.length - 1; i >= 0; i--) {\n                        if (!currentSceneSettings[i].cloudId) {\n                            currentSceneSettings.splice(i, 1);\n                        }\n                    }\n                    if (currentSceneSettings.length > this.maxNoticeCount) {\n                        currentSceneSettings.splice(0, currentSceneSettings.length - this.maxNoticeCount);\n                    }\n                    LocalStorageService.update(storageKey, currentSceneSettings);\n                }\n                this.noticeCount = currentSceneSettings.length;\n                if (loadingModal) {\n                    loadingModal.hide(false, true);\n                }\n                this.requestUpdate(\"noticeCount\");\n            }\n            this.shadowRoot?.dispatchEvent(new Event(\"contentChanged\"));\n            this.Modal?.setLoading();\n        }\n    };\n\n    constructor() {\n        super();\n        LocalStorageService.remove(\"currentSceneSettings\");\n    }\n\n    protected async firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        this.Modal?.setLoading(true);\n        this.shadowRoot?.addEventListener(\"headerChanged\", (ev) => {\n            const headers = this.querySelectorAll(\"[slot='header']\");\n            const oldHeaders = this.shadowRoot?.querySelectorAll(\"[slot='header']\");\n            oldHeaders?.forEach((element)=>{\n                element.remove();\n            });\n            if (this.priceCell) {\n                headers.forEach((element) => {\n                    this.priceCell!.parentElement?.insertBefore(element, this.priceCell!);\n                });\n            }\n\n        });\n        this.shadowRoot?.addEventListener(\"contentChanged\", (ev) => {\n            const contents = this.querySelectorAll(\"[slot='content']\");\n            if (this.priceCell) {\n                contents.forEach((element) => {\n                    this.tableBody?.append(element);\n                });\n            }\n\n        });\n        if (this.selectAllCheckboxes) {\n            this.selectAllCheckboxes.forEach((selectAllCheckbox) => {\n                selectAllCheckbox.onChange = this.selectAll;\n            });\n        }\n\n        const urlParams = new URL(window.location.href);\n        const configurationID = urlParams.searchParams.get(\"a\");\n        const noticeData = await NoticeStorageService.get();\n        const currentSceneSettings: Array<{ cloudId: string, properties: unknown }> = NoticeStorageService.has() ? noticeData || [] : LocalStorageService.get(\"currentSceneSettings_\" + configurationID) || [];\n        this.noticeDomItems = [];\n        NoticeUtils.selectedNoticeItems = this.noticeDomItems;\n        currentSceneSettings.slice().reverse().forEach((currentProperties) => {\n            this.createItem(currentProperties);\n        });\n        this.shadowRoot?.dispatchEvent(new Event(\"contentChanged\"));\n        this.noticeCount = currentSceneSettings.length;\n        this.requestUpdate(\"noticeCount\");\n        this.Modal?.setLoading(false);\n    }\n\n    private updateSelections(isAccordion: boolean) {\n        for (let i = 0; i < this.noticeDomItems.length; i++) {\n            if (isAccordion) {\n                this.noticeDomItems[i].listItem.selected = this.noticeDomItems[i].accordionItem.selected;\n            }\n            else {\n                this.noticeDomItems[i].accordionItem.selected = this.noticeDomItems[i].listItem.selected;\n            }\n        }\n    }\n\n    private createAccordionItem(currentProperties: { [key: string]: never }, properties: {[p: string]: {name: string, title: string}}) {\n        const noticeAccordionItem = new NoticeAccordionItemComponent();\n        noticeAccordionItem.selected = this.allSelected;\n        noticeAccordionItem.item.selected = this.allSelected;\n        noticeAccordionItem.item.price = currentProperties.price;\n\n\n        noticeAccordionItem.item.properties = NoticeUtils.getPropertyValues(this.noticeValues, properties);\n        noticeAccordionItem.item.image = currentProperties.image;\n        noticeAccordionItem.item.programName = currentProperties.programName;\n        noticeAccordionItem.item.program = currentProperties.program;\n        noticeAccordionItem.item.manufacturer = currentProperties.manufacturer;\n        noticeAccordionItem.item.id = currentProperties.cloudId;\n        noticeAccordionItem.item.rawProperties = Object.assign(properties);\n        noticeAccordionItem.addEventListener(\"open-planning\", (e: CustomEventInit) => {\n            this.openPlanning(e.detail);\n        });\n        noticeAccordionItem.addEventListener(\"onselectionchange\", (e) => {\n            this.allSelected = this.noticeDomItems.every((item) => {\n                return item.accordionItem.selected;\n            });\n            this.updateSelections(true);\n            this.requestUpdate();\n        });\n\n        const propertiesKeys = Object.keys(properties);\n        this.noticeValues.forEach((value) => {\n            const titleDiv = Object.assign(document.createElement(\"div\"), { className: \"title-text\" });\n            const textDiv = Object.assign(document.createElement(\"div\"), { className: \"value-text\" });\n            value.properties.forEach((v) => {\n                const propertyRegex = new RegExp(\"\" + v);\n                const propertiesKey = propertiesKeys.find((key) => {\n                    return propertyRegex.test(key);\n                });\n                if (propertiesKey) {\n                    textDiv.append(Object.assign(document.createElement(\"span\"), { textContent: `${properties[propertiesKey].title}: ${properties[propertiesKey].name}` }));\n                }\n            });\n            const contentDiv = Object.assign(document.createElement(\"div\"), { className: \"content-div\" });\n            contentDiv.append(titleDiv, textDiv);\n            noticeAccordionItem.append(contentDiv);\n            titleDiv.setAttribute(\"i18n\", value.title);\n        });\n        this.accordionComponent?.append(noticeAccordionItem);\n        return noticeAccordionItem;\n    }\n\n    private createListItem(currentProperties: { [key: string]: never }, properties: {[p: string]: {name:string, title: string}}) {\n        const noticeItem = new NoticeTableRowComponent();\n        noticeItem.selected = this.allSelected;\n        noticeItem.item.price = currentProperties.price;\n        noticeItem.hidePrice = this.hidePrice;\n\n        noticeItem.item.properties = NoticeUtils.getPropertyValues(this.noticeValues, properties);\n        noticeItem.item.image = currentProperties.image;\n        noticeItem.item.programName = currentProperties.programName;\n        noticeItem.item.program = currentProperties.program;\n        noticeItem.item.manufacturer = currentProperties.manufacturer;\n        noticeItem.item.id = currentProperties.cloudId;\n        noticeItem.slot = \"content\";\n        noticeItem.addEventListener(\"open-planning\", (e: CustomEventInit) => {\n            this.openPlanning(e.detail);\n        });\n        noticeItem.addEventListener(\"onselectionchange\", (e) => {\n            this.allSelected = this.noticeDomItems.every((item) => {\n                return item.listItem.selected;\n            });\n            this.updateSelections(false);\n            this.requestUpdate();\n        });\n        this.append(noticeItem);\n        return noticeItem;\n    }\n\n    private createItem(currentProperties: any) {\n        const properties = NoticeUtils.getProperties(currentProperties);\n        const item: { accordionItem: NoticeAccordionItemComponent, listItem: NoticeTableRowComponent } = {\n            accordionItem: this.createAccordionItem(currentProperties, properties),\n            listItem: this.createListItem(currentProperties, properties)\n        };\n\n        this.noticeDomItems.push(item);\n    }\n\n    private async openPlanning(item: INoticeItem) {\n        const loadingModal: LoadingModalComponent = document.querySelector(\"fv-loading-modal\") as LoadingModalComponent;\n        loadingModal?.show();\n        this.hide(true);\n        await ManuProgService.setManuProg(item.manufacturer, item.manufacturer, item.program);\n        await CommunicationMessageService.openCloudId(item.id);\n        loadingModal?.hide(false, true);\n    }\n\n    private selectAll = (e: Event, component: CheckboxComponent) => {\n        this.allSelected = component.checked;\n        this.noticeDomItems.forEach((item: any ) => {\n            item.listItem.selected = this.allSelected;\n            item.accordionItem.selected = this.allSelected;\n        });\n        this.requestUpdate();\n    }\n\n    public async show() {\n        this.noticeValues.forEach((value) => {\n            const theader = document.createElement(\"th\");\n            theader.slot = \"header\";\n            this.append(theader);\n            theader.setAttribute(\"i18n\", value.title);\n        });\n        this.shadowRoot?.dispatchEvent(new Event(\"headerChanged\"));\n        super.show();\n    }\n\n    private async removeNotice() {\n        const urlParams = new URL(window.location.href);\n        const configurationID = urlParams.searchParams.get(\"a\");\n        const noticeData = await NoticeStorageService.get();\n        const currentSceneSettings: Array<{ cloudId: string, id: string, properties: unknown }> = NoticeStorageService.has() ? noticeData || [] : LocalStorageService.get(\"currentSceneSettings_\" + configurationID) || [];\n        for (let i = this.noticeDomItems.length - 1; i >= 0; i--) {\n            const item: {accordionItem: NoticeAccordionItemComponent, listItem: NoticeTableRowComponent} = this.noticeDomItems[i];\n            if (item.listItem.selected) {\n                const index = currentSceneSettings.findIndex((sceneSetting) => {\n                    return sceneSetting.cloudId === item.listItem.item.id;\n                });\n\n                if (index !== -1) {\n                    if (NoticeStorageService.has()) {\n                        await NoticeStorageService.remove(currentSceneSettings[index].id);\n                    }\n                    currentSceneSettings.splice(index, 1);\n                }\n                item.listItem.parentElement?.removeChild(item.listItem);\n                this.accordionComponent?.removeChild(item.accordionItem);\n                this.noticeDomItems.splice(i, 1);\n            }\n        }\n\n        this.noticeCount = currentSceneSettings.length;\n        if (!NoticeStorageService.has()) {\n            LocalStorageService.update(\"currentSceneSettings_\" + configurationID, currentSceneSettings);\n        }\n        this.requestUpdate(\"noticeCount\");\n    }\n\n    protected build(content: TemplateResult = html``) {\n        const noticeEmpty = { \"notice-empty\": true, hidden: this.noticeCount > 0 };\n        const noticeAccordion = { \"mobile-accordion\": true, hidden: this.noticeCount === 0 };\n        return html`\n<!--            <fv-loading class=\"loading\"></fv-loading>-->\n            <div class=\"notice-header\">\n                <span>\n                    <span i18n=\"modal.notice.head-text\"></span>\n                    ${ NoticeStorageService.has() ? html`(<span class=\"notice-count\">${this.noticeCount}</span>)` : html`\n(<span class=\"notice-count\">${this.noticeCount}</span>/<span\n                        class=\"max-notice\">${this.maxNoticeCount}</span>)\n`}\n                </span>\n            </div>\n            <div class=\"notice-list\">\n                <fv-checkbox class=\"select-all host-mobile\" i18n=\"modal.notice.select_all\" .checked=\"${this.allSelected}\"></fv-checkbox>\n                <fv-accordion style=\"--open-planning-image: ${StyleHelper.getVar(this, \"--open-planning-image\") || \"\"}\" class=\"${classMap(noticeAccordion)}\"></fv-accordion>\n                <table class=\"host-desktop\">\n                    <thead>\n                        <tr>\n                            <th>\n                                <fv-checkbox class=\"select-all\" .checked=\"${this.allSelected}\"></fv-checkbox>\n                            </th>\n                            <th i18n=\"modal.notice.header.model\" id=\"model-cell\"></th>\n                            <th i18n=\"modal.notice.header.price\" id=\"price-cell\"></th>\n                            <th></th>\n                        </tr>\n                    </thead>\n                    <tbody>\n\n                    </tbody>\n                </table>\n                <div class=\"${classMap(noticeEmpty)}\">\n                    <span i18n=\"modal.notice.text.empty\"></span>\n                </div>\n            </div>\n            <div class=\"notice-footer\">\n                <div class=\"text-line\">\n                    <div class=\"left-text\">${StyleHelper.getVar(this, \"--open-planning-image\") ? html`<img src=\"${StyleHelper.getVar(this, \"--open-planning-image\")}\">` : html`<i class=\"icon fv-icon-folder\"></i>`}<span i18n=\"modal.notice.text.left\"></span></div>\n                    <div class=\"right-text host-desktop\" i18n=\"modal.notice.text.right\"></div>\n                    <div class=\"right-text host-mobile\" i18n=\"modal.notice.header.price\"></div>\n                </div>\n                <fv-separator class=\"horizontal\"></fv-separator>\n                <div class=\"bottom-line\">\n                    <fv-checkbox class=\"select-all host-desktop\" i18n=\"modal.notice.select_all\" .checked=\"${this.allSelected}\"></fv-checkbox>\n                    <div class=\"notice-buttons\">\n                        <fv-button part=\"remove_button\" @click=\"${this.removeNotice}\" i18n=\"modal.notice.remove_button\" .disabled=\"${this.noticeCount === 0}\"></fv-button>\n                        <fv-button part=\"submit_button\" i18n=\"modal.notice.submit\" .disabled=\"${this.noticeCount === 0}\"></fv-button>\n                    </div>\n                </div>\n            </div>\n        `;\n    }\n}\n","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup, PropertyValues } from \"lit\";\nimport style from \"./notice-list-item.component.sass?inline\";\nimport { property, customElement, query } from \"lit/decorators.js\";\nimport \"../../standard/checkbox/checkbox.component\";\nimport { INoticeItem } from \"../interface\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { CheckboxComponent } from \"../../standard/checkbox\";\nimport { StyleHelper } from \"../../../utils/style.helper\";\n\n@customElement(\"fv-notice-list-item\")\nexport class NoticeListItemComponent extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    public item: INoticeItem;\n\n    @property({ type: Boolean, reflect: true })\n    public selected = false;\n\n    @query(\".checkbox\")\n    private selectionCheckbox: CheckboxComponent | undefined;\n\n    constructor() {\n        super();\n        this.item = { properties: [], id: \"\", selected: false, program: \"\", manufacturer: \"\" };\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        if (this.selectionCheckbox)\n            this.selectionCheckbox.onChange = (e, component) => {\n                this.selected = component.checked;\n                this.requestUpdate();\n                this.updateComplete.then(()=>{\n                    this.dispatchEvent(new CustomEvent(\"onselectionchange\", {}));\n                });\n            };\n    }\n\n    private renderItems() {\n        return html`${\n            this.item.properties.map((item) => {\n                const element = document.createElement(\"div\");\n                element.classList.add(\"item\");\n                if (item) {\n                    for (const value of item.propertyValues) {\n                        if (value) {\n                            const propertyValue = element.appendChild(Object.assign(document.createElement(\"div\"), { \n                                textContent: `${value.title}: ${value.name}`\n                            }));\n                            propertyValue.classList.add(\"item-value\");\n                        }\n                    }\n                }\n\n                return element;\n            })\n        }\n        `;\n    }\n\n    private openPlanning() {\n        this.dispatchEvent(new CustomEvent(\"open-planning\", {\n            detail: this.item,\n            bubbles: true\n        }));\n    }\n\n\n    protected render(content: TemplateResult = html``) {\n        return html`\n            <div class=\"item-content\">\n                <div class=\"item-checkbox\">\n                <fv-checkbox class=\"checkbox\" .checked=\"${this.selected}\"></fv-checkbox>\n                </div>\n                <div class=\"model\">\n                <div class=\"model-image\">\n                    <img src=\"${this.item.image}\">\n                </div>\n                <div class=\"model-text\">${this.item.programName}</div>\n                </div>\n                <div class=\"items\">${ this.renderItems() }</div>\n                <div class=\"price\">${this.item.price}</div>\n                <div class=\"open-planning\">\n                ${StyleHelper.getVar(this.parentElement as HTMLElement, \"--open-planning-image\") ? html`<img src=\"${StyleHelper.getVar(this.parentElement as HTMLElement, \"--open-planning-image\")}\" @click=${this.openPlanning}>` : html`<i class=\"icon fv-icon-folder\" @click=${this.openPlanning}></i>` }\n                </div>\n            </div>\n        `;\n    }\n}\n","import { html, css, unsafeCSS, TemplateResult, CSSResultGroup } from \"lit\";\nimport style from \"./request-modal.component.sass?inline\";\nimport { BaseMaskElement } from \"../../standard/base/mask.component\";\nimport { property, customElement, query, queryAll, state } from \"lit/decorators.js\";\nimport \"../../notice/notice-carousel.components\";\nimport { NoticeCarouselComponent } from \"../../notice\";\nimport { CheckboxComponent } from \"../../standard/checkbox\";\nimport { ButtonComponent } from \"../../standard/button\";\nimport { InputComponent } from \"../../standard/input\";\nimport { PropertyValues } from \"lit/development\";\nimport {MailerService, RequestService} from \"@dh-software/webui-api\";\nimport {ConstructionService} from \"@dh-software/webui-configuration-parser\";\n\n@customElement(\"fv-request-modal-mask\")\nexport class RequestModalComponent extends BaseMaskElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @query(\"fv-notice-carousel\")\n    private noticeCarousel: NoticeCarouselComponent | undefined;\n\n    @query(\"#policyCheckbox\")\n    private policyCheckbox: CheckboxComponent | undefined;\n\n    @queryAll(\".submitButton\")\n    private submitButtons: Array<ButtonComponent> | undefined;\n\n\n    @query(\"#nameInput\")\n    private nameInput: InputComponent | undefined;\n    @query(\"#surnameInput\")\n    private surnameInput: InputComponent | undefined\n    @query(\"#streetInput\")\n    private streetInput: InputComponent | undefined\n    @query(\"#townInput\")\n    private townInput: InputComponent | undefined\n    @query(\"#postCodeInput\")\n    private postCodeInput: InputComponent | undefined\n    @query(\"#emailInput\")\n    private emailInput: InputComponent | undefined\n\n    @property({ type: String })\n    public privacyPolicy = \"#\";\n    @property({ type: String })\n    private name = \"\";\n    @property({ type: String })\n    private surname = \"\";\n    @property({ type: String })\n    private street = \"\";\n    @property({ type: String })\n    private town = \"\";\n    @property({ type: String })\n    private postCode = \"\";\n    @property({ type: String })\n    private email = \"\";\n\n    @property({ type: Boolean })\n    private policySelected = false;\n\n    @property({ type: Boolean, attribute: \"prevent-notice-carousel\", reflect: true })\n    private preventNoticeCarousel = false;\n\n    @property({ type: Boolean, attribute: \"hide-notice-carousel-price\", reflect: true })\n    private hideNoticeCarouselPrice = false;\n\n    @property()\n    public noticeValues: Array<{ title: string, properties: Array<string> }> = [];\n\n    @state()\n    public mask = \"customer-request-modal\";\n\n    @property()\n    public templateName = \"\";\n\n    constructor() {\n        super();\n    }\n\n    show() {\n        super.show();\n        if (this.noticeCarousel && this.noticeValues && this.noticeValues.length > 0) {\n            this.noticeCarousel.noticeValues = this.noticeValues;\n            this.noticeCarousel.updateItems(this.maskData.onlyCurrent as boolean);\n        }\n    }\n\n    hide(closeModal = false) {\n        super.hide(closeModal);\n        this.noticeCarousel?.requestResetOfCurrentItem();\n    }\n\n    private async onSubmit() {\n        await RequestService.Initialized;\n        const parameters = this.noticeCarousel?.items?.map((item) => {\n            return { id: item.id, image: item.image, price: item.price, programName: item.programName };\n        });\n\n        const customMailService = ConstructionService.CustomMailService || undefined;\n        // const price = this.noticeCarousel?.items[0].price;\n        // const image = this.noticeCarousel?.items[0].image;\n        parameters?.forEach((param) => {\n            const values = [\n                {\n                    key: \"PRICE\", value: param.price\n                },\n                {\n                    key: \"CODE\", value: param.id\n                },\n                {\n                    key: \"name\", value: this.name\n                },\n                {\n                    key: \"surname\", value: this.surname\n                },\n                {\n                    key: \"email\", value: this.email\n                },\n                {\n                    key: \"street\", value: this.street\n                },\n                {\n                    key: \"town\", value: this.town\n                },\n                {\n                    key: \"postCode\", value: this.postCode\n                },\n                {\n                    key: \"PNG_STRING\", value: param.image\n                },\n                {\n                    key: \"category\", value: window.selectedProgram ? window.selectedProgram.category : window.g_article.level1\n                },\n                {\n                    key: \"model\", value: window.selectedProgram ? window.selectedProgram.level : window.g_article.level2 ? window.g_article.level2 : window.g_article.level1\n                }\n            ];\n            MailerService.sendConfiguredMail({\n                name: this.templateName,\n                values: values,\n                cloudIds: [param.id],\n                customMailService: customMailService ? customMailService : undefined,\n                to: this.email,\n                buyingGroup: window.g_configuration.furnplan_article_url_configurator_verband,\n                language: \"\"\n            });\n        });\n\n        this.noticeCarousel?.requestResetOfCurrentItem();\n    }\n\n\n    private onPolicyCheckboxClicked(e: MouseEvent) {\n        e.cancelBubble = true;\n        e.stopPropagation();\n    }\n\n    private valuesChanged(e: unknown) {\n        this.name = this.nameInput?.value || \"\";\n        this.surname = this.surnameInput?.value || \"\";\n        this.email = this.emailInput?.value || \"\";\n        this.street = this.streetInput?.value || \"\";\n        this.town = this.townInput?.value || \"\";\n        this.postCode = this.postCodeInput?.value || \"\";\n        if (this.submitButtons && this.submitButtons.length > 0) {\n            this.submitButtons.forEach((submitButton) => {\n                submitButton.disabled = !this.validate() || !this.policyCheckbox?.checked;\n            });\n        }\n        this.requestUpdate();\n    }\n\n    private validate() {\n        if (this.name && this.surname && this.email && /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(this.email)) {\n            return true;\n        }\n        return false;\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        if (this.policyCheckbox)\n            this.policyCheckbox.onChange = (e, component) => {\n                if (this.submitButtons && this.submitButtons.length > 0) {\n                    this.submitButtons.forEach((submitButton) => {\n                        submitButton.disabled = !this.validate() || !this.policyCheckbox?.checked;\n                    });\n                }\n                this.requestUpdate();\n            };\n    }\n\n    protected build(content: TemplateResult = html``) {\n        return html`\n            <div class=\"content\">\n\n                <div class=\"request-header\">\n                    <span>\n                        <span i18n=\"fv.modal.finish.header\">Ihre Wunschplanung</span>\n                    </span>\n                </div>\n                <div class=\"request-content\">\n                    <div class=\"request-form\">\n                        <label i18n=\"fv.modal.finish.form.title\">Konfiguration und Artikelliste per E-Mail\n                            senden</label>\n                        <div class=\"request-form-content\">\n                            <div class=\"row\">\n                                <div class=\"column\">\n                                    <label>Name*</label>\n                                    <fv-input id=\"nameInput\" @change=\"${this.valuesChanged}\"\n                                              .value=\"${this.name}\"></fv-input>\n                                </div>\n                                <div class=\"column\">\n                                    <label>Vorname*</label>\n                                    <fv-input id=\"surnameInput\" @change=\"${this.valuesChanged}\"\n                                              .value=\"${this.surname}\"></fv-input>\n                                </div>\n                            </div>\n                            <div class=\"row\">\n                                <div class=\"column\">\n                                    <label>E-Mail*</label>\n                                    <fv-input id=\"emailInput\" @change=\"${this.valuesChanged}\"\n                                              .value=\"${this.email}\"></fv-input>\n                                </div>\n                            </div>\n                            <div class=\"row\">\n                                <div class=\"column\">\n                                    <label>Straße</label>\n                                    <fv-input id=\"streetInput\" @change=\"${this.valuesChanged}\"\n                                              .value=\"${this.street}\"></fv-input>\n                                </div>\n                            </div>\n                            <div class=\"row inline\">\n                                <div class=\"column\">\n                                    <label>PLZ</label>\n                                    <fv-input id=\"postCodeInput\" @change=\"${this.valuesChanged}\"\n                                              .value=\"${this.postCode}\"></fv-input>\n                                </div>\n                                <div class=\"column\">\n                                    <label>Ort</label>\n                                    <fv-input id=\"townInput\" @change=\"${this.valuesChanged}\"\n                                              .value=\"${this.town}\"></fv-input>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"bottom-row\">\n                            <fv-checkbox id=\"policyCheckbox\" .checked=\"${this.policySelected}\"\n                                         @click=\"${this.onPolicyCheckboxClicked}\">\n                                <span i18n=\"fv.modal.finish.checkbox.prefix\">Ich habe die </span><a\n                                    i18n=\"fv.modal.finish.checkbox.policy\" href=\"${this.privacyPolicy}\" target=\"_blank\">Datenschutzerklärung</a><span\n                                    i18n=\"fv.modal.finish.checkbox.suffix\"> gelesen und stimme dieser zu.</span>\n                            </fv-checkbox>\n                            <fv-button part=\"submit_button\" class=\"submitButton bordered only-desktop\" disabled\n                                       @click=\"${this.onSubmit}\"><i\n                                    class=\"fv-icon-arrow mirrored\"></i><span i18n=\"fv.modal.finish.button\">Senden</span>\n                            </fv-button>\n                        </div>\n\n                    </div>\n                    ${this.preventNoticeCarousel ? html`` : html`\n                        <div class=\"request-carousel\">\n                            <fv-notice-carousel ?hide-price=\"${this.hideNoticeCarouselPrice}\"></fv-notice-carousel>\n                        </div>\n                    `}\n                </div>\n            </div>\n            <div class=\"only-mobile footer\">\n                <fv-button part=\"submit_button\" class=\"submitButton bordered\" disabled @click=\"${this.onSubmit}\"><i\n                        class=\"fv-icon-arrow mirrored\"></i><span i18n=\"fv.modal.finish.button\">Senden</span>\n                </fv-button>\n            </div>\n        `;\n    }\n}\n","import { css, unsafeCSS, html, TemplateResult } from \"lit\";\nimport style from \"./cloud-id-display.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-cloud-id-display\")\nexport class CloudIdDisplayComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private cloudid = \"\";\n    private loading = true;\n\n    @property({ type: Boolean, reflect: true, attribute: \"custom\" })\n    public custom = false;\n\n    constructor() {\n        super();\n\n        console.warn(\"deprecation warning! Please replace fv-cloud-id-display width fv-cloud-id!!\");\n\n        this.addHideStateUpdatedEventListener((value: boolean)=>{\n            if (value == false) {\n                this.showCloudId();\n            }\n        });\n    }\n\n    private printPromise: Promise<{ cloudId: string }> | undefined = undefined;\n    private async showCloudId() {\n        if (this.printPromise == undefined) {\n            this.showLoader();\n\n            this.printPromise = this.custom ? CommunicationMessageService.printCustomPDF() as Promise<{ cloudId: string }> : CommunicationMessageService.printPDF() as Promise<{ cloudId: string }>;\n\n            const pdf = await this.printPromise;//this.custom ? await CommunicationMessageService.printCustomPDF() as { cloudId: string } : await CommunicationMessageService.printPDF() as { cloudId: string };\n            this.cloudid = pdf.cloudId ? pdf.cloudId : \"\";\n            this.loading = false;\n            this.requestUpdate();\n\n            this.printPromise = undefined;\n        }\n    }\n    private async showLoader() {\n        this.loading = true;\n        this.cloudid = \"\";\n        this.requestUpdate();\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            <div class=\"container\">\n                <div class=\"message\" i18n=\"cloud.id.display.component.text\"></div>\n                ${this.cloudid && this.cloudid.length > 0 ? html`<div class=\"cloud-id\">${this.cloudid}</div>` : html``}\n                ${this.loading ? html`<div class=\"loader-container\"><slot name=\"loader\"></slot></div>` : html``}\n            </div>\n        `;\n    }\n}\n","export enum EasingType {\n    SINE = \"SINE\",\n    QUAD = \"QUAD\",\n    CUBIC = \"CUBIC\",\n    QUART = \"QUART\",\n    QUINT = \"QUINT\",\n    EXPONENTIAL = \"EXPO\",\n    CIRCULAR = \"CIRC\",\n    BACK = \"BACK\",\n    ELASTIC = \"ELASTIC\",\n    BOUNCE = \"BOUNCE\"\n}\nexport enum EasingDirection {\n    OUT = \"OUT\",\n    IN = \"IN\",\n    INOUT = \"INOUT\"\n}\n\nclass AnimationEasingFunctionServiceClass {\n    private apply(direction: EasingDirection, value: number, inMethod: (x: number)=>number, outMethod: (x: number)=>number, inoutMethod: (x: number)=>number): number {\n        switch (direction) {\n        case EasingDirection.IN:\n            return inMethod(value);\n        case EasingDirection.OUT:\n            return outMethod(value);\n        case EasingDirection.INOUT:\n            return inoutMethod(value);\n        default:\n            return 0;\n        }\n    }\n    public Apply(type: EasingType, direction: EasingDirection, value: number): number {\n        switch (type) {\n        case EasingType.BACK:\n            return this.apply(direction, value, this.EaseInBack, this.EaseOutBack, this.EaseInOutBack);\n        case EasingType.BOUNCE:\n            return this.apply(direction, value, this.EaseInBounce, this.EaseOutBounce, this.EaseInOutBounce);\n        case EasingType.CIRCULAR:\n            return this.apply(direction, value, this.EaseInCirc, this.EaseOutCirc, this.EaseInOutCirc);\n        case EasingType.CUBIC:\n            return this.apply(direction, value, this.EaseInCubic, this.EaseOutCubic, this.EaseInOutCubic);\n        case EasingType.ELASTIC:\n            return this.apply(direction, value, this.EaseInElastic, this.EaseOutElastic, this.EaseInOutElastic);\n        case EasingType.EXPONENTIAL:\n            return this.apply(direction, value, this.EaseInExpo, this.EaseOutExpo, this.EaseInOutExpo);\n        case EasingType.QUAD:\n            return this.apply(direction, value, this.EaseInQuad, this.EaseOutQuad, this.EaseInOutQuad);\n        case EasingType.QUART:\n            return this.apply(direction, value, this.EaseInQuart, this.EaseOutQuart, this.EaseInOutQuart);\n        case EasingType.QUINT:\n            return this.apply(direction, value, this.EaseInQuint, this.EaseOutQuint, this.EaseInOutQuint);\n        case EasingType.SINE:\n            return this.apply(direction, value, this.EaseInSine, this.EaseOutSine, this.EaseInOutSine);\n        default:\n            return 0;\n        }\n    }\n\n\n    //   ____ ___ _   _ _____ \n    //  / ___|_ _| \\ | | ____|\n    //  \\___ \\| ||  \\| |  _|  \n    //   ___) | || |\\  | |___ \n    //  |____/___|_| \\_|_____|\n    public EaseInSine(x: number): number {\n        return 1 - Math.cos((x * Math.PI) / 2);\n    }\n    public EaseOutSine(x: number): number {\n        return Math.sin((x * Math.PI) / 2);\n    }\n    public EaseInOutSine(x: number): number {\n        return -(Math.cos(Math.PI * x) - 1) / 2;\n    }\n\n    //    ___  _   _   _    ____  \n    //   / _ \\| | | | / \\  |  _ \\ \n    //  | | | | | | |/ _ \\ | | | |\n    //  | |_| | |_| / ___ \\| |_| |\n    //   \\__\\_\\\\___/_/   \\_\\____/ \n    public EaseInQuad(x: number): number {\n        return x * x;\n    }\n    public EaseOutQuad(x: number): number {\n        return 1 - (1 - x) * (1 - x);\n    }\n    public EaseInOutQuad(x: number): number {\n        return x < 0.5 ? 2 * x * x : 1 - Math.pow(-2 * x + 2, 2) / 2;\n    }\n\n    //    ____ _   _ ____ ___ ____ \n    //   / ___| | | | __ )_ _/ ___|\n    //  | |   | | | |  _ \\| | |    \n    //  | |___| |_| | |_) | | |___ \n    //   \\____|\\___/|____/___\\____|\n    public EaseInCubic(x: number): number {\n        return x * x * x;\n    }\n    public EaseOutCubic(x: number): number {\n        return 1 - Math.pow(1 - x, 3);\n    }\n    public EaseInOutCubic(x: number): number {\n        return x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2;\n    }\n\n    //    ___  _   _   _    ____ _____ \n    //   / _ \\| | | | / \\  |  _ \\_   _|\n    //  | | | | | | |/ _ \\ | |_) || |  \n    //  | |_| | |_| / ___ \\|  _ < | |  \n    //   \\__\\_\\\\___/_/   \\_\\_| \\_\\|_|  \n    public EaseInQuart(x: number): number {\n        return x * x * x * x;\n    }\n    public EaseOutQuart(x: number): number {\n        return 1 - Math.pow(1 - x, 4);\n    }\n    public EaseInOutQuart(x: number): number {\n        return x < 0.5 ? 8 * x * x * x * x : 1 - Math.pow(-2 * x + 2, 4) / 2;\n    }\n\n    //    ___  _   _ ___ _   _ _____ \n    //   / _ \\| | | |_ _| \\ | |_   _|\n    //  | | | | | | || ||  \\| | | |  \n    //  | |_| | |_| || || |\\  | | |  \n    //   \\__\\_\\\\___/|___|_| \\_| |_|  \n    public EaseInQuint(x: number): number {\n        return x * x * x * x * x;\n    }\n    public EaseOutQuint(x: number): number {\n        return 1 - Math.pow(1 - x, 5);\n    }\n    public EaseInOutQuint(x: number): number {\n        return x < 0.5 ? 16 * x * x * x * x * x : 1 - Math.pow(-2 * x + 2, 5) / 2;\n    }\n\n    //   _______  ______   ___  _   _ _____ _   _ _____ ___    _    _     \n    //  | ____\\ \\/ /  _ \\ / _ \\| \\ | | ____| \\ | |_   _|_ _|  / \\  | |    \n    //  |  _|  \\  /| |_) | | | |  \\| |  _| |  \\| | | |  | |  / _ \\ | |    \n    //  | |___ /  \\|  __/| |_| | |\\  | |___| |\\  | | |  | | / ___ \\| |___ \n    //  |_____/_/\\_\\_|    \\___/|_| \\_|_____|_| \\_| |_| |___/_/   \\_\\_____|\n    public EaseInExpo(x: number): number {\n        return x === 0 ? 0 : Math.pow(2, 10 * x - 10);\n    }\n    public EaseOutExpo(x: number): number {\n        return x === 1 ? 1 : 1 - Math.pow(2, -10 * x);\n    }\n    public EaseInOutExpo(x: number): number {\n        return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? Math.pow(2, 20 * x - 10) / 2 : (2 - Math.pow(2, -20 * x + 10)) / 2;\n    }\n\n    //    ____ ___ ____   ____ _   _ _        _    ____  \n    //   / ___|_ _|  _ \\ / ___| | | | |      / \\  |  _ \\ \n    //  | |    | || |_) | |   | | | | |     / _ \\ | |_) |\n    //  | |___ | ||  _ <| |___| |_| | |___ / ___ \\|  _ < \n    //   \\____|___|_| \\_\\\\____|\\___/|_____/_/   \\_\\_| \\_\\\n    public EaseInCirc(x: number): number {\n        return 1 - Math.sqrt(1 - Math.pow(x, 2));\n    }\n    public EaseOutCirc(x: number): number {\n        return Math.sqrt(1 - Math.pow(x - 1, 2));\n    }\n    public EaseInOutCirc(x: number): number {\n        return x < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * x, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * x + 2, 2)) + 1) / 2;\n    }\n\n    //   ____    _    ____ _  __\n    //  | __ )  / \\  / ___| |/ /\n    //  |  _ \\ / _ \\| |   | ' / \n    //  | |_) / ___ \\ |___| . \\ \n    //  |____/_/   \\_\\____|_|\\_\\\n    public EaseInBack(x: number): number {\n        const c1 = 1.70158;\n        const c3 = c1 + 1;\n        return c3 * x * x * x - c1 * x * x;\n    }\n    public EaseOutBack(x: number): number {\n        const c1 = 1.70158;\n        const c3 = c1 + 1;\n        return 1 + c3 * Math.pow(x - 1, 3) + c1 * Math.pow(x - 1, 2);\n    }\n    public EaseInOutBack(x: number): number {\n        const c1 = 1.70158;\n        const c2 = c1 * 1.525;\n        return x < 0.5 ? (Math.pow(2 * x, 2) * ((c2 + 1) * 2 * x - c2)) / 2 : (Math.pow(2 * x - 2, 2) * ((c2 + 1) * (x * 2 - 2) + c2) + 2) / 2;\n    }\n\n    //   _____ _        _    ____ _____ ___ ____ \n    //  | ____| |      / \\  / ___|_   _|_ _/ ___|\n    //  |  _| | |     / _ \\ \\___ \\ | |  | | |    \n    //  | |___| |___ / ___ \\ ___) || |  | | |___ \n    //  |_____|_____/_/   \\_\\____/ |_| |___\\____|\n    public EaseInElastic(x: number): number {\n        const c4 = (2 * Math.PI) / 3;\n        return x === 0 ? 0 : x === 1 ? 1 : -Math.pow(2, 10 * x - 10) * Math.sin((x * 10 - 10.75) * c4);\n    }\n    public EaseOutElastic(x: number): number {\n        const c4 = (2 * Math.PI) / 3;\n        return x === 0 ? 0 : x === 1 ? 1 : Math.pow(2, -10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1;\n    }\n    public EaseInOutElastic(x: number): number {\n        const c5 = (2 * Math.PI) / 4.5;\n        return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2 : (Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5)) / 2 + 1;\n    }\n\n    //   ____   ___  _   _ _   _  ____ _____ \n    //  | __ ) / _ \\| | | | \\ | |/ ___| ____|\n    //  |  _ \\| | | | | | |  \\| | |   |  _|  \n    //  | |_) | |_| | |_| | |\\  | |___| |___ \n    //  |____/ \\___/ \\___/|_| \\_|\\____|_____|\n    public EaseInBounce(x: number): number {\n        return 1 - this.EaseOutBounce(1 - x);\n    }\n    public EaseOutBounce(x: number): number {\n        const n1 = 7.5625;\n        const d1 = 2.75;\n        \n        if (x < 1 / d1) {\n            return n1 * x * x;\n        }\n        else if (x < 2 / d1) {\n            return n1 * (x -= 1.5 / d1) * x + 0.75;\n        }\n        else if (x < 2.5 / d1) {\n            return n1 * (x -= 2.25 / d1) * x + 0.9375;\n        }\n        else {\n            return n1 * (x -= 2.625 / d1) * x + 0.984375;\n        }\n    }\n    public EaseInOutBounce(x: number): number {\n        return x < 0.5 ? (1 - this.EaseOutBounce(1 - 2 * x)) / 2 : (1 + this.EaseOutBounce(2 * x - 1)) / 2;\n    }\n}\n\nexport const AnimationEasingFunctionService = new AnimationEasingFunctionServiceClass();","import { BaseElement } from \"../../base/base.component\";\nimport { PropertyValueMap, css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport style from \"./animated.container.sass?inline\";\nimport { ComponentService } from \"../../../../utils/component.service\";\nimport { AnimationEasingFunctionService, EasingDirection, EasingType } from \"../../../../utils/animation-easing.service\";\n\n\n@customElement(\"fv-animated-container\")\nexport abstract class AnimatedContainerComoponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n\n    static get observedAttributes(): Array<string> {\n        return [\"class\", ...super.observedAttributes];\n    }\n\n    private _heightStyleWhileOpen = \"\";\n    private _heightValueBeforeAnimation = 0;\n    private _animationDuration = 600;\n\n    private _isAnimating = false;\n    private openCloseAnimation(targetHeight: number, duration: number, targetStyle: string): void {\n        this._isAnimating = true;\n\n        let startTime: DOMHighResTimeStamp | undefined = undefined;\n        const startHeight = this.offsetHeight;\n        const isOpening = targetHeight > startHeight;\n\n        const animate: FrameRequestCallback = (currentTime: DOMHighResTimeStamp)=>{\n            if (!startTime) {\n                startTime = currentTime;\n            }\n            const elapsed = currentTime - startTime;\n            const progress = AnimationEasingFunctionService.Apply(EasingType.CUBIC, EasingDirection.INOUT, Math.min(1, elapsed / duration));\n\n            const newHeight = isOpening\n                ? startHeight + progress * (targetHeight - startHeight)\n                : startHeight - progress * (startHeight - targetHeight);\n\n            this.style.visibility = \"\";\n            this.style.height = newHeight + \"px\";\n\n            if (progress < 1) {\n                requestAnimationFrame(animate);\n            }\n            else {\n                this.style.height = targetStyle;\n                this._isAnimating = false;\n\n                if (this.style.height === \"0px\") {\n                    this.style.visibility = \"hidden\";\n                }\n            }\n        };\n\n        requestAnimationFrame(animate);\n    }\n\n    private async handleHeightChange(oldClasses: string, newClasses: string) {\n        const oldList = oldClasses.split(\" \");\n        const newList = newClasses.split(\" \");\n\n        const isHidden: boolean = this.anyHiddenClassInArray(newList);\n        const wasHidden: boolean = this.anyHiddenClassInArray(oldList);\n        if (isHidden == wasHidden) return;\n\n        if (isHidden && !wasHidden) {// close\n            if (!this._isAnimating) {\n                this._heightValueBeforeAnimation = this.offsetHeight;\n                this._heightStyleWhileOpen = this.style.height;\n            }\n            await ComponentService.waitForAllChildren(this);\n            this.openCloseAnimation(0, this._animationDuration, \"0px\");\n        }\n\n        if (!isHidden && wasHidden) {//open\n            await ComponentService.waitForAllChildren(this);\n            this.openCloseAnimation(this._heightValueBeforeAnimation, this._animationDuration, this._heightStyleWhileOpen);\n            setTimeout(()=>{\n                this.style.height = this._heightStyleWhileOpen;\n            }, this._animationDuration);\n        }\n    }\n\n\n\n    constructor() {\n        super();\n\n        this.hiddenClasses = [\"hidden-by-animation\"];\n    }\n    protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n        super.updated(_changedProperties);\n    }\n    connectedCallback(): void {\n        super.connectedCallback();\n    }\n\n\n    render(): TemplateResult<1> {\n        return html`<slot></slot>`;\n    }\n\n    public attributeChangedCallback(name: string, _old: string | null, value: string | null): void {\n        super.attributeChangedCallback(name, _old, value);\n\n        if (name == \"class\" && _old && value) {\n            this.handleHeightChange(_old, value);\n        }\n    }\n}","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport style from \"./container.component.sass?inline\";\n\n\n@customElement(\"fv-container\")\nexport class ContainerComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n    }\n\n    render(): TemplateResult<1> {\n        return html`<slot></slot>`;\n    }\n}","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport style from \"./grid-container.component.sass?inline\";\n\n\n@customElement(\"fv-grid-container\")\nexport class GridContainerComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n    }\n\n    render(): TemplateResult<1> {\n        return html`<slot></slot>`;\n    }\n}","import { css, html, TemplateResult, PropertyValueMap, unsafeCSS } from \"lit\";\nimport style from \"./image.aligned.container.component.sass?inline\"\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\"\n\n\nexport interface IImageAlignedContainerOverlayItem {\n    name: string,\n    top?: number,\n    right?: number,\n    bottom?: number,\n    left?: number,\n    zIndex?: number,\n    skipHorizontalCenter?: boolean\n};\n\n@customElement(\"fv-image-aligned-container\")\nexport class ImageAlignedContainerComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true, attribute: \"src\" })\n    public _src = \"\";\n\n    @property({ type: Array, reflect: true, attribute: \"overlay-items\" })\n    public overlayItems: Array<IImageAlignedContainerOverlayItem> = [];\n\n    @query(\".image-wrapper\")\n    private imageWrapper: HTMLDivElement | undefined;\n\n    @query(\".overlay-container\")\n    private overlayContainer: HTMLDivElement | undefined;\n\n    private naturalHeight: number = 0;\n    private naturalWidth: number = 0;\n\n    private static _imageCache: Record<string, HTMLImageElement> = {};\n\n    constructor() {\n        super();\n\n        window.addEventListener(\"resize\", () => {\n            this.updateOverlay();\n        });\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n        this.initImageAndOverlay();\n        super.firstUpdated(_changedProperties);\n    }\n\n    private updateOverlay() {\n        if (!this.imageWrapper || !this.overlayContainer || this.naturalWidth === 0 || this.naturalHeight === 0) {\n            return;\n        }\n\n        const wrapperRect = this.imageWrapper.getBoundingClientRect();\n        const wrapperWidth = wrapperRect.width;\n        const wrapperHeight = wrapperRect.height;\n\n        const imageAspect = this.naturalWidth / this.naturalHeight;\n        const containerAspect = wrapperWidth / wrapperHeight;\n\n        let imgWidth, imgHeight;\n\n        if (imageAspect > containerAspect) {\n            imgWidth = wrapperWidth;\n            imgHeight = wrapperWidth / imageAspect;\n        }\n        else {\n            imgHeight = wrapperHeight;\n            imgWidth = wrapperHeight * imageAspect;\n        }\n\n        const left = (wrapperWidth - imgWidth) / 2;\n        const top = (wrapperHeight - imgHeight) / 2;\n\n        this.overlayContainer.style.width = imgWidth + 'px';\n        this.overlayContainer.style.height = imgHeight + 'px';\n        this.overlayContainer.style.left = left + 'px';\n        this.overlayContainer.style.top = top + 'px';\n    }\n\n    private initImageAndOverlay(): void {\n        const cachedImg = ImageAlignedContainerComponent._imageCache[this._src];\n        if (cachedImg) {\n            this.naturalWidth = cachedImg.naturalWidth;\n            this.naturalHeight = cachedImg.naturalHeight;\n            this.updateOverlay();\n            return;\n        }\n\n        const img = new Image();\n        img.src = this._src;\n\n        img.onload = () => {\n            ImageAlignedContainerComponent._imageCache[this._src] = img;\n            this.naturalWidth = img.naturalWidth;\n            this.naturalHeight = img.naturalHeight;\n            this.updateOverlay();\n        };\n    }\n\n    private getOverlayItemPositionStyle(item: IImageAlignedContainerOverlayItem): string {\n        let style = \"\";\n\n        if (item.top) {\n            style += \"top: \" + item.top + \"%; \";\n        }\n        if (item.right) {\n            style += \"right: \" + item.right + \"%; \";\n        }\n        if (item.bottom) {\n            style += \"bottom: \" + item.bottom + \"%; \";\n        }\n        if (item.left) {\n            style += \"left: \" + item.left + \"%; \";\n        }\n        if (item.zIndex) {\n            style += \"z-index: \" + item.zIndex + \"; \";\n        }\n        return style;\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            <div class=\"image-container\">\n                <div class=\"image-wrapper\" style=\"background-image: url(${this._src})\">\n                    <div class=\"overlay-container\">\n                        ${this.overlayItems.map(overlayEntry => html`\n                            <div\n                                class=\"overlay-item ${overlayEntry.skipHorizontalCenter ? \"skip-horizontal-center\" : \"\"}\"\n                                style=${this.getOverlayItemPositionStyle(overlayEntry)}>\n                                    <slot name=${overlayEntry.name}></slot>\n                            </div>\n                        `)}\n                    </div>\n                </div>\n            </div>\n        `;\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport style from \"./layout.component.sass?inline\";\n\n\n\ninterface LayoutDefinition {\n\t[key:string]: LayoutNode;\n}\n\ninterface LayoutNode {\n\tnodes?: LayoutDefinition\n\tdata?: LayoutData;\n}\n\ninterface LayoutData {\n\tclass?: string[];\n}\n\n\n@customElement(\"fv-layout\")\nexport class LayoutComponent extends BaseElement {\n\tstatic styles = [\n\t\tsuper.styles || [],\n\t\tcss`${unsafeCSS(style)}`\n\t];\n\n\t@property({ type: Object, reflect: true })\n\tpublic definition: LayoutDefinition = {}\n\n\n\tconstructor() {\n\t\tsuper();\n\t}\n\n\t/**\n\t * Opt-in light DOM. With the `light-dom` attribute present, render the scaffold into the light\n\t * DOM instead of a shadow root, so the region nodes become document-queryable\n\t * (e.g. `#main.querySelector('.content')`). That lets legacy layout configs — whose `areas`\n\t * target region classes against `#main` — resolve unchanged. Default (no attribute) stays shadow\n\t * DOM, so existing behaviour is untouched.\n\t */\n\tprotected createRenderRoot(): HTMLElement | DocumentFragment {\n\t\tif (this.hasAttribute(\"light-dom\")) {\n\t\t\treturn this;\n\t\t}\n\t\treturn super.createRenderRoot();\n\t}\n\n\tprivate static traverseDefinition(target: LayoutDefinition | undefined, container: HTMLDivElement, emitSlots: boolean, action: (node: LayoutNode, key: string, container: HTMLDivElement, emitSlots: boolean) => void) {\n\t\tif (target === undefined) return;\n\n\t\tconst keys = Object.keys(target);\n\t\tfor (const key of keys) {\n\t\t\tconst node = target[key];\n\t\t\taction(node, key, container, emitSlots);// hier wird createNodeElement aufgerufen\n\t\t}\n\t}\n\n\tprivate static createNodeElement(node: LayoutNode | undefined, key: string, container: HTMLDivElement, emitSlots: boolean) {\n\t\tif (node === undefined) return;//erstellt anschliesend \"kinder\" und danach travers aufrufen\n\n\t\tconst nodeElement = document.createElement(\"div\");\n\t\tnodeElement.classList.add(\"node\");\n\n\t\t// Region identity from the slot key (plus any explicit data.class). Applied as classes so a\n\t\t// layout config can target the region from INSIDE the shadow (customCSS / styleVars), and\n\t\t// mirrored onto `part` so it can also be themed from OUTSIDE via ::part(<region>).\n\t\tconst regionClasses: string[] = [];\n\t\tif (/^[A-Za-z_][\\w-]*$/.test(key)) regionClasses.push(key);\n\t\tif (node.data && Array.isArray(node.data.class)) regionClasses.push(...node.data.class);\n\t\tif (regionClasses.length > 0) nodeElement.classList.add(...regionClasses);\n\t\tnodeElement.setAttribute(\"part\", [\"node\", ...regionClasses].join(\" \"));\n\n\t\t// Slots only project in shadow DOM; in light-DOM mode they're inert (legacy configs append their\n\t\t// areas directly to the region node), so skip them.\n\t\tif (emitSlots) {\n\t\t\tconst slot = document.createElement(\"slot\");\n\t\t\tslot.name = key;\n\t\t\tnodeElement.appendChild(slot);\n\t\t}\n\n\n\t\tLayoutComponent.traverseDefinition(node.nodes, nodeElement, emitSlots, LayoutComponent.createNodeElement);\n\t\tcontainer.appendChild(nodeElement);\n\t}\n\n\n\tpublic render(): TemplateResult<1> {\n\t\tconst container = document.createElement(\"div\");\n\t\tcontainer.classList.add(\"layout-container\");\n\t\tcontainer.id = \"main\";\n\t\tcontainer.setAttribute(\"part\", \"layout-container\");\n\t\t// In light-DOM mode the region <slot>s are inert, so don't emit them.\n\t\tconst emitSlots = !this.hasAttribute(\"light-dom\");\n\t\tLayoutComponent.traverseDefinition(this.definition, container, emitSlots, LayoutComponent.createNodeElement);//es werden unendlich Kinder aufgerufen und in container verwiesen\n\t\treturn html`${container}`;\n\t}\n}","import { BaseElement } from \"../../base/base.component\";\nimport { css, html, unsafeCSS } from \"lit\";\nimport style from \"./scene-button-page.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { SceneHelperService } from \"../../../../utils/scene-helper.service\";\nimport { SelectionChangeEventParams } from \"../../../../define/interface\";\nimport {CommunicationMessageService, EventFactoryService} from \"@dh-software/webui-api\";\nimport {IPlannedArticle} from \"@dh-software/webui-types\";\n\nexport interface CustomIcon_ExecuteCustomEventData {\n    command: string,\n    instanceIdent: number | number[];\n    parameters?: any;\n}\n\nexport interface ISceneButtonPageEvent {\n    \"target-selector\": string,\n    event: unknown | undefined\n}\n\n@customElement(\"fv-scene-button-page\")\nexport class SceneButtonPage extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true, attribute: \"command\" })\n    public command = \"\";\n\n    @property({ type: Array, reflect: true, attribute: \"open-event\" })\n    public openEvent: Array<ISceneButtonPageEvent> = [];\n\n    @property({ type: Array, reflect: true, attribute: \"close-event\" })\n    public closeEvent: Array<ISceneButtonPageEvent> = [];\n\n    @property({ type: Boolean, reflect: true, attribute: \"close-on-scene-click\" })\n    public closeOnSceneClick = false;\n\n    private _active = false;\n    private _previousOwner = new Array<number>();\n    private _currentOwners = new Array<string>();\n\n    constructor() {\n        super();\n\n        EventFactoryService.CustomIcon_ExecuteCustomEvent.register((eventData_?: unknown) => {\n            const eventData = (eventData_ as CustomIcon_ExecuteCustomEventData);\n            if (eventData && eventData.command === this.command) {\n                this.openPage(eventData?.parameters?.instanceIdent ? eventData.parameters.instanceIdent : eventData.instanceIdent);\n            }\n        });\n    }\n\n    private closeOnClickNotOnPage(event: Event) {\n        if (event.target == this) return;\n        for (const key in this.children) {\n            if (Object.prototype.hasOwnProperty.call(this.children, key)) {\n                const element = this.children[key];\n                if (event.target == element) return;\n            }\n        }\n        this.closePage();\n    }\n\n    private async openPage(instanceIdents: number | number[]) {\n        if (this.hideElement === true) {\n            window.addEventListener(\"click\", (event: Event) => {\n                if (this._active) {\n                    this.closeOnClickNotOnPage(event);\n                }\n            });\n            EventFactoryService.SelectionChanged.register(async (params?: unknown) => {\n                if (this._active && !this.isSameSelection(params as SelectionChangeEventParams)) {\n                    this.closePage();\n                }\n            });\n            if (this.closeOnSceneClick) {\n                EventFactoryService.CameraOnStart.register((params?: unknown) => {\n                    if (this._active) {\n                        this.closePage();\n                    }\n                });\n            }\n\n\n            this.hideElement = false;\n\n            if (this._active && !this.isSameOwner(instanceIdents)) {\n                this.closePageAndClearOwners();\n            }\n\n            this._previousOwner = [];\n            if (Array.isArray(instanceIdents)) {\n                this._previousOwner.push(...instanceIdents);\n            }\n            else {\n                this._previousOwner.push(instanceIdents);\n            }\n\n            await CommunicationMessageService.getPlannedArticles(this._previousOwner).then((articles: Array<IPlannedArticle>) => {\n                for (const article of articles) {\n                    this._currentOwners.push(article.guid);\n                }\n            });\n\n            this.openPageAndNotifyOwners();\n        }\n    }\n\n    private async closePage() {\n        if (this.hideElement === false) {\n            window.removeEventListener(\"click\", (event: Event) => {\n                if (this._active) {\n                    this.closeOnClickNotOnPage(event);\n                }\n            });\n            EventFactoryService.SelectionChanged.unregister(async (params?: unknown) => {\n                if (this._active && !this.isSameSelection(params as SelectionChangeEventParams)) {\n                    this.closePage();\n                }\n            });\n            if (this.closeOnSceneClick) {\n                EventFactoryService.CameraOnStart.unregister((params?: unknown) => {\n                    if (this._active) {\n                        this.closePage();\n                    }\n                });\n            }\n            this.hideElement = true;\n            this.closePageAndClearOwners();\n        }\n    }\n\n    private openPageAndNotifyOwners() {\n        this.triggerScenePageEvent(\"openscenebuttonpage\", this.openEvent);\n\n        this._active = true;\n    }\n\n    private closePageAndClearOwners() {\n        this.triggerScenePageEvent(\"closescenebuttonpage\", this.closeEvent);\n        SceneHelperService.clearSelection();\n\n        this._active = false;\n        this._currentOwners = [];\n    }\n\n    private triggerScenePageEvent(type: \"openscenebuttonpage\" | \"closescenebuttonpage\", data: Array<ISceneButtonPageEvent>) {\n        if (data.length === 0 || this._currentOwners.length === 0) {\n            return;\n        }\n        for (const eventData of data) {\n            const targets = this.querySelectorAll(eventData[\"target-selector\"]);\n            targets.forEach((target) => {\n                const eventDetail = {\n                    page: this,\n                    owners: this._currentOwners,\n                    value: eventData.event\n                };\n                target.dispatchEvent(new CustomEvent(type, { detail: eventDetail }));\n            });\n        }\n    }\n\n    private isSameOwner(instanceIdents: number | number[]) {\n        if (Array.isArray(instanceIdents)) {\n            return instanceIdents.every(ident => this._previousOwner.includes(ident));\n        }\n        return this._previousOwner.includes(instanceIdents);\n    }\n\n    private isSameSelection(params_: SelectionChangeEventParams): boolean {\n        if (params_?.objectInfo.length === 0) {\n            return false;\n        }\n        const instanceIdents = params_.objectInfo.map(obj => obj.instanceIdent);\n        return this.isSameOwner(instanceIdents);\n    }\n\n    protected render() {\n        return html`\n            <div class=\"page\">\n                <div class=\"cancel-button\" @click=\"${this.closePage}\">\n                    <span class=\"close-symbol\"></span>\n                </div>\n                <slot></slot>\n            </div>\n        `;\n    }\n}\n","import {css, html, LitElement, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport {BaseElement, IBaseElement, UpdatedEventInit, WillUpdateEventInit} from \"../../base/base.component\";\nimport style from \"./scroll.aware.container.component.sass?inline\";\nimport { ComponentService } from \"../../../../utils/component.service\";\nimport { AsyncBaseElement, FetchParameters } from \"../../base/async.base.component\";\nimport { FetchResult } from \"../../../../models/card-container\";\n\nconst scrollAwareContainerOffsets = new Map<string, number>();\n\n@customElement(\"fv-scroll-aware-container\")\nexport class ScrollAwareContainerComponent extends BaseElement {\n\n    @property({ type: String, reflect: false })\n    private identifier = \"\";\n\n    private _updatedAnimationFrameHandle: number | undefined = undefined;\n    private _willUpdateTimeout: number | undefined = undefined;\n\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private _willupdate() {\n        const parent = this.ScrollableParent\n        if (parent && parent.scrollTop) {\n            this.ScrollPosition = parent.scrollTop;\n        }\n    }\n    private async _updated(element: LitElement | AsyncBaseElement<FetchParameters, FetchResult>) {\n        const parent = this.ScrollableParent\n        if (parent) {\n            if (element instanceof AsyncBaseElement) {\n                await element.CheckFetchPromise();\n            }\n            if (element instanceof BaseElement) {\n                await element.updateComplete;\n            }\n            parent.scrollTop = this.ScrollPosition;\n        }\n    }\n\n    constructor() {\n        super();\n        this.addEventListener('scroll', () => {\n            this._willupdate();\n        })\n        this.addEventListener(\"willupdate\", (event: WillUpdateEventInit) => {\n            if (event.detail !== undefined) {\n                if (this._willUpdateTimeout) {\n                    clearTimeout(this._willUpdateTimeout);\n                    this._willUpdateTimeout = undefined;\n                }\n                this._willUpdateTimeout = setTimeout(() => {\n                    this._willupdate();\n                }, 1);\n            }\n        });\n        this.addEventListener(\"updated\", (event: UpdatedEventInit) => {\n            if (event.detail !== undefined) {\n                // Restore scroll in a requestAnimationFrame (runs right BEFORE the next paint) rather\n                // than setTimeout (a macrotask that fires AFTER the browser has already painted the\n                // rebuilt list at scrollTop = 0). This removes the visible top<->previous flash.\n                if (this._updatedAnimationFrameHandle !== undefined) {\n                    cancelAnimationFrame(this._updatedAnimationFrameHandle);\n                    this._updatedAnimationFrameHandle = undefined;\n                }\n                this._updatedAnimationFrameHandle = requestAnimationFrame(() => {\n                    this._updatedAnimationFrameHandle = undefined;\n                    if (event.detail !== undefined) {\n                        this._updated(event.detail);\n                    }\n                });\n            }\n        });\n    }\n\n    render(): TemplateResult<1> {\n        return html`<slot></slot>`;\n    }\n\n\n    private _scrollableParent: HTMLElement | undefined = undefined;\n    private get ScrollableParent(): HTMLElement | undefined {\n        if (!this._scrollableParent) {\n            this._scrollableParent = ComponentService.findScrollableParent(this);\n        }\n        return this._scrollableParent\n    }\n\n    private _scrollPosition = 0;\n    public set ScrollPosition(value: number) {\n        this._scrollPosition = value;\n        if (this.identifier) {\n            scrollAwareContainerOffsets.set(this.identifier, value);\n        }\n    }\n    public get ScrollPosition(): number {\n        const stored = scrollAwareContainerOffsets.get(this.identifier) || -1\n        if (this.identifier && stored != -1) {\n            this._scrollPosition = stored\n        }\n        return this._scrollPosition;\n    }\n\n    protected willUpdate(_changedProperties: PropertyValues): void {\n        super.willUpdate(_changedProperties);\n        this._willupdate();\n    }\n    protected updated(_changedProperties: PropertyValues): void {\n        super.updated(_changedProperties);\n        if (this.ScrollableParent != undefined) {\n            this._updated(this);\n        }\n    }\n}\n","import { css, html, nothing, unsafeCSS } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../base/base.component\";\nimport { CommunicationMessageService } from \"@dh-software/webui-api\";\nimport style from \"./cam-control-overlay.component.sass?inline\";\nimport { isProduction } from \"@dh-software/env\";\n\n@customElement(\"fv-cam-control-overlay\")\nexport class CamControlOverlayComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @state()\n    private topActive = false;\n\n    @state()\n    private leftActive = false;\n\n    @state()\n    private rightActive = false;\n\n    @state()\n    private bottomActive = false;\n\n    @property({ type: Number, reflect: true, attribute: \"speed\" })\n    public speed = 3;\n\n    @property({ type: Number, reflect: true, attribute: \"edge-width\" })\n    public edgeWidth = 60;\n\n    @property({ type: Number, reflect: true, attribute: \"hover-delay\" })\n    public hoverDelay = 200;\n\n\n    private _hoverTop = false;\n    private _hoverLeft = false;\n    private _hoverRight = false;\n    private _hoverBottom = false;\n\n    private _hoverTimeout: number | null = null;\n    private _animationFrame: number | null = null;\n\n    constructor() {\n        super();\n\n        this.AddConnectedCallbackAction(async (): Promise<void> => {\n            this.role = \"presentation\";\n            this.ariaHidden = \"true\";\n        });\n\n        this.addEventListener(\"pointermove\", this.onPointerMove);\n        this.addEventListener(\"pointerleave\", this.onPointerLeave);\n\n        document.addEventListener(\"visibilitychange\", (): void => {\n            if (document.hidden) {\n                this.clearActive();\n            }\n        });\n        window.addEventListener(\"blur\", (): void => {\n            this.clearActive();\n        });\n    }\n\n    disconnectedCallback(): void {\n        if (this._animationFrame !== null) {\n            cancelAnimationFrame(this._animationFrame);\n            this._animationFrame = null;\n        }\n        if (this._hoverTimeout !== null) {\n            clearTimeout(this._hoverTimeout);\n            this._hoverTimeout = null;\n        }\n        super.disconnectedCallback();\n    }\n\n    private get IsActive(): boolean {\n        return this.topActive || this.bottomActive || this.leftActive || this.rightActive;\n    }\n\n    private get IsHover(): boolean {\n        return this._hoverTop || this._hoverBottom || this._hoverLeft || this._hoverRight;\n    }\n\n    private onPointerLeave(): void {\n        this.clearActive();\n    }\n\n    private onPointerMove(event_: PointerEvent): void {\n        const rect = this.getBoundingClientRect();\n        const x = event_.clientX - rect.left;\n        const y = event_.clientY - rect.top;\n        const w = this.edgeWidth;\n\n        this._hoverTop = y < w;\n        this._hoverBottom = y > rect.height - w;\n        this._hoverLeft = x < w;\n        this._hoverRight = x > rect.width - w;\n\n        if (this._animationFrame !== null) {\n            this.applyActiveState();\n            return;\n        }\n\n        if (this._hoverTimeout !== null || !this.IsHover) {\n            return;\n        }\n\n        if (this.hoverDelay <= 0) {\n            this.applyActiveState();\n            this._animationFrame = requestAnimationFrame(this.tick);\n            return;\n        }\n\n        this._hoverTimeout = setTimeout((): void => {\n            this._hoverTimeout = null;\n            if (this.IsHover) {\n                this.applyActiveState();\n                this._animationFrame = requestAnimationFrame(this.tick);\n            }\n        }, this.hoverDelay);\n    }\n\n    private tick = (): void => {\n        if (!this.IsActive) {\n            this._animationFrame = null;\n            return;\n        }\n\n        const speed = this.speed;\n        const deltaX = (this.leftActive ? speed : 0) + (this.rightActive ? -speed : 0);\n        const deltaY = (this.topActive ? speed : 0) + (this.bottomActive ? -speed : 0);\n\n        if (deltaX !== 0 || deltaY !== 0) {\n            CommunicationMessageService.panCamera({ deltaX, deltaY });\n        }\n\n        this._animationFrame = requestAnimationFrame(this.tick);\n    };\n\n    private clearActive(): void {\n        this._hoverTop = false;\n        this._hoverLeft = false;\n        this._hoverRight = false;\n        this._hoverBottom = false;\n\n        this.topActive = false;\n        this.leftActive = false;\n        this.rightActive = false;\n        this.bottomActive = false;\n\n        if (this._hoverTimeout !== null) {\n            clearTimeout(this._hoverTimeout);\n            this._hoverTimeout = null;\n        }\n    }\n\n    private applyActiveState(): void {\n        this.topActive = this._hoverTop;\n        this.leftActive = this._hoverLeft;\n        this.rightActive = this._hoverRight;\n        this.bottomActive = this._hoverBottom;\n    }\n\n    protected render() {\n        if (!isProduction) return nothing;\n        const zoneWidth = `${this.edgeWidth}px`;\n        return html`\n            <div class=\"edge-zone top\" style=\"height: ${zoneWidth}\"></div>\n            <div class=\"edge-zone bottom\" style=\"height: ${zoneWidth}\"></div>\n            <div class=\"edge-zone left\" style=\"width: ${zoneWidth}\"></div>\n            <div class=\"edge-zone right\" style=\"width: ${zoneWidth}\"></div>\n\n            <fv-icon class=\"arrow top ${this.topActive ? \"active\" : \"\"}\" icon=\"fv-icon-arrow-down-2 mirrored-y\"></fv-icon>\n            <fv-icon class=\"arrow left ${this.leftActive ? \"active\" : \"\"}\" icon=\"fv-icon-arrow-left\"></fv-icon>\n            <fv-icon class=\"arrow right ${this.rightActive ? \"active\" : \"\"}\" icon=\"fv-icon-arrow-left mirrored-x\"></fv-icon>\n            <fv-icon class=\"arrow bottom ${this.bottomActive ? \"active\" : \"\"}\" icon=\"fv-icon-arrow-down-2\"></fv-icon>\n        `;\n    }\n}\n","import { BaseElement } from \"../standard/base/base.component\";\nimport { customElement } from \"lit/decorators.js\";\nimport { css, CSSResultGroup, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./arrow.component.sass?inline\";\n\n\n@customElement(\"fv-arrow-component\")\nexport class ArrowComponent extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    constructor() {\n        super();\n    }\n\n    protected render(): TemplateResult<1> {\n        const styles = getComputedStyle(this);\n        let arrowStrokeWidth = styles.getPropertyValue(\"--arrow-thickness\");\n        if (arrowStrokeWidth.length < 1)\n        {\n            arrowStrokeWidth = \"2\";\n        }\n        let width = styles.getPropertyValue(\"--arrow-width\");\n        if (width.length < 1)\n        {\n            width = \"48\";\n        }\n        let pointX = styles.getPropertyValue(\"--arrow-point-pos-x\");\n        if (pointX.length < 1)\n        {\n            pointX = \"22\";\n        }\n        let pointY = styles.getPropertyValue(\"--arrow-point-pos-y\");\n        if (pointY.length < 1)\n        {\n            pointY = \"20\";\n        }\n        let height = styles.getPropertyValue(\"--arrow-height\");\n        if (height.length < 1)\n        {\n            height = \"22\";\n        }\n        let color = styles.getPropertyValue(\"--arrow-color\");\n        if (color.length < 1)\n        {\n            color = \"black\";\n        }\n\n        return html`\n            <div class=\"arrow\">\n                <svg width=\"${width}px\" height=\"${height}px\" viewBox=\"0 0 ${width} ${height}\" xml:space=\"preserve\">\n                    <polyline \n                        fill=\"none\"\n                        stroke=\"${color}\"\n                        stroke-width=\"${arrowStrokeWidth}\"\n                        stroke-linecap=\"round\"\n                        stroke-linejoin=\"round\"\n                        points=\"0,0 ${pointX},${pointY} ${width},0\"\n                    />\n                </svg> \n            </div>\n        `;\n    }\n}\n","import {css, html, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport {BaseElement} from \"../../components/standard/base/base.component\";\nimport {FilteredCatalogComponentFilterButtons} from \"./filtered-catalog-filter-buttons.component\";\nimport style from \"./filtered-catalog.component.sass?inline\";\nimport {\n    BaseFilteredCatalogOptionComponent,\n    FilteredCatalogClickData\n} from \"./catalog-options/base/base-filtered-catalog-option.component\";\nimport {DeferHelperClass, IDeferHelperClass} from \"../../utils/defer-helper.class\";\nimport {ButtonComponent} from \"../standard/button/button.component\";\nimport {ComponentService} from \"../../utils/component.service\";\nimport {DimensionHelper} from \"../../utils/dimension-helper.class\";\nimport {\n    CommunicationMessageService, EventFactoryService,\n    LocaleService,\n    ProgPropertyModel,\n    WebViewerService\n} from \"@dh-software/webui-api\";\nimport {\n    IArticleData,\n    IProgProperty,\n    IProgPropertyFinishParams,\n    IProgPropertyManufacturer,\n    IProgPropertyProgram,\n    IProgPropertyRootList,\n    IPropTransferItem\n} from \"@dh-software/webui-types\";\nimport { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\nimport type { ComponentStateHandlerMap } from \"../../models/event-handler/component-state-event\";\n\ndeclare global {\n    interface ComponentStates {\n        \"fv-filtered-catalog:update\": { force?: boolean } | undefined;\n    }\n}\n\nexport interface FilteredCatalogBaseOptionData {\n    txt: string,\n    img: string,\n    active?: boolean,\n    icon?: string | undefined,\n    clickData: FilteredCatalogClickData,\n    dimensions?: {\n        x: number,\n        y: number,\n        z: number\n    },\n    \"filter-categories\"?: Array<string>\n}\n\ninterface FilteredCatalogOptionData extends FilteredCatalogBaseOptionData {\n    remove?: FilteredCatalogBaseOptionData\n}\n\nexport interface FilteredCatalogData {\n    title: string,\n    type: string,\n    options: Array<FilteredCatalogOptionData>,\n    \"filtered-options\"?: Array<FilteredCatalogOptionData>,\n    propertyFilterValue?: string,\n    catgoriesTexts?: { [category: string]: string }\n}\n\ninterface DimensionsFilter {\n    x: Array<number>,\n    y: Array<number>,\n    z: Array<number>\n}\n\n\nclass FilteredCatalogDeferredDataReaderBase<T> {\n    protected data: T | undefined = undefined;\n}\n\nclass FilteredCatalogDeferredMapDataReader<KEY, VALUE> extends FilteredCatalogDeferredDataReaderBase<Map<KEY, VALUE>> {\n    protected readDeferHelpers: Map<KEY, IDeferHelperClass | undefined> = new Map<KEY, IDeferHelperClass | undefined>();\n\n    // protected readDeferHelper: IDeferHelperClass | undefined = undefined;\n\n    public Clear() {\n        this.data = undefined;\n    }\n\n    public async Read(key: KEY, check: (data: VALUE) => boolean, read: () => Promise<VALUE>, force = false): Promise<VALUE | undefined> {\n        if (force === false && this.data !== undefined) {\n            const deferHelper = this.readDeferHelpers.get(key);\n            if (deferHelper != undefined) await deferHelper;\n\n            const dataValue = this.data.get(key);\n            if (dataValue !== undefined && check(dataValue)) return dataValue;\n        }\n\n        if (this.data === undefined) {\n            this.data = new Map<KEY, VALUE>();\n        }\n\n        if (this.readDeferHelpers.get(key) == undefined) {\n            this.readDeferHelpers.set(key, DeferHelperClass());\n\n            if (force) {\n                this.data = new Map<KEY, VALUE>();// get rid of old data\n            }\n\n            const dataValue = await read();\n            this.data.set(key, dataValue);\n\n            this.readDeferHelpers.get(key)?.resolve([true]);\n            this.readDeferHelpers.set(key, undefined);\n\n            for (const callback of this.ReadEvents) {\n                callback(dataValue);\n            }\n            return dataValue;\n        }\n\n        await this.readDeferHelpers.get(key);\n        const dataValue = this.data.get(key);\n        if (dataValue !== undefined && check(dataValue)) return dataValue;\n\n        return undefined;\n    }\n\n    private ReadEvents: Array<(dataValue: VALUE) => Promise<void>> = [];\n\n    public RegisterReadEvent(callback: (dataValue: VALUE) => Promise<void>): void {\n        this.ReadEvents.push(callback);\n    }\n}\n\nexport type FilteredCatalogFilterStrategy = 'exact' | 'start' | \"end\" | 'regex'\n\n@customElement(\"fv-filtered-catalog\")\nexport class FilteredCatalogComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    stateHandlers: ComponentStateHandlerMap = {\n        \"fv-filtered-catalog:update\": async (data) => { await this.Update(data?.force === true); },\n    };\n\n    @property({type: String, reflect: true, attribute: \"option-tag\"})\n    optionTag = \"\";\n\n    @property({type: String, reflect: true, attribute: \"options-wrapper-tag\"})\n    optionsWrapperTag = \"\";\n\n    @property({type: String, reflect: true, attribute: \"mobile-options-wrapper-tag\"})\n    mobileOptionsWrapperTag = \"\";\n\n    @property({type: Array, reflect: true, attribute: \"catalog-types\"})\n    types: Array<string> = [];\n\n    @property({type: Array, reflect: true, attribute: \"filter\"})\n    filter: Array<string> = [];\n\n    @property({type: String, reflect: true, attribute: \"filter-strategy\"})\n    filterStrategy: FilteredCatalogFilterStrategy = 'exact';\n\n    @property({type: Boolean, reflect: true, attribute: \"property-filter-buttons\"})\n    propertyFilterButtons = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"property-filter-buttons-limit-one-active\"})\n    propertyFilterButtonsLimitOneActive = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"finish-params-filter-buttons\"})\n    finishParamsFilterButtons = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"finish-params-filter-limit-to-one-per-para\"})\n    finishParamsFilterLimitToOnePerPara = false;\n\n    @property({type: String, reflect: true, attribute: \"selected-filter\"})\n    selectedFilter = \"\";\n\n    @property({type: Boolean, reflect: true, attribute: \"articles-are-fittings\"})\n    articlesAreFittings = false;\n\n    @property({type: String, reflect: true, attribute: \"program\"})\n    program = \"\";\n\n    @property({type: Boolean, reflect: true, attribute: \"prop-transfers-deleteable\"})\n    propTransfersDeleteable = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"prop-transfer-deletes-all\"})\n    propTransferDeletesAll = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"dimensions-filter-buttons\"})\n    dimensionsFilterButtons = false;\n\n    @property({type: Object, reflect: true, attribute: \"dimensions-filter\"})\n    dimensionsFilter: DimensionsFilter = {\n        x: [],\n        y: [],\n        z: []\n    };\n\n    @property({type: String, reflect: true, attribute: \"dimensions-filter-unit\"})\n    dimensionsFilterUnit: \"cm\" | \"mm\" = \"cm\";\n\n    @property({type: Number, reflect: true, attribute: \"dimensions-filter-group-value-range\"})\n    dimensionsFilterGroupValueRange = 100;\n\n    @property({type: Boolean, reflect: true, attribute: \"categories-filter-buttons\"})\n    categoriesFilterButtons = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"show-dimensions\"})\n    showDimensions = false;\n\n    @property({type: Array, reflect: true, attribute: \"categories-buttons-filter\"})\n    categoriesButtonsFilter: Array<string> = [];\n\n    @property({type: String, reflect: true, attribute: \"remove-button-img\"})\n    removeButtonImg = \"\";\n\n    @property({type: String, reflect: true, attribute: \"remove-button-icon\"})\n    removeButtonIcon = \"\";\n\n    @property({type: Boolean, reflect: true, attribute: \"property-use-relevant\"})\n    propertyUseRelevant = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"titled\"})\n    titled = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"refresh-on-option-click\"})\n    refreshOnOptionClick = false;\n\n    @property({type: Array, reflect: true, attribute: \"post-option-click-events\"})\n    postOptionClickEvents: Array<{ id: string, data: EventHandlerEventData }> = [];\n\n    @property({type: Boolean, reflect: true, attribute: \"options-draggable\"})\n    optionsDraggable = false;\n\n    @property({type: Object, reflect: true, attribute: \"property-modify-component\"})\n    propertyModifyComponent = {click: false, dragdrop: false};\n\n    private forceRefresh = false;\n\n    private dimensionsFilterGroupOptions: DimensionsFilter = {x: [], y: [], z: []};\n\n\n    public static RegisterPropTransfersReadEvent(callback: (dataValue: Array<IPropTransferItem>) => Promise<void>) {\n        FilteredCatalogComponent.propTransfers.RegisterReadEvent(callback);\n    }\n\n    public static RegisterPropertiesReadEvent(callback: (dataValue: IProgPropertyProgram) => Promise<void>) {\n        FilteredCatalogComponent.programProperties.RegisterReadEvent(callback);\n    }\n\n    public static RegisterArticlesReadEvent(callback: (dataValue: Array<IArticleData>) => Promise<void>) {\n        FilteredCatalogComponent.articles.RegisterReadEvent(callback);\n    }\n\n    private static propTransfers = new FilteredCatalogDeferredMapDataReader<number, Array<IPropTransferItem>>();\n\n    private async ReadPropTransfers(): Promise<Array<IPropTransferItem> | undefined> {\n        return FilteredCatalogComponent.propTransfers.Read(0, (data: Array<IPropTransferItem>) => {\n            if (data == undefined || (data && data.length == undefined)) {\n                return false;\n            }\n            return data.length > 0;\n        }, async () => {\n            return await CommunicationMessageService.getPropTransfer({}) as Array<IPropTransferItem>;\n        }, this.forceRefresh);\n    }\n\n    private static propertiesDataDeferHelper: IDeferHelperClass | undefined = undefined;\n    private static propertiesData: IProgPropertyRootList<IProgPropertyManufacturer> | undefined = undefined;\n    private static programProperties = new FilteredCatalogDeferredMapDataReader<string, IProgPropertyProgram>();\n\n    private async ReadProperties(): Promise<IProgPropertyProgram | undefined> {\n        if (FilteredCatalogComponent.propertiesDataDeferHelper != undefined) await FilteredCatalogComponent.propertiesDataDeferHelper;\n\n        if ((FilteredCatalogComponent.propertiesData == undefined || this.forceRefresh) && FilteredCatalogComponent.propertiesDataDeferHelper == undefined) {\n            FilteredCatalogComponent.propertiesDataDeferHelper = DeferHelperClass();\n            FilteredCatalogComponent.propertiesData = await ProgPropertyModel.findAll(true, true);\n            FilteredCatalogComponent.propertiesDataDeferHelper.resolve([true]);\n            FilteredCatalogComponent.propertiesDataDeferHelper = undefined;\n        }\n\n        if (FilteredCatalogComponent.propertiesData != undefined && FilteredCatalogComponent.propertiesData.children != undefined) {\n            return FilteredCatalogComponent.programProperties.Read(this.program, () => {\n                return true;\n            }, async () => {\n                if (FilteredCatalogComponent.propertiesData != undefined && FilteredCatalogComponent.propertiesData.children != undefined) {\n                    const manufacturers = Object.keys(FilteredCatalogComponent.propertiesData.children);\n                    for (let index = 0; index < manufacturers.length; ++index) {\n                        const manufacturerIndex = manufacturers[index];\n                        const manufacturer = FilteredCatalogComponent.propertiesData.children[manufacturerIndex];\n                        const programs = Object.keys(manufacturer.children);\n                        if (programs.includes(this.program.toUpperCase())) {\n                            return manufacturer.children[this.program.toUpperCase()];\n                        }\n                    }\n                }\n                // const result = await ProgPropertyModel.find(window.g_article.manu, this.program, false, this.propertyUseRelevant, false) as IProgPropertyProgram;\n                return {} as IProgPropertyProgram;\n            }, this.forceRefresh);\n        }\n    }\n\n    private static articles = new FilteredCatalogDeferredMapDataReader<string, Array<IArticleData>>();\n\n    private async ReadArticlesData(): Promise<Array<IArticleData> | undefined> {\n        return FilteredCatalogComponent.articles.Read(this.filter.length > 0 ? this.filter.toString() : \"all\", (data) => {\n            return true;\n        }, async () => {\n            let filter = this.filter;\n            if (this.selectedFilter.length > 0) {\n                if (this.filter.includes(this.selectedFilter)) {\n                    filter = [this.selectedFilter];\n                } else {\n                    filter = [];\n                }\n            }\n\n            const articles = await CommunicationMessageService.getArticleByCategories(window.g_article.manu, this.program, filter);\n            const result = new Array<IArticleData>();\n            if (!articles) {\n                return result;\n            }\n            for (let index = 0; index < articles.length; ++index) {\n                const article = articles[index];\n                result.push(article);\n            }\n            return result;\n        }, this.forceRefresh);\n    }\n\n    private static nodePrefix: string | undefined = undefined;\n\n    private async GetNodePrefix() {\n        if (FilteredCatalogComponent.nodePrefix === undefined) FilteredCatalogComponent.nodePrefix = await CommunicationMessageService.getNodePrefix();\n        return FilteredCatalogComponent.nodePrefix;\n    }\n\n    static matchesFilterStrategy(sourceValue: string, filterValue: string, strategy: FilteredCatalogFilterStrategy = 'exact'): boolean {\n        switch (strategy) {\n            case 'exact':\n                return sourceValue === filterValue;\n            case 'start':\n                return sourceValue.startsWith(filterValue);\n            case 'end':\n                return sourceValue.endsWith(filterValue);\n            case 'regex':\n                try {\n                    const regex = new RegExp(filterValue);\n                    return regex.test(sourceValue);\n                } catch (e) {\n                    console.warn(`Invalid regex pattern: ${filterValue}`, e);\n                    return false;\n                }\n            default:\n                return sourceValue === filterValue;\n        }\n    }\n\n    public checkFilter(source?: Array<string>, filter?: Array<string>, strategy?: FilteredCatalogFilterStrategy): boolean {\n        return FilteredCatalogComponent.checkFilter(source, filter, strategy || this.filterStrategy);\n    }\n\n    public static checkFilter(source?: Array<string>, filter?: Array<string>, strategy: FilteredCatalogFilterStrategy = 'exact'): boolean {\n        if (filter === undefined) return false;\n        if (filter.length < 1) return true;\n        if (source === undefined) return false;\n        return source.some(sourceValue =>\n            filter.some(filterValue =>\n                FilteredCatalogComponent.matchesFilterStrategy(sourceValue, filterValue, strategy)\n            )\n        );\n    }\n\n    private async GetPropTransferOptions(propTransfers: Array<IPropTransferItem>): Promise<Array<FilteredCatalogOptionData>> {\n        const options = new Array<FilteredCatalogOptionData>();\n\n        let filter = this.filter;\n        if (this.selectedFilter.length > 0) {\n            if (this.filter.includes(this.selectedFilter)) {\n                filter = [this.selectedFilter];\n            } else {\n                filter = [];\n            }\n        }\n\n        for (let index = 0; index < propTransfers.length; ++index) {\n            const prop = propTransfers[index];\n            if (this.checkFilter(prop.Cat, filter) === false) continue;\n\n            const url = await CommunicationMessageService.getMediaUrl(window.g_article.manu, this.program, \"art\", prop.image, true);\n            const option: FilteredCatalogOptionData = {\n                txt: prop.text && prop.text.length > 0 ? prop.text : prop.id,\n                img: url,\n                clickData: {\n                    propTransfer: {\n                        id: prop.id\n                    },\n                    refresh: this.refreshOnOptionClick,\n                    postEvents: this.postOptionClickEvents\n                }\n            };\n\n            if (this.propTransfersDeleteable) {\n                let deleteText = LocaleService.translate(\"fitered.catalog.proptrans.delete.text.alternative\", \"\");\n                if (deleteText.length < 1) {\n                    deleteText = LocaleService.translate(\"156\", \"\");\n                }\n                option.remove = {\n                    txt: deleteText,\n                    img: this.removeButtonImg.length > 0 ? this.removeButtonImg : \"\",\n                    icon: this.removeButtonIcon.length > 0 ? this.removeButtonIcon : undefined,\n                    clickData: {\n                        propTransfer: {\n                            id: prop.id,\n                            manufacturer: prop.manufacturer,\n                            program: prop.program,\n                            instanceIdents: this.propTransferDeletesAll ? prop.instanceIdent : [],\n                            delete: true\n                        },\n                        refresh: this.refreshOnOptionClick,\n                        postEvents: this.postOptionClickEvents\n                    }\n                };\n            }\n            options.push(option);\n        }\n\n        return options;\n    }\n\n    private async GetPropTransfersData(): Promise<FilteredCatalogData> {\n        const propTransfer = await this.ReadPropTransfers();\n        return {\n            type: \"prop-transfers\",\n            title: this.titled ? \"filtered.catalog.prop.transfer.heading\" : \"\",\n            options: propTransfer ? await this.GetPropTransferOptions(propTransfer) : []\n        };\n    }\n\n\n    public static FilterProgPropertyProgram(hirarchy: IProgPropertyProgram, filter: Array<string>, strategy: FilteredCatalogFilterStrategy = 'exact'): Array<IProgProperty> {\n        const properties: Array<IProgProperty> = [];\n        hirarchy.propertyKeyOrder?.forEach((propertyKey) => {\n            const property = hirarchy.children[propertyKey];\n            if (FilteredCatalogComponent.checkFilter([property.id], filter, strategy)) {\n                properties.push(property);\n            }\n        });\n        return properties;\n    }\n\n    private GetProperties(hirarchy: IProgPropertyProgram) {\n        let filter = this.filter;\n        if (this.selectedFilter.length > 0) {\n            if (this.filter.includes(this.selectedFilter)) {\n                filter = [this.selectedFilter];\n            } else {\n                filter = [];\n            }\n        }\n        return FilteredCatalogComponent.FilterProgPropertyProgram(hirarchy, filter, this.filterStrategy);\n    }\n\n    private GetPropertyOptions(property: IProgProperty): Array<FilteredCatalogOptionData> {\n        const options: Array<FilteredCatalogOptionData> = [];\n\n        const valueKeys = Object.keys(property.children);\n        for (let index = 0; index < valueKeys.length; ++index) {\n            const value = property.children[valueKeys[index]];\n            options.push({\n                txt: value.name,\n                img: value.alternativeImageUrl,\n                active: property.currentValue == value.propertyKey ? true : false,\n                clickData: {\n                    property: {\n                        manufacturer: window.g_article.manu,\n                        program: this.program,\n                        key: property.id,\n                        property: value.key,\n                        propertyKey: value.propertyKey,\n                        colorPicker: value.colorPicker\n                    },\n                    refresh: this.refreshOnOptionClick,\n                    postEvents: this.postOptionClickEvents\n                }\n            });\n        }\n        return options;\n    }\n\n    private async EachProperty(action: (property: IProgProperty) => void) {\n        const hirarchy: IProgPropertyProgram | undefined = await this.ReadProperties();\n        if (hirarchy) {\n            const properties: Array<IProgProperty> = this.GetProperties(hirarchy);\n            properties.forEach((property) => {\n                action(property);\n            });\n        }\n    }\n\n    private GetPropertyData(property: IProgProperty): FilteredCatalogData {\n        return {\n            type: \"properties\",\n            title: this.titled || this.propertyFilterButtons ? property.name : \"\",\n            options: this.GetPropertyOptions(property),\n            propertyFilterValue: property.id\n        };\n    }\n\n\n    private static ncrToUTF8(ncr: string) {\n        if (ncr && ncr.length > 0) {\n            return ncr.replace(/&#([0-9]+);/g, function (b) {\n                return String.fromCodePoint(parseInt(b.slice(2, -1)));\n            });\n        }\n        return ncr;\n    }\n\n    private async GetArticlesImage(imageName: string): Promise<string> {\n        if (imageName && imageName.length > 0) return await this.GetNodePrefix() + FilteredCatalogComponent.ncrToUTF8(imageName);\n        return \"\";\n    }\n\n    private async GetArticlesOptions(articles: Array<IArticleData>, additionalCategories: {\n        [article: string]: Array<string>\n    }): Promise<Array<FilteredCatalogOptionData>> {\n        const result = new Array<FilteredCatalogOptionData>();\n        for (let index = 0; index < articles.length; ++index) {\n            const article = articles[index];\n            result.push({\n                txt: article.artText ? article.artText : article.ArtNr,\n                img: await this.GetArticlesImage(article.imgName),\n                dimensions: {\n                    x: parseFloat(article.kataWidth),\n                    y: parseFloat(article.kataDepth),\n                    z: parseFloat(article.kataHeight)\n                },\n                clickData: {\n                    article: {\n                        nr: article.ArtNr,\n                        manufacturer: window.g_article.manu,\n                        program: this.program,\n                        fitting: this.articlesAreFittings\n                    },\n                    refresh: this.refreshOnOptionClick,\n                    postEvents: this.postOptionClickEvents\n                },\n                \"filter-categories\": additionalCategories[article.ArtNr]\n            });\n        }\n        return result;\n    }\n\n    private async ReadArticlesAdditonalCategories(): Promise<{ [article: string]: Array<string> }> {\n        const additionalCategories: { [article: string]: Array<string> } = {};\n        if (this.categoriesFilterButtons) {\n            for (const category of this.filter) {\n                const page = await CommunicationMessageService?.getKataPage(category.replace(\"dhcat_\", \"\"), \"\");\n                if (page) {\n                    for (const module of page.Modules) {\n                        for (const articleArray of module.Articles) {\n                            for (const article of articleArray) {\n                                const categories = article.CatString.split(\",\");\n\n                                if (additionalCategories[article.ArtNr] === undefined) {\n                                    additionalCategories[article.ArtNr] = new Array<string>();\n                                }\n\n                                for (const category of categories) {\n                                    if (this.filter.includes(category)) continue;\n                                    if (additionalCategories[article.ArtNr].includes(category) == false) {\n                                        additionalCategories[article.ArtNr].push(category);\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        return additionalCategories;\n    }\n\n    private async GetArticlesData(): Promise<FilteredCatalogData> {\n        const articlesData = await this.ReadArticlesData();\n        const additionalCategories = await this.ReadArticlesAdditonalCategories();\n\n        const categoriesTexts: { [category: string]: string } = {};\n        const definedFilterCategories = (await CommunicationMessageService?.getKataTreeJson()).definedFilterCategories;\n        for (const definedCategory of definedFilterCategories) {\n            categoriesTexts[definedCategory.id] = definedCategory.name;\n        }\n\n        return {\n            type: \"articles\",\n            title: this.titled ? \"filtered.catalog.articles.heading\" : \"\",\n            options: articlesData ? await this.GetArticlesOptions(articlesData, additionalCategories) : [],\n            catgoriesTexts: categoriesTexts\n        };\n    }\n\n    private async GetData(): Promise<Array<FilteredCatalogData>> {\n        if (this.program.length < 1) {\n            this.program = window.g_article.prog;\n        }\n\n        const result = new Array<FilteredCatalogData>();\n        for (const type of this.types) {\n            if (type === \"prop-transfers\") {\n                result.push(await this.GetPropTransfersData());\n            }\n            if (type === \"properties\") {\n                await this.EachProperty((property) => {\n                    result.push(this.GetPropertyData(property));\n                });\n            }\n            if (type === \"articles\") {\n                result.push(await this.GetArticlesData());\n            }\n        }\n        this.forceRefresh = false;\n        return result;\n    }\n\n    private getFilteredOptionsByDimension(dimensionsFilter: DimensionsFilter, options: Array<FilteredCatalogOptionData>, dimension: \"x\" | \"y\" | \"z\"): Array<FilteredCatalogOptionData> {\n        const filtered: Array<FilteredCatalogOptionData> = [];\n        options.forEach((option) => {\n            if (option.dimensions) {\n                if (dimensionsFilter[dimension].includes(option.dimensions[dimension])) {\n                    filtered.push(option);\n                }\n            }\n        });\n        return filtered;\n    }\n\n    private getFilteredOptionsByCategories(filter: Array<string>, options: Array<FilteredCatalogOptionData>) {\n        const hasAnyOf = function (left: Array<unknown>, right: Array<unknown>) {\n            for (const entry of right) {\n                if (left.includes(entry)) {\n                    return true;\n                }\n            }\n        };\n\n        if (this.categoriesButtonsFilter.length > 0) {\n            const filtered: Array<FilteredCatalogOptionData> = [];\n            options.forEach((option) => {\n                if (option[\"filter-categories\"]) {\n                    if (hasAnyOf(filter, option[\"filter-categories\"])) filtered.push(option);\n                }\n            });\n            return filtered;\n        }\n        return options;\n    }\n\n\n    private getFilteredOptions(categoriesFilter: Array<string>, dimensionsFilter: DimensionsFilter, options: Array<FilteredCatalogOptionData>): Array<FilteredCatalogOptionData> {\n        const categoriesFiltered: Array<FilteredCatalogOptionData> = this.getFilteredOptionsByCategories(categoriesFilter, options);\n        const xFiltered: Array<FilteredCatalogOptionData> = this.getFilteredOptionsByDimension(dimensionsFilter, options, \"x\");\n        const yFiltered: Array<FilteredCatalogOptionData> = this.getFilteredOptionsByDimension(dimensionsFilter, options, \"y\");\n        const zFiltered: Array<FilteredCatalogOptionData> = this.getFilteredOptionsByDimension(dimensionsFilter, options, \"z\");\n\n        const isResult = function (filteredArray: Array<FilteredCatalogOptionData>, optionData: FilteredCatalogOptionData, appendAction: CallableFunction) {\n            if (filteredArray.length > 0) {\n                if (filteredArray.includes(optionData)) {\n                    appendAction();\n                    return;\n                }\n                return;\n            }\n            appendAction();\n        };\n\n        const result = new Array<FilteredCatalogOptionData>();\n        if (categoriesFiltered.length > 0) {\n            categoriesFiltered.forEach((optionData) => {\n                isResult(xFiltered, optionData, () => {\n                    isResult(yFiltered, optionData, () => {\n                        isResult(zFiltered, optionData, () => {\n                            result.push(optionData);\n                        });\n                    });\n                });\n            });\n            return result;\n        }\n\n        if (xFiltered.length > 0) {\n            xFiltered.forEach((optionData) => {\n                isResult(yFiltered, optionData, () => {\n                    isResult(zFiltered, optionData, () => {\n                        result.push(optionData);\n                    });\n                });\n            });\n            return result;\n        }\n\n        if (yFiltered.length > 0) {\n            yFiltered.forEach((optionData) => {\n                isResult(zFiltered, optionData, () => {\n                    result.push(optionData);\n                });\n            });\n            return result;\n        }\n\n        if (zFiltered.length > 0) {\n            return zFiltered;\n        }\n\n        return result;\n    }\n\n    private createOption(optionData: FilteredCatalogOptionData): BaseFilteredCatalogOptionComponent | undefined {\n        const option = document.createElement(this.optionTag) as BaseFilteredCatalogOptionComponent;\n        option.setAttribute(\"txt\", optionData.txt);\n        option.setAttribute(\"img\", optionData.img);\n        if (optionData.active) {\n            option.setAttribute(\"active\", \"true\");\n        }\n        if (optionData.dimensions) {\n            option.setAttribute(\"dimensions\", JSON.stringify(optionData.dimensions));\n        }\n        if (this.showDimensions) {\n            option.setAttribute(\"show-dimensions\", \"\");\n        }\n        option.clickData = optionData.clickData;\n        option.dragable = this.optionsDraggable;\n        option.propertyModifyComponent = this.propertyModifyComponent;\n        if (optionData.remove) {\n            option.removeClickData = optionData.remove.clickData;\n            option.removeImg = optionData.remove.img;\n            option.removeTxt = optionData.remove.txt;\n            if (optionData.remove.icon != undefined) {\n                option.removeIcon = optionData.remove.icon;\n            }\n        }\n        return option;\n    }\n\n    private createTitle(text: string): HTMLElement | undefined {\n        if (this.propertyFilterButtons == false && text.length > 0) {\n            const title = document.createElement(\"fv-label\");\n            title.classList.add(\"filtered-catalog-data-title\");\n            title.classList.add(\"custom\");\n            title.setAttribute(\"i18n\", text);\n            title.innerText = text;\n            title.classList.add(\"custom\");\n            return title;\n        }\n        return undefined;\n    }\n\n\n    private createCategoriesFilterButtons(data: FilteredCatalogData, currentOptionsCount: number) {\n        const categories = new Array<string>();\n        for (const option of data.options) {\n            if (option[\"filter-categories\"]) {\n                for (const category of option[\"filter-categories\"]) {\n                    if (categories.includes(category) == false) {\n                        categories.push(category);\n                    }\n                }\n            }\n        }\n\n\n        const container = document.createElement(\"div\");\n        container.classList.add(\"categories-filter-container\");\n\n\n        let columns = this.style.getPropertyValue(\"--filter-columns-count\");\n        if (columns.length < 1) {\n            columns = \"6\";\n        }\n        const currentColumns = parseInt(columns);\n        if (currentColumns > categories.length) {\n            columns = categories.length.toFixed(0);\n        }\n        container.style.setProperty(\"--filter-columns-count\", columns);\n\n\n        if (categories.length > 1) {\n            for (const category of categories) {\n                const button = document.createElement(\"fv-button\");\n                button.innerHTML = data.catgoriesTexts && data.catgoriesTexts[category] ? data.catgoriesTexts[category] : category;\n                button.classList.add(\"filter-button\");\n                button.classList.add(\"bordered\");\n\n                let clickable = true;\n                if (this.categoriesButtonsFilter.includes(category)) {\n                    button.classList.add(\"active\");\n                } else {\n                    const filter = [...this.categoriesButtonsFilter, category];\n                    const result = this.getFilteredOptions(filter, this.dimensionsFilter, data.options);\n\n                    if ((this.categoriesButtonsFilter.length > 0 && result.length == currentOptionsCount) || result.length < 1) {\n                        button.classList.add(\"disabled\");\n                        button.setAttribute(\"disabled\", \"\");\n                        clickable = false;\n                    }\n                }\n\n                if (clickable) {\n                    button.addEventListener(\"click\", () => {\n                        if (button.classList.contains(\"active\")) {\n                            button.classList.remove(\"active\");\n\n                            const index = this.categoriesButtonsFilter.indexOf(category);\n                            if (index > -1) {\n                                this.categoriesButtonsFilter.splice(index, 1);\n                            }\n                            this.prepUpdate();\n                            this.requestUpdate();\n                            return;\n                        }\n                        button.classList.add(\"active\");\n                        if (this.categoriesButtonsFilter.includes(category) == false) {\n                            this.categoriesButtonsFilter.push(category);\n                        }\n                        this.prepUpdate();\n                        this.requestUpdate();\n                    });\n                }\n                container.appendChild(button);\n            }\n        }\n        return container;\n    }\n\n\n    private getDimensionFilterUnitifier(): number {\n        switch (this.dimensionsFilterUnit) {\n            case \"cm\":\n                return 0.1;\n            default:\n                return 1.0;\n        }\n    }\n\n    private createSingleDimensionFilterButtons(options: Array<number>, dimension: \"x\" | \"y\" | \"z\", data: FilteredCatalogData, currentOptionsCount: number) {\n        const unitifier = this.getDimensionFilterUnitifier();\n\n\n        const styles = getComputedStyle(this);\n        const columnsCount = parseInt(styles.getPropertyValue(\"--dimension-filter-columns-count\"));\n        const checkDimensionFilter = options.length > columnsCount;\n\n\n        const container = document.createElement(\"div\");\n        container.classList.add(\"dimension-filter-container\");\n        container.classList.add(dimension);\n\n\n        let columns = this.style.getPropertyValue(\"--filter-columns-count\");\n        if (columns.length < 1) {\n            columns = \"6\";\n        }\n        const currentColumns = parseInt(columns);\n        if (currentColumns > options.length) {\n            columns = options.length.toFixed(0);\n        }\n        container.style.setProperty(\"--filter-columns-count\", columns);\n\n\n        let empty = true;\n        options.forEach((option) => {\n            if (checkDimensionFilter) {\n                if (this.dimensionsFilterGroupOptions[dimension].includes(option) == false) {\n                    return;\n                }\n            }\n            empty = false;\n        });\n        if (empty) {\n            container.classList.add(\"hidden\");\n        }\n\n        options.forEach((option) => {\n            const button = document.createElement(\"fv-button\");\n            button.innerText = (option * unitifier).toFixed(1).replace(\".\", \",\");\n            button.classList.add(\"filter-button\");\n            button.classList.add(\"bordered\");\n            button.classList.add(option.toFixed(0));\n            // button.classList.add();\n            if (checkDimensionFilter) {\n                if (this.dimensionsFilterGroupOptions[dimension].includes(option) == false) {\n                    button.classList.add(\"hidden\");\n                }\n            }\n\n            let clickable = true;\n            if (this.dimensionsFilter[dimension].includes(option)) {\n                button.classList.add(\"active\");\n            } else {\n                const filter = {\n                    x: this.dimensionsFilter.x,\n                    y: this.dimensionsFilter.y,\n                    z: this.dimensionsFilter.z\n                };\n                filter[dimension] = [...this.dimensionsFilter[dimension], option];\n\n                const result = this.getFilteredOptions(this.categoriesButtonsFilter, filter, data.options);\n\n                if ((this.dimensionsFilter[dimension].length > 0 && result.length == currentOptionsCount) || result.length < 1) {\n                    button.classList.add(\"disabled\");\n                    button.setAttribute(\"disabled\", \"\");\n                    clickable = false;\n                }\n            }\n\n            if (clickable) {\n                button.addEventListener(\"click\", () => {\n                    if (button.classList.contains(\"active\")) {\n                        button.classList.remove(\"active\");\n\n                        const index = this.dimensionsFilter[dimension].indexOf(option);\n                        if (index > -1) {\n                            this.dimensionsFilter[dimension].splice(index, 1);\n                        }\n                        this.prepUpdate();\n                        this.requestUpdate();\n                        return;\n                    }\n                    button.classList.add(\"active\");\n                    if (this.dimensionsFilter[dimension].includes(option) == false) {\n                        this.dimensionsFilter[dimension].push(option);\n                    }\n                    this.prepUpdate();\n                    this.requestUpdate();\n                });\n            }\n            container.appendChild(button);\n        });\n        return container;\n    }\n\n    private createSingleDimensionFilterButtonsFilterButtons(options: Array<number>, dimension: \"x\" | \"y\" | \"z\", outerFilterButtonsContainer: HTMLElement) {\n        const unitifier = this.getDimensionFilterUnitifier();\n\n        const styles = getComputedStyle(this);\n        const groups: { [group: string]: Array<number> } = {};\n        const columnsCount = parseInt(styles.getPropertyValue(\"--dimension-filter-columns-count\"));\n        if (options.length > columnsCount) {\n            options.forEach((option) => {\n                const optionValue = option * unitifier;\n                const group = (optionValue - (optionValue % this.dimensionsFilterGroupValueRange)) / this.dimensionsFilterGroupValueRange;\n                const groupName = group.toString();\n\n                const keys = Object.keys(groups);\n                if (keys.includes(groupName)) {\n                    groups[groupName].push(option);\n                } else {\n                    groups[groupName] = [option];\n                }\n            });\n        }\n\n        const container = document.createElement(\"div\");\n        container.classList.add(\"dimension-filter-filter-container\");\n        const groupKeys = Object.keys(groups);\n        groupKeys.forEach((groupKey) => {\n            const button = document.createElement(\"fv-button\");\n            const groupid = parseInt(groupKey);\n            button.innerText = groupid * this.dimensionsFilterGroupValueRange + \" - \" + (groupid + 1) * this.dimensionsFilterGroupValueRange;\n            button.classList.add(\"bordered\");\n            button.classList.add(\"filter-button\");\n\n            let isActive = false;\n            groups[groupKey].forEach((option) => {\n                if (this.dimensionsFilterGroupOptions[dimension].includes(option)) {\n                    isActive = true;\n                }\n            });\n            if (isActive) {\n                button.classList.add(\"active\");\n            }\n\n            button.addEventListener(\"click\", () => {\n                const wasActive = button.classList.contains(\"active\");\n                const buttons = container.querySelectorAll(\"fv-button\");\n                buttons.forEach((button: Element) => {\n                    button.classList.remove(\"active\");\n                });\n                if (wasActive == false) {\n                    button.classList.add(\"active\");\n                }\n\n                let remove = false;\n                groups[groupKey].forEach((option) => {\n                    if (this.dimensionsFilterGroupOptions[dimension].includes(option)) {\n                        remove = true;\n                    }\n                });\n\n                this.dimensionsFilterGroupOptions[dimension] = [];\n                if (remove == false) {\n                    this.dimensionsFilterGroupOptions[dimension].push(...groups[groupKey]);\n                }\n\n                const optionFilterContainer = outerFilterButtonsContainer.querySelector(\".dimension-filter-container\" + \".\" + dimension);\n                if (optionFilterContainer) {\n                    optionFilterContainer.classList.remove(\"hidden\");\n\n                    let empty = true;\n                    const buttons = optionFilterContainer.querySelectorAll(\".filter-button\");\n                    buttons.forEach((button) => {\n                        button.classList.add(\"hidden\");\n\n                        this.dimensionsFilterGroupOptions[dimension].forEach((dimFilter: number) => {\n                            if (button.classList.contains(dimFilter.toFixed(0))) {\n                                button.classList.remove(\"hidden\");\n                                empty = false;\n                            }\n                        });\n                    });\n                    if (empty) {\n                        optionFilterContainer.classList.add(\"hidden\");\n                    }\n                }\n\n                this.prepUpdate();\n                this.requestUpdate();\n            });\n            container.appendChild(button);\n        });\n        return container;\n    }\n\n    private createSingleDimensionFilterButtonsTitle(txt: string) {\n        const title = document.createElement(\"fv-label\");\n        title.classList.add(\"title-label\");\n        title.innerText = txt;\n        title.setAttribute(\"i18n\", txt);\n        return title;\n    }\n\n    private createDimensionFilterButtons(data: FilteredCatalogData, currentOptionsCount: number) {\n        let x = new Array<number>();\n        let y = new Array<number>();\n        let z = new Array<number>();\n        data.options.forEach((option: FilteredCatalogOptionData) => {\n            if (option.dimensions) {\n                if (x.includes(option.dimensions.x) == false) x.push(option.dimensions.x);\n                if (y.includes(option.dimensions.y) == false) y.push(option.dimensions.y);\n                if (z.includes(option.dimensions.z) == false) z.push(option.dimensions.z);\n            }\n        });\n\n        x = x.sort((a, b) => a - b);\n        y = y.sort((a, b) => a - b);\n        z = z.sort((a, b) => a - b);\n\n        const container = document.createElement(\"div\");\n        container.classList.add(\"dimension-filter-buttons-container\");\n\n        const dimensionMap: { [key: string]: { dimData: Array<number>; dimension: \"x\" | \"y\" | \"z\" } } = {\n            B: {dimData: x, dimension: \"x\"},\n            T: {dimData: y, dimension: \"y\"},\n            H: {dimData: z, dimension: \"z\"},\n        };\n\n        for (const dimensionKey of DimensionHelper.DimensionsOrder) {\n            const dim = dimensionMap[dimensionKey];\n            if (dim && dim.dimData.length > 1) {\n                const titleLineContainer = document.createElement(\"div\");\n                titleLineContainer.classList.add(\"title-line-container\");\n\n                titleLineContainer.appendChild(this.createSingleDimensionFilterButtonsTitle(`filtered-catalog-dimension-filters-${dim.dimension}`));\n                titleLineContainer.appendChild(this.createSingleDimensionFilterButtonsFilterButtons(dim.dimData, dim.dimension, container));\n                container.appendChild(titleLineContainer);\n                container.appendChild(this.createSingleDimensionFilterButtons(dim.dimData, dim.dimension, data, currentOptionsCount));\n            }\n        }\n\n        return container;\n    }\n\n\n    private createFilterButtons(data: FilteredCatalogData, currentOptionsCount: number): FilteredCatalogComponentFilterButtons | undefined {\n        if (this.categoriesFilterButtons || this.dimensionsFilterButtons) {\n            const filterButtons = document.createElement(\"fv-filtered-catalog-filter-buttons\") as FilteredCatalogComponentFilterButtons;\n            filterButtons.Data = data;\n            filterButtons.OptionsCount = currentOptionsCount;\n            filterButtons.addCreateFilterButtonsFunction((data: FilteredCatalogData, currentOptionsCount: number) => this.createCategoriesFilterButtons(data, currentOptionsCount));\n            filterButtons.addCreateFilterButtonsFunction((data: FilteredCatalogData, currentOptionsCount: number) => this.createDimensionFilterButtons(data, currentOptionsCount));\n            return filterButtons;\n        }\n        return undefined;\n    }\n\n\n    private createOptionsWrapper(): HTMLElement | undefined {\n        let element = undefined;\n        if (this.mobile && this.mobileOptionsWrapperTag.length > 0) {\n            element = document.createElement(this.mobileOptionsWrapperTag);\n        } else if (this.optionsWrapperTag.length > 0) {\n            element = document.createElement(this.optionsWrapperTag);\n        }\n\n        if (element && this.classList.contains(\"hide-scrollbar\")) {\n            element.classList.add(\"hide-scrollbar\");\n        }\n        return element;\n    }\n\n    private finishParamsData: { [key: string]: { [key: string]: IProgPropertyFinishParams } } = {};\n\n    private async readFinishParamsData(force: boolean = false) {\n        if (this.finishParamsFilterButtons || force) {\n            this.finishParamsData = await CommunicationMessageService.getFinishParams({\n                manufacturer: window.g_article.manu,\n                program: this.program,\n                association: \"\"\n            });\n        }\n    }\n\n    private finishParamsPropertyValueFilter: { [finpara: string]: { [id: string]: Array<string> } } = {};\n\n    private createFinishParamFilterButton(filterButtonFinishParamsValue: {\n        auspraegung: string[],\n        text: string,\n        id: string\n    }, finpara: string): TemplateResult<1> {\n        const finparaClassSuffix = finpara.replaceAll(\".\", \"-\");\n        const filter = (e: Event) => {\n            const element = e.target as ButtonComponent;\n            if (this.finishParamsFilterLimitToOnePerPara) {\n                // disable all\n                this.renderRoot.querySelectorAll(\".finish-param-filter-button-\" + finparaClassSuffix).forEach((filterButton: Element) => {\n                    filterButton.classList.remove(\"active\");\n                });\n\n                if (this.finishParamsPropertyValueFilter[finpara] && this.finishParamsPropertyValueFilter[finpara][filterButtonFinishParamsValue.id]) {\n                    // is currently active\n                    delete this.finishParamsPropertyValueFilter[finpara];\n                } else {\n                    // currently not active\n                    element.classList.add(\"active\");\n                    this.finishParamsPropertyValueFilter[finpara] = {};\n                    this.finishParamsPropertyValueFilter[finpara][filterButtonFinishParamsValue.id] = filterButtonFinishParamsValue.auspraegung;\n                }\n            } else {\n                if (this.finishParamsPropertyValueFilter[finpara] && this.finishParamsPropertyValueFilter[finpara][filterButtonFinishParamsValue.id]) {\n                    delete this.finishParamsPropertyValueFilter[finpara][filterButtonFinishParamsValue.id];\n                    element.classList.remove(\"active\");\n                    if (Object.keys(this.finishParamsPropertyValueFilter[finpara]).length < 1) {\n                        delete this.finishParamsPropertyValueFilter[finpara];\n                    }\n                } else {\n                    if (!this.finishParamsPropertyValueFilter[finpara]) {\n                        this.finishParamsPropertyValueFilter[finpara] = {};\n                    }\n                    this.finishParamsPropertyValueFilter[finpara][filterButtonFinishParamsValue.id] = filterButtonFinishParamsValue.auspraegung;\n                    element.classList.add(\"active\");\n                }\n            }\n            this.prepUpdate();\n            this.requestUpdate();\n        };\n        return html`\n            <fv-button @click=\"${filter}\"\n                       class=\"filter-button bordered finish-param-filter-button-${finparaClassSuffix}\">\n                ${filterButtonFinishParamsValue.text ? filterButtonFinishParamsValue.text : filterButtonFinishParamsValue.id}\n            </fv-button>`;\n    }\n\n    private createFinishParamFilterButtonTypes(filterButtonFinishParams_: IProgPropertyFinishParams, key_: string): TemplateResult<1> {\n        const valueKeys = Object.keys(filterButtonFinishParams_.values);\n        return html`\n            <div class=\"finish-params-filter-type\">\n                <fv-label class=\"custom\">${filterButtonFinishParams_.text ? filterButtonFinishParams_.text : key_}\n                </fv-label>\n                <div class=\"finish-params-filter-buttons\">\n                    ${valueKeys.map((valueKey) => this.createFinishParamFilterButton(filterButtonFinishParams_.values[valueKey], key_))}\n                </div>\n            </div>\n        `;\n    }\n\n    private createFinishParamsFilterButtons(): TemplateResult<1> {\n        const finishKeys = Object.keys(this.finishParamsData);\n        if (this.finishParamsFilterButtons && finishKeys.length > 0) {\n            const filterButtonTypes: { [finpara: string]: IProgPropertyFinishParams } = {};\n            for (const key of finishKeys) {\n                const finparas = this.finishParamsData[key];\n                const finparaKeys = Object.keys(finparas);\n                for (const finparaKey of finparaKeys) {\n                    if (Object.keys(filterButtonTypes).includes(finparaKey)) {\n                        const finpara = finparas[finparaKey];\n                        const valueKeys = Object.keys(finpara.values);\n                        for (const valueKey of valueKeys) {\n                            const filterButtonTypeValueKeys = Object.keys(filterButtonTypes[finparaKey].values);\n                            if (filterButtonTypeValueKeys.includes(valueKey) == false) {\n                                filterButtonTypes[finparaKey].values[valueKey] = finpara.values[valueKey];\n                            }\n                        }\n                    } else {\n                        filterButtonTypes[finparaKey] = finparas[finparaKey];\n                    }\n                }\n            }\n            const filterButtonTypeKeys = Object.keys(filterButtonTypes);\n            return html`\n                <div class=\"finish-params-filter-types\">\n                    ${filterButtonTypeKeys.map((key) => this.createFinishParamFilterButtonTypes(filterButtonTypes[key], key))}\n                </div>`;\n        }\n        return html``;\n    }\n\n    private filterDataByFinishParamsFilterButtons(unfilteredData: Array<FilteredCatalogData>): Array<FilteredCatalogData> {\n        if (this.finishParamsFilterButtons) {\n            const filterValuesData: { [id: string]: Array<string> } = {};\n            const finparaKeys = Object.keys(this.finishParamsPropertyValueFilter);\n            for (const finparaKey of finparaKeys) {\n                const finpara = this.finishParamsPropertyValueFilter[finparaKey];\n                for (const proeprtyValueKey of Object.keys(finpara)) {\n                    filterValuesData[proeprtyValueKey] = finpara[proeprtyValueKey];\n                }\n            }\n\n            let possibleValues: Array<string> = [];\n            const possibleValueArrays = [];\n            const valueFilterKeys = Object.keys(filterValuesData);\n            for (const key of valueFilterKeys) {\n                possibleValueArrays.push(filterValuesData[key]);\n            }\n            if (possibleValueArrays.length > 0) {\n                possibleValues = possibleValueArrays.reduce((a, b) => a.filter(c => b.includes(c)));\n            }\n\n            if (Object.keys(filterValuesData).length > 0) {\n                const result: Array<FilteredCatalogData> = [];\n                if (possibleValues.length > 0) {\n                    for (const catalogData of unfilteredData) {\n                        const validOptions: Array<FilteredCatalogOptionData> = [];\n                        for (const option of catalogData.options) {\n                            if (option.clickData.property) {\n                                if (possibleValues.includes(option.clickData.property.property)) {\n                                    validOptions.push(option);\n                                }\n                            }\n                        }\n\n                        if (validOptions.length > 0) {\n                            const resultCatalogData = catalogData;\n                            resultCatalogData.options = validOptions;\n                            result.push(resultCatalogData);\n                        }\n                    }\n                }\n                return result;\n            }\n        }\n        return unfilteredData;\n    }\n\n    private propertyDataFilter: Array<string> = [];\n\n    private filterDataByPropertyFilterButtons(unfilteredData: Array<FilteredCatalogData>): Array<FilteredCatalogData> {\n        if (this.propertyFilterButtons) {\n            const result: Array<FilteredCatalogData> = [];\n            unfilteredData.forEach((data: FilteredCatalogData) => {\n                if (data.propertyFilterValue) {\n                    if (this.propertyDataFilter.includes(data.propertyFilterValue)) {\n                        result.push(data);\n                    }\n                }\n            });\n            return result;\n        }\n        return unfilteredData;\n    }\n\n    private getPropertyDataFilterButtons(unfilteredData: Array<FilteredCatalogData>): HTMLDivElement {\n        const container = document.createElement(\"div\");\n        container.classList.add(\"data-filter-buttons-container\");\n\n        if (this.finishParamsFilterButtons) {\n            const materialTitle = document.createElement(\"fv-label\");\n            materialTitle.classList.add(\"custom\");\n            materialTitle.setAttribute(\"i18n\", \"finish-params-filter-properties-title\");\n            materialTitle.innerText = \"finish-params-filter-properties-title\";\n            container.appendChild(materialTitle);\n        }\n\n        unfilteredData.forEach((data: FilteredCatalogData) => {\n            const filterValue = data.propertyFilterValue;\n            if (filterValue) {\n                const button = document.createElement(\"fv-button\");\n                button.innerText = data.title;\n                button.classList.add(\"filter-button\");\n                button.classList.add(\"bordered\");\n\n                if (this.propertyDataFilter.includes(filterValue)) {\n                    button.classList.add(\"active\");\n                }\n\n                button.addEventListener(\"click\", () => {\n                    const index = this.propertyDataFilter.indexOf(filterValue);\n                    if (index == -1) {\n                        if (this.propertyFilterButtonsLimitOneActive == false) {\n                            this.propertyDataFilter.push(filterValue);\n                        } else {\n                            this.propertyDataFilter = [filterValue];\n                        }\n                    } else {\n                        this.propertyDataFilter.splice(index, 1);\n                    }\n                    this.prepUpdate();\n                    this.requestUpdate();\n                });\n                container.appendChild(button);\n            }\n        });\n        return container;\n    }\n\n    private async fill(container: Element, dataArray: Array<FilteredCatalogData>, byFinishParamsFilteredDataArray: Array<FilteredCatalogData>) {\n        if (this.optionTag.length > 0) {\n            const results = new Array<HTMLElement>;\n\n            if (this.propertyFilterButtons) {\n                results.push(this.getPropertyDataFilterButtons(byFinishParamsFilteredDataArray));\n            }\n\n            dataArray.forEach((data: FilteredCatalogData) => {\n                const title = this.createTitle(data.title);\n                if (title !== undefined) results.push(title);\n\n                // const filteredOptions = this.getFilteredOptions(this.categoriesButtonsFilter, this.dimensionsFilter, data.options);\n                const filteredOptions = data[\"filtered-options\"] ? data[\"filtered-options\"] : data.options;\n                const filterButtons = this.createFilterButtons(data, filteredOptions.length);\n                if (filterButtons) {\n                    results.push(filterButtons);\n                }\n\n                const wrapper = this.createOptionsWrapper();\n                filteredOptions.forEach((option) => {\n                    const optionElement = this.createOption(option);\n                    if (optionElement) {\n                        if (wrapper) {\n                            wrapper.appendChild(optionElement);\n                        } else {\n                            results.push(optionElement);\n                        }\n                    }\n                });\n                if (wrapper) {\n                    results.push(wrapper);\n                }\n            });\n\n            container.innerHTML = \"\";\n            for (const result of results) {\n                container.appendChild(result);\n            }\n            if (this.scrollAble) {\n                this.scrollAble.scrollTo(0, this.topScrollDist);\n            }\n            this.dispatchEvent(new CustomEvent(\"filtered-catalog-filled\", {\n                bubbles: true,\n                composed: true,\n                detail: {\n                    empty: dataArray.length === 0,\n                    catalog: this\n                }\n            }))\n        }\n    }\n\n    isEmpty(): boolean {\n        const isEmpty = (element: Element) => {\n            const isEmptyFunc = (<any>element).isEmpty;\n            if(isEmptyFunc) return isEmptyFunc.call(element);\n            return element.childElementCount === 0\n        }\n        return Array.from(this.querySelectorAll(\"*\")).every(x => isEmpty(x));\n    }\n\n    private async init() {\n        await WebViewerService.IsAppReady;\n        await this.readFinishParamsData();\n        EventFactoryService.LastPOLoaded.register(() => {\n            this.Update();\n        });\n        EventFactoryService.RefreshPropertyPanel.register(() => {\n            this.Update();\n        })\n        this.requestUpdate();\n    }\n\n    constructor() {\n        super();\n        this.init();\n    }\n\n\n    private once = false;\n    private count = 0;\n    private oldDataArray: Array<FilteredCatalogData> | undefined = undefined;\n\n    private async prepareContainers(containersToPrepare: NodeListOf<Element>, containersToHide: NodeListOf<Element>) {\n        await WebViewerService.IsAppReady;\n\n\n        const unfilteredDataArray: Array<FilteredCatalogData> = await this.GetData();\n        const byFinishParamsFilteredDataArray: Array<FilteredCatalogData> = this.filterDataByFinishParamsFilterButtons(unfilteredDataArray);\n        const dataArray = this.filterDataByPropertyFilterButtons(byFinishParamsFilteredDataArray) as Array<FilteredCatalogData>;\n\n        const filteredOptionsDataArray = new Array<FilteredCatalogData>();\n        dataArray.forEach((data: FilteredCatalogData) => {\n            filteredOptionsDataArray.push({\n                title: data.title,\n                type: data.type,\n                options: data.options,\n                \"filtered-options\": this.getFilteredOptions(this.categoriesButtonsFilter, this.dimensionsFilter, data.options),\n                propertyFilterValue: data.propertyFilterValue,\n                catgoriesTexts: data.catgoriesTexts\n            });\n        });\n\n        if (this.once == false || JSON.stringify(filteredOptionsDataArray) != JSON.stringify(this.oldDataArray) || this.count < 3) {\n            containersToPrepare.forEach((container) => {\n                this.fill(container, filteredOptionsDataArray, byFinishParamsFilteredDataArray);\n                container.classList.remove(\"hidden\");\n            });\n            containersToHide.forEach((container) => {\n                container.classList.add(\"hidden\");\n            });\n\n            this.once = true;\n            this.oldDataArray = filteredOptionsDataArray;\n            ++this.count;\n        }\n    }\n\n    private topScrollDist = 0;\n    private scrollAble: HTMLElement | undefined = undefined;\n\n    private prepUpdate() {\n        this.scrollAble = ComponentService.findScrollableParent(this);\n        if (this.scrollAble) {\n            this.topScrollDist = this.scrollAble.scrollTop;\n        }\n    }\n\n    public async Update(forceReadFinishParamsData: boolean = false) {\n        this.forceRefresh = true;\n\n        this.prepUpdate();\n        await this.readFinishParamsData(forceReadFinishParamsData);\n        this.requestUpdate();\n    }\n\n    render(): TemplateResult<1> {\n        const mobileContainers = this.querySelectorAll(\"[slot='mobile-container']\");\n        const containers = this.querySelectorAll(\"[slot='container']\");\n\n        if (this.mobile) {\n            this.prepareContainers(mobileContainers, containers);\n            return html`${this.createFinishParamsFilterButtons()}\n            <slot name=\"before\"></slot>\n            <slot name=\"mobile-container\"></slot>`;\n        }\n        this.prepareContainers(containers, mobileContainers);\n        return html`${this.createFinishParamsFilterButtons()}\n        <slot name=\"before\"></slot>\n        <slot name=\"container\"></slot>`;\n    }\n}\n","import { html, TemplateResult } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../components/standard/base/base.component\";\nimport { EventHandlerService } from \"../../utils/event.handler.service\";\nimport { ComponentService } from \"../../utils/component.service\";\nimport { FilteredCatalogComponent } from \"./filtered-catalog.component\";\nimport {WebViewerService} from \"@dh-software/webui-api\";\nimport {IProgProperty, IProgPropertyProgram} from \"@dh-software/webui-types\";\n\n@customElement(\"fv-filtered-catalog-toggle-button\")\nexport class FilteredCatalogToggleButtonComponent extends BaseElement {\n    static styles = [\n        super.styles || []\n    ];\n\n    @property({ type: Array, reflect: true, attribute: \"fv-button-classes\" })\n    public buttonClasses: Array<string> = [];\n    @property({ type: Array, reflect: true, attribute: \"fv-button-toggle-attributes\" })\n    public buttonAttributes: Array<string> = [];\n    @property({ type: String, reflect: true, attribute: \"text-overwrite\" })\n    public textOverwrite = \"\";\n    @property({ type: String, reflect: true, attribute: \"selector\" })\n    public selector = \"\";\n    @property({ type: String, reflect: true, attribute: \"no-values-txt-id\" })\n    public noValuesTxtId = \"\";\n\n\n    private anyTargetsHidden = false;\n    private readTargetHiddenState() {\n        this.anyTargetsHidden = false;\n        const filteredCatalogs = ComponentService.findAll(\"fv-filtered-catalog\", this.selector);\n        for (const filteredCatalog of filteredCatalogs) {\n            if (filteredCatalog.classList.contains(\"hidden\")) {\n                this.anyTargetsHidden = true;\n            }\n        }\n        this.requestUpdate();\n    }\n\n    private propertyNames: Array<string> = [];\n    private async init() {\n        await WebViewerService.IsAppReady;\n        FilteredCatalogComponent.RegisterPropertiesReadEvent(async (dataValue: IProgPropertyProgram)=>{\n            const filteredCatalog = ComponentService.find(\"fv-filtered-catalog\", this.selector) as FilteredCatalogComponent;\n            const properties: Array<IProgProperty> = FilteredCatalogComponent.FilterProgPropertyProgram(dataValue, filteredCatalog.filter);\n            this.propertyNames = [];\n            for (const property of properties) {\n                this.propertyNames.push(property.name);\n            }\n            this.requestUpdate();\n        });\n        this.readTargetHiddenState();\n    }\n\n    constructor() {\n        super();\n        this.addEventListener(\"click\", (e: Event) => {\n            if (this.buttonAttributes.includes(\"disabled\") || this.buttonClasses.includes(\"disabled\")) {\n                e.preventDefault();\n                e.stopPropagation();\n                return;\n            }\n\n            EventHandlerService.dispatch(\"toggle-classes\", {\n                components: [{ name: \"fv-filtered-catalog\", selector: this.selector }],\n                classes: [\"hidden\"]\n            });\n\n            this.readTargetHiddenState();\n        });\n        this.init();\n    }\n\n    private makeString(array: Array<string>): string {\n        let result = \"\";\n        array.forEach((entry: string)=>{\n            result += \" \";\n            result += entry;\n        });\n        return result;\n    }\n\n    render(): TemplateResult<1> {\n        let text = html`NO TARGET FILTERED CATALOG FOUND!`;\n        if (this.textOverwrite.length > 0) {\n            text = html`${this.textOverwrite}`;\n        }\n        else {\n            this.classList.remove(\"hidden\");\n            if (this.propertyNames.length < 1) {\n                if (this.noValuesTxtId.length > 0) {\n                    return html`<fv-label class=\"no-values-txt\" i18n=\"${this.noValuesTxtId}\">${this.noValuesTxtId}</fv-label>`;\n                }\n                this.classList.add(\"hidden\");\n            }\n            text = html`${this.propertyNames.map((propName: string, index: number)=>html`${ index < 1 ? propName : \", \" + propName}`)}`;\n        }\n\n        const classes = new Array<string>;\n        classes.push(...this.buttonClasses);\n        classes.push(...this.buttonAttributes);\n        if (this.anyTargetsHidden == false) {\n            classes.push(\"active\");\n        }\n        return html`<fv-button class=\"${this.makeString(classes)}\">${text}</fv-button>`;\n    }\n}\n","import { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../../standard/base/base.component\";\nimport style from \"./base-filtered-catalog-option.component.sass?inline\";\nimport { ComponentService } from \"../../../../utils/component.service\";\nimport { EventHandlerDispatchEvent } from \"../../../../models/event-handler/event.handler.model\";\nimport { SikkensPickerComponent } from \"../../../colorpicker/sikkens\";\nimport { NcsPickerComponent } from \"../../../colorpicker/ncs\";\nimport { RalPickerComponent } from \"../../../colorpicker/ral\";\nimport {CommunicationMessageService, DragDropService} from \"@dh-software/webui-api\";\nimport {DragType, IColorPicker, IColorPickerChangeEventData, IDragOptions} from \"@dh-software/webui-types\";\nimport { EventHandlerEventData } from \"@dh-software/webui-configuration-parser\";\n\nexport interface FilteredCatalogClickData {\n    propTransfer?: {\n        id: string,\n        delete?: boolean,\n        manufacturer?: string\n        program?: string,\n        instanceIdents?: Array<string | number>\n    }\n    property?: {\n        manufacturer: string,\n        program: string,\n        key: string,\n        property: string,\n        propertyKey: string,\n        colorPicker?: IColorPicker\n    }\n    article?: {\n        nr: string,\n        manufacturer: string,\n        program: string,\n        fitting: boolean\n    }\n    refresh?: boolean,\n    postEvents?: Array<{\n        id: string,\n        data: EventHandlerEventData\n    }>\n}\n\nexport class BaseFilteredCatalogOptionComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({type: Object, reflect: true, attribute: \"click-data\"})\n    clickData: FilteredCatalogClickData = {};\n\n    @property({type: String, reflect: true})\n    img = \"\";\n\n    @property({type: String, reflect: true})\n    txt = \"\";\n\n    @property({type: Object, reflect: true})\n    dimensions: { x: number, y: number, z:number } = { x: 0, y: 0, z: 0 };\n\n    @property({type: String, reflect: true, attribute: \"drag-image\"})\n    dragImage = \"\";\n\n    @property({type: Boolean, reflect: true, attribute: \"show-dimensions\"})\n    showDimensions = false;\n\n    @property({type: Object, reflect: true, attribute: \"remove-click-data\"})\n    removeClickData: FilteredCatalogClickData | undefined = undefined;\n\n    @property({type: String, reflect: true, attribute: \"remove-icon\"})\n    removeIcon = \"\";\n\n    @property({type: String, reflect: true, attribute: \"remove-img\"})\n    removeImg = \"\";\n\n    @property({type: String, reflect: true, attribute: \"remove-txt\"})\n    removeTxt = \"\";\n\n    @property({type: Object, reflect: true, attribute: \"property-modify-component\"})\n    propertyModifyComponent = { click: false, dragdrop: false };\n\n    @property({type: Boolean, reflect: true})\n    active = false;\n\n    @property({type: Boolean, reflect: true})\n    dragable = false;\n\n    private scrollableParent: HTMLElement | undefined = undefined;\n\n    protected dragElement: Element = this;\n\n    protected _colorPicker: RalPickerComponent | NcsPickerComponent | SikkensPickerComponent | undefined;\n\n    private static async PropTransfer(clickData_: FilteredCatalogClickData) {\n        if (clickData_.propTransfer) {\n            if (clickData_.propTransfer.delete) {\n                await CommunicationMessageService.deletePropTransfer({\n                    manufacturer: clickData_.propTransfer.manufacturer ? clickData_.propTransfer.manufacturer : window.g_article.manu,\n                    program: clickData_.propTransfer.program ? clickData_.propTransfer.program : window.g_article.prog,\n                    instanceIdents: clickData_.propTransfer.instanceIdents ? clickData_.propTransfer.instanceIdents : [],\n                    id: clickData_.propTransfer.id\n                });\n                return;\n            }\n            await CommunicationMessageService.startPropTransfer(clickData_.propTransfer.id);\n            return;\n        }\n    }\n    private static async Property(clickData_: FilteredCatalogClickData, modifyComponent_: boolean) {\n        if (clickData_.property) {\n            await CommunicationMessageService.modifyProperty(JSON.stringify(clickData_.property), modifyComponent_ ? { modifyComponent: true } : undefined);\n            return;\n        }\n    }\n    private static async Article(clickData_: FilteredCatalogClickData) {\n        if (clickData_.article) {\n            if (clickData_.article.fitting) {\n                await CommunicationMessageService.loadFitting(clickData_.article.manufacturer, clickData_.article.program, clickData_.article.nr);\n                return;\n            }\n            await CommunicationMessageService.loadArticle(clickData_.article.manufacturer, clickData_.article.program, clickData_.article.nr);\n        }\n    }\n    private static async Refresh(clickData_: FilteredCatalogClickData) {\n        if (clickData_.refresh) {\n            window.dispatchEvent(new EventHandlerDispatchEvent({\n                async: false,\n                events: [{\n                    id: \"update-filtered-catalogs\",\n                    data: {\n                        components: [{ name: \"fv-filtered-catalog\", all: true }]\n                    }\n                }]\n            }));\n        }\n    }\n    private static async CallPostEvents(clickData_: FilteredCatalogClickData) {\n        if (clickData_.postEvents) {\n            window.dispatchEvent(new EventHandlerDispatchEvent({\n                async: false,\n                events: clickData_.postEvents\n            }));\n        }\n    }\n\n    protected static async PerformClick(clickData_: FilteredCatalogClickData, propertyModifyComponent_: boolean): Promise<void> {\n        await BaseFilteredCatalogOptionComponent.PropTransfer(clickData_);\n        await BaseFilteredCatalogOptionComponent.Property(clickData_, propertyModifyComponent_);\n        await BaseFilteredCatalogOptionComponent.Article(clickData_);\n        await BaseFilteredCatalogOptionComponent.Refresh(clickData_);\n        await BaseFilteredCatalogOptionComponent.CallPostEvents(clickData_);\n    }\n\n\n    protected async clicked(): Promise<void> {\n        await BaseFilteredCatalogOptionComponent.PerformClick(this.clickData, this.propertyModifyComponent.click);\n    }\n    protected async removeClicked(): Promise<void> {\n        if (this.removeClickData) {\n            await BaseFilteredCatalogOptionComponent.PerformClick(this.removeClickData, this.propertyModifyComponent.click);\n        }\n    }\n    private async triggerRemoveClick(e: Event): Promise<void> {\n        e.preventDefault();\n        e.stopPropagation();\n        e.stopImmediatePropagation();\n        await this.removeClicked();\n    }\n    protected async colorPickerChangeEvent(event: CustomEventInit<IColorPickerChangeEventData>) {\n        if (this.clickData?.property && event.detail) {\n            const data = event.detail;\n            const modifyOptions = {\n                modifyColorPicker: {\n                    code: data.code,\n                    rgb: `${data.rgba.r},${data.rgba.g},${data.rgba.b}`,\n                    key: this.clickData.property.propertyKey,\n                    id: this.clickData.property.key\n                },\n                modifyComponent: this.propertyModifyComponent.click,\n            };\n            await CommunicationMessageService.modifyProperty(JSON.stringify(this.clickData.property), modifyOptions);\n            return;\n        }\n    }\n\n    protected createColorPicker() {\n        if (this.clickData.property?.colorPicker) {\n            switch (this.clickData.property.colorPicker.type) {\n                case \"RAL\":\n                    this._colorPicker = new RalPickerComponent();\n                    break;\n                case \"NCS\":\n                    this._colorPicker = new NcsPickerComponent();\n                    break;\n                case \"SIKKENS\":\n                    this._colorPicker = new SikkensPickerComponent();\n                    break;\n            }\n\n            this._colorPicker?.addEventListener(\"colorChange\", async (event_: CustomEventInit<IColorPickerChangeEventData>) => {\n                await this.colorPickerChangeEvent(event_);\n            });\n        }\n    }\n\n    constructor() {\n        super();\n\n        this.addEventListener(\"click\", ()=>{\n            this.clicked();\n        });\n    }\n\n    protected buildRemoveButton(): TemplateResult<1> {\n        if (this.removeIcon && this.removeIcon.length > 0) {\n            return html`\n                <button class=\"remove-button\" @click=\"${this.triggerRemoveClick}\" ${this.removeTxt && this.removeTxt.length > 0 ? html`title=\"${this.removeTxt}\"` : html``}>\n                    <i part=\"icon\" class=\"icon ${this.removeIcon}\"></i>\n                </button>\n            `;\n        }\n        if (this.removeImg && this.removeImg.length > 0) {\n            return html`\n                <button class=\"remove-button\" @click=\"${this.triggerRemoveClick}\" ${this.removeTxt && this.removeTxt.length > 0 ? html`title=\"${this.removeTxt}\"` : html``}>\n                    <img src=\"${this.removeImg}\">\n                </button>\n            `;\n        }\n        return html`\n            <button class=\"remove-button\" @click=\"${this.triggerRemoveClick}\">\n                ${this.removeTxt}\n            </button>\n        `;\n    }\n\n    render(): TemplateResult<1> {\n        DragDropService.removeElement(this);\n        if (this.dragable) {\n            if (this.img.length > 0) {\n                this.setAttribute(\"drag-image\", this.img);\n            }\n            this.scrollableParent = ComponentService.findScrollableParent(this);\n            if (this.clickData.propTransfer) {\n                DragDropService.addElement(this, {\n                    id: this.clickData.propTransfer.id,\n                    type: DragType.PROPTRANSFER\n                }, this.scrollableParent);\n            }\n            else if (this.clickData.property) {\n                const data: IDragOptions = {\n                    id: this.clickData.property.key,\n                    extData: this.clickData.property,\n                    type: DragType.PROGPROPERTY\n                };\n                if (this.propertyModifyComponent.dragdrop) {\n                    data.options = { modifyComponent: true };\n                }\n                DragDropService.addElement(this, data, this.scrollableParent);\n            }\n            else if (this.clickData.article) {\n                let type = DragType.ARTICLE;\n                if (this.clickData.article.fitting) {\n                    type = DragType.FITTING;\n                }\n                DragDropService.addElement(this, {\n                    id: this.clickData.article.nr,\n                    type: type\n                }, this.scrollableParent);\n            }\n        }\n\n        if (this.removeClickData) {\n            return html`${this.buildRemoveButton()}`;\n        }\n        return html``;\n    }\n\n    protected updated(_changedProperties: PropertyValues): void {\n        super.updated(_changedProperties);\n\n        // if (this.dragable) { // TODO Maybe?\n        //     if (this.removeClickData) {\n        //         const button = this.renderRoot.querySelector(\".remove-button\");\n        //         if (button) {\n        //             if (this.removeClickData.propTransfer) {\n        //                 DragDropHelperService.addElement(button, {\n        //                     id: this.removeClickData.propTransfer.id,\n        //                     type: DragType.PROPTRANSFER\n        //                 }, this.scrollableParent);\n        //             }\n        //             if (this.removeClickData.property) {\n        //                 DragDropHelperService.addElement(button, {\n        //                     id: this.removeClickData.property.key,\n        //                     extData: this.removeClickData,\n        //                     type: DragType.PROGPROPERTY\n        //                 }, this.scrollableParent);\n        //             }\n        //             if (this.removeClickData.article) {\n        //                 let type = DragType.ARTICLE;\n        //                 if (this.removeClickData.article.fitting) {\n        //                     type = DragType.FITTING;\n        //                 }\n        //                 DragDropHelperService.addElement(button, {\n        //                     id: this.removeClickData.article.nr,\n        //                     type: type\n        //                 }, this.scrollableParent);\n        //             }\n        //         }\n        //     }\n        // }\n    }\n}\n","import { css, html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, query } from \"lit/decorators.js\";\nimport { BaseFilteredCatalogOptionComponent } from \"../../base/base-filtered-catalog-option.component\";\nimport style from \"./filtered-catalog-labled-img-option.component.sass?inline\";\nimport { IDimensionSortItem, DimensionHelper } from \"../../../../../utils/dimension-helper.class\";\nimport {LocaleService} from \"@dh-software/webui-api\";\n\n\n@customElement(\"fv-filtered-catalog-option-labled-img\")\nexport class FilteredCatalogLabledImgOption extends BaseFilteredCatalogOptionComponent {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @query(\".color-picker-container\")\n    private _colorPickerContainer: HTMLDivElement | undefined;\n\n    protected async clicked(): Promise<void> {\n        await super.clicked();\n    }\n\n    constructor() {\n        super();\n    }\n\n    private getDimensionDisplay(): TemplateResult<1> {\n        if (this.showDimensions && this.dimensions.x && this.dimensions.y && this.dimensions.z) {\n            const dimensionItems: IDimensionSortItem[] = [\n                { key :\"B\", value: this.dimensions.x, params: { label: \"181\" } },\n                { key :\"T\", value: this.dimensions.y, params: { label: \"182\" } },\n                { key :\"H\", value: this.dimensions.z, params: { label: \"183\" } },\n            ];\n            DimensionHelper.sortDimensionsByOrder(dimensionItems);\n\n            return html`\n                <div class=\"dimensions-container\">\n                    ${dimensionItems.map(item => html`\n                        <label class=\"dimensions\">\n                            ${LocaleService.translate(item.params.label as string)}: ${(item.value * 0.1).toFixed(2)} cm\n                        </label>\n                    `)}\n                </div>\n            `;\n        }\n        return html``;\n    }\n\n    protected getColorPickerDisplay(): TemplateResult<1> {\n        if (this.clickData.property?.colorPicker) {\n            if (!this._colorPicker) {\n                this.createColorPicker();\n            }\n\n            return html`\n                <div class=\"color-picker-icon fv-icon-colors\" @click=\"${this.openColorPicker}\"></div>\n                ${this.active ?\n                    html`\n                        <div class=\"color-picker-container\">\n                            <div class=\"cancel-button\" @click=\"${this.closeColorPicker}\">\n                                <span class=\"close-symbol\"></span>\n                            </div>\n                            ${this._colorPicker}\n                        </div>` : ``}\n                `;\n        }\n        return html``;\n    }\n\n    private openColorPicker() {\n        this._colorPickerContainer?.classList.remove(\"hidden\");\n    }\n\n    private closeColorPicker() {\n        this._colorPickerContainer?.classList.add(\"hidden\");\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            ${super.render()}\n            <div class=\"container${this.active ? \" active\" : \"\"}\">\n                ${this.img.length > 0 ? html`<div class=\"img-container\"><div class=\"img-inner-container\"><img src=\"${this.img}\"/></div></div>` : html``}\n                ${this.txt.length > 0 ? html`<div class=\"txt-container\"><label class=\"txt\">${this.txt}</label></div>` : html`${this.clickData.article}`}\n                ${this.getDimensionDisplay()}\n                ${this.getColorPickerDisplay()}\n            </div>\n        `;\n    }\n}\n","import { css, TemplateResult, html, unsafeCSS } from \"lit\";\nimport style from \"./filtered-catalog-filter-buttons.component.sass?inline\";\nimport { BaseElement } from \"../standard/base/base.component\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { FilteredCatalogData } from \"./filtered-catalog.component\";\n\n@customElement(\"fv-filtered-catalog-filter-buttons\")\nexport class FilteredCatalogComponentFilterButtons extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    private data: FilteredCatalogData = {\n        title: \"\",\n        type: \"\",\n        options: []\n    };\n    public set Data(data_: FilteredCatalogData) {\n        this.data = data_;\n    }\n    private optionsCount = 0;\n    public set OptionsCount(optionsCount_: number) {\n        this.optionsCount = optionsCount_;\n    }\n\n    private createFilterButtonsFunctions: Array<(data: FilteredCatalogData, currentOptionsCount: number)=>HTMLDivElement> = [];\n    public addCreateFilterButtonsFunction(createFunction_: (data: FilteredCatalogData, currentOptionsCount: number)=>HTMLDivElement) {\n        this.createFilterButtonsFunctions.push(createFunction_);\n    }\n\n    private createFilterButtons(): TemplateResult<1> {\n        return html`\n            ${this.createFilterButtonsFunctions.map((func)=>func(this.data, this.optionsCount))}\n        `;\n    }\n\n    private clickHideButton() {\n        const container = this.querySelector(\".filter-buttons-container\");\n        container?.classList.toggle(\"toggled-off\");\n\n        const styles = getComputedStyle(this);\n        let duration = 1000;\n        const durationString = styles.getPropertyValue(\"--filter-buttons-open-close-animation-duration\");\n        if (durationString.length > 0) {\n            if (durationString.includes(\"ms\")) {\n                duration = parseInt(durationString.replace(\"ms\", \"\"));\n            }\n            if (durationString.includes(\"s\")) {\n                duration = parseInt(durationString.replace(\"s\", \"\"));\n                duration *= 1000;\n            }\n        }\n        duration *= 0.5;\n\n        const hideButton = this.querySelector(\".hide-button\");\n        if (hideButton) {\n            setTimeout(() => {\n                hideButton.classList.toggle(\"fv-icon-eye-closed\");\n                hideButton.classList.toggle(\"fv-icon-eye\");\n            }, duration);\n        }\n    }\n    private createHideButton(): TemplateResult<1> {\n        return html`\n            <fv-button class=\"hide-button fv-icon-eye-closed\" @click=\"${this.clickHideButton}\" style=\"--fv-button-html-button-min-width:0px;--button-span-margin:0px;\"></fv-button>\n        `;\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            <div class=\"filter-buttons-container\">\n                <div class=\"filter-buttons-inner-container ${this.classList.contains(\"hide-scrollbar\") ? \"hide-scrollbar\" : \"\"}\">\n                    ${this.createFilterButtons()}\n                </div>\n                <div class=\"hide-button-container\">\n                    ${this.createHideButton()}\n                </div>\n            </div>\n        `;\n    }\n}","import {css, CSSResultGroup, html, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport style from \"./pdf-viewer.component.sass?inline\";\nimport {customElement, query} from \"lit/decorators.js\";\nimport {BaseElement} from \"../standard/base/base.component\";\nimport {WebViewerService} from \"@dh-software/webui-api\";\n\nclass PDFShadowDocument {\n    constructor(documentFragment: ShadowRoot) {\n        for (const key in document) {\n            if (documentFragment && (documentFragment as unknown as { [key: string]: unknown })[key]) {\n                if ((documentFragment as unknown as { [key: string]: unknown })[key] instanceof Function) {\n                    (this as unknown as { [key: string]: unknown })[key] = (...args: []) => {\n                        return (documentFragment as unknown as {\n                            [key: string]: (...args: []) => unknown\n                        })[key](...args);\n                    };\n                } else {\n                    try {\n                        (this as unknown as { [key: string]: unknown })[key] = (documentFragment as unknown as {\n                            [key: string]: unknown\n                        })[key];\n                    } catch (e) {\n                        console.error(e);\n                    }\n                }\n            } else {\n                try {\n                    if ((document as unknown as { [key: string]: unknown })[key] instanceof Function) {\n                        (this as unknown as { [key: string]: unknown })[key] = (...args: []) => {\n                            return (document as unknown as {\n                                [key: string]: (...args: []) => unknown\n                            })[key](...args);\n                        };\n                    } else {\n                        (this as unknown as { [key: string]: unknown })[key] = (document as unknown as {\n                            [key: string]: unknown\n                        })[key];\n                    }\n                } catch (e) {\n                    console.error(e);\n                }\n            }\n        }\n    }\n}\n\n@customElement(\"fv-pdf-viewer\")\nexport class PDFViewerComponent extends BaseElement {\n    static styles: CSSResultGroup[] = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @query(\".loading\")\n    private loadingIcon?: HTMLDivElement;\n\n    private opened = false;\n\n    constructor() {\n        super();\n    }\n\n    private body_position?: string;\n    private isInitialized?: Promise<boolean>;\n\n    private async initialize() {\n        await WebViewerService.IsAppReady;\n        if (this.isInitialized) {\n            await this.isInitialized;\n            return;\n        }\n        window.addEventListener(\"beforeprint\", () => {\n            this.dispatchEvent(new CustomEvent(\"onBeforePrint\", {}));\n        });\n        window.addEventListener(\"afterprint\", () => {\n            this.dispatchEvent(new CustomEvent(\"onAfterPrint\", {}));\n        });\n        this.loadingIcon?.classList.remove(\"hidden\");\n        this.isInitialized = new Promise((resolve, reject) => {\n            const pdfJS: HTMLScriptElement = this.shadowRoot?.appendChild(Object.assign(document.createElement(\"script\"), {src: window.location.origin + \"/pdfjs/build/pdf.js\"})) as HTMLScriptElement;\n            pdfJS.onload = () => {\n                // @ts-ignore\n                (window.pdfjsLib.GlobalWorkerOptions as {\n                    [key: string]: string\n                }).workerSrc = window.location.origin + \"/pdfjs/build/pdf.worker.js\";\n                this.shadowRoot?.appendChild(Object.assign(document.createElement(\"link\"), {\n                    rel: \"stylesheet\",\n                    href: window.location.origin + \"/pdfjs/web/viewer.css\"\n                }));\n                this.shadowRoot?.appendChild(Object.assign(document.createElement(\"link\"), {\n                    rel: \"resource\",\n                    type: \"application/l10n\",\n                    href: window.location.origin + \"/pdfjs/web/locale/locale.properties\"\n                }));\n                this.shadowRoot?.appendChild(Object.assign(document.createElement(\"script\"), {src: window.location.origin + \"/pdfjs/web/pdf_extension.js\"}));\n                const viewer: HTMLScriptElement = this.shadowRoot?.appendChild(Object.assign(document.createElement(\"script\"), {src: window.location.origin + \"/pdfjs/web/viewer.js\"})) as HTMLScriptElement;\n                viewer.onload = () => {\n                    resolve(true);\n                };\n                viewer.onerror = reject;\n            };\n            pdfJS.onerror = reject;\n        });\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        if (this.shadowRoot) { // @ts-ignore\n            window[\"pdfShadowDocument\"] = new PDFShadowDocument(this.shadowRoot);\n        }\n        this.initialize();\n    }\n\n    public close() {\n        // @ts-ignore\n        window[\"PDFViewerApplication\"].close();\n        this.opened = false;\n        this.classList.add(\"hidden\");\n        document.querySelector(\"html\")?.classList.remove(\"print\");\n        document.querySelector(\"body\")?.classList.remove(\"print\");\n        this.dispatchEvent(new CustomEvent(\"onClose\", {}));\n    }\n\n    public show() {\n        this.classList.remove(\"hidden\");\n        if (!this.opened) {\n            this.loadingIcon?.classList.remove(\"hidden\");\n        }\n        this.dispatchEvent(new CustomEvent(\"onShow\", {}));\n    }\n\n    public async open(url: string) {\n        await this.updateComplete;\n        await this.initialize();\n        document.querySelector(\"html\")?.classList.add(\"print\");\n        document.querySelector(\"body\")?.classList.add(\"print\");\n        this.loadingIcon?.classList.add(\"hidden\");\n        // @ts-ignore\n        window[\"PDFViewerApplication\"].open({url: url});\n        this.opened = true;\n        this.dispatchEvent(new CustomEvent(\"onOpen\", {}));\n    }\n\n    private print() {\n\n        if (this.opened) {\n            window.print();\n        }\n\n    }\n\n    private download() {\n        if (this.opened) {\n            // @ts-ignore\n            window[\"PDFViewerApplication\"].download({});\n        }\n    }\n\n    protected render(content: TemplateResult = html``) {\n        return html`\n            <button class=\"close-symbol\" @click=${this.close}></button>\n            <button class=\"print-symbol\" @click=${this.print}><i></i></button>\n            <button class=\"download-symbol\" @click=${this.download}><i></i></button>\n            <div class=\"loading hidden\"><i></i></div>\n            <div class=\"body\">\n                <div id=\"outerContainer\">\n                    <div id=\"loadingBar\">\n                        <div class=\"progress\">\n                            <div class=\"glimmer\">\n                            </div>\n                        </div>\n                    </div>\n                    <div id=\"mainContainer\">\n                        <div id=\"viewerContainer\" tabindex=\"0\">\n                            <div id=\"viewer\" class=\"pdfViewer\"></div>\n                        </div>\n                    </div> <!-- mainContainer -->\n\n                    <div id=\"dialogContainer\">\n                        <dialog id=\"printServiceDialog\" style=\"min-width: 200px;\">\n                            <div class=\"row\">\n                                <span data-l10n-id=\"print_progress_message\">Preparing document for printing…</span>\n                            </div>\n                            <div class=\"row\">\n                                <progress value=\"0\" max=\"100\"></progress>\n                                <span data-l10n-id=\"print_progress_percent\" data-l10n-args='{ \"progress\": 0 }'\n                                      class=\"relative-progress\">0%</span>\n                            </div>\n                            <div class=\"buttonRow\">\n                                <button id=\"printCancel\" class=\"dialogButton\"><span data-l10n-id=\"print_progress_close\">Cancel</span>\n                                </button>\n                            </div>\n                        </dialog>\n                    </div>  <!-- dialogContainer -->\n\n                </div> <!-- outerContainer -->\n                <div id=\"printContainer\"></div>\n            </div>\n        `;\n    }\n}\n","import { css, html, LitElement, PropertyValueMap, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./cloud-id.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { UtilService } from \"../../../utils/util.service\";\nimport { InputComponent } from \"../../standard/input\";\nimport { ConfirmingButtonComponent, ButtonComponent } from \"../../standard/button\";\nimport { CloudIdService } from \"../../../utils/cloud-id.service\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\nimport {UtilityService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-cloud-id\")\nexport class CloudIdComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Boolean, reflect: true, attribute: \"readonly\" })\n    public _readonly?: boolean;\n\n    @property({ type: String, reflect: true, attribute: \"observable\" })\n    private _observable?: string;\n\n    @property({ type: String, attribute: \"observe-attr\" })\n    private _observeAttr?: string;\n\n    @property({ type: Boolean, reflect: true, attribute: \"hide-button\" })\n    public _hideButton = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"loading\" })\n    public _loading = true;\n\n    @property({ type: Boolean, reflect: true, attribute: \"disable-fetch\" })\n    public _disableFetch = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"reset-ui-manu-prog\" })\n    public _resetUserinterfaceManuProg = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"clear-after-action\" })\n    public _clearAfterAction = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"icon-button\" })\n    public _iconButton = false;\n\n    @property({ type: String, reflect: true, attribute: \"button-title-text\" })\n    public _buttonTitleText = \"\";\n\n    private _observer?: MutationObserver;\n\n    @query(\"#cloud-id-input\")\n    private _cloudIDInput?: InputComponent;\n\n    @query(\"#action-button\")\n    private _actionButton?: ConfirmingButtonComponent | ButtonComponent;\n\n\n    constructor() {\n        super();\n\n        this.addHideStateUpdatedEventListener((value: boolean)=>{\n            if (!value) {\n                this.updateData();\n            }\n        });\n    }\n\n    protected updated(_changedProperties: PropertyValueMap<unknown>) {\n        super.updated(_changedProperties);\n\n        // const parentElement = (this._observable ? document.querySelector(this._observable) : this.parentElement) as LitElement;\n        // if (parentElement && this._observeAttr && !this._observer) {\n        //     this._observer = new MutationObserver(mutations => {\n        //         mutations.forEach(mutation => {\n        //             if (this._observeAttr && mutation.type === \"attributes\") {\n        //                 if ((mutation.attributeName === this._observeAttr && (mutation.target as LitElement).getAttribute(this._observeAttr) !== null) || (mutation.attributeName === \"class\" && !(mutation.target as LitElement).classList.contains(\"hidden\"))) { //TODO change Hidden\n        //                     this.updateData();\n        //                 }\n        //             }\n        //         });\n        //     });\n        //     this._observer.observe(parentElement, { attributes: true });\n        // }\n    }\n\n    get CloudID(): string {\n        return this._cloudIDInput?.value || \"\";\n    }\n\n    get MoveablePlaceHolder(): boolean {\n        return this.classList.contains(\"moveable-placeholder\")\n    }\n\n    get HoverButton(): boolean {\n        return this._actionButton !== undefined && this.classList.contains(\"custom-hover-border\");\n    }\n\n    public async updateData(): Promise<string> {\n        this._loading = true;\n\n        if (this._disableFetch) {\n            this._actionButton?.removeAttribute(\"disabled\");\n            this._loading = false;\n            if (this._actionButton instanceof ConfirmingButtonComponent) {\n                this._actionButton?.reset();\n            }\n            return \"\";\n        }\n\n        const cloudId = await CloudIdService.createCloudId();\n        if (cloudId != undefined) {\n            if (this._cloudIDInput) this._cloudIDInput.value = cloudId;\n            this._actionButton?.removeAttribute(\"disabled\");\n            this._loading = false;\n            if (this._actionButton instanceof ConfirmingButtonComponent) {\n                this._actionButton?.reset();\n            }\n            return cloudId;\n        }\n        if (this._cloudIDInput) this._cloudIDInput.value = \"\";\n        await UtilService.delay(5000);// try again if connection failed!\n        return this.updateData();\n        // return CommunicationMessageService.createCloudID().then((cloudId) => {\n        //     if (this._cloudIDInput) this._cloudIDInput.value = cloudId;\n        //     this._actionButton?.removeAttribute(\"disabled\");\n        //     this._loading = false;\n        //     return;\n        // });\n    }\n\n    private onChange() {\n        if (this._actionButton && this._actionButton)\n            if (CloudIdService.isCloudIdValid(this._cloudIDInput!.value.trim())) {\n                this._actionButton.removeAttribute(\"disabled\");\n            }\n            else {\n                this._actionButton.setAttribute(\"disabled\", \"\");\n            }\n    }\n\n    private async openCloudId() {\n        if (this._actionButton && this._cloudIDInput) {\n            if (this._actionButton.getAttribute(\"disabled\") === null) {\n                await UtilService.openCloudId(this._cloudIDInput.value, this._resetUserinterfaceManuProg);\n                await EventHandlerService.dispatchAsyncEvent(\"update-animation-toolbar-button\", {});\n                window.dispatchEvent(new CustomEvent(\"onCloudId\", { detail: { cloudid: this._cloudIDInput.value } }));\n            }\n        }\n    }\n\n    private async copyCloudId() {\n        if (this._cloudIDInput) {\n            await UtilityService.copyTextToClipboard(this._cloudIDInput.value);\n        }\n    }\n\n    private async clickButton() {\n        if (this._readonly) {\n            await this.copyCloudId();\n        }\n        else {\n            await this.openCloudId();\n        }\n\n        if (this._clearAfterAction && this._cloudIDInput) {\n            this._cloudIDInput.value = \"\";\n            this.onChange();\n        }\n\n        if (this._actionButton && this._actionButton instanceof ConfirmingButtonComponent) {\n            this._actionButton.confirm();\n            await UtilService.delay(3000);\n            this._actionButton.reset();\n        }\n    }\n\n    private createHideButton(): TemplateResult<1> {\n        if (!this._hideButton) {\n            if (this._iconButton) {\n                const buttonIcon = !this._readonly ? \"fv-icon-cloud-download\" : \"fv-icon-content-copy\";\n                return html`\n                    <fv-button\n                        id=\"action-button\"\n                        class=\"action-button ${this.HoverButton ? \"custom-hover-border\" : \"\"}\"\n                        i18n-title=\"${this._buttonTitleText}\"\n                        @click=\"${this.clickButton}\"\n                        disabled\n                        icon=\"${buttonIcon}\">\n                    </fv-button>`;\n            }\n            const readOnly = !this._readonly ? \"20011\" : \"fs.broadcaster.copy_tooltip\";\n            const confirmTxt = !this._readonly ? \"fv.opened\" : \"fv.copied\";\n            return html`\n                <fv-confirming-button\n                    id=\"action-button\"\n                    class=\"action-button\"\n                    i18n-title=\"${this._buttonTitleText}\"\n                    txt=\"${readOnly}\"\n                    confirm-txt=\"${confirmTxt}\"\n                    @click=\"${this.clickButton}\"\n                    disabled>\n                </fv-confirming-button>`;\n        }\n        return html``;\n    }\n\n    render(): TemplateResult<1> {\n        const titleText = !this._readonly ? \"fv.modal.open_existing_planning_number\" : \"fv.modal.your_planning_number\";\n        return html`\n        ${!this.MoveablePlaceHolder ? html`<fv-label i18n=\"${titleText}\"></fv-label>` : html``}\n        <fv-input\n            id=\"cloud-id-input\"\n            @change=\"${this.onChange}\"\n            ?readonly=${this._readonly}\n            ?moveable-placeholder=${this.MoveablePlaceHolder}\n            label=\"${titleText}\"\n            placeholder=\"${this.MoveablePlaceHolder ? titleText : \"\"}\">\n                ${this._loading ? html`<div class=\"loader-container\"><slot name=\"loader\"></slot></div>` : html``}\n                ${this.createHideButton()}\n        </fv-input>`\n    }\n\n    firstUpdated() {\n        if (!this._readonly && this._disableFetch) {\n            this._loading = false;\n        }\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./download.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport { ButtonComponent } from \"../../standard/button\";\nimport { EventHandlerService } from \"../../../utils/event.handler.service\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { DropDownComponent } from \"../../standard/dropdown\";\nimport { SessionStorageService } from \"../../../utils/session-storage.service\"\n\n@customElement(\"fv-download\")\nexport class DownloadComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @query(\"#action-button\")\n    private _actionButton?: ButtonComponent;\n\n    @query(\"#action-type\")\n    private _actionTypeDropdown?: DropDownComponent;\n\n    @property({ type: Boolean, reflect: true, attribute: \"without-text\" })\n    private _withoutText = false;\n\n    @property({ type: Array, state: true })\n    private _downloadTypes: Array<string> = [];\n\n    @property({ type: Boolean, reflect: true, attribute: \"bordered-button\" })\n    private _borderedButton = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"custom-hover-button\" })\n    private _customHoverButton = false;\n\n    @property({ type: Boolean, reflect: true, attribute: \"custom-click-button\" })\n    private _customClickButton = false;\n\n    @property({ type: String, reflect: true, attribute: \"button-text\" })\n    private _buttonText = \"20244\";\n\n    @property({ type: String, reflect: true, attribute: \"button-type\" })\n    private _buttonType = \"pdf\";\n\n    @property({ type: Boolean, reflect: true, attribute: \"furncloud-request\" })\n    private _isFurncloudRequest = false;\n\n    @property({ type: String, reflect: true, attribute: \"session-storage-key\" })\n    private _sessionStorageKey = \"\";\n\n    @property({ type: String, reflect: true, attribute: \"password-modal-query\" })\n    private _passwordModalQuery = \".general-modal\";\n\n    @property({ type: String, reflect: true, attribute: \"password-modal-mask\" })\n    private _passwordModalMask = \"password-mask\";\n\n    set DownloadTypes(value: Array<string>) {\n        this._downloadTypes = value;\n    }\n\n    constructor() {\n        super();\n    }\n\n    private async downloadFile() {\n        const fileType = this._downloadTypes?.length === 0 ? this._buttonType || \"pdf\" : this._actionTypeDropdown?.value || \"pdf\";\n        if (this._isFurncloudRequest) {\n            const hasFurncloudPassword = SessionStorageService.has(this._sessionStorageKey);\n            if (!hasFurncloudPassword) {\n                EventHandlerService.dispatch(\"open-modal\", {\n                    query: this._passwordModalQuery,\n                    mask: this._passwordModalMask,\n                    data: {\n                        eventsToDispatch: [\n                            {\n                                id: \"download-furncloud-file\",\n                                data: {\n                                    fileType: fileType,\n                                    sessionStorageKey: this._sessionStorageKey\n                                }\n                            }\n                        ],\n                        sessionStorageKey: this._sessionStorageKey,\n                    }\n                });\n            }\n            else {\n                EventHandlerService.dispatch(\"download-furncloud-file\", {\n                    fileType: fileType,\n                    sessionStorageKey: this._sessionStorageKey\n                });\n            }\n        }\n        else {\n            EventHandlerService.dispatch(\"download-generated-file\", {\n                fileType: fileType,\n                lastCloudID: true,\n                currentTarget: this._actionButton,\n            });\n        }\n    }\n\n    render(): TemplateResult<1> {\n        const dropdownTypeClass = {\n            hidden: (this._downloadTypes?.length === 0)\n        };\n        const buttonClasses = {\n            bordered: this._borderedButton,\n            \"custom-hover-border\": this._customHoverButton,\n            \"custom-click-color\": this._customClickButton\n        };\n        return html`\n            <div class=\"container column ${this._withoutText ? \"hidden\" : \"\"}\">\n                <fv-label class=\"header space after\" i18n=\"20244\"></fv-label>\n                <fv-label class=\"space after\" i18n=\"fv.modal.download.text\"></fv-label>\n            </div>\n            <div class=\"container row\">\n                <fv-dropdown class=\"${classMap(dropdownTypeClass)}\" id=\"action-type\"></fv-dropdown>\n                <fv-button id=\"action-button\" i18n=\"${this._buttonText}\"\n                           class=${classMap(buttonClasses)}\n                           @click=\"${this.downloadFile}\">\n                    <fv-loading slot=\"loader-slot\"></fv-loading>\n                </fv-button>\n            </div>\n        `;\n    }\n}\n","import { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../standard/base/base.component\";\nimport { PropertyValues, TemplateResult, css, html, unsafeCSS } from \"lit\";\nimport style from \"./legend.component.sass?inline\";\nimport {LocaleService} from \"@dh-software/webui-api\";\n\nexport interface LegendEntry {\n    key: string,\n    value: string\n}\n\n@customElement(\"fv-legend\")\nexport class LegendComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Array, reflect: true, attribute: \"entries\" })\n    public entries?: LegendEntry[]\n\n    constructor() {\n        super();\n        LocaleService.Register(this);\n    }\n\n    protected render(): TemplateResult<1> {\n        return html`<fv-flex-container class=\"legend-column\">\n            ${this.entries?.map((x) => \n            {\n                 return html`<fv-flex-container class=\"legend-row\"><fv-label i18n=\"${x.key}\">${x.key}</fv-label><fv-label i18n=\"${x.value}\">${x.value}</fv-label></fv-flex-container>`;\n            })}\n        </fv-flex-container>`;\n    }\n}\n","import { BaseElement } from \"../standard/base/base.component\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { html, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\n\nimport style from \"./external-widget.compoent.sass?inline\";\nimport {IGetWidgetPositionParams} from \"@dh-software/webui-types\";\nimport {CommunicationMessageService} from \"@dh-software/webui-api\";\n\n@customElement(\"fv-external-widget\")\nexport class ExternalWidgetComponent extends BaseElement {\n\n    static styles = [super.styles || [], unsafeCSS(style)];\n\n    private _timer?: number;\n\n    @property({ type: Array, reflect: true, attribute: \"instance-idents\" })\n    public _instanceIdents?: Array<number>;\n\n    @property({ type: Object, reflect: true, attribute: \"position-vector\" })\n    public _positionVector?: IGetWidgetPositionParams;\n\n    @property({ type: Boolean, reflect: true, attribute: \"check-frustum\" })\n    public _checkFrustum: boolean = false;\n\n    @property({ type: Number, reflect: true, attribute: \"update-timeout\" })\n    public _updateTimeout?: number = 100;\n\n    protected firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        this.createUpdateScheduler();\n    }\n\n    disconnectedCallback(): void {\n        this.cancelUpdateScheduler();\n        super.disconnectedCallback();\n    }\n\n    render(): TemplateResult<1> {\n        return html`\n            <slot></slot>\n        `;\n    }\n\n    protected updated(_changedProperties: PropertyValues) {\n        if (_changedProperties.has(\"_updateTimeout\")) {\n            this.createUpdateScheduler();\n        }\n        super.updated(_changedProperties);\n    }\n\n    private async onUpdate() {\n        if (this._positionVector) {\n            const position = await CommunicationMessageService.getWidgetPosition(this._instanceIdents || [], this._positionVector, this.getBoundingClientRect());\n            if (position && position.length) {\n                const item = position[0];\n                this.style.top = item.y;\n                this.style.left = item.left ? item.x : \"\";\n                this.classList.remove(\"hidden\");\n                if (!item.pointer && this._checkFrustum) {\n                    this.classList.add(\"hidden\");\n                }\n            }\n        }\n    }\n\n    private createUpdateScheduler() {\n        if (this._timer) {\n            this.cancelUpdateScheduler();\n        }\n        this._timer = window.setInterval(this.onUpdate.bind(this), this._updateTimeout);\n    }\n\n    private cancelUpdateScheduler() {\n        if (this._timer) {\n            window.clearInterval(this._timer);\n            this._timer = undefined;\n        }\n    }\n\n}\n","import { BaseElement } from \"../base/base.component\";\nimport { css, html, PropertyDeclaration, PropertyValues, unsafeCSS } from \"lit\";\nimport style from \"./manu-prog-info.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport {CommunicationMessageService, EventHandler, EventService} from \"@dh-software/webui-api\";\nimport {ifDefined} from \"lit/directives/if-defined.js\";\nimport {ManuProgService} from \"../../../utils/manu-prog.service\";\n\n@customElement(\"fv-manu-prog-info\")\nexport class ManuProgInfoComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Boolean, reflect: true, attribute: \"show-manu-name\" })\n    public showManuName = true;\n\n    @property({ type: Boolean, reflect: true, attribute: \"show-prog-name\" })\n    public showProgName = true;\n\n    @property({type: String, reflect: true, attribute: \"label-class\" })\n    public labelClass = \"\";\n\n    private _manufacturerName = \"\";\n    private _programName = \"\";\n\n    constructor() {\n        super();\n        EventService.register(this);\n    }\n\n    @EventHandler(\"set-manu-prog\")\n    private onManuProgChanged() {\n        this.requestUpdate();\n    }\n\n    private async fetchDisplayNames() {\n        const manufacturer = await ManuProgService.getManufacturer()\n        const program = await ManuProgService.getProgram();\n        const displayNames = await CommunicationMessageService.getDisplayNameManuProg(manufacturer.toLowerCase(), program.toLowerCase());\n        if (displayNames) {\n            this._manufacturerName = displayNames.ManuL;\n            this._programName = displayNames.ProgL;\n        }\n    }\n\n    private renderManuProgText() {\n        return html`\n            ${(this.showManuName || this.showProgName)\n                ? html`<fv-label class=\"${ifDefined(this.labelClass)}\">${this.showManuName ? this._manufacturerName : ''} ${this.showProgName ? this._programName : ''}</fv-label>`\n                : ``}\n        `;\n    }\n\n    protected async firstUpdated(_changedProperties: PropertyValues) {\n        await this.fetchDisplayNames();\n        super.firstUpdated(_changedProperties);\n    }\n\n    async requestUpdate(name?: PropertyKey, oldValue?: unknown, options?: PropertyDeclaration) {\n        await this.fetchDisplayNames();\n        super.requestUpdate(name, oldValue, options);\n    }\n\n    protected render() {\n        return this.renderManuProgText();\n    }\n}\n","import { css, html, PropertyValueMap, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./select.component.sass?inline\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\nimport { SelectionChangeEventInit } from \"./select-option.component\";\nimport { InputComponent } from \"../input/input/input.component\";\n\n\nexport type PopUpChangeEventInit = CustomEventInit<{ open: boolean, element: SelectComponent }>;\nclass PopUpChangeEvent extends CustomEvent<{ open: boolean, element: SelectComponent }> {\n    constructor(open: boolean, element: SelectComponent) {\n        super(\"popupchange\", {\n            bubbles: true,\n            composed: true,\n            detail: { open: open, element: element }\n        } as PopUpChangeEventInit);\n    }\n}\n\n@customElement(\"fv-select\")\nexport class SelectComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true, attribute: \"selected\" })\n    public selected: string | undefined = undefined;\n\n    @property({ type: String, reflect: true, attribute: \"selected-display-value\" })\n    public selectedDisplayValue: string | undefined = undefined;\n\n    @property({ type: String, reflect: true, attribute: \"placeholder\" })\n    public placeholder: string | undefined = \"\";\n\n    @property({ type: Number, reflect: true, attribute: \"max-amount-select-by-buttons\" })\n    public maxAmountSelectByButtons = 3;\n\n    @property({ type: Boolean, reflect: true, attribute: \"open\" })\n    public open = false;\n\n    @property({ type: Number, reflect: true, attribute: \"close-on-selection-max-options-count\" })\n    public closeOnSelectionMaxOptionsCount = 2;\n\n    @query(\".options-popup\")\n    protected optionsPopup: HTMLDivElement | undefined;\n\n    @query(\"fv-input\")\n    protected input: InputComponent | undefined;\n\n    @query(\".select-button\")\n    protected selectButton: HTMLDivElement | undefined;\n\n\n    constructor() {\n        super();\n\n        this.addEventListener(\"selectionchange\", (event: SelectionChangeEventInit)=>{\n            if (event.detail && this.input) {\n                this.selected = event.detail.option;\n                this.selectedDisplayValue = event.detail.element.displayValue != undefined ? event.detail.element.displayValue : this.selected;\n                this.input.value = this.selectedDisplayValue;\n                if (this.closeOnSelectionMaxOptionsCount < this.children.length) {\n                    this.openPopup();\n                }\n                else {\n                    // this.input?.closePopup();\n                }\n            }\n        });\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n\n        this.input?.addEventListener(\"blur\", ()=>{\n            this.open = false;\n            this.dispatchEvent(new PopUpChangeEvent(this.open, this));\n        });\n    }\n\n    protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n        super.updated(_changedProperties);\n\n        this.childNodes.forEach(child => {\n            if (!(child instanceof HTMLElement)) return;\n            if (!child.hasAttribute(\"option\")) return;\n\n\n            if (this.children.length > this.maxAmountSelectByButtons) {\n                child.setAttribute(\"option-in-popup\", \"\");\n            }\n            else {\n                child.removeAttribute(\"option-in-popup\");\n            }\n\n\n            const optionDuringUpdate = child.getAttribute(\"option\");\n            if (this.selected == optionDuringUpdate) {\n                child.setAttribute(\"selected-option\", \"\");\n            }\n            else {\n                child.removeAttribute(\"selected-option\");\n            }\n        });\n    }\n\n    public attributeChangedCallback(name: string, _old: string | null, value: string | null): void {\n        super.attributeChangedCallback(name, _old, value);\n\n        if (name === \"open\") {\n            if (this.optionsPopup && this.selectButton) {\n                if (value != undefined) {\n                    this.optionsPopup.classList.add(\"open\");\n                    this.selectButton.classList.add(\"open\");\n                }\n                else {\n                    this.optionsPopup.classList.remove(\"open\");\n                    this.selectButton.classList.remove(\"open\");\n                }\n            }\n        }\n    }\n\n    protected openPopup(event?: Event) {\n        event?.stopPropagation();\n        event?.stopImmediatePropagation();\n        event?.preventDefault();\n\n        this.open = !this.open;\n        this.dispatchEvent(new PopUpChangeEvent(this.open, this));\n        if (this.open) {\n            this.input?.focus();\n        }\n    }\n\n    render(): TemplateResult<1> {\n        if (this.children.length > this.maxAmountSelectByButtons) {\n            return html`\n                <div class=\"select\">\n                    <div class=\"select-button\" @click=\"${this.openPopup}\">\n                        <fv-input placeholder=\"${this.placeholder ? this.placeholder : \"\"}\" readonly value=\"${this.selectedDisplayValue ? this.selectedDisplayValue : (this.selected ? this.selected : \"\")}\"></fv-input>\n                        <div class=\"select-button-arrow\"><fv-arrow-component></fv-arrow-component></div>\n                    </div>\n                    <div class=\"options-popup\"><fv-flex-container><slot></slot></fv-flex-container></div>\n                </div>\n            `;\n        }\n        return html`<fv-flex-container class=\"buttons-container\"><slot></slot></fv-flex-container>`;\n    }\n}","import { css, html, PropertyValueMap, PropertyValues, TemplateResult, unsafeCSS } from \"lit\";\nimport style from \"./select-option.component.sass?inline\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../base/base.component\";\n\n\nexport type SelectionChangeEventInit = CustomEventInit<{ option: string, element: SelectOptionComponent }>;\nclass SelectionChangeEvent extends CustomEvent<{ option: string, element: SelectOptionComponent }> {\n    constructor(option: string, element: SelectOptionComponent) {\n        super(\"selectionchange\", {\n            bubbles: true,\n            composed: true,\n            detail: { option: option, element: element }\n        } as SelectionChangeEventInit);\n    }\n}\n\n\n@customElement(\"fv-select-option\")\nexport class SelectOptionComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: String, reflect: true, attribute: \"option\" })\n    public option: string | undefined = undefined;\n\n    @property({ type: String, reflect: true, attribute: \"display-value\" })\n    public displayValue: string | undefined = undefined;\n\n    constructor() {\n        super();\n\n        this.addEventListener(\"click\", ()=>{\n            if (this.option) {\n                this.dispatchEvent(new SelectionChangeEvent(this.option, this));\n            }\n            else {\n                console.error(\"option attribute was not defined on:\", this);\n            }\n        });\n    }\n\n    protected firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n    }\n\n    protected updated(_changedProperties: PropertyValueMap<unknown> | Map<PropertyKey, unknown>): void {\n        super.updated(_changedProperties);\n    }\n\n    render(): TemplateResult<1> {\n        return html`<slot></slot>`;\n    }\n}","import {BaseElement} from \"../standard/base/base.component\";\nimport {customElement} from \"lit/decorators.js\";\nimport {html, PropertyValues, unsafeCSS} from \"lit\";\nimport {ConfigurationService, WebViewerService} from \"@dh-software/webui-api\";\nimport style from \"./webviewer.component.sass?inline\";\n\n@customElement('fv-webviewer')\nexport class WebViewerComponent extends BaseElement {\n\n    static styles = [\n        super.styles || [],\n        unsafeCSS(style)\n    ]\n\n    protected async firstUpdated(_changedProperties: PropertyValues) {\n        super.firstUpdated(_changedProperties);\n        await ConfigurationService.Initialized;\n        WebViewerService.initialize(this.shadowRoot?.querySelector('iframe') || undefined);\n    }\n\n    render() {\n        return html`\n            <iframe></iframe>\n        `\n    }\n\n}\n","import {css, html, PropertyValues, TemplateResult, unsafeCSS} from \"lit\";\nimport {customElement, property} from \"lit/decorators.js\";\nimport {BaseElement} from \"../../standard/base/base.component\";\nimport style from \"./pagination.component.sass?inline\";\nimport {EventHandlerService} from \"../../../utils/event.handler.service\";\nimport {EventHandlerEvent} from \"../../../models/event-handler/event.handler.model\";\nimport {classMap} from \"lit/directives/class-map.js\";\n\nexport type PaginationEvent = EventHandlerEvent & { userInteraction?: boolean };\n\nexport interface IPaginationEvents {\n    [key: number]: PaginationEvent[];\n\n    first?: PaginationEvent[];\n    last?: PaginationEvent[];\n    any?: PaginationEvent[];\n}\n\n@customElement(\"fv-pagination\")\nexport class PaginationComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({type: Number, reflect: true})\n    public current: number = 0;\n\n    @property({type: Number, reflect: true})\n    public total: number = 0;\n\n    @property({type: Boolean, reflect: true, attribute: \"auto-hide-slots\"})\n    public autoHideSlots = false;\n\n    @property({type: Object, reflect: false})\n    public events: IPaginationEvents = {};\n\n    @property({type: Boolean, reflect: true, attribute: \"prevent-empty-handler-selection\"})\n    public preventEmptyHandlers = false;\n\n    @property({type: Boolean, reflect: true, attribute: \"prevent-default-handler\"})\n    public preventDefaultHandlers = false;\n\n    private _beforeFirstElement: Element | null = null;\n    private _afterFirstElement: Element | null = null;\n\n    /** True only while a page change originated from a user click. */\n    private _isUserInteraction = false;\n\n    private readonly _prevHandler = () => {\n        !this.preventDefaultHandlers && this.handlePageClick(Math.max(0, this.current - 1));\n    };\n    private readonly _nextHandler = () => {\n        !this.preventDefaultHandlers && this.handlePageClick(Math.min(this.total - 1, this.current + 1));\n    };\n\n    protected firstUpdated(_changedProperties: PropertyValues): void {\n        super.firstUpdated(_changedProperties);\n\n        this.shadowRoot!.querySelector<HTMLSlotElement>('slot[name=\"before\"]')!\n            .addEventListener('slotchange', (e) => {\n                this._beforeFirstElement?.removeEventListener('click', this._prevHandler);\n                this._beforeFirstElement = (e.target as HTMLSlotElement).assignedElements()[0] ?? null;\n                this._beforeFirstElement?.addEventListener('click', this._prevHandler);\n            });\n\n        this.shadowRoot!.querySelector<HTMLSlotElement>('slot[name=\"after\"]')!\n            .addEventListener('slotchange', (e) => {\n                this._afterFirstElement?.removeEventListener('click', this._nextHandler);\n                this._afterFirstElement = (e.target as HTMLSlotElement).assignedElements()[0] ?? null;\n                this._afterFirstElement?.addEventListener('click', this._nextHandler);\n            });\n    }\n\n    disconnectedCallback(): void {\n        this._beforeFirstElement?.removeEventListener('click', this._prevHandler);\n        this._afterFirstElement?.removeEventListener('click', this._nextHandler);\n        super.disconnectedCallback();\n    }\n\n    private _hasEventsForPage(page: number): boolean {\n        if ((this.events[page]?.length ?? 0) > 0) return true;\n        if (page === 0 && (this.events.first?.length ?? 0) > 0) return true;\n        if (page === this.total - 1 && (this.events.last?.length ?? 0) > 0) return true;\n        return (this.events.any?.length ?? 0) > 0;\n    }\n\n    private async dispatchEventList(events: PaginationEvent[]): Promise<void> {\n        for (const event of events) {\n            if (event.userInteraction !== undefined && event.userInteraction !== this._isUserInteraction) continue;\n            await EventHandlerService.dispatchAsyncEvent(event.id, event.data ?? {});\n        }\n    }\n\n    private async triggerPageEvents(): Promise<void> {\n        const pageEvents = this.events[this.current];\n        if (pageEvents?.length > 0) {\n            await this.dispatchEventList(pageEvents);\n        }\n\n        if (this.events.any && this.events.any.length > 0) {\n            await this.dispatchEventList(this.events.any);\n        }\n\n        if (this.current === 0 && this.events.first && this.events.first.length > 0) {\n            await this.dispatchEventList(this.events.first);\n        }\n\n        if (this.current === this.total - 1 && this.events.last && this.events.last.length > 0) {\n            await this.dispatchEventList(this.events.last);\n        }\n    }\n\n    private async handlePageClick(page: number): Promise<void> {\n        if (page === this.current) return;\n        if (this.preventEmptyHandlers && !this._hasEventsForPage(page)) return;\n        this.current = page;\n        this.dispatchEvent(new CustomEvent(\"page-changed\", {\n            detail: {page},\n            bubbles: true,\n            composed: true\n        }));\n        try {\n            await this.triggerPageEvents();\n        } finally {\n            this._isUserInteraction = false;\n        }\n    }\n\n    updated(_changedProperties: PropertyValues): void {\n        super.updated(_changedProperties);\n        if (_changedProperties.has(\"current\")) {\n            this.triggerPageEvents(); // _isUserInteraction is false for programmatic changes\n        }\n    }\n\n    private get pages(): number[] {\n        return Array.from({length: this.total}, (_, i) => i);\n    }\n\n    protected render(): TemplateResult<1> {\n        const firstSlotClasses = {\n            invisible: this.autoHideSlots && this.current <= 0\n        }\n        const lastSlotClasses = {\n            invisible: this.autoHideSlots && this.current >= this.total - 1\n        };\n        return html`\n            <slot name=\"before\" class=\"${classMap(firstSlotClasses)}\"></slot>\n            <div class=\"pagination-items\">\n                ${this.pages.map(page => html`\n                    <fv-pagination-item\n                            .value=\"${page + 1}\"\n                            ?active=\"${page === this.current}\"\n                            @click=\"${() => {\n                                this._isUserInteraction = true;\n                                this.handlePageClick(page)\n                            }}\">\n                    </fv-pagination-item>\n                `)}\n            </div>\n            <slot name=\"after\" class=\"${classMap(lastSlotClasses)}\"></slot>\n        `;\n    }\n}\n","import { css, html, TemplateResult, unsafeCSS } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { BaseElement } from \"../../standard/base/base.component\";\nimport style from \"./pagination-item.component.sass?inline\";\n\n@customElement(\"fv-pagination-item\")\nexport class PaginationItemComponent extends BaseElement {\n    static styles = [\n        super.styles || [],\n        css`${unsafeCSS(style)}`\n    ];\n\n    @property({ type: Number, reflect: true })\n    public value: number = 0;\n\n    @property({ type: Boolean, reflect: true })\n    public active: boolean = false;\n\n    protected render(): TemplateResult<1> {\n        return html`<span class=\"label\">${this.value}</span>`;\n    }\n}\n","import \"./utils/logging\";\n\nwindow.g_dataInterface = {};\n\nimport \"@dh-software/dh-components\";\n\nexport * from './components/additional-positions';\n\nexport { DropDownComponent } from \"./components/standard/dropdown\";\n\nexport { ArticleItemComponent } from \"./components/catalog/article-item\";\nexport { ArticleListComponent } from \"./components/catalog/article-list\";\nexport { FittingItemComponent } from \"./components/catalog/fitting-item\";\nexport { ProptransItemComponent } from \"./components/catalog/proptrans-item\";\nexport { ShoppingcartItemComponent } from \"./components/catalog/shoppingcart-item\";\nexport { EquipmentListComponent } from \"./components/catalog/equipment-list\";\nexport { CatalogSelectorComponent, CatalogSelectorOptionComponent } from \"./components/catalog-selector\";\n\nexport { TotalPriceComponent } from \"./components/price/total-price\";\nexport { PriceSummaryComponent } from \"./components/price/price-summary\";\n\nexport { PriceItemComponent } from \"./components/price/price-item\";\nexport { PriceItem2Component } from \"./components/price/price-item-2\";\nexport { PriceItem3Component } from \"./components/price/price-item-3\";\nexport { PriceItem4Component } from \"./components/price/price-item-4\";\nexport { PriceItem5Component } from \"./components/price/price-item-5\";\nexport { PriceItem6Component } from \"./components/price/price-item-6\";\nexport { PriceItemFpComponent } from \"./components/price/price-item-fp\";\nexport { PriceLevelAccordionComponent } from './components/price/price-level-accordion';\nexport { PriceAccordionItem } from './components/price/price-level-accordion/price-accordion-item'\nexport { PriceDimensionsItemComponent } from \"./components/price/price-dimensions-item\";\nexport { PriceListComponent } from \"./components/price/price-list\";\nexport { PriceOverviewComponent } from \"./components/price/price-overview\";\n\nexport { PriceDisplayComponent } from \"./components/price/price-display\";\n\nexport { ButtonComponent, ConfirmingButtonComponent } from \"./components/standard/button\";\nexport * from \"./components/standard/tab-control\";\nexport { LabelComponent } from \"./components/standard/label\";\nexport { DimensionChangeComponent } from \"./components/standard/dimension-change\";\nexport { InputComponent, ConstrainedInputComponent, RangeSliderInputComponent, SharedRangeSliderInputComponent, ValidatingInputComponent, BasicSliderComponent } from \"./components/standard/input\";\nexport { TextBoxComponent } from \"./components/standard/text-box\";\nexport { ListBoxComponent } from \"./components/standard/list\";\nexport { IconComponent } from \"./components/standard/icon\";\nexport { DealerComponent } from \"./components/dealer\";\nexport { ModalStepComponent } from \"./components/standard/modal-step\";\nexport { RequestComponent } from \"./components/dealer/request\";\nexport { SearchDealerComponent } from \"./components/dealer/search-dealer\";\n\nexport { DimmerComponent } from \"./components/standard/dimmer\";\nexport { LoadingComponent, LoadingModalComponent, DotFlashingLoaderComponent, RotatingDotsLoaderComponent, ConfiguratorFormLoadingModalComponent } from \"./components/standard/loading\";\nexport { ProgressComponent } from \"./components/standard/loading/progress\";\nexport { CheckboxComponent } from \"./components/standard/checkbox\";\nexport { PopupComponent } from \"./components/standard/popup\";\nexport { HRListComponent, HRItemComponent } from \"./components/hr\";\n\n//ProgProperties\nexport { PPContainerComponent } from \"./components/properties/prog-property\";\n\n//PropTransfer\nexport { PTContainerComponent } from \"./components/properties/prop-transfer\";\n\n//ColorPicker\nexport { RalPickerComponent } from \"./components/colorpicker/ral\";\nexport { NcsPickerComponent } from \"./components/colorpicker/ncs\";\nexport { SikkensPickerComponent } from \"./components/colorpicker/sikkens\";\n\n//LanguagePicker\nexport { LanguagePickerComponent } from './components/language-picker';\n\n//DatePicker\nexport { DatepickerComponent } from \"./components/datepicker/datepicker.component\";\n\n//DeliveryDatePicker\nexport { DeliveryDatepickerComponent } from \"./components/delivery-datepicker/delivery-datepicker.component\";\n\n//ARComponent\nexport * from \"./components/ar\";\n\nexport { InfoModalComponent, MessageComponent, OptionSelectionModalComponent, ModalComponent } from \"./components/standard/modal\";\n\n//Action Buttons\nexport { ShowOnTargetScrollableActionButtonComponent } from \"./components/action-buttons\";\n\n//Cards\n// export { CardContainerComponent, FilterCardContainerComponent, LevelPageCardContainerComponent, RootLevelSelectionCardContainerComponent, CardContainerBackButtonComponent, CardAccordionContainerComponent } from \"./components/standard/card-container\";\nexport * from \"./components/standard/card-container/index\";\nexport * from \"./components/standard/cards\";\nimport \"./utils/card-app-connections/index\";\n\n//Program Selection\nexport { ProgramSelectionComponent, ProgramSelectionLevelComponent, ProgramInformationComponent } from \"./components/standard/program-selection\";\n\n// configurator\nexport * from \"./components/configurator/index\";\n\n//WebCab\nexport { WebCabOverviewComponent, WebCabDisplayOptionSelectionComponent, WebCabOptionSelection, WebCabValueInputComponent, WebCabUiComponent, WebCabUiImplementationCabinetsToggle } from \"./components/webcab\";\n\n// informational-components\nexport { LandscapeInfo, CatalogInformationComponent, DimensionInformationComponent, DimensionsInformationComponent } from \"./components/standard/informationals\";\n\n// toolbar\nexport { ToolbarComponent, ToggleToolbarComponent, ToolbarButtonComponent, AnimationToolbarButtonComponent } from \"./components/standard/toolbar\";\n\n// steps component\nexport { StepsComponent } from \"./components/standard/steps\";\nexport { PillStepComponent } from \"./components/standard/pill-steps\"\n// step components\nexport { StepComponent, IconStepComponent } from \"./components/standard/step\";\n\nexport { ProgContextAccordionLayer } from './components/properties/prop-context/accordion-theme/pp-context-accordion-layer.component';\n\nexport { ProgPropertyFurnviewAccordionLayer } from './components/properties/prog-property/furnview_theme/pp-furnview-accordion-layer.component';\nexport { ProgPropertyWebUIAccordionLayer } from './components/properties/prog-property/webui_theme/pp-webui-accordion-layer.component';\nexport { ProgPropertyCombineAccordionLayer } from './components/properties/prog-property/combine_theme/pp-combine-accordion-layer.component';\nexport { ProgPropertyAccordionLayer } from './components/properties/prog-property/accordion_theme/pp-accordion-layer.component'\n\n// accordion component\nexport { AccordionComponent, AccordionLayerComponent } from \"./components/standard/accordion\";\n\nexport { InfoComponent } from \"./components/standard/info_button\";\n\nexport { PropertyInfoComponent } from \"./components/standard/property-info/property-info.component\";\n\nexport { SeparatorComponent } from \"./components/standard/separator\";\nexport { DockableMenuComponent } from \"./components/standard/menu\";\n\nexport { FinishModalComponent } from \"./components/finish\";\nexport { NoticeModalComponent, NoticeListItemComponent, NoticeCarouselComponent, NoticeAccordionItemComponent } from \"./components/notice\";\nexport { RequestModalComponent } from \"./components/customer/request-modal\";\n\n// modal masks\nexport { ResetMaskComponent, RestartCheckMaskComponent, ProgramSelectionConfirmationMaskComponent, InformationMaskComponent, OpenCloudIdMaskComponent, InputMaskComponent, ShareLinkPerMailComponent, RequestAppointmentComponent, SelectPropertyMaskComponent, SelectArticleMaskComponent, PerspectiveControlMaskComponent, StepBasedMaskComponent, MessageNoCalcMask, ContainerMaskComponent, IwoFurnMaskComponent, SaveDialogMaskComponent, FileUploadMaskComponent } from \"./components/standard/modal/masks/index\";\n\n// cloud\nexport { CloudIdDisplayComponent } from \"./components/cloud\";\n\n// arrange\nexport * from \"./components/standard/arrange\";\n\n// control\nexport * from \"./components/standard/control\";\n\n// configurable icons\nexport { ArrowComponent } from \"./components/configurable-icons\";\n\n// filtered catalog\nexport { FilteredCatalogComponent, FilteredCatalogToggleButtonComponent, FilteredCatalogLabledImgOption } from \"./components/filtered-catalog\";\n\n// PDF Viewer\nexport { PDFViewerComponent } from \"./components/pdf-viewer\";\n\nexport { ImageComponent } from \"./components/standard/image\";\n\nexport { SVGIconComponent } from \"./components/standard/embedded-svg-icon\";\nexport { CloudIdComponent } from \"./components/extension\";\nexport { DownloadComponent } from \"./components/extension\";\nexport { LegendComponent } from \"./components/legend/legend.component\";\nexport { SliderComponent } from \"./components/standard/input\";\n\nexport { ExternalWidgetComponent } from \"./components/external-widget/external-widget.component\";\n\nexport { ManuProgInfoComponent } from \"./components/standard/info\";\n\n\nexport { SelectComponent, SelectOptionComponent } from \"./components/standard/select/index\";\n\nexport { WebViewerComponent } from './components/webviewer/webviewer.component';\n\nexport * from \"./components/pagination\";\n"],"x_google_ignoreList":[0,1,2,19,20,21,22,23,91],"mappings":"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"}
\ No newline at end of file
diff --git a/client/vendor/vendor.chunk.js b/client/vendor/vendor.chunk.js
index 1256930..dc041e2 100644
--- a/client/vendor/vendor.chunk.js
+++ b/client/vendor/vendor.chunk.js
@@ -70,5 +70,4 @@
 				<div class="tooltip">
 					<h4>Debug-Statistiken</h4>
 				</div>
-			`,this.circle=this.shadow.querySelector(`.circle`),this.badge=this.shadow.querySelector(`.badge`),this.tooltip=this.shadow.querySelector(`.tooltip`),this.circle.addEventListener(`contextmenu`,e=>(this.keepOpen=!this.keepOpen,e.preventDefault(),1)),this.tooltip.style.left=`80%`,this.tooltip.style.bottom=`80%`,this.addEventListener(`mouseenter`,()=>{this.tooltip.style.display=`block`}),this.addEventListener(`mouseleave`,()=>{this.keepOpen||(this.tooltip.style.display=`none`)}),this.enableDragging()}enableDragging(){let e=this.circle,t=!1,n=0,r=0,i={x:0,y:0},a=(t,a)=>{i.x=t-n,i.y=a-r;let o=window.innerWidth-e.clientWidth,s=window.innerHeight-e.clientHeight;i.x=Math.max(0,Math.min(i.x,o)),i.y=Math.max(0,Math.min(i.y,s)),this.tooltip.style.left=i.x<o*.5?`80%`:``,this.tooltip.style.right=i.x<o*.5?``:`80%`,this.tooltip.style.top=i.y<s*.5?`80%`:``,this.tooltip.style.bottom=i.y<s*.5?``:`80%`,this.style.left=`${i.x}px`,this.style.top=`${i.y}px`},o=`_debug_comindicator_pos_`+window.location.pathname.substring(1),s=localStorage.getItem(o);if(s){let{x:e,y:t}=JSON.parse(s);a(e,t)}let c=e=>{t=!0,n=e.clientX-this.getBoundingClientRect().left,r=e.clientY-this.getBoundingClientRect().top,this.circle.style.cursor=`grabbing`,document.addEventListener(`mousemove`,l),document.addEventListener(`mouseup`,u)},l=e=>{t&&a(e.clientX,e.clientY)},u=()=>{t=!1,this.circle.style.cursor=``,document.removeEventListener(`mousemove`,l),document.removeEventListener(`mouseup`,u),localStorage.setItem(o,JSON.stringify(i))};e.addEventListener(`mousedown`,c)}getColor(){switch(this.status){case K.UNKNOWN:return`gray`;case K.DISCONNECTED:return`red`;case K.DISCONNECTING:return`red`;case K.CONNECTING:return`orange`;case K.RECONNECTING:return`yellow`;case K.CONNECTED:return`turquoise`;case K.READY:return`green`;default:return`gray`}}}customElements.define(`dhcom-debug-indicator`,e)}new class{static{this.templates=new WeakMap}_getNestedOptions(e,t){return t?.subkeyValidation?.[e]??void 0}_log(e,t){return console.warn(`[ValidatedProperty] Key '${String(e)}' was set to 'undefined'. Reverting to`,t??`'empty'`),t}_validateObject(e,t,n,r){let i=!1;for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;let a=this._getNestedOptions(r,n),o=t[r],s=e[r];if(s===void 0){let t=a??o;t=a&&t!==void 0?this.validateObjectProperty(r,Array.isArray(t)?[]:{},t,n,!1).result:o,e[r]=this._log(r,t),i=!0}else if(a){let t=this.validateObjectProperty(r,s,a,n,!1);t.changed&&(e[r]=this._log(r,t.result),i=!0)}}return{changed:i,result:e}}_validateArray(e,t,n,r){let i=!1,a=r?[]:e,o=Array.isArray(t)?t[0]:t;if(!o)return{changed:!1,result:e};let s=a.map(e=>{let t=this._validateObject(e,o,n,r);return t.changed&&(i=!0),t.result});return{changed:i,result:s}}_getValidatedValue(e,t,n,r=!1){return Array.isArray(e)?this._validateArray([...e],t,n,r):this._validateObject({...e},t,n,r)}validateObjectProperty(e,t,n,r,i=!1,a=0){return t===void 0?{changed:!0,result:JSON.parse(JSON.stringify(this._log(e,n)))}:typeof t!=`object`||!t?{changed:!1,result:t}:this._getValidatedValue(t,n,r,i)}static getTemplate(e,t){return this.templates.get(e)?.get(t)}static setTemplate(e,t,n){typeof n==`object`&&n&&n!==void 0&&!Array.isArray(n)&&(this.templates.has(e)||this.templates.set(e,new Map),this.templates.get(e).set(t,JSON.parse(JSON.stringify(n))))}};var In=class{constructor(e,t,n){this.element=e,this.name=t,this.env=n}composeEvent(e){return e instanceof Event&&e.type==this.name?e:new CustomEvent(this.name,{...this.env,detail:e})}dispatch(e){this.element.dispatchEvent(this.composeEvent(e))}addListener(e,t){this.element.addEventListener(this.name,e,t)}removeListener(e,t){this.element.removeEventListener(this.name,e,t)}handleEvent(e){this.dispatch()}detail(e){let t=this;return{handleEvent(n){t.dispatch(e)}}}};function Ln(e,t){return(n,r)=>{t||=r.toString().toLowerCase(),t.endsWith(`event`)&&(t=t.replace(`event`,``));let i=Symbol(`__${String(r)}_eventRef`);Object.defineProperty(n,r,{get(){return this[i]||(this[i]=new In(this,t,e)),this[i]},enumerable:!0,configurable:!0})}}var Rn={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},J=e=>(...t)=>({_$litDirective$:e,values:t}),zn=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,n){this._$Ct=e,this._$AM=t,this._$Ci=n}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}},Bn=J(class extends zn{constructor(e){if(super(e),e.type!==Rn.ATTRIBUTE||e.name!==`class`||e.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(e){return` `+Object.keys(e).filter((t=>e[t])).join(` `)+` `}update(e,[t]){if(this.st===void 0){this.st=new Set,e.strings!==void 0&&(this.nt=new Set(e.strings.join(` `).split(/\s/).filter((e=>e!==``))));for(let e in t)t[e]&&!this.nt?.has(e)&&this.st.add(e);return this.render(t)}let n=e.element.classList;for(let e of this.st)e in t||(n.remove(e),this.st.delete(e));for(let e in t){let r=!!t[e];r===this.st.has(e)||this.nt?.has(e)||(r?(n.add(e),this.st.add(e)):(n.remove(e),this.st.delete(e)))}return z}}),{I:Vn}=rn,Hn=e=>e.strings===void 0,Un=()=>document.createComment(``),Y=(e,t,n)=>{let r=e._$AA.parentNode,i=t===void 0?e._$AB:t._$AA;if(n===void 0)n=new Vn(r.insertBefore(Un(),i),r.insertBefore(Un(),i),e,e.options);else{let t=n._$AB.nextSibling,a=n._$AM,o=a!==e;if(o){let t;n._$AQ?.(e),n._$AM=e,n._$AP!==void 0&&(t=e._$AU)!==a._$AU&&n._$AP(t)}if(t!==i||o){let e=n._$AA;for(;e!==t;){let t=e.nextSibling;r.insertBefore(e,i),e=t}}}return n},X=(e,t,n=e)=>(e._$AI(t,n),e),Wn={},Gn=(e,t=Wn)=>e._$AH=t,Kn=e=>e._$AH,qn=e=>{e._$AP?.(!1,!0);let t=e._$AA,n=e._$AB.nextSibling;for(;t!==n;){let e=t.nextSibling;t.remove(),t=e}},Jn=(e,t,n)=>{let r=new Map;for(let i=t;i<=n;i++)r.set(e[i],i);return r},Yn=J(class extends zn{constructor(e){if(super(e),e.type!==Rn.CHILD)throw Error(`repeat() can only be used in text expressions`)}dt(e,t,n){let r;n===void 0?n=t:t!==void 0&&(r=t);let i=[],a=[],o=0;for(let t of e)i[o]=r?r(t,o):o,a[o]=n(t,o),o++;return{values:a,keys:i}}render(e,t,n){return this.dt(e,t,n).values}update(e,[t,n,r]){let i=Kn(e),{values:a,keys:o}=this.dt(t,n,r);if(!Array.isArray(i))return this.ut=o,a;let s=this.ut??=[],c=[],l,u,d=0,f=i.length-1,p=0,m=a.length-1;for(;d<=f&&p<=m;)if(i[d]===null)d++;else if(i[f]===null)f--;else if(s[d]===o[p])c[p]=X(i[d],a[p]),d++,p++;else if(s[f]===o[m])c[m]=X(i[f],a[m]),f--,m--;else if(s[d]===o[m])c[m]=X(i[d],a[m]),Y(e,c[m+1],i[d]),d++,m--;else if(s[f]===o[p])c[p]=X(i[f],a[p]),Y(e,i[d],i[f]),f--,p++;else if(l===void 0&&(l=Jn(o,p,m),u=Jn(s,d,f)),l.has(s[d]))if(l.has(s[f])){let t=u.get(o[p]),n=t===void 0?null:i[t];if(n===null){let t=Y(e,i[d]);X(t,a[p]),c[p]=t}else c[p]=X(n,a[p]),Y(e,i[d],n),i[t]=null;p++}else qn(i[f]),f--;else qn(i[d]),d++;for(;p<=m;){let t=Y(e,c[m+1]);X(t,a[p]),c[p++]=t}for(;d<=f;){let e=i[d++];e!==null&&qn(e)}return this.ut=o,Gn(e,c),z}}),Xn=`important`,Zn=` !important`,Qn=J(class extends zn{constructor(e){if(super(e),e.type!==Rn.ATTRIBUTE||e.name!==`style`||e.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(e){return Object.keys(e).reduce(((t,n)=>{let r=e[n];return r==null?t:t+`${n=n.includes(`-`)?n:n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,`-$&`).toLowerCase()}:${r};`}),``)}update(e,[t]){let{style:n}=e.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(t)),this.render(t);for(let e of this.ft)t[e]??(this.ft.delete(e),e.includes(`-`)?n.removeProperty(e):n[e]=null);for(let e in t){let r=t[e];if(r!=null){this.ft.add(e);let t=typeof r==`string`&&r.endsWith(Zn);e.includes(`-`)||t?n.setProperty(e,t?r.slice(0,-11):r,t?Xn:``):n[e]=r}}return z}}),$n=Symbol.for(``),er=e=>{if(e?.r===$n)return e?._$litStatic$},tr=e=>({_$litStatic$:e,r:$n}),nr=new Map,rr=(e=>(t,...n)=>{let r=n.length,i,a,o=[],s=[],c,l=0,u=!1;for(;l<r;){for(c=t[l];l<r&&(a=n[l],i=er(a))!==void 0;)c+=i+t[++l],u=!0;l!==r&&s.push(a),o.push(c),l++}if(l===r&&o.push(t[r]),u){let e=o.join(`$$lit$$`);(t=nr.get(e))===void 0&&(o.raw=o,nr.set(e,t=o)),n=s}return e(t,...n)})(Kt),ir=e=>e??B;function*ar(e,t){if(e!==void 0){let n=0;for(let r of e)yield t(r,n++)}}function*or(e,t,n=1){let r=t===void 0?0:e;t??=e;for(let e=r;n>0?e<t:t<e;e+=n)yield e}var sr=globalThis,cr=sr.ShadowRoot&&(sr.ShadyCSS===void 0||sr.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,lr=Symbol(),ur=new WeakMap,dr=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==lr)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(cr&&e===void 0){let n=t!==void 0&&t.length===1;n&&(e=ur.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&ur.set(t,e))}return e}toString(){return this.cssText}},fr=e=>new dr(typeof e==`string`?e:e+``,void 0,lr),pr=(e,t)=>{if(cr)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let n of t){let t=document.createElement(`style`),r=sr.litNonce;r!==void 0&&t.setAttribute(`nonce`,r),t.textContent=n.cssText,e.appendChild(t)}},mr=cr?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return fr(t)})(e):e,{is:hr,defineProperty:gr,getOwnPropertyDescriptor:_r,getOwnPropertyNames:vr,getOwnPropertySymbols:yr,getPrototypeOf:br}=Object,xr=globalThis,Sr=xr.trustedTypes,Cr=Sr?Sr.emptyScript:``,wr=xr.reactiveElementPolyfillSupport,Z=(e,t)=>e,Tr={toAttribute(e,t){switch(t){case Boolean:e=e?Cr:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},Er=(e,t)=>!hr(e,t),Dr={attribute:!0,type:String,converter:Tr,reflect:!1,useDefault:!1,hasChanged:Er};Symbol.metadata??=Symbol(`metadata`),xr.litPropertyMetadata??=new WeakMap;var Q=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=Dr){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&gr(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=_r(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??Dr}static _$Ei(){if(this.hasOwnProperty(Z(`elementProperties`)))return;let e=br(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(Z(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Z(`properties`))){let e=this.properties,t=[...vr(e),...yr(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(mr(e))}else e!==void 0&&t.push(mr(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return pr(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?Tr:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?Tr:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??Er)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};Q.elementStyles=[],Q.shadowRootOptions={mode:`open`},Q[Z(`elementProperties`)]=new Map,Q[Z(`finalized`)]=new Map,wr?.({ReactiveElement:Q}),(xr.reactiveElementVersions??=[]).push(`2.1.2`);var Or=Symbol(),kr=class{get taskComplete(){return this.t||(this.i===1?this.t=new Promise(((e,t)=>{this.o=e,this.h=t})):this.i===3?this.t=Promise.reject(this.l):this.t=Promise.resolve(this.u)),this.t}constructor(e,t,n){this.p=0,this.i=0,(this._=e).addController(this);let r=typeof t==`object`?t:{task:t,args:n};this.v=r.task,this.j=r.args,this.m=r.argsEqual??Ar,this.k=r.onComplete,this.A=r.onError,this.autoRun=r.autoRun??!0,`initialValue`in r&&(this.u=r.initialValue,this.i=2,this.O=this.T?.())}hostUpdate(){!0===this.autoRun&&this.S()}hostUpdated(){this.autoRun===`afterUpdate`&&this.S()}T(){if(this.j===void 0)return;let e=this.j();if(!Array.isArray(e))throw Error(`The args function must return an array`);return e}async S(){let e=this.T(),t=this.O;this.O=e,e===t||e===void 0||t!==void 0&&this.m(t,e)||await this.run(e)}async run(e){let t,n;e??=this.T(),this.O=e,this.i===1?this.q?.abort():(this.t=void 0,this.o=void 0,this.h=void 0),this.i=1,this.autoRun===`afterUpdate`?queueMicrotask((()=>this._.requestUpdate())):this._.requestUpdate();let r=++this.p;this.q=new AbortController;let i=!1;try{t=await this.v(e,{signal:this.q.signal})}catch(e){i=!0,n=e}if(this.p===r){if(t===Or)this.i=0;else{if(!1===i){try{this.k?.(t)}catch{}this.i=2,this.o?.(t)}else{try{this.A?.(n)}catch{}this.i=3,this.h?.(n)}this.u=t,this.l=n}this._.requestUpdate()}}abort(e){this.i===1&&this.q?.abort(e)}get value(){return this.u}get error(){return this.l}get status(){return this.i}render(e){switch(this.i){case 0:return e.initial?.();case 1:return e.pending?.();case 2:return e.complete?.(this.value);case 3:return e.error?.(this.error);default:throw Error(`Unexpected status: `+this.i)}}},Ar=(e,t)=>e===t||e.length===t.length&&e.every(((e,n)=>!Er(e,t[n]))),$=(e,t)=>{let n=e._$AN;if(n===void 0)return!1;for(let e of n)e._$AO?.(t,!1),$(e,t);return!0},jr=e=>{let t,n;do{if((t=e._$AM)===void 0)break;n=t._$AN,n.delete(e),e=t}while(n?.size===0)},Mr=e=>{for(let t;t=e._$AM;e=t){let n=t._$AN;if(n===void 0)t._$AN=n=new Set;else if(n.has(e))break;n.add(e),Fr(t)}};function Nr(e){this._$AN===void 0?this._$AM=e:(jr(this),this._$AM=e,Mr(this))}function Pr(e,t=!1,n=0){let r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(t)if(Array.isArray(r))for(let e=n;e<r.length;e++)$(r[e],!1),jr(r[e]);else r!=null&&($(r,!1),jr(r));else $(this,e)}var Fr=e=>{e.type==Rn.CHILD&&(e._$AP??=Pr,e._$AQ??=Nr)},Ir=class extends zn{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,t,n){super._$AT(e,t,n),Mr(this),this.isConnected=e._$AU}_$AO(e,t=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),t&&($(this,e),jr(this))}setValue(e){if(Hn(this._$Ct))this._$Ct._$AI(e,this);else{let t=[...this._$Ct._$AH];t[this._$Ci]=e,this._$Ct._$AI(t,this,0)}}disconnected(){}reconnected(){}},Lr=()=>new Rr,Rr=class{},zr=new WeakMap,Br=J(class extends Ir{render(e){return B}update(e,[t]){let n=t!==this.G;return n&&this.G!==void 0&&this.rt(void 0),(n||this.lt!==this.ct)&&(this.G=t,this.ht=e.options?.host,this.rt(this.ct=e.element)),B}rt(e){if(this.isConnected||(e=void 0),typeof this.G==`function`){let t=this.ht??globalThis,n=zr.get(t);n===void 0&&(n=new WeakMap,zr.set(t,n)),n.get(this.G)!==void 0&&this.G.call(this.ht,void 0),n.set(this.G,e),e!==void 0&&this.G.call(this.ht,e)}else this.G.value=e}get lt(){return typeof this.G==`function`?zr.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});export{$e as A,w as B,W as C,ht as D,gt as E,We as F,o as H,He as I,Ve as L,Ze as M,Ke as N,lt as O,Ge as P,Re as R,ln as S,Kt as T,a as U,Se as V,vn as _,ar as a,pn as b,rr as c,Bn as d,Ln as f,bn as g,An as h,or as i,Qe as j,ct as k,Qn as l,Mn as m,Br as n,ir as o,jn as p,kr as r,tr as s,Lr as t,Yn as u,_n as v,B as w,fn as x,hn as y,O as z};
-//# sourceMappingURL=vendor.chunk.js.map
\ No newline at end of file
+			`,this.circle=this.shadow.querySelector(`.circle`),this.badge=this.shadow.querySelector(`.badge`),this.tooltip=this.shadow.querySelector(`.tooltip`),this.circle.addEventListener(`contextmenu`,e=>(this.keepOpen=!this.keepOpen,e.preventDefault(),1)),this.tooltip.style.left=`80%`,this.tooltip.style.bottom=`80%`,this.addEventListener(`mouseenter`,()=>{this.tooltip.style.display=`block`}),this.addEventListener(`mouseleave`,()=>{this.keepOpen||(this.tooltip.style.display=`none`)}),this.enableDragging()}enableDragging(){let e=this.circle,t=!1,n=0,r=0,i={x:0,y:0},a=(t,a)=>{i.x=t-n,i.y=a-r;let o=window.innerWidth-e.clientWidth,s=window.innerHeight-e.clientHeight;i.x=Math.max(0,Math.min(i.x,o)),i.y=Math.max(0,Math.min(i.y,s)),this.tooltip.style.left=i.x<o*.5?`80%`:``,this.tooltip.style.right=i.x<o*.5?``:`80%`,this.tooltip.style.top=i.y<s*.5?`80%`:``,this.tooltip.style.bottom=i.y<s*.5?``:`80%`,this.style.left=`${i.x}px`,this.style.top=`${i.y}px`},o=`_debug_comindicator_pos_`+window.location.pathname.substring(1),s=localStorage.getItem(o);if(s){let{x:e,y:t}=JSON.parse(s);a(e,t)}let c=e=>{t=!0,n=e.clientX-this.getBoundingClientRect().left,r=e.clientY-this.getBoundingClientRect().top,this.circle.style.cursor=`grabbing`,document.addEventListener(`mousemove`,l),document.addEventListener(`mouseup`,u)},l=e=>{t&&a(e.clientX,e.clientY)},u=()=>{t=!1,this.circle.style.cursor=``,document.removeEventListener(`mousemove`,l),document.removeEventListener(`mouseup`,u),localStorage.setItem(o,JSON.stringify(i))};e.addEventListener(`mousedown`,c)}getColor(){switch(this.status){case K.UNKNOWN:return`gray`;case K.DISCONNECTED:return`red`;case K.DISCONNECTING:return`red`;case K.CONNECTING:return`orange`;case K.RECONNECTING:return`yellow`;case K.CONNECTED:return`turquoise`;case K.READY:return`green`;default:return`gray`}}}customElements.define(`dhcom-debug-indicator`,e)}new class{static{this.templates=new WeakMap}_getNestedOptions(e,t){return t?.subkeyValidation?.[e]??void 0}_log(e,t){return console.warn(`[ValidatedProperty] Key '${String(e)}' was set to 'undefined'. Reverting to`,t??`'empty'`),t}_validateObject(e,t,n,r){let i=!1;for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;let a=this._getNestedOptions(r,n),o=t[r],s=e[r];if(s===void 0){let t=a??o;t=a&&t!==void 0?this.validateObjectProperty(r,Array.isArray(t)?[]:{},t,n,!1).result:o,e[r]=this._log(r,t),i=!0}else if(a){let t=this.validateObjectProperty(r,s,a,n,!1);t.changed&&(e[r]=this._log(r,t.result),i=!0)}}return{changed:i,result:e}}_validateArray(e,t,n,r){let i=!1,a=r?[]:e,o=Array.isArray(t)?t[0]:t;if(!o)return{changed:!1,result:e};let s=a.map(e=>{let t=this._validateObject(e,o,n,r);return t.changed&&(i=!0),t.result});return{changed:i,result:s}}_getValidatedValue(e,t,n,r=!1){return Array.isArray(e)?this._validateArray([...e],t,n,r):this._validateObject({...e},t,n,r)}validateObjectProperty(e,t,n,r,i=!1,a=0){return t===void 0?{changed:!0,result:JSON.parse(JSON.stringify(this._log(e,n)))}:typeof t!=`object`||!t?{changed:!1,result:t}:this._getValidatedValue(t,n,r,i)}static getTemplate(e,t){return this.templates.get(e)?.get(t)}static setTemplate(e,t,n){typeof n==`object`&&n&&n!==void 0&&!Array.isArray(n)&&(this.templates.has(e)||this.templates.set(e,new Map),this.templates.get(e).set(t,JSON.parse(JSON.stringify(n))))}};var In=class{constructor(e,t,n){this.element=e,this.name=t,this.env=n}composeEvent(e){return e instanceof Event&&e.type==this.name?e:new CustomEvent(this.name,{...this.env,detail:e})}dispatch(e){this.element.dispatchEvent(this.composeEvent(e))}addListener(e,t){this.element.addEventListener(this.name,e,t)}removeListener(e,t){this.element.removeEventListener(this.name,e,t)}handleEvent(e){this.dispatch()}detail(e){let t=this;return{handleEvent(n){t.dispatch(e)}}}};function Ln(e,t){return(n,r)=>{t||=r.toString().toLowerCase(),t.endsWith(`event`)&&(t=t.replace(`event`,``));let i=Symbol(`__${String(r)}_eventRef`);Object.defineProperty(n,r,{get(){return this[i]||(this[i]=new In(this,t,e)),this[i]},enumerable:!0,configurable:!0})}}var Rn={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},J=e=>(...t)=>({_$litDirective$:e,values:t}),zn=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,n){this._$Ct=e,this._$AM=t,this._$Ci=n}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}},Bn=J(class extends zn{constructor(e){if(super(e),e.type!==Rn.ATTRIBUTE||e.name!==`class`||e.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(e){return` `+Object.keys(e).filter((t=>e[t])).join(` `)+` `}update(e,[t]){if(this.st===void 0){this.st=new Set,e.strings!==void 0&&(this.nt=new Set(e.strings.join(` `).split(/\s/).filter((e=>e!==``))));for(let e in t)t[e]&&!this.nt?.has(e)&&this.st.add(e);return this.render(t)}let n=e.element.classList;for(let e of this.st)e in t||(n.remove(e),this.st.delete(e));for(let e in t){let r=!!t[e];r===this.st.has(e)||this.nt?.has(e)||(r?(n.add(e),this.st.add(e)):(n.remove(e),this.st.delete(e)))}return z}}),{I:Vn}=rn,Hn=e=>e.strings===void 0,Un=()=>document.createComment(``),Y=(e,t,n)=>{let r=e._$AA.parentNode,i=t===void 0?e._$AB:t._$AA;if(n===void 0)n=new Vn(r.insertBefore(Un(),i),r.insertBefore(Un(),i),e,e.options);else{let t=n._$AB.nextSibling,a=n._$AM,o=a!==e;if(o){let t;n._$AQ?.(e),n._$AM=e,n._$AP!==void 0&&(t=e._$AU)!==a._$AU&&n._$AP(t)}if(t!==i||o){let e=n._$AA;for(;e!==t;){let t=e.nextSibling;r.insertBefore(e,i),e=t}}}return n},X=(e,t,n=e)=>(e._$AI(t,n),e),Wn={},Gn=(e,t=Wn)=>e._$AH=t,Kn=e=>e._$AH,qn=e=>{e._$AP?.(!1,!0);let t=e._$AA,n=e._$AB.nextSibling;for(;t!==n;){let e=t.nextSibling;t.remove(),t=e}},Jn=(e,t,n)=>{let r=new Map;for(let i=t;i<=n;i++)r.set(e[i],i);return r},Yn=J(class extends zn{constructor(e){if(super(e),e.type!==Rn.CHILD)throw Error(`repeat() can only be used in text expressions`)}dt(e,t,n){let r;n===void 0?n=t:t!==void 0&&(r=t);let i=[],a=[],o=0;for(let t of e)i[o]=r?r(t,o):o,a[o]=n(t,o),o++;return{values:a,keys:i}}render(e,t,n){return this.dt(e,t,n).values}update(e,[t,n,r]){let i=Kn(e),{values:a,keys:o}=this.dt(t,n,r);if(!Array.isArray(i))return this.ut=o,a;let s=this.ut??=[],c=[],l,u,d=0,f=i.length-1,p=0,m=a.length-1;for(;d<=f&&p<=m;)if(i[d]===null)d++;else if(i[f]===null)f--;else if(s[d]===o[p])c[p]=X(i[d],a[p]),d++,p++;else if(s[f]===o[m])c[m]=X(i[f],a[m]),f--,m--;else if(s[d]===o[m])c[m]=X(i[d],a[m]),Y(e,c[m+1],i[d]),d++,m--;else if(s[f]===o[p])c[p]=X(i[f],a[p]),Y(e,i[d],i[f]),f--,p++;else if(l===void 0&&(l=Jn(o,p,m),u=Jn(s,d,f)),l.has(s[d]))if(l.has(s[f])){let t=u.get(o[p]),n=t===void 0?null:i[t];if(n===null){let t=Y(e,i[d]);X(t,a[p]),c[p]=t}else c[p]=X(n,a[p]),Y(e,i[d],n),i[t]=null;p++}else qn(i[f]),f--;else qn(i[d]),d++;for(;p<=m;){let t=Y(e,c[m+1]);X(t,a[p]),c[p++]=t}for(;d<=f;){let e=i[d++];e!==null&&qn(e)}return this.ut=o,Gn(e,c),z}}),Xn=`important`,Zn=` !important`,Qn=J(class extends zn{constructor(e){if(super(e),e.type!==Rn.ATTRIBUTE||e.name!==`style`||e.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(e){return Object.keys(e).reduce(((t,n)=>{let r=e[n];return r==null?t:t+`${n=n.includes(`-`)?n:n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,`-$&`).toLowerCase()}:${r};`}),``)}update(e,[t]){let{style:n}=e.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(t)),this.render(t);for(let e of this.ft)t[e]??(this.ft.delete(e),e.includes(`-`)?n.removeProperty(e):n[e]=null);for(let e in t){let r=t[e];if(r!=null){this.ft.add(e);let t=typeof r==`string`&&r.endsWith(Zn);e.includes(`-`)||t?n.setProperty(e,t?r.slice(0,-11):r,t?Xn:``):n[e]=r}}return z}}),$n=Symbol.for(``),er=e=>{if(e?.r===$n)return e?._$litStatic$},tr=e=>({_$litStatic$:e,r:$n}),nr=new Map,rr=(e=>(t,...n)=>{let r=n.length,i,a,o=[],s=[],c,l=0,u=!1;for(;l<r;){for(c=t[l];l<r&&(a=n[l],i=er(a))!==void 0;)c+=i+t[++l],u=!0;l!==r&&s.push(a),o.push(c),l++}if(l===r&&o.push(t[r]),u){let e=o.join(`$$lit$$`);(t=nr.get(e))===void 0&&(o.raw=o,nr.set(e,t=o)),n=s}return e(t,...n)})(Kt),ir=e=>e??B;function*ar(e,t){if(e!==void 0){let n=0;for(let r of e)yield t(r,n++)}}function*or(e,t,n=1){let r=t===void 0?0:e;t??=e;for(let e=r;n>0?e<t:t<e;e+=n)yield e}var sr=globalThis,cr=sr.ShadowRoot&&(sr.ShadyCSS===void 0||sr.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,lr=Symbol(),ur=new WeakMap,dr=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==lr)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(cr&&e===void 0){let n=t!==void 0&&t.length===1;n&&(e=ur.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&ur.set(t,e))}return e}toString(){return this.cssText}},fr=e=>new dr(typeof e==`string`?e:e+``,void 0,lr),pr=(e,t)=>{if(cr)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let n of t){let t=document.createElement(`style`),r=sr.litNonce;r!==void 0&&t.setAttribute(`nonce`,r),t.textContent=n.cssText,e.appendChild(t)}},mr=cr?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return fr(t)})(e):e,{is:hr,defineProperty:gr,getOwnPropertyDescriptor:_r,getOwnPropertyNames:vr,getOwnPropertySymbols:yr,getPrototypeOf:br}=Object,xr=globalThis,Sr=xr.trustedTypes,Cr=Sr?Sr.emptyScript:``,wr=xr.reactiveElementPolyfillSupport,Z=(e,t)=>e,Tr={toAttribute(e,t){switch(t){case Boolean:e=e?Cr:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},Er=(e,t)=>!hr(e,t),Dr={attribute:!0,type:String,converter:Tr,reflect:!1,useDefault:!1,hasChanged:Er};Symbol.metadata??=Symbol(`metadata`),xr.litPropertyMetadata??=new WeakMap;var Q=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=Dr){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&gr(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=_r(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??Dr}static _$Ei(){if(this.hasOwnProperty(Z(`elementProperties`)))return;let e=br(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(Z(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Z(`properties`))){let e=this.properties,t=[...vr(e),...yr(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(mr(e))}else e!==void 0&&t.push(mr(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return pr(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?Tr:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?Tr:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??Er)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};Q.elementStyles=[],Q.shadowRootOptions={mode:`open`},Q[Z(`elementProperties`)]=new Map,Q[Z(`finalized`)]=new Map,wr?.({ReactiveElement:Q}),(xr.reactiveElementVersions??=[]).push(`2.1.2`);var Or=Symbol(),kr=class{get taskComplete(){return this.t||(this.i===1?this.t=new Promise(((e,t)=>{this.o=e,this.h=t})):this.i===3?this.t=Promise.reject(this.l):this.t=Promise.resolve(this.u)),this.t}constructor(e,t,n){this.p=0,this.i=0,(this._=e).addController(this);let r=typeof t==`object`?t:{task:t,args:n};this.v=r.task,this.j=r.args,this.m=r.argsEqual??Ar,this.k=r.onComplete,this.A=r.onError,this.autoRun=r.autoRun??!0,`initialValue`in r&&(this.u=r.initialValue,this.i=2,this.O=this.T?.())}hostUpdate(){!0===this.autoRun&&this.S()}hostUpdated(){this.autoRun===`afterUpdate`&&this.S()}T(){if(this.j===void 0)return;let e=this.j();if(!Array.isArray(e))throw Error(`The args function must return an array`);return e}async S(){let e=this.T(),t=this.O;this.O=e,e===t||e===void 0||t!==void 0&&this.m(t,e)||await this.run(e)}async run(e){let t,n;e??=this.T(),this.O=e,this.i===1?this.q?.abort():(this.t=void 0,this.o=void 0,this.h=void 0),this.i=1,this.autoRun===`afterUpdate`?queueMicrotask((()=>this._.requestUpdate())):this._.requestUpdate();let r=++this.p;this.q=new AbortController;let i=!1;try{t=await this.v(e,{signal:this.q.signal})}catch(e){i=!0,n=e}if(this.p===r){if(t===Or)this.i=0;else{if(!1===i){try{this.k?.(t)}catch{}this.i=2,this.o?.(t)}else{try{this.A?.(n)}catch{}this.i=3,this.h?.(n)}this.u=t,this.l=n}this._.requestUpdate()}}abort(e){this.i===1&&this.q?.abort(e)}get value(){return this.u}get error(){return this.l}get status(){return this.i}render(e){switch(this.i){case 0:return e.initial?.();case 1:return e.pending?.();case 2:return e.complete?.(this.value);case 3:return e.error?.(this.error);default:throw Error(`Unexpected status: `+this.i)}}},Ar=(e,t)=>e===t||e.length===t.length&&e.every(((e,n)=>!Er(e,t[n]))),$=(e,t)=>{let n=e._$AN;if(n===void 0)return!1;for(let e of n)e._$AO?.(t,!1),$(e,t);return!0},jr=e=>{let t,n;do{if((t=e._$AM)===void 0)break;n=t._$AN,n.delete(e),e=t}while(n?.size===0)},Mr=e=>{for(let t;t=e._$AM;e=t){let n=t._$AN;if(n===void 0)t._$AN=n=new Set;else if(n.has(e))break;n.add(e),Fr(t)}};function Nr(e){this._$AN===void 0?this._$AM=e:(jr(this),this._$AM=e,Mr(this))}function Pr(e,t=!1,n=0){let r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(t)if(Array.isArray(r))for(let e=n;e<r.length;e++)$(r[e],!1),jr(r[e]);else r!=null&&($(r,!1),jr(r));else $(this,e)}var Fr=e=>{e.type==Rn.CHILD&&(e._$AP??=Pr,e._$AQ??=Nr)},Ir=class extends zn{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,t,n){super._$AT(e,t,n),Mr(this),this.isConnected=e._$AU}_$AO(e,t=!0){e!==this.isConnected&&(this.isConnected=e,e?this.reconnected?.():this.disconnected?.()),t&&($(this,e),jr(this))}setValue(e){if(Hn(this._$Ct))this._$Ct._$AI(e,this);else{let t=[...this._$Ct._$AH];t[this._$Ci]=e,this._$Ct._$AI(t,this,0)}}disconnected(){}reconnected(){}},Lr=()=>new Rr,Rr=class{},zr=new WeakMap,Br=J(class extends Ir{render(e){return B}update(e,[t]){let n=t!==this.G;return n&&this.G!==void 0&&this.rt(void 0),(n||this.lt!==this.ct)&&(this.G=t,this.ht=e.options?.host,this.rt(this.ct=e.element)),B}rt(e){if(this.isConnected||(e=void 0),typeof this.G==`function`){let t=this.ht??globalThis,n=zr.get(t);n===void 0&&(n=new WeakMap,zr.set(t,n)),n.get(this.G)!==void 0&&this.G.call(this.ht,void 0),n.set(this.G,e),e!==void 0&&this.G.call(this.ht,e)}else this.G.value=e}get lt(){return typeof this.G==`function`?zr.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});export{$e as A,w as B,W as C,ht as D,gt as E,We as F,o as H,He as I,Ve as L,Ze as M,Ke as N,lt as O,Ge as P,Re as R,ln as S,Kt as T,a as U,Se as V,vn as _,ar as a,pn as b,rr as c,Bn as d,Ln as f,bn as g,An as h,or as i,Qe as j,ct as k,Qn as l,Mn as m,Br as n,ir as o,jn as p,kr as r,tr as s,Lr as t,Yn as u,_n as v,B as w,fn as x,hn as y,O as z};
\ No newline at end of file
diff --git a/client/vendor/vendor.chunk.js.map b/client/vendor/vendor.chunk.js.map
deleted file mode 100644
index 7ad179f..0000000
--- a/client/vendor/vendor.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"vendor.chunk.js","names":["global","globalThis","supportsAdoptingStyleSheets","ShadowRoot","undefined","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","constructionToken","Symbol","cssTagCache","WeakMap","CSSResult","constructor","cssText","strings","safeToken","this","Error","_strings","styleSheet","_styleSheet","cacheable","length","get","replaceSync","set","toString","unsafeCSS","value","String","css","values","reduce","acc","v","idx","textFromCSSResult","adoptStyles","renderRoot","styles","adoptedStyleSheets","map","s","style","document","createElement","nonce","setAttribute","textContent","appendChild","getCompatibleStyle","sheet","rule","cssRules","cssResultFromStyleSheet","is","defineProperty","getOwnPropertyDescriptor","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","Object","global","globalThis","trustedTypes","emptyStringForBooleanAttribute","emptyScript","polyfillSupport","reactiveElementPolyfillSupport","JSCompiler_renameProperty","prop","_obj","defaultConverter","toAttribute","value","type","Boolean","Array","JSON","stringify","fromAttribute","fromValue","Number","parse","e","notEqual","old","defaultPropertyDeclaration","attribute","String","converter","reflect","useDefault","hasChanged","Symbol","metadata","litPropertyMetadata","WeakMap","ReactiveElement","HTMLElement","addInitializer","initializer","this","__prepare","_initializers","push","observedAttributes","finalize","__attributeToPropertyMap","keys","createProperty","name","options","state","prototype","hasOwnProperty","create","wrapped","elementProperties","set","noAccessor","key","descriptor","getPropertyDescriptor","undefined","get","v","oldValue","call","requestUpdate","configurable","enumerable","getPropertyOptions","superCtor","Map","finalized","props","properties","propKeys","p","attr","__attributeNameForProperty","elementStyles","finalizeStyles","styles","isArray","Set","flat","Infinity","reverse","s","unshift","getCompatibleStyle","toLowerCase","constructor","super","__instanceProperties","isUpdatePending","hasUpdated","__reflectingProperty","__initialize","__updatePromise","Promise","res","enableUpdating","_$changedProperties","__saveInstanceProperties","forEach","i","addController","controller","__controllers","add","renderRoot","isConnected","hostConnected","removeController","delete","instanceProperties","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptStyles","connectedCallback","c","_requestedUpdate","disconnectedCallback","hostDisconnected","attributeChangedCallback","_old","_$attributeToProperty","__propertyToAttribute","attrValue","removeAttribute","setAttribute","ctor","propName","convertedValue","__defaultValues","useNewValue","newValue","hasAttribute","_$changeProperty","__enqueueUpdate","initializeValue","has","__reflectingProperties","reject","result","scheduleUpdate","performUpdate","shouldUpdate","changedProperties","willUpdate","hostUpdate","update","__markUpdated","_$didUpdate","_changedProperties","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","reactiveElementVersions","global","globalThis","wrap","node","trustedTypes","policy","createPolicy","createHTML","s","undefined","boundAttributeSuffix","marker","Math","random","toFixed","slice","markerMatch","nodeMarker","d","document","createMarker","createComment","isPrimitive","value","isArray","Array","isIterable","Symbol","iterator","SPACE_CHAR","textEndRegex","commentEndRegex","comment2EndRegex","tagEndRegex","RegExp","singleQuoteAttrEndRegex","doubleQuoteAttrEndRegex","rawTextElement","tag","type","strings","values","_$litType$","html","svg","mathml","noChange","for","nothing","templateCache","WeakMap","walker","createTreeWalker","trustFromTemplateString","tsa","stringFromTSA","hasOwnProperty","Error","getTemplateHtml","l","length","attrNames","rawTextEndRegex","regex","i","attrName","match","attrNameEndIndex","lastIndex","exec","test","end","startsWith","push","Template","constructor","options","this","parts","nodeIndex","attrNameIndex","partCount","el","createElement","currentNode","content","wrapper","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","name","getAttributeNames","endsWith","realName","statics","getAttribute","split","m","index","ctor","PropertyPart","BooleanAttributePart","EventPart","AttributePart","removeAttribute","tagName","textContent","emptyScript","append","data","indexOf","_options","innerHTML","resolveDirective","part","parent","attributeIndex","currentDirective","__directives","__directive","nextDirectiveConstructor","_$initialize","_$resolve","TemplateInstance","template","_$parts","_$disconnectableChildren","_$template","_$parent","parentNode","_$isConnected","_clone","fragment","creationScope","importNode","partIndex","templatePart","ChildPart","nextSibling","ElementPart","_update","_$setValue","__isConnected","startNode","endNode","_$committedValue","_$startNode","_$endNode","isConnected","directiveParent","_$clear","_commitText","_commitTemplateResult","_commitNode","_commitIterable","_insert","insertBefore","createTextNode","result","_$getTemplate","h","instance","get","set","itemParts","itemPart","item","start","from","_$notifyConnectionChanged","n","remove","setConnected","element","fill","String","valueIndex","noCommit","change","v","_commitValue","setAttribute","toggleAttribute","super","newListener","oldListener","shouldRemoveListener","capture","once","passive","shouldAddListener","removeEventListener","addEventListener","handleEvent","event","call","host","_$LH","_boundAttributeSuffix","_marker","_markerMatch","_HTML_RESULT","_getTemplateHtml","_TemplateInstance","_isIterable","_resolveDirective","_ChildPart","_AttributePart","_BooleanAttributePart","_EventPart","_PropertyPart","_ElementPart","polyfillSupport","litHtmlPolyfillSupport","litHtmlVersions","render","container","partOwnerNode","renderBefore","global","globalThis","LitElement","ReactiveElement","constructor","this","renderOptions","host","__childPart","undefined","createRenderRoot","renderRoot","super","renderBefore","firstChild","update","changedProperties","value","render","hasUpdated","isConnected","connectedCallback","setConnected","disconnectedCallback","noChange","litElementHydrateSupport","polyfillSupport","litElementPolyfillSupport","_$LE","_$attributeToProperty","el","name","_$changedProperties","litElementVersions","push","customElement","tagName","classOrTarget","context","undefined","addInitializer","customElements","define","defaultPropertyDeclaration","attribute","type","String","converter","defaultConverter","reflect","hasChanged","notEqual","standardProperty","options","target","context","kind","metadata","properties","globalThis","litPropertyMetadata","get","undefined","set","Map","Object","create","wrapped","name","v","oldValue","call","this","requestUpdate","init","_$changeProperty","value","Error","property","protoOrTarget","nameOrContext","proto","hasOwnProperty","constructor","createProperty","getOwnPropertyDescriptor","legacyProperty","state","options","property","attribute","desc","obj","name","descriptor","configurable","enumerable","Reflect","decorate","Object","defineProperty","query","selector","cache","protoOrTarget","nameOrContext","descriptor","doQuery","el","renderRoot","querySelector","get","set","key","Symbol","this","v","desc","result","call","undefined","hasUpdated","queryAsync","selector","obj","name","desc","get","this","updateComplete","renderRoot","querySelector","choose","value","cases","defaultCase","c","fn","PartType","ATTRIBUTE","CHILD","PROPERTY","BOOLEAN_ATTRIBUTE","EVENT","ELEMENT","directive","c","values","_$litDirective$","Directive","constructor","_partInfo","_$isConnected","this","_$parent","_$initialize","part","parent","attributeIndex","__part","__attributeIndex","_$resolve","props","update","_part","render","initialValue","guard","directive","Directive","constructor","this","_previousValue","render","_value","f","update","_part","value","Array","isArray","length","every","v","i","noChange","from","classMap","directive","Directive","constructor","partInfo","super","type","PartType","ATTRIBUTE","name","strings","length","Error","render","classInfo","Object","keys","filter","key","join","update","part","undefined","this","_previousClasses","Set","_staticClasses","split","s","has","add","classList","element","remove","delete","value","noChange","ifDefined","value","nothing","_ChildPart","ChildPart","_$LH","wrap","node","isPrimitive","value","TemplateResultType","HTML","SVG","MATHML","isTemplateResult","type","undefined","isCompiledTemplateResult","h","isDirectiveResult","getDirectiveClass","isSingleExpression","part","strings","createMarker","document","createComment","insertPart","containerPart","refPart","container","_$startNode","parentNode","refNode","_$endNode","startNode","insertBefore","endNode","options","nextSibling","oldParent","_$parent","parentChanged","newConnectionState","_$reparentDisconnectables","_$notifyConnectionChanged","_$isConnected","start","n","setChildPartValue","directiveParent","_$setValue","RESET_VALUE","setCommittedValue","_$committedValue","getCommittedValue","removePart","_$clear","remove","clearPart","generateMap","list","start","end","map","Map","i","set","repeat","directive","Directive","constructor","partInfo","super","type","PartType","CHILD","Error","_getValuesAndKeys","items","keyFnOrTemplate","template","keyFn","undefined","keys","values","index","item","render","this","update","containerPart","oldParts","getCommittedValue","newValues","newKeys","Array","isArray","_itemKeys","oldKeys","newParts","newKeyToIndexMap","oldKeyToIndexMap","oldHead","oldTail","length","newHead","newTail","setChildPartValue","insertPart","has","oldIndex","get","oldPart","newPart","removePart","setCommittedValue","noChange","keyed","directive","Directive","constructor","this","key","nothing","render","k","v","update","part","setCommittedValue","global","globalThis","supportsAdoptingStyleSheets","ShadowRoot","undefined","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","constructionToken","Symbol","cssTagCache","WeakMap","CSSResult","constructor","cssText","strings","safeToken","this","Error","_strings","styleSheet","_styleSheet","cacheable","length","get","replaceSync","set","toString","unsafeCSS","value","String","css","values","reduce","acc","v","idx","textFromCSSResult","adoptStyles","renderRoot","styles","adoptedStyleSheets","map","s","style","document","createElement","nonce","setAttribute","textContent","appendChild","getCompatibleStyle","sheet","rule","cssRules","cssResultFromStyleSheet","is","defineProperty","getOwnPropertyDescriptor","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","Object","global","globalThis","trustedTypes","emptyStringForBooleanAttribute","emptyScript","polyfillSupport","reactiveElementPolyfillSupport","JSCompiler_renameProperty","prop","_obj","defaultConverter","toAttribute","value","type","Boolean","Array","JSON","stringify","fromAttribute","fromValue","Number","parse","e","notEqual","old","defaultPropertyDeclaration","attribute","String","converter","reflect","useDefault","hasChanged","Symbol","metadata","litPropertyMetadata","WeakMap","ReactiveElement","HTMLElement","addInitializer","initializer","this","__prepare","_initializers","push","observedAttributes","finalize","__attributeToPropertyMap","keys","createProperty","name","options","state","prototype","hasOwnProperty","create","wrapped","elementProperties","set","noAccessor","key","descriptor","getPropertyDescriptor","undefined","get","v","oldValue","call","requestUpdate","configurable","enumerable","getPropertyOptions","superCtor","Map","finalized","props","properties","propKeys","p","attr","__attributeNameForProperty","elementStyles","finalizeStyles","styles","isArray","Set","flat","Infinity","reverse","s","unshift","getCompatibleStyle","toLowerCase","constructor","super","__instanceProperties","isUpdatePending","hasUpdated","__reflectingProperty","__initialize","__updatePromise","Promise","res","enableUpdating","_$changedProperties","__saveInstanceProperties","forEach","i","addController","controller","__controllers","add","renderRoot","isConnected","hostConnected","removeController","delete","instanceProperties","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptStyles","connectedCallback","c","_requestedUpdate","disconnectedCallback","hostDisconnected","attributeChangedCallback","_old","_$attributeToProperty","__propertyToAttribute","attrValue","removeAttribute","setAttribute","ctor","propName","__defaultValues","newValue","hasAttribute","_$changeProperty","__enqueueUpdate","initializeValue","has","__reflectingProperties","reject","result","scheduleUpdate","performUpdate","shouldUpdate","changedProperties","willUpdate","hostUpdate","update","__markUpdated","_$didUpdate","_changedProperties","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","reactiveElementVersions","global","globalThis","trustedTypes","policy","createPolicy","createHTML","s","undefined","boundAttributeSuffix","marker","Math","random","toFixed","slice","markerMatch","nodeMarker","d","document","createMarker","createComment","isPrimitive","value","isArray","Array","isIterable","Symbol","iterator","SPACE_CHAR","textEndRegex","commentEndRegex","comment2EndRegex","tagEndRegex","RegExp","singleQuoteAttrEndRegex","doubleQuoteAttrEndRegex","rawTextElement","tag","type","strings","values","_$litType$","html","svg","mathml","noChange","for","nothing","templateCache","WeakMap","walker","createTreeWalker","trustFromTemplateString","tsa","stringFromTSA","hasOwnProperty","Error","getTemplateHtml","l","length","attrNames","rawTextEndRegex","regex","i","attrName","match","attrNameEndIndex","lastIndex","exec","test","end","startsWith","push","Template","constructor","options","node","this","parts","nodeIndex","attrNameIndex","partCount","el","createElement","currentNode","content","wrapper","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","name","getAttributeNames","endsWith","realName","statics","getAttribute","split","m","index","ctor","PropertyPart","BooleanAttributePart","EventPart","AttributePart","removeAttribute","tagName","textContent","emptyScript","append","data","indexOf","_options","innerHTML","resolveDirective","part","parent","attributeIndex","currentDirective","__directives","__directive","nextDirectiveConstructor","_$initialize","_$resolve","TemplateInstance","template","_$parts","_$disconnectableChildren","_$template","_$parent","parentNode","_$isConnected","_clone","fragment","creationScope","importNode","partIndex","templatePart","ChildPart","nextSibling","ElementPart","_update","_$setValue","__isConnected","startNode","endNode","_$committedValue","_$startNode","_$endNode","isConnected","directiveParent","_$clear","_commitText","_commitTemplateResult","_commitNode","_commitIterable","_insert","insertBefore","createTextNode","result","_$getTemplate","h","instance","get","set","itemParts","itemPart","item","start","from","_$notifyConnectionChanged","n","remove","setConnected","element","fill","String","valueIndex","noCommit","change","v","_commitValue","setAttribute","toggleAttribute","super","newListener","oldListener","shouldRemoveListener","capture","once","passive","shouldAddListener","removeEventListener","addEventListener","handleEvent","event","call","host","_$LH","_boundAttributeSuffix","_marker","_markerMatch","_HTML_RESULT","_getTemplateHtml","_TemplateInstance","_isIterable","_resolveDirective","_ChildPart","_AttributePart","_BooleanAttributePart","_EventPart","_PropertyPart","_ElementPart","polyfillSupport","litHtmlPolyfillSupport","litHtmlVersions","render","container","partOwnerNode","renderBefore","global","globalThis","LitElement","ReactiveElement","constructor","this","renderOptions","host","__childPart","undefined","createRenderRoot","renderRoot","super","renderBefore","firstChild","update","changedProperties","value","render","hasUpdated","isConnected","connectedCallback","setConnected","disconnectedCallback","noChange","litElementHydrateSupport","polyfillSupport","litElementPolyfillSupport","_$LE","_$attributeToProperty","el","name","_$changedProperties","litElementVersions","push","customElement","tagName","classOrTarget","context","undefined","addInitializer","customElements","define","defaultPropertyDeclaration","attribute","type","String","converter","defaultConverter","reflect","hasChanged","notEqual","standardProperty","options","target","context","kind","metadata","properties","globalThis","litPropertyMetadata","get","undefined","set","Map","Object","create","wrapped","name","v","oldValue","call","this","requestUpdate","init","_$changeProperty","value","Error","property","protoOrTarget","nameOrContext","proto","hasOwnProperty","constructor","createProperty","getOwnPropertyDescriptor","legacyProperty","state","options","property","attribute","desc","obj","name","descriptor","configurable","enumerable","Reflect","decorate","Object","defineProperty","query","selector","cache","protoOrTarget","nameOrContext","descriptor","doQuery","el","renderRoot","querySelector","get","set","key","Symbol","this","v","desc","result","call","undefined","hasUpdated","fragment","queryAll","selector","obj","name","desc","get","this","renderRoot","document","createDocumentFragment","querySelectorAll","queryAsync","selector","obj","name","desc","get","this","updateComplete","renderRoot","querySelector","i","l","l","C","r","p","S","m","d","M","f","PartType","ATTRIBUTE","CHILD","PROPERTY","BOOLEAN_ATTRIBUTE","EVENT","ELEMENT","directive","c","values","_$litDirective$","Directive","constructor","_partInfo","_$isConnected","this","_$parent","_$initialize","part","parent","attributeIndex","__part","__attributeIndex","_$resolve","props","update","_part","render","classMap","directive","Directive","constructor","partInfo","super","type","PartType","ATTRIBUTE","name","strings","length","Error","render","classInfo","Object","keys","filter","key","join","update","part","undefined","this","_previousClasses","Set","_staticClasses","split","s","has","add","classList","element","remove","delete","value","noChange","_ChildPart","ChildPart","_$LH","isPrimitive","value","TemplateResultType","HTML","SVG","MATHML","isTemplateResult","type","undefined","isCompiledTemplateResult","h","isDirectiveResult","getDirectiveClass","isSingleExpression","part","strings","createMarker","document","createComment","insertPart","containerPart","refPart","container","_$startNode","parentNode","refNode","_$endNode","startNode","insertBefore","endNode","options","nextSibling","oldParent","_$parent","parentChanged","newConnectionState","_$reparentDisconnectables","_$notifyConnectionChanged","_$isConnected","start","n","setChildPartValue","directiveParent","_$setValue","RESET_VALUE","setCommittedValue","_$committedValue","getCommittedValue","removePart","end","remove","clearPart","_$clear","generateMap","list","start","end","map","Map","i","set","repeat","directive","Directive","constructor","partInfo","super","type","PartType","CHILD","Error","_getValuesAndKeys","items","keyFnOrTemplate","template","keyFn","undefined","keys","values","index","item","render","this","update","containerPart","oldParts","getCommittedValue","newValues","newKeys","Array","isArray","_itemKeys","oldKeys","newParts","newKeyToIndexMap","oldKeyToIndexMap","oldHead","oldTail","length","newHead","newTail","setChildPartValue","insertPart","has","oldIndex","get","oldPart","newPart","removePart","setCommittedValue","noChange","important","importantFlag","styleMap","directive","Directive","constructor","partInfo","super","type","PartType","ATTRIBUTE","name","strings","length","Error","render","styleInfo","Object","keys","reduce","style","prop","value","includes","replace","toLowerCase","update","part","element","undefined","this","_previousStyleProperties","Set","delete","removeProperty","add","isImportant","endsWith","setProperty","slice","noChange","brand","Symbol","for","unwrapStaticValue","value","r","unsafeStatic","_$litStatic$","literal","strings","values","reduce","acc","v","idx","undefined","Error","textFromStatic","stringsCache","Map","withStatic","coreTag","l","length","staticValue","dynamicValue","staticStrings","dynamicValues","s","i","hasStatics","push","key","join","get","raw","set","html","coreHtml","svg","coreSvg","mathml","coreMathml","ifDefined","value","nothing","map","items","f","undefined","i","value","range","startOrEnd","end","step","start","undefined","i","global","globalThis","supportsAdoptingStyleSheets","ShadowRoot","undefined","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","constructionToken","Symbol","cssTagCache","WeakMap","CSSResult","constructor","cssText","strings","safeToken","this","Error","_strings","styleSheet","_styleSheet","cacheable","length","get","replaceSync","set","toString","unsafeCSS","value","String","css","values","reduce","acc","v","idx","textFromCSSResult","adoptStyles","renderRoot","styles","adoptedStyleSheets","map","s","style","document","createElement","nonce","setAttribute","textContent","appendChild","getCompatibleStyle","sheet","rule","cssRules","cssResultFromStyleSheet","is","defineProperty","getOwnPropertyDescriptor","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","Object","global","globalThis","trustedTypes","emptyStringForBooleanAttribute","emptyScript","polyfillSupport","reactiveElementPolyfillSupport","JSCompiler_renameProperty","prop","_obj","defaultConverter","toAttribute","value","type","Boolean","Array","JSON","stringify","fromAttribute","fromValue","Number","parse","e","notEqual","old","defaultPropertyDeclaration","attribute","String","converter","reflect","useDefault","hasChanged","Symbol","metadata","litPropertyMetadata","WeakMap","ReactiveElement","HTMLElement","addInitializer","initializer","this","__prepare","_initializers","push","observedAttributes","finalize","__attributeToPropertyMap","keys","createProperty","name","options","state","prototype","hasOwnProperty","create","wrapped","elementProperties","set","noAccessor","key","descriptor","getPropertyDescriptor","undefined","get","v","oldValue","call","requestUpdate","configurable","enumerable","getPropertyOptions","superCtor","Map","finalized","props","properties","propKeys","p","attr","__attributeNameForProperty","elementStyles","finalizeStyles","styles","isArray","Set","flat","Infinity","reverse","s","unshift","getCompatibleStyle","toLowerCase","constructor","super","__instanceProperties","isUpdatePending","hasUpdated","__reflectingProperty","__initialize","__updatePromise","Promise","res","enableUpdating","_$changedProperties","__saveInstanceProperties","forEach","i","addController","controller","__controllers","add","renderRoot","isConnected","hostConnected","removeController","delete","instanceProperties","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptStyles","connectedCallback","c","_requestedUpdate","disconnectedCallback","hostDisconnected","attributeChangedCallback","_old","_$attributeToProperty","__propertyToAttribute","attrValue","removeAttribute","setAttribute","ctor","propName","convertedValue","__defaultValues","useNewValue","newValue","hasAttribute","_$changeProperty","__enqueueUpdate","initializeValue","has","__reflectingProperties","reject","result","scheduleUpdate","performUpdate","shouldUpdate","changedProperties","willUpdate","hostUpdate","update","__markUpdated","_$didUpdate","_changedProperties","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","reactiveElementVersions","TaskStatus","INITIAL","PENDING","COMPLETE","ERROR","initialState","Symbol","Task","taskComplete","this","_taskComplete","_status","Promise","res","rej","_resolveTaskComplete","_rejectTaskComplete","reject","_error","resolve","_value","constructor","host","task","args","_callId","_host","addController","taskConfig","_task","_argsFn","_argsEqual","argsEqual","shallowArrayEquals","_onComplete","onComplete","_onError","onError","autoRun","initialValue","_previousArgs","_getArgs","hostUpdate","_performTask","hostUpdated","undefined","Array","isArray","Error","prev","run","result","error","_abortController","abort","queueMicrotask","requestUpdate","key","AbortController","errored","signal","e","reason","value","status","render","renderer","initial","pending","complete","oldArgs","newArgs","length","every","v","i","notEqual","notifyChildrenConnectedChanged","parent","isConnected","children","_$disconnectableChildren","undefined","obj","removeDisconnectableFromParent","_$parent","delete","size","addDisconnectableToParent","Set","has","add","installDisconnectAPI","reparentDisconnectables","newParent","this","notifyChildPartConnectedChanged","isClearingValue","fromPartIndex","value","_$committedValue","Array","isArray","i","length","type","PartType","CHILD","_$notifyConnectionChanged","_$reparentDisconnectables","AsyncDirective","Directive","constructor","_$initialize","part","attributeIndex","super","_$isConnected","isClearingDirective","reconnected","disconnected","setValue","isSingleExpression","__part","_$setValue","newValues","__attributeIndex","createRef","Ref","lastElementForContextAndCallback","WeakMap","ref","directive","AsyncDirective","render","_ref","nothing","update","part","refChanged","this","undefined","_updateRefValue","_lastElementForRef","_element","_context","options","host","element","isConnected","context","globalThis","lastElementForCallback","get","set","call","value","disconnected","reconnected"],"sources":["../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/css-tag.ts","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/reactive-element.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/lit-html.ts","../../../../node_modules/.pnpm/lit-element@4.2.2/node_modules/lit-element/src/lit-element.ts","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/decorators/custom-element.ts","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/decorators/property.ts","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/decorators/state.ts","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/decorators/base.ts","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/decorators/query.ts","../../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/decorators/query-async.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/directives/choose.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/directive.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/directives/guard.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/directives/class-map.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/directives/if-defined.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/directive-helpers.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/directives/repeat.ts","../../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/src/directives/keyed.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/css-tag.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/reactive-element.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/lit-html.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-element@4.2.0/node_modules/lit-element/src/lit-element.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/decorators/custom-element.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/decorators/property.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/decorators/state.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/decorators/base.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/decorators/query.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/decorators/query-all.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.0/node_modules/@lit/reactive-element/src/decorators/query-async.ts","../../../../../../webui-core/webui/node_modules/.pnpm/@dh-software+event-emitter@_b277588488f1b80172ecfc340ff9a52f/node_modules/@dh-software/event-emitter/dist/event-emitter.mjs","../../../../../../webui-core/webui/node_modules/.pnpm/@dh-software+message-commun_c2870b572ecacae3e0cb061d925cb71d/node_modules/@dh-software/message-communicator-browser/dist/message-communicator-browser.mjs","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+lit-extensions@0.0.14_lit@3.3.3/node_modules/@dh-software/lit-extensions/src/PropertyValidator.ts","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+lit-extensions@0.0.14_lit@3.3.3/node_modules/@dh-software/lit-extensions/src/decorator/validate.ts","../../../../../../furnview-components/node_modules/.pnpm/@dh-software+lit-extensions@0.0.14_lit@3.3.3/node_modules/@dh-software/lit-extensions/src/decorator/event.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directive.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directives/class-map.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directive-helpers.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directives/repeat.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directives/style-map.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/static.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directives/if-defined.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directives/map.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directives/range.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/css-tag.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/src/reactive-element.ts","../../../../../../furnview-components/node_modules/.pnpm/@lit+task@1.0.3/node_modules/@lit/task/src/task.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/async-directive.ts","../../../../../../furnview-components/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/src/directives/ref.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nconst NODE_MODE = false;\n\n// Allows minifiers to rename references to globalThis\nconst global = globalThis;\n\n/**\n * Whether the current browser supports `adoptedStyleSheets`.\n */\nexport const supportsAdoptingStyleSheets: boolean =\n  global.ShadowRoot &&\n  (global.ShadyCSS === undefined || global.ShadyCSS.nativeShadow) &&\n  'adoptedStyleSheets' in Document.prototype &&\n  'replace' in CSSStyleSheet.prototype;\n\n/**\n * A CSSResult or native CSSStyleSheet.\n *\n * In browsers that support constructible CSS style sheets, CSSStyleSheet\n * object can be used for styling along side CSSResult from the `css`\n * template tag.\n */\nexport type CSSResultOrNative = CSSResult | CSSStyleSheet;\n\nexport type CSSResultArray = Array<CSSResultOrNative | CSSResultArray>;\n\n/**\n * A single CSSResult, CSSStyleSheet, or an array or nested arrays of those.\n */\nexport type CSSResultGroup = CSSResultOrNative | CSSResultArray;\n\nconst constructionToken = Symbol();\n\nconst cssTagCache = new WeakMap<TemplateStringsArray, CSSStyleSheet>();\n\n/**\n * A container for a string of CSS text, that may be used to create a CSSStyleSheet.\n *\n * CSSResult is the return value of `css`-tagged template literals and\n * `unsafeCSS()`. In order to ensure that CSSResults are only created via the\n * `css` tag and `unsafeCSS()`, CSSResult cannot be constructed directly.\n */\nexport class CSSResult {\n  // This property needs to remain unminified.\n  ['_$cssResult$'] = true;\n  readonly cssText: string;\n  private _styleSheet?: CSSStyleSheet;\n  private _strings: TemplateStringsArray | undefined;\n\n  private constructor(\n    cssText: string,\n    strings: TemplateStringsArray | undefined,\n    safeToken: symbol\n  ) {\n    if (safeToken !== constructionToken) {\n      throw new Error(\n        'CSSResult is not constructable. Use `unsafeCSS` or `css` instead.'\n      );\n    }\n    this.cssText = cssText;\n    this._strings = strings;\n  }\n\n  // This is a getter so that it's lazy. In practice, this means stylesheets\n  // are not created until the first element instance is made.\n  get styleSheet(): CSSStyleSheet | undefined {\n    // If `supportsAdoptingStyleSheets` is true then we assume CSSStyleSheet is\n    // constructable.\n    let styleSheet = this._styleSheet;\n    const strings = this._strings;\n    if (supportsAdoptingStyleSheets && styleSheet === undefined) {\n      const cacheable = strings !== undefined && strings.length === 1;\n      if (cacheable) {\n        styleSheet = cssTagCache.get(strings);\n      }\n      if (styleSheet === undefined) {\n        (this._styleSheet = styleSheet = new CSSStyleSheet()).replaceSync(\n          this.cssText\n        );\n        if (cacheable) {\n          cssTagCache.set(strings, styleSheet);\n        }\n      }\n    }\n    return styleSheet;\n  }\n\n  toString(): string {\n    return this.cssText;\n  }\n}\n\ntype ConstructableCSSResult = CSSResult & {\n  new (\n    cssText: string,\n    strings: TemplateStringsArray | undefined,\n    safeToken: symbol\n  ): CSSResult;\n};\n\nconst textFromCSSResult = (value: CSSResultGroup | number) => {\n  // This property needs to remain unminified.\n  if ((value as CSSResult)['_$cssResult$'] === true) {\n    return (value as CSSResult).cssText;\n  } else if (typeof value === 'number') {\n    return value;\n  } else {\n    throw new Error(\n      `Value passed to 'css' function must be a 'css' function result: ` +\n        `${value}. Use 'unsafeCSS' to pass non-literal values, but take care ` +\n        `to ensure page security.`\n    );\n  }\n};\n\n/**\n * Wrap a value for interpolation in a {@linkcode css} tagged template literal.\n *\n * This is unsafe because untrusted CSS text can be used to phone home\n * or exfiltrate data to an attacker controlled site. Take care to only use\n * this with trusted input.\n */\nexport const unsafeCSS = (value: unknown) =>\n  new (CSSResult as ConstructableCSSResult)(\n    typeof value === 'string' ? value : String(value),\n    undefined,\n    constructionToken\n  );\n\n/**\n * A template literal tag which can be used with LitElement's\n * {@linkcode LitElement.styles} property to set element styles.\n *\n * For security reasons, only literal string values and number may be used in\n * embedded expressions. To incorporate non-literal values {@linkcode unsafeCSS}\n * may be used inside an expression.\n */\nexport const css = (\n  strings: TemplateStringsArray,\n  ...values: (CSSResultGroup | number)[]\n): CSSResult => {\n  const cssText =\n    strings.length === 1\n      ? strings[0]\n      : values.reduce(\n          (acc, v, idx) => acc + textFromCSSResult(v) + strings[idx + 1],\n          strings[0]\n        );\n  return new (CSSResult as ConstructableCSSResult)(\n    cssText,\n    strings,\n    constructionToken\n  );\n};\n\n/**\n * Applies the given styles to a `shadowRoot`. When Shadow DOM is\n * available but `adoptedStyleSheets` is not, styles are appended to the\n * `shadowRoot` to [mimic the native feature](https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot/adoptedStyleSheets).\n * Note, when shimming is used, any styles that are subsequently placed into\n * the shadowRoot should be placed *before* any shimmed adopted styles. This\n * will match spec behavior that gives adopted sheets precedence over styles in\n * shadowRoot.\n */\nexport const adoptStyles = (\n  renderRoot: ShadowRoot,\n  styles: Array<CSSResultOrNative>\n) => {\n  if (supportsAdoptingStyleSheets) {\n    (renderRoot as ShadowRoot).adoptedStyleSheets = styles.map((s) =>\n      s instanceof CSSStyleSheet ? s : s.styleSheet!\n    );\n  } else {\n    for (const s of styles) {\n      const style = document.createElement('style');\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      const nonce = (global as any)['litNonce'];\n      if (nonce !== undefined) {\n        style.setAttribute('nonce', nonce);\n      }\n      style.textContent = (s as CSSResult).cssText;\n      renderRoot.appendChild(style);\n    }\n  }\n};\n\nconst cssResultFromStyleSheet = (sheet: CSSStyleSheet) => {\n  let cssText = '';\n  for (const rule of sheet.cssRules) {\n    cssText += rule.cssText;\n  }\n  return unsafeCSS(cssText);\n};\n\nexport const getCompatibleStyle =\n  supportsAdoptingStyleSheets ||\n  (NODE_MODE && global.CSSStyleSheet === undefined)\n    ? (s: CSSResultOrNative) => s\n    : (s: CSSResultOrNative) =>\n        s instanceof CSSStyleSheet ? cssResultFromStyleSheet(s) : s;\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Use this module if you want to create your own base class extending\n * {@link ReactiveElement}.\n * @packageDocumentation\n */\n\nimport {\n  getCompatibleStyle,\n  adoptStyles,\n  CSSResultGroup,\n  CSSResultOrNative,\n} from './css-tag.js';\nimport type {\n  ReactiveController,\n  ReactiveControllerHost,\n} from './reactive-controller.js';\n\n// In the Node build, this import will be injected by Rollup:\n// import {HTMLElement, customElements} from '@lit-labs/ssr-dom-shim';\n\nexport * from './css-tag.js';\nexport type {\n  ReactiveController,\n  ReactiveControllerHost,\n} from './reactive-controller.js';\n\n/**\n * Removes the `readonly` modifier from properties in the union K.\n *\n * This is a safer way to cast a value to a type with a mutable version of a\n * readonly field, than casting to an interface with the field re-declared\n * because it preserves the type of all the fields and warns on typos.\n */\ntype Mutable<T, K extends keyof T> = Omit<T, K> & {\n  -readonly [P in keyof Pick<T, K>]: P extends K ? T[P] : never;\n};\n\n// TODO (justinfagnani): Add `hasOwn` here when we ship ES2022\nconst {\n  is,\n  defineProperty,\n  getOwnPropertyDescriptor,\n  getOwnPropertyNames,\n  getOwnPropertySymbols,\n  getPrototypeOf,\n} = Object;\n\nconst NODE_MODE = false;\n\n// Lets a minifier replace globalThis references with a minified name\nconst global = globalThis;\n\nif (NODE_MODE) {\n  global.customElements ??= customElements;\n}\n\nconst DEV_MODE = true;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nconst trustedTypes = (global as unknown as {trustedTypes?: {emptyScript: ''}})\n  .trustedTypes;\n\n// Temporary workaround for https://crbug.com/993268\n// Currently, any attribute starting with \"on\" is considered to be a\n// TrustedScript source. Such boolean attributes must be set to the equivalent\n// trusted emptyScript value.\nconst emptyStringForBooleanAttribute = trustedTypes\n  ? (trustedTypes.emptyScript as unknown as '')\n  : '';\n\nconst polyfillSupport = DEV_MODE\n  ? global.reactiveElementPolyfillSupportDevMode\n  : global.reactiveElementPolyfillSupport;\n\nif (DEV_MODE) {\n  // Ensure warnings are issued only 1x, even if multiple versions of Lit\n  // are loaded.\n  global.litIssuedWarnings ??= new Set();\n\n  /**\n   * Issue a warning if we haven't already, based either on `code` or `warning`.\n   * Warnings are disabled automatically only by `warning`; disabling via `code`\n   * can be done by users.\n   */\n  issueWarning = (code: string, warning: string) => {\n    warning += ` See https://lit.dev/msg/${code} for more information.`;\n    if (\n      !global.litIssuedWarnings!.has(warning) &&\n      !global.litIssuedWarnings!.has(code)\n    ) {\n      console.warn(warning);\n      global.litIssuedWarnings!.add(warning);\n    }\n  };\n\n  queueMicrotask(() => {\n    issueWarning(\n      'dev-mode',\n      `Lit is in dev mode. Not recommended for production!`\n    );\n\n    // Issue polyfill support warning.\n    if (global.ShadyDOM?.inUse && polyfillSupport === undefined) {\n      issueWarning(\n        'polyfill-support-missing',\n        `Shadow DOM is being polyfilled via \\`ShadyDOM\\` but ` +\n          `the \\`polyfill-support\\` module has not been loaded.`\n      );\n    }\n  });\n}\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ReactiveUnstable {\n  /**\n   * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n   * we will emit 'lit-debug' events to window, with live details about the update and render\n   * lifecycle. These can be useful for writing debug tooling and visualizations.\n   *\n   * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n   * making certain operations that are normally very cheap (like a no-op render) much slower,\n   * because we must copy data and dispatch events.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-namespace\n  export namespace DebugLog {\n    export type Entry = Update;\n    export interface Update {\n      kind: 'update';\n    }\n  }\n}\n\ninterface DebugLoggingWindow {\n  // Even in dev mode, we generally don't want to emit these events, as that's\n  // another level of cost, so only emit them when DEV_MODE is true _and_ when\n  // window.emitLitDebugEvents is true.\n  emitLitDebugLogEvents?: boolean;\n}\n\n/**\n * Useful for visualizing and logging insights into what the Lit template system is doing.\n *\n * Compiled out of prod mode builds.\n */\nconst debugLogEvent = DEV_MODE\n  ? (event: ReactiveUnstable.DebugLog.Entry) => {\n      const shouldEmit = (global as unknown as DebugLoggingWindow)\n        .emitLitDebugLogEvents;\n      if (!shouldEmit) {\n        return;\n      }\n      global.dispatchEvent(\n        new CustomEvent<ReactiveUnstable.DebugLog.Entry>('lit-debug', {\n          detail: event,\n        })\n      );\n    }\n  : undefined;\n\n/*\n * When using Closure Compiler, JSCompiler_renameProperty(property, object) is\n * replaced at compile time by the munged name for object[property]. We cannot\n * alias this function, so we have to use a small shim that has the same\n * behavior when not compiling.\n */\n/*@__INLINE__*/\nconst JSCompiler_renameProperty = <P extends PropertyKey>(\n  prop: P,\n  _obj: unknown\n): P => prop;\n\n/**\n * Converts property values to and from attribute values.\n */\nexport interface ComplexAttributeConverter<Type = unknown, TypeHint = unknown> {\n  /**\n   * Called to convert an attribute value to a property\n   * value.\n   */\n  fromAttribute?(value: string | null, type?: TypeHint): Type;\n\n  /**\n   * Called to convert a property value to an attribute\n   * value.\n   *\n   * It returns unknown instead of string, to be compatible with\n   * https://github.com/WICG/trusted-types (and similar efforts).\n   */\n  toAttribute?(value: Type, type?: TypeHint): unknown;\n}\n\ntype AttributeConverter<Type = unknown, TypeHint = unknown> =\n  | ComplexAttributeConverter<Type>\n  | ((value: string | null, type?: TypeHint) => Type);\n\n/**\n * Defines options for a property accessor.\n */\nexport interface PropertyDeclaration<Type = unknown, TypeHint = unknown> {\n  /**\n   * When set to `true`, indicates the property is internal private state. The\n   * property should not be set by users. When using TypeScript, this property\n   * should be marked as `private` or `protected`, and it is also a common\n   * practice to use a leading `_` in the name. The property is not added to\n   * `observedAttributes`.\n   */\n  readonly state?: boolean;\n\n  /**\n   * Indicates how and whether the property becomes an observed attribute.\n   * If the value is `false`, the property is not added to `observedAttributes`.\n   * If true or absent, the lowercased property name is observed (e.g. `fooBar`\n   * becomes `foobar`). If a string, the string value is observed (e.g\n   * `attribute: 'foo-bar'`).\n   */\n  readonly attribute?: boolean | string;\n\n  /**\n   * Indicates the type of the property. This is used only as a hint for the\n   * `converter` to determine how to convert the attribute\n   * to/from a property.\n   */\n  readonly type?: TypeHint;\n\n  /**\n   * Indicates how to convert the attribute to/from a property. If this value\n   * is a function, it is used to convert the attribute value a the property\n   * value. If it's an object, it can have keys for `fromAttribute` and\n   * `toAttribute`. If no `toAttribute` function is provided and\n   * `reflect` is set to `true`, the property value is set directly to the\n   * attribute. A default `converter` is used if none is provided; it supports\n   * `Boolean`, `String`, `Number`, `Object`, and `Array`. Note,\n   * when a property changes and the converter is used to update the attribute,\n   * the property is never updated again as a result of the attribute changing,\n   * and vice versa.\n   */\n  readonly converter?: AttributeConverter<Type, TypeHint>;\n\n  /**\n   * Indicates if the property should reflect to an attribute.\n   * If `true`, when the property is set, the attribute is set using the\n   * attribute name determined according to the rules for the `attribute`\n   * property option and the value of the property converted using the rules\n   * from the `converter` property option.\n   */\n  readonly reflect?: boolean;\n\n  /**\n   * A function that indicates if a property should be considered changed when\n   * it is set. The function should take the `newValue` and `oldValue` and\n   * return `true` if an update should be requested.\n   */\n  hasChanged?(value: Type, oldValue: Type): boolean;\n\n  /**\n   * Indicates whether an accessor will be created for this property. By\n   * default, an accessor will be generated for this property that requests an\n   * update when set. If this flag is `true`, no accessor will be created, and\n   * it will be the user's responsibility to call\n   * `this.requestUpdate(propertyName, oldValue)` to request an update when\n   * the property changes.\n   */\n  readonly noAccessor?: boolean;\n\n  /**\n   * Whether this property is wrapping accessors. This is set by `@property`\n   * to control the initial value change and reflection logic.\n   *\n   * @internal\n   */\n  wrapped?: boolean;\n\n  /**\n   * When `true`, uses the initial value of the property as the default value,\n   * which changes how attributes are handled:\n   *  - The initial value does *not* reflect, even if the `reflect` option is `true`.\n   *    Subsequent changes to the property will reflect, even if they are equal to the\n   *     default value.\n   *  - When the attribute is removed, the property is set to the default value\n   *  - The initial value will not trigger an old value in the `changedProperties` map\n   *    argument to update lifecycle methods.\n   *\n   * When set, properties must be initialized, either with a field initializer, or an\n   * assignment in the constructor. Not initializing the property may lead to\n   * improper handling of subsequent property assignments.\n   *\n   * While this behavior is opt-in, most properties that reflect to attributes should\n   * use `useDefault: true` so that their initial values do not reflect.\n   */\n  useDefault?: boolean;\n}\n\n/**\n * Map of properties to PropertyDeclaration options. For each property an\n * accessor is made, and the property is processed according to the\n * PropertyDeclaration options.\n */\nexport interface PropertyDeclarations {\n  readonly [key: string]: PropertyDeclaration;\n}\n\ntype PropertyDeclarationMap = Map<PropertyKey, PropertyDeclaration>;\n\ntype AttributeMap = Map<string, PropertyKey>;\n\n/**\n * A Map of property keys to values.\n *\n * Takes an optional type parameter T, which when specified as a non-any,\n * non-unknown type, will make the Map more strongly-typed, associating the map\n * keys with their corresponding value type on T.\n *\n * Use `PropertyValues<this>` when overriding ReactiveElement.update() and\n * other lifecycle methods in order to get stronger type-checking on keys\n * and values.\n */\n// This type is conditional so that if the parameter T is not specified, or\n// is `any`, the type will include `Map<PropertyKey, unknown>`. Since T is not\n// given in the uses of PropertyValues in this file, all uses here fallback to\n// meaning `Map<PropertyKey, unknown>`, but if a developer uses\n// `PropertyValues<this>` (or any other value for T) they will get a\n// strongly-typed Map type.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type PropertyValues<T = any> = T extends object\n  ? PropertyValueMap<T>\n  : Map<PropertyKey, unknown>;\n\n/**\n * Do not use, instead prefer {@linkcode PropertyValues}.\n */\n// This type must be exported such that JavaScript generated by the Google\n// Closure Compiler can import a type reference.\nexport interface PropertyValueMap<T> extends Map<PropertyKey, unknown> {\n  get<K extends keyof T>(k: K): T[K] | undefined;\n  set<K extends keyof T>(key: K, value: T[K]): this;\n  has<K extends keyof T>(k: K): boolean;\n  delete<K extends keyof T>(k: K): boolean;\n}\n\nexport const defaultConverter: ComplexAttributeConverter = {\n  toAttribute(value: unknown, type?: unknown): unknown {\n    switch (type) {\n      case Boolean:\n        value = value ? emptyStringForBooleanAttribute : null;\n        break;\n      case Object:\n      case Array:\n        // if the value is `null` or `undefined` pass this through\n        // to allow removing/no change behavior.\n        value = value == null ? value : JSON.stringify(value);\n        break;\n    }\n    return value;\n  },\n\n  fromAttribute(value: string | null, type?: unknown) {\n    let fromValue: unknown = value;\n    switch (type) {\n      case Boolean:\n        fromValue = value !== null;\n        break;\n      case Number:\n        fromValue = value === null ? null : Number(value);\n        break;\n      case Object:\n      case Array:\n        // Do *not* generate exception when invalid JSON is set as elements\n        // don't normally complain on being mis-configured.\n        // TODO(sorvell): Do generate exception in *dev mode*.\n        try {\n          // Assert to adhere to Bazel's \"must type assert JSON parse\" rule.\n          fromValue = JSON.parse(value!) as unknown;\n        } catch (e) {\n          fromValue = null;\n        }\n        break;\n    }\n    return fromValue;\n  },\n};\n\nexport interface HasChanged {\n  (value: unknown, old: unknown): boolean;\n}\n\n/**\n * Change function that returns true if `value` is different from `oldValue`.\n * This method is used as the default for a property's `hasChanged` function.\n */\nexport const notEqual: HasChanged = (value: unknown, old: unknown): boolean =>\n  !is(value, old);\n\nconst defaultPropertyDeclaration: PropertyDeclaration = {\n  attribute: true,\n  type: String,\n  converter: defaultConverter,\n  reflect: false,\n  useDefault: false,\n  hasChanged: notEqual,\n};\n\n/**\n * A string representing one of the supported dev mode warning categories.\n */\nexport type WarningKind =\n  | 'change-in-update'\n  | 'migration'\n  | 'async-perform-update';\n\nexport type Initializer = (element: ReactiveElement) => void;\n\n// Temporary, until google3 is on TypeScript 5.2\ndeclare global {\n  interface SymbolConstructor {\n    readonly metadata: unique symbol;\n  }\n}\n\n// Ensure metadata is enabled. TypeScript does not polyfill\n// Symbol.metadata, so we must ensure that it exists.\n(Symbol as {metadata: symbol}).metadata ??= Symbol('metadata');\n\ndeclare global {\n  // This is public global API, do not change!\n  // eslint-disable-next-line no-var\n  var litPropertyMetadata: WeakMap<\n    object,\n    Map<PropertyKey, PropertyDeclaration>\n  >;\n}\n\n// Map from a class's metadata object to property options\n// Note that we must use nullish-coalescing assignment so that we only use one\n// map even if we load multiple version of this module.\nglobal.litPropertyMetadata ??= new WeakMap<\n  object,\n  Map<PropertyKey, PropertyDeclaration>\n>();\n\n/**\n * Base element class which manages element properties and attributes. When\n * properties change, the `update` method is asynchronously called. This method\n * should be supplied by subclasses to render updates as desired.\n * @noInheritDoc\n */\nexport abstract class ReactiveElement\n  // In the Node build, this `extends` clause will be substituted with\n  // `(globalThis.HTMLElement ?? HTMLElement)`.\n  //\n  // This way, we will first prefer any global `HTMLElement` polyfill that the\n  // user has assigned, and then fall back to the `HTMLElement` shim which has\n  // been imported (see note at the top of this file about how this import is\n  // generated by Rollup). Note that the `HTMLElement` variable has been\n  // shadowed by this import, so it no longer refers to the global.\n  extends HTMLElement\n  implements ReactiveControllerHost\n{\n  // Note: these are patched in only in DEV_MODE.\n  /**\n   * Read or set all the enabled warning categories for this class.\n   *\n   * This property is only used in development builds.\n   *\n   * @nocollapse\n   * @category dev-mode\n   */\n  static enabledWarnings?: WarningKind[];\n\n  /**\n   * Enable the given warning category for this class.\n   *\n   * This method only exists in development builds, so it should be accessed\n   * with a guard like:\n   *\n   * ```ts\n   * // Enable for all ReactiveElement subclasses\n   * ReactiveElement.enableWarning?.('migration');\n   *\n   * // Enable for only MyElement and subclasses\n   * MyElement.enableWarning?.('migration');\n   * ```\n   *\n   * @nocollapse\n   * @category dev-mode\n   */\n  static enableWarning?: (warningKind: WarningKind) => void;\n\n  /**\n   * Disable the given warning category for this class.\n   *\n   * This method only exists in development builds, so it should be accessed\n   * with a guard like:\n   *\n   * ```ts\n   * // Disable for all ReactiveElement subclasses\n   * ReactiveElement.disableWarning?.('migration');\n   *\n   * // Disable for only MyElement and subclasses\n   * MyElement.disableWarning?.('migration');\n   * ```\n   *\n   * @nocollapse\n   * @category dev-mode\n   */\n  static disableWarning?: (warningKind: WarningKind) => void;\n\n  /**\n   * Adds an initializer function to the class that is called during instance\n   * construction.\n   *\n   * This is useful for code that runs against a `ReactiveElement`\n   * subclass, such as a decorator, that needs to do work for each\n   * instance, such as setting up a `ReactiveController`.\n   *\n   * ```ts\n   * const myDecorator = (target: typeof ReactiveElement, key: string) => {\n   *   target.addInitializer((instance: ReactiveElement) => {\n   *     // This is run during construction of the element\n   *     new MyController(instance);\n   *   });\n   * }\n   * ```\n   *\n   * Decorating a field will then cause each instance to run an initializer\n   * that adds a controller:\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   @myDecorator foo;\n   * }\n   * ```\n   *\n   * Initializers are stored per-constructor. Adding an initializer to a\n   * subclass does not add it to a superclass. Since initializers are run in\n   * constructors, initializers will run in order of the class hierarchy,\n   * starting with superclasses and progressing to the instance's class.\n   *\n   * @nocollapse\n   */\n  static addInitializer(initializer: Initializer) {\n    this.__prepare();\n    (this._initializers ??= []).push(initializer);\n  }\n\n  static _initializers?: Initializer[];\n\n  /*\n   * Due to closure compiler ES6 compilation bugs, @nocollapse is required on\n   * all static methods and properties with initializers.  Reference:\n   * - https://github.com/google/closure-compiler/issues/1776\n   */\n\n  /**\n   * Maps attribute names to properties; for example `foobar` attribute to\n   * `fooBar` property. Created lazily on user subclasses when finalizing the\n   * class.\n   * @nocollapse\n   */\n  private static __attributeToPropertyMap: AttributeMap;\n\n  /**\n   * Marks class as having been finalized, which includes creating properties\n   * from `static properties`, but does *not* include all properties created\n   * from decorators.\n   * @nocollapse\n   */\n  protected static finalized: true | undefined;\n\n  /**\n   * Memoized list of all element properties, including any superclass\n   * properties. Created lazily on user subclasses when finalizing the class.\n   *\n   * @nocollapse\n   * @category properties\n   */\n  static elementProperties: PropertyDeclarationMap;\n\n  /**\n   * User-supplied object that maps property names to `PropertyDeclaration`\n   * objects containing options for configuring reactive properties. When\n   * a reactive property is set the element will update and render.\n   *\n   * By default properties are public fields, and as such, they should be\n   * considered as primarily settable by element users, either via attribute or\n   * the property itself.\n   *\n   * Generally, properties that are changed by the element should be private or\n   * protected fields and should use the `state: true` option. Properties\n   * marked as `state` do not reflect from the corresponding attribute\n   *\n   * However, sometimes element code does need to set a public property. This\n   * should typically only be done in response to user interaction, and an event\n   * should be fired informing the user; for example, a checkbox sets its\n   * `checked` property when clicked and fires a `changed` event. Mutating\n   * public properties should typically not be done for non-primitive (object or\n   * array) properties. In other cases when an element needs to manage state, a\n   * private property set with the `state: true` option should be used. When\n   * needed, state properties can be initialized via public properties to\n   * facilitate complex interactions.\n   * @nocollapse\n   * @category properties\n   */\n  static properties: PropertyDeclarations;\n\n  /**\n   * Memoized list of all element styles.\n   * Created lazily on user subclasses when finalizing the class.\n   * @nocollapse\n   * @category styles\n   */\n  static elementStyles: Array<CSSResultOrNative> = [];\n\n  /**\n   * Array of styles to apply to the element. The styles should be defined\n   * using the {@linkcode css} tag function, via constructible stylesheets, or\n   * imported from native CSS module scripts.\n   *\n   * Note on Content Security Policy:\n   *\n   * Element styles are implemented with `<style>` tags when the browser doesn't\n   * support adopted StyleSheets. To use such `<style>` tags with the style-src\n   * CSP directive, the style-src value must either include 'unsafe-inline' or\n   * `nonce-<base64-value>` with `<base64-value>` replaced be a server-generated\n   * nonce.\n   *\n   * To provide a nonce to use on generated `<style>` elements, set\n   * `window.litNonce` to a server-generated nonce in your page's HTML, before\n   * loading application code:\n   *\n   * ```html\n   * <script>\n   *   // Generated and unique per request:\n   *   window.litNonce = 'a1b2c3d4';\n   * </script>\n   * ```\n   * @nocollapse\n   * @category styles\n   */\n  static styles?: CSSResultGroup;\n\n  /**\n   * Returns a list of attributes corresponding to the registered properties.\n   * @nocollapse\n   * @category attributes\n   */\n  static get observedAttributes() {\n    // Ensure we've created all properties\n    this.finalize();\n    // this.__attributeToPropertyMap is only undefined after finalize() in\n    // ReactiveElement itself. ReactiveElement.observedAttributes is only\n    // accessed with ReactiveElement as the receiver when a subclass or mixin\n    // calls super.observedAttributes\n    return (\n      this.__attributeToPropertyMap && [...this.__attributeToPropertyMap.keys()]\n    );\n  }\n\n  private __instanceProperties?: PropertyValues = undefined;\n\n  /**\n   * Creates a property accessor on the element prototype if one does not exist\n   * and stores a {@linkcode PropertyDeclaration} for the property with the\n   * given options. The property setter calls the property's `hasChanged`\n   * property option or uses a strict identity check to determine whether or not\n   * to request an update.\n   *\n   * This method may be overridden to customize properties; however,\n   * when doing so, it's important to call `super.createProperty` to ensure\n   * the property is setup correctly. This method calls\n   * `getPropertyDescriptor` internally to get a descriptor to install.\n   * To customize what properties do when they are get or set, override\n   * `getPropertyDescriptor`. To customize the options for a property,\n   * implement `createProperty` like this:\n   *\n   * ```ts\n   * static createProperty(name, options) {\n   *   options = Object.assign(options, {myOption: true});\n   *   super.createProperty(name, options);\n   * }\n   * ```\n   *\n   * @nocollapse\n   * @category properties\n   */\n  static createProperty(\n    name: PropertyKey,\n    options: PropertyDeclaration = defaultPropertyDeclaration\n  ) {\n    // If this is a state property, force the attribute to false.\n    if (options.state) {\n      (options as Mutable<PropertyDeclaration, 'attribute'>).attribute = false;\n    }\n    this.__prepare();\n    // Whether this property is wrapping accessors.\n    // Helps control the initial value change and reflection logic.\n    if (this.prototype.hasOwnProperty(name)) {\n      options = Object.create(options);\n      options.wrapped = true;\n    }\n    this.elementProperties.set(name, options);\n    if (!options.noAccessor) {\n      const key = DEV_MODE\n        ? // Use Symbol.for in dev mode to make it easier to maintain state\n          // when doing HMR.\n          Symbol.for(`${String(name)} (@property() cache)`)\n        : Symbol();\n      const descriptor = this.getPropertyDescriptor(name, key, options);\n      if (descriptor !== undefined) {\n        defineProperty(this.prototype, name, descriptor);\n      }\n    }\n  }\n\n  /**\n   * Returns a property descriptor to be defined on the given named property.\n   * If no descriptor is returned, the property will not become an accessor.\n   * For example,\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   static getPropertyDescriptor(name, key, options) {\n   *     const defaultDescriptor =\n   *         super.getPropertyDescriptor(name, key, options);\n   *     const setter = defaultDescriptor.set;\n   *     return {\n   *       get: defaultDescriptor.get,\n   *       set(value) {\n   *         setter.call(this, value);\n   *         // custom action.\n   *       },\n   *       configurable: true,\n   *       enumerable: true\n   *     }\n   *   }\n   * }\n   * ```\n   *\n   * @nocollapse\n   * @category properties\n   */\n  protected static getPropertyDescriptor(\n    name: PropertyKey,\n    key: string | symbol,\n    options: PropertyDeclaration\n  ): PropertyDescriptor | undefined {\n    const {get, set} = getOwnPropertyDescriptor(this.prototype, name) ?? {\n      get(this: ReactiveElement) {\n        return this[key as keyof typeof this];\n      },\n      set(this: ReactiveElement, v: unknown) {\n        (this as unknown as Record<string | symbol, unknown>)[key] = v;\n      },\n    };\n    if (DEV_MODE && get == null) {\n      if ('value' in (getOwnPropertyDescriptor(this.prototype, name) ?? {})) {\n        throw new Error(\n          `Field ${JSON.stringify(String(name))} on ` +\n            `${this.name} was declared as a reactive property ` +\n            `but it's actually declared as a value on the prototype. ` +\n            `Usually this is due to using @property or @state on a method.`\n        );\n      }\n      issueWarning(\n        'reactive-property-without-getter',\n        `Field ${JSON.stringify(String(name))} on ` +\n          `${this.name} was declared as a reactive property ` +\n          `but it does not have a getter. This will be an error in a ` +\n          `future version of Lit.`\n      );\n    }\n    return {\n      get,\n      set(this: ReactiveElement, value: unknown) {\n        const oldValue = get?.call(this);\n        set?.call(this, value);\n        this.requestUpdate(name, oldValue, options);\n      },\n      configurable: true,\n      enumerable: true,\n    };\n  }\n\n  /**\n   * Returns the property options associated with the given property.\n   * These options are defined with a `PropertyDeclaration` via the `properties`\n   * object or the `@property` decorator and are registered in\n   * `createProperty(...)`.\n   *\n   * Note, this method should be considered \"final\" and not overridden. To\n   * customize the options for a given property, override\n   * {@linkcode createProperty}.\n   *\n   * @nocollapse\n   * @final\n   * @category properties\n   */\n  static getPropertyOptions(name: PropertyKey) {\n    return this.elementProperties.get(name) ?? defaultPropertyDeclaration;\n  }\n\n  // Temporary, until google3 is on TypeScript 5.2\n  declare static [Symbol.metadata]: object & Record<PropertyKey, unknown>;\n\n  /**\n   * Initializes static own properties of the class used in bookkeeping\n   * for element properties, initializers, etc.\n   *\n   * Can be called multiple times by code that needs to ensure these\n   * properties exist before using them.\n   *\n   * This method ensures the superclass is finalized so that inherited\n   * property metadata can be copied down.\n   * @nocollapse\n   */\n  private static __prepare() {\n    if (\n      this.hasOwnProperty(JSCompiler_renameProperty('elementProperties', this))\n    ) {\n      // Already prepared\n      return;\n    }\n    // Finalize any superclasses\n    const superCtor = getPrototypeOf(this) as typeof ReactiveElement;\n    superCtor.finalize();\n\n    // Create own set of initializers for this class if any exist on the\n    // superclass and copy them down. Note, for a small perf boost, avoid\n    // creating initializers unless needed.\n    if (superCtor._initializers !== undefined) {\n      this._initializers = [...superCtor._initializers];\n    }\n    // Initialize elementProperties from the superclass\n    this.elementProperties = new Map(superCtor.elementProperties);\n  }\n\n  /**\n   * Finishes setting up the class so that it's ready to be registered\n   * as a custom element and instantiated.\n   *\n   * This method is called by the ReactiveElement.observedAttributes getter.\n   * If you override the observedAttributes getter, you must either call\n   * super.observedAttributes to trigger finalization, or call finalize()\n   * yourself.\n   *\n   * @nocollapse\n   */\n  protected static finalize() {\n    if (this.hasOwnProperty(JSCompiler_renameProperty('finalized', this))) {\n      return;\n    }\n    this.finalized = true;\n    this.__prepare();\n\n    // Create properties from the static properties block:\n    if (this.hasOwnProperty(JSCompiler_renameProperty('properties', this))) {\n      const props = this.properties;\n      const propKeys = [\n        ...getOwnPropertyNames(props),\n        ...getOwnPropertySymbols(props),\n      ] as Array<keyof typeof props>;\n      for (const p of propKeys) {\n        this.createProperty(p, props[p]);\n      }\n    }\n\n    // Create properties from standard decorator metadata:\n    const metadata = this[Symbol.metadata];\n    if (metadata !== null) {\n      const properties = litPropertyMetadata.get(metadata);\n      if (properties !== undefined) {\n        for (const [p, options] of properties) {\n          this.elementProperties.set(p, options);\n        }\n      }\n    }\n\n    // Create the attribute-to-property map\n    this.__attributeToPropertyMap = new Map();\n    for (const [p, options] of this.elementProperties) {\n      const attr = this.__attributeNameForProperty(p, options);\n      if (attr !== undefined) {\n        this.__attributeToPropertyMap.set(attr, p);\n      }\n    }\n\n    this.elementStyles = this.finalizeStyles(this.styles);\n\n    if (DEV_MODE) {\n      if (this.hasOwnProperty('createProperty')) {\n        issueWarning(\n          'no-override-create-property',\n          'Overriding ReactiveElement.createProperty() is deprecated. ' +\n            'The override will not be called with standard decorators'\n        );\n      }\n      if (this.hasOwnProperty('getPropertyDescriptor')) {\n        issueWarning(\n          'no-override-get-property-descriptor',\n          'Overriding ReactiveElement.getPropertyDescriptor() is deprecated. ' +\n            'The override will not be called with standard decorators'\n        );\n      }\n    }\n  }\n\n  /**\n   * Options used when calling `attachShadow`. Set this property to customize\n   * the options for the shadowRoot; for example, to create a closed\n   * shadowRoot: `{mode: 'closed'}`.\n   *\n   * Note, these options are used in `createRenderRoot`. If this method\n   * is customized, options should be respected if possible.\n   * @nocollapse\n   * @category rendering\n   */\n  static shadowRootOptions: ShadowRootInit = {mode: 'open'};\n\n  /**\n   * Takes the styles the user supplied via the `static styles` property and\n   * returns the array of styles to apply to the element.\n   * Override this method to integrate into a style management system.\n   *\n   * Styles are deduplicated preserving the _last_ instance in the list. This\n   * is a performance optimization to avoid duplicated styles that can occur\n   * especially when composing via subclassing. The last item is kept to try\n   * to preserve the cascade order with the assumption that it's most important\n   * that last added styles override previous styles.\n   *\n   * @nocollapse\n   * @category styles\n   */\n  protected static finalizeStyles(\n    styles?: CSSResultGroup\n  ): Array<CSSResultOrNative> {\n    const elementStyles = [];\n    if (Array.isArray(styles)) {\n      // Dedupe the flattened array in reverse order to preserve the last items.\n      // Casting to Array<unknown> works around TS error that\n      // appears to come from trying to flatten a type CSSResultArray.\n      const set = new Set((styles as Array<unknown>).flat(Infinity).reverse());\n      // Then preserve original order by adding the set items in reverse order.\n      for (const s of set) {\n        elementStyles.unshift(getCompatibleStyle(s as CSSResultOrNative));\n      }\n    } else if (styles !== undefined) {\n      elementStyles.push(getCompatibleStyle(styles));\n    }\n    return elementStyles;\n  }\n\n  /**\n   * Node or ShadowRoot into which element DOM should be rendered. Defaults\n   * to an open shadowRoot.\n   * @category rendering\n   */\n  readonly renderRoot!: HTMLElement | DocumentFragment;\n\n  /**\n   * Returns the property name for the given attribute `name`.\n   * @nocollapse\n   */\n  private static __attributeNameForProperty(\n    name: PropertyKey,\n    options: PropertyDeclaration\n  ) {\n    const attribute = options.attribute;\n    return attribute === false\n      ? undefined\n      : typeof attribute === 'string'\n        ? attribute\n        : typeof name === 'string'\n          ? name.toLowerCase()\n          : undefined;\n  }\n\n  // Initialize to an unresolved Promise so we can make sure the element has\n  // connected before first update.\n  private __updatePromise!: Promise<boolean>;\n\n  /**\n   * True if there is a pending update as a result of calling `requestUpdate()`.\n   * Should only be read.\n   * @category updates\n   */\n  isUpdatePending = false;\n\n  /**\n   * Is set to `true` after the first update. The element code cannot assume\n   * that `renderRoot` exists before the element `hasUpdated`.\n   * @category updates\n   */\n  hasUpdated = false;\n\n  /**\n   * Map with keys for any properties that have changed since the last\n   * update cycle with previous values.\n   *\n   * @internal\n   */\n  _$changedProperties!: PropertyValues;\n\n  /**\n   * Records property default values when the\n   * `useDefault` option is used.\n   */\n  private __defaultValues?: Map<PropertyKey, unknown>;\n\n  /**\n   * Properties that should be reflected when updated.\n   */\n  private __reflectingProperties?: Set<PropertyKey>;\n\n  /**\n   * Name of currently reflecting property\n   */\n  private __reflectingProperty: PropertyKey | null = null;\n\n  /**\n   * Set of controllers.\n   */\n  private __controllers?: Set<ReactiveController>;\n\n  constructor() {\n    super();\n    this.__initialize();\n  }\n\n  /**\n   * Internal only override point for customizing work done when elements\n   * are constructed.\n   */\n  private __initialize() {\n    this.__updatePromise = new Promise<boolean>(\n      (res) => (this.enableUpdating = res)\n    );\n    this._$changedProperties = new Map();\n    // This enqueues a microtask that must run before the first update, so it\n    // must be called before requestUpdate()\n    this.__saveInstanceProperties();\n    // ensures first update will be caught by an early access of\n    // `updateComplete`\n    this.requestUpdate();\n    (this.constructor as typeof ReactiveElement)._initializers?.forEach((i) =>\n      i(this)\n    );\n  }\n\n  /**\n   * Registers a `ReactiveController` to participate in the element's reactive\n   * update cycle. The element automatically calls into any registered\n   * controllers during its lifecycle callbacks.\n   *\n   * If the element is connected when `addController()` is called, the\n   * controller's `hostConnected()` callback will be immediately called.\n   * @category controllers\n   */\n  addController(controller: ReactiveController) {\n    (this.__controllers ??= new Set()).add(controller);\n    // If a controller is added after the element has been connected,\n    // call hostConnected. Note, re-using existence of `renderRoot` here\n    // (which is set in connectedCallback) to avoid the need to track a\n    // first connected state.\n    if (this.renderRoot !== undefined && this.isConnected) {\n      controller.hostConnected?.();\n    }\n  }\n\n  /**\n   * Removes a `ReactiveController` from the element.\n   * @category controllers\n   */\n  removeController(controller: ReactiveController) {\n    this.__controllers?.delete(controller);\n  }\n\n  /**\n   * Fixes any properties set on the instance before upgrade time.\n   * Otherwise these would shadow the accessor and break these properties.\n   * The properties are stored in a Map which is played back after the\n   * constructor runs.\n   */\n  private __saveInstanceProperties() {\n    const instanceProperties = new Map<PropertyKey, unknown>();\n    const elementProperties = (this.constructor as typeof ReactiveElement)\n      .elementProperties;\n    for (const p of elementProperties.keys() as IterableIterator<keyof this>) {\n      if (this.hasOwnProperty(p)) {\n        instanceProperties.set(p, this[p]);\n        delete this[p];\n      }\n    }\n    if (instanceProperties.size > 0) {\n      this.__instanceProperties = instanceProperties;\n    }\n  }\n\n  /**\n   * Returns the node into which the element should render and by default\n   * creates and returns an open shadowRoot. Implement to customize where the\n   * element's DOM is rendered. For example, to render into the element's\n   * childNodes, return `this`.\n   *\n   * @return Returns a node into which to render.\n   * @category rendering\n   */\n  protected createRenderRoot(): HTMLElement | DocumentFragment {\n    const renderRoot =\n      this.shadowRoot ??\n      this.attachShadow(\n        (this.constructor as typeof ReactiveElement).shadowRootOptions\n      );\n    adoptStyles(\n      renderRoot,\n      (this.constructor as typeof ReactiveElement).elementStyles\n    );\n    return renderRoot;\n  }\n\n  /**\n   * On first connection, creates the element's renderRoot, sets up\n   * element styling, and enables updating.\n   * @category lifecycle\n   */\n  connectedCallback() {\n    // Create renderRoot before controllers `hostConnected`\n    (this as Mutable<typeof this, 'renderRoot'>).renderRoot ??=\n      this.createRenderRoot();\n    this.enableUpdating(true);\n    this.__controllers?.forEach((c) => c.hostConnected?.());\n  }\n\n  /**\n   * Note, this method should be considered final and not overridden. It is\n   * overridden on the element instance with a function that triggers the first\n   * update.\n   * @category updates\n   */\n  protected enableUpdating(_requestedUpdate: boolean) {}\n\n  /**\n   * Allows for `super.disconnectedCallback()` in extensions while\n   * reserving the possibility of making non-breaking feature additions\n   * when disconnecting at some point in the future.\n   * @category lifecycle\n   */\n  disconnectedCallback() {\n    this.__controllers?.forEach((c) => c.hostDisconnected?.());\n  }\n\n  /**\n   * Synchronizes property values when attributes change.\n   *\n   * Specifically, when an attribute is set, the corresponding property is set.\n   * You should rarely need to implement this callback. If this method is\n   * overridden, `super.attributeChangedCallback(name, _old, value)` must be\n   * called.\n   *\n   * See [responding to attribute changes](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements#responding_to_attribute_changes)\n   * on MDN for more information about the `attributeChangedCallback`.\n   * @category attributes\n   */\n  attributeChangedCallback(\n    name: string,\n    _old: string | null,\n    value: string | null\n  ) {\n    this._$attributeToProperty(name, value);\n  }\n\n  private __propertyToAttribute(name: PropertyKey, value: unknown) {\n    const elemProperties: PropertyDeclarationMap = (\n      this.constructor as typeof ReactiveElement\n    ).elementProperties;\n    const options = elemProperties.get(name)!;\n    const attr = (\n      this.constructor as typeof ReactiveElement\n    ).__attributeNameForProperty(name, options);\n    if (attr !== undefined && options.reflect === true) {\n      const converter =\n        (options.converter as ComplexAttributeConverter)?.toAttribute !==\n        undefined\n          ? (options.converter as ComplexAttributeConverter)\n          : defaultConverter;\n      const attrValue = converter.toAttribute!(value, options.type);\n      if (\n        DEV_MODE &&\n        (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n          'migration'\n        ) &&\n        attrValue === undefined\n      ) {\n        issueWarning(\n          'undefined-attribute-value',\n          `The attribute value for the ${name as string} property is ` +\n            `undefined on element ${this.localName}. The attribute will be ` +\n            `removed, but in the previous version of \\`ReactiveElement\\`, ` +\n            `the attribute would not have changed.`\n        );\n      }\n      // Track if the property is being reflected to avoid\n      // setting the property again via `attributeChangedCallback`. Note:\n      // 1. this takes advantage of the fact that the callback is synchronous.\n      // 2. will behave incorrectly if multiple attributes are in the reaction\n      // stack at time of calling. However, since we process attributes\n      // in `update` this should not be possible (or an extreme corner case\n      // that we'd like to discover).\n      // mark state reflecting\n      this.__reflectingProperty = name;\n      if (attrValue == null) {\n        this.removeAttribute(attr);\n      } else {\n        this.setAttribute(attr, attrValue as string);\n      }\n      // mark state not reflecting\n      this.__reflectingProperty = null;\n    }\n  }\n\n  /** @internal */\n  _$attributeToProperty(name: string, value: string | null) {\n    const ctor = this.constructor as typeof ReactiveElement;\n    // Note, hint this as an `AttributeMap` so closure clearly understands\n    // the type; it has issues with tracking types through statics\n    const propName = (ctor.__attributeToPropertyMap as AttributeMap).get(name);\n    // Use tracking info to avoid reflecting a property value to an attribute\n    // if it was just set because the attribute changed.\n    if (propName !== undefined && this.__reflectingProperty !== propName) {\n      const options = ctor.getPropertyOptions(propName);\n      const converter =\n        typeof options.converter === 'function'\n          ? {fromAttribute: options.converter}\n          : options.converter?.fromAttribute !== undefined\n            ? options.converter\n            : defaultConverter;\n      // mark state reflecting\n      this.__reflectingProperty = propName;\n      const convertedValue = converter.fromAttribute!(value, options.type);\n      this[propName as keyof this] =\n        convertedValue ??\n        this.__defaultValues?.get(propName) ??\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        (convertedValue as any);\n      // mark state not reflecting\n      this.__reflectingProperty = null;\n    }\n  }\n\n  /**\n   * Requests an update which is processed asynchronously. This should be called\n   * when an element should update based on some state not triggered by setting\n   * a reactive property. In this case, pass no arguments. It should also be\n   * called when manually implementing a property setter. In this case, pass the\n   * property `name` and `oldValue` to ensure that any configured property\n   * options are honored.\n   *\n   * @param name name of requesting property\n   * @param oldValue old value of requesting property\n   * @param options property options to use instead of the previously\n   *     configured options\n   * @param useNewValue if true, the newValue argument is used instead of\n   *     reading the property value. This is important to use if the reactive\n   *     property is a standard private accessor, as opposed to a plain\n   *     property, since private members can't be dynamically read by name.\n   * @param newValue the new value of the property. This is only used if\n   *     `useNewValue` is true.\n   * @category updates\n   */\n  requestUpdate(\n    name?: PropertyKey,\n    oldValue?: unknown,\n    options?: PropertyDeclaration,\n    useNewValue = false,\n    newValue?: unknown\n  ): void {\n    // If we have a property key, perform property update steps.\n    if (name !== undefined) {\n      if (DEV_MODE && (name as unknown) instanceof Event) {\n        issueWarning(\n          ``,\n          `The requestUpdate() method was called with an Event as the property name. This is probably a mistake caused by binding this.requestUpdate as an event listener. Instead bind a function that will call it with no arguments: () => this.requestUpdate()`\n        );\n      }\n      const ctor = this.constructor as typeof ReactiveElement;\n      if (useNewValue === false) {\n        newValue = this[name as keyof this];\n      }\n      options ??= ctor.getPropertyOptions(name);\n      const changed =\n        (options.hasChanged ?? notEqual)(newValue, oldValue) ||\n        // When there is no change, check a corner case that can occur when\n        // 1. there's a initial value which was not reflected\n        // 2. the property is subsequently set to this value.\n        // For example, `prop: {useDefault: true, reflect: true}`\n        // and el.prop = 'foo'. This should be considered a change if the\n        // attribute is not set because we will now reflect the property to the attribute.\n        (options.useDefault &&\n          options.reflect &&\n          newValue === this.__defaultValues?.get(name) &&\n          !this.hasAttribute(ctor.__attributeNameForProperty(name, options)!));\n      if (changed) {\n        this._$changeProperty(name, oldValue, options);\n      } else {\n        // Abort the request if the property should not be considered changed.\n        return;\n      }\n    }\n    if (this.isUpdatePending === false) {\n      this.__updatePromise = this.__enqueueUpdate();\n    }\n  }\n\n  /**\n   * @internal\n   */\n  _$changeProperty(\n    name: PropertyKey,\n    oldValue: unknown,\n    {useDefault, reflect, wrapped}: PropertyDeclaration,\n    initializeValue?: unknown\n  ) {\n    // Record default value when useDefault is used. This allows us to\n    // restore this value when the attribute is removed.\n    if (useDefault && !(this.__defaultValues ??= new Map()).has(name)) {\n      this.__defaultValues.set(\n        name,\n        initializeValue ?? oldValue ?? this[name as keyof this]\n      );\n      // if this is not wrapping an accessor, it must be an initial setting\n      // and in this case we do not want to record the change or reflect.\n      if (wrapped !== true || initializeValue !== undefined) {\n        return;\n      }\n    }\n    // TODO (justinfagnani): Create a benchmark of Map.has() + Map.set(\n    // vs just Map.set()\n    if (!this._$changedProperties.has(name)) {\n      // On the initial change, the old value should be `undefined`, except\n      // with `useDefault`\n      if (!this.hasUpdated && !useDefault) {\n        oldValue = undefined;\n      }\n      this._$changedProperties.set(name, oldValue);\n    }\n    // Add to reflecting properties set.\n    // Note, it's important that every change has a chance to add the\n    // property to `__reflectingProperties`. This ensures setting\n    // attribute + property reflects correctly.\n    if (reflect === true && this.__reflectingProperty !== name) {\n      (this.__reflectingProperties ??= new Set<PropertyKey>()).add(name);\n    }\n  }\n\n  /**\n   * Sets up the element to asynchronously update.\n   */\n  private async __enqueueUpdate() {\n    this.isUpdatePending = true;\n    try {\n      // Ensure any previous update has resolved before updating.\n      // This `await` also ensures that property changes are batched.\n      await this.__updatePromise;\n    } catch (e) {\n      // Refire any previous errors async so they do not disrupt the update\n      // cycle. Errors are refired so developers have a chance to observe\n      // them, and this can be done by implementing\n      // `window.onunhandledrejection`.\n      Promise.reject(e);\n    }\n    const result = this.scheduleUpdate();\n    // If `scheduleUpdate` returns a Promise, we await it. This is done to\n    // enable coordinating updates with a scheduler. Note, the result is\n    // checked to avoid delaying an additional microtask unless we need to.\n    if (result != null) {\n      await result;\n    }\n    return !this.isUpdatePending;\n  }\n\n  /**\n   * Schedules an element update. You can override this method to change the\n   * timing of updates by returning a Promise. The update will await the\n   * returned Promise, and you should resolve the Promise to allow the update\n   * to proceed. If this method is overridden, `super.scheduleUpdate()`\n   * must be called.\n   *\n   * For instance, to schedule updates to occur just before the next frame:\n   *\n   * ```ts\n   * override protected async scheduleUpdate(): Promise<unknown> {\n   *   await new Promise((resolve) => requestAnimationFrame(() => resolve()));\n   *   super.scheduleUpdate();\n   * }\n   * ```\n   * @category updates\n   */\n  protected scheduleUpdate(): void | Promise<unknown> {\n    const result = this.performUpdate();\n    if (\n      DEV_MODE &&\n      (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n        'async-perform-update'\n      ) &&\n      typeof (result as unknown as Promise<unknown> | undefined)?.then ===\n        'function'\n    ) {\n      issueWarning(\n        'async-perform-update',\n        `Element ${this.localName} returned a Promise from performUpdate(). ` +\n          `This behavior is deprecated and will be removed in a future ` +\n          `version of ReactiveElement.`\n      );\n    }\n    return result;\n  }\n\n  /**\n   * Performs an element update. Note, if an exception is thrown during the\n   * update, `firstUpdated` and `updated` will not be called.\n   *\n   * Call `performUpdate()` to immediately process a pending update. This should\n   * generally not be needed, but it can be done in rare cases when you need to\n   * update synchronously.\n   *\n   * @category updates\n   */\n  protected performUpdate(): void {\n    // Abort any update if one is not pending when this is called.\n    // This can happen if `performUpdate` is called early to \"flush\"\n    // the update.\n    if (!this.isUpdatePending) {\n      return;\n    }\n    debugLogEvent?.({kind: 'update'});\n    if (!this.hasUpdated) {\n      // Create renderRoot before first update. This occurs in `connectedCallback`\n      // but is done here to support out of tree calls to `enableUpdating`/`performUpdate`.\n      (this as Mutable<typeof this, 'renderRoot'>).renderRoot ??=\n        this.createRenderRoot();\n      if (DEV_MODE) {\n        // Produce warning if any reactive properties on the prototype are\n        // shadowed by class fields. Instance fields set before upgrade are\n        // deleted by this point, so any own property is caused by class field\n        // initialization in the constructor.\n        const ctor = this.constructor as typeof ReactiveElement;\n        const shadowedProperties = [...ctor.elementProperties.keys()].filter(\n          (p) => this.hasOwnProperty(p) && p in getPrototypeOf(this)\n        );\n        if (shadowedProperties.length) {\n          throw new Error(\n            `The following properties on element ${this.localName} will not ` +\n              `trigger updates as expected because they are set using class ` +\n              `fields: ${shadowedProperties.join(', ')}. ` +\n              `Native class fields and some compiled output will overwrite ` +\n              `accessors used for detecting changes. See ` +\n              `https://lit.dev/msg/class-field-shadowing ` +\n              `for more information.`\n          );\n        }\n      }\n      // Mixin instance properties once, if they exist.\n      if (this.__instanceProperties) {\n        // TODO (justinfagnani): should we use the stored value? Could a new value\n        // have been set since we stored the own property value?\n        for (const [p, value] of this.__instanceProperties) {\n          this[p as keyof this] = value as this[keyof this];\n        }\n        this.__instanceProperties = undefined;\n      }\n      // Trigger initial value reflection and populate the initial\n      // `changedProperties` map, but only for the case of properties created\n      // via `createProperty` on accessors, which will not have already\n      // populated the `changedProperties` map since they are not set.\n      // We can't know if these accessors had initializers, so we just set\n      // them anyway - a difference from experimental decorators on fields and\n      // standard decorators on auto-accessors.\n      // For context see:\n      // https://github.com/lit/lit/pull/4183#issuecomment-1711959635\n      const elementProperties = (this.constructor as typeof ReactiveElement)\n        .elementProperties;\n      if (elementProperties.size > 0) {\n        for (const [p, options] of elementProperties) {\n          const {wrapped} = options;\n          const value = this[p as keyof this];\n          if (\n            wrapped === true &&\n            !this._$changedProperties.has(p) &&\n            value !== undefined\n          ) {\n            this._$changeProperty(p, undefined, options, value);\n          }\n        }\n      }\n    }\n    let shouldUpdate = false;\n    const changedProperties = this._$changedProperties;\n    try {\n      shouldUpdate = this.shouldUpdate(changedProperties);\n      if (shouldUpdate) {\n        this.willUpdate(changedProperties);\n        this.__controllers?.forEach((c) => c.hostUpdate?.());\n        this.update(changedProperties);\n      } else {\n        this.__markUpdated();\n      }\n    } catch (e) {\n      // Prevent `firstUpdated` and `updated` from running when there's an\n      // update exception.\n      shouldUpdate = false;\n      // Ensure element can accept additional updates after an exception.\n      this.__markUpdated();\n      throw e;\n    }\n    // The update is no longer considered pending and further updates are now allowed.\n    if (shouldUpdate) {\n      this._$didUpdate(changedProperties);\n    }\n  }\n\n  /**\n   * Invoked before `update()` to compute values needed during the update.\n   *\n   * Implement `willUpdate` to compute property values that depend on other\n   * properties and are used in the rest of the update process.\n   *\n   * ```ts\n   * willUpdate(changedProperties) {\n   *   // only need to check changed properties for an expensive computation.\n   *   if (changedProperties.has('firstName') || changedProperties.has('lastName')) {\n   *     this.sha = computeSHA(`${this.firstName} ${this.lastName}`);\n   *   }\n   * }\n   *\n   * render() {\n   *   return html`SHA: ${this.sha}`;\n   * }\n   * ```\n   *\n   * @category updates\n   */\n  protected willUpdate(_changedProperties: PropertyValues): void {}\n\n  // Note, this is an override point for polyfill-support.\n  // @internal\n  _$didUpdate(changedProperties: PropertyValues) {\n    this.__controllers?.forEach((c) => c.hostUpdated?.());\n    if (!this.hasUpdated) {\n      this.hasUpdated = true;\n      this.firstUpdated(changedProperties);\n    }\n    this.updated(changedProperties);\n    if (\n      DEV_MODE &&\n      this.isUpdatePending &&\n      (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n        'change-in-update'\n      )\n    ) {\n      issueWarning(\n        'change-in-update',\n        `Element ${this.localName} scheduled an update ` +\n          `(generally because a property was set) ` +\n          `after an update completed, causing a new update to be scheduled. ` +\n          `This is inefficient and should be avoided unless the next update ` +\n          `can only be scheduled as a side effect of the previous update.`\n      );\n    }\n  }\n\n  private __markUpdated() {\n    this._$changedProperties = new Map();\n    this.isUpdatePending = false;\n  }\n\n  /**\n   * Returns a Promise that resolves when the element has completed updating.\n   * The Promise value is a boolean that is `true` if the element completed the\n   * update without triggering another update. The Promise result is `false` if\n   * a property was set inside `updated()`. If the Promise is rejected, an\n   * exception was thrown during the update.\n   *\n   * To await additional asynchronous work, override the `getUpdateComplete`\n   * method. For example, it is sometimes useful to await a rendered element\n   * before fulfilling this Promise. To do this, first await\n   * `super.getUpdateComplete()`, then any subsequent state.\n   *\n   * @return A promise of a boolean that resolves to true if the update completed\n   *     without triggering another update.\n   * @category updates\n   */\n  get updateComplete(): Promise<boolean> {\n    return this.getUpdateComplete();\n  }\n\n  /**\n   * Override point for the `updateComplete` promise.\n   *\n   * It is not safe to override the `updateComplete` getter directly due to a\n   * limitation in TypeScript which means it is not possible to call a\n   * superclass getter (e.g. `super.updateComplete.then(...)`) when the target\n   * language is ES5 (https://github.com/microsoft/TypeScript/issues/338).\n   * This method should be overridden instead. For example:\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   override async getUpdateComplete() {\n   *     const result = await super.getUpdateComplete();\n   *     await this._myChild.updateComplete;\n   *     return result;\n   *   }\n   * }\n   * ```\n   *\n   * @return A promise of a boolean that resolves to true if the update completed\n   *     without triggering another update.\n   * @category updates\n   */\n  protected getUpdateComplete(): Promise<boolean> {\n    return this.__updatePromise;\n  }\n\n  /**\n   * Controls whether or not `update()` should be called when the element requests\n   * an update. By default, this method always returns `true`, but this can be\n   * customized to control when to update.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected shouldUpdate(_changedProperties: PropertyValues): boolean {\n    return true;\n  }\n\n  /**\n   * Updates the element. This method reflects property values to attributes.\n   * It can be overridden to render and keep updated element DOM.\n   * Setting properties inside this method will *not* trigger\n   * another update.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected update(_changedProperties: PropertyValues) {\n    // The forEach() expression will only run when __reflectingProperties is\n    // defined, and it returns undefined, setting __reflectingProperties to\n    // undefined\n    this.__reflectingProperties &&= this.__reflectingProperties.forEach((p) =>\n      this.__propertyToAttribute(p, this[p as keyof this])\n    ) as undefined;\n    this.__markUpdated();\n  }\n\n  /**\n   * Invoked whenever the element is updated. Implement to perform\n   * post-updating tasks via DOM APIs, for example, focusing an element.\n   *\n   * Setting properties inside this method will trigger the element to update\n   * again after this update cycle completes.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected updated(_changedProperties: PropertyValues) {}\n\n  /**\n   * Invoked when the element is first updated. Implement to perform one time\n   * work on the element after update.\n   *\n   * ```ts\n   * firstUpdated() {\n   *   this.renderRoot.getElementById('my-text-area').focus();\n   * }\n   * ```\n   *\n   * Setting properties inside this method will trigger the element to update\n   * again after this update cycle completes.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected firstUpdated(_changedProperties: PropertyValues) {}\n}\n// Assigned here to work around a jscompiler bug with static fields\n// when compiling to ES5.\n// https://github.com/google/closure-compiler/issues/3177\n(ReactiveElement as unknown as Record<string, unknown>)[\n  JSCompiler_renameProperty('elementProperties', ReactiveElement)\n] = new Map();\n(ReactiveElement as unknown as Record<string, unknown>)[\n  JSCompiler_renameProperty('finalized', ReactiveElement)\n] = new Map();\n\n// Apply polyfills if available\npolyfillSupport?.({ReactiveElement});\n\n// Dev mode warnings...\nif (DEV_MODE) {\n  // Default warning set.\n  ReactiveElement.enabledWarnings = [\n    'change-in-update',\n    'async-perform-update',\n  ];\n  const ensureOwnWarnings = function (ctor: typeof ReactiveElement) {\n    if (\n      !ctor.hasOwnProperty(JSCompiler_renameProperty('enabledWarnings', ctor))\n    ) {\n      ctor.enabledWarnings = ctor.enabledWarnings!.slice();\n    }\n  };\n  ReactiveElement.enableWarning = function (\n    this: typeof ReactiveElement,\n    warning: WarningKind\n  ) {\n    ensureOwnWarnings(this);\n    if (!this.enabledWarnings!.includes(warning)) {\n      this.enabledWarnings!.push(warning);\n    }\n  };\n  ReactiveElement.disableWarning = function (\n    this: typeof ReactiveElement,\n    warning: WarningKind\n  ) {\n    ensureOwnWarnings(this);\n    const i = this.enabledWarnings!.indexOf(warning);\n    if (i >= 0) {\n      this.enabledWarnings!.splice(i, 1);\n    }\n  };\n}\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for ReactiveElement usage.\n(global.reactiveElementVersions ??= []).push('2.1.2');\nif (DEV_MODE && global.reactiveElementVersions.length > 1) {\n  queueMicrotask(() => {\n    issueWarning!(\n      'multiple-versions',\n      `Multiple versions of Lit loaded. Loading multiple versions ` +\n        `is not recommended.`\n    );\n  });\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n// IMPORTANT: these imports must be type-only\nimport type {Directive, DirectiveResult, PartInfo} from './directive.js';\nimport type {TrustedHTML, TrustedTypesWindow} from 'trusted-types/lib/index.js';\n\nconst DEV_MODE = true;\nconst ENABLE_EXTRA_SECURITY_HOOKS = true;\nconst ENABLE_SHADYDOM_NOPATCH = true;\nconst NODE_MODE = false;\n\n// Allows minifiers to rename references to globalThis\nconst global = globalThis;\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace LitUnstable {\n  /**\n   * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n   * we will emit 'lit-debug' events to window, with live details about the update and render\n   * lifecycle. These can be useful for writing debug tooling and visualizations.\n   *\n   * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n   * making certain operations that are normally very cheap (like a no-op render) much slower,\n   * because we must copy data and dispatch events.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-namespace\n  export namespace DebugLog {\n    export type Entry =\n      | TemplatePrep\n      | TemplateInstantiated\n      | TemplateInstantiatedAndUpdated\n      | TemplateUpdating\n      | BeginRender\n      | EndRender\n      | CommitPartEntry\n      | SetPartValue;\n    export interface TemplatePrep {\n      kind: 'template prep';\n      template: Template;\n      strings: TemplateStringsArray;\n      clonableTemplate: HTMLTemplateElement;\n      parts: TemplatePart[];\n    }\n    export interface BeginRender {\n      kind: 'begin render';\n      id: number;\n      value: unknown;\n      container: RenderRootNode;\n      options: RenderOptions | undefined;\n      part: ChildPart | undefined;\n    }\n    export interface EndRender {\n      kind: 'end render';\n      id: number;\n      value: unknown;\n      container: RenderRootNode;\n      options: RenderOptions | undefined;\n      part: ChildPart;\n    }\n    export interface TemplateInstantiated {\n      kind: 'template instantiated';\n      template: Template | CompiledTemplate;\n      instance: TemplateInstance;\n      options: RenderOptions | undefined;\n      fragment: Node;\n      parts: Array<Part | undefined>;\n      values: unknown[];\n    }\n    export interface TemplateInstantiatedAndUpdated {\n      kind: 'template instantiated and updated';\n      template: Template | CompiledTemplate;\n      instance: TemplateInstance;\n      options: RenderOptions | undefined;\n      fragment: Node;\n      parts: Array<Part | undefined>;\n      values: unknown[];\n    }\n    export interface TemplateUpdating {\n      kind: 'template updating';\n      template: Template | CompiledTemplate;\n      instance: TemplateInstance;\n      options: RenderOptions | undefined;\n      parts: Array<Part | undefined>;\n      values: unknown[];\n    }\n    export interface SetPartValue {\n      kind: 'set part';\n      part: Part;\n      value: unknown;\n      valueIndex: number;\n      values: unknown[];\n      templateInstance: TemplateInstance;\n    }\n\n    export type CommitPartEntry =\n      | CommitNothingToChildEntry\n      | CommitText\n      | CommitNode\n      | CommitAttribute\n      | CommitProperty\n      | CommitBooleanAttribute\n      | CommitEventListener\n      | CommitToElementBinding;\n\n    export interface CommitNothingToChildEntry {\n      kind: 'commit nothing to child';\n      start: ChildNode;\n      end: ChildNode | null;\n      parent: Disconnectable | undefined;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitText {\n      kind: 'commit text';\n      node: Text;\n      value: unknown;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitNode {\n      kind: 'commit node';\n      start: Node;\n      parent: Disconnectable | undefined;\n      value: Node;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitAttribute {\n      kind: 'commit attribute';\n      element: Element;\n      name: string;\n      value: unknown;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitProperty {\n      kind: 'commit property';\n      element: Element;\n      name: string;\n      value: unknown;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitBooleanAttribute {\n      kind: 'commit boolean attribute';\n      element: Element;\n      name: string;\n      value: boolean;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitEventListener {\n      kind: 'commit event listener';\n      element: Element;\n      name: string;\n      value: unknown;\n      oldListener: unknown;\n      options: RenderOptions | undefined;\n      // True if we're removing the old event listener (e.g. because settings changed, or value is nothing)\n      removeListener: boolean;\n      // True if we're adding a new event listener (e.g. because first render, or settings changed)\n      addListener: boolean;\n    }\n\n    export interface CommitToElementBinding {\n      kind: 'commit to element binding';\n      element: Element;\n      value: unknown;\n      options: RenderOptions | undefined;\n    }\n  }\n}\n\ninterface DebugLoggingWindow {\n  // Even in dev mode, we generally don't want to emit these events, as that's\n  // another level of cost, so only emit them when DEV_MODE is true _and_ when\n  // window.emitLitDebugEvents is true.\n  emitLitDebugLogEvents?: boolean;\n}\n\n/**\n * Useful for visualizing and logging insights into what the Lit template system is doing.\n *\n * Compiled out of prod mode builds.\n */\nconst debugLogEvent = DEV_MODE\n  ? (event: LitUnstable.DebugLog.Entry) => {\n      const shouldEmit = (global as unknown as DebugLoggingWindow)\n        .emitLitDebugLogEvents;\n      if (!shouldEmit) {\n        return;\n      }\n      global.dispatchEvent(\n        new CustomEvent<LitUnstable.DebugLog.Entry>('lit-debug', {\n          detail: event,\n        })\n      );\n    }\n  : undefined;\n// Used for connecting beginRender and endRender events when there are nested\n// renders when errors are thrown preventing an endRender event from being\n// called.\nlet debugLogRenderId = 0;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n  global.litIssuedWarnings ??= new Set();\n\n  /**\n   * Issue a warning if we haven't already, based either on `code` or `warning`.\n   * Warnings are disabled automatically only by `warning`; disabling via `code`\n   * can be done by users.\n   */\n  issueWarning = (code: string, warning: string) => {\n    warning += code\n      ? ` See https://lit.dev/msg/${code} for more information.`\n      : '';\n    if (\n      !global.litIssuedWarnings!.has(warning) &&\n      !global.litIssuedWarnings!.has(code)\n    ) {\n      console.warn(warning);\n      global.litIssuedWarnings!.add(warning);\n    }\n  };\n\n  queueMicrotask(() => {\n    issueWarning(\n      'dev-mode',\n      `Lit is in dev mode. Not recommended for production!`\n    );\n  });\n}\n\nconst wrap =\n  ENABLE_SHADYDOM_NOPATCH &&\n  global.ShadyDOM?.inUse &&\n  global.ShadyDOM?.noPatch === true\n    ? (global.ShadyDOM!.wrap as <T extends Node>(node: T) => T)\n    : <T extends Node>(node: T) => node;\n\nconst trustedTypes = (global as unknown as TrustedTypesWindow).trustedTypes;\n\n/**\n * Our TrustedTypePolicy for HTML which is declared using the html template\n * tag function.\n *\n * That HTML is a developer-authored constant, and is parsed with innerHTML\n * before any untrusted expressions have been mixed in. Therefor it is\n * considered safe by construction.\n */\nconst policy = trustedTypes\n  ? trustedTypes.createPolicy('lit-html', {\n      createHTML: (s) => s,\n    })\n  : undefined;\n\n/**\n * Used to sanitize any value before it is written into the DOM. This can be\n * used to implement a security policy of allowed and disallowed values in\n * order to prevent XSS attacks.\n *\n * One way of using this callback would be to check attributes and properties\n * against a list of high risk fields, and require that values written to such\n * fields be instances of a class which is safe by construction. Closure's Safe\n * HTML Types is one implementation of this technique (\n * https://github.com/google/safe-html-types/blob/master/doc/safehtml-types.md).\n * The TrustedTypes polyfill in API-only mode could also be used as a basis\n * for this technique (https://github.com/WICG/trusted-types).\n *\n * @param node The HTML node (usually either a #text node or an Element) that\n *     is being written to. Note that this is just an exemplar node, the write\n *     may take place against another instance of the same class of node.\n * @param name The name of an attribute or property (for example, 'href').\n * @param type Indicates whether the write that's about to be performed will\n *     be to a property or a node.\n * @return A function that will sanitize this class of writes.\n */\nexport type SanitizerFactory = (\n  node: Node,\n  name: string,\n  type: 'property' | 'attribute'\n) => ValueSanitizer;\n\n/**\n * A function which can sanitize values that will be written to a specific kind\n * of DOM sink.\n *\n * See SanitizerFactory.\n *\n * @param value The value to sanitize. Will be the actual value passed into\n *     the lit-html template literal, so this could be of any type.\n * @return The value to write to the DOM. Usually the same as the input value,\n *     unless sanitization is needed.\n */\nexport type ValueSanitizer = (value: unknown) => unknown;\n\nconst identityFunction: ValueSanitizer = (value: unknown) => value;\nconst noopSanitizer: SanitizerFactory = (\n  _node: Node,\n  _name: string,\n  _type: 'property' | 'attribute'\n) => identityFunction;\n\n/** Sets the global sanitizer factory. */\nconst setSanitizer = (newSanitizer: SanitizerFactory) => {\n  if (!ENABLE_EXTRA_SECURITY_HOOKS) {\n    return;\n  }\n  if (sanitizerFactoryInternal !== noopSanitizer) {\n    throw new Error(\n      `Attempted to overwrite existing lit-html security policy.` +\n        ` setSanitizeDOMValueFactory should be called at most once.`\n    );\n  }\n  sanitizerFactoryInternal = newSanitizer;\n};\n\n/**\n * Only used in internal tests, not a part of the public API.\n */\nconst _testOnlyClearSanitizerFactoryDoNotCallOrElse = () => {\n  sanitizerFactoryInternal = noopSanitizer;\n};\n\nconst createSanitizer: SanitizerFactory = (node, name, type) => {\n  return sanitizerFactoryInternal(node, name, type);\n};\n\n// Added to an attribute name to mark the attribute as bound so we can find\n// it easily.\nconst boundAttributeSuffix = '$lit$';\n\n// This marker is used in many syntactic positions in HTML, so it must be\n// a valid element name and attribute name. We don't support dynamic names (yet)\n// but this at least ensures that the parse tree is closer to the template\n// intention.\nconst marker = `lit$${Math.random().toFixed(9).slice(2)}$`;\n\n// String used to tell if a comment is a marker comment\nconst markerMatch = '?' + marker;\n\n// Text used to insert a comment marker node. We use processing instruction\n// syntax because it's slightly smaller, but parses as a comment node.\nconst nodeMarker = `<${markerMatch}>`;\n\nconst d =\n  NODE_MODE && global.document === undefined\n    ? ({\n        createTreeWalker() {\n          return {};\n        },\n      } as unknown as Document)\n    : document;\n\n// Creates a dynamic marker. We never have to search for these in the DOM.\nconst createMarker = () => d.createComment('');\n\n// https://tc39.github.io/ecma262/#sec-typeof-operator\ntype Primitive = null | undefined | boolean | number | string | symbol | bigint;\nconst isPrimitive = (value: unknown): value is Primitive =>\n  value === null || (typeof value != 'object' && typeof value != 'function');\nconst isArray = Array.isArray;\nconst isIterable = (value: unknown): value is Iterable<unknown> =>\n  isArray(value) ||\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  typeof (value as any)?.[Symbol.iterator] === 'function';\n\nconst SPACE_CHAR = `[ \\t\\n\\f\\r]`;\nconst ATTR_VALUE_CHAR = `[^ \\t\\n\\f\\r\"'\\`<>=]`;\nconst NAME_CHAR = `[^\\\\s\"'>=/]`;\n\n// These regexes represent the five parsing states that we care about in the\n// Template's HTML scanner. They match the *end* of the state they're named\n// after.\n// Depending on the match, we transition to a new state. If there's no match,\n// we stay in the same state.\n// Note that the regexes are stateful. We utilize lastIndex and sync it\n// across the multiple regexes used. In addition to the five regexes below\n// we also dynamically create a regex to find the matching end tags for raw\n// text elements.\n\n/**\n * End of text is: `<` followed by:\n *   (comment start) or (tag) or (dynamic tag binding)\n */\nconst textEndRegex = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nconst COMMENT_START = 1;\nconst TAG_NAME = 2;\nconst DYNAMIC_TAG_NAME = 3;\n\nconst commentEndRegex = /-->/g;\n/**\n * Comments not started with <!--, like </{, can be ended by a single `>`\n */\nconst comment2EndRegex = />/g;\n\n/**\n * The tagEnd regex matches the end of the \"inside an opening\" tag syntax\n * position. It either matches a `>`, an attribute-like sequence, or the end\n * of the string after a space (attribute-name position ending).\n *\n * See attributes in the HTML spec:\n * https://www.w3.org/TR/html5/syntax.html#elements-attributes\n *\n * \" \\t\\n\\f\\r\" are HTML space characters:\n * https://infra.spec.whatwg.org/#ascii-whitespace\n *\n * So an attribute is:\n *  * The name: any character except a whitespace character, (\"), ('), \">\",\n *    \"=\", or \"/\". Note: this is different from the HTML spec which also excludes control characters.\n *  * Followed by zero or more space characters\n *  * Followed by \"=\"\n *  * Followed by zero or more space characters\n *  * Followed by:\n *    * Any character except space, ('), (\"), \"<\", \">\", \"=\", (`), or\n *    * (\") then any non-(\"), or\n *    * (') then any non-(')\n */\nconst tagEndRegex = new RegExp(\n  `>|${SPACE_CHAR}(?:(${NAME_CHAR}+)(${SPACE_CHAR}*=${SPACE_CHAR}*(?:${ATTR_VALUE_CHAR}|(\"|')|))|$)`,\n  'g'\n);\nconst ENTIRE_MATCH = 0;\nconst ATTRIBUTE_NAME = 1;\nconst SPACES_AND_EQUALS = 2;\nconst QUOTE_CHAR = 3;\n\nconst singleQuoteAttrEndRegex = /'/g;\nconst doubleQuoteAttrEndRegex = /\"/g;\n/**\n * Matches the raw text elements.\n *\n * Comments are not parsed within raw text elements, so we need to search their\n * text content for marker strings.\n */\nconst rawTextElement = /^(?:script|style|textarea|title)$/i;\n\n/** TemplateResult types */\nconst HTML_RESULT = 1;\nconst SVG_RESULT = 2;\nconst MATHML_RESULT = 3;\n\ntype ResultType = typeof HTML_RESULT | typeof SVG_RESULT | typeof MATHML_RESULT;\n\n// TemplatePart types\n// IMPORTANT: these must match the values in PartType\nconst ATTRIBUTE_PART = 1;\nconst CHILD_PART = 2;\nconst PROPERTY_PART = 3;\nconst BOOLEAN_ATTRIBUTE_PART = 4;\nconst EVENT_PART = 5;\nconst ELEMENT_PART = 6;\nconst COMMENT_PART = 7;\n\n/**\n * The return type of the template tag functions, {@linkcode html} and\n * {@linkcode svg} when it hasn't been compiled by @lit-labs/compiler.\n *\n * A `TemplateResult` object holds all the information about a template\n * expression required to render it: the template strings, expression values,\n * and type of template (html or svg).\n *\n * `TemplateResult` objects do not create any DOM on their own. To create or\n * update DOM you need to render the `TemplateResult`. See\n * [Rendering](https://lit.dev/docs/components/rendering) for more information.\n *\n */\nexport type UncompiledTemplateResult<T extends ResultType = ResultType> = {\n  // This property needs to remain unminified.\n  ['_$litType$']: T;\n  strings: TemplateStringsArray;\n  values: unknown[];\n};\n\n/**\n * This is a template result that may be either uncompiled or compiled.\n *\n * In the future, TemplateResult will be this type. If you want to explicitly\n * note that a template result is potentially compiled, you can reference this\n * type and it will continue to behave the same through the next major version\n * of Lit. This can be useful for code that wants to prepare for the next\n * major version of Lit.\n */\nexport type MaybeCompiledTemplateResult<T extends ResultType = ResultType> =\n  | UncompiledTemplateResult<T>\n  | CompiledTemplateResult;\n\n/**\n * The return type of the template tag functions, {@linkcode html} and\n * {@linkcode svg}.\n *\n * A `TemplateResult` object holds all the information about a template\n * expression required to render it: the template strings, expression values,\n * and type of template (html or svg).\n *\n * `TemplateResult` objects do not create any DOM on their own. To create or\n * update DOM you need to render the `TemplateResult`. See\n * [Rendering](https://lit.dev/docs/components/rendering) for more information.\n *\n * In Lit 4, this type will be an alias of\n * MaybeCompiledTemplateResult, so that code will get type errors if it assumes\n * that Lit templates are not compiled. When deliberately working with only\n * one, use either {@linkcode CompiledTemplateResult} or\n * {@linkcode UncompiledTemplateResult} explicitly.\n */\nexport type TemplateResult<T extends ResultType = ResultType> =\n  UncompiledTemplateResult<T>;\n\nexport type HTMLTemplateResult = TemplateResult<typeof HTML_RESULT>;\n\nexport type SVGTemplateResult = TemplateResult<typeof SVG_RESULT>;\n\nexport type MathMLTemplateResult = TemplateResult<typeof MATHML_RESULT>;\n\n/**\n * A TemplateResult that has been compiled by @lit-labs/compiler, skipping the\n * prepare step.\n */\nexport interface CompiledTemplateResult {\n  // This is a factory in order to make template initialization lazy\n  // and allow ShadyRenderOptions scope to be passed in.\n  // This property needs to remain unminified.\n  ['_$litType$']: CompiledTemplate;\n  values: unknown[];\n}\n\nexport interface CompiledTemplate extends Omit<Template, 'el'> {\n  // el is overridden to be optional. We initialize it on first render\n  el?: HTMLTemplateElement;\n\n  // The prepared HTML string to create a template element from.\n  // The type is a TemplateStringsArray to guarantee that the value came from\n  // source code, preventing a JSON injection attack.\n  h: TemplateStringsArray;\n}\n\n/**\n * Generates a template literal tag function that returns a TemplateResult with\n * the given result type.\n */\nconst tag =\n  <T extends ResultType>(type: T) =>\n  (strings: TemplateStringsArray, ...values: unknown[]): TemplateResult<T> => {\n    // Warn against templates octal escape sequences\n    // We do this here rather than in render so that the warning is closer to the\n    // template definition.\n    if (DEV_MODE && strings.some((s) => s === undefined)) {\n      console.warn(\n        'Some template strings are undefined.\\n' +\n          'This is probably caused by illegal octal escape sequences.'\n      );\n    }\n    if (DEV_MODE) {\n      // Import static-html.js results in a circular dependency which g3 doesn't\n      // handle. Instead we know that static values must have the field\n      // `_$litStatic$`.\n      if (\n        values.some((val) => (val as {_$litStatic$: unknown})?.['_$litStatic$'])\n      ) {\n        issueWarning(\n          '',\n          `Static values 'literal' or 'unsafeStatic' cannot be used as values to non-static templates.\\n` +\n            `Please use the static 'html' tag function. See https://lit.dev/docs/templates/expressions/#static-expressions`\n        );\n      }\n    }\n    return {\n      // This property needs to remain unminified.\n      ['_$litType$']: type,\n      strings,\n      values,\n    };\n  };\n\n/**\n * Interprets a template literal as an HTML template that can efficiently\n * render to and update a container.\n *\n * ```ts\n * const header = (title: string) => html`<h1>${title}</h1>`;\n * ```\n *\n * The `html` tag returns a description of the DOM to render as a value. It is\n * lazy, meaning no work is done until the template is rendered. When rendering,\n * if a template comes from the same expression as a previously rendered result,\n * it's efficiently updated instead of replaced.\n */\nexport const html = tag(HTML_RESULT);\n\n/**\n * Interprets a template literal as an SVG fragment that can efficiently render\n * to and update a container.\n *\n * ```ts\n * const rect = svg`<rect width=\"10\" height=\"10\"></rect>`;\n *\n * const myImage = html`\n *   <svg viewBox=\"0 0 10 10\" xmlns=\"http://www.w3.org/2000/svg\">\n *     ${rect}\n *   </svg>`;\n * ```\n *\n * The `svg` *tag function* should only be used for SVG fragments, or elements\n * that would be contained **inside** an `<svg>` HTML element. A common error is\n * placing an `<svg>` *element* in a template tagged with the `svg` tag\n * function. The `<svg>` element is an HTML element and should be used within a\n * template tagged with the {@linkcode html} tag function.\n *\n * In LitElement usage, it's invalid to return an SVG fragment from the\n * `render()` method, as the SVG fragment will be contained within the element's\n * shadow root and thus not be properly contained within an `<svg>` HTML\n * element.\n */\nexport const svg = tag(SVG_RESULT);\n\n/**\n * Interprets a template literal as MathML fragment that can efficiently render\n * to and update a container.\n *\n * ```ts\n * const num = mathml`<mn>1</mn>`;\n *\n * const eq = html`\n *   <math>\n *     ${num}\n *   </math>`;\n * ```\n *\n * The `mathml` *tag function* should only be used for MathML fragments, or\n * elements that would be contained **inside** a `<math>` HTML element. A common\n * error is placing a `<math>` *element* in a template tagged with the `mathml`\n * tag function. The `<math>` element is an HTML element and should be used\n * within a template tagged with the {@linkcode html} tag function.\n *\n * In LitElement usage, it's invalid to return an MathML fragment from the\n * `render()` method, as the MathML fragment will be contained within the\n * element's shadow root and thus not be properly contained within a `<math>`\n * HTML element.\n */\nexport const mathml = tag(MATHML_RESULT);\n\n/**\n * A sentinel value that signals that a value was handled by a directive and\n * should not be written to the DOM.\n */\nexport const noChange = Symbol.for('lit-noChange');\n\n/**\n * A sentinel value that signals a ChildPart to fully clear its content.\n *\n * ```ts\n * const button = html`${\n *  user.isAdmin\n *    ? html`<button>DELETE</button>`\n *    : nothing\n * }`;\n * ```\n *\n * Prefer using `nothing` over other falsy values as it provides a consistent\n * behavior between various expression binding contexts.\n *\n * In child expressions, `undefined`, `null`, `''`, and `nothing` all behave the\n * same and render no nodes. In attribute expressions, `nothing` _removes_ the\n * attribute, while `undefined` and `null` will render an empty string. In\n * property expressions `nothing` becomes `undefined`.\n */\nexport const nothing = Symbol.for('lit-nothing');\n\n/**\n * The cache of prepared templates, keyed by the tagged TemplateStringsArray\n * and _not_ accounting for the specific template tag used. This means that\n * template tags cannot be dynamic - they must statically be one of html, svg,\n * or attr. This restriction simplifies the cache lookup, which is on the hot\n * path for rendering.\n */\nconst templateCache = new WeakMap<TemplateStringsArray, Template>();\n\n/**\n * Object specifying options for controlling lit-html rendering. Note that\n * while `render` may be called multiple times on the same `container` (and\n * `renderBefore` reference node) to efficiently update the rendered content,\n * only the options passed in during the first render are respected during\n * the lifetime of renders to that unique `container` + `renderBefore`\n * combination.\n */\nexport interface RenderOptions {\n  /**\n   * An object to use as the `this` value for event listeners. It's often\n   * useful to set this to the host component rendering a template.\n   */\n  host?: object;\n  /**\n   * A DOM node before which to render content in the container.\n   */\n  renderBefore?: ChildNode | null;\n  /**\n   * Node used for cloning the template (`importNode` will be called on this\n   * node). This controls the `ownerDocument` of the rendered DOM, along with\n   * any inherited context. Defaults to the global `document`.\n   */\n  creationScope?: {importNode(node: Node, deep?: boolean): Node};\n  /**\n   * The initial connected state for the top-level part being rendered. If no\n   * `isConnected` option is set, `AsyncDirective`s will be connected by\n   * default. Set to `false` if the initial render occurs in a disconnected tree\n   * and `AsyncDirective`s should see `isConnected === false` for their initial\n   * render. The `part.setConnected()` method must be used subsequent to initial\n   * render to change the connected state of the part.\n   */\n  isConnected?: boolean;\n}\n\n/**\n * The root DOM node for rendering.\n */\nexport type RenderRootNode = HTMLElement | SVGElement | DocumentFragment;\n\nconst walker = d.createTreeWalker(\n  d,\n  129 /* NodeFilter.SHOW_{ELEMENT|COMMENT} */\n);\n\nlet sanitizerFactoryInternal: SanitizerFactory = noopSanitizer;\n\n//\n// Classes only below here, const variable declarations only above here...\n//\n// Keeping variable declarations and classes together improves minification.\n// Interfaces and type aliases can be interleaved freely.\n//\n\n// Type for classes that have a `_directive` or `_directives[]` field, used by\n// `resolveDirective`\nexport interface DirectiveParent {\n  _$parent?: DirectiveParent;\n  _$isConnected: boolean;\n  __directive?: Directive;\n  __directives?: Array<Directive | undefined>;\n}\n\nfunction trustFromTemplateString(\n  tsa: TemplateStringsArray,\n  stringFromTSA: string\n): TrustedHTML {\n  // A security check to prevent spoofing of Lit template results.\n  // In the future, we may be able to replace this with Array.isTemplateObject,\n  // though we might need to make that check inside of the html and svg\n  // functions, because precompiled templates don't come in as\n  // TemplateStringArray objects.\n  if (!isArray(tsa) || !tsa.hasOwnProperty('raw')) {\n    let message = 'invalid template strings array';\n    if (DEV_MODE) {\n      message = `\n          Internal Error: expected template strings to be an array\n          with a 'raw' field. Faking a template strings array by\n          calling html or svg like an ordinary function is effectively\n          the same as calling unsafeHtml and can lead to major security\n          issues, e.g. opening your code up to XSS attacks.\n          If you're using the html or svg tagged template functions normally\n          and still seeing this error, please file a bug at\n          https://github.com/lit/lit/issues/new?template=bug_report.md\n          and include information about your build tooling, if any.\n        `\n        .trim()\n        .replace(/\\n */g, '\\n');\n    }\n    throw new Error(message);\n  }\n  return policy !== undefined\n    ? policy.createHTML(stringFromTSA)\n    : (stringFromTSA as unknown as TrustedHTML);\n}\n\n/**\n * Returns an HTML string for the given TemplateStringsArray and result type\n * (HTML or SVG), along with the case-sensitive bound attribute names in\n * template order. The HTML contains comment markers denoting the `ChildPart`s\n * and suffixes on bound attributes denoting the `AttributeParts`.\n *\n * @param strings template strings array\n * @param type HTML or SVG\n * @return Array containing `[html, attrNames]` (array returned for terseness,\n *     to avoid object fields since this code is shared with non-minified SSR\n *     code)\n */\nconst getTemplateHtml = (\n  strings: TemplateStringsArray,\n  type: ResultType\n): [TrustedHTML, Array<string>] => {\n  // Insert makers into the template HTML to represent the position of\n  // bindings. The following code scans the template strings to determine the\n  // syntactic position of the bindings. They can be in text position, where\n  // we insert an HTML comment, attribute value position, where we insert a\n  // sentinel string and re-write the attribute name, or inside a tag where\n  // we insert the sentinel string.\n  const l = strings.length - 1;\n  // Stores the case-sensitive bound attribute names in the order of their\n  // parts. ElementParts are also reflected in this array as undefined\n  // rather than a string, to disambiguate from attribute bindings.\n  const attrNames: Array<string> = [];\n  let html =\n    type === SVG_RESULT ? '<svg>' : type === MATHML_RESULT ? '<math>' : '';\n\n  // When we're inside a raw text tag (not it's text content), the regex\n  // will still be tagRegex so we can find attributes, but will switch to\n  // this regex when the tag ends.\n  let rawTextEndRegex: RegExp | undefined;\n\n  // The current parsing state, represented as a reference to one of the\n  // regexes\n  let regex = textEndRegex;\n\n  for (let i = 0; i < l; i++) {\n    const s = strings[i];\n    // The index of the end of the last attribute name. When this is\n    // positive at end of a string, it means we're in an attribute value\n    // position and need to rewrite the attribute name.\n    // We also use a special value of -2 to indicate that we encountered\n    // the end of a string in attribute name position.\n    let attrNameEndIndex = -1;\n    let attrName: string | undefined;\n    let lastIndex = 0;\n    let match!: RegExpExecArray | null;\n\n    // The conditions in this loop handle the current parse state, and the\n    // assignments to the `regex` variable are the state transitions.\n    while (lastIndex < s.length) {\n      // Make sure we start searching from where we previously left off\n      regex.lastIndex = lastIndex;\n      match = regex.exec(s);\n      if (match === null) {\n        break;\n      }\n      lastIndex = regex.lastIndex;\n      if (regex === textEndRegex) {\n        if (match[COMMENT_START] === '!--') {\n          regex = commentEndRegex;\n        } else if (match[COMMENT_START] !== undefined) {\n          // We started a weird comment, like </{\n          regex = comment2EndRegex;\n        } else if (match[TAG_NAME] !== undefined) {\n          if (rawTextElement.test(match[TAG_NAME])) {\n            // Record if we encounter a raw-text element. We'll switch to\n            // this regex at the end of the tag.\n            rawTextEndRegex = new RegExp(`</${match[TAG_NAME]}`, 'g');\n          }\n          regex = tagEndRegex;\n        } else if (match[DYNAMIC_TAG_NAME] !== undefined) {\n          if (DEV_MODE) {\n            throw new Error(\n              'Bindings in tag names are not supported. Please use static templates instead. ' +\n                'See https://lit.dev/docs/templates/expressions/#static-expressions'\n            );\n          }\n          regex = tagEndRegex;\n        }\n      } else if (regex === tagEndRegex) {\n        if (match[ENTIRE_MATCH] === '>') {\n          // End of a tag. If we had started a raw-text element, use that\n          // regex\n          regex = rawTextEndRegex ?? textEndRegex;\n          // We may be ending an unquoted attribute value, so make sure we\n          // clear any pending attrNameEndIndex\n          attrNameEndIndex = -1;\n        } else if (match[ATTRIBUTE_NAME] === undefined) {\n          // Attribute name position\n          attrNameEndIndex = -2;\n        } else {\n          attrNameEndIndex = regex.lastIndex - match[SPACES_AND_EQUALS].length;\n          attrName = match[ATTRIBUTE_NAME];\n          regex =\n            match[QUOTE_CHAR] === undefined\n              ? tagEndRegex\n              : match[QUOTE_CHAR] === '\"'\n                ? doubleQuoteAttrEndRegex\n                : singleQuoteAttrEndRegex;\n        }\n      } else if (\n        regex === doubleQuoteAttrEndRegex ||\n        regex === singleQuoteAttrEndRegex\n      ) {\n        regex = tagEndRegex;\n      } else if (regex === commentEndRegex || regex === comment2EndRegex) {\n        regex = textEndRegex;\n      } else {\n        // Not one of the five state regexes, so it must be the dynamically\n        // created raw text regex and we're at the close of that element.\n        regex = tagEndRegex;\n        rawTextEndRegex = undefined;\n      }\n    }\n\n    if (DEV_MODE) {\n      // If we have a attrNameEndIndex, which indicates that we should\n      // rewrite the attribute name, assert that we're in a valid attribute\n      // position - either in a tag, or a quoted attribute value.\n      console.assert(\n        attrNameEndIndex === -1 ||\n          regex === tagEndRegex ||\n          regex === singleQuoteAttrEndRegex ||\n          regex === doubleQuoteAttrEndRegex,\n        'unexpected parse state B'\n      );\n    }\n\n    // We have four cases:\n    //  1. We're in text position, and not in a raw text element\n    //     (regex === textEndRegex): insert a comment marker.\n    //  2. We have a non-negative attrNameEndIndex which means we need to\n    //     rewrite the attribute name to add a bound attribute suffix.\n    //  3. We're at the non-first binding in a multi-binding attribute, use a\n    //     plain marker.\n    //  4. We're somewhere else inside the tag. If we're in attribute name\n    //     position (attrNameEndIndex === -2), add a sequential suffix to\n    //     generate a unique attribute name.\n\n    // Detect a binding next to self-closing tag end and insert a space to\n    // separate the marker from the tag end:\n    const end =\n      regex === tagEndRegex && strings[i + 1].startsWith('/>') ? ' ' : '';\n    html +=\n      regex === textEndRegex\n        ? s + nodeMarker\n        : attrNameEndIndex >= 0\n          ? (attrNames.push(attrName!),\n            s.slice(0, attrNameEndIndex) +\n              boundAttributeSuffix +\n              s.slice(attrNameEndIndex)) +\n            marker +\n            end\n          : s + marker + (attrNameEndIndex === -2 ? i : end);\n  }\n\n  const htmlResult: string | TrustedHTML =\n    html +\n    (strings[l] || '<?>') +\n    (type === SVG_RESULT ? '</svg>' : type === MATHML_RESULT ? '</math>' : '');\n\n  // Returned as an array for terseness\n  return [trustFromTemplateString(strings, htmlResult), attrNames];\n};\n\n/** @internal */\nexport type {Template};\nclass Template {\n  /** @internal */\n  el!: HTMLTemplateElement;\n\n  parts: Array<TemplatePart> = [];\n\n  constructor(\n    // This property needs to remain unminified.\n    {strings, ['_$litType$']: type}: UncompiledTemplateResult,\n    options?: RenderOptions\n  ) {\n    let node: Node | null;\n    let nodeIndex = 0;\n    let attrNameIndex = 0;\n    const partCount = strings.length - 1;\n    const parts = this.parts;\n\n    // Create template element\n    const [html, attrNames] = getTemplateHtml(strings, type);\n    this.el = Template.createElement(html, options);\n    walker.currentNode = this.el.content;\n\n    // Re-parent SVG or MathML nodes into template root\n    if (type === SVG_RESULT || type === MATHML_RESULT) {\n      const wrapper = this.el.content.firstChild!;\n      wrapper.replaceWith(...wrapper.childNodes);\n    }\n\n    // Walk the template to find binding markers and create TemplateParts\n    while ((node = walker.nextNode()) !== null && parts.length < partCount) {\n      if (node.nodeType === 1) {\n        if (DEV_MODE) {\n          const tag = (node as Element).localName;\n          // Warn if `textarea` includes an expression and throw if `template`\n          // does since these are not supported. We do this by checking\n          // innerHTML for anything that looks like a marker. This catches\n          // cases like bindings in textarea there markers turn into text nodes.\n          if (\n            /^(?:textarea|template)$/i!.test(tag) &&\n            (node as Element).innerHTML.includes(marker)\n          ) {\n            const m =\n              `Expressions are not supported inside \\`${tag}\\` ` +\n              `elements. See https://lit.dev/msg/expression-in-${tag} for more ` +\n              `information.`;\n            if (tag === 'template') {\n              throw new Error(m);\n            } else issueWarning('', m);\n          }\n        }\n        // TODO (justinfagnani): for attempted dynamic tag names, we don't\n        // increment the bindingIndex, and it'll be off by 1 in the element\n        // and off by two after it.\n        if ((node as Element).hasAttributes()) {\n          for (const name of (node as Element).getAttributeNames()) {\n            if (name.endsWith(boundAttributeSuffix)) {\n              const realName = attrNames[attrNameIndex++];\n              const value = (node as Element).getAttribute(name)!;\n              const statics = value.split(marker);\n              const m = /([.?@])?(.*)/.exec(realName)!;\n              parts.push({\n                type: ATTRIBUTE_PART,\n                index: nodeIndex,\n                name: m[2],\n                strings: statics,\n                ctor:\n                  m[1] === '.'\n                    ? PropertyPart\n                    : m[1] === '?'\n                      ? BooleanAttributePart\n                      : m[1] === '@'\n                        ? EventPart\n                        : AttributePart,\n              });\n              (node as Element).removeAttribute(name);\n            } else if (name.startsWith(marker)) {\n              parts.push({\n                type: ELEMENT_PART,\n                index: nodeIndex,\n              });\n              (node as Element).removeAttribute(name);\n            }\n          }\n        }\n        // TODO (justinfagnani): benchmark the regex against testing for each\n        // of the 3 raw text element names.\n        if (rawTextElement.test((node as Element).tagName)) {\n          // For raw text elements we need to split the text content on\n          // markers, create a Text node for each segment, and create\n          // a TemplatePart for each marker.\n          const strings = (node as Element).textContent!.split(marker);\n          const lastIndex = strings.length - 1;\n          if (lastIndex > 0) {\n            (node as Element).textContent = trustedTypes\n              ? (trustedTypes.emptyScript as unknown as '')\n              : '';\n            // Generate a new text node for each literal section\n            // These nodes are also used as the markers for child parts\n            for (let i = 0; i < lastIndex; i++) {\n              (node as Element).append(strings[i], createMarker());\n              // Walk past the marker node we just added\n              walker.nextNode();\n              parts.push({type: CHILD_PART, index: ++nodeIndex});\n            }\n            // Note because this marker is added after the walker's current\n            // node, it will be walked to in the outer loop (and ignored), so\n            // we don't need to adjust nodeIndex here\n            (node as Element).append(strings[lastIndex], createMarker());\n          }\n        }\n      } else if (node.nodeType === 8) {\n        const data = (node as Comment).data;\n        if (data === markerMatch) {\n          parts.push({type: CHILD_PART, index: nodeIndex});\n        } else {\n          let i = -1;\n          while ((i = (node as Comment).data.indexOf(marker, i + 1)) !== -1) {\n            // Comment node has a binding marker inside, make an inactive part\n            // The binding won't work, but subsequent bindings will\n            parts.push({type: COMMENT_PART, index: nodeIndex});\n            // Move to the end of the match\n            i += marker.length - 1;\n          }\n        }\n      }\n      nodeIndex++;\n    }\n\n    if (DEV_MODE) {\n      // If there was a duplicate attribute on a tag, then when the tag is\n      // parsed into an element the attribute gets de-duplicated. We can detect\n      // this mismatch if we haven't precisely consumed every attribute name\n      // when preparing the template. This works because `attrNames` is built\n      // from the template string and `attrNameIndex` comes from processing the\n      // resulting DOM.\n      if (attrNames.length !== attrNameIndex) {\n        throw new Error(\n          `Detected duplicate attribute bindings. This occurs if your template ` +\n            `has duplicate attributes on an element tag. For example ` +\n            `\"<input ?disabled=\\${true} ?disabled=\\${false}>\" contains a ` +\n            `duplicate \"disabled\" attribute. The error was detected in ` +\n            `the following template: \\n` +\n            '`' +\n            strings.join('${...}') +\n            '`'\n        );\n      }\n    }\n\n    // We could set walker.currentNode to another node here to prevent a memory\n    // leak, but every time we prepare a template, we immediately render it\n    // and re-use the walker in new TemplateInstance._clone().\n    debugLogEvent &&\n      debugLogEvent({\n        kind: 'template prep',\n        template: this,\n        clonableTemplate: this.el,\n        parts: this.parts,\n        strings,\n      });\n  }\n\n  // Overridden via `litHtmlPolyfillSupport` to provide platform support.\n  /** @nocollapse */\n  static createElement(html: TrustedHTML, _options?: RenderOptions) {\n    const el = d.createElement('template');\n    el.innerHTML = html as unknown as string;\n    return el;\n  }\n}\n\nexport interface Disconnectable {\n  _$parent?: Disconnectable;\n  _$disconnectableChildren?: Set<Disconnectable>;\n  // Rather than hold connection state on instances, Disconnectables recursively\n  // fetch the connection state from the RootPart they are connected in via\n  // getters up the Disconnectable tree via _$parent references. This pushes the\n  // cost of tracking the isConnected state to `AsyncDirectives`, and avoids\n  // needing to pass all Disconnectables (parts, template instances, and\n  // directives) their connection state each time it changes, which would be\n  // costly for trees that have no AsyncDirectives.\n  _$isConnected: boolean;\n}\n\nfunction resolveDirective(\n  part: ChildPart | AttributePart | ElementPart,\n  value: unknown,\n  parent: DirectiveParent = part,\n  attributeIndex?: number\n): unknown {\n  // Bail early if the value is explicitly noChange. Note, this means any\n  // nested directive is still attached and is not run.\n  if (value === noChange) {\n    return value;\n  }\n  let currentDirective =\n    attributeIndex !== undefined\n      ? (parent as AttributePart).__directives?.[attributeIndex]\n      : (parent as ChildPart | ElementPart | Directive).__directive;\n  const nextDirectiveConstructor = isPrimitive(value)\n    ? undefined\n    : // This property needs to remain unminified.\n      (value as DirectiveResult)['_$litDirective$'];\n  if (currentDirective?.constructor !== nextDirectiveConstructor) {\n    // This property needs to remain unminified.\n    currentDirective?.['_$notifyDirectiveConnectionChanged']?.(false);\n    if (nextDirectiveConstructor === undefined) {\n      currentDirective = undefined;\n    } else {\n      currentDirective = new nextDirectiveConstructor(part as PartInfo);\n      currentDirective._$initialize(part, parent, attributeIndex);\n    }\n    if (attributeIndex !== undefined) {\n      ((parent as AttributePart).__directives ??= [])[attributeIndex] =\n        currentDirective;\n    } else {\n      (parent as ChildPart | Directive).__directive = currentDirective;\n    }\n  }\n  if (currentDirective !== undefined) {\n    value = resolveDirective(\n      part,\n      currentDirective._$resolve(part, (value as DirectiveResult).values),\n      currentDirective,\n      attributeIndex\n    );\n  }\n  return value;\n}\n\nexport type {TemplateInstance};\n/**\n * An updateable instance of a Template. Holds references to the Parts used to\n * update the template instance.\n */\nclass TemplateInstance implements Disconnectable {\n  _$template: Template;\n  _$parts: Array<Part | undefined> = [];\n\n  /** @internal */\n  _$parent: ChildPart;\n  /** @internal */\n  _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n  constructor(template: Template, parent: ChildPart) {\n    this._$template = template;\n    this._$parent = parent;\n  }\n\n  // Called by ChildPart parentNode getter\n  get parentNode() {\n    return this._$parent.parentNode;\n  }\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n\n  // This method is separate from the constructor because we need to return a\n  // DocumentFragment and we don't want to hold onto it with an instance field.\n  _clone(options: RenderOptions | undefined) {\n    const {\n      el: {content},\n      parts: parts,\n    } = this._$template;\n    const fragment = (options?.creationScope ?? d).importNode(content, true);\n    walker.currentNode = fragment;\n\n    let node = walker.nextNode()!;\n    let nodeIndex = 0;\n    let partIndex = 0;\n    let templatePart = parts[0];\n\n    while (templatePart !== undefined) {\n      if (nodeIndex === templatePart.index) {\n        let part: Part | undefined;\n        if (templatePart.type === CHILD_PART) {\n          part = new ChildPart(\n            node as HTMLElement,\n            node.nextSibling,\n            this,\n            options\n          );\n        } else if (templatePart.type === ATTRIBUTE_PART) {\n          part = new templatePart.ctor(\n            node as HTMLElement,\n            templatePart.name,\n            templatePart.strings,\n            this,\n            options\n          );\n        } else if (templatePart.type === ELEMENT_PART) {\n          part = new ElementPart(node as HTMLElement, this, options);\n        }\n        this._$parts.push(part);\n        templatePart = parts[++partIndex];\n      }\n      if (nodeIndex !== templatePart?.index) {\n        node = walker.nextNode()!;\n        nodeIndex++;\n      }\n    }\n    // We need to set the currentNode away from the cloned tree so that we\n    // don't hold onto the tree even if the tree is detached and should be\n    // freed.\n    walker.currentNode = d;\n    return fragment;\n  }\n\n  _update(values: Array<unknown>) {\n    let i = 0;\n    for (const part of this._$parts) {\n      if (part !== undefined) {\n        debugLogEvent &&\n          debugLogEvent({\n            kind: 'set part',\n            part,\n            value: values[i],\n            valueIndex: i,\n            values,\n            templateInstance: this,\n          });\n        if ((part as AttributePart).strings !== undefined) {\n          (part as AttributePart)._$setValue(values, part as AttributePart, i);\n          // The number of values the part consumes is part.strings.length - 1\n          // since values are in between template spans. We increment i by 1\n          // later in the loop, so increment it by part.strings.length - 2 here\n          i += (part as AttributePart).strings!.length - 2;\n        } else {\n          part._$setValue(values[i]);\n        }\n      }\n      i++;\n    }\n  }\n}\n\n/*\n * Parts\n */\ntype AttributeTemplatePart = {\n  readonly type: typeof ATTRIBUTE_PART;\n  readonly index: number;\n  readonly name: string;\n  readonly ctor: typeof AttributePart;\n  readonly strings: ReadonlyArray<string>;\n};\ntype ChildTemplatePart = {\n  readonly type: typeof CHILD_PART;\n  readonly index: number;\n};\ntype ElementTemplatePart = {\n  readonly type: typeof ELEMENT_PART;\n  readonly index: number;\n};\ntype CommentTemplatePart = {\n  readonly type: typeof COMMENT_PART;\n  readonly index: number;\n};\n\n/**\n * A TemplatePart represents a dynamic part in a template, before the template\n * is instantiated. When a template is instantiated Parts are created from\n * TemplateParts.\n */\ntype TemplatePart =\n  | ChildTemplatePart\n  | AttributeTemplatePart\n  | ElementTemplatePart\n  | CommentTemplatePart;\n\nexport type Part =\n  | ChildPart\n  | AttributePart\n  | PropertyPart\n  | BooleanAttributePart\n  | ElementPart\n  | EventPart;\n\nexport type {ChildPart};\nclass ChildPart implements Disconnectable {\n  readonly type = CHILD_PART;\n  readonly options: RenderOptions | undefined;\n  _$committedValue: unknown = nothing;\n  /** @internal */\n  __directive?: Directive;\n  /** @internal */\n  _$startNode: ChildNode;\n  /** @internal */\n  _$endNode: ChildNode | null;\n  private _textSanitizer: ValueSanitizer | undefined;\n  /** @internal */\n  _$parent: Disconnectable | undefined;\n  /**\n   * Connection state for RootParts only (i.e. ChildPart without _$parent\n   * returned from top-level `render`). This field is unused otherwise. The\n   * intention would be clearer if we made `RootPart` a subclass of `ChildPart`\n   * with this field (and a different _$isConnected getter), but the subclass\n   * caused a perf regression, possibly due to making call sites polymorphic.\n   * @internal\n   */\n  __isConnected: boolean;\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    // ChildParts that are not at the root should always be created with a\n    // parent; only RootChildNode's won't, so they return the local isConnected\n    // state\n    return this._$parent?._$isConnected ?? this.__isConnected;\n  }\n\n  // The following fields will be patched onto ChildParts when required by\n  // AsyncDirective\n  /** @internal */\n  _$disconnectableChildren?: Set<Disconnectable> = undefined;\n  /** @internal */\n  _$notifyConnectionChanged?(\n    isConnected: boolean,\n    removeFromParent?: boolean,\n    from?: number\n  ): void;\n  /** @internal */\n  _$reparentDisconnectables?(parent: Disconnectable): void;\n\n  constructor(\n    startNode: ChildNode,\n    endNode: ChildNode | null,\n    parent: TemplateInstance | ChildPart | undefined,\n    options: RenderOptions | undefined\n  ) {\n    this._$startNode = startNode;\n    this._$endNode = endNode;\n    this._$parent = parent;\n    this.options = options;\n    // Note __isConnected is only ever accessed on RootParts (i.e. when there is\n    // no _$parent); the value on a non-root-part is \"don't care\", but checking\n    // for parent would be more code\n    this.__isConnected = options?.isConnected ?? true;\n    if (ENABLE_EXTRA_SECURITY_HOOKS) {\n      // Explicitly initialize for consistent class shape.\n      this._textSanitizer = undefined;\n    }\n  }\n\n  /**\n   * The parent node into which the part renders its content.\n   *\n   * A ChildPart's content consists of a range of adjacent child nodes of\n   * `.parentNode`, possibly bordered by 'marker nodes' (`.startNode` and\n   * `.endNode`).\n   *\n   * - If both `.startNode` and `.endNode` are non-null, then the part's content\n   * consists of all siblings between `.startNode` and `.endNode`, exclusively.\n   *\n   * - If `.startNode` is non-null but `.endNode` is null, then the part's\n   * content consists of all siblings following `.startNode`, up to and\n   * including the last child of `.parentNode`. If `.endNode` is non-null, then\n   * `.startNode` will always be non-null.\n   *\n   * - If both `.endNode` and `.startNode` are null, then the part's content\n   * consists of all child nodes of `.parentNode`.\n   */\n  get parentNode(): Node {\n    let parentNode: Node = wrap(this._$startNode).parentNode!;\n    const parent = this._$parent;\n    if (\n      parent !== undefined &&\n      parentNode?.nodeType === 11 /* Node.DOCUMENT_FRAGMENT */\n    ) {\n      // If the parentNode is a DocumentFragment, it may be because the DOM is\n      // still in the cloned fragment during initial render; if so, get the real\n      // parentNode the part will be committed into by asking the parent.\n      parentNode = (parent as ChildPart | TemplateInstance).parentNode;\n    }\n    return parentNode;\n  }\n\n  /**\n   * The part's leading marker node, if any. See `.parentNode` for more\n   * information.\n   */\n  get startNode(): Node | null {\n    return this._$startNode;\n  }\n\n  /**\n   * The part's trailing marker node, if any. See `.parentNode` for more\n   * information.\n   */\n  get endNode(): Node | null {\n    return this._$endNode;\n  }\n\n  _$setValue(value: unknown, directiveParent: DirectiveParent = this): void {\n    if (DEV_MODE && this.parentNode === null) {\n      throw new Error(\n        `This \\`ChildPart\\` has no \\`parentNode\\` and therefore cannot accept a value. This likely means the element containing the part was manipulated in an unsupported way outside of Lit's control such that the part's marker nodes were ejected from DOM. For example, setting the element's \\`innerHTML\\` or \\`textContent\\` can do this.`\n      );\n    }\n    value = resolveDirective(this, value, directiveParent);\n    if (isPrimitive(value)) {\n      // Non-rendering child values. It's important that these do not render\n      // empty text nodes to avoid issues with preventing default <slot>\n      // fallback content.\n      if (value === nothing || value == null || value === '') {\n        if (this._$committedValue !== nothing) {\n          debugLogEvent &&\n            debugLogEvent({\n              kind: 'commit nothing to child',\n              start: this._$startNode,\n              end: this._$endNode,\n              parent: this._$parent,\n              options: this.options,\n            });\n          this._$clear();\n        }\n        this._$committedValue = nothing;\n      } else if (value !== this._$committedValue && value !== noChange) {\n        this._commitText(value);\n      }\n      // This property needs to remain unminified.\n    } else if ((value as TemplateResult)['_$litType$'] !== undefined) {\n      this._commitTemplateResult(value as TemplateResult);\n    } else if ((value as Node).nodeType !== undefined) {\n      if (DEV_MODE && this.options?.host === value) {\n        this._commitText(\n          `[probable mistake: rendered a template's host in itself ` +\n            `(commonly caused by writing \\${this} in a template]`\n        );\n        console.warn(\n          `Attempted to render the template host`,\n          value,\n          `inside itself. This is almost always a mistake, and in dev mode `,\n          `we render some warning text. In production however, we'll `,\n          `render it, which will usually result in an error, and sometimes `,\n          `in the element disappearing from the DOM.`\n        );\n        return;\n      }\n      this._commitNode(value as Node);\n    } else if (isIterable(value)) {\n      this._commitIterable(value);\n    } else {\n      // Fallback, will render the string representation\n      this._commitText(value);\n    }\n  }\n\n  private _insert<T extends Node>(node: T) {\n    return wrap(wrap(this._$startNode).parentNode!).insertBefore(\n      node,\n      this._$endNode\n    );\n  }\n\n  private _commitNode(value: Node): void {\n    if (this._$committedValue !== value) {\n      this._$clear();\n      if (\n        ENABLE_EXTRA_SECURITY_HOOKS &&\n        sanitizerFactoryInternal !== noopSanitizer\n      ) {\n        const parentNodeName = this._$startNode.parentNode?.nodeName;\n        if (parentNodeName === 'STYLE' || parentNodeName === 'SCRIPT') {\n          let message = 'Forbidden';\n          if (DEV_MODE) {\n            if (parentNodeName === 'STYLE') {\n              message =\n                `Lit does not support binding inside style nodes. ` +\n                `This is a security risk, as style injection attacks can ` +\n                `exfiltrate data and spoof UIs. ` +\n                `Consider instead using css\\`...\\` literals ` +\n                `to compose styles, and do dynamic styling with ` +\n                `css custom properties, ::parts, <slot>s, ` +\n                `and by mutating the DOM rather than stylesheets.`;\n            } else {\n              message =\n                `Lit does not support binding inside script nodes. ` +\n                `This is a security risk, as it could allow arbitrary ` +\n                `code execution.`;\n            }\n          }\n          throw new Error(message);\n        }\n      }\n      debugLogEvent &&\n        debugLogEvent({\n          kind: 'commit node',\n          start: this._$startNode,\n          parent: this._$parent,\n          value: value,\n          options: this.options,\n        });\n      this._$committedValue = this._insert(value);\n    }\n  }\n\n  private _commitText(value: unknown): void {\n    // If the committed value is a primitive it means we called _commitText on\n    // the previous render, and we know that this._$startNode.nextSibling is a\n    // Text node. We can now just replace the text content (.data) of the node.\n    if (\n      this._$committedValue !== nothing &&\n      isPrimitive(this._$committedValue)\n    ) {\n      const node = wrap(this._$startNode).nextSibling as Text;\n      if (ENABLE_EXTRA_SECURITY_HOOKS) {\n        if (this._textSanitizer === undefined) {\n          this._textSanitizer = createSanitizer(node, 'data', 'property');\n        }\n        value = this._textSanitizer(value);\n      }\n      debugLogEvent &&\n        debugLogEvent({\n          kind: 'commit text',\n          node,\n          value,\n          options: this.options,\n        });\n      (node as Text).data = value as string;\n    } else {\n      if (ENABLE_EXTRA_SECURITY_HOOKS) {\n        const textNode = d.createTextNode('');\n        this._commitNode(textNode);\n        // When setting text content, for security purposes it matters a lot\n        // what the parent is. For example, <style> and <script> need to be\n        // handled with care, while <span> does not. So first we need to put a\n        // text node into the document, then we can sanitize its content.\n        if (this._textSanitizer === undefined) {\n          this._textSanitizer = createSanitizer(textNode, 'data', 'property');\n        }\n        value = this._textSanitizer(value);\n        debugLogEvent &&\n          debugLogEvent({\n            kind: 'commit text',\n            node: textNode,\n            value,\n            options: this.options,\n          });\n        textNode.data = value as string;\n      } else {\n        this._commitNode(d.createTextNode(value as string));\n        debugLogEvent &&\n          debugLogEvent({\n            kind: 'commit text',\n            node: wrap(this._$startNode).nextSibling as Text,\n            value,\n            options: this.options,\n          });\n      }\n    }\n    this._$committedValue = value;\n  }\n\n  private _commitTemplateResult(\n    result: TemplateResult | CompiledTemplateResult\n  ): void {\n    // This property needs to remain unminified.\n    const {values, ['_$litType$']: type} = result;\n    // If $litType$ is a number, result is a plain TemplateResult and we get\n    // the template from the template cache. If not, result is a\n    // CompiledTemplateResult and _$litType$ is a CompiledTemplate and we need\n    // to create the <template> element the first time we see it.\n    const template: Template | CompiledTemplate =\n      typeof type === 'number'\n        ? this._$getTemplate(result as UncompiledTemplateResult)\n        : (type.el === undefined &&\n            (type.el = Template.createElement(\n              trustFromTemplateString(type.h, type.h[0]),\n              this.options\n            )),\n          type);\n\n    if ((this._$committedValue as TemplateInstance)?._$template === template) {\n      debugLogEvent &&\n        debugLogEvent({\n          kind: 'template updating',\n          template,\n          instance: this._$committedValue as TemplateInstance,\n          parts: (this._$committedValue as TemplateInstance)._$parts,\n          options: this.options,\n          values,\n        });\n      (this._$committedValue as TemplateInstance)._update(values);\n    } else {\n      const instance = new TemplateInstance(template as Template, this);\n      const fragment = instance._clone(this.options);\n      debugLogEvent &&\n        debugLogEvent({\n          kind: 'template instantiated',\n          template,\n          instance,\n          parts: instance._$parts,\n          options: this.options,\n          fragment,\n          values,\n        });\n      instance._update(values);\n      debugLogEvent &&\n        debugLogEvent({\n          kind: 'template instantiated and updated',\n          template,\n          instance,\n          parts: instance._$parts,\n          options: this.options,\n          fragment,\n          values,\n        });\n      this._commitNode(fragment);\n      this._$committedValue = instance;\n    }\n  }\n\n  // Overridden via `litHtmlPolyfillSupport` to provide platform support.\n  /** @internal */\n  _$getTemplate(result: UncompiledTemplateResult) {\n    let template = templateCache.get(result.strings);\n    if (template === undefined) {\n      templateCache.set(result.strings, (template = new Template(result)));\n    }\n    return template;\n  }\n\n  private _commitIterable(value: Iterable<unknown>): void {\n    // For an Iterable, we create a new InstancePart per item, then set its\n    // value to the item. This is a little bit of overhead for every item in\n    // an Iterable, but it lets us recurse easily and efficiently update Arrays\n    // of TemplateResults that will be commonly returned from expressions like:\n    // array.map((i) => html`${i}`), by reusing existing TemplateInstances.\n\n    // If value is an array, then the previous render was of an\n    // iterable and value will contain the ChildParts from the previous\n    // render. If value is not an array, clear this part and make a new\n    // array for ChildParts.\n    if (!isArray(this._$committedValue)) {\n      this._$committedValue = [];\n      this._$clear();\n    }\n\n    // Lets us keep track of how many items we stamped so we can clear leftover\n    // items from a previous render\n    const itemParts = this._$committedValue as ChildPart[];\n    let partIndex = 0;\n    let itemPart: ChildPart | undefined;\n\n    for (const item of value) {\n      if (partIndex === itemParts.length) {\n        // If no existing part, create a new one\n        // TODO (justinfagnani): test perf impact of always creating two parts\n        // instead of sharing parts between nodes\n        // https://github.com/lit/lit/issues/1266\n        itemParts.push(\n          (itemPart = new ChildPart(\n            this._insert(createMarker()),\n            this._insert(createMarker()),\n            this,\n            this.options\n          ))\n        );\n      } else {\n        // Reuse an existing part\n        itemPart = itemParts[partIndex];\n      }\n      itemPart._$setValue(item);\n      partIndex++;\n    }\n\n    if (partIndex < itemParts.length) {\n      // itemParts always have end nodes\n      this._$clear(\n        itemPart && wrap(itemPart._$endNode!).nextSibling,\n        partIndex\n      );\n      // Truncate the parts array so _value reflects the current state\n      itemParts.length = partIndex;\n    }\n  }\n\n  /**\n   * Removes the nodes contained within this Part from the DOM.\n   *\n   * @param start Start node to clear from, for clearing a subset of the part's\n   *     DOM (used when truncating iterables)\n   * @param from  When `start` is specified, the index within the iterable from\n   *     which ChildParts are being removed, used for disconnecting directives\n   *     in those Parts.\n   *\n   * @internal\n   */\n  _$clear(\n    start: ChildNode | null = wrap(this._$startNode).nextSibling,\n    from?: number\n  ) {\n    this._$notifyConnectionChanged?.(false, true, from);\n    while (start !== this._$endNode) {\n      // The non-null assertion is safe because if _$startNode.nextSibling is\n      // null, then _$endNode is also null, and we would not have entered this\n      // loop.\n      const n = wrap(start!).nextSibling;\n      wrap(start!).remove();\n      start = n;\n    }\n  }\n\n  /**\n   * Implementation of RootPart's `isConnected`. Note that this method\n   * should only be called on `RootPart`s (the `ChildPart` returned from a\n   * top-level `render()` call). It has no effect on non-root ChildParts.\n   * @param isConnected Whether to set\n   * @internal\n   */\n  setConnected(isConnected: boolean) {\n    if (this._$parent === undefined) {\n      this.__isConnected = isConnected;\n      this._$notifyConnectionChanged?.(isConnected);\n    } else if (DEV_MODE) {\n      throw new Error(\n        'part.setConnected() may only be called on a ' +\n          'RootPart returned from render().'\n      );\n    }\n  }\n}\n\n/**\n * A top-level `ChildPart` returned from `render` that manages the connected\n * state of `AsyncDirective`s created throughout the tree below it.\n */\nexport interface RootPart extends ChildPart {\n  /**\n   * Sets the connection state for `AsyncDirective`s contained within this root\n   * ChildPart.\n   *\n   * lit-html does not automatically monitor the connectedness of DOM rendered;\n   * as such, it is the responsibility of the caller to `render` to ensure that\n   * `part.setConnected(false)` is called before the part object is potentially\n   * discarded, to ensure that `AsyncDirective`s have a chance to dispose of\n   * any resources being held. If a `RootPart` that was previously\n   * disconnected is subsequently re-connected (and its `AsyncDirective`s should\n   * re-connect), `setConnected(true)` should be called.\n   *\n   * @param isConnected Whether directives within this tree should be connected\n   * or not\n   */\n  setConnected(isConnected: boolean): void;\n}\n\nexport type {AttributePart};\nclass AttributePart implements Disconnectable {\n  readonly type:\n    | typeof ATTRIBUTE_PART\n    | typeof PROPERTY_PART\n    | typeof BOOLEAN_ATTRIBUTE_PART\n    | typeof EVENT_PART = ATTRIBUTE_PART;\n  readonly element: HTMLElement;\n  readonly name: string;\n  readonly options: RenderOptions | undefined;\n\n  /**\n   * If this attribute part represents an interpolation, this contains the\n   * static strings of the interpolation. For single-value, complete bindings,\n   * this is undefined.\n   */\n  readonly strings?: ReadonlyArray<string>;\n  /** @internal */\n  _$committedValue: unknown | Array<unknown> = nothing;\n  /** @internal */\n  __directives?: Array<Directive | undefined>;\n  /** @internal */\n  _$parent: Disconnectable;\n  /** @internal */\n  _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n  protected _sanitizer: ValueSanitizer | undefined;\n\n  get tagName() {\n    return this.element.tagName;\n  }\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n\n  constructor(\n    element: HTMLElement,\n    name: string,\n    strings: ReadonlyArray<string>,\n    parent: Disconnectable,\n    options: RenderOptions | undefined\n  ) {\n    this.element = element;\n    this.name = name;\n    this._$parent = parent;\n    this.options = options;\n    if (strings.length > 2 || strings[0] !== '' || strings[1] !== '') {\n      this._$committedValue = new Array(strings.length - 1).fill(new String());\n      this.strings = strings;\n    } else {\n      this._$committedValue = nothing;\n    }\n    if (ENABLE_EXTRA_SECURITY_HOOKS) {\n      this._sanitizer = undefined;\n    }\n  }\n\n  /**\n   * Sets the value of this part by resolving the value from possibly multiple\n   * values and static strings and committing it to the DOM.\n   * If this part is single-valued, `this._strings` will be undefined, and the\n   * method will be called with a single value argument. If this part is\n   * multi-value, `this._strings` will be defined, and the method is called\n   * with the value array of the part's owning TemplateInstance, and an offset\n   * into the value array from which the values should be read.\n   * This method is overloaded this way to eliminate short-lived array slices\n   * of the template instance values, and allow a fast-path for single-valued\n   * parts.\n   *\n   * @param value The part value, or an array of values for multi-valued parts\n   * @param valueIndex the index to start reading values from. `undefined` for\n   *   single-valued parts\n   * @param noCommit causes the part to not commit its value to the DOM. Used\n   *   in hydration to prime attribute parts with their first-rendered value,\n   *   but not set the attribute, and in SSR to no-op the DOM operation and\n   *   capture the value for serialization.\n   *\n   * @internal\n   */\n  _$setValue(\n    value: unknown | Array<unknown>,\n    directiveParent: DirectiveParent = this,\n    valueIndex?: number,\n    noCommit?: boolean\n  ) {\n    const strings = this.strings;\n\n    // Whether any of the values has changed, for dirty-checking\n    let change = false;\n\n    if (strings === undefined) {\n      // Single-value binding case\n      value = resolveDirective(this, value, directiveParent, 0);\n      change =\n        !isPrimitive(value) ||\n        (value !== this._$committedValue && value !== noChange);\n      if (change) {\n        this._$committedValue = value;\n      }\n    } else {\n      // Interpolation case\n      const values = value as Array<unknown>;\n      value = strings[0];\n\n      let i, v;\n      for (i = 0; i < strings.length - 1; i++) {\n        v = resolveDirective(this, values[valueIndex! + i], directiveParent, i);\n\n        if (v === noChange) {\n          // If the user-provided value is `noChange`, use the previous value\n          v = (this._$committedValue as Array<unknown>)[i];\n        }\n        change ||=\n          !isPrimitive(v) || v !== (this._$committedValue as Array<unknown>)[i];\n        if (v === nothing) {\n          value = nothing;\n        } else if (value !== nothing) {\n          value += (v ?? '') + strings[i + 1];\n        }\n        // We always record each value, even if one is `nothing`, for future\n        // change detection.\n        (this._$committedValue as Array<unknown>)[i] = v;\n      }\n    }\n    if (change && !noCommit) {\n      this._commitValue(value);\n    }\n  }\n\n  /** @internal */\n  _commitValue(value: unknown) {\n    if (value === nothing) {\n      (wrap(this.element) as Element).removeAttribute(this.name);\n    } else {\n      if (ENABLE_EXTRA_SECURITY_HOOKS) {\n        if (this._sanitizer === undefined) {\n          this._sanitizer = sanitizerFactoryInternal(\n            this.element,\n            this.name,\n            'attribute'\n          );\n        }\n        value = this._sanitizer(value ?? '');\n      }\n      debugLogEvent &&\n        debugLogEvent({\n          kind: 'commit attribute',\n          element: this.element,\n          name: this.name,\n          value,\n          options: this.options,\n        });\n      (wrap(this.element) as Element).setAttribute(\n        this.name,\n        (value ?? '') as string\n      );\n    }\n  }\n}\n\nexport type {PropertyPart};\nclass PropertyPart extends AttributePart {\n  override readonly type = PROPERTY_PART;\n\n  /** @internal */\n  override _commitValue(value: unknown) {\n    if (ENABLE_EXTRA_SECURITY_HOOKS) {\n      if (this._sanitizer === undefined) {\n        this._sanitizer = sanitizerFactoryInternal(\n          this.element,\n          this.name,\n          'property'\n        );\n      }\n      value = this._sanitizer(value);\n    }\n    debugLogEvent &&\n      debugLogEvent({\n        kind: 'commit property',\n        element: this.element,\n        name: this.name,\n        value,\n        options: this.options,\n      });\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (this.element as any)[this.name] = value === nothing ? undefined : value;\n  }\n}\n\nexport type {BooleanAttributePart};\nclass BooleanAttributePart extends AttributePart {\n  override readonly type = BOOLEAN_ATTRIBUTE_PART;\n\n  /** @internal */\n  override _commitValue(value: unknown) {\n    debugLogEvent &&\n      debugLogEvent({\n        kind: 'commit boolean attribute',\n        element: this.element,\n        name: this.name,\n        value: !!(value && value !== nothing),\n        options: this.options,\n      });\n    (wrap(this.element) as Element).toggleAttribute(\n      this.name,\n      !!value && value !== nothing\n    );\n  }\n}\n\ntype EventListenerWithOptions = EventListenerOrEventListenerObject &\n  Partial<AddEventListenerOptions>;\n\n/**\n * An AttributePart that manages an event listener via add/removeEventListener.\n *\n * This part works by adding itself as the event listener on an element, then\n * delegating to the value passed to it. This reduces the number of calls to\n * add/removeEventListener if the listener changes frequently, such as when an\n * inline function is used as a listener.\n *\n * Because event options are passed when adding listeners, we must take case\n * to add and remove the part as a listener when the event options change.\n */\nexport type {EventPart};\nclass EventPart extends AttributePart {\n  override readonly type = EVENT_PART;\n\n  constructor(\n    element: HTMLElement,\n    name: string,\n    strings: ReadonlyArray<string>,\n    parent: Disconnectable,\n    options: RenderOptions | undefined\n  ) {\n    super(element, name, strings, parent, options);\n\n    if (DEV_MODE && this.strings !== undefined) {\n      throw new Error(\n        `A \\`<${element.localName}>\\` has a \\`@${name}=...\\` listener with ` +\n          'invalid content. Event listeners in templates must have exactly ' +\n          'one expression and no surrounding text.'\n      );\n    }\n  }\n\n  // EventPart does not use the base _$setValue/_resolveValue implementation\n  // since the dirty checking is more complex\n  /** @internal */\n  override _$setValue(\n    newListener: unknown,\n    directiveParent: DirectiveParent = this\n  ) {\n    newListener =\n      resolveDirective(this, newListener, directiveParent, 0) ?? nothing;\n    if (newListener === noChange) {\n      return;\n    }\n    const oldListener = this._$committedValue;\n\n    // If the new value is nothing or any options change we have to remove the\n    // part as a listener.\n    const shouldRemoveListener =\n      (newListener === nothing && oldListener !== nothing) ||\n      (newListener as EventListenerWithOptions).capture !==\n        (oldListener as EventListenerWithOptions).capture ||\n      (newListener as EventListenerWithOptions).once !==\n        (oldListener as EventListenerWithOptions).once ||\n      (newListener as EventListenerWithOptions).passive !==\n        (oldListener as EventListenerWithOptions).passive;\n\n    // If the new value is not nothing and we removed the listener, we have\n    // to add the part as a listener.\n    const shouldAddListener =\n      newListener !== nothing &&\n      (oldListener === nothing || shouldRemoveListener);\n\n    debugLogEvent &&\n      debugLogEvent({\n        kind: 'commit event listener',\n        element: this.element,\n        name: this.name,\n        value: newListener,\n        options: this.options,\n        removeListener: shouldRemoveListener,\n        addListener: shouldAddListener,\n        oldListener,\n      });\n    if (shouldRemoveListener) {\n      this.element.removeEventListener(\n        this.name,\n        this,\n        oldListener as EventListenerWithOptions\n      );\n    }\n    if (shouldAddListener) {\n      this.element.addEventListener(\n        this.name,\n        this,\n        newListener as EventListenerWithOptions\n      );\n    }\n    this._$committedValue = newListener;\n  }\n\n  handleEvent(event: Event) {\n    if (typeof this._$committedValue === 'function') {\n      this._$committedValue.call(this.options?.host ?? this.element, event);\n    } else {\n      (this._$committedValue as EventListenerObject).handleEvent(event);\n    }\n  }\n}\n\nexport type {ElementPart};\nclass ElementPart implements Disconnectable {\n  readonly type = ELEMENT_PART;\n\n  /** @internal */\n  __directive?: Directive;\n\n  // This is to ensure that every Part has a _$committedValue\n  _$committedValue: undefined;\n\n  /** @internal */\n  _$parent!: Disconnectable;\n\n  /** @internal */\n  _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n  options: RenderOptions | undefined;\n\n  constructor(\n    public element: Element,\n    parent: Disconnectable,\n    options: RenderOptions | undefined\n  ) {\n    this._$parent = parent;\n    this.options = options;\n  }\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n\n  _$setValue(value: unknown): void {\n    debugLogEvent &&\n      debugLogEvent({\n        kind: 'commit to element binding',\n        element: this.element,\n        value,\n        options: this.options,\n      });\n    resolveDirective(this, value);\n  }\n}\n\n/**\n * END USERS SHOULD NOT RELY ON THIS OBJECT.\n *\n * Private exports for use by other Lit packages, not intended for use by\n * external users.\n *\n * We currently do not make a mangled rollup build of the lit-ssr code. In order\n * to keep a number of (otherwise private) top-level exports mangled in the\n * client side code, we export a _$LH object containing those members (or\n * helper methods for accessing private fields of those members), and then\n * re-export them for use in lit-ssr. This keeps lit-ssr agnostic to whether the\n * client-side code is being used in `dev` mode or `prod` mode.\n *\n * This has a unique name, to disambiguate it from private exports in\n * lit-element, which re-exports all of lit-html.\n *\n * @private\n */\nexport const _$LH = {\n  // Used in lit-ssr\n  _boundAttributeSuffix: boundAttributeSuffix,\n  _marker: marker,\n  _markerMatch: markerMatch,\n  _HTML_RESULT: HTML_RESULT,\n  _getTemplateHtml: getTemplateHtml,\n  // Used in tests and private-ssr-support\n  _TemplateInstance: TemplateInstance,\n  _isIterable: isIterable,\n  _resolveDirective: resolveDirective,\n  _ChildPart: ChildPart,\n  _AttributePart: AttributePart,\n  _BooleanAttributePart: BooleanAttributePart,\n  _EventPart: EventPart,\n  _PropertyPart: PropertyPart,\n  _ElementPart: ElementPart,\n};\n\n// Apply polyfills if available\nconst polyfillSupport = DEV_MODE\n  ? global.litHtmlPolyfillSupportDevMode\n  : global.litHtmlPolyfillSupport;\npolyfillSupport?.(Template, ChildPart);\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for lit-html usage.\n(global.litHtmlVersions ??= []).push('3.3.3');\nif (DEV_MODE && global.litHtmlVersions.length > 1) {\n  queueMicrotask(() => {\n    issueWarning!(\n      'multiple-versions',\n      `Multiple versions of Lit loaded. ` +\n        `Loading multiple versions is not recommended.`\n    );\n  });\n}\n\n/**\n * Renders a value, usually a lit-html TemplateResult, to the container.\n *\n * This example renders the text \"Hello, Zoe!\" inside a paragraph tag, appending\n * it to the container `document.body`.\n *\n * ```js\n * import {html, render} from 'lit';\n *\n * const name = \"Zoe\";\n * render(html`<p>Hello, ${name}!</p>`, document.body);\n * ```\n *\n * @param value Any [renderable\n *   value](https://lit.dev/docs/templates/expressions/#child-expressions),\n *   typically a {@linkcode TemplateResult} created by evaluating a template tag\n *   like {@linkcode html} or {@linkcode svg}.\n * @param container A DOM container to render to. The first render will append\n *   the rendered value to the container, and subsequent renders will\n *   efficiently update the rendered value if the same result type was\n *   previously rendered there.\n * @param options See {@linkcode RenderOptions} for options documentation.\n * @see\n * {@link https://lit.dev/docs/libraries/standalone-templates/#rendering-lit-html-templates| Rendering Lit HTML Templates}\n */\nexport const render = (\n  value: unknown,\n  container: RenderRootNode,\n  options?: RenderOptions\n): RootPart => {\n  if (DEV_MODE && container == null) {\n    // Give a clearer error message than\n    //     Uncaught TypeError: Cannot read properties of null (reading\n    //     '_$litPart$')\n    // which reads like an internal Lit error.\n    throw new TypeError(`The container to render into may not be ${container}`);\n  }\n  const renderId = DEV_MODE ? debugLogRenderId++ : 0;\n  const partOwnerNode = options?.renderBefore ?? container;\n  // This property needs to remain unminified.\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  let part: ChildPart = (partOwnerNode as any)['_$litPart$'];\n  debugLogEvent &&\n    debugLogEvent({\n      kind: 'begin render',\n      id: renderId,\n      value,\n      container,\n      options,\n      part,\n    });\n  if (part === undefined) {\n    const endNode = options?.renderBefore ?? null;\n    // This property needs to remain unminified.\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (partOwnerNode as any)['_$litPart$'] = part = new ChildPart(\n      container.insertBefore(createMarker(), endNode),\n      endNode,\n      undefined,\n      options ?? {}\n    );\n  }\n  part._$setValue(value);\n  debugLogEvent &&\n    debugLogEvent({\n      kind: 'end render',\n      id: renderId,\n      value,\n      container,\n      options,\n      part,\n    });\n  return part as RootPart;\n};\n\nif (ENABLE_EXTRA_SECURITY_HOOKS) {\n  render.setSanitizer = setSanitizer;\n  render.createSanitizer = createSanitizer;\n  if (DEV_MODE) {\n    render._testOnlyClearSanitizerFactoryDoNotCallOrElse =\n      _testOnlyClearSanitizerFactoryDoNotCallOrElse;\n  }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * The main LitElement module, which defines the {@linkcode LitElement} base\n * class and related APIs.\n *\n * LitElement components can define a template and a set of observed\n * properties. Changing an observed property triggers a re-render of the\n * element.\n *\n * Import {@linkcode LitElement} and {@linkcode html} from this module to\n * create a component:\n *\n *  ```js\n * import {LitElement, html} from 'lit-element';\n *\n * class MyElement extends LitElement {\n *\n *   // Declare observed properties\n *   static get properties() {\n *     return {\n *       adjective: {}\n *     }\n *   }\n *\n *   constructor() {\n *     this.adjective = 'awesome';\n *   }\n *\n *   // Define the element's template\n *   render() {\n *     return html`<p>your ${adjective} template here</p>`;\n *   }\n * }\n *\n * customElements.define('my-element', MyElement);\n * ```\n *\n * `LitElement` extends {@linkcode ReactiveElement} and adds lit-html\n * templating. The `ReactiveElement` class is provided for users that want to\n * build their own custom element base classes that don't use lit-html.\n *\n * @packageDocumentation\n */\nimport {PropertyValues, ReactiveElement} from '@lit/reactive-element';\nimport {render, RenderOptions, noChange, RootPart} from 'lit-html';\nexport * from '@lit/reactive-element';\nexport * from 'lit-html';\n\nimport {LitUnstable} from 'lit-html';\nimport {ReactiveUnstable} from '@lit/reactive-element';\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Unstable {\n  /**\n   * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n   * we will emit 'lit-debug' events to window, with live details about the update and render\n   * lifecycle. These can be useful for writing debug tooling and visualizations.\n   *\n   * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n   * making certain operations that are normally very cheap (like a no-op render) much slower,\n   * because we must copy data and dispatch events.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-namespace\n  export namespace DebugLog {\n    export type Entry =\n      | LitUnstable.DebugLog.Entry\n      | ReactiveUnstable.DebugLog.Entry;\n  }\n}\n/*\n * When using Closure Compiler, JSCompiler_renameProperty(property, object) is\n * replaced at compile time by the munged name for object[property]. We cannot\n * alias this function, so we have to use a small shim that has the same\n * behavior when not compiling.\n */\n/*@__INLINE__*/\nconst JSCompiler_renameProperty = <P extends PropertyKey>(\n  prop: P,\n  _obj: unknown\n): P => prop;\n\nconst DEV_MODE = true;\n// Allows minifiers to rename references to globalThis\nconst global = globalThis;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n  // Ensure warnings are issued only 1x, even if multiple versions of Lit\n  // are loaded.\n  global.litIssuedWarnings ??= new Set();\n\n  /**\n   * Issue a warning if we haven't already, based either on `code` or `warning`.\n   * Warnings are disabled automatically only by `warning`; disabling via `code`\n   * can be done by users.\n   */\n  issueWarning = (code: string, warning: string) => {\n    warning += ` See https://lit.dev/msg/${code} for more information.`;\n    if (\n      !global.litIssuedWarnings!.has(warning) &&\n      !global.litIssuedWarnings!.has(code)\n    ) {\n      console.warn(warning);\n      global.litIssuedWarnings!.add(warning);\n    }\n  };\n}\n\n/**\n * Base element class that manages element properties and attributes, and\n * renders a lit-html template.\n *\n * To define a component, subclass `LitElement` and implement a\n * `render` method to provide the component's template. Define properties\n * using the {@linkcode LitElement.properties properties} property or the\n * {@linkcode property} decorator.\n */\nexport class LitElement extends ReactiveElement {\n  // This property needs to remain unminified.\n  static ['_$litElement$'] = true;\n\n  /**\n   * @category rendering\n   */\n  readonly renderOptions: RenderOptions = {host: this};\n\n  private __childPart: RootPart | undefined = undefined;\n\n  /**\n   * @category rendering\n   */\n  protected override createRenderRoot() {\n    const renderRoot = super.createRenderRoot();\n    // When adoptedStyleSheets are shimmed, they are inserted into the\n    // shadowRoot by createRenderRoot. Adjust the renderBefore node so that\n    // any styles in Lit content render before adoptedStyleSheets. This is\n    // important so that adoptedStyleSheets have precedence over styles in\n    // the shadowRoot.\n    this.renderOptions.renderBefore ??= renderRoot!.firstChild as ChildNode;\n    return renderRoot;\n  }\n\n  /**\n   * Updates the element. This method reflects property values to attributes\n   * and calls `render` to render DOM via lit-html. Setting properties inside\n   * this method will *not* trigger another update.\n   * @param changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected override update(changedProperties: PropertyValues) {\n    // Setting properties in `render` should not trigger an update. Since\n    // updates are allowed after super.update, it's important to call `render`\n    // before that.\n    const value = this.render();\n    if (!this.hasUpdated) {\n      this.renderOptions.isConnected = this.isConnected;\n    }\n    super.update(changedProperties);\n    this.__childPart = render(value, this.renderRoot, this.renderOptions);\n  }\n\n  /**\n   * Invoked when the component is added to the document's DOM.\n   *\n   * In `connectedCallback()` you should setup tasks that should only occur when\n   * the element is connected to the document. The most common of these is\n   * adding event listeners to nodes external to the element, like a keydown\n   * event handler added to the window.\n   *\n   * ```ts\n   * connectedCallback() {\n   *   super.connectedCallback();\n   *   addEventListener('keydown', this._handleKeydown);\n   * }\n   * ```\n   *\n   * Typically, anything done in `connectedCallback()` should be undone when the\n   * element is disconnected, in `disconnectedCallback()`.\n   *\n   * @category lifecycle\n   */\n  override connectedCallback() {\n    super.connectedCallback();\n    this.__childPart?.setConnected(true);\n  }\n\n  /**\n   * Invoked when the component is removed from the document's DOM.\n   *\n   * This callback is the main signal to the element that it may no longer be\n   * used. `disconnectedCallback()` should ensure that nothing is holding a\n   * reference to the element (such as event listeners added to nodes external\n   * to the element), so that it is free to be garbage collected.\n   *\n   * ```ts\n   * disconnectedCallback() {\n   *   super.disconnectedCallback();\n   *   window.removeEventListener('keydown', this._handleKeydown);\n   * }\n   * ```\n   *\n   * An element may be re-connected after being disconnected.\n   *\n   * @category lifecycle\n   */\n  override disconnectedCallback() {\n    super.disconnectedCallback();\n    this.__childPart?.setConnected(false);\n  }\n\n  /**\n   * Invoked on each update to perform rendering tasks. This method may return\n   * any value renderable by lit-html's `ChildPart` - typically a\n   * `TemplateResult`. Setting properties inside this method will *not* trigger\n   * the element to update.\n   * @category rendering\n   */\n  protected render(): unknown {\n    return noChange;\n  }\n}\n\n/**\n * Ensure this class is marked as `finalized` as an optimization ensuring\n * it will not needlessly try to `finalize`.\n *\n * Note this property name is a string to prevent breaking Closure JS Compiler\n * optimizations. See @lit/reactive-element for more information.\n */\n(LitElement as unknown as Record<string, unknown>)[\n  JSCompiler_renameProperty('finalized', LitElement)\n] = true;\n\n// Install hydration if available\nglobal.litElementHydrateSupport?.({LitElement});\n\n// Apply polyfills if available\nconst polyfillSupport = DEV_MODE\n  ? global.litElementPolyfillSupportDevMode\n  : global.litElementPolyfillSupport;\npolyfillSupport?.({LitElement});\n\n/**\n * END USERS SHOULD NOT RELY ON THIS OBJECT.\n *\n * Private exports for use by other Lit packages, not intended for use by\n * external users.\n *\n * We currently do not make a mangled rollup build of the lit-ssr code. In order\n * to keep a number of (otherwise private) top-level exports  mangled in the\n * client side code, we export a _$LE object containing those members (or\n * helper methods for accessing private fields of those members), and then\n * re-export them for use in lit-ssr. This keeps lit-ssr agnostic to whether the\n * client-side code is being used in `dev` mode or `prod` mode.\n *\n * This has a unique name, to disambiguate it from private exports in\n * lit-html, since this module re-exports all of lit-html.\n *\n * @private\n */\nexport const _$LE = {\n  _$attributeToProperty: (\n    el: LitElement,\n    name: string,\n    value: string | null\n  ) => {\n    // eslint-disable-next-line\n    (el as any)._$attributeToProperty(name, value);\n  },\n  // eslint-disable-next-line\n  _$changedProperties: (el: LitElement) => (el as any)._$changedProperties,\n};\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for LitElement usage.\n(global.litElementVersions ??= []).push('4.2.2');\nif (DEV_MODE && global.litElementVersions.length > 1) {\n  queueMicrotask(() => {\n    issueWarning!(\n      'multiple-versions',\n      `Multiple versions of Lit loaded. Loading multiple versions ` +\n        `is not recommended.`\n    );\n  });\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport type {Constructor} from './base.js';\n\n/**\n * Allow for custom element classes with private constructors\n */\ntype CustomElementClass = Omit<typeof HTMLElement, 'new'>;\n\nexport type CustomElementDecorator = {\n  // legacy\n  (cls: CustomElementClass): void;\n\n  // standard\n  (\n    target: CustomElementClass,\n    context: ClassDecoratorContext<Constructor<HTMLElement>>\n  ): void;\n};\n\n/**\n * Class decorator factory that defines the decorated class as a custom element.\n *\n * ```js\n * @customElement('my-element')\n * class MyElement extends LitElement {\n *   render() {\n *     return html``;\n *   }\n * }\n * ```\n * @category Decorator\n * @param tagName The tag name of the custom element to define.\n */\nexport const customElement =\n  (tagName: string): CustomElementDecorator =>\n  (\n    classOrTarget: CustomElementClass | Constructor<HTMLElement>,\n    context?: ClassDecoratorContext<Constructor<HTMLElement>>\n  ) => {\n    if (context !== undefined) {\n      context.addInitializer(() => {\n        customElements.define(\n          tagName,\n          classOrTarget as CustomElementConstructor\n        );\n      });\n    } else {\n      customElements.define(tagName, classOrTarget as CustomElementConstructor);\n    }\n  };\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport {\n  type PropertyDeclaration,\n  type ReactiveElement,\n  defaultConverter,\n  notEqual,\n} from '../reactive-element.js';\nimport type {Interface} from './base.js';\n\nconst DEV_MODE = true;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n  // Ensure warnings are issued only 1x, even if multiple versions of Lit\n  // are loaded.\n  globalThis.litIssuedWarnings ??= new Set();\n\n  /**\n   * Issue a warning if we haven't already, based either on `code` or `warning`.\n   * Warnings are disabled automatically only by `warning`; disabling via `code`\n   * can be done by users.\n   */\n  issueWarning = (code: string, warning: string) => {\n    warning += ` See https://lit.dev/msg/${code} for more information.`;\n    if (\n      !globalThis.litIssuedWarnings!.has(warning) &&\n      !globalThis.litIssuedWarnings!.has(code)\n    ) {\n      console.warn(warning);\n      globalThis.litIssuedWarnings!.add(warning);\n    }\n  };\n}\n\n// Overloads for property decorator so that TypeScript can infer the correct\n// return type when a decorator is used as an accessor decorator or a setter\n// decorator.\nexport type PropertyDecorator = {\n  // accessor decorator signature\n  <C extends Interface<ReactiveElement>, V>(\n    target: ClassAccessorDecoratorTarget<C, V>,\n    context: ClassAccessorDecoratorContext<C, V>\n  ): ClassAccessorDecoratorResult<C, V>;\n\n  // setter decorator signature\n  <C extends Interface<ReactiveElement>, V>(\n    target: (value: V) => void,\n    context: ClassSetterDecoratorContext<C, V>\n  ): (this: C, value: V) => void;\n\n  // legacy decorator signature\n  (\n    protoOrDescriptor: Object,\n    name: PropertyKey,\n    descriptor?: PropertyDescriptor\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  ): any;\n};\n\nconst legacyProperty = (\n  options: PropertyDeclaration | undefined,\n  proto: Object,\n  name: PropertyKey\n) => {\n  const hasOwnProperty = proto.hasOwnProperty(name);\n  (proto.constructor as typeof ReactiveElement).createProperty(name, options);\n  // For accessors (which have a descriptor on the prototype) we need to\n  // return a descriptor, otherwise TypeScript overwrites the descriptor we\n  // define in createProperty() with the original descriptor. We don't do this\n  // for fields, which don't have a descriptor, because this could overwrite\n  // descriptor defined by other decorators.\n  return hasOwnProperty\n    ? Object.getOwnPropertyDescriptor(proto, name)\n    : undefined;\n};\n\n// This is duplicated from a similar variable in reactive-element.ts, but\n// actually makes sense to have this default defined with the decorator, so\n// that different decorators could have different defaults.\nconst defaultPropertyDeclaration: PropertyDeclaration = {\n  attribute: true,\n  type: String,\n  converter: defaultConverter,\n  reflect: false,\n  hasChanged: notEqual,\n};\n\n// Temporary type, until google3 is on TypeScript 5.2\ntype StandardPropertyContext<C, V> = (\n  | ClassAccessorDecoratorContext<C, V>\n  | ClassSetterDecoratorContext<C, V>\n) & {metadata: object};\n\n/**\n * Wraps a class accessor or setter so that `requestUpdate()` is called with the\n * property name and old value when the accessor is set.\n */\nexport const standardProperty = <C extends Interface<ReactiveElement>, V>(\n  options: PropertyDeclaration = defaultPropertyDeclaration,\n  target: ClassAccessorDecoratorTarget<C, V> | ((value: V) => void),\n  context: StandardPropertyContext<C, V>\n): ClassAccessorDecoratorResult<C, V> | ((this: C, value: V) => void) => {\n  const {kind, metadata} = context;\n\n  if (DEV_MODE && metadata == null) {\n    issueWarning(\n      'missing-class-metadata',\n      `The class ${target} is missing decorator metadata. This ` +\n        `could mean that you're using a compiler that supports decorators ` +\n        `but doesn't support decorator metadata, such as TypeScript 5.1. ` +\n        `Please update your compiler.`\n    );\n  }\n\n  // Store the property options\n  let properties = globalThis.litPropertyMetadata.get(metadata);\n  if (properties === undefined) {\n    globalThis.litPropertyMetadata.set(metadata, (properties = new Map()));\n  }\n  if (kind === 'setter') {\n    options = Object.create(options);\n    options.wrapped = true;\n  }\n  properties.set(context.name, options);\n\n  if (kind === 'accessor') {\n    // Standard decorators cannot dynamically modify the class, so we can't\n    // replace a field with accessors. The user must use the new `accessor`\n    // keyword instead.\n    const {name} = context;\n    return {\n      set(this: ReactiveElement, v: V) {\n        const oldValue = (\n          target as ClassAccessorDecoratorTarget<C, V>\n        ).get.call(this as unknown as C);\n        (target as ClassAccessorDecoratorTarget<C, V>).set.call(\n          this as unknown as C,\n          v\n        );\n        this.requestUpdate(name, oldValue, options, true, v);\n      },\n      init(this: ReactiveElement, v: V): V {\n        if (v !== undefined) {\n          this._$changeProperty(name, undefined, options, v);\n        }\n        return v;\n      },\n    } as unknown as ClassAccessorDecoratorResult<C, V>;\n  } else if (kind === 'setter') {\n    const {name} = context;\n    return function (this: ReactiveElement, value: V) {\n      const oldValue = this[name as keyof ReactiveElement];\n      (target as (value: V) => void).call(this, value);\n      this.requestUpdate(name, oldValue, options, true, value);\n    } as unknown as (this: C, value: V) => void;\n  }\n  throw new Error(`Unsupported decorator location: ${kind}`);\n};\n\n/**\n * A class field or accessor decorator which creates a reactive property that\n * reflects a corresponding attribute value. When a decorated property is set\n * the element will update and render. A {@linkcode PropertyDeclaration} may\n * optionally be supplied to configure property features.\n *\n * This decorator should only be used for public fields. As public fields,\n * properties should be considered as primarily settable by element users,\n * either via attribute or the property itself.\n *\n * Generally, properties that are changed by the element should be private or\n * protected fields and should use the {@linkcode state} decorator.\n *\n * However, sometimes element code does need to set a public property. This\n * should typically only be done in response to user interaction, and an event\n * should be fired informing the user; for example, a checkbox sets its\n * `checked` property when clicked and fires a `changed` event. Mutating public\n * properties should typically not be done for non-primitive (object or array)\n * properties. In other cases when an element needs to manage state, a private\n * property decorated via the {@linkcode state} decorator should be used. When\n * needed, state properties can be initialized via public properties to\n * facilitate complex interactions.\n *\n * ```ts\n * class MyElement {\n *   @property({ type: Boolean })\n *   clicked = false;\n * }\n * ```\n * @category Decorator\n * @ExportDecoratedItems\n */\nexport function property(options?: PropertyDeclaration): PropertyDecorator {\n  return <C extends Interface<ReactiveElement>, V>(\n    protoOrTarget:\n      | object\n      | ClassAccessorDecoratorTarget<C, V>\n      | ((value: V) => void),\n    nameOrContext:\n      | PropertyKey\n      | ClassAccessorDecoratorContext<C, V>\n      | ClassSetterDecoratorContext<C, V>\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  ): any => {\n    return (\n      typeof nameOrContext === 'object'\n        ? standardProperty<C, V>(\n            options,\n            protoOrTarget as\n              | ClassAccessorDecoratorTarget<C, V>\n              | ((value: V) => void),\n            nameOrContext as StandardPropertyContext<C, V>\n          )\n        : legacyProperty(\n            options,\n            protoOrTarget as Object,\n            nameOrContext as PropertyKey\n          )\n    ) as PropertyDecorator;\n  };\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport {property} from './property.js';\n\nexport interface StateDeclaration<Type = unknown> {\n  /**\n   * A function that indicates if a property should be considered changed when\n   * it is set. The function should take the `newValue` and `oldValue` and\n   * return `true` if an update should be requested.\n   */\n  hasChanged?(value: Type, oldValue: Type): boolean;\n}\n\n/**\n * @deprecated use StateDeclaration\n */\nexport type InternalPropertyDeclaration<Type = unknown> =\n  StateDeclaration<Type>;\n\n/**\n * Declares a private or protected reactive property that still triggers\n * updates to the element when it changes. It does not reflect from the\n * corresponding attribute.\n *\n * Properties declared this way must not be used from HTML or HTML templating\n * systems, they're solely for properties internal to the element. These\n * properties may be renamed by optimization tools like closure compiler.\n * @category Decorator\n */\nexport function state(options?: StateDeclaration) {\n  return property({\n    ...options,\n    // Add both `state` and `attribute` because we found a third party\n    // controller that is keying off of PropertyOptions.state to determine\n    // whether a field is a private internal property or not.\n    state: true,\n    attribute: false,\n  });\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Generates a public interface type that removes private and protected fields.\n * This allows accepting otherwise incompatible versions of the type (e.g. from\n * multiple copies of the same package in `node_modules`).\n */\nexport type Interface<T> = {\n  [K in keyof T]: T[K];\n};\n\nexport type Constructor<T> = {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  new (...args: any[]): T;\n};\n\n/**\n * Wraps up a few best practices when returning a property descriptor from a\n * decorator.\n *\n * Marks the defined property as configurable, and enumerable, and handles\n * the case where we have a busted Reflect.decorate zombiefill (e.g. in Angular\n * apps).\n *\n * @internal\n */\nexport const desc = (\n  obj: object,\n  name: PropertyKey | ClassAccessorDecoratorContext<unknown, unknown>,\n  descriptor: PropertyDescriptor\n) => {\n  // For backwards compatibility, we keep them configurable and enumerable.\n  descriptor.configurable = true;\n  descriptor.enumerable = true;\n  if (\n    // We check for Reflect.decorate each time, in case the zombiefill\n    // is applied via lazy loading some Angular code.\n    (Reflect as typeof Reflect & {decorate?: unknown}).decorate &&\n    typeof name !== 'object'\n  ) {\n    // If we're called as a legacy decorator, and Reflect.decorate is present\n    // then we have no guarantees that the returned descriptor will be\n    // defined on the class, so we must apply it directly ourselves.\n\n    Object.defineProperty(obj, name, descriptor);\n  }\n  return descriptor;\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\nimport type {ReactiveElement} from '../reactive-element.js';\nimport {desc, type Interface} from './base.js';\n\nconst DEV_MODE = true;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n  // Ensure warnings are issued only 1x, even if multiple versions of Lit\n  // are loaded.\n  globalThis.litIssuedWarnings ??= new Set();\n\n  /**\n   * Issue a warning if we haven't already, based either on `code` or `warning`.\n   * Warnings are disabled automatically only by `warning`; disabling via `code`\n   * can be done by users.\n   */\n  issueWarning = (code: string, warning: string) => {\n    warning += code\n      ? ` See https://lit.dev/msg/${code} for more information.`\n      : '';\n    if (\n      !globalThis.litIssuedWarnings!.has(warning) &&\n      !globalThis.litIssuedWarnings!.has(code)\n    ) {\n      console.warn(warning);\n      globalThis.litIssuedWarnings!.add(warning);\n    }\n  };\n}\n\nexport type QueryDecorator = {\n  // legacy\n  (\n    proto: Interface<ReactiveElement>,\n    name: PropertyKey,\n    descriptor?: PropertyDescriptor\n    // Note TypeScript requires the return type to be `void|any`\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  ): void | any;\n\n  // standard\n  <C extends Interface<ReactiveElement>, V extends Element | null>(\n    value: ClassAccessorDecoratorTarget<C, V>,\n    context: ClassAccessorDecoratorContext<C, V>\n  ): ClassAccessorDecoratorResult<C, V>;\n};\n\n/**\n * A property decorator that converts a class property into a getter that\n * executes a querySelector on the element's renderRoot.\n *\n * @param selector A DOMString containing one or more selectors to match.\n * @param cache An optional boolean which when true performs the DOM query only\n *     once and caches the result.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector\n *\n * ```ts\n * class MyElement {\n *   @query('#first')\n *   first: HTMLDivElement;\n *\n *   render() {\n *     return html`\n *       <div id=\"first\"></div>\n *       <div id=\"second\"></div>\n *     `;\n *   }\n * }\n * ```\n * @category Decorator\n */\nexport function query(selector: string, cache?: boolean): QueryDecorator {\n  return (<C extends Interface<ReactiveElement>, V extends Element | null>(\n    protoOrTarget: ClassAccessorDecoratorTarget<C, V>,\n    nameOrContext: PropertyKey | ClassAccessorDecoratorContext<C, V>,\n    descriptor?: PropertyDescriptor\n  ) => {\n    const doQuery = (el: Interface<ReactiveElement>): V => {\n      const result = (el.renderRoot?.querySelector(selector) ?? null) as V;\n      if (DEV_MODE && result === null && cache && !el.hasUpdated) {\n        const name =\n          typeof nameOrContext === 'object'\n            ? nameOrContext.name\n            : nameOrContext;\n        issueWarning(\n          '',\n          `@query'd field ${JSON.stringify(String(name))} with the 'cache' ` +\n            `flag set for selector '${selector}' has been accessed before ` +\n            `the first update and returned null. This is expected if the ` +\n            `renderRoot tree has not been provided beforehand (e.g. via ` +\n            `Declarative Shadow DOM). Therefore the value hasn't been cached.`\n        );\n      }\n      // TODO: if we want to allow users to assert that the query will never\n      // return null, we need a new option and to throw here if the result\n      // is null.\n      return result;\n    };\n    if (cache) {\n      // Accessors to wrap from either:\n      //   1. The decorator target, in the case of standard decorators\n      //   2. The property descriptor, in the case of experimental decorators\n      //      on auto-accessors.\n      //   3. Functions that access our own cache-key property on the instance,\n      //      in the case of experimental decorators on fields.\n      const {get, set} =\n        typeof nameOrContext === 'object'\n          ? protoOrTarget\n          : (descriptor ??\n            (() => {\n              const key = DEV_MODE\n                ? Symbol(`${String(nameOrContext)} (@query() cache)`)\n                : Symbol();\n              type WithCache = ReactiveElement & {\n                [key: symbol]: Element | null;\n              };\n              return {\n                get() {\n                  return (this as WithCache)[key];\n                },\n                set(v) {\n                  (this as WithCache)[key] = v;\n                },\n              };\n            })());\n      return desc(protoOrTarget, nameOrContext, {\n        get(this: ReactiveElement): V {\n          let result: V = get!.call(this);\n          if (result === undefined) {\n            result = doQuery(this);\n            if (result !== null || this.hasUpdated) {\n              set!.call(this, result);\n            }\n          }\n          return result;\n        },\n      });\n    } else {\n      // This object works as the return type for both standard and\n      // experimental decorators.\n      return desc(protoOrTarget, nameOrContext, {\n        get(this: ReactiveElement) {\n          return doQuery(this);\n        },\n      });\n    }\n  }) as QueryDecorator;\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport type {ReactiveElement} from '../reactive-element.js';\nimport {desc, type Interface} from './base.js';\n\nexport type QueryAsyncDecorator = {\n  // legacy\n  (\n    proto: Interface<ReactiveElement>,\n    name: PropertyKey,\n    descriptor?: PropertyDescriptor\n    // Note TypeScript requires the return type to be `void|any`\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  ): void | any;\n\n  // standard\n  <C extends Interface<ReactiveElement>, V extends Promise<Element | null>>(\n    value: ClassAccessorDecoratorTarget<C, V>,\n    context: ClassAccessorDecoratorContext<C, V>\n  ): ClassAccessorDecoratorResult<C, V>;\n};\n\n// Note, in the future, we may extend this decorator to support the use case\n// where the queried element may need to do work to become ready to interact\n// with (e.g. load some implementation code). If so, we might elect to\n// add a second argument defining a function that can be run to make the\n// queried element loaded/updated/ready.\n/**\n * A property decorator that converts a class property into a getter that\n * returns a promise that resolves to the result of a querySelector on the\n * element's renderRoot done after the element's `updateComplete` promise\n * resolves. When the queried property may change with element state, this\n * decorator can be used instead of requiring users to await the\n * `updateComplete` before accessing the property.\n *\n * @param selector A DOMString containing one or more selectors to match.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector\n *\n * ```ts\n * class MyElement {\n *   @queryAsync('#first')\n *   first: Promise<HTMLDivElement>;\n *\n *   render() {\n *     return html`\n *       <div id=\"first\"></div>\n *       <div id=\"second\"></div>\n *     `;\n *   }\n * }\n *\n * // external usage\n * async doSomethingWithFirst() {\n *  (await aMyElement.first).doSomething();\n * }\n * ```\n * @category Decorator\n */\nexport function queryAsync(selector: string) {\n  return ((\n    obj: object,\n    name: PropertyKey | ClassAccessorDecoratorContext<unknown, unknown>\n  ) => {\n    return desc(obj, name, {\n      async get(this: ReactiveElement) {\n        await this.updateComplete;\n        return this.renderRoot?.querySelector(selector) ?? null;\n      },\n    });\n  }) as QueryAsyncDecorator;\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Chooses and evaluates a template function from a list based on matching\n * the given `value` to a case.\n *\n * Cases are structured as `[caseValue, func]`. `value` is matched to\n * `caseValue` by strict equality. The first match is selected. Case values\n * can be of any type including primitives, objects, and symbols.\n *\n * This is similar to a switch statement, but as an expression and without\n * fallthrough.\n *\n * @example\n *\n * ```ts\n * render() {\n *   return html`\n *     ${choose(this.section, [\n *       ['home', () => html`<h1>Home</h1>`],\n *       ['about', () => html`<h1>About</h1>`]\n *     ],\n *     () => html`<h1>Error</h1>`)}\n *   `;\n * }\n * ```\n */\nexport const choose = <T, V, K extends T = T>(\n  value: T,\n  cases: Array<[K, () => V]>,\n  defaultCase?: () => V\n) => {\n  for (const c of cases) {\n    const caseValue = c[0];\n    if (caseValue === value) {\n      const fn = c[1];\n      return fn();\n    }\n  }\n  return defaultCase?.();\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {Disconnectable, Part} from './lit-html.js';\n\nexport {\n  AttributePart,\n  BooleanAttributePart,\n  ChildPart,\n  ElementPart,\n  EventPart,\n  Part,\n  PropertyPart,\n} from './lit-html.js';\n\nexport interface DirectiveClass {\n  new (part: PartInfo): Directive;\n}\n\n/**\n * This utility type extracts the signature of a directive class's render()\n * method so we can use it for the type of the generated directive function.\n */\nexport type DirectiveParameters<C extends Directive> = Parameters<C['render']>;\n\n/**\n * A generated directive function doesn't evaluate the directive, but just\n * returns a DirectiveResult object that captures the arguments.\n */\nexport interface DirectiveResult<C extends DirectiveClass = DirectiveClass> {\n  /**\n   * This property needs to remain unminified.\n   * @internal\n   */\n  ['_$litDirective$']: C;\n  /** @internal */\n  values: DirectiveParameters<InstanceType<C>>;\n}\n\nexport const PartType = {\n  ATTRIBUTE: 1,\n  CHILD: 2,\n  PROPERTY: 3,\n  BOOLEAN_ATTRIBUTE: 4,\n  EVENT: 5,\n  ELEMENT: 6,\n} as const;\n\nexport type PartType = (typeof PartType)[keyof typeof PartType];\n\nexport interface ChildPartInfo {\n  readonly type: typeof PartType.CHILD;\n}\n\nexport interface AttributePartInfo {\n  readonly type:\n    | typeof PartType.ATTRIBUTE\n    | typeof PartType.PROPERTY\n    | typeof PartType.BOOLEAN_ATTRIBUTE\n    | typeof PartType.EVENT;\n  readonly strings?: ReadonlyArray<string>;\n  readonly name: string;\n  readonly tagName: string;\n}\n\nexport interface ElementPartInfo {\n  readonly type: typeof PartType.ELEMENT;\n}\n\n/**\n * Information about the part a directive is bound to.\n *\n * This is useful for checking that a directive is attached to a valid part,\n * such as with directive that can only be used on attribute bindings.\n */\nexport type PartInfo = ChildPartInfo | AttributePartInfo | ElementPartInfo;\n\n/**\n * Creates a user-facing directive function from a Directive class. This\n * function has the same parameters as the directive's render() method.\n */\nexport const directive =\n  <C extends DirectiveClass>(c: C) =>\n  (...values: DirectiveParameters<InstanceType<C>>): DirectiveResult<C> => ({\n    // This property needs to remain unminified.\n    ['_$litDirective$']: c,\n    values,\n  });\n\n/**\n * Base class for creating custom directives. Users should extend this class,\n * implement `render` and/or `update`, and then pass their subclass to\n * `directive`.\n */\nexport abstract class Directive implements Disconnectable {\n  //@internal\n  __part!: Part;\n  //@internal\n  __attributeIndex: number | undefined;\n  //@internal\n  __directive?: Directive;\n\n  //@internal\n  _$parent!: Disconnectable;\n\n  // These will only exist on the AsyncDirective subclass\n  //@internal\n  _$disconnectableChildren?: Set<Disconnectable>;\n  // This property needs to remain unminified.\n  //@internal\n  ['_$notifyDirectiveConnectionChanged']?(isConnected: boolean): void;\n\n  constructor(_partInfo: PartInfo) {}\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n\n  /** @internal */\n  _$initialize(\n    part: Part,\n    parent: Disconnectable,\n    attributeIndex: number | undefined\n  ) {\n    this.__part = part;\n    this._$parent = parent;\n    this.__attributeIndex = attributeIndex;\n  }\n  /** @internal */\n  _$resolve(part: Part, props: Array<unknown>): unknown {\n    return this.update(part, props);\n  }\n\n  abstract render(...props: Array<unknown>): unknown;\n\n  update(_part: Part, props: Array<unknown>): unknown {\n    return this.render(...props);\n  }\n}\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {noChange, Part} from '../lit-html.js';\nimport {\n  directive,\n  Directive,\n  DirectiveParameters,\n  DirectiveResult,\n} from '../directive.js';\n\n// A sentinel that indicates guard() hasn't rendered anything yet\nconst initialValue = {};\n\nclass GuardDirective<T> extends Directive {\n  private _previousValue: unknown = initialValue;\n\n  render(_value: unknown, f: () => T): T {\n    return f();\n  }\n\n  override update(_part: Part, [value, f]: DirectiveParameters<this>) {\n    if (Array.isArray(value)) {\n      // Dirty-check arrays by item\n      if (\n        Array.isArray(this._previousValue) &&\n        this._previousValue.length === value.length &&\n        value.every((v, i) => v === (this._previousValue as Array<unknown>)[i])\n      ) {\n        return noChange;\n      }\n    } else if (this._previousValue === value) {\n      // Dirty-check non-arrays by identity\n      return noChange;\n    }\n\n    // Copy the value if it's an array so that if it's mutated we don't forget\n    // what the previous values were.\n    this._previousValue = Array.isArray(value) ? Array.from(value) : value;\n    const r = this.render(value, f);\n    return r;\n  }\n}\n\ninterface Guard {\n  <T>(vals: unknown[], f: () => T): DirectiveResult<typeof GuardDirective<T>>;\n}\n\n/**\n * Prevents re-render of a template function until a single value or an array of\n * values changes.\n *\n * Values are checked against previous values with strict equality (`===`), and\n * so the check won't detect nested property changes inside objects or arrays.\n * Arrays values have each item checked against the previous value at the same\n * index with strict equality. Nested arrays are also checked only by strict\n * equality.\n *\n * Example:\n *\n * ```js\n * html`\n *   <div>\n *     ${guard([user.id, company.id], () => html`...`)}\n *   </div>\n * `\n * ```\n *\n * In this case, the template only rerenders if either `user.id` or `company.id`\n * changes.\n *\n * guard() is useful with immutable data patterns, by preventing expensive work\n * until data updates.\n *\n * Example:\n *\n * ```js\n * html`\n *   <div>\n *     ${guard([immutableItems], () => immutableItems.map(i => html`${i}`))}\n *   </div>\n * `\n * ```\n *\n * In this case, items are mapped over only when the array reference changes.\n *\n * @param value the value to check before re-rendering\n * @param f the template function\n */\nexport const guard: Guard = directive(GuardDirective);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {GuardDirective};\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {AttributePart, noChange} from '../lit-html.js';\nimport {\n  directive,\n  Directive,\n  DirectiveParameters,\n  PartInfo,\n  PartType,\n} from '../directive.js';\n\n/**\n * A key-value set of class names to truthy values.\n */\nexport interface ClassInfo {\n  [name: string]: string | boolean | number;\n}\n\nclass ClassMapDirective extends Directive {\n  /**\n   * Stores the ClassInfo object applied to a given AttributePart.\n   * Used to unset existing values when a new ClassInfo object is applied.\n   */\n  private _previousClasses?: Set<string>;\n  private _staticClasses?: Set<string>;\n\n  constructor(partInfo: PartInfo) {\n    super(partInfo);\n    if (\n      partInfo.type !== PartType.ATTRIBUTE ||\n      partInfo.name !== 'class' ||\n      (partInfo.strings?.length as number) > 2\n    ) {\n      throw new Error(\n        '`classMap()` can only be used in the `class` attribute ' +\n          'and must be the only part in the attribute.'\n      );\n    }\n  }\n\n  render(classInfo: ClassInfo) {\n    // Add spaces to ensure separation from static classes\n    return (\n      ' ' +\n      Object.keys(classInfo)\n        .filter((key) => classInfo[key])\n        .join(' ') +\n      ' '\n    );\n  }\n\n  override update(part: AttributePart, [classInfo]: DirectiveParameters<this>) {\n    // Remember dynamic classes on the first render\n    if (this._previousClasses === undefined) {\n      this._previousClasses = new Set();\n      if (part.strings !== undefined) {\n        this._staticClasses = new Set(\n          part.strings\n            .join(' ')\n            .split(/\\s/)\n            .filter((s) => s !== '')\n        );\n      }\n      for (const name in classInfo) {\n        if (classInfo[name] && !this._staticClasses?.has(name)) {\n          this._previousClasses.add(name);\n        }\n      }\n      return this.render(classInfo);\n    }\n\n    const classList = part.element.classList;\n\n    // Remove old classes that no longer apply\n    for (const name of this._previousClasses) {\n      if (!(name in classInfo)) {\n        classList.remove(name);\n        this._previousClasses!.delete(name);\n      }\n    }\n\n    // Add or remove classes based on their classMap value\n    for (const name in classInfo) {\n      // We explicitly want a loose truthy check of `value` because it seems\n      // more convenient that '' and 0 are skipped.\n      const value = !!classInfo[name];\n      if (\n        value !== this._previousClasses.has(name) &&\n        !this._staticClasses?.has(name)\n      ) {\n        if (value) {\n          classList.add(name);\n          this._previousClasses.add(name);\n        } else {\n          classList.remove(name);\n          this._previousClasses.delete(name);\n        }\n      }\n    }\n    return noChange;\n  }\n}\n\n/**\n * A directive that applies dynamic CSS classes.\n *\n * This must be used in the `class` attribute and must be the only part used in\n * the attribute. It takes each property in the `classInfo` argument and adds\n * the property name to the element's `classList` if the property value is\n * truthy; if the property value is falsy, the property name is removed from\n * the element's `class`.\n *\n * For example `{foo: bar}` applies the class `foo` if the value of `bar` is\n * truthy.\n *\n * @param classInfo\n */\nexport const classMap = directive(ClassMapDirective);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {ClassMapDirective};\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {nothing} from '../lit-html.js';\n\n/**\n * For AttributeParts, sets the attribute if the value is defined and removes\n * the attribute if the value is undefined.\n *\n * For other part types, this directive is a no-op.\n */\nexport const ifDefined = <T>(value: T) => value ?? nothing;\n","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {\n  _$LH,\n  Part,\n  DirectiveParent,\n  CompiledTemplateResult,\n  MaybeCompiledTemplateResult,\n  UncompiledTemplateResult,\n} from './lit-html.js';\nimport {\n  DirectiveResult,\n  DirectiveClass,\n  PartInfo,\n  AttributePartInfo,\n} from './directive.js';\ntype Primitive = null | undefined | boolean | number | string | symbol | bigint;\n\nconst {_ChildPart: ChildPart} = _$LH;\n\ntype ChildPart = InstanceType<typeof ChildPart>;\n\nconst ENABLE_SHADYDOM_NOPATCH = true;\n\nconst wrap =\n  ENABLE_SHADYDOM_NOPATCH &&\n  window.ShadyDOM?.inUse &&\n  window.ShadyDOM?.noPatch === true\n    ? window.ShadyDOM!.wrap\n    : (node: Node) => node;\n\n/**\n * Tests if a value is a primitive value.\n *\n * See https://tc39.github.io/ecma262/#sec-typeof-operator\n */\nexport const isPrimitive = (value: unknown): value is Primitive =>\n  value === null || (typeof value != 'object' && typeof value != 'function');\n\nexport const TemplateResultType = {\n  HTML: 1,\n  SVG: 2,\n  MATHML: 3,\n} as const;\n\nexport type TemplateResultType =\n  (typeof TemplateResultType)[keyof typeof TemplateResultType];\n\ntype IsTemplateResult = {\n  (val: unknown): val is MaybeCompiledTemplateResult;\n  <T extends TemplateResultType>(\n    val: unknown,\n    type: T\n  ): val is UncompiledTemplateResult<T>;\n};\n\n/**\n * Tests if a value is a TemplateResult or a CompiledTemplateResult.\n */\nexport const isTemplateResult: IsTemplateResult = (\n  value: unknown,\n  type?: TemplateResultType\n): value is UncompiledTemplateResult =>\n  type === undefined\n    ? // This property needs to remain unminified.\n      (value as UncompiledTemplateResult)?.['_$litType$'] !== undefined\n    : (value as UncompiledTemplateResult)?.['_$litType$'] === type;\n\n/**\n * Tests if a value is a CompiledTemplateResult.\n */\nexport const isCompiledTemplateResult = (\n  value: unknown\n): value is CompiledTemplateResult => {\n  return (value as CompiledTemplateResult)?.['_$litType$']?.h != null;\n};\n\n/**\n * Tests if a value is a DirectiveResult.\n */\nexport const isDirectiveResult = (value: unknown): value is DirectiveResult =>\n  // This property needs to remain unminified.\n  (value as DirectiveResult)?.['_$litDirective$'] !== undefined;\n\n/**\n * Retrieves the Directive class for a DirectiveResult\n */\nexport const getDirectiveClass = (value: unknown): DirectiveClass | undefined =>\n  // This property needs to remain unminified.\n  (value as DirectiveResult)?.['_$litDirective$'];\n\n/**\n * Tests whether a part has only a single-expression with no strings to\n * interpolate between.\n *\n * Only AttributePart and PropertyPart can have multiple expressions.\n * Multi-expression parts have a `strings` property and single-expression\n * parts do not.\n */\nexport const isSingleExpression = (part: PartInfo) =>\n  (part as AttributePartInfo).strings === undefined;\n\nconst createMarker = () => document.createComment('');\n\n/**\n * Inserts a ChildPart into the given container ChildPart's DOM, either at the\n * end of the container ChildPart, or before the optional `refPart`.\n *\n * This does not add the part to the containerPart's committed value. That must\n * be done by callers.\n *\n * @param containerPart Part within which to add the new ChildPart\n * @param refPart Part before which to add the new ChildPart; when omitted the\n *     part added to the end of the `containerPart`\n * @param part Part to insert, or undefined to create a new part\n */\nexport const insertPart = (\n  containerPart: ChildPart,\n  refPart?: ChildPart,\n  part?: ChildPart\n): ChildPart => {\n  const container = wrap(containerPart._$startNode).parentNode!;\n\n  const refNode =\n    refPart === undefined ? containerPart._$endNode : refPart._$startNode;\n\n  if (part === undefined) {\n    const startNode = wrap(container).insertBefore(createMarker(), refNode);\n    const endNode = wrap(container).insertBefore(createMarker(), refNode);\n    part = new ChildPart(\n      startNode,\n      endNode,\n      containerPart,\n      containerPart.options\n    );\n  } else {\n    const endNode = wrap(part._$endNode!).nextSibling;\n    const oldParent = part._$parent;\n    const parentChanged = oldParent !== containerPart;\n    if (parentChanged) {\n      part._$reparentDisconnectables?.(containerPart);\n      // Note that although `_$reparentDisconnectables` updates the part's\n      // `_$parent` reference after unlinking from its current parent, that\n      // method only exists if Disconnectables are present, so we need to\n      // unconditionally set it here\n      part._$parent = containerPart;\n      // Since the _$isConnected getter is somewhat costly, only\n      // read it once we know the subtree has directives that need\n      // to be notified\n      let newConnectionState;\n      if (\n        part._$notifyConnectionChanged !== undefined &&\n        (newConnectionState = containerPart._$isConnected) !==\n          oldParent!._$isConnected\n      ) {\n        part._$notifyConnectionChanged(newConnectionState);\n      }\n    }\n    if (endNode !== refNode || parentChanged) {\n      let start: Node | null = part._$startNode;\n      while (start !== endNode) {\n        const n: Node | null = wrap(start!).nextSibling;\n        wrap(container).insertBefore(start!, refNode);\n        start = n;\n      }\n    }\n  }\n\n  return part;\n};\n\n/**\n * Sets the value of a Part.\n *\n * Note that this should only be used to set/update the value of user-created\n * parts (i.e. those created using `insertPart`); it should not be used\n * by directives to set the value of the directive's container part. Directives\n * should return a value from `update`/`render` to update their part state.\n *\n * For directives that require setting their part value asynchronously, they\n * should extend `AsyncDirective` and call `this.setValue()`.\n *\n * @param part Part to set\n * @param value Value to set\n * @param index For `AttributePart`s, the index to set\n * @param directiveParent Used internally; should not be set by user\n */\nexport const setChildPartValue = <T extends ChildPart>(\n  part: T,\n  value: unknown,\n  directiveParent: DirectiveParent = part\n): T => {\n  part._$setValue(value, directiveParent);\n  return part;\n};\n\n// A sentinel value that can never appear as a part value except when set by\n// live(). Used to force a dirty-check to fail and cause a re-render.\nconst RESET_VALUE = {};\n\n/**\n * Sets the committed value of a ChildPart directly without triggering the\n * commit stage of the part.\n *\n * This is useful in cases where a directive needs to update the part such\n * that the next update detects a value change or not. When value is omitted,\n * the next update will be guaranteed to be detected as a change.\n *\n * @param part\n * @param value\n */\nexport const setCommittedValue = (part: Part, value: unknown = RESET_VALUE) =>\n  (part._$committedValue = value);\n\n/**\n * Returns the committed value of a ChildPart.\n *\n * The committed value is used for change detection and efficient updates of\n * the part. It can differ from the value set by the template or directive in\n * cases where the template value is transformed before being committed.\n *\n * - `TemplateResult`s are committed as a `TemplateInstance`\n * - Iterables are committed as `Array<ChildPart>`\n * - All other types are committed as the template value or value returned or\n *   set by a directive.\n *\n * @param part\n */\nexport const getCommittedValue = (part: ChildPart) => part._$committedValue;\n\n/**\n * Removes a ChildPart from the DOM, including any of its content and markers.\n *\n * Note: The only difference between this and clearPart() is that this also\n * removes the part's start node. This means that the ChildPart must own its\n * start node, ie it must be a marker node specifically for this part and not an\n * anchor from surrounding content.\n *\n * @param part The Part to remove\n */\nexport const removePart = (part: ChildPart) => {\n  part._$clear();\n  part._$startNode.remove();\n};\n\nexport const clearPart = (part: ChildPart) => {\n  part._$clear();\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {ChildPart, noChange} from '../lit-html.js';\nimport {directive, Directive, PartInfo, PartType} from '../directive.js';\nimport {\n  insertPart,\n  getCommittedValue,\n  removePart,\n  setCommittedValue,\n  setChildPartValue,\n} from '../directive-helpers.js';\n\nexport type KeyFn<T> = (item: T, index: number) => unknown;\nexport type ItemTemplate<T> = (item: T, index: number) => unknown;\n\n// Helper for generating a map of array item to its index over a subset\n// of an array (used to lazily generate `newKeyToIndexMap` and\n// `oldKeyToIndexMap`)\nconst generateMap = (list: unknown[], start: number, end: number) => {\n  const map = new Map<unknown, number>();\n  for (let i = start; i <= end; i++) {\n    map.set(list[i], i);\n  }\n  return map;\n};\n\nclass RepeatDirective extends Directive {\n  private _itemKeys?: unknown[];\n\n  constructor(partInfo: PartInfo) {\n    super(partInfo);\n    if (partInfo.type !== PartType.CHILD) {\n      throw new Error('repeat() can only be used in text expressions');\n    }\n  }\n\n  private _getValuesAndKeys<T>(\n    items: Iterable<T>,\n    keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n    template?: ItemTemplate<T>\n  ) {\n    let keyFn: KeyFn<T> | undefined;\n    if (template === undefined) {\n      template = keyFnOrTemplate;\n    } else if (keyFnOrTemplate !== undefined) {\n      keyFn = keyFnOrTemplate as KeyFn<T>;\n    }\n    const keys = [];\n    const values = [];\n    let index = 0;\n    for (const item of items) {\n      keys[index] = keyFn ? keyFn(item, index) : index;\n      values[index] = template!(item, index);\n      index++;\n    }\n    return {\n      values,\n      keys,\n    };\n  }\n\n  render<T>(items: Iterable<T>, template: ItemTemplate<T>): Array<unknown>;\n  render<T>(\n    items: Iterable<T>,\n    keyFn: KeyFn<T> | ItemTemplate<T>,\n    template: ItemTemplate<T>\n  ): Array<unknown>;\n  render<T>(\n    items: Iterable<T>,\n    keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n    template?: ItemTemplate<T>\n  ) {\n    return this._getValuesAndKeys(items, keyFnOrTemplate, template).values;\n  }\n\n  override update<T>(\n    containerPart: ChildPart,\n    [items, keyFnOrTemplate, template]: [\n      Iterable<T>,\n      KeyFn<T> | ItemTemplate<T>,\n      ItemTemplate<T>,\n    ]\n  ) {\n    // Old part & key lists are retrieved from the last update (which may\n    // be primed by hydration)\n    const oldParts = getCommittedValue(\n      containerPart\n    ) as Array<ChildPart | null>;\n    const {values: newValues, keys: newKeys} = this._getValuesAndKeys(\n      items,\n      keyFnOrTemplate,\n      template\n    );\n\n    // We check that oldParts, the committed value, is an Array as an\n    // indicator that the previous value came from a repeat() call. If\n    // oldParts is not an Array then this is the first render and we return\n    // an array for lit-html's array handling to render, and remember the\n    // keys.\n    if (!Array.isArray(oldParts)) {\n      this._itemKeys = newKeys;\n      return newValues;\n    }\n\n    // In SSR hydration it's possible for oldParts to be an array but for us\n    // to not have item keys because the update() hasn't run yet. We set the\n    // keys to an empty array. This will cause all oldKey/newKey comparisons\n    // to fail and execution to fall to the last nested brach below which\n    // reuses the oldPart.\n    const oldKeys = (this._itemKeys ??= []);\n\n    // New part list will be built up as we go (either reused from\n    // old parts or created for new keys in this update). This is\n    // saved in the above cache at the end of the update.\n    const newParts: ChildPart[] = [];\n\n    // Maps from key to index for current and previous update; these\n    // are generated lazily only when needed as a performance\n    // optimization, since they are only required for multiple\n    // non-contiguous changes in the list, which are less common.\n    let newKeyToIndexMap!: Map<unknown, number>;\n    let oldKeyToIndexMap!: Map<unknown, number>;\n\n    // Head and tail pointers to old parts and new values\n    let oldHead = 0;\n    let oldTail = oldParts.length - 1;\n    let newHead = 0;\n    let newTail = newValues.length - 1;\n\n    // Overview of O(n) reconciliation algorithm (general approach\n    // based on ideas found in ivi, vue, snabbdom, etc.):\n    //\n    // * We start with the list of old parts and new values (and\n    //   arrays of their respective keys), head/tail pointers into\n    //   each, and we build up the new list of parts by updating\n    //   (and when needed, moving) old parts or creating new ones.\n    //   The initial scenario might look like this (for brevity of\n    //   the diagrams, the numbers in the array reflect keys\n    //   associated with the old parts or new values, although keys\n    //   and parts/values are actually stored in parallel arrays\n    //   indexed using the same head/tail pointers):\n    //\n    //      oldHead v                 v oldTail\n    //   oldKeys:  [0, 1, 2, 3, 4, 5, 6]\n    //   newParts: [ ,  ,  ,  ,  ,  ,  ]\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6] <- reflects the user's new\n    //                                      item order\n    //      newHead ^                 ^ newTail\n    //\n    // * Iterate old & new lists from both sides, updating,\n    //   swapping, or removing parts at the head/tail locations\n    //   until neither head nor tail can move.\n    //\n    // * Example below: keys at head pointers match, so update old\n    //   part 0 in-place (no need to move it) and record part 0 in\n    //   the `newParts` list. The last thing we do is advance the\n    //   `oldHead` and `newHead` pointers (will be reflected in the\n    //   next diagram).\n    //\n    //      oldHead v                 v oldTail\n    //   oldKeys:  [0, 1, 2, 3, 4, 5, 6]\n    //   newParts: [0,  ,  ,  ,  ,  ,  ] <- heads matched: update 0\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    and advance both oldHead\n    //                                      & newHead\n    //      newHead ^                 ^ newTail\n    //\n    // * Example below: head pointers don't match, but tail\n    //   pointers do, so update part 6 in place (no need to move\n    //   it), and record part 6 in the `newParts` list. Last,\n    //   advance the `oldTail` and `oldHead` pointers.\n    //\n    //         oldHead v              v oldTail\n    //   oldKeys:  [0, 1, 2, 3, 4, 5, 6]\n    //   newParts: [0,  ,  ,  ,  ,  , 6] <- tails matched: update 6\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    and advance both oldTail\n    //                                      & newTail\n    //         newHead ^              ^ newTail\n    //\n    // * If neither head nor tail match; next check if one of the\n    //   old head/tail items was removed. We first need to generate\n    //   the reverse map of new keys to index (`newKeyToIndexMap`),\n    //   which is done once lazily as a performance optimization,\n    //   since we only hit this case if multiple non-contiguous\n    //   changes were made. Note that for contiguous removal\n    //   anywhere in the list, the head and tails would advance\n    //   from either end and pass each other before we get to this\n    //   case and removals would be handled in the final while loop\n    //   without needing to generate the map.\n    //\n    // * Example below: The key at `oldTail` was removed (no longer\n    //   in the `newKeyToIndexMap`), so remove that part from the\n    //   DOM and advance just the `oldTail` pointer.\n    //\n    //         oldHead v           v oldTail\n    //   oldKeys:  [0, 1, 2, 3, 4, 5, 6]\n    //   newParts: [0,  ,  ,  ,  ,  , 6] <- 5 not in new map: remove\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    5 and advance oldTail\n    //         newHead ^           ^ newTail\n    //\n    // * Once head and tail cannot move, any mismatches are due to\n    //   either new or moved items; if a new key is in the previous\n    //   \"old key to old index\" map, move the old part to the new\n    //   location, otherwise create and insert a new part. Note\n    //   that when moving an old part we null its position in the\n    //   oldParts array if it lies between the head and tail so we\n    //   know to skip it when the pointers get there.\n    //\n    // * Example below: neither head nor tail match, and neither\n    //   were removed; so find the `newHead` key in the\n    //   `oldKeyToIndexMap`, and move that old part's DOM into the\n    //   next head position (before `oldParts[oldHead]`). Last,\n    //   null the part in the `oldPart` array since it was\n    //   somewhere in the remaining oldParts still to be scanned\n    //   (between the head and tail pointers) so that we know to\n    //   skip that old part on future iterations.\n    //\n    //         oldHead v        v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2,  ,  ,  ,  , 6] <- stuck: update & move 2\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    into place and advance\n    //                                      newHead\n    //         newHead ^           ^ newTail\n    //\n    // * Note that for moves/insertions like the one above, a part\n    //   inserted at the head pointer is inserted before the\n    //   current `oldParts[oldHead]`, and a part inserted at the\n    //   tail pointer is inserted before `newParts[newTail+1]`. The\n    //   seeming asymmetry lies in the fact that new parts are\n    //   moved into place outside in, so to the right of the head\n    //   pointer are old parts, and to the right of the tail\n    //   pointer are new parts.\n    //\n    // * We always restart back from the top of the algorithm,\n    //   allowing matching and simple updates in place to\n    //   continue...\n    //\n    // * Example below: the head pointers once again match, so\n    //   simply update part 1 and record it in the `newParts`\n    //   array.  Last, advance both head pointers.\n    //\n    //         oldHead v        v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2, 1,  ,  ,  , 6] <- heads matched: update 1\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    and advance both oldHead\n    //                                      & newHead\n    //            newHead ^        ^ newTail\n    //\n    // * As mentioned above, items that were moved as a result of\n    //   being stuck (the final else clause in the code below) are\n    //   marked with null, so we always advance old pointers over\n    //   these so we're comparing the next actual old value on\n    //   either end.\n    //\n    // * Example below: `oldHead` is null (already placed in\n    //   newParts), so advance `oldHead`.\n    //\n    //            oldHead v     v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6] <- old head already used:\n    //   newParts: [0, 2, 1,  ,  ,  , 6]    advance oldHead\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]\n    //               newHead ^     ^ newTail\n    //\n    // * Note it's not critical to mark old parts as null when they\n    //   are moved from head to tail or tail to head, since they\n    //   will be outside the pointer range and never visited again.\n    //\n    // * Example below: Here the old tail key matches the new head\n    //   key, so the part at the `oldTail` position and move its\n    //   DOM to the new head position (before `oldParts[oldHead]`).\n    //   Last, advance `oldTail` and `newHead` pointers.\n    //\n    //               oldHead v  v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2, 1, 4,  ,  , 6] <- old tail matches new\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]   head: update & move 4,\n    //                                     advance oldTail & newHead\n    //               newHead ^     ^ newTail\n    //\n    // * Example below: Old and new head keys match, so update the\n    //   old head part in place, and advance the `oldHead` and\n    //   `newHead` pointers.\n    //\n    //               oldHead v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2, 1, 4, 3,   ,6] <- heads match: update 3\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    and advance oldHead &\n    //                                      newHead\n    //                  newHead ^  ^ newTail\n    //\n    // * Once the new or old pointers move past each other then all\n    //   we have left is additions (if old list exhausted) or\n    //   removals (if new list exhausted). Those are handled in the\n    //   final while loops at the end.\n    //\n    // * Example below: `oldHead` exceeded `oldTail`, so we're done\n    //   with the main loop.  Create the remaining part and insert\n    //   it at the new head position, and the update is complete.\n    //\n    //                   (oldHead > oldTail)\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2, 1, 4, 3, 7 ,6] <- create and insert 7\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]\n    //                     newHead ^ newTail\n    //\n    // * Note that the order of the if/else clauses is not\n    //   important to the algorithm, as long as the null checks\n    //   come first (to ensure we're always working on valid old\n    //   parts) and that the final else clause comes last (since\n    //   that's where the expensive moves occur). The order of\n    //   remaining clauses is just a simple guess at which cases\n    //   will be most common.\n    //\n    // * Note, we could calculate the longest\n    //   increasing subsequence (LIS) of old items in new position,\n    //   and only move those not in the LIS set. However that costs\n    //   O(nlogn) time and adds a bit more code, and only helps\n    //   make rare types of mutations require fewer moves. The\n    //   above handles removes, adds, reversal, swaps, and single\n    //   moves of contiguous items in linear time, in the minimum\n    //   number of moves. As the number of multiple moves where LIS\n    //   might help approaches a random shuffle, the LIS\n    //   optimization becomes less helpful, so it seems not worth\n    //   the code at this point. Could reconsider if a compelling\n    //   case arises.\n\n    while (oldHead <= oldTail && newHead <= newTail) {\n      if (oldParts[oldHead] === null) {\n        // `null` means old part at head has already been used\n        // below; skip\n        oldHead++;\n      } else if (oldParts[oldTail] === null) {\n        // `null` means old part at tail has already been used\n        // below; skip\n        oldTail--;\n      } else if (oldKeys[oldHead] === newKeys[newHead]) {\n        // Old head matches new head; update in place\n        newParts[newHead] = setChildPartValue(\n          oldParts[oldHead]!,\n          newValues[newHead]\n        );\n        oldHead++;\n        newHead++;\n      } else if (oldKeys[oldTail] === newKeys[newTail]) {\n        // Old tail matches new tail; update in place\n        newParts[newTail] = setChildPartValue(\n          oldParts[oldTail]!,\n          newValues[newTail]\n        );\n        oldTail--;\n        newTail--;\n      } else if (oldKeys[oldHead] === newKeys[newTail]) {\n        // Old head matches new tail; update and move to new tail\n        newParts[newTail] = setChildPartValue(\n          oldParts[oldHead]!,\n          newValues[newTail]\n        );\n        insertPart(containerPart, newParts[newTail + 1], oldParts[oldHead]!);\n        oldHead++;\n        newTail--;\n      } else if (oldKeys[oldTail] === newKeys[newHead]) {\n        // Old tail matches new head; update and move to new head\n        newParts[newHead] = setChildPartValue(\n          oldParts[oldTail]!,\n          newValues[newHead]\n        );\n        insertPart(containerPart, oldParts[oldHead]!, oldParts[oldTail]!);\n        oldTail--;\n        newHead++;\n      } else {\n        if (newKeyToIndexMap === undefined) {\n          // Lazily generate key-to-index maps, used for removals &\n          // moves below\n          newKeyToIndexMap = generateMap(newKeys, newHead, newTail);\n          oldKeyToIndexMap = generateMap(oldKeys, oldHead, oldTail);\n        }\n        if (!newKeyToIndexMap.has(oldKeys[oldHead])) {\n          // Old head is no longer in new list; remove\n          removePart(oldParts[oldHead]!);\n          oldHead++;\n        } else if (!newKeyToIndexMap.has(oldKeys[oldTail])) {\n          // Old tail is no longer in new list; remove\n          removePart(oldParts[oldTail]!);\n          oldTail--;\n        } else {\n          // Any mismatches at this point are due to additions or\n          // moves; see if we have an old part we can reuse and move\n          // into place\n          const oldIndex = oldKeyToIndexMap.get(newKeys[newHead]);\n          const oldPart = oldIndex !== undefined ? oldParts[oldIndex] : null;\n          if (oldPart === null) {\n            // No old part for this value; create a new one and\n            // insert it\n            const newPart = insertPart(containerPart, oldParts[oldHead]!);\n            setChildPartValue(newPart, newValues[newHead]);\n            newParts[newHead] = newPart;\n          } else {\n            // Reuse old part\n            newParts[newHead] = setChildPartValue(oldPart, newValues[newHead]);\n            insertPart(containerPart, oldParts[oldHead]!, oldPart);\n            // This marks the old part as having been used, so that\n            // it will be skipped in the first two checks above\n            oldParts[oldIndex as number] = null;\n          }\n          newHead++;\n        }\n      }\n    }\n    // Add parts for any remaining new values\n    while (newHead <= newTail) {\n      // For all remaining additions, we insert before last new\n      // tail, since old pointers are no longer valid\n      const newPart = insertPart(containerPart, newParts[newTail + 1]);\n      setChildPartValue(newPart, newValues[newHead]);\n      newParts[newHead++] = newPart;\n    }\n    // Remove any remaining unused old parts\n    while (oldHead <= oldTail) {\n      const oldPart = oldParts[oldHead++];\n      if (oldPart !== null) {\n        removePart(oldPart);\n      }\n    }\n\n    // Save order of new parts for next round\n    this._itemKeys = newKeys;\n    // Directly set part value, bypassing it's dirty-checking\n    setCommittedValue(containerPart, newParts);\n    return noChange;\n  }\n}\n\nexport interface RepeatDirectiveFn {\n  <T>(\n    items: Iterable<T>,\n    keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n    template?: ItemTemplate<T>\n  ): unknown;\n  <T>(items: Iterable<T>, template: ItemTemplate<T>): unknown;\n  <T>(\n    items: Iterable<T>,\n    keyFn: KeyFn<T> | ItemTemplate<T>,\n    template: ItemTemplate<T>\n  ): unknown;\n}\n\n/**\n * A directive that repeats a series of values (usually `TemplateResults`)\n * generated from an iterable, and updates those items efficiently when the\n * iterable changes based on user-provided `keys` associated with each item.\n *\n * Note that if a `keyFn` is provided, strict key-to-DOM mapping is maintained,\n * meaning previous DOM for a given key is moved into the new position if\n * needed, and DOM will never be reused with values for different keys (new DOM\n * will always be created for new keys). This is generally the most efficient\n * way to use `repeat` since it performs minimum unnecessary work for insertions\n * and removals.\n *\n * The `keyFn` takes two parameters, the item and its index, and returns a unique key value.\n *\n * ```js\n * html`\n *   <ol>\n *     ${repeat(this.items, (item) => item.id, (item, index) => {\n *       return html`<li>${index}: ${item.name}</li>`;\n *     })}\n *   </ol>\n * `\n * ```\n *\n * **Important**: If providing a `keyFn`, keys *must* be unique for all items in a\n * given call to `repeat`. The behavior when two or more items have the same key\n * is undefined.\n *\n * If no `keyFn` is provided, this directive will perform similar to mapping\n * items to values, and DOM will be reused against potentially different items.\n */\nexport const repeat = directive(RepeatDirective) as RepeatDirectiveFn;\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {RepeatDirective};\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {nothing} from '../lit-html.js';\nimport {\n  directive,\n  Directive,\n  ChildPart,\n  DirectiveParameters,\n  DirectiveResult,\n} from '../directive.js';\nimport {setCommittedValue} from '../directive-helpers.js';\n\nclass Keyed<T> extends Directive {\n  key: unknown = nothing;\n\n  render(k: unknown, v: T): T {\n    this.key = k;\n    return v;\n  }\n\n  override update(part: ChildPart, [k, v]: DirectiveParameters<this>) {\n    if (k !== this.key) {\n      // Clear the part before returning a value. The one-arg form of\n      // setCommittedValue sets the value to a sentinel which forces a\n      // commit the next render.\n      setCommittedValue(part);\n      this.key = k;\n    }\n    return v;\n  }\n}\n\ninterface KeyedFunc {\n  <V>(k: unknown, v: V): DirectiveResult<typeof Keyed<V>>;\n}\n\n/**\n * Associates a renderable value with a unique key. When the key changes, the\n * previous DOM is removed and disposed before rendering the next value, even\n * if the value - such as a template - is the same.\n *\n * This is useful for forcing re-renders of stateful components, or working\n * with code that expects new data to generate new HTML elements, such as some\n * animation techniques.\n */\nexport const keyed: KeyedFunc = directive(Keyed);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {Keyed};\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nconst NODE_MODE = false;\n\n// Allows minifiers to rename references to globalThis\nconst global = globalThis;\n\n/**\n * Whether the current browser supports `adoptedStyleSheets`.\n */\nexport const supportsAdoptingStyleSheets: boolean =\n  global.ShadowRoot &&\n  (global.ShadyCSS === undefined || global.ShadyCSS.nativeShadow) &&\n  'adoptedStyleSheets' in Document.prototype &&\n  'replace' in CSSStyleSheet.prototype;\n\n/**\n * A CSSResult or native CSSStyleSheet.\n *\n * In browsers that support constructible CSS style sheets, CSSStyleSheet\n * object can be used for styling along side CSSResult from the `css`\n * template tag.\n */\nexport type CSSResultOrNative = CSSResult | CSSStyleSheet;\n\nexport type CSSResultArray = Array<CSSResultOrNative | CSSResultArray>;\n\n/**\n * A single CSSResult, CSSStyleSheet, or an array or nested arrays of those.\n */\nexport type CSSResultGroup = CSSResultOrNative | CSSResultArray;\n\nconst constructionToken = Symbol();\n\nconst cssTagCache = new WeakMap<TemplateStringsArray, CSSStyleSheet>();\n\n/**\n * A container for a string of CSS text, that may be used to create a CSSStyleSheet.\n *\n * CSSResult is the return value of `css`-tagged template literals and\n * `unsafeCSS()`. In order to ensure that CSSResults are only created via the\n * `css` tag and `unsafeCSS()`, CSSResult cannot be constructed directly.\n */\nexport class CSSResult {\n  // This property needs to remain unminified.\n  ['_$cssResult$'] = true;\n  readonly cssText: string;\n  private _styleSheet?: CSSStyleSheet;\n  private _strings: TemplateStringsArray | undefined;\n\n  private constructor(\n    cssText: string,\n    strings: TemplateStringsArray | undefined,\n    safeToken: symbol\n  ) {\n    if (safeToken !== constructionToken) {\n      throw new Error(\n        'CSSResult is not constructable. Use `unsafeCSS` or `css` instead.'\n      );\n    }\n    this.cssText = cssText;\n    this._strings = strings;\n  }\n\n  // This is a getter so that it's lazy. In practice, this means stylesheets\n  // are not created until the first element instance is made.\n  get styleSheet(): CSSStyleSheet | undefined {\n    // If `supportsAdoptingStyleSheets` is true then we assume CSSStyleSheet is\n    // constructable.\n    let styleSheet = this._styleSheet;\n    const strings = this._strings;\n    if (supportsAdoptingStyleSheets && styleSheet === undefined) {\n      const cacheable = strings !== undefined && strings.length === 1;\n      if (cacheable) {\n        styleSheet = cssTagCache.get(strings);\n      }\n      if (styleSheet === undefined) {\n        (this._styleSheet = styleSheet = new CSSStyleSheet()).replaceSync(\n          this.cssText\n        );\n        if (cacheable) {\n          cssTagCache.set(strings, styleSheet);\n        }\n      }\n    }\n    return styleSheet;\n  }\n\n  toString(): string {\n    return this.cssText;\n  }\n}\n\ntype ConstructableCSSResult = CSSResult & {\n  new (\n    cssText: string,\n    strings: TemplateStringsArray | undefined,\n    safeToken: symbol\n  ): CSSResult;\n};\n\nconst textFromCSSResult = (value: CSSResultGroup | number) => {\n  // This property needs to remain unminified.\n  if ((value as CSSResult)['_$cssResult$'] === true) {\n    return (value as CSSResult).cssText;\n  } else if (typeof value === 'number') {\n    return value;\n  } else {\n    throw new Error(\n      `Value passed to 'css' function must be a 'css' function result: ` +\n        `${value}. Use 'unsafeCSS' to pass non-literal values, but take care ` +\n        `to ensure page security.`\n    );\n  }\n};\n\n/**\n * Wrap a value for interpolation in a {@linkcode css} tagged template literal.\n *\n * This is unsafe because untrusted CSS text can be used to phone home\n * or exfiltrate data to an attacker controlled site. Take care to only use\n * this with trusted input.\n */\nexport const unsafeCSS = (value: unknown) =>\n  new (CSSResult as ConstructableCSSResult)(\n    typeof value === 'string' ? value : String(value),\n    undefined,\n    constructionToken\n  );\n\n/**\n * A template literal tag which can be used with LitElement's\n * {@linkcode LitElement.styles} property to set element styles.\n *\n * For security reasons, only literal string values and number may be used in\n * embedded expressions. To incorporate non-literal values {@linkcode unsafeCSS}\n * may be used inside an expression.\n */\nexport const css = (\n  strings: TemplateStringsArray,\n  ...values: (CSSResultGroup | number)[]\n): CSSResult => {\n  const cssText =\n    strings.length === 1\n      ? strings[0]\n      : values.reduce(\n          (acc, v, idx) => acc + textFromCSSResult(v) + strings[idx + 1],\n          strings[0]\n        );\n  return new (CSSResult as ConstructableCSSResult)(\n    cssText,\n    strings,\n    constructionToken\n  );\n};\n\n/**\n * Applies the given styles to a `shadowRoot`. When Shadow DOM is\n * available but `adoptedStyleSheets` is not, styles are appended to the\n * `shadowRoot` to [mimic the native feature](https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot/adoptedStyleSheets).\n * Note, when shimming is used, any styles that are subsequently placed into\n * the shadowRoot should be placed *before* any shimmed adopted styles. This\n * will match spec behavior that gives adopted sheets precedence over styles in\n * shadowRoot.\n */\nexport const adoptStyles = (\n  renderRoot: ShadowRoot,\n  styles: Array<CSSResultOrNative>\n) => {\n  if (supportsAdoptingStyleSheets) {\n    (renderRoot as ShadowRoot).adoptedStyleSheets = styles.map((s) =>\n      s instanceof CSSStyleSheet ? s : s.styleSheet!\n    );\n  } else {\n    for (const s of styles) {\n      const style = document.createElement('style');\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      const nonce = (global as any)['litNonce'];\n      if (nonce !== undefined) {\n        style.setAttribute('nonce', nonce);\n      }\n      style.textContent = (s as CSSResult).cssText;\n      renderRoot.appendChild(style);\n    }\n  }\n};\n\nconst cssResultFromStyleSheet = (sheet: CSSStyleSheet) => {\n  let cssText = '';\n  for (const rule of sheet.cssRules) {\n    cssText += rule.cssText;\n  }\n  return unsafeCSS(cssText);\n};\n\nexport const getCompatibleStyle =\n  supportsAdoptingStyleSheets ||\n  (NODE_MODE && global.CSSStyleSheet === undefined)\n    ? (s: CSSResultOrNative) => s\n    : (s: CSSResultOrNative) =>\n        s instanceof CSSStyleSheet ? cssResultFromStyleSheet(s) : s;\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Use this module if you want to create your own base class extending\n * {@link ReactiveElement}.\n * @packageDocumentation\n */\n\nimport {\n  getCompatibleStyle,\n  adoptStyles,\n  CSSResultGroup,\n  CSSResultOrNative,\n} from './css-tag.js';\nimport type {\n  ReactiveController,\n  ReactiveControllerHost,\n} from './reactive-controller.js';\n\n// In the Node build, this import will be injected by Rollup:\n// import {HTMLElement, customElements} from '@lit-labs/ssr-dom-shim';\n\nexport * from './css-tag.js';\nexport type {\n  ReactiveController,\n  ReactiveControllerHost,\n} from './reactive-controller.js';\n\n/**\n * Removes the `readonly` modifier from properties in the union K.\n *\n * This is a safer way to cast a value to a type with a mutable version of a\n * readonly field, than casting to an interface with the field re-declared\n * because it preserves the type of all the fields and warns on typos.\n */\ntype Mutable<T, K extends keyof T> = Omit<T, K> & {\n  -readonly [P in keyof Pick<T, K>]: P extends K ? T[P] : never;\n};\n\n// TODO (justinfagnani): Add `hasOwn` here when we ship ES2022\nconst {\n  is,\n  defineProperty,\n  getOwnPropertyDescriptor,\n  getOwnPropertyNames,\n  getOwnPropertySymbols,\n  getPrototypeOf,\n} = Object;\n\nconst NODE_MODE = false;\n\n// Lets a minifier replace globalThis references with a minified name\nconst global = globalThis;\n\nif (NODE_MODE) {\n  global.customElements ??= customElements;\n}\n\nconst DEV_MODE = true;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nconst trustedTypes = (global as unknown as {trustedTypes?: {emptyScript: ''}})\n  .trustedTypes;\n\n// Temporary workaround for https://crbug.com/993268\n// Currently, any attribute starting with \"on\" is considered to be a\n// TrustedScript source. Such boolean attributes must be set to the equivalent\n// trusted emptyScript value.\nconst emptyStringForBooleanAttribute = trustedTypes\n  ? (trustedTypes.emptyScript as unknown as '')\n  : '';\n\nconst polyfillSupport = DEV_MODE\n  ? global.reactiveElementPolyfillSupportDevMode\n  : global.reactiveElementPolyfillSupport;\n\nif (DEV_MODE) {\n  // Ensure warnings are issued only 1x, even if multiple versions of Lit\n  // are loaded.\n  global.litIssuedWarnings ??= new Set();\n\n  /**\n   * Issue a warning if we haven't already, based either on `code` or `warning`.\n   * Warnings are disabled automatically only by `warning`; disabling via `code`\n   * can be done by users.\n   */\n  issueWarning = (code: string, warning: string) => {\n    warning += ` See https://lit.dev/msg/${code} for more information.`;\n    if (\n      !global.litIssuedWarnings!.has(warning) &&\n      !global.litIssuedWarnings!.has(code)\n    ) {\n      console.warn(warning);\n      global.litIssuedWarnings!.add(warning);\n    }\n  };\n\n  queueMicrotask(() => {\n    issueWarning(\n      'dev-mode',\n      `Lit is in dev mode. Not recommended for production!`\n    );\n\n    // Issue polyfill support warning.\n    if (global.ShadyDOM?.inUse && polyfillSupport === undefined) {\n      issueWarning(\n        'polyfill-support-missing',\n        `Shadow DOM is being polyfilled via \\`ShadyDOM\\` but ` +\n          `the \\`polyfill-support\\` module has not been loaded.`\n      );\n    }\n  });\n}\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ReactiveUnstable {\n  /**\n   * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n   * we will emit 'lit-debug' events to window, with live details about the update and render\n   * lifecycle. These can be useful for writing debug tooling and visualizations.\n   *\n   * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n   * making certain operations that are normally very cheap (like a no-op render) much slower,\n   * because we must copy data and dispatch events.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-namespace\n  export namespace DebugLog {\n    export type Entry = Update;\n    export interface Update {\n      kind: 'update';\n    }\n  }\n}\n\ninterface DebugLoggingWindow {\n  // Even in dev mode, we generally don't want to emit these events, as that's\n  // another level of cost, so only emit them when DEV_MODE is true _and_ when\n  // window.emitLitDebugEvents is true.\n  emitLitDebugLogEvents?: boolean;\n}\n\n/**\n * Useful for visualizing and logging insights into what the Lit template system is doing.\n *\n * Compiled out of prod mode builds.\n */\nconst debugLogEvent = DEV_MODE\n  ? (event: ReactiveUnstable.DebugLog.Entry) => {\n      const shouldEmit = (global as unknown as DebugLoggingWindow)\n        .emitLitDebugLogEvents;\n      if (!shouldEmit) {\n        return;\n      }\n      global.dispatchEvent(\n        new CustomEvent<ReactiveUnstable.DebugLog.Entry>('lit-debug', {\n          detail: event,\n        })\n      );\n    }\n  : undefined;\n\n/*\n * When using Closure Compiler, JSCompiler_renameProperty(property, object) is\n * replaced at compile time by the munged name for object[property]. We cannot\n * alias this function, so we have to use a small shim that has the same\n * behavior when not compiling.\n */\n/*@__INLINE__*/\nconst JSCompiler_renameProperty = <P extends PropertyKey>(\n  prop: P,\n  _obj: unknown\n): P => prop;\n\n/**\n * Converts property values to and from attribute values.\n */\nexport interface ComplexAttributeConverter<Type = unknown, TypeHint = unknown> {\n  /**\n   * Called to convert an attribute value to a property\n   * value.\n   */\n  fromAttribute?(value: string | null, type?: TypeHint): Type;\n\n  /**\n   * Called to convert a property value to an attribute\n   * value.\n   *\n   * It returns unknown instead of string, to be compatible with\n   * https://github.com/WICG/trusted-types (and similar efforts).\n   */\n  toAttribute?(value: Type, type?: TypeHint): unknown;\n}\n\ntype AttributeConverter<Type = unknown, TypeHint = unknown> =\n  | ComplexAttributeConverter<Type>\n  | ((value: string | null, type?: TypeHint) => Type);\n\n/**\n * Defines options for a property accessor.\n */\nexport interface PropertyDeclaration<Type = unknown, TypeHint = unknown> {\n  /**\n   * When set to `true`, indicates the property is internal private state. The\n   * property should not be set by users. When using TypeScript, this property\n   * should be marked as `private` or `protected`, and it is also a common\n   * practice to use a leading `_` in the name. The property is not added to\n   * `observedAttributes`.\n   */\n  readonly state?: boolean;\n\n  /**\n   * Indicates how and whether the property becomes an observed attribute.\n   * If the value is `false`, the property is not added to `observedAttributes`.\n   * If true or absent, the lowercased property name is observed (e.g. `fooBar`\n   * becomes `foobar`). If a string, the string value is observed (e.g\n   * `attribute: 'foo-bar'`).\n   */\n  readonly attribute?: boolean | string;\n\n  /**\n   * Indicates the type of the property. This is used only as a hint for the\n   * `converter` to determine how to convert the attribute\n   * to/from a property.\n   */\n  readonly type?: TypeHint;\n\n  /**\n   * Indicates how to convert the attribute to/from a property. If this value\n   * is a function, it is used to convert the attribute value a the property\n   * value. If it's an object, it can have keys for `fromAttribute` and\n   * `toAttribute`. If no `toAttribute` function is provided and\n   * `reflect` is set to `true`, the property value is set directly to the\n   * attribute. A default `converter` is used if none is provided; it supports\n   * `Boolean`, `String`, `Number`, `Object`, and `Array`. Note,\n   * when a property changes and the converter is used to update the attribute,\n   * the property is never updated again as a result of the attribute changing,\n   * and vice versa.\n   */\n  readonly converter?: AttributeConverter<Type, TypeHint>;\n\n  /**\n   * Indicates if the property should reflect to an attribute.\n   * If `true`, when the property is set, the attribute is set using the\n   * attribute name determined according to the rules for the `attribute`\n   * property option and the value of the property converted using the rules\n   * from the `converter` property option.\n   */\n  readonly reflect?: boolean;\n\n  /**\n   * A function that indicates if a property should be considered changed when\n   * it is set. The function should take the `newValue` and `oldValue` and\n   * return `true` if an update should be requested.\n   */\n  hasChanged?(value: Type, oldValue: Type): boolean;\n\n  /**\n   * Indicates whether an accessor will be created for this property. By\n   * default, an accessor will be generated for this property that requests an\n   * update when set. If this flag is `true`, no accessor will be created, and\n   * it will be the user's responsibility to call\n   * `this.requestUpdate(propertyName, oldValue)` to request an update when\n   * the property changes.\n   */\n  readonly noAccessor?: boolean;\n\n  /**\n   * Whether this property is wrapping accessors. This is set by `@property`\n   * to control the initial value change and reflection logic.\n   *\n   * @internal\n   */\n  wrapped?: boolean;\n\n  /**\n   * When `true`, uses the initial value of the property as the default value,\n   * which changes how attributes are handled:\n   *  - The initial value does *not* reflect, even if the `reflect` option is `true`.\n   *    Subsequent changes to the property will reflect, even if they are equal to the\n   *     default value.\n   *  - When the attribute is removed, the property is set to the default value\n   *  - The initial value will not trigger an old value in the `changedProperties` map\n   *    argument to update lifecycle methods.\n   *\n   * When set, properties must be initialized, either with a field initializer, or an\n   * assignment in the constructor. Not initializing the property may lead to\n   * improper handling of subsequent property assignments.\n   *\n   * While this behavior is opt-in, most properties that reflect to attributes should\n   * use `useDefault: true` so that their initial values do not reflect.\n   */\n  useDefault?: boolean;\n}\n\n/**\n * Map of properties to PropertyDeclaration options. For each property an\n * accessor is made, and the property is processed according to the\n * PropertyDeclaration options.\n */\nexport interface PropertyDeclarations {\n  readonly [key: string]: PropertyDeclaration;\n}\n\ntype PropertyDeclarationMap = Map<PropertyKey, PropertyDeclaration>;\n\ntype AttributeMap = Map<string, PropertyKey>;\n\n/**\n * A Map of property keys to values.\n *\n * Takes an optional type parameter T, which when specified as a non-any,\n * non-unknown type, will make the Map more strongly-typed, associating the map\n * keys with their corresponding value type on T.\n *\n * Use `PropertyValues<this>` when overriding ReactiveElement.update() and\n * other lifecycle methods in order to get stronger type-checking on keys\n * and values.\n */\n// This type is conditional so that if the parameter T is not specified, or\n// is `any`, the type will include `Map<PropertyKey, unknown>`. Since T is not\n// given in the uses of PropertyValues in this file, all uses here fallback to\n// meaning `Map<PropertyKey, unknown>`, but if a developer uses\n// `PropertyValues<this>` (or any other value for T) they will get a\n// strongly-typed Map type.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type PropertyValues<T = any> = T extends object\n  ? PropertyValueMap<T>\n  : Map<PropertyKey, unknown>;\n\n/**\n * Do not use, instead prefer {@linkcode PropertyValues}.\n */\n// This type must be exported such that JavaScript generated by the Google\n// Closure Compiler can import a type reference.\nexport interface PropertyValueMap<T> extends Map<PropertyKey, unknown> {\n  get<K extends keyof T>(k: K): T[K] | undefined;\n  set<K extends keyof T>(key: K, value: T[K]): this;\n  has<K extends keyof T>(k: K): boolean;\n  delete<K extends keyof T>(k: K): boolean;\n}\n\nexport const defaultConverter: ComplexAttributeConverter = {\n  toAttribute(value: unknown, type?: unknown): unknown {\n    switch (type) {\n      case Boolean:\n        value = value ? emptyStringForBooleanAttribute : null;\n        break;\n      case Object:\n      case Array:\n        // if the value is `null` or `undefined` pass this through\n        // to allow removing/no change behavior.\n        value = value == null ? value : JSON.stringify(value);\n        break;\n    }\n    return value;\n  },\n\n  fromAttribute(value: string | null, type?: unknown) {\n    let fromValue: unknown = value;\n    switch (type) {\n      case Boolean:\n        fromValue = value !== null;\n        break;\n      case Number:\n        fromValue = value === null ? null : Number(value);\n        break;\n      case Object:\n      case Array:\n        // Do *not* generate exception when invalid JSON is set as elements\n        // don't normally complain on being mis-configured.\n        // TODO(sorvell): Do generate exception in *dev mode*.\n        try {\n          // Assert to adhere to Bazel's \"must type assert JSON parse\" rule.\n          fromValue = JSON.parse(value!) as unknown;\n        } catch (e) {\n          fromValue = null;\n        }\n        break;\n    }\n    return fromValue;\n  },\n};\n\nexport interface HasChanged {\n  (value: unknown, old: unknown): boolean;\n}\n\n/**\n * Change function that returns true if `value` is different from `oldValue`.\n * This method is used as the default for a property's `hasChanged` function.\n */\nexport const notEqual: HasChanged = (value: unknown, old: unknown): boolean =>\n  !is(value, old);\n\nconst defaultPropertyDeclaration: PropertyDeclaration = {\n  attribute: true,\n  type: String,\n  converter: defaultConverter,\n  reflect: false,\n  useDefault: false,\n  hasChanged: notEqual,\n};\n\n/**\n * A string representing one of the supported dev mode warning categories.\n */\nexport type WarningKind =\n  | 'change-in-update'\n  | 'migration'\n  | 'async-perform-update';\n\nexport type Initializer = (element: ReactiveElement) => void;\n\n// Temporary, until google3 is on TypeScript 5.2\ndeclare global {\n  interface SymbolConstructor {\n    readonly metadata: unique symbol;\n  }\n}\n\n// Ensure metadata is enabled. TypeScript does not polyfill\n// Symbol.metadata, so we must ensure that it exists.\n(Symbol as {metadata: symbol}).metadata ??= Symbol('metadata');\n\ndeclare global {\n  // This is public global API, do not change!\n  // eslint-disable-next-line no-var\n  var litPropertyMetadata: WeakMap<\n    object,\n    Map<PropertyKey, PropertyDeclaration>\n  >;\n}\n\n// Map from a class's metadata object to property options\n// Note that we must use nullish-coalescing assignment so that we only use one\n// map even if we load multiple version of this module.\nglobal.litPropertyMetadata ??= new WeakMap<\n  object,\n  Map<PropertyKey, PropertyDeclaration>\n>();\n\n/**\n * Base element class which manages element properties and attributes. When\n * properties change, the `update` method is asynchronously called. This method\n * should be supplied by subclasses to render updates as desired.\n * @noInheritDoc\n */\nexport abstract class ReactiveElement\n  // In the Node build, this `extends` clause will be substituted with\n  // `(globalThis.HTMLElement ?? HTMLElement)`.\n  //\n  // This way, we will first prefer any global `HTMLElement` polyfill that the\n  // user has assigned, and then fall back to the `HTMLElement` shim which has\n  // been imported (see note at the top of this file about how this import is\n  // generated by Rollup). Note that the `HTMLElement` variable has been\n  // shadowed by this import, so it no longer refers to the global.\n  extends HTMLElement\n  implements ReactiveControllerHost\n{\n  // Note: these are patched in only in DEV_MODE.\n  /**\n   * Read or set all the enabled warning categories for this class.\n   *\n   * This property is only used in development builds.\n   *\n   * @nocollapse\n   * @category dev-mode\n   */\n  static enabledWarnings?: WarningKind[];\n\n  /**\n   * Enable the given warning category for this class.\n   *\n   * This method only exists in development builds, so it should be accessed\n   * with a guard like:\n   *\n   * ```ts\n   * // Enable for all ReactiveElement subclasses\n   * ReactiveElement.enableWarning?.('migration');\n   *\n   * // Enable for only MyElement and subclasses\n   * MyElement.enableWarning?.('migration');\n   * ```\n   *\n   * @nocollapse\n   * @category dev-mode\n   */\n  static enableWarning?: (warningKind: WarningKind) => void;\n\n  /**\n   * Disable the given warning category for this class.\n   *\n   * This method only exists in development builds, so it should be accessed\n   * with a guard like:\n   *\n   * ```ts\n   * // Disable for all ReactiveElement subclasses\n   * ReactiveElement.disableWarning?.('migration');\n   *\n   * // Disable for only MyElement and subclasses\n   * MyElement.disableWarning?.('migration');\n   * ```\n   *\n   * @nocollapse\n   * @category dev-mode\n   */\n  static disableWarning?: (warningKind: WarningKind) => void;\n\n  /**\n   * Adds an initializer function to the class that is called during instance\n   * construction.\n   *\n   * This is useful for code that runs against a `ReactiveElement`\n   * subclass, such as a decorator, that needs to do work for each\n   * instance, such as setting up a `ReactiveController`.\n   *\n   * ```ts\n   * const myDecorator = (target: typeof ReactiveElement, key: string) => {\n   *   target.addInitializer((instance: ReactiveElement) => {\n   *     // This is run during construction of the element\n   *     new MyController(instance);\n   *   });\n   * }\n   * ```\n   *\n   * Decorating a field will then cause each instance to run an initializer\n   * that adds a controller:\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   @myDecorator foo;\n   * }\n   * ```\n   *\n   * Initializers are stored per-constructor. Adding an initializer to a\n   * subclass does not add it to a superclass. Since initializers are run in\n   * constructors, initializers will run in order of the class hierarchy,\n   * starting with superclasses and progressing to the instance's class.\n   *\n   * @nocollapse\n   */\n  static addInitializer(initializer: Initializer) {\n    this.__prepare();\n    (this._initializers ??= []).push(initializer);\n  }\n\n  static _initializers?: Initializer[];\n\n  /*\n   * Due to closure compiler ES6 compilation bugs, @nocollapse is required on\n   * all static methods and properties with initializers.  Reference:\n   * - https://github.com/google/closure-compiler/issues/1776\n   */\n\n  /**\n   * Maps attribute names to properties; for example `foobar` attribute to\n   * `fooBar` property. Created lazily on user subclasses when finalizing the\n   * class.\n   * @nocollapse\n   */\n  private static __attributeToPropertyMap: AttributeMap;\n\n  /**\n   * Marks class as having been finalized, which includes creating properties\n   * from `static properties`, but does *not* include all properties created\n   * from decorators.\n   * @nocollapse\n   */\n  protected static finalized: true | undefined;\n\n  /**\n   * Memoized list of all element properties, including any superclass\n   * properties. Created lazily on user subclasses when finalizing the class.\n   *\n   * @nocollapse\n   * @category properties\n   */\n  static elementProperties: PropertyDeclarationMap;\n\n  /**\n   * User-supplied object that maps property names to `PropertyDeclaration`\n   * objects containing options for configuring reactive properties. When\n   * a reactive property is set the element will update and render.\n   *\n   * By default properties are public fields, and as such, they should be\n   * considered as primarily settable by element users, either via attribute or\n   * the property itself.\n   *\n   * Generally, properties that are changed by the element should be private or\n   * protected fields and should use the `state: true` option. Properties\n   * marked as `state` do not reflect from the corresponding attribute\n   *\n   * However, sometimes element code does need to set a public property. This\n   * should typically only be done in response to user interaction, and an event\n   * should be fired informing the user; for example, a checkbox sets its\n   * `checked` property when clicked and fires a `changed` event. Mutating\n   * public properties should typically not be done for non-primitive (object or\n   * array) properties. In other cases when an element needs to manage state, a\n   * private property set with the `state: true` option should be used. When\n   * needed, state properties can be initialized via public properties to\n   * facilitate complex interactions.\n   * @nocollapse\n   * @category properties\n   */\n  static properties: PropertyDeclarations;\n\n  /**\n   * Memoized list of all element styles.\n   * Created lazily on user subclasses when finalizing the class.\n   * @nocollapse\n   * @category styles\n   */\n  static elementStyles: Array<CSSResultOrNative> = [];\n\n  /**\n   * Array of styles to apply to the element. The styles should be defined\n   * using the {@linkcode css} tag function, via constructible stylesheets, or\n   * imported from native CSS module scripts.\n   *\n   * Note on Content Security Policy:\n   *\n   * Element styles are implemented with `<style>` tags when the browser doesn't\n   * support adopted StyleSheets. To use such `<style>` tags with the style-src\n   * CSP directive, the style-src value must either include 'unsafe-inline' or\n   * `nonce-<base64-value>` with `<base64-value>` replaced be a server-generated\n   * nonce.\n   *\n   * To provide a nonce to use on generated `<style>` elements, set\n   * `window.litNonce` to a server-generated nonce in your page's HTML, before\n   * loading application code:\n   *\n   * ```html\n   * <script>\n   *   // Generated and unique per request:\n   *   window.litNonce = 'a1b2c3d4';\n   * </script>\n   * ```\n   * @nocollapse\n   * @category styles\n   */\n  static styles?: CSSResultGroup;\n\n  /**\n   * Returns a list of attributes corresponding to the registered properties.\n   * @nocollapse\n   * @category attributes\n   */\n  static get observedAttributes() {\n    // Ensure we've created all properties\n    this.finalize();\n    // this.__attributeToPropertyMap is only undefined after finalize() in\n    // ReactiveElement itself. ReactiveElement.observedAttributes is only\n    // accessed with ReactiveElement as the receiver when a subclass or mixin\n    // calls super.observedAttributes\n    return (\n      this.__attributeToPropertyMap && [...this.__attributeToPropertyMap.keys()]\n    );\n  }\n\n  private __instanceProperties?: PropertyValues = undefined;\n\n  /**\n   * Creates a property accessor on the element prototype if one does not exist\n   * and stores a {@linkcode PropertyDeclaration} for the property with the\n   * given options. The property setter calls the property's `hasChanged`\n   * property option or uses a strict identity check to determine whether or not\n   * to request an update.\n   *\n   * This method may be overridden to customize properties; however,\n   * when doing so, it's important to call `super.createProperty` to ensure\n   * the property is setup correctly. This method calls\n   * `getPropertyDescriptor` internally to get a descriptor to install.\n   * To customize what properties do when they are get or set, override\n   * `getPropertyDescriptor`. To customize the options for a property,\n   * implement `createProperty` like this:\n   *\n   * ```ts\n   * static createProperty(name, options) {\n   *   options = Object.assign(options, {myOption: true});\n   *   super.createProperty(name, options);\n   * }\n   * ```\n   *\n   * @nocollapse\n   * @category properties\n   */\n  static createProperty(\n    name: PropertyKey,\n    options: PropertyDeclaration = defaultPropertyDeclaration\n  ) {\n    // If this is a state property, force the attribute to false.\n    if (options.state) {\n      (options as Mutable<PropertyDeclaration, 'attribute'>).attribute = false;\n    }\n    this.__prepare();\n    // Whether this property is wrapping accessors.\n    // Helps control the initial value change and reflection logic.\n    if (this.prototype.hasOwnProperty(name)) {\n      options = Object.create(options);\n      options.wrapped = true;\n    }\n    this.elementProperties.set(name, options);\n    if (!options.noAccessor) {\n      const key = DEV_MODE\n        ? // Use Symbol.for in dev mode to make it easier to maintain state\n          // when doing HMR.\n          Symbol.for(`${String(name)} (@property() cache)`)\n        : Symbol();\n      const descriptor = this.getPropertyDescriptor(name, key, options);\n      if (descriptor !== undefined) {\n        defineProperty(this.prototype, name, descriptor);\n      }\n    }\n  }\n\n  /**\n   * Returns a property descriptor to be defined on the given named property.\n   * If no descriptor is returned, the property will not become an accessor.\n   * For example,\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   static getPropertyDescriptor(name, key, options) {\n   *     const defaultDescriptor =\n   *         super.getPropertyDescriptor(name, key, options);\n   *     const setter = defaultDescriptor.set;\n   *     return {\n   *       get: defaultDescriptor.get,\n   *       set(value) {\n   *         setter.call(this, value);\n   *         // custom action.\n   *       },\n   *       configurable: true,\n   *       enumerable: true\n   *     }\n   *   }\n   * }\n   * ```\n   *\n   * @nocollapse\n   * @category properties\n   */\n  protected static getPropertyDescriptor(\n    name: PropertyKey,\n    key: string | symbol,\n    options: PropertyDeclaration\n  ): PropertyDescriptor | undefined {\n    const {get, set} = getOwnPropertyDescriptor(this.prototype, name) ?? {\n      get(this: ReactiveElement) {\n        return this[key as keyof typeof this];\n      },\n      set(this: ReactiveElement, v: unknown) {\n        (this as unknown as Record<string | symbol, unknown>)[key] = v;\n      },\n    };\n    if (DEV_MODE && get == null) {\n      if ('value' in (getOwnPropertyDescriptor(this.prototype, name) ?? {})) {\n        throw new Error(\n          `Field ${JSON.stringify(String(name))} on ` +\n            `${this.name} was declared as a reactive property ` +\n            `but it's actually declared as a value on the prototype. ` +\n            `Usually this is due to using @property or @state on a method.`\n        );\n      }\n      issueWarning(\n        'reactive-property-without-getter',\n        `Field ${JSON.stringify(String(name))} on ` +\n          `${this.name} was declared as a reactive property ` +\n          `but it does not have a getter. This will be an error in a ` +\n          `future version of Lit.`\n      );\n    }\n    return {\n      get,\n      set(this: ReactiveElement, value: unknown) {\n        const oldValue = get?.call(this);\n        set?.call(this, value);\n        this.requestUpdate(name, oldValue, options);\n      },\n      configurable: true,\n      enumerable: true,\n    };\n  }\n\n  /**\n   * Returns the property options associated with the given property.\n   * These options are defined with a `PropertyDeclaration` via the `properties`\n   * object or the `@property` decorator and are registered in\n   * `createProperty(...)`.\n   *\n   * Note, this method should be considered \"final\" and not overridden. To\n   * customize the options for a given property, override\n   * {@linkcode createProperty}.\n   *\n   * @nocollapse\n   * @final\n   * @category properties\n   */\n  static getPropertyOptions(name: PropertyKey) {\n    return this.elementProperties.get(name) ?? defaultPropertyDeclaration;\n  }\n\n  // Temporary, until google3 is on TypeScript 5.2\n  declare static [Symbol.metadata]: object & Record<PropertyKey, unknown>;\n\n  /**\n   * Initializes static own properties of the class used in bookkeeping\n   * for element properties, initializers, etc.\n   *\n   * Can be called multiple times by code that needs to ensure these\n   * properties exist before using them.\n   *\n   * This method ensures the superclass is finalized so that inherited\n   * property metadata can be copied down.\n   * @nocollapse\n   */\n  private static __prepare() {\n    if (\n      this.hasOwnProperty(JSCompiler_renameProperty('elementProperties', this))\n    ) {\n      // Already prepared\n      return;\n    }\n    // Finalize any superclasses\n    const superCtor = getPrototypeOf(this) as typeof ReactiveElement;\n    superCtor.finalize();\n\n    // Create own set of initializers for this class if any exist on the\n    // superclass and copy them down. Note, for a small perf boost, avoid\n    // creating initializers unless needed.\n    if (superCtor._initializers !== undefined) {\n      this._initializers = [...superCtor._initializers];\n    }\n    // Initialize elementProperties from the superclass\n    this.elementProperties = new Map(superCtor.elementProperties);\n  }\n\n  /**\n   * Finishes setting up the class so that it's ready to be registered\n   * as a custom element and instantiated.\n   *\n   * This method is called by the ReactiveElement.observedAttributes getter.\n   * If you override the observedAttributes getter, you must either call\n   * super.observedAttributes to trigger finalization, or call finalize()\n   * yourself.\n   *\n   * @nocollapse\n   */\n  protected static finalize() {\n    if (this.hasOwnProperty(JSCompiler_renameProperty('finalized', this))) {\n      return;\n    }\n    this.finalized = true;\n    this.__prepare();\n\n    // Create properties from the static properties block:\n    if (this.hasOwnProperty(JSCompiler_renameProperty('properties', this))) {\n      const props = this.properties;\n      const propKeys = [\n        ...getOwnPropertyNames(props),\n        ...getOwnPropertySymbols(props),\n      ] as Array<keyof typeof props>;\n      for (const p of propKeys) {\n        this.createProperty(p, props[p]);\n      }\n    }\n\n    // Create properties from standard decorator metadata:\n    const metadata = this[Symbol.metadata];\n    if (metadata !== null) {\n      const properties = litPropertyMetadata.get(metadata);\n      if (properties !== undefined) {\n        for (const [p, options] of properties) {\n          this.elementProperties.set(p, options);\n        }\n      }\n    }\n\n    // Create the attribute-to-property map\n    this.__attributeToPropertyMap = new Map();\n    for (const [p, options] of this.elementProperties) {\n      const attr = this.__attributeNameForProperty(p, options);\n      if (attr !== undefined) {\n        this.__attributeToPropertyMap.set(attr, p);\n      }\n    }\n\n    this.elementStyles = this.finalizeStyles(this.styles);\n\n    if (DEV_MODE) {\n      if (this.hasOwnProperty('createProperty')) {\n        issueWarning(\n          'no-override-create-property',\n          'Overriding ReactiveElement.createProperty() is deprecated. ' +\n            'The override will not be called with standard decorators'\n        );\n      }\n      if (this.hasOwnProperty('getPropertyDescriptor')) {\n        issueWarning(\n          'no-override-get-property-descriptor',\n          'Overriding ReactiveElement.getPropertyDescriptor() is deprecated. ' +\n            'The override will not be called with standard decorators'\n        );\n      }\n    }\n  }\n\n  /**\n   * Options used when calling `attachShadow`. Set this property to customize\n   * the options for the shadowRoot; for example, to create a closed\n   * shadowRoot: `{mode: 'closed'}`.\n   *\n   * Note, these options are used in `createRenderRoot`. If this method\n   * is customized, options should be respected if possible.\n   * @nocollapse\n   * @category rendering\n   */\n  static shadowRootOptions: ShadowRootInit = {mode: 'open'};\n\n  /**\n   * Takes the styles the user supplied via the `static styles` property and\n   * returns the array of styles to apply to the element.\n   * Override this method to integrate into a style management system.\n   *\n   * Styles are deduplicated preserving the _last_ instance in the list. This\n   * is a performance optimization to avoid duplicated styles that can occur\n   * especially when composing via subclassing. The last item is kept to try\n   * to preserve the cascade order with the assumption that it's most important\n   * that last added styles override previous styles.\n   *\n   * @nocollapse\n   * @category styles\n   */\n  protected static finalizeStyles(\n    styles?: CSSResultGroup\n  ): Array<CSSResultOrNative> {\n    const elementStyles = [];\n    if (Array.isArray(styles)) {\n      // Dedupe the flattened array in reverse order to preserve the last items.\n      // Casting to Array<unknown> works around TS error that\n      // appears to come from trying to flatten a type CSSResultArray.\n      const set = new Set((styles as Array<unknown>).flat(Infinity).reverse());\n      // Then preserve original order by adding the set items in reverse order.\n      for (const s of set) {\n        elementStyles.unshift(getCompatibleStyle(s as CSSResultOrNative));\n      }\n    } else if (styles !== undefined) {\n      elementStyles.push(getCompatibleStyle(styles));\n    }\n    return elementStyles;\n  }\n\n  /**\n   * Node or ShadowRoot into which element DOM should be rendered. Defaults\n   * to an open shadowRoot.\n   * @category rendering\n   */\n  readonly renderRoot!: HTMLElement | DocumentFragment;\n\n  /**\n   * Returns the property name for the given attribute `name`.\n   * @nocollapse\n   */\n  private static __attributeNameForProperty(\n    name: PropertyKey,\n    options: PropertyDeclaration\n  ) {\n    const attribute = options.attribute;\n    return attribute === false\n      ? undefined\n      : typeof attribute === 'string'\n        ? attribute\n        : typeof name === 'string'\n          ? name.toLowerCase()\n          : undefined;\n  }\n\n  // Initialize to an unresolved Promise so we can make sure the element has\n  // connected before first update.\n  private __updatePromise!: Promise<boolean>;\n\n  /**\n   * True if there is a pending update as a result of calling `requestUpdate()`.\n   * Should only be read.\n   * @category updates\n   */\n  isUpdatePending = false;\n\n  /**\n   * Is set to `true` after the first update. The element code cannot assume\n   * that `renderRoot` exists before the element `hasUpdated`.\n   * @category updates\n   */\n  hasUpdated = false;\n\n  /**\n   * Map with keys for any properties that have changed since the last\n   * update cycle with previous values.\n   *\n   * @internal\n   */\n  _$changedProperties!: PropertyValues;\n\n  /**\n   * Records property default values when the\n   * `useDefault` option is used.\n   */\n  private __defaultValues?: Map<PropertyKey, unknown>;\n\n  /**\n   * Properties that should be reflected when updated.\n   */\n  private __reflectingProperties?: Set<PropertyKey>;\n\n  /**\n   * Name of currently reflecting property\n   */\n  private __reflectingProperty: PropertyKey | null = null;\n\n  /**\n   * Set of controllers.\n   */\n  private __controllers?: Set<ReactiveController>;\n\n  constructor() {\n    super();\n    this.__initialize();\n  }\n\n  /**\n   * Internal only override point for customizing work done when elements\n   * are constructed.\n   */\n  private __initialize() {\n    this.__updatePromise = new Promise<boolean>(\n      (res) => (this.enableUpdating = res)\n    );\n    this._$changedProperties = new Map();\n    // This enqueues a microtask that must run before the first update, so it\n    // must be called before requestUpdate()\n    this.__saveInstanceProperties();\n    // ensures first update will be caught by an early access of\n    // `updateComplete`\n    this.requestUpdate();\n    (this.constructor as typeof ReactiveElement)._initializers?.forEach((i) =>\n      i(this)\n    );\n  }\n\n  /**\n   * Registers a `ReactiveController` to participate in the element's reactive\n   * update cycle. The element automatically calls into any registered\n   * controllers during its lifecycle callbacks.\n   *\n   * If the element is connected when `addController()` is called, the\n   * controller's `hostConnected()` callback will be immediately called.\n   * @category controllers\n   */\n  addController(controller: ReactiveController) {\n    (this.__controllers ??= new Set()).add(controller);\n    // If a controller is added after the element has been connected,\n    // call hostConnected. Note, re-using existence of `renderRoot` here\n    // (which is set in connectedCallback) to avoid the need to track a\n    // first connected state.\n    if (this.renderRoot !== undefined && this.isConnected) {\n      controller.hostConnected?.();\n    }\n  }\n\n  /**\n   * Removes a `ReactiveController` from the element.\n   * @category controllers\n   */\n  removeController(controller: ReactiveController) {\n    this.__controllers?.delete(controller);\n  }\n\n  /**\n   * Fixes any properties set on the instance before upgrade time.\n   * Otherwise these would shadow the accessor and break these properties.\n   * The properties are stored in a Map which is played back after the\n   * constructor runs.\n   */\n  private __saveInstanceProperties() {\n    const instanceProperties = new Map<PropertyKey, unknown>();\n    const elementProperties = (this.constructor as typeof ReactiveElement)\n      .elementProperties;\n    for (const p of elementProperties.keys() as IterableIterator<keyof this>) {\n      if (this.hasOwnProperty(p)) {\n        instanceProperties.set(p, this[p]);\n        delete this[p];\n      }\n    }\n    if (instanceProperties.size > 0) {\n      this.__instanceProperties = instanceProperties;\n    }\n  }\n\n  /**\n   * Returns the node into which the element should render and by default\n   * creates and returns an open shadowRoot. Implement to customize where the\n   * element's DOM is rendered. For example, to render into the element's\n   * childNodes, return `this`.\n   *\n   * @return Returns a node into which to render.\n   * @category rendering\n   */\n  protected createRenderRoot(): HTMLElement | DocumentFragment {\n    const renderRoot =\n      this.shadowRoot ??\n      this.attachShadow(\n        (this.constructor as typeof ReactiveElement).shadowRootOptions\n      );\n    adoptStyles(\n      renderRoot,\n      (this.constructor as typeof ReactiveElement).elementStyles\n    );\n    return renderRoot;\n  }\n\n  /**\n   * On first connection, creates the element's renderRoot, sets up\n   * element styling, and enables updating.\n   * @category lifecycle\n   */\n  connectedCallback() {\n    // Create renderRoot before controllers `hostConnected`\n    (this as Mutable<typeof this, 'renderRoot'>).renderRoot ??=\n      this.createRenderRoot();\n    this.enableUpdating(true);\n    this.__controllers?.forEach((c) => c.hostConnected?.());\n  }\n\n  /**\n   * Note, this method should be considered final and not overridden. It is\n   * overridden on the element instance with a function that triggers the first\n   * update.\n   * @category updates\n   */\n  protected enableUpdating(_requestedUpdate: boolean) {}\n\n  /**\n   * Allows for `super.disconnectedCallback()` in extensions while\n   * reserving the possibility of making non-breaking feature additions\n   * when disconnecting at some point in the future.\n   * @category lifecycle\n   */\n  disconnectedCallback() {\n    this.__controllers?.forEach((c) => c.hostDisconnected?.());\n  }\n\n  /**\n   * Synchronizes property values when attributes change.\n   *\n   * Specifically, when an attribute is set, the corresponding property is set.\n   * You should rarely need to implement this callback. If this method is\n   * overridden, `super.attributeChangedCallback(name, _old, value)` must be\n   * called.\n   *\n   * See [responding to attribute changes](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements#responding_to_attribute_changes)\n   * on MDN for more information about the `attributeChangedCallback`.\n   * @category attributes\n   */\n  attributeChangedCallback(\n    name: string,\n    _old: string | null,\n    value: string | null\n  ) {\n    this._$attributeToProperty(name, value);\n  }\n\n  private __propertyToAttribute(name: PropertyKey, value: unknown) {\n    const elemProperties: PropertyDeclarationMap = (\n      this.constructor as typeof ReactiveElement\n    ).elementProperties;\n    const options = elemProperties.get(name)!;\n    const attr = (\n      this.constructor as typeof ReactiveElement\n    ).__attributeNameForProperty(name, options);\n    if (attr !== undefined && options.reflect === true) {\n      const converter =\n        (options.converter as ComplexAttributeConverter)?.toAttribute !==\n        undefined\n          ? (options.converter as ComplexAttributeConverter)\n          : defaultConverter;\n      const attrValue = converter.toAttribute!(value, options.type);\n      if (\n        DEV_MODE &&\n        (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n          'migration'\n        ) &&\n        attrValue === undefined\n      ) {\n        issueWarning(\n          'undefined-attribute-value',\n          `The attribute value for the ${name as string} property is ` +\n            `undefined on element ${this.localName}. The attribute will be ` +\n            `removed, but in the previous version of \\`ReactiveElement\\`, ` +\n            `the attribute would not have changed.`\n        );\n      }\n      // Track if the property is being reflected to avoid\n      // setting the property again via `attributeChangedCallback`. Note:\n      // 1. this takes advantage of the fact that the callback is synchronous.\n      // 2. will behave incorrectly if multiple attributes are in the reaction\n      // stack at time of calling. However, since we process attributes\n      // in `update` this should not be possible (or an extreme corner case\n      // that we'd like to discover).\n      // mark state reflecting\n      this.__reflectingProperty = name;\n      if (attrValue == null) {\n        this.removeAttribute(attr);\n      } else {\n        this.setAttribute(attr, attrValue as string);\n      }\n      // mark state not reflecting\n      this.__reflectingProperty = null;\n    }\n  }\n\n  /** @internal */\n  _$attributeToProperty(name: string, value: string | null) {\n    const ctor = this.constructor as typeof ReactiveElement;\n    // Note, hint this as an `AttributeMap` so closure clearly understands\n    // the type; it has issues with tracking types through statics\n    const propName = (ctor.__attributeToPropertyMap as AttributeMap).get(name);\n    // Use tracking info to avoid reflecting a property value to an attribute\n    // if it was just set because the attribute changed.\n    if (propName !== undefined && this.__reflectingProperty !== propName) {\n      const options = ctor.getPropertyOptions(propName);\n      const converter =\n        typeof options.converter === 'function'\n          ? {fromAttribute: options.converter}\n          : options.converter?.fromAttribute !== undefined\n            ? options.converter\n            : defaultConverter;\n      // mark state reflecting\n      this.__reflectingProperty = propName;\n      this[propName as keyof this] =\n        converter.fromAttribute!(value, options.type) ??\n        this.__defaultValues?.get(propName) ??\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        (null as any);\n      // mark state not reflecting\n      this.__reflectingProperty = null;\n    }\n  }\n\n  /**\n   * Requests an update which is processed asynchronously. This should be called\n   * when an element should update based on some state not triggered by setting\n   * a reactive property. In this case, pass no arguments. It should also be\n   * called when manually implementing a property setter. In this case, pass the\n   * property `name` and `oldValue` to ensure that any configured property\n   * options are honored.\n   *\n   * @param name name of requesting property\n   * @param oldValue old value of requesting property\n   * @param options property options to use instead of the previously\n   *     configured options\n   * @category updates\n   */\n  requestUpdate(\n    name?: PropertyKey,\n    oldValue?: unknown,\n    options?: PropertyDeclaration\n  ): void {\n    // If we have a property key, perform property update steps.\n    if (name !== undefined) {\n      if (DEV_MODE && (name as unknown) instanceof Event) {\n        issueWarning(\n          ``,\n          `The requestUpdate() method was called with an Event as the property name. This is probably a mistake caused by binding this.requestUpdate as an event listener. Instead bind a function that will call it with no arguments: () => this.requestUpdate()`\n        );\n      }\n      const ctor = this.constructor as typeof ReactiveElement;\n      const newValue = this[name as keyof this];\n      options ??= ctor.getPropertyOptions(name);\n      const changed =\n        (options.hasChanged ?? notEqual)(newValue, oldValue) ||\n        // When there is no change, check a corner case that can occur when\n        // 1. there's a initial value which was not reflected\n        // 2. the property is subsequently set to this value.\n        // For example, `prop: {useDefault: true, reflect: true}`\n        // and el.prop = 'foo'. This should be considered a change if the\n        // attribute is not set because we will now reflect the property to the attribute.\n        (options.useDefault &&\n          options.reflect &&\n          newValue === this.__defaultValues?.get(name) &&\n          !this.hasAttribute(ctor.__attributeNameForProperty(name, options)!));\n      if (changed) {\n        this._$changeProperty(name, oldValue, options);\n      } else {\n        // Abort the request if the property should not be considered changed.\n        return;\n      }\n    }\n    if (this.isUpdatePending === false) {\n      this.__updatePromise = this.__enqueueUpdate();\n    }\n  }\n\n  /**\n   * @internal\n   */\n  _$changeProperty(\n    name: PropertyKey,\n    oldValue: unknown,\n    {useDefault, reflect, wrapped}: PropertyDeclaration,\n    initializeValue?: unknown\n  ) {\n    // Record default value when useDefault is used. This allows us to\n    // restore this value when the attribute is removed.\n    if (useDefault && !(this.__defaultValues ??= new Map()).has(name)) {\n      this.__defaultValues.set(\n        name,\n        initializeValue ?? oldValue ?? this[name as keyof this]\n      );\n      // if this is not wrapping an accessor, it must be an initial setting\n      // and in this case we do not want to record the change or reflect.\n      if (wrapped !== true || initializeValue !== undefined) {\n        return;\n      }\n    }\n    // TODO (justinfagnani): Create a benchmark of Map.has() + Map.set(\n    // vs just Map.set()\n    if (!this._$changedProperties.has(name)) {\n      // On the initial change, the old value should be `undefined`, except\n      // with `useDefault`\n      if (!this.hasUpdated && !useDefault) {\n        oldValue = undefined;\n      }\n      this._$changedProperties.set(name, oldValue);\n    }\n    // Add to reflecting properties set.\n    // Note, it's important that every change has a chance to add the\n    // property to `__reflectingProperties`. This ensures setting\n    // attribute + property reflects correctly.\n    if (reflect === true && this.__reflectingProperty !== name) {\n      (this.__reflectingProperties ??= new Set<PropertyKey>()).add(name);\n    }\n  }\n\n  /**\n   * Sets up the element to asynchronously update.\n   */\n  private async __enqueueUpdate() {\n    this.isUpdatePending = true;\n    try {\n      // Ensure any previous update has resolved before updating.\n      // This `await` also ensures that property changes are batched.\n      await this.__updatePromise;\n    } catch (e) {\n      // Refire any previous errors async so they do not disrupt the update\n      // cycle. Errors are refired so developers have a chance to observe\n      // them, and this can be done by implementing\n      // `window.onunhandledrejection`.\n      Promise.reject(e);\n    }\n    const result = this.scheduleUpdate();\n    // If `scheduleUpdate` returns a Promise, we await it. This is done to\n    // enable coordinating updates with a scheduler. Note, the result is\n    // checked to avoid delaying an additional microtask unless we need to.\n    if (result != null) {\n      await result;\n    }\n    return !this.isUpdatePending;\n  }\n\n  /**\n   * Schedules an element update. You can override this method to change the\n   * timing of updates by returning a Promise. The update will await the\n   * returned Promise, and you should resolve the Promise to allow the update\n   * to proceed. If this method is overridden, `super.scheduleUpdate()`\n   * must be called.\n   *\n   * For instance, to schedule updates to occur just before the next frame:\n   *\n   * ```ts\n   * override protected async scheduleUpdate(): Promise<unknown> {\n   *   await new Promise((resolve) => requestAnimationFrame(() => resolve()));\n   *   super.scheduleUpdate();\n   * }\n   * ```\n   * @category updates\n   */\n  protected scheduleUpdate(): void | Promise<unknown> {\n    const result = this.performUpdate();\n    if (\n      DEV_MODE &&\n      (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n        'async-perform-update'\n      ) &&\n      typeof (result as unknown as Promise<unknown> | undefined)?.then ===\n        'function'\n    ) {\n      issueWarning(\n        'async-perform-update',\n        `Element ${this.localName} returned a Promise from performUpdate(). ` +\n          `This behavior is deprecated and will be removed in a future ` +\n          `version of ReactiveElement.`\n      );\n    }\n    return result;\n  }\n\n  /**\n   * Performs an element update. Note, if an exception is thrown during the\n   * update, `firstUpdated` and `updated` will not be called.\n   *\n   * Call `performUpdate()` to immediately process a pending update. This should\n   * generally not be needed, but it can be done in rare cases when you need to\n   * update synchronously.\n   *\n   * @category updates\n   */\n  protected performUpdate(): void {\n    // Abort any update if one is not pending when this is called.\n    // This can happen if `performUpdate` is called early to \"flush\"\n    // the update.\n    if (!this.isUpdatePending) {\n      return;\n    }\n    debugLogEvent?.({kind: 'update'});\n    if (!this.hasUpdated) {\n      // Create renderRoot before first update. This occurs in `connectedCallback`\n      // but is done here to support out of tree calls to `enableUpdating`/`performUpdate`.\n      (this as Mutable<typeof this, 'renderRoot'>).renderRoot ??=\n        this.createRenderRoot();\n      if (DEV_MODE) {\n        // Produce warning if any reactive properties on the prototype are\n        // shadowed by class fields. Instance fields set before upgrade are\n        // deleted by this point, so any own property is caused by class field\n        // initialization in the constructor.\n        const ctor = this.constructor as typeof ReactiveElement;\n        const shadowedProperties = [...ctor.elementProperties.keys()].filter(\n          (p) => this.hasOwnProperty(p) && p in getPrototypeOf(this)\n        );\n        if (shadowedProperties.length) {\n          throw new Error(\n            `The following properties on element ${this.localName} will not ` +\n              `trigger updates as expected because they are set using class ` +\n              `fields: ${shadowedProperties.join(', ')}. ` +\n              `Native class fields and some compiled output will overwrite ` +\n              `accessors used for detecting changes. See ` +\n              `https://lit.dev/msg/class-field-shadowing ` +\n              `for more information.`\n          );\n        }\n      }\n      // Mixin instance properties once, if they exist.\n      if (this.__instanceProperties) {\n        // TODO (justinfagnani): should we use the stored value? Could a new value\n        // have been set since we stored the own property value?\n        for (const [p, value] of this.__instanceProperties) {\n          this[p as keyof this] = value as this[keyof this];\n        }\n        this.__instanceProperties = undefined;\n      }\n      // Trigger initial value reflection and populate the initial\n      // `changedProperties` map, but only for the case of properties created\n      // via `createProperty` on accessors, which will not have already\n      // populated the `changedProperties` map since they are not set.\n      // We can't know if these accessors had initializers, so we just set\n      // them anyway - a difference from experimental decorators on fields and\n      // standard decorators on auto-accessors.\n      // For context see:\n      // https://github.com/lit/lit/pull/4183#issuecomment-1711959635\n      const elementProperties = (this.constructor as typeof ReactiveElement)\n        .elementProperties;\n      if (elementProperties.size > 0) {\n        for (const [p, options] of elementProperties) {\n          const {wrapped} = options;\n          const value = this[p as keyof this];\n          if (\n            wrapped === true &&\n            !this._$changedProperties.has(p) &&\n            value !== undefined\n          ) {\n            this._$changeProperty(p, undefined, options, value);\n          }\n        }\n      }\n    }\n    let shouldUpdate = false;\n    const changedProperties = this._$changedProperties;\n    try {\n      shouldUpdate = this.shouldUpdate(changedProperties);\n      if (shouldUpdate) {\n        this.willUpdate(changedProperties);\n        this.__controllers?.forEach((c) => c.hostUpdate?.());\n        this.update(changedProperties);\n      } else {\n        this.__markUpdated();\n      }\n    } catch (e) {\n      // Prevent `firstUpdated` and `updated` from running when there's an\n      // update exception.\n      shouldUpdate = false;\n      // Ensure element can accept additional updates after an exception.\n      this.__markUpdated();\n      throw e;\n    }\n    // The update is no longer considered pending and further updates are now allowed.\n    if (shouldUpdate) {\n      this._$didUpdate(changedProperties);\n    }\n  }\n\n  /**\n   * Invoked before `update()` to compute values needed during the update.\n   *\n   * Implement `willUpdate` to compute property values that depend on other\n   * properties and are used in the rest of the update process.\n   *\n   * ```ts\n   * willUpdate(changedProperties) {\n   *   // only need to check changed properties for an expensive computation.\n   *   if (changedProperties.has('firstName') || changedProperties.has('lastName')) {\n   *     this.sha = computeSHA(`${this.firstName} ${this.lastName}`);\n   *   }\n   * }\n   *\n   * render() {\n   *   return html`SHA: ${this.sha}`;\n   * }\n   * ```\n   *\n   * @category updates\n   */\n  protected willUpdate(_changedProperties: PropertyValues): void {}\n\n  // Note, this is an override point for polyfill-support.\n  // @internal\n  _$didUpdate(changedProperties: PropertyValues) {\n    this.__controllers?.forEach((c) => c.hostUpdated?.());\n    if (!this.hasUpdated) {\n      this.hasUpdated = true;\n      this.firstUpdated(changedProperties);\n    }\n    this.updated(changedProperties);\n    if (\n      DEV_MODE &&\n      this.isUpdatePending &&\n      (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n        'change-in-update'\n      )\n    ) {\n      issueWarning(\n        'change-in-update',\n        `Element ${this.localName} scheduled an update ` +\n          `(generally because a property was set) ` +\n          `after an update completed, causing a new update to be scheduled. ` +\n          `This is inefficient and should be avoided unless the next update ` +\n          `can only be scheduled as a side effect of the previous update.`\n      );\n    }\n  }\n\n  private __markUpdated() {\n    this._$changedProperties = new Map();\n    this.isUpdatePending = false;\n  }\n\n  /**\n   * Returns a Promise that resolves when the element has completed updating.\n   * The Promise value is a boolean that is `true` if the element completed the\n   * update without triggering another update. The Promise result is `false` if\n   * a property was set inside `updated()`. If the Promise is rejected, an\n   * exception was thrown during the update.\n   *\n   * To await additional asynchronous work, override the `getUpdateComplete`\n   * method. For example, it is sometimes useful to await a rendered element\n   * before fulfilling this Promise. To do this, first await\n   * `super.getUpdateComplete()`, then any subsequent state.\n   *\n   * @return A promise of a boolean that resolves to true if the update completed\n   *     without triggering another update.\n   * @category updates\n   */\n  get updateComplete(): Promise<boolean> {\n    return this.getUpdateComplete();\n  }\n\n  /**\n   * Override point for the `updateComplete` promise.\n   *\n   * It is not safe to override the `updateComplete` getter directly due to a\n   * limitation in TypeScript which means it is not possible to call a\n   * superclass getter (e.g. `super.updateComplete.then(...)`) when the target\n   * language is ES5 (https://github.com/microsoft/TypeScript/issues/338).\n   * This method should be overridden instead. For example:\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   override async getUpdateComplete() {\n   *     const result = await super.getUpdateComplete();\n   *     await this._myChild.updateComplete;\n   *     return result;\n   *   }\n   * }\n   * ```\n   *\n   * @return A promise of a boolean that resolves to true if the update completed\n   *     without triggering another update.\n   * @category updates\n   */\n  protected getUpdateComplete(): Promise<boolean> {\n    return this.__updatePromise;\n  }\n\n  /**\n   * Controls whether or not `update()` should be called when the element requests\n   * an update. By default, this method always returns `true`, but this can be\n   * customized to control when to update.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected shouldUpdate(_changedProperties: PropertyValues): boolean {\n    return true;\n  }\n\n  /**\n   * Updates the element. This method reflects property values to attributes.\n   * It can be overridden to render and keep updated element DOM.\n   * Setting properties inside this method will *not* trigger\n   * another update.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected update(_changedProperties: PropertyValues) {\n    // The forEach() expression will only run when __reflectingProperties is\n    // defined, and it returns undefined, setting __reflectingProperties to\n    // undefined\n    this.__reflectingProperties &&= this.__reflectingProperties.forEach((p) =>\n      this.__propertyToAttribute(p, this[p as keyof this])\n    ) as undefined;\n    this.__markUpdated();\n  }\n\n  /**\n   * Invoked whenever the element is updated. Implement to perform\n   * post-updating tasks via DOM APIs, for example, focusing an element.\n   *\n   * Setting properties inside this method will trigger the element to update\n   * again after this update cycle completes.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected updated(_changedProperties: PropertyValues) {}\n\n  /**\n   * Invoked when the element is first updated. Implement to perform one time\n   * work on the element after update.\n   *\n   * ```ts\n   * firstUpdated() {\n   *   this.renderRoot.getElementById('my-text-area').focus();\n   * }\n   * ```\n   *\n   * Setting properties inside this method will trigger the element to update\n   * again after this update cycle completes.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected firstUpdated(_changedProperties: PropertyValues) {}\n}\n// Assigned here to work around a jscompiler bug with static fields\n// when compiling to ES5.\n// https://github.com/google/closure-compiler/issues/3177\n(ReactiveElement as unknown as Record<string, unknown>)[\n  JSCompiler_renameProperty('elementProperties', ReactiveElement)\n] = new Map();\n(ReactiveElement as unknown as Record<string, unknown>)[\n  JSCompiler_renameProperty('finalized', ReactiveElement)\n] = new Map();\n\n// Apply polyfills if available\npolyfillSupport?.({ReactiveElement});\n\n// Dev mode warnings...\nif (DEV_MODE) {\n  // Default warning set.\n  ReactiveElement.enabledWarnings = [\n    'change-in-update',\n    'async-perform-update',\n  ];\n  const ensureOwnWarnings = function (ctor: typeof ReactiveElement) {\n    if (\n      !ctor.hasOwnProperty(JSCompiler_renameProperty('enabledWarnings', ctor))\n    ) {\n      ctor.enabledWarnings = ctor.enabledWarnings!.slice();\n    }\n  };\n  ReactiveElement.enableWarning = function (\n    this: typeof ReactiveElement,\n    warning: WarningKind\n  ) {\n    ensureOwnWarnings(this);\n    if (!this.enabledWarnings!.includes(warning)) {\n      this.enabledWarnings!.push(warning);\n    }\n  };\n  ReactiveElement.disableWarning = function (\n    this: typeof ReactiveElement,\n    warning: WarningKind\n  ) {\n    ensureOwnWarnings(this);\n    const i = this.enabledWarnings!.indexOf(warning);\n    if (i >= 0) {\n      this.enabledWarnings!.splice(i, 1);\n    }\n  };\n}\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for ReactiveElement usage.\n(global.reactiveElementVersions ??= []).push('2.1.0');\nif (DEV_MODE && global.reactiveElementVersions.length > 1) {\n  queueMicrotask(() => {\n    issueWarning!(\n      'multiple-versions',\n      `Multiple versions of Lit loaded. Loading multiple versions ` +\n        `is not recommended.`\n    );\n  });\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n// IMPORTANT: these imports must be type-only\nimport type {Directive, DirectiveResult, PartInfo} from './directive.js';\nimport type {TrustedHTML, TrustedTypesWindow} from 'trusted-types/lib/index.js';\n\nconst DEV_MODE = true;\nconst ENABLE_EXTRA_SECURITY_HOOKS = true;\nconst ENABLE_SHADYDOM_NOPATCH = true;\nconst NODE_MODE = false;\n\n// Allows minifiers to rename references to globalThis\nconst global = globalThis;\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace LitUnstable {\n  /**\n   * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n   * we will emit 'lit-debug' events to window, with live details about the update and render\n   * lifecycle. These can be useful for writing debug tooling and visualizations.\n   *\n   * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n   * making certain operations that are normally very cheap (like a no-op render) much slower,\n   * because we must copy data and dispatch events.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-namespace\n  export namespace DebugLog {\n    export type Entry =\n      | TemplatePrep\n      | TemplateInstantiated\n      | TemplateInstantiatedAndUpdated\n      | TemplateUpdating\n      | BeginRender\n      | EndRender\n      | CommitPartEntry\n      | SetPartValue;\n    export interface TemplatePrep {\n      kind: 'template prep';\n      template: Template;\n      strings: TemplateStringsArray;\n      clonableTemplate: HTMLTemplateElement;\n      parts: TemplatePart[];\n    }\n    export interface BeginRender {\n      kind: 'begin render';\n      id: number;\n      value: unknown;\n      container: HTMLElement | DocumentFragment;\n      options: RenderOptions | undefined;\n      part: ChildPart | undefined;\n    }\n    export interface EndRender {\n      kind: 'end render';\n      id: number;\n      value: unknown;\n      container: HTMLElement | DocumentFragment;\n      options: RenderOptions | undefined;\n      part: ChildPart;\n    }\n    export interface TemplateInstantiated {\n      kind: 'template instantiated';\n      template: Template | CompiledTemplate;\n      instance: TemplateInstance;\n      options: RenderOptions | undefined;\n      fragment: Node;\n      parts: Array<Part | undefined>;\n      values: unknown[];\n    }\n    export interface TemplateInstantiatedAndUpdated {\n      kind: 'template instantiated and updated';\n      template: Template | CompiledTemplate;\n      instance: TemplateInstance;\n      options: RenderOptions | undefined;\n      fragment: Node;\n      parts: Array<Part | undefined>;\n      values: unknown[];\n    }\n    export interface TemplateUpdating {\n      kind: 'template updating';\n      template: Template | CompiledTemplate;\n      instance: TemplateInstance;\n      options: RenderOptions | undefined;\n      parts: Array<Part | undefined>;\n      values: unknown[];\n    }\n    export interface SetPartValue {\n      kind: 'set part';\n      part: Part;\n      value: unknown;\n      valueIndex: number;\n      values: unknown[];\n      templateInstance: TemplateInstance;\n    }\n\n    export type CommitPartEntry =\n      | CommitNothingToChildEntry\n      | CommitText\n      | CommitNode\n      | CommitAttribute\n      | CommitProperty\n      | CommitBooleanAttribute\n      | CommitEventListener\n      | CommitToElementBinding;\n\n    export interface CommitNothingToChildEntry {\n      kind: 'commit nothing to child';\n      start: ChildNode;\n      end: ChildNode | null;\n      parent: Disconnectable | undefined;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitText {\n      kind: 'commit text';\n      node: Text;\n      value: unknown;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitNode {\n      kind: 'commit node';\n      start: Node;\n      parent: Disconnectable | undefined;\n      value: Node;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitAttribute {\n      kind: 'commit attribute';\n      element: Element;\n      name: string;\n      value: unknown;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitProperty {\n      kind: 'commit property';\n      element: Element;\n      name: string;\n      value: unknown;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitBooleanAttribute {\n      kind: 'commit boolean attribute';\n      element: Element;\n      name: string;\n      value: boolean;\n      options: RenderOptions | undefined;\n    }\n\n    export interface CommitEventListener {\n      kind: 'commit event listener';\n      element: Element;\n      name: string;\n      value: unknown;\n      oldListener: unknown;\n      options: RenderOptions | undefined;\n      // True if we're removing the old event listener (e.g. because settings changed, or value is nothing)\n      removeListener: boolean;\n      // True if we're adding a new event listener (e.g. because first render, or settings changed)\n      addListener: boolean;\n    }\n\n    export interface CommitToElementBinding {\n      kind: 'commit to element binding';\n      element: Element;\n      value: unknown;\n      options: RenderOptions | undefined;\n    }\n  }\n}\n\ninterface DebugLoggingWindow {\n  // Even in dev mode, we generally don't want to emit these events, as that's\n  // another level of cost, so only emit them when DEV_MODE is true _and_ when\n  // window.emitLitDebugEvents is true.\n  emitLitDebugLogEvents?: boolean;\n}\n\n/**\n * Useful for visualizing and logging insights into what the Lit template system is doing.\n *\n * Compiled out of prod mode builds.\n */\nconst debugLogEvent = DEV_MODE\n  ? (event: LitUnstable.DebugLog.Entry) => {\n      const shouldEmit = (global as unknown as DebugLoggingWindow)\n        .emitLitDebugLogEvents;\n      if (!shouldEmit) {\n        return;\n      }\n      global.dispatchEvent(\n        new CustomEvent<LitUnstable.DebugLog.Entry>('lit-debug', {\n          detail: event,\n        })\n      );\n    }\n  : undefined;\n// Used for connecting beginRender and endRender events when there are nested\n// renders when errors are thrown preventing an endRender event from being\n// called.\nlet debugLogRenderId = 0;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n  global.litIssuedWarnings ??= new Set();\n\n  /**\n   * Issue a warning if we haven't already, based either on `code` or `warning`.\n   * Warnings are disabled automatically only by `warning`; disabling via `code`\n   * can be done by users.\n   */\n  issueWarning = (code: string, warning: string) => {\n    warning += code\n      ? ` See https://lit.dev/msg/${code} for more information.`\n      : '';\n    if (\n      !global.litIssuedWarnings!.has(warning) &&\n      !global.litIssuedWarnings!.has(code)\n    ) {\n      console.warn(warning);\n      global.litIssuedWarnings!.add(warning);\n    }\n  };\n\n  queueMicrotask(() => {\n    issueWarning(\n      'dev-mode',\n      `Lit is in dev mode. Not recommended for production!`\n    );\n  });\n}\n\nconst wrap =\n  ENABLE_SHADYDOM_NOPATCH &&\n  global.ShadyDOM?.inUse &&\n  global.ShadyDOM?.noPatch === true\n    ? (global.ShadyDOM!.wrap as <T extends Node>(node: T) => T)\n    : <T extends Node>(node: T) => node;\n\nconst trustedTypes = (global as unknown as TrustedTypesWindow).trustedTypes;\n\n/**\n * Our TrustedTypePolicy for HTML which is declared using the html template\n * tag function.\n *\n * That HTML is a developer-authored constant, and is parsed with innerHTML\n * before any untrusted expressions have been mixed in. Therefor it is\n * considered safe by construction.\n */\nconst policy = trustedTypes\n  ? trustedTypes.createPolicy('lit-html', {\n      createHTML: (s) => s,\n    })\n  : undefined;\n\n/**\n * Used to sanitize any value before it is written into the DOM. This can be\n * used to implement a security policy of allowed and disallowed values in\n * order to prevent XSS attacks.\n *\n * One way of using this callback would be to check attributes and properties\n * against a list of high risk fields, and require that values written to such\n * fields be instances of a class which is safe by construction. Closure's Safe\n * HTML Types is one implementation of this technique (\n * https://github.com/google/safe-html-types/blob/master/doc/safehtml-types.md).\n * The TrustedTypes polyfill in API-only mode could also be used as a basis\n * for this technique (https://github.com/WICG/trusted-types).\n *\n * @param node The HTML node (usually either a #text node or an Element) that\n *     is being written to. Note that this is just an exemplar node, the write\n *     may take place against another instance of the same class of node.\n * @param name The name of an attribute or property (for example, 'href').\n * @param type Indicates whether the write that's about to be performed will\n *     be to a property or a node.\n * @return A function that will sanitize this class of writes.\n */\nexport type SanitizerFactory = (\n  node: Node,\n  name: string,\n  type: 'property' | 'attribute'\n) => ValueSanitizer;\n\n/**\n * A function which can sanitize values that will be written to a specific kind\n * of DOM sink.\n *\n * See SanitizerFactory.\n *\n * @param value The value to sanitize. Will be the actual value passed into\n *     the lit-html template literal, so this could be of any type.\n * @return The value to write to the DOM. Usually the same as the input value,\n *     unless sanitization is needed.\n */\nexport type ValueSanitizer = (value: unknown) => unknown;\n\nconst identityFunction: ValueSanitizer = (value: unknown) => value;\nconst noopSanitizer: SanitizerFactory = (\n  _node: Node,\n  _name: string,\n  _type: 'property' | 'attribute'\n) => identityFunction;\n\n/** Sets the global sanitizer factory. */\nconst setSanitizer = (newSanitizer: SanitizerFactory) => {\n  if (!ENABLE_EXTRA_SECURITY_HOOKS) {\n    return;\n  }\n  if (sanitizerFactoryInternal !== noopSanitizer) {\n    throw new Error(\n      `Attempted to overwrite existing lit-html security policy.` +\n        ` setSanitizeDOMValueFactory should be called at most once.`\n    );\n  }\n  sanitizerFactoryInternal = newSanitizer;\n};\n\n/**\n * Only used in internal tests, not a part of the public API.\n */\nconst _testOnlyClearSanitizerFactoryDoNotCallOrElse = () => {\n  sanitizerFactoryInternal = noopSanitizer;\n};\n\nconst createSanitizer: SanitizerFactory = (node, name, type) => {\n  return sanitizerFactoryInternal(node, name, type);\n};\n\n// Added to an attribute name to mark the attribute as bound so we can find\n// it easily.\nconst boundAttributeSuffix = '$lit$';\n\n// This marker is used in many syntactic positions in HTML, so it must be\n// a valid element name and attribute name. We don't support dynamic names (yet)\n// but this at least ensures that the parse tree is closer to the template\n// intention.\nconst marker = `lit$${Math.random().toFixed(9).slice(2)}$`;\n\n// String used to tell if a comment is a marker comment\nconst markerMatch = '?' + marker;\n\n// Text used to insert a comment marker node. We use processing instruction\n// syntax because it's slightly smaller, but parses as a comment node.\nconst nodeMarker = `<${markerMatch}>`;\n\nconst d =\n  NODE_MODE && global.document === undefined\n    ? ({\n        createTreeWalker() {\n          return {};\n        },\n      } as unknown as Document)\n    : document;\n\n// Creates a dynamic marker. We never have to search for these in the DOM.\nconst createMarker = () => d.createComment('');\n\n// https://tc39.github.io/ecma262/#sec-typeof-operator\ntype Primitive = null | undefined | boolean | number | string | symbol | bigint;\nconst isPrimitive = (value: unknown): value is Primitive =>\n  value === null || (typeof value != 'object' && typeof value != 'function');\nconst isArray = Array.isArray;\nconst isIterable = (value: unknown): value is Iterable<unknown> =>\n  isArray(value) ||\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  typeof (value as any)?.[Symbol.iterator] === 'function';\n\nconst SPACE_CHAR = `[ \\t\\n\\f\\r]`;\nconst ATTR_VALUE_CHAR = `[^ \\t\\n\\f\\r\"'\\`<>=]`;\nconst NAME_CHAR = `[^\\\\s\"'>=/]`;\n\n// These regexes represent the five parsing states that we care about in the\n// Template's HTML scanner. They match the *end* of the state they're named\n// after.\n// Depending on the match, we transition to a new state. If there's no match,\n// we stay in the same state.\n// Note that the regexes are stateful. We utilize lastIndex and sync it\n// across the multiple regexes used. In addition to the five regexes below\n// we also dynamically create a regex to find the matching end tags for raw\n// text elements.\n\n/**\n * End of text is: `<` followed by:\n *   (comment start) or (tag) or (dynamic tag binding)\n */\nconst textEndRegex = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nconst COMMENT_START = 1;\nconst TAG_NAME = 2;\nconst DYNAMIC_TAG_NAME = 3;\n\nconst commentEndRegex = /-->/g;\n/**\n * Comments not started with <!--, like </{, can be ended by a single `>`\n */\nconst comment2EndRegex = />/g;\n\n/**\n * The tagEnd regex matches the end of the \"inside an opening\" tag syntax\n * position. It either matches a `>`, an attribute-like sequence, or the end\n * of the string after a space (attribute-name position ending).\n *\n * See attributes in the HTML spec:\n * https://www.w3.org/TR/html5/syntax.html#elements-attributes\n *\n * \" \\t\\n\\f\\r\" are HTML space characters:\n * https://infra.spec.whatwg.org/#ascii-whitespace\n *\n * So an attribute is:\n *  * The name: any character except a whitespace character, (\"), ('), \">\",\n *    \"=\", or \"/\". Note: this is different from the HTML spec which also excludes control characters.\n *  * Followed by zero or more space characters\n *  * Followed by \"=\"\n *  * Followed by zero or more space characters\n *  * Followed by:\n *    * Any character except space, ('), (\"), \"<\", \">\", \"=\", (`), or\n *    * (\") then any non-(\"), or\n *    * (') then any non-(')\n */\nconst tagEndRegex = new RegExp(\n  `>|${SPACE_CHAR}(?:(${NAME_CHAR}+)(${SPACE_CHAR}*=${SPACE_CHAR}*(?:${ATTR_VALUE_CHAR}|(\"|')|))|$)`,\n  'g'\n);\nconst ENTIRE_MATCH = 0;\nconst ATTRIBUTE_NAME = 1;\nconst SPACES_AND_EQUALS = 2;\nconst QUOTE_CHAR = 3;\n\nconst singleQuoteAttrEndRegex = /'/g;\nconst doubleQuoteAttrEndRegex = /\"/g;\n/**\n * Matches the raw text elements.\n *\n * Comments are not parsed within raw text elements, so we need to search their\n * text content for marker strings.\n */\nconst rawTextElement = /^(?:script|style|textarea|title)$/i;\n\n/** TemplateResult types */\nconst HTML_RESULT = 1;\nconst SVG_RESULT = 2;\nconst MATHML_RESULT = 3;\n\ntype ResultType = typeof HTML_RESULT | typeof SVG_RESULT | typeof MATHML_RESULT;\n\n// TemplatePart types\n// IMPORTANT: these must match the values in PartType\nconst ATTRIBUTE_PART = 1;\nconst CHILD_PART = 2;\nconst PROPERTY_PART = 3;\nconst BOOLEAN_ATTRIBUTE_PART = 4;\nconst EVENT_PART = 5;\nconst ELEMENT_PART = 6;\nconst COMMENT_PART = 7;\n\n/**\n * The return type of the template tag functions, {@linkcode html} and\n * {@linkcode svg} when it hasn't been compiled by @lit-labs/compiler.\n *\n * A `TemplateResult` object holds all the information about a template\n * expression required to render it: the template strings, expression values,\n * and type of template (html or svg).\n *\n * `TemplateResult` objects do not create any DOM on their own. To create or\n * update DOM you need to render the `TemplateResult`. See\n * [Rendering](https://lit.dev/docs/components/rendering) for more information.\n *\n */\nexport type UncompiledTemplateResult<T extends ResultType = ResultType> = {\n  // This property needs to remain unminified.\n  ['_$litType$']: T;\n  strings: TemplateStringsArray;\n  values: unknown[];\n};\n\n/**\n * This is a template result that may be either uncompiled or compiled.\n *\n * In the future, TemplateResult will be this type. If you want to explicitly\n * note that a template result is potentially compiled, you can reference this\n * type and it will continue to behave the same through the next major version\n * of Lit. This can be useful for code that wants to prepare for the next\n * major version of Lit.\n */\nexport type MaybeCompiledTemplateResult<T extends ResultType = ResultType> =\n  | UncompiledTemplateResult<T>\n  | CompiledTemplateResult;\n\n/**\n * The return type of the template tag functions, {@linkcode html} and\n * {@linkcode svg}.\n *\n * A `TemplateResult` object holds all the information about a template\n * expression required to render it: the template strings, expression values,\n * and type of template (html or svg).\n *\n * `TemplateResult` objects do not create any DOM on their own. To create or\n * update DOM you need to render the `TemplateResult`. See\n * [Rendering](https://lit.dev/docs/components/rendering) for more information.\n *\n * In Lit 4, this type will be an alias of\n * MaybeCompiledTemplateResult, so that code will get type errors if it assumes\n * that Lit templates are not compiled. When deliberately working with only\n * one, use either {@linkcode CompiledTemplateResult} or\n * {@linkcode UncompiledTemplateResult} explicitly.\n */\nexport type TemplateResult<T extends ResultType = ResultType> =\n  UncompiledTemplateResult<T>;\n\nexport type HTMLTemplateResult = TemplateResult<typeof HTML_RESULT>;\n\nexport type SVGTemplateResult = TemplateResult<typeof SVG_RESULT>;\n\nexport type MathMLTemplateResult = TemplateResult<typeof MATHML_RESULT>;\n\n/**\n * A TemplateResult that has been compiled by @lit-labs/compiler, skipping the\n * prepare step.\n */\nexport interface CompiledTemplateResult {\n  // This is a factory in order to make template initialization lazy\n  // and allow ShadyRenderOptions scope to be passed in.\n  // This property needs to remain unminified.\n  ['_$litType$']: CompiledTemplate;\n  values: unknown[];\n}\n\nexport interface CompiledTemplate extends Omit<Template, 'el'> {\n  // el is overridden to be optional. We initialize it on first render\n  el?: HTMLTemplateElement;\n\n  // The prepared HTML string to create a template element from.\n  // The type is a TemplateStringsArray to guarantee that the value came from\n  // source code, preventing a JSON injection attack.\n  h: TemplateStringsArray;\n}\n\n/**\n * Generates a template literal tag function that returns a TemplateResult with\n * the given result type.\n */\nconst tag =\n  <T extends ResultType>(type: T) =>\n  (strings: TemplateStringsArray, ...values: unknown[]): TemplateResult<T> => {\n    // Warn against templates octal escape sequences\n    // We do this here rather than in render so that the warning is closer to the\n    // template definition.\n    if (DEV_MODE && strings.some((s) => s === undefined)) {\n      console.warn(\n        'Some template strings are undefined.\\n' +\n          'This is probably caused by illegal octal escape sequences.'\n      );\n    }\n    if (DEV_MODE) {\n      // Import static-html.js results in a circular dependency which g3 doesn't\n      // handle. Instead we know that static values must have the field\n      // `_$litStatic$`.\n      if (\n        values.some((val) => (val as {_$litStatic$: unknown})?.['_$litStatic$'])\n      ) {\n        issueWarning(\n          '',\n          `Static values 'literal' or 'unsafeStatic' cannot be used as values to non-static templates.\\n` +\n            `Please use the static 'html' tag function. See https://lit.dev/docs/templates/expressions/#static-expressions`\n        );\n      }\n    }\n    return {\n      // This property needs to remain unminified.\n      ['_$litType$']: type,\n      strings,\n      values,\n    };\n  };\n\n/**\n * Interprets a template literal as an HTML template that can efficiently\n * render to and update a container.\n *\n * ```ts\n * const header = (title: string) => html`<h1>${title}</h1>`;\n * ```\n *\n * The `html` tag returns a description of the DOM to render as a value. It is\n * lazy, meaning no work is done until the template is rendered. When rendering,\n * if a template comes from the same expression as a previously rendered result,\n * it's efficiently updated instead of replaced.\n */\nexport const html = tag(HTML_RESULT);\n\n/**\n * Interprets a template literal as an SVG fragment that can efficiently render\n * to and update a container.\n *\n * ```ts\n * const rect = svg`<rect width=\"10\" height=\"10\"></rect>`;\n *\n * const myImage = html`\n *   <svg viewBox=\"0 0 10 10\" xmlns=\"http://www.w3.org/2000/svg\">\n *     ${rect}\n *   </svg>`;\n * ```\n *\n * The `svg` *tag function* should only be used for SVG fragments, or elements\n * that would be contained **inside** an `<svg>` HTML element. A common error is\n * placing an `<svg>` *element* in a template tagged with the `svg` tag\n * function. The `<svg>` element is an HTML element and should be used within a\n * template tagged with the {@linkcode html} tag function.\n *\n * In LitElement usage, it's invalid to return an SVG fragment from the\n * `render()` method, as the SVG fragment will be contained within the element's\n * shadow root and thus not be properly contained within an `<svg>` HTML\n * element.\n */\nexport const svg = tag(SVG_RESULT);\n\n/**\n * Interprets a template literal as MathML fragment that can efficiently render\n * to and update a container.\n *\n * ```ts\n * const num = mathml`<mn>1</mn>`;\n *\n * const eq = html`\n *   <math>\n *     ${num}\n *   </math>`;\n * ```\n *\n * The `mathml` *tag function* should only be used for MathML fragments, or\n * elements that would be contained **inside** a `<math>` HTML element. A common\n * error is placing a `<math>` *element* in a template tagged with the `mathml`\n * tag function. The `<math>` element is an HTML element and should be used\n * within a template tagged with the {@linkcode html} tag function.\n *\n * In LitElement usage, it's invalid to return an MathML fragment from the\n * `render()` method, as the MathML fragment will be contained within the\n * element's shadow root and thus not be properly contained within a `<math>`\n * HTML element.\n */\nexport const mathml = tag(MATHML_RESULT);\n\n/**\n * A sentinel value that signals that a value was handled by a directive and\n * should not be written to the DOM.\n */\nexport const noChange = Symbol.for('lit-noChange');\n\n/**\n * A sentinel value that signals a ChildPart to fully clear its content.\n *\n * ```ts\n * const button = html`${\n *  user.isAdmin\n *    ? html`<button>DELETE</button>`\n *    : nothing\n * }`;\n * ```\n *\n * Prefer using `nothing` over other falsy values as it provides a consistent\n * behavior between various expression binding contexts.\n *\n * In child expressions, `undefined`, `null`, `''`, and `nothing` all behave the\n * same and render no nodes. In attribute expressions, `nothing` _removes_ the\n * attribute, while `undefined` and `null` will render an empty string. In\n * property expressions `nothing` becomes `undefined`.\n */\nexport const nothing = Symbol.for('lit-nothing');\n\n/**\n * The cache of prepared templates, keyed by the tagged TemplateStringsArray\n * and _not_ accounting for the specific template tag used. This means that\n * template tags cannot be dynamic - they must statically be one of html, svg,\n * or attr. This restriction simplifies the cache lookup, which is on the hot\n * path for rendering.\n */\nconst templateCache = new WeakMap<TemplateStringsArray, Template>();\n\n/**\n * Object specifying options for controlling lit-html rendering. Note that\n * while `render` may be called multiple times on the same `container` (and\n * `renderBefore` reference node) to efficiently update the rendered content,\n * only the options passed in during the first render are respected during\n * the lifetime of renders to that unique `container` + `renderBefore`\n * combination.\n */\nexport interface RenderOptions {\n  /**\n   * An object to use as the `this` value for event listeners. It's often\n   * useful to set this to the host component rendering a template.\n   */\n  host?: object;\n  /**\n   * A DOM node before which to render content in the container.\n   */\n  renderBefore?: ChildNode | null;\n  /**\n   * Node used for cloning the template (`importNode` will be called on this\n   * node). This controls the `ownerDocument` of the rendered DOM, along with\n   * any inherited context. Defaults to the global `document`.\n   */\n  creationScope?: {importNode(node: Node, deep?: boolean): Node};\n  /**\n   * The initial connected state for the top-level part being rendered. If no\n   * `isConnected` option is set, `AsyncDirective`s will be connected by\n   * default. Set to `false` if the initial render occurs in a disconnected tree\n   * and `AsyncDirective`s should see `isConnected === false` for their initial\n   * render. The `part.setConnected()` method must be used subsequent to initial\n   * render to change the connected state of the part.\n   */\n  isConnected?: boolean;\n}\n\nconst walker = d.createTreeWalker(\n  d,\n  129 /* NodeFilter.SHOW_{ELEMENT|COMMENT} */\n);\n\nlet sanitizerFactoryInternal: SanitizerFactory = noopSanitizer;\n\n//\n// Classes only below here, const variable declarations only above here...\n//\n// Keeping variable declarations and classes together improves minification.\n// Interfaces and type aliases can be interleaved freely.\n//\n\n// Type for classes that have a `_directive` or `_directives[]` field, used by\n// `resolveDirective`\nexport interface DirectiveParent {\n  _$parent?: DirectiveParent;\n  _$isConnected: boolean;\n  __directive?: Directive;\n  __directives?: Array<Directive | undefined>;\n}\n\nfunction trustFromTemplateString(\n  tsa: TemplateStringsArray,\n  stringFromTSA: string\n): TrustedHTML {\n  // A security check to prevent spoofing of Lit template results.\n  // In the future, we may be able to replace this with Array.isTemplateObject,\n  // though we might need to make that check inside of the html and svg\n  // functions, because precompiled templates don't come in as\n  // TemplateStringArray objects.\n  if (!isArray(tsa) || !tsa.hasOwnProperty('raw')) {\n    let message = 'invalid template strings array';\n    if (DEV_MODE) {\n      message = `\n          Internal Error: expected template strings to be an array\n          with a 'raw' field. Faking a template strings array by\n          calling html or svg like an ordinary function is effectively\n          the same as calling unsafeHtml and can lead to major security\n          issues, e.g. opening your code up to XSS attacks.\n          If you're using the html or svg tagged template functions normally\n          and still seeing this error, please file a bug at\n          https://github.com/lit/lit/issues/new?template=bug_report.md\n          and include information about your build tooling, if any.\n        `\n        .trim()\n        .replace(/\\n */g, '\\n');\n    }\n    throw new Error(message);\n  }\n  return policy !== undefined\n    ? policy.createHTML(stringFromTSA)\n    : (stringFromTSA as unknown as TrustedHTML);\n}\n\n/**\n * Returns an HTML string for the given TemplateStringsArray and result type\n * (HTML or SVG), along with the case-sensitive bound attribute names in\n * template order. The HTML contains comment markers denoting the `ChildPart`s\n * and suffixes on bound attributes denoting the `AttributeParts`.\n *\n * @param strings template strings array\n * @param type HTML or SVG\n * @return Array containing `[html, attrNames]` (array returned for terseness,\n *     to avoid object fields since this code is shared with non-minified SSR\n *     code)\n */\nconst getTemplateHtml = (\n  strings: TemplateStringsArray,\n  type: ResultType\n): [TrustedHTML, Array<string>] => {\n  // Insert makers into the template HTML to represent the position of\n  // bindings. The following code scans the template strings to determine the\n  // syntactic position of the bindings. They can be in text position, where\n  // we insert an HTML comment, attribute value position, where we insert a\n  // sentinel string and re-write the attribute name, or inside a tag where\n  // we insert the sentinel string.\n  const l = strings.length - 1;\n  // Stores the case-sensitive bound attribute names in the order of their\n  // parts. ElementParts are also reflected in this array as undefined\n  // rather than a string, to disambiguate from attribute bindings.\n  const attrNames: Array<string> = [];\n  let html =\n    type === SVG_RESULT ? '<svg>' : type === MATHML_RESULT ? '<math>' : '';\n\n  // When we're inside a raw text tag (not it's text content), the regex\n  // will still be tagRegex so we can find attributes, but will switch to\n  // this regex when the tag ends.\n  let rawTextEndRegex: RegExp | undefined;\n\n  // The current parsing state, represented as a reference to one of the\n  // regexes\n  let regex = textEndRegex;\n\n  for (let i = 0; i < l; i++) {\n    const s = strings[i];\n    // The index of the end of the last attribute name. When this is\n    // positive at end of a string, it means we're in an attribute value\n    // position and need to rewrite the attribute name.\n    // We also use a special value of -2 to indicate that we encountered\n    // the end of a string in attribute name position.\n    let attrNameEndIndex = -1;\n    let attrName: string | undefined;\n    let lastIndex = 0;\n    let match!: RegExpExecArray | null;\n\n    // The conditions in this loop handle the current parse state, and the\n    // assignments to the `regex` variable are the state transitions.\n    while (lastIndex < s.length) {\n      // Make sure we start searching from where we previously left off\n      regex.lastIndex = lastIndex;\n      match = regex.exec(s);\n      if (match === null) {\n        break;\n      }\n      lastIndex = regex.lastIndex;\n      if (regex === textEndRegex) {\n        if (match[COMMENT_START] === '!--') {\n          regex = commentEndRegex;\n        } else if (match[COMMENT_START] !== undefined) {\n          // We started a weird comment, like </{\n          regex = comment2EndRegex;\n        } else if (match[TAG_NAME] !== undefined) {\n          if (rawTextElement.test(match[TAG_NAME])) {\n            // Record if we encounter a raw-text element. We'll switch to\n            // this regex at the end of the tag.\n            rawTextEndRegex = new RegExp(`</${match[TAG_NAME]}`, 'g');\n          }\n          regex = tagEndRegex;\n        } else if (match[DYNAMIC_TAG_NAME] !== undefined) {\n          if (DEV_MODE) {\n            throw new Error(\n              'Bindings in tag names are not supported. Please use static templates instead. ' +\n                'See https://lit.dev/docs/templates/expressions/#static-expressions'\n            );\n          }\n          regex = tagEndRegex;\n        }\n      } else if (regex === tagEndRegex) {\n        if (match[ENTIRE_MATCH] === '>') {\n          // End of a tag. If we had started a raw-text element, use that\n          // regex\n          regex = rawTextEndRegex ?? textEndRegex;\n          // We may be ending an unquoted attribute value, so make sure we\n          // clear any pending attrNameEndIndex\n          attrNameEndIndex = -1;\n        } else if (match[ATTRIBUTE_NAME] === undefined) {\n          // Attribute name position\n          attrNameEndIndex = -2;\n        } else {\n          attrNameEndIndex = regex.lastIndex - match[SPACES_AND_EQUALS].length;\n          attrName = match[ATTRIBUTE_NAME];\n          regex =\n            match[QUOTE_CHAR] === undefined\n              ? tagEndRegex\n              : match[QUOTE_CHAR] === '\"'\n                ? doubleQuoteAttrEndRegex\n                : singleQuoteAttrEndRegex;\n        }\n      } else if (\n        regex === doubleQuoteAttrEndRegex ||\n        regex === singleQuoteAttrEndRegex\n      ) {\n        regex = tagEndRegex;\n      } else if (regex === commentEndRegex || regex === comment2EndRegex) {\n        regex = textEndRegex;\n      } else {\n        // Not one of the five state regexes, so it must be the dynamically\n        // created raw text regex and we're at the close of that element.\n        regex = tagEndRegex;\n        rawTextEndRegex = undefined;\n      }\n    }\n\n    if (DEV_MODE) {\n      // If we have a attrNameEndIndex, which indicates that we should\n      // rewrite the attribute name, assert that we're in a valid attribute\n      // position - either in a tag, or a quoted attribute value.\n      console.assert(\n        attrNameEndIndex === -1 ||\n          regex === tagEndRegex ||\n          regex === singleQuoteAttrEndRegex ||\n          regex === doubleQuoteAttrEndRegex,\n        'unexpected parse state B'\n      );\n    }\n\n    // We have four cases:\n    //  1. We're in text position, and not in a raw text element\n    //     (regex === textEndRegex): insert a comment marker.\n    //  2. We have a non-negative attrNameEndIndex which means we need to\n    //     rewrite the attribute name to add a bound attribute suffix.\n    //  3. We're at the non-first binding in a multi-binding attribute, use a\n    //     plain marker.\n    //  4. We're somewhere else inside the tag. If we're in attribute name\n    //     position (attrNameEndIndex === -2), add a sequential suffix to\n    //     generate a unique attribute name.\n\n    // Detect a binding next to self-closing tag end and insert a space to\n    // separate the marker from the tag end:\n    const end =\n      regex === tagEndRegex && strings[i + 1].startsWith('/>') ? ' ' : '';\n    html +=\n      regex === textEndRegex\n        ? s + nodeMarker\n        : attrNameEndIndex >= 0\n          ? (attrNames.push(attrName!),\n            s.slice(0, attrNameEndIndex) +\n              boundAttributeSuffix +\n              s.slice(attrNameEndIndex)) +\n            marker +\n            end\n          : s + marker + (attrNameEndIndex === -2 ? i : end);\n  }\n\n  const htmlResult: string | TrustedHTML =\n    html +\n    (strings[l] || '<?>') +\n    (type === SVG_RESULT ? '</svg>' : type === MATHML_RESULT ? '</math>' : '');\n\n  // Returned as an array for terseness\n  return [trustFromTemplateString(strings, htmlResult), attrNames];\n};\n\n/** @internal */\nexport type {Template};\nclass Template {\n  /** @internal */\n  el!: HTMLTemplateElement;\n\n  parts: Array<TemplatePart> = [];\n\n  constructor(\n    // This property needs to remain unminified.\n    {strings, ['_$litType$']: type}: UncompiledTemplateResult,\n    options?: RenderOptions\n  ) {\n    let node: Node | null;\n    let nodeIndex = 0;\n    let attrNameIndex = 0;\n    const partCount = strings.length - 1;\n    const parts = this.parts;\n\n    // Create template element\n    const [html, attrNames] = getTemplateHtml(strings, type);\n    this.el = Template.createElement(html, options);\n    walker.currentNode = this.el.content;\n\n    // Re-parent SVG or MathML nodes into template root\n    if (type === SVG_RESULT || type === MATHML_RESULT) {\n      const wrapper = this.el.content.firstChild!;\n      wrapper.replaceWith(...wrapper.childNodes);\n    }\n\n    // Walk the template to find binding markers and create TemplateParts\n    while ((node = walker.nextNode()) !== null && parts.length < partCount) {\n      if (node.nodeType === 1) {\n        if (DEV_MODE) {\n          const tag = (node as Element).localName;\n          // Warn if `textarea` includes an expression and throw if `template`\n          // does since these are not supported. We do this by checking\n          // innerHTML for anything that looks like a marker. This catches\n          // cases like bindings in textarea there markers turn into text nodes.\n          if (\n            /^(?:textarea|template)$/i!.test(tag) &&\n            (node as Element).innerHTML.includes(marker)\n          ) {\n            const m =\n              `Expressions are not supported inside \\`${tag}\\` ` +\n              `elements. See https://lit.dev/msg/expression-in-${tag} for more ` +\n              `information.`;\n            if (tag === 'template') {\n              throw new Error(m);\n            } else issueWarning('', m);\n          }\n        }\n        // TODO (justinfagnani): for attempted dynamic tag names, we don't\n        // increment the bindingIndex, and it'll be off by 1 in the element\n        // and off by two after it.\n        if ((node as Element).hasAttributes()) {\n          for (const name of (node as Element).getAttributeNames()) {\n            if (name.endsWith(boundAttributeSuffix)) {\n              const realName = attrNames[attrNameIndex++];\n              const value = (node as Element).getAttribute(name)!;\n              const statics = value.split(marker);\n              const m = /([.?@])?(.*)/.exec(realName)!;\n              parts.push({\n                type: ATTRIBUTE_PART,\n                index: nodeIndex,\n                name: m[2],\n                strings: statics,\n                ctor:\n                  m[1] === '.'\n                    ? PropertyPart\n                    : m[1] === '?'\n                      ? BooleanAttributePart\n                      : m[1] === '@'\n                        ? EventPart\n                        : AttributePart,\n              });\n              (node as Element).removeAttribute(name);\n            } else if (name.startsWith(marker)) {\n              parts.push({\n                type: ELEMENT_PART,\n                index: nodeIndex,\n              });\n              (node as Element).removeAttribute(name);\n            }\n          }\n        }\n        // TODO (justinfagnani): benchmark the regex against testing for each\n        // of the 3 raw text element names.\n        if (rawTextElement.test((node as Element).tagName)) {\n          // For raw text elements we need to split the text content on\n          // markers, create a Text node for each segment, and create\n          // a TemplatePart for each marker.\n          const strings = (node as Element).textContent!.split(marker);\n          const lastIndex = strings.length - 1;\n          if (lastIndex > 0) {\n            (node as Element).textContent = trustedTypes\n              ? (trustedTypes.emptyScript as unknown as '')\n              : '';\n            // Generate a new text node for each literal section\n            // These nodes are also used as the markers for child parts\n            for (let i = 0; i < lastIndex; i++) {\n              (node as Element).append(strings[i], createMarker());\n              // Walk past the marker node we just added\n              walker.nextNode();\n              parts.push({type: CHILD_PART, index: ++nodeIndex});\n            }\n            // Note because this marker is added after the walker's current\n            // node, it will be walked to in the outer loop (and ignored), so\n            // we don't need to adjust nodeIndex here\n            (node as Element).append(strings[lastIndex], createMarker());\n          }\n        }\n      } else if (node.nodeType === 8) {\n        const data = (node as Comment).data;\n        if (data === markerMatch) {\n          parts.push({type: CHILD_PART, index: nodeIndex});\n        } else {\n          let i = -1;\n          while ((i = (node as Comment).data.indexOf(marker, i + 1)) !== -1) {\n            // Comment node has a binding marker inside, make an inactive part\n            // The binding won't work, but subsequent bindings will\n            parts.push({type: COMMENT_PART, index: nodeIndex});\n            // Move to the end of the match\n            i += marker.length - 1;\n          }\n        }\n      }\n      nodeIndex++;\n    }\n\n    if (DEV_MODE) {\n      // If there was a duplicate attribute on a tag, then when the tag is\n      // parsed into an element the attribute gets de-duplicated. We can detect\n      // this mismatch if we haven't precisely consumed every attribute name\n      // when preparing the template. This works because `attrNames` is built\n      // from the template string and `attrNameIndex` comes from processing the\n      // resulting DOM.\n      if (attrNames.length !== attrNameIndex) {\n        throw new Error(\n          `Detected duplicate attribute bindings. This occurs if your template ` +\n            `has duplicate attributes on an element tag. For example ` +\n            `\"<input ?disabled=\\${true} ?disabled=\\${false}>\" contains a ` +\n            `duplicate \"disabled\" attribute. The error was detected in ` +\n            `the following template: \\n` +\n            '`' +\n            strings.join('${...}') +\n            '`'\n        );\n      }\n    }\n\n    // We could set walker.currentNode to another node here to prevent a memory\n    // leak, but every time we prepare a template, we immediately render it\n    // and re-use the walker in new TemplateInstance._clone().\n    debugLogEvent &&\n      debugLogEvent({\n        kind: 'template prep',\n        template: this,\n        clonableTemplate: this.el,\n        parts: this.parts,\n        strings,\n      });\n  }\n\n  // Overridden via `litHtmlPolyfillSupport` to provide platform support.\n  /** @nocollapse */\n  static createElement(html: TrustedHTML, _options?: RenderOptions) {\n    const el = d.createElement('template');\n    el.innerHTML = html as unknown as string;\n    return el;\n  }\n}\n\nexport interface Disconnectable {\n  _$parent?: Disconnectable;\n  _$disconnectableChildren?: Set<Disconnectable>;\n  // Rather than hold connection state on instances, Disconnectables recursively\n  // fetch the connection state from the RootPart they are connected in via\n  // getters up the Disconnectable tree via _$parent references. This pushes the\n  // cost of tracking the isConnected state to `AsyncDirectives`, and avoids\n  // needing to pass all Disconnectables (parts, template instances, and\n  // directives) their connection state each time it changes, which would be\n  // costly for trees that have no AsyncDirectives.\n  _$isConnected: boolean;\n}\n\nfunction resolveDirective(\n  part: ChildPart | AttributePart | ElementPart,\n  value: unknown,\n  parent: DirectiveParent = part,\n  attributeIndex?: number\n): unknown {\n  // Bail early if the value is explicitly noChange. Note, this means any\n  // nested directive is still attached and is not run.\n  if (value === noChange) {\n    return value;\n  }\n  let currentDirective =\n    attributeIndex !== undefined\n      ? (parent as AttributePart).__directives?.[attributeIndex]\n      : (parent as ChildPart | ElementPart | Directive).__directive;\n  const nextDirectiveConstructor = isPrimitive(value)\n    ? undefined\n    : // This property needs to remain unminified.\n      (value as DirectiveResult)['_$litDirective$'];\n  if (currentDirective?.constructor !== nextDirectiveConstructor) {\n    // This property needs to remain unminified.\n    currentDirective?.['_$notifyDirectiveConnectionChanged']?.(false);\n    if (nextDirectiveConstructor === undefined) {\n      currentDirective = undefined;\n    } else {\n      currentDirective = new nextDirectiveConstructor(part as PartInfo);\n      currentDirective._$initialize(part, parent, attributeIndex);\n    }\n    if (attributeIndex !== undefined) {\n      ((parent as AttributePart).__directives ??= [])[attributeIndex] =\n        currentDirective;\n    } else {\n      (parent as ChildPart | Directive).__directive = currentDirective;\n    }\n  }\n  if (currentDirective !== undefined) {\n    value = resolveDirective(\n      part,\n      currentDirective._$resolve(part, (value as DirectiveResult).values),\n      currentDirective,\n      attributeIndex\n    );\n  }\n  return value;\n}\n\nexport type {TemplateInstance};\n/**\n * An updateable instance of a Template. Holds references to the Parts used to\n * update the template instance.\n */\nclass TemplateInstance implements Disconnectable {\n  _$template: Template;\n  _$parts: Array<Part | undefined> = [];\n\n  /** @internal */\n  _$parent: ChildPart;\n  /** @internal */\n  _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n  constructor(template: Template, parent: ChildPart) {\n    this._$template = template;\n    this._$parent = parent;\n  }\n\n  // Called by ChildPart parentNode getter\n  get parentNode() {\n    return this._$parent.parentNode;\n  }\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n\n  // This method is separate from the constructor because we need to return a\n  // DocumentFragment and we don't want to hold onto it with an instance field.\n  _clone(options: RenderOptions | undefined) {\n    const {\n      el: {content},\n      parts: parts,\n    } = this._$template;\n    const fragment = (options?.creationScope ?? d).importNode(content, true);\n    walker.currentNode = fragment;\n\n    let node = walker.nextNode()!;\n    let nodeIndex = 0;\n    let partIndex = 0;\n    let templatePart = parts[0];\n\n    while (templatePart !== undefined) {\n      if (nodeIndex === templatePart.index) {\n        let part: Part | undefined;\n        if (templatePart.type === CHILD_PART) {\n          part = new ChildPart(\n            node as HTMLElement,\n            node.nextSibling,\n            this,\n            options\n          );\n        } else if (templatePart.type === ATTRIBUTE_PART) {\n          part = new templatePart.ctor(\n            node as HTMLElement,\n            templatePart.name,\n            templatePart.strings,\n            this,\n            options\n          );\n        } else if (templatePart.type === ELEMENT_PART) {\n          part = new ElementPart(node as HTMLElement, this, options);\n        }\n        this._$parts.push(part);\n        templatePart = parts[++partIndex];\n      }\n      if (nodeIndex !== templatePart?.index) {\n        node = walker.nextNode()!;\n        nodeIndex++;\n      }\n    }\n    // We need to set the currentNode away from the cloned tree so that we\n    // don't hold onto the tree even if the tree is detached and should be\n    // freed.\n    walker.currentNode = d;\n    return fragment;\n  }\n\n  _update(values: Array<unknown>) {\n    let i = 0;\n    for (const part of this._$parts) {\n      if (part !== undefined) {\n        debugLogEvent &&\n          debugLogEvent({\n            kind: 'set part',\n            part,\n            value: values[i],\n            valueIndex: i,\n            values,\n            templateInstance: this,\n          });\n        if ((part as AttributePart).strings !== undefined) {\n          (part as AttributePart)._$setValue(values, part as AttributePart, i);\n          // The number of values the part consumes is part.strings.length - 1\n          // since values are in between template spans. We increment i by 1\n          // later in the loop, so increment it by part.strings.length - 2 here\n          i += (part as AttributePart).strings!.length - 2;\n        } else {\n          part._$setValue(values[i]);\n        }\n      }\n      i++;\n    }\n  }\n}\n\n/*\n * Parts\n */\ntype AttributeTemplatePart = {\n  readonly type: typeof ATTRIBUTE_PART;\n  readonly index: number;\n  readonly name: string;\n  readonly ctor: typeof AttributePart;\n  readonly strings: ReadonlyArray<string>;\n};\ntype ChildTemplatePart = {\n  readonly type: typeof CHILD_PART;\n  readonly index: number;\n};\ntype ElementTemplatePart = {\n  readonly type: typeof ELEMENT_PART;\n  readonly index: number;\n};\ntype CommentTemplatePart = {\n  readonly type: typeof COMMENT_PART;\n  readonly index: number;\n};\n\n/**\n * A TemplatePart represents a dynamic part in a template, before the template\n * is instantiated. When a template is instantiated Parts are created from\n * TemplateParts.\n */\ntype TemplatePart =\n  | ChildTemplatePart\n  | AttributeTemplatePart\n  | ElementTemplatePart\n  | CommentTemplatePart;\n\nexport type Part =\n  | ChildPart\n  | AttributePart\n  | PropertyPart\n  | BooleanAttributePart\n  | ElementPart\n  | EventPart;\n\nexport type {ChildPart};\nclass ChildPart implements Disconnectable {\n  readonly type = CHILD_PART;\n  readonly options: RenderOptions | undefined;\n  _$committedValue: unknown = nothing;\n  /** @internal */\n  __directive?: Directive;\n  /** @internal */\n  _$startNode: ChildNode;\n  /** @internal */\n  _$endNode: ChildNode | null;\n  private _textSanitizer: ValueSanitizer | undefined;\n  /** @internal */\n  _$parent: Disconnectable | undefined;\n  /**\n   * Connection state for RootParts only (i.e. ChildPart without _$parent\n   * returned from top-level `render`). This field is unused otherwise. The\n   * intention would be clearer if we made `RootPart` a subclass of `ChildPart`\n   * with this field (and a different _$isConnected getter), but the subclass\n   * caused a perf regression, possibly due to making call sites polymorphic.\n   * @internal\n   */\n  __isConnected: boolean;\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    // ChildParts that are not at the root should always be created with a\n    // parent; only RootChildNode's won't, so they return the local isConnected\n    // state\n    return this._$parent?._$isConnected ?? this.__isConnected;\n  }\n\n  // The following fields will be patched onto ChildParts when required by\n  // AsyncDirective\n  /** @internal */\n  _$disconnectableChildren?: Set<Disconnectable> = undefined;\n  /** @internal */\n  _$notifyConnectionChanged?(\n    isConnected: boolean,\n    removeFromParent?: boolean,\n    from?: number\n  ): void;\n  /** @internal */\n  _$reparentDisconnectables?(parent: Disconnectable): void;\n\n  constructor(\n    startNode: ChildNode,\n    endNode: ChildNode | null,\n    parent: TemplateInstance | ChildPart | undefined,\n    options: RenderOptions | undefined\n  ) {\n    this._$startNode = startNode;\n    this._$endNode = endNode;\n    this._$parent = parent;\n    this.options = options;\n    // Note __isConnected is only ever accessed on RootParts (i.e. when there is\n    // no _$parent); the value on a non-root-part is \"don't care\", but checking\n    // for parent would be more code\n    this.__isConnected = options?.isConnected ?? true;\n    if (ENABLE_EXTRA_SECURITY_HOOKS) {\n      // Explicitly initialize for consistent class shape.\n      this._textSanitizer = undefined;\n    }\n  }\n\n  /**\n   * The parent node into which the part renders its content.\n   *\n   * A ChildPart's content consists of a range of adjacent child nodes of\n   * `.parentNode`, possibly bordered by 'marker nodes' (`.startNode` and\n   * `.endNode`).\n   *\n   * - If both `.startNode` and `.endNode` are non-null, then the part's content\n   * consists of all siblings between `.startNode` and `.endNode`, exclusively.\n   *\n   * - If `.startNode` is non-null but `.endNode` is null, then the part's\n   * content consists of all siblings following `.startNode`, up to and\n   * including the last child of `.parentNode`. If `.endNode` is non-null, then\n   * `.startNode` will always be non-null.\n   *\n   * - If both `.endNode` and `.startNode` are null, then the part's content\n   * consists of all child nodes of `.parentNode`.\n   */\n  get parentNode(): Node {\n    let parentNode: Node = wrap(this._$startNode).parentNode!;\n    const parent = this._$parent;\n    if (\n      parent !== undefined &&\n      parentNode?.nodeType === 11 /* Node.DOCUMENT_FRAGMENT */\n    ) {\n      // If the parentNode is a DocumentFragment, it may be because the DOM is\n      // still in the cloned fragment during initial render; if so, get the real\n      // parentNode the part will be committed into by asking the parent.\n      parentNode = (parent as ChildPart | TemplateInstance).parentNode;\n    }\n    return parentNode;\n  }\n\n  /**\n   * The part's leading marker node, if any. See `.parentNode` for more\n   * information.\n   */\n  get startNode(): Node | null {\n    return this._$startNode;\n  }\n\n  /**\n   * The part's trailing marker node, if any. See `.parentNode` for more\n   * information.\n   */\n  get endNode(): Node | null {\n    return this._$endNode;\n  }\n\n  _$setValue(value: unknown, directiveParent: DirectiveParent = this): void {\n    if (DEV_MODE && this.parentNode === null) {\n      throw new Error(\n        `This \\`ChildPart\\` has no \\`parentNode\\` and therefore cannot accept a value. This likely means the element containing the part was manipulated in an unsupported way outside of Lit's control such that the part's marker nodes were ejected from DOM. For example, setting the element's \\`innerHTML\\` or \\`textContent\\` can do this.`\n      );\n    }\n    value = resolveDirective(this, value, directiveParent);\n    if (isPrimitive(value)) {\n      // Non-rendering child values. It's important that these do not render\n      // empty text nodes to avoid issues with preventing default <slot>\n      // fallback content.\n      if (value === nothing || value == null || value === '') {\n        if (this._$committedValue !== nothing) {\n          debugLogEvent &&\n            debugLogEvent({\n              kind: 'commit nothing to child',\n              start: this._$startNode,\n              end: this._$endNode,\n              parent: this._$parent,\n              options: this.options,\n            });\n          this._$clear();\n        }\n        this._$committedValue = nothing;\n      } else if (value !== this._$committedValue && value !== noChange) {\n        this._commitText(value);\n      }\n      // This property needs to remain unminified.\n    } else if ((value as TemplateResult)['_$litType$'] !== undefined) {\n      this._commitTemplateResult(value as TemplateResult);\n    } else if ((value as Node).nodeType !== undefined) {\n      if (DEV_MODE && this.options?.host === value) {\n        this._commitText(\n          `[probable mistake: rendered a template's host in itself ` +\n            `(commonly caused by writing \\${this} in a template]`\n        );\n        console.warn(\n          `Attempted to render the template host`,\n          value,\n          `inside itself. This is almost always a mistake, and in dev mode `,\n          `we render some warning text. In production however, we'll `,\n          `render it, which will usually result in an error, and sometimes `,\n          `in the element disappearing from the DOM.`\n        );\n        return;\n      }\n      this._commitNode(value as Node);\n    } else if (isIterable(value)) {\n      this._commitIterable(value);\n    } else {\n      // Fallback, will render the string representation\n      this._commitText(value);\n    }\n  }\n\n  private _insert<T extends Node>(node: T) {\n    return wrap(wrap(this._$startNode).parentNode!).insertBefore(\n      node,\n      this._$endNode\n    );\n  }\n\n  private _commitNode(value: Node): void {\n    if (this._$committedValue !== value) {\n      this._$clear();\n      if (\n        ENABLE_EXTRA_SECURITY_HOOKS &&\n        sanitizerFactoryInternal !== noopSanitizer\n      ) {\n        const parentNodeName = this._$startNode.parentNode?.nodeName;\n        if (parentNodeName === 'STYLE' || parentNodeName === 'SCRIPT') {\n          let message = 'Forbidden';\n          if (DEV_MODE) {\n            if (parentNodeName === 'STYLE') {\n              message =\n                `Lit does not support binding inside style nodes. ` +\n                `This is a security risk, as style injection attacks can ` +\n                `exfiltrate data and spoof UIs. ` +\n                `Consider instead using css\\`...\\` literals ` +\n                `to compose styles, and do dynamic styling with ` +\n                `css custom properties, ::parts, <slot>s, ` +\n                `and by mutating the DOM rather than stylesheets.`;\n            } else {\n              message =\n                `Lit does not support binding inside script nodes. ` +\n                `This is a security risk, as it could allow arbitrary ` +\n                `code execution.`;\n            }\n          }\n          throw new Error(message);\n        }\n      }\n      debugLogEvent &&\n        debugLogEvent({\n          kind: 'commit node',\n          start: this._$startNode,\n          parent: this._$parent,\n          value: value,\n          options: this.options,\n        });\n      this._$committedValue = this._insert(value);\n    }\n  }\n\n  private _commitText(value: unknown): void {\n    // If the committed value is a primitive it means we called _commitText on\n    // the previous render, and we know that this._$startNode.nextSibling is a\n    // Text node. We can now just replace the text content (.data) of the node.\n    if (\n      this._$committedValue !== nothing &&\n      isPrimitive(this._$committedValue)\n    ) {\n      const node = wrap(this._$startNode).nextSibling as Text;\n      if (ENABLE_EXTRA_SECURITY_HOOKS) {\n        if (this._textSanitizer === undefined) {\n          this._textSanitizer = createSanitizer(node, 'data', 'property');\n        }\n        value = this._textSanitizer(value);\n      }\n      debugLogEvent &&\n        debugLogEvent({\n          kind: 'commit text',\n          node,\n          value,\n          options: this.options,\n        });\n      (node as Text).data = value as string;\n    } else {\n      if (ENABLE_EXTRA_SECURITY_HOOKS) {\n        const textNode = d.createTextNode('');\n        this._commitNode(textNode);\n        // When setting text content, for security purposes it matters a lot\n        // what the parent is. For example, <style> and <script> need to be\n        // handled with care, while <span> does not. So first we need to put a\n        // text node into the document, then we can sanitize its content.\n        if (this._textSanitizer === undefined) {\n          this._textSanitizer = createSanitizer(textNode, 'data', 'property');\n        }\n        value = this._textSanitizer(value);\n        debugLogEvent &&\n          debugLogEvent({\n            kind: 'commit text',\n            node: textNode,\n            value,\n            options: this.options,\n          });\n        textNode.data = value as string;\n      } else {\n        this._commitNode(d.createTextNode(value as string));\n        debugLogEvent &&\n          debugLogEvent({\n            kind: 'commit text',\n            node: wrap(this._$startNode).nextSibling as Text,\n            value,\n            options: this.options,\n          });\n      }\n    }\n    this._$committedValue = value;\n  }\n\n  private _commitTemplateResult(\n    result: TemplateResult | CompiledTemplateResult\n  ): void {\n    // This property needs to remain unminified.\n    const {values, ['_$litType$']: type} = result;\n    // If $litType$ is a number, result is a plain TemplateResult and we get\n    // the template from the template cache. If not, result is a\n    // CompiledTemplateResult and _$litType$ is a CompiledTemplate and we need\n    // to create the <template> element the first time we see it.\n    const template: Template | CompiledTemplate =\n      typeof type === 'number'\n        ? this._$getTemplate(result as UncompiledTemplateResult)\n        : (type.el === undefined &&\n            (type.el = Template.createElement(\n              trustFromTemplateString(type.h, type.h[0]),\n              this.options\n            )),\n          type);\n\n    if ((this._$committedValue as TemplateInstance)?._$template === template) {\n      debugLogEvent &&\n        debugLogEvent({\n          kind: 'template updating',\n          template,\n          instance: this._$committedValue as TemplateInstance,\n          parts: (this._$committedValue as TemplateInstance)._$parts,\n          options: this.options,\n          values,\n        });\n      (this._$committedValue as TemplateInstance)._update(values);\n    } else {\n      const instance = new TemplateInstance(template as Template, this);\n      const fragment = instance._clone(this.options);\n      debugLogEvent &&\n        debugLogEvent({\n          kind: 'template instantiated',\n          template,\n          instance,\n          parts: instance._$parts,\n          options: this.options,\n          fragment,\n          values,\n        });\n      instance._update(values);\n      debugLogEvent &&\n        debugLogEvent({\n          kind: 'template instantiated and updated',\n          template,\n          instance,\n          parts: instance._$parts,\n          options: this.options,\n          fragment,\n          values,\n        });\n      this._commitNode(fragment);\n      this._$committedValue = instance;\n    }\n  }\n\n  // Overridden via `litHtmlPolyfillSupport` to provide platform support.\n  /** @internal */\n  _$getTemplate(result: UncompiledTemplateResult) {\n    let template = templateCache.get(result.strings);\n    if (template === undefined) {\n      templateCache.set(result.strings, (template = new Template(result)));\n    }\n    return template;\n  }\n\n  private _commitIterable(value: Iterable<unknown>): void {\n    // For an Iterable, we create a new InstancePart per item, then set its\n    // value to the item. This is a little bit of overhead for every item in\n    // an Iterable, but it lets us recurse easily and efficiently update Arrays\n    // of TemplateResults that will be commonly returned from expressions like:\n    // array.map((i) => html`${i}`), by reusing existing TemplateInstances.\n\n    // If value is an array, then the previous render was of an\n    // iterable and value will contain the ChildParts from the previous\n    // render. If value is not an array, clear this part and make a new\n    // array for ChildParts.\n    if (!isArray(this._$committedValue)) {\n      this._$committedValue = [];\n      this._$clear();\n    }\n\n    // Lets us keep track of how many items we stamped so we can clear leftover\n    // items from a previous render\n    const itemParts = this._$committedValue as ChildPart[];\n    let partIndex = 0;\n    let itemPart: ChildPart | undefined;\n\n    for (const item of value) {\n      if (partIndex === itemParts.length) {\n        // If no existing part, create a new one\n        // TODO (justinfagnani): test perf impact of always creating two parts\n        // instead of sharing parts between nodes\n        // https://github.com/lit/lit/issues/1266\n        itemParts.push(\n          (itemPart = new ChildPart(\n            this._insert(createMarker()),\n            this._insert(createMarker()),\n            this,\n            this.options\n          ))\n        );\n      } else {\n        // Reuse an existing part\n        itemPart = itemParts[partIndex];\n      }\n      itemPart._$setValue(item);\n      partIndex++;\n    }\n\n    if (partIndex < itemParts.length) {\n      // itemParts always have end nodes\n      this._$clear(\n        itemPart && wrap(itemPart._$endNode!).nextSibling,\n        partIndex\n      );\n      // Truncate the parts array so _value reflects the current state\n      itemParts.length = partIndex;\n    }\n  }\n\n  /**\n   * Removes the nodes contained within this Part from the DOM.\n   *\n   * @param start Start node to clear from, for clearing a subset of the part's\n   *     DOM (used when truncating iterables)\n   * @param from  When `start` is specified, the index within the iterable from\n   *     which ChildParts are being removed, used for disconnecting directives in\n   *     those Parts.\n   *\n   * @internal\n   */\n  _$clear(\n    start: ChildNode | null = wrap(this._$startNode).nextSibling,\n    from?: number\n  ) {\n    this._$notifyConnectionChanged?.(false, true, from);\n    while (start && start !== this._$endNode) {\n      const n = wrap(start!).nextSibling;\n      (wrap(start!) as Element).remove();\n      start = n;\n    }\n  }\n  /**\n   * Implementation of RootPart's `isConnected`. Note that this method\n   * should only be called on `RootPart`s (the `ChildPart` returned from a\n   * top-level `render()` call). It has no effect on non-root ChildParts.\n   * @param isConnected Whether to set\n   * @internal\n   */\n  setConnected(isConnected: boolean) {\n    if (this._$parent === undefined) {\n      this.__isConnected = isConnected;\n      this._$notifyConnectionChanged?.(isConnected);\n    } else if (DEV_MODE) {\n      throw new Error(\n        'part.setConnected() may only be called on a ' +\n          'RootPart returned from render().'\n      );\n    }\n  }\n}\n\n/**\n * A top-level `ChildPart` returned from `render` that manages the connected\n * state of `AsyncDirective`s created throughout the tree below it.\n */\nexport interface RootPart extends ChildPart {\n  /**\n   * Sets the connection state for `AsyncDirective`s contained within this root\n   * ChildPart.\n   *\n   * lit-html does not automatically monitor the connectedness of DOM rendered;\n   * as such, it is the responsibility of the caller to `render` to ensure that\n   * `part.setConnected(false)` is called before the part object is potentially\n   * discarded, to ensure that `AsyncDirective`s have a chance to dispose of\n   * any resources being held. If a `RootPart` that was previously\n   * disconnected is subsequently re-connected (and its `AsyncDirective`s should\n   * re-connect), `setConnected(true)` should be called.\n   *\n   * @param isConnected Whether directives within this tree should be connected\n   * or not\n   */\n  setConnected(isConnected: boolean): void;\n}\n\nexport type {AttributePart};\nclass AttributePart implements Disconnectable {\n  readonly type:\n    | typeof ATTRIBUTE_PART\n    | typeof PROPERTY_PART\n    | typeof BOOLEAN_ATTRIBUTE_PART\n    | typeof EVENT_PART = ATTRIBUTE_PART;\n  readonly element: HTMLElement;\n  readonly name: string;\n  readonly options: RenderOptions | undefined;\n\n  /**\n   * If this attribute part represents an interpolation, this contains the\n   * static strings of the interpolation. For single-value, complete bindings,\n   * this is undefined.\n   */\n  readonly strings?: ReadonlyArray<string>;\n  /** @internal */\n  _$committedValue: unknown | Array<unknown> = nothing;\n  /** @internal */\n  __directives?: Array<Directive | undefined>;\n  /** @internal */\n  _$parent: Disconnectable;\n  /** @internal */\n  _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n  protected _sanitizer: ValueSanitizer | undefined;\n\n  get tagName() {\n    return this.element.tagName;\n  }\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n\n  constructor(\n    element: HTMLElement,\n    name: string,\n    strings: ReadonlyArray<string>,\n    parent: Disconnectable,\n    options: RenderOptions | undefined\n  ) {\n    this.element = element;\n    this.name = name;\n    this._$parent = parent;\n    this.options = options;\n    if (strings.length > 2 || strings[0] !== '' || strings[1] !== '') {\n      this._$committedValue = new Array(strings.length - 1).fill(new String());\n      this.strings = strings;\n    } else {\n      this._$committedValue = nothing;\n    }\n    if (ENABLE_EXTRA_SECURITY_HOOKS) {\n      this._sanitizer = undefined;\n    }\n  }\n\n  /**\n   * Sets the value of this part by resolving the value from possibly multiple\n   * values and static strings and committing it to the DOM.\n   * If this part is single-valued, `this._strings` will be undefined, and the\n   * method will be called with a single value argument. If this part is\n   * multi-value, `this._strings` will be defined, and the method is called\n   * with the value array of the part's owning TemplateInstance, and an offset\n   * into the value array from which the values should be read.\n   * This method is overloaded this way to eliminate short-lived array slices\n   * of the template instance values, and allow a fast-path for single-valued\n   * parts.\n   *\n   * @param value The part value, or an array of values for multi-valued parts\n   * @param valueIndex the index to start reading values from. `undefined` for\n   *   single-valued parts\n   * @param noCommit causes the part to not commit its value to the DOM. Used\n   *   in hydration to prime attribute parts with their first-rendered value,\n   *   but not set the attribute, and in SSR to no-op the DOM operation and\n   *   capture the value for serialization.\n   *\n   * @internal\n   */\n  _$setValue(\n    value: unknown | Array<unknown>,\n    directiveParent: DirectiveParent = this,\n    valueIndex?: number,\n    noCommit?: boolean\n  ) {\n    const strings = this.strings;\n\n    // Whether any of the values has changed, for dirty-checking\n    let change = false;\n\n    if (strings === undefined) {\n      // Single-value binding case\n      value = resolveDirective(this, value, directiveParent, 0);\n      change =\n        !isPrimitive(value) ||\n        (value !== this._$committedValue && value !== noChange);\n      if (change) {\n        this._$committedValue = value;\n      }\n    } else {\n      // Interpolation case\n      const values = value as Array<unknown>;\n      value = strings[0];\n\n      let i, v;\n      for (i = 0; i < strings.length - 1; i++) {\n        v = resolveDirective(this, values[valueIndex! + i], directiveParent, i);\n\n        if (v === noChange) {\n          // If the user-provided value is `noChange`, use the previous value\n          v = (this._$committedValue as Array<unknown>)[i];\n        }\n        change ||=\n          !isPrimitive(v) || v !== (this._$committedValue as Array<unknown>)[i];\n        if (v === nothing) {\n          value = nothing;\n        } else if (value !== nothing) {\n          value += (v ?? '') + strings[i + 1];\n        }\n        // We always record each value, even if one is `nothing`, for future\n        // change detection.\n        (this._$committedValue as Array<unknown>)[i] = v;\n      }\n    }\n    if (change && !noCommit) {\n      this._commitValue(value);\n    }\n  }\n\n  /** @internal */\n  _commitValue(value: unknown) {\n    if (value === nothing) {\n      (wrap(this.element) as Element).removeAttribute(this.name);\n    } else {\n      if (ENABLE_EXTRA_SECURITY_HOOKS) {\n        if (this._sanitizer === undefined) {\n          this._sanitizer = sanitizerFactoryInternal(\n            this.element,\n            this.name,\n            'attribute'\n          );\n        }\n        value = this._sanitizer(value ?? '');\n      }\n      debugLogEvent &&\n        debugLogEvent({\n          kind: 'commit attribute',\n          element: this.element,\n          name: this.name,\n          value,\n          options: this.options,\n        });\n      (wrap(this.element) as Element).setAttribute(\n        this.name,\n        (value ?? '') as string\n      );\n    }\n  }\n}\n\nexport type {PropertyPart};\nclass PropertyPart extends AttributePart {\n  override readonly type = PROPERTY_PART;\n\n  /** @internal */\n  override _commitValue(value: unknown) {\n    if (ENABLE_EXTRA_SECURITY_HOOKS) {\n      if (this._sanitizer === undefined) {\n        this._sanitizer = sanitizerFactoryInternal(\n          this.element,\n          this.name,\n          'property'\n        );\n      }\n      value = this._sanitizer(value);\n    }\n    debugLogEvent &&\n      debugLogEvent({\n        kind: 'commit property',\n        element: this.element,\n        name: this.name,\n        value,\n        options: this.options,\n      });\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (this.element as any)[this.name] = value === nothing ? undefined : value;\n  }\n}\n\nexport type {BooleanAttributePart};\nclass BooleanAttributePart extends AttributePart {\n  override readonly type = BOOLEAN_ATTRIBUTE_PART;\n\n  /** @internal */\n  override _commitValue(value: unknown) {\n    debugLogEvent &&\n      debugLogEvent({\n        kind: 'commit boolean attribute',\n        element: this.element,\n        name: this.name,\n        value: !!(value && value !== nothing),\n        options: this.options,\n      });\n    (wrap(this.element) as Element).toggleAttribute(\n      this.name,\n      !!value && value !== nothing\n    );\n  }\n}\n\ntype EventListenerWithOptions = EventListenerOrEventListenerObject &\n  Partial<AddEventListenerOptions>;\n\n/**\n * An AttributePart that manages an event listener via add/removeEventListener.\n *\n * This part works by adding itself as the event listener on an element, then\n * delegating to the value passed to it. This reduces the number of calls to\n * add/removeEventListener if the listener changes frequently, such as when an\n * inline function is used as a listener.\n *\n * Because event options are passed when adding listeners, we must take case\n * to add and remove the part as a listener when the event options change.\n */\nexport type {EventPart};\nclass EventPart extends AttributePart {\n  override readonly type = EVENT_PART;\n\n  constructor(\n    element: HTMLElement,\n    name: string,\n    strings: ReadonlyArray<string>,\n    parent: Disconnectable,\n    options: RenderOptions | undefined\n  ) {\n    super(element, name, strings, parent, options);\n\n    if (DEV_MODE && this.strings !== undefined) {\n      throw new Error(\n        `A \\`<${element.localName}>\\` has a \\`@${name}=...\\` listener with ` +\n          'invalid content. Event listeners in templates must have exactly ' +\n          'one expression and no surrounding text.'\n      );\n    }\n  }\n\n  // EventPart does not use the base _$setValue/_resolveValue implementation\n  // since the dirty checking is more complex\n  /** @internal */\n  override _$setValue(\n    newListener: unknown,\n    directiveParent: DirectiveParent = this\n  ) {\n    newListener =\n      resolveDirective(this, newListener, directiveParent, 0) ?? nothing;\n    if (newListener === noChange) {\n      return;\n    }\n    const oldListener = this._$committedValue;\n\n    // If the new value is nothing or any options change we have to remove the\n    // part as a listener.\n    const shouldRemoveListener =\n      (newListener === nothing && oldListener !== nothing) ||\n      (newListener as EventListenerWithOptions).capture !==\n        (oldListener as EventListenerWithOptions).capture ||\n      (newListener as EventListenerWithOptions).once !==\n        (oldListener as EventListenerWithOptions).once ||\n      (newListener as EventListenerWithOptions).passive !==\n        (oldListener as EventListenerWithOptions).passive;\n\n    // If the new value is not nothing and we removed the listener, we have\n    // to add the part as a listener.\n    const shouldAddListener =\n      newListener !== nothing &&\n      (oldListener === nothing || shouldRemoveListener);\n\n    debugLogEvent &&\n      debugLogEvent({\n        kind: 'commit event listener',\n        element: this.element,\n        name: this.name,\n        value: newListener,\n        options: this.options,\n        removeListener: shouldRemoveListener,\n        addListener: shouldAddListener,\n        oldListener,\n      });\n    if (shouldRemoveListener) {\n      this.element.removeEventListener(\n        this.name,\n        this,\n        oldListener as EventListenerWithOptions\n      );\n    }\n    if (shouldAddListener) {\n      this.element.addEventListener(\n        this.name,\n        this,\n        newListener as EventListenerWithOptions\n      );\n    }\n    this._$committedValue = newListener;\n  }\n\n  handleEvent(event: Event) {\n    if (typeof this._$committedValue === 'function') {\n      this._$committedValue.call(this.options?.host ?? this.element, event);\n    } else {\n      (this._$committedValue as EventListenerObject).handleEvent(event);\n    }\n  }\n}\n\nexport type {ElementPart};\nclass ElementPart implements Disconnectable {\n  readonly type = ELEMENT_PART;\n\n  /** @internal */\n  __directive?: Directive;\n\n  // This is to ensure that every Part has a _$committedValue\n  _$committedValue: undefined;\n\n  /** @internal */\n  _$parent!: Disconnectable;\n\n  /** @internal */\n  _$disconnectableChildren?: Set<Disconnectable> = undefined;\n\n  options: RenderOptions | undefined;\n\n  constructor(\n    public element: Element,\n    parent: Disconnectable,\n    options: RenderOptions | undefined\n  ) {\n    this._$parent = parent;\n    this.options = options;\n  }\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n\n  _$setValue(value: unknown): void {\n    debugLogEvent &&\n      debugLogEvent({\n        kind: 'commit to element binding',\n        element: this.element,\n        value,\n        options: this.options,\n      });\n    resolveDirective(this, value);\n  }\n}\n\n/**\n * END USERS SHOULD NOT RELY ON THIS OBJECT.\n *\n * Private exports for use by other Lit packages, not intended for use by\n * external users.\n *\n * We currently do not make a mangled rollup build of the lit-ssr code. In order\n * to keep a number of (otherwise private) top-level exports mangled in the\n * client side code, we export a _$LH object containing those members (or\n * helper methods for accessing private fields of those members), and then\n * re-export them for use in lit-ssr. This keeps lit-ssr agnostic to whether the\n * client-side code is being used in `dev` mode or `prod` mode.\n *\n * This has a unique name, to disambiguate it from private exports in\n * lit-element, which re-exports all of lit-html.\n *\n * @private\n */\nexport const _$LH = {\n  // Used in lit-ssr\n  _boundAttributeSuffix: boundAttributeSuffix,\n  _marker: marker,\n  _markerMatch: markerMatch,\n  _HTML_RESULT: HTML_RESULT,\n  _getTemplateHtml: getTemplateHtml,\n  // Used in tests and private-ssr-support\n  _TemplateInstance: TemplateInstance,\n  _isIterable: isIterable,\n  _resolveDirective: resolveDirective,\n  _ChildPart: ChildPart,\n  _AttributePart: AttributePart,\n  _BooleanAttributePart: BooleanAttributePart,\n  _EventPart: EventPart,\n  _PropertyPart: PropertyPart,\n  _ElementPart: ElementPart,\n};\n\n// Apply polyfills if available\nconst polyfillSupport = DEV_MODE\n  ? global.litHtmlPolyfillSupportDevMode\n  : global.litHtmlPolyfillSupport;\npolyfillSupport?.(Template, ChildPart);\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for lit-html usage.\n(global.litHtmlVersions ??= []).push('3.3.0');\nif (DEV_MODE && global.litHtmlVersions.length > 1) {\n  queueMicrotask(() => {\n    issueWarning!(\n      'multiple-versions',\n      `Multiple versions of Lit loaded. ` +\n        `Loading multiple versions is not recommended.`\n    );\n  });\n}\n\n/**\n * Renders a value, usually a lit-html TemplateResult, to the container.\n *\n * This example renders the text \"Hello, Zoe!\" inside a paragraph tag, appending\n * it to the container `document.body`.\n *\n * ```js\n * import {html, render} from 'lit';\n *\n * const name = \"Zoe\";\n * render(html`<p>Hello, ${name}!</p>`, document.body);\n * ```\n *\n * @param value Any [renderable\n *   value](https://lit.dev/docs/templates/expressions/#child-expressions),\n *   typically a {@linkcode TemplateResult} created by evaluating a template tag\n *   like {@linkcode html} or {@linkcode svg}.\n * @param container A DOM container to render to. The first render will append\n *   the rendered value to the container, and subsequent renders will\n *   efficiently update the rendered value if the same result type was\n *   previously rendered there.\n * @param options See {@linkcode RenderOptions} for options documentation.\n * @see\n * {@link https://lit.dev/docs/libraries/standalone-templates/#rendering-lit-html-templates| Rendering Lit HTML Templates}\n */\nexport const render = (\n  value: unknown,\n  container: HTMLElement | DocumentFragment,\n  options?: RenderOptions\n): RootPart => {\n  if (DEV_MODE && container == null) {\n    // Give a clearer error message than\n    //     Uncaught TypeError: Cannot read properties of null (reading\n    //     '_$litPart$')\n    // which reads like an internal Lit error.\n    throw new TypeError(`The container to render into may not be ${container}`);\n  }\n  const renderId = DEV_MODE ? debugLogRenderId++ : 0;\n  const partOwnerNode = options?.renderBefore ?? container;\n  // This property needs to remain unminified.\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  let part: ChildPart = (partOwnerNode as any)['_$litPart$'];\n  debugLogEvent &&\n    debugLogEvent({\n      kind: 'begin render',\n      id: renderId,\n      value,\n      container,\n      options,\n      part,\n    });\n  if (part === undefined) {\n    const endNode = options?.renderBefore ?? null;\n    // This property needs to remain unminified.\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (partOwnerNode as any)['_$litPart$'] = part = new ChildPart(\n      container.insertBefore(createMarker(), endNode),\n      endNode,\n      undefined,\n      options ?? {}\n    );\n  }\n  part._$setValue(value);\n  debugLogEvent &&\n    debugLogEvent({\n      kind: 'end render',\n      id: renderId,\n      value,\n      container,\n      options,\n      part,\n    });\n  return part as RootPart;\n};\n\nif (ENABLE_EXTRA_SECURITY_HOOKS) {\n  render.setSanitizer = setSanitizer;\n  render.createSanitizer = createSanitizer;\n  if (DEV_MODE) {\n    render._testOnlyClearSanitizerFactoryDoNotCallOrElse =\n      _testOnlyClearSanitizerFactoryDoNotCallOrElse;\n  }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * The main LitElement module, which defines the {@linkcode LitElement} base\n * class and related APIs.\n *\n * LitElement components can define a template and a set of observed\n * properties. Changing an observed property triggers a re-render of the\n * element.\n *\n * Import {@linkcode LitElement} and {@linkcode html} from this module to\n * create a component:\n *\n *  ```js\n * import {LitElement, html} from 'lit-element';\n *\n * class MyElement extends LitElement {\n *\n *   // Declare observed properties\n *   static get properties() {\n *     return {\n *       adjective: {}\n *     }\n *   }\n *\n *   constructor() {\n *     this.adjective = 'awesome';\n *   }\n *\n *   // Define the element's template\n *   render() {\n *     return html`<p>your ${adjective} template here</p>`;\n *   }\n * }\n *\n * customElements.define('my-element', MyElement);\n * ```\n *\n * `LitElement` extends {@linkcode ReactiveElement} and adds lit-html\n * templating. The `ReactiveElement` class is provided for users that want to\n * build their own custom element base classes that don't use lit-html.\n *\n * @packageDocumentation\n */\nimport {PropertyValues, ReactiveElement} from '@lit/reactive-element';\nimport {render, RenderOptions, noChange, RootPart} from 'lit-html';\nexport * from '@lit/reactive-element';\nexport * from 'lit-html';\n\nimport {LitUnstable} from 'lit-html';\nimport {ReactiveUnstable} from '@lit/reactive-element';\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Unstable {\n  /**\n   * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n   * we will emit 'lit-debug' events to window, with live details about the update and render\n   * lifecycle. These can be useful for writing debug tooling and visualizations.\n   *\n   * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n   * making certain operations that are normally very cheap (like a no-op render) much slower,\n   * because we must copy data and dispatch events.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-namespace\n  export namespace DebugLog {\n    export type Entry =\n      | LitUnstable.DebugLog.Entry\n      | ReactiveUnstable.DebugLog.Entry;\n  }\n}\n/*\n * When using Closure Compiler, JSCompiler_renameProperty(property, object) is\n * replaced at compile time by the munged name for object[property]. We cannot\n * alias this function, so we have to use a small shim that has the same\n * behavior when not compiling.\n */\n/*@__INLINE__*/\nconst JSCompiler_renameProperty = <P extends PropertyKey>(\n  prop: P,\n  _obj: unknown\n): P => prop;\n\nconst DEV_MODE = true;\n// Allows minifiers to rename references to globalThis\nconst global = globalThis;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n  // Ensure warnings are issued only 1x, even if multiple versions of Lit\n  // are loaded.\n  global.litIssuedWarnings ??= new Set();\n\n  /**\n   * Issue a warning if we haven't already, based either on `code` or `warning`.\n   * Warnings are disabled automatically only by `warning`; disabling via `code`\n   * can be done by users.\n   */\n  issueWarning = (code: string, warning: string) => {\n    warning += ` See https://lit.dev/msg/${code} for more information.`;\n    if (\n      !global.litIssuedWarnings!.has(warning) &&\n      !global.litIssuedWarnings!.has(code)\n    ) {\n      console.warn(warning);\n      global.litIssuedWarnings!.add(warning);\n    }\n  };\n}\n\n/**\n * Base element class that manages element properties and attributes, and\n * renders a lit-html template.\n *\n * To define a component, subclass `LitElement` and implement a\n * `render` method to provide the component's template. Define properties\n * using the {@linkcode LitElement.properties properties} property or the\n * {@linkcode property} decorator.\n */\nexport class LitElement extends ReactiveElement {\n  // This property needs to remain unminified.\n  static ['_$litElement$'] = true;\n\n  /**\n   * @category rendering\n   */\n  readonly renderOptions: RenderOptions = {host: this};\n\n  private __childPart: RootPart | undefined = undefined;\n\n  /**\n   * @category rendering\n   */\n  protected override createRenderRoot() {\n    const renderRoot = super.createRenderRoot();\n    // When adoptedStyleSheets are shimmed, they are inserted into the\n    // shadowRoot by createRenderRoot. Adjust the renderBefore node so that\n    // any styles in Lit content render before adoptedStyleSheets. This is\n    // important so that adoptedStyleSheets have precedence over styles in\n    // the shadowRoot.\n    this.renderOptions.renderBefore ??= renderRoot!.firstChild as ChildNode;\n    return renderRoot;\n  }\n\n  /**\n   * Updates the element. This method reflects property values to attributes\n   * and calls `render` to render DOM via lit-html. Setting properties inside\n   * this method will *not* trigger another update.\n   * @param changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected override update(changedProperties: PropertyValues) {\n    // Setting properties in `render` should not trigger an update. Since\n    // updates are allowed after super.update, it's important to call `render`\n    // before that.\n    const value = this.render();\n    if (!this.hasUpdated) {\n      this.renderOptions.isConnected = this.isConnected;\n    }\n    super.update(changedProperties);\n    this.__childPart = render(value, this.renderRoot, this.renderOptions);\n  }\n\n  /**\n   * Invoked when the component is added to the document's DOM.\n   *\n   * In `connectedCallback()` you should setup tasks that should only occur when\n   * the element is connected to the document. The most common of these is\n   * adding event listeners to nodes external to the element, like a keydown\n   * event handler added to the window.\n   *\n   * ```ts\n   * connectedCallback() {\n   *   super.connectedCallback();\n   *   addEventListener('keydown', this._handleKeydown);\n   * }\n   * ```\n   *\n   * Typically, anything done in `connectedCallback()` should be undone when the\n   * element is disconnected, in `disconnectedCallback()`.\n   *\n   * @category lifecycle\n   */\n  override connectedCallback() {\n    super.connectedCallback();\n    this.__childPart?.setConnected(true);\n  }\n\n  /**\n   * Invoked when the component is removed from the document's DOM.\n   *\n   * This callback is the main signal to the element that it may no longer be\n   * used. `disconnectedCallback()` should ensure that nothing is holding a\n   * reference to the element (such as event listeners added to nodes external\n   * to the element), so that it is free to be garbage collected.\n   *\n   * ```ts\n   * disconnectedCallback() {\n   *   super.disconnectedCallback();\n   *   window.removeEventListener('keydown', this._handleKeydown);\n   * }\n   * ```\n   *\n   * An element may be re-connected after being disconnected.\n   *\n   * @category lifecycle\n   */\n  override disconnectedCallback() {\n    super.disconnectedCallback();\n    this.__childPart?.setConnected(false);\n  }\n\n  /**\n   * Invoked on each update to perform rendering tasks. This method may return\n   * any value renderable by lit-html's `ChildPart` - typically a\n   * `TemplateResult`. Setting properties inside this method will *not* trigger\n   * the element to update.\n   * @category rendering\n   */\n  protected render(): unknown {\n    return noChange;\n  }\n}\n\n/**\n * Ensure this class is marked as `finalized` as an optimization ensuring\n * it will not needlessly try to `finalize`.\n *\n * Note this property name is a string to prevent breaking Closure JS Compiler\n * optimizations. See @lit/reactive-element for more information.\n */\n(LitElement as unknown as Record<string, unknown>)[\n  JSCompiler_renameProperty('finalized', LitElement)\n] = true;\n\n// Install hydration if available\nglobal.litElementHydrateSupport?.({LitElement});\n\n// Apply polyfills if available\nconst polyfillSupport = DEV_MODE\n  ? global.litElementPolyfillSupportDevMode\n  : global.litElementPolyfillSupport;\npolyfillSupport?.({LitElement});\n\n/**\n * END USERS SHOULD NOT RELY ON THIS OBJECT.\n *\n * Private exports for use by other Lit packages, not intended for use by\n * external users.\n *\n * We currently do not make a mangled rollup build of the lit-ssr code. In order\n * to keep a number of (otherwise private) top-level exports  mangled in the\n * client side code, we export a _$LE object containing those members (or\n * helper methods for accessing private fields of those members), and then\n * re-export them for use in lit-ssr. This keeps lit-ssr agnostic to whether the\n * client-side code is being used in `dev` mode or `prod` mode.\n *\n * This has a unique name, to disambiguate it from private exports in\n * lit-html, since this module re-exports all of lit-html.\n *\n * @private\n */\nexport const _$LE = {\n  _$attributeToProperty: (\n    el: LitElement,\n    name: string,\n    value: string | null\n  ) => {\n    // eslint-disable-next-line\n    (el as any)._$attributeToProperty(name, value);\n  },\n  // eslint-disable-next-line\n  _$changedProperties: (el: LitElement) => (el as any)._$changedProperties,\n};\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for LitElement usage.\n(global.litElementVersions ??= []).push('4.2.0');\nif (DEV_MODE && global.litElementVersions.length > 1) {\n  queueMicrotask(() => {\n    issueWarning!(\n      'multiple-versions',\n      `Multiple versions of Lit loaded. Loading multiple versions ` +\n        `is not recommended.`\n    );\n  });\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport type {Constructor} from './base.js';\n\n/**\n * Allow for custom element classes with private constructors\n */\ntype CustomElementClass = Omit<typeof HTMLElement, 'new'>;\n\nexport type CustomElementDecorator = {\n  // legacy\n  (cls: CustomElementClass): void;\n\n  // standard\n  (\n    target: CustomElementClass,\n    context: ClassDecoratorContext<Constructor<HTMLElement>>\n  ): void;\n};\n\n/**\n * Class decorator factory that defines the decorated class as a custom element.\n *\n * ```js\n * @customElement('my-element')\n * class MyElement extends LitElement {\n *   render() {\n *     return html``;\n *   }\n * }\n * ```\n * @category Decorator\n * @param tagName The tag name of the custom element to define.\n */\nexport const customElement =\n  (tagName: string): CustomElementDecorator =>\n  (\n    classOrTarget: CustomElementClass | Constructor<HTMLElement>,\n    context?: ClassDecoratorContext<Constructor<HTMLElement>>\n  ) => {\n    if (context !== undefined) {\n      context.addInitializer(() => {\n        customElements.define(\n          tagName,\n          classOrTarget as CustomElementConstructor\n        );\n      });\n    } else {\n      customElements.define(tagName, classOrTarget as CustomElementConstructor);\n    }\n  };\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport {\n  type PropertyDeclaration,\n  type ReactiveElement,\n  defaultConverter,\n  notEqual,\n} from '../reactive-element.js';\nimport type {Interface} from './base.js';\n\nconst DEV_MODE = true;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n  // Ensure warnings are issued only 1x, even if multiple versions of Lit\n  // are loaded.\n  globalThis.litIssuedWarnings ??= new Set();\n\n  /**\n   * Issue a warning if we haven't already, based either on `code` or `warning`.\n   * Warnings are disabled automatically only by `warning`; disabling via `code`\n   * can be done by users.\n   */\n  issueWarning = (code: string, warning: string) => {\n    warning += ` See https://lit.dev/msg/${code} for more information.`;\n    if (\n      !globalThis.litIssuedWarnings!.has(warning) &&\n      !globalThis.litIssuedWarnings!.has(code)\n    ) {\n      console.warn(warning);\n      globalThis.litIssuedWarnings!.add(warning);\n    }\n  };\n}\n\n// Overloads for property decorator so that TypeScript can infer the correct\n// return type when a decorator is used as an accessor decorator or a setter\n// decorator.\nexport type PropertyDecorator = {\n  // accessor decorator signature\n  <C extends Interface<ReactiveElement>, V>(\n    target: ClassAccessorDecoratorTarget<C, V>,\n    context: ClassAccessorDecoratorContext<C, V>\n  ): ClassAccessorDecoratorResult<C, V>;\n\n  // setter decorator signature\n  <C extends Interface<ReactiveElement>, V>(\n    target: (value: V) => void,\n    context: ClassSetterDecoratorContext<C, V>\n  ): (this: C, value: V) => void;\n\n  // legacy decorator signature\n  (\n    protoOrDescriptor: Object,\n    name: PropertyKey,\n    descriptor?: PropertyDescriptor\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  ): any;\n};\n\nconst legacyProperty = (\n  options: PropertyDeclaration | undefined,\n  proto: Object,\n  name: PropertyKey\n) => {\n  const hasOwnProperty = proto.hasOwnProperty(name);\n  (proto.constructor as typeof ReactiveElement).createProperty(name, options);\n  // For accessors (which have a descriptor on the prototype) we need to\n  // return a descriptor, otherwise TypeScript overwrites the descriptor we\n  // define in createProperty() with the original descriptor. We don't do this\n  // for fields, which don't have a descriptor, because this could overwrite\n  // descriptor defined by other decorators.\n  return hasOwnProperty\n    ? Object.getOwnPropertyDescriptor(proto, name)\n    : undefined;\n};\n\n// This is duplicated from a similar variable in reactive-element.ts, but\n// actually makes sense to have this default defined with the decorator, so\n// that different decorators could have different defaults.\nconst defaultPropertyDeclaration: PropertyDeclaration = {\n  attribute: true,\n  type: String,\n  converter: defaultConverter,\n  reflect: false,\n  hasChanged: notEqual,\n};\n\n// Temporary type, until google3 is on TypeScript 5.2\ntype StandardPropertyContext<C, V> = (\n  | ClassAccessorDecoratorContext<C, V>\n  | ClassSetterDecoratorContext<C, V>\n) & {metadata: object};\n\n/**\n * Wraps a class accessor or setter so that `requestUpdate()` is called with the\n * property name and old value when the accessor is set.\n */\nexport const standardProperty = <C extends Interface<ReactiveElement>, V>(\n  options: PropertyDeclaration = defaultPropertyDeclaration,\n  target: ClassAccessorDecoratorTarget<C, V> | ((value: V) => void),\n  context: StandardPropertyContext<C, V>\n): ClassAccessorDecoratorResult<C, V> | ((this: C, value: V) => void) => {\n  const {kind, metadata} = context;\n\n  if (DEV_MODE && metadata == null) {\n    issueWarning(\n      'missing-class-metadata',\n      `The class ${target} is missing decorator metadata. This ` +\n        `could mean that you're using a compiler that supports decorators ` +\n        `but doesn't support decorator metadata, such as TypeScript 5.1. ` +\n        `Please update your compiler.`\n    );\n  }\n\n  // Store the property options\n  let properties = globalThis.litPropertyMetadata.get(metadata);\n  if (properties === undefined) {\n    globalThis.litPropertyMetadata.set(metadata, (properties = new Map()));\n  }\n  if (kind === 'setter') {\n    options = Object.create(options);\n    options.wrapped = true;\n  }\n  properties.set(context.name, options);\n\n  if (kind === 'accessor') {\n    // Standard decorators cannot dynamically modify the class, so we can't\n    // replace a field with accessors. The user must use the new `accessor`\n    // keyword instead.\n    const {name} = context;\n    return {\n      set(this: ReactiveElement, v: V) {\n        const oldValue = (\n          target as ClassAccessorDecoratorTarget<C, V>\n        ).get.call(this as unknown as C);\n        (target as ClassAccessorDecoratorTarget<C, V>).set.call(\n          this as unknown as C,\n          v\n        );\n        this.requestUpdate(name, oldValue, options);\n      },\n      init(this: ReactiveElement, v: V): V {\n        if (v !== undefined) {\n          this._$changeProperty(name, undefined, options, v);\n        }\n        return v;\n      },\n    } as unknown as ClassAccessorDecoratorResult<C, V>;\n  } else if (kind === 'setter') {\n    const {name} = context;\n    return function (this: ReactiveElement, value: V) {\n      const oldValue = this[name as keyof ReactiveElement];\n      (target as (value: V) => void).call(this, value);\n      this.requestUpdate(name, oldValue, options);\n    } as unknown as (this: C, value: V) => void;\n  }\n  throw new Error(`Unsupported decorator location: ${kind}`);\n};\n\n/**\n * A class field or accessor decorator which creates a reactive property that\n * reflects a corresponding attribute value. When a decorated property is set\n * the element will update and render. A {@linkcode PropertyDeclaration} may\n * optionally be supplied to configure property features.\n *\n * This decorator should only be used for public fields. As public fields,\n * properties should be considered as primarily settable by element users,\n * either via attribute or the property itself.\n *\n * Generally, properties that are changed by the element should be private or\n * protected fields and should use the {@linkcode state} decorator.\n *\n * However, sometimes element code does need to set a public property. This\n * should typically only be done in response to user interaction, and an event\n * should be fired informing the user; for example, a checkbox sets its\n * `checked` property when clicked and fires a `changed` event. Mutating public\n * properties should typically not be done for non-primitive (object or array)\n * properties. In other cases when an element needs to manage state, a private\n * property decorated via the {@linkcode state} decorator should be used. When\n * needed, state properties can be initialized via public properties to\n * facilitate complex interactions.\n *\n * ```ts\n * class MyElement {\n *   @property({ type: Boolean })\n *   clicked = false;\n * }\n * ```\n * @category Decorator\n * @ExportDecoratedItems\n */\nexport function property(options?: PropertyDeclaration): PropertyDecorator {\n  return <C extends Interface<ReactiveElement>, V>(\n    protoOrTarget:\n      | object\n      | ClassAccessorDecoratorTarget<C, V>\n      | ((value: V) => void),\n    nameOrContext:\n      | PropertyKey\n      | ClassAccessorDecoratorContext<C, V>\n      | ClassSetterDecoratorContext<C, V>\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  ): any => {\n    return (\n      typeof nameOrContext === 'object'\n        ? standardProperty<C, V>(\n            options,\n            protoOrTarget as\n              | ClassAccessorDecoratorTarget<C, V>\n              | ((value: V) => void),\n            nameOrContext as StandardPropertyContext<C, V>\n          )\n        : legacyProperty(\n            options,\n            protoOrTarget as Object,\n            nameOrContext as PropertyKey\n          )\n    ) as PropertyDecorator;\n  };\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport {property} from './property.js';\n\nexport interface StateDeclaration<Type = unknown> {\n  /**\n   * A function that indicates if a property should be considered changed when\n   * it is set. The function should take the `newValue` and `oldValue` and\n   * return `true` if an update should be requested.\n   */\n  hasChanged?(value: Type, oldValue: Type): boolean;\n}\n\n/**\n * @deprecated use StateDeclaration\n */\nexport type InternalPropertyDeclaration<Type = unknown> =\n  StateDeclaration<Type>;\n\n/**\n * Declares a private or protected reactive property that still triggers\n * updates to the element when it changes. It does not reflect from the\n * corresponding attribute.\n *\n * Properties declared this way must not be used from HTML or HTML templating\n * systems, they're solely for properties internal to the element. These\n * properties may be renamed by optimization tools like closure compiler.\n * @category Decorator\n */\nexport function state(options?: StateDeclaration) {\n  return property({\n    ...options,\n    // Add both `state` and `attribute` because we found a third party\n    // controller that is keying off of PropertyOptions.state to determine\n    // whether a field is a private internal property or not.\n    state: true,\n    attribute: false,\n  });\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Generates a public interface type that removes private and protected fields.\n * This allows accepting otherwise incompatible versions of the type (e.g. from\n * multiple copies of the same package in `node_modules`).\n */\nexport type Interface<T> = {\n  [K in keyof T]: T[K];\n};\n\nexport type Constructor<T> = {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  new (...args: any[]): T;\n};\n\n/**\n * Wraps up a few best practices when returning a property descriptor from a\n * decorator.\n *\n * Marks the defined property as configurable, and enumerable, and handles\n * the case where we have a busted Reflect.decorate zombiefill (e.g. in Angular\n * apps).\n *\n * @internal\n */\nexport const desc = (\n  obj: object,\n  name: PropertyKey | ClassAccessorDecoratorContext<unknown, unknown>,\n  descriptor: PropertyDescriptor\n) => {\n  // For backwards compatibility, we keep them configurable and enumerable.\n  descriptor.configurable = true;\n  descriptor.enumerable = true;\n  if (\n    // We check for Reflect.decorate each time, in case the zombiefill\n    // is applied via lazy loading some Angular code.\n    (Reflect as typeof Reflect & {decorate?: unknown}).decorate &&\n    typeof name !== 'object'\n  ) {\n    // If we're called as a legacy decorator, and Reflect.decorate is present\n    // then we have no guarantees that the returned descriptor will be\n    // defined on the class, so we must apply it directly ourselves.\n\n    Object.defineProperty(obj, name, descriptor);\n  }\n  return descriptor;\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\nimport type {ReactiveElement} from '../reactive-element.js';\nimport {desc, type Interface} from './base.js';\n\nconst DEV_MODE = true;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n  // Ensure warnings are issued only 1x, even if multiple versions of Lit\n  // are loaded.\n  globalThis.litIssuedWarnings ??= new Set();\n\n  /**\n   * Issue a warning if we haven't already, based either on `code` or `warning`.\n   * Warnings are disabled automatically only by `warning`; disabling via `code`\n   * can be done by users.\n   */\n  issueWarning = (code: string, warning: string) => {\n    warning += code\n      ? ` See https://lit.dev/msg/${code} for more information.`\n      : '';\n    if (\n      !globalThis.litIssuedWarnings!.has(warning) &&\n      !globalThis.litIssuedWarnings!.has(code)\n    ) {\n      console.warn(warning);\n      globalThis.litIssuedWarnings!.add(warning);\n    }\n  };\n}\n\nexport type QueryDecorator = {\n  // legacy\n  (\n    proto: Interface<ReactiveElement>,\n    name: PropertyKey,\n    descriptor?: PropertyDescriptor\n    // Note TypeScript requires the return type to be `void|any`\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  ): void | any;\n\n  // standard\n  <C extends Interface<ReactiveElement>, V extends Element | null>(\n    value: ClassAccessorDecoratorTarget<C, V>,\n    context: ClassAccessorDecoratorContext<C, V>\n  ): ClassAccessorDecoratorResult<C, V>;\n};\n\n/**\n * A property decorator that converts a class property into a getter that\n * executes a querySelector on the element's renderRoot.\n *\n * @param selector A DOMString containing one or more selectors to match.\n * @param cache An optional boolean which when true performs the DOM query only\n *     once and caches the result.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector\n *\n * ```ts\n * class MyElement {\n *   @query('#first')\n *   first: HTMLDivElement;\n *\n *   render() {\n *     return html`\n *       <div id=\"first\"></div>\n *       <div id=\"second\"></div>\n *     `;\n *   }\n * }\n * ```\n * @category Decorator\n */\nexport function query(selector: string, cache?: boolean): QueryDecorator {\n  return (<C extends Interface<ReactiveElement>, V extends Element | null>(\n    protoOrTarget: ClassAccessorDecoratorTarget<C, V>,\n    nameOrContext: PropertyKey | ClassAccessorDecoratorContext<C, V>,\n    descriptor?: PropertyDescriptor\n  ) => {\n    const doQuery = (el: Interface<ReactiveElement>): V => {\n      const result = (el.renderRoot?.querySelector(selector) ?? null) as V;\n      if (DEV_MODE && result === null && cache && !el.hasUpdated) {\n        const name =\n          typeof nameOrContext === 'object'\n            ? nameOrContext.name\n            : nameOrContext;\n        issueWarning(\n          '',\n          `@query'd field ${JSON.stringify(String(name))} with the 'cache' ` +\n            `flag set for selector '${selector}' has been accessed before ` +\n            `the first update and returned null. This is expected if the ` +\n            `renderRoot tree has not been provided beforehand (e.g. via ` +\n            `Declarative Shadow DOM). Therefore the value hasn't been cached.`\n        );\n      }\n      // TODO: if we want to allow users to assert that the query will never\n      // return null, we need a new option and to throw here if the result\n      // is null.\n      return result;\n    };\n    if (cache) {\n      // Accessors to wrap from either:\n      //   1. The decorator target, in the case of standard decorators\n      //   2. The property descriptor, in the case of experimental decorators\n      //      on auto-accessors.\n      //   3. Functions that access our own cache-key property on the instance,\n      //      in the case of experimental decorators on fields.\n      const {get, set} =\n        typeof nameOrContext === 'object'\n          ? protoOrTarget\n          : descriptor ??\n            (() => {\n              const key = DEV_MODE\n                ? Symbol(`${String(nameOrContext)} (@query() cache)`)\n                : Symbol();\n              type WithCache = ReactiveElement & {\n                [key: symbol]: Element | null;\n              };\n              return {\n                get() {\n                  return (this as WithCache)[key];\n                },\n                set(v) {\n                  (this as WithCache)[key] = v;\n                },\n              };\n            })();\n      return desc(protoOrTarget, nameOrContext, {\n        get(this: ReactiveElement): V {\n          let result: V = get!.call(this);\n          if (result === undefined) {\n            result = doQuery(this);\n            if (result !== null || this.hasUpdated) {\n              set!.call(this, result);\n            }\n          }\n          return result;\n        },\n      });\n    } else {\n      // This object works as the return type for both standard and\n      // experimental decorators.\n      return desc(protoOrTarget, nameOrContext, {\n        get(this: ReactiveElement) {\n          return doQuery(this);\n        },\n      });\n    }\n  }) as QueryDecorator;\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\nimport type {ReactiveElement} from '../reactive-element.js';\nimport {desc, type Interface} from './base.js';\n\nexport type QueryAllDecorator = {\n  // legacy\n  (\n    proto: Interface<ReactiveElement>,\n    name: PropertyKey,\n    descriptor?: PropertyDescriptor\n    // Note TypeScript requires the return type to be `void|any`\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  ): void | any;\n\n  // standard\n  <C extends Interface<ReactiveElement>, V extends NodeList>(\n    value: ClassAccessorDecoratorTarget<C, V>,\n    context: ClassAccessorDecoratorContext<C, V>\n  ): ClassAccessorDecoratorResult<C, V>;\n};\n\n// Shared fragment used to generate empty NodeLists when a render root is\n// undefined\nlet fragment: DocumentFragment;\n\n/**\n * A property decorator that converts a class property into a getter\n * that executes a querySelectorAll on the element's renderRoot.\n *\n * @param selector A DOMString containing one or more selectors to match.\n *\n * See:\n * https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll\n *\n * ```ts\n * class MyElement {\n *   @queryAll('div')\n *   divs: NodeListOf<HTMLDivElement>;\n *\n *   render() {\n *     return html`\n *       <div id=\"first\"></div>\n *       <div id=\"second\"></div>\n *     `;\n *   }\n * }\n * ```\n * @category Decorator\n */\nexport function queryAll(selector: string): QueryAllDecorator {\n  return ((\n    obj: object,\n    name: PropertyKey | ClassAccessorDecoratorContext<unknown, unknown>\n  ) => {\n    return desc(obj, name, {\n      get(this: ReactiveElement) {\n        const container =\n          this.renderRoot ?? (fragment ??= document.createDocumentFragment());\n        return container.querySelectorAll(selector);\n      },\n    });\n  }) as QueryAllDecorator;\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/*\n * IMPORTANT: For compatibility with tsickle and the Closure JS compiler, all\n * property decorators (but not class decorators) in this file that have\n * an @ExportDecoratedItems annotation must be defined as a regular function,\n * not an arrow function.\n */\n\nimport type {ReactiveElement} from '../reactive-element.js';\nimport {desc, type Interface} from './base.js';\n\nexport type QueryAsyncDecorator = {\n  // legacy\n  (\n    proto: Interface<ReactiveElement>,\n    name: PropertyKey,\n    descriptor?: PropertyDescriptor\n    // Note TypeScript requires the return type to be `void|any`\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  ): void | any;\n\n  // standard\n  <C extends Interface<ReactiveElement>, V extends Promise<Element | null>>(\n    value: ClassAccessorDecoratorTarget<C, V>,\n    context: ClassAccessorDecoratorContext<C, V>\n  ): ClassAccessorDecoratorResult<C, V>;\n};\n\n// Note, in the future, we may extend this decorator to support the use case\n// where the queried element may need to do work to become ready to interact\n// with (e.g. load some implementation code). If so, we might elect to\n// add a second argument defining a function that can be run to make the\n// queried element loaded/updated/ready.\n/**\n * A property decorator that converts a class property into a getter that\n * returns a promise that resolves to the result of a querySelector on the\n * element's renderRoot done after the element's `updateComplete` promise\n * resolves. When the queried property may change with element state, this\n * decorator can be used instead of requiring users to await the\n * `updateComplete` before accessing the property.\n *\n * @param selector A DOMString containing one or more selectors to match.\n *\n * See: https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector\n *\n * ```ts\n * class MyElement {\n *   @queryAsync('#first')\n *   first: Promise<HTMLDivElement>;\n *\n *   render() {\n *     return html`\n *       <div id=\"first\"></div>\n *       <div id=\"second\"></div>\n *     `;\n *   }\n * }\n *\n * // external usage\n * async doSomethingWithFirst() {\n *  (await aMyElement.first).doSomething();\n * }\n * ```\n * @category Decorator\n */\nexport function queryAsync(selector: string) {\n  return ((\n    obj: object,\n    name: PropertyKey | ClassAccessorDecoratorContext<unknown, unknown>\n  ) => {\n    return desc(obj, name, {\n      async get(this: ReactiveElement) {\n        await this.updateComplete;\n        return this.renderRoot?.querySelector(selector) ?? null;\n      },\n    });\n  }) as QueryAsyncDecorator;\n}\n","class i{constructor(s){this.listeners=new Set,this.startListenHook=s?.startListen||null,this.stopListenHook=s?.stopListen||null}on(s){return this.listeners.size===0&&this.startListenHook?.(),this.listeners.add(s),{unsubscribe:()=>this.off(s)}}off(s){const t=this.listeners.delete(s);return t&&this.listeners.size<1&&this.stopListenHook?.(),t}once(s){const t=(...e)=>{this.off(t),s(...e)};return this.on(t)}async emit(...s){const t=[];for(const e of[...this.listeners])t.push(e(...s));await Promise.all(t.filter(Boolean))}hasListener(){return!!this.listeners.size}asPromise(){return new Promise(s=>this.once(s))}clear(){this.hasListener()&&(this.listeners.clear(),this.stopListenHook?.())}dispose(){this.listeners.clear(),this.startListenHook=null,this.stopListenHook=null}}class l{constructor(s){this._listeners=new Map,this._linked=new Set,this._callstack=[],this._hooks={startListen:new i,stopListen:new i},s?.startListen&&this._hooks.startListen.on(s.startListen),s?.stopListen&&this._hooks.stopListen.on(s.stopListen)}_getListeners(s){let t=this._listeners.get(s);return t||(t=new i({startListen:()=>this._hooks.startListen.emit(s),stopListen:()=>this._hooks.stopListen.emit(s)}),this._listeners.set(s,t)),t}startListen(s){return this._hooks.startListen.on(s)}stopListen(s){return this._hooks.stopListen.on(s)}has(s){return!!this._listeners.get(s)?.hasListener()}listeners(){return[...this._listeners.keys()]}on(s,t){return this._getListeners(s).on(t)}off(s,t){return this._listeners.get(s)?.off(t)??!1}once(s,t){return this._getListeners(s).once(t)}async emit(s,...t){const e=[],r=this._listeners.get(s);r&&e.push(r.emit(...t));for(const n of[...this._linked])if(!n.hasLinkTo?.(this))e.push(n.emit(s,...t));else{const h=n._listeners.get(s);e.push(h.emit(...t))}await Promise.all(e.filter(Boolean))}asPromise(s){return this._getListeners(s).asPromise()}link(s){if(!this._linked.has(s)&&(this._linked.add(s),this._hooks.startListen.hasListener()&&s.listeners)){const t=s.listeners().filter(e=>!this._listeners.has(e));for(const e of t)this._hooks.startListen.emit(e)}}unlink(s){return this._linked.delete(s)}hasLinkTo(s){if(!this._linked.size)return!1;if(this._linked.has(s))return!0;for(const t of this._linked)if(t.hasLinkTo?.(s))return!0;return!1}isEmpty(){if(this._listeners.size>0)return!0;for(const s of this._linked)if(s.isEmpty&&!s.isEmpty())return!0;return!1}clear(){this._linked.clear(),this._listeners.clear()}}export{l as EventEmitter,i as EventWrapper};\n","import{EventWrapper as M,EventEmitter as C}from\"@dh-software/event-emitter\";import{EventEmitter as z}from\"@dh-software/event-emitter\";class g{promise;resolve;reject;constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}let k=0;function L(){return(++k).toString()}class x{stats=new Map;labels={};start(e,t=\"\"){if(this.labels[e]){this.labels[e].push(t);return}e===\"REQUEST\"&&this.end(\"IDLE\"),this.labels[e]=[t],performance.mark(`start.${e}`)}push(e,t){if(this.stats.has(e)){const s=this.stats.get(e);s.sum+=t,s.count++}else this.stats.set(e,{sum:t,count:1})}end(e,t=\"\"){if(!this.labels[e]||(this.labels[e].pop(),this.labels[e].length>0))return;performance.mark(\"end.\"+e),this.labels[e]=void 0;const s=performance.measure(e,\"start.\"+e,\"end.\"+e).duration;this.push(e,s),e===\"REQUEST\"&&this.start(\"IDLE\")}reset(e){this.stats.has(e)&&this.stats.delete(e)}get(e){return this.stats.get(e)}getAll(){return this.stats}log(e){const t=this.stats.get(e);t&&console.log(`${e}: ${t.sum} ms and called ${t.count} times`)}}const l=new x;class I{constructor(e){this._hooks=e}_localListener=new Map;_remoteListener=new Map;create(e){return this._localListener.has(e)||this._localListener.set(e,new C({startListen:t=>this._hooks.startLocalListen(e,t),stopListen:t=>this._hooks.stopLocalListen(e,t)})),this._localListener.get(e)}onLocal(e,t,s){return this.create(e).on(t,s)}onceLocal(e,t,s){return this.create(e).once(t,s)}emitFromRemote(e,t,...s){const i=this._localListener.get(e);if(i)return i.emit(t,...s)}getEventRemotes(e){return[...this._remoteListener.get(e)]}hasRemoteListener(e){return this._remoteListener.has(e)}addRemoteListener(e,t){let s=this._remoteListener.get(t);s||(s=new Set,this._remoteListener.set(t,s)),s.add(e)}removeRemote(e){this._localListener.delete(e);for(const[t,s]of[...this._remoteListener])s.delete(e),s.size===0&&this._remoteListener.delete(t)}}var r=(o=>(o[o.UNKNOWN=0]=\"UNKNOWN\",o[o.DISCONNECTED=1]=\"DISCONNECTED\",o[o.DISCONNECTING=2]=\"DISCONNECTING\",o[o.CONNECTING=3]=\"CONNECTING\",o[o.RECONNECTING=4]=\"RECONNECTING\",o[o.CONNECTED=5]=\"CONNECTED\",o[o.READY=6]=\"READY\",o))(r||{});class p extends C{static _INSTANCE_COUNTER=0;verbosity=1;_debugName;_communicator;_status=1;_stats={received:0,send:0,sumLength:0,maxLength:0,maxLengthCommand:\"\",workTime:0,maxTime:0,maxTimeCommand:\"\"};constructor(){super(),this._debugName=this.constructor.name+\"-\"+ ++p._INSTANCE_COUNTER}setCommunicator(e,t){this._communicator=e.registerConnector(this,t)}sendHandshake(){this.setStatus(5),this._communicator.sendHandshake(this)}dispose(){super.clear(),this._communicator.removeConnector(this)}receiveMessage(e){this._communicator.receiveMessage(this,e)}receiveRequest(e){return this._communicator.receiveRequest(this,e)}_ready(){this._status!==6&&(this.setStatus(6),this.emit(\"ready\"))}isReady(){return this._status===6}getStatus(){return this._status}setStatus(e){if(e!==this._status){const t=this._status;this._status=e,this.emit(\"status\",e,t),t===6&&this.emit(\"disconnect\",e)}}updateIncomingStats(e,t=0){this._stats.sumLength+=t,this._stats.received++,t>this._stats.maxLength&&(this._stats.maxLength=t,this._stats.maxLengthCommand=e.header.command),e.header.work&&(this._stats.workTime+=e.header.work,e.header.work>this._stats.maxTime&&(this._stats.maxTime=e.header.work,this._stats.maxTimeCommand=e.header.command)),this.emit(\"stats\",this._stats)}updateOutgoingStats(e,t=0){this._stats.sumLength+=t,this._stats.send++,t>this._stats.maxLength&&(this._stats.maxLength=t,this._stats.maxLengthCommand=e.header.command),this.emit(\"stats\",this._stats)}getStats(){return{type:this.type,status:`${r[this._status]} (${this._status})`,...this._stats}}getDebugName(){return this._debugName}setDebugName(e){this._debugName=e}setVerbosity(e){this.verbosity=e}}class S extends p{_pending=new Map;constructor(){super()}registerRequest(e){typeof e==\"object\"&&(e=e.reqId);const t=new g;return this._pending.set(e,t),t.promise}resolveRequest(e){const t=this._pending.get(e.header.resId);return t?(e.header.err?t.reject(e.header.err):t.resolve(e),!0):(console.error(\"No matching request found for response ID:\",e.header.resId),!1)}createResponseHeader(e){const t={};for(let s in e)if(Object.prototype.hasOwnProperty.call(e,s)){const i=e[s];s==\"reqId\"&&(s=\"resId\"),s==\"from\"?s=\"to\":s==\"to\"&&(s=\"from\"),t[s]=i}return console.assert(!!t.command,t.from,t.to,t.resId),t}send(e){this.verbosity>=3&&console.log(`WS [${this.getDebugName()}] - Send Message`,e),this.sendWrapped({header:e.header,data:e.data}),this.updateOutgoingStats(e)}async request(e){const t=e.header;return t.reqId||(t.reqId=e.header.from+L()),this.verbosity>=3&&console.log(`WS [${this.getDebugName()}] - Send Request`,e),this.updateOutgoingStats(e),this.sendWrapped({header:e.header,data:e.data}),await this.registerRequest(t)}handleWrapped(e,t){if(typeof e!=\"object\"){console.error(new TypeError(`${this.type} [${this.getDebugName()}] - Invalid Message Type, not object!`),e);return}if(this.updateIncomingStats(e,t),!e.header?.from){console.error(`${this.type} [${this.getDebugName()}] - Invalid header data!`,event);return}if(e.header.resId)this.verbosity>=3&&console.log(`[${this.getDebugName()}] - Get Response`,e),this.resolveRequest(e);else if(e.header.reqId){this.verbosity>=3&&console.log(`${this.type} [${this.getDebugName()}] - Get Request`,e);const s={header:{...e.header},data:e.data};(async()=>{const i={header:void 0,data:void 0};try{const n=await this.receiveRequest(s);n.header?i.header=n.header:i.header=this.createResponseHeader(s.header),i.data=n.data}catch(n){i.header=this.createResponseHeader(s.header),i.header.err=n.toString()}this.verbosity>=3&&console.log(`${this.type} [${this.getDebugName()}] - Send Response`,i),this.sendWrapped(i)})()}else this.verbosity>=3&&console.log(`${this.type} [${this.getDebugName()}] - Get Message`,e),this.receiveMessage(e)}}var m=(o=>(o[o.NEVER=0]=\"NEVER\",o[o.ALWAYS=1]=\"ALWAYS\",o[o.UNTIL_CONNECTING=2]=\"UNTIL_CONNECTING\",o))(m||{}),d=(o=>(o[o.NONE=0]=\"NONE\",o[o.SHOULD_PING=1]=\"SHOULD_PING\",o[o.CAN_RECONNECT=2]=\"CAN_RECONNECT\",o[o.EXISTING_CONNECTION=4]=\"EXISTING_CONNECTION\",o))(d||{});class q{constructor(){}defined(e,t=\"unexpected undefined/null\"){}number(e,t=\"unexpected undefined/null\"){}positive(e,t=\"unexpected undefined/null\"){this.number(e,t)}filledString(e,t=\"string expected\"){}}let W=new q;class A extends C{id;connector;persistent;discardMode;constructor(e){super(),this.id=e.id,this.connector=null,this.persistent=!1,this.discardMode=m.NEVER,this.update(e)}update(e){typeof e.connector<\"u\"&&e.connector!=this.connector&&(this.connector&&(this.connector.unlink(this),e.connector!=this.connector&&console.warn(`CDhMessageConnector changed unexpected for route '${this.id}'! Review Needed?`)),this.connector=e.connector,this.connector&&this.connector.link(this)),this.persistent=e.persistent??this.persistent,this.discardMode=e.discardMode??this.discardMode}getStatus(){return this.connector?this.connector.getStatus():r.DISCONNECTED}isReady(){return this.connector?.isReady()}}class O{id;_debugName;_routes=new Map;_services=[];_holdMessages=[];_pendingRequests=[];_debugIndicator;_remoteEventManager;_clientListener=new Map;_verbosity=1;_history=[];constructor(e){W.filledString(e),this._debugName=this.id=e,globalThis.communicator==null&&(globalThis.communicator=this),this._remoteEventManager=new I({startLocalListen:(t,s)=>{this.send(t,\"dh-com-listener-add\",{command:s})},stopLocalListen:(t,s)=>{this.send(t,\"dh-com-listener-remove\",{command:s})}}),globalThis.timeline?.note(\"COM created!\")}dispose(){const e=this._routes.size,t=this._services.length,s=this._holdMessages.length,i=this._pendingRequests.length;for(const n of[...this._holdMessages,...this._pendingRequests])n.defer&&n.defer.reject(new Error(\"Communicator closed, reject pending Message/Request!\"));this._pendingRequests=[],this._holdMessages=[],this._history=[];for(const[n,a]of this._routes.entries())a.connector&&a.connector.unlink(a),a.clear();this._routes.clear(),this._services=[],this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - Disposed! Routes: ${e} Services: ${t} Hold Messages: ${s} Pending Messages: ${i}!`),this._debugIndicator&&(this._debugIndicator.remove(),this._debugIndicator=null)}internalInterface(){return this}registerService(e){return e?(this._services.push(e),this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - registered service '${e.constructor.name}'!`),this.internalInterface()):{}}removeService(e){const t=this._services.indexOf(e);t>-1&&this._services.splice(t,1),this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - removed service '${e.constructor.name}'!`)}registerConnector(e,t){if(!e)return{};function s(i){return typeof i[0]==\"string\"}if(Array.isArray(t)&&t.length>0){if(s(t))t=t.map(i=>({id:i,connector:e,persistent:!0}));else for(const i of t)i.connector!==e&&(i.connector&&console.error(`connector [${e.getDebugName()}] defined route ${i.id} config with a different connector!`,i),i.connector=e);for(const i of t)this.defineRoute(i)}return this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - registered connector '${e.getDebugName()}'!`),this._verbosity&2&&(e.on(\"status\",()=>this._updateIndicator(2)),e.on(\"stats\",()=>this._updateIndicator(4)),this._updateIndicator(2)),this.internalInterface()}removeConnector(e){for(const[t,s]of this._routes.entries())if(s.connector===e){e.unlink(s),s.connector=null;const i=this._pendingRequests.filter(n=>n.message.header.to===s.id);i.length&&console.warn(\"Connector removed with pending requests... REVIEW NEEDED?\",i);for(const n of i)n.defer?.reject(\"connector removed\");this._remoteEventManager.removeRemote(t),s.persistent||this._routes.delete(t)}this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - removed connector '${e.getDebugName()}'!`)}getHandshakeData(e){return{id:this.id,routes:[...this._routes.entries()].filter(([t,s])=>s.connector!==e&&s.connector?.getStatus()===r.READY).map(([t])=>t)}}async sendHandshake(e,t){const s=this.getHandshakeData(e);t&&(s.update=!0),this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - send handshake to CON [${e.getDebugName()}]`,s);const i=await e.request({header:{from:this.id,to:\"\",command:\"handshake\"},data:s});this.updateHandshake(i.data,e)}async updateHandshake(e,t){if(!e.id){this._verbosity&1&&console.error(`COM [${this.getDebugName()}] - Invalid Handshake Data from CON [${t}]!`);return}const s=[e.id,...e.routes],i=s.filter(h=>{const c=this._routes.get(h);return c?.connector===t?!c.isReady():!0}),n=[...this._routes.values()].filter(h=>h.connector===t&&!s.includes(h.id));if(n.length===0&&i.length===0){this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - Handshake from '${e.id}' has no updates!`,e);return}this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - Handshake from '${e.id}' update! data:`,e,\"new/modified:\",i,\"missing/removed\",n);const a=i.map(h=>this.defineRoute(h,t));for(const h of n)if(h.persistent)h.update({id:h.id,connector:null});else{const c=h.connector.getStatus();h.emit(\"status\",r.DISCONNECTED,c),c===r.READY&&h.emit(\"disconnect\",r.DISCONNECTED),this._routes.delete(h.id)}if(!t.isReady())t._ready();else for(const h of a)h.emit(\"status\",r.READY),h.emit(\"ready\");if(this._routes.size!==i.length){const h=[];for(const c of this._routes.values())t!==c.connector&&c.isReady()&&!h.includes(c.connector)&&h.push(c.connector);for(const c of h)this.sendHandshake(c,!0)}this._verbosity&2&&this._updateIndicator(7)}listen(e,t,s){if(!this.hasRoute(e))throw ReferenceError(`listen to unknown route '${e}'`);return this._remoteEventManager.onLocal(e,t,s)}listenOnce(e,t,s){if(!this.hasRoute(e))throw ReferenceError(`listen to unknown route '${e}'`);return this._remoteEventManager.onceLocal(e,t,s)}hasListener(e){return this._remoteEventManager.hasRemoteListener(e)}emit(e,t){const s=this._remoteEventManager.getEventRemotes(e);for(const i of s)this._internalSend({header:{from:this.id,to:i,command:e},data:t})}send(e,t,s){this._internalSend({header:{from:this.id,to:e,command:t},data:s})}async request(e,t,s){return(await this._internalRequest({header:{from:this.id,to:e,command:t},data:s})).data}receiveMessage(e,t){if(t.header.to===\"*\"){for(const s of this._services)s.processMessage(t);this._internalSend(t);return}if(t.header.to!==this.id){this._verbosity&16&&console.log(`COM [${this.getDebugName()}] - redirect message`,t),this._internalSend(t),l.end(\"RECEIVE\",t.header.command);return}if(this._verbosity&16&&console.log(`COM [${this.getDebugName()}] - received message '${t.header.command}' from '${t.header.from}'`,t),t.header.command.startsWith(\"dh-com-listener-\")){t.data.command&&(this._clientListener.has(t.data.command)||this._clientListener.set(t.data.command,new Set)),this._clientListener.get(t.data.command).add(t.header.from);return}else this._remoteEventManager.emitFromRemote(t.header.from,t.header.command,t.data);for(const s of this._services)s.processMessage(t);l.end(\"RECEIVE\",t.header.command)}async receiveRequest(e,t){if(t.header.command===\"handshake\")return t.header.to=this.id,this._verbosity&8&&console.log(`COM [${this.getDebugName()}] - received handshake request from '${t.header.from}'`,t.data),t.data.update&&this.updateHandshake(t.data,e),l.end(\"RECEIVE\",t.header.command),Promise.resolve({header:null,data:this.getHandshakeData(e)});if(t.header.to!==this.id){for(const i of this._services){const n=i.intercept(t);if(n!=null)return this._verbosity&16&&console.log(`COM [${this.getDebugName()}] - Service '${i.constructor.name}' intercept request '${t.header.command}' from '${t.header.from}' to '${t.header.to}'`,t),l.end(\"RECEIVE\",t.header.command),await n}this._verbosity&16&&console.log(`COM [${this.getDebugName()}] - redirect request '${t.header.command}' from '${t.header.from}' to '${t.header.to}'`,t);const s=this._internalRequest(t);return l.end(\"RECEIVE\",t.header.command),await s}this._verbosity&16&&console.log(`COM [${this.getDebugName()}] - received request '${t.header.command}' from '${t.header.from}'`,t);for(const s of this._services){const i=s.processRequest(t);if(i)return l.end(\"RECEIVE\",t.header.command),i.then(n=>({header:null,data:n}))}return l.end(\"RECEIVE\",t.header.command),Promise.reject(new Error(`COM [${this.getDebugName()}] - no service to handle requested command '${t.header.command}'`))}async _internalSend(e){if(e.header.to===\"*\"){const s=this.getRoute(e.header.from),i=new Set([...this._routes.values()].map(n=>n.isReady()?n.connector:void 0).filter(n=>n&&n!==s?.connector));for(const n of i)n.send(e);return}const t=this.getRoute(e.header.to);if(t){if(!t.connector||t.connector.getStatus()!==r.READY){if(t.discardMode===m.ALWAYS||t.discardMode===m.UNTIL_CONNECTING&&t.connector.getStatus()<r.CONNECTING)return;this._verbosity&16&&console.log(`COM [${this.getDebugName()}] - route to ${e.header.to} not ready! ...Waiting for connector update.`),await this.holdMessage(e)}}else throw ReferenceError(`send to unknown route '${e.header.to}'`);if(this._verbosity&4){const s={type:0,req:e};this._history.push(s)}t.connector.send(e)}async _internalRequest(e){l.start(\"REQUEST\",e.header.command);let t;const s=this.getRoute(e.header.to);if(s)if(s.isReady())t=globalThis.timeline?.add(`REQ-${e.header.command}`);else{if(s.discardMode===m.ALWAYS)return Promise.reject(\"Not Connected\");if(s.discardMode===m.UNTIL_CONNECTING&&s.connector.getStatus()<r.CONNECTING)return Promise.reject(\"Not Connected\");this._verbosity&16&&console.log(`COM [${this.getDebugName()}] - route to ${e.header.to} not ready! ...Waiting for connector update.`),t=globalThis.timeline?.add(`REQ-${e.header.command}`),await this.holdMessage(e)}else return Promise.reject(new ReferenceError(`request to unknown route '${e.header.to}'`));let i;this._verbosity&&(this._verbosity&16&&console.log(`COM [${this.getDebugName()}] - send request '${e.header.command}' by connector '${s.connector.getDebugName()}'`),this._verbosity&2&&this._updateIndicator(1),this._verbosity&4&&(i={type:1,req:e,res:\"<yet not received>\"},this._history.push(i)));const n={message:e,defer:new g};this._pendingRequests.push(n);const a=await s.connector.request(e);return t?.stop(),i&&(i.res=a),this._pendingRequests.splice(this._pendingRequests.indexOf(n),1),this._verbosity&2&&(this._updateIndicator(5),l.end(\"REQUEST\",e.header.command)),a}holdMessage(e){const t={message:e,defer:new g},s=this.getRoute(e.header.to);return this._holdMessages.push(t),this._updateIndicator(1),s.asPromise(\"ready\").then(()=>{this._holdMessages.splice(this._holdMessages.indexOf(t)),this._updateIndicator(1)})}defineRoute(e,t=null,s=!0){typeof e==\"string\"&&(e={id:e,persistent:s,connector:t});let i=this._routes.get(e.id);if(i)i.update(e);else{i=new A(e),this._routes.set(e.id,i);const n=globalThis.timeline?.add(`Route: create '${e.id}'`);n&&i.once(\"ready\",()=>n.stop())}return i}getRouteStatus(e){const t=this.getRoute(e);return t?t.getStatus():r.UNKNOWN}getRoute(e){return this._routes.get(e)}hasRoute(e){return this._routes.has(e)}static getMainInstance(){return globalThis.communicator}static _onMainInstance;static mainInstanceRegistered(e){if(globalThis.communicator){e(globalThis.communicator);return}this._onMainInstance||(this._onMainInstance=new M),this._onMainInstance.on(e)}static setMainInstance(e){if(globalThis.communicator&&globalThis.communicator!==e)throw new Error(\"Multiple Main Instances of MessageCommunicator not allowed!\");if(globalThis.communicator===0&&e)throw new Error(\"Main Instance of MessageCommunicator was disabled and should not dynamically change!\");globalThis.communicator=e,e&&this._onMainInstance&&(this._onMainInstance.emit(e),this._onMainInstance.dispose(),this._onMainInstance=null)}getDebugName(){return this._debugName}setDebugName(e){this._debugName=e}setVerbosity(e){typeof window==\"object\"&&typeof window.document==\"object\"&&(e&2)!==(this._verbosity&2)&&(e&2?(this._debugIndicator=document.createElement(\"dhcom-debug-indicator\"),document.body.appendChild(this._debugIndicator),this._updateIndicator(255)):this._debugIndicator&&(this._debugIndicator.remove(),this._debugIndicator=null)),this._verbosity=e}getConnectorList(){const e=[];for(const[t,s]of this._routes)s.connector&&!e.includes(s.connector)&&e.push(s.connector);return e}_updateIndicator(e){if(this._debugIndicator&&(e&1&&this._debugIndicator.setAttribute(\"counter\",this._pendingRequests.length.toString()),e&7)){const t=this.getConnectorList();if(e&4){const s={name:this.getDebugName(),connectors:{},pending:this._pendingRequests.map(i=>i.message.header.command)};for(const i of t){const n=[...this._routes.values()].filter(a=>a.connector===i).map(a=>a.id);s.connectors[i.getDebugName()]={routes:n,...i.getStats()}}this._debugIndicator.renderStats(s)}if(e&2){let s=r.READY,i=r.UNKNOWN;for(const n of t){const a=n.getStatus();a<s&&(s=a),a>i&&(i=a)}s>i&&(s=r.UNKNOWN),this._debugIndicator.setAttribute(\"status\",s.toString())}}}}class D{communicator;setCommunicator(e){this.communicator=e.registerService(this)}dispose(){return this.communicator.removeService(this)}processMessage(e){return!1}processRequest(e){}intercept(e){}send(e,t,s){this.communicator.send(e,t,s)}request(e,t,s){return this.communicator.request(e,t,s)}listen(e,t,s){return this.communicator.listen(e,t,s)}listenOnce(e,t,s){return this.communicator.listenOnce(e,t,s)}hasListener(e){return this.communicator.hasListener(e)}emit(e,t){return this.communicator.emit(e,t)}}class G extends p{type=\"Direct\";other;constructor(e){super(),e&&(this.other=e,e.other=this)}_init(){this.other&&this.sendHandshake()}request(e){return this.other.receiveRequest(e)}send(e){this.other.receiveMessage(e)}}class E extends S{constructor(e,t){super(),this.targetWindow=e,this.targetOrigin=t}type=\"PostMessage\";start(){window.addEventListener(\"message\",e=>this.receiveEvent(e)),this.sendHandshake()}resetTargetWindow(e){this.targetWindow=e,this.targetOrigin=e.origin,this.setStatus(r.RECONNECTING),this.init()}async receiveEvent(e){try{if(typeof e.data==\"string\")return;if(this.targetOrigin!==\"*\"&&e.origin!=this.targetOrigin){console.log(`[${this.getDebugName()}] - Origin mismatch`,e.origin,this.targetOrigin);return}this.handleWrapped(e.data)}catch(t){console.error(`[${this.getDebugName()}] - CATCH in Socket Message`,e,t)}}sendWrapped(e){try{this.targetWindow.postMessage(e,this.targetOrigin)}catch(t){console.error(t,e)}}init(){E.tryPing(this.targetWindow,e=>{this.targetWindow=e.source,this.start()})}static tryPing(e,t){const s=e.origin;let i=n=>{if(n.origin===s)switch(e!=n.source&&console.warn(\"CHECK target?!\",e,n.source),n.data){case\"dh-pmc-init-ping\":n.source.postMessage(\"dh-pmc-init-pong\",n.origin);case\"dh-pmc-init-pong\":window.removeEventListener(\"message\",i),t(n)}};window.addEventListener(\"message\",i),e.postMessage(\"dh-pmc-init-ping\",\"*\")}}class H extends S{type=\"WebSocket\";impl;holdMessages=new g;pingTime=3e4;reconnectConfig={counter:-1,delay:1e3,id:null};pingTimerId;constructor(e,t){super(),this.reset(e),t&&this.setCommunicator(t)}init(){this.impl.onOpen=()=>this.onSocketOpen(),this.impl.onClose=()=>this.onSocketClose(),this.impl.onMessage=e=>this.onSocketMessage(e),this.impl.onError=e=>console.error(e)}reset(e){this.getStatus()!==r.DISCONNECTED&&this.disconnect(),this.impl=e,e&&(this.init(),(this.impl.traits&d.CAN_RECONNECT)===0&&(this.reconnectConfig=null),(this.impl.traits&d.SHOULD_PING)===0&&(this.pingTime=0),this.impl.traits&d.EXISTING_CONNECTION&&this.setStatus(r.CONNECTING))}getImpl(){return this.impl}setReconnectConfig(e){if((this.impl.traits&d.CAN_RECONNECT)===0)return;const t=this.reconnectConfig?.id;if(t&&(clearTimeout(this.reconnectConfig.id),this.reconnectConfig.id=null,this.verbosity>=2&&console.log(`WS [${this.getDebugName()}] - Restart canceled`)),!e?.counter||e.delay<0){this.reconnectConfig=null,this.verbosity>=2&&console.log(`WS [${this.getDebugName()}] - Restart disabled`);return}console.log(`WS [${this.getDebugName()}] - New restart config`,e),this.reconnectConfig.counter=e.counter,this.reconnectConfig.delay=e.delay,t&&this.connect()}setPingTime(e=30){this.pingTime!==e&&(this.pingTime=e*1e3,console.log(`WS [${this.getDebugName()}] - New ping time:`,e),this.updatePing(!!this.pingTime))}updatePing(e){this.pingTimerId&&clearInterval(this.pingTimerId),e&&this.pingTime>0&&(this.pingTimerId=setInterval(()=>this.ping(),this.pingTime))}connect(){if(!this.impl){console.error(`WS [${this.getDebugName()}] - Missing Socket-Implentation`);return}this.verbosity>=2&&console.log(`WS [${this.getDebugName()}]- Connected`),this.setStatus(r.CONNECTING),this.impl.start()}terminate(){this.impl&&(this.verbosity>=2&&console.log(`WS [${this.getDebugName()}] - Disconnected`),this.setStatus(r.DISCONNECTED),this.impl.stop())}disconnect(){this.impl&&(this.verbosity>=2&&console.log(`WS [${this.getDebugName()}] - Disconnected`),this.getStatus()>r.DISCONNECTING&&this.setStatus(r.DISCONNECTING),this.impl.stop())}onSocketOpen(){if(this.getStatus()<r.CONNECTING&&(console.warn(`Unexpected Web Socket Connection State ${this.getStatus()}!`),this.getStatus()===r.DISCONNECTING)){this.impl.stop();return}this.setStatus(r.CONNECTED),this.verbosity>=2&&console.log(`WS [${this.getDebugName()}] - Socket Connected`),this.updatePing(!0),this.sendHandshake();const e=this.holdMessages;this.holdMessages=void 0,e?.resolve()}reconnect(e){this.impl.traits&d.CAN_RECONNECT&&(this.reconnectConfig?.id&&(clearTimeout(this.reconnectConfig.id),this.reconnectConfig.id=null),this.setStatus(r.RECONNECTING),this.getStatus()>=r.CONNECTED&&(this.verbosity>=2&&console.log(`WS [${this.getDebugName()}] - forced stop for reconnect`),this.impl.stop()),e?(this.verbosity>=2&&console.log(`WS [${this.getDebugName()}] - Restart in ${e} ms`),this.reconnectConfig.id=setTimeout(()=>{this.reconnectConfig.id=null,this.connect()},e)):this.connect())}onSocketClose(){if(this.holdMessages||(this.holdMessages=new g),clearInterval(this.pingTimerId),console.warn(`WS [${this.getDebugName()}] - Socket closed`),!(this.impl.traits&d.CAN_RECONNECT&&this.reconnectConfig?.counter&&this.getStatus()>r.DISCONNECTING)){this.setStatus(r.DISCONNECTED);return}this.reconnectConfig.counter>0&&this.reconnectConfig.counter--,this.reconnect(this.reconnectConfig.delay)}ping(){this.impl.send(\"ping\")}sendWrapped(e){const t=JSON.stringify(e);return this.impl.send(t),t.length}onSocketMessage(e){try{if(typeof e!=\"string\"){console.error(`WS [${this.getDebugName()}] - Invalid data from`,e);return}else if(e[0]!==\"{\")if(e===\"ping\"){this.impl.send(\"pong\"),this.emit(\"ping\");return}else if(e===\"pong\"){this.emit(\"ping\");return}else{console.error(`WS [${this.getDebugName()}] - Invalid data from`,e);return}const t=JSON.parse(e);this.handleWrapped(t,e.length)}catch(t){console.error(`WS [${this.getDebugName()}] - CATCH in Socket Message`,e,t)}}}class R{constructor(e){this.name=e,this.name=e,this.start=performance.now(),this.end=0}start;end;stop(){this.end=performance.now()}}class f{name=window.location.pathname.match(/^\\/(?<basepath>\\w+)\\b/)?.groups?.basepath||\"nopath\";clock=Date.now()-performance.now();times=[];constructor(){if(this.note(\"Timeline: start\"),typeof window<\"u\"){const e=this.add(\"load\");window.addEventListener(\"load\",()=>e.stop())}setTimeout(()=>{performance.getEntriesByType(\"resource\").forEach(e=>{const t=this.add(`RES(${e.initiatorType}): ${e.name}`);t.start=e.fetchStart,t.end=e.responseEnd}),this.times.sort((e,t)=>e.start-t.start),console.log(\"TIMELINE:\",this)},2e4)}add(e){const t=new R(e);return this.times.push(t),t}note(e){const t=new R(e);this.times.push(t),t.end=t.start}static stackCounter=new Map;stack(e){let t=f.stackCounter.get(e);return t?t.i===0&&performance.now()-t.t.end>1?(t={i:1,t:this.add(e)},f.stackCounter.set(e,t)):++t.i:(t={i:1,t:this.add(e)},f.stackCounter.set(e,t)),{pop:()=>{--t.i===0&&t.t.stop()}}}}globalThis.timeline=new f;class U extends D{processMessage(e){return e.header.command===\"getTimeline\"&&globalThis.timeline?(this.send(e.header.from,\"timelineData\",structuredClone(globalThis.timeline)),!0):!1}}let T=null;if(O.mainInstanceRegistered(o=>{T=new U,T.setCommunicator(o)}),typeof window<\"u\"&&typeof document<\"u\"&&!customElements.get(\"dhcom-debug-indicator\")){class o extends HTMLElement{status=r.UNKNOWN;counter=0;shadow;circle;badge;tooltip;keepOpen=!1;communicator;constructor(){super()}static get observedAttributes(){return[\"status\",\"counter\"]}connectedCallback(){this.shadow||(this.shadow=this.attachShadow({mode:\"open\"}),this.build())}disconnectedCallback(){}attributeChangedCallback(t,s,i){s!==i&&(t===\"status\"&&(this.status=parseInt(i,10)||0,this.circle.style.backgroundColor=this.getColor()),t===\"counter\"&&(this.counter=parseInt(i,10)||0,this.badge.innerHTML=i,this.badge.style.display=this.counter?\"block\":\"none\"))}renderStatsTree(t,s=0){return`<ul>${Object.entries(t).map(([i,n])=>n?(Array.isArray(n)?n=n.join(\", \"):typeof n==\"object\"?n=this.renderStatsTree(n,s+1):n=`&nbsp;<i>${n}</i>`,`<li class=\"level${s}\"><b>${i}</b>:${n}</li>`):\"\").join(\"\")}</ul>`}renderStats(t){const s=this.keepOpen?'<svg class=\"lock\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"white\"><path d=\"M6.5 9V6a3.5 3.5 0 1 1 7 0v3\" stroke=\"white\" stroke-width=\"2\" fill=\"none\"/><rect x=\"5\" y=\"8\" width=\"10\" height=\"8\" rx=\"1\" fill=\"white\"/></svg>':\"\";this.tooltip.innerHTML=`<h4>${t.name} Communication</h4>${s}`+this.renderStatsTree(t)}build(){this.shadow.innerHTML=`\n\t\t\t\t<style>\n\t\t\t\t:host {\n\t\t\t\t\tposition: fixed;\n\t\t\t\t\tbottom: 30px;\n\t\t\t\t\tleft: 30px;\n\t\t\t\t\twidth: 20px;\n\t\t\t\t\theight: 20px;\n\t\t\t\t\tz-index: 9999999;\n\t\t\t\t\tfont-family: arial;\n\t\t\t\t\tmax-width: 350px;\n\t\t\t\t}\n\t\t\t\t.circle {\n\t\t\t\t\twidth: 20px;\n\t\t\t\t\theight: 20px;\n\t\t\t\t\tborder-radius: 50%;\n\t\t\t\t\tbackground-color: ${this.getColor()};\n\t\t\t\t\tposition: relative;\n\t\t\t\t\tdisplay: flex;\n\t\t\t\t\tcursor: grab;\n\t\t\t\t\talign-items: center;\n\t\t\t\t\tjustify-content: center;\n\t\t\t\t}\n\t\t\t\t.badge {\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tbottom: 60%;\n\t\t\t\t\tleft: 60%;\n\t\t\t\t\tbackground-color: blue;\n\t\t\t\t\tcolor: white;\n\t\t\t\t\tfont-size: 9px;\n\t\t\t\t\tline-height: 10px;\n\t\t\t\t\tpadding: 2px;\n\t\t\t\t\tborder-radius: 12px;\n\t\t\t\t}\n\t\t\t\t.tooltip {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tbackground: rgba(0, 0, 0, 0.8);\n\t\t\t\t\tcolor: white;\n\t\t\t\t\tpadding: 10px;\n\t\t\t\t\tborder-radius: 5px;\n\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\tz-index: 99999999;\n\t\t\t\t}\n\t\t\t\t.tooltip h4 {\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\tfont-size: 14px;\n\t\t\t\t}\n\t\t\t\t.tooltip ul {\n\t\t\t\t\tpadding: 0 0 0 5px;\n\t\t\t\t\tmargin: 0 0 0 10px;\n\t\t\t\t}\n\t\t\t\t.tooltip li {\n\t\t\t\t\tmargin: 2px 0;\n\t\t\t\t}\n\t\t\t\t.lock {\n\t\t\t\t\tposition: absolute;\n\t\t\t\t\tright: 5px;\n\t\t\t\t\ttop: 5px;\n\t\t\t\t\twidth: 20px;\n\t\t\t\t\theight: 20px;\n\t\t\t\t}\n\t\t\t\t</style>\n\t\t\t\t<div class=\"circle\">\n\t\t\t\t<span class=\"badge\">${this.counter}</span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"tooltip\">\n\t\t\t\t\t<h4>Debug-Statistiken</h4>\n\t\t\t\t</div>\n\t\t\t`,this.circle=this.shadow.querySelector(\".circle\"),this.badge=this.shadow.querySelector(\".badge\"),this.tooltip=this.shadow.querySelector(\".tooltip\"),this.circle.addEventListener(\"contextmenu\",t=>(this.keepOpen=!this.keepOpen,t.preventDefault(),1)),this.tooltip.style.left=\"80%\",this.tooltip.style.bottom=\"80%\",this.addEventListener(\"mouseenter\",()=>{this.tooltip.style.display=\"block\"}),this.addEventListener(\"mouseleave\",()=>{this.keepOpen||(this.tooltip.style.display=\"none\")}),this.enableDragging()}enableDragging(){const t=this.circle;let s=!1,i=0,n=0;const a={x:0,y:0},h=(u,N)=>{a.x=u-i,a.y=N-n;const _=window.innerWidth-t.clientWidth,b=window.innerHeight-t.clientHeight;a.x=Math.max(0,Math.min(a.x,_)),a.y=Math.max(0,Math.min(a.y,b)),this.tooltip.style.left=a.x<_*.5?\"80%\":\"\",this.tooltip.style.right=a.x<_*.5?\"\":\"80%\",this.tooltip.style.top=a.y<b*.5?\"80%\":\"\",this.tooltip.style.bottom=a.y<b*.5?\"\":\"80%\",this.style.left=`${a.x}px`,this.style.top=`${a.y}px`},c=\"_debug_comindicator_pos_\"+window.location.pathname.substring(1),v=localStorage.getItem(c);if(v){const{x:u,y:N}=JSON.parse(v);h(u,N)}const $=u=>{s=!0,i=u.clientX-this.getBoundingClientRect().left,n=u.clientY-this.getBoundingClientRect().top,this.circle.style.cursor=\"grabbing\",document.addEventListener(\"mousemove\",y),document.addEventListener(\"mouseup\",w)},y=u=>{s&&h(u.clientX,u.clientY)},w=()=>{s=!1,this.circle.style.cursor=\"\",document.removeEventListener(\"mousemove\",y),document.removeEventListener(\"mouseup\",w),localStorage.setItem(c,JSON.stringify(a))};t.addEventListener(\"mousedown\",$)}getColor(){switch(this.status){case r.UNKNOWN:return\"gray\";case r.DISCONNECTED:return\"red\";case r.DISCONNECTING:return\"red\";case r.CONNECTING:return\"orange\";case r.RECONNECTING:return\"yellow\";case r.CONNECTED:return\"turquoise\";case r.READY:return\"green\";default:return\"gray\"}}}customElements.define(\"dhcom-debug-indicator\",o)}class j{traits=d.CAN_RECONNECT|d.SHOULD_PING;url;socket;onMessage;onOpen;onClose;onError;constructor(e){this.url=new URL(e)}getUrl(){return this.url}setUrl(e){this.url=new URL(e),this.url.protocol.startsWith(\"ws\")||(console.warn(`WS WebSocket url '${e.toString()}' should use Protocol 'wss://' or 'ws://'!`),this.url.protocol===\"https\"?this.url.protocol=\"wss\":this.url.protocol=\"ws\")}start(){this.socket=new WebSocket(this.getUrl()),this.socket.onmessage=e=>this.onMessage(e.data),this.socket.onerror=e=>this.onError(e),this.socket.onopen=()=>this.onOpen(),this.socket.onclose=()=>{this.socket=null,this.onClose()}}stop(e=!0){this.socket&&(e||(this.socket.onmessage=null,this.socket.onerror=null,this.socket.onclose=null),this.socket.close())}send(e){this.socket.send(e)}}export{G as CDhDirectConnector,O as CDhMessageCommunicator,p as CDhMessageConnector,D as CDhMessageService,E as CDhPostMessageConnector,j as CDhWebSocketBrowserClient,H as CDhWebSocketConnector,r as ConnectorStatus,z as EventEmitter,I as RemoteEventManager,m as RouteMessageDiscardMode,d as WebSocketTraits};\n","import {PropertyDeclaration} from \"lit\";\r\nimport {InternalPropertyDeclaration} from \"lit/decorators.js\";\r\n\r\ntype UnwrapArray<T> = T extends Array<infer U> ? U : T;\r\n\r\ntype FallbackProvider<T> = {\r\n    fallback?: T\r\n    subkeyValidation?: SubkeyValidation<UnwrapArray<T>>\r\n}\r\n\r\ntype SubkeyValidation<T> = {\r\n    [K in keyof T]?: any\r\n}\r\n\r\nexport type BaseDeclaration<T> = PropertyDeclaration<T> | InternalPropertyDeclaration<T>;\r\nexport type FallbackPropertyDeclaration<T> = FallbackProvider<T> & PropertyDeclaration<T>;\r\nexport type InternalFallbackPropertyDeclaration<T> = FallbackProvider<T> & InternalPropertyDeclaration<T>\r\nexport type PropertyDecoratorFunction<T = any> = (options?: BaseDeclaration<T>) => PropertyDecorator;\r\n\r\nexport type ValidationResult = {\r\n    changed: boolean;\r\n    result?: any;\r\n}\r\n\r\nexport class PropertyValidator {\r\n\r\n    private static templates = new WeakMap<object, Map<string | symbol, object>>();\r\n\r\n    private _getNestedOptions(key: string, options: FallbackPropertyDeclaration<any>): any | undefined {\r\n        return options?.subkeyValidation?.[key] ?? undefined;\r\n    }\r\n\r\n    private _log(propertyName: string | symbol, value: any) {\r\n        console.warn(\r\n            `[ValidatedProperty] Key '${String(propertyName)}' was set to 'undefined'. Reverting to`, value ?? `'empty'`\r\n        );\r\n        return value;\r\n    }\r\n\r\n    private _validateObject(object: any, template: any, options: FallbackPropertyDeclaration<any>, initialize: boolean): ValidationResult {\r\n        let changed = false;\r\n\r\n        for (const key in template) {\r\n            if (!Object.prototype.hasOwnProperty.call(template, key)) {\r\n                continue;\r\n            }\r\n            const currentNestedOptions = this._getNestedOptions(key, options);\r\n            const templateValue = (template as any)[key];\r\n            const currentValue = (object as any)[key];\r\n\r\n            if (currentValue === undefined) {\r\n                let templateToUse = currentNestedOptions ?? templateValue;\r\n\r\n                if (currentNestedOptions && templateToUse !== undefined) {\r\n                    const nestedResult = this.validateObjectProperty(key, Array.isArray(templateToUse) ? [] : {}, templateToUse, options, false);\r\n                    templateToUse = nestedResult.result;\r\n                } else {\r\n                    templateToUse = templateValue;\r\n                }\r\n                (object as any)[key] = this._log(key, templateToUse);\r\n                changed = true;\r\n            } else if(currentNestedOptions) {\r\n                const nestedResult = this.validateObjectProperty(key, currentValue, currentNestedOptions, options, false);\r\n\r\n                if (nestedResult.changed) {\r\n                    object[key] = this._log(key, nestedResult.result);\r\n                    changed = true;\r\n                }\r\n            }\r\n        }\r\n        return {\r\n            changed,\r\n            result: object\r\n        }\r\n    }\r\n\r\n    private _validateArray(array: any[], validationTemplate: any, options: FallbackPropertyDeclaration<any>, initialize: boolean): ValidationResult {\r\n        let changed = false;\r\n        const arrayToValidate = initialize ? [] : array;\r\n        const elementTemplate = Array.isArray(validationTemplate) ? validationTemplate[0] : validationTemplate;\r\n\r\n        if (!elementTemplate) {\r\n            return { changed: false, result: array };\r\n        }\r\n\r\n        const validatedArray = arrayToValidate.map(x => {\r\n            const result = this._validateObject(x, elementTemplate, options, initialize);\r\n            if (result.changed) changed = true;\r\n            return result.result;\r\n        });\r\n\r\n        return {\r\n            changed: changed,\r\n            result: validatedArray,\r\n        }\r\n    }\r\n\r\n    private _getValidatedValue(value: any, template: any, options: FallbackPropertyDeclaration<any>, initialize = false): any {\r\n        if (Array.isArray(value)) {\r\n            return this._validateArray([...value], template, options, initialize);\r\n        } else {\r\n            return this._validateObject({...value}, template, options, initialize);\r\n        }\r\n    }\r\n\r\n    validateObjectProperty(\r\n        propertyName: string | symbol,\r\n        value: any,\r\n        template: any,\r\n        options: FallbackPropertyDeclaration<any>,\r\n        initialize = false,\r\n        depth = 0\r\n    ): ValidationResult {\r\n        if (value === undefined) {\r\n            return {changed: true, result: JSON.parse(JSON.stringify(this._log(propertyName, template)))};\r\n        }\r\n        if (typeof value !== 'object' || value === null) {\r\n            return {changed: false, result: value};\r\n        }\r\n        return this._getValidatedValue(value, template, options, initialize);\r\n    }\r\n\r\n    static getTemplate(prototype: any, propertyKey: string | symbol) : object | undefined {\r\n        return this.templates!.get(prototype)?.get(propertyKey);\r\n    }\r\n\r\n    static setTemplate(prototype: any, propertyKey: string | symbol, val: any) {\r\n        if (typeof val === 'object' && val !== null && val !== undefined && !Array.isArray(val)) {\r\n            if (!this.templates.has(prototype)) {\r\n                this.templates.set(prototype, new Map());\r\n            }\r\n            this.templates.get(prototype)!.set(propertyKey, JSON.parse(JSON.stringify(val)));\r\n        }\r\n    }\r\n\r\n}\r\n","import {InternalPropertyDeclaration, property, state} from \"lit/decorators.js\";\r\nimport {LitElement, PropertyDeclaration} from \"lit\";\r\nimport {\r\n    BaseDeclaration,\r\n    FallbackPropertyDeclaration, InternalFallbackPropertyDeclaration,\r\n    PropertyDecoratorFunction,\r\n    PropertyValidator\r\n} from \"../PropertyValidator\";\r\n\r\nconst validator = new PropertyValidator();\r\n\r\nfunction createValidatedDecorator<T>(\r\n    baseDecorator: PropertyDecoratorFunction<T>\r\n): (options?: BaseDeclaration<T>) => PropertyDecorator {\r\n    return function (options?: FallbackPropertyDeclaration<T>): PropertyDecorator {\r\n        return function (target: object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) {\r\n            const elementPrototype = target as object;\r\n            const privateKey = Symbol(`__default_val_${String(propertyKey)}`);\r\n            Object.defineProperty(elementPrototype, propertyKey, {\r\n                configurable: true,\r\n                enumerable: true,\r\n                set(this: any, val: any) {\r\n                    PropertyValidator.setTemplate(elementPrototype, propertyKey, val);\r\n                    this[privateKey] = val;\r\n                    delete this[propertyKey];\r\n                },\r\n                get(this: any) {\r\n                    return this[privateKey];\r\n                }\r\n            });\r\n\r\n            baseDecorator(options)(target, propertyKey);\r\n\r\n            const litDescriptor = Object.getOwnPropertyDescriptor(elementPrototype, propertyKey);\r\n\r\n            if (litDescriptor && litDescriptor.set) {\r\n                const originalLitSetter = litDescriptor.set;\r\n                if (options?.fallback && !PropertyValidator.getTemplate(target, propertyKey)) {\r\n                    target[privateKey] = options?.fallback\r\n                }\r\n                Object.defineProperty(elementPrototype, propertyKey, {\r\n                    ...litDescriptor,\r\n                    set(this: LitElement, newValue: any) {\r\n                        const template = PropertyValidator.getTemplate(target, propertyKey) ?? options?.fallback;\r\n                        let validatedValue = newValue;\r\n                        if (template) {\r\n                            validatedValue = validator.validateObjectProperty(propertyKey, newValue, template, options).result;\r\n                        }\r\n\r\n                        const oldValue = this[privateKey];\r\n                        this[privateKey] = validatedValue;\r\n                        originalLitSetter.call(this, validatedValue);\r\n                        this.requestUpdate(propertyKey, oldValue);\r\n                    },\r\n                    get(this: any) {\r\n                        return this[privateKey];\r\n                    }\r\n                });\r\n            }\r\n        };\r\n    };\r\n}\r\n\r\nexport function validatedProperty<T>(options?: FallbackPropertyDeclaration<T>): PropertyDecorator {\r\n    return createValidatedDecorator<T>(property)(options);\r\n}\r\nexport function validatedState<T>(options?: InternalFallbackPropertyDeclaration<T>): PropertyDecorator {\r\n    return createValidatedDecorator<T>(state)(options);\r\n}\r\n","import {LitElement} from \"lit\";\r\n\r\ninterface EventRefListener<T = Event> {\r\n    (evt: T): void;\r\n}\r\n\r\ninterface EventRefListenerObject<T = Event> {\r\n    handleEvent(object: T): void;\r\n}\r\n\r\ntype EventRefListenerOrEventRefListenerObject<T> = EventRefListener<T> | EventRefListenerObject<T>\r\n\r\ntype RefListener<T> = T extends Event ? EventRefListenerOrEventRefListenerObject<T> : EventRefListenerOrEventRefListenerObject<CustomEvent<T>>;\r\n\r\nexport interface EventRef<T> extends EventRefImpl<T> {}\r\n/**\r\n * A reference to a specific event on a LitElement.\r\n * This class handles creating and dispatching the event, and adding/removing listeners.\r\n */\r\nclass EventRefImpl<T> implements EventRef<T> {\r\n    constructor(public element: LitElement, public name: string, public env: EventInit) {\r\n\r\n    }\r\n\r\n    /**\r\n     * Composes the event to be dispatched.\r\n     * If the detail is an Event of the correct type, it is returned directly.\r\n     * Otherwise, a new CustomEvent is created with the detail.\r\n     * @param detail The event detail or the event itself.\r\n     * @returns The event to dispatch.\r\n     */\r\n    private composeEvent(detail?: T) {\r\n        if (detail instanceof Event && detail.type == this.name) {\r\n            return detail;\r\n        }\r\n        return new CustomEvent(this.name, {...this.env, detail})\r\n    }\r\n\r\n    /**\r\n     * Dispatches the event on the element.\r\n     * @param detail The event detail or the event itself.\r\n     */\r\n    dispatch(detail?: T) {\r\n        this.element.dispatchEvent(this.composeEvent(detail));\r\n    }\r\n\r\n    /**\r\n     * Adds an event listener to the element for this event.\r\n     * @param callback The function to be called when the event is dispatched.\r\n     * @param options Options for the event listener.\r\n     */\r\n    addListener<K = T>(callback: RefListener<K> | null, options?: AddEventListenerOptions | boolean): void {\r\n        this.element.addEventListener(this.name, callback, options);\r\n    }\r\n\r\n    /**\r\n     * Removes an event listener from the element for this event.\r\n     * @param callback The function to remove.\r\n     * @param options Options for the event listener.\r\n     */\r\n    removeListener<K = T>(callback: RefListener<K> | null, options?: EventListenerOptions | boolean): void {\r\n        this.element.removeEventListener(this.name, callback, options);\r\n    }\r\n\r\n    handleEvent(object: T): void {\r\n        this.dispatch()\r\n    }\r\n\r\n    detail(object: T): EventListenerObject {\r\n        const _this = this;\r\n        return {\r\n            handleEvent(_event: Event) {\r\n                _this.dispatch(object);\r\n            }\r\n        }\r\n    }\r\n\r\n}\r\n\r\nclass ManagedEventRef<T = undefined> extends EventRefImpl<T> {\r\n\r\n    private listeners: Array<{\r\n        callback: RefListener<any>,\r\n        options?: AddEventListenerOptions | boolean\r\n    }> = [];\r\n\r\n    addListener<K = T>(callback: RefListener<K> | null, options?: AddEventListenerOptions | boolean) {\r\n        this.listeners.push({callback, options});\r\n        super.addListener(callback, options);\r\n    }\r\n\r\n    removeListener<K = T>(callback: RefListener<K> | null, options?: EventListenerOptions | boolean) {\r\n        super.removeListener(callback, options);\r\n        const index = this.listeners.findIndex(\r\n            (l) => l.callback === callback && l.options === options\r\n        );\r\n        if (index > -1) {\r\n            this.listeners.splice(index, 1);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Removes all listeners that were added through this specific instance of ManagedEventRef.\r\n     */\r\n    removeAll() {\r\n        for (const {callback, options} of this.listeners) {\r\n            super.removeListener(callback, options);\r\n        }\r\n        this.listeners = [];\r\n    }\r\n\r\n}\r\n\r\nexport function event(\r\n    options?: EventInit,\r\n    eventName?: string\r\n): PropertyDecorator {\r\n    return (protoOrDescriptor: any, propertyKey: string | symbol) => {\r\n        eventName = eventName || propertyKey.toString().toLowerCase();\r\n        if (eventName.endsWith(\"event\")) {\r\n            eventName = eventName.replace(\"event\", '');\r\n        }\r\n        const privateKey = Symbol(`__${String(propertyKey)}_eventRef`);\r\n        Object.defineProperty(protoOrDescriptor, propertyKey, {\r\n            get(this: LitElement) {\r\n                if (!(this as any)[privateKey]) {\r\n                    (this as any)[privateKey] = new EventRefImpl(\r\n                        this,\r\n                        eventName,\r\n                        options\r\n                    );\r\n                }\r\n                return (this as any)[privateKey];\r\n            },\r\n            enumerable: true,\r\n            configurable: true,\r\n        });\r\n    };\r\n}\r\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {Disconnectable, Part} from './lit-html.js';\n\nexport {\n  AttributePart,\n  BooleanAttributePart,\n  ChildPart,\n  ElementPart,\n  EventPart,\n  Part,\n  PropertyPart,\n} from './lit-html.js';\n\nexport interface DirectiveClass {\n  new (part: PartInfo): Directive;\n}\n\n/**\n * This utility type extracts the signature of a directive class's render()\n * method so we can use it for the type of the generated directive function.\n */\nexport type DirectiveParameters<C extends Directive> = Parameters<C['render']>;\n\n/**\n * A generated directive function doesn't evaluate the directive, but just\n * returns a DirectiveResult object that captures the arguments.\n */\nexport interface DirectiveResult<C extends DirectiveClass = DirectiveClass> {\n  /**\n   * This property needs to remain unminified.\n   * @internal\n   */\n  ['_$litDirective$']: C;\n  /** @internal */\n  values: DirectiveParameters<InstanceType<C>>;\n}\n\nexport const PartType = {\n  ATTRIBUTE: 1,\n  CHILD: 2,\n  PROPERTY: 3,\n  BOOLEAN_ATTRIBUTE: 4,\n  EVENT: 5,\n  ELEMENT: 6,\n} as const;\n\nexport type PartType = (typeof PartType)[keyof typeof PartType];\n\nexport interface ChildPartInfo {\n  readonly type: typeof PartType.CHILD;\n}\n\nexport interface AttributePartInfo {\n  readonly type:\n    | typeof PartType.ATTRIBUTE\n    | typeof PartType.PROPERTY\n    | typeof PartType.BOOLEAN_ATTRIBUTE\n    | typeof PartType.EVENT;\n  readonly strings?: ReadonlyArray<string>;\n  readonly name: string;\n  readonly tagName: string;\n}\n\nexport interface ElementPartInfo {\n  readonly type: typeof PartType.ELEMENT;\n}\n\n/**\n * Information about the part a directive is bound to.\n *\n * This is useful for checking that a directive is attached to a valid part,\n * such as with directive that can only be used on attribute bindings.\n */\nexport type PartInfo = ChildPartInfo | AttributePartInfo | ElementPartInfo;\n\n/**\n * Creates a user-facing directive function from a Directive class. This\n * function has the same parameters as the directive's render() method.\n */\nexport const directive =\n  <C extends DirectiveClass>(c: C) =>\n  (...values: DirectiveParameters<InstanceType<C>>): DirectiveResult<C> => ({\n    // This property needs to remain unminified.\n    ['_$litDirective$']: c,\n    values,\n  });\n\n/**\n * Base class for creating custom directives. Users should extend this class,\n * implement `render` and/or `update`, and then pass their subclass to\n * `directive`.\n */\nexport abstract class Directive implements Disconnectable {\n  //@internal\n  __part!: Part;\n  //@internal\n  __attributeIndex: number | undefined;\n  //@internal\n  __directive?: Directive;\n\n  //@internal\n  _$parent!: Disconnectable;\n\n  // These will only exist on the AsyncDirective subclass\n  //@internal\n  _$disconnectableChildren?: Set<Disconnectable>;\n  // This property needs to remain unminified.\n  //@internal\n  ['_$notifyDirectiveConnectionChanged']?(isConnected: boolean): void;\n\n  constructor(_partInfo: PartInfo) {}\n\n  // See comment in Disconnectable interface for why this is a getter\n  get _$isConnected() {\n    return this._$parent._$isConnected;\n  }\n\n  /** @internal */\n  _$initialize(\n    part: Part,\n    parent: Disconnectable,\n    attributeIndex: number | undefined\n  ) {\n    this.__part = part;\n    this._$parent = parent;\n    this.__attributeIndex = attributeIndex;\n  }\n  /** @internal */\n  _$resolve(part: Part, props: Array<unknown>): unknown {\n    return this.update(part, props);\n  }\n\n  abstract render(...props: Array<unknown>): unknown;\n\n  update(_part: Part, props: Array<unknown>): unknown {\n    return this.render(...props);\n  }\n}\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {AttributePart, noChange} from '../lit-html.js';\nimport {\n  directive,\n  Directive,\n  DirectiveParameters,\n  PartInfo,\n  PartType,\n} from '../directive.js';\n\n/**\n * A key-value set of class names to truthy values.\n */\nexport interface ClassInfo {\n  readonly [name: string]: string | boolean | number;\n}\n\nclass ClassMapDirective extends Directive {\n  /**\n   * Stores the ClassInfo object applied to a given AttributePart.\n   * Used to unset existing values when a new ClassInfo object is applied.\n   */\n  private _previousClasses?: Set<string>;\n  private _staticClasses?: Set<string>;\n\n  constructor(partInfo: PartInfo) {\n    super(partInfo);\n    if (\n      partInfo.type !== PartType.ATTRIBUTE ||\n      partInfo.name !== 'class' ||\n      (partInfo.strings?.length as number) > 2\n    ) {\n      throw new Error(\n        '`classMap()` can only be used in the `class` attribute ' +\n          'and must be the only part in the attribute.'\n      );\n    }\n  }\n\n  render(classInfo: ClassInfo) {\n    // Add spaces to ensure separation from static classes\n    return (\n      ' ' +\n      Object.keys(classInfo)\n        .filter((key) => classInfo[key])\n        .join(' ') +\n      ' '\n    );\n  }\n\n  override update(part: AttributePart, [classInfo]: DirectiveParameters<this>) {\n    // Remember dynamic classes on the first render\n    if (this._previousClasses === undefined) {\n      this._previousClasses = new Set();\n      if (part.strings !== undefined) {\n        this._staticClasses = new Set(\n          part.strings\n            .join(' ')\n            .split(/\\s/)\n            .filter((s) => s !== '')\n        );\n      }\n      for (const name in classInfo) {\n        if (classInfo[name] && !this._staticClasses?.has(name)) {\n          this._previousClasses.add(name);\n        }\n      }\n      return this.render(classInfo);\n    }\n\n    const classList = part.element.classList;\n\n    // Remove old classes that no longer apply\n    for (const name of this._previousClasses) {\n      if (!(name in classInfo)) {\n        classList.remove(name);\n        this._previousClasses!.delete(name);\n      }\n    }\n\n    // Add or remove classes based on their classMap value\n    for (const name in classInfo) {\n      // We explicitly want a loose truthy check of `value` because it seems\n      // more convenient that '' and 0 are skipped.\n      const value = !!classInfo[name];\n      if (\n        value !== this._previousClasses.has(name) &&\n        !this._staticClasses?.has(name)\n      ) {\n        if (value) {\n          classList.add(name);\n          this._previousClasses.add(name);\n        } else {\n          classList.remove(name);\n          this._previousClasses.delete(name);\n        }\n      }\n    }\n    return noChange;\n  }\n}\n\n/**\n * A directive that applies dynamic CSS classes.\n *\n * This must be used in the `class` attribute and must be the only part used in\n * the attribute. It takes each property in the `classInfo` argument and adds\n * the property name to the element's `classList` if the property value is\n * truthy; if the property value is falsy, the property name is removed from\n * the element's `class`.\n *\n * For example `{foo: bar}` applies the class `foo` if the value of `bar` is\n * truthy.\n *\n * @param classInfo\n */\nexport const classMap = directive(ClassMapDirective);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {ClassMapDirective};\n","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {\n  _$LH,\n  Part,\n  DirectiveParent,\n  CompiledTemplateResult,\n  MaybeCompiledTemplateResult,\n  UncompiledTemplateResult,\n} from './lit-html.js';\nimport {\n  DirectiveResult,\n  DirectiveClass,\n  PartInfo,\n  AttributePartInfo,\n} from './directive.js';\ntype Primitive = null | undefined | boolean | number | string | symbol | bigint;\n\nconst {_ChildPart: ChildPart} = _$LH;\n\ntype ChildPart = InstanceType<typeof ChildPart>;\n\nconst ENABLE_SHADYDOM_NOPATCH = true;\n\nconst wrap =\n  ENABLE_SHADYDOM_NOPATCH &&\n  window.ShadyDOM?.inUse &&\n  window.ShadyDOM?.noPatch === true\n    ? window.ShadyDOM!.wrap\n    : (node: Node) => node;\n\n/**\n * Tests if a value is a primitive value.\n *\n * See https://tc39.github.io/ecma262/#sec-typeof-operator\n */\nexport const isPrimitive = (value: unknown): value is Primitive =>\n  value === null || (typeof value != 'object' && typeof value != 'function');\n\nexport const TemplateResultType = {\n  HTML: 1,\n  SVG: 2,\n  MATHML: 3,\n} as const;\n\nexport type TemplateResultType =\n  (typeof TemplateResultType)[keyof typeof TemplateResultType];\n\ntype IsTemplateResult = {\n  (val: unknown): val is MaybeCompiledTemplateResult;\n  <T extends TemplateResultType>(\n    val: unknown,\n    type: T\n  ): val is UncompiledTemplateResult<T>;\n};\n\n/**\n * Tests if a value is a TemplateResult or a CompiledTemplateResult.\n */\nexport const isTemplateResult: IsTemplateResult = (\n  value: unknown,\n  type?: TemplateResultType\n): value is UncompiledTemplateResult =>\n  type === undefined\n    ? // This property needs to remain unminified.\n      (value as UncompiledTemplateResult)?.['_$litType$'] !== undefined\n    : (value as UncompiledTemplateResult)?.['_$litType$'] === type;\n\n/**\n * Tests if a value is a CompiledTemplateResult.\n */\nexport const isCompiledTemplateResult = (\n  value: unknown\n): value is CompiledTemplateResult => {\n  return (value as CompiledTemplateResult)?.['_$litType$']?.h != null;\n};\n\n/**\n * Tests if a value is a DirectiveResult.\n */\nexport const isDirectiveResult = (value: unknown): value is DirectiveResult =>\n  // This property needs to remain unminified.\n  (value as DirectiveResult)?.['_$litDirective$'] !== undefined;\n\n/**\n * Retrieves the Directive class for a DirectiveResult\n */\nexport const getDirectiveClass = (value: unknown): DirectiveClass | undefined =>\n  // This property needs to remain unminified.\n  (value as DirectiveResult)?.['_$litDirective$'];\n\n/**\n * Tests whether a part has only a single-expression with no strings to\n * interpolate between.\n *\n * Only AttributePart and PropertyPart can have multiple expressions.\n * Multi-expression parts have a `strings` property and single-expression\n * parts do not.\n */\nexport const isSingleExpression = (part: PartInfo) =>\n  (part as AttributePartInfo).strings === undefined;\n\nconst createMarker = () => document.createComment('');\n\n/**\n * Inserts a ChildPart into the given container ChildPart's DOM, either at the\n * end of the container ChildPart, or before the optional `refPart`.\n *\n * This does not add the part to the containerPart's committed value. That must\n * be done by callers.\n *\n * @param containerPart Part within which to add the new ChildPart\n * @param refPart Part before which to add the new ChildPart; when omitted the\n *     part added to the end of the `containerPart`\n * @param part Part to insert, or undefined to create a new part\n */\nexport const insertPart = (\n  containerPart: ChildPart,\n  refPart?: ChildPart,\n  part?: ChildPart\n): ChildPart => {\n  const container = wrap(containerPart._$startNode).parentNode!;\n\n  const refNode =\n    refPart === undefined ? containerPart._$endNode : refPart._$startNode;\n\n  if (part === undefined) {\n    const startNode = wrap(container).insertBefore(createMarker(), refNode);\n    const endNode = wrap(container).insertBefore(createMarker(), refNode);\n    part = new ChildPart(\n      startNode,\n      endNode,\n      containerPart,\n      containerPart.options\n    );\n  } else {\n    const endNode = wrap(part._$endNode!).nextSibling;\n    const oldParent = part._$parent;\n    const parentChanged = oldParent !== containerPart;\n    if (parentChanged) {\n      part._$reparentDisconnectables?.(containerPart);\n      // Note that although `_$reparentDisconnectables` updates the part's\n      // `_$parent` reference after unlinking from its current parent, that\n      // method only exists if Disconnectables are present, so we need to\n      // unconditionally set it here\n      part._$parent = containerPart;\n      // Since the _$isConnected getter is somewhat costly, only\n      // read it once we know the subtree has directives that need\n      // to be notified\n      let newConnectionState;\n      if (\n        part._$notifyConnectionChanged !== undefined &&\n        (newConnectionState = containerPart._$isConnected) !==\n          oldParent!._$isConnected\n      ) {\n        part._$notifyConnectionChanged(newConnectionState);\n      }\n    }\n    if (endNode !== refNode || parentChanged) {\n      let start: Node | null = part._$startNode;\n      while (start !== endNode) {\n        const n: Node | null = wrap(start!).nextSibling;\n        wrap(container).insertBefore(start!, refNode);\n        start = n;\n      }\n    }\n  }\n\n  return part;\n};\n\n/**\n * Sets the value of a Part.\n *\n * Note that this should only be used to set/update the value of user-created\n * parts (i.e. those created using `insertPart`); it should not be used\n * by directives to set the value of the directive's container part. Directives\n * should return a value from `update`/`render` to update their part state.\n *\n * For directives that require setting their part value asynchronously, they\n * should extend `AsyncDirective` and call `this.setValue()`.\n *\n * @param part Part to set\n * @param value Value to set\n * @param index For `AttributePart`s, the index to set\n * @param directiveParent Used internally; should not be set by user\n */\nexport const setChildPartValue = <T extends ChildPart>(\n  part: T,\n  value: unknown,\n  directiveParent: DirectiveParent = part\n): T => {\n  part._$setValue(value, directiveParent);\n  return part;\n};\n\n// A sentinel value that can never appear as a part value except when set by\n// live(). Used to force a dirty-check to fail and cause a re-render.\nconst RESET_VALUE = {};\n\n/**\n * Sets the committed value of a ChildPart directly without triggering the\n * commit stage of the part.\n *\n * This is useful in cases where a directive needs to update the part such\n * that the next update detects a value change or not. When value is omitted,\n * the next update will be guaranteed to be detected as a change.\n *\n * @param part\n * @param value\n */\nexport const setCommittedValue = (part: Part, value: unknown = RESET_VALUE) =>\n  (part._$committedValue = value);\n\n/**\n * Returns the committed value of a ChildPart.\n *\n * The committed value is used for change detection and efficient updates of\n * the part. It can differ from the value set by the template or directive in\n * cases where the template value is transformed before being committed.\n *\n * - `TemplateResult`s are committed as a `TemplateInstance`\n * - Iterables are committed as `Array<ChildPart>`\n * - All other types are committed as the template value or value returned or\n *   set by a directive.\n *\n * @param part\n */\nexport const getCommittedValue = (part: ChildPart) => part._$committedValue;\n\n/**\n * Removes a ChildPart from the DOM, including any of its content.\n *\n * @param part The Part to remove\n */\nexport const removePart = (part: ChildPart) => {\n  part._$notifyConnectionChanged?.(false, true);\n  let start: ChildNode | null = part._$startNode;\n  const end: ChildNode | null = wrap(part._$endNode!).nextSibling;\n  while (start !== end) {\n    const n: ChildNode | null = wrap(start!).nextSibling;\n    (wrap(start!) as ChildNode).remove();\n    start = n;\n  }\n};\n\nexport const clearPart = (part: ChildPart) => {\n  part._$clear();\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {ChildPart, noChange} from '../lit-html.js';\nimport {directive, Directive, PartInfo, PartType} from '../directive.js';\nimport {\n  insertPart,\n  getCommittedValue,\n  removePart,\n  setCommittedValue,\n  setChildPartValue,\n} from '../directive-helpers.js';\n\nexport type KeyFn<T> = (item: T, index: number) => unknown;\nexport type ItemTemplate<T> = (item: T, index: number) => unknown;\n\n// Helper for generating a map of array item to its index over a subset\n// of an array (used to lazily generate `newKeyToIndexMap` and\n// `oldKeyToIndexMap`)\nconst generateMap = (list: unknown[], start: number, end: number) => {\n  const map = new Map<unknown, number>();\n  for (let i = start; i <= end; i++) {\n    map.set(list[i], i);\n  }\n  return map;\n};\n\nclass RepeatDirective extends Directive {\n  private _itemKeys?: unknown[];\n\n  constructor(partInfo: PartInfo) {\n    super(partInfo);\n    if (partInfo.type !== PartType.CHILD) {\n      throw new Error('repeat() can only be used in text expressions');\n    }\n  }\n\n  private _getValuesAndKeys<T>(\n    items: Iterable<T>,\n    keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n    template?: ItemTemplate<T>\n  ) {\n    let keyFn: KeyFn<T> | undefined;\n    if (template === undefined) {\n      template = keyFnOrTemplate;\n    } else if (keyFnOrTemplate !== undefined) {\n      keyFn = keyFnOrTemplate as KeyFn<T>;\n    }\n    const keys = [];\n    const values = [];\n    let index = 0;\n    for (const item of items) {\n      keys[index] = keyFn ? keyFn(item, index) : index;\n      values[index] = template!(item, index);\n      index++;\n    }\n    return {\n      values,\n      keys,\n    };\n  }\n\n  render<T>(items: Iterable<T>, template: ItemTemplate<T>): Array<unknown>;\n  render<T>(\n    items: Iterable<T>,\n    keyFn: KeyFn<T> | ItemTemplate<T>,\n    template: ItemTemplate<T>\n  ): Array<unknown>;\n  render<T>(\n    items: Iterable<T>,\n    keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n    template?: ItemTemplate<T>\n  ) {\n    return this._getValuesAndKeys(items, keyFnOrTemplate, template).values;\n  }\n\n  override update<T>(\n    containerPart: ChildPart,\n    [items, keyFnOrTemplate, template]: [\n      Iterable<T>,\n      KeyFn<T> | ItemTemplate<T>,\n      ItemTemplate<T>,\n    ]\n  ) {\n    // Old part & key lists are retrieved from the last update (which may\n    // be primed by hydration)\n    const oldParts = getCommittedValue(\n      containerPart\n    ) as Array<ChildPart | null>;\n    const {values: newValues, keys: newKeys} = this._getValuesAndKeys(\n      items,\n      keyFnOrTemplate,\n      template\n    );\n\n    // We check that oldParts, the committed value, is an Array as an\n    // indicator that the previous value came from a repeat() call. If\n    // oldParts is not an Array then this is the first render and we return\n    // an array for lit-html's array handling to render, and remember the\n    // keys.\n    if (!Array.isArray(oldParts)) {\n      this._itemKeys = newKeys;\n      return newValues;\n    }\n\n    // In SSR hydration it's possible for oldParts to be an array but for us\n    // to not have item keys because the update() hasn't run yet. We set the\n    // keys to an empty array. This will cause all oldKey/newKey comparisons\n    // to fail and execution to fall to the last nested brach below which\n    // reuses the oldPart.\n    const oldKeys = (this._itemKeys ??= []);\n\n    // New part list will be built up as we go (either reused from\n    // old parts or created for new keys in this update). This is\n    // saved in the above cache at the end of the update.\n    const newParts: ChildPart[] = [];\n\n    // Maps from key to index for current and previous update; these\n    // are generated lazily only when needed as a performance\n    // optimization, since they are only required for multiple\n    // non-contiguous changes in the list, which are less common.\n    let newKeyToIndexMap!: Map<unknown, number>;\n    let oldKeyToIndexMap!: Map<unknown, number>;\n\n    // Head and tail pointers to old parts and new values\n    let oldHead = 0;\n    let oldTail = oldParts.length - 1;\n    let newHead = 0;\n    let newTail = newValues.length - 1;\n\n    // Overview of O(n) reconciliation algorithm (general approach\n    // based on ideas found in ivi, vue, snabbdom, etc.):\n    //\n    // * We start with the list of old parts and new values (and\n    //   arrays of their respective keys), head/tail pointers into\n    //   each, and we build up the new list of parts by updating\n    //   (and when needed, moving) old parts or creating new ones.\n    //   The initial scenario might look like this (for brevity of\n    //   the diagrams, the numbers in the array reflect keys\n    //   associated with the old parts or new values, although keys\n    //   and parts/values are actually stored in parallel arrays\n    //   indexed using the same head/tail pointers):\n    //\n    //      oldHead v                 v oldTail\n    //   oldKeys:  [0, 1, 2, 3, 4, 5, 6]\n    //   newParts: [ ,  ,  ,  ,  ,  ,  ]\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6] <- reflects the user's new\n    //                                      item order\n    //      newHead ^                 ^ newTail\n    //\n    // * Iterate old & new lists from both sides, updating,\n    //   swapping, or removing parts at the head/tail locations\n    //   until neither head nor tail can move.\n    //\n    // * Example below: keys at head pointers match, so update old\n    //   part 0 in-place (no need to move it) and record part 0 in\n    //   the `newParts` list. The last thing we do is advance the\n    //   `oldHead` and `newHead` pointers (will be reflected in the\n    //   next diagram).\n    //\n    //      oldHead v                 v oldTail\n    //   oldKeys:  [0, 1, 2, 3, 4, 5, 6]\n    //   newParts: [0,  ,  ,  ,  ,  ,  ] <- heads matched: update 0\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    and advance both oldHead\n    //                                      & newHead\n    //      newHead ^                 ^ newTail\n    //\n    // * Example below: head pointers don't match, but tail\n    //   pointers do, so update part 6 in place (no need to move\n    //   it), and record part 6 in the `newParts` list. Last,\n    //   advance the `oldTail` and `oldHead` pointers.\n    //\n    //         oldHead v              v oldTail\n    //   oldKeys:  [0, 1, 2, 3, 4, 5, 6]\n    //   newParts: [0,  ,  ,  ,  ,  , 6] <- tails matched: update 6\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    and advance both oldTail\n    //                                      & newTail\n    //         newHead ^              ^ newTail\n    //\n    // * If neither head nor tail match; next check if one of the\n    //   old head/tail items was removed. We first need to generate\n    //   the reverse map of new keys to index (`newKeyToIndexMap`),\n    //   which is done once lazily as a performance optimization,\n    //   since we only hit this case if multiple non-contiguous\n    //   changes were made. Note that for contiguous removal\n    //   anywhere in the list, the head and tails would advance\n    //   from either end and pass each other before we get to this\n    //   case and removals would be handled in the final while loop\n    //   without needing to generate the map.\n    //\n    // * Example below: The key at `oldTail` was removed (no longer\n    //   in the `newKeyToIndexMap`), so remove that part from the\n    //   DOM and advance just the `oldTail` pointer.\n    //\n    //         oldHead v           v oldTail\n    //   oldKeys:  [0, 1, 2, 3, 4, 5, 6]\n    //   newParts: [0,  ,  ,  ,  ,  , 6] <- 5 not in new map: remove\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    5 and advance oldTail\n    //         newHead ^           ^ newTail\n    //\n    // * Once head and tail cannot move, any mismatches are due to\n    //   either new or moved items; if a new key is in the previous\n    //   \"old key to old index\" map, move the old part to the new\n    //   location, otherwise create and insert a new part. Note\n    //   that when moving an old part we null its position in the\n    //   oldParts array if it lies between the head and tail so we\n    //   know to skip it when the pointers get there.\n    //\n    // * Example below: neither head nor tail match, and neither\n    //   were removed; so find the `newHead` key in the\n    //   `oldKeyToIndexMap`, and move that old part's DOM into the\n    //   next head position (before `oldParts[oldHead]`). Last,\n    //   null the part in the `oldPart` array since it was\n    //   somewhere in the remaining oldParts still to be scanned\n    //   (between the head and tail pointers) so that we know to\n    //   skip that old part on future iterations.\n    //\n    //         oldHead v        v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2,  ,  ,  ,  , 6] <- stuck: update & move 2\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    into place and advance\n    //                                      newHead\n    //         newHead ^           ^ newTail\n    //\n    // * Note that for moves/insertions like the one above, a part\n    //   inserted at the head pointer is inserted before the\n    //   current `oldParts[oldHead]`, and a part inserted at the\n    //   tail pointer is inserted before `newParts[newTail+1]`. The\n    //   seeming asymmetry lies in the fact that new parts are\n    //   moved into place outside in, so to the right of the head\n    //   pointer are old parts, and to the right of the tail\n    //   pointer are new parts.\n    //\n    // * We always restart back from the top of the algorithm,\n    //   allowing matching and simple updates in place to\n    //   continue...\n    //\n    // * Example below: the head pointers once again match, so\n    //   simply update part 1 and record it in the `newParts`\n    //   array.  Last, advance both head pointers.\n    //\n    //         oldHead v        v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2, 1,  ,  ,  , 6] <- heads matched: update 1\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    and advance both oldHead\n    //                                      & newHead\n    //            newHead ^        ^ newTail\n    //\n    // * As mentioned above, items that were moved as a result of\n    //   being stuck (the final else clause in the code below) are\n    //   marked with null, so we always advance old pointers over\n    //   these so we're comparing the next actual old value on\n    //   either end.\n    //\n    // * Example below: `oldHead` is null (already placed in\n    //   newParts), so advance `oldHead`.\n    //\n    //            oldHead v     v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6] <- old head already used:\n    //   newParts: [0, 2, 1,  ,  ,  , 6]    advance oldHead\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]\n    //               newHead ^     ^ newTail\n    //\n    // * Note it's not critical to mark old parts as null when they\n    //   are moved from head to tail or tail to head, since they\n    //   will be outside the pointer range and never visited again.\n    //\n    // * Example below: Here the old tail key matches the new head\n    //   key, so the part at the `oldTail` position and move its\n    //   DOM to the new head position (before `oldParts[oldHead]`).\n    //   Last, advance `oldTail` and `newHead` pointers.\n    //\n    //               oldHead v  v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2, 1, 4,  ,  , 6] <- old tail matches new\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]   head: update & move 4,\n    //                                     advance oldTail & newHead\n    //               newHead ^     ^ newTail\n    //\n    // * Example below: Old and new head keys match, so update the\n    //   old head part in place, and advance the `oldHead` and\n    //   `newHead` pointers.\n    //\n    //               oldHead v oldTail\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2, 1, 4, 3,   ,6] <- heads match: update 3\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]    and advance oldHead &\n    //                                      newHead\n    //                  newHead ^  ^ newTail\n    //\n    // * Once the new or old pointers move past each other then all\n    //   we have left is additions (if old list exhausted) or\n    //   removals (if new list exhausted). Those are handled in the\n    //   final while loops at the end.\n    //\n    // * Example below: `oldHead` exceeded `oldTail`, so we're done\n    //   with the main loop.  Create the remaining part and insert\n    //   it at the new head position, and the update is complete.\n    //\n    //                   (oldHead > oldTail)\n    //   oldKeys:  [0, 1, -, 3, 4, 5, 6]\n    //   newParts: [0, 2, 1, 4, 3, 7 ,6] <- create and insert 7\n    //   newKeys:  [0, 2, 1, 4, 3, 7, 6]\n    //                     newHead ^ newTail\n    //\n    // * Note that the order of the if/else clauses is not\n    //   important to the algorithm, as long as the null checks\n    //   come first (to ensure we're always working on valid old\n    //   parts) and that the final else clause comes last (since\n    //   that's where the expensive moves occur). The order of\n    //   remaining clauses is just a simple guess at which cases\n    //   will be most common.\n    //\n    // * Note, we could calculate the longest\n    //   increasing subsequence (LIS) of old items in new position,\n    //   and only move those not in the LIS set. However that costs\n    //   O(nlogn) time and adds a bit more code, and only helps\n    //   make rare types of mutations require fewer moves. The\n    //   above handles removes, adds, reversal, swaps, and single\n    //   moves of contiguous items in linear time, in the minimum\n    //   number of moves. As the number of multiple moves where LIS\n    //   might help approaches a random shuffle, the LIS\n    //   optimization becomes less helpful, so it seems not worth\n    //   the code at this point. Could reconsider if a compelling\n    //   case arises.\n\n    while (oldHead <= oldTail && newHead <= newTail) {\n      if (oldParts[oldHead] === null) {\n        // `null` means old part at head has already been used\n        // below; skip\n        oldHead++;\n      } else if (oldParts[oldTail] === null) {\n        // `null` means old part at tail has already been used\n        // below; skip\n        oldTail--;\n      } else if (oldKeys[oldHead] === newKeys[newHead]) {\n        // Old head matches new head; update in place\n        newParts[newHead] = setChildPartValue(\n          oldParts[oldHead]!,\n          newValues[newHead]\n        );\n        oldHead++;\n        newHead++;\n      } else if (oldKeys[oldTail] === newKeys[newTail]) {\n        // Old tail matches new tail; update in place\n        newParts[newTail] = setChildPartValue(\n          oldParts[oldTail]!,\n          newValues[newTail]\n        );\n        oldTail--;\n        newTail--;\n      } else if (oldKeys[oldHead] === newKeys[newTail]) {\n        // Old head matches new tail; update and move to new tail\n        newParts[newTail] = setChildPartValue(\n          oldParts[oldHead]!,\n          newValues[newTail]\n        );\n        insertPart(containerPart, newParts[newTail + 1], oldParts[oldHead]!);\n        oldHead++;\n        newTail--;\n      } else if (oldKeys[oldTail] === newKeys[newHead]) {\n        // Old tail matches new head; update and move to new head\n        newParts[newHead] = setChildPartValue(\n          oldParts[oldTail]!,\n          newValues[newHead]\n        );\n        insertPart(containerPart, oldParts[oldHead]!, oldParts[oldTail]!);\n        oldTail--;\n        newHead++;\n      } else {\n        if (newKeyToIndexMap === undefined) {\n          // Lazily generate key-to-index maps, used for removals &\n          // moves below\n          newKeyToIndexMap = generateMap(newKeys, newHead, newTail);\n          oldKeyToIndexMap = generateMap(oldKeys, oldHead, oldTail);\n        }\n        if (!newKeyToIndexMap.has(oldKeys[oldHead])) {\n          // Old head is no longer in new list; remove\n          removePart(oldParts[oldHead]!);\n          oldHead++;\n        } else if (!newKeyToIndexMap.has(oldKeys[oldTail])) {\n          // Old tail is no longer in new list; remove\n          removePart(oldParts[oldTail]!);\n          oldTail--;\n        } else {\n          // Any mismatches at this point are due to additions or\n          // moves; see if we have an old part we can reuse and move\n          // into place\n          const oldIndex = oldKeyToIndexMap.get(newKeys[newHead]);\n          const oldPart = oldIndex !== undefined ? oldParts[oldIndex] : null;\n          if (oldPart === null) {\n            // No old part for this value; create a new one and\n            // insert it\n            const newPart = insertPart(containerPart, oldParts[oldHead]!);\n            setChildPartValue(newPart, newValues[newHead]);\n            newParts[newHead] = newPart;\n          } else {\n            // Reuse old part\n            newParts[newHead] = setChildPartValue(oldPart, newValues[newHead]);\n            insertPart(containerPart, oldParts[oldHead]!, oldPart);\n            // This marks the old part as having been used, so that\n            // it will be skipped in the first two checks above\n            oldParts[oldIndex as number] = null;\n          }\n          newHead++;\n        }\n      }\n    }\n    // Add parts for any remaining new values\n    while (newHead <= newTail) {\n      // For all remaining additions, we insert before last new\n      // tail, since old pointers are no longer valid\n      const newPart = insertPart(containerPart, newParts[newTail + 1]);\n      setChildPartValue(newPart, newValues[newHead]);\n      newParts[newHead++] = newPart;\n    }\n    // Remove any remaining unused old parts\n    while (oldHead <= oldTail) {\n      const oldPart = oldParts[oldHead++];\n      if (oldPart !== null) {\n        removePart(oldPart);\n      }\n    }\n\n    // Save order of new parts for next round\n    this._itemKeys = newKeys;\n    // Directly set part value, bypassing it's dirty-checking\n    setCommittedValue(containerPart, newParts);\n    return noChange;\n  }\n}\n\nexport interface RepeatDirectiveFn {\n  <T>(\n    items: Iterable<T>,\n    keyFnOrTemplate: KeyFn<T> | ItemTemplate<T>,\n    template?: ItemTemplate<T>\n  ): unknown;\n  <T>(items: Iterable<T>, template: ItemTemplate<T>): unknown;\n  <T>(\n    items: Iterable<T>,\n    keyFn: KeyFn<T> | ItemTemplate<T>,\n    template: ItemTemplate<T>\n  ): unknown;\n}\n\n/**\n * A directive that repeats a series of values (usually `TemplateResults`)\n * generated from an iterable, and updates those items efficiently when the\n * iterable changes based on user-provided `keys` associated with each item.\n *\n * Note that if a `keyFn` is provided, strict key-to-DOM mapping is maintained,\n * meaning previous DOM for a given key is moved into the new position if\n * needed, and DOM will never be reused with values for different keys (new DOM\n * will always be created for new keys). This is generally the most efficient\n * way to use `repeat` since it performs minimum unnecessary work for insertions\n * and removals.\n *\n * The `keyFn` takes two parameters, the item and its index, and returns a unique key value.\n *\n * ```js\n * html`\n *   <ol>\n *     ${repeat(this.items, (item) => item.id, (item, index) => {\n *       return html`<li>${index}: ${item.name}</li>`;\n *     })}\n *   </ol>\n * `\n * ```\n *\n * **Important**: If providing a `keyFn`, keys *must* be unique for all items in a\n * given call to `repeat`. The behavior when two or more items have the same key\n * is undefined.\n *\n * If no `keyFn` is provided, this directive will perform similar to mapping\n * items to values, and DOM will be reused against potentially different items.\n */\nexport const repeat = directive(RepeatDirective) as RepeatDirectiveFn;\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {RepeatDirective};\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {AttributePart, noChange} from '../lit-html.js';\nimport {\n  directive,\n  Directive,\n  DirectiveParameters,\n  PartInfo,\n  PartType,\n} from '../directive.js';\n\n/**\n * A key-value set of CSS properties and values.\n *\n * The key should be either a valid CSS property name string, like\n * `'background-color'`, or a valid JavaScript camel case property name\n * for CSSStyleDeclaration like `backgroundColor`.\n */\nexport interface StyleInfo {\n  [name: string]: string | number | undefined | null;\n}\n\nconst important = 'important';\n// The leading space is important\nconst importantFlag = ' !' + important;\n// How many characters to remove from a value, as a negative number\nconst flagTrim = 0 - importantFlag.length;\n\nclass StyleMapDirective extends Directive {\n  private _previousStyleProperties?: Set<string>;\n\n  constructor(partInfo: PartInfo) {\n    super(partInfo);\n    if (\n      partInfo.type !== PartType.ATTRIBUTE ||\n      partInfo.name !== 'style' ||\n      (partInfo.strings?.length as number) > 2\n    ) {\n      throw new Error(\n        'The `styleMap` directive must be used in the `style` attribute ' +\n          'and must be the only part in the attribute.'\n      );\n    }\n  }\n\n  render(styleInfo: Readonly<StyleInfo>) {\n    return Object.keys(styleInfo).reduce((style, prop) => {\n      const value = styleInfo[prop];\n      if (value == null) {\n        return style;\n      }\n      // Convert property names from camel-case to dash-case, i.e.:\n      //  `backgroundColor` -> `background-color`\n      // Vendor-prefixed names need an extra `-` appended to front:\n      //  `webkitAppearance` -> `-webkit-appearance`\n      // Exception is any property name containing a dash, including\n      // custom properties; we assume these are already dash-cased i.e.:\n      //  `--my-button-color` --> `--my-button-color`\n      prop = prop.includes('-')\n        ? prop\n        : prop\n            .replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g, '-$&')\n            .toLowerCase();\n      return style + `${prop}:${value};`;\n    }, '');\n  }\n\n  override update(part: AttributePart, [styleInfo]: DirectiveParameters<this>) {\n    const {style} = part.element as HTMLElement;\n\n    if (this._previousStyleProperties === undefined) {\n      this._previousStyleProperties = new Set(Object.keys(styleInfo));\n      return this.render(styleInfo);\n    }\n\n    // Remove old properties that no longer exist in styleInfo\n    for (const name of this._previousStyleProperties) {\n      // If the name isn't in styleInfo or it's null/undefined\n      if (styleInfo[name] == null) {\n        this._previousStyleProperties!.delete(name);\n        if (name.includes('-')) {\n          style.removeProperty(name);\n        } else {\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n          (style as any)[name] = null;\n        }\n      }\n    }\n\n    // Add or update properties\n    for (const name in styleInfo) {\n      const value = styleInfo[name];\n      if (value != null) {\n        this._previousStyleProperties.add(name);\n        const isImportant =\n          typeof value === 'string' && value.endsWith(importantFlag);\n        if (name.includes('-') || isImportant) {\n          style.setProperty(\n            name,\n            isImportant\n              ? (value as string).slice(0, flagTrim)\n              : (value as string),\n            isImportant ? important : ''\n          );\n        } else {\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n          (style as any)[name] = value;\n        }\n      }\n    }\n    return noChange;\n  }\n}\n\n/**\n * A directive that applies CSS properties to an element.\n *\n * `styleMap` can only be used in the `style` attribute and must be the only\n * expression in the attribute. It takes the property names in the\n * {@link StyleInfo styleInfo} object and adds the properties to the inline\n * style of the element.\n *\n * Property names with dashes (`-`) are assumed to be valid CSS\n * property names and set on the element's style object using `setProperty()`.\n * Names without dashes are assumed to be camelCased JavaScript property names\n * and set on the element's style object using property assignment, allowing the\n * style object to translate JavaScript-style names to CSS property names.\n *\n * For example `styleMap({backgroundColor: 'red', 'border-top': '5px', '--size':\n * '0'})` sets the `background-color`, `border-top` and `--size` properties.\n *\n * @param styleInfo\n * @see {@link https://lit.dev/docs/templates/directives/#stylemap styleMap code samples on Lit.dev}\n */\nexport const styleMap = directive(StyleMapDirective);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {StyleMapDirective};\n","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n// Any new exports need to be added to the export statement in\n// `packages/lit/src/index.all.ts`.\n\nimport {\n  html as coreHtml,\n  svg as coreSvg,\n  mathml as coreMathml,\n  TemplateResult,\n} from './lit-html.js';\n\nexport interface StaticValue {\n  /** The value to interpolate as-is into the template. */\n  _$litStatic$: string;\n\n  /**\n   * A value that can't be decoded from ordinary JSON, make it harder for\n   * an attacker-controlled data that goes through JSON.parse to produce a valid\n   * StaticValue.\n   */\n  r: typeof brand;\n}\n\n/**\n * Prevents JSON injection attacks.\n *\n * The goals of this brand:\n *   1) fast to check\n *   2) code is small on the wire\n *   3) multiple versions of Lit in a single page will all produce mutually\n *      interoperable StaticValues\n *   4) normal JSON.parse (without an unusual reviver) can not produce a\n *      StaticValue\n *\n * Symbols satisfy (1), (2), and (4). We use Symbol.for to satisfy (3), but\n * we don't care about the key, so we break ties via (2) and use the empty\n * string.\n */\nconst brand = Symbol.for('');\n\n/** Safely extracts the string part of a StaticValue. */\nconst unwrapStaticValue = (value: unknown): string | undefined => {\n  if ((value as Partial<StaticValue>)?.r !== brand) {\n    return undefined;\n  }\n  return (value as Partial<StaticValue>)?.['_$litStatic$'];\n};\n\n/**\n * Wraps a string so that it behaves like part of the static template\n * strings instead of a dynamic value.\n *\n * Users must take care to ensure that adding the static string to the template\n * results in well-formed HTML, or else templates may break unexpectedly.\n *\n * Note that this function is unsafe to use on untrusted content, as it will be\n * directly parsed into HTML. Do not pass user input to this function\n * without sanitizing it.\n *\n * Static values can be changed, but they will cause a complete re-render\n * since they effectively create a new template.\n */\nexport const unsafeStatic = (value: string): StaticValue => ({\n  ['_$litStatic$']: value,\n  r: brand,\n});\n\nconst textFromStatic = (value: StaticValue) => {\n  if (value['_$litStatic$'] !== undefined) {\n    return value['_$litStatic$'];\n  } else {\n    throw new Error(\n      `Value passed to 'literal' function must be a 'literal' result: ${value}. Use 'unsafeStatic' to pass non-literal values, but\n            take care to ensure page security.`\n    );\n  }\n};\n\n/**\n * Tags a string literal so that it behaves like part of the static template\n * strings instead of a dynamic value.\n *\n * The only values that may be used in template expressions are other tagged\n * `literal` results or `unsafeStatic` values (note that untrusted content\n * should never be passed to `unsafeStatic`).\n *\n * Users must take care to ensure that adding the static string to the template\n * results in well-formed HTML, or else templates may break unexpectedly.\n *\n * Static values can be changed, but they will cause a complete re-render since\n * they effectively create a new template.\n */\nexport const literal = (\n  strings: TemplateStringsArray,\n  ...values: unknown[]\n): StaticValue => ({\n  ['_$litStatic$']: values.reduce(\n    (acc, v, idx) => acc + textFromStatic(v as StaticValue) + strings[idx + 1],\n    strings[0]\n  ) as string,\n  r: brand,\n});\n\nconst stringsCache = new Map<string, TemplateStringsArray>();\n\n/**\n * Wraps a lit-html template tag (`html` or `svg`) to add static value support.\n */\nexport const withStatic =\n  (coreTag: typeof coreHtml | typeof coreSvg | typeof coreMathml) =>\n  (strings: TemplateStringsArray, ...values: unknown[]): TemplateResult => {\n    const l = values.length;\n    let staticValue: string | undefined;\n    let dynamicValue: unknown;\n    const staticStrings: Array<string> = [];\n    const dynamicValues: Array<unknown> = [];\n    let i = 0;\n    let hasStatics = false;\n    let s: string;\n\n    while (i < l) {\n      s = strings[i];\n      // Collect any unsafeStatic values, and their following template strings\n      // so that we treat a run of template strings and unsafe static values as\n      // a single template string.\n      while (\n        i < l &&\n        ((dynamicValue = values[i]),\n        (staticValue = unwrapStaticValue(dynamicValue))) !== undefined\n      ) {\n        s += staticValue + strings[++i];\n        hasStatics = true;\n      }\n      // If the last value is static, we don't need to push it.\n      if (i !== l) {\n        dynamicValues.push(dynamicValue);\n      }\n      staticStrings.push(s);\n      i++;\n    }\n    // If the last value isn't static (which would have consumed the last\n    // string), then we need to add the last string.\n    if (i === l) {\n      staticStrings.push(strings[l]);\n    }\n\n    if (hasStatics) {\n      const key = staticStrings.join('$$lit$$');\n      strings = stringsCache.get(key)!;\n      if (strings === undefined) {\n        // Beware: in general this pattern is unsafe, and doing so may bypass\n        // lit's security checks and allow an attacker to execute arbitrary\n        // code and inject arbitrary content.\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        (staticStrings as any).raw = staticStrings;\n        stringsCache.set(\n          key,\n          (strings = staticStrings as unknown as TemplateStringsArray)\n        );\n      }\n      values = dynamicValues;\n    }\n    return coreTag(strings, ...values);\n  };\n\n/**\n * Interprets a template literal as an HTML template that can efficiently\n * render to and update a container.\n *\n * Includes static value support from `lit-html/static.js`.\n */\nexport const html = withStatic(coreHtml);\n\n/**\n * Interprets a template literal as an SVG template that can efficiently\n * render to and update a container.\n *\n * Includes static value support from `lit-html/static.js`.\n */\nexport const svg = withStatic(coreSvg);\n\n/**\n * Interprets a template literal as MathML fragment that can efficiently render\n * to and update a container.\n *\n * Includes static value support from `lit-html/static.js`.\n */\nexport const mathml = withStatic(coreMathml);\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {nothing} from '../lit-html.js';\n\n/**\n * For AttributeParts, sets the attribute if the value is defined and removes\n * the attribute if the value is undefined.\n *\n * For other part types, this directive is a no-op.\n */\nexport const ifDefined = <T>(value: T) => value ?? nothing;\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Returns an iterable containing the result of calling `f(value)` on each\n * value in `items`.\n *\n * @example\n *\n * ```ts\n * render() {\n *   return html`\n *     <ul>\n *       ${map(items, (i) => html`<li>${i}</li>`)}\n *     </ul>\n *   `;\n * }\n * ```\n */\nexport function* map<T>(\n  items: Iterable<T> | undefined,\n  f: (value: T, index: number) => unknown\n) {\n  if (items !== undefined) {\n    let i = 0;\n    for (const value of items) {\n      yield f(value, i++);\n    }\n  }\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Returns an iterable of integers from `start` to `end` (exclusive)\n * incrementing by `step`.\n *\n * If `start` is omitted, the range starts at `0`. `step` defaults to `1`.\n *\n * @example\n *\n * ```ts\n * render() {\n *   return html`\n *     ${map(range(8), () => html`<div class=\"cell\"></div>`)}\n *   `;\n * }\n * ```\n */\nexport function range(end: number): Iterable<number>;\nexport function range(\n  start: number,\n  end: number,\n  step?: number\n): Iterable<number>;\nexport function* range(startOrEnd: number, end?: number, step = 1) {\n  const start = end === undefined ? 0 : startOrEnd;\n  end ??= startOrEnd;\n  for (let i = start; step > 0 ? i < end : end < i; i += step) {\n    yield i;\n  }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nconst NODE_MODE = false;\n\n// Allows minifiers to rename references to globalThis\nconst global = globalThis;\n\n/**\n * Whether the current browser supports `adoptedStyleSheets`.\n */\nexport const supportsAdoptingStyleSheets: boolean =\n  global.ShadowRoot &&\n  (global.ShadyCSS === undefined || global.ShadyCSS.nativeShadow) &&\n  'adoptedStyleSheets' in Document.prototype &&\n  'replace' in CSSStyleSheet.prototype;\n\n/**\n * A CSSResult or native CSSStyleSheet.\n *\n * In browsers that support constructible CSS style sheets, CSSStyleSheet\n * object can be used for styling along side CSSResult from the `css`\n * template tag.\n */\nexport type CSSResultOrNative = CSSResult | CSSStyleSheet;\n\nexport type CSSResultArray = Array<CSSResultOrNative | CSSResultArray>;\n\n/**\n * A single CSSResult, CSSStyleSheet, or an array or nested arrays of those.\n */\nexport type CSSResultGroup = CSSResultOrNative | CSSResultArray;\n\nconst constructionToken = Symbol();\n\nconst cssTagCache = new WeakMap<TemplateStringsArray, CSSStyleSheet>();\n\n/**\n * A container for a string of CSS text, that may be used to create a CSSStyleSheet.\n *\n * CSSResult is the return value of `css`-tagged template literals and\n * `unsafeCSS()`. In order to ensure that CSSResults are only created via the\n * `css` tag and `unsafeCSS()`, CSSResult cannot be constructed directly.\n */\nexport class CSSResult {\n  // This property needs to remain unminified.\n  ['_$cssResult$'] = true;\n  readonly cssText: string;\n  private _styleSheet?: CSSStyleSheet;\n  private _strings: TemplateStringsArray | undefined;\n\n  private constructor(\n    cssText: string,\n    strings: TemplateStringsArray | undefined,\n    safeToken: symbol\n  ) {\n    if (safeToken !== constructionToken) {\n      throw new Error(\n        'CSSResult is not constructable. Use `unsafeCSS` or `css` instead.'\n      );\n    }\n    this.cssText = cssText;\n    this._strings = strings;\n  }\n\n  // This is a getter so that it's lazy. In practice, this means stylesheets\n  // are not created until the first element instance is made.\n  get styleSheet(): CSSStyleSheet | undefined {\n    // If `supportsAdoptingStyleSheets` is true then we assume CSSStyleSheet is\n    // constructable.\n    let styleSheet = this._styleSheet;\n    const strings = this._strings;\n    if (supportsAdoptingStyleSheets && styleSheet === undefined) {\n      const cacheable = strings !== undefined && strings.length === 1;\n      if (cacheable) {\n        styleSheet = cssTagCache.get(strings);\n      }\n      if (styleSheet === undefined) {\n        (this._styleSheet = styleSheet = new CSSStyleSheet()).replaceSync(\n          this.cssText\n        );\n        if (cacheable) {\n          cssTagCache.set(strings, styleSheet);\n        }\n      }\n    }\n    return styleSheet;\n  }\n\n  toString(): string {\n    return this.cssText;\n  }\n}\n\ntype ConstructableCSSResult = CSSResult & {\n  new (\n    cssText: string,\n    strings: TemplateStringsArray | undefined,\n    safeToken: symbol\n  ): CSSResult;\n};\n\nconst textFromCSSResult = (value: CSSResultGroup | number) => {\n  // This property needs to remain unminified.\n  if ((value as CSSResult)['_$cssResult$'] === true) {\n    return (value as CSSResult).cssText;\n  } else if (typeof value === 'number') {\n    return value;\n  } else {\n    throw new Error(\n      `Value passed to 'css' function must be a 'css' function result: ` +\n        `${value}. Use 'unsafeCSS' to pass non-literal values, but take care ` +\n        `to ensure page security.`\n    );\n  }\n};\n\n/**\n * Wrap a value for interpolation in a {@linkcode css} tagged template literal.\n *\n * This is unsafe because untrusted CSS text can be used to phone home\n * or exfiltrate data to an attacker controlled site. Take care to only use\n * this with trusted input.\n */\nexport const unsafeCSS = (value: unknown) =>\n  new (CSSResult as ConstructableCSSResult)(\n    typeof value === 'string' ? value : String(value),\n    undefined,\n    constructionToken\n  );\n\n/**\n * A template literal tag which can be used with LitElement's\n * {@linkcode LitElement.styles} property to set element styles.\n *\n * For security reasons, only literal string values and number may be used in\n * embedded expressions. To incorporate non-literal values {@linkcode unsafeCSS}\n * may be used inside an expression.\n */\nexport const css = (\n  strings: TemplateStringsArray,\n  ...values: (CSSResultGroup | number)[]\n): CSSResult => {\n  const cssText =\n    strings.length === 1\n      ? strings[0]\n      : values.reduce(\n          (acc, v, idx) => acc + textFromCSSResult(v) + strings[idx + 1],\n          strings[0]\n        );\n  return new (CSSResult as ConstructableCSSResult)(\n    cssText,\n    strings,\n    constructionToken\n  );\n};\n\n/**\n * Applies the given styles to a `shadowRoot`. When Shadow DOM is\n * available but `adoptedStyleSheets` is not, styles are appended to the\n * `shadowRoot` to [mimic the native feature](https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot/adoptedStyleSheets).\n * Note, when shimming is used, any styles that are subsequently placed into\n * the shadowRoot should be placed *before* any shimmed adopted styles. This\n * will match spec behavior that gives adopted sheets precedence over styles in\n * shadowRoot.\n */\nexport const adoptStyles = (\n  renderRoot: ShadowRoot,\n  styles: Array<CSSResultOrNative>\n) => {\n  if (supportsAdoptingStyleSheets) {\n    (renderRoot as ShadowRoot).adoptedStyleSheets = styles.map((s) =>\n      s instanceof CSSStyleSheet ? s : s.styleSheet!\n    );\n  } else {\n    for (const s of styles) {\n      const style = document.createElement('style');\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      const nonce = (global as any)['litNonce'];\n      if (nonce !== undefined) {\n        style.setAttribute('nonce', nonce);\n      }\n      style.textContent = (s as CSSResult).cssText;\n      renderRoot.appendChild(style);\n    }\n  }\n};\n\nconst cssResultFromStyleSheet = (sheet: CSSStyleSheet) => {\n  let cssText = '';\n  for (const rule of sheet.cssRules) {\n    cssText += rule.cssText;\n  }\n  return unsafeCSS(cssText);\n};\n\nexport const getCompatibleStyle =\n  supportsAdoptingStyleSheets ||\n  (NODE_MODE && global.CSSStyleSheet === undefined)\n    ? (s: CSSResultOrNative) => s\n    : (s: CSSResultOrNative) =>\n        s instanceof CSSStyleSheet ? cssResultFromStyleSheet(s) : s;\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Use this module if you want to create your own base class extending\n * {@link ReactiveElement}.\n * @packageDocumentation\n */\n\nimport {\n  getCompatibleStyle,\n  adoptStyles,\n  CSSResultGroup,\n  CSSResultOrNative,\n} from './css-tag.js';\nimport type {\n  ReactiveController,\n  ReactiveControllerHost,\n} from './reactive-controller.js';\n\n// In the Node build, this import will be injected by Rollup:\n// import {HTMLElement, customElements} from '@lit-labs/ssr-dom-shim';\n\nexport * from './css-tag.js';\nexport type {\n  ReactiveController,\n  ReactiveControllerHost,\n} from './reactive-controller.js';\n\n/**\n * Removes the `readonly` modifier from properties in the union K.\n *\n * This is a safer way to cast a value to a type with a mutable version of a\n * readonly field, than casting to an interface with the field re-declared\n * because it preserves the type of all the fields and warns on typos.\n */\ntype Mutable<T, K extends keyof T> = Omit<T, K> & {\n  -readonly [P in keyof Pick<T, K>]: P extends K ? T[P] : never;\n};\n\n// TODO (justinfagnani): Add `hasOwn` here when we ship ES2022\nconst {\n  is,\n  defineProperty,\n  getOwnPropertyDescriptor,\n  getOwnPropertyNames,\n  getOwnPropertySymbols,\n  getPrototypeOf,\n} = Object;\n\nconst NODE_MODE = false;\n\n// Lets a minifier replace globalThis references with a minified name\nconst global = globalThis;\n\nif (NODE_MODE) {\n  global.customElements ??= customElements;\n}\n\nconst DEV_MODE = true;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nconst trustedTypes = (global as unknown as {trustedTypes?: {emptyScript: ''}})\n  .trustedTypes;\n\n// Temporary workaround for https://crbug.com/993268\n// Currently, any attribute starting with \"on\" is considered to be a\n// TrustedScript source. Such boolean attributes must be set to the equivalent\n// trusted emptyScript value.\nconst emptyStringForBooleanAttribute = trustedTypes\n  ? (trustedTypes.emptyScript as unknown as '')\n  : '';\n\nconst polyfillSupport = DEV_MODE\n  ? global.reactiveElementPolyfillSupportDevMode\n  : global.reactiveElementPolyfillSupport;\n\nif (DEV_MODE) {\n  // Ensure warnings are issued only 1x, even if multiple versions of Lit\n  // are loaded.\n  global.litIssuedWarnings ??= new Set();\n\n  /**\n   * Issue a warning if we haven't already, based either on `code` or `warning`.\n   * Warnings are disabled automatically only by `warning`; disabling via `code`\n   * can be done by users.\n   */\n  issueWarning = (code: string, warning: string) => {\n    warning += ` See https://lit.dev/msg/${code} for more information.`;\n    if (\n      !global.litIssuedWarnings!.has(warning) &&\n      !global.litIssuedWarnings!.has(code)\n    ) {\n      console.warn(warning);\n      global.litIssuedWarnings!.add(warning);\n    }\n  };\n\n  queueMicrotask(() => {\n    issueWarning(\n      'dev-mode',\n      `Lit is in dev mode. Not recommended for production!`\n    );\n\n    // Issue polyfill support warning.\n    if (global.ShadyDOM?.inUse && polyfillSupport === undefined) {\n      issueWarning(\n        'polyfill-support-missing',\n        `Shadow DOM is being polyfilled via \\`ShadyDOM\\` but ` +\n          `the \\`polyfill-support\\` module has not been loaded.`\n      );\n    }\n  });\n}\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace ReactiveUnstable {\n  /**\n   * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n   * we will emit 'lit-debug' events to window, with live details about the update and render\n   * lifecycle. These can be useful for writing debug tooling and visualizations.\n   *\n   * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n   * making certain operations that are normally very cheap (like a no-op render) much slower,\n   * because we must copy data and dispatch events.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-namespace\n  export namespace DebugLog {\n    export type Entry = Update;\n    export interface Update {\n      kind: 'update';\n    }\n  }\n}\n\ninterface DebugLoggingWindow {\n  // Even in dev mode, we generally don't want to emit these events, as that's\n  // another level of cost, so only emit them when DEV_MODE is true _and_ when\n  // window.emitLitDebugEvents is true.\n  emitLitDebugLogEvents?: boolean;\n}\n\n/**\n * Useful for visualizing and logging insights into what the Lit template system is doing.\n *\n * Compiled out of prod mode builds.\n */\nconst debugLogEvent = DEV_MODE\n  ? (event: ReactiveUnstable.DebugLog.Entry) => {\n      const shouldEmit = (global as unknown as DebugLoggingWindow)\n        .emitLitDebugLogEvents;\n      if (!shouldEmit) {\n        return;\n      }\n      global.dispatchEvent(\n        new CustomEvent<ReactiveUnstable.DebugLog.Entry>('lit-debug', {\n          detail: event,\n        })\n      );\n    }\n  : undefined;\n\n/*\n * When using Closure Compiler, JSCompiler_renameProperty(property, object) is\n * replaced at compile time by the munged name for object[property]. We cannot\n * alias this function, so we have to use a small shim that has the same\n * behavior when not compiling.\n */\n/*@__INLINE__*/\nconst JSCompiler_renameProperty = <P extends PropertyKey>(\n  prop: P,\n  _obj: unknown\n): P => prop;\n\n/**\n * Converts property values to and from attribute values.\n */\nexport interface ComplexAttributeConverter<Type = unknown, TypeHint = unknown> {\n  /**\n   * Called to convert an attribute value to a property\n   * value.\n   */\n  fromAttribute?(value: string | null, type?: TypeHint): Type;\n\n  /**\n   * Called to convert a property value to an attribute\n   * value.\n   *\n   * It returns unknown instead of string, to be compatible with\n   * https://github.com/WICG/trusted-types (and similar efforts).\n   */\n  toAttribute?(value: Type, type?: TypeHint): unknown;\n}\n\ntype AttributeConverter<Type = unknown, TypeHint = unknown> =\n  | ComplexAttributeConverter<Type>\n  | ((value: string | null, type?: TypeHint) => Type);\n\n/**\n * Defines options for a property accessor.\n */\nexport interface PropertyDeclaration<Type = unknown, TypeHint = unknown> {\n  /**\n   * When set to `true`, indicates the property is internal private state. The\n   * property should not be set by users. When using TypeScript, this property\n   * should be marked as `private` or `protected`, and it is also a common\n   * practice to use a leading `_` in the name. The property is not added to\n   * `observedAttributes`.\n   */\n  readonly state?: boolean;\n\n  /**\n   * Indicates how and whether the property becomes an observed attribute.\n   * If the value is `false`, the property is not added to `observedAttributes`.\n   * If true or absent, the lowercased property name is observed (e.g. `fooBar`\n   * becomes `foobar`). If a string, the string value is observed (e.g\n   * `attribute: 'foo-bar'`).\n   */\n  readonly attribute?: boolean | string;\n\n  /**\n   * Indicates the type of the property. This is used only as a hint for the\n   * `converter` to determine how to convert the attribute\n   * to/from a property.\n   */\n  readonly type?: TypeHint;\n\n  /**\n   * Indicates how to convert the attribute to/from a property. If this value\n   * is a function, it is used to convert the attribute value a the property\n   * value. If it's an object, it can have keys for `fromAttribute` and\n   * `toAttribute`. If no `toAttribute` function is provided and\n   * `reflect` is set to `true`, the property value is set directly to the\n   * attribute. A default `converter` is used if none is provided; it supports\n   * `Boolean`, `String`, `Number`, `Object`, and `Array`. Note,\n   * when a property changes and the converter is used to update the attribute,\n   * the property is never updated again as a result of the attribute changing,\n   * and vice versa.\n   */\n  readonly converter?: AttributeConverter<Type, TypeHint>;\n\n  /**\n   * Indicates if the property should reflect to an attribute.\n   * If `true`, when the property is set, the attribute is set using the\n   * attribute name determined according to the rules for the `attribute`\n   * property option and the value of the property converted using the rules\n   * from the `converter` property option.\n   */\n  readonly reflect?: boolean;\n\n  /**\n   * A function that indicates if a property should be considered changed when\n   * it is set. The function should take the `newValue` and `oldValue` and\n   * return `true` if an update should be requested.\n   */\n  hasChanged?(value: Type, oldValue: Type): boolean;\n\n  /**\n   * Indicates whether an accessor will be created for this property. By\n   * default, an accessor will be generated for this property that requests an\n   * update when set. If this flag is `true`, no accessor will be created, and\n   * it will be the user's responsibility to call\n   * `this.requestUpdate(propertyName, oldValue)` to request an update when\n   * the property changes.\n   */\n  readonly noAccessor?: boolean;\n\n  /**\n   * Whether this property is wrapping accessors. This is set by `@property`\n   * to control the initial value change and reflection logic.\n   *\n   * @internal\n   */\n  wrapped?: boolean;\n\n  /**\n   * When `true`, uses the initial value of the property as the default value,\n   * which changes how attributes are handled:\n   *  - The initial value does *not* reflect, even if the `reflect` option is `true`.\n   *    Subsequent changes to the property will reflect, even if they are equal to the\n   *     default value.\n   *  - When the attribute is removed, the property is set to the default value\n   *  - The initial value will not trigger an old value in the `changedProperties` map\n   *    argument to update lifecycle methods.\n   *\n   * When set, properties must be initialized, either with a field initializer, or an\n   * assignment in the constructor. Not initializing the property may lead to\n   * improper handling of subsequent property assignments.\n   *\n   * While this behavior is opt-in, most properties that reflect to attributes should\n   * use `useDefault: true` so that their initial values do not reflect.\n   */\n  useDefault?: boolean;\n}\n\n/**\n * Map of properties to PropertyDeclaration options. For each property an\n * accessor is made, and the property is processed according to the\n * PropertyDeclaration options.\n */\nexport interface PropertyDeclarations {\n  readonly [key: string]: PropertyDeclaration;\n}\n\ntype PropertyDeclarationMap = Map<PropertyKey, PropertyDeclaration>;\n\ntype AttributeMap = Map<string, PropertyKey>;\n\n/**\n * A Map of property keys to values.\n *\n * Takes an optional type parameter T, which when specified as a non-any,\n * non-unknown type, will make the Map more strongly-typed, associating the map\n * keys with their corresponding value type on T.\n *\n * Use `PropertyValues<this>` when overriding ReactiveElement.update() and\n * other lifecycle methods in order to get stronger type-checking on keys\n * and values.\n */\n// This type is conditional so that if the parameter T is not specified, or\n// is `any`, the type will include `Map<PropertyKey, unknown>`. Since T is not\n// given in the uses of PropertyValues in this file, all uses here fallback to\n// meaning `Map<PropertyKey, unknown>`, but if a developer uses\n// `PropertyValues<this>` (or any other value for T) they will get a\n// strongly-typed Map type.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type PropertyValues<T = any> = T extends object\n  ? PropertyValueMap<T>\n  : Map<PropertyKey, unknown>;\n\n/**\n * Do not use, instead prefer {@linkcode PropertyValues}.\n */\n// This type must be exported such that JavaScript generated by the Google\n// Closure Compiler can import a type reference.\nexport interface PropertyValueMap<T> extends Map<PropertyKey, unknown> {\n  get<K extends keyof T>(k: K): T[K] | undefined;\n  set<K extends keyof T>(key: K, value: T[K]): this;\n  has<K extends keyof T>(k: K): boolean;\n  delete<K extends keyof T>(k: K): boolean;\n}\n\nexport const defaultConverter: ComplexAttributeConverter = {\n  toAttribute(value: unknown, type?: unknown): unknown {\n    switch (type) {\n      case Boolean:\n        value = value ? emptyStringForBooleanAttribute : null;\n        break;\n      case Object:\n      case Array:\n        // if the value is `null` or `undefined` pass this through\n        // to allow removing/no change behavior.\n        value = value == null ? value : JSON.stringify(value);\n        break;\n    }\n    return value;\n  },\n\n  fromAttribute(value: string | null, type?: unknown) {\n    let fromValue: unknown = value;\n    switch (type) {\n      case Boolean:\n        fromValue = value !== null;\n        break;\n      case Number:\n        fromValue = value === null ? null : Number(value);\n        break;\n      case Object:\n      case Array:\n        // Do *not* generate exception when invalid JSON is set as elements\n        // don't normally complain on being mis-configured.\n        // TODO(sorvell): Do generate exception in *dev mode*.\n        try {\n          // Assert to adhere to Bazel's \"must type assert JSON parse\" rule.\n          fromValue = JSON.parse(value!) as unknown;\n        } catch (e) {\n          fromValue = null;\n        }\n        break;\n    }\n    return fromValue;\n  },\n};\n\nexport interface HasChanged {\n  (value: unknown, old: unknown): boolean;\n}\n\n/**\n * Change function that returns true if `value` is different from `oldValue`.\n * This method is used as the default for a property's `hasChanged` function.\n */\nexport const notEqual: HasChanged = (value: unknown, old: unknown): boolean =>\n  !is(value, old);\n\nconst defaultPropertyDeclaration: PropertyDeclaration = {\n  attribute: true,\n  type: String,\n  converter: defaultConverter,\n  reflect: false,\n  useDefault: false,\n  hasChanged: notEqual,\n};\n\n/**\n * A string representing one of the supported dev mode warning categories.\n */\nexport type WarningKind =\n  | 'change-in-update'\n  | 'migration'\n  | 'async-perform-update';\n\nexport type Initializer = (element: ReactiveElement) => void;\n\n// Temporary, until google3 is on TypeScript 5.2\ndeclare global {\n  interface SymbolConstructor {\n    readonly metadata: unique symbol;\n  }\n}\n\n// Ensure metadata is enabled. TypeScript does not polyfill\n// Symbol.metadata, so we must ensure that it exists.\n(Symbol as {metadata: symbol}).metadata ??= Symbol('metadata');\n\ndeclare global {\n  // This is public global API, do not change!\n  // eslint-disable-next-line no-var\n  var litPropertyMetadata: WeakMap<\n    object,\n    Map<PropertyKey, PropertyDeclaration>\n  >;\n}\n\n// Map from a class's metadata object to property options\n// Note that we must use nullish-coalescing assignment so that we only use one\n// map even if we load multiple version of this module.\nglobal.litPropertyMetadata ??= new WeakMap<\n  object,\n  Map<PropertyKey, PropertyDeclaration>\n>();\n\n/**\n * Base element class which manages element properties and attributes. When\n * properties change, the `update` method is asynchronously called. This method\n * should be supplied by subclasses to render updates as desired.\n * @noInheritDoc\n */\nexport abstract class ReactiveElement\n  // In the Node build, this `extends` clause will be substituted with\n  // `(globalThis.HTMLElement ?? HTMLElement)`.\n  //\n  // This way, we will first prefer any global `HTMLElement` polyfill that the\n  // user has assigned, and then fall back to the `HTMLElement` shim which has\n  // been imported (see note at the top of this file about how this import is\n  // generated by Rollup). Note that the `HTMLElement` variable has been\n  // shadowed by this import, so it no longer refers to the global.\n  extends HTMLElement\n  implements ReactiveControllerHost\n{\n  // Note: these are patched in only in DEV_MODE.\n  /**\n   * Read or set all the enabled warning categories for this class.\n   *\n   * This property is only used in development builds.\n   *\n   * @nocollapse\n   * @category dev-mode\n   */\n  static enabledWarnings?: WarningKind[];\n\n  /**\n   * Enable the given warning category for this class.\n   *\n   * This method only exists in development builds, so it should be accessed\n   * with a guard like:\n   *\n   * ```ts\n   * // Enable for all ReactiveElement subclasses\n   * ReactiveElement.enableWarning?.('migration');\n   *\n   * // Enable for only MyElement and subclasses\n   * MyElement.enableWarning?.('migration');\n   * ```\n   *\n   * @nocollapse\n   * @category dev-mode\n   */\n  static enableWarning?: (warningKind: WarningKind) => void;\n\n  /**\n   * Disable the given warning category for this class.\n   *\n   * This method only exists in development builds, so it should be accessed\n   * with a guard like:\n   *\n   * ```ts\n   * // Disable for all ReactiveElement subclasses\n   * ReactiveElement.disableWarning?.('migration');\n   *\n   * // Disable for only MyElement and subclasses\n   * MyElement.disableWarning?.('migration');\n   * ```\n   *\n   * @nocollapse\n   * @category dev-mode\n   */\n  static disableWarning?: (warningKind: WarningKind) => void;\n\n  /**\n   * Adds an initializer function to the class that is called during instance\n   * construction.\n   *\n   * This is useful for code that runs against a `ReactiveElement`\n   * subclass, such as a decorator, that needs to do work for each\n   * instance, such as setting up a `ReactiveController`.\n   *\n   * ```ts\n   * const myDecorator = (target: typeof ReactiveElement, key: string) => {\n   *   target.addInitializer((instance: ReactiveElement) => {\n   *     // This is run during construction of the element\n   *     new MyController(instance);\n   *   });\n   * }\n   * ```\n   *\n   * Decorating a field will then cause each instance to run an initializer\n   * that adds a controller:\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   @myDecorator foo;\n   * }\n   * ```\n   *\n   * Initializers are stored per-constructor. Adding an initializer to a\n   * subclass does not add it to a superclass. Since initializers are run in\n   * constructors, initializers will run in order of the class hierarchy,\n   * starting with superclasses and progressing to the instance's class.\n   *\n   * @nocollapse\n   */\n  static addInitializer(initializer: Initializer) {\n    this.__prepare();\n    (this._initializers ??= []).push(initializer);\n  }\n\n  static _initializers?: Initializer[];\n\n  /*\n   * Due to closure compiler ES6 compilation bugs, @nocollapse is required on\n   * all static methods and properties with initializers.  Reference:\n   * - https://github.com/google/closure-compiler/issues/1776\n   */\n\n  /**\n   * Maps attribute names to properties; for example `foobar` attribute to\n   * `fooBar` property. Created lazily on user subclasses when finalizing the\n   * class.\n   * @nocollapse\n   */\n  private static __attributeToPropertyMap: AttributeMap;\n\n  /**\n   * Marks class as having been finalized, which includes creating properties\n   * from `static properties`, but does *not* include all properties created\n   * from decorators.\n   * @nocollapse\n   */\n  protected static finalized: true | undefined;\n\n  /**\n   * Memoized list of all element properties, including any superclass\n   * properties. Created lazily on user subclasses when finalizing the class.\n   *\n   * @nocollapse\n   * @category properties\n   */\n  static elementProperties: PropertyDeclarationMap;\n\n  /**\n   * User-supplied object that maps property names to `PropertyDeclaration`\n   * objects containing options for configuring reactive properties. When\n   * a reactive property is set the element will update and render.\n   *\n   * By default properties are public fields, and as such, they should be\n   * considered as primarily settable by element users, either via attribute or\n   * the property itself.\n   *\n   * Generally, properties that are changed by the element should be private or\n   * protected fields and should use the `state: true` option. Properties\n   * marked as `state` do not reflect from the corresponding attribute\n   *\n   * However, sometimes element code does need to set a public property. This\n   * should typically only be done in response to user interaction, and an event\n   * should be fired informing the user; for example, a checkbox sets its\n   * `checked` property when clicked and fires a `changed` event. Mutating\n   * public properties should typically not be done for non-primitive (object or\n   * array) properties. In other cases when an element needs to manage state, a\n   * private property set with the `state: true` option should be used. When\n   * needed, state properties can be initialized via public properties to\n   * facilitate complex interactions.\n   * @nocollapse\n   * @category properties\n   */\n  static properties: PropertyDeclarations;\n\n  /**\n   * Memoized list of all element styles.\n   * Created lazily on user subclasses when finalizing the class.\n   * @nocollapse\n   * @category styles\n   */\n  static elementStyles: Array<CSSResultOrNative> = [];\n\n  /**\n   * Array of styles to apply to the element. The styles should be defined\n   * using the {@linkcode css} tag function, via constructible stylesheets, or\n   * imported from native CSS module scripts.\n   *\n   * Note on Content Security Policy:\n   *\n   * Element styles are implemented with `<style>` tags when the browser doesn't\n   * support adopted StyleSheets. To use such `<style>` tags with the style-src\n   * CSP directive, the style-src value must either include 'unsafe-inline' or\n   * `nonce-<base64-value>` with `<base64-value>` replaced be a server-generated\n   * nonce.\n   *\n   * To provide a nonce to use on generated `<style>` elements, set\n   * `window.litNonce` to a server-generated nonce in your page's HTML, before\n   * loading application code:\n   *\n   * ```html\n   * <script>\n   *   // Generated and unique per request:\n   *   window.litNonce = 'a1b2c3d4';\n   * </script>\n   * ```\n   * @nocollapse\n   * @category styles\n   */\n  static styles?: CSSResultGroup;\n\n  /**\n   * Returns a list of attributes corresponding to the registered properties.\n   * @nocollapse\n   * @category attributes\n   */\n  static get observedAttributes() {\n    // Ensure we've created all properties\n    this.finalize();\n    // this.__attributeToPropertyMap is only undefined after finalize() in\n    // ReactiveElement itself. ReactiveElement.observedAttributes is only\n    // accessed with ReactiveElement as the receiver when a subclass or mixin\n    // calls super.observedAttributes\n    return (\n      this.__attributeToPropertyMap && [...this.__attributeToPropertyMap.keys()]\n    );\n  }\n\n  private __instanceProperties?: PropertyValues = undefined;\n\n  /**\n   * Creates a property accessor on the element prototype if one does not exist\n   * and stores a {@linkcode PropertyDeclaration} for the property with the\n   * given options. The property setter calls the property's `hasChanged`\n   * property option or uses a strict identity check to determine whether or not\n   * to request an update.\n   *\n   * This method may be overridden to customize properties; however,\n   * when doing so, it's important to call `super.createProperty` to ensure\n   * the property is setup correctly. This method calls\n   * `getPropertyDescriptor` internally to get a descriptor to install.\n   * To customize what properties do when they are get or set, override\n   * `getPropertyDescriptor`. To customize the options for a property,\n   * implement `createProperty` like this:\n   *\n   * ```ts\n   * static createProperty(name, options) {\n   *   options = Object.assign(options, {myOption: true});\n   *   super.createProperty(name, options);\n   * }\n   * ```\n   *\n   * @nocollapse\n   * @category properties\n   */\n  static createProperty(\n    name: PropertyKey,\n    options: PropertyDeclaration = defaultPropertyDeclaration\n  ) {\n    // If this is a state property, force the attribute to false.\n    if (options.state) {\n      (options as Mutable<PropertyDeclaration, 'attribute'>).attribute = false;\n    }\n    this.__prepare();\n    // Whether this property is wrapping accessors.\n    // Helps control the initial value change and reflection logic.\n    if (this.prototype.hasOwnProperty(name)) {\n      options = Object.create(options);\n      options.wrapped = true;\n    }\n    this.elementProperties.set(name, options);\n    if (!options.noAccessor) {\n      const key = DEV_MODE\n        ? // Use Symbol.for in dev mode to make it easier to maintain state\n          // when doing HMR.\n          Symbol.for(`${String(name)} (@property() cache)`)\n        : Symbol();\n      const descriptor = this.getPropertyDescriptor(name, key, options);\n      if (descriptor !== undefined) {\n        defineProperty(this.prototype, name, descriptor);\n      }\n    }\n  }\n\n  /**\n   * Returns a property descriptor to be defined on the given named property.\n   * If no descriptor is returned, the property will not become an accessor.\n   * For example,\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   static getPropertyDescriptor(name, key, options) {\n   *     const defaultDescriptor =\n   *         super.getPropertyDescriptor(name, key, options);\n   *     const setter = defaultDescriptor.set;\n   *     return {\n   *       get: defaultDescriptor.get,\n   *       set(value) {\n   *         setter.call(this, value);\n   *         // custom action.\n   *       },\n   *       configurable: true,\n   *       enumerable: true\n   *     }\n   *   }\n   * }\n   * ```\n   *\n   * @nocollapse\n   * @category properties\n   */\n  protected static getPropertyDescriptor(\n    name: PropertyKey,\n    key: string | symbol,\n    options: PropertyDeclaration\n  ): PropertyDescriptor | undefined {\n    const {get, set} = getOwnPropertyDescriptor(this.prototype, name) ?? {\n      get(this: ReactiveElement) {\n        return this[key as keyof typeof this];\n      },\n      set(this: ReactiveElement, v: unknown) {\n        (this as unknown as Record<string | symbol, unknown>)[key] = v;\n      },\n    };\n    if (DEV_MODE && get == null) {\n      if ('value' in (getOwnPropertyDescriptor(this.prototype, name) ?? {})) {\n        throw new Error(\n          `Field ${JSON.stringify(String(name))} on ` +\n            `${this.name} was declared as a reactive property ` +\n            `but it's actually declared as a value on the prototype. ` +\n            `Usually this is due to using @property or @state on a method.`\n        );\n      }\n      issueWarning(\n        'reactive-property-without-getter',\n        `Field ${JSON.stringify(String(name))} on ` +\n          `${this.name} was declared as a reactive property ` +\n          `but it does not have a getter. This will be an error in a ` +\n          `future version of Lit.`\n      );\n    }\n    return {\n      get,\n      set(this: ReactiveElement, value: unknown) {\n        const oldValue = get?.call(this);\n        set?.call(this, value);\n        this.requestUpdate(name, oldValue, options);\n      },\n      configurable: true,\n      enumerable: true,\n    };\n  }\n\n  /**\n   * Returns the property options associated with the given property.\n   * These options are defined with a `PropertyDeclaration` via the `properties`\n   * object or the `@property` decorator and are registered in\n   * `createProperty(...)`.\n   *\n   * Note, this method should be considered \"final\" and not overridden. To\n   * customize the options for a given property, override\n   * {@linkcode createProperty}.\n   *\n   * @nocollapse\n   * @final\n   * @category properties\n   */\n  static getPropertyOptions(name: PropertyKey) {\n    return this.elementProperties.get(name) ?? defaultPropertyDeclaration;\n  }\n\n  // Temporary, until google3 is on TypeScript 5.2\n  declare static [Symbol.metadata]: object & Record<PropertyKey, unknown>;\n\n  /**\n   * Initializes static own properties of the class used in bookkeeping\n   * for element properties, initializers, etc.\n   *\n   * Can be called multiple times by code that needs to ensure these\n   * properties exist before using them.\n   *\n   * This method ensures the superclass is finalized so that inherited\n   * property metadata can be copied down.\n   * @nocollapse\n   */\n  private static __prepare() {\n    if (\n      this.hasOwnProperty(JSCompiler_renameProperty('elementProperties', this))\n    ) {\n      // Already prepared\n      return;\n    }\n    // Finalize any superclasses\n    const superCtor = getPrototypeOf(this) as typeof ReactiveElement;\n    superCtor.finalize();\n\n    // Create own set of initializers for this class if any exist on the\n    // superclass and copy them down. Note, for a small perf boost, avoid\n    // creating initializers unless needed.\n    if (superCtor._initializers !== undefined) {\n      this._initializers = [...superCtor._initializers];\n    }\n    // Initialize elementProperties from the superclass\n    this.elementProperties = new Map(superCtor.elementProperties);\n  }\n\n  /**\n   * Finishes setting up the class so that it's ready to be registered\n   * as a custom element and instantiated.\n   *\n   * This method is called by the ReactiveElement.observedAttributes getter.\n   * If you override the observedAttributes getter, you must either call\n   * super.observedAttributes to trigger finalization, or call finalize()\n   * yourself.\n   *\n   * @nocollapse\n   */\n  protected static finalize() {\n    if (this.hasOwnProperty(JSCompiler_renameProperty('finalized', this))) {\n      return;\n    }\n    this.finalized = true;\n    this.__prepare();\n\n    // Create properties from the static properties block:\n    if (this.hasOwnProperty(JSCompiler_renameProperty('properties', this))) {\n      const props = this.properties;\n      const propKeys = [\n        ...getOwnPropertyNames(props),\n        ...getOwnPropertySymbols(props),\n      ] as Array<keyof typeof props>;\n      for (const p of propKeys) {\n        this.createProperty(p, props[p]);\n      }\n    }\n\n    // Create properties from standard decorator metadata:\n    const metadata = this[Symbol.metadata];\n    if (metadata !== null) {\n      const properties = litPropertyMetadata.get(metadata);\n      if (properties !== undefined) {\n        for (const [p, options] of properties) {\n          this.elementProperties.set(p, options);\n        }\n      }\n    }\n\n    // Create the attribute-to-property map\n    this.__attributeToPropertyMap = new Map();\n    for (const [p, options] of this.elementProperties) {\n      const attr = this.__attributeNameForProperty(p, options);\n      if (attr !== undefined) {\n        this.__attributeToPropertyMap.set(attr, p);\n      }\n    }\n\n    this.elementStyles = this.finalizeStyles(this.styles);\n\n    if (DEV_MODE) {\n      if (this.hasOwnProperty('createProperty')) {\n        issueWarning(\n          'no-override-create-property',\n          'Overriding ReactiveElement.createProperty() is deprecated. ' +\n            'The override will not be called with standard decorators'\n        );\n      }\n      if (this.hasOwnProperty('getPropertyDescriptor')) {\n        issueWarning(\n          'no-override-get-property-descriptor',\n          'Overriding ReactiveElement.getPropertyDescriptor() is deprecated. ' +\n            'The override will not be called with standard decorators'\n        );\n      }\n    }\n  }\n\n  /**\n   * Options used when calling `attachShadow`. Set this property to customize\n   * the options for the shadowRoot; for example, to create a closed\n   * shadowRoot: `{mode: 'closed'}`.\n   *\n   * Note, these options are used in `createRenderRoot`. If this method\n   * is customized, options should be respected if possible.\n   * @nocollapse\n   * @category rendering\n   */\n  static shadowRootOptions: ShadowRootInit = {mode: 'open'};\n\n  /**\n   * Takes the styles the user supplied via the `static styles` property and\n   * returns the array of styles to apply to the element.\n   * Override this method to integrate into a style management system.\n   *\n   * Styles are deduplicated preserving the _last_ instance in the list. This\n   * is a performance optimization to avoid duplicated styles that can occur\n   * especially when composing via subclassing. The last item is kept to try\n   * to preserve the cascade order with the assumption that it's most important\n   * that last added styles override previous styles.\n   *\n   * @nocollapse\n   * @category styles\n   */\n  protected static finalizeStyles(\n    styles?: CSSResultGroup\n  ): Array<CSSResultOrNative> {\n    const elementStyles = [];\n    if (Array.isArray(styles)) {\n      // Dedupe the flattened array in reverse order to preserve the last items.\n      // Casting to Array<unknown> works around TS error that\n      // appears to come from trying to flatten a type CSSResultArray.\n      const set = new Set((styles as Array<unknown>).flat(Infinity).reverse());\n      // Then preserve original order by adding the set items in reverse order.\n      for (const s of set) {\n        elementStyles.unshift(getCompatibleStyle(s as CSSResultOrNative));\n      }\n    } else if (styles !== undefined) {\n      elementStyles.push(getCompatibleStyle(styles));\n    }\n    return elementStyles;\n  }\n\n  /**\n   * Node or ShadowRoot into which element DOM should be rendered. Defaults\n   * to an open shadowRoot.\n   * @category rendering\n   */\n  readonly renderRoot!: HTMLElement | DocumentFragment;\n\n  /**\n   * Returns the property name for the given attribute `name`.\n   * @nocollapse\n   */\n  private static __attributeNameForProperty(\n    name: PropertyKey,\n    options: PropertyDeclaration\n  ) {\n    const attribute = options.attribute;\n    return attribute === false\n      ? undefined\n      : typeof attribute === 'string'\n        ? attribute\n        : typeof name === 'string'\n          ? name.toLowerCase()\n          : undefined;\n  }\n\n  // Initialize to an unresolved Promise so we can make sure the element has\n  // connected before first update.\n  private __updatePromise!: Promise<boolean>;\n\n  /**\n   * True if there is a pending update as a result of calling `requestUpdate()`.\n   * Should only be read.\n   * @category updates\n   */\n  isUpdatePending = false;\n\n  /**\n   * Is set to `true` after the first update. The element code cannot assume\n   * that `renderRoot` exists before the element `hasUpdated`.\n   * @category updates\n   */\n  hasUpdated = false;\n\n  /**\n   * Map with keys for any properties that have changed since the last\n   * update cycle with previous values.\n   *\n   * @internal\n   */\n  _$changedProperties!: PropertyValues;\n\n  /**\n   * Records property default values when the\n   * `useDefault` option is used.\n   */\n  private __defaultValues?: Map<PropertyKey, unknown>;\n\n  /**\n   * Properties that should be reflected when updated.\n   */\n  private __reflectingProperties?: Set<PropertyKey>;\n\n  /**\n   * Name of currently reflecting property\n   */\n  private __reflectingProperty: PropertyKey | null = null;\n\n  /**\n   * Set of controllers.\n   */\n  private __controllers?: Set<ReactiveController>;\n\n  constructor() {\n    super();\n    this.__initialize();\n  }\n\n  /**\n   * Internal only override point for customizing work done when elements\n   * are constructed.\n   */\n  private __initialize() {\n    this.__updatePromise = new Promise<boolean>(\n      (res) => (this.enableUpdating = res)\n    );\n    this._$changedProperties = new Map();\n    // This enqueues a microtask that must run before the first update, so it\n    // must be called before requestUpdate()\n    this.__saveInstanceProperties();\n    // ensures first update will be caught by an early access of\n    // `updateComplete`\n    this.requestUpdate();\n    (this.constructor as typeof ReactiveElement)._initializers?.forEach((i) =>\n      i(this)\n    );\n  }\n\n  /**\n   * Registers a `ReactiveController` to participate in the element's reactive\n   * update cycle. The element automatically calls into any registered\n   * controllers during its lifecycle callbacks.\n   *\n   * If the element is connected when `addController()` is called, the\n   * controller's `hostConnected()` callback will be immediately called.\n   * @category controllers\n   */\n  addController(controller: ReactiveController) {\n    (this.__controllers ??= new Set()).add(controller);\n    // If a controller is added after the element has been connected,\n    // call hostConnected. Note, re-using existence of `renderRoot` here\n    // (which is set in connectedCallback) to avoid the need to track a\n    // first connected state.\n    if (this.renderRoot !== undefined && this.isConnected) {\n      controller.hostConnected?.();\n    }\n  }\n\n  /**\n   * Removes a `ReactiveController` from the element.\n   * @category controllers\n   */\n  removeController(controller: ReactiveController) {\n    this.__controllers?.delete(controller);\n  }\n\n  /**\n   * Fixes any properties set on the instance before upgrade time.\n   * Otherwise these would shadow the accessor and break these properties.\n   * The properties are stored in a Map which is played back after the\n   * constructor runs.\n   */\n  private __saveInstanceProperties() {\n    const instanceProperties = new Map<PropertyKey, unknown>();\n    const elementProperties = (this.constructor as typeof ReactiveElement)\n      .elementProperties;\n    for (const p of elementProperties.keys() as IterableIterator<keyof this>) {\n      if (this.hasOwnProperty(p)) {\n        instanceProperties.set(p, this[p]);\n        delete this[p];\n      }\n    }\n    if (instanceProperties.size > 0) {\n      this.__instanceProperties = instanceProperties;\n    }\n  }\n\n  /**\n   * Returns the node into which the element should render and by default\n   * creates and returns an open shadowRoot. Implement to customize where the\n   * element's DOM is rendered. For example, to render into the element's\n   * childNodes, return `this`.\n   *\n   * @return Returns a node into which to render.\n   * @category rendering\n   */\n  protected createRenderRoot(): HTMLElement | DocumentFragment {\n    const renderRoot =\n      this.shadowRoot ??\n      this.attachShadow(\n        (this.constructor as typeof ReactiveElement).shadowRootOptions\n      );\n    adoptStyles(\n      renderRoot,\n      (this.constructor as typeof ReactiveElement).elementStyles\n    );\n    return renderRoot;\n  }\n\n  /**\n   * On first connection, creates the element's renderRoot, sets up\n   * element styling, and enables updating.\n   * @category lifecycle\n   */\n  connectedCallback() {\n    // Create renderRoot before controllers `hostConnected`\n    (this as Mutable<typeof this, 'renderRoot'>).renderRoot ??=\n      this.createRenderRoot();\n    this.enableUpdating(true);\n    this.__controllers?.forEach((c) => c.hostConnected?.());\n  }\n\n  /**\n   * Note, this method should be considered final and not overridden. It is\n   * overridden on the element instance with a function that triggers the first\n   * update.\n   * @category updates\n   */\n  protected enableUpdating(_requestedUpdate: boolean) {}\n\n  /**\n   * Allows for `super.disconnectedCallback()` in extensions while\n   * reserving the possibility of making non-breaking feature additions\n   * when disconnecting at some point in the future.\n   * @category lifecycle\n   */\n  disconnectedCallback() {\n    this.__controllers?.forEach((c) => c.hostDisconnected?.());\n  }\n\n  /**\n   * Synchronizes property values when attributes change.\n   *\n   * Specifically, when an attribute is set, the corresponding property is set.\n   * You should rarely need to implement this callback. If this method is\n   * overridden, `super.attributeChangedCallback(name, _old, value)` must be\n   * called.\n   *\n   * See [responding to attribute changes](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements#responding_to_attribute_changes)\n   * on MDN for more information about the `attributeChangedCallback`.\n   * @category attributes\n   */\n  attributeChangedCallback(\n    name: string,\n    _old: string | null,\n    value: string | null\n  ) {\n    this._$attributeToProperty(name, value);\n  }\n\n  private __propertyToAttribute(name: PropertyKey, value: unknown) {\n    const elemProperties: PropertyDeclarationMap = (\n      this.constructor as typeof ReactiveElement\n    ).elementProperties;\n    const options = elemProperties.get(name)!;\n    const attr = (\n      this.constructor as typeof ReactiveElement\n    ).__attributeNameForProperty(name, options);\n    if (attr !== undefined && options.reflect === true) {\n      const converter =\n        (options.converter as ComplexAttributeConverter)?.toAttribute !==\n        undefined\n          ? (options.converter as ComplexAttributeConverter)\n          : defaultConverter;\n      const attrValue = converter.toAttribute!(value, options.type);\n      if (\n        DEV_MODE &&\n        (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n          'migration'\n        ) &&\n        attrValue === undefined\n      ) {\n        issueWarning(\n          'undefined-attribute-value',\n          `The attribute value for the ${name as string} property is ` +\n            `undefined on element ${this.localName}. The attribute will be ` +\n            `removed, but in the previous version of \\`ReactiveElement\\`, ` +\n            `the attribute would not have changed.`\n        );\n      }\n      // Track if the property is being reflected to avoid\n      // setting the property again via `attributeChangedCallback`. Note:\n      // 1. this takes advantage of the fact that the callback is synchronous.\n      // 2. will behave incorrectly if multiple attributes are in the reaction\n      // stack at time of calling. However, since we process attributes\n      // in `update` this should not be possible (or an extreme corner case\n      // that we'd like to discover).\n      // mark state reflecting\n      this.__reflectingProperty = name;\n      if (attrValue == null) {\n        this.removeAttribute(attr);\n      } else {\n        this.setAttribute(attr, attrValue as string);\n      }\n      // mark state not reflecting\n      this.__reflectingProperty = null;\n    }\n  }\n\n  /** @internal */\n  _$attributeToProperty(name: string, value: string | null) {\n    const ctor = this.constructor as typeof ReactiveElement;\n    // Note, hint this as an `AttributeMap` so closure clearly understands\n    // the type; it has issues with tracking types through statics\n    const propName = (ctor.__attributeToPropertyMap as AttributeMap).get(name);\n    // Use tracking info to avoid reflecting a property value to an attribute\n    // if it was just set because the attribute changed.\n    if (propName !== undefined && this.__reflectingProperty !== propName) {\n      const options = ctor.getPropertyOptions(propName);\n      const converter =\n        typeof options.converter === 'function'\n          ? {fromAttribute: options.converter}\n          : options.converter?.fromAttribute !== undefined\n            ? options.converter\n            : defaultConverter;\n      // mark state reflecting\n      this.__reflectingProperty = propName;\n      const convertedValue = converter.fromAttribute!(value, options.type);\n      this[propName as keyof this] =\n        convertedValue ??\n        this.__defaultValues?.get(propName) ??\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        (convertedValue as any);\n      // mark state not reflecting\n      this.__reflectingProperty = null;\n    }\n  }\n\n  /**\n   * Requests an update which is processed asynchronously. This should be called\n   * when an element should update based on some state not triggered by setting\n   * a reactive property. In this case, pass no arguments. It should also be\n   * called when manually implementing a property setter. In this case, pass the\n   * property `name` and `oldValue` to ensure that any configured property\n   * options are honored.\n   *\n   * @param name name of requesting property\n   * @param oldValue old value of requesting property\n   * @param options property options to use instead of the previously\n   *     configured options\n   * @param useNewValue if true, the newValue argument is used instead of\n   *     reading the property value. This is important to use if the reactive\n   *     property is a standard private accessor, as opposed to a plain\n   *     property, since private members can't be dynamically read by name.\n   * @param newValue the new value of the property. This is only used if\n   *     `useNewValue` is true.\n   * @category updates\n   */\n  requestUpdate(\n    name?: PropertyKey,\n    oldValue?: unknown,\n    options?: PropertyDeclaration,\n    useNewValue = false,\n    newValue?: unknown\n  ): void {\n    // If we have a property key, perform property update steps.\n    if (name !== undefined) {\n      if (DEV_MODE && (name as unknown) instanceof Event) {\n        issueWarning(\n          ``,\n          `The requestUpdate() method was called with an Event as the property name. This is probably a mistake caused by binding this.requestUpdate as an event listener. Instead bind a function that will call it with no arguments: () => this.requestUpdate()`\n        );\n      }\n      const ctor = this.constructor as typeof ReactiveElement;\n      if (useNewValue === false) {\n        newValue = this[name as keyof this];\n      }\n      options ??= ctor.getPropertyOptions(name);\n      const changed =\n        (options.hasChanged ?? notEqual)(newValue, oldValue) ||\n        // When there is no change, check a corner case that can occur when\n        // 1. there's a initial value which was not reflected\n        // 2. the property is subsequently set to this value.\n        // For example, `prop: {useDefault: true, reflect: true}`\n        // and el.prop = 'foo'. This should be considered a change if the\n        // attribute is not set because we will now reflect the property to the attribute.\n        (options.useDefault &&\n          options.reflect &&\n          newValue === this.__defaultValues?.get(name) &&\n          !this.hasAttribute(ctor.__attributeNameForProperty(name, options)!));\n      if (changed) {\n        this._$changeProperty(name, oldValue, options);\n      } else {\n        // Abort the request if the property should not be considered changed.\n        return;\n      }\n    }\n    if (this.isUpdatePending === false) {\n      this.__updatePromise = this.__enqueueUpdate();\n    }\n  }\n\n  /**\n   * @internal\n   */\n  _$changeProperty(\n    name: PropertyKey,\n    oldValue: unknown,\n    {useDefault, reflect, wrapped}: PropertyDeclaration,\n    initializeValue?: unknown\n  ) {\n    // Record default value when useDefault is used. This allows us to\n    // restore this value when the attribute is removed.\n    if (useDefault && !(this.__defaultValues ??= new Map()).has(name)) {\n      this.__defaultValues.set(\n        name,\n        initializeValue ?? oldValue ?? this[name as keyof this]\n      );\n      // if this is not wrapping an accessor, it must be an initial setting\n      // and in this case we do not want to record the change or reflect.\n      if (wrapped !== true || initializeValue !== undefined) {\n        return;\n      }\n    }\n    // TODO (justinfagnani): Create a benchmark of Map.has() + Map.set(\n    // vs just Map.set()\n    if (!this._$changedProperties.has(name)) {\n      // On the initial change, the old value should be `undefined`, except\n      // with `useDefault`\n      if (!this.hasUpdated && !useDefault) {\n        oldValue = undefined;\n      }\n      this._$changedProperties.set(name, oldValue);\n    }\n    // Add to reflecting properties set.\n    // Note, it's important that every change has a chance to add the\n    // property to `__reflectingProperties`. This ensures setting\n    // attribute + property reflects correctly.\n    if (reflect === true && this.__reflectingProperty !== name) {\n      (this.__reflectingProperties ??= new Set<PropertyKey>()).add(name);\n    }\n  }\n\n  /**\n   * Sets up the element to asynchronously update.\n   */\n  private async __enqueueUpdate() {\n    this.isUpdatePending = true;\n    try {\n      // Ensure any previous update has resolved before updating.\n      // This `await` also ensures that property changes are batched.\n      await this.__updatePromise;\n    } catch (e) {\n      // Refire any previous errors async so they do not disrupt the update\n      // cycle. Errors are refired so developers have a chance to observe\n      // them, and this can be done by implementing\n      // `window.onunhandledrejection`.\n      Promise.reject(e);\n    }\n    const result = this.scheduleUpdate();\n    // If `scheduleUpdate` returns a Promise, we await it. This is done to\n    // enable coordinating updates with a scheduler. Note, the result is\n    // checked to avoid delaying an additional microtask unless we need to.\n    if (result != null) {\n      await result;\n    }\n    return !this.isUpdatePending;\n  }\n\n  /**\n   * Schedules an element update. You can override this method to change the\n   * timing of updates by returning a Promise. The update will await the\n   * returned Promise, and you should resolve the Promise to allow the update\n   * to proceed. If this method is overridden, `super.scheduleUpdate()`\n   * must be called.\n   *\n   * For instance, to schedule updates to occur just before the next frame:\n   *\n   * ```ts\n   * override protected async scheduleUpdate(): Promise<unknown> {\n   *   await new Promise((resolve) => requestAnimationFrame(() => resolve()));\n   *   super.scheduleUpdate();\n   * }\n   * ```\n   * @category updates\n   */\n  protected scheduleUpdate(): void | Promise<unknown> {\n    const result = this.performUpdate();\n    if (\n      DEV_MODE &&\n      (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n        'async-perform-update'\n      ) &&\n      typeof (result as unknown as Promise<unknown> | undefined)?.then ===\n        'function'\n    ) {\n      issueWarning(\n        'async-perform-update',\n        `Element ${this.localName} returned a Promise from performUpdate(). ` +\n          `This behavior is deprecated and will be removed in a future ` +\n          `version of ReactiveElement.`\n      );\n    }\n    return result;\n  }\n\n  /**\n   * Performs an element update. Note, if an exception is thrown during the\n   * update, `firstUpdated` and `updated` will not be called.\n   *\n   * Call `performUpdate()` to immediately process a pending update. This should\n   * generally not be needed, but it can be done in rare cases when you need to\n   * update synchronously.\n   *\n   * @category updates\n   */\n  protected performUpdate(): void {\n    // Abort any update if one is not pending when this is called.\n    // This can happen if `performUpdate` is called early to \"flush\"\n    // the update.\n    if (!this.isUpdatePending) {\n      return;\n    }\n    debugLogEvent?.({kind: 'update'});\n    if (!this.hasUpdated) {\n      // Create renderRoot before first update. This occurs in `connectedCallback`\n      // but is done here to support out of tree calls to `enableUpdating`/`performUpdate`.\n      (this as Mutable<typeof this, 'renderRoot'>).renderRoot ??=\n        this.createRenderRoot();\n      if (DEV_MODE) {\n        // Produce warning if any reactive properties on the prototype are\n        // shadowed by class fields. Instance fields set before upgrade are\n        // deleted by this point, so any own property is caused by class field\n        // initialization in the constructor.\n        const ctor = this.constructor as typeof ReactiveElement;\n        const shadowedProperties = [...ctor.elementProperties.keys()].filter(\n          (p) => this.hasOwnProperty(p) && p in getPrototypeOf(this)\n        );\n        if (shadowedProperties.length) {\n          throw new Error(\n            `The following properties on element ${this.localName} will not ` +\n              `trigger updates as expected because they are set using class ` +\n              `fields: ${shadowedProperties.join(', ')}. ` +\n              `Native class fields and some compiled output will overwrite ` +\n              `accessors used for detecting changes. See ` +\n              `https://lit.dev/msg/class-field-shadowing ` +\n              `for more information.`\n          );\n        }\n      }\n      // Mixin instance properties once, if they exist.\n      if (this.__instanceProperties) {\n        // TODO (justinfagnani): should we use the stored value? Could a new value\n        // have been set since we stored the own property value?\n        for (const [p, value] of this.__instanceProperties) {\n          this[p as keyof this] = value as this[keyof this];\n        }\n        this.__instanceProperties = undefined;\n      }\n      // Trigger initial value reflection and populate the initial\n      // `changedProperties` map, but only for the case of properties created\n      // via `createProperty` on accessors, which will not have already\n      // populated the `changedProperties` map since they are not set.\n      // We can't know if these accessors had initializers, so we just set\n      // them anyway - a difference from experimental decorators on fields and\n      // standard decorators on auto-accessors.\n      // For context see:\n      // https://github.com/lit/lit/pull/4183#issuecomment-1711959635\n      const elementProperties = (this.constructor as typeof ReactiveElement)\n        .elementProperties;\n      if (elementProperties.size > 0) {\n        for (const [p, options] of elementProperties) {\n          const {wrapped} = options;\n          const value = this[p as keyof this];\n          if (\n            wrapped === true &&\n            !this._$changedProperties.has(p) &&\n            value !== undefined\n          ) {\n            this._$changeProperty(p, undefined, options, value);\n          }\n        }\n      }\n    }\n    let shouldUpdate = false;\n    const changedProperties = this._$changedProperties;\n    try {\n      shouldUpdate = this.shouldUpdate(changedProperties);\n      if (shouldUpdate) {\n        this.willUpdate(changedProperties);\n        this.__controllers?.forEach((c) => c.hostUpdate?.());\n        this.update(changedProperties);\n      } else {\n        this.__markUpdated();\n      }\n    } catch (e) {\n      // Prevent `firstUpdated` and `updated` from running when there's an\n      // update exception.\n      shouldUpdate = false;\n      // Ensure element can accept additional updates after an exception.\n      this.__markUpdated();\n      throw e;\n    }\n    // The update is no longer considered pending and further updates are now allowed.\n    if (shouldUpdate) {\n      this._$didUpdate(changedProperties);\n    }\n  }\n\n  /**\n   * Invoked before `update()` to compute values needed during the update.\n   *\n   * Implement `willUpdate` to compute property values that depend on other\n   * properties and are used in the rest of the update process.\n   *\n   * ```ts\n   * willUpdate(changedProperties) {\n   *   // only need to check changed properties for an expensive computation.\n   *   if (changedProperties.has('firstName') || changedProperties.has('lastName')) {\n   *     this.sha = computeSHA(`${this.firstName} ${this.lastName}`);\n   *   }\n   * }\n   *\n   * render() {\n   *   return html`SHA: ${this.sha}`;\n   * }\n   * ```\n   *\n   * @category updates\n   */\n  protected willUpdate(_changedProperties: PropertyValues): void {}\n\n  // Note, this is an override point for polyfill-support.\n  // @internal\n  _$didUpdate(changedProperties: PropertyValues) {\n    this.__controllers?.forEach((c) => c.hostUpdated?.());\n    if (!this.hasUpdated) {\n      this.hasUpdated = true;\n      this.firstUpdated(changedProperties);\n    }\n    this.updated(changedProperties);\n    if (\n      DEV_MODE &&\n      this.isUpdatePending &&\n      (this.constructor as typeof ReactiveElement).enabledWarnings!.includes(\n        'change-in-update'\n      )\n    ) {\n      issueWarning(\n        'change-in-update',\n        `Element ${this.localName} scheduled an update ` +\n          `(generally because a property was set) ` +\n          `after an update completed, causing a new update to be scheduled. ` +\n          `This is inefficient and should be avoided unless the next update ` +\n          `can only be scheduled as a side effect of the previous update.`\n      );\n    }\n  }\n\n  private __markUpdated() {\n    this._$changedProperties = new Map();\n    this.isUpdatePending = false;\n  }\n\n  /**\n   * Returns a Promise that resolves when the element has completed updating.\n   * The Promise value is a boolean that is `true` if the element completed the\n   * update without triggering another update. The Promise result is `false` if\n   * a property was set inside `updated()`. If the Promise is rejected, an\n   * exception was thrown during the update.\n   *\n   * To await additional asynchronous work, override the `getUpdateComplete`\n   * method. For example, it is sometimes useful to await a rendered element\n   * before fulfilling this Promise. To do this, first await\n   * `super.getUpdateComplete()`, then any subsequent state.\n   *\n   * @return A promise of a boolean that resolves to true if the update completed\n   *     without triggering another update.\n   * @category updates\n   */\n  get updateComplete(): Promise<boolean> {\n    return this.getUpdateComplete();\n  }\n\n  /**\n   * Override point for the `updateComplete` promise.\n   *\n   * It is not safe to override the `updateComplete` getter directly due to a\n   * limitation in TypeScript which means it is not possible to call a\n   * superclass getter (e.g. `super.updateComplete.then(...)`) when the target\n   * language is ES5 (https://github.com/microsoft/TypeScript/issues/338).\n   * This method should be overridden instead. For example:\n   *\n   * ```ts\n   * class MyElement extends LitElement {\n   *   override async getUpdateComplete() {\n   *     const result = await super.getUpdateComplete();\n   *     await this._myChild.updateComplete;\n   *     return result;\n   *   }\n   * }\n   * ```\n   *\n   * @return A promise of a boolean that resolves to true if the update completed\n   *     without triggering another update.\n   * @category updates\n   */\n  protected getUpdateComplete(): Promise<boolean> {\n    return this.__updatePromise;\n  }\n\n  /**\n   * Controls whether or not `update()` should be called when the element requests\n   * an update. By default, this method always returns `true`, but this can be\n   * customized to control when to update.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected shouldUpdate(_changedProperties: PropertyValues): boolean {\n    return true;\n  }\n\n  /**\n   * Updates the element. This method reflects property values to attributes.\n   * It can be overridden to render and keep updated element DOM.\n   * Setting properties inside this method will *not* trigger\n   * another update.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected update(_changedProperties: PropertyValues) {\n    // The forEach() expression will only run when __reflectingProperties is\n    // defined, and it returns undefined, setting __reflectingProperties to\n    // undefined\n    this.__reflectingProperties &&= this.__reflectingProperties.forEach((p) =>\n      this.__propertyToAttribute(p, this[p as keyof this])\n    ) as undefined;\n    this.__markUpdated();\n  }\n\n  /**\n   * Invoked whenever the element is updated. Implement to perform\n   * post-updating tasks via DOM APIs, for example, focusing an element.\n   *\n   * Setting properties inside this method will trigger the element to update\n   * again after this update cycle completes.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected updated(_changedProperties: PropertyValues) {}\n\n  /**\n   * Invoked when the element is first updated. Implement to perform one time\n   * work on the element after update.\n   *\n   * ```ts\n   * firstUpdated() {\n   *   this.renderRoot.getElementById('my-text-area').focus();\n   * }\n   * ```\n   *\n   * Setting properties inside this method will trigger the element to update\n   * again after this update cycle completes.\n   *\n   * @param _changedProperties Map of changed properties with old values\n   * @category updates\n   */\n  protected firstUpdated(_changedProperties: PropertyValues) {}\n}\n// Assigned here to work around a jscompiler bug with static fields\n// when compiling to ES5.\n// https://github.com/google/closure-compiler/issues/3177\n(ReactiveElement as unknown as Record<string, unknown>)[\n  JSCompiler_renameProperty('elementProperties', ReactiveElement)\n] = new Map();\n(ReactiveElement as unknown as Record<string, unknown>)[\n  JSCompiler_renameProperty('finalized', ReactiveElement)\n] = new Map();\n\n// Apply polyfills if available\npolyfillSupport?.({ReactiveElement});\n\n// Dev mode warnings...\nif (DEV_MODE) {\n  // Default warning set.\n  ReactiveElement.enabledWarnings = [\n    'change-in-update',\n    'async-perform-update',\n  ];\n  const ensureOwnWarnings = function (ctor: typeof ReactiveElement) {\n    if (\n      !ctor.hasOwnProperty(JSCompiler_renameProperty('enabledWarnings', ctor))\n    ) {\n      ctor.enabledWarnings = ctor.enabledWarnings!.slice();\n    }\n  };\n  ReactiveElement.enableWarning = function (\n    this: typeof ReactiveElement,\n    warning: WarningKind\n  ) {\n    ensureOwnWarnings(this);\n    if (!this.enabledWarnings!.includes(warning)) {\n      this.enabledWarnings!.push(warning);\n    }\n  };\n  ReactiveElement.disableWarning = function (\n    this: typeof ReactiveElement,\n    warning: WarningKind\n  ) {\n    ensureOwnWarnings(this);\n    const i = this.enabledWarnings!.indexOf(warning);\n    if (i >= 0) {\n      this.enabledWarnings!.splice(i, 1);\n    }\n  };\n}\n\n// IMPORTANT: do not change the property name or the assignment expression.\n// This line will be used in regexes to search for ReactiveElement usage.\n(global.reactiveElementVersions ??= []).push('2.1.2');\nif (DEV_MODE && global.reactiveElementVersions.length > 1) {\n  queueMicrotask(() => {\n    issueWarning!(\n      'multiple-versions',\n      `Multiple versions of Lit loaded. Loading multiple versions ` +\n        `is not recommended.`\n    );\n  });\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport {notEqual} from '@lit/reactive-element';\nimport {ReactiveControllerHost} from '@lit/reactive-element/reactive-controller.js';\n\nexport interface TaskFunctionOptions {\n  signal: AbortSignal;\n}\n\nexport type TaskFunction<D extends ReadonlyArray<unknown>, R = unknown> = (\n  args: D,\n  options: TaskFunctionOptions\n) => R | typeof initialState | Promise<R | typeof initialState>;\nexport type ArgsFunction<D extends ReadonlyArray<unknown>> = () => D;\n\n// `DepsFunction` is being maintained for BC with its previous name.\nexport {ArgsFunction as DepsFunction};\n\n/**\n * States for task status\n */\nexport const TaskStatus = {\n  INITIAL: 0,\n  PENDING: 1,\n  COMPLETE: 2,\n  ERROR: 3,\n} as const;\n\n/**\n * A special value that can be returned from task functions to reset the task\n * status to INITIAL.\n */\nexport const initialState = Symbol();\n\nexport type TaskStatus = (typeof TaskStatus)[keyof typeof TaskStatus];\n\nexport type StatusRenderer<R> = {\n  initial?: () => unknown;\n  pending?: () => unknown;\n  complete?: (value: R) => unknown;\n  error?: (error: unknown) => unknown;\n};\n\nexport interface TaskConfig<T extends ReadonlyArray<unknown>, R> {\n  task: TaskFunction<T, R>;\n  args?: ArgsFunction<T>;\n\n  /**\n   * Determines if the task is run automatically when arguments change after a\n   * host update. Default to `true`.\n   *\n   * If `true`, the task checks arguments during the host update (after\n   * `willUpdate()` and before `update()` in Lit) and runs if they change. For\n   * a task to see argument changes they must be done in `willUpdate()` or\n   * earlier. The host element can see task status changes caused by its own\n   * current update.\n   *\n   * If `'afterUpdate'`, the task checks arguments and runs _after_ the host\n   * update. This means that the task can see host changes done in update, such\n   * as rendered DOM. The host element can not see task status changes caused\n   * by its own update, so the task must trigger a second host update to make\n   * those changes renderable.\n   *\n   * Note: `'afterUpdate'` is unlikely to be SSR compatible in the future.\n   *\n   * If `false`, the task is not run automatically, and must be run with the\n   * {@linkcode run} method.\n   */\n  autoRun?: boolean | 'afterUpdate';\n\n  /**\n   * A function that determines if the current arg and previous args arrays are\n   * equal. If the argsEqual function returns true, the task will not auto-run.\n   *\n   * The default is {@linkcode shallowArrayEquals}. {@linkcode deepArrayEquals}\n   * is also available.\n   */\n  argsEqual?: (oldArgs: T, newArgs: T) => boolean;\n\n  /**\n   * If initialValue is provided, the task is initialized to the COMPLETE\n   * status and the value is set to initialData.\n   *\n   * Initial args should be coherent with the initialValue, since they are\n   * assumed to be the args that would produce that value. When autoRun is\n   * `true` the task will not auto-run again until the args change.\n   */\n  initialValue?: R;\n  onComplete?: (value: R) => unknown;\n  onError?: (error: unknown) => unknown;\n}\n\n// TODO(sorvell / justinfagnani): Some issues:\n// 1. With the task triggered in `update`, there is no ReactiveElement\n// change-in-update warning in the common case that the update itself does not change\n// the deps; however, Task's `requestUpdate` call to render pending state  will not\n// trigger another update since the element is updating. This `requestUpdate`\n// could be triggered in updated, but that results a change-in-update warning.\n// 2. There is no good signal for when the task has resolved and rendered other\n// than requestAnimationFrame. The user would need to store a promise for the\n// task and then wait for that and the element to update. (Update just justinfagnani:\n// Why isn't waiting taskComplete and updateComplete sufficient? This comment is\n// from before taskComplete existed!)\n\n/**\n * A controller that performs an asynchronous task (like a fetch) when its\n * host element updates.\n *\n * Task requests an update on the host element when the task starts and\n * completes so that the host can render the task status, value, and error as\n * the task runs.\n *\n * The task function must be supplied and can take a list of arguments. The\n * arguments are given to the Task as a function that returns a list of values,\n * which is run and checked for changes on every host update.\n *\n * The `value` property reports the completed value, and the `error` property\n * an error state if one occurs. The `status` property can be checked for\n * status and is of type `TaskStatus` which has states for initial, pending,\n * complete, and error.\n *\n * The `render` method accepts an object with optional methods corresponding\n * to the task statuses to easily render different templates for each task\n * status.\n *\n * The task is run automatically when its arguments change; however, this can\n * be customized by setting `autoRun` to false and calling `run` explicitly\n * to run the task.\n *\n * For a task to see state changes in the current update pass of the host\n * element, those changes must be made in `willUpdate()`. State changes in\n * `update()` or `updated()` will not be visible to the task until the next\n * update pass.\n *\n * @example\n *\n * ```ts\n * class MyElement extends LitElement {\n *   url = 'example.com/api';\n *   id = 0;\n *\n *   task = new Task(\n *     this,\n *     {\n *       task: async ([url, id]) => {\n *         const response = await fetch(`${this.url}?id=${this.id}`);\n *         if (!response.ok) {\n *           throw new Error(response.statusText);\n *         }\n *         return response.json();\n *       },\n *       args: () => [this.id, this.url],\n *     }\n *   );\n *\n *   render() {\n *     return this.task.render({\n *       pending: () => html`<p>Loading...</p>`,\n *       complete: (value) => html`<p>Result: ${value}</p>`\n *     });\n *   }\n * }\n * ```\n */\nexport class Task<\n  const T extends ReadonlyArray<unknown> = ReadonlyArray<unknown>,\n  const R = unknown,\n> {\n  private _previousArgs?: T;\n  private _task: TaskFunction<T, R>;\n  private _argsFn?: ArgsFunction<T>;\n  private _argsEqual: (oldArgs: T, newArgs: T) => boolean;\n  private _callId = 0;\n  private _host: ReactiveControllerHost;\n  private _value?: R;\n  private _error?: unknown;\n  private _abortController?: AbortController;\n  private _onComplete?: (result: R) => unknown;\n  private _onError?: (error: unknown) => unknown;\n  private _status: TaskStatus = TaskStatus.INITIAL;\n\n  /**\n   * Determines if the task is run automatically when arguments change after a\n   * host update. Default to `true`.\n   *\n   * @see {@link TaskConfig.autoRun} for more information.\n   */\n  autoRun: boolean | 'afterUpdate';\n\n  /**\n   * A Promise that resolve when the current task run is complete.\n   *\n   * If a new task run is started while a previous run is pending, the Promise\n   * is kept and only resolved when the new run is completed.\n   */\n  get taskComplete(): Promise<R> {\n    // If a task run exists, return the cached promise. This is true in the case\n    // where the user has called taskComplete in pending or completed state\n    // before and has not started a new task run since.\n    if (this._taskComplete) {\n      return this._taskComplete;\n    }\n\n    // Generate an in-progress promise if the status is pending and has been\n    // cleared by .run().\n    if (this._status === TaskStatus.PENDING) {\n      this._taskComplete = new Promise((res, rej) => {\n        this._resolveTaskComplete = res;\n        this._rejectTaskComplete = rej;\n      });\n      // If the status is error, return a rejected promise.\n    } else if (this._status === TaskStatus.ERROR) {\n      this._taskComplete = Promise.reject(this._error);\n      // Otherwise we are at a task run's completion or this is the first\n      // request and we are not in the middle of a task (i.e. INITIAL).\n    } else {\n      this._taskComplete = Promise.resolve(this._value!);\n    }\n\n    return this._taskComplete;\n  }\n\n  private _resolveTaskComplete?: (value: R) => void;\n  private _rejectTaskComplete?: (e: unknown) => void;\n  private _taskComplete?: Promise<R>;\n\n  constructor(host: ReactiveControllerHost, task: TaskConfig<T, R>);\n  constructor(\n    host: ReactiveControllerHost,\n    task: TaskFunction<T, R>,\n    args?: ArgsFunction<T>\n  );\n  constructor(\n    host: ReactiveControllerHost,\n    task: TaskFunction<T, R> | TaskConfig<T, R>,\n    args?: ArgsFunction<T>\n  ) {\n    (this._host = host).addController(this);\n    const taskConfig =\n      typeof task === 'object' ? task : ({task, args} as TaskConfig<T, R>);\n    this._task = taskConfig.task;\n    this._argsFn = taskConfig.args;\n    this._argsEqual = taskConfig.argsEqual ?? shallowArrayEquals;\n    this._onComplete = taskConfig.onComplete;\n    this._onError = taskConfig.onError;\n    this.autoRun = taskConfig.autoRun ?? true;\n    // Providing initialValue puts the task in COMPLETE state and stores the\n    // args immediately so it only runs when they change again.\n    if ('initialValue' in taskConfig) {\n      this._value = taskConfig.initialValue;\n      this._status = TaskStatus.COMPLETE;\n      this._previousArgs = this._getArgs?.();\n    }\n  }\n\n  hostUpdate() {\n    if (this.autoRun === true) {\n      this._performTask();\n    }\n  }\n\n  hostUpdated() {\n    if (this.autoRun === 'afterUpdate') {\n      this._performTask();\n    }\n  }\n\n  private _getArgs() {\n    if (this._argsFn === undefined) {\n      return undefined;\n    }\n    const args = this._argsFn();\n    if (!Array.isArray(args)) {\n      throw new Error('The args function must return an array');\n    }\n    return args;\n  }\n\n  /**\n   * Determines if the task should run when it's triggered because of a\n   * host update, and runs the task if it should.\n   *\n   * A task should run when its arguments change from the previous run, based on\n   * the args equality function.\n   *\n   * This method is side-effectful: it stores the new args as the previous args.\n   */\n  private async _performTask() {\n    const args = this._getArgs();\n    const prev = this._previousArgs;\n    this._previousArgs = args;\n    if (\n      args !== prev &&\n      args !== undefined &&\n      (prev === undefined || !this._argsEqual(prev, args))\n    ) {\n      await this.run(args);\n    }\n  }\n\n  /**\n   * Runs a task manually.\n   *\n   * This can be useful for running tasks in response to events as opposed to\n   * automatically running when host element state changes.\n   *\n   * @param args an optional set of arguments to use for this task run. If args\n   *     is not given, the args function is called to get the arguments for\n   *     this run.\n   */\n  async run(args?: T) {\n    args ??= this._getArgs();\n\n    // Remember the args for potential future automatic runs.\n    // TODO (justinfagnani): add test\n    this._previousArgs = args;\n\n    if (this._status === TaskStatus.PENDING) {\n      this._abortController?.abort();\n    } else {\n      // Clear the last complete task run in INITIAL because it may be a resolved\n      // promise. Also clear if COMPLETE or ERROR because the value returned by\n      // awaiting taskComplete may have changed since last run.\n      this._taskComplete = undefined;\n      this._resolveTaskComplete = undefined;\n      this._rejectTaskComplete = undefined;\n    }\n\n    this._status = TaskStatus.PENDING;\n    let result!: R | typeof initialState;\n    let error: unknown;\n\n    // Request an update to report pending state.\n    if (this.autoRun === 'afterUpdate') {\n      // Avoids a change-in-update warning\n      queueMicrotask(() => this._host.requestUpdate());\n    } else {\n      this._host.requestUpdate();\n    }\n\n    const key = ++this._callId;\n    this._abortController = new AbortController();\n    let errored = false;\n    try {\n      result = await this._task(args!, {signal: this._abortController.signal});\n    } catch (e) {\n      errored = true;\n      error = e;\n    }\n    // If this is the most recent task call, process this value.\n    if (this._callId === key) {\n      if (result === initialState) {\n        this._status = TaskStatus.INITIAL;\n      } else {\n        if (errored === false) {\n          try {\n            this._onComplete?.(result as R);\n          } catch {\n            // Ignore user errors from onComplete.\n          }\n          this._status = TaskStatus.COMPLETE;\n          this._resolveTaskComplete?.(result as R);\n        } else {\n          try {\n            this._onError?.(error);\n          } catch {\n            // Ignore user errors from onError.\n          }\n          this._status = TaskStatus.ERROR;\n          this._rejectTaskComplete?.(error);\n        }\n        this._value = result as R;\n        this._error = error;\n      }\n      // Request an update with the final value.\n      this._host.requestUpdate();\n    }\n  }\n\n  /**\n   * Aborts the currently pending task run by aborting the AbortSignal\n   * passed to the task function.\n   *\n   * Aborting a task does nothing if the task is not running: ie, in the\n   * complete, error, or initial states.\n   *\n   * Aborting a task does not automatically cancel the task function. The task\n   * function must be written to accept the AbortSignal and either forward it\n   * to other APIs like `fetch()`, or handle cancellation manually by using\n   * [`signal.throwIfAborted()`]{@link https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/throwIfAborted}\n   * or the\n   * [`abort`]{@link https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/abort_event}\n   * event.\n   *\n   * @param reason The reason for aborting. Passed to\n   *     `AbortController.abort()`.\n   */\n  abort(reason?: unknown) {\n    if (this._status === TaskStatus.PENDING) {\n      this._abortController?.abort(reason);\n    }\n  }\n\n  /**\n   * The result of the previous task run, if it resolved.\n   *\n   * Is `undefined` if the task has not run yet, or if the previous run errored.\n   */\n  get value() {\n    return this._value;\n  }\n\n  /**\n   * The error from the previous task run, if it rejected.\n   *\n   * Is `undefined` if the task has not run yet, or if the previous run\n   * completed successfully.\n   */\n  get error() {\n    return this._error;\n  }\n\n  get status() {\n    return this._status;\n  }\n\n  render<T extends StatusRenderer<R>>(renderer: T) {\n    switch (this._status) {\n      case TaskStatus.INITIAL:\n        return renderer.initial?.() as MaybeReturnType<T['initial']>;\n      case TaskStatus.PENDING:\n        return renderer.pending?.() as MaybeReturnType<T['pending']>;\n      case TaskStatus.COMPLETE:\n        return renderer.complete?.(this.value!) as MaybeReturnType<\n          T['complete']\n        >;\n      case TaskStatus.ERROR:\n        return renderer.error?.(this.error) as MaybeReturnType<T['error']>;\n      default:\n        throw new Error(`Unexpected status: ${this._status}`);\n    }\n  }\n}\n\ntype MaybeReturnType<F> = F extends (...args: never[]) => infer R\n  ? R\n  : undefined;\n\nexport const shallowArrayEquals = <T extends ReadonlyArray<unknown>>(\n  oldArgs: T,\n  newArgs: T\n) =>\n  oldArgs === newArgs ||\n  (oldArgs.length === newArgs.length &&\n    oldArgs.every((v, i) => !notEqual(v, newArgs[i])));\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n/**\n * Overview:\n *\n * This module is designed to add support for an async `setValue` API and\n * `disconnected` callback to directives with the least impact on the core\n * runtime or payload when that feature is not used.\n *\n * The strategy is to introduce a `AsyncDirective` subclass of\n * `Directive` that climbs the \"parent\" tree in its constructor to note which\n * branches of lit-html's \"logical tree\" of data structures contain such\n * directives and thus need to be crawled when a subtree is being cleared (or\n * manually disconnected) in order to run the `disconnected` callback.\n *\n * The \"nodes\" of the logical tree include Parts, TemplateInstances (for when a\n * TemplateResult is committed to a value of a ChildPart), and Directives; these\n * all implement a common interface called `DisconnectableChild`. Each has a\n * `_$parent` reference which is set during construction in the core code, and a\n * `_$disconnectableChildren` field which is initially undefined.\n *\n * The sparse tree created by means of the `AsyncDirective` constructor\n * crawling up the `_$parent` tree and placing a `_$disconnectableChildren` Set\n * on each parent that includes each child that contains a\n * `AsyncDirective` directly or transitively via its children. In order to\n * notify connection state changes and disconnect (or reconnect) a tree, the\n * `_$notifyConnectionChanged` API is patched onto ChildParts as a directive\n * climbs the parent tree, which is called by the core when clearing a part if\n * it exists. When called, that method iterates over the sparse tree of\n * Set<DisconnectableChildren> built up by AsyncDirectives, and calls\n * `_$notifyDirectiveConnectionChanged` on any directives that are encountered\n * in that tree, running the required callbacks.\n *\n * A given \"logical tree\" of lit-html data-structures might look like this:\n *\n *  ChildPart(N1) _$dC=[D2,T3]\n *   ._directive\n *     AsyncDirective(D2)\n *   ._value // user value was TemplateResult\n *     TemplateInstance(T3) _$dC=[A4,A6,N10,N12]\n *      ._$parts[]\n *        AttributePart(A4) _$dC=[D5]\n *         ._directives[]\n *           AsyncDirective(D5)\n *        AttributePart(A6) _$dC=[D7,D8]\n *         ._directives[]\n *           AsyncDirective(D7)\n *           Directive(D8) _$dC=[D9]\n *            ._directive\n *              AsyncDirective(D9)\n *        ChildPart(N10) _$dC=[D11]\n *         ._directive\n *           AsyncDirective(D11)\n *         ._value\n *           string\n *        ChildPart(N12) _$dC=[D13,N14,N16]\n *         ._directive\n *           AsyncDirective(D13)\n *         ._value // user value was iterable\n *           Array<ChildPart>\n *             ChildPart(N14) _$dC=[D15]\n *              ._value\n *                string\n *             ChildPart(N16) _$dC=[D17,T18]\n *              ._directive\n *                AsyncDirective(D17)\n *              ._value // user value was TemplateResult\n *                TemplateInstance(T18) _$dC=[A19,A21,N25]\n *                 ._$parts[]\n *                   AttributePart(A19) _$dC=[D20]\n *                    ._directives[]\n *                      AsyncDirective(D20)\n *                   AttributePart(A21) _$dC=[22,23]\n *                    ._directives[]\n *                      AsyncDirective(D22)\n *                      Directive(D23) _$dC=[D24]\n *                       ._directive\n *                         AsyncDirective(D24)\n *                   ChildPart(N25) _$dC=[D26]\n *                    ._directive\n *                      AsyncDirective(D26)\n *                    ._value\n *                      string\n *\n * Example 1: The directive in ChildPart(N12) updates and returns `nothing`. The\n * ChildPart will _clear() itself, and so we need to disconnect the \"value\" of\n * the ChildPart (but not its directive). In this case, when `_clear()` calls\n * `_$notifyConnectionChanged()`, we don't iterate all of the\n * _$disconnectableChildren, rather we do a value-specific disconnection: i.e.\n * since the _value was an Array<ChildPart> (because an iterable had been\n * committed), we iterate the array of ChildParts (N14, N16) and run\n * `setConnected` on them (which does recurse down the full tree of\n * `_$disconnectableChildren` below it, and also removes N14 and N16 from N12's\n * `_$disconnectableChildren`). Once the values have been disconnected, we then\n * check whether the ChildPart(N12)'s list of `_$disconnectableChildren` is empty\n * (and would remove it from its parent TemplateInstance(T3) if so), but since\n * it would still contain its directive D13, it stays in the disconnectable\n * tree.\n *\n * Example 2: In the course of Example 1, `setConnected` will reach\n * ChildPart(N16); in this case the entire part is being disconnected, so we\n * simply iterate all of N16's `_$disconnectableChildren` (D17,T18) and\n * recursively run `setConnected` on them. Note that we only remove children\n * from `_$disconnectableChildren` for the top-level values being disconnected\n * on a clear; doing this bookkeeping lower in the tree is wasteful since it's\n * all being thrown away.\n *\n * Example 3: If the LitElement containing the entire tree above becomes\n * disconnected, it will run `childPart.setConnected()` (which calls\n * `childPart._$notifyConnectionChanged()` if it exists); in this case, we\n * recursively run `setConnected()` over the entire tree, without removing any\n * children from `_$disconnectableChildren`, since this tree is required to\n * re-connect the tree, which does the same operation, simply passing\n * `isConnected: true` down the tree, signaling which callback to run.\n */\n\nimport {AttributePart, ChildPart, Disconnectable, Part} from './lit-html.js';\nimport {isSingleExpression} from './directive-helpers.js';\nimport {Directive, PartInfo, PartType} from './directive.js';\nexport * from './directive.js';\n\nconst DEV_MODE = true;\n\n/**\n * Recursively walks down the tree of Parts/TemplateInstances/Directives to set\n * the connected state of directives and run `disconnected`/ `reconnected`\n * callbacks.\n *\n * @return True if there were children to disconnect; false otherwise\n */\nconst notifyChildrenConnectedChanged = (\n  parent: Disconnectable,\n  isConnected: boolean\n): boolean => {\n  const children = parent._$disconnectableChildren;\n  if (children === undefined) {\n    return false;\n  }\n  for (const obj of children) {\n    // The existence of `_$notifyDirectiveConnectionChanged` is used as a \"brand\" to\n    // disambiguate AsyncDirectives from other DisconnectableChildren\n    // (as opposed to using an instanceof check to know when to call it); the\n    // redundancy of \"Directive\" in the API name is to avoid conflicting with\n    // `_$notifyConnectionChanged`, which exists `ChildParts` which are also in\n    // this list\n    // Disconnect Directive (and any nested directives contained within)\n    // This property needs to remain unminified.\n    (obj as AsyncDirective)['_$notifyDirectiveConnectionChanged']?.(\n      isConnected,\n      false\n    );\n    // Disconnect Part/TemplateInstance\n    notifyChildrenConnectedChanged(obj, isConnected);\n  }\n  return true;\n};\n\n/**\n * Removes the given child from its parent list of disconnectable children, and\n * if the parent list becomes empty as a result, removes the parent from its\n * parent, and so forth up the tree when that causes subsequent parent lists to\n * become empty.\n */\nconst removeDisconnectableFromParent = (obj: Disconnectable) => {\n  let parent, children;\n  do {\n    if ((parent = obj._$parent) === undefined) {\n      break;\n    }\n    children = parent._$disconnectableChildren!;\n    children.delete(obj);\n    obj = parent;\n  } while (children?.size === 0);\n};\n\nconst addDisconnectableToParent = (obj: Disconnectable) => {\n  // Climb the parent tree, creating a sparse tree of children needing\n  // disconnection\n  for (let parent; (parent = obj._$parent); obj = parent) {\n    let children = parent._$disconnectableChildren;\n    if (children === undefined) {\n      parent._$disconnectableChildren = children = new Set();\n    } else if (children.has(obj)) {\n      // Once we've reached a parent that already contains this child, we\n      // can short-circuit\n      break;\n    }\n    children.add(obj);\n    installDisconnectAPI(parent);\n  }\n};\n\n/**\n * Changes the parent reference of the ChildPart, and updates the sparse tree of\n * Disconnectable children accordingly.\n *\n * Note, this method will be patched onto ChildPart instances and called from\n * the core code when parts are moved between different parents.\n */\nfunction reparentDisconnectables(this: ChildPart, newParent: Disconnectable) {\n  if (this._$disconnectableChildren !== undefined) {\n    removeDisconnectableFromParent(this);\n    this._$parent = newParent;\n    addDisconnectableToParent(this);\n  } else {\n    this._$parent = newParent;\n  }\n}\n\n/**\n * Sets the connected state on any directives contained within the committed\n * value of this part (i.e. within a TemplateInstance or iterable of\n * ChildParts) and runs their `disconnected`/`reconnected`s, as well as within\n * any directives stored on the ChildPart (when `valueOnly` is false).\n *\n * `isClearingValue` should be passed as `true` on a top-level part that is\n * clearing itself, and not as a result of recursively disconnecting directives\n * as part of a `clear` operation higher up the tree. This both ensures that any\n * directive on this ChildPart that produced a value that caused the clear\n * operation is not disconnected, and also serves as a performance optimization\n * to avoid needless bookkeeping when a subtree is going away; when clearing a\n * subtree, only the top-most part need to remove itself from the parent.\n *\n * `fromPartIndex` is passed only in the case of a partial `_clear` running as a\n * result of truncating an iterable.\n *\n * Note, this method will be patched onto ChildPart instances and called from the\n * core code when parts are cleared or the connection state is changed by the\n * user.\n */\nfunction notifyChildPartConnectedChanged(\n  this: ChildPart,\n  isConnected: boolean,\n  isClearingValue = false,\n  fromPartIndex = 0\n) {\n  const value = this._$committedValue;\n  const children = this._$disconnectableChildren;\n  if (children === undefined || children.size === 0) {\n    return;\n  }\n  if (isClearingValue) {\n    if (Array.isArray(value)) {\n      // Iterable case: Any ChildParts created by the iterable should be\n      // disconnected and removed from this ChildPart's disconnectable\n      // children (starting at `fromPartIndex` in the case of truncation)\n      for (let i = fromPartIndex; i < value.length; i++) {\n        notifyChildrenConnectedChanged(value[i], false);\n        removeDisconnectableFromParent(value[i]);\n      }\n    } else if (value != null) {\n      // TemplateInstance case: If the value has disconnectable children (will\n      // only be in the case that it is a TemplateInstance), we disconnect it\n      // and remove it from this ChildPart's disconnectable children\n      notifyChildrenConnectedChanged(value as Disconnectable, false);\n      removeDisconnectableFromParent(value as Disconnectable);\n    }\n  } else {\n    notifyChildrenConnectedChanged(this, isConnected);\n  }\n}\n\n/**\n * Patches disconnection API onto ChildParts.\n */\nconst installDisconnectAPI = (obj: Disconnectable) => {\n  if ((obj as ChildPart).type == PartType.CHILD) {\n    (obj as ChildPart)._$notifyConnectionChanged ??=\n      notifyChildPartConnectedChanged;\n    (obj as ChildPart)._$reparentDisconnectables ??= reparentDisconnectables;\n  }\n};\n\n/**\n * An abstract `Directive` base class whose `disconnected` method will be\n * called when the part containing the directive is cleared as a result of\n * re-rendering, or when the user calls `part.setConnected(false)` on\n * a part that was previously rendered containing the directive (as happens\n * when e.g. a LitElement disconnects from the DOM).\n *\n * If `part.setConnected(true)` is subsequently called on a\n * containing part, the directive's `reconnected` method will be called prior\n * to its next `update`/`render` callbacks. When implementing `disconnected`,\n * `reconnected` should also be implemented to be compatible with reconnection.\n *\n * Note that updates may occur while the directive is disconnected. As such,\n * directives should generally check the `this.isConnected` flag during\n * render/update to determine whether it is safe to subscribe to resources\n * that may prevent garbage collection.\n */\nexport abstract class AsyncDirective extends Directive {\n  // As opposed to other Disconnectables, AsyncDirectives always get notified\n  // when the RootPart connection changes, so the public `isConnected`\n  // is a locally stored variable initialized via its part's getter and synced\n  // via `_$notifyDirectiveConnectionChanged`. This is cheaper than using\n  // the _$isConnected getter, which has to look back up the tree each time.\n  /**\n   * The connection state for this Directive.\n   */\n  isConnected!: boolean;\n\n  // @internal\n  override _$disconnectableChildren?: Set<Disconnectable> = undefined;\n  /**\n   * Initialize the part with internal fields\n   * @param part\n   * @param parent\n   * @param attributeIndex\n   */\n  override _$initialize(\n    part: Part,\n    parent: Disconnectable,\n    attributeIndex: number | undefined\n  ) {\n    super._$initialize(part, parent, attributeIndex);\n    addDisconnectableToParent(this);\n    this.isConnected = part._$isConnected;\n  }\n  // This property needs to remain unminified.\n  /**\n   * Called from the core code when a directive is going away from a part (in\n   * which case `shouldRemoveFromParent` should be true), and from the\n   * `setChildrenConnected` helper function when recursively changing the\n   * connection state of a tree (in which case `shouldRemoveFromParent` should\n   * be false).\n   *\n   * @param isConnected\n   * @param isClearingDirective - True when the directive itself is being\n   *     removed; false when the tree is being disconnected\n   * @internal\n   */\n  override ['_$notifyDirectiveConnectionChanged'](\n    isConnected: boolean,\n    isClearingDirective = true\n  ) {\n    if (isConnected !== this.isConnected) {\n      this.isConnected = isConnected;\n      if (isConnected) {\n        this.reconnected?.();\n      } else {\n        this.disconnected?.();\n      }\n    }\n    if (isClearingDirective) {\n      notifyChildrenConnectedChanged(this, isConnected);\n      removeDisconnectableFromParent(this);\n    }\n  }\n\n  /**\n   * Sets the value of the directive's Part outside the normal `update`/`render`\n   * lifecycle of a directive.\n   *\n   * This method should not be called synchronously from a directive's `update`\n   * or `render`.\n   *\n   * @param directive The directive to update\n   * @param value The value to set\n   */\n  setValue(value: unknown) {\n    if (isSingleExpression(this.__part as unknown as PartInfo)) {\n      this.__part._$setValue(value, this);\n    } else {\n      // this.__attributeIndex will be defined in this case, but\n      // assert it in dev mode\n      if (DEV_MODE && this.__attributeIndex === undefined) {\n        throw new Error(`Expected this.__attributeIndex to be a number`);\n      }\n      const newValues = [...(this.__part._$committedValue as Array<unknown>)];\n      newValues[this.__attributeIndex!] = value;\n      (this.__part as AttributePart)._$setValue(newValues, this, 0);\n    }\n  }\n\n  /**\n   * User callbacks for implementing logic to release any resources/subscriptions\n   * that may have been retained by this directive. Since directives may also be\n   * re-connected, `reconnected` should also be implemented to restore the\n   * working state of the directive prior to the next render.\n   */\n  protected disconnected() {}\n  protected reconnected() {}\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nimport {nothing, ElementPart} from '../lit-html.js';\nimport {directive, AsyncDirective} from '../async-directive.js';\n\n/**\n * Creates a new Ref object, which is container for a reference to an element.\n */\nexport const createRef = <T = Element>() => new Ref<T>();\n\n/**\n * An object that holds a ref value.\n */\nclass Ref<T = Element> {\n  /**\n   * The current Element value of the ref, or else `undefined` if the ref is no\n   * longer rendered.\n   */\n  readonly value?: T;\n}\n\nexport type {Ref};\n\ninterface RefInternal {\n  value: Element | undefined;\n}\n\n// When callbacks are used for refs, this map tracks the last value the callback\n// was called with, for ensuring a directive doesn't clear the ref if the ref\n// has already been rendered to a new spot. It is double-keyed on both the\n// context (`options.host`) and the callback, since we auto-bind class methods\n// to `options.host`.\nconst lastElementForContextAndCallback = new WeakMap<\n  object,\n  WeakMap<Function, Element | undefined>\n>();\n\nexport type RefOrCallback<T = Element> = Ref<T> | ((el: T | undefined) => void);\n\nclass RefDirective extends AsyncDirective {\n  private _element?: Element;\n  private _ref?: RefOrCallback;\n  private _context?: object;\n\n  render(_ref?: RefOrCallback) {\n    return nothing;\n  }\n\n  override update(part: ElementPart, [ref]: Parameters<this['render']>) {\n    const refChanged = ref !== this._ref;\n    if (refChanged && this._ref !== undefined) {\n      // The ref passed to the directive has changed;\n      // unset the previous ref's value\n      this._updateRefValue(undefined);\n    }\n    if (refChanged || this._lastElementForRef !== this._element) {\n      // We either got a new ref or this is the first render;\n      // store the ref/element & update the ref value\n      this._ref = ref;\n      this._context = part.options?.host;\n      this._updateRefValue((this._element = part.element));\n    }\n    return nothing;\n  }\n\n  private _updateRefValue(element: Element | undefined) {\n    if (!this.isConnected) {\n      element = undefined;\n    }\n    if (typeof this._ref === 'function') {\n      // If the current ref was called with a previous value, call with\n      // `undefined`; We do this to ensure callbacks are called in a consistent\n      // way regardless of whether a ref might be moving up in the tree (in\n      // which case it would otherwise be called with the new value before the\n      // previous one unsets it) and down in the tree (where it would be unset\n      // before being set). Note that element lookup is keyed by\n      // both the context and the callback, since we allow passing unbound\n      // functions that are called on options.host, and we want to treat\n      // these as unique \"instances\" of a function.\n      const context = this._context ?? globalThis;\n      let lastElementForCallback =\n        lastElementForContextAndCallback.get(context);\n      if (lastElementForCallback === undefined) {\n        lastElementForCallback = new WeakMap();\n        lastElementForContextAndCallback.set(context, lastElementForCallback);\n      }\n      if (lastElementForCallback.get(this._ref) !== undefined) {\n        this._ref.call(this._context, undefined);\n      }\n      lastElementForCallback.set(this._ref, element);\n      // Call the ref with the new element value\n      if (element !== undefined) {\n        this._ref.call(this._context, element);\n      }\n    } else {\n      (this._ref as RefInternal)!.value = element;\n    }\n  }\n\n  private get _lastElementForRef() {\n    return typeof this._ref === 'function'\n      ? lastElementForContextAndCallback\n          .get(this._context ?? globalThis)\n          ?.get(this._ref)\n      : this._ref?.value;\n  }\n\n  override disconnected() {\n    // Only clear the box if our element is still the one in it (i.e. another\n    // directive instance hasn't rendered its element to it before us); that\n    // only happens in the event of the directive being cleared (not via manual\n    // disconnection)\n    if (this._lastElementForRef === this._element) {\n      this._updateRefValue(undefined);\n    }\n  }\n\n  override reconnected() {\n    // If we were manually disconnected, we can safely put our element back in\n    // the box, since no rendering could have occurred to change its state\n    this._updateRefValue(this._element);\n  }\n}\n\n/**\n * Sets the value of a Ref object or calls a ref callback with the element it's\n * bound to.\n *\n * A Ref object acts as a container for a reference to an element. A ref\n * callback is a function that takes an element as its only argument.\n *\n * The ref directive sets the value of the Ref object or calls the ref callback\n * during rendering, if the referenced element changed.\n *\n * Note: If a ref callback is rendered to a different element position or is\n * removed in a subsequent render, it will first be called with `undefined`,\n * followed by another call with the new element it was rendered to (if any).\n *\n * ```js\n * // Using Ref object\n * const inputRef = createRef();\n * render(html`<input ${ref(inputRef)}>`, container);\n * inputRef.value.focus();\n *\n * // Using callback\n * const callback = (inputElement) => inputElement.focus();\n * render(html`<input ${ref(callback)}>`, container);\n * ```\n */\nexport const ref = directive(RefDirective);\n\n/**\n * The type of the class that powers this directive. Necessary for naming the\n * directive's return type.\n */\nexport type {RefDirective};\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"mappings":"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"}
\ No newline at end of file
diff --git a/client/vendor/wui.chunk.js b/client/vendor/wui.chunk.js
index f81e539..d4b6094 100644
--- a/client/vendor/wui.chunk.js
+++ b/client/vendor/wui.chunk.js
@@ -8,5 +8,4 @@
 <!-- End Google Tag Manager -->
 `,I=new class{constructor(){document.addEventListener(`DOMContentLoaded`,async()=>{await this.add()})}async add(){let e=await y.Configuration;if(await x.IsAppReady,e.gtm_setup&&e.gtm_setup.isActive){let t=e.gtm_setup.key,n=document.createElement(`script`);n.innerHTML=F.replace(`{{key}}`,t),document.head.prepend(n)}}async push(e){let t=await y.Configuration;t.gtm_setup&&t.gtm_setup.isActive&&(window.dataLayer=window.dataLayer||[],window.dataLayer.push(e))}},L=new class{isCreated=_();validated=_();currentElement;needValidation=!0;instance=-1;get IsCreated(){return this.isCreated}get Validating(){return this.validated}get needsValidation(){return this.needValidation}constructor(){window.onReCaptchaLoaded=()=>{this.IsCreated.resolve()},window.onReCaptchaSolved=async e=>{await this.checkReCaptcha(e)}}async checkReCaptchaRequest(e){try{let t=await v.post(v.setQuery(`/re-captcha/check`),JSON.stringify({token:e}));return t.ok?(await t.json()).ok:(console.error(`Unable to check Re Captcha`),!1)}catch(e){return console.error(`Unable to check Re Captcha`),console.error(e),!1}}async checkReCaptcha(e){await this.checkReCaptchaRequest(e)&&(this.validated.resolve([!0]),this.needValidation=!1)}createCaptcha(e){if(!window.g_reCaptcha){this.validated.resolve([!0]),this.needValidation=!1;return}if(e){this.currentElement=document.createElement(`div`),this.currentElement.classList.add(`g-recaptcha`),this.currentElement.setAttribute(`data-sitekey`,window.g_reCaptcha),this.currentElement.setAttribute(`data-callback`,`onReCaptchaSolved`);let t=document.createElement(`script`);t.setAttribute(`src`,`https://www.google.com/recaptcha/api.js?onload=onReCaptchaLoaded&render=explicit`),t.setAttribute(`async`,``),t.setAttribute(`defer`,``),e.appendChild(this.currentElement),e.appendChild(t)}}async validate(){await this.isCreated,this.currentElement&&requestAnimationFrame(()=>{this.instance>-1?window.grecaptcha.reset(this.instance):this.instance=window.grecaptcha.render(this.currentElement,{sitekey:window.g_reCaptcha})})}},R=class{_mutationObserver=new MutationObserver(e=>{this.observation(e)});_observees=[];_callbacks=new Map;_attributes=[];constructor(e){this._attributes=e}addNode(e){(e.nodeType==Node.DOCUMENT_NODE||e.nodeType==Node.DOCUMENT_FRAGMENT_NODE)&&this._register(e);let t=e.shadowRoot;t&&this._register(t)}unregisterCallback(e){return this._callbacks.delete(e)}runCallback(e,t){let n=this._callbacks.get(e);n&&n(...t)}checkLocalesAttribute(e){for(let t of this.Attributes)if(e.includes(t))return t;return``}observation(e){let t=[];e.forEach(e=>{t.includes(e)||t.push(e)});for(let e of t){if(e.attributeName){let t=this.checkLocalesAttribute(e.attributeName);t.length>0&&this.runCallback(`NodeObserved`,[e.target,t,e.attributeName])}e.addedNodes&&e.addedNodes.forEach(e=>{this.runCallback(`NodeAdded`,[e])})}this.CleanUpNodes()}_register(e){this.Observees.includes(e)||(this.Observees.push(e),this.Observer.observe(e,this.ObserverInit),this.runCallback(`NodeRegistered`,[e]))}removeNode(e){let t=this.Observees.indexOf(e);t>-1&&this.Observees.splice(t,1)}CleanUpNodes(){let e=[];for(let t of this.Observees)t.isConnected||e.push(t);if(e.length>0){for(let t of e)this.removeNode(t);this.Observer.disconnect();for(let e of this.Observees)this.Observer.observe(e,this.ObserverInit)}}registerCallback(e,t){this._callbacks.set(e,t)}get Attributes(){return this._attributes}get Observees(){return this._observees}get ObserverInit(){return{attributes:!0,childList:!0,subtree:!0}}get Observer(){return this._mutationObserver}},z=class{constructor(e,t=`de`){this.storageKey=e,this.defaultLangCode=t,this.activeLangCode=this._loadLanguage()}activeLangCode;defaultLangCode;_loadLanguage(){try{let e=new URL(window.location.href).searchParams.get(`lang`);if(e)return this._saveLanguage(e),e}catch{}let e=localStorage.getItem(this.storageKey);if(e)return e;if(navigator.language){let e=navigator.language.split(`-`)[0];return this._saveLanguage(e),e}return this._saveLanguage(this.defaultLangCode),this.defaultLangCode}_saveLanguage(e){localStorage.setItem(this.storageKey,e)}getLanguage(){return this.activeLangCode}setLanguage(e){return this.activeLangCode=e,this._saveLanguage(e),this.activeLangCode}},B=class{constructor(e,t=!1,n=``){this.path=e,this.activeLangCode=n,this.isRead=!1,this._mobile=t}_readDefer;_loadingDefer=_();_isRead=!1;_mobile=!1;_keys=[];_file={};_external={};_override={};_requestService;_utilityService;setServices(e,t){this._requestService=e,this._utilityService=t}set isRead(e){e?this._readDefer&&(this._readDefer.resolve([!0]),this._loadingDefer.resolve([!0])):this._readDefer=_(),this._isRead=e}get isRead(){return this._isRead}async IsFileRead(){return await this._readDefer,this.isRead}async ReadFile(){this.isRead=!1,this.read(this.language)}get mobile(){return this._mobile}get language(){return this.activeLangCode.length>0?this.activeLangCode:new URL(window.location.href).searchParams.get(`lang`)||`de`}get file(){return this._file}get keys(){return this._keys}async AddOverrides(e){await this._loadingDefer;let t=Object.keys(this._external);Object.entries(e).forEach(([e,n])=>{typeof n==`string`?t.forEach(t=>{let r=this._override[t]||{};r[e]=n,this._override[t]=r}):Object.entries(n).forEach(([t,n])=>{let r=this._override[e]||{};r[t]=n,this._override[e]=r})}),this.applyExternalsAndOverrides()}async AddLocales(e){if(Object.entries(e).forEach(([e,t])=>{let n=this._external[e]||{};Object.entries(t).forEach(([e,t])=>{n[e]=t}),this._external[e]=n}),await this._loadingDefer,await this.IsFileRead()){this.applyExternalsAndOverrides();return}console.error(`LocalesModel: Tried to Add Locales from Json, but failed, since file could not be read...`)}applyExternalsAndOverrides(){let e=this.language,t=this._external;if(t&&t[e]){let n=Object.keys(t[e]);for(let r of n)this._file[r]=t[e][r]}let n=this._override;if(n&&n[e]){let t=Object.keys(n[e]);for(let r of t)if(this._file[r]){let t=n[e][r];this._file[t]&&(this._file[r]=this._file[t])}}this._keys=Object.keys(this._file)}async read(e=this.language){let t=this.activeLangCode!=e||!this.isRead;return t&&(this._file=await this.getLocaleJson(this.path,e),this.applyExternalsAndOverrides(),this.isRead=!0,this._mobile=this._utilityService.isMobileDevice()),this.activeLangCode=e,{langCode:this.activeLangCode,changed:t}}async getLocaleJson(e,t){let n=e+t+`.json`,r=await this._requestService.buildRequestURL(n);return this._requestService.fetchJSON(r)}},V=new class{_observer;_initialised=!1;_storage;_reader;constructor(){this._observer=new R([`i18n`]),this._storage=new z(this.LocaleStorageKey),this._reader=new B(`locales/`),this._reader.setServices(v,k),this.init()}get LocaleStorageKey(){let e=window.location.href,t=new URLSearchParams(e);return`${t.get(`token`)}_${t.get(`a`)}_${t.get(`b`)}`}updateUrlLangParameter(e){try{let t=new URL(window.location.href);t.searchParams.has(`lang`)&&(t.searchParams.set(`lang`,e),window.history.replaceState({},``,t.toString()))}catch(e){console.error(e)}}async setLanguage(e){this._storage.setLanguage(e);let t=await this._reader.read(e);t.changed&&(this._observer.Observees.forEach(e=>{this.translateAddedElement(e)}),this.updateUrlLangParameter(t.langCode))}getLanguage(){return this.language}async init(){this._initialised||=(this._observer.registerCallback(`NodeObserved`,(e,t,n)=>{this._translateNode(e,t,n)}),this._observer.registerCallback(`NodeAdded`,this.translateAddedElement.bind(this)),this._observer.registerCallback(`NodeRegistered`,this.translateAddedElement.bind(this)),await this.setLanguage(this.language),document.addEventListener(`register-to-locales-observer`,(e=>{this._observer.addNode(e.target)})),this.Register(document),!0)}async _translateNode(e,t,n){await this.IsFileRead();let r=e.getAttribute(`locales-model-no-translation`)||e.textContent,i=e.getAttribute(n)||``;if(n.includes(t+`-`)){let a=n.replace(t+`-`,``);e.setAttribute(a,this.translate(i,r||``));return}n.includes(`mobile-`)==0&&e.hasAttribute(`mobile-`+n)&&this._reader.mobile||(e.textContent=this.translate(i,r||``))}translateAddedElement(e){if(e.getAttributeNames){let t=e.getAttributeNames();for(let n of t)for(let t of this._observer.Attributes)n.includes(t)&&this._translateNode(e,t,n)}e.querySelectorAll&&e.querySelectorAll(`*`).forEach(e=>{let t=e.getAttributeNames();for(let n of t)for(let t of this._observer.Attributes)n.includes(t)&&this._translateNode(e,t,n)})}observation(e){return function(t,n,r){e._translateNode(t,n,r)}}nodeAdded(e){return function(t){e.translateAddedElement(t)}}register(e){return function(t){e.translateAddedElement(t)}}get language(){return this._storage.getLanguage()}async get(e){return await this.IsFileRead(),e&&this.exists(e)?this._reader.file[e]:``}IsFileRead(){return this._reader.IsFileRead()}exists(e){return this._reader.keys.includes(e)}translate(e,t=``){let n=``;return e&&this.exists(e)&&(n=this._reader.file[e]),t&&!n&&(n=this.exists(t)?this._reader.file[t]:t),typeof n!=`string`&&(n=e),n&&=n.replace(`~`,`
 `),n}async Register(e){await this.IsFileRead()&&this._observer.addNode(e)}async AddSource(e){return await this._reader.AddLocales(e)}async AddOverrides(e){return await this._reader.AddOverrides(e)}},H=new class{_modal;constructor(){u(`shared:mail-sent`,async e=>{await this.sendConfiguredMail(e)})}validateValue(e,t){switch(e||=``,t){case a.CLOUD_ID:return/^[a-z0-9]{8}$/.test(e);case a.E_MAIL:return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}}setLabel(e){let t=document.createElement(`label`);e?t.textContent=`E-Mail wurde erfolgreich versendet.`:t.textContent=`E-Mail konnte nicht versendet werden.`,this._modal.innerHTML=``,this._modal.appendChild(t),setTimeout(()=>{this._modal.hide()},2e3)}async validateGoogleCaptcha(){L.createCaptcha(this._modal),L.needsValidation&&L.validate(),await L.Validating}async shareByMail(e,t,n){if(this.validateValue(e,a.E_MAIL)&&this.validateValue(n,a.CLOUD_ID)){this._modal.show();try{await this.validateGoogleCaptcha();let r=await A.getShortUrl(window.location.href,n);await v.post(v.setQuery(`/webviewer/share-by-mail`),JSON.stringify({to:e,message:t,url:r})),this.setLabel(!0)}catch{this.setLabel(!1)}}}async sendRequestMail(e){if(this.validateValue(e.email,a.E_MAIL)&&this.validateValue(e.number,a.CLOUD_ID)){this._modal.show();try{await this.validateGoogleCaptcha(),await v.post(v.setQuery(`/webui/sendRequestMail`),JSON.stringify({message:e.message||``,name:e.name||``,surname:e.surname||``,email:e.email||``,phone:e.phone||``,postcode:e.postcode||``,number:e.number||``})),this.setLabel(!0)}catch{this.setLabel(!1)}}}async sendConfiguredMail(e){return await fetch(v.setQuery(`/mail/send-configurated-mail`),{method:`POST`,credentials:`include`,body:JSON.stringify(e)})}sendConfiguredMailByBeacon(e){let t=new Blob([JSON.stringify(e)],{type:`application/json; charset=UTF-8`});navigator.sendBeacon(v.setQuery(`/mail/send-configurated-mail`),t)}};new class{isInitialized;_resetMask;constructor(){u(`shared:configuration-fetched`,e=>{if(window.g_configuration.sessionResetSettings&&window.g_configuration.sessionResetSettings.enabled&&(this._resetMask=document.querySelector(`fv-reset-mask`)||Object.assign(document.createElement(`fv-reset-mask`)),this._resetMask)){let e=document.querySelector(`fv-modal.global-main-modal`)||Object.assign(document.createElement(`fv-modal`),{className:`global-main-modal`});e.append(this._resetMask),document.body.append(e)}})}async startTimer(){this.isInitialized?(await this.isInitialized,this._resetMask?this._resetMask.startTimer():console.warn(`Is not found`)):console.warn(`Is not initialized`)}async stopTimer(){this.isInitialized?(await this.isInitialized,this._resetMask?this._resetMask.stopTimer():console.warn(`Is not found`)):console.warn(`Is not initialized`)}};var U=class{static generateCSSVariables(e){return`:root { ${Object.entries(e.colors).map(([e,t])=>`${e}: ${t.value??t.default};`).join(`
-`)} }`}static applyTemplateConfig(e,t,n=!1){let r=()=>{e.dispatchEvent(new CustomEvent(`template-loader-template-config-applied`,{bubbles:!0,detail:{"template-config":t,inverted:n}}))},i=t.value??t.default,a=n?!i:i;switch(t.type){case`string`:e.textContent=String(i);break;case`boolean`:a||e.remove();break;case`option`:case`dynamic-option`:t.attribute&&e.setAttribute(t.attribute,String(i));break;case`attribute`:this.handleAttributeType(e,t,n);break}r()}static handleAttributeType(e,t,n){if(!t.attribute)return;let r=t.value??t.default,i=t[`config-id`],a=t[`!config-id`];i&&typeof window.g_configuration?.[i]==`boolean`?r=window.g_configuration[i]:a&&typeof window.g_configuration?.[a]==`boolean`&&(r=!window.g_configuration[a]);let o=n?!r:r;t.varType===`boolean`?o?e.setAttribute(t.attribute,``):e.removeAttribute(t.attribute):e.setAttribute(t.attribute,String(r))}},W=new class{_loadingScreen;_theme;_initialized=_();_isFinished=_();_themeStyle=document.createElement(`style`);constructor(){this.setupLoadingScreen(),u(`construction:initialize`,()=>this.initialize())}setupLoadingScreen(){this._loadingScreen=document.createElement(`fv-loading`),this._loadingScreen&&(document.body.appendChild(this._loadingScreen),this._loadingScreen.show?.())}get IsInitialized(){return this._initialized}get IsFinished(){return Promise.all([this._initialized,this._isFinished])}async initialize(){try{let e=await v.buildRequestURL(`themeConfig`);this._theme=await v.fetchJSON(e),this._theme&&(this._themeStyle.innerHTML=U.generateCSSVariables(this._theme),document.head.appendChild(this._themeStyle),this._initialized.resolve()),await this.applyThemeToHierarchy(document,!this._theme)}finally{this._loadingScreen?.remove(),this._isFinished.resolve()}}async applyThemeToHierarchy(e,t=!1){let n=e.querySelectorAll(`*`);for(let e of Array.from(n))await this.processElement(e,t),e.shadowRoot&&await this.applyThemeToHierarchy(e.shadowRoot,t)}async processElement(e,t){let n=e.getAttribute(`template-id`),r=e.getAttribute(`config-id`);if(n&&!t&&this._theme){let t=n.startsWith(`!`),r=t?n.substring(1):n,i=this._theme.template[r];i&&(Array.isArray(i)?i:[i]).forEach(n=>U.applyTemplateConfig(e,n,t))}if(r){let t=r.startsWith(`!`),n=t?r.substring(1):r,i=window.g_configuration?.[n];typeof i==`boolean`&&(t?i:!i)&&e.remove()}}},G=new class{constructor(){}async PerformWebCabCommand(e){return(await A.PerformWebCabCommand(e))[0]}async ArrangeEqually(e){let t={webCabCommand:`ArrangeEqually`,webCabParams:{}};return t.webCabParams.GroupID=e.GroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async ModifySingleGroup(e){let t={webCabCommand:`ModifySingleGroup`,webCabParams:{}};return t.webCabParams[e.modificationTarget]=e.value,t.webCabParams.GroupID=e.GroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async ModifySingleSpace(e){let t={webCabCommand:`ModifySingleSpace`,webCabParams:{}};return t.webCabParams[e.modificationTarget]=e.value,t.webCabParams.GroupID=e.GroupID,t.webCabParams.InGroupID=e.InGroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async getUI(e){let t={webCabCommand:`getUI`,webCabParams:{}};return t.webCabParams[`itemManager.preventRun`]=e.preventRuns?`1`:`0`,t.webCabParams[`itemManager.targetIsLastInserted`]=e.lastInserted?`1`:`0`,t.webCabParams[`itemManager.runAllNoOptimizationNoCache`]=e.runAllNotOptimized?`1`:`0`,t.webCabParams[`itemManager.runAllWebCabElements`]=e.runAllWebCabs?`1`:`0`,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.uiType`]=e.uitype,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async getUiFromPoConfig(e){let t={webCabCommand:`getUiFromPoConfig`,webCabParams:{}};return t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.uiType`]=e.uitype,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.UIFromConfig_ForceCorner`]=+!!e.forceCorner,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,await this.PerformWebCabCommand(t)}async ModifyValues(e){let t={webCabCommand:`ModifyValues`,webCabParams:{Modified:{}}};return t.webCabParams.Modified||(t.webCabParams.Modified={}),t.webCabParams.Modified[e.modificationTarget]=e.value,e.preventRuns&&(t.webCabParams[`itemManager.preventRun`]=`1`),t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.uiType`]=e.uiType,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.template&&(t.webCabParams[`itemManager.template`]=e.template),e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}};window.WebCabCommunicationService=G;var K=new class{constructor(){}async GetUIs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_GetUI`,r,!1)}async GetUiFromPoConfig(e,t,n,r,i,a){let o={Manufacturer:e,Program:t,Article:n,ConfigSuffix:r,CustomerType:i,ForceCorner:+!!a};return await A.executeWebCabApiMessage(`APIMessage_WebCab_GetUiFromPoConfig`,o,!1)}async ArrangeEqually(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,GroupIDs:t,ConfigSuffix:n||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ArrangeEqually`,i,!0)}async ModifyValues(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyValues`,i,!0)}async BulkModifyValues(e,t,n){let r={CustomerType:e,ConfigSuffix:n||``,BulkModifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_BulkModifyValues`,r,!0)}async ModifyGroups(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyGroups`,i,!0)}async ModifySpaces(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifySpaces`,i,!0)}async ModifyZSplitting(e,t,n,r){var i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyZSplitting`,i,!0)}async EnableWebCabs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_EnableWebCabs`,r,!0)}async DisableWebCabs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_DisableWebCabs`,r,!0)}async SetDisableDimensionVisuals(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,Value:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_SetDisableDimensionVisuals`,i,!0)}async GetDisableDimensionVisuals(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``},i=await A.executeWebCabApiMessage(`APIMessage_WebCab_GetDisableDimensionVisuals`,r,!1);if(i[`disabled-in-scene`])return!0;if(i.webcabs){for(let e=0;e<i.webcabs.length;++e)if(i.webcabs[e])return!0}return!1}async GetPlanned(e){let t=[],n=await A.getPlannedArticles();for(let r of n)if(r.keys.includes(10017)||r.keys.includes(10019)){if(e!=null){e.includes(r.typeInfo)&&t.push(r);continue}t.push(r)}return t}},q=function(e){let t=e.split(`,`).map(e=>+e),n=t[0]/255,r=t[1]/255,i=t[2]/255,a=Math.max(n,r,i),o=a-Math.min(n,r,i),s,c;return s=o===0?0:a===n?60*((r-i)/o%6):a===r?60*((i-n)/o+2):60*((n-r)/o+4),s<0&&(s+=360),c=a===0?0:o/a,[s,c,a]};new class{sortColor(e){let t=e.map(function(e){let t=q(e.code);return[t[0],t[1],t[2],e]}),n=[];for(let e=0;e<=360;e++){n.push([]);for(let t=0;t<=100;t++){n[e].push([]);for(let r=0;r<=100;r++)n[e][t].push([])}}t.forEach(e=>{let t=Math.round(e[0]),r=Math.round(e[1]*100),i=Math.round(e[2]*100);n[t][r][i].push(e[3])});let r=[];for(let e=0;e<=360;e++)for(let t=0;t<=100;t++)for(let i=0;i<=100;i++)r.push(n[e][t][i]);return r}async getRal(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`ral`})).then(e=>e)}async getNCS(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`ncs`})).then(e=>e)}async getSikkens(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`sikkens`})).then(e=>e)}};var J=new class{async get(e){return A.getPropTransfer(e)}async getDeletable(){return A?.getDeletablePropTransfer()}async traverse(e,t={}){let n=await this.get(t);t.grouped?t.manufacturer?t.manufacturer&&!t.program?await this.programCallback(e,n,t):t.manufacturer&&t.program&&await this.groupCallback(e,n,t):await this.manufacturerCallback(e,n,t):await this.itemCallback(e,n)}async manufacturerCallback(e,t,n){let r=t,i=r?Object.keys(r):[];for(let t of i)e.manufacturerCallback&&await e.manufacturerCallback(t,r[t]),await this.programCallback(e,r[t],Object.assign(n,{manufacturer:t}))}async programCallback(e,t,n){if(n.manufacturer){let r=t,i=Object.keys(r);for(let t of i)e.programCallback&&n.manufacturer&&await e.programCallback(n.manufacturer,t,r[t]),await this.groupCallback(e,r[t],Object.assign(n,{program:t}))}}async groupCallback(e,t,n){if(n.manufacturer&&n.program){let r=t,i=Object.keys(r);for(let t of i)e.groupCallback&&n.manufacturer&&n.program&&await e.groupCallback(n.manufacturer,n.program,t,r[t]),await this.itemCallback(e,r[t])}}async itemCallback(e,t){for(let n of t)e.itemsCallback&&await e.itemsCallback(n)}},Y=class{_cachedManufacturerList;_cachedGroupInformation={};_cachedFinishParams={};async getGroupInformation(e,t){return A?.getMerkmalGroupInformation({manufacturer:e,program:t})}async getFinishParams(e,t,n,r=!1){return r||!this._cachedFinishParams[e]||!this._cachedFinishParams[e][t]||!this._cachedFinishParams[e][t][n||`unknown`]?A?.getFinishParams({manufacturer:e,program:t,association:n}).then(r=>(this._cachedFinishParams[e]||(this._cachedFinishParams[e]={}),this._cachedFinishParams[e][t]||(this._cachedFinishParams[e][t]={}),n&&!this._cachedFinishParams[e][t][n]?this._cachedFinishParams[e][t][n]={}:!n&&!this._cachedFinishParams[e][t].unknown&&(this._cachedFinishParams[e][t].unknown={}),this._cachedFinishParams[e][t][n||`unknown`]=r,this._cachedFinishParams[e][t][n||`unknown`])):Promise.resolve(this._cachedFinishParams[e][t][n||`unknown`])}async _traverse(e,t,n=!1,r){let i=Object.values(t.children);for(let t=0;t<i.length;t++){let a=i[t];e.manufacturerCallback?.(a);let o=Object.values(a.children);for(let t=0;t<o.length;t++){let i=o[t],s=await this.getFinishParams(a.manufacturerName,i.programName);e.programCallback?.(a,i);let c=await this._getGroupInformation(e,a,i,n);c=this.mergeGroupInformation(c);let l=i.propertyKeyOrder||Object.keys(i.children);for(let t=0;t<l.length;t++){let n=l[t],o=i.children[n],s=Object.values(o.children),u=[],d=r?.propertyFilters?.[o.id];if(d){let e=d.filter.itemGroups;if(!(e.length===1&&e[0].filter.length===0)){for(let t of e)for(let e of t.items){let t=s.find(t=>t.key===e);t&&u.push(t)}s=u}}let f;if((s.length>1||s.length===1&&s[0].key.toLowerCase().startsWith(`[dh_ausf`))&&(f=s.find(e=>e.propertyKey===o.currentValue)),e.propertyCallback?.(a,i,o,s,f),c&&e.propertyGroupedCallback){let e=!1;for(let t=0;t<c.length;t++){for(let n of c[t].keys)if(n.key===+o.id){n.progPropertyModel=o,n.progPropertyValueList=s,n.currentValue=f,e=!0;break}if(e)break}}}if(c&&e.propertyGroupedCallback)for(let t=0;t<c.length;t++){let n=c[t];for(let e of l)n.keys.sort((t,n)=>e.endsWith(t.key.toString())?1:e.endsWith(n.key.toString())?-1:0);if(!n?.title){for(let t of n.keys){let r={keys:[t],title:t.progPropertyModel?.name||``,img:n.img,id:n.id};if(!await e.propertyGroupedCallback({manufacturerModel:a,programModel:i,propertyGroup:r,finishParams:s}).then(()=>!0).catch(e=>!1))return!1}continue}if(!await e.propertyGroupedCallback({manufacturerModel:a,programModel:i,propertyGroup:c[t],finishParams:s}).then(()=>!0).catch(e=>!1))return!1}}}return!0}async _getGroupInformation(e,t,n,r=!1){let i=e.propertyGroupedCallback?this._cachedGroupInformation&&r&&this._cachedGroupInformation[t.manufacturerName]&&this._cachedGroupInformation[t.manufacturerName][n.programName]?this._cachedGroupInformation[t.manufacturerName][n.programName]:await this.getGroupInformation(t.manufacturerName,n.programName):void 0;return i&&(i=await this._fetchImages(i,t,n),this._cachedGroupInformation[t.manufacturerName]||(this._cachedGroupInformation[t.manufacturerName]={}),r&&(this._cachedGroupInformation[t.manufacturerName][n.programName]=i)),i}async _fetchImages(e,t,n){return await Promise.all(e.map(async e=>Object.assign(e,{imgSrc:e.img?await A.getMediaUrl(t.manufacturerName,``,`groups`,e.img,!0,!1):void 0})))}mergeGroupInformation(e){if(!e)return;let t={};return e.forEach(e=>{let n=Object.keys(t).find(t=>e.id.startsWith(t))||e.id;t[n]||(t[n]=Object.assign(e,{id:n,title:e.title,img:e.img})),t[n].keys=Array.from(new Map([...t[n].keys||[],...e.keys||[]].map(e=>[e.key,e])).values())}),Object.values(t)}},X=new class extends Y{async get(e){return A.getProgProperties(e)}async findMany(e,t,n,r=!1){let i={};return await this.traverse({propertyCallback:(r,a,o,s,c)=>{n?.indexOf(o.key)!==-1&&r.manufacturerName===e&&a.programName===t&&(i[o.key]=Object.assign(r,a,o,{currentValue:c}))}}),i}async findOne(e,t,n,r=!1){let i;return await this.traverse({propertyCallback:(r,a,o)=>{o.key===n&&r.manufacturerName===e&&a.programName===t&&(i=Object.assign(r,a,o))}}),i}async find(e,t,n,r,i,a){return A?.getProgProperties({manufacturer:e,program:t,useSelection:n,useRelevant:r,fullHierarchy:i,instanceIdents:a})}async findAll(e,t,n){return await this.find(void 0,void 0,e,t,!0,n)}async traverse(e,t){t||={useSelection:!0,useRelevant:!0,fullHierarchy:!0};let n=!!this._cachedManufacturerList,r=this._cachedManufacturerList||await this.get(t),i=n?r:await this.get(t);return this._cachedManufacturerList=n?i:void 0,!i||!i.children?!1:this._traverse(e,i,n,t)}},Z=new class extends Y{async initialize(e){return A.initializePropertyContext(e)}async get(e){return A.getPropertyContext(e)}async dispose(e){return A.disposePropertyContext(e)}async findMany(e,t,n,r){let i={};return await this.traverse({propertyCallback:(e,a,o,s,c)=>{r?.indexOf(o.key)!==-1&&e.manufacturerName===t&&a.programName===n&&(i[o.key]=Object.assign(e,a,o,{currentValue:c}))}},{useRelevant:!0,useSelection:!0,filterStrategy:o.LOCAL}),i}async findOne(e,t,n){let r;return await this.traverse({propertyCallback:(i,a,o)=>{o.key===n&&i.manufacturerName===e&&a.programName===t&&(r=Object.assign(i,a,o))}},{useRelevant:!0,useSelection:!0,filterStrategy:o.LOCAL}),r}async findAll(e,t,n,r){return await this.get({manufacturer:void 0,program:void 0,useSelection:e,useRelevant:t,instanceIdents:n,filterStrategy:r})}async traverse(e,t){t||={useRelevant:!0,useSelection:!0};let n=!!this._cachedManufacturerList,r=this._cachedManufacturerList||await this.get(t),i=n?r:await this.get(t);return this._cachedManufacturerList=n?i:void 0,!i||!i.children?!1:this._traverse(e,i,n)}},Q=new class{_configuration;isInitialized;preventLeaveConfirmation=!1;constructor(){document.addEventListener(`readystatechange`,async()=>{await y.Initialized;let e=await v.fetchJSON(await v.buildRequestURL(`config/layout.json`)),t=await v.fetchJSON(await v.buildRequestURL(`config/styles.json`));await this.initialize(e,t)}),window.addEventListener(`beforeunload`,e=>{!this.preventLeaveConfirmation&&window.g_configuration?.request_leave_confirmation&&(e.preventDefault(),e.returnValue=``)})}get IsInitialized(){return this.isInitialized}get PreventLeaveConfirmation(){return this.preventLeaveConfirmation}set PreventLeaveConfirmation(e){this.preventLeaveConfirmation=e}get CustomMailService(){return this._configuration?.customMailService}async getLocales(){if(await this.IsInitialized,this._configuration)return this._configuration.locales}async TranslatePageTitle(e){if(e.locales){await V.AddSource(e.locales);let t=V.translate(`furnview-app-title`,document.title);document.title=t,document.querySelector(`title`)?.addEventListener(`template-loader-template-config-applied`,e=>{e.detail[`template-config`].value.length<1&&(document.title=V.translate(`furnview-app-title`,t))})}e[`locale-overrides`]&&await V.AddOverrides(e[`locale-overrides`])}SetDocumentLanguageCode(){let e=V.getLanguage();document&&document.documentElement&&(document.documentElement.lang=e)}loadChildren(e,t){if(e.children){let n=[];for(let r of e.children){let i=this.loadComponent(r);t[e.prepend?`prepend`:`append`](i),n.push(i)}t.dispatchEvent(new CustomEvent(`construction-service-children-loaded`,{detail:{children:n}}))}}async loadStylesheets(e,t){if(!e.customCSS)return;let n=Array.isArray(e.customCSS)?e.customCSS:[e.customCSS],r=Promise.resolve();!t.shadowRoot&&(r=t.getUpdateComplete)!==void 0&&await r;let i=t.shadowRoot;if(i)try{let e=n.map(e=>{let t=new CSSStyleSheet;return t.replaceSync(e),t});i.adoptedStyleSheets=[...i.adoptedStyleSheets,...e]}catch{n.forEach(e=>{let t=document.createElement(`style`);t.textContent=e,i.appendChild(t)})}else n.forEach((n,r)=>{let i=`${e.tag||e?.query||t.tagName.toLowerCase()}-${r}`;if(t.querySelector(`style[data-css-module="${i}"]`))return;let a=document.createElement(`style`);a.setAttribute(`data-css-module`,i),a.textContent=n,t===document.body?document.head.appendChild(a):t.prepend(a)})}loadStyleVars(e,t){e.styleVars&&(Object.keys(e.styleVars).forEach(n=>{n.startsWith(`--`)&&t.style.setProperty(n,e.styleVars?.[n])}),t.requestUpdate&&t.requestUpdate())}loadEvents(e,t){e.events&&Array.isArray(e.events)&&e.events.forEach(e=>{e.id&&t.addEventListener(e.defaultEvent||`click`,async t=>{let n=e.data;t instanceof CustomEvent&&(n=JSON.stringify(n).replace(`!$value`,t.detail.value),n=JSON.parse(n)),await g.emitAsync(e.id,{data:n||{},target:e.target||void 0})})})}loadSceneEvents(e){let t=e[`scene-events`];if(t)for(let e of Object.keys(t)){let n=t[e],r=n.events,i=n[`execute-async`]==null?!1:n[`execute-async`],a=n[`throttling-timeout`],o=P[e];if(!o||typeof o.register!=`function`){console.warn(`scene-events: unbekanntes EventFactoryService-Event "${e}"`);continue}let s=async()=>{for(let e of r)i?g.emitAsync(e.id,{data:e.data||{},target:void 0}):await g.emitAsync(e.id,{data:e.data||{},target:void 0})},c=a===void 0?s:f(s,p(a.baseline,a.min,a.max,a.modifier));o.register(c)}}loadProperties(e,t){let n=e=>{typeof e.value==`boolean`&&e.attribute&&e.value?t.setAttribute(e.key,``):typeof e.value==`boolean`&&e.attribute&&!e.value?t.removeAttribute(e.key,``):typeof e.value==`object`&&e.attribute?t.setAttribute(e.key,JSON.stringify(e.value)):e.attribute?t.setAttribute(e.key,e.value):t[e.key]=e.value};if(e.properties&&t)for(let t of e.properties){let e=t.readyValue;e&&x.IsAppReady.then(()=>{n(Object.assign(t,{value:e.value}))}),n(t)}}loadClasses(e,t){e.classes&&t&&t.classList.add(...e.classes)}loadComponent(e){let t=document.createElement(e.tag);return this.loadClasses(e,t),this.loadProperties(e,t),this.loadStyleVars(e,t),this.loadStylesheets(e,t),this.loadEvents(e,t),t}async loadModule(e,t){let n=this.loadComponent(e);if(t[e.prepend?`prepend`:`append`](n),e.execute&&n&&Object.values(e.execute).forEach(e=>{n[e.name].apply(e.arguments?e.arguments:[])}),n==null||n.getUpdateComplete==null){console.error(`component: [`+e.tag+`] could not be loaded!`);return}if(await n.getUpdateComplete(),e.modules)for(let t of e.modules)await this.loadModule(t,n);if(e.areas)for(let t of e.areas)await this.loadArea(t,n);this.loadChildren(e,n)}async loadArea(e,t){let n=null;e.queryAll?(n=t.querySelectorAll(e.query),(!n||n.length===0)&&t.shadowRoot&&(n=t?.shadowRoot?.querySelectorAll(e.query))):e.query?(n=t.querySelector(e.query),!n&&t.shadowRoot&&(n=t?.shadowRoot?.querySelector(e.query))):n=t,n||console.warn(`loadArea failed to find target!`);let r=async(e,t,n)=>{if(n){if(e.modules)for(let t of e.modules)await this.loadModule(t,n);if(e.areas)for(let t of e.areas)await this.loadArea(t,n);this.loadProperties(e,n),this.loadStyleVars(e,n),this.loadStylesheets(e,n),this.loadEvents(e,n),this.loadClasses(e,n)}};if(n&&n instanceof NodeList&&n.length)for(let i=0;i<n.length;i++)await r(e,t,n[i]);else await r(e,t,n);n&&n.dispatchEvent&&n.dispatchEvent(new CustomEvent(`area-updated`,{detail:{}}))}async initialize(e,t){if(!document.body.classList.contains(`construction-container`))return;document.body.classList.contains(`initialHide`)&&(document.body.classList.remove(`initialHide`),document.body.classList.add(`hidden`));let n=e;if(n?.mergeErrors)for(let e of n.mergeErrors)console.error(e[`pre-text`],e[`overwriting-object`],e[`post-text`]);console.log(`layout json:`,n);let r=JSON.stringify(n);if(r=r.replace(/webui\//g,`webui-content/${new URL(window.location.href).searchParams.get(`token`)}/`),r=r.replace(/:token\//g,`${new URL(window.location.href).searchParams.get(`token`)}/`),n=JSON.parse(r),this._configuration=n,n&&this.loadSceneEvents(n),t)for(let e of t?.styles||[]){let t=document.createElement(`style`);t.appendChild(document.createTextNode(e)),document.head.appendChild(t)}n&&t&&(await this.TranslatePageTitle(n),await this.loadArea(n,document),x.FurnviewWebViewer||x.initialize(void 0),this.SetDocumentLanguageCode(),document.body.classList.remove(`hidden`),l.emit(`construction:initialize`))}};export{k as _,N as a,g as c,H as d,Z as f,W as g,v as h,j as i,I as l,J as m,A as n,P as o,X as p,y as r,h as s,Q as t,V as u,K as v,x as y};
-//# sourceMappingURL=wui.chunk.js.map
\ No newline at end of file
+`)} }`}static applyTemplateConfig(e,t,n=!1){let r=()=>{e.dispatchEvent(new CustomEvent(`template-loader-template-config-applied`,{bubbles:!0,detail:{"template-config":t,inverted:n}}))},i=t.value??t.default,a=n?!i:i;switch(t.type){case`string`:e.textContent=String(i);break;case`boolean`:a||e.remove();break;case`option`:case`dynamic-option`:t.attribute&&e.setAttribute(t.attribute,String(i));break;case`attribute`:this.handleAttributeType(e,t,n);break}r()}static handleAttributeType(e,t,n){if(!t.attribute)return;let r=t.value??t.default,i=t[`config-id`],a=t[`!config-id`];i&&typeof window.g_configuration?.[i]==`boolean`?r=window.g_configuration[i]:a&&typeof window.g_configuration?.[a]==`boolean`&&(r=!window.g_configuration[a]);let o=n?!r:r;t.varType===`boolean`?o?e.setAttribute(t.attribute,``):e.removeAttribute(t.attribute):e.setAttribute(t.attribute,String(r))}},W=new class{_loadingScreen;_theme;_initialized=_();_isFinished=_();_themeStyle=document.createElement(`style`);constructor(){this.setupLoadingScreen(),u(`construction:initialize`,()=>this.initialize())}setupLoadingScreen(){this._loadingScreen=document.createElement(`fv-loading`),this._loadingScreen&&(document.body.appendChild(this._loadingScreen),this._loadingScreen.show?.())}get IsInitialized(){return this._initialized}get IsFinished(){return Promise.all([this._initialized,this._isFinished])}async initialize(){try{let e=await v.buildRequestURL(`themeConfig`);this._theme=await v.fetchJSON(e),this._theme&&(this._themeStyle.innerHTML=U.generateCSSVariables(this._theme),document.head.appendChild(this._themeStyle),this._initialized.resolve()),await this.applyThemeToHierarchy(document,!this._theme)}finally{this._loadingScreen?.remove(),this._isFinished.resolve()}}async applyThemeToHierarchy(e,t=!1){let n=e.querySelectorAll(`*`);for(let e of Array.from(n))await this.processElement(e,t),e.shadowRoot&&await this.applyThemeToHierarchy(e.shadowRoot,t)}async processElement(e,t){let n=e.getAttribute(`template-id`),r=e.getAttribute(`config-id`);if(n&&!t&&this._theme){let t=n.startsWith(`!`),r=t?n.substring(1):n,i=this._theme.template[r];i&&(Array.isArray(i)?i:[i]).forEach(n=>U.applyTemplateConfig(e,n,t))}if(r){let t=r.startsWith(`!`),n=t?r.substring(1):r,i=window.g_configuration?.[n];typeof i==`boolean`&&(t?i:!i)&&e.remove()}}},G=new class{constructor(){}async PerformWebCabCommand(e){return(await A.PerformWebCabCommand(e))[0]}async ArrangeEqually(e){let t={webCabCommand:`ArrangeEqually`,webCabParams:{}};return t.webCabParams.GroupID=e.GroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async ModifySingleGroup(e){let t={webCabCommand:`ModifySingleGroup`,webCabParams:{}};return t.webCabParams[e.modificationTarget]=e.value,t.webCabParams.GroupID=e.GroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async ModifySingleSpace(e){let t={webCabCommand:`ModifySingleSpace`,webCabParams:{}};return t.webCabParams[e.modificationTarget]=e.value,t.webCabParams.GroupID=e.GroupID,t.webCabParams.InGroupID=e.InGroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async getUI(e){let t={webCabCommand:`getUI`,webCabParams:{}};return t.webCabParams[`itemManager.preventRun`]=e.preventRuns?`1`:`0`,t.webCabParams[`itemManager.targetIsLastInserted`]=e.lastInserted?`1`:`0`,t.webCabParams[`itemManager.runAllNoOptimizationNoCache`]=e.runAllNotOptimized?`1`:`0`,t.webCabParams[`itemManager.runAllWebCabElements`]=e.runAllWebCabs?`1`:`0`,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.uiType`]=e.uitype,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async getUiFromPoConfig(e){let t={webCabCommand:`getUiFromPoConfig`,webCabParams:{}};return t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.uiType`]=e.uitype,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.UIFromConfig_ForceCorner`]=+!!e.forceCorner,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,await this.PerformWebCabCommand(t)}async ModifyValues(e){let t={webCabCommand:`ModifyValues`,webCabParams:{Modified:{}}};return t.webCabParams.Modified||(t.webCabParams.Modified={}),t.webCabParams.Modified[e.modificationTarget]=e.value,e.preventRuns&&(t.webCabParams[`itemManager.preventRun`]=`1`),t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.uiType`]=e.uiType,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.template&&(t.webCabParams[`itemManager.template`]=e.template),e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}};window.WebCabCommunicationService=G;var K=new class{constructor(){}async GetUIs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_GetUI`,r,!1)}async GetUiFromPoConfig(e,t,n,r,i,a){let o={Manufacturer:e,Program:t,Article:n,ConfigSuffix:r,CustomerType:i,ForceCorner:+!!a};return await A.executeWebCabApiMessage(`APIMessage_WebCab_GetUiFromPoConfig`,o,!1)}async ArrangeEqually(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,GroupIDs:t,ConfigSuffix:n||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ArrangeEqually`,i,!0)}async ModifyValues(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyValues`,i,!0)}async BulkModifyValues(e,t,n){let r={CustomerType:e,ConfigSuffix:n||``,BulkModifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_BulkModifyValues`,r,!0)}async ModifyGroups(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyGroups`,i,!0)}async ModifySpaces(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifySpaces`,i,!0)}async ModifyZSplitting(e,t,n,r){var i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyZSplitting`,i,!0)}async EnableWebCabs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_EnableWebCabs`,r,!0)}async DisableWebCabs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_DisableWebCabs`,r,!0)}async SetDisableDimensionVisuals(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,Value:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_SetDisableDimensionVisuals`,i,!0)}async GetDisableDimensionVisuals(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``},i=await A.executeWebCabApiMessage(`APIMessage_WebCab_GetDisableDimensionVisuals`,r,!1);if(i[`disabled-in-scene`])return!0;if(i.webcabs){for(let e=0;e<i.webcabs.length;++e)if(i.webcabs[e])return!0}return!1}async GetPlanned(e){let t=[],n=await A.getPlannedArticles();for(let r of n)if(r.keys.includes(10017)||r.keys.includes(10019)){if(e!=null){e.includes(r.typeInfo)&&t.push(r);continue}t.push(r)}return t}},q=function(e){let t=e.split(`,`).map(e=>+e),n=t[0]/255,r=t[1]/255,i=t[2]/255,a=Math.max(n,r,i),o=a-Math.min(n,r,i),s,c;return s=o===0?0:a===n?60*((r-i)/o%6):a===r?60*((i-n)/o+2):60*((n-r)/o+4),s<0&&(s+=360),c=a===0?0:o/a,[s,c,a]};new class{sortColor(e){let t=e.map(function(e){let t=q(e.code);return[t[0],t[1],t[2],e]}),n=[];for(let e=0;e<=360;e++){n.push([]);for(let t=0;t<=100;t++){n[e].push([]);for(let r=0;r<=100;r++)n[e][t].push([])}}t.forEach(e=>{let t=Math.round(e[0]),r=Math.round(e[1]*100),i=Math.round(e[2]*100);n[t][r][i].push(e[3])});let r=[];for(let e=0;e<=360;e++)for(let t=0;t<=100;t++)for(let i=0;i<=100;i++)r.push(n[e][t][i]);return r}async getRal(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`ral`})).then(e=>e)}async getNCS(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`ncs`})).then(e=>e)}async getSikkens(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`sikkens`})).then(e=>e)}};var J=new class{async get(e){return A.getPropTransfer(e)}async getDeletable(){return A?.getDeletablePropTransfer()}async traverse(e,t={}){let n=await this.get(t);t.grouped?t.manufacturer?t.manufacturer&&!t.program?await this.programCallback(e,n,t):t.manufacturer&&t.program&&await this.groupCallback(e,n,t):await this.manufacturerCallback(e,n,t):await this.itemCallback(e,n)}async manufacturerCallback(e,t,n){let r=t,i=r?Object.keys(r):[];for(let t of i)e.manufacturerCallback&&await e.manufacturerCallback(t,r[t]),await this.programCallback(e,r[t],Object.assign(n,{manufacturer:t}))}async programCallback(e,t,n){if(n.manufacturer){let r=t,i=Object.keys(r);for(let t of i)e.programCallback&&n.manufacturer&&await e.programCallback(n.manufacturer,t,r[t]),await this.groupCallback(e,r[t],Object.assign(n,{program:t}))}}async groupCallback(e,t,n){if(n.manufacturer&&n.program){let r=t,i=Object.keys(r);for(let t of i)e.groupCallback&&n.manufacturer&&n.program&&await e.groupCallback(n.manufacturer,n.program,t,r[t]),await this.itemCallback(e,r[t])}}async itemCallback(e,t){for(let n of t)e.itemsCallback&&await e.itemsCallback(n)}},Y=class{_cachedManufacturerList;_cachedGroupInformation={};_cachedFinishParams={};async getGroupInformation(e,t){return A?.getMerkmalGroupInformation({manufacturer:e,program:t})}async getFinishParams(e,t,n,r=!1){return r||!this._cachedFinishParams[e]||!this._cachedFinishParams[e][t]||!this._cachedFinishParams[e][t][n||`unknown`]?A?.getFinishParams({manufacturer:e,program:t,association:n}).then(r=>(this._cachedFinishParams[e]||(this._cachedFinishParams[e]={}),this._cachedFinishParams[e][t]||(this._cachedFinishParams[e][t]={}),n&&!this._cachedFinishParams[e][t][n]?this._cachedFinishParams[e][t][n]={}:!n&&!this._cachedFinishParams[e][t].unknown&&(this._cachedFinishParams[e][t].unknown={}),this._cachedFinishParams[e][t][n||`unknown`]=r,this._cachedFinishParams[e][t][n||`unknown`])):Promise.resolve(this._cachedFinishParams[e][t][n||`unknown`])}async _traverse(e,t,n=!1,r){let i=Object.values(t.children);for(let t=0;t<i.length;t++){let a=i[t];e.manufacturerCallback?.(a);let o=Object.values(a.children);for(let t=0;t<o.length;t++){let i=o[t],s=await this.getFinishParams(a.manufacturerName,i.programName);e.programCallback?.(a,i);let c=await this._getGroupInformation(e,a,i,n);c=this.mergeGroupInformation(c);let l=i.propertyKeyOrder||Object.keys(i.children);for(let t=0;t<l.length;t++){let n=l[t],o=i.children[n],s=Object.values(o.children),u=[],d=r?.propertyFilters?.[o.id];if(d){let e=d.filter.itemGroups;if(!(e.length===1&&e[0].filter.length===0)){for(let t of e)for(let e of t.items){let t=s.find(t=>t.key===e);t&&u.push(t)}s=u}}let f;if((s.length>1||s.length===1&&s[0].key.toLowerCase().startsWith(`[dh_ausf`))&&(f=s.find(e=>e.propertyKey===o.currentValue)),e.propertyCallback?.(a,i,o,s,f),c&&e.propertyGroupedCallback){let e=!1;for(let t=0;t<c.length;t++){for(let n of c[t].keys)if(n.key===+o.id){n.progPropertyModel=o,n.progPropertyValueList=s,n.currentValue=f,e=!0;break}if(e)break}}}if(c&&e.propertyGroupedCallback)for(let t=0;t<c.length;t++){let n=c[t];for(let e of l)n.keys.sort((t,n)=>e.endsWith(t.key.toString())?1:e.endsWith(n.key.toString())?-1:0);if(!n?.title){for(let t of n.keys){let r={keys:[t],title:t.progPropertyModel?.name||``,img:n.img,id:n.id};if(!await e.propertyGroupedCallback({manufacturerModel:a,programModel:i,propertyGroup:r,finishParams:s}).then(()=>!0).catch(e=>!1))return!1}continue}if(!await e.propertyGroupedCallback({manufacturerModel:a,programModel:i,propertyGroup:c[t],finishParams:s}).then(()=>!0).catch(e=>!1))return!1}}}return!0}async _getGroupInformation(e,t,n,r=!1){let i=e.propertyGroupedCallback?this._cachedGroupInformation&&r&&this._cachedGroupInformation[t.manufacturerName]&&this._cachedGroupInformation[t.manufacturerName][n.programName]?this._cachedGroupInformation[t.manufacturerName][n.programName]:await this.getGroupInformation(t.manufacturerName,n.programName):void 0;return i&&(i=await this._fetchImages(i,t,n),this._cachedGroupInformation[t.manufacturerName]||(this._cachedGroupInformation[t.manufacturerName]={}),r&&(this._cachedGroupInformation[t.manufacturerName][n.programName]=i)),i}async _fetchImages(e,t,n){return await Promise.all(e.map(async e=>Object.assign(e,{imgSrc:e.img?await A.getMediaUrl(t.manufacturerName,``,`groups`,e.img,!0,!1):void 0})))}mergeGroupInformation(e){if(!e)return;let t={};return e.forEach(e=>{let n=Object.keys(t).find(t=>e.id.startsWith(t))||e.id;t[n]||(t[n]=Object.assign(e,{id:n,title:e.title,img:e.img})),t[n].keys=Array.from(new Map([...t[n].keys||[],...e.keys||[]].map(e=>[e.key,e])).values())}),Object.values(t)}},X=new class extends Y{async get(e){return A.getProgProperties(e)}async findMany(e,t,n,r=!1){let i={};return await this.traverse({propertyCallback:(r,a,o,s,c)=>{n?.indexOf(o.key)!==-1&&r.manufacturerName===e&&a.programName===t&&(i[o.key]=Object.assign(r,a,o,{currentValue:c}))}}),i}async findOne(e,t,n,r=!1){let i;return await this.traverse({propertyCallback:(r,a,o)=>{o.key===n&&r.manufacturerName===e&&a.programName===t&&(i=Object.assign(r,a,o))}}),i}async find(e,t,n,r,i,a){return A?.getProgProperties({manufacturer:e,program:t,useSelection:n,useRelevant:r,fullHierarchy:i,instanceIdents:a})}async findAll(e,t,n){return await this.find(void 0,void 0,e,t,!0,n)}async traverse(e,t){t||={useSelection:!0,useRelevant:!0,fullHierarchy:!0};let n=!!this._cachedManufacturerList,r=this._cachedManufacturerList||await this.get(t),i=n?r:await this.get(t);return this._cachedManufacturerList=n?i:void 0,!i||!i.children?!1:this._traverse(e,i,n,t)}},Z=new class extends Y{async initialize(e){return A.initializePropertyContext(e)}async get(e){return A.getPropertyContext(e)}async dispose(e){return A.disposePropertyContext(e)}async findMany(e,t,n,r){let i={};return await this.traverse({propertyCallback:(e,a,o,s,c)=>{r?.indexOf(o.key)!==-1&&e.manufacturerName===t&&a.programName===n&&(i[o.key]=Object.assign(e,a,o,{currentValue:c}))}},{useRelevant:!0,useSelection:!0,filterStrategy:o.LOCAL}),i}async findOne(e,t,n){let r;return await this.traverse({propertyCallback:(i,a,o)=>{o.key===n&&i.manufacturerName===e&&a.programName===t&&(r=Object.assign(i,a,o))}},{useRelevant:!0,useSelection:!0,filterStrategy:o.LOCAL}),r}async findAll(e,t,n,r){return await this.get({manufacturer:void 0,program:void 0,useSelection:e,useRelevant:t,instanceIdents:n,filterStrategy:r})}async traverse(e,t){t||={useRelevant:!0,useSelection:!0};let n=!!this._cachedManufacturerList,r=this._cachedManufacturerList||await this.get(t),i=n?r:await this.get(t);return this._cachedManufacturerList=n?i:void 0,!i||!i.children?!1:this._traverse(e,i,n)}},Q=new class{_configuration;isInitialized;preventLeaveConfirmation=!1;constructor(){document.addEventListener(`readystatechange`,async()=>{await y.Initialized;let e=await v.fetchJSON(await v.buildRequestURL(`config/layout.json`));console.log(`configuration to construct:`,e);let t=await v.fetchJSON(await v.buildRequestURL(`config/styles.json`));await this.initialize(e,t)}),window.addEventListener(`beforeunload`,e=>{!this.preventLeaveConfirmation&&window.g_configuration?.request_leave_confirmation&&(e.preventDefault(),e.returnValue=``)})}get IsInitialized(){return this.isInitialized}get PreventLeaveConfirmation(){return this.preventLeaveConfirmation}set PreventLeaveConfirmation(e){this.preventLeaveConfirmation=e}get CustomMailService(){return this._configuration?.customMailService}async getLocales(){if(await this.IsInitialized,this._configuration)return this._configuration.locales}async TranslatePageTitle(e){if(e.locales){await V.AddSource(e.locales);let t=V.translate(`furnview-app-title`,document.title);document.title=t,document.querySelector(`title`)?.addEventListener(`template-loader-template-config-applied`,e=>{e.detail[`template-config`].value.length<1&&(document.title=V.translate(`furnview-app-title`,t))})}e[`locale-overrides`]&&await V.AddOverrides(e[`locale-overrides`])}SetDocumentLanguageCode(){let e=V.getLanguage();document&&document.documentElement&&(document.documentElement.lang=e)}loadChildren(e,t){if(e.children){let n=[];for(let r of e.children){let i=this.loadComponent(r);t[e.prepend?`prepend`:`append`](i),n.push(i)}t.dispatchEvent(new CustomEvent(`construction-service-children-loaded`,{detail:{children:n}}))}}async loadStylesheets(e,t){if(!e.customCSS)return;let n=Array.isArray(e.customCSS)?e.customCSS:[e.customCSS],r=Promise.resolve();!t.shadowRoot&&(r=t.getUpdateComplete)!==void 0&&await r;let i=t.shadowRoot;if(i)try{let e=n.map(e=>{let t=new CSSStyleSheet;return t.replaceSync(e),t});i.adoptedStyleSheets=[...i.adoptedStyleSheets,...e]}catch{n.forEach(e=>{let t=document.createElement(`style`);t.textContent=e,i.appendChild(t)})}else n.forEach((n,r)=>{let i=`${e.tag||e?.query||t.tagName.toLowerCase()}-${r}`;if(t.querySelector(`style[data-css-module="${i}"]`))return;let a=document.createElement(`style`);a.setAttribute(`data-css-module`,i),a.textContent=n,t===document.body?document.head.appendChild(a):t.prepend(a)})}loadStyleVars(e,t){e.styleVars&&(Object.keys(e.styleVars).forEach(n=>{n.startsWith(`--`)&&t.style.setProperty(n,e.styleVars?.[n])}),t.requestUpdate&&t.requestUpdate())}loadEvents(e,t){e.events&&Array.isArray(e.events)&&e.events.forEach(e=>{e.id&&t.addEventListener(e.defaultEvent||`click`,async t=>{let n=e.data;t instanceof CustomEvent&&(n=JSON.stringify(n).replace(`!$value`,t.detail.value),n=JSON.parse(n)),await g.emitAsync(e.id,{data:n||{},target:e.target||void 0})})})}loadSceneEvents(e){let t=e[`scene-events`];if(t)for(let e of Object.keys(t)){let n=t[e],r=n.events,i=n[`execute-async`]==null?!1:n[`execute-async`],a=n[`throttling-timeout`],o=P[e];if(!o||typeof o.register!=`function`){console.warn(`scene-events: unbekanntes EventFactoryService-Event "${e}"`);continue}let s=async()=>{for(let e of r)i?g.emitAsync(e.id,{data:e.data||{},target:void 0}):await g.emitAsync(e.id,{data:e.data||{},target:void 0})},c=a===void 0?s:f(s,p(a.baseline,a.min,a.max,a.modifier));o.register(c)}}loadProperties(e,t){let n=e=>{typeof e.value==`boolean`&&e.attribute&&e.value?t.setAttribute(e.key,``):typeof e.value==`boolean`&&e.attribute&&!e.value?t.removeAttribute(e.key,``):typeof e.value==`object`&&e.attribute?t.setAttribute(e.key,JSON.stringify(e.value)):e.attribute?t.setAttribute(e.key,e.value):t[e.key]=e.value};if(e.properties&&t)for(let t of e.properties){let e=t.readyValue;e&&x.IsAppReady.then(()=>{n(Object.assign(t,{value:e.value}))}),n(t)}}loadClasses(e,t){e.classes&&t&&t.classList.add(...e.classes)}loadComponent(e){let t=document.createElement(e.tag);return this.loadClasses(e,t),this.loadProperties(e,t),this.loadStyleVars(e,t),this.loadStylesheets(e,t),this.loadEvents(e,t),t}async loadModule(e,t){let n=this.loadComponent(e);if(t[e.prepend?`prepend`:`append`](n),e.execute&&n&&Object.values(e.execute).forEach(e=>{n[e.name].apply(e.arguments?e.arguments:[])}),n==null||n.getUpdateComplete==null){console.error(`component: [`+e.tag+`] could not be loaded!`);return}if(await n.getUpdateComplete(),e.modules)for(let t of e.modules)await this.loadModule(t,n);if(e.areas)for(let t of e.areas)await this.loadArea(t,n);this.loadChildren(e,n)}async loadArea(e,t){let n=null;e.queryAll?(n=t.querySelectorAll(e.query),(!n||n.length===0)&&t.shadowRoot&&(n=t?.shadowRoot?.querySelectorAll(e.query))):e.query?(n=t.querySelector(e.query),!n&&t.shadowRoot&&(n=t?.shadowRoot?.querySelector(e.query))):n=t;let r=async(e,t,n)=>{if(n){if(e.modules)for(let t of e.modules)await this.loadModule(t,n);if(e.areas)for(let t of e.areas)await this.loadArea(t,n);this.loadProperties(e,n),this.loadStyleVars(e,n),this.loadStylesheets(e,n),this.loadEvents(e,n),this.loadClasses(e,n)}};if(n&&n instanceof NodeList&&n.length)for(let i=0;i<n.length;i++)await r(e,t,n[i]);else await r(e,t,n);n&&n.dispatchEvent&&n.dispatchEvent(new CustomEvent(`area-updated`,{detail:{}}))}async initialize(e,t){if(!document.body.classList.contains(`construction-container`))return;document.body.classList.contains(`initialHide`)&&(document.body.classList.remove(`initialHide`),document.body.classList.add(`hidden`));let n=e;if(n?.mergeErrors)for(let e of n.mergeErrors)console.error(e[`pre-text`],e[`overwriting-object`],e[`post-text`]);let r=JSON.stringify(n);if(r=r.replace(/webui\//g,`webui-content/${new URL(window.location.href).searchParams.get(`token`)}/`),r=r.replace(/:token\//g,`${new URL(window.location.href).searchParams.get(`token`)}/`),n=JSON.parse(r),this._configuration=n,this.loadSceneEvents(n),t)for(let e of t?.styles||[]){let t=document.createElement(`style`);t.appendChild(document.createTextNode(e)),document.head.appendChild(t)}n&&t&&(await this.TranslatePageTitle(n),await this.loadArea(n,document),x.FurnviewWebViewer||x.initialize(void 0),this.SetDocumentLanguageCode(),document.body.classList.remove(`hidden`),l.emit(`construction:initialize`))}};export{k as _,N as a,g as c,H as d,Z as f,W as g,v as h,j as i,I as l,J as m,A as n,P as o,X as p,y as r,h as s,Q as t,V as u,K as v,x as y};
\ No newline at end of file
diff --git a/client/vendor/wui.chunk.js.map b/client/vendor/wui.chunk.js.map
deleted file mode 100644
index cdc32d0..0000000
--- a/client/vendor/wui.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"wui.chunk.js","names":["all","Map","on","type","handler","handlers","get","push","set","off","splice","indexOf","emit","evt","slice","map","EventPriority","CommunicatorIds","uuid_v4","s","response","area","parentElement","element"],"sources":["../../../../node_modules/.pnpm/@dh-software+webui-types@1.2.0/node_modules/@dh-software/webui-types/dist/webui-types.mjs","../../../../../../webui-core/webui/node_modules/.pnpm/mitt@3.0.1/node_modules/mitt/src/index.ts","../../../../../../webui-core/webui/packages/api/src/event/async-emitter.ts","../../../../../../webui-core/webui/packages/api/src/event/emitter.ts","../../../../../../webui-core/webui/packages/api/src/event/throttle.ts","../../../../../../webui-core/webui/packages/api/src/service/event.service.ts","../../../../../../webui-core/webui/packages/api/src/classes/defer.class.ts","../../../../../../webui-core/webui/packages/api/src/service/request.service.ts","../../../../../../webui-core/webui/packages/api/src/service/configuration.service.ts","../../../../../../webui-core/webui/packages/api/src/service/web-viewer.service.ts","../../../../../../webui-core/webui/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/stringify.js","../../../../../../webui-core/webui/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/rng.js","../../../../../../webui-core/webui/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/native.js","../../../../../../webui-core/webui/node_modules/.pnpm/uuid@11.1.0/node_modules/uuid/dist/esm-browser/v4.js","../../../../../../webui-core/webui/packages/api/src/service/utility.service.ts","../../../../../../webui-core/webui/packages/api/src/service/communication-message.service.ts","../../../../../../webui-core/webui/packages/api/src/service/configurator-api.service.ts","../../../../../../webui-core/webui/packages/api/src/service/drag-drop.service.ts","../../../../../../webui-core/webui/packages/api/src/service/event-factory.service.ts","../../../../../../webui-core/webui/packages/api/src/service/google-analytics.service.ts","../../../../../../webui-core/webui/packages/api/src/service/google-recapcha.service.ts","../../../../../../webui-core/webui/packages/api/src/classes/observer.class.ts","../../../../../../webui-core/webui/packages/api/src/classes/locale-storage.class.ts","../../../../../../webui-core/webui/packages/api/src/classes/locale-reader.class.ts","../../../../../../webui-core/webui/packages/api/src/service/locale.service.ts","../../../../../../webui-core/webui/packages/api/src/service/mailer.service.ts","../../../../../../webui-core/webui/packages/api/src/service/reset-window.service.ts","../../../../../../webui-core/webui/packages/api/src/classes/theme-applier.class.ts","../../../../../../webui-core/webui/packages/api/src/service/template.service.ts","../../../../../../webui-core/webui/packages/api/src/service/webcab.service.ts","../../../../../../webui-core/webui/packages/api/src/service/colorpicker.service.ts","../../../../../../webui-core/webui/packages/api/src/model/properties/prop-transfer.model.ts","../../../../../../webui-core/webui/packages/api/src/model/properties/property-model.base.ts","../../../../../../webui-core/webui/packages/api/src/model/properties/prog-property.model.ts","../../../../../../webui-core/webui/packages/api/src/model/properties/prog-context.model.ts","../../../../../../webui-core/webui/packages/configuration-parser/src/service/construction.service.ts"],"sourcesContent":["var eCatalogFilterState = /* @__PURE__ */ ((eCatalogFilterState2) => {\n  eCatalogFilterState2[eCatalogFilterState2[\"DISABLED\"] = 0] = \"DISABLED\";\n  eCatalogFilterState2[eCatalogFilterState2[\"SELECTED\"] = 1] = \"SELECTED\";\n  eCatalogFilterState2[eCatalogFilterState2[\"IMPLICIT\"] = 2] = \"IMPLICIT\";\n  eCatalogFilterState2[eCatalogFilterState2[\"EXPLICIT\"] = 3] = \"EXPLICIT\";\n  return eCatalogFilterState2;\n})(eCatalogFilterState || {});\n\nvar DragDirection = /* @__PURE__ */ ((DragDirection2) => {\n  DragDirection2[DragDirection2[\"NONE\"] = 0] = \"NONE\";\n  DragDirection2[DragDirection2[\"Horizontal\"] = 1] = \"Horizontal\";\n  DragDirection2[DragDirection2[\"Vertical\"] = 2] = \"Vertical\";\n  return DragDirection2;\n})(DragDirection || {});\nvar DragType = /* @__PURE__ */ ((DragType2) => {\n  DragType2[DragType2[\"ARTICLE\"] = 0] = \"ARTICLE\";\n  DragType2[DragType2[\"PROPTRANSFER\"] = 1] = \"PROPTRANSFER\";\n  DragType2[DragType2[\"BY_MODE\"] = 2] = \"BY_MODE\";\n  DragType2[DragType2[\"FITTING\"] = 3] = \"FITTING\";\n  DragType2[DragType2[\"WALL_FITTING\"] = 4] = \"WALL_FITTING\";\n  DragType2[DragType2[\"PROGPROPERTY\"] = 5] = \"PROGPROPERTY\";\n  return DragType2;\n})(DragType || {});\n\nvar ValidationType = /* @__PURE__ */ ((ValidationType2) => {\n  ValidationType2[ValidationType2[\"CLOUD_ID\"] = 0] = \"CLOUD_ID\";\n  ValidationType2[ValidationType2[\"E_MAIL\"] = 1] = \"E_MAIL\";\n  return ValidationType2;\n})(ValidationType || {});\n\nconst VIH_PLANTYPE_ZUSATZINFO_0 = \"10580\";\nconst VIH_PLANTYPE_ZUSATZINFO_1 = \"10581\";\nconst VIH_PLANTYPE_ZUSATZINFO_2 = \"10582\";\nconst VIH_PLANTYPE_ZUSATZINFO_3 = \"10583\";\nconst VIH_PLANTYPE_ZUSATZINFO_4 = \"10584\";\nconst VIH_PLANTYPE_DX = \"10514\";\nconst VIH_PLANTYPE_DY = \"10515\";\nconst VIH_PLANTYPE_DZ = \"10516\";\nconst VIH_PLANTYPE_ANSCHLAG_INITIAL_CHANGED_L = \"11205\";\nvar OverrideMode = /* @__PURE__ */ ((OverrideMode2) => {\n  OverrideMode2[OverrideMode2[\"NONE\"] = 0] = \"NONE\";\n  OverrideMode2[OverrideMode2[\"RESET\"] = 1] = \"RESET\";\n  OverrideMode2[OverrideMode2[\"RESET_MANUFACTURER\"] = 2] = \"RESET_MANUFACTURER\";\n  OverrideMode2[OverrideMode2[\"RESET_ALL\"] = 3] = \"RESET_ALL\";\n  return OverrideMode2;\n})(OverrideMode || {});\n\nvar DeviceType = /* @__PURE__ */ ((DeviceType2) => {\n  DeviceType2[DeviceType2[\"MOBILE\"] = 0] = \"MOBILE\";\n  DeviceType2[DeviceType2[\"DESKTOP\"] = 1] = \"DESKTOP\";\n  return DeviceType2;\n})(DeviceType || {});\n\nvar ContextFilterStrategy = /* @__PURE__ */ ((ContextFilterStrategy2) => {\n  ContextFilterStrategy2[ContextFilterStrategy2[\"ALL\"] = 0] = \"ALL\";\n  ContextFilterStrategy2[ContextFilterStrategy2[\"GLOBAL\"] = 1] = \"GLOBAL\";\n  ContextFilterStrategy2[ContextFilterStrategy2[\"LOCAL\"] = 2] = \"LOCAL\";\n  return ContextFilterStrategy2;\n})(ContextFilterStrategy || {});\n\nvar ZoomType = /* @__PURE__ */ ((ZoomType2) => {\n  ZoomType2[ZoomType2[\"ZOOMAUTO_EXTENDEDAPOINT\"] = 0] = \"ZOOMAUTO_EXTENDEDAPOINT\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_EXTENDEDDIR\"] = 1] = \"ZOOMAUTO_EXTENDEDDIR\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_FRONTCLIP\"] = 2] = \"ZOOMAUTO_FRONTCLIP\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_ROTATE2PI\"] = 3] = \"ZOOMAUTO_ROTATE2PI\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_ORTHOCLIP\"] = 4] = \"ZOOMAUTO_ORTHOCLIP\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_ZOOMFACTOR\"] = 5] = \"ZOOMAUTO_ZOOMFACTOR\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_ORTHOFRONT\"] = 6] = \"ZOOMAUTO_ORTHOFRONT\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_PANUPDOWN\"] = 7] = \"ZOOMAUTO_PANUPDOWN\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_EXTENDEDCURDIR\"] = 8] = \"ZOOMAUTO_EXTENDEDCURDIR\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_ROTATEMPV\"] = 9] = \"ZOOMAUTO_CAM_ROTATEMPV\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_ROTATEMPH\"] = 10] = \"ZOOMAUTO_CAM_ROTATEMPH\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_ROTATEABOUTMARKED\"] = 11] = \"ZOOMAUTO_CAM_ROTATEABOUTMARKED\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_ROTATEEYELEFTRIGHT\"] = 12] = \"ZOOMAUTO_CAM_ROTATEEYELEFTRIGHT\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_ROTATEEYEUPDOWN\"] = 13] = \"ZOOMAUTO_CAM_ROTATEEYEUPDOWN\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_ROTATELEFTRIGHT\"] = 14] = \"ZOOMAUTO_CAM_ROTATELEFTRIGHT\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_MOVELEFTRIGHT\"] = 15] = \"ZOOMAUTO_CAM_MOVELEFTRIGHT\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_MOVEAXIS3D\"] = 16] = \"ZOOMAUTO_CAM_MOVEAXIS3D\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_MOVEUPDOWN\"] = 17] = \"ZOOMAUTO_CAM_MOVEUPDOWN\";\n  ZoomType2[ZoomType2[\"ZOOMAUTO_CAM_SETVIEWPOINTMODE\"] = 18] = \"ZOOMAUTO_CAM_SETVIEWPOINTMODE\";\n  return ZoomType2;\n})(ZoomType || {});\nvar Perspectives = /* @__PURE__ */ ((Perspectives2) => {\n  Perspectives2[Perspectives2[\"TopLeftFront\"] = -1000109] = \"TopLeftFront\";\n  Perspectives2[Perspectives2[\"TopRightFront\"] = -1000110] = \"TopRightFront\";\n  Perspectives2[Perspectives2[\"TopLeftBack\"] = -1000108] = \"TopLeftBack\";\n  Perspectives2[Perspectives2[\"TopRightBack\"] = -1000107] = \"TopRightBack\";\n  Perspectives2[Perspectives2[\"Left\"] = -1000102] = \"Left\";\n  Perspectives2[Perspectives2[\"Right\"] = -1000101] = \"Right\";\n  Perspectives2[Perspectives2[\"Front\"] = -1000106] = \"Front\";\n  Perspectives2[Perspectives2[\"Back\"] = -1000105] = \"Back\";\n  Perspectives2[Perspectives2[\"Top\"] = -1000103] = \"Top\";\n  return Perspectives2;\n})(Perspectives || {});\n\nexport { ContextFilterStrategy, DeviceType, DragDirection, DragType, OverrideMode, Perspectives, VIH_PLANTYPE_ANSCHLAG_INITIAL_CHANGED_L, VIH_PLANTYPE_DX, VIH_PLANTYPE_DY, VIH_PLANTYPE_DZ, VIH_PLANTYPE_ZUSATZINFO_0, VIH_PLANTYPE_ZUSATZINFO_1, VIH_PLANTYPE_ZUSATZINFO_2, VIH_PLANTYPE_ZUSATZINFO_3, VIH_PLANTYPE_ZUSATZINFO_4, ValidationType, ZoomType, eCatalogFilterState };\n","export type EventType = string | symbol;\n\n// An event handler can take an optional event argument\n// and should not return a value\nexport type Handler<T = unknown> = (event: T) => void;\nexport type WildcardHandler<T = Record<string, unknown>> = (\n\ttype: keyof T,\n\tevent: T[keyof T]\n) => void;\n\n// An array of all currently registered event handlers for a type\nexport type EventHandlerList<T = unknown> = Array<Handler<T>>;\nexport type WildCardEventHandlerList<T = Record<string, unknown>> = Array<\n\tWildcardHandler<T>\n>;\n\n// A map of event types and their corresponding event handlers.\nexport type EventHandlerMap<Events extends Record<EventType, unknown>> = Map<\n\tkeyof Events | '*',\n\tEventHandlerList<Events[keyof Events]> | WildCardEventHandlerList<Events>\n>;\n\nexport interface Emitter<Events extends Record<EventType, unknown>> {\n\tall: EventHandlerMap<Events>;\n\n\ton<Key extends keyof Events>(type: Key, handler: Handler<Events[Key]>): void;\n\ton(type: '*', handler: WildcardHandler<Events>): void;\n\n\toff<Key extends keyof Events>(\n\t\ttype: Key,\n\t\thandler?: Handler<Events[Key]>\n\t): void;\n\toff(type: '*', handler: WildcardHandler<Events>): void;\n\n\temit<Key extends keyof Events>(type: Key, event: Events[Key]): void;\n\temit<Key extends keyof Events>(\n\t\ttype: undefined extends Events[Key] ? Key : never\n\t): void;\n}\n\n/**\n * Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nexport default function mitt<Events extends Record<EventType, unknown>>(\n\tall?: EventHandlerMap<Events>\n): Emitter<Events> {\n\ttype GenericEventHandler =\n\t\t| Handler<Events[keyof Events]>\n\t\t| WildcardHandler<Events>;\n\tall = all || new Map();\n\n\treturn {\n\t\t/**\n\t\t * A Map of event names to registered handler functions.\n\t\t */\n\t\tall,\n\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t * @param {string|symbol} type Type of event to listen for, or `'*'` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton<Key extends keyof Events>(type: Key, handler: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\thandlers.push(handler);\n\t\t\t} else {\n\t\t\t\tall!.set(type, [handler] as EventHandlerList<Events[keyof Events]>);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t * If `handler` is omitted, all handlers of the given type are removed.\n\t\t * @param {string|symbol} type Type of event to unregister `handler` from (`'*'` to remove a wildcard handler)\n\t\t * @param {Function} [handler] Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff<Key extends keyof Events>(type: Key, handler?: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\tif (handler) {\n\t\t\t\t\thandlers.splice(handlers.indexOf(handler) >>> 0, 1);\n\t\t\t\t} else {\n\t\t\t\t\tall!.set(type, []);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `'*'` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * Note: Manually firing '*' handlers is not supported.\n\t\t *\n\t\t * @param {string|symbol} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit<Key extends keyof Events>(type: Key, evt?: Events[Key]) {\n\t\t\tlet handlers = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\t(handlers as EventHandlerList<Events[keyof Events]>)\n\t\t\t\t\t.slice()\n\t\t\t\t\t.map((handler) => {\n\t\t\t\t\t\thandler(evt!);\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\thandlers = all!.get('*');\n\t\t\tif (handlers) {\n\t\t\t\t(handlers as WildCardEventHandlerList<Events>)\n\t\t\t\t\t.slice()\n\t\t\t\t\t.map((handler) => {\n\t\t\t\t\t\thandler(type, evt!);\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n}\n","import mitt, {Emitter, EventType, Handler, WildcardHandler} from 'mitt';\n\nexport interface AsyncEmitter<T extends Record<EventType, unknown>> extends Emitter<T> {\n    emitAsync<Key extends keyof T>(\n        type: Key,\n        event: T[Key]\n    ): Promise<PromiseSettledResult<any>[]>;\n\n    has<Key extends keyof T>(type: Key): boolean;\n}\n\ntype AsyncEventHandler = void | Promise<void>;\n\nexport function createAsyncEmitter<T extends Record<EventType, unknown>>(emitter: Emitter<T> = mitt<T>()): AsyncEmitter<T> {\n    const has = <Key extends keyof T>(type: Key) => {\n        return (emitter.all.get(type) || []).length !== 0\n    };\n    (emitter as AsyncEmitter<T>).has = has;\n\n    const emitAsync = async <Key extends keyof T>(\n        type: Key,\n        event: T[Key]\n    ): Promise<PromiseSettledResult<any>[]> => {\n        const specificHandlers = emitter.all.get(type) || [];\n        const wildcardHandlers = emitter.all.get('*') || [];\n\n        const promises: Promise<any>[] = [];\n\n        for (const handler of specificHandlers) {\n            try {\n                const result = (handler as Handler<T[Key]>)(event) as AsyncEventHandler;\n                if (result && typeof result.then === 'function') {\n                    promises.push(result);\n                }\n            } catch (error) {\n                console.error(`[emitAsync] Synchronous error in specific handler for event '${String(type)}':`, error);\n                promises.push(Promise.reject(error));\n            }\n        }\n\n        for (const handler of wildcardHandlers) {\n            try {\n                const result = (handler as WildcardHandler<T>)(type, event) as AsyncEventHandler;\n                if (result && typeof result.then === 'function') {\n                    promises.push(result);\n                }\n            } catch (error) {\n                console.error(`[emitAsync] Synchronous error in wildcard handler for event '${String(type)}':`, error);\n                promises.push(Promise.reject(error));\n            }\n        }\n        return Promise.allSettled(promises);\n    };\n    (emitter as AsyncEmitter<T>).emitAsync = emitAsync;\n    return emitter as AsyncEmitter<T>;\n}\n","import {Events} from \"./events\";\nimport {createAsyncEmitter} from \"./async-emitter\";\n\ninterface SubscriptionOptions {\n    once: boolean\n}\n\nexport interface Subscription {\n    unsubscribe: () => void;\n}\n\nexport const globalEventBus = createAsyncEmitter<Events>();\n(globalEventBus as any)._instanceId = Math.random().toString(36).substring(2);\n// console.log('EventBus instance created:', (globalEventBus as any)._instanceId);\n\nexport function subscribe<K extends keyof Events>(\n    eventName: K,\n    handler: (payload: Events[K]) => void,\n    options?: SubscriptionOptions\n): Subscription {\n    const func = (payload: Events[K]) => {\n        handler(payload)\n        if(options?.once) {\n            subscription.unsubscribe();\n        }\n    }\n    const subscription = {\n        unsubscribe: () => {\n            globalEventBus.off(eventName, func);\n        }\n    }\n    globalEventBus.on(eventName, func);\n    return subscription;\n}\n\nexport function subscribeOnce<K extends keyof Events>(eventName: K, handler: (payload: Events[K]) => void): Subscription {\n    return subscribe(eventName, handler, {once: true});\n}\n","export function throttle<TArgs extends Array<unknown>>(\n\tfn: (...args: TArgs) => void | Promise<unknown>,\n\ttimeout: number,\n): (...args: TArgs) => void {\n\tlet lastInvoked = 0;\n\treturn (...args: TArgs) => {\n\t\tconst now = Date.now();\n\t\tif (now - lastInvoked >= timeout) {\n\t\t\tlastInvoked = now;\n\t\t\tvoid fn(...args);\n\t\t}\n\t};\n}\n\n// Compute a throttle window adapted to the current device, starting from\n// `baseline` (ms) and clamped to [min, max].\n//  - low core count  -> larger window;  high core count -> tighter window\n//  - low device RAM  -> larger window\n//  - mobile-sized screen -> larger window (aggressive thread throttling)\nexport function getAdaptiveTimeout(\n\tbaseline = 150,\n\tmin = 100,\n\tmax = 600,\n\tmodifier = 100\n): number {\n\tlet timeout = baseline;\n\n\t// CPU cores: lower cores = slower event processing\n\tconst cores = navigator.hardwareConcurrency || 4;\n\tif (cores <= 2) timeout += modifier*1.5;\n\telse if (cores >= 8) timeout -= modifier*0.5;\n\n\t// Device RAM (Chromium-only; not in standard lib.dom typings)\n\tconst ram = (navigator as Navigator & { deviceMemory?: number }).deviceMemory;\n\tif (ram && ram <= 2) timeout += modifier;\n\n\t// Mobile screens often have aggressive background-thread throttling\n\tconst isMobile = window.matchMedia(\"(max-width: 768px)\").matches;\n\tif (isMobile) timeout += modifier;\n\n\treturn Math.max(min, Math.min(timeout, max));\n}\n","import {Events, globalEventBus} from \"../event\";\n\ninterface DecoratedMethodMetadata<Events, K extends keyof Events> {\n    eventName: K;\n    priority: EventPriority;\n    methodName: string;\n}\n\nexport enum EventPriority {\n\n    LOWEST,\n    LOW,\n    DEFAULT = 2,\n    HIGH,\n    HIGHEST,\n\n}\n\nclass EventServiceClass {\n\n    private emitter = globalEventBus;\n    private instanceEventHandlers: Map<object, Array<{ eventName: keyof Events; handler: (payload: any) => void | Promise<void> }>> = new Map();\n\n    public register(instance: object): void {\n        const instanceIdentifier = instance.constructor.name;\n\n        let handlersForThisInstance = this.instanceEventHandlers.get(instance);\n        if (!handlersForThisInstance) {\n            handlersForThisInstance = [];\n            this.instanceEventHandlers.set(instance, handlersForThisInstance);\n        }\n\n        let constructor = instance.constructor;\n        const boundEventMethodKeys: Set<string> = new Set();\n\n        while (constructor && constructor !== Object.prototype) {\n            if (constructor.hasOwnProperty('_eventHandlers')) {\n                const classSpecificMetadata: DecoratedMethodMetadata<Events, keyof Events>[] =\n                    (constructor as any)._eventHandlers || [];\n\n                classSpecificMetadata.sort((x, y) => y.priority - x.priority).forEach(meta => {\n                    const eventMethodKey = `${String(meta.eventName)}:${meta.methodName}`;\n\n                    if (boundEventMethodKeys.has(eventMethodKey)) {\n                        return;\n                    }\n\n                    const methodToCall = (instance as any)[meta.methodName] as\n                        | ((payload: Events[typeof meta.eventName]) => void)\n                        | undefined;\n\n                    if (typeof methodToCall === 'function') {\n                        const handler = (payload: Events[typeof meta.eventName]) => {\n                            return methodToCall.apply(instance, [payload]);\n                        };\n                        this.emitter.on(meta.eventName, handler);\n                        handlersForThisInstance!.push({ eventName: meta.eventName, handler });\n                        boundEventMethodKeys.add(eventMethodKey);\n                    } else {\n                        console.warn(\n                            `[EventService] Method '${meta.methodName}' for event '${String(meta.eventName)}' ` +\n                            `(from class ${constructor.name}) not found on instance of ${instanceIdentifier}.`\n                        );\n                    }\n                });\n            }\n            constructor = Object.getPrototypeOf(constructor);\n        }\n    }\n\n    public unregister(instance: object): void {\n        const handlersToRemove = this.instanceEventHandlers.get(instance);\n        if (handlersToRemove) {\n            handlersToRemove.forEach(({ eventName, handler }) => {\n                this.emitter.off(eventName, handler);\n            });\n            this.instanceEventHandlers.delete(instance);\n        }\n    }\n\n    public async emitAsync<K extends keyof Events>(eventName: K, params?: Events[K]): Promise<void> {\n        if (!this.has(eventName)) {\n            console.warn(\"[emitAsync] event does not exist:\", eventName);\n        }\n        await this.emitter.emitAsync(eventName, params);\n        await this.emitter.emitAsync(\"shared:event-fired\", { id: eventName.toString(), data: params as any })\n    }\n\n    public emit<K extends keyof Events>(eventName: K, params?: Events[K]): void {\n        if (!this.has(eventName)) {\n            console.warn(\"[emit] event does not exist:\", eventName);\n        }\n        this.emitter.emit(eventName, params);\n        this.emitter.emit(\"shared:event-fired\", { id: eventName.toString(), data: params as any })\n    }\n\n    public on<K extends keyof Events>(eventName: K, handler: (params: Events[K]) => void): void {\n        this.emitter.on(eventName, handler);\n    }\n\n    public off<K extends keyof Events>(eventName: K, handler: (params: Events[K]) => void): void {\n        this.emitter.off(eventName, handler);\n    }\n\n    public has<K extends keyof Events>(eventName: K): boolean {\n        return this.emitter.has(eventName);\n    }\n\n}\n\nexport function EventHandler<K extends keyof Events>(eventName: K, priority: EventPriority = EventPriority.DEFAULT) {\n    return function (\n        target: any, // Prototype of the class for an instance method\n        propertyKey: string, // Name of the method being decorated\n        descriptor: PropertyDescriptor\n    ) {\n        const constructor = target.constructor;\n\n        if (!constructor.hasOwnProperty('_eventHandlers')) {\n            Object.defineProperty(constructor, '_eventHandlers', {\n                value: [],\n                writable: true, // Must be writable to allow multiple decorators in the same class\n                configurable: true, // Allows redefinition if necessary (e.g., for testing)\n                enumerable: false, // Keep it hidden from `for...in` loops on the constructor\n            });\n        } else if (!Array.isArray(constructor._eventHandlers)) {\n            console.error(`[EventHandler] '_eventHandlers' on ${constructor.name} is not an array. This might indicate a conflict. Overwriting.`);\n            constructor._eventHandlers = [];\n        }\n        (constructor._eventHandlers as DecoratedMethodMetadata<Events, K>[]).push({\n            eventName,\n            priority: priority,\n            methodName: propertyKey,\n        });\n    };\n}\nexport const EventService = new EventServiceClass();\n","export interface IDeferHelperClass extends Promise<any> {\n    resolve: Function\n    reject: Function\n}\n\nexport function DeferHelperClass(): IDeferHelperClass {\n    let resolveExternally: (value?: any) => void;\n    let rejectExternally: (value?: any) => void;\n\n    const promise: any = new Promise((resolve, reject) => {\n        resolveExternally = resolve;\n        rejectExternally  = reject;\n    });\n\n    promise.resolve = function (parameters: any) {\n        resolveExternally.apply(this, parameters);\n        return promise;\n    }\n\n    promise.reject = function (error: any) {\n        rejectExternally.apply(this, error);\n        return promise;\n    }\n\n    return promise;\n}\n","import {IRequestFetchOptions, IRequestService} from \"@dh-software/webui-types\";\nimport {DeferHelperClass, IDeferHelperClass} from \"../classes/defer.class\";\nimport {subscribe} from \"../event\";\n\nclass RequestServiceClass implements IRequestService {\n\n    private readonly _initialized: IDeferHelperClass\n\n    constructor() {\n        this._initialized = DeferHelperClass();\n        subscribe(\"shared:configuration-fetched\", () => {\n            this._initialized.resolve();\n        }, {once: true});\n    }\n\n    public get Initialized(): Promise<any> {\n        return this._initialized;\n    }\n\n    public async fetch(url_: string, options_?: IRequestFetchOptions, withoutWait_?: boolean): Promise<Response> {\n        if (!withoutWait_) {\n            await this._initialized;\n        }\n        options_ = options_ || {};\n\n        let requestObj: any = {\n            method: options_.method || 'GET',\n            //mode          : options_.cors ? 'no-cors' : 'same-origin',\n            cache: options_.cache ? 'default' : 'no-cache',\n            credentials: 'same-origin',\n            redirect: 'follow'\n        }\n        if (options_.contentType) requestObj.headers = new Headers({'Content-Type': options_.contentType});\n        if (options_.body) {\n            if (options_.body && typeof options_.body !== \"string\") options_.body = JSON.stringify(options_.body);\n            requestObj.body = options_.body;\n        }\n        return await fetch(new Request(url_, requestObj));\n    }\n\n    public async fetchJSON<T extends any = any>(url_: string, withoutWait_?: boolean): Promise<T> {\n        if (!withoutWait_) {\n            await this._initialized;\n        }\n        return this.fetch(url_, {\n            method: 'GET',\n            cache: false,\n            cors: true,\n            contentType: \"application/json\"\n        }, withoutWait_)\n            .then(async (data: Response) => {\n                if (data.ok) {\n                    return await data.json();\n                } else {\n                    return null;\n                }\n            })\n            .catch((e) => {\n                return null;\n            });\n    }\n\n    public buildGetURL(url_: string): string {\n        const url = new URL((!url_.startsWith(\"http\") ? window.location.origin + (url_.startsWith(\"/\") ? \"\" : \"/\") : \"\") + url_);\n        const windowUrl = new URL(window.location.href);\n        windowUrl.searchParams.forEach((value, key) => {\n            url.searchParams.set(key, value);\n        })\n        let sessionId = window.g_sessionId;\n        if (sessionId) {\n            url.searchParams.set(\"session\", sessionId);\n        }\n        return url.href;\n    }\n\n    public async get(url_: string): Promise<Response> {\n        await this._initialized;\n        return this.fetch(url_, {method: 'GET', cache: false, cors: true})\n    }\n\n    public async post(url_: string, body_?: string | any) {\n        await this._initialized;\n        return this.fetch(url_, {method: 'POST', cache: false, cors: true, body: body_})\n    }\n\n    public setQuery(url_: string): string {\n        return this.buildGetURL(url_.indexOf(\"?\") === -1 ? url_ + window.location.search : url_ + window.location.search.replace(\"?\", \"&\"));\n    }\n\n    public async buildRequestURL(url_: string): Promise<string> {\n        await this._initialized;\n        return this.setQuery(`/webui${(window.g_configuration.webui_theme_mode ? \"/t\" : \"\")}/${(window.g_configuration.webuiProject ? window.g_configuration.webuiProject + \"/\" : \"\")}${url_}`);\n    }\n\n    public async GetFurncloudShortUrl(url: string, cloudId: string) {\n        const response = await this.post(\"/furncloud-short-urls\", JSON.stringify({\n            url: url,\n            cloudId: cloudId\n        }));\n        const json = await response.json();\n        return json.url;\n    }\n}\n\nexport const RequestService = new RequestServiceClass();\n","import {RequestService} from \"./request.service\";\nimport {globalEventBus} from \"../event\";\nimport {DeferHelperClass, IDeferHelperClass} from \"../classes/defer.class\";\n\ndeclare global {\n    interface Window {\n        g_configuration: any;\n        g_sessionId: any;\n        g_dataInterface: any;\n        g_article: {\n            manu: string;\n            prog: string;\n            artno: string;\n            entityType: string;\n            level1: string;\n            level2: string;\n        };\n        selectedProgram: {[key: string]: any};\n        g_article_categories: string[];\n    }\n}\n\nclass ConfigurationServiceClass {\n\n    private _configurationDefer?: IDeferHelperClass;\n\n    public get Initialized(): Promise<boolean> {\n        if(!this._configurationDefer){\n            this._configurationDefer = DeferHelperClass();\n            this.fetchConfiguration();\n        }\n        return this._configurationDefer\n    }\n\n    public get Configuration(): Promise<any> {\n        return this.Initialized.then(x => {\n            return window.g_configuration;\n        })\n    }\n\n    private async fetchConfiguration() {\n        const data = await RequestService.fetchJSON(\"/webui/fetchConfiguration\" + window.location.search, true);\n        if (data.g_sessionId && data.g_configuration) {\n            window.g_sessionId = data.g_sessionId;\n            window.g_configuration = data.g_configuration;\n            window.g_article = data.g_article;\n            window.g_reCaptcha = data.g_reCaptcha;\n            window.g_article_categories = data.g_article_categories;\n        }\n        this._configurationDefer!.resolve([data]);\n        globalEventBus.emit(\"shared:configuration-fetched\", data)\n    }\n\n}\n\nexport const ConfigurationService = new ConfigurationServiceClass();\n","import {IExternalWindow} from \"@dh-software/webui-types\";\n\nimport {DeferHelperClass, IDeferHelperClass} from \"../classes/defer.class\";\nimport {globalEventBus} from \"../event\";\nimport {RequestService} from \"./request.service\";\n\nimport {\n    CDhMessageCommunicator,\n    CDhMessageService,\n    CDhPostMessageConnector,\n    DhMessage,\n    EventEmitter\n} from \"@dh-software/message-communicator-browser\"\n\nexport enum CommunicatorIds {\n\tFurnview = \"fv\",\n\tFurnplan = \"fp\",\n\tNode = \"node\",\n\tWebUi = \"wui\"\n}\nexport const communicator = new CDhMessageCommunicator(CommunicatorIds.WebUi);\n// communicator.setVerbosity(1|2|4);\n\ntype Listener = (...args: any[]) => any;\n\nclass WebViewerServiceClass extends CDhMessageService {\n\n    private readonly connector!: CDhPostMessageConnector;\n    private readonly events = new EventEmitter();\n\n    private readonly _isAppReady: IDeferHelperClass = DeferHelperClass();\n    private _furnviewWebViewer?: HTMLIFrameElement;\n    private _moveWebview?: IDeferHelperClass;\n\n    private _responseEventListeners: any = {};\n    private _eventListeners: any = {};\n\n    get IsAppReady(): IDeferHelperClass {\n        return this._isAppReady;\n    }\n\n    get IsWebViewMoved(): IDeferHelperClass | undefined {\n        return this._moveWebview;\n    }\n\n    get FurnviewWebViewer(): HTMLIFrameElement {\n        return this._furnviewWebViewer!;\n    }\n\n    constructor() {\n        super();\n        this.connector = new CDhPostMessageConnector(this._furnviewWebViewer?.contentWindow as Window, \"*\");\n        this.setCommunicator(communicator);\n    }\n\n    initialize(iframe: HTMLIFrameElement | undefined) {\n        this._furnviewWebViewer = iframe || document.querySelector(\"#furnviewWebViewer\") || undefined;\n        this.injectFrameDirectives(this._furnviewWebViewer);\n        globalEventBus.emit(\"shared:scene-init\", this._furnviewWebViewer);\n        this.on(\"appready\", async () => {\n            this._isAppReady.resolve();\n            globalEventBus.emit(\"shared:scene-ready\", this._furnviewWebViewer);\n            await this.verifyResponsibility();\n        })\n\n        // this.connector.setVerbosity(4);\n        this.connector.setCommunicator(communicator, [CommunicatorIds.Furnview, CommunicatorIds.Furnplan]);\n        // this.connector.init();\n\n        this.reloadWebViewer();\n    }\n\n    private injectFrameDirectives(iframe: HTMLIFrameElement | undefined): void {\n        if (!iframe) return;\n        const directives = [\n            \"xr-spatial-tracking\", \"camera\", \"gyroscope\", \"accelerometer\", \"magnetometer\", \"fullscreen\"\n        ];\n        const current = (iframe.getAttribute(\"allow\") || \"\")\n            .split(\";\").map(d => d.trim()).filter(Boolean);\n        const present = new Set(current.map(d => d.split(/\\s+/)[0]));\n        for (const directive of directives) {\n            const feature = directive.split(/\\s+/)[0];\n            if (!present.has(feature)) current.push(directive);\n        }\n        iframe.setAttribute(\"allow\", current.join(\"; \"));\n    }\n\n    private async verifyResponsibility() {\n        const external = await this.getExternalFunctionContainer();\n        if (external) {\n            external.EventFactoryService.verifyResponsibility();\n        } else {\n            await this.postMessage(\"furnview.verify.responsibility\", []);\n        }\n    }\n\n    public reloadWebViewer() {\n        // temporary fix for webviewer => webui transition because of HTTP 301 move permanent in short urls (https://furn.cloud/12345)\n        if (this._furnviewWebViewer) {\n            this._furnviewWebViewer.src = RequestService.buildGetURL(window.location.href.replace(\"webui\", \"webviewer\") + \"&is-webui-embedded=1\");\n            this.connector.resetTargetWindow(this._furnviewWebViewer.contentWindow as Window);\n        }\n    }\n\n    public on(event_: string, callback: Listener /* | Promise<any> */) {\n        this.events.on(event_, callback); // TODO: callback = Promise?!\n        // if (!this._eventListeners[event_]) {\n        //     this._eventListeners[event_] = [];\n        // }\n        // this._eventListeners[event_].push(callback);\n    }\n\n    public moveWebViewerTo(element: HTMLElement): HTMLIFrameElement | undefined {\n        if (this._moveWebview) {\n            this._moveWebview.reject();\n        }\n        this._moveWebview = DeferHelperClass();\n        if (!this._furnviewWebViewer) {\n            this._moveWebview.reject();\n            return undefined;\n        }\n        const load = () => {\n            this._moveWebview?.resolve();\n            this._furnviewWebViewer?.removeEventListener('load', load);\n        };\n        this._furnviewWebViewer?.addEventListener('load', load);\n        this.connector.resetTargetWindow(this._furnviewWebViewer.contentWindow as Window);\n        // this.connector._temp = this._furnviewWebViewer; // #DEBUG JM\n        return element.appendChild(this._furnviewWebViewer!);\n    }\n\n    public off(event_: string, callback_?: Listener /* | Promise<any> */) {\n        this.events.off(event_, <any>callback_);\n        // if (!this._eventListeners[event_]) return f-alse;\n        // if (callback_) {\n        //     const index = this._eventListeners[event_].indexOf(callback_);\n        //     if (index !== -1) {\n        //         this._eventListeners[event_].splice(index, 1);\n        //     }\n        // } else {\n        //     delete this._eventListeners[event_];\n        // }\n        // return true;\n    }\n\n    public dispatch(event_: string, parameters_?: any/* , __responsable?: IPostMessageResponsable */) {\n        this.events.emit(event_, ...parameters_);\n    }\n\n    // public async dispatch(event_: string, parameters_?: any, _responsible?: IPostMessageResponsible) {\n    //     if (!this._eventListeners[event_]) return false;\n    //     for (const ev of this._eventListeners[event_]) {\n    //         await ev.apply(this, parameters_);\n    //         if (_responsible) {\n    //             await this.postMessage(_responsible.command, [], true);\n    //         }\n    //     }\n    // }\n\n    public async postMessage(command_: string, parameters_?: any, withoutResponse_?: boolean) {\n        if (withoutResponse_) {\n            super.request(CommunicatorIds.Furnview, command_, parameters_);\n            return;\n        }\n        const params = await super.request<[any]>(CommunicatorIds.Furnview, command_, parameters_);\n        const [value] = params || [];\n        return value;\n        // parameters_ = parameters_ || [];\n        // const uuid = UtilityService.generateUUID();\n        // const uuidCommand = command_ + \"_\" + uuid;\n        // this._furnviewWebViewer?.contentWindow?.postMessage({\n        //     command: command_,\n        //     parameters: parameters_,\n        //     uuid: uuid\n        // }, window.location.origin);\n        // if (!withoutResponse_) {\n        //     this._responseEventListeners[uuidCommand] = DeferHelperClass();\n        //     return this._responseEventListeners[uuidCommand];\n        // }\n        // return Promise.resolve();\n    }\n\n    // private async onMessage(event_: MessageEvent) {\n    //     const eventJSON = event_.data;\n    //     if (eventJSON) {\n    //         const command: string = event_.data.command;\n    //         if (command && command.length > 0) {\n    //             const parameter: Array<any> = event_.data.parameters;\n    //             const _responsible: IPostMessageResponsible = event_.data.__responsable;\n    //             await this.execEvent(command, parameter, _responsible);\n    //         }\n    //     }\n    // }\n\n    // private async execEvent(command_: string, parameters: Array<any>, _responsible?: IPostMessageResponsible) {\n    //     if (this._eventListeners[command_]) {\n    //         await this.dispatch(command_, parameters, _responsible);\n    //     } else if (this._responseEventListeners[command_]) {\n    //         this._responseEventListeners[command_].resolve(parameters);\n    //         delete this._responseEventListeners[command_];\n    //     } else if (_responsible) {\n    //         await this.postMessage(_responsible.command, [], true);\n    //     } else {\n    //         // console.error(`execEvent: Event \"${command_}\" not found!`); //Aktivieren wenn Probleme mit Events auftreten\n    //     }\n    // }\n\n    public override processMessage(message: DhMessage): boolean {\n        const { command } = message.header;\n        // console.log(`WEBUI - >>> MESSAGE`, command);\n        if (command === \"appready\") {\n            this._isAppReady.resolve();\n            this.verifyResponsibility();\n            return true;\n        }\n        if (this.events.has(command)) {\n            this.events.emit(command, ...message.data);\n            return true;\n        }\n        return false;\n    }\n\n    public override processRequest(message: DhMessage): Promise<any> | undefined {\n        const { command } = message.header;\n        // console.log(`WEBUI - >>> MESSAGE`, command)\n        if (this.events.has(command)) {\n            this.events.emit(command, ...message.data);\n            return Promise.resolve();\n        }\n        return undefined;\n    }\n\n    public async getExternalFunctionContainer(): Promise<IExternalWindow> {\n        await this.IsAppReady;\n        return this.FurnviewWebViewer.contentWindow as IExternalWindow;\n    }\n\n}\n\ndeclare global {\n    interface Window {\n        WebViewerService: WebViewerServiceClass\n        CommunicationInterfaceService: WebViewerServiceClass\n    }\n}\n\nexport const WebViewerService = new WebViewerServiceClass();\nwindow.CommunicationInterfaceService = WebViewerService;\nwindow.WebViewerService = WebViewerService;\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n    byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n    return (byteToHex[arr[offset + 0]] +\n        byteToHex[arr[offset + 1]] +\n        byteToHex[arr[offset + 2]] +\n        byteToHex[arr[offset + 3]] +\n        '-' +\n        byteToHex[arr[offset + 4]] +\n        byteToHex[arr[offset + 5]] +\n        '-' +\n        byteToHex[arr[offset + 6]] +\n        byteToHex[arr[offset + 7]] +\n        '-' +\n        byteToHex[arr[offset + 8]] +\n        byteToHex[arr[offset + 9]] +\n        '-' +\n        byteToHex[arr[offset + 10]] +\n        byteToHex[arr[offset + 11]] +\n        byteToHex[arr[offset + 12]] +\n        byteToHex[arr[offset + 13]] +\n        byteToHex[arr[offset + 14]] +\n        byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n    const uuid = unsafeStringify(arr, offset);\n    if (!validate(uuid)) {\n        throw TypeError('Stringified UUID is invalid');\n    }\n    return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n    if (!getRandomValues) {\n        if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n            throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n        }\n        getRandomValues = crypto.getRandomValues.bind(crypto);\n    }\n    return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n    if (native.randomUUID && !buf && !options) {\n        return native.randomUUID();\n    }\n    options = options || {};\n    const rnds = options.random ?? options.rng?.() ?? rng();\n    if (rnds.length < 16) {\n        throw new Error('Random bytes length must be >= 16');\n    }\n    rnds[6] = (rnds[6] & 0x0f) | 0x40;\n    rnds[8] = (rnds[8] & 0x3f) | 0x80;\n    if (buf) {\n        offset = offset || 0;\n        if (offset < 0 || offset + 16 > buf.length) {\n            throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n        }\n        for (let i = 0; i < 16; ++i) {\n            buf[offset + i] = rnds[i];\n        }\n        return buf;\n    }\n    return unsafeStringify(rnds);\n}\nexport default v4;\n","import {v4 as uuid_v4} from \"uuid\";\nimport {IUtilityService} from \"@dh-software/webui-types\";\n\nclass UtilityServiceClass implements IUtilityService {\n\n    generateUUID() {\n        return uuid_v4();\n    }\n\n    public stripQueryParameters(url: string): string {\n        const urlParser = new URL(url);\n        urlParser.searchParams.delete(\"session\");\n        urlParser.searchParams.delete(\"cloudId\");\n        return urlParser.href;\n    }\n\n    public imagePathURLEncodedWithoutOrigin(path: string) {\n        const split = path.split(\"/\")\n        let url = \"\";\n        split.forEach((segment) => {\n            url += encodeURIComponent(segment) + \"/\";\n        })\n        return url.substr(0, url.length - 1);\n    }\n\n    public SaveToDisk(fileURL: string, fileName: string) {\n        // for non-IE\n        //@ts-ignore\n        if (!window.ActiveXObject) {\n            if (!!window.fetch) {\n                fetch(fileURL)\n                    .then(response => response.blob())\n                    .then(blob => {\n                        const link = document.createElement(\"a\");\n                        link.href = URL.createObjectURL(blob);\n                        link.download = fileName;\n                        link.click();\n                    })\n                    .catch(console.error);\n            } else {\n                var save: HTMLAnchorElement = document.createElement('a');\n                save.href = fileURL;\n                save.download = fileName || 'unknown';\n                save.style.display = 'none';\n                save.style.opacity = '0';\n                save.style.color = 'transparent';\n\n                (document.body || document.documentElement).appendChild(save);\n\n                if (typeof save.click === 'function') {\n                    save.click();\n                } else {\n                    save.target = '_blank';\n                    var event = document.createEvent('Event');\n                    event.initEvent('click', true, true);\n                    save.dispatchEvent(event);\n                }\n\n                (window.URL || window.webkitURL).revokeObjectURL(save.href);\n            }\n        }\n\n            // for IE\n        //@ts-ignore\n        else if (!!window.ActiveXObject && document.execCommand) {\n            var _window = window.open(fileURL, '_blank');\n            _window?.document.close();\n            _window?.document.execCommand('SaveAs', true, fileName || fileURL)\n            _window?.close();\n        }\n    }\n\n    private fallbackCopyTextToClipboard(text: string, resolve: () => void, reject: (err: Error) => void) {\n        let textArea = document.createElement(\"textarea\");\n        textArea.value = text;\n\n        // Avoid scrolling to bottom\n        textArea.style.top = \"0\";\n        textArea.style.left = \"0\";\n        textArea.style.position = \"fixed\";\n\n        document.body.appendChild(textArea);\n        textArea.focus();\n        textArea.select();\n\n        try {\n            let successful = document.execCommand('copy');\n            document.body.removeChild(textArea);\n            if (successful) {\n                return resolve();\n            } else {\n                return reject(new Error(\"Can't copy text...\"));\n            }\n        } catch (err) {\n            document.body.removeChild(textArea);\n            return reject(err as Error);\n        }\n    }\n\n    public async copyTextToClipboard(text: string) {\n        return new Promise(((resolve, reject) => {\n            if (!navigator.clipboard) {\n                this.fallbackCopyTextToClipboard(text, () => resolve(\"\"), reject);\n                return;\n            }\n            return navigator.clipboard.writeText(text).then(function () {\n                resolve(text);\n            }, function (err) {\n                reject(err);\n            });\n        }));\n    }\n\n    public isMobileDevice() {\n        if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)\n            || (navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1)) {\n            return true;\n        }\n        return false;\n    }\n\n    public ncrToUTF8(ncr: string): string {\n        if (ncr && ncr.length > 0) {\n            return ncr.replace(/&#([0-9]+);/g, function (b) {\n                return String.fromCodePoint(parseInt(b.slice(2, -1)));\n            });\n        }\n        return ncr;\n    }\n\n}\n\nexport const UtilityService = new UtilityServiceClass();\n","import {\n    AdditionalPositionsResult,\n    AddNeutralAdditionalPositionParams,\n    DeleteAdditionalPositonsParams,\n    IARExportData,\n    IArticleData,\n    IArtPropData,\n    ICameraFitParameters,\n    ICreatePlacerGroupRequest,\n    ICreateStdCatalogFilterCtxRequest,\n    ICreateStdCatalogFilterCtxResponse,\n    IDimensionInfo,\n    IDisposeCatalogFilterCtxRequest,\n    IDisposeCatalogFilterCtxResponse,\n    IDisposeContextParameters,\n    IExternalPlacerParameter,\n    IExternalWindow,\n    IFurnrayImage,\n    IGetArtPropParameters,\n    IGetCurrentProgPropertiesParams,\n    IGetErpFiles,\n    IGetProgContextParameters,\n    IGetProgPropertiesParams,\n    IGetProgPropertyFinishParams,\n    IGetProgPropertyGroupInfoParameters,\n    IGetPropTransferParams,\n    IGetTextParams,\n    IGetWidgetPositionParams,\n    IImageResponse,\n    IInitProgContextParameters,\n    ILoadArticleParams,\n    IManufacturerReferenceData,\n    IMaterialCatalog,\n    IModifyProperty,\n    IModifyPropertyOptions,\n    IPanCameraParameters,\n    IPlacerReplaceData,\n    IPlaceWallElementNextCenterParams,\n    IPlannedArticle,\n    IPossiblePlacerGroupResponse,\n    IPriceData,\n    IProgramLevelTree,\n    IPropTransferGroup,\n    IPropTransferItem,\n    IPropTransferManufacturer,\n    IPropTransferProgram,\n    IRawCatConfig,\n    IRunStdCatalogFilterCtxRequest,\n    IRunStdCatalogFilterCtxResponse,\n    ISceneLO,\n    ISetPropTransferParameters,\n    IStartKataPageFilterOptions,\n    IStoreTree,\n    ISwitchTransferLevelOptions,\n    IWidgetPosition,\n    IZoomParameters,\n    LanguageInfo,\n    OverrideMode,\n    Vector3Like\n} from \"@dh-software/webui-types\";\nimport {IChainElement, ICommunicationMessageService} from \"@dh-software/webui-communication\";\nimport {WebViewerService} from \"./web-viewer.service\";\nimport {subscribeOnce} from \"../event\";\nimport {UtilityService} from \"./utility.service\";\n\ndeclare global {\n    interface Window {\n        g_node_url_prefix: string;\n        CommunicationMessageService: ICommunicationMessageService\n    }\n}\n\nclass CommunicationMessageServiceClass implements ICommunicationMessageService {\n\n    constructor() {\n        subscribeOnce(\"shared:configuration-fetched\", async () => {\n            window.g_node_url_prefix = await this.getNodePrefix();\n        })\n    }\n\n    private async send(command_: string, ...args: Array<unknown>) {\n        await WebViewerService.IsAppReady;\n        return WebViewerService.postMessage(command_, args);\n    }\n\n    //region General Actions\n\n    dhTodo(data: any): Promise<any> {\n        return this.send(\"external.dhtodo\", data);\n    }\n\n    doActionSimpleCL(index: number): Promise<any> {\n        return this.send(\"external.doactionsimplecl\", index);\n    }\n\n    executeManufacturerFunction(manufacturer: string, functionName: string, functionId: number, param1?: string): Promise<any> {\n        return this.send(\"external.executeManufacturerFunction\", manufacturer, functionName, functionId, param1);\n    }\n\n    showAdditionalPositionsWindow(): Promise<void> {\n        return this.send(\"external.additionalPositionsWindow.show\");\n    }\n\n    hideAdditionalPositionsWindow(): Promise<void> {\n        return this.send(\"external.additionalPositionsWindow.hide\");\n    }\n\n    showDeletables(mode: number): Promise<any> {\n        return this.send(\"external.showDeletables\", mode);\n    }\n\n    getWidgetPosition(instanceIdents: number[], position?: IGetWidgetPositionParams, rect?: DOMRect): Promise<Array<IWidgetPosition>> {\n        return this.send(\"external.getWidgetPosition\", instanceIdents, position, rect);\n    }\n\n    getPricePreview(manufacturer: string, program: string, properties: Array<any>): Promise<any> {\n        return this.send('external.getPricePreview', manufacturer, program, properties);\n    }\n\n    getPriceList(manufacturer: string, program: string): Promise<any> {\n        return this.send('external.getPriceList', manufacturer, program);\n    }\n\n    startIwoFurnService(): Promise<any> {\n        return this.send(\"external.iwoFurnService\");\n    }\n\n    getSceneFullyLoaded(): Promise<any> {\n        return this.send(\"external.sceneFullyLoaded\");\n    }\n\n    //endregion General Actions\n\n    //region Requests\n\n    getNodePrefix(): Promise<string> {\n        return this.send(\"external.getNodeURL\");\n    }\n\n    getMediaUrl(manufacturer: string, program: string, type: string, name: string, hasExtension: boolean, returnPlaceholder?: boolean): Promise<string> {\n        return this.send(\"external.getMediaUrl\", manufacturer, program, type, name, hasExtension, returnPlaceholder);\n    }\n\n    chainRequest(chain: Array<IChainElement>): Promise<any> {\n        return this.send(\"external.chainRequest\", chain);\n    }\n\n    // endregion\n\n    //region Scene\n\n    getManufacturerReferenceData(manufacturer: string, program: string): Promise<IManufacturerReferenceData> {\n        return this.send(\"external.getManufacturerReferenceData\", manufacturer, program);\n    }\n\n    getAvailableLanguages(useCache?: boolean): Promise<Array<LanguageInfo>> {\n        return this.send(\"external.getAvailableLanguages\", useCache);\n    }\n\n    setLanguage(langCode: string): Promise<void> {\n        return this.send(\"external.setLanguage\", langCode);\n    }\n\n    getElementCountByCategories(manufacturer: string, program: string, categories: string[]): Promise<any> {\n        return this.send(\"external.getElementCountByCategories\", {\n            manufacturer,\n            program,\n            categories\n        });\n    }\n\n    getElementCount(): Promise<any> {\n        return this.send(\"external.getElementCount\");\n    }\n\n    calculateScreenPosition(position: Vector3Like): Promise<any> {\n        return this.send(\"external.calculateScreenPosition\", position);\n    }\n\n    getAnyPlannedPOFromScene(): Promise<any> {\n        return this.send(\"external.getAnyPlannedPOFromScene\");\n    }\n\n    SearchKeysFromLOs(data: { keys: Array<number>; }): Promise<any> {\n        return this.send(\"external.SearchKeysFromLOs\", data);\n    }\n\n    getLOsFromScene(instanceIdents: number[]): Promise<ISceneLO[]> {\n        return this.send(\"external.getLOsFromScene\", instanceIdents);\n    }\n\n    getPlannedArticles(instanceIdents?: number[]): Promise<IPlannedArticle[]> {\n        return this.send(\"external.getPlannedArticles\", instanceIdents);\n    }\n\n    /**\n     * @deprecated Use {@link setLoDimensionExt} instead.\n     */\n    setLODimension(width: number, height: number, depth: number, guids: string[], fixation?: number, ignoreLoConnection?: boolean, moveOther?: boolean): Promise<any> {\n        return this.send(\"external.setLODimension\", width, height, depth, guids, fixation, ignoreLoConnection, moveOther);\n    }\n\n    setLoDimensionExt(width: number, height: number, depth: number, guids: string[], fixation_x: number = 0, fixation_y: number = 1, move_other: boolean = true, ignore_lo_connection: boolean = false): Promise<any> {\n        return this.send(\"external.setLoDimensionExt\", width, height, depth, guids, fixation_x, fixation_y, move_other, ignore_lo_connection);\n    }\n\n    loadPlanningFile(planningID: string): Promise<any> {\n        return this.send(\"external.loadPlanning\", planningID);\n    }\n\n    loadPlanningUrl(url: string): Promise<any> {\n        return this.send(\"external.loadPlanningUrl\", url);\n    }\n\n    setManuProg(manufacturer: string, calcManufacturer: string, program: string): Promise<any> {\n        return this.send(\"external.setManuProg\", manufacturer, calcManufacturer, program);\n    }\n\n    getProgramsInScene(): Promise<any> {\n        return this.send(\"external.getProgramsInScene\");\n    }\n\n    clearScene(): Promise<any> {\n        return this.send(\"external.clearScene\");\n    }\n\n    resetSceneAction(): Promise<any> {\n        return this.send(\"external.resetSceneAction\");\n    }\n\n    newPlanning(): Promise<any> {\n        return this.send(\"external.newPlanning\");\n    }\n\n    buildWall(data: object): Promise<any> {\n        return this.send('external.BuildWallFromConfiguration', data);\n    }\n\n    removeWall(): Promise<any> {\n        return this.send('external.RemoveWall');\n    }\n\n    addWallChildElement(parameters: any): Promise<any> {\n        return this.send('external.wall.addChildElement', parameters);\n    }\n\n    getFurnplanWallsDoorsWindowsAndUtilities(utilities: boolean, onlyPrimaryWalls: boolean): Promise<any> {\n        return this.send('external.wall.getFurnplanWallsDoorsWindowsAndUtilities', utilities, onlyPrimaryWalls);\n    }\n\n    getWallElements(): Promise<any> {\n        return this.send('external.getWallElements');\n    }\n\n    placeWallElementNextCenter(params: IPlaceWallElementNextCenterParams): Promise<void> {\n        return this.send(\"external.placeWallElementNextCenter\", params);\n    }\n\n    setRoomConfigurationState(state: boolean): Promise<any> {\n        return this.send(\"external.setRoomConfigurationState\", state);\n    }\n\n    getPlanningObjectByGuid(guid: string[]): Promise<any> {\n        return this.send('external.getPlanningObjectByGuid', guid);\n    }\n\n    selectObjectInScene(ii: number): Promise<void> {\n        return this.send(\"external.selectObjectInScene\", ii);\n    }\n\n    deselectObjectInScene(ii: number): Promise<void> {\n        return this.send(\"external.deselectObjectInScene\", ii);\n    }\n\n    addHighlightBox(ii: number): Promise<void> {\n        return this.send(\"external.addHighlightBox\", ii);\n    }\n\n    removeMarker(ii: number): Promise<void> {\n        return this.send(\"external.removeMarker\", ii);\n    }\n\n    executeCustomEvent(command: string, ii: number, parameters: any): Promise<void> {\n        return this.send(\"external.executeCustomEvent\", command, ii, parameters);\n    }\n\n    saveUndo(parameters: { name: string }): Promise<any> {\n        return this.send(\"external.dhp.saveUndo\", parameters);\n    }\n\n    getHRThemes() {\n        return this.send(\"external.getHRThemes\");\n    }\n\n    setHRThemes(hash: string) {\n        return this.send(\"external.setHRThemes\", hash);\n    }\n\n    setDisable3DText(state: boolean): Promise<void> {\n        return this.send(\"external.setDisable3DText\", state);\n    }\n\n    //endregion\n\n    //region Toolbar\n\n    frontState(mode?: boolean): Promise<any> {\n        return this.send(\"external.setFrontState\", mode);\n    }\n\n    toggleMeasurement(): Promise<any> {\n        return this.send(\"external.toggleMeasurement\");\n    }\n\n    setAnimationMode(mode: boolean, force: boolean): Promise<any> {\n        return this.send(\"external.setAnimationMode\", mode, force);\n    }\n\n    getAnimationStatus(): Promise<{ running: boolean; mode: boolean; }> {\n        return this.send(\"external.getAnimationStatus\");\n    }\n\n    triggerAnimation(): Promise<any> {\n        return this.send(\"external.triggerAnimation\");\n    }\n\n    cameraZoom(direction: number): Promise<any> {\n        return this.send(\"external.cameraZoom\", direction);\n    }\n\n    cameraControlSetForceDeactivate(value: boolean): Promise<any> {\n        return this.send(\"external.CameraControlSetForceDeactive\", value);\n    }\n\n    resetCameraView(animate?: boolean): Promise<any> {\n        return this.send(\"external.resetCameraView\", animate);\n    }\n\n    setCameraZoom(parameters: IZoomParameters): Promise<any> {\n        return this.send(\"external.camera.setZoom\", parameters);\n    }\n\n    fitCamera(parameters: ICameraFitParameters): Promise<any> {\n        return this.send(\"external.camera.fitCamera\", parameters);\n    }\n\n    panCamera(parameters: IPanCameraParameters): Promise<any> {\n        return this.send(\"external.camera.pan\", parameters);\n    }\n\n    setAccessories(mode: boolean): Promise<any> {\n        return this.send(\"external.setAccessories\", mode);\n    }\n\n    undo(parameters?: { name?: string; }): Promise<any> {\n        return this.send(\"external.undoDHP\", parameters);\n    }\n\n    redo(parameters?: { name?: string; }): Promise<any> {\n        return this.send(\"external.redoDHP\", parameters);\n    }\n\n    //endregion\n\n    //region Catalog\n\n    getArticleByCategories(manufacturerOrHash: string, programOrHash: string, categories: Array<string>, limit?: number, offset?: number, width?: number, height?: number, depth?: number): Promise<IArticleData[]> {\n        return this.send(\"external.getArticleByCategories\", manufacturerOrHash, programOrHash, categories, limit, offset, width, height, depth)\n            .then((articleData) => {\n                return articleData ? articleData[0] : [];\n            });\n    }\n\n    getCategoriesMerged(manufacturer: string, prefix: string, startPrio: number, endPrio: number, program: string): Promise<{ category: Array<Array<string>> }> {\n        // NOTE: response is the {category:[...]} object directly (not array-wrapped) — do NOT take r[0]\n        return this.send(\"external.getCategoriesMerged\", manufacturer, prefix, startPrio, endPrio, program)\n            .then((r) => r ?? { category: [] });\n    }\n\n    getEquipmentByCategories(manufacturerOrHash: string, programOrHash: string, categories: Array<string>, limit?: number, offset?: number): Promise<IArticleData | undefined> {\n        return this.send(\"external.getEquipmentByCategories\", manufacturerOrHash, programOrHash, categories, limit, offset)\n            .then((articleData) => {\n                return articleData ? articleData[0] : undefined;\n            });\n    }\n\n    getPossibleArticleDimensions(manufacturerOrHash: string, programOrHash: string, categories: Array<string>): Promise<IDimensionInfo> {\n        return this.send(\"external.getPossibleArticleDimensions\", manufacturerOrHash, programOrHash, categories)\n            .then((possibleDimensions) => {\n                return possibleDimensions ? possibleDimensions[0] : {\n                    dimensions: {\n                        width: [],\n                        height: [],\n                        depth: []\n                    }\n                };\n            });\n    }\n\n    getText(parameters?: IGetTextParams): Promise<any> {\n        return this.send(\"external.getText\", parameters);\n    }\n\n    getKataTreeJson(parameters?: { manufacturer: string; program: string; mergeCategories?: boolean; }): Promise<any> {\n        return this.send(\"external.generic.katatree.get\", parameters);\n    }\n\n    getRangeInDimensions(parameters?: { manufacturer: string }): Promise<any> {\n        return this.send(\"external.GetRangeInDimensions\", parameters);\n    }\n\n    getKataPage(pageId: string, level?: string, manufacturer?: string, program?: string, filterOptions?: IStartKataPageFilterOptions): Promise<any> {\n        return this.send(\"external.StartKataPage\", pageId, level, manufacturer, program, filterOptions);\n    }\n\n    getKataPageHostListByCrossArticle(clientProgram: string, clientManufacturer: string, clientArticle: string, filterVzElements: boolean = true): Promise<any> {\n        return this.send(\"external.GetKataPageHostListByCrossArticle\", clientProgram, clientManufacturer, clientArticle, filterVzElements);\n    }\n\n    openFurnplanKataPage(manufacturer: string, level1: string, level2: string): Promise<any> {\n        return this.send(\"external.openFurnplanKataPage\", manufacturer, level1, level2);\n    }\n\n    getCatalogEnvironment(manufacturer: string, level1?: string, level2?: string): Promise<any> {\n        return this.send(\"external.getCatalogEnvironment\", manufacturer, level1, level2);\n    }\n\n    getCatConfig(manufacturer: string, program: string): Promise<IRawCatConfig> {\n        return this.send(\"external.getCatConfig\", manufacturer, program);\n    }\n\n    getProgramLevelTree(manufacturer: string, checkAccessibility?: boolean): Promise<IProgramLevelTree> {\n        return this.send(\"external.getProgramLevelTree\", manufacturer, checkAccessibility);\n    }\n\n    getGenericArticleCount(parameters: { group: string; }): Promise<any> {\n        return this.send(\"external.generic.articleCount\", parameters);\n    }\n\n    getArticlesByPropTransferId(manufacturer: string, program: string, propTransferId: string): Promise<any> {\n        const parameters = {\n            manufacturer: manufacturer,\n            program: program,\n            propTransferId: propTransferId\n        }\n        return this.send(\"external.getArticlesByPropTransferId\", parameters);\n    }\n\n    getKataPageModulesData(manu: string): Promise<any> {\n        return this.send(\"external.getKataPageModulesData\", manu);\n    }\n\n    getProgList(manufacturer: string, withAccessList: boolean): Promise<any> {\n        return this.send(\"external.getProgList\", manufacturer, withAccessList);\n    }\n\n    getDistinctArticleCategoryList(manufacturer: string, program: string, programGroup: string): Promise<any> {\n        return this.send(\"external.getDistinctArticleCategoryList\", {\n            manufacturer: manufacturer,\n            program: program,\n            programGroup: programGroup\n        });\n    }\n\n    getProgImages(manufacturer: string, programs: Array<string>, kataIds: Array<string>): Promise<any> {\n        return this.send(\"external.getProgImages\", manufacturer, programs, kataIds);\n    }\n\n    getPrintLogoPath(manufacturer: string, program: string, kataManu: string): Promise<IImageResponse> {\n        return this.send(\"external.getPrintLogoPath\", manufacturer, program, kataManu);\n    }\n\n    loadLevel1KataInfo(manufacturer: string, program: string, levels: string[], checkActive?: boolean): Promise<any> {\n        return this.send(\"external.loadLevel1KataInfo\", manufacturer, program, levels, checkActive);\n    }\n\n    getCategoriesByInstanceIdents(manufacturerOrHash: string, programOrHash: string, instanceIdents: Array<number>): Promise<{\n        [article: string]: Array<string>;\n    }> {\n        return this.send(\"external.getCategoriesByInstanceIdents\", manufacturerOrHash, programOrHash, instanceIdents);\n    }\n\n    loadArticle(manufacturer: string, program: string, articleNo: string): Promise<any> {\n        return this.send(\"external.loadArticle\", manufacturer, program, articleNo);\n    }\n\n    loadVZPlanning(manufacturer: string, program: string, article: string): Promise<any> {\n        return this.send(\"external.loadVZPlanning\", manufacturer, program, article);\n    }\n\n    loadArticleWithParams(manufacturer: string, program: string, params: ILoadArticleParams, crossArticleClients?: { article: string, manu: string, prog: string }[]): Promise<any> {\n        return this.send(\"external.loadArticleWithParams\", manufacturer, program, params, crossArticleClients);\n    }\n\n    getArtPropById(parameters: IGetArtPropParameters): Promise<IArtPropData[]> {\n        return this.send(\"external.getArtPropById\", parameters);\n    }\n\n    getArtPropByArticle(parameters: IGetArtPropParameters): Promise<IArtPropData[]> {\n        return this.send(\"external.getArtPropByArt\", parameters);\n    }\n\n    createStdCatalogFilterCtx(parameters: ICreateStdCatalogFilterCtxRequest): Promise<ICreateStdCatalogFilterCtxResponse> {\n        return this.send(\"external.createStdCatalogFilterCtx\", parameters);\n    }\n    disposeCatalogFilterCtx(parameters: IDisposeCatalogFilterCtxRequest): Promise<IDisposeCatalogFilterCtxResponse> {\n        return this.send(\"external.disposeCatalogFilterCtx\", parameters);\n    }\n    runCatalogFilterCtx(parameters: IRunStdCatalogFilterCtxRequest): Promise<IRunStdCatalogFilterCtxResponse> {\n        return this.send(\"external.runCatalogFilterCtx\", parameters);\n    }\n\n    getMaterialCatalog(): Promise<IMaterialCatalog> {\n        return this.send(\"external.getMaterialCatalog\");\n    }\n\n    // endregion\n\n    // region Properties\n\n    modifyProperty(requestJson: IModifyProperty | string | Array<IModifyProperty>, options?: IModifyPropertyOptions): Promise<any> {\n        return this.send(\"external.modifyProperty\", requestJson, options);\n    }\n\n    switchTransferLevel(parameters: ISwitchTransferLevelOptions): Promise<any> {\n        return this.send(\"external.switchTransferLevel\", parameters);\n    }\n\n    getRelevantPropertyKeys(returnAll?: boolean, instanceIdents?: Array<number>): Promise<any> {\n        return this.send(\"external.getRelevantPropertyKeys\", returnAll, instanceIdents);\n    }\n\n    getRelevantProperties(manufacturer?: string, program?: string, context?: string | string[]): Promise<any> {\n        return this.send(\"external.getRelevantProperties\", manufacturer, program, context);\n    }\n\n    getColorPickerInfo(parameters?: { manufacturer?: string; type: string; }): Promise<any> {\n        return this.send(\"external.colorPicker.get\", parameters);\n    }\n\n    getCurrentProgProperties(parameters: IGetCurrentProgPropertiesParams): Promise<any> {\n        return this.send(\"external.progProperties.getCurrentValues\", parameters);\n    }\n\n    async getCurrentProgPropertiesFromPlannedArticles(): Promise<any[]> {\n        const obj = await this.getPlannedArticles()\n        const manuProgList = (obj.map((lo) => {\n                return {manu: lo.manu, prog: lo.prog, manuName: lo.manuName, progName: lo.progName}\n            })\n        );\n        let uniqueManuProg = manuProgList.filter((element, index) => {\n            return manuProgList.findIndex((e) => e.prog == element.prog) === index;\n        });\n        return await Promise.all(uniqueManuProg.map(async (manuProg) => {\n            const progProperty = await this.getCurrentProgProperties({\n                manufacturer: manuProg.manu,\n                program: manuProg.prog,\n                useRelevant: true,\n                fullHierarchy: false,\n                ignoreAccess: false\n            });\n            const manuProgKey = `${manuProg.manu.toLowerCase()}_${manuProg.prog.toUpperCase()}`;\n            if (progProperty[manuProgKey]) {\n                const extProgProperty = {\n                    manu: manuProg.manu,\n                    prog: manuProg.prog,\n                    manuName: manuProg.manuName,\n                    progName: manuProg.progName,\n                    properties: Array<unknown>\n                };\n                for (let propertyI = progProperty[manuProgKey].length - 1; propertyI >= 0; propertyI--) {\n                    if (progProperty[manuProgKey][propertyI].keys.length === 0) {\n                        progProperty[manuProgKey].splice(propertyI, 1);\n                    }\n                }\n                extProgProperty.properties = progProperty[manuProgKey].slice();\n                progProperty[manuProgKey] = extProgProperty;\n            }\n            return progProperty;\n        }));\n    }\n\n    getProgProperties(parameters: IGetProgPropertiesParams): Promise<any> {\n        return this.send(\"external.progProperties.get\", parameters);\n    }\n\n    getMerkmalGroupInformation(parameters: IGetProgPropertyGroupInfoParameters): Promise<any> {\n        return this.send(\"external.progProperties.getGroupInfo\", parameters);\n    }\n\n    getFinishParams(parameters: IGetProgPropertyFinishParams): Promise<any> {\n        return this.send(\"external.progProperties.getFinishParams\", parameters);\n    }\n\n    showToolTipData(parameters: { type: string; data: string; manufacturer: string; }): Promise<any> {\n        return this.send(\"external.progProperties.showToolTipData\", parameters);\n    }\n\n    getPropTransfer(parameters: IGetPropTransferParams): Promise<IPropTransferManufacturer | IPropTransferProgram | IPropTransferGroup | IPropTransferItem[]> {\n        return this.send(\"external.propTransfer.get\", parameters);\n    }\n\n    setPropTransfer(parameters: ISetPropTransferParameters): Promise<unknown> {\n        return this.send(\"external.propTransfer.set\", parameters);\n    }\n\n    deletePropTransfer(propTransferIDOrParameters: string | ISetPropTransferParameters, manufacturer?: string, program?: string): Promise<any> {\n        if (typeof propTransferIDOrParameters === \"string\" && manufacturer && program) {\n            return this.send(\"external.deletePropTransfer\", propTransferIDOrParameters, manufacturer, program);\n        } else if (typeof propTransferIDOrParameters === \"object\" && !manufacturer && !program) {\n            return this.send(\"external.propTransfer.delete\", propTransferIDOrParameters);\n        }\n        return Promise.resolve();\n    }\n\n    startPropTransfer(propTransferID: string): Promise<any> {\n        return this.send(\"external.startPropTransfer\", propTransferID);\n    }\n\n    assignPropertySpecific(index: string, pickCode: string, values: Array<any>): Promise<any> {\n        return this.send(\"external.assignPropertySpecific\", index, pickCode, values);\n    }\n\n    getDeletablePropTransfer(): Promise<unknown> {\n        return this.send(\"external.propTransfer.getDeletable\");\n    }\n\n    initializePropertyContext(parameters: IInitProgContextParameters): Promise<any> {\n        return this.send(\"external.progContext.initialize\", parameters);\n    }\n\n    getPropertyContext(parameters: IGetProgContextParameters): Promise<any> {\n        return this.send(\"external.progContext.get\", parameters);\n    }\n\n    disposePropertyContext(parameters: IDisposeContextParameters): Promise<any> {\n        return this.send(\"external.progContext.dispose\", parameters);\n    }\n\n    preloadProgram(manufacturer: string, program: string): Promise<any> {\n        return this.send(\"external.preloadProgram\", manufacturer, program);\n    }\n\n    preloadActiveProgram(): Promise<any> {\n        return this.send(\"external.preloadActiveProgram\", []);\n    }\n\n    getActiveStringValuesInScene(index: number, instanceIdents?: Array<number>): Promise<any> {\n        return this.send(\"external.getActiveStringValuesInScene\", index, instanceIdents);\n    }\n\n    changeGenModule(module: string): Promise<any> {\n        return this.send('external.changeGenModule', module);\n    }\n\n    changeToInternalProgProperty(): Promise<any> {\n        return this.changeGenModule(\"__fv_internal_progproperty\");\n    }\n\n    useInternalProgProperties(): Promise<any> {\n        return this.send('external.useInternalProgProperties');\n    }\n\n    getDisplayNameManuProg(manufacturer: string, program: string): Promise<any> {\n        return this.send('external.getDisplayNameManuProg', manufacturer, program);\n    }\n\n    getManufacturerLogoNameFromPriceReference(manufacturer: string, program: string): Promise<any> {\n        return this.send('external.getManufacturerLogoNameFromPriceReference', manufacturer, program);\n    }\n\n    getUserinterfaceManuProg(): Promise<any> {\n        return this.send('external.getUserinterfaceManuProg');\n    }\n\n    resetCurrentUserinterfaceManuProg(): Promise<void> {\n        return this.send('external.resetCurrentUserinterfaceManuProg');\n    }\n\n    //endregion\n\n    //region Selection\n\n    setSelectable(type?: string, manufacturer?: string, program?: string): Promise<any> {\n        return this.send(\"external.setSelectables\", type, manufacturer, program);\n    }\n\n    setSelectableMultiTypes(types?: string[], manufacturer?: string, program?: string): Promise<any> {\n        return this.send(\"external.setSelectablesMultiTypes\", types, manufacturer, program);\n    }\n\n    setSelectableMultiProg(type?: string, manufacturer?: string, program?: string[]): Promise<any> {\n        return this.send(\"external.setSelectablesMultiProg\", type, manufacturer, program);\n    }\n\n    setSelectionActionGroup(actionGroup?: string): Promise<any> {\n        return this.send(\"external.setSelectionActionGroup\", actionGroup);\n    }\n\n    clearSelectionHandler(): Promise<void> {\n        return this.send(\"external.clearSelectionHandler\");\n    }\n\n    // endregion\n\n    //region Sharing\n\n    getShortUrl(url: string, cloudId: string): Promise<string | undefined> {\n        const strippedURL = new URL(url).origin\n        return this.send(\"external.getShortUrl\", UtilityService.stripQueryParameters(url), cloudId)\n            .then((articleData) => {\n                return articleData ? articleData[0] : undefined;\n            });\n    }\n\n    printPDF(useLastCloudID?: boolean): Promise<any> {\n        return this.send(\"external.printPDF\", useLastCloudID);\n    }\n\n    createCloudID(): Promise<string> {\n        return this.send(\"external.createCloudID\");\n    }\n\n    loadInitialStateDHP(): Promise<any> {\n        return this.send(\"external.loadInitialStateDHP\");\n    }\n\n    loadDhpByCloudID(id: string): Promise<any> {\n        return this.send('external.loadDhpByCloudID', id);\n    }\n\n    generateExport(type: string): Promise<any> {\n        return this.send(\"external.generateExport\", type);\n    }\n\n    downloadPDF(custom?: boolean): Promise<any> {\n        return this.send(\"external.downloadPDF\", custom);\n    }\n\n    openCloudId(cloudId: string): Promise<any> {\n        return this.send(\"external.openCloudId\", cloudId);\n    }\n\n    downloadScreenshot(logo?: { image: string; offset: { x: number; y: number; }; }): Promise<any> {\n        return this.send(\"external.downloadScreenshot\", logo);\n    }\n\n    printCustomPDF(): Promise<any> {\n        return this.send(\"external.printCustomPDF\");\n    }\n\n    sendMail(receiver: string, pdfVariant?: \"default\" | \"custom\", values?: Array<{\n        key: string;\n        value: string;\n    }>, pdfInfo?: any): Promise<any> {\n        return this.send(\"external.sendMail\", receiver, pdfVariant, values, pdfInfo);\n    }\n\n    shareUrl(mail: string, message: string, cloudid: string): Promise<any> {\n        return this.send(\"external.shareUrl\", mail, message, cloudid, window.location.href);\n    }\n\n    showShareComponent(): Promise<any> {\n        return this.send(\"external.showShareComponent\");\n    }\n\n    addToCart(externalParameters?: Array<{ parameter: string; value: string; }>): Promise<any> {\n        return this.send(\"external.addToCart\", externalParameters);\n    }\n\n    getFurnrayImage(email?: string, parameters?: {\n        ambientLight?: string;\n        skyColor?: { r: string; g: string; b: string; };\n    }): Promise<IFurnrayImage> {\n        return this.send(\"external.renderFurnrayImage\", email, parameters);\n    }\n\n\n    public async takeSnap(width = 1920, height = 1080, mimeType = \"image/jpeg\", quality = 0.92, asBase64 = false, logo?: string, beforeSnap?: () => Promise<void>, afterSnap?: () => Promise<void>) {\n        const externalFunction: IExternalWindow = await WebViewerService.getExternalFunctionContainer();\n        return externalFunction.snap.takeSnap(width, height, mimeType, quality, asBase64, logo, beforeSnap, afterSnap);\n    }\n\n    public async takeCenteredSnap(frontState = true, zoomOffset = 0, width: number | undefined = undefined, height: number | undefined = undefined, type = \"image/jpeg\", quality = 0.92, asBase64 = false) {\n        return await this.send(\"external.takeCenteredSnap\", frontState, zoomOffset, width, height, type, quality, asBase64);\n    }\n\n    async getARExport(): Promise<IARExportData> {\n        const externalFunction: IExternalWindow = await WebViewerService.getExternalFunctionContainer();\n        return externalFunction.WebARService.showARViewer();\n    }\n\n    async isARCapable(): Promise<boolean> {\n        const externalFunction: IExternalWindow = await WebViewerService.getExternalFunctionContainer();\n        return externalFunction.WebARService.isARCapable();\n    }\n\n    async preloadARModel(): Promise<void> {\n        const externalFunction: IExternalWindow = await WebViewerService.getExternalFunctionContainer();\n        return externalFunction.WebARService.preloadARModel();\n    }\n\n    async startAR(preload?: boolean): Promise<boolean> {\n        const externalFunction: IExternalWindow = await WebViewerService.getExternalFunctionContainer();\n        if(preload) await this.preloadARModel();\n        return externalFunction.WebARService.startAR();\n    }\n\n    getErpFiles(cloudId_: string, type_: number, password_: string, returnAsFile_: boolean = true, wawiManufacturer_: string = \"\"): Promise<IGetErpFiles> {\n        return this.send(\"external.getErpFiles\", cloudId_, type_, password_, returnAsFile_, wawiManufacturer_);\n    }\n\n    getStoreTree(): Promise<IStoreTree> {\n        return this.send(\"external.getStoreTree\");\n    }\n\n    getWebshopLink(): Promise<string | undefined> {\n        return this.send(\"external.getWebshopLink\");\n    }\n\n    //endregion\n\n    //region Placer\n\n    fittingReset(): Promise<any> {\n        return this.send(\"external.fitting.reset\");\n    }\n\n    fittingRemove(): Promise<any> {\n        return this.send(\"external.fitting.remove\");\n    }\n\n    fittingMove(): Promise<any> {\n        return this.send(\"external.fitting.move\");\n    }\n\n    loadFitting(manufacturer: string, program: string, articleNo: string): Promise<any> {\n        return this.send(\"external.loadArticle\", manufacturer, program, articleNo);\n    }\n\n    GetAvailableFittingElementsFromScene(): Promise<any> {\n        return this.send(\"external.GetAvailableFittingElementsFromScene\");\n    }\n\n    placePO(parameters: IExternalPlacerParameter): Promise<any> {\n        return this.send(\"external.placePO\", parameters);\n    }\n\n    setPlacerGroup(manufacturer: string, program: string, placerGroupID: string, mode: boolean, overrideMode?: OverrideMode): Promise<any> {\n        return this.send('external.setPlacerGroup', manufacturer, program, placerGroupID, mode, overrideMode);\n    }\n\n    setPlacerGroupSwitch(GroupID: string, switchID: string, value: string): Promise<any> {\n        return this.send('external.setPlacerGroupSwitch', GroupID, switchID, value);\n    }\n\n    getPlacerGroupSwitch(GroupID: string, switchID: string): Promise<any> {\n        return this.send('external.getPlacerGroupSwitch', GroupID, switchID);\n    }\n\n    rearrangeAllPlacerGroups(): Promise<any> {\n        return this.send('external.rearrangeAllPlacerGroups');\n    }\n\n    replaceArticlesByCategories(articleData: {\n        article: string;\n        manufacturer: string;\n        program: string;\n    }, replaceData: IPlacerReplaceData): Promise<any> {\n        return this.send('external.replaceArticlesByCategories', articleData, replaceData);\n    }\n\n    setPlacerMode(placer: boolean, vPlacer: boolean): Promise<any> {\n        return this.send('external.setPlacerMode', placer, vPlacer);\n    }\n\n    setVPlacerContextInfoData(json: any): Promise<any> {\n        return this.send(\"external.setVPlacerContextInfoData\", json);\n    }\n\n    getPossiblePlacerGroups(): Promise<IPossiblePlacerGroupResponse> {\n        return this.send(\"external.getPossiblePlacerGroups\", []);\n    }\n\n    createPlacerGroup(requestData: ICreatePlacerGroupRequest): Promise<any> {\n        return this.send(\"external.createPlacerGroup\", requestData);\n    }\n\n    // endregion\n\n    //region WebCab\n\n    PerformWebCabCommand(json: any): Promise<any> {\n        return this.send(\"external.PerformWebCabCommand\", json);\n    }\n\n    executeHTMLMessage(container: string, command: string, payload: object, ignorePriceChange?: boolean, ignoreSceneUpdate?: boolean): Promise<any> {\n        return this.send(\"external.executeHTMLMessage\", container, command, payload, ignorePriceChange, ignoreSceneUpdate);\n    }\n\n    executeWebCabApiMessage(command: string, payload: object, callSceneUpdate: boolean): Promise<any> {\n        return this.send(\"external.executeWebCabApiMessage\", command, payload, callSceneUpdate);\n    }\n\n    getHTMLComponent(url: string, parentNode: HTMLElement, append?: boolean): Promise<void> {\n        // await this.nodeDefer;\n        // //@ts-ignore\n        // return RequestHelperService.get(window.g_node_url_prefix + url_)\n        //     .then(async (html) => {\n        //         if (append_) {\n        //             let div = document.createElement(\"div\")\n        //             parentNode_.appendChild(div);\n        //             div.innerHTML = await html.text();\n        //             this.exec_body_scripts(div);\n        //         } else {\n        //             parentNode_.innerHTML = await html.text();\n        //             this.exec_body_scripts(parentNode_);\n        //         }\n        //     });\n        throw new Error(\"not implemented!\") // Probably unused\n    }\n\n    //endregion\n\n    //region SceneConfig\n\n    showRegister(register: string): Promise<any> {\n        return this.send(\"external.showRegister\", register);\n    }\n\n    getCurrency(): Promise<any> {\n        return this.send(\"external.getCurrency\", []);\n    }\n\n    getDimensionScale(): Promise<any> {\n        return this.send(\"external.getDimensionScale\", []);\n    }\n\n    getDimensionDigits(): Promise<any> {\n        return this.send(\"external.getDimensionDigits\", []);\n    }\n\n    getPlanningContactInfo(): Promise<any> {\n        return this.send(\"external.getPlanningContactInfo\", []);\n    }\n\n    getAppConnectionData(): Promise<IPriceData> {\n        return this.send(\"external.getAppConnectionData\", []);\n    }\n\n    getDeviceType(): Promise<any> {\n        return this.send(\"external.getDeviceType\");\n    }\n\n    getCountryInfo(): Promise<any> {\n        return this.send(\"external.getCountryInfo\");\n    }\n\n    //endregion\n\n    //region AdditionalPositions\n\n    AddNeutralArticle(article: AddNeutralAdditionalPositionParams): Promise<AdditionalPositionsResult> {\n        return this.send(\"external.addNeutralArticle\", article);\n    }\n    DeleteArticle(params: DeleteAdditionalPositonsParams): Promise<AdditionalPositionsResult> {\n        return this.send(\"external.deleteAdditionalPositons\", params);\n    }\n    GetArticleList(): Promise<AdditionalPositionsResult> {\n        return this.send(\"external.getArticleList\", []);\n    }\n\n    //endregion\n\n}\n\nexport const CommunicationMessageService = new CommunicationMessageServiceClass()\nwindow.CommunicationMessageService = CommunicationMessageService;\n","import {IConfiguratorApiData, IConfiguratorApiSetParams} from \"@dh-software/webui-types\";\r\n\r\nimport { CommunicationMessageService } from \"./communication-message.service\";\r\nimport { EventService } from \"./event.service\";\r\n\r\nclass ConfiguratorApiServiceClass {\r\n    private async ExcecuteApiCommand(command_: string, payload_: object, ignorePriceChange_: boolean, ignoreSceneUpdate_: boolean): Promise<IConfiguratorApiData> {\r\n        const result = await CommunicationMessageService.executeHTMLMessage(\"ConfiguratorApi\", command_, payload_, ignorePriceChange_, ignoreSceneUpdate_);\r\n        return Object.fromEntries(result.entries);\r\n    }\r\n\r\n    constructor() {\r\n    }\r\n\r\n    public async GetApiData(preventRefresh = false, preventRegenAll = false): Promise<IConfiguratorApiData> {\r\n        return await this.ExcecuteApiCommand(\"ConfiguratorApiMessage_GetApiData\", {\r\n            \"prevent-refresh\": preventRefresh,\r\n            \"prevent-regen-all\": preventRegenAll\r\n        }, preventRefresh, preventRefresh);\r\n    }\r\n\r\n    public async SetApiData(setParams: IConfiguratorApiSetParams, ignorePriceChange = false): Promise<IConfiguratorApiData> {\r\n        const promise = this.ExcecuteApiCommand(\"ConfiguratorApiMessage_SetApiData\", setParams, ignorePriceChange, false);\r\n\r\n        let isSettled = false;\r\n\r\n        const timerId = setTimeout(() => {\r\n            if (!isSettled) {\r\n                EventService.emit(\"configurator-api-fetch\", { promise });\r\n            }\r\n        }, 400);\r\n\r\n        try {\r\n            const data = await promise;\r\n            return data;\r\n        } finally {\r\n            isSettled = true;\r\n            clearTimeout(timerId);\r\n        }\r\n    }\r\n}\r\n\r\nexport const ConfiguratorApiService = new ConfiguratorApiServiceClass();\r\n","import {DragDirection, IDragOptions} from \"@dh-software/webui-types\";\nimport {DeferHelperClass, IDeferHelperClass} from \"../classes/defer.class\";\nimport {WebViewerService} from \"./web-viewer.service\";\nimport { ConfigurationService } from \"./configuration.service\";\n\nclass DragDropElement {\n    constructor(private _element: HTMLElement, private _dragInfo: IDragOptions, private _scrollableParent?: HTMLElement) {\n    }\n\n    get Element(): Element {\n        return this._element;\n    }\n\n    get DragInfo(): IDragOptions {\n        return this._dragInfo;\n    }\n\n    get ScrollableParent(): Element | undefined {\n        return this._scrollableParent;\n    }\n}\n\nclass DragDropServiceClass {\n    private _elements: Array<DragDropElement> = [];\n    private _isDragging: boolean = false;\n    private _startPosition: { x: number, y: number, orgX: number, orgY: number } = {x: 0, y: 0, orgX: 0, orgY: 0};\n    private _currentPosition: { x: number, y: number, orgX: number, orgY: number } = {x: 0, y: 0, orgX: 0, orgY: 0};\n    private MOVE_TOLERANCE: number = 30;\n    // Half-angle (in degrees) of the cone around the drag axis that still counts as a drag rather\n    // than a scroll on touch. 40° means any finger gesture within 40° of the drag axis (the axis\n    // perpendicular to the scrollable one) starts a drag; only gestures leaning further than that\n    // toward the scroll axis scroll the list. Raised from the old implicit 30° because near-diagonal\n    // drags were too often swallowed as barely-visible scrolls.\n    private DRAG_PLAY_ANGLE: number = 40;\n    private isTouch: boolean = false;\n    private _dragImage?: HTMLImageElement;\n    private _configDefer: IDeferHelperClass;\n    private _cancelDirection: DragDirection = DragDirection.Vertical;\n    private _currentDragDropElement?: DragDropElement;\n\n    constructor() {\n        this._configDefer = DeferHelperClass();\n        ConfigurationService.Configuration.then((configuration) => {\n            if (configuration?.dragdrop_canceldirection !== undefined) {\n                this._cancelDirection = +configuration.dragdrop_canceldirection;\n            }\n            this._configDefer.resolve();\n        });\n    }\n\n    get DragImage(): HTMLImageElement {\n        if (!this._dragImage) {\n            this._dragImage = document.createElement(\"img\");\n            this._dragImage.id = \"iframe-drag-image\";\n            this._dragImage.classList.add(\"hidden\");\n        }\n        if (!this._dragImage.parentNode) {\n            document.body.appendChild(this._dragImage);\n        }\n        return this._dragImage;\n    }\n\n    private disabledScrollingOnMoveEvent = (e: any) => {\n        e.preventDefault();\n        return false;\n    }\n\n    private downEvent = (e: MouseEvent | TouchEvent) => {\n        const currentElement = e.currentTarget as Element;\n        const dragElement = this._elements.find(((element: DragDropElement) => {\n            return element.Element === currentElement;\n        }));\n        if (dragElement) {\n            this._currentDragDropElement = dragElement;\n        }\n        if (this._currentDragDropElement) {\n            this.isTouch = (e as TouchEvent).touches && (e as TouchEvent).touches.length > 0;\n            this._startPosition = this.getPosition(e);\n            this._currentPosition = this._startPosition;\n\n            if (!this._isDragging) {\n                document.addEventListener(\"mouseup\", this.upEvent);\n                document.addEventListener(\"touchend\", this.upEvent);\n                document.addEventListener(\"mousemove\", this.moveEvent);\n                document.addEventListener(\"touchmove\", this.moveEvent, {\n                    passive: false\n                });\n            }\n        }\n    }\n\n    private upEvent = (e: any) => {\n        document.removeEventListener(\"mouseup\", this.upEvent);\n        document.removeEventListener(\"touchend\", this.upEvent);\n        document.removeEventListener(\"mousemove\", this.moveEvent);\n        document.removeEventListener(\"touchmove\", this.moveEvent);\n        if (this._isDragging && this._currentDragDropElement) {\n            if (this._currentDragDropElement.ScrollableParent && this.isTouch) {\n                this._currentDragDropElement.ScrollableParent.removeEventListener(\"touchmove\", this.disabledScrollingOnMoveEvent);\n            }\n            this._isDragging = false;\n            this.endDrag({position: this.getPosition(e)})\n        }\n        this._currentDragDropElement = undefined;\n    };\n\n    private getCancelDirection(): DragDirection {\n        if (this._currentDragDropElement && this._currentDragDropElement.ScrollableParent) {\n            const scrollable = this._currentDragDropElement.ScrollableParent;\n            const styles = window.getComputedStyle(scrollable);\n\n            // An axis only actually scrolls when its overflow is \"auto\"/\"scroll\" AND the content\n            // is larger than the box. fv-scroll-aware-container sets \"auto\" on BOTH axes, so the\n            // old `overflowY !== \"hidden\"` test wrongly reported \"both directions\" and fell back\n            // to the AUC setting even when the list only scrolls vertically.\n            const canScrollVertically = (styles.overflowY === \"auto\" || styles.overflowY === \"scroll\")\n                && scrollable.scrollHeight > scrollable.clientHeight;\n            const canScrollHorizontally = (styles.overflowX === \"auto\" || styles.overflowX === \"scroll\")\n                && scrollable.scrollWidth > scrollable.clientWidth;\n\n            if (canScrollVertically && canScrollHorizontally) {\n                console.warn(\"DragDropHelper: Scrollable parent can be scrolled in both directions! No Cancel in either direction... Falling back to setting from AUC.\");\n                return this._cancelDirection;\n            }\n            if (canScrollVertically) {\n                return DragDirection.Vertical;\n            }\n            if (canScrollHorizontally) {\n                return DragDirection.Horizontal;\n            }\n        }\n        return this._cancelDirection;\n    }\n\n    private moveEvent = (e: any) => {\n        e.cancelBubble = true;\n        e.stopPropagation();\n        e.preventDefault();\n        this._currentPosition = this.getPosition(e);\n        if (!this._isDragging && this.getLength() > this.MOVE_TOLERANCE) {\n            // Direction-based cancel only makes sense for touch: a finger drag along the scroll axis\n            // should scroll the list, not start a drag. On desktop the user scrolls with the\n            // wheel/scrollbar, so there is no drag-vs-scroll conflict — any drag past the tolerance\n            // should start a drag regardless of direction.\n            if (this.isTouch && this.isScrollGesture()) {\n                return this.upEvent(e);\n            }\n\n            if (!this._currentDragDropElement) {\n                return;\n            }\n\n            if (this._currentDragDropElement.ScrollableParent && this.isTouch) {\n                this._currentDragDropElement.ScrollableParent.addEventListener(\"touchmove\", this.disabledScrollingOnMoveEvent);\n            }\n\n            let data: IDragOptions = {\n                id: this._currentDragDropElement.DragInfo.id,\n                mode: this._currentDragDropElement.DragInfo.mode,\n                type: this._currentDragDropElement.DragInfo.type,\n                extData: this._currentDragDropElement.DragInfo.extData,\n                options: this._currentDragDropElement.DragInfo.options\n            };\n            if (this._currentDragDropElement.DragInfo.dragType) {\n                data.size = this._currentDragDropElement.DragInfo.size;\n                data.pickLevel = this._currentDragDropElement.DragInfo.pickLevel;\n            }\n\n            this.startDrag({\n                element: this._currentDragDropElement.Element,\n                image: this._currentDragDropElement.Element.getAttribute(\"drag-image\") || \"\",\n                data: data,\n                mode: data.dragType ? data.dragType : data.type,\n                position: this._startPosition,\n            });\n            this._isDragging = true;\n        } else if (this._isDragging) {\n            this.sendDrag({position: this._currentPosition});\n        }\n        return false;\n    }\n\n    private getPosition = (e: any) => {\n        let x = e.pageX;\n        let y = e.pageY;\n\n        if (e.touches && e.touches.length > 0) {\n            x = e.touches[0].pageX\n            y = e.touches[0].pageY\n        }\n        if (e.changedTouches && e.changedTouches.length > 0) {\n            x = e.changedTouches[0].pageX\n            y = e.changedTouches[0].pageY\n        }\n        const rect = WebViewerService.FurnviewWebViewer.getBoundingClientRect();\n        return {x: x - rect.left, y: y - rect.top, orgX: x, orgY: y};\n    }\n\n    private setImagePos(x: number, y: number) {\n        this.DragImage.style.left = (x + 3) + \"px\";\n        this.DragImage.style.top = (y + 3) + \"px\";\n    }\n\n    private showImage() {\n        this.DragImage.classList.remove(\"hidden\");\n    }\n\n    private hideImage() {\n        this.DragImage.classList.add(\"hidden\");\n        this.DragImage.remove();\n    }\n\n    public setImageSrc(src_: string) {\n        this.hideImage();\n        let img = new Image();\n        img.src = src_ || \"\";\n        img.onload = () => {\n            if (img.width < img.height) {\n                this.DragImage.classList.add(\"high\");\n                this.DragImage.classList.remove(\"wide\");\n            } else {\n                this.DragImage.classList.add(\"wide\");\n                this.DragImage.classList.remove(\"high\");\n            }\n            this.DragImage.src = src_;\n            if (this._isDragging) {\n                this.showImage();\n            }\n        };\n        img.onerror = () => {\n            this.DragImage.src = \"\";\n            this.hideImage();\n        }\n    }\n\n    private startDrag(parameters_: {\n        element: Element,\n        mode: number | string,\n        image?: string,\n        data: IDragOptions,\n        position: { x: number, y: number, orgX: number, orgY: number }\n    }) {\n        WebViewerService.FurnviewWebViewer.classList.add(\"noneAction\");\n        if (parameters_.image) {\n            this.setImageSrc(parameters_.image);\n        }\n        this.setImagePos(parameters_.position.orgX, parameters_.position.orgY);\n        if (parameters_.data.size && parameters_.data.size instanceof Function) parameters_.data.size = parameters_.data.size();\n        // this.showImage();\n        WebViewerService.postMessage(\"furnplan.dragStart\", [parameters_.mode, parameters_.data, parameters_.position, \"\"]);\n        WebViewerService.dispatch(\"webui.scene-interaction-started\", []);\n        WebViewerService.dispatch(\"webui.start-drag\", [parameters_]);\n    }\n\n    private sendDrag(parameters_: { position: { x: number, y: number, orgX: number, orgY: number } }) {\n        this.setImagePos(parameters_.position.orgX, parameters_.position.orgY);\n        WebViewerService.postMessage(\"furnplan.dragMove\", [parameters_.position])\n        WebViewerService.dispatch(\"webui.move-drag\", [parameters_.position]);\n    }\n\n    private endDrag(parameters_: { position: { x: number, y: number, orgX: number, orgY: number } }) {\n        this.setImagePos(parameters_.position.orgX, parameters_.position.orgY);\n        this.hideImage();\n        WebViewerService.postMessage(\"furnplan.dragEnd\", [parameters_.position])\n        WebViewerService.FurnviewWebViewer.classList.remove(\"noneAction\");\n        WebViewerService.dispatch(\"webui.end-drag\", [parameters_.position]);\n    }\n\n    private getLength(): number {\n        return Math.sqrt((this._currentPosition.x - this._startPosition.x) * (this._currentPosition.x - this._startPosition.x)\n            + (this._currentPosition.y - this._startPosition.y) * (this._currentPosition.y - this._startPosition.y));\n    }\n\n    private isScrollGesture(): boolean {\n        const length = this.getLength();\n        if (length === 0) {\n            return false;\n        }\n\n        const cancelDirection = this.getCancelDirection();\n        if (cancelDirection !== DragDirection.Vertical && cancelDirection !== DragDirection.Horizontal) {\n            return false; // no definite scroll axis — never cancel a drag by direction\n        }\n\n        // How much of the gesture runs along the scrollable axis, normalised to [0, 1]\n        // (0 = perpendicular to the scroll axis = a clean drag, 1 = straight along it = a clean scroll).\n        const movementAlongScrollAxis = cancelDirection === DragDirection.Vertical\n            ? Math.abs(this._startPosition.orgY - this._currentPosition.orgY) / length\n            : Math.abs(this._startPosition.orgX - this._currentPosition.orgX) / length;\n\n        // sin(playAngle) is the along-scroll-axis component at exactly the play boundary. Below it the\n        // gesture sits inside the drag cone (drag); at or above it the gesture leans far enough toward\n        // the scroll axis to count as a scroll. e.g. 40° → 0.643, so an angle-from-drag-axis < 40° drags.\n        const playBoundary = Math.sin(this.DRAG_PLAY_ANGLE * Math.PI / 180);\n        return movementAlongScrollAxis >= playBoundary;\n    }\n\n    private fixChildImages(element_: Element) {\n        const images = element_.querySelectorAll(\"img\");\n        for (let imgI = 0; imgI < images.length; imgI++) {\n            images[imgI].style.userSelect = \"none\";\n            images[imgI].style.webkitUserSelect = \"none\";\n            // @ts-ignore\n            images[imgI].style.mozUserSelect = \"none\";\n            images[imgI].addEventListener(\"dragstart\", (e) => {\n                e.preventDefault();\n            })\n        }\n    }\n\n    public cleanUp() {\n        this._elements = this._elements.filter((element: DragDropElement) => {\n            if (!element.Element) {\n                return false;\n            }\n            let parentNode: Node | null = element.Element.parentNode;\n            while (parentNode) {\n                parentNode = parentNode.parentNode;\n                if (parentNode instanceof DocumentFragment || parentNode instanceof Document) {\n                    return true;\n                }\n            }\n            return false;\n        });\n    }\n\n    public removeElement(element_: HTMLElement) {\n        const index = this._elements.findIndex((element) => {\n            if (element_ === element.Element) {\n                return true;\n            }\n        });\n        if (index !== -1) {\n            this._elements.splice(index, 1);\n            element_.removeEventListener(\"mousedown\", this.downEvent);\n            element_.removeEventListener(\"touchstart\", this.downEvent)\n        }\n    }\n\n    public async addElement(element_: HTMLElement, data_: IDragOptions, scrollableParent_?: HTMLElement, cleanup_ = true) {\n        await this._configDefer;\n        if (cleanup_) this.cleanUp();\n        requestAnimationFrame(() => {\n            setTimeout(() => {\n                this.fixChildImages(element_);\n            }, 50);\n        });\n        element_.addEventListener(\"mousedown\", this.downEvent);\n        element_.addEventListener(\"touchstart\", this.downEvent);\n        const element = new DragDropElement(element_, data_, scrollableParent_);\n        this._elements.push(element);\n    }\n}\nexport const DragDropService = new DragDropServiceClass();\n","import {WebViewerService} from \"./web-viewer.service\";\n\ninterface IListener {\n    register: (callback: (...args: Array<unknown>) => void | Promise<any>) => void;\n    unregister: (callback: (...args: Array<unknown>) => void | Promise<any>) => void;\n}\n\nclass EventFactoryServiceClass {\n    public readonly LastPOLoaded!: IListener;\n    public readonly VPlacerCancel!: IListener;\n    public readonly RefreshPropertyPanel!: IListener;\n    public readonly ChangePrice!: IListener;\n    public readonly DeleteLO_before!: IListener;\n    public readonly DeleteLO_after!: IListener;\n    public readonly CameraOnDirty!: IListener;\n    public readonly CameraOnStart!: IListener;\n    public readonly CameraOnEnd!: IListener;\n    public readonly SendEvent!: IListener;\n    public readonly SelectionChanged!: IListener;\n    public readonly ModalWindowShown!: IListener;\n    public readonly ModalWindowHidden!: IListener;\n    public readonly CustomIcon_ExecuteCustomEvent!: IListener;\n    public readonly ToolbarButtonStateToggled!: IListener;\n    //PropTransfer\n    public readonly PropTransfer_afterDelete!: IListener;\n    public readonly PropTransfer_afterSet!: IListener;\n    public readonly PropTransfer_beforeDelete!: IListener;\n    public readonly PropTransfer_beforeSet!: IListener;\n    public readonly PropTransfer_afterStart!: IListener;\n    public readonly PossibleDestinationValues_afterSet!: IListener;\n    //WallFitting\n    public readonly WallFitting_begin!: IListener;\n    public readonly WallFitting_end!: IListener;\n    public readonly WallFitting_cancel!: IListener;\n\n    private _events = [\n        //PropTransfer\n        {eventName: \"PropTransfer_afterDelete\", event: \"furnview.proptransfer_afterDelete\"},\n        {eventName: \"PropTransfer_afterSet\", event: \"furnview.proptransfer_afterSet\"},\n        {eventName: \"PropTransfer_beforeDelete\", event: \"furnview.PropTransfer_beforeDelete\"},\n        {eventName: \"PropTransfer_beforeSet\", event: \"furnview.PropTransfer_beforeSet\"},\n        {eventName: \"PropTransfer_afterStart\", event: \"furnview.PropTransfer_afterStart\"},\n        {eventName: \"PossibleDestinationValues_afterSet\", event: \"furnview.PossibleDestinationValues_afterSet\"},\n\n        //WallFitting\n        {eventName: \"WallFitting_begin\", event: \"furnview.wallfitting_begin\"},\n        {eventName: \"WallFitting_end\", event: \"furnview.wallfitting_end\"},\n        {eventName: \"WallFitting_cancel\", event: \"furnview.wallfitting_cancel\"},\n\n        {eventName: \"LastPOLoaded\", event: \"furnview.onLastPOLoaded\"},\n        {eventName: \"VPlacerCancel\", event: \"furnview.onVPlacerCancel\"},\n        {eventName: \"RefreshPropertyPanel\", event: \"furnview.refreshPropertyPanel\"},\n        {eventName: \"ChangePrice\", event: \"furnview.changePrice\"},\n        {eventName: \"DeleteLO_before\", event: \"furnview.deleteLO.before\"},\n        {eventName: \"DeleteLO_after\", event: \"furnview.deleteLO.after\"},\n        {eventName: \"CameraOnDirty\", event: \"furnview.cameraOnDirty\"},\n        {eventName: \"CameraOnStart\", event: \"furnview.cameraOnStart\"},\n        {eventName: \"CameraOnEnd\", event: \"furnview.cameraOnEnd\"},\n        {eventName: \"SendEvent\", event: \"furnplan.sendEvent\"},\n        {eventName: \"SelectionChanged\", event: \"furnview.onSelectionChanged\"},\n        {eventName: \"ModalWindowShown\", event: \"furnview.modalWindowShown\"},\n        {eventName: \"ModalWindowHidden\", event: \"furnview.modalWindowHidden\"},\n        {eventName: \"CustomIcon_ExecuteCustomEvent\", event: \"furnview.CustomIcon_ExecuteCustomEvent\"},\n        {eventName: \"ToolbarButtonStateToggled\", event: \"furnview.toolbarButtonStateToggled\"}\n    ];\n\n    constructor() {\n        this.initializeEvents();\n    }\n\n    private initializeEvents() {\n        this._events.forEach((value: { event: string, eventName: string }) => {\n            // @ts-ignore\n            this[value.eventName] = {\n                register: (callback: () => void | Promise<any>) => {\n                    WebViewerService.on(value.event, callback);\n                },\n                unregister: (callback: () => void | Promise<any>) => {\n                    WebViewerService.off(value.event, callback);\n                }\n            }\n        });\n    }\n}\nexport const EventFactoryService = new EventFactoryServiceClass();\n","import {ConfigurationService} from \"./configuration.service\";\nimport {WebViewerService} from \"./web-viewer.service\";\n\ndeclare global {\n    interface Window {\n        dataLayer: any[];\n    }\n}\n\nconst gtmScript = `\n<!-- Google Tag Manager -->\n(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n        new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n    'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n})(window,document,'script','dataLayer','{{key}}');\n<!-- End Google Tag Manager -->\n`\n\nclass GoogleAnalyticsServiceClass {\n\n    constructor(){\n        document.addEventListener(\"DOMContentLoaded\", async () => {\n            await this.add();\n        })\n    }\n\n    private async add() {\n        const config: {[p:string]: any} = await ConfigurationService.Configuration\n        await WebViewerService.IsAppReady;\n        if (config.gtm_setup && config.gtm_setup.isActive) {\n            const key: string = config.gtm_setup.key;\n            const script = document.createElement(\"script\");\n            script.innerHTML = gtmScript.replace(\"{{key}}\", key);\n            document.head.prepend(script);\n        }\n    }\n\n    public async push(data: {event: string, [key:string]: unknown}) {\n        const config: {[p:string]: any} = await ConfigurationService.Configuration\n        if (config.gtm_setup && config.gtm_setup.isActive) {\n            window.dataLayer = window.dataLayer || [];\n            window.dataLayer.push(data);\n        }\n    }\n}\nexport const GoogleAnalyticsService = new GoogleAnalyticsServiceClass();\n","import {DeferHelperClass, IDeferHelperClass} from \"../classes/defer.class\";\nimport {RequestService} from \"./request.service\";\n\ninterface GRecaptcha {\n    render(element: HTMLElement, options?: any): number;\n    reset(instance: number): void;\n}\n\ndeclare global {\n    interface Window {\n        onReCaptchaSolved: (token: string) => Promise<void>;\n        onReCaptchaLoaded: () => void;\n        g_reCaptcha: string;\n        grecaptcha: GRecaptcha;\n    }\n}\n\nclass GoogleCapchaServiceClass {\n    private isCreated: IDeferHelperClass = DeferHelperClass();\n    private validated: IDeferHelperClass = DeferHelperClass();\n    private currentElement: any;\n    private needValidation = true;\n    private instance = -1;\n\n    get IsCreated(): IDeferHelperClass {\n        return this.isCreated;\n    }\n\n    public get Validating(): Promise<void> {\n        return this.validated;\n    }\n\n    public get needsValidation(): boolean {\n        return this.needValidation;\n    }\n\n    constructor() {\n        window.onReCaptchaLoaded = () => {\n            this.IsCreated.resolve();\n        };\n        window.onReCaptchaSolved = async (token: string) => {\n            await this.checkReCaptcha(token);\n        }\n    }\n\n    private async checkReCaptchaRequest(token: string) {\n        try {\n            const response = (await RequestService.post(RequestService.setQuery(\"/re-captcha/check\"), JSON.stringify({token})));\n\n            if (response.ok) {\n                const json = await response.json();\n\n                return json.ok;\n            } else {\n                console.error(\"Unable to check Re Captcha\");\n\n                return false;\n            }\n        } catch (e) {\n            console.error(\"Unable to check Re Captcha\");\n            console.error(e);\n\n            return false;\n        }\n    }\n\n    private async checkReCaptcha(token: string) {\n        const isOk = await this.checkReCaptchaRequest(token);\n\n        if (isOk) {\n            //@ts-ignore\n            this.validated.resolve([true]);\n            this.needValidation = false;\n        }\n    }\n\n    public createCaptcha(parentNode: Element) {\n        if (!window.g_reCaptcha) {\n            // if no Re Captcha Key was specified, simply pass the test\n            this.validated.resolve([true]);\n            this.needValidation = false;\n\n            return;\n        }\n\n        if (parentNode) {\n            this.currentElement = document.createElement(\"div\");\n\n            this.currentElement.classList.add(\"g-recaptcha\");\n            //@ts-ignore\n            this.currentElement.setAttribute(\"data-sitekey\", window.g_reCaptcha);\n            this.currentElement.setAttribute(\"data-callback\", \"onReCaptchaSolved\");\n\n            const scriptElement = document.createElement(\"script\");\n\n            scriptElement.setAttribute(\"src\", \"https://www.google.com/recaptcha/api.js?onload=onReCaptchaLoaded&render=explicit\");\n            scriptElement.setAttribute(\"async\", \"\");\n            scriptElement.setAttribute(\"defer\", \"\");\n\n\n            parentNode.appendChild(this.currentElement);\n            parentNode.appendChild(scriptElement);\n        }\n    }\n\n    public async validate() {\n        await this.isCreated;\n        if (this.currentElement) {\n            requestAnimationFrame(() => {\n                if (this.instance > -1) {\n                    window.grecaptcha.reset(this.instance);\n                } else {\n                    this.instance = window.grecaptcha.render(this.currentElement, {sitekey: window.g_reCaptcha});\n                }\n            });\n        }\n    }\n}\n\nexport const GoogleCapchaService = new GoogleCapchaServiceClass();\n","interface ObserverCallbacks {\n    \"NodeObserved\": (node: Node, attribute: string, recordAttribute: string) => void;\n    \"NodeAdded\": (node: Node) => void;\n    \"NodeRegistered\": (node: Node) => void;\n}\n\nexport class Observer {\n\n    private _mutationObserver = new MutationObserver((records: MutationRecord[]) => {\n        this.observation(records);\n    });\n    private _observees: Array<Node> = [];\n    private _callbacks = new Map<keyof ObserverCallbacks, ObserverCallbacks[keyof ObserverCallbacks]>();\n    private _attributes = new Array<string>()\n\n    constructor(attributes_: Array<string>) {\n        this._attributes = attributes_;\n    }\n\n    public addNode(node_: Node) {\n        if (node_.nodeType == Node.DOCUMENT_NODE || node_.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {\n            this._register(node_);\n        }\n        const shadowRoot = (node_ as HTMLElement).shadowRoot;\n        if (shadowRoot) {\n            this._register(shadowRoot);\n        }\n    }\n\n    public unregisterCallback(name: keyof ObserverCallbacks): boolean {\n        return this._callbacks.delete(name);\n    }\n\n    private runCallback<K extends keyof ObserverCallbacks>(name: K, parameters: Parameters<ObserverCallbacks[K]>): void {\n        const callback = this._callbacks.get(name)\n        if (callback) {\n            // @ts-ignore\n            callback(...parameters);\n        }\n    }\n\n    private checkLocalesAttribute(attribute_: string): string {\n        for (const sourceAttribute of this.Attributes) {\n            if (attribute_.includes(sourceAttribute)) return sourceAttribute;\n        }\n        return \"\";\n    }\n\n    private observation(mutationRecords_: Array<MutationRecord>) {\n        const filteredRecords = new Array<MutationRecord>();\n        mutationRecords_.forEach((record: MutationRecord) => {\n            if (!filteredRecords.includes(record)) {\n                filteredRecords.push(record);\n            }\n        });\n\n        for (const record of filteredRecords) {\n            if (record.attributeName) {\n                const localesAttributeName = this.checkLocalesAttribute(record.attributeName);\n                if (localesAttributeName.length > 0) {\n                    this.runCallback(\"NodeObserved\", [record.target, localesAttributeName, record.attributeName]);\n                }\n            }\n\n            if (record.addedNodes) {\n                record.addedNodes.forEach((node_) => {\n                    this.runCallback(\"NodeAdded\", [node_]);\n                });\n            }\n        }\n        this.CleanUpNodes();\n    }\n\n\n    private _register(node: Node) {\n        if (!this.Observees.includes(node)) {\n            this.Observees.push(node);\n            this.Observer.observe(node, this.ObserverInit);\n            this.runCallback(\"NodeRegistered\", [node]);\n        }\n    }\n\n    private removeNode(node_: Node) {\n        const index = this.Observees.indexOf(node_);\n        if (index > -1) {\n            this.Observees.splice(index, 1);\n        }\n    }\n\n    private CleanUpNodes() {\n        const disconnectedElements = new Array<Node>();\n        for (const observee of this.Observees) {\n            if (!observee.isConnected) {\n                disconnectedElements.push(observee);\n            }\n        }\n\n        if (disconnectedElements.length > 0) {\n            for (const disconnectedElement of disconnectedElements) {\n                this.removeNode(disconnectedElement);\n            }\n            this.Observer.disconnect();\n            for (const observee of this.Observees) {\n                this.Observer.observe(observee, this.ObserverInit);\n            }\n        }\n    }\n\n    public registerCallback<K extends keyof ObserverCallbacks>(name: K, callback: ObserverCallbacks[K]): void {\n        this._callbacks.set(name, callback);\n    }\n\n    public get Attributes(): Array<string> {\n        return this._attributes;\n    }\n\n    public get Observees(): Array<Node> {\n        return this._observees;\n    }\n\n    protected get ObserverInit() {\n        return {attributes: true, childList: true, subtree: true};\n    }\n\n    public get Observer(): MutationObserver {\n        return this._mutationObserver\n    }\n\n}\n","export class LocaleStorage {\n    private activeLangCode: string;\n    private readonly defaultLangCode: string;\n\n    constructor(private readonly storageKey: string, defaultLang: string = \"de\") {\n        this.defaultLangCode = defaultLang;\n        this.activeLangCode = this._loadLanguage();\n    }\n\n    private _loadLanguage(): string {\n        try {\n            const urlLang = new URL(window.location.href).searchParams.get(\"lang\");\n            if (urlLang) {\n                this._saveLanguage(urlLang);\n                return urlLang;\n            }\n        } catch (e) { }\n        const storedLang = localStorage.getItem(this.storageKey);\n        if (storedLang) {\n            return storedLang;\n        }\n\n        if (navigator.language) {\n            const browserLang = navigator.language.split('-')[0];\n            this._saveLanguage(browserLang);\n            return browserLang;\n        }\n        this._saveLanguage(this.defaultLangCode);\n        return this.defaultLangCode;\n    }\n\n    private _saveLanguage(langCode: string): void {\n        localStorage.setItem(this.storageKey, langCode);\n    }\n\n    public getLanguage(): string {\n        return this.activeLangCode;\n    }\n\n    public setLanguage(langCode: string): string {\n        this.activeLangCode = langCode;\n        this._saveLanguage(langCode);\n        return this.activeLangCode;\n    }\n}\n","import {DeferHelperClass, IDeferHelperClass} from \"./defer.class\";\nimport {\n    IRequestService,\n    IUtilityService,\n    LanguageStatus,\n    LocaleFile,\n    LocaleList,\n    LocaleOverride\n} from \"@dh-software/webui-types\";\n\nexport class LocaleReader {\n\n    private _readDefer?: IDeferHelperClass;\n    private _loadingDefer = DeferHelperClass();\n    private _isRead = false;\n\n    private _mobile = false;\n    private _keys: string[] = [];\n    private _file: LocaleFile = {};\n    private _external: LocaleList = {};\n    private _override: LocaleList = {};\n\n    private _requestService!: IRequestService;\n    private _utilityService!: IUtilityService;\n\n    setServices(requestService: IRequestService, utilityService: IUtilityService) {\n        this._requestService = requestService;\n        this._utilityService = utilityService;\n    }\n\n    constructor(private path: string, mobile: boolean = false, private activeLangCode: string = \"\") {\n        this.isRead = false;\n        this._mobile = mobile;\n    }\n\n    private set isRead(value_: boolean) {\n        if (!value_) {\n            this._readDefer = DeferHelperClass();\n        } else if (this._readDefer) {\n            this._readDefer.resolve([true]);\n            this._loadingDefer.resolve([true]);\n        }\n        this._isRead = value_;\n    }\n\n    private get isRead() {\n        return this._isRead;\n    }\n\n    public async IsFileRead(): Promise<boolean> {\n        await this._readDefer;\n        return this.isRead;\n    }\n\n    public async ReadFile(): Promise<void> {\n        this.isRead = false;\n        this.read(this.language);\n    }\n\n    public get mobile() {\n        return this._mobile;\n    }\n\n    public get language(): string {\n        if (this.activeLangCode.length > 0) return this.activeLangCode;\n        return (new URL(window.location.href)).searchParams.get(\"lang\") || \"de\";\n    }\n\n    public get file(): LocaleFile {\n        return this._file;\n    }\n\n    public get keys(): Array<string> {\n        return this._keys;\n    }\n\n    public async AddOverrides(override: LocaleOverride): Promise<void> {\n        await this._loadingDefer;\n        const availableLanguageKeys = Object.keys(this._external)\n        Object.entries(override).forEach(([overrideKey, object]) => {\n            if (typeof object === \"string\") { // Single string\n                availableLanguageKeys.forEach((langCode) => {\n                    const languageOverride = (this._override[langCode] || {}) as LocaleFile;\n                    languageOverride[overrideKey] = object;\n                    this._override[langCode] = languageOverride;\n                })\n            } else { // Language Map\n                Object.entries(object as LocaleFile).forEach(([key, value]) => {\n                    const languageOverride = (this._override[overrideKey] || {}) as LocaleFile;\n                    languageOverride[key] = value;\n                    this._override[overrideKey] = languageOverride;\n                })\n            }\n        })\n        this.applyExternalsAndOverrides()\n    }\n\n    public async AddLocales(source: LocaleList) {\n        Object.entries(source).forEach(([langCode, file]) => {\n            const obj = this._external[langCode] || {};\n            Object.entries(file as LocaleFile).forEach(([key, translation]) => {\n                obj[key] = translation;\n            })\n            this._external[langCode] = obj;\n        })\n        await this._loadingDefer\n        if (await this.IsFileRead()) {\n            this.applyExternalsAndOverrides()\n            return;\n        }\n        console.error(\"LocalesModel: Tried to Add Locales from Json, but failed, since file could not be read...\");\n    }\n\n    applyExternalsAndOverrides() {\n        const lang = this.language;\n        const source = this._external;\n        if (source && source[lang]) {\n            const keys = Object.keys(source[lang]);\n            for (const key of keys) {\n                this._file[key] = source[lang][key];\n            }\n        }\n        const overrides = this._override;\n        if (overrides && overrides[lang]) {\n            const keys = Object.keys(overrides[lang]);\n            for (const key of keys) {\n                if (this._file[key]) {\n                    const replacementKey = overrides[lang][key];\n                    if (this._file[replacementKey]) {\n                        this._file[key] = this._file[replacementKey];\n                    }\n                }\n            }\n        }\n        this._keys = Object.keys(this._file);\n    }\n\n    async read(langCode: string = this.language): Promise<LanguageStatus> {\n        const changed = this.activeLangCode != langCode || !this.isRead;\n        if (changed) {\n            this._file = await this.getLocaleJson(this.path, langCode);\n            this.applyExternalsAndOverrides();\n            this.isRead = true;\n            this._mobile = this._utilityService.isMobileDevice();\n        }\n        this.activeLangCode = langCode;\n        return {\n            langCode: this.activeLangCode,\n            changed\n        };\n    }\n\n    private async getLocaleJson(path_: string, langCode_: string): Promise<LocaleFile> {\n        const url = path_ + langCode_ + \".json\";\n        const requestUrl: string = await this._requestService.buildRequestURL(url);\n        return this._requestService.fetchJSON<LocaleFile>(requestUrl);\n    }\n\n}\n","import {LocaleList, LocaleOverride} from \"@dh-software/webui-types\";\nimport {Observer} from \"../classes/observer.class\";\nimport {LocaleStorage} from \"../classes/locale-storage.class\";\nimport {LocaleReader} from \"../classes/locale-reader.class\";\nimport {RequestService} from \"./request.service\";\nimport {UtilityService} from \"./utility.service\";\n\nclass LocaleServiceClass {\n\n    private readonly _observer: Observer;\n    private _initialised = false\n    private readonly _storage:LocaleStorage;\n    private readonly _reader: LocaleReader;\n\n    constructor() {\n        this._observer = new Observer([\"i18n\"])\n        this._storage = new LocaleStorage(this.LocaleStorageKey)\n        this._reader = new LocaleReader(\"locales/\");\n        this._reader.setServices(RequestService, UtilityService);\n        this.init();\n    }\n\n    private get LocaleStorageKey() {\n        const url = window.location.href;\n        const params = new URLSearchParams(url);\n        return `${params.get(\"token\")}_${params.get(\"a\")}_${params.get(\"b\")}`;\n    }\n\n    private updateUrlLangParameter(langCode: string): void {\n        try {\n            const currentUrl = new URL(window.location.href);\n            if (currentUrl.searchParams.has(\"lang\")) {\n                currentUrl.searchParams.set('lang', langCode);\n                window.history.replaceState({}, '', currentUrl.toString());\n            }\n        } catch (error) {\n            console.error(error);\n        }\n    }\n\n    async setLanguage(langCode: string) {\n        this._storage.setLanguage(langCode);\n        const info = await this._reader.read(langCode);\n        if (info.changed) {\n            this._observer.Observees.forEach(x => {\n                this.translateAddedElement(x);\n            })\n            this.updateUrlLangParameter(info.langCode);\n        }\n    }\n\n    getLanguage(): string {\n        return this.language;\n    }\n\n    private async init(): Promise<void> {\n        if (!this._initialised) {\n            this._observer.registerCallback(\"NodeObserved\", (node, localesAttribute, attribute) => {\n                this._translateNode(node as Element, localesAttribute, attribute);\n            });\n            this._observer.registerCallback(\"NodeAdded\", this.translateAddedElement.bind(this))\n            this._observer.registerCallback(\"NodeRegistered\", this.translateAddedElement.bind(this));\n\n            await this.setLanguage(this.language);\n            document.addEventListener(\"register-to-locales-observer\", ((event_: CustomEvent) => {\n                this._observer.addNode(event_.target as Node);\n            }) as EventListener);\n            this.Register(document);\n            this._initialised = true;\n        }\n    }\n\n    private async _translateNode(element_: Element, localesAttribute_: string, sourceAttribute_: string) {\n        await this.IsFileRead();\n        const fallback = element_.getAttribute(\"locales-model-no-translation\") || element_.textContent;\n        const txtid = element_.getAttribute(sourceAttribute_) || \"\";\n\n        if (sourceAttribute_.includes(localesAttribute_ + \"-\")) {\n            const targetAttribute = sourceAttribute_.replace(localesAttribute_ + \"-\", \"\");\n            element_.setAttribute(targetAttribute, this.translate(txtid, fallback ? fallback : \"\"));\n            return;\n        }\n\n        if (sourceAttribute_.includes(\"mobile-\") == false) {\n            if (element_.hasAttribute(\"mobile-\" + sourceAttribute_)) {\n                if (this._reader.mobile) {\n                    return;// do not translate, as there is a mobile-text that should be used instead\n                }\n            }\n        }\n        element_.textContent = this.translate(txtid, fallback ? fallback : \"\");\n    }\n\n\n    private translateAddedElement(node_: Node) {\n        if ((node_ as Element).getAttributeNames) {\n            const attributes = (node_ as Element).getAttributeNames();\n            for (const attribute of attributes) {\n                for (const localesAttribute of this._observer.Attributes) {\n                    if (attribute.includes(localesAttribute)) {\n                        this._translateNode((node_ as Element), localesAttribute, attribute);\n                    }\n                }\n            }\n        }\n\n        if ((node_ as Element).querySelectorAll) {\n            const elements = (node_ as Element).querySelectorAll(\"*\");\n            elements.forEach((element_) => {\n                const attributes = element_.getAttributeNames();\n                for (const attribute of attributes) {\n                    for (const localesAttribute of this._observer.Attributes) {\n                        if (attribute.includes(localesAttribute)) {\n                            this._translateNode(element_, localesAttribute, attribute);\n                        }\n                    }\n                }\n            });\n        }\n    }\n\n    private observation(model_: LocaleServiceClass): CallableFunction {\n        return function (node_: Node, localesAttribute_: string, sourceAttribute_: string) {\n            model_._translateNode(node_ as Element, localesAttribute_, sourceAttribute_);\n        };\n    }\n\n    private nodeAdded(model_: LocaleServiceClass): CallableFunction {\n        return function (node_: Node) {\n            model_.translateAddedElement(node_);\n        }\n    }\n\n    private register(model_: LocaleServiceClass): CallableFunction {\n        return function (node_: Node) {\n            model_.translateAddedElement(node_);\n        };\n    }\n\n    public get language() {\n        return this._storage.getLanguage();\n    }\n\n    public async get(txtid_: string) {\n        await this.IsFileRead();\n        if (txtid_ && this.exists(txtid_)) {\n            return this._reader.file[txtid_];\n        }\n        return \"\";\n    }\n\n    public IsFileRead(): Promise<boolean> {\n        return this._reader.IsFileRead();\n    }\n\n    public exists(txtid_: string) {\n        return this._reader.keys.includes(txtid_);\n    }\n\n    public translate(txtid_: string, fallback_: string = \"\"): string {\n        let returnBuffer = \"\";\n        if (txtid_ && this.exists(txtid_)) {\n            returnBuffer = this._reader.file[txtid_];\n        }\n        if (fallback_ && !returnBuffer) {\n            if (this.exists(fallback_)) {\n                returnBuffer = this._reader.file[fallback_];\n            } else {\n                returnBuffer = fallback_;\n            }\n        }\n        if (typeof returnBuffer !== \"string\") {\n            returnBuffer = txtid_;\n        }\n        if (returnBuffer) {\n            returnBuffer = returnBuffer.replace(\"~\", \"\\n\");\n        }\n        return returnBuffer;\n    }\n\n    public async Register(target_: Node) {\n        if (await this.IsFileRead()) {\n            this._observer.addNode(target_);\n        }\n    }\n\n    public async AddSource(source: LocaleList) {\n        return await this._reader.AddLocales(source);\n    }\n\n    public async AddOverrides(overrides: LocaleOverride) {\n        return await this._reader.AddOverrides(overrides);\n    }\n}\nexport const LocaleService = new LocaleServiceClass();\n","import {IConfiguredMailParams, IModalElement, IRequestData, ValidationType} from \"@dh-software/webui-types\";\n\nimport {GoogleCapchaService} from './google-recapcha.service'\nimport {CommunicationMessageService} from \"./communication-message.service\";\nimport {RequestService} from \"./request.service\";\nimport {subscribe} from \"../event\";\n\nclass MailerServiceClass {\n    private readonly _modal!: IModalElement;\n\n    constructor() {\n        //TODO: ...........................................................\n        // this._modal = document.createElement(\"fv-modal\") as IModalElement;\n        // document.body.appendChild(this._modal);\n        subscribe(\"shared:mail-sent\", async (params: IConfiguredMailParams) => {\n            await this.sendConfiguredMail(params);\n        });\n    }\n\n    private validateValue(value: string | undefined, validationType: ValidationType): boolean {\n        value = value || \"\";\n        switch (validationType) {\n            case ValidationType.CLOUD_ID:\n                return /^[a-z0-9]{8}$/.test(value);\n            case ValidationType.E_MAIL:\n                return /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/.test(value);\n        }\n    }\n\n    private setLabel(mode_: boolean) {\n        const finishLabel = document.createElement(\"label\");\n        if (mode_) {\n            finishLabel.textContent = \"E-Mail wurde erfolgreich versendet.\";\n        } else {\n            finishLabel.textContent = \"E-Mail konnte nicht versendet werden.\";\n        }\n        this._modal.innerHTML = \"\";\n        this._modal.appendChild(finishLabel);\n        setTimeout(() => {\n            this._modal.hide();\n        }, 2000);\n    }\n\n    private async validateGoogleCaptcha() {\n        GoogleCapchaService.createCaptcha(this._modal);\n        if (GoogleCapchaService.needsValidation) {\n            GoogleCapchaService.validate();\n        }\n        await GoogleCapchaService.Validating;\n    }\n\n    public async shareByMail(to: string, message: string, cloudId: string) {\n        if (this.validateValue(to, ValidationType.E_MAIL) &&\n            this.validateValue(cloudId, ValidationType.CLOUD_ID)) {\n            this._modal.show();\n\n            try {\n                await this.validateGoogleCaptcha();\n\n                const url = await CommunicationMessageService.getShortUrl(window.location.href, cloudId);\n\n                await RequestService.post(RequestService.setQuery(\"/webviewer/share-by-mail\"), JSON.stringify({\n                    to,\n                    message,\n                    url\n                }));\n                this.setLabel(true);\n            } catch (e) {\n                this.setLabel(false);\n            }\n        }\n    }\n\n    async sendRequestMail(requestData: IRequestData) {\n        if (this.validateValue(requestData.email, ValidationType.E_MAIL) &&\n            this.validateValue(requestData.number, ValidationType.CLOUD_ID)) {\n            this._modal.show();\n            try {\n                await this.validateGoogleCaptcha();\n\n                await RequestService.post(RequestService.setQuery(\"/webui/sendRequestMail\"), JSON.stringify({\n                        message: requestData.message || \"\",\n                        name: requestData.name || \"\",\n                        surname: requestData.surname || \"\",\n                        email: requestData.email || \"\",\n                        phone: requestData.phone || \"\",\n                        postcode: requestData.postcode || \"\",\n                        number: requestData.number || \"\"\n                    })\n                );\n                this.setLabel(true);\n            }\n            catch(e) {\n                this.setLabel(false);\n            }\n        }\n    }\n\n    async sendConfiguredMail(params: IConfiguredMailParams) {\n        return await fetch(RequestService.setQuery(\"/mail/send-configurated-mail\"), {\n            method: \"POST\",\n            credentials: \"include\",\n            body: JSON.stringify(params)\n        });\n    }\n\n    sendConfiguredMailByBeacon(params: IConfiguredMailParams) {\n        const data = new Blob(\n            [JSON.stringify(params)],\n            {type: 'application/json; charset=UTF-8'}\n        );\n        navigator.sendBeacon(RequestService.setQuery(\"/mail/send-configurated-mail\"), data);\n    }\n}\n\nexport const MailerService = new MailerServiceClass();\n","import {ConfigurationService} from \"./configuration.service\";\nimport {subscribe, subscribeOnce} from \"../event\";\n\ninterface IResetMask extends HTMLElement {\n    startTimer: () => void;\n    stopTimer: () => void;\n}\n\nclass ResetWindowServiceClass {\n    private isInitialized?: Promise<boolean>;\n    private _resetMask?: IResetMask;\n    constructor() {\n        subscribe(\"shared:configuration-fetched\", (data) => {\n            if (window.g_configuration[\"sessionResetSettings\"] && window.g_configuration[\"sessionResetSettings\"].enabled) {\n                this._resetMask = document.querySelector(\"fv-reset-mask\") || Object.assign(document.createElement(\"fv-reset-mask\"));\n                if(this._resetMask) {\n                    const fvModalGeneral = document.querySelector(\"fv-modal.global-main-modal\") || Object.assign(document.createElement(\"fv-modal\"), { className: \"global-main-modal\"})\n                    fvModalGeneral.append(this._resetMask);\n                    document.body.append(fvModalGeneral);\n                }\n            }\n        })\n    }\n\n    async startTimer() {\n        if(this.isInitialized) {\n            await this.isInitialized;\n            if (this._resetMask) {\n                this._resetMask.startTimer();\n            }\n            else {\n                console.warn(\"Is not found\");\n            }\n        }\n        else {\n            console.warn(\"Is not initialized\");\n        }\n    }\n\n    async stopTimer() {\n        if(this.isInitialized) {\n            await this.isInitialized;\n            if (this._resetMask) {\n                this._resetMask.stopTimer();\n            }\n            else {\n                console.warn(\"Is not found\");\n            }\n        }\n        else {\n            console.warn(\"Is not initialized\");\n        }\n    }\n}\nexport const ResetWindowService = new ResetWindowServiceClass();\n","import {ITemplateConfig, IThemeConfig} from \"@dh-software/webui-types\";\n\nexport class ThemeApplier {\n\n    /**\n     * Generates CSS variables from theme config\n     */\n    static generateCSSVariables(theme: IThemeConfig): string {\n        const lines = Object.entries(theme.colors).map(([name, data]) => {\n            const val = data.value ?? data.default;\n            return `${name}: ${val};`;\n        });\n        return `:root { ${lines.join(\"\\n\")} }`;\n    }\n\n    /**\n     * Handles specific template configuration logic for a single element\n     */\n    static applyTemplateConfig(element: Element, config: ITemplateConfig, invert: boolean = false) {\n        const dispatch = () => {\n            element.dispatchEvent(new CustomEvent(\"template-loader-template-config-applied\", {\n                bubbles: true,\n                detail: { \"template-config\": config, \"inverted\": invert }\n            }));\n        };\n\n        const rawValue = config.value ?? config.default;\n        const effectiveValue = invert ? !rawValue : rawValue;\n\n        switch (config.type) {\n            case \"string\":\n                element.textContent = String(rawValue);\n                break;\n            case \"boolean\":\n                if (!effectiveValue) element.remove();\n                break;\n            case \"option\":\n            case \"dynamic-option\":\n                if (config.attribute) element.setAttribute(config.attribute, String(rawValue));\n                break;\n            case \"attribute\":\n                this.handleAttributeType(element, config, invert);\n                break;\n        }\n        dispatch();\n    }\n\n    private static handleAttributeType(element: Element, config: ITemplateConfig, invert: boolean) {\n        if (!config.attribute) return;\n\n        let val = config.value ?? config.default;\n\n        const configId = config[\"config-id\"];\n        const notConfigId = config[\"!config-id\"];\n\n        if (configId && typeof (window as any).g_configuration?.[configId] === \"boolean\") {\n            val = (window as any).g_configuration[configId];\n        } else if (notConfigId && typeof (window as any).g_configuration?.[notConfigId] === \"boolean\") {\n            val = !(window as any).g_configuration[notConfigId];\n        }\n\n        const finalValue = invert ? !val : val;\n        if (config.varType === \"boolean\") {\n            finalValue ? element.setAttribute(config.attribute, \"\") : element.removeAttribute(config.attribute);\n        } else {\n            element.setAttribute(config.attribute, String(val));\n        }\n    }\n}\n","import {ILoadingElement, IThemeConfig} from \"@dh-software/webui-types\";\nimport {RequestService} from \"./request.service\";\nimport {DeferHelperClass, IDeferHelperClass} from \"../classes/defer.class\";\nimport {subscribe} from \"../event\";\nimport {ThemeApplier} from \"../classes/theme-applier.class\";\n\nclass TemplateLoaderServiceClass {\n    private _loadingScreen!: ILoadingElement;\n    private _theme!: IThemeConfig;\n    private _initialized: IDeferHelperClass = DeferHelperClass();\n    private _isFinished: IDeferHelperClass = DeferHelperClass();\n    private _themeStyle: HTMLStyleElement = document.createElement(\"style\");\n\n    constructor() {\n        this.setupLoadingScreen();\n        subscribe(\"construction:initialize\", () => this.initialize());\n    }\n\n    private setupLoadingScreen() {\n        this._loadingScreen = document.createElement(\"fv-loading\") as ILoadingElement;\n        if (this._loadingScreen) {\n            document.body.appendChild(this._loadingScreen);\n            this._loadingScreen.show?.();\n        }\n    }\n\n    public get IsInitialized(): Promise<void> { return this._initialized; }\n    public get IsFinished(): Promise<any> { return Promise.all([this._initialized, this._isFinished]); }\n\n    async initialize() {\n        try {\n            const url = await RequestService.buildRequestURL(\"themeConfig\");\n            this._theme = (await RequestService.fetchJSON(url)) as IThemeConfig;\n\n            if (this._theme) {\n                this._themeStyle.innerHTML = ThemeApplier.generateCSSVariables(this._theme);\n                document.head.appendChild(this._themeStyle);\n                this._initialized.resolve();\n            }\n            await this.applyThemeToHierarchy(document, !this._theme);\n        } finally {\n            this._loadingScreen?.remove();\n            this._isFinished.resolve();\n        }\n    }\n\n    public async applyThemeToHierarchy(root: ParentNode | ShadowRoot, onlyConfigIds = false) {\n        const elements = root.querySelectorAll(\"*\");\n\n        for (const el of Array.from(elements)) {\n            await this.processElement(el, onlyConfigIds);\n            if (el.shadowRoot) {\n                await this.applyThemeToHierarchy(el.shadowRoot, onlyConfigIds);\n            }\n        }\n    }\n\n    private async processElement(el: Element, onlyConfigIds: boolean) {\n        const rawTemplateId = el.getAttribute(\"template-id\");\n        const rawConfigId = el.getAttribute(\"config-id\");\n\n        if (rawTemplateId && !onlyConfigIds && this._theme) {\n            const isInverted = rawTemplateId.startsWith(\"!\");\n            const actualId = isInverted ? rawTemplateId.substring(1) : rawTemplateId;\n\n            const config = this._theme.template[actualId];\n            if (config) {\n                const configs = Array.isArray(config) ? config : [config];\n                configs.forEach(c => ThemeApplier.applyTemplateConfig(el, c, isInverted));\n            }\n        }\n\n        if (rawConfigId) {\n            const isInverted = rawConfigId.startsWith(\"!\");\n            const actualConfigKey = isInverted ? rawConfigId.substring(1) : rawConfigId;\n            const globalVal = (window as any).g_configuration?.[actualConfigKey];\n\n            if (typeof globalVal === \"boolean\") {\n                const shouldRemove = isInverted ? globalVal : !globalVal;\n                if (shouldRemove) {\n                    el.remove();\n                }\n            }\n        }\n    }\n}\nexport const TemplateLoaderService = new TemplateLoaderServiceClass();\n","import {\n    IArrangeEquallyParams,\n    IBulkValueModification,\n    IGetUIFromPoConfigParams,\n    IGetUIParams,\n    IGroupModification,\n    IModifySingleGroupParams,\n    IModifySingleSpaceParams,\n    IModifyValuesParams,\n    ISpaceModification,\n    IValueModification,\n    IWebCabApiArticleResult,\n    IWebCabApiUiComponentsData,\n    IWebCabApiUiData,\n    IWebCabCommandData,\n    IWebCabMouseClickEvent,\n    IWebCabMouseOverEvent,\n    IWebCabUIData,\n    IZSplittingModification\n} from \"@dh-software/webui-types\";\nimport {CommunicationMessageService} from \"./communication-message.service\"\n\nclass WebCabCommunicationServiceClass {\n    constructor() {\n    }\n\n    private async PerformWebCabCommand(json_: IWebCabCommandData): Promise<IWebCabUIData> {\n        return (await CommunicationMessageService.PerformWebCabCommand(json_))[0];\n    }\n\n    public async ArrangeEqually(params_: IArrangeEquallyParams): Promise<IWebCabUIData> {\n        const json: IWebCabCommandData = {\n            \"webCabCommand\": \"ArrangeEqually\",\n            \"webCabParams\": {}\n        };\n        json.webCabParams.GroupID = params_.GroupID;\n        json.webCabParams[\"itemManager.TargetType\"] = params_.articlenumber;\n        json.webCabParams[\"itemManager.customerType\"] = params_.customerType ? params_.customerType : \"\";\n        json.webCabParams[\"itemManager.manufacturer\"] = params_.manufacturer;\n        json.webCabParams[\"itemManager.program\"] = params_.program;\n        if (params_.template) {\n            json.webCabParams[\"itemManager.template\"] = params_.template;\n        }\n        json.webCabParams[\"itemManager.uiType\"] = params_.uitype;\n        json.webCabParams[\"itemManager.configSuffix\"] = params_.configSuffix;\n\n        if (params_.targetInstanceIdent) {\n            json.webCabParams[\"itemManager.InstanceIdent\"] = params_.targetInstanceIdent.toFixed(0);\n        }\n        return await this.PerformWebCabCommand(json);\n    }\n\n    public async ModifySingleGroup(params_: IModifySingleGroupParams): Promise<IWebCabUIData> {\n        const json: IWebCabCommandData = {\n            \"webCabCommand\": \"ModifySingleGroup\",\n            \"webCabParams\": {}\n        };\n        json.webCabParams[params_.modificationTarget] = params_.value;\n        json.webCabParams.GroupID = params_.GroupID;\n        json.webCabParams[\"itemManager.TargetType\"] = params_.articlenumber;\n        json.webCabParams[\"itemManager.customerType\"] = params_.customerType ? params_.customerType : \"\";\n        json.webCabParams[\"itemManager.manufacturer\"] = params_.manufacturer;\n        json.webCabParams[\"itemManager.program\"] = params_.program;\n        if (params_.template) {\n            json.webCabParams[\"itemManager.template\"] = params_.template;\n        }\n        json.webCabParams[\"itemManager.uiType\"] = params_.uitype;\n        json.webCabParams[\"itemManager.configSuffix\"] = params_.configSuffix;\n        if (params_.targetInstanceIdent) {\n            json.webCabParams[\"itemManager.InstanceIdent\"] = params_.targetInstanceIdent.toFixed(0);\n        }\n        return await this.PerformWebCabCommand(json);\n    }\n\n    public async ModifySingleSpace(params_: IModifySingleSpaceParams): Promise<IWebCabUIData> {\n        const json: IWebCabCommandData = {\n            \"webCabCommand\": \"ModifySingleSpace\",\n            \"webCabParams\": {}\n        };\n        json.webCabParams[params_.modificationTarget] = params_.value;\n        json.webCabParams.GroupID = params_.GroupID;\n        json.webCabParams.InGroupID = params_.InGroupID;\n        json.webCabParams[\"itemManager.TargetType\"] = params_.articlenumber;\n        json.webCabParams[\"itemManager.customerType\"] = params_.customerType ? params_.customerType : \"\";\n        json.webCabParams[\"itemManager.manufacturer\"] = params_.manufacturer;\n        json.webCabParams[\"itemManager.program\"] = params_.program;\n        if (params_.template) {\n            json.webCabParams[\"itemManager.template\"] = params_.template;\n        }\n        json.webCabParams[\"itemManager.uiType\"] = params_.uitype;\n        json.webCabParams[\"itemManager.configSuffix\"] = params_.configSuffix;\n        if (params_.targetInstanceIdent) {\n            json.webCabParams[\"itemManager.InstanceIdent\"] = params_.targetInstanceIdent.toFixed(0);\n        }\n        return await this.PerformWebCabCommand(json);\n    }\n\n    public async getUI(params_: IGetUIParams): Promise<IWebCabUIData> {\n        const json: IWebCabCommandData = {\"webCabCommand\": \"getUI\", \"webCabParams\": {}};\n        json.webCabParams[\"itemManager.preventRun\"] = params_.preventRuns ? \"1\" : \"0\";\n        json.webCabParams[\"itemManager.targetIsLastInserted\"] = params_.lastInserted ? \"1\" : \"0\";\n        json.webCabParams[\"itemManager.runAllNoOptimizationNoCache\"] = params_.runAllNotOptimized ? \"1\" : \"0\";\n        json.webCabParams[\"itemManager.runAllWebCabElements\"] = params_.runAllWebCabs ? \"1\" : \"0\";\n        json.webCabParams[\"itemManager.TargetType\"] = params_.articlenumber;\n        json.webCabParams[\"itemManager.manufacturer\"] = params_.manufacturer;\n        json.webCabParams[\"itemManager.program\"] = params_.program;\n        json.webCabParams[\"itemManager.customerType\"] = params_.customerType ? params_.customerType : \"\";\n        json.webCabParams[\"itemManager.uiType\"] = params_.uitype;\n        if (params_.template) {\n            json.webCabParams[\"itemManager.template\"] = params_.template;\n        }\n        json.webCabParams[\"itemManager.configSuffix\"] = params_.configSuffix;\n        if (params_.targetInstanceIdent) {\n            json.webCabParams[\"itemManager.InstanceIdent\"] = params_.targetInstanceIdent.toFixed(0);\n        }\n        return await this.PerformWebCabCommand(json);\n    }\n\n    public async getUiFromPoConfig(params_: IGetUIFromPoConfigParams): Promise<IWebCabUIData> {\n        const json: IWebCabCommandData = {\"webCabCommand\": \"getUiFromPoConfig\", \"webCabParams\": {}};\n        json.webCabParams[\"itemManager.TargetType\"] = params_.articlenumber;\n        json.webCabParams[\"itemManager.manufacturer\"] = params_.manufacturer;\n        json.webCabParams[\"itemManager.program\"] = params_.program;\n        json.webCabParams[\"itemManager.uiType\"] = params_.uitype;\n        if (params_.template) {\n            json.webCabParams[\"itemManager.template\"] = params_.template;\n        }\n        json.webCabParams[\"itemManager.customerType\"] = params_.customerType ? params_.customerType : \"\";\n        json.webCabParams[\"itemManager.UIFromConfig_ForceCorner\"] = params_.forceCorner ? 1 : 0;\n        json.webCabParams[\"itemManager.configSuffix\"] = params_.configSuffix;\n        return await this.PerformWebCabCommand(json);\n    }\n\n    public async ModifyValues(params_: IModifyValuesParams): Promise<IWebCabUIData> {\n        const json: IWebCabCommandData = {\n            \"webCabCommand\": \"ModifyValues\",\n            \"webCabParams\": {\n                \"Modified\": {}\n            }\n        };\n        if (!json.webCabParams.Modified) {\n            json.webCabParams.Modified = {};\n        }\n        json.webCabParams.Modified[params_.modificationTarget] = params_.value;\n\n        if (params_.preventRuns) {\n            json.webCabParams[\"itemManager.preventRun\"] = \"1\";\n        }\n        json.webCabParams[\"itemManager.TargetType\"] = params_.articlenumber;\n        json.webCabParams[\"itemManager.manufacturer\"] = params_.manufacturer;\n        json.webCabParams[\"itemManager.program\"] = params_.program;\n        json.webCabParams[\"itemManager.customerType\"] = params_.customerType ? params_.customerType : \"\";\n        json.webCabParams[\"itemManager.uiType\"] = params_.uiType;\n        json.webCabParams[\"itemManager.configSuffix\"] = params_.configSuffix;\n        if (params_.template) {\n            json.webCabParams[\"itemManager.template\"] = params_.template;\n        }\n        if (params_.targetInstanceIdent) {\n            json.webCabParams[\"itemManager.InstanceIdent\"] = params_.targetInstanceIdent.toFixed(0);\n        }\n        return await this.PerformWebCabCommand(json);\n    }\n}\n\nexport const WebCabCommunicationService = new WebCabCommunicationServiceClass();\n/*@ts-ignore*/\nwindow.WebCabCommunicationService = WebCabCommunicationService;\n\nexport interface IWebCabComponentData {\n    attributes?: {\n        disabled: number,\n        max: number,\n        min: number,\n        value: number\n    },\n    change?: {\n        GroupID?: string,\n        InGroupID?: string,\n        TargetType: string,\n        modificationTarget: string,\n        value: string,\n        webCabCommand: string\n    },\n    \"data-attributes\"?: {\n        step: number,\n        type: string\n    },\n    click?: IWebCabMouseClickEvent,\n    \"mouseenter\"?: IWebCabMouseOverEvent,\n    \"mouseleave\"?: IWebCabMouseOverEvent,\n    \"component-identifier\"?: string,\n    components?: Array<IWebCabComponentData>,\n    name?: string\n}\n\nclass WebCabApiServiceClass {\n    constructor() {\n    }\n\n    public async GetUIs(customerType_: string, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined): Promise<IWebCabApiUiData> {\n        const params = {\n            InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n            CustomerType: customerType_,\n            ConfigSuffix: configSuffix_ ? configSuffix_ : \"\"\n        };\n        return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_GetUI\", params, false);\n    }\n\n    public async GetUiFromPoConfig(manufacturer_: string, program_: string, article_: string, configSuffix_: string, customerType_: string, forceCorner_: boolean): Promise<IWebCabApiUiComponentsData> {\n        const params = {\n            Manufacturer: manufacturer_,\n            Program: program_,\n            Article: article_,\n            ConfigSuffix: configSuffix_,\n            CustomerType: customerType_,\n            ForceCorner: forceCorner_ ? 1 : 0\n        };\n        return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_GetUiFromPoConfig\", params, false);\n    }\n\n    public async ArrangeEqually(customerType_: string, groupIDs_: Array<string>, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined): Promise<IWebCabApiUiData> {\n        const params = {\n            InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n            CustomerType: customerType_,\n            GroupIDs: groupIDs_,\n            ConfigSuffix: configSuffix_ ? configSuffix_ : \"\"\n        };\n        return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_ArrangeEqually\", params, true);\n    }\n\n    public async ModifyValues(customerType_: string, modifications: Array<IValueModification>, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined): Promise<IWebCabApiUiData> {\n        const params = {\n            InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n            CustomerType: customerType_,\n            ConfigSuffix: configSuffix_ ? configSuffix_ : \"\",\n            modifications: modifications\n        };\n        return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_ModifyValues\", params, true);\n    }\n\n    public async BulkModifyValues(customerType_: string, bulkModifications_: Array<IBulkValueModification>, configSuffix_?: string | undefined) {\n        const params = {\n            CustomerType: customerType_,\n            ConfigSuffix: configSuffix_ ? configSuffix_ : \"\",\n            BulkModifications: bulkModifications_\n        }\n        return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_BulkModifyValues\", params, true);\n    }\n\n    public async ModifyGroups(customerType_: string, modifications: Array<IGroupModification>, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined) {\n        const params = {\n            InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n            CustomerType: customerType_,\n            ConfigSuffix: configSuffix_ ? configSuffix_ : \"\",\n            modifications: modifications\n        };\n        return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_ModifyGroups\", params, true);\n    }\n\n    public async ModifySpaces(customerType_: string, modifications: Array<ISpaceModification>, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined) {\n        const params = {\n            InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n            CustomerType: customerType_,\n            ConfigSuffix: configSuffix_ ? configSuffix_ : \"\",\n            modifications: modifications\n        };\n        return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_ModifySpaces\", params, true);\n    }\n\n    public async ModifyZSplitting(customerType_: string, modifications_: Array<IZSplittingModification>, configSuffix_?: string, instanceIdentFilter_?: Array<number> | undefined) {\n        var params = {\n            InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n            CustomerType: customerType_,\n            ConfigSuffix: configSuffix_ ? configSuffix_ : \"\",\n            modifications: modifications_\n        };\n        return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_ModifyZSplitting\", params, true);\n    }\n\n    public async EnableWebCabs(customerType_: string, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined): Promise<IWebCabApiUiData> {\n        const params = {\n            InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n            CustomerType: customerType_,\n            ConfigSuffix: configSuffix_ ? configSuffix_ : \"\"\n        };\n        return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_EnableWebCabs\", params, true);\n    }\n\n    public async DisableWebCabs(customerType_: string, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined): Promise<IWebCabApiUiData> {\n        const params = {\n            InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n            CustomerType: customerType_,\n            ConfigSuffix: configSuffix_ ? configSuffix_ : \"\"\n        };\n        return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_DisableWebCabs\", params, true);\n    }\n\n    public async SetDisableDimensionVisuals(customerType_: string, value_: number, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined) {\n        const params = {\n            InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n            CustomerType: customerType_,\n            ConfigSuffix: configSuffix_ ? configSuffix_ : \"\",\n            Value: value_\n        };\n        return await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_SetDisableDimensionVisuals\", params, true);\n    }\n\n    public async GetDisableDimensionVisuals(customerType_: string, configSuffix_?: string | undefined, instanceIdentFilter_?: Array<number> | undefined): Promise<boolean> {\n        const params = {\n            InstanceIdentFilter: instanceIdentFilter_ ? instanceIdentFilter_ : [],\n            CustomerType: customerType_,\n            ConfigSuffix: configSuffix_ ? configSuffix_ : \"\"\n        };\n        const result = await CommunicationMessageService.executeWebCabApiMessage(\"APIMessage_WebCab_GetDisableDimensionVisuals\", params, false);\n        if (result[\"disabled-in-scene\"]) {\n            return true;\n        }\n        if (result.webcabs) {\n            for (let index = 0; index < result.webcabs.length; ++index) {\n                const state = result.webcabs[index];\n                if (state) {\n                    return true;\n                }\n            }\n        }\n        return false;\n    }\n\n\n    public async GetPlanned(typeInfoFilter?: Array<number> | undefined): Promise<Array<IWebCabApiArticleResult>> {\n        const relevant = new Array<IWebCabApiArticleResult>();\n        const articles = await CommunicationMessageService.getPlannedArticles();\n        for (const article of articles) {\n            if (article.keys.includes(10017) || article.keys.includes(10019)) {\n                if (typeInfoFilter != undefined) {\n                    if (typeInfoFilter.includes(article.typeInfo)) {\n                        relevant.push(article);\n                    }\n                    continue;\n                }\n                relevant.push(article);\n            }\n        }\n        return relevant;\n    };\n\n}\n\nexport const WebCabApiService = new WebCabApiServiceClass();\n","import {INcsPickerData, IRalPickerData, ISikkensPickerData} from \"@dh-software/webui-types\";\nimport {CommunicationMessageService} from \"./communication-message.service\";\n\nconst rgbToHsv = function (rgb_str: string) {\n    const rgb = rgb_str.split(\",\").map((s)=>+s);\n    const r = rgb[0] / 255;\n    const g = rgb[1] / 255;\n    const b = rgb[2] / 255;\n\n    const max = Math.max(r, g, b);\n    const min = Math.min(r, g, b);\n    const delta = max - min;\n\n    let h, s;\n\n    if (delta === 0) {\n        h = 0;\n    }\n    else if (max === r) {\n        h = 60 * (((g - b) / delta) % 6);\n    }\n    else if (max === g) {\n        h = 60 * (((b - r) / delta) + 2);\n    }\n    else {\n        h = 60 * (((r - g) / delta) + 4);\n    }\n\n    if (h < 0) {\n        h += 360;\n    }\n\n    if (max === 0) {\n        s = 0;\n    }\n    else {\n        s = delta / max;\n    }\n\n    const v = max;\n\n    return [h, s, v];\n};\n\nclass ColorPickerServiceClass {\n\n    private sortColor(colors: Array<{code: string, key: string}>) {\n        const hsvlColors = colors.map(function(color: {code: string, key: string}): Array<{code: string, key: string} | number> {\n            const hsv = rgbToHsv(color.code);\n            return [hsv[0], hsv[1], hsv[2], color];\n        });\n        const count: Array<Array<Array<Array<{code: string, key: string}>>>> = [];\n        for (let h = 0; h <= 360; h++) {\n            count.push([]);\n            for (let s = 0; s <= 100; s++) {\n                count[h].push([]);\n                for (let v = 0; v <= 100; v++) {\n                    count[h][s].push([]);\n                }\n            }\n        }\n\n        // Zähle das Vorkommen jeder Kombination von Hue-, Saturation- und Luminanzwerten im Eingabearray\n        hsvlColors.forEach((color: Array<number | {code: string, key: string}>) => {\n            const h = Math.round(color[0] as number);\n            const s = Math.round(color[1] as number * 100);\n            const v = Math.round(color[2] as number * 100);\n            count[h][s][v].push(color[3] as {code: string, key: string});\n        });\n\n        // Erstelle ein neues Array, um die sortierten Farben zu speichern\n        const sortedColors = [];\n\n        // Füge jede Farbe in sortierter Reihenfolge zum neuen Array hinzu\n        for (let h = 0; h <= 360; h++) {\n            for (let s = 0; s <= 100; s++) {\n                for (let v = 0; v <= 100; v++) {\n                    sortedColors.push(count[h][s][v]);\n                }\n            }\n        }\n\n        return sortedColors;\n\n    }\n\n    public async getRal(options?: {manufacturer?: string}): Promise<IRalPickerData> {\n        options = options || {};\n        return await (CommunicationMessageService?.getColorPickerInfo({\n            manufacturer: options.manufacturer,\n            type: \"ral\"\n        }) as Promise<IRalPickerData>).then((data)=> {\n            return data;\n        }) as IRalPickerData;\n\n    }\n\n    public async getNCS(options?: {manufacturer?: string}): Promise<INcsPickerData> {\n        options = options || {};\n        return await (CommunicationMessageService?.getColorPickerInfo({\n            manufacturer: options.manufacturer,\n            type: \"ncs\"\n        }) as Promise<INcsPickerData>).then((data)=> {\n            return data;\n        }) as INcsPickerData;\n    }\n\n    public async getSikkens(options?: {manufacturer?: string}): Promise<ISikkensPickerData> {\n        options = options || {};\n        return await (CommunicationMessageService?.getColorPickerInfo({\n            manufacturer: options.manufacturer,\n            type: \"sikkens\"\n        }) as Promise<ISikkensPickerData>).then((data) => {\n            //SORT\n            return data;\n        }) as ISikkensPickerData;\n    }\n}\n\nexport const ColorPickerService = new ColorPickerServiceClass();\n","import {\n    IGetPropTransferParams,\n    IPropTransferCallbacks,\n    IPropTransferGroup,\n    IPropTransferItem,\n    IPropTransferManufacturer,\n    IPropTransferProgram\n} from \"@dh-software/webui-types\";\nimport {CommunicationMessageService} from \"../../service\";\n\nclass PropTransferModelClass {\n\n    public async get(options: IGetPropTransferParams): Promise<IPropTransferManufacturer | IPropTransferProgram | IPropTransferGroup | IPropTransferItem[]> {\n        return CommunicationMessageService.getPropTransfer(options);\n    }\n\n    public async getDeletable(): Promise<unknown> {\n        return CommunicationMessageService?.getDeletablePropTransfer();\n    }\n\n    public async traverse(callbacks: IPropTransferCallbacks, options: IGetPropTransferParams = {}) {\n        const transferObject = await this.get(options);\n        if (options.grouped) {\n            if (!options.manufacturer) {\n                await this.manufacturerCallback(callbacks, transferObject as IPropTransferManufacturer, options);\n            } else if (options.manufacturer && !options.program) {\n                await this.programCallback(callbacks, transferObject as IPropTransferProgram, options);\n            } else if (options.manufacturer && options.program) {\n                await this.groupCallback(callbacks, transferObject as IPropTransferGroup, options);\n            }\n        } else {\n            await this.itemCallback(callbacks, transferObject as Array<IPropTransferItem>);\n        }\n    }\n\n    private async manufacturerCallback(callbacks: IPropTransferCallbacks, transferObject_: IPropTransferManufacturer, options: IGetPropTransferParams) {\n        const transferObject = transferObject_;\n        const keys = transferObject ? Object.keys(transferObject) : [];\n        for (const manufacturer of keys) {\n            if (callbacks.manufacturerCallback) await callbacks.manufacturerCallback(manufacturer, transferObject[manufacturer]);\n            await this.programCallback(callbacks, transferObject[manufacturer], Object.assign(options, {manufacturer: manufacturer}));\n        }\n    }\n\n    private async programCallback(callbacks: IPropTransferCallbacks, transferObject_: IPropTransferProgram, options: IGetPropTransferParams) {\n        if (options.manufacturer) {\n            const transferObject = transferObject_;\n            const keys = Object.keys(transferObject);\n            for (const program of keys) {\n                if (callbacks.programCallback && options.manufacturer) await callbacks.programCallback(options.manufacturer, program, transferObject[program]);\n                await this.groupCallback(callbacks, transferObject[program], Object.assign(options, {program: program}));\n            }\n        }\n    }\n\n    private async groupCallback(callbacks: IPropTransferCallbacks, transferObject_: IPropTransferGroup, options: IGetPropTransferParams) {\n        if (options.manufacturer && options.program) {\n            const transferObject = transferObject_;\n            const keys = Object.keys(transferObject);\n            for (const group of keys) {\n                if (callbacks.groupCallback && options.manufacturer && options.program) await callbacks.groupCallback(options.manufacturer, options.program, group, transferObject[group]);\n                await this.itemCallback(callbacks, transferObject[group]);\n            }\n        }\n    }\n\n    private async itemCallback(callbacks: IPropTransferCallbacks, transferObject: Array<IPropTransferItem>) {\n        for (const item of transferObject) {\n            if (callbacks.itemsCallback) await callbacks.itemsCallback(item);\n        }\n    }\n\n}\n\nexport const PropTransferModel = new PropTransferModelClass();\n","import {\n    IGetProgPropertiesParams,\n    IProgProperty,\n    IProgPropertyCallback,\n    IProgPropertyFinishParamsCache,\n    IProgPropertyGroupInformation,\n    IProgPropertyGroupInformationExt,\n    IProgPropertyManufacturer,\n    IProgPropertyProgram,\n    IProgPropertyProgramFinishParams,\n    IProgPropertyRootList,\n    IProgPropertyValue\n} from \"@dh-software/webui-types\";\nimport { CommunicationMessageService } from \"../../service\";\n\nexport abstract class PropertyModelBase<T extends IProgPropertyManufacturer, Params> {\n\n    protected _cachedManufacturerList: IProgPropertyRootList<T> | undefined;\n    private _cachedGroupInformation: { [key: string]: { [key: string]: Array<IProgPropertyGroupInformationExt> } } = {};\n    private _cachedFinishParams: IProgPropertyFinishParamsCache = {};\n\n    abstract traverse(callbacks: IProgPropertyCallback<T>, params?: Params): Promise<boolean>;\n\n    public async getGroupInformation(manufacturer: string, program: string): Promise<IProgPropertyGroupInformationExt[]> {\n        return CommunicationMessageService?.getMerkmalGroupInformation({\n            manufacturer: manufacturer,\n            program: program\n        })\n    }\n\n    public async getFinishParams(manufacturer: string, program: string, association?: string, noCache = false): Promise<IProgPropertyProgramFinishParams> {\n        if (noCache || !this._cachedFinishParams[manufacturer] || !this._cachedFinishParams[manufacturer][program] || !this._cachedFinishParams[manufacturer][program][association ? association : \"unknown\"]) {\n            return CommunicationMessageService?.getFinishParams({\n                manufacturer, program, association\n            })\n                .then((data) => {\n                    if (!this._cachedFinishParams[manufacturer]) this._cachedFinishParams[manufacturer] = {};\n                    if (!this._cachedFinishParams[manufacturer][program]) this._cachedFinishParams[manufacturer][program] = {};\n                    if (association && !this._cachedFinishParams[manufacturer][program][association]) this._cachedFinishParams[manufacturer][program][association] = {};\n                    else if (!association && !this._cachedFinishParams[manufacturer][program][\"unknown\"]) this._cachedFinishParams[manufacturer][program][\"unknown\"] = {};\n                    this._cachedFinishParams[manufacturer][program][association ? association : \"unknown\"] = data;\n                    return this._cachedFinishParams[manufacturer][program][association ? association : \"unknown\"];\n                });\n        }\n        return Promise.resolve(this._cachedFinishParams[manufacturer][program][association ? association : \"unknown\"]);\n    }\n\n    protected async _traverse(callbacks: IProgPropertyCallback<T>, rootList: IProgPropertyRootList<T>, useCache_ = false, parameters?: IGetProgPropertiesParams) {\n        const manufacturerList: Array<T> = Object.values(rootList.children);\n        for (let mI = 0; mI < manufacturerList.length; mI++) {\n            const manufacturerModel: T = manufacturerList[mI];\n            callbacks.manufacturerCallback?.(manufacturerModel);\n\n            const programList: Array<IProgPropertyProgram> = Object.values(manufacturerModel.children);\n            for (let pI = 0; pI < programList.length; pI++) {\n                const programModel: IProgPropertyProgram = programList[pI];\n                const finishParams = await this.getFinishParams(manufacturerModel.manufacturerName, programModel.programName);\n                callbacks.programCallback?.(manufacturerModel, programModel);\n\n                let ppGroupInformation = await this._getGroupInformation(callbacks, manufacturerModel, programModel, useCache_);\n                ppGroupInformation = this.mergeGroupInformation(ppGroupInformation);\n\n                const progPropertyKeys: Array<string> = programModel.propertyKeyOrder || Object.keys(programModel.children);\n                for (let ppI = 0; ppI < progPropertyKeys.length; ppI++) {\n                    const progPropertyKey = progPropertyKeys[ppI];\n                    const progPropertyModel: IProgProperty = programModel.children[progPropertyKey];\n\n                    let progPropertyValueList: Array<IProgPropertyValue> = Object.values(progPropertyModel.children);\n                    const progPropertyFilteredValueList: Array<IProgPropertyValue> = [];\n\n                    const propertyFilter = parameters?.propertyFilters?.[progPropertyModel.id];\n                    if (propertyFilter) {\n                        const itemGroups = propertyFilter.filter.itemGroups;\n                        const isActive = !(itemGroups.length === 1 && itemGroups[0].filter.length === 0);\n\n                        if (isActive) {\n                            for (const group of itemGroups) {\n                                for (const itemKey of group.items) {\n                                    const propertyValue = progPropertyValueList.find(item => item.key === itemKey);\n                                    if (propertyValue) {\n                                        progPropertyFilteredValueList.push(propertyValue);\n                                    }\n                                }\n                            }\n                            progPropertyValueList = progPropertyFilteredValueList;\n                        }\n                    }\n\n                    let currentValue: IProgPropertyValue | undefined;\n                    if (progPropertyValueList.length > 1 || (progPropertyValueList.length === 1 && progPropertyValueList[0].key.toLowerCase().startsWith(\"[dh_ausf\"))) {\n                        currentValue = progPropertyValueList.find((ppValue) => {\n                            return ppValue.propertyKey === progPropertyModel.currentValue;\n                        });\n                    }\n                    callbacks.propertyCallback?.(manufacturerModel, programModel, progPropertyModel, progPropertyValueList, currentValue);\n\n                    if (ppGroupInformation && callbacks.propertyGroupedCallback) {\n                        let found = false;\n                        for (let ppGI = 0; ppGI < ppGroupInformation.length; ppGI++) {\n                            for (const key of ppGroupInformation[ppGI].keys) {\n                                if (key.key === +progPropertyModel.id) {\n                                    key.progPropertyModel = progPropertyModel;\n                                    key.progPropertyValueList = progPropertyValueList;\n                                    key.currentValue = currentValue;\n                                    found = true;\n                                    break;\n                                }\n                            }\n                            if (found) break;\n                        }\n                    }\n                }\n                if (ppGroupInformation && callbacks.propertyGroupedCallback) {\n                    for (let ppGI = 0; ppGI < ppGroupInformation.length; ppGI++) {\n                        const groupInformation = ppGroupInformation[ppGI];\n                        for (const propertyKey of progPropertyKeys) {\n                            groupInformation.keys.sort((a, b) => {\n                                return propertyKey.endsWith(a.key.toString()) ? 1 : propertyKey.endsWith(b.key.toString()) ? -1 : 0;\n                            });\n                        }\n                        if (!groupInformation?.title) {\n                            for (const groupElement of groupInformation.keys) {\n                                const groupDummy = {\n                                    keys: [groupElement],\n                                    title: groupElement.progPropertyModel?.name || \"\",\n                                    img: groupInformation.img,\n                                    id: groupInformation.id\n                                };\n                                const response = await callbacks.propertyGroupedCallback({\n                                    manufacturerModel: manufacturerModel,\n                                    programModel: programModel,\n                                    propertyGroup: groupDummy,\n                                    finishParams: finishParams\n                                })\n                                    .then(() => {\n                                        return true;\n                                    })\n                                    .catch((e) => {\n                                        return false;\n                                    });\n                                if (!response) return false;\n                            }\n                            continue;\n                        }\n                        const response = await callbacks.propertyGroupedCallback({\n                            manufacturerModel: manufacturerModel,\n                            programModel: programModel,\n                            propertyGroup: ppGroupInformation[ppGI],\n                            finishParams: finishParams\n                        })\n                            .then(() => {\n                                return true;\n                            })\n                            .catch((e) => {\n                                return false;\n                            });\n                        if (!response) return false;\n                    }\n                }\n            }\n        }\n        return true;\n    }\n\n    public async _getGroupInformation(callbacks: IProgPropertyCallback<T>, manufacturerModel: IProgPropertyManufacturer, programModel: IProgPropertyProgram, useCache_ = false): Promise<IProgPropertyGroupInformationExt[] | undefined> {\n        let ppGroupInformation: IProgPropertyGroupInformationExt[] | undefined =\n            callbacks.propertyGroupedCallback ? this._cachedGroupInformation && useCache_ && this._cachedGroupInformation[manufacturerModel.manufacturerName] && this._cachedGroupInformation[manufacturerModel.manufacturerName][programModel.programName] ?\n                    this._cachedGroupInformation[manufacturerModel.manufacturerName][programModel.programName] :\n                    await this.getGroupInformation(manufacturerModel.manufacturerName, programModel.programName) :\n                undefined;\n        if (ppGroupInformation) {\n            ppGroupInformation = await this._fetchImages(ppGroupInformation, manufacturerModel, programModel);\n            if (!this._cachedGroupInformation[manufacturerModel.manufacturerName]) this._cachedGroupInformation[manufacturerModel.manufacturerName] = {};\n            if (useCache_) {\n                this._cachedGroupInformation[manufacturerModel.manufacturerName][programModel.programName] = ppGroupInformation;\n            }\n        }\n        return ppGroupInformation;\n    }\n\n    private async _fetchImages(ppGroupInformation: IProgPropertyGroupInformation[], manufacturerModel: IProgPropertyManufacturer, programModel: IProgPropertyProgram): Promise<IProgPropertyGroupInformationExt[]> {\n        return await Promise.all(ppGroupInformation.map(async group => {\n            return Object.assign(group, {\n                imgSrc: group.img ? await CommunicationMessageService.getMediaUrl(manufacturerModel.manufacturerName, \"\", \"groups\", group.img, true, false) : undefined,\n            });\n        }));\n    }\n\n    public mergeGroupInformation(groups?: IProgPropertyGroupInformation[]) {\n        if (!groups) return undefined;\n        const merged: { [key: string]: IProgPropertyGroupInformation } = {};\n        groups.forEach(item => {\n            const id = Object.keys(merged).find(prefix => item.id.startsWith(prefix)) || item.id;\n            if (!merged[id]) {\n                merged[id] = Object.assign(item, {\n                    id: id,\n                    title: item.title,\n                    img: item.img,\n                });\n            }\n            merged[id].keys = Array.from(\n                new Map(\n                    [...(merged[id].keys || []), ...(item.keys || [])].map(k => [k.key, k])\n                ).values()\n            );\n            //merged[id].keys = merged[id].keys.concat(item.keys);\n        });\n        return Object.values(merged);\n    }\n\n}\n","import {\n    IGetProgPropertiesParams,\n    IProgProperty,\n    IProgPropertyCallback,\n    IProgPropertyExt,\n    IProgPropertyManufacturer,\n    IProgPropertyProgram,\n    IProgPropertyRootList,\n    IProgPropertyValue\n} from \"@dh-software/webui-types\";\nimport {PropertyModelBase} from \"./property-model.base\";\nimport {CommunicationMessageService} from \"../../service\";\n\nclass ProgPropertyModelClass extends PropertyModelBase<IProgPropertyManufacturer, IGetProgPropertiesParams> {\n\n    public async get(params: IGetProgPropertiesParams) {\n        return CommunicationMessageService.getProgProperties(params);\n    }\n\n    public async findMany(manufacturer_?: string, program_?: string, propertyKey_?: Array<string>, useCache_ = false): Promise<{\n        [key: string]: IProgPropertyExt\n    }> {\n        const propertyItems: { [key: string]: IProgPropertyExt } = {};\n        await this.traverse({\n            propertyCallback: (manufacturer: IProgPropertyManufacturer, program: IProgPropertyProgram, property: IProgProperty, values: IProgPropertyValue[], current?: IProgPropertyValue) => {\n                if (propertyKey_?.indexOf(property.key) !== -1 && manufacturer.manufacturerName === manufacturer_ && program.programName === program_) {\n                    propertyItems[property.key] = Object.assign(manufacturer, program, property, {currentValue: current});\n                }\n            }\n        });\n        return propertyItems;\n    }\n\n    public async findOne(manufacturer_?: string, program_?: string, propertyKey_?: string, useCache_ = false): Promise<IProgPropertyExt | undefined> {\n        let propertyItem: IProgPropertyExt | undefined;\n        await this.traverse({\n            propertyCallback: (manufacturer: IProgPropertyManufacturer, program: IProgPropertyProgram, property: IProgProperty) => {\n                if (property.key === propertyKey_ && manufacturer.manufacturerName === manufacturer_ && program.programName === program_) {\n                    propertyItem = Object.assign(manufacturer, program, property);\n                }\n            }\n        });\n        return propertyItem;\n    }\n\n    public async find(manufacturer?: string, program?: string, useSelection_?: boolean, useRelevant_?: boolean, fullHierarchy_?: boolean, instanceIdents_?: Array<number>): Promise<IProgPropertyRootList<IProgPropertyManufacturer> | IProgPropertyManufacturer | IProgPropertyProgram> {\n        return CommunicationMessageService?.getProgProperties({\n            manufacturer: manufacturer,\n            program: program,\n            useSelection: useSelection_,\n            useRelevant: useRelevant_,\n            fullHierarchy: fullHierarchy_,\n            instanceIdents: instanceIdents_\n        });\n    }\n\n    public async findAll(useSelection_?: boolean, useRelevant_?: boolean, instanceIdents_?: Array<number>): Promise<IProgPropertyRootList<IProgPropertyManufacturer>> {\n        return await this.find(undefined, undefined, useSelection_, useRelevant_, true, instanceIdents_) as IProgPropertyRootList<IProgPropertyManufacturer>;\n    }\n\n    public async traverse(callbacks: IProgPropertyCallback<IProgPropertyManufacturer>, parameters?: IGetProgPropertiesParams): Promise<boolean> {\n        if(!parameters) {\n            parameters = {\n                useSelection: true,\n                useRelevant: true,\n                fullHierarchy: true\n            };\n        }\n        const useCache_ = (!!this._cachedManufacturerList)\n        const cachedValue = this._cachedManufacturerList || await this.get(parameters);\n        const ppManufacturerList: IProgPropertyRootList<IProgPropertyManufacturer> = useCache_ ? cachedValue : await this.get(parameters);\n        this._cachedManufacturerList = useCache_ ? ppManufacturerList : undefined;\n        if (!ppManufacturerList || !ppManufacturerList.children) {\n            return false;\n        }\n        return this._traverse(callbacks, ppManufacturerList, useCache_, parameters);\n    }\n\n}\nexport const ProgPropertyModel = new ProgPropertyModelClass();\n","import {PropertyModelBase} from \"./property-model.base\";\nimport {\n    ContextFilterStrategy,\n    IDisposeContextParameters,\n    IGetProgContextParameters,\n    IInitProgContextParameters,\n    IProgPropertyCallback,\n    IProgPropertyContext,\n    IProgPropertyExt,\n    IProgPropertyRootList\n} from \"@dh-software/webui-types\";\nimport {CommunicationMessageService} from \"../../service\";\n\nclass ProgContextModelClass extends PropertyModelBase<IProgPropertyContext, IGetProgContextParameters> {\n\n    public async initialize(parameters: IInitProgContextParameters){\n        return CommunicationMessageService.initializePropertyContext(parameters);\n    }\n\n    public async get(parameters: IGetProgContextParameters) {\n        return CommunicationMessageService.getPropertyContext(parameters);\n    }\n\n    public async dispose(parameters: IDisposeContextParameters) {\n        return CommunicationMessageService.disposePropertyContext(parameters);\n    }\n\n    public async findMany(context_?: string, manufacturer_?: string, program_?: string, propertyKey_?: Array<string>): Promise<{\n        [key: string]: IProgPropertyExt\n    }> {\n        const propertyItems: { [key: string]: IProgPropertyExt } = {};\n        await this.traverse({\n            propertyCallback: (manufacturer, program, property, values, current) => {\n                if (propertyKey_?.indexOf(property.key) !== -1 && manufacturer.manufacturerName === manufacturer_ && program.programName === program_) {\n                    propertyItems[property.key] = Object.assign(manufacturer, program, property, {currentValue: current});\n                }\n            }\n        }, {useRelevant: true, useSelection: true, filterStrategy: ContextFilterStrategy.LOCAL});\n        return propertyItems;\n    }\n\n    public async findOne(manufacturer_?: string, program_?: string, propertyKey_?: string): Promise<IProgPropertyExt | undefined> {\n        let propertyItem: IProgPropertyExt | undefined;\n        await this.traverse({\n            propertyCallback: (manufacturer, program, property) => {\n                if (property.key === propertyKey_ && manufacturer.manufacturerName === manufacturer_ && program.programName === program_) {\n                    propertyItem = Object.assign(manufacturer, program, property);\n                }\n            }\n        }, {useRelevant: true, useSelection: true, filterStrategy: ContextFilterStrategy.LOCAL});\n        return propertyItem;\n    }\n\n    public async findAll(useSelection_?: boolean, useRelevant_?: boolean, instanceIdents_?: Array<number>, filterStrategy?: ContextFilterStrategy): Promise<IProgPropertyRootList<IProgPropertyContext>> {\n        return await this.get({\n            manufacturer: undefined,\n            program: undefined,\n            useSelection: useSelection_,\n            useRelevant: useRelevant_,\n            instanceIdents: instanceIdents_,\n            filterStrategy: filterStrategy\n        }) as IProgPropertyRootList<IProgPropertyContext>;\n    }\n\n    public async traverse(callbacks: IProgPropertyCallback<IProgPropertyContext>, parameters?: IGetProgContextParameters): Promise<boolean> {\n        if(!parameters) {\n            parameters = {\n                useRelevant: true,\n                useSelection: true\n            };\n        }\n        const useCache_ = (!!this._cachedManufacturerList)\n        const cachedValue = this._cachedManufacturerList || await this.get(parameters);\n        const ppManufacturerList: IProgPropertyRootList<IProgPropertyContext> = useCache_ ? cachedValue : await this.get(parameters);\n        this._cachedManufacturerList = useCache_ ? ppManufacturerList : undefined;\n        if (!ppManufacturerList || !ppManufacturerList.children) {\n            return false;\n        }\n        return this._traverse(callbacks, ppManufacturerList, useCache_);\n    }\n\n}\nexport const ProgContextModel = new ProgContextModelClass()\n","import {\n    ConfigurationService,\n    EventFactoryService,\n    EventService,\n    globalEventBus,\n    LocaleService,\n    RequestService,\n    WebViewerService,\n    throttle,\n    getAdaptiveTimeout\n} from \"@dh-software/webui-api\";\nimport {IEvent, ILayoutElement, IModuleElement, IProperty, IRootLayoutElement, IRootStylesElement} from \"../types\";\nimport {LocaleList} from \"@dh-software/webui-types\";\n\nclass ConstructionServiceClass {\n\n    private _configuration?: IRootLayoutElement;\n    private isInitialized?: Promise<void>;\n    private preventLeaveConfirmation = false;\n\n    constructor() {\n        document.addEventListener('readystatechange', async () => {\n            await ConfigurationService.Initialized;\n            const configuration = await RequestService.fetchJSON(await RequestService.buildRequestURL(\"config/layout.json\"));\n            const styles = await RequestService.fetchJSON(await RequestService.buildRequestURL(\"config/styles.json\"));\n\n            await this.initialize(configuration, styles);\n        });\n        window.addEventListener(\"beforeunload\", (event: BeforeUnloadEvent) => {\n            if (!this.preventLeaveConfirmation && window.g_configuration?.request_leave_confirmation) {\n                event.preventDefault();\n                event.returnValue = \"\";\n            }\n        });\n    }\n\n    get IsInitialized() {\n        return this.isInitialized;\n    }\n\n    get PreventLeaveConfirmation() {\n        return this.preventLeaveConfirmation;\n    }\n\n    set PreventLeaveConfirmation(value_: boolean) {\n        this.preventLeaveConfirmation = value_;\n    }\n\n    public get CustomMailService() {\n        return this._configuration?.customMailService;\n    }\n\n    public async getLocales(): Promise<LocaleList | undefined> {\n        await this.IsInitialized;\n        if (this._configuration) {\n            return this._configuration.locales;\n        }\n        return undefined;\n    }\n\n    private async TranslatePageTitle(configuration: IRootLayoutElement) {\n        if (configuration.locales) {\n            await LocaleService.AddSource(configuration.locales);\n            const translation = LocaleService.translate(\"furnview-app-title\", document.title);\n            document.title = translation;\n            const element = document.querySelector(\"title\");\n            element?.addEventListener(\"template-loader-template-config-applied\", (event: CustomEventInit) => {\n                if (event.detail[\"template-config\"].value.length < 1) {\n                    document.title = LocaleService.translate(\"furnview-app-title\", translation);\n                }\n            });\n        }\n        if (configuration[\"locale-overrides\"]) {\n            await LocaleService.AddOverrides(configuration[\"locale-overrides\"]);\n        }\n    }\n\n    private SetDocumentLanguageCode() {\n        const langCode = LocaleService.getLanguage();\n        if (document && document.documentElement) {\n            document.documentElement.lang = langCode;\n        }\n    }\n\n    private loadChildren(module: IModuleElement, component: HTMLElement) {\n        if (module.children) {\n            const children = new Array<HTMLElement>();\n            for (let child of module.children) {\n                const childElement = this.loadComponent(child);\n                component[module.prepend ? \"prepend\" : \"append\"](childElement);\n                children.push(childElement);\n            }\n            component.dispatchEvent(new CustomEvent(\"construction-service-children-loaded\", {detail: {\"children\": children}}));\n        }\n    }\n\n    async loadStylesheets(currentModule: IModuleElement | ILayoutElement, element: Element) {\n        if (!currentModule.customCSS) return;\n\n        const rawCSS = Array.isArray(currentModule.customCSS) ? currentModule.customCSS : [currentModule.customCSS];\n        let promise: Promise<any> = Promise.resolve()\n        // @ts-ignore\n        if(!element.shadowRoot && (promise = element.getUpdateComplete) !== undefined) {\n            await promise\n        }\n        const shadowRoot = element.shadowRoot;\n\n        if (shadowRoot) {\n            try {\n                const stylesheets = rawCSS.map(css => {\n                    const sheet = new CSSStyleSheet();\n                    sheet.replaceSync(css);\n                    return sheet;\n                });\n                shadowRoot.adoptedStyleSheets = [...shadowRoot.adoptedStyleSheets, ...stylesheets];\n            } catch (ex) {\n                rawCSS.forEach(css => {\n                    const style = document.createElement('style');\n                    style.textContent = css;\n                    shadowRoot.appendChild(style);\n                });\n            }\n        } else {\n            rawCSS.forEach((css, index) => {\n                const tag = currentModule.tag || (<any>currentModule)?.[\"query\"] || element.tagName.toLowerCase();\n                const cacheKey = `${tag}-${index}`;\n\n                if (element.querySelector(`style[data-css-module=\"${cacheKey}\"]`)) return;\n                const style = document.createElement('style');\n                style.setAttribute('data-css-module', cacheKey);\n                style.textContent = css;\n                if(element === document.body) {\n                    document.head.appendChild(style);\n                } else {\n                    element.prepend(style);\n                }\n            });\n        }\n    }\n\n    private loadStyleVars(module: IModuleElement, component: HTMLElement | Element | any) {\n        if (module.styleVars) {\n            Object.keys(module.styleVars)\n                .forEach((key) => {\n                    if (key.startsWith(\"--\")) { //For Security\n                        component.style.setProperty(key, module.styleVars?.[key]);\n                    }\n                });\n            if (component.requestUpdate) component.requestUpdate();\n        }\n    }\n\n    private loadEvents(module: IModuleElement, component: HTMLElement | Element) {\n        if (module.events && Array.isArray(module.events)) {\n            module.events\n                .forEach((event: IEvent) => {\n                    if (event.id) {\n                        component.addEventListener(event.defaultEvent || \"click\", async (ev: Event | CustomEvent) => {\n                            let eventData = event.data;\n                            if (ev instanceof CustomEvent) {\n                                eventData = JSON.stringify(eventData).replace(\"!$value\", ev.detail.value);\n                                eventData = JSON.parse(eventData);\n                            }\n                            await EventService.emitAsync(event.id, { data: eventData || {}, target: event.target || undefined });\n                        });\n                    }\n                });\n        }\n    }\n\n    private loadSceneEvents(configuration: IRootLayoutElement) {\n        const sceneEvents = configuration[\"scene-events\"];\n        if (!sceneEvents) return;\n\n        for (const eventName of Object.keys(sceneEvents)) {\n            const eventData = sceneEvents[eventName];\n            const handlers = eventData.events;\n            const executeAsynchronously = eventData[\"execute-async\"] != undefined ? eventData[\"execute-async\"] : false;\n            const throttlingTimeout = eventData[\"throttling-timeout\"] as { min: number, max: number, baseline: number, modifier: number } | undefined;\n\n            // EventFactoryService-Listener anhand des JSON-Keys auflösen (Keys = Property-Namen)\n            const listener = (EventFactoryService as any)[eventName];\n            if (!listener || typeof listener.register !== \"function\") {\n                console.warn(`scene-events: unbekanntes EventFactoryService-Event \"${eventName}\"`);\n                continue;\n            }\n\n            const baseHandler = async () => {\n                for (const handler of handlers) {\n                    if (executeAsynchronously) {\n                        EventService.emitAsync(handler.id, { data: handler.data || {}, target: undefined });\n                    } else {\n                        await EventService.emitAsync(handler.id, { data: handler.data || {}, target: undefined });\n                    }\n                }\n            };\n\n            const registeredHandler =\n                throttlingTimeout === undefined\n                    ? baseHandler\n                    : throttle(baseHandler, getAdaptiveTimeout(throttlingTimeout.baseline, throttlingTimeout.min, throttlingTimeout.max, throttlingTimeout.modifier));\n\n            listener.register(registeredHandler);\n        }\n    }\n\n    private loadProperties(currentModule: IModuleElement, element: any) {\n        const setProperty = (property: IProperty) => {\n            if (typeof property.value === \"boolean\" && property.attribute && property.value) element.setAttribute(property.key, \"\");\n            else if (typeof property.value === \"boolean\" && property.attribute && !property.value) element.removeAttribute(property.key, \"\");\n            else if (typeof property.value === \"object\" && property.attribute) element.setAttribute(property.key, JSON.stringify(property.value));\n            else {\n                if (!property.attribute) {\n                    element[property.key] = property.value;\n                } else {\n                    element.setAttribute(property.key, property.value);\n                }\n            }\n        }\n        if (currentModule.properties && element) {\n            for (let property of currentModule.properties) {\n                const readyValue = property.readyValue;\n                if (readyValue) {\n                    WebViewerService.IsAppReady.then(() => {\n                        setProperty(Object.assign(property, {value: readyValue.value}));\n                    });\n                }\n                setProperty(property);\n            }\n        }\n    }\n\n    private loadClasses(currentModule: IModuleElement, element: Element) {\n        if (currentModule.classes && element) {\n            element.classList.add(...currentModule.classes);\n        }\n    }\n\n    private loadComponent(module: IModuleElement) {\n        const component: any = document.createElement(module.tag);\n        this.loadClasses(module, component);\n        this.loadProperties(module, component);\n        this.loadStyleVars(module, component);\n        this.loadStylesheets(module, component);\n        this.loadEvents(module, component);\n        return component;\n    }\n\n    async loadModule(currentModule: IModuleElement, element: Element) {\n        const component = this.loadComponent(currentModule);\n        element[currentModule.prepend ? \"prepend\" : \"append\"](component);\n        if (currentModule.execute && component) {\n            Object.values(currentModule.execute)\n                .forEach((execFunc: any) => {\n                    component[execFunc.name].apply(execFunc.arguments ? execFunc.arguments : []);\n                });\n        }\n\n        if (component == undefined || component.getUpdateComplete == undefined) {\n            console.error(\"component: [\" + currentModule.tag + \"] could not be loaded!\");\n            return;\n        }\n\n        await component.getUpdateComplete();\n        if (currentModule.modules) {\n            for (let module of currentModule.modules) {\n                await this.loadModule(module, component);\n            }\n        }\n        if (currentModule.areas) {\n            for (let cArea of currentModule.areas) {\n                await this.loadArea(cArea, component);\n            }\n        }\n        this.loadChildren(currentModule, component);\n    }\n\n    async loadArea(area: ILayoutElement, parentElement: Element | Document) {\n        let element = null;\n        if (area.queryAll) {\n            element = parentElement.querySelectorAll(area.query);\n            if ((!element || element.length === 0) && (parentElement as HTMLElement).shadowRoot) {\n                element = (parentElement as HTMLElement)?.shadowRoot?.querySelectorAll(area.query);\n            }\n        } else if (area.query) {\n            element = parentElement.querySelector(area.query);\n            if (!element && (parentElement as HTMLElement).shadowRoot) {\n                element = (parentElement as HTMLElement)?.shadowRoot?.querySelector(area.query);\n            }\n        } else {\n            element = parentElement;\n        }\n\n        if (!element) {\n            console.warn(\"loadArea failed to find target!\");\n        }\n\n\n        const eventFunc = async (area: ILayoutElement, parentElement: Element | Document, element: Element) => {\n\n            if (element) {\n                if (area.modules) {\n                    for (let module of area.modules) {\n                        await this.loadModule(module, element);\n                    }\n                }\n                if (area.areas) {\n                    for (let cArea of area.areas) {\n                        await this.loadArea(cArea, element);\n                    }\n                }\n                this.loadProperties(area, element);\n                this.loadStyleVars(area, element);\n                this.loadStylesheets(area, element);\n                this.loadEvents(area, element);\n                this.loadClasses(area, element);\n            }\n        }\n\n        if (element && element instanceof NodeList && element.length) {\n            for (let i = 0; i < element.length; i++) {\n                await eventFunc(area, parentElement, element[i]);\n            }\n        } else {\n            await eventFunc(area, parentElement, element as Element);\n        }\n\n        if (element && (element as Element).dispatchEvent) {\n            (element as Element).dispatchEvent(new CustomEvent(\"area-updated\", {detail: {}}));\n        }\n    }\n\n    async initialize(configuration: IRootLayoutElement, styles?: IRootStylesElement) {\n        if (!document.body.classList.contains(\"construction-container\")) {\n            return;\n        }\n        // console.log(\"Construction> Building Layout\", configuration, styles);\n        if (document.body.classList.contains(\"initialHide\")) {\n            document.body.classList.remove(\"initialHide\");\n            document.body.classList.add(\"hidden\");\n        }\n        let layout = configuration\n        if (layout?.mergeErrors) {\n            for (const mergeError of layout.mergeErrors) {\n                console.error(mergeError[\"pre-text\"], mergeError[\"overwriting-object\"], mergeError[\"post-text\"]);\n            }\n        }\n        console.log(\"layout json:\", layout);\n\n        let configurationJson = JSON.stringify(layout);\n        configurationJson = configurationJson.replace(/webui\\//g, `webui-content/${new URL(window.location.href).searchParams.get(\"token\")}/`);\n        configurationJson = configurationJson.replace(/:token\\//g, `${new URL(window.location.href).searchParams.get(\"token\")}/`);\n        layout = JSON.parse(configurationJson);\n        this._configuration = layout;\n        if (layout) {\n            this.loadSceneEvents(layout);\n        }\n\n        if (styles) {\n            for (const style of styles?.styles || []) {\n                const styleElement = document.createElement(\"style\");\n                styleElement.appendChild(document.createTextNode(style));\n                document.head.appendChild(styleElement);\n            }\n        }\n        if (layout && styles) {\n            await this.TranslatePageTitle(layout);\n            await this.loadArea(layout, document);\n            if (!WebViewerService.FurnviewWebViewer) {\n                WebViewerService.initialize(undefined);\n            }\n            this.SetDocumentLanguageCode();\n            document.body.classList.remove(\"hidden\");\n            globalEventBus.emit(\"construction:initialize\");\n        }\n    }\n\n}\n\nexport const ConstructionService = new ConstructionServiceClass();\n"],"x_google_ignoreList":[0,1,10,11,12,13],"mappings":"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"}
\ No newline at end of file
diff --git a/configurations/14243/public/layout1.json b/configurations/14243/public/layout1.json
index 20c213b..d8c4a1a 100644
--- a/configurations/14243/public/layout1.json
+++ b/configurations/14243/public/layout1.json
@@ -58,5 +58,205 @@
                 
             ]
         }
-    ]
+    ],
+    "theme": {
+        "colors": {
+            "--primary-text-color": {
+                "type": "color",
+                "default": "#000000",
+                "name": "Text Primärfarbe",
+                "description": "Dies ist die Primärfarbe der Oberfläche."
+            },
+            "--primary-button-text-color": {
+                "type": "color",
+                "default": "#000000",
+                "name": "Button-Text Primärfarbe",
+                "description": "Dies ist die Primärfarbe der Buttons der Oberfläche."
+            },
+            "--primary-color": {
+                "type": "color",
+                "default": "#e4322b",
+                "name": "Primärfarbe",
+                "description": "Dies ist die Primärfarbe der Oberfläche."
+            },
+            "--primary-background-color": {
+                "type": "color",
+                "default": "#e4322b",
+                "name": "Hintergrund Primärfarbe",
+                "description": "Dies ist die Hintergrund Primärfarbe der Elemente."
+            },
+            "--hover-background-color": {
+                "type": "color",
+                "default": "#e4322b",
+                "name": "Button Variante 1 Hover",
+                "description": "Dies ist die Hoverfarbe 1 der Buttons, falls vorhanden."
+            },
+            "--hover-background-color-secondary": {
+                "type": "color",
+                "default": "#dedede",
+                "name": "Button Variante 2 Hover",
+                "description": "Dies ist die Hoverfarbe 2 der Buttons, falls vorhanden."
+            },
+            "--click-background-color-secondary": {
+                "type": "color",
+                "default": "#f0f0f0",
+                "name": "Button Variante 2 Click",
+                "description": "Dies ist die Clickfarbe 2 der Buttons, falls vorhanden."
+            },
+            "--bordered-color": {
+                "type": "color",
+                "default": "#e4322b",
+                "name": "Kantenlinienfarbe",
+                "description": "Dies ist die Kantenlinienfarbe der Elemente."
+            }
+        },
+        "template": {
+            "page-title": {
+                "type": "string",
+                "value": "Furnview",
+                "description": "Title der Seite",
+                "name": "Seitentitle"
+            },
+            "privacy-link": {
+                "type": "attribute",
+                "attribute": "privacylink",
+                "varType": "string",
+                "default": "https://www.dh-software.de/kontakt/datenschutz/",
+                "name": "Datenschutzbestimmungslink",
+                "description": "Link zur Datenschutzbestimmung"
+            },
+            "shopping-cart": {
+                "type": "boolean",
+                "default": false,
+                "name": "Warenkorb",
+                "description": "Warenkorb-Button anzeigen."
+            },
+            "save-pdf": {
+                "type": "boolean",
+                "default": true,
+                "name": "PDF Speichern",
+                "description": "PDF-Speichern Button anzeigen."
+            },
+            "save-obj": {
+                "type": "boolean",
+                "default": false,
+                "name": "OBJ Speichern",
+                "description": "OBJ-Speichern Button anzeigen.",
+                "manufactureronly": true
+            },
+            "save-skp": {
+                "type": "boolean",
+                "default": false,
+                "name": "SKP Speichern",
+                "description": "SKP-Speichern Button anzeigen.",
+                "manufactureronly": true
+            },
+            "save-dxf": {
+                "type": "boolean",
+                "default": false,
+                "name": "DXF Speichern",
+                "description": "DXF-Speichern Button anzeigen.",
+                "manufactureronly": true
+            },
+            "save-xml": {
+                "type": "boolean",
+                "default": false,
+                "name": "XML Speichern",
+                "description": "XML-Speichern Button anzeigen.",
+                "manufactureronly": true
+            },
+            "save-xls": {
+                "type": "boolean",
+                "default": false,
+                "name": "XLS Speichern",
+                "description": "XLS-Speichern Button anzeigen."
+            },
+            "send-inquiry": {
+                "type": "boolean",
+                "default": false,
+                "name": "Anfrage senden",
+                "description": "Anfrage senden Button anzeigen."
+            },
+            "properties-container": [
+                {
+                    "type": "attribute",
+                    "attribute": "disableNotSettable",
+                    "varType": "boolean",
+                    "default": false,
+                    "name": "Nicht änderbare Ausführungen deaktivieren",
+                    "description": ""
+                },
+                {
+                    "type": "attribute",
+                    "attribute": "mode-selection",
+                    "varType": "boolean",
+                    "default": true,
+                    "name": "Pick-Level Dropdown anzeigen",
+                    "description": ""
+                }
+            ],
+            "enable-programselection": {
+                "type": "boolean",
+                "default": false,
+                "name": "Modellauswahl aktivieren",
+                "description": "Modellauswahl vor der Konfiguration anzeigen."
+            },
+            "language_picker": {
+                "type": "boolean",
+                "default": false,
+                "name": "Sprachauswahl aktivieren",
+                "description": "Sprachauswahl während der Konfiguration möglich"
+            },
+            "program-selection": [
+                {
+                    "type": "attribute",
+                    "attribute": "override-initial-article",
+                    "varType": "boolean",
+                    "default": false,
+                    "name": "Konfigurator-Artikel automatisch platzieren",
+                    "description": "Wenn kein Intial-Artikel angegeben, ersten Konfigurator-Artikel laden"
+                },
+                {
+                    "type": "attribute",
+                    "attribute": "prevent-confirmation-modal",
+                    "varType": "boolean",
+                    "default": false,
+                    "name": "Es dürfen mehrere Modelle kombiniert werden",
+                    "description": "Zeigt eine bestätigung beim wechseln des Programs an"
+                }
+            ],
+            "card_container_dimension_filter": {
+                "type": "boolean",
+                "default": true,
+                "name": "Dimensionsfilter anzeigen",
+                "description": "Dimensionsfilter für die Artikelübersicht ein/ausschalten"
+            },
+            "filter-popup": {
+                "type": "boolean",
+                "default": true,
+                "name": "Filter popup",
+                "description": "Filter als Popup oder inline der Artikelliste anzeigen"
+            },
+            "enable-article-list": {
+                "type": "boolean",
+                "default": true,
+                "name": "Artikelauflistung anzeigen",
+                "description": "Step Artikelauflistung anzeigen."
+            },
+            "enable-equipment-list": {
+                "type": "boolean",
+                "default": true,
+                "name": "Zubehör anzeigen",
+                "description": "Step Zubehör anzeigen."
+            }
+        },
+        "mail": {
+            "to": {
+                "type": "string",
+                "default": "",
+                "name": "Auftrags E-Mail Adresse",
+                "description": "Standard Auftrags E-Mail Empfänger."
+            }
+        }
+    }
 }
diff --git a/configurations/14243/public/layout2.json b/configurations/14243/public/layout2.json
index a59b806..569b4cc 100644
--- a/configurations/14243/public/layout2.json
+++ b/configurations/14243/public/layout2.json
@@ -68,5 +68,13 @@
             ],
             "areas": []
         }
-    ]
+    ],
+    "theme": {
+        "colors": {
+        },
+        "template": {
+        },
+        "mail": {
+        }
+    }
 }

--
Gitblit v1.9.3