@net7/boilerplate-arianna 5.2.23-rc2 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"net7-boilerplate-arianna.mjs","sources":["../../../projects/n7-boilerplate-arianna/src/lib/data-sources/linked-objects.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/autocomplete-wrapper.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/bubble-chart.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/chart-tippy.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/carousel.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/hero.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/table.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/home-hero-patrimonio.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/home-facets-wrapper.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/home-item-tags-wrapper.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/home-autocomplete.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/entita-nav.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/entita-metadata-viewer.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/related-entities.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-breadcrumbs.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-dropdown.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/sidebar-header.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-image.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-image-iiif.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-inner-title.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-metadata.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-pdf.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/tree.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/helpers/node.helper.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/extended-tree.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-image-navigator.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-search.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/search-layout-tabs.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/search/entity-links.helper.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/aw-facets-wrapper.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/gallery-results.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/map.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/timeline.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/index.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/hero.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/home-facets-wrapper.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/home-hero-patrimonio.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/home-item-tags-wrapper.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/home-autocomplete.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/entita-nav.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/scheda-breadcrumbs.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/sidebar-header.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/tree.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/scheda-dropdown.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/scheda-pdf.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/extended-tree.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/scheda-image-navigator.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/scheda-search.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/search-layout-tabs.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/aw-facets-wrapper.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/gallery-results.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/map.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/timeline.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/linked-objects.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/autocomplete-wrapper.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/bubble-chart.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/table.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/chart-tippy.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/index.ts","../../../projects/n7-boilerplate-arianna/src/lib/helpers/title.helper.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/collection-layout/collection-layout.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/collection-layout/collection-layout.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/collection-layout/collection-layout.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/collection-layout/collection-layout.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/collection-layout/collection-layout.html","../../../projects/n7-boilerplate-arianna/src/lib/helpers/metadata.helper.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/entita-layout/entita-layout.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/entita-layout/entita-layout.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/entita-layout/entita-layout.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/smart-breadcrumbs/smart-breadcrumbs.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/smart-breadcrumbs/smart-breadcrumbs.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/entita-layout/entita-layout.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/entita-layout/entita-layout.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/search-layout/search-facets.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/search/aw-facet-inputs/aw-facet-input.ts","../../../projects/n7-boilerplate-arianna/src/lib/search/aw-facet-inputs/aw-facet-input-checkbox.ts","../../../projects/n7-boilerplate-arianna/src/lib/search/aw-facet-inputs/aw-facet-input-link.ts","../../../projects/n7-boilerplate-arianna/src/lib/search/aw-facet-inputs/aw-facet-input-select.ts","../../../projects/n7-boilerplate-arianna/src/lib/search/aw-facet-inputs/aw-facet-input-text.ts","../../../projects/n7-boilerplate-arianna/src/lib/search/aw-search.model.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/search-layout/search-layout.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/gallery-layout/gallery-facets.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/gallery-layout/gallery-layout.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/search-layout/search-layout.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/gallery-layout/gallery-layout.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/gallery-layout/gallery-layout.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/search/aw-search.service.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/aw-facets-wrapper/aw-facets-wrapper.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/aw-facets-wrapper/aw-facets-wrapper.html","../../../projects/n7-boilerplate-arianna/src/lib/components/gallery-breadcrumbs-tooltip/gallery-breadcrumbs-tooltip.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/gallery-breadcrumbs-tooltip/gallery-breadcrumbs-tooltip.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/gallery-layout/gallery-layout.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/gallery-layout/gallery-layout.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/home-layout/home-layout.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/home-layout/home-layout.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/home-layout/home-layout.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/bubble-chart-wrapper/bubble-chart-wrapper.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/bubble-chart-wrapper/bubble-chart-wrapper.html","../../../projects/n7-boilerplate-arianna/src/lib/components/chart-tippy/chart-tippy.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/chart-tippy/chart-tippy.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/home-layout/home-layout.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/home-layout/home-layout.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/map-layout/map-layout.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/map-layout/map-layout.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/map-layout/map-layout.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/map-layout/map-layout.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/map-layout/map-layout.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/scheda-layout/scheda-layout.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/scheda-layout/scheda-layout.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/scheda-layout/scheda-layout.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/pdf-viewer/pdf-viewer.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/pdf-viewer/pdf-viewer.html","../../../projects/n7-boilerplate-arianna/src/lib/components/scheda-dropdown/scheda-dropdown.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/scheda-dropdown/scheda-dropdown.html","../../../projects/n7-boilerplate-arianna/src/lib/components/extended-tree/extended-tree.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/extended-tree/extended-tree.html","../../../projects/n7-boilerplate-arianna/src/lib/components/scheda-image-navigator/scheda-image-navigator.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/scheda-image-navigator/scheda-image-navigator.html","../../../projects/n7-boilerplate-arianna/src/lib/components/scheda-search/scheda-search.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/scheda-search/scheda-search.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/scheda-layout/scheda-layout.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/scheda-layout/scheda-layout.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/search-layout/search-layout.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/search-layout/search-layout.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/search-layout/search-layout.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/timeline-layout/timeline-layout.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/timeline-layout/timeline-layout.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/timeline-layout/timeline-layout.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/timeline-layout/timeline-layout.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/timeline-layout/timeline-layout.html","../../../projects/n7-boilerplate-arianna/src/lib/config/apollo.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/n7-boilerplate-arianna.module.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/index.ts","../../../projects/n7-boilerplate-arianna/src/public-api.ts","../../../projects/n7-boilerplate-arianna/src/net7-boilerplate-arianna.ts"],"sourcesContent":["import { DataSource } from '@net7/core';\nimport { get as _get } from 'lodash'; // used for cherry-picking object keys from app-config.json\nimport { helpers } from '@net7/boilerplate-common';\n\nexport class AwLinkedObjectsDS extends DataSource {\n public currentPage: number;\n\n public totalPages: number;\n\n public totalObjects: number;\n\n public pageSize: number;\n\n public context: string;\n\n public loadedData: any;\n\n public loadingData = false;\n\n public paths: any; // use dynamic object paths from config\n\n protected transform(data) {\n this.paths = this.options.config.get('item-preview');\n this.pageSize = this.options.size;\n this.totalObjects = data.totalCount;\n this.currentPage = this.options.page ? +this.options.page : 1;\n if (this.options.dynamicPagination && this.options.dynamicPagination.total) {\n this.totalPages = Math.ceil(this.options.dynamicPagination.total / this.pageSize);\n } else if (data.items) {\n this.totalPages = Math.ceil(data.items.length / this.pageSize);\n } else if (data.relatedItems) {\n this.totalPages = Math.ceil(data.relatedItems.length / this.pageSize);\n }\n this.context = this.options.context;\n this.loadedData = this.unpackData(data);\n this.checkForMore(); // checks if <Show More> button should be enabled\n this.loadedData.loaderData = {};\n return this.loadedData;\n }\n\n public checkForMore = (force?: boolean) => {\n /*\n Checks if it is possible to load more item previews.\n Can receive a boolean argument to force the button to be\n enabled or disabled. (Used while data is loading)\n */\n if (!this.loadedData.actions) {\n // if not using actions, don't check\n return;\n }\n if (typeof force !== 'undefined') {\n this.loadedData.actions[1].disabled = !force;\n return;\n }\n if (this.loadedData.result.length >= this.totalObjects) {\n this.loadedData.actions[1].disabled = true;\n } else {\n this.loadedData.actions[1].disabled = false;\n }\n };\n\n public handleIncomingData = (incomingData) => {\n /*\n Called by infinite scroller, adds the incoming\n data to the linked objects component.\n */\n this.currentPage += 1;\n const newData: any = this.unpackData(incomingData.itemsPagination);\n this.loadedData.result = this.loadedData.result.concat(newData.result);\n this.checkForMore();\n this.loadedData.isLoading = false;\n };\n\n /**\n * Dynamically returns the data object for each HTML component\n * data: {\n * previews: [ breadcrumbs: { items[] }, classes, image, metadata, payload, title ],\n * pagination: { first, last, links, next, prev, select }\n * }\n */\n private unpackData = (data) => {\n const\n { config } = this.options; // app-config.json\n const paths = config.get('item-preview'); // item preview dynamic paths\n const { totalCount } = data; // total amount of items available on backend\n const page = this.currentPage; // current page (if using pagination)\n const { context } = this; // parent layout name\n const size = this.pageSize; // items per page (if using pagination)\n const labels = config.get('labels');\n const { dynamicPagination } = this.options;\n const keys = config ? config.get('config-keys') : {};\n let\n lengthLimit: null;\n let resultsLimit: null;\n let d = data.items ? data.items : data.relatedItems; // items to iterate over\n if (config) {\n // dynamic search for max-item-length\n if (config.get(`${context}-layout`)) {\n lengthLimit = config.get(`${context}-layout`)['max-item-length'];\n resultsLimit = config.get(`${context}-layout`)['results-limit'];\n }\n }\n // resize data if necessary\n if (!dynamicPagination && size && page && d.length > size) {\n d = d.slice(page * size - size, page * size);\n } else if (size) {\n d = d.slice(0, size);\n }\n\n const result = [];\n const enabledKeys = paths.metadata.info.selection.map((info) => info.key);\n d.forEach((el) => {\n const itemData = el.item ? el.item : el;\n\n const infoData = _get(el, paths.metadata.info.data, itemData.fields);\n const toeData = _get(el, paths.metadata.toe.data, itemData.relatedTypesOfEntity);\n const breadcrumbs = _get(el, paths.metadata.breadcrumbs.data, itemData.breadcrumbs);\n let infoDataItems = infoData\n ? infoData.filter((info) => enabledKeys.indexOf(info.key) !== -1)\n : [];\n\n // order metadata\n infoDataItems = infoDataItems.map((info) => ({\n ...info,\n order: enabledKeys.indexOf(info.key)\n }));\n infoDataItems.sort((a, b) => a.order - b.order);\n\n if (['entita', 'search', 'gallery'].includes(context)) {\n if (itemData.typeOfEntity && itemData.typeOfEntity !== '') {\n infoDataItems.push({ key: 'Tipo di entità', value: keys[itemData.typeOfEntity]['singular-label'] });\n }\n }\n let classes = ['entita', 'search', 'oggetti-collegati'].includes(context) ? 'is-fullwidth' : '';\n classes += itemData.typeOfEntity ? ` is-${config.get('config-keys')[itemData.typeOfEntity]['class-name']}` : ' is-oggetto-culturale';\n\n // gallery classes\n if (context === 'gallery') {\n classes += ' is-vertical has-image';\n }\n\n // consider the lenght of <em> tags to exclude from count\n const highlights = _get(el, paths.title, itemData.label).match(/<em>/g) ? _get(el, paths.title, itemData.label).match(/<em>/g).length * 9 : 0;\n\n const itemTitle = +paths.title.maxLength\n && _get(el, paths.title, itemData.label).length > +paths.title.maxLength + highlights\n ? `${_get(el, paths.title, itemData.label).slice(0, +paths.title.maxLength + highlights)}…`\n : _get(el, paths.title, itemData.label);\n const itemId = _get(el, paths.payload, itemData.id);\n const itemType = itemData.typeOfEntity;\n const itemHref = [\n itemType ? config.get('paths').entitaBasePath : config.get('paths').schedaBasePath,\n itemId,\n helpers.slugify(itemTitle),\n ].join('/');\n let text;\n if (!paths.text) {\n text = null;\n } else if (\n +paths.text.maxLength\n && _get(el, paths.text.data, itemData.text).length > +paths.text.maxLength\n ) {\n text = `${_get(el, paths.text.data, itemData.text).slice(0, +paths.text.maxLength)}…`;\n } else {\n text = _get(el, paths.text.data, itemData.text);\n }\n const item = {\n text,\n classes,\n breadcrumbs,\n image: _get(el, paths.image, itemData.image),\n title: itemTitle,\n anchor: {\n href: itemHref,\n target: ['gallery', 'search'].includes(context) ? '_blank' : '_self'\n },\n relation: { key: el.relationName, value: el.relation },\n qualification: { key: el.relationName || itemTitle, value: el.qualification || null },\n metadata: infoDataItems.length || toeData ? [] : null,\n };\n // metadata\n if (infoDataItems.length) {\n item.metadata.push({\n classes: 'aw-item-preview_metadata',\n items: infoDataItems.map((infoDItem) => ({\n label: helpers.prettifySnakeCase(infoDItem.key, labels[infoDItem.key]),\n value: infoDItem.value,\n })),\n });\n }\n if (toeData) {\n item.metadata.push({\n classes: 'aw-item-preview-entities',\n items: toeData.map((toe) => ({ // persona: 6, Organizz: 12, Luoghi: 2, Concetti: 32\n value: _get(toe, paths.metadata.toe.value, toe.count),\n // icon: 'n7-icon-bell' // TODO: link icon to config key\n icon: keys[_get(toe, paths.metadata.toe.icon, toe.type)]\n ? keys[_get(toe, paths.metadata.toe.icon, toe.type)].icon\n : '',\n classes: `color-${keys[_get(toe, paths.metadata.toe.icon, toe.type)]['class-name']}`,\n })),\n });\n }\n // breadcrumbs\n if (breadcrumbs) {\n item.breadcrumbs = { // n7-breadcrumbs uses this as it's own data\n items: _get(el, paths.metadata.breadcrumbs.data, el.item.breadcrumbs).map((crumb) => {\n const label = _get(crumb, paths.metadata.breadcrumbs.label, crumb.label);\n return {\n label,\n anchor: {\n href: itemHref,\n },\n };\n }),\n };\n }\n result.push(item);\n });\n if (context === 'home') {\n const actions = [\n {\n label: `Mostra Tutti (${totalCount})`,\n },\n lengthLimit\n ? {\n label: `Mostra Altri (${resultsLimit})`,\n disabled: false,\n } : null,\n ];\n return {\n result,\n actions,\n isLoading: false,\n fallback: config.get('home-layout')['linked-objects-fallback'],\n };\n }\n return { previews: result };\n };\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwAutocompleteWrapperDS extends DataSource {\n protected transform(data) {\n const { response } = data;\n\n if (!response) {\n return { suggestion: [], loading: true };\n }\n\n const suggestion = [];\n const { config } = this.options;\n const maxLength = (config.get('home-layout')['max-item-length'] || 20);\n const fResults = response.results.filter((el) => typeof el.entity === 'object');\n\n // eslint-disable-next-line consistent-return\n fResults.forEach((el) => {\n if (el.entity.id === 'fallback') { // build and return fallback data\n suggestion.push({\n text: el.entity.label,\n payload: 'fallback-simple-autocomplete',\n });\n return { suggestion };\n }\n const text = this.stringTrim(el.entity.label, maxLength);\n suggestion.push({\n text,\n anchor: {\n payload: el.entity.id,\n },\n });\n });\n return { suggestion };\n }\n\n /**\n * Given a string, it trims it to the specified length.\n *\n * @param string an input string\n * @param limit character limit\n * @returns the resulting trimmed string\n */\n private stringTrim = (string, limit) => {\n if (string.length > limit) {\n return `${string.slice(0, limit)}…`;\n } return string;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwBubbleChartDS extends DataSource {\n public chartData: any = []; // data rendered into the graph\n\n public draw: any = null; // exposed component draw function to update the view\n\n public selected: string[] = []; // list of selected bubbles\n\n public filters: any[] = []; // list of active filters to show only some TypeOfEntity(s)\n\n public closedEyes: any[] = []; // array of the activated eye filters\n\n public tippyList: any[] = []; // list of tippy instances\n\n protected transform(data) {\n const { config, smallChartSize } = this.options;\n const { fontRendering, transition, shuffle } = config.get('bubble-chart');\n const domain = []; const\n range = [];\n const colorConfig = config.get('config-keys');\n\n Object.keys(colorConfig).forEach((k) => {\n domain.push(k.replace(/-/g, ' '));\n range.push(((colorConfig[k] || {}).color || {}).hex);\n });\n\n const commonParams = {\n containerId: 'bubbleChartContainer',\n setDraw: (draw) => { this.draw = draw; },\n colorMatch: { domain, range },\n selected: this.selected,\n sizeRange: [0.5, 500],\n fontRendering,\n height: 400,\n width: 500,\n transition,\n shuffle,\n };\n /*\n Two data streams are ouputted.\n The default stream is for the normal visualization,\n \"smallView\" is used for a compressed view of the same data.\n */\n return {\n ...commonParams,\n anchorData: { href: '/placeholder/' },\n data: this.smartSlice(data),\n smallView: {\n ...commonParams,\n data: this.smartSlice(data, smallChartSize),\n },\n };\n }\n\n updateChart = (res) => {\n /*\n Redraws the graph with the incoming data.\n \"res\" should be Apollo's \"response.entitiesData\".\n When res is passed as null, the chart is rendered with the previous data.\n */\n let response = res;\n if (res === null) {\n response = this.chartData;\n } else {\n this.chartData = res;\n }\n if (this.filters.length > 0) { // apply filters to the response\n response = this.chartData.filter((el) => !this.filters.includes(el.entity.typeOfEntity.replace(/ /g, '-')));\n }\n if (!this.draw) {\n this.update(this.smartSlice(response)); // component self-update\n } else {\n this.output.selected = this.selected;\n this.output.data = this.smartSlice(response);\n this.output.smallView.data = this.smartSlice(response, this.options.smallChartSize);\n this.draw();\n }\n };\n\n smartSlice = (d, length?) => {\n const l = length || this.options.limit;\n if (l && l < d.length) {\n return d.slice(0, l);\n }\n return d;\n };\n\n handleBubbleClick = (payload) => {\n /*\n Toggles the selection of the clicked bubble.\n */\n const id = payload;\n if (this.selected.includes(id)) {\n this.selected.splice(this.selected.indexOf(id), 1); // remove selection\n } else {\n this.selected.push(id); // add selection\n }\n };\n}\n","import { DataSource } from '@net7/core';\nimport { helpers } from '@net7/boilerplate-common';\n\nexport class AwChartTippyDS extends DataSource {\n protected transform(data) {\n // ====== DATA ======\n const { bubbles, selected } = data;\n const { basePath, selectable } = this.options;\n // ==================\n const templates: any[] = bubbles.map((b) => {\n const { count, entity } = b;\n const {\n id, label, relation, relationName\n } = entity;\n return {\n id,\n selectable,\n title: label,\n text: `È collegato a ${count} risultati`,\n isSelected: selected.includes(id),\n anchorData: {\n href: `${basePath}${id}/${helpers.slugify(label)}`,\n },\n relation: {\n key: relationName,\n value: relation,\n }\n };\n });\n return templates;\n }\n}\n","import { CarouselData } from '@net7/components';\nimport { DataSource } from '@net7/core';\n\ntype GetSliderResponse = SlideData[];\ntype SlideData = {\n background: { type: string; value: string | null };\n ctaLabel: string;\n ctaPayload: string;\n metadata: {key: string; value: string}[] | null;\n pretext: string;\n text: string;\n title: string;\n}\n\nexport class AwCarouselDS extends DataSource {\n protected transform(data: GetSliderResponse): CarouselData {\n const res: CarouselData = {\n containerId: 'carousel-root',\n classes: 'aw-home__carousel-root',\n libOptions: {\n count: 1,\n move: 1,\n // touch: true,\n // mode: 'align',\n buttons: true,\n dots: true,\n rewind: true,\n autoplay: 4000,\n animation: 500,\n // responsive: {\n // 0: { count: 1.5, buttons: false },\n // 480: { count: 2.5, buttons: false },\n // 768: { count: 3, touch: false },\n // 1440: { count: 4, touch: false },\n // },\n },\n slides: data.map((slide) => {\n const items = [];\n let action;\n let background;\n if (slide.title) items.push({ title: slide.title });\n if (slide.text) items.push({ text: slide.text });\n if (slide.ctaLabel && slide.ctaPayload) {\n action = {\n text: slide.ctaLabel,\n anchor: {\n href: slide.ctaPayload,\n target: '_blank'\n }\n };\n }\n if (slide.background && slide.background.value) {\n if (slide.background.type === 'color') {\n background = {\n color: slide.background.value\n };\n } else if (slide.background.type === 'image') {\n background = {\n image: slide.background.value\n };\n } else if (slide.background.type === 'video') {\n background = {\n video: slide.background.value\n };\n }\n } else {\n // The background is missing!\n background = {\n color: 'rgba(0, 0, 0, 0)'\n };\n }\n return ({\n items,\n action,\n background\n });\n })\n };\n return res;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwHeroDS extends DataSource {\n public currentInputValue = '';\n\n protected transform(data) {\n const {\n title, text, button, backgroundImage, input, classes\n } = data;\n return {\n title,\n text,\n backgroundImage,\n button: {\n text: button.text,\n anchor: {\n payload: 'cerca',\n },\n },\n input: {\n placeholder: input.placeholder,\n payload: 'cerca-in-maxxi',\n },\n classes,\n };\n }\n}\n","import { DataSource } from '@net7/core';\nimport { TABLE_MOCK } from '@net7/components';\n\nexport class AwTableDS extends DataSource {\n protected transform() {\n return TABLE_MOCK;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwHomeHeroPatrimonioDS extends DataSource {\n protected transform(data) {\n return data;\n }\n}\n","import { DataSource } from '@net7/core';\nimport tippy from 'tippy.js';\n\nexport class AwHomeFacetsWrapperDS extends DataSource {\n private autoComplete = {}; // autocomplete data for each facet\n\n public lockedFacets = {}; // locked means that the eye cannot be closed\n\n // store the last response so the component can be rendered again with the same data\n public lastData = {};\n\n public closedEyes = []; // list of closed eyes\n\n public openTippy = ''; // tipe of entity of the currently open tippy\n\n protected transform(data) {\n this.lastData = data;\n const headers: any[] = [];\n const inputs: any[] = [];\n const links: any[] = [];\n const facetData = data;\n const { pageConfig, paths } = this.options || {};\n const { lockedFacets } = this; // locked means that the eye cannot be closed\n const { closedEyes } = this; // list of closed eyes\n\n // when facet data changes, destroy every tippy and reset autocomplete data.\n Object.keys(this.autoComplete).forEach((id) => {\n if (this.autoComplete[id] && this.autoComplete[id].tippy) {\n this.autoComplete[id].tippy.destroy(); // destroy\n }\n });\n this.autoComplete = {}; // reset data\n\n facetData.forEach((facet, j) => {\n /*\n For each facet on back-end, push a header-component\n and a facet-component (search input only) to each array.\n ---//---\n # LOGIC:\n Each facet can be \"locked\" or \"enabled\".\n if a facet is locked, it means that it cannot be enabled or disabled.\n if a facet is enabled or disabled it means that the filter is active or inactive.\n\n there are 2 ways that a facet can be \"locked\"\n 1. When a bubble of the same type is selected in the chart\n 2. When that facet is the only enabled facet\n\n The first case is managed by pushing the selected bubble's ID to the corresponding array\n of lockedFacets.\n The second case is managed by pushing a \"LOCK_LAST\" string\n to the lockedFacets array of the last\n enabled facet.\n */\n Object.keys(lockedFacets).forEach((key) => {\n // clear all locked facets arrays from \"LOCK_LAST\" values (reset all locks)\n const index = lockedFacets[key].indexOf('LOCK_LAST');\n if (index >= 0) {\n lockedFacets[key].splice(index, 1);\n }\n });\n if (closedEyes) {\n if (closedEyes.length === facetData.length - 1) {\n const lastFacet = facetData.find((f) => !closedEyes.includes(f.type.replace(/ /g, '-')));\n if (lastFacet) {\n if (closedEyes[lastFacet.type]) {\n lockedFacets[lastFacet.type].push('LOCK_LAST');\n } else {\n lockedFacets[lastFacet.type] = ['LOCK_LAST'];\n }\n }\n }\n if (closedEyes.includes(facet.type.replace(/ /g, '-'))) { // check if the eyes are open\n facet.enabled = false;\n } else {\n facet.enabled = true;\n }\n }\n if (Object.keys(lockedFacets).length) { // check if bubble chart wants to lock this facet\n if (lockedFacets[facet.type] && lockedFacets[facet.type].length > 0) {\n // if bubble chart say lock this facet, lock it\n facet.locked = true;\n } else {\n facet.locked = false;\n }\n } else {\n facet.locked = false;\n }\n const headerClasses = [];\n const iconClasses = [facet.icon];\n if (!facet.enabled) { headerClasses.push('is-disabled'); }\n if (facet['class-name']) {\n headerClasses.push(`color-${facet['class-name']}`);\n iconClasses.push(`color-${facet['class-name']}`);\n }\n // make array of headers data\n headers.push({\n iconLeft: iconClasses.join(' '),\n text: facet.label,\n additionalText: facet.count,\n iconRight: facet.enabled ? 'n7-icon-eye' : 'n7-icon-eye-slash',\n classes:\n headerClasses.join(' ')\n + (facet.locked\n ? ' is-blocked'\n : ' not-blocked'),\n payload: facet.locked === true ? null : facet.type.replace(/ /g, '-'),\n });\n // make array of inputs data\n inputs.push({\n sections: [\n {\n inputs: [\n {\n id: `${facet.type.replace(/ /g, '-')}-${j}`,\n type: 'text',\n placeholder: facet['input-placeholder'],\n icon: 'n7-icon-search',\n disabled: !facet.enabled,\n inputPayload: `${String(facet.type.replace(/ /g, '-'))}-search`,\n iconPayload: `${String(facet.type.replace(/ /g, '-'))}-search`,\n enterPayload: `${String(facet.type.replace(/ /g, '-'))}-search`,\n classes: `${String(facet.type.replace(' ', '-'))}-search`,\n },\n ],\n },\n ],\n });\n if (pageConfig?.['view-all-links']?.enabled) {\n const { label } = pageConfig['view-all-links'];\n links.push({\n label: label || 'Visualizza tutti',\n path: paths.searchBasePath,\n queryParams: {\n 'query-links': facet.type.replace(/ /g, '-')\n }\n });\n }\n });\n\n // zipping arrays to render widgets with separate data (see home-layout.html)\n return headers.map((h, i) => ({ header: h, input: inputs[i], link: links[i] || null }));\n }\n\n public tippyMaker = (id) => {\n /*\n Builds or updates Tippy for the input in use (id)\n */\n const newId = id.replace(/ /g, '-');\n // create data for this facet\n if (!this.autoComplete[newId]) {\n this.autoComplete[newId] = {\n tippy: undefined, // tippy data / config\n open: true, // show or hide tippy\n };\n const ac = this.autoComplete[newId];\n const getContent = () => {\n const contentNode = document.getElementsByClassName(\n 'aw-simple-autocomplete__template',\n )[0];\n contentNode.setAttribute('style', 'display: block');\n return contentNode;\n };\n\n if (!ac.tippy) {\n // target the correct this.autoComplete[id] input class\n const target = document.getElementsByClassName(newId)[1];\n ac.tippy = tippy(target, {\n content: getContent(),\n trigger: 'manual',\n interactive: true,\n arrow: false,\n flip: false,\n appendTo: 'parent',\n theme: 'light-border aw-home__facet-tippy',\n placement: 'bottom-start',\n maxWidth: '100%',\n }); // attach tippy to input type text\n }\n }\n const ac = this.autoComplete[newId];\n if (ac.tippy) {\n ac.tippy.show();\n }\n };\n\n public tippyClose = (id) => {\n const newId = id.replace(/ /g, '-');\n if (this.autoComplete[newId]) {\n const ac = this.autoComplete[newId];\n if (ac.tippy) {\n ac.tippy.hide();\n }\n }\n };\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwHomeItemTagsWrapperDS extends DataSource {\n protected transform(data) {\n return data;\n }\n}\n","import { DataSource } from '@net7/core';\nimport { helpers } from '@net7/boilerplate-common';\n\nexport class AwHomeAutocompleteDS extends DataSource {\n protected transform(data) {\n const { response, query } = data;\n const { results, totalCount } = response;\n const { keys, config, paths } = this.options;\n const labels = this.options.labels || {};\n const itemIds = [];\n const groups = {};\n\n results.forEach(({ item, entity }) => {\n const groupId = entity ? entity.typeOfEntity : item.document_type;\n const groupConfig = keys[groupId];\n const mainMetadata = groupConfig['main-metadata'];\n const currentItem = item || entity;\n\n if (!groups[groupId]) {\n const { label, icon } = groupConfig;\n groups[groupId] = {\n title: label,\n icon,\n classes: `color-${groupConfig['class-name']}`,\n items: [],\n type: groupId,\n };\n }\n\n if (itemIds.indexOf(currentItem.id) === -1) {\n const metadata = [];\n if (currentItem.fields) {\n currentItem.fields.forEach(({ key, value }) => {\n if (mainMetadata && key === mainMetadata) {\n metadata.push({ key: helpers.prettifySnakeCase(key, labels[key]), value });\n }\n });\n }\n groups[groupId].items.push({\n title: currentItem.label,\n metadata,\n anchor: {\n href: `${paths[entity ? 'entitaBasePath' : 'schedaBasePath']}/${currentItem.id}/${helpers.slugify(currentItem.label)}`,\n },\n });\n }\n });\n\n const grouplist = Object.keys(groups).map((key) => ({\n group: {\n title: groups[key].title,\n icon: groups[key].icon,\n classes: groups[key].classes,\n },\n items: groups[key].items,\n }));\n\n return {\n results: grouplist,\n actions: grouplist.length > 0 ? {\n showMore: {\n text: `Visualizza tutti i ${totalCount} risultati`,\n anchor: {\n href: paths.searchBasePath,\n queryParams: {\n query,\n },\n },\n },\n } : {\n showMore: {\n text: 'Cerca in tutti i campi',\n anchor: {\n href: paths.searchBasePath,\n queryParams: {\n query, // Query string\n 'query-all': 1, // \"Cerca in tutti i campi delle schede\"\n },\n },\n },\n },\n fallback: ((config.get('home-layout') || {})['top-hero'] || {}).fallback,\n };\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwEntitaNavDS extends DataSource {\n protected transform(param): any {\n if (!param) {\n return null;\n }\n const { data, selected } = param;\n const navigation = { items: [], payload: 'entita-nav' };\n const { hasMetadataFields, labels } = this.options;\n\n /* navigation.items.push({\n text: 'OVERVIEW',\n anchor: { href: `${param.basePath}/overview` },\n classes: selected === 'overview' ? 'is-selected overview-tab' : 'overview-tab',\n });\n if (hasMetadataFields) {\n navigation.items.push({\n text: 'INFORMAZIONI',\n anchor: { href: `${param.basePath}/informazioni` },\n classes: selected === 'informazioni' ? 'is-selected' : '',\n });\n } */\n navigation.items.push({\n text: 'INFORMAZIONI',\n anchor: { href: `${param.basePath}/informazioni` },\n classes: selected === 'informazioni' ? 'is-selected' : '',\n });\n if (data.relatedLa) {\n navigation.items.push({\n text: labels['aggregazioni-logiche-collegate'],\n anchor: { href: `${param.basePath}/fondi-collegati` },\n classes: selected === 'fondi-collegati' ? 'is-selected' : '',\n });\n }\n if (data.relatedItems) {\n navigation.items.push({\n text: 'OGGETTI COLLEGATI',\n anchor: {\n href: `${param.basePath}/oggetti-collegati`,\n queryParams: {\n page: 1,\n },\n },\n classes: selected === 'oggetti-collegati' ? 'is-selected' : '',\n });\n }\n if (data.relatedEntities) {\n navigation.items.push({\n text: 'ENTITÀ COLLEGATE',\n anchor: { href: `${param.basePath}/entita-collegate` },\n classes: selected === 'entita-collegate' ? 'is-selected' : '',\n });\n }\n if (data.extraTab) {\n navigation.items.push({\n text: 'MAXXI',\n anchor: { href: `${param.basePath}/maxxi` },\n classes: selected === 'maxxi' ? 'is-selected' : '',\n });\n }\n if (data.wikiTab) {\n navigation.items.push({\n text: 'WIKIPEDIA',\n anchor: { href: `${param.basePath}/wiki` },\n classes: selected === 'wiki' ? 'is-selected' : '',\n });\n }\n\n // one tab control\n if (navigation.items.length === 2 && !hasMetadataFields) {\n navigation.items.shift();\n }\n\n return navigation;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwEntitaMetadataViewerDS extends DataSource {\n public hasFields = false;\n\n protected transform(data) {\n this.hasFields = !!(Array.isArray(data) && data.length);\n\n return {\n group: [{\n items: data || []\n }]\n };\n }\n}\n","import { DataSource } from '@net7/core';\nimport { ItemPreviewData } from '@net7/components';\n\nexport class AwRelatedEntitiesDS extends DataSource {\n protected transform = (data): { previews: ItemPreviewData[] } => {\n const basePath = this.options.config.get('paths').entitaBasePath;\n const configKeys = this.options.config.get('config-keys');\n const { title } = this.options;\n const previews: ItemPreviewData[] = data ? data.map((d) => ({\n title: d.entity.label,\n anchor: {\n href: `${basePath}${d.entity.id}/${d.entity.label}`,\n },\n classes: (configKeys[d.entity.typeOfEntity])\n ? `is-${configKeys[d.entity.typeOfEntity]['class-name']}`\n : null, // adds color to the title\n metadata: [{\n items: [{\n label: 'Tipo di entità',\n value: (configKeys[d.entity.typeOfEntity])\n ? configKeys[d.entity.typeOfEntity].label\n : d.entity.typeOfEntity,\n }],\n }],\n // A special kind of metadata, not to be viewed as other metadata\n relation: {\n key: d.relationName || title,\n value: d.entity.relation || null\n },\n qualification: {\n key: d.relationName || title,\n value: d.entity.qualification || null\n },\n })) : [];\n return { previews };\n };\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwSchedaBreadcrumbsDS extends DataSource {\n protected transform = (data) => data;\n\n toggleSidebar() {\n const sidebarData = this.output;\n if (sidebarData.classes === 'is-expanded') {\n sidebarData.classes = 'is-collapsed';\n } else {\n sidebarData.classes = 'is-expanded';\n }\n this.update(sidebarData);\n }\n}\n","import { DataSource } from '@net7/core';\nimport { SchedaDropdownData } from '../components';\n\nexport class AwSchedaDropdownDS extends DataSource {\n protected transform(response): SchedaDropdownData {\n const { digitalObjects } = response;\n const firstObject = digitalObjects[0];\n return {\n header: {\n label: firstObject.label,\n icon: {\n id: 'n7-icon-caret-down'\n },\n payload: 'toggle',\n },\n items: digitalObjects.map(({ label, type }, index) => ({\n label,\n type,\n payload: index,\n selected: index === 0,\n }))\n };\n }\n\n toggle() {\n const { classes } = this.output;\n this.output.classes = classes ? null : 'is-open';\n }\n\n onChange(payload) {\n // link check\n if (this.output.items[payload].type !== 'external') {\n this.output.items.forEach((item) => {\n item.selected = item.payload === payload;\n if (item.selected) {\n this.output.header.label = item.label;\n }\n });\n }\n // close\n this.toggle();\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwSidebarHeaderDS extends DataSource {\n protected transform(data) {\n return {\n iconLeft: 'n7-icon-tree-icon',\n text: data.text || '',\n iconRight: data.isExpanded ? 'n7-icon-angle-left' : 'n7-icon-angle-right',\n classes: data.isExpanded ? 'is-expanded' : 'is-collapsed',\n payload: 'header',\n };\n }\n\n toggleSidebar() {\n const sidebarData = this.output;\n if (sidebarData.classes === 'is-expanded') {\n sidebarData.classes = 'is-collapsed';\n sidebarData.iconRight = 'n7-icon-angle-right';\n } else {\n sidebarData.classes = 'is-expanded';\n sidebarData.iconRight = 'n7-icon-angle-left';\n }\n }\n}\n","import { DataSource } from '@net7/core';\nimport { ImageViewerData } from '@net7/components';\nimport { interval, Subject } from 'rxjs';\nimport { filter, first } from 'rxjs/operators';\n\nexport class AwSchedaImageDS extends DataSource {\n private instance;\n\n public instanceLoaded$: Subject<any> = new Subject();\n\n protected transform(data): ImageViewerData {\n const tileSources = this.getTileSources(data.items);\n\n return {\n images: [],\n viewerId: data.id,\n libOptions: {\n tileSources,\n sequenceMode: true,\n showReferenceStrip: true,\n autoHideControls: false,\n showNavigator: false,\n },\n _setViewer: (viewer) => {\n this.instance = viewer;\n\n this.onRender();\n }\n };\n }\n\n public hasInstance() {\n return !!this.instance;\n }\n\n public updateImages(data) {\n if (!this.instance) return;\n\n // container exists check\n interval(10).pipe(\n filter(() => !!document.getElementById(this.output.viewerId)),\n first()\n ).subscribe(() => {\n // reset\n this.instance.world.removeAll();\n setTimeout(() => {\n const images = this.getTileSources(data.items);\n this.instance.open(images);\n\n this.onRender();\n });\n });\n }\n\n public reset() {\n if (!this.instance) return;\n this.instance.world.removeAll();\n }\n\n private getTileSources(images) {\n const tileSources = [];\n images.forEach(({ type, url, iiifImages }) => {\n if (type === 'images-simple') {\n tileSources.push({\n url,\n type: 'image'\n });\n } else if (type === 'images-iip') {\n // FIXME: togliere replace\n tileSources.push(url.replace('FIF', 'Deepzoom').replace('.tif', '.tif.dzi'));\n } else if (type === 'images-iiif') {\n iiifImages.forEach((iiifUrl) => {\n tileSources.push(iiifUrl);\n });\n }\n });\n return tileSources;\n }\n\n private onRender() {\n // emit signal\n this.instanceLoaded$.next(this.instance);\n\n // update navigation classes\n const { nextButton } = this.instance;\n const hasNavigation = !!(nextButton && !nextButton.element?.disabled);\n this.output.classes = hasNavigation ? 'has-navigation' : 'navigation-hidden';\n }\n}\n","import { DataSource } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport Mirador from 'mirador';\n\nexport class AwSchedaImageIiifDS extends DataSource {\n private instance;\n\n public instanceLoaded$: Subject<any> = new Subject();\n\n protected transform(data) {\n if (!data) return null;\n\n const { libOptions } = this.options;\n const iiifManifestsList = data.items;\n const windows = [];\n\n iiifManifestsList.forEach((manifest) => {\n windows.push({ manifestId: manifest.url });\n if (this.instance) {\n const state = this.instance.store.getState();\n const currentWindowId = state.workspace.windowIds[0];\n this.instance.store.dispatch(\n Mirador.actions.addWindow({\n manifestId: manifest.url\n })\n );\n this.instance.store.dispatch(Mirador.actions.removeWindow(currentWindowId));\n }\n });\n\n return {\n libOptions: {\n ...libOptions,\n windows\n },\n _setInstance: (viewer) => {\n this.instance = viewer;\n this.onRender();\n }\n };\n }\n\n private onRender() {\n this.instanceLoaded$.next(this.instance);\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwSchedaInnerTitleDS extends DataSource {\n protected transform(data) {\n return data;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwSchedaMetadataDS extends DataSource {\n protected transform(data) {\n return {\n group: [{\n items: data || []\n }]\n };\n }\n}\n","import { DataSource } from '@net7/core';\nimport { merge } from 'lodash';\nimport { PdfViewerData } from '../components';\n\nconst DEFAULT_OPTIONS = {\n showToolbar: true,\n showSidebarButton: true,\n showFindButton: true,\n showPagingButtons: true,\n showZoomButtons: true,\n showPresentationModeButton: true,\n showOpenFileButton: false,\n showPrintButton: false,\n showDownloadButton: false,\n showBookmarkButton: false,\n showSecondaryToolbarButton: true,\n showRotateButton: false,\n showHandToolButton: true,\n showScrollingButton: false,\n showSpreadButton: false,\n showPropertiesButton: false\n};\n\nexport class AwSchedaPdfDS extends DataSource {\n private items: {\n label: string;\n url: string;\n selected: boolean;\n }[];\n\n protected transform(data): PdfViewerData {\n const { items } = data;\n const libOptions = merge(\n DEFAULT_OPTIONS,\n this.options.libOptions || {}\n );\n if (!(Array.isArray(items) && items.length)) {\n return null;\n }\n\n this.items = items.map((item, index) => ({\n ...item,\n selected: index === 0\n }));\n\n console.log('libOptions----------------------------->', libOptions);\n\n // defaults\n return {\n libOptions,\n items: this.items,\n next: 1,\n prev: null,\n currentUrl: items[0].url,\n };\n }\n\n onChange(index) {\n this.output.next = index < (this.items.length - 1) ? index + 1 : null;\n this.output.prev = index > 0 ? index - 1 : null;\n this.output.currentUrl = this.items[index].url;\n this.items.forEach((item, itemIndex) => {\n item.selected = itemIndex === index;\n });\n }\n\n onLoaded() {\n this.output.classes = 'is-loaded';\n }\n}\n","import { DataSource } from '@net7/core';\nimport { helpers } from '@net7/boilerplate-common';\n\nexport class AwTreeDS extends DataSource {\n static dataCache: any = {};\n\n private basePath: string;\n\n private rootId: string;\n\n private currentId: string;\n\n private activeId: string;\n\n protected transform = (data) => data;\n\n public load(data) {\n const { tree, basePath } = data;\n this.rootId = tree.id;\n this.basePath = basePath;\n // save in cache\n if (!AwTreeDS.dataCache[this.rootId]) {\n AwTreeDS.dataCache[this.rootId] = { flatIds: [], flatData: {} };\n this._normalize(tree);\n }\n }\n\n public build(id) {\n const path = this._getTreePath(id);\n const oldPath = this._getTreePath(this.currentId);\n const oldPathIndex = oldPath.indexOf(id);\n\n if (oldPathIndex > 0) {\n path.splice(oldPathIndex);\n this.currentId = null;\n } else if (this.currentId === id) {\n const idIndex = path.indexOf(this.currentId);\n path.splice(idIndex);\n this.currentId = null;\n } else {\n this.currentId = id;\n }\n\n const tree: any = this._getTree(path);\n this.update(tree);\n }\n\n public setActive(id) {\n this.activeId = id;\n }\n\n public highlightActive() {\n const control = (items) => {\n items.forEach((item) => {\n const founded = item.meta === this.activeId;\n const hasActive = item.classes.indexOf('is-active') !== -1;\n\n // clear is-active\n if (hasActive && !founded) {\n const currentClasses = item.classes.split(' ');\n currentClasses.splice(currentClasses.indexOf('is-active'), 1);\n item.classes = currentClasses.join(' ');\n }\n\n if (founded) {\n const currentClasses = item.classes.split(' ');\n if (currentClasses.indexOf('is-active') === -1) {\n currentClasses.push('is-active');\n }\n item.classes = currentClasses.join(' ');\n }\n\n if (Array.isArray(item.items) && item.items.length) {\n control(item.items);\n }\n });\n };\n control(this.output.items);\n }\n\n private _getCachedData = () => AwTreeDS.dataCache[this.rootId];\n\n private _normalize = ({\n id, label, icon, img, branches, document_type: type, document_classification: classification\n }) => {\n const hasBranches = !!(Array.isArray(branches) && branches.length);\n this._getCachedData().flatData[id] = {\n id, label, icon, img, hasBranches, type, classification\n };\n if (hasBranches) {\n branches.forEach((data) => {\n this._getCachedData().flatIds.push([id, data.id]);\n this._normalize(data);\n });\n }\n };\n\n private _getParent = (id) => this._getCachedData().flatIds\n .filter(([, childId]) => childId === id)\n .map(([parentId]) => parentId)[0] || null;\n\n private _getTreePath = (id) => {\n const ids = [id];\n let currentId = id;\n while (currentId) {\n const parentId = this._getParent(currentId);\n if (parentId) {\n ids.push(parentId);\n }\n currentId = parentId;\n }\n return ids.reverse();\n };\n\n private _getTree = (path) => {\n const tree = {};\n let counter = 0;\n\n const loadItems = (id, source) => {\n counter += 1;\n const nextParent = path[counter];\n source.items = [];\n\n this._getCachedData().flatIds\n .filter(([parentId]) => parentId === id)\n .forEach(([, childId], index) => {\n const inPath = childId === nextParent;\n const item = this._getTreeItem(childId, inPath);\n source.items.push(item);\n if (inPath) {\n loadItems(childId, source.items[index]);\n }\n });\n };\n\n // init\n loadItems(path[0], tree);\n return tree;\n };\n\n private _getTreeItem = (id, inPath) => {\n const {\n label, img, hasBranches, type, classification\n } = this._getCachedData().flatData[id];\n const defaultIcon = (this.options.config[type] || { icon: null }).icon;\n let specificIcon = '';\n const lastSegment = /.*\\.(\\w+)$/;\n if (classification && lastSegment.test(classification)) {\n const classID = classification\n .match(lastSegment)[1] // get classification characters\n .toUpperCase(); // normalize\n specificIcon = this.options.config[type].classifications[classID].icon;\n }\n const arrowIcons = inPath ? 'n7-icon-angle-down' : 'n7-icon-angle-right';\n const classes = [];\n if (inPath) {\n classes.push('is-expanded');\n }\n if (this.activeId === id) {\n classes.push('is-active');\n }\n return {\n classes: classes.join(' '),\n text: label || null,\n img: img || null,\n icon: (specificIcon || defaultIcon),\n toggle: hasBranches ? {\n icon: arrowIcons,\n payload: {\n source: 'toggle',\n id,\n },\n } : null,\n meta: id,\n anchor: {\n href: `${this.basePath}/${id}/${helpers.slugify(label)}`,\n },\n };\n };\n}\n","import { ConfigAriannaKeys } from '../config-types';\n\nconst getNodeIcon = (\n configKeys: ConfigAriannaKeys,\n item: {\n document_type: string;\n document_classification: string;\n }\n) => {\n const { document_type: type, document_classification: classification } = item;\n let icon = configKeys[type] ? configKeys[type].icon : null;\n const lastSegment = /.*\\.(\\w+)$/;\n if (classification && lastSegment.test(classification)) {\n const classID = classification\n .match(lastSegment)[1] // get classification characters\n .toUpperCase(); // normalize\n icon = configKeys[type].classifications[classID].icon;\n }\n return icon;\n};\n\nexport default { getNodeIcon };\n","import {\n Button, InnerTitleData, InputSelectData, InputTextData, PaginationData\n} from '@net7/components';\nimport { DataSource } from '@net7/core';\nimport { helpers } from '@net7/boilerplate-common';\nimport { ExtendedTreeData } from '../components/extended-tree/extended-tree';\nimport nodeHelper from '../helpers/node.helper';\n\ntype ParentResponse = {\n label: string;\n}\n\nexport type NodesResponse = {\n items: {\n img?: string;\n label: string;\n id: string;\n document_type: string;\n document_classification: string;\n breadcrumbs?: {\n label: string;\n link: string;\n }[];\n }[];\n totalCount: number;\n}\n\nconst PAGE_LIMIT = 5;\n\nconst SEARCH_OPEN_CLASS = 'search-is-open';\n\nexport class AwExtendedTreeDS extends DataSource {\n public searchIsOpen = false;\n\n protected transform = (\n { parent, nodes }:\n { parent: ParentResponse; nodes: NodesResponse }\n ): ExtendedTreeData => {\n const { totalCount } = nodes;\n const {\n title,\n params,\n basePath,\n lite,\n configKeys,\n fallback,\n } = this.options;\n const page = params.page ? +params.page : 1;\n const limit = params.limit ? +params.limit : 10;\n this.searchIsOpen = (\n this.searchIsOpen\n || (typeof params.query === 'string' && params.query.trim())\n );\n // header\n const header: InnerTitleData = {\n title: {\n main: {\n text: `${title} <span class=\"aw-extended-tree__total\">(${totalCount})</span>`,\n },\n secondary: {\n text: `In: \"${parent.label}\"`\n }\n },\n actions: {\n search: {\n placeholder: 'Cerca negli oggetti culturali',\n payload: 'search-input',\n button: {\n text: '',\n payload: 'search-button'\n }\n },\n },\n classes: this.searchIsOpen ? SEARCH_OPEN_CLASS : ''\n };\n // items\n const items = (nodes.items || []).map((item) => ({\n icon: nodeHelper.getNodeIcon(configKeys, item),\n thumbnail: lite ? null : item.img,\n label: item.label,\n anchor: {\n href: `${basePath}/${item.id}/${helpers.slugify(item.label)}`\n }\n }));\n // pagination\n const pagination: PaginationData = this.getPagination(page, totalCount, limit);\n // page input\n const pageInput: InputTextData = {\n id: 'page-input',\n type: 'number',\n // value: page,\n placeholder: 'pag',\n inputPayload: 'page-input-change',\n enterPayload: 'page-input-enter',\n };\n // results limit select\n const limitSelect: InputSelectData = {\n id: 'limit-select',\n label: 'Numero di risultati',\n options: [10, 25, 50].map((size) => ({\n label: `${size}`,\n value: size,\n selected: size === limit\n })),\n payload: 'limit-select',\n };\n return {\n header,\n items,\n pagination,\n pageInput,\n limitSelect,\n fallback: nodes ? fallback : null,\n loading: false,\n };\n };\n\n public setLoading(loading: boolean) {\n this.output.loading = loading;\n }\n\n public toggleSearch() {\n this.searchIsOpen = !this.searchIsOpen;\n\n const { header } = this.output;\n header.classes = this.searchIsOpen ? SEARCH_OPEN_CLASS : '';\n\n // trigger focus\n if (this.searchIsOpen) {\n setTimeout(() => {\n const inputEl: HTMLInputElement = document.querySelector('.aw-extended-tree input.n7-inner-title__search-bar');\n inputEl.focus();\n }, 500);\n }\n }\n\n private getPagination(page, totalCount, limit): PaginationData {\n const pages = Math.ceil(totalCount / limit);\n\n return {\n links: this.getPaginationLinks(page, pages),\n first: {\n anchor: {\n payload: 1,\n },\n classes: page === 1 ? 'is-disabled' : '',\n },\n prev: {\n anchor: {\n payload: page === 1 ? 1 : page - 1,\n },\n classes: page === 1 ? 'is-disabled' : ''\n },\n next: {\n anchor: {\n payload: page === pages ? pages : page + 1,\n },\n classes: page === pages ? 'is-disabled' : '',\n },\n last: {\n anchor: {\n payload: pages,\n },\n classes: page === pages ? 'is-disabled' : '',\n }\n };\n }\n\n private getPaginationLinks(page, pages): Button[] {\n let firstItem = 1;\n const links: Button[] = [];\n const limit = PAGE_LIMIT;\n let last = limit;\n\n if (pages > limit) {\n const steps = Math.floor(limit / 2);\n if (page > steps) {\n firstItem = page - steps;\n }\n\n if ((page + steps) > pages) {\n firstItem = (pages - limit) + 1;\n }\n } else {\n last = pages;\n }\n\n let i;\n for (i = 0; i < last; i += 1) {\n const itemPage = firstItem + i;\n links.push({\n text: itemPage,\n classes: itemPage === page ? 'is-disabled' : '',\n anchor: {\n payload: itemPage,\n }\n });\n }\n\n return links;\n }\n}\n","import { DataSource } from '@net7/core';\nimport { SchedaImageNavigatorData } from '../components/scheda-image-navigator/scheda-image-navigator';\n\nexport class AwSchedaImageNavigatorDS extends DataSource {\n private instance;\n\n private current;\n\n private total;\n\n protected transform(instance): SchedaImageNavigatorData {\n this.instance = instance;\n this.current = 1;\n this.total = this.instance.referenceStrip?.panels?.length;\n\n // check images total > 1\n if (!this.total) return null;\n\n const { buttonText } = (this.options || {});\n\n // listen viewer\n this.listenViewer();\n\n return {\n input: {\n id: 'scheda-image-navigator-input',\n type: 'number',\n label: this.getLabel(),\n min: 1,\n max: this.total,\n value: this.current,\n inputPayload: 'input',\n enterPayload: 'enter'\n },\n button: {\n label: buttonText,\n // disabled: true,\n }\n };\n }\n\n public onChange({ inputPayload, value }) {\n if (inputPayload === 'input') {\n let formattedValue = value;\n if (formattedValue) {\n formattedValue = +formattedValue;\n if (formattedValue > this.total) {\n formattedValue = this.total;\n }\n if (formattedValue < 1) {\n formattedValue = 1;\n }\n }\n this.current = formattedValue || null;\n\n // force input value\n this.output.input.value = this.current;\n } else if (inputPayload === 'enter') {\n this.onSubmit();\n }\n }\n\n public onSubmit() {\n if (this.instance && this.current) {\n this.instance.goToPage(this.current - 1);\n\n // update label\n this.updateLabel();\n }\n }\n\n private updateLabel() {\n const { input } = this.output;\n input.label = this.getLabel();\n }\n\n private getLabel() {\n const { label } = this.options;\n return label\n .replace('{current}', this.current)\n .replace('{total}', this.total);\n }\n\n private listenViewer() {\n this.instance.addHandler('page', (event) => {\n const { page } = event;\n if ((page + 1) !== this.current) {\n // trigger change manually\n this.onChange({\n inputPayload: 'input',\n value: page + 1\n });\n\n // update label\n this.updateLabel();\n }\n });\n }\n}\n","import { helpers } from '@net7/boilerplate-common';\nimport {\n Button, InnerTitleData, InputSelectData, InputTextData, PaginationData\n} from '@net7/components';\nimport { DataSource } from '@net7/core';\nimport { SchedaSearchData } from '../components/scheda-search/scheda-search';\nimport nodeHelper from '../helpers/node.helper';\nimport { NodesResponse } from './extended-tree.ds';\n\nconst PAGE_LIMIT = 5;\n\nexport class AwSchedaSearchDS extends DataSource {\n protected transform = (nodes: NodesResponse): SchedaSearchData => {\n const {\n search,\n title,\n params,\n basePath,\n lite,\n configKeys,\n fallback,\n } = this.options || {};\n const { totalCount } = nodes || {};\n const page = params.page ? +params.page : 1;\n const limit = params.limit ? +params.limit : 10;\n\n // header\n const header: InnerTitleData = {\n title: {\n main: {\n text: title || 'Cerca nelle Aggregazioni Logiche',\n }\n }\n };\n\n // input\n const input: InputTextData = {\n id: 'scheda-search-input',\n placeholder: search?.placeholder || 'Cerca...',\n icon: 'n7-icon-search',\n enterPayload: 'input-enter',\n inputPayload: 'input-change'\n };\n\n // items\n const items = (nodes?.items || []).map((item) => {\n // breadcrumbs\n const breadcrumbs = {\n items: []\n };\n if (item.breadcrumbs) {\n breadcrumbs.items = item.breadcrumbs.map(({ label, link: href }) => ({\n label,\n anchor: { href },\n }));\n }\n return {\n icon: nodeHelper.getNodeIcon(configKeys, item),\n thumbnail: lite ? null : item.img,\n label: item.label,\n anchor: {\n href: `${basePath}/${item.id}/${helpers.slugify(item.label)}`\n },\n breadcrumbs\n };\n });\n\n // pagination\n const pagination: PaginationData = nodes?.items?.length\n ? this.getPagination(page, totalCount, limit)\n : null;\n\n // results limit select\n const limitSelect: InputSelectData = {\n id: 'limit-select',\n label: 'Numero di risultati',\n options: [10, 25, 50].map((size) => ({\n label: `${size}`,\n value: size,\n selected: size === limit\n })),\n payload: 'limit-select',\n };\n return {\n header,\n input,\n items,\n pagination,\n limitSelect,\n fallback: nodes ? fallback : null,\n loading: false,\n };\n };\n\n public setLoading(loading: boolean) {\n this.output.loading = loading;\n }\n\n private getPagination(page, totalCount, limit): PaginationData {\n const pages = Math.ceil(totalCount / limit);\n\n return {\n links: this.getPaginationLinks(page, pages),\n first: {\n anchor: {\n payload: 1,\n },\n classes: page === 1 ? 'is-disabled' : '',\n },\n prev: {\n anchor: {\n payload: page === 1 ? 1 : page - 1,\n },\n classes: page === 1 ? 'is-disabled' : ''\n },\n next: {\n anchor: {\n payload: page === pages ? pages : page + 1,\n },\n classes: page === pages ? 'is-disabled' : '',\n },\n last: {\n anchor: {\n payload: pages,\n },\n classes: page === pages ? 'is-disabled' : '',\n }\n };\n }\n\n private getPaginationLinks(page, pages): Button[] {\n let firstItem = 1;\n const links: Button[] = [];\n const limit = PAGE_LIMIT;\n let last = limit;\n\n if (pages > limit) {\n const steps = Math.floor(limit / 2);\n if (page > steps) {\n firstItem = page - steps;\n }\n\n if ((page + steps) > pages) {\n firstItem = (pages - limit) + 1;\n }\n } else {\n last = pages;\n }\n\n let i;\n for (i = 0; i < last; i += 1) {\n const itemPage = firstItem + i;\n links.push({\n text: itemPage,\n classes: itemPage === page ? 'is-disabled' : '',\n anchor: {\n payload: itemPage,\n }\n });\n }\n\n return links;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwSearchLayoutTabsDS extends DataSource {\n private selected = 'list';\n\n protected transform() {\n return {\n items: [{\n text: 'LISTA',\n payload: 'list',\n classes: this.selected === 'list' ? 'is-selected' : '',\n }, {\n text: 'GRAFICO',\n payload: 'chart',\n classes: this.selected === 'chart' ? 'is-selected' : '',\n }, {\n text: 'TIMELINE',\n payload: 'timeline',\n classes: this.selected === 'timeline' ? 'is-selected' : '',\n }],\n };\n }\n\n public setSelected(tabId) {\n this.selected = tabId;\n }\n}\n","import { Subject, merge, fromEvent } from 'rxjs';\nimport {\n debounceTime, switchMap, mapTo\n} from 'rxjs/operators';\n// import { isEmpty } from 'lodash';\n\nconst ENTITY_LINKS_CLASS = 'entity-links';\nconst ENTITY_LINKS_PARENT_SELECTOR = '.n7-facets-wrapper__group:last-child .n7-facet__section-input-links';\n\nconst loaderItem = {\n counter: null,\n label: 'Caricamento in corso...',\n searchData: [],\n value: '__loading__',\n};\n\nexport default {\n paginationState: {} as any,\n paginate$: new Subject(),\n listenToChanges(dataSource) {\n const facetsWrapperEH = dataSource.getWidgetEventHandler('facets-wrapper');\n return merge(\n facetsWrapperEH.internalFacetsChange$.pipe(mapTo(null)),\n this.paginate$,\n ).pipe(\n debounceTime(500),\n switchMap((pagination) => {\n const requestParams = dataSource.searchModel.getRequestParams();\n const internalFilters = dataSource.searchModel.getInternalFilters();\n this.paginationState.offset = pagination ? this.paginationState.offset : 0;\n this.updateParamsOffset(requestParams);\n const filters = [...requestParams.filters, ...internalFilters];\n const params = {\n searchParameters: {\n totalCount: 100,\n gallery: !!(dataSource.searchModel.getId() === 'aw-gallery-layout'),\n ...requestParams,\n filters\n },\n };\n\n // initial loader\n if (this.paginationState.offset === 0) {\n this.addInitialLoader(dataSource);\n }\n\n return dataSource.getFacetsReq$(params);\n })\n );\n },\n onFacetsResponse(searchModel, facets) {\n // pagination control\n const entityLinksFacet = facets.find(({ id }) => id === ENTITY_LINKS_CLASS);\n const { totalCount } = entityLinksFacet;\n let { limit, offset } = this.paginationState;\n if (typeof limit === 'undefined') {\n limit = 10;\n }\n if (typeof offset === 'undefined') {\n offset = 0;\n }\n this.paginationState.totalCount = totalCount;\n if (offset > 0) {\n const entityLinksInput = searchModel.getInputByFacetId(ENTITY_LINKS_CLASS);\n const oldData = entityLinksInput.getData() || [];\n // remove fake loading element\n if (oldData.length) {\n oldData.pop();\n }\n const newData = oldData.concat(entityLinksFacet.data);\n entityLinksFacet.data = newData;\n }\n\n if (this.paginationState.totalCount > (limit + offset)) {\n entityLinksFacet.data.push(loaderItem);\n }\n\n // empty state\n const entityLinksInput = searchModel.getInputByFacetId(ENTITY_LINKS_CLASS);\n entityLinksInput.setIsEmpty(!totalCount);\n\n // fix scroll\n if (offset === 0) {\n const scrollEl = document.querySelector(ENTITY_LINKS_PARENT_SELECTOR);\n if (scrollEl) {\n scrollEl.scrollTop = 0;\n }\n }\n\n // update loading state\n this.paginationState.loading = false;\n },\n initPagination(searchModel) {\n searchModel.getFilters().filter((filter) => (\n filter.pagination\n )).forEach(({ pagination }) => {\n this.paginationState = {\n ...pagination,\n ...this.paginationState,\n loading: false\n };\n });\n setTimeout(() => {\n const scrollEl = document.querySelector(ENTITY_LINKS_PARENT_SELECTOR);\n const scroll$ = fromEvent(scrollEl, 'scroll');\n scroll$.pipe(\n debounceTime(300)\n ).subscribe(({ target }) => {\n const { scrollTop, clientHeight, scrollHeight } = target as HTMLElement;\n const {\n offset, limit, totalCount, loading\n } = this.paginationState;\n const margin = 150;\n if (\n (scrollTop + clientHeight >= scrollHeight - margin)\n && (offset + limit < totalCount)\n && loading === false\n ) {\n this.paginationState.loading = true;\n this.paginationState.offset = offset + limit;\n this.paginate$.next(this.paginationState);\n }\n });\n });\n },\n /* clearInternalFilters(searchModel) {\n const searchFilter = searchModel.getFiltersByFacetId('entity-search')[0];\n const typesFilter = searchModel.getFiltersByFacetId('entity-types')[0];\n if (!isEmpty(searchFilter.value) || !isEmpty(typesFilter.value)) {\n searchFilter.value = '';\n typesFilter.value = [];\n searchModel.updateInputsFromFilters();\n }\n }, */\n updateParamsOffset(params) {\n const entityLinksFilter = params.filters\n .find(({ facetId }) => facetId === ENTITY_LINKS_CLASS);\n\n if (entityLinksFilter) {\n entityLinksFilter.pagination.offset = this.paginationState.offset;\n }\n },\n resetOffset() {\n this.paginationState.offset = 0;\n },\n addInitialLoader(dataSource) {\n dataSource.searchModel.setInputData(ENTITY_LINKS_CLASS, [loaderItem]);\n const facetsWrapperDS = dataSource.getWidgetDataSource('facets-wrapper');\n facetsWrapperDS.updateInputLinks();\n }\n};\n","import { DataSource } from '@net7/core';\nimport { AwSearchModel } from '../search/aw-search.model';\nimport entityLinksHelper from '../search/entity-links.helper';\n\nconst HEADER_ICON_OPEN = 'n7-icon-angle-down';\nconst HEADER_ICON_CLOSE = 'n7-icon-angle-right';\n\nexport class AwFacetsWrapperDS extends DataSource {\n public searchModel: AwSearchModel;\n\n protected transform(data) {\n if (!this.searchModel) {\n this.searchModel = data.searchModel;\n entityLinksHelper.initPagination(this.searchModel);\n }\n\n const id = this.searchModel.getId();\n const fields = this.searchModel.getFields();\n\n const groups = [];\n\n fields.forEach((fieldConfig, fieldIndex) => {\n const groupId = `group-${id}-${fieldIndex}`;\n\n // header config\n const header = this._headerConfig(fieldConfig.header, groupId);\n\n // inputs config\n const sections = [];\n this.searchModel.getInputs()\n .filter((input) => input.getSectionIndex() === fieldIndex)\n .map((input) => {\n input.update();\n return {\n facetId: input.getFacetId(),\n type: input.getType(),\n output: input.getOutput(),\n };\n })\n .forEach(({ type, output, facetId }) => {\n sections.push({\n classes: this._getSectionClasses(type),\n inputs: Array.isArray(output) ? output : [output],\n _meta: {\n facetId,\n },\n });\n });\n\n groups.push({\n header,\n facet: { sections },\n classes: `n7-facets-wrapper__${groupId}`,\n isOpen: true,\n _meta: {\n groupId,\n },\n });\n });\n\n return {\n groups,\n classes: `n7-facets-wrapper__${this.searchModel.getId()}`,\n };\n }\n\n public toggleGroup({ eventPayload }) {\n this.output.groups.forEach((group) => {\n if (group._meta.groupId === eventPayload.groupId) {\n group.isOpen = !group.isOpen;\n group.header.iconRight = group.isOpen ? HEADER_ICON_OPEN : HEADER_ICON_CLOSE;\n }\n });\n }\n\n public onFacetChange({ eventPayload }) {\n const { facetId, source, trigger } = eventPayload.inputPayload;\n const filter = this.searchModel.getFiltersByFacetId(facetId)[0] || { value: null };\n const filterValue = filter.value;\n\n let remove = false;\n let value: any = eventPayload.inputPayload.value || eventPayload.value;\n\n // normalize\n value = `${value}`;\n\n // remove control\n if (Array.isArray(filterValue)) {\n remove = filterValue.indexOf(value) !== -1;\n } else {\n remove = filterValue === value;\n }\n\n // input text control\n // TODO: gestire i casi enter / icon click nel input text\n if (source === 'input-text' && ['enter', 'icon'].indexOf(trigger) !== -1) return;\n\n this.searchModel.updateFilter(facetId, value, remove);\n this.searchModel.updateInputsFromFilters();\n }\n\n public updateFilteredTarget(target) {\n if (!this.searchModel) {\n return;\n }\n const input = this.searchModel.getInputByFacetId(target);\n this.output.groups\n .map((group) => group.facet)\n .map((facet) => facet.sections)\n .forEach((sections) => {\n sections.forEach((section) => {\n if (section._meta.facetId === target) {\n const inputOutput = input.getOutput();\n section.inputs = Array.isArray(inputOutput) ? inputOutput : [inputOutput];\n }\n });\n });\n }\n\n public updateInputLinks() {\n if (!this.searchModel) {\n return;\n }\n const linksFacetIds = this.searchModel.getInputs()\n .filter((input) => input.getType() === 'link')\n .map((input) => input.getFacetId());\n\n this.output.groups\n .map((group) => group.facet)\n .map((facet) => facet.sections)\n .forEach((sections) => {\n sections.forEach((section) => {\n if (linksFacetIds.indexOf(section._meta.facetId) !== -1) {\n const input = this.searchModel.getInputByFacetId(section._meta.facetId);\n input.update();\n const inputOutput = input.getOutput();\n section.inputs = Array.isArray(inputOutput) ? inputOutput : [inputOutput];\n }\n });\n });\n }\n\n public getRequestParams = () => this.searchModel.getRequestParams();\n\n public filtersAsQueryParams = (filters) => this.searchModel.filtersAsQueryParams(filters);\n\n public updateFiltersFromQueryParams = (queryParams) => {\n this.searchModel.updateFiltersFromQueryParams(queryParams);\n };\n\n public getInputByFacetId = (facetId) => this.searchModel.getInputByFacetId(facetId);\n\n public filterTarget = (target) => {\n this.searchModel.filterTarget(target);\n };\n\n public updateInputsFromFilters = () => {\n this.searchModel.updateInputsFromFilters();\n };\n\n private _getSectionClasses(type) {\n const classesMap = {\n text: 'text',\n checkbox: 'checkboxes',\n link: 'links',\n select: 'select',\n };\n\n return `n7-facet__section-input-${classesMap[type]}`;\n }\n\n private _headerConfig(header, groupId) {\n return header ? {\n text: header.label,\n iconRight: HEADER_ICON_OPEN,\n classes: header.classes,\n payload: {\n source: 'group-header',\n id: `${groupId}-header`,\n groupId,\n },\n _meta: {\n id: `${groupId}-header`,\n },\n } : null;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwGalleryResultsDS extends DataSource {\n private pagination: any\n\n protected transform(data) {\n if (!data) return null;\n const { pageSize, currentPage } = this.options;\n // if the data doesn't fit on one page, render the pagination component\n if (data.length > pageSize) {\n this.addPagination(currentPage, Math.ceil(data.length / pageSize), pageSize);\n }\n return {\n res: data.slice(0, pageSize),\n pagination: this.pagination\n };\n }\n\n public chunks(a, size) {\n const results = [];\n while (a.length) {\n results.push(a.splice(0, size));\n }\n return results;\n }\n\n public addPagination = (page, totalPages, size) => {\n const sizeOptions = [12, 24, 48];\n this.pagination = {\n first: { payload: `goto-${1}`, classes: page === 1 ? 'is-disabled' : '' },\n prev: { payload: `goto-${page / 1 - 1}`, classes: page === 1 ? 'is-disabled' : '' },\n next: { payload: `goto-${page / 1 + 1}`, classes: page === totalPages ? 'is-disabled' : '' },\n last: { payload: `goto-${totalPages}`, classes: page === totalPages ? 'is-disabled' : '' },\n links: this.makePagination(totalPages, page),\n select: {\n label: 'Numero di risultati',\n options: sizeOptions.map((o) => ({\n text: o,\n selected: o === size,\n })),\n payload: 'select-size'\n },\n };\n }\n\n public makePagination = (totalPages, currentPage) => {\n /*\n Called by this.unpackData() when this.options.page is defined.\n Returns the data for <n7-pagination> component.\n */\n const result = [];\n let limit = 5 - 1;\n\n if (totalPages <= limit) {\n limit = totalPages - 1;\n }\n\n // always push the first page\n if (limit) {\n let lastPage: number; let\n firstPage: number;\n if (currentPage > Math.floor(limit / 2)) {\n if (totalPages === 2) {\n lastPage = totalPages;\n firstPage = 1;\n // when currentPage is after half-point\n // (example: [ 14 ][ 15 ][!16!][ 17 ][ 18 ])\n } else if (currentPage < (totalPages - Math.floor(limit / 2))) {\n lastPage = currentPage / 1 + Math.floor(limit / 2);\n firstPage = currentPage / 1 - Math.floor(limit / 2);\n } else {\n lastPage = totalPages;\n firstPage = currentPage - limit + (totalPages - currentPage);\n }\n } else {\n // when currentPage is before half-point\n // (example: [ 1 ][!2!][ 3 ][ 4 ][ 5 ])\n lastPage = limit + 1;\n firstPage = 1;\n }\n\n // eslint-disable-next-line no-plusplus\n for (let i = firstPage; i <= lastPage; i++) {\n result.push({\n text: String(i),\n payload: `page-${String(i)}`,\n classes: currentPage === i ? 'is-active' : ''\n });\n }\n } else {\n result.push({\n text: '1',\n payload: 'page-1',\n classes: currentPage === 1 ? 'is-active' : ''\n });\n // eslint-disable-next-line no-plusplus\n for (let i = 1; i < totalPages; i++) {\n result.push({ text: String(i + 1), payload: `page-${String(i + 1)}`, classes: currentPage === i + 1 ? 'is-active' : '' });\n }\n }\n return result;\n }\n}\n","import { MapData } from '@net7/components';\nimport { DataSource } from '@net7/core';\nimport * as Leaflet from 'leaflet';\nimport { Subject } from 'rxjs';\n\nconst MARKER_ICON = Leaflet.icon({\n iconUrl: '/assets/pin.png',\n iconSize: [30, 45.5],\n popupAnchor: [0, -25],\n className: 'marker-icon'\n});\n\nconst MARKER_ICON_SELECTED = Leaflet.icon({\n iconUrl: '/assets/pin-selected.png',\n iconSize: [30, 45.5],\n popupAnchor: [0, -25],\n className: 'marker-icon-selected'\n});\n\nexport class AwMapDS extends DataSource {\n public map;\n\n public markerOpen$: Subject<object> = new Subject();\n\n public markerClose$: Subject<void> = new Subject();\n\n protected transform = (data): MapData => ({\n containerId: 'map-canvas',\n tileLayers: [{\n url: 'https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png',\n options: {}\n }],\n initialView: {\n center: [0, 0],\n zoom: 13\n },\n _setInstance: (map) => {\n this.map = map;\n const bounds = new Leaflet\n .LatLngBounds(data\n .filter((d) => this.isValidMarker(d))\n .map(({ lat, lon }) => [lat, lon]));\n this.map.fitBounds(bounds);\n\n // adding markers\n const markers = Leaflet.markerClusterGroup({\n showCoverageOnHover: false,\n });\n data\n // skip broken markers\n .filter((d) => (this.isValidMarker(d)))\n // draw markers on the map\n .forEach(({ lat, lon, item }) => {\n const { label } = item;\n const marker = Leaflet.marker([lat, lon], { icon: MARKER_ICON })\n .addTo(markers)\n .bindPopup(label)\n .on('click', ({ target }) => {\n const { icon } = target.options;\n const { className } = icon.options;\n if (className === 'marker-icon-selected') {\n this.markerOpen$.next(item);\n }\n });\n\n marker.getPopup().on('remove', ({ target }) => {\n target._source.setIcon(MARKER_ICON);\n this.markerClose$.next();\n });\n\n marker.getPopup().on('add', ({ target }) => {\n target._source.setIcon(MARKER_ICON_SELECTED);\n });\n });\n this.map.addLayer(markers);\n }\n });\n\n /**\n * Performs validation for a leaflet marker data.\n * If the data is invalid displays an error.\n *\n * @param marker data for a leaflet marker\n * @returns true if the marker data is valid\n */\n private isValidMarker({ lat, lon }): boolean {\n const test = (\n lat\n && lon\n && /^-?\\d+\\.\\d*$/.test(lat)\n && /^-?\\d+\\.\\d*$/.test(lon)\n );\n if (test) return true;\n console.error(`${lat}, ${lon} is not a valid marker!`);\n return false;\n }\n}\n","import { DataSource } from '@net7/core';\nimport dayjs from 'dayjs'; // in arianna pkg \"import * as dayjs\" does not work\nimport { max as _max, min as _min } from 'lodash';\nimport { Subject } from 'rxjs';\n\nconst ONE_YEAR = 31557600000;\nconst YEARS_MARGIN = 30;\n\nexport class AwTimelineDS extends DataSource {\n public timeline;\n\n public timelineLoaded$: Subject<void> = new Subject();\n\n public dataSet;\n\n public timelineControlsVisible = false;\n\n protected transform = (data) => {\n const { disableEndDates } = this.options.configuration;\n this.dataSet = data.map(({\n id, start, end, item, label\n }) => ({\n id,\n item,\n start: start ? dayjs(start).format('YYYY-MM-DD') : null,\n end: (end && end !== start && !disableEndDates)\n ? dayjs(end).format('YYYY-MM-DD') // show end date\n : null, // hide end date\n content: this.getItemTemplate(label, item.label),\n _meta: {\n dateText: label\n }\n }));\n\n const max = this.getMax();\n const min = this.getMin();\n\n return {\n containerID: 'timeline-component',\n libOptions: {\n max,\n min,\n start: min,\n end: max,\n align: 'left',\n minHeight: '100px',\n // height: '100px',\n locale: 'it_IT',\n // cluster: {\n // fitOnDoubleClick: true,\n // clusterCriteria: (f, s) => f.content.charAt(0) === s.content.charAt(0),\n // titleTemplate: '{count} eventi',\n // },\n showCurrentTime: false,\n showTooltips: false,\n tooltip: {\n followMouse: false,\n template: (d: any, element: { title: string }) => `<div class=\"tooltip\">${element.title}</div>`\n },\n width: '100%',\n // minHeight: '350px',\n // maxHeight: '800px',\n zoomMax: ONE_YEAR * 2000, // 2000 years\n zoomMin: ONE_YEAR / 12, // a month\n // zoomFriction: 8\n },\n dataSet: this.dataSet,\n _setInstance: (timeline) => {\n this.timeline = timeline;\n this.timelineLoaded$.next();\n\n // fix cluster visualization\n // setTimeout(() => {\n // this.timeline.fit();\n // });\n\n // timeout for zoom controls\n setTimeout(() => {\n this.timelineControlsVisible = true;\n }, 1000);\n }\n };\n };\n\n getItemTemplate(datesLabel, label) {\n return (`\n <div class=\"dates\">\n <em>${datesLabel}</em>\n </div>\n <div class=\"content\">${label}</div>\n `);\n }\n\n getMax() {\n const maxDate = new Date(_max(this.getAllDates()));\n\n const year = maxDate.getFullYear();\n const month = maxDate.getMonth();\n const day = maxDate.getDate();\n return new Date(year + YEARS_MARGIN, month, day);\n }\n\n getMin() {\n const minDate = new Date(_min(this.getAllDates()));\n\n const year = minDate.getFullYear();\n const month = minDate.getMonth();\n const day = minDate.getDate();\n return new Date(year - YEARS_MARGIN, month, day);\n }\n\n getAllDates() {\n return [\n ...this.dataSet\n .filter(({ start }) => start)\n .map(({ start }) => start),\n ...this.dataSet\n .filter(({ end }) => end)\n .map(({ end }) => end)\n ];\n }\n}\n","// Any\nexport * from './linked-objects.ds';\nexport * from './autocomplete-wrapper.ds';\nexport * from './bubble-chart.ds';\nexport * from './chart-tippy.ds';\n\n// Home Layout\nexport * from './carousel.ds';\nexport * from './hero.ds';\nexport * from './table.ds';\nexport * from './home-hero-patrimonio.ds';\nexport * from './home-facets-wrapper.ds';\nexport * from './home-item-tags-wrapper.ds';\nexport * from './home-autocomplete.ds';\n\n// Entita Layout\nexport * from './entita-nav.ds';\nexport * from './entita-metadata-viewer.ds';\n\n// Scheda Layout\nexport * from './related-entities.ds';\nexport * from './scheda-breadcrumbs.ds';\nexport * from './scheda-dropdown.ds';\nexport * from './sidebar-header.ds';\nexport * from './scheda-image.ds';\nexport * from './scheda-image-iiif.ds';\nexport * from './scheda-inner-title.ds';\nexport * from './scheda-metadata.ds';\nexport * from './scheda-pdf.ds';\nexport * from './tree.ds';\nexport * from './extended-tree.ds';\nexport * from './scheda-image-navigator.ds';\nexport * from './scheda-search.ds';\n\n// Search layout\nexport * from './search-layout-tabs.ds';\nexport * from './aw-facets-wrapper.ds';\n\n// Gallery Layout\nexport * from './gallery-results.ds';\n\n// Map Layout\nexport * from './map.ds';\n\n// Timeline Layout\nexport * from './timeline.ds';\n","import { EventHandler } from '@net7/core';\n\nexport class AwHeroEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-hero.click':\n if (payload === 'cerca' && this.dataSource.currentInputValue) {\n this.emitOuter('enter', this.dataSource.currentInputValue);\n }\n break;\n case 'aw-hero.change':\n this.dataSource.currentInputValue = payload;\n this.emitOuter('change', payload);\n break;\n case 'aw-hero.enter':\n this.emitOuter('enter', payload);\n break;\n\n default:\n console.warn('(hero) unhandled event of type', type);\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nexport class AwHomeFacetsWrapperEH extends EventHandler {\n private changedInput$: Subject<any> = new Subject()\n\n public listen() {\n this.changedInput$.pipe(debounceTime(500)).subscribe((payload) => {\n this.emitOuter('change', payload);\n });\n\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n // toggle visibility from facet header\n case 'aw-home-facets-wrapper.click':\n if (payload === null) { // interrupt event for locked facets\n break;\n }\n this.emitOuter('click', payload);\n this.handleEyeClick(payload);\n break;\n // change search input text\n case 'aw-home-facets-wrapper.change':\n this.dataSource.openTippy = payload.inputPayload.replace('-search', '');\n this.changedInput$.next(payload);\n break;\n // pressed return while typing in search\n case 'aw-home-facets-wrapper.enter':\n this.emitOuter('enter', payload);\n break;\n default:\n console.warn('unhandled inner event of type:', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-home-layout.facetswrapperrequest': // incoming autocomplete response\n this.dataSource.tippyMaker(payload.facetId.inputPayload);\n break;\n case 'aw-home-layout.facetswrapperclose': // incoming autocomplete response\n this.dataSource.tippyClose(payload.facetId.inputPayload);\n break;\n case 'aw-home-layout.facetswrapperresponse': // incoming autocomplete response\n // this.dataSource.tippyMaker(payload.response, payload.facetId.inputPayload);\n break;\n case 'aw-home-layout.lockfilter':\n this.updateFilters(payload);\n break;\n case 'aw-home-layout.tagclick':\n Object.keys(this.dataSource.lockedFacets).forEach((key) => {\n if (this.dataSource.lockedFacets[key].includes(payload)) {\n this.dataSource.lockedFacets[key].splice(\n this.dataSource.lockedFacets[key].indexOf(payload), 1\n );\n }\n });\n this.dataSource.update(this.dataSource.lastData);\n break;\n case 'aw-home-layout.clearselection':\n this.dataSource.lockedFacets = {};\n this.dataSource.closedEyes = [];\n this.dataSource.update(this.dataSource.lastData);\n break;\n case 'aw-home-layout.facetclick': {\n const { openTippy } = this.dataSource;\n if (this.dataSource.lockedFacets[openTippy]) {\n if (this.dataSource.lockedFacets[openTippy].indexOf(payload) === -1) {\n this.dataSource.lockedFacets[openTippy].push(payload);\n }\n } else {\n this.dataSource.lockedFacets[openTippy] = [payload];\n }\n this.dataSource.update(this.dataSource.lastData);\n } break;\n default:\n break;\n }\n });\n }\n\n handleEyeClick = (type) => {\n /*\n Toggles the status of the selected eye, then reloads the component.\n */\n if (this.dataSource.closedEyes) {\n const i = this.dataSource.closedEyes.indexOf(type);\n if (i >= 0) { // if the eye was closed\n this.dataSource.closedEyes.splice(i, 1); // open the eye\n } else { // if the eye was open\n this.dataSource.closedEyes.push(type); // close the eye\n }\n } else {\n this.dataSource.closedEyes = [type];\n }\n this.dataSource.update(this.dataSource.lastData); // reload the component with the same data\n }\n\n updateFilters = (selectedBubble) => {\n /*\n Adds (or removes) the ID of the selected bubble from the array of that type of entity.\n Example:\n • Click on bubble \"0263a407-d0dd\" of type \"org\"\n • Add \"0263a407-d0dd\" to array \"org\".\n Result:\n • lockedFacets = { \"org\":[ \"0263a407-d0dd\" ] }\n */\n selectedBubble.entity.id.replace(/ /g, '-'); // fix for space in ID\n const { id, typeOfEntity } = selectedBubble.entity; // payload is the selected bubble\n if (!this.dataSource.lockedFacets[typeOfEntity]) {\n this.dataSource.lockedFacets[typeOfEntity] = [];\n }\n if (this.dataSource.lockedFacets[typeOfEntity].includes(id)) {\n const i = this.dataSource.lockedFacets[typeOfEntity].indexOf(id);\n this.dataSource.lockedFacets[typeOfEntity].splice(i, 1);\n } else {\n this.dataSource.lockedFacets[typeOfEntity].push(id);\n }\n this.dataSource.update(this.dataSource.lastData); // reload the component with the same data\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwHomeHeroPatrimonioEH extends EventHandler {\n public listen() {\n // no events\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwHomeItemTagsWrapperEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe((event) => {\n switch (event.type) {\n case 'aw-home-item-tags-wrapper.click':\n this.emitOuter('click', event.payload);\n break;\n default:\n break;\n }\n });\n /* this.outerEvents$.subscribe(event => {\n\n }); */\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwHomeAutocompleteEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-home-autocomplete.click':\n this.emitOuter('click', payload);\n break;\n\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwEntitaNavEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-entita-nav.click':\n this.emitOuter('click', payload);\n break;\n default:\n console.warn('unhandled event type');\n break;\n }\n });\n /*\n\n this.outerEvents$.subscribe(event => {\n\n });\n */\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwSchedaSidebarEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n if (type === 'aw-sidebar-header.click') {\n this.dataSource.toggleSidebar();\n this.emitOuter(type, payload);\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwSidebarHeaderEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n if (type === 'aw-sidebar-header.click') {\n this.emitOuter('click', payload);\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { first, filter, withLatestFrom } from 'rxjs/operators';\nimport { ReplaySubject } from 'rxjs';\nimport { AwTreeDS } from '../data-sources';\n\nexport class AwTreeEH extends EventHandler {\n dataSource: AwTreeDS;\n\n private targetOffset = new ReplaySubject();\n\n private targetIsOpen = false;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-tree.click':\n if (payload.source === 'toggle') {\n setTimeout(() => {\n this.dataSource.build(payload.id);\n if (this.targetIsOpen) {\n this.scrollOpenedIntoView();\n }\n });\n }\n break;\n default:\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-scheda-layout.selectItem':\n this.dataSource.build(payload);\n break;\n case 'aw-scheda-layout.navigationresponse': {\n if (payload.currentItem) {\n this.dataSource.setActive(payload.currentItem);\n }\n const currentId = payload.currentItem || payload.tree.id;\n this.dataSource.load(payload);\n this.dataSource.build(currentId);\n } break;\n case 'aw-scheda-layout.routechanged':\n // has output (not first load)\n if (this.dataSource.output) {\n this.dataSource.build(payload);\n this.dataSource.setActive(payload);\n this.dataSource.highlightActive();\n this.scrollLeafIntoView();\n } break;\n case 'aw-scheda-layout.viewleaf':\n this.dataSource.out$\n .pipe(\n filter((data) => !!data),\n first()\n ).subscribe(() => {\n this.scrollLeafIntoView();\n });\n break;\n case 'aw-scheda-layout.treeposition': {\n const { target } = payload;\n const targetRect = target.getBoundingClientRect();\n this.targetIsOpen = target.className.indexOf('n7-icon-angle-right') !== -1;\n this.targetOffset.next(targetRect.top);\n } break;\n case 'aw-scheda-layout.selectParent':\n this.dataSource.build(payload);\n this.dataSource.setActive(payload);\n this.dataSource.highlightActive();\n this.scrollLeafIntoView();\n break;\n default:\n break;\n }\n });\n }\n\n private scrollOpenedIntoView = () => {\n this.dataSource.out$\n .pipe(\n filter((data) => !!data),\n first(),\n withLatestFrom(this.targetOffset),\n ).subscribe(([, offset]) => {\n setTimeout(() => {\n const wrapperEl = document.querySelector('.aw-scheda__tree-content') as HTMLElement;\n const expandedNode = document.getElementsByClassName('n7-tree__item is-expanded');\n const lastExpandedNode = expandedNode.length\n ? expandedNode[expandedNode.length - 1]\n : null;\n if (lastExpandedNode) {\n const scrollTreeEl = document.querySelector('.n7-tree') as HTMLElement;\n const wrapperElRect = wrapperEl.getBoundingClientRect();\n const offsetToAdjust = (offset as number) - wrapperElRect.top;\n scrollTreeEl.style.marginBottom = '1000px';\n lastExpandedNode.scrollIntoView();\n wrapperEl.scrollTop -= offsetToAdjust;\n window.scrollTo(0, 0);\n scrollTreeEl.style.marginBottom = '0px';\n }\n }, 200);\n });\n };\n\n private scrollLeafIntoView = () => {\n setTimeout(() => {\n const treeNode = document.querySelector('div.aw-scheda__tree');\n const leafNode = treeNode.querySelector('.is-active .n7-tree__item-contents') as HTMLElement;\n if (leafNode && !this.isInViewport(leafNode)) {\n leafNode.scrollIntoView();\n window.scrollTo(0, 0);\n if (!this.isInViewport(leafNode)) {\n this.scrollLeafIntoView();\n }\n }\n });\n };\n\n private isInViewport = (elem) => {\n const bounding = elem.getBoundingClientRect();\n return (\n bounding.top >= 0\n && bounding.left >= 0\n && bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight)\n && bounding.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n };\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwSchedaDropdownEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n if (type === 'aw-scheda-dropdown.click') {\n if (payload === 'toggle') {\n this.dataSource.toggle();\n } else {\n this.dataSource.onChange(payload);\n this.emitOuter('click', payload);\n }\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { AwSchedaPdfDS } from '../data-sources';\n\nexport class AwSchedaPdfEH extends EventHandler {\n public dataSource: AwSchedaPdfDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n if (type === 'aw-scheda-pdf.click') {\n this.dataSource.onChange(payload);\n } else if (type === 'aw-scheda-pdf.loaded') {\n this.dataSource.onLoaded();\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { AwExtendedTreeDS } from '../data-sources';\n\nexport class AwExtendedTreeEH extends EventHandler {\n dataSource: AwExtendedTreeDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n if (payload === 'search-button') {\n this.dataSource.toggleSearch();\n } else {\n // redirect event\n this.emitOuter(type.split('.')[1], payload);\n }\n });\n\n this.outerEvents$.subscribe(({ type }) => {\n if (type === 'aw-scheda-layout.routechanged') {\n this.dataSource.searchIsOpen = false;\n }\n if (type === 'aw-scheda-layout.extendedtreerequest') {\n this.dataSource.setLoading(true);\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { AwSchedaImageNavigatorDS } from '../data-sources';\n\nexport class AwSchedaImageNavigatorEH extends EventHandler {\n dataSource: AwSchedaImageNavigatorDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-scheda-image-navigator.change':\n this.dataSource.onChange(payload);\n break;\n case 'aw-scheda-image-navigator.submit':\n this.dataSource.onSubmit();\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { AwSchedaSearchDS } from '../data-sources';\n\nexport class AwSchedaSearchEH extends EventHandler {\n dataSource: AwSchedaSearchDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n // redirect event\n this.emitOuter(type.split('.')[1], payload);\n });\n\n this.outerEvents$.subscribe(({ type }) => {\n if (type === 'aw-scheda-layout.schedasearchrequest') {\n this.dataSource.setLoading(true);\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwSearchLayoutTabsEH extends EventHandler {\n public listen() {\n // TODO\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nexport class AwFacetsWrapperEH extends EventHandler {\n public internalFacetsChange$: Subject<any> = new Subject();\n\n public externalFacetsChange$: Subject<any> = new Subject();\n\n public listen() {\n // listen to inner (widget) events\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'facets-wrapper.facet': {\n // empty payload control\n if (!payload.eventPayload.inputPayload) {\n return;\n }\n const { facetId, value } = payload.eventPayload.inputPayload;\n if (value === '__loading__') {\n return;\n }\n const input = this.dataSource.getInputByFacetId(facetId);\n const context = input.getContext();\n\n // update\n this.dataSource.onFacetChange(payload);\n\n // internal\n if (context === 'internal') {\n this.internalFacetsChange$.next(input.getTarget());\n // external\n } else {\n this.externalFacetsChange$.next(facetId);\n }\n }\n break;\n\n case 'facets-wrapper.facetheader':\n this.dataSource.toggleGroup(payload);\n break;\n\n default:\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n if (type.indexOf('queryparamschange') !== -1 && this.dataSource.searchModel) {\n this.dataSource.updateFiltersFromQueryParams(payload);\n this.dataSource.updateInputsFromFilters();\n }\n });\n\n // listen to global events\n EventHandler.globalEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'global.searchresponse':\n if (this.dataSource.searchModel && this.dataSource.searchModel.getId() === payload) {\n this.dataSource.updateInputLinks();\n const internalFilters = this.dataSource.searchModel.getInternalFilters();\n\n internalFilters.forEach((filter) => {\n const input = this.dataSource.searchModel.getInputByFacetId(filter.facetId);\n const target = input.getTarget();\n // this.dataSource.filterTarget(target);\n this.dataSource.updateFilteredTarget(target);\n });\n }\n break;\n\n default:\n break;\n }\n });\n\n // internal facets change\n this.externalFacetsChange$.pipe(\n debounceTime(500),\n ).subscribe((facetId) => {\n const requestParams = this.dataSource.getRequestParams();\n const queryParams = this.dataSource.filtersAsQueryParams(requestParams.filters);\n\n Object.keys(queryParams).forEach((key) => { queryParams[key] = queryParams[key] || null; });\n // signal\n this.emitOuter('facetschange', { facetId });\n\n // reset page\n queryParams.page = 1;\n\n // router signal\n this.emitGlobal('navigate', {\n handler: 'router',\n path: [],\n queryParams,\n });\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwGalleryResultsEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-gallery-results.change':\n this.emitOuter('change', +payload.value);\n break;\n case 'aw-gallery-results.click':\n if (typeof payload === 'string') { // click on pagination\n if (payload.startsWith('page')) {\n // pagination routing is handled by the parent layout\n this.emitOuter('pagination', payload);\n } else if (payload.startsWith('goto')) {\n const targetPage = +payload.replace('goto-', '');\n // kill impossible page navigations\n if (targetPage > this.dataSource.totalPages) return;\n if (targetPage < 1 || targetPage === this.dataSource.currentPage) return;\n this.emitOuter('goto', payload);\n }\n } else { // click on a linked object\n this.emitOuter('click', payload);\n }\n break;\n default:\n console.warn('(gallery-results) unhandled inner event of type', type);\n break;\n }\n });\n // this.outerEvents$.subscribe(({ type, payload }) => {\n // });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwMapEH extends EventHandler {\n public listen() {\n this.outerEvents$.subscribe(({ type }) => {\n switch (type) {\n case 'aw-map-layout.init':\n this.listenToMarkers();\n break;\n\n default:\n break;\n }\n });\n }\n\n private listenToMarkers() {\n this.dataSource.markerOpen$.subscribe((item) => {\n this.emitOuter('markeropen', item);\n });\n\n this.dataSource.markerClose$.subscribe(() => {\n this.emitOuter('markerclose');\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { first } from 'rxjs/operators';\n\nexport class AwTimelineEH extends EventHandler {\n public listen() {\n this.outerEvents$.subscribe(({ type }) => {\n switch (type) {\n case 'aw-timeline-layout.init':\n this.listenToTimeline();\n break;\n\n case 'aw-timeline-layout.zoomout':\n this.dataSource.timeline.zoomOut(0.7);\n break;\n\n case 'aw-timeline-layout.zoomin':\n this.dataSource.timeline.zoomIn(0.7);\n break;\n\n default:\n break;\n }\n });\n }\n\n private listenToTimeline() {\n this.dataSource.timelineLoaded$\n .pipe(\n first()\n )\n .subscribe(() => {\n const { timeline, dataSet } = this.dataSource;\n timeline.on('click', ({ item }) => {\n const clicked = dataSet.find(({ id }) => item === id);\n if (clicked) {\n const { dateText } = clicked._meta;\n const { id, label } = clicked.item;\n this.emitOuter('click', {\n id,\n label,\n dateText,\n });\n } else {\n this.emitOuter('click', {\n id: null\n });\n }\n });\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwLinkedObjectsEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-linked-objects.change': // changed page size value (pagination)\n this.emitOuter('change', +payload.value);\n break;\n default:\n console.warn('unhandled event type: ', type, ' with payload: ', payload);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-home-layout.viewmore':\n // ask home-layout for more data\n this.dataSource.checkForMore(false);\n this.emitOuter('datarequest', {\n currentPage: this.dataSource.currentPage,\n });\n break;\n case 'aw-home-layout.dataresponse': {\n // handle incoming data from home-layout\n const { res } = payload;\n this.dataSource.handleIncomingData(res);\n } break;\n case 'aw-home-layout.scroll':\n this.handleScroll(payload);\n break;\n default:\n break;\n }\n });\n }\n\n public handleScroll = (target) => {\n const { totalObjects, loadedData } = this.dataSource;\n const loadedTotal = Array.isArray(loadedData.result) ? loadedData.result.length : 0;\n\n if (loadedTotal >= totalObjects) {\n return;\n }\n /*\n Check if the target element is scrolled near the end while data is not already loading.\n If the condition is met, a request for more data is sent.\n */\n if (\n target.scrollTop + target.clientHeight >= target.scrollHeight - 150\n && this.dataSource.loadedData.isLoading === false\n ) {\n this.dataSource.loadedData.isLoading = true;\n this.emitOuter('datarequest', {\n currentPage: this.dataSource.currentPage,\n });\n }\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwAutocompleteWrapperEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-autocomplete-wrapper.click':\n if (payload !== 'fallback-simple-autocomplete') { // if this is the fallback item, kill the event.\n this.emitOuter('clickresult', payload);\n }\n break;\n default:\n console.warn('unhandled event of type:', type);\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwBubbleChartEH extends EventHandler {\n public initialLoad = false;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-bubble-chart.click':\n if (this.dataSource.options.selectable !== false) {\n this.toggleSelection(payload);\n }\n this.emitOuter('lockfilter', this.dataSource.chartData.find((el) => payload === el.entity.id));\n break;\n case 'aw-bubble-chart.d3end': { // end of d3.js draw()\n let filteredChartData;\n // apply filters to the data before adding tooltips\n if (this.dataSource.filters.length > 0) {\n filteredChartData = this.dataSource.chartData.filter((el) => !this.dataSource.filters.includes(el.entity.typeOfEntity.replace(/ /g, '-')));\n } else {\n filteredChartData = this.dataSource.chartData;\n }\n this.emitOuter('d3end', {\n bubbles: this.dataSource.smartSlice(filteredChartData),\n selected: this.dataSource.selected,\n });\n } break;\n default:\n console.warn('unhandled inner event of type', type, 'with payload', payload);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-home-layout.select': {\n const { id } = payload;\n this.toggleSelection(id);\n const foundBubble = this.dataSource.chartData.find((el) => id === el.entity.id);\n if (foundBubble) {\n this.emitOuter('lockfilter', foundBubble);\n } else {\n console.warn('Unable to determine which bubble was selected.');\n }\n } break;\n case 'aw-home-layout.tagclick':\n this.toggleSelection(payload);\n break;\n case 'aw-home-layout.facetclick':\n if (!this.dataSource.selected.includes(payload)) {\n this.toggleSelection(payload);\n }\n break;\n case 'aw-home-layout.togglefilter':\n this.toggleFilter(payload);\n break;\n case 'aw-home-layout.clearselection':\n this.dataSource.selected = [];\n this.emitOuter('selection', []);\n break;\n case 'aw-entita-layout.filterbubbleresponse':\n case 'aw-home-layout.filterbubbleresponse':\n this.dataSource.updateChart(payload);\n break;\n default:\n break;\n }\n });\n }\n\n toggleSelection = (id) => {\n /*\n Expects the ID of a bubble.\n Updates the graph with a new request\n */\n this.dataSource.handleBubbleClick(id);\n this.emitOuter('selection', this.dataSource.selected);\n }\n\n toggleFilter = (f) => {\n /*\n Toggle the clicked eye-filter in the filteres array and\n redraw the graph.\n */\n if (this.dataSource.filters.includes(f)) {\n this.dataSource.filters.splice(this.dataSource.filters.indexOf(f), 1);\n } else {\n this.dataSource.filters.push(f);\n }\n this.dataSource.updateChart(null); // null means \"reuse the last response\"\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwTableEH extends EventHandler {\n public listen() {\n /*\n this.innerEvents$.subscribe(event => {\n\n });\n\n this.outerEvents$.subscribe(event => {\n\n });\n */\n }\n}\n","import { EventHandler } from '@net7/core';\nimport tippy from 'tippy.js';\n\nexport class AwChartTippyEH extends EventHandler {\n private tippyList: any[] = [] // array of tippy instances\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-chart-tippy.select':\n this.emitOuter('select', payload);\n break;\n default:\n console.warn('(chart-tippy) unhandled inner event of type', type);\n break;\n }\n });\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-home-layout.d3end':\n case 'aw-entita-layout.d3end':\n case 'aw-scheda-layout.d3end':\n this.dataSource.update(payload); // creating DOM Elements (templates)\n setTimeout(() => { // wait DOM to be ready\n this.tippyMaker(payload.bubbles); // assign templates to the bubbles\n });\n break;\n default:\n break;\n }\n });\n }\n\n tippyMaker = (bubbles) => {\n /*\n Destroys every existing tooltip,\n then creates a new Tippy instance for each bubble.\n */\n // flush existing tooltips\n this.tippyList.forEach((t) => { if (t) { t.destroy(); } });\n this.tippyList = [];\n // create new tooltips\n bubbles.forEach((b) => { // give a tooltip to each bubble\n const target: Element = document.getElementById(`g_${b.entity.id}`);\n if (target) {\n this.tippyList.push( // add this tippy to the array of instances\n tippy(target, {\n content: document.getElementById(`template__${b.entity.id}`),\n interactive: true,\n appendTo: document.body, // suppress interactive warning\n arrow: true,\n flip: false,\n theme: 'light-border no-padding',\n placement: 'top',\n delay: 150,\n updateDuration: 400,\n }),\n );\n }\n });\n }\n}\n","// Home Layout\nexport * from './hero.eh';\nexport * from './home-facets-wrapper.eh';\nexport * from './home-hero-patrimonio.eh';\nexport * from './home-item-tags-wrapper.eh';\nexport * from './home-autocomplete.eh';\n\n// Entita Layout\nexport * from './entita-nav.eh';\n\n// Scheda Layout\nexport * from './scheda-breadcrumbs.eh';\nexport * from './sidebar-header.eh';\nexport * from './tree.eh';\nexport * from './scheda-dropdown.eh';\nexport * from './scheda-pdf.eh';\nexport * from './extended-tree.eh';\nexport * from './scheda-image-navigator.eh';\nexport * from './scheda-search.eh';\n\n// Search layout\nexport * from './search-layout-tabs.eh';\nexport * from './aw-facets-wrapper.eh';\n\n// Gallery layout\nexport * from './gallery-results.eh';\n\n// Map layout\nexport * from './map.eh';\n\n// Timeline layout\nexport * from './timeline.eh';\n\n// Any\nexport * from './linked-objects.eh';\nexport * from './autocomplete-wrapper.eh';\nexport * from './bubble-chart.eh';\nexport * from './table.eh';\nexport * from './chart-tippy.eh';\n","const getHeadTitle = ({\n name,\n pageName,\n pageDefault,\n label,\n}: {\n name: string;\n pageName: string;\n pageDefault: string;\n label?: string,\n}) => {\n const title = [\n name || 'Patrimonio Digitale',\n pageName || pageDefault,\n ];\n if (label) {\n title.push(label);\n }\n return title.join(' - ');\n};\n\nexport { getHeadTitle };\n","import { InnerTitleData, ItemPreviewData } from '@net7/components';\nimport { LayoutDataSource } from '@net7/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { first, map } from 'rxjs/operators';\nimport slugify from 'slugify';\nimport { ConfigurationService, CommunicationService, MainStateService } from '@net7/boilerplate-common';\nimport { CollectionItem, GetCollectionParams, GetCollectionResponse } from './collection-layout.types';\nimport { getHeadTitle } from '../../helpers/title.helper';\n\nexport class AwCollectionLayoutDS extends LayoutDataSource {\n private communication: CommunicationService;\n\n private configuration: ConfigurationService;\n\n private layoutOptions;\n\n private route;\n\n private mainState: MainStateService;\n\n public configId = 'collection-layout';\n\n public collectionID: string;\n\n private classificationsMap = {\n ff400: 'fondo-fotografico',\n al: 'aggregazione-logica',\n la: 'libro-antico',\n veac301: 'vestimento',\n f400: 'fotografia',\n uasc: 'cartografica',\n dc: 'scheda-dublin-core',\n oa300: 'scheda-oa',\n rmmus: 'materiale-musicale',\n ua: 'unita-archivistica',\n oac300: 'opera-arte-contemporanea',\n };\n\n innerTitleData = new BehaviorSubject<InnerTitleData>({\n title: { main: { text: '' } },\n });\n\n collectionDescription = new BehaviorSubject<string>('');\n\n pageSize = 6;\n\n /** Necessary to iterate with the loading item placeholder HTML */\n pageSizeList = [];\n\n currentOffset = 0;\n\n loadedCollections: BehaviorSubject<ItemPreviewData[] | []>;\n\n /** Button that loads more content into the layout */\n loadMoreButton = new BehaviorSubject(true);\n\n /** Controls the loading state of the layout */\n loading = true;\n\n onInit(payload) {\n this.communication = payload.communication;\n this.route = payload.route;\n this.configuration = payload.configuration;\n this.mainState = payload.mainState;\n this.loadedCollections = new BehaviorSubject([]);\n this.layoutOptions = this.configuration.get(this.configId);\n this.pageSizeList = new Array(this.pageSize);\n\n // head title\n this.setHeadTitle();\n }\n\n /**\n * After the collection ID has been loaded\n */\n onCollectionID() {\n // reset pagination params\n this.pageSize = 6;\n this.currentOffset = 0;\n // load\n this.loadMore(true);\n }\n\n loadMore(reload = false) {\n this.loading = true;\n const collection = this.loadedCollections.getValue();\n const params: GetCollectionParams = {\n id: this.collectionID,\n itemPagination: {\n limit: this.pageSize,\n offset: this.currentOffset,\n }\n };\n // check base url config\n const baseUrls = this.configuration.get('baseUrls') || {};\n const baseUrl = baseUrls.portaleMatriceServer || null;\n if (baseUrl) {\n params.baseUrl = baseUrl;\n }\n this.communication.request$('getCollection', {\n onError: (error) => console.error(error),\n params\n }).pipe(\n first((d) => !!d),\n map((d: GetCollectionResponse) => ({\n // map the backend response to the format used by ItemPreviewComponent\n response: d.items.map((item: CollectionItem) => ({\n title: this.stringLimiter(item.title, {\n maxLength: this.layoutOptions.item.title.maxLength,\n char: this.layoutOptions.item.title.char,\n }),\n text: this.stringLimiter(item.content, {\n maxLength: this.layoutOptions.item.description.maxLength,\n char: this.layoutOptions.item.description.char\n }),\n classes: `${item.image ? 'is-overlay has-image' : 'is-overlay has-image has-watermark'} ${this.classMap(item.classification)}`,\n image: item.image || this.layoutOptions.watermark,\n color: item.background,\n anchor: {\n href: item.url || this.urlBuilder(item.a4vId, item.title, item.type)\n },\n classification: item.classification\n })),\n text: d.text,\n title: d.title,\n total: d.total,\n }))\n ).subscribe({\n next: (data) => {\n this.loading = false;\n if (data.title) {\n this.setTitle(this.stringLimiter(data.title, {\n maxLength: this.layoutOptions.header.maxLength,\n char: this.layoutOptions.header.char\n }));\n }\n this.collectionDescription.next(data.text ? this.stringLimiter(data.text, {\n maxLength: this.layoutOptions.description.maxLength,\n char: this.layoutOptions.description.char\n }) : '');\n this.currentOffset += this.pageSize;\n const collectionData = !reload\n ? [...collection, ...data.response]\n : [...data.response];\n this.loadedCollections.next(collectionData);\n this.loadMoreButton.next(\n data.total > this.loadedCollections.getValue().length\n );\n },\n error: (e) => {\n console.error(e);\n this.loadMoreButton.next(false);\n },\n });\n }\n\n /**\n * Builds a URL from entity type,\n * entity id, and a slug string.\n *\n * @param type entity type\n * @param id entity ID\n * @param title human-readable title\n * @returns URL string including a slug\n */\n urlBuilder(id, title, type: string): string | undefined {\n if (id && title) {\n const titleSlug = slugify(title);\n const { schedaBasePath, entitaBasePath } = this.configuration.get('paths');\n const basePath = type === 'entity' ? entitaBasePath : schedaBasePath;\n return `/${basePath}/${id}/${titleSlug}`;\n } return undefined;\n }\n\n stringLimiter(content: string, options: { maxLength: number; char: string }): string {\n let res = content;\n if (content && options.maxLength) {\n res = content.slice(0, options.maxLength);\n if (options.char && res !== content) {\n res += options.char;\n }\n }\n return res;\n }\n\n setTitle(title: string): void {\n this.innerTitleData.next({\n title: { main: { text: title } }\n });\n }\n\n /**\n * Convert classification strings to css classes.\n *\n * @param classification a classification string like \"a4.oc.ua\"\n * @returns a CSS class\n */\n classMap(classification: string): string {\n if (!classification || classification.length < 1) {\n return '';\n }\n const codeMatch = /\\.(\\w+)$/gi.exec(classification);\n if (codeMatch) {\n const parsedCode = codeMatch[1]?.toLocaleLowerCase();\n const className = this.classificationsMap[parsedCode];\n if (className) {\n return `is-${className}`;\n }\n }\n return `is-${classification.replace('.', '-')}`;\n }\n\n private setHeadTitle() {\n this.mainState.update('headTitle', getHeadTitle({\n name: this.configuration.get('customer'),\n pageName: this.configuration.get(this.configId)?.pageName,\n pageDefault: 'Collezione',\n }));\n }\n}\n","import { ActivatedRoute } from '@angular/router';\nimport { EventHandler } from '@net7/core';\n\nexport class AwCollectionLayoutEH extends EventHandler {\n private route: ActivatedRoute;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-collection-layout.init':\n this.dataSource.onInit(payload);\n this.route = payload.route;\n this.listenRoute();\n break;\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n }\n\n listenRoute() {\n // get collection ID from the url\n this.route.paramMap.subscribe((params) => {\n if (params.get('id')) {\n this.dataSource.collectionID = params.get('id');\n this.dataSource.onCollectionID();\n }\n });\n }\n}\n","import * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\nimport { AwCollectionLayoutDS } from './collection-layout.ds';\nimport { AwCollectionLayoutEH } from './collection-layout.eh';\n\nexport const AwCollectionLayoutConfig = {\n layoutId: 'aw-collection-layout',\n widgets: [ // array of components of this layout\n ],\n layoutDS: AwCollectionLayoutDS,\n layoutEH: AwCollectionLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n ConfigurationService,\n AbstractLayout,\n CommunicationService,\n LayoutsConfigurationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { AwCollectionLayoutConfig as config } from './collection-layout.config';\n\n@Component({\n selector: 'n7-collection-layout',\n templateUrl: './collection-layout.html'\n})\nexport class AwCollectionLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n constructor(\n private communication: CommunicationService,\n private layoutsConfiguration: LayoutsConfigurationService,\n private configuration: ConfigurationService,\n private route: ActivatedRoute,\n private mainState: MainStateService,\n ) {\n super(config);\n }\n\n protected initPayload() {\n return {\n communication: this.communication,\n layoutsConfiguration: this.layoutsConfiguration,\n configuration: this.configuration,\n route: this.route,\n mainState: this.mainState,\n };\n }\n\n ngOnInit() {\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"aw-collection-layout\"\n *ngIf=\"lb.dataSource as dataSource\">\n\n <div class=\"aw-collection-layout__header\">\n <n7-inner-title [data]=\"dataSource.innerTitleData.getValue()\">\n </n7-inner-title>\n </div>\n\n <div class=\"aw-collection-layout__description\"\n *ngIf=\"dataSource.collectionDescription.getValue()\">\n <div class=\"aw-collection-layout__description-text\">\n {{ dataSource.collectionDescription.getValue() }}\n </div>\n </div>\n\n <section class=\"n7-grid-3 aw-collection-layout__grid\"\n [ngClass]=\"{ 'is-loading': dataSource.loading }\"\n *ngIf=\"dataSource.loadedCollections | async\">\n \n <ng-container *ngFor=\"let item of (dataSource.loadedCollections | async)\">\n <n7-item-preview [data]=\"item\">\n </n7-item-preview>\n </ng-container>\n \n <ng-container *ngIf=\"dataSource.loading\">\n <n7-content-placeholder *ngFor=\"let n of dataSource.pageSizeList\"\n [data]=\"{\n blocks: [{ classes: 'collection-placeholder-item-preview' }]\n }\"></n7-content-placeholder>\n </ng-container>\n \n </section>\n\n <section *ngIf=\"dataSource.loadMoreButton.getValue()\">\n <button class=\"n7-btn n7-btn-cta n7-btn-xl aw-collection-layout__btn-more\"\n (click)=\"dataSource.loadMore()\"\n [disabled]=\"dataSource.loading\">\n MOSTRA ALTRI\n </button>\n </section>\n</div>\n","import { helpers } from '@net7/boilerplate-common';\n\nconst metadataIsEmpty = (value) => (!value || value === 'null');\n\nconst isLink = (fields: any[]) => !!fields.filter(({ key }) => key === 'isLink').length;\n\nconst isRepeater = (fields: any[]) => Array.isArray(fields);\n\nconst getLink = (fields: any[], paths) => {\n const schedaTypes = ['oggetto-culturale', 'aggregazione-logica'];\n const label = fields.find(({ key }) => key === 'label').value;\n const slug = helpers.slugify(label);\n const id = fields.find(({ key }) => key === 'id').value;\n const type = fields.find(({ key }) => key === 'type').value;\n let basePath = paths.entitaBasePath;\n if (schedaTypes.includes(type)) {\n basePath = paths.schedaBasePath;\n }\n return `<a href=\"${basePath}${id}/${slug}\">${label}</a>`;\n};\n\nconst getRepeater = (fields: any[], labels, metadataToShow, type, parentLabel, paths) => {\n const html = [];\n fields\n .filter(({ fields: subFields }) => subFields)\n .forEach(({ fields: subFields }) => {\n const subHtml = [];\n if (isLink(subFields)) {\n subHtml.push('<div>');\n subHtml.push(`<dd>${getLink(subFields, paths)}</dd>`);\n subHtml.push('</div>');\n }\n subFields\n .filter(({ key }) => {\n if (isLink(subFields)) {\n return !(['label', 'id', 'type', 'isLink'].includes(key));\n }\n return true;\n })\n .filter(({ key, value }) => metadataToShow.includes(`${parentLabel}.${key}`) && !metadataIsEmpty(value))\n .map(({ key, value }) => ({\n key,\n value,\n order: metadataToShow.indexOf(`${parentLabel}.${key}`),\n label: helpers.prettifySnakeCase(key, labels[`${type}.${parentLabel}.${key}`])\n }))\n .sort((a, b) => a.order - b.order)\n .forEach(({ label, value }) => {\n subHtml.push('<div>');\n subHtml.push(`<dt>${label}</dt>`);\n subHtml.push(`<dd>${value}</dd>`);\n subHtml.push('</div>');\n });\n\n if (subHtml.length) {\n html.push(`<dl>${subHtml.join('')}</dl>`);\n }\n });\n return html.length ? html.join('') : null;\n};\n\nexport default {\n normalize: ({\n fields: data,\n paths,\n labels,\n metadataToShow,\n type\n }) => {\n const result = [];\n if (Array.isArray(data)) {\n data.forEach(({\n key, value, label, fields\n }) => {\n // link & repeater control\n if (fields && Array.isArray(fields)) {\n if (isLink(fields)) {\n result.push({ key: label, value: getLink(fields, paths) });\n } else if (isRepeater(fields) && metadataToShow.includes(label)) {\n result.push({\n key: label,\n value: getRepeater(fields, labels, metadataToShow, type, label, paths)\n });\n }\n // default\n } else if (metadataToShow.includes(key)) {\n result.push({ key, value });\n }\n });\n }\n return result\n .filter(({ value }) => !metadataIsEmpty(value))\n .map(({ key, value }) => ({\n key,\n value,\n order: metadataToShow.indexOf(key),\n label: helpers.prettifySnakeCase(key, labels[`${type}.${key}`]),\n }))\n .sort((a, b) => a.order - b.order);\n }\n};\n","import { LayoutDataSource } from '@net7/core';\nimport { Observable, of } from 'rxjs';\nimport {\n catchError, filter, first, tap\n} from 'rxjs/operators';\nimport { get as _get } from 'lodash';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport metadataHelper from '../../helpers/metadata.helper';\nimport { EntitaLayoutResponse } from './entita-layout.types';\nimport { getHeadTitle } from '../../helpers/title.helper';\n\nexport class AwEntitaLayoutDS extends LayoutDataSource {\n protected configuration: any;\n\n protected mainState: any;\n\n protected router: Router;\n\n protected titleService: any;\n\n protected route: ActivatedRoute;\n\n private layoutConfig;\n\n public showRelationType: boolean;\n\n public showRelationQualification: boolean;\n\n public configId = 'entita-layout';\n\n public options: any;\n\n public pageTitle: string;\n\n public hasMetadataFields = false;\n\n public myResponse: EntitaLayoutResponse; // backend response object\n\n public selectedTab: string; // selected nav item\n\n public navHeader: any = {}; // nav-header (custom) data\n\n public currentId: string; // selected entity (url param)\n\n public currentSlug: string; // selected entity (url param)\n\n public currentPage = 1; // pagination value (url param)\n\n public pageSize = 10; // linked objects page size\n\n // ===== BUBBLE CHART =====\n public bubblesSize = 10; // related entities (bubbles) page size\n\n public bubblesEnabled: boolean;\n\n // ========================\n private communication: any;\n\n public fallbackText = '';\n\n public loading = true;\n\n onInit({\n configuration, mainState, router, route, options, titleService, communication,\n }) {\n this.route = route;\n this.communication = communication;\n this.configuration = configuration;\n this.mainState = mainState;\n this.options = options;\n this.router = router;\n this.titleService = titleService;\n this.currentId = '';\n this.currentPage = this.route.snapshot.queryParams.page ?? 1;\n this.one('aw-related-entities').updateOptions({\n config: this.configuration,\n });\n this.layoutConfig = this.configuration.get(this.configId);\n this.showRelationType = this.layoutConfig.showRelationType;\n this.showRelationQualification = this.layoutConfig.showRelationQualification;\n\n // navigation update\n this.mainState.updateCustom('currentNav', 'entita');\n\n // update head title\n this.setHeadTitle();\n\n // check if there is only one tab\n this.singleTabCheck();\n }\n\n singleTabCheck() {\n const navDS = this.getWidgetDataSource('aw-entita-nav');\n navDS.out$\n .pipe(\n filter((output) => !!output)\n )\n .subscribe(({ items }) => {\n // if there is only one tab\n // and there are no query params\n // navigate to the tab.\n if (items.length === 1 && !this.currentPage) {\n this.router.navigate([items[0].anchor.href], { replaceUrl: true });\n }\n });\n }\n\n public updateComponent = (id, data, options?) => {\n if (options) {\n this.one(id).updateOptions(options);\n }\n this.one(id).update(data);\n };\n\n /**\n * Updates the pagination component\n */\n drawPagination = (totalItems, pageSize) => {\n if (!this.getLinkedObjectItems()) return;\n const { href, queryParams } = this._getPaginationURL();\n this.one('n7-smart-pagination').updateOptions({\n mode: 'href',\n href,\n queryParams,\n });\n this.one('n7-smart-pagination').update({\n totalPages: this.getPageCount(totalItems, pageSize),\n currentPage: +this.currentPage || 1,\n pageLimit: 5,\n sizes: {\n label: 'Numero di risultati',\n list: [10, 25, 50],\n active: +this.pageSize,\n },\n });\n };\n\n /**\n * Updates the selected tab on tab change\n */\n handlePageNavigation = () => {\n if (!this.myResponse) {\n return;\n }\n this.getEntityDetailsPage(this.myResponse.id, +this.currentPage, +this.pageSize)\n .pipe(first())\n .subscribe({\n // Await for network response\n next: (data) => {\n this.myResponse = data;\n const { href, queryParams } = this._getPaginationURL();\n // update layout state\n this.pageSize = queryParams.size;\n this.currentPage = queryParams.page;\n // update components\n this.drawPagination(this.getItemCount(), this.pageSize);\n this.one('aw-linked-objects').updateOptions({\n paginationParams: { href, queryParams },\n context: this.selectedTab,\n config: this.configuration,\n dynamicPagination: {\n total: this.getItemCount(),\n },\n page: queryParams.page,\n size: queryParams.size,\n pagination: true,\n });\n this.one('aw-linked-objects').update({ items: this.getLinkedObjectItems() });\n },\n error: (e) => catchError(e),\n });\n };\n\n handleNavUpdate = (tab) => {\n this.selectedTab = tab;\n this.updateWidgets(this.myResponse);\n this.one('aw-linked-objects').updateOptions({\n context: this.selectedTab,\n config: this.configuration,\n dynamicPagination: {\n total: this.getItemCount(),\n },\n page: this.currentPage,\n size: this.pageSize,\n pagination: true,\n paginationParams: this._getPaginationURL(),\n });\n this.one('aw-linked-objects').update({ items: this.getLinkedObjectItems() });\n // update the url with the correct page and size\n const queryParams: Params = {\n page: this.currentPage, size: this.pageSize,\n };\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams,\n queryParamsHandling: 'merge'\n });\n };\n\n updateWidgets(data) {\n /*\n Updates the widgets on this layout, based on route\n */\n const selected = this.selectedTab;\n Object.keys(data).forEach((k) => {\n if (Array.isArray(data[k]) && data[k].length === 0) { data[k] = null; }\n });\n this.one('aw-entita-nav').update({\n data,\n selected,\n basePath: this.getNavBasePath(),\n });\n this.updateComponent('aw-entita-metadata-viewer', this.getFields(this.myResponse));\n this.one('aw-related-entities').update(this.myResponse.relatedEntities);\n this.drawPagination(this.getItemCount(), this.pageSize);\n }\n\n /**\n * Given a page number and a list size, returns the data\n * for a single page of content.\n *\n * @param id Entity ID\n * @param pageNumber Page number to load\n * @param pageSize How many items need to be loaded\n */\n getEntityDetailsPage(id, pageNumber: number, pageSize: number): Observable<any> {\n return this.communication.request$('getEntityDetails', {\n onError: (error) => console.error(error),\n params: {\n entityId: id,\n itemsPagination: { offset: ((pageNumber || 1) - 1) * pageSize, limit: +pageSize },\n entitiesListSize: this.bubblesSize\n },\n }).pipe(\n // global metadata tab control\n tap(({ fields, typeOfEntity }) => {\n this.hasMetadataFields = !!metadataHelper.normalize({\n fields,\n paths: this.configuration.get('paths'),\n labels: this.configuration.get('labels'),\n metadataToShow: _get(this.configuration.get(this.configId), 'metadata-to-show', []),\n type: typeOfEntity\n }).length;\n })\n );\n }\n\n /*\n * Loads the data for the selected nav item, into the adjacent text block.\n */\n loadItem(id, slug, tab): Observable<any> {\n this.loading = true;\n if (id && tab) {\n this.currentId = id; // store selected item from url\n this.currentSlug = slug; // store selected item from url\n this.selectedTab = tab; // store selected tab from url\n return this.getEntityDetailsPage(id, this.currentPage, this.pageSize);\n }\n this.pageTitle = 'Entità Test';\n return of(null);\n }\n\n loadContent(res) {\n this.loading = false;\n const config = this.configuration.get('config-keys')[res.typeOfEntity];\n this.myResponse = res;\n this.navHeader = { // always render nav header\n icon: config ? config.icon : '',\n text: this.myResponse.label,\n color: config['class-name'],\n };\n this.one('aw-entita-nav').updateOptions({\n bubblesEnabled: this.bubblesEnabled,\n config: this.configuration.get(this.configId),\n hasMetadataFields: this.hasMetadataFields,\n labels: this.configuration.get('labels')\n });\n this.one('aw-entita-metadata-viewer').update(this.getFields(res));\n this.one('aw-linked-objects').updateOptions({\n context: this.selectedTab,\n config: this.configuration,\n page: this.currentPage,\n pagination: true,\n dynamicPagination: {\n total: this.getItemCount(),\n },\n paginationParams: this._getPaginationURL(),\n size: this.pageSize,\n });\n this.getLinkedObjectItems().forEach((el: any) => {\n el.relationName = res.label.length > 30\n ? `${res.label.substr(0, 30)}... `\n : res.label;\n });\n res.relatedEntities.forEach((el: any) => {\n el.relationName = res.label.length > 30\n ? `${res.label.substr(0, 30)}... `\n : res.label;\n });\n this.one('aw-linked-objects').update({ items: this.getLinkedObjectItems() });\n this.one('aw-related-entities').update(res.relatedEntities);\n // fallback text\n if (!this.hasMetadataFields) {\n this.fallbackText = this.configuration.get(this.configId).fallback;\n }\n // update head title\n this.setHeadTitle(this.myResponse.label);\n }\n\n private _getPaginationURL() {\n return {\n href: [\n this.configuration.get('paths').entitaBasePath,\n `${this.currentId}/`,\n this.currentSlug,\n `/${this.selectedTab}/`,\n ].join(''),\n queryParams: {\n page: this.currentPage || 1,\n size: this.pageSize,\n },\n };\n }\n\n public getNavBasePath() {\n return [\n this.configuration.get('paths').entitaBasePath,\n `${this.currentId}/`,\n this.currentSlug,\n ].join('');\n }\n\n public getItemCount(): number {\n switch (this.selectedTab) {\n case 'fondi-collegati':\n return this.myResponse.relatedLaTotalCount;\n case 'oggetti-collegati':\n return this.myResponse.relatedItemsTotalCount;\n default:\n return 0;\n }\n }\n\n public getFields(response) {\n const { fields, typeOfEntity } = response;\n const paths = this.configuration.get('paths');\n const labels = this.configuration.get('labels');\n let metadataToShow = _get(this.configuration.get(this.configId), 'metadata-to-show', []);\n if (this.selectedTab === 'overview') {\n metadataToShow = _get(this.configuration.get(this.configId), 'overview.informazioni', []);\n }\n\n return metadataHelper.normalize({\n fields,\n paths,\n labels,\n metadataToShow,\n type: typeOfEntity\n });\n }\n\n private getLinkedObjectItems() {\n return this.selectedTab === 'fondi-collegati'\n ? this.myResponse.relatedLa\n : this.myResponse.relatedItems;\n }\n\n /**\n * Calculates the total amount of pages\n *\n * @param items the number of records in the database\n * @param size the number of items shown on a page\n * @returns the total number of pages\n */\n private getPageCount(items: number, size: number) {\n return Math.floor(items / size);\n }\n\n private setHeadTitle(label?: string) {\n this.mainState.update('headTitle', getHeadTitle({\n label,\n name: this.configuration.get('customer'),\n pageName: this.configuration.get(this.configId)?.pageName,\n pageDefault: 'Entità',\n }));\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport class AwEntitaLayoutEH extends EventHandler {\n private destroyed$: Subject<void> = new Subject();\n\n private configuration: any;\n\n private route: any;\n\n private entityId: string;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-entita-layout.init':\n this.dataSource.onInit(payload);\n this.configuration = payload.configuration;\n this.route = payload.route;\n this.entityId = this.route.snapshot.params.id || '';\n this.dataSource.currentPage = this.route.snapshot.params.page || 1;\n this.listenRoute(this.entityId);\n // scroll top\n window.scrollTo(0, 0);\n break;\n\n case 'aw-entita-layout.destroy':\n this.destroyed$.next();\n break;\n\n case 'aw-entita-layout.showmore':\n if (payload) {\n this.dataSource.handleNavUpdate(payload);\n }\n break;\n\n default:\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-entita-nav.click':\n if (payload) {\n this.dataSource.selectedTab = payload;\n this.dataSource.handleNavUpdate(payload);\n }\n break;\n case 'aw-linked-objects.change': {\n const options = {\n context: this.dataSource.selectedTab,\n config: this.dataSource.configuration,\n dynamicPagination: {\n total: this.dataSource.myResponse.totalCount,\n },\n page: this.dataSource.currentPage,\n size: this.dataSource.pageSize,\n pagination: true,\n };\n this.dataSource.updateComponent(\n 'aw-linked-objects',\n { items: this.dataSource.myResponse.relatedItems },\n options,\n );\n } break;\n case 'n7-smart-pagination.change': // changed page size value (pagination)\n this.handlePageSizeChange(payload.value);\n break;\n default:\n break;\n }\n });\n }\n\n private handlePageSizeChange = (size) => {\n this.dataSource.pageSize = size;\n this.dataSource.currentPage = 1;\n this.dataSource.handleNavUpdate('oggetti-collegati');\n // this.dataSource.handlePageNavigation();\n }\n\n /**\n * Listens to routing events of this layout.\n */\n private listenRoute(selectedItem = '', forceReload = false) {\n // listen for \"page\" query param changes-\n this.route.queryParams.pipe(\n map((params: any) => ({\n page: params.page,\n size: params.size\n })),\n ).subscribe(({ page, size }) => {\n if (size) {\n this.dataSource.pageSize = size;\n }\n if (this.dataSource.currentPage !== page) {\n this.dataSource.currentPage = page;\n this.dataSource.handlePageNavigation();\n }\n });\n // get URL parameters with angular's paramMap\n this.route.paramMap.subscribe((params) => {\n // look for id\n if (params.get('id')) {\n if (this.dataSource.currentId === params.get('id') && !forceReload) {\n if (this.dataSource.selectedTab !== params.get('tab')) {\n this.dataSource.handleNavUpdate(params.get('tab'));\n }\n return;\n }\n // get item from response with id === id and return as promise\n this.dataSource.loadItem(params.get('id'), params.get('slug'), params.get('tab'))\n .subscribe((res) => {\n if (res) {\n this.dataSource.loadContent(res);\n // remove the entity of this page\n this.dataSource.updateWidgets(res);\n if (selectedItem) {\n this.emitOuter('selectItem', selectedItem);\n }\n }\n });\n } else {\n this.dataSource.loadItem();\n }\n // scroll top\n window.scrollTo(0, 0);\n });\n }\n}\n","import { SmartPaginationDS, SmartPaginationEH } from '@net7/boilerplate-common';\nimport { AwEntitaLayoutDS } from './entita-layout.ds';\nimport { AwEntitaLayoutEH } from './entita-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const AwEntitaLayoutConfig = {\n layoutId: 'aw-entita-layout',\n widgets: [ // array of components of this layout\n { id: 'aw-entita-nav', hasStaticData: true },\n { id: 'aw-entita-metadata-viewer' },\n { id: 'aw-linked-objects' },\n { id: 'aw-bubble-chart' },\n { id: 'aw-related-entities' },\n { id: 'aw-chart-tippy' },\n {\n id: 'n7-smart-pagination',\n dataSource: SmartPaginationDS,\n eventHandler: SmartPaginationEH,\n },\n ],\n layoutDS: AwEntitaLayoutDS,\n layoutEH: AwEntitaLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","//---------------------------\n// BREADCRUMBS.ts\n//---------------------------\n\nimport {\n Component, Input, ViewChild, ElementRef, AfterViewChecked,\n} from '@angular/core';\nimport tippy from 'tippy.js';\n\n/**\n * Interface for a single BreadcrumbsComponent's \"Item\"\n *\n * @property label (required)\n * @property payload (required)\n * @property classes (optional)\n * @property _meta (optional)\n *\n */\nexport interface SmartBreadcrumbsItem {\n /**\n * item's label\n */\n label: string;\n /**\n * action click's payload\n */\n payload: any;\n /**\n * additional html classes\n */\n classes?: any;\n /**\n * additional info useful for the component's logic\n */\n _meta?: any;\n}\n\n/**\n * Interface for BreadcrumbsComponent's \"Data\"\n *\n * @property items (required)\n * @property classes (optional)\n *\n */\nexport interface SmartBreadcrumbsData {\n /**\n * each item renders a breadcrumb level\n */\n items: SmartBreadcrumbsItem[];\n /**\n * additional html classes\n */\n classes?: any;\n}\n\n@Component({\n selector: 'n7-smart-breadcrumbs',\n templateUrl: './smart-breadcrumbs.html',\n})\n\nexport class SmartBreadcrumbsComponent implements AfterViewChecked {\n @Input() data: SmartBreadcrumbsData;\n\n @Input() emit: any;\n\n @ViewChild('bcol', { read: ElementRef }) bcol: ElementRef\n\n @ViewChild('bcdiv', { read: ElementRef }) bcdiv: ElementRef\n\n ngAfterViewChecked(): void {\n this.triggerSmartEllipsis();\n }\n\n onClick(payload) {\n if (!this.emit) return;\n this.emit('click', payload);\n }\n\n /**\n * Builds tippy data for a node.\n */\n tippyBuilder = (node, content) => tippy(node, {\n content,\n interactive: true,\n arrow: true,\n theme: 'light-border no-padding',\n appendTo: document.body, // silence tippy interactive warning\n });\n\n /** Calculate the width of an HTML Element and it's child */\n getWidths = (parent: ElementRef, child: ElementRef) => {\n const pw = parent.nativeElement.clientWidth; // parent width\n const cw = child.nativeElement.clientWidth; // child width\n const pp = this.getSidePadding(parent.nativeElement); // parent padding\n return { parentWidth: pw - pp, childWidth: cw };\n }\n\n getSidePadding = (node) => (\n // returns an integer representing the sum of left and right paddings\n (+window.getComputedStyle(node, null).getPropertyValue('padding-left').match(/\\d+/)[0])\n + (+window.getComputedStyle(node, null).getPropertyValue('padding-right').match(/\\d+/)[0])\n )\n\n /**\n * Checks if the smart ellipsis functionality should be enabled,\n * if the children elements are too wide, it enables it.\n */\n triggerSmartEllipsis = () => {\n if (this.bcdiv && this.bcol) {\n let { parentWidth, childWidth } = this.getWidths(this.bcdiv, this.bcol);\n const liArray = this.bcol.nativeElement.children;\n if (parentWidth <= childWidth) { // collapse condition\n let i = 1; // Skip element in position 0\n while (parentWidth <= childWidth && i < liArray.length - 1) { // Skip last element\n const tippyData = document.createElement('ol'); // initialize tippy data\n tippyData.className = 'n7-smart-breadcrumbs__tippy-content';\n tippyData.appendChild(liArray[i].cloneNode(true)); // add <li> to tippy data (<ol>)\n liArray[i].children[0].innerText = '…'; // convert to ellipsis\n liArray[i].className = 'n7-breadcrumbs__item-ellipsis'; // set class to list item\n this.tippyBuilder(liArray[i].children[0], tippyData); // append tooltip to ellipsis\n i += 1;\n // update widths\n ({ parentWidth, childWidth } = this.getWidths(this.bcdiv, this.bcol));\n }\n }\n }\n }\n}\n","<div *ngIf=\"data\" class=\"n7-breadcrumbs {{ data.classes || '' }}\" #bcdiv>\n <nav class=\"n7-breadcrumbs__nav\">\n <ol class=\"n7-breadcrumbs__list\" #bcol>\n <li *ngFor=\"let item of data.items\" class=\"n7-breadcrumbs__item {{ item.classes || '' }}\">\n <span class=\"ellipsis-target\">\n <n7-anchor-wrapper [classes]=\"item.classes\"\n [data]=\"item.anchor\"\n (clicked)=\"onClick($event)\">\n {{ item.label }}\n </n7-anchor-wrapper>\n </span>\n </li>\n </ol>\n </nav>\n</div>\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { Title } from '@angular/platform-browser';\nimport {\n AbstractLayout,\n ConfigurationService,\n MainStateService,\n CommunicationService,\n LayoutsConfigurationService\n} from '@net7/boilerplate-common';\nimport { AwEntitaLayoutConfig as config } from './entita-layout.config';\n\n@Component({\n selector: 'aw-entita-layout',\n templateUrl: './entita-layout.html',\n})\nexport class AwEntitaLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private configuration: ConfigurationService,\n private layoutsConfiguration: LayoutsConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n private titleService: Title,\n ) {\n super(layoutsConfiguration.get('AwEntitaLayoutConfig') || config);\n }\n\n /*\n Optional variables that can be accessed from the layout's logic.\n If removed, they must also be removed from the layout's DataSource file,\n and from this file imports.\n */\n protected initPayload() {\n return {\n configuration: this.configuration,\n mainState: this.mainState,\n router: this.router,\n route: this.route,\n titleService: this.titleService,\n communication: this.communication,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"aw-entity n7-side-auto-padding\"\n *ngIf=\"lb.dataSource\">\n\n <div class=\"aw-entity__sidebar\">\n <!-- Custom header -->\n <div *ngIf=\"lb.dataSource.loading\"\n class=\"aw-entity__sidebar-title-wrapper-loading\">\n <n7-content-placeholder [data]=\"{\n blocks: [{\n classes: 'entity-placeholder-title'\n }]\n }\">\n </n7-content-placeholder>\n </div>\n <div *ngIf=\"!lb.dataSource.loading\"\n class=\"aw-entity__sidebar-title-wrapper color-{{lb.dataSource.navHeader.color}}\">\n <h1 class=\"aw-entity__sidebar-title\">\n <span class=\"aw-entity__sidebar-title-icon {{lb.dataSource.navHeader.icon}}\"></span>\n <span class=\"aw-entity__sidebar-title-text\">{{lb.dataSource.navHeader.text}}</span>\n </h1>\n </div>\n <!-- Navigation -->\n <div *ngIf=\"lb.dataSource.loading\"\n class=\"aw-entity__sidebar-nav-loading\">\n <n7-content-placeholder *ngFor=\"let n of [0,1,2]\"\n [data]=\"{\n blocks: [{\n classes: 'entity-placeholder-nav'\n }]\n }\">\n </n7-content-placeholder>\n </div>\n <n7-nav *ngIf=\"!lb.dataSource.loading\" \n [data]=\"lb.widgets['aw-entita-nav'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-entita-nav'].emit\">\n </n7-nav>\n </div>\n\n <!-- lb.dataSource.selectedTab -->\n <div *ngIf=\"lb.dataSource.loading\"\n class=\"aw-entity__content-loading\">\n <div class=\"aw-entity__content-loading-title\">\n <n7-content-placeholder [data]=\"{\n blocks: [{\n classes: 'entity-placeholder-title'\n }]\n }\"></n7-content-placeholder>\n </div>\n\n <div class=\"aw-entity__content-loading-items\">\n <n7-content-placeholder *ngFor=\"let n of [0,1,2,3]\"\n [data]=\"{\n blocks: [{ classes: 'entity-placeholder-item-preview' }]\n }\"></n7-content-placeholder>\n </div>\n </div>\n\n <div *ngIf=\"!lb.dataSource.loading\"\n class=\"aw-entity__content\">\n <section>\n <div *ngIf=\"lb.dataSource.myResponse.wikiTab || lb.dataSource.myResponse.extraTab\"\n class=\"aw-entity__content-section\"\n [hidden]=\"lb.dataSource.selectedTab != 'overview'\">\n <div class=\"aw-entity__overview-description\">\n {{lb.dataSource.myResponse.extraTab}}\n </div>\n <div class=\"aw-entity-layout__button-wrapper\">\n <a *ngIf=\"lb.dataSource.myResponse.wikiTab\"\n class=\"n7-btn n7-btn-light\"\n [routerLink]=\"[lb.dataSource.getNavBasePath() + '/wiki']\">\n DESCRIZIONE WIKIPEDIA <i class=\"n7-icon-angle-right\"></i>\n </a>\n <a *ngIf=\"lb.dataSource.myResponse.extraTab\"\n class=\"n7-btn n7-btn-light\"\n [routerLink]=\"[lb.dataSource.getNavBasePath() + '/maxxi']\">\n DESCRIZIONE MAXXI <i class=\"n7-icon-angle-right\"></i>\n </a>\n </div>\n </div>\n\n <ng-container *ngIf=\"(\n ['overview', 'informazioni'].includes(lb.dataSource.selectedTab)\n )\">\n <div class=\"aw-entity__content-section aw-entity__content-section-overview\">\n <div class=\"aw-entity__content-section-header\"\n *ngIf=\"lb.dataSource.selectedTab === 'overview'\">\n <h2 class=\"aw-entity__content-section-title\"\n *ngIf=\"lb.dataSource.selectedTab === 'overview'\">Informazioni</h2>\n <a *ngIf=\"lb.dataSource.selectedTab !== 'informazioni'\"\n class=\"n7-btn n7-btn-light\"\n [routerLink]=\"[lb.dataSource.getNavBasePath() + '/informazioni']\">\n TUTTE LE INFORMAZIONI <i class=\"n7-icon-angle-right\"></i>\n </a>\n </div>\n <p *ngIf=\"lb.dataSource.fallbackText\"\n class=\"aw-entity__content-section-empty\">\n {{ lb.dataSource.fallbackText }}\n </p>\n <n7-metadata-viewer class=\"aw-entity-layout__metadata-viewer\"\n [data]=\"lb.widgets['aw-entita-metadata-viewer'].ds.out$ | async\">\n </n7-metadata-viewer>\n </div>\n </ng-container>\n\n <div class=\"aw-entity__content-section aw-entity__content-section-overview\"\n *ngIf=\"(lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews && lb.dataSource.myResponse.relatedItems\"\n [hidden]=\"lb.dataSource.selectedTab != 'overview' && lb.dataSource.selectedTab != 'oggetti-collegati'\">\n <div class=\"aw-entity__content-section-header\">\n <h2 class=\"aw-entity__content-section-title\">Oggetti collegati</h2>\n\n <a *ngIf=\"lb.dataSource.selectedTab === 'overview' \"\n [routerLink]=\"[lb.dataSource.getNavBasePath() + '/oggetti-collegati/']\"\n [queryParams]=\"{ page: 1 }\"\n class=\"n7-btn n7-btn-light\">\n TUTTI GLI OGGETTI COLLEGATI <i class=\"n7-icon-angle-right\"></i>\n </a>\n </div>\n <div class=\"aw-entity__content-item-previews aw-item-preview-list\">\n <ng-container *ngFor=\"let preview of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews\">\n <div class=\"aw-item-preview-wrapper\">\n <n7-smart-breadcrumbs [data]=\"preview.breadcrumbs\">\n </n7-smart-breadcrumbs>\n <n7-item-preview [data]=\"preview\"\n [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n <div class=\"aw-item-preview-container-relations\">\n <!-- Relation -->\n <div class=\"aw-item-preview-relation\"\n *ngIf=\"preview.relation?.value && lb.dataSource.showRelationType\">\n <p class=\"aw-item-preview-relation__description\">Tipo di relazione\n <!-- <span class=\"aw-item-preview-relation__key\">{{preview.relation.key}}</span>: -->\n <span class=\"aw-item-preview-relation__value\">{{preview.relation.value}}</span>\n </p>\n </div>\n <!-- Qualification -->\n <div class=\"aw-item-preview-relation\"\n *ngIf=\"preview.qualification?.value && lb.dataSource.showRelationQualification\">\n <p class=\"aw-item-preview-relation__description\">Qualifica della relazione\n <span class=\"aw-item-preview-relation__value\">{{preview.qualification.value}}</span>\n </p>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <n7-smart-pagination *ngIf=\"lb.dataSource.selectedTab === 'oggetti-collegati'\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n </div>\n\n <div class=\"aw-entity__content-section aw-entity__content-section-overview\"\n *ngIf=\"(lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews && lb.dataSource.myResponse.relatedLa\"\n [hidden]=\"lb.dataSource.selectedTab != 'overview' && lb.dataSource.selectedTab != 'fondi-collegati'\">\n <div class=\"aw-entity__content-section-header\">\n <h2 class=\"aw-entity__content-section-title\">{{ lb.dataSource.configuration.get('labels')['aggregazioni-logiche-collegate'] }}</h2>\n\n <a *ngIf=\"lb.dataSource.selectedTab === 'overview' \"\n [routerLink]=\"[lb.dataSource.getNavBasePath() + '/fondi-collegati/']\"\n [queryParams]=\"{ page: 1 }\"\n class=\"n7-btn n7-btn-light\">\n TUTTE LE FONDI COLLEGATI <i class=\"n7-icon-angle-right\"></i>\n </a>\n </div>\n <div class=\"aw-entity__content-item-previews aw-item-preview-list\">\n <ng-container *ngFor=\"let preview of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews\">\n <div class=\"aw-item-preview-wrapper\">\n <n7-smart-breadcrumbs [data]=\"preview.breadcrumbs\">\n </n7-smart-breadcrumbs>\n <n7-item-preview [data]=\"preview\"\n [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n <div class=\"aw-item-preview-container-relations\">\n <!-- Relation -->\n <div class=\"aw-item-preview-relation\"\n *ngIf=\"preview.relation?.value && lb.dataSource.showRelationType\">\n <p class=\"aw-item-preview-relation__description\">Tipo di relazione\n <!-- <span class=\"aw-item-preview-relation__key\">{{preview.relation.key}}</span>: -->\n <span class=\"aw-item-preview-relation__value\">{{preview.relation.value}}</span>\n </p>\n </div>\n <!-- Qualification -->\n <div class=\"aw-item-preview-relation\"\n *ngIf=\"preview.qualification?.value && lb.dataSource.showRelationQualification\">\n <p class=\"aw-item-preview-relation__description\">Qualifica della relazione\n <span class=\"aw-item-preview-relation__value\">{{preview.qualification.value}}</span>\n </p>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <n7-smart-pagination *ngIf=\"lb.dataSource.selectedTab === 'fondi-collegati'\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n </div>\n\n <div class=\"aw-entity__content-section aw-entity__content-section-overview aw-related-entities__{{lb.dataSource.selectedTab}}\"\n *ngIf=\"lb.dataSource.myResponse.relatedEntities\"\n [hidden]=\"lb.dataSource.selectedTab != 'overview' && lb.dataSource.selectedTab != 'entita-collegate'\">\n <div class=\"aw-entity__content-section-header\">\n <h2 class=\"aw-entity__content-section-title\">Entità collegate</h2>\n <a *ngIf=\"lb.dataSource.selectedTab == 'overview'\"\n class=\"n7-btn n7-btn-light\"\n [routerLink]=\"[lb.dataSource.getNavBasePath() + '/entita-collegate']\">\n TUTTE LE ENTITÀ COLLEGATE <i class=\"n7-icon-angle-right\"></i>\n </a>\n </div>\n\n <!-- ENTITA COLLEGATE -->\n <section id=\"related-item-container\"\n class=\"aw-entity__section aw-entity__related\">\n <div class=\"aw-entity__inner-title\">\n {{lb.dataSource.relatedEntitiesHeader}}\n </div>\n <div class=\"aw-entity__related-items n7-grid-2 aw-item-preview-list\">\n <ng-container *ngFor=\"let preview of (lb.widgets['aw-related-entities'].ds.out$ | async)?.previews\">\n <div class=\"aw-item-preview-wrapper\">\n <n7-item-preview [data]=\"preview\"\n [emit]=\"lb.widgets['aw-related-entities'].emit\">\n </n7-item-preview>\n <div class=\"aw-item-preview-container-relations\">\n <!-- Relation -->\n <div class=\"aw-item-preview-relation\"\n *ngIf=\"preview.relation?.value && lb.dataSource.showRelationType\">\n <p class=\"aw-item-preview-relation__description\">Tipo di relazione\n <!-- <span class=\"aw-item-preview-relation__key\">{{preview.relation.key}}</span>: -->\n <span class=\"aw-item-preview-relation__value\">{{preview.relation.value}}</span>\n </p>\n </div>\n <!-- Qualification -->\n <div class=\"aw-item-preview-relation\"\n *ngIf=\"preview.qualification?.value && lb.dataSource.showRelationQualification\">\n <p class=\"aw-item-preview-relation__description\">Qualifica della relazione\n <span class=\"aw-item-preview-relation__value\">{{preview.qualification.value}}</span>\n </p>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </section>\n </div>\n <div class=\"aw-entity__content-section aw-entity__content-section-maxxi\"\n *ngIf=\"lb.dataSource.myResponse.extraTab\"\n [hidden]=\"lb.dataSource.selectedTab != 'maxxi'\">\n <div class=\"aw-entity__content-section-header aw-entity__content-section-header-decorated\">\n <h2 class=\"aw-entity__content-section-title\">Descrizione Maxxi</h2>\n </div>\n <div>\n {{lb.dataSource.myResponse.extraTab}}\n </div>\n </div>\n <div class=\"aw-entity__content-section aw-entity__content-section-wiki\"\n *ngIf=\"lb.dataSource.myResponse.wikiTab\"\n [hidden]=\"lb.dataSource.selectedTab != 'wiki'\">\n <div class=\"aw-entity__content-section-header aw-entity__content-section-header-decorated\">\n <h2 class=\"aw-entity__content-section-title\">Descrizione Wikipedia</h2>\n </div>\n <div>\n {{lb.dataSource.myResponse.wikiTab.text}}\n </div>\n <a href=\"{{lb.dataSource.myResponse.wikiTabUrl}}\">\n {{ lb.dataSource.myResponse.wikiTab.url }}\n </a>\n </div>\n </section>\n </div>\n</div>\n","export default {\n totalCount: 0,\n facets: [\n {\n id: 'query',\n type: 'value',\n },\n {\n id: 'query-all',\n type: 'value',\n hasStaticData: true,\n data: [\n {\n value: '1',\n label: 'Cerca in tutti i campi delle schede',\n },\n ],\n },\n {\n id: 'query-links',\n type: 'value',\n },\n {\n id: 'entity-types',\n type: 'value',\n operator: 'OR',\n limit: 10,\n order: 'count',\n },\n {\n id: 'entity-search',\n type: 'value',\n },\n {\n id: 'entity-links',\n type: 'value',\n searchData: ['entity-type'],\n },\n ],\n fields: [\n {\n inputs: [\n {\n type: 'text',\n facetId: 'query',\n placeholder: 'Cerca nei titoli delle schede',\n filterConfig: {\n delay: 500,\n minChars: 3,\n searchIn: [\n {\n key: 'label.ngrams',\n operator: 'LIKE',\n },\n ],\n },\n },\n {\n type: 'checkbox',\n facetId: 'query-all',\n filterConfig: {\n searchIn: [\n {\n key: 'label.ngrams^5,text^4,fields.*^3',\n operator: '=',\n },\n ],\n },\n },\n {\n type: 'link',\n facetId: 'query-links',\n filterConfig: {\n isArray: true,\n searchIn: [\n {\n key: 'source.entityType',\n operator: '=',\n },\n ],\n },\n },\n ],\n },\n {\n header: {\n label: 'Relazione con',\n classes: 'related-class',\n },\n inputs: [\n {\n type: 'checkbox',\n facetId: 'entity-types',\n filterConfig: {\n isArray: true,\n context: 'internal',\n target: 'entity-links',\n searchIn: [\n {\n key: 'searchData.entity-type',\n operator: '=',\n },\n ],\n },\n },\n {\n type: 'text',\n facetId: 'entity-search',\n placeholder: 'Cerca entità',\n filterConfig: {\n delay: 500,\n minChars: 3,\n context: 'internal',\n target: 'entity-links',\n searchIn: [\n {\n key: 'label',\n operator: 'LIKE',\n },\n ],\n },\n },\n {\n type: 'link',\n facetId: 'entity-links',\n emptyState: {\n label: 'La tua ricerca non ha dato risultati, prova a cambiare i filtri',\n },\n filterConfig: {\n isArray: true,\n limit: 20,\n pagination: {\n limit: 50,\n offset: 0\n },\n searchIn: [\n {\n key: 'relatedEntities.id',\n operator: '=',\n },\n ],\n },\n },\n ],\n },\n ],\n results: {\n order: { // Default Sorting Method\n type: 'text', // score | text | date\n key: 'label_sort', // docPath, elastic key, ecc\n direction: 'ASC' // ASC | DESC\n },\n fields: [\n {\n id: 'description',\n highlight: true,\n limit: 200,\n },\n ],\n },\n page: { offset: 0, limit: 10 },\n};\n","interface FacetInputData {\n value: string | number;\n label: string;\n counter: number;\n hidden?: boolean;\n options?: any;\n}\n\nexport abstract class AwFacetInput {\n static index = 0;\n\n private id: string;\n\n protected config: any;\n\n protected output: any;\n\n protected data: FacetInputData[];\n\n protected isEmpty = false;\n\n constructor(config) {\n this.config = config;\n this._setId();\n\n AwFacetInput.index += 1;\n }\n\n public abstract setActive(facetValue: any): void;\n\n protected abstract transform(): any;\n\n public update = () => { this.output = this.transform(); }\n\n public getId = () => this.id;\n\n public getData = () => this.data;\n\n public getConfig = () => this.config;\n\n public getFacetId = () => this.config.facetId;\n\n public getInputIndex = () => this.config.inputIndex;\n\n public getSectionIndex = () => this.config.sectionIndex;\n\n public getContext = () => this.config.filterConfig.context || 'external';\n\n public getTarget = () => this.config.filterConfig.target || null;\n\n public getSearchIn = () => this.config.filterConfig.searchIn || null;\n\n public getType = () => this.config.type;\n\n public getOutput = () => this.output;\n\n public clear() { return null; }\n\n public setIsEmpty = (empty: boolean) => {\n this.isEmpty = empty;\n }\n\n public setData = (newData: FacetInputData[]) => { this.data = newData; }\n\n private _setId() {\n this.id = `facet-input-${this.getType()}-${AwFacetInput.index}`;\n }\n}\n","import { AwFacetInput } from './aw-facet-input';\n\nexport class AwFacetInputCheckbox extends AwFacetInput {\n protected transform() {\n const facetId = this.getFacetId();\n\n return this.data.map(({ label, value }, index) => ({\n type: 'checkbox',\n id: `${this.getId()}-${index}`,\n label,\n payload: {\n facetId,\n source: 'input-checkbox',\n value: `${value}`,\n },\n _meta: { facetId, value: `${value}` },\n }));\n }\n\n public setActive(facetValue) {\n const { isArray } = this.config.filterConfig;\n\n this.output.forEach((config) => {\n if (isArray && Array.isArray(facetValue) && facetValue.indexOf(config._meta.value) !== -1) {\n config.checked = true;\n } else if (facetValue === config._meta.value) {\n config.checked = true;\n } else {\n config.checked = false;\n }\n });\n }\n}\n","import { AwFacetInput } from './aw-facet-input';\n\nconst RESULTS_LIMIT = 2000;\n\nexport class AwFacetInputLink extends AwFacetInput {\n private facetValue: string | string[];\n\n protected transform() {\n const facetId = this.getFacetId();\n const results = [];\n let resultsCounter = 0;\n\n this.data.forEach(({\n label,\n counter,\n hidden,\n value: rawValue,\n options: rawOptions\n }) => {\n if (hidden) {\n return;\n }\n resultsCounter += 1;\n\n if (resultsCounter > RESULTS_LIMIT) {\n return;\n }\n\n // normalize value\n const value = `${rawValue}`;\n const options = rawOptions || {};\n\n const classes = [];\n if (options.classes) { classes.push(options.classes); }\n if (this._isActive(this.facetValue, value)) { classes.push('is-active'); }\n if (value === '__loading__') { classes.push('loader-link'); }\n\n results.push({\n type: 'link',\n id: this.getId(),\n text: label,\n counter,\n payload: {\n facetId,\n source: 'input-link',\n value,\n },\n icon: options.icon || null,\n classes: classes.join(' '),\n _meta: { facetId, value },\n });\n });\n\n // empty state control\n const itemEmpty = results.filter((item) => item.id === 'empty')[0];\n if (this.isEmpty) {\n if (itemEmpty) {\n itemEmpty.classes = 'empty-text-link';\n } else {\n const { label } = this.getConfig().emptyState;\n const emptyId = 'empty-link';\n results.push({\n type: 'link',\n id: emptyId,\n text: label,\n classes: 'empty-text-link',\n _meta: { facetId: emptyId, value: null },\n });\n }\n } else if (itemEmpty) {\n itemEmpty.classes = 'empty-text-link is-hidden';\n }\n\n return results;\n }\n\n public setActive(facetValue) {\n this.output.forEach((config) => {\n const isActive = this._isActive(facetValue, config._meta.value);\n let classes = config.classes ? config.classes.split(' ') : [];\n if (!isActive) {\n classes = classes.filter((className) => className !== 'is-active');\n } else if (classes.indexOf('is-active') === -1) {\n classes.push('is-active');\n }\n config.classes = classes.join(' ');\n });\n }\n\n private _isActive(facetValue, value) {\n this.facetValue = facetValue;\n\n return (\n (Array.isArray(facetValue) && facetValue.indexOf(value) !== -1)\n || (facetValue === value)\n );\n }\n\n public clear() {\n this.facetValue = [];\n }\n}\n","import { AwFacetInput } from './aw-facet-input';\n\nexport class AwFacetInputSelect extends AwFacetInput {\n protected transform() {\n const facetId = this.getFacetId();\n\n return {\n type: 'select',\n id: this.getId(),\n label: this.config.label,\n disabled: this.config.disabled,\n options: this.data ? this.data.map(({ value, label }) => ({\n // normalize value\n value: `${value}`,\n label,\n })) : [],\n payload: {\n facetId,\n source: 'input-select',\n },\n _meta: { facetId },\n };\n }\n\n public setActive(facetValue) {\n this.output.options\n .filter((option) => option.value === facetValue)\n .forEach((option) => { option.selected = true; });\n }\n}\n","import { helpers } from '@net7/boilerplate-common';\nimport { AwFacetInput } from './aw-facet-input';\n\nexport class AwFacetInputText extends AwFacetInput {\n protected transform() {\n const facetId = this.getFacetId();\n const payload = {\n facetId,\n source: 'input-text',\n };\n\n return {\n type: 'text',\n id: this.getId(),\n label: this.config.label,\n disabled: this.config.disabled,\n placeholder: this.config.placeholder,\n icon: this.config.icon,\n inputPayload: {\n ...payload,\n trigger: 'input',\n },\n enterPayload: {\n ...payload,\n trigger: 'enter',\n },\n iconPayload: {\n ...payload,\n trigger: 'icon',\n },\n _meta: { facetId },\n };\n }\n\n public setActive(facetValue) {\n this.output.value = helpers.unescapeQuotes(facetValue) || null;\n }\n}\n","/* eslint-disable max-classes-per-file */\nimport { get as _get, isEmpty as _isEmpty } from 'lodash';\nimport { Subject } from 'rxjs';\nimport { helpers } from '@net7/boilerplate-common';\nimport {\n AwFacetInput,\n AwFacetInputCheckbox,\n AwFacetInputText,\n AwFacetInputLink,\n AwFacetInputSelect,\n} from './aw-facet-inputs';\n\nexport type FilterOperators = '=' | '>' | '<' | '>=' | '<=' | '<>' | 'LIKE';\nexport type FacetTypes = 'value' | 'range';\nexport type FacetOperators = 'OR' | 'AND';\n\nconst INPUTS_MAP = {\n checkbox: AwFacetInputCheckbox,\n text: AwFacetInputText,\n link: AwFacetInputLink,\n select: AwFacetInputSelect,\n};\n\nconst FILTERS_MAP = {\n '=': '_filterDataEquals',\n '>': '_filterDataGreaterThan',\n '<': '_filterDataLessThan',\n '>=': '_filterDataGreaterOrEquals',\n '<=': '_filterDataLessOrEquals',\n '<>': '_filterDataNotEqual',\n LIKE: '_filterDataLike',\n};\n\nexport interface AwSearchConfig {\n totalCount: number;\n facets: any;\n page: any;\n results: any;\n fields: any;\n}\n\nexport interface Facet {\n id: string;\n type: FacetTypes;\n operator: FacetOperators;\n hasStaticData?: boolean;\n searchData?: string[];\n data?: any;\n}\n\nexport interface Filter {\n facetId: string;\n value: number | string | (number | string)[] | null;\n searchIn: Array<{\n key: string;\n operator?: FilterOperators;\n }>;\n isArray?: boolean;\n context?: 'internal' | 'external';\n target?: string;\n pagination?: {\n totalCount: number;\n limit: number;\n offset: number;\n };\n}\n\nexport class AwSearchModel {\n static queryParams: any = null;\n\n private _id: string;\n\n private _filters: Filter[] = [];\n\n private _facets: Facet[] = [];\n\n private _inputs: AwFacetInput[] = [];\n\n private _page: any;\n\n private _totalCount: number | null;\n\n private _config: AwSearchConfig;\n\n private _results$: Subject<any[]> = new Subject();\n\n constructor(id: string, config: AwSearchConfig) {\n this._id = id;\n this._config = config;\n\n this._setFilters();\n this._setFacets();\n this._setPage();\n this._setInputs();\n this._setInputsData();\n this._setTotalCount();\n\n // query params control\n /* eslint-disable @typescript-eslint/no-use-before-define */\n if (AwSearchModel.queryParams) {\n this.updateFiltersFromQueryParams(AwSearchModel.queryParams);\n AwSearchModel.queryParams = null;\n }\n }\n\n public getId = () => this._id;\n\n public getFilters = () => this._filters;\n\n public getFacets = () => this._facets;\n\n public getInputs = () => this._inputs;\n\n public getConfig = () => this._config;\n\n public getTotalCount = () => this._totalCount;\n\n public getFields = () => this._config.fields;\n\n public getResults$ = () => this._results$;\n\n public setResults = (results) => this._results$.next(results);\n\n public updateFilter(facetId, value, remove?: boolean) {\n const selectedFilters = this.getFiltersByFacetId(facetId);\n selectedFilters.forEach((filter) => {\n if (Array.isArray(filter.value) && remove) {\n filter.value = filter.value.filter((item) => item !== value);\n } else if (\n Array.isArray(filter.value)\n && filter.value.indexOf(value) === -1\n ) {\n filter.value.push(value);\n } else {\n filter.value = !remove ? helpers.escapeQuotes(value) : null;\n }\n });\n }\n\n public clear() {\n this.updateFiltersFromQueryParams({}, true);\n this._clearInputs();\n }\n\n public updateFiltersFromQueryParams(queryParams, clearAll = false) {\n this._facets.forEach(({ id }) => {\n const selectedFilters = this.getFiltersByFacetId(id);\n const value = queryParams[id];\n const isInternal = this.getInputByFacetId(id).getContext() === 'internal';\n\n if (isInternal && !clearAll) {\n return;\n }\n\n selectedFilters.forEach((filter) => {\n if (filter.isArray) {\n filter.value = value ? value.split(',') : [];\n } else {\n filter.value = value || null;\n }\n });\n });\n }\n\n public updateInputsFromFilters() {\n this._filters.forEach(({ facetId, value }) => {\n this.getInputByFacetId(facetId).setActive(value);\n });\n }\n\n public updateFacets(facets) {\n facets.forEach(({ id, data }) => this.updateFacet(id, data));\n this._setInputsData();\n }\n\n public updateTotalCount(totalCount) {\n this._totalCount = totalCount;\n }\n\n public updateFacet(facetId, data) {\n const selectedFacets = this._facets.filter((facet) => facet.id === facetId);\n if (!selectedFacets.length) {\n throw Error(`Facet with id '${facetId}' does not exists`);\n }\n\n selectedFacets.forEach((facet) => { facet.data = data; });\n }\n\n public reset() {\n this._filters.forEach((filter) => { filter.value = null; });\n }\n\n public getRequestParams() {\n return {\n facets: this._getRequestFacets(),\n page: this._page,\n results: this._config.results,\n filters: this._filters\n .filter((filter) => filter.context !== 'internal')\n .map(({\n facetId, value, searchIn, pagination\n }) => (pagination ? {\n facetId, value, searchIn, pagination\n } : {\n facetId, value, searchIn\n })),\n };\n }\n\n public getInternalFilters() {\n return this._filters\n .filter((filter) => (\n filter.context === 'internal'\n && !_isEmpty(filter.value)\n ))\n .map(({\n facetId, value, searchIn\n }) => ({\n facetId, value, searchIn\n }));\n }\n\n public filtersAsQueryParams(filters) {\n const queryParams: any = {};\n filters.forEach(\n (filter) => {\n queryParams[filter.facetId] = Array.isArray(filter.value)\n ? filter.value.join(',')\n : filter.value;\n },\n );\n\n return queryParams;\n }\n\n public getFiltersByFacetId(facetId: string) {\n return this._filters.filter((filter) => filter.facetId === facetId);\n }\n\n public getInputByFacetId(facetId: string) {\n return this._inputs.filter((input) => input.getFacetId() === facetId)[0];\n }\n\n public setInputData(facetId, data) {\n this.getInputByFacetId(facetId).setData(data);\n }\n\n public filterTarget(target) {\n const inputs = this._inputs.filter((input) => input.getTarget() === target);\n const targetInput = this.getInputByFacetId(target);\n const facet = this._facets.filter((f) => f.id === target)[0];\n const facetData = facet.data;\n\n const searchIns = [];\n inputs.forEach((input) => {\n const filter = this.getFiltersByFacetId(input.getFacetId())[0];\n const searchIn = input.getSearchIn();\n const { value } = filter;\n\n searchIns.push([searchIn, value]);\n });\n\n // filter\n facetData.forEach((item) => this._filterData(searchIns, item));\n\n // update\n targetInput.setData(facetData);\n\n if (targetInput.getConfig().emptyState) {\n const isEmpty = !facetData.filter((data) => !data.hidden).length;\n targetInput.setIsEmpty(isEmpty);\n }\n targetInput.update();\n }\n\n public setSearchConfigOrderBy(orderBy) {\n this._config.results.order.key = orderBy;\n }\n\n public setSearchConfigDirection(direction) {\n this._config.results.order.direction = direction;\n }\n\n public setSearchConfigType(type) {\n this._config.results.order.type = type;\n }\n\n public setPageConfigOffset(offset) {\n this._config.page.offset = offset;\n }\n\n public setPageConfigLimit(limit) {\n this._config.page.limit = limit;\n }\n\n private _clearInputs() {\n // do nothing\n }\n\n private _filterData(searchIns, item) {\n // reset\n item.hidden = false;\n searchIns.forEach(([searchIn, value]) => {\n searchIn.forEach(({ key, operator }) => {\n if (item.hidden) {\n return;\n }\n let refValue = _get(item, key, null);\n if (key.indexOf('searchData') !== -1 && Array.isArray(item.searchData)) {\n const searchDataKey = key.replace('searchData.', '');\n item.searchData.forEach(({ key: dataKey, value: dataValue }) => {\n if (dataKey === searchDataKey) {\n refValue = dataValue;\n }\n });\n }\n if (refValue === null) {\n item.hidden = true;\n } else if (FILTERS_MAP[operator]) {\n item.hidden = this[FILTERS_MAP[operator]](value, refValue);\n } else {\n console.warn(`SearchIn: operator ${operator} not supported`);\n }\n });\n });\n }\n\n private _filterDataEquals(value, refValue) {\n if (Array.isArray(refValue)) {\n if (Array.isArray(value)) {\n let inArray = value.length === 0;\n refValue.forEach((rv) => {\n if (value.indexOf(rv) !== -1) {\n inArray = true;\n }\n });\n return !(inArray);\n }\n return !(value && refValue.indexOf(value) !== -1);\n }\n if (Array.isArray(value)) {\n return !(\n !value.length || value.indexOf(refValue) !== -1\n );\n }\n return !(value && value === refValue);\n }\n\n private _filterDataGreaterThan(value, refValue) {\n if (!Array.isArray(value)) {\n return !(value && value > refValue);\n }\n return false;\n }\n\n private _filterDataLessThan(value, refValue) {\n if (!Array.isArray(value)) {\n return !(value && value < refValue);\n }\n return false;\n }\n\n private _filterDataGreaterOrEquals(value, refValue) {\n if (!Array.isArray(value)) {\n return !(value && value >= refValue);\n }\n return false;\n }\n\n private _filterDataLessOrEquals(value, refValue) {\n if (!Array.isArray(value)) {\n return !(value && value <= refValue);\n }\n return false;\n }\n\n private _filterDataNotEqual(value, refValue) {\n if (!Array.isArray(value)) {\n return !(value && value !== refValue);\n }\n return false;\n }\n\n private _filterDataLike(value, refValue) {\n if (\n value\n && typeof value === 'string'\n && typeof refValue === 'string'\n ) {\n const haystack = refValue.toLowerCase();\n const needle = value.toLocaleLowerCase();\n\n return !(haystack.indexOf(needle) !== -1);\n }\n return false;\n }\n\n private _setFilters() {\n this._config.fields.forEach((field) => {\n field.inputs.forEach((input) => this._filters.push({\n ...input.filterConfig,\n facetId: input.facetId,\n value: input.filterConfig.isArray ? [] : null,\n }));\n });\n }\n\n private _setFacets() {\n this._facets = this._config.facets;\n }\n\n private _setPage() {\n this._page = this._config.page;\n }\n\n private _setTotalCount() {\n this._totalCount = this._config.totalCount;\n }\n\n private _setInputs() {\n this._config.fields.forEach((sectionConfig, sectionIndex) => {\n sectionConfig.inputs.forEach((inputConfig, inputIndex) => {\n const InputModel = INPUTS_MAP[inputConfig.type];\n if (!InputModel) {\n throw Error(`Input type ${inputConfig.type} not supported`);\n }\n\n this._inputs.push(\n new InputModel({ ...inputConfig, inputIndex, sectionIndex }),\n );\n });\n });\n }\n\n private _setInputsData() {\n this._facets.forEach((facet) => this.setInputData(facet.id, facet.data));\n }\n\n private _getRequestFacets() {\n const results: Facet[] = [];\n this._facets.forEach((f) => {\n const facetConfig = { ...f };\n if (!f.hasStaticData) {\n delete facetConfig.data;\n }\n delete facetConfig.hasStaticData;\n\n // searchData control\n if (Array.isArray(facetConfig.data)) {\n facetConfig.data\n .filter((dataItem) => typeof dataItem.searchData !== 'undefined')\n .forEach((dataItem) => {\n delete dataItem.searchData;\n });\n }\n results.push(facetConfig);\n });\n return results;\n }\n}\n","import { cloneDeep } from 'lodash';\nimport { LayoutDataSource } from '@net7/core';\nimport {\n tap, takeUntil\n} from 'rxjs/operators';\nimport {\n Observable, of, fromEvent, Subject, BehaviorSubject, forkJoin\n} from 'rxjs';\nimport { helpers } from '@net7/boilerplate-common';\nimport facetsConfig from './search-facets.config';\nimport { AwSearchService } from '../../search/aw-search.service';\nimport { AwSearchModel } from '../../search/aw-search.model';\nimport entityLinksHelper from '../../search/entity-links.helper';\nimport { getHeadTitle } from '../../helpers/title.helper';\n\nexport class AwSearchLayoutDS extends LayoutDataSource {\n public layoutId = 'aw-search-layout';\n\n public configId = 'search-layout';\n\n public currentNav = 'ricerca';\n\n public pageNameDefault = 'Ricerca';\n\n public facetsConfig: any = facetsConfig;\n\n public paginationList = [10, 25, 50];\n\n protected destroyed$: Subject<void> = new Subject();\n\n protected communication: any;\n\n protected configuration: any;\n\n protected mainState: any;\n\n protected search: AwSearchService;\n\n protected searchModel: AwSearchModel;\n\n protected prettifyLabels: any;\n\n protected configKeys: any;\n\n public fallback: string;\n\n public resetButtonEnabled = true;\n\n public pageTitle: string;\n\n public resultsTitle: string;\n\n public totalCount: number;\n\n /** Pagination value (url parameter) */\n public currentPage: any = 1;\n\n /** Linked objects page size */\n public pageSize = 10;\n\n public sidebarIsSticky = false;\n\n public isFirstLoading = true;\n\n public resultsLoading = false;\n\n /** True when the user has input a text string */\n public isSearchingText = new BehaviorSubject(false);\n\n /** Current order method */\n public orderBy = 'label_sort';\n\n /** Current order direction */\n public orderDirection = 'ASC';\n\n public options: any;\n\n public orderByLabel = 'Ordina per';\n\n /** Options used to render the HTMLSelect */\n public orderByOptions: any = [\n {\n value: '_score_DESC',\n label: 'Ordine per pertinenza',\n type: 'score',\n selected: false\n }, {\n value: 'label_sort_ASC',\n label: 'Ordine alfabetico (A→Z)',\n type: 'text',\n selected: true // Mirrors the default sorting method in `search-facets.config.ts`\n }, {\n value: 'label_sort_DESC',\n label: 'Ordine alfabetico (Z→A)',\n type: 'text',\n selected: false\n }\n ];\n\n onInit({\n configuration, mainState, options, communication, search,\n }) {\n this.configuration = configuration;\n this.mainState = mainState;\n this.communication = communication;\n this.search = search;\n this.options = options;\n this.prettifyLabels = this.configuration.get('labels');\n this.configKeys = this.configuration.get('config-keys');\n this.fallback = this.configuration.get(this.configId).fallback;\n this.pageTitle = this.configuration.get(this.configId).title;\n\n // remove first\n // stateless search\n if (this.search.model(this.layoutId)) {\n this.search.remove(this.layoutId);\n }\n this.search.add(this.layoutId, cloneDeep(this.facetsConfig));\n this.searchModel = this.search.model(this.layoutId);\n\n // query params control\n if (AwSearchModel.queryParams) {\n this.searchModel.updateFiltersFromQueryParams(AwSearchModel.queryParams);\n AwSearchModel.queryParams = null;\n }\n this._sidebarStickyControl();\n this.mainState.updateCustom('currentNav', this.currentNav);\n\n // set head title\n this.setHeadTitle();\n }\n\n onDestroy() {\n this.destroyed$.next();\n AwSearchModel.queryParams = null;\n }\n\n onSearchResponse() {\n this.resetButtonEnabled = true;\n if (this.isFirstLoading) {\n this.isFirstLoading = false;\n this.one('facets-wrapper').update({ searchModel: this.searchModel });\n this.searchModel.updateInputsFromFilters();\n }\n }\n\n /**\n * Handles changes of the HTMLSelect order control\n * @param payload _score_DESC, label_sort_ASC, label_sort_DESC\n */\n onOrderByChange(payload: string) {\n const orderBy = payload.substring(0, payload.lastIndexOf('_'));\n const direction = payload.substring(payload.lastIndexOf('_') + 1);\n let type = '';\n // set selected\n this.orderByOptions.forEach((option) => {\n if (option.value === payload) {\n option.selected = true;\n type = option.type;\n } else {\n option.selected = false;\n }\n });\n this.orderBy = orderBy;\n this.orderDirection = direction;\n this.searchModel.setSearchConfigOrderBy(orderBy);\n this.searchModel.setSearchConfigDirection(direction);\n this.searchModel.setSearchConfigType(type);\n }\n\n onPageSizeChange(size): Observable<boolean> {\n this.pageSize = size;\n return this._updateSearchPage(this.currentPage);\n }\n\n onPaginationChange(payload): Observable<boolean> {\n const page = payload.replace('page-', '');\n return this._updateSearchPage(page);\n }\n\n onPaginationGoToChange(payload): Observable<boolean> {\n const page = payload.replace('goto-', '');\n return this._updateSearchPage(page);\n }\n\n drawPagination = () => {\n const { href, queryParams } = this._getPaginationParams();\n this.one('n7-smart-pagination').updateOptions({\n mode: 'href',\n href,\n queryParams,\n });\n this.one('n7-smart-pagination').update({\n totalPages: Math.ceil(this.totalCount / this.pageSize),\n currentPage: this.currentPage,\n pageLimit: 5,\n sizes: {\n label: 'Numero di risultati',\n list: this.paginationList,\n active: this.pageSize,\n },\n });\n };\n\n resetPagination() {\n this._updateSearchPage(1);\n }\n\n onResultsLimitChange(payload) {\n this.setLimit(payload);\n\n // reset page & offset\n this.currentPage = 1;\n this.searchModel.setPageConfigOffset(0);\n }\n\n setLimit(payload) {\n this.pageSize = payload;\n this.searchModel.setPageConfigLimit(payload);\n this.searchModel.setPageConfigOffset((this.currentPage - 1) * this.pageSize);\n }\n\n public getSearchModelId = () => this.layoutId;\n\n private getResultsReq$(params): Observable<any> {\n return this.communication.request$('search', {\n params,\n onError: (error) => console.error(error),\n }).pipe(\n tap(({ totalCount, results }) => {\n this.totalCount = totalCount;\n let resultsTitleIndex = 0;\n // results title\n if (this.totalCount > 1) {\n resultsTitleIndex = 2;\n } else if (this.totalCount === 1) {\n resultsTitleIndex = 1;\n }\n this.resultsTitle = this.configuration.get(this.configId).results[\n resultsTitleIndex\n ];\n this.searchModel.updateTotalCount(totalCount);\n\n this.one('aw-linked-objects').updateOptions({\n context: this.configId === 'gallery-layout' ? 'gallery' : 'search',\n config: this.configuration,\n page: this.currentPage,\n pagination: true,\n paginationParams: this._getPaginationParams(),\n dynamicPagination: {\n total: totalCount,\n },\n size: this.pageSize,\n });\n this.drawPagination();\n this.one('aw-linked-objects').update({ items: this._normalizeItems(results.items) });\n }),\n );\n }\n\n private getFacetsReq$(params) {\n return this.communication.request$('facets', {\n params,\n onError: (error) => console.error(error),\n }).pipe(\n tap(({ facets }) => {\n // entity links pagination control\n entityLinksHelper.onFacetsResponse(this.searchModel, facets);\n // facets labels\n this._addFacetsLabels(facets);\n // facets options\n this._addFacetsOptions(facets);\n this.searchModel.updateFacets(facets);\n }),\n );\n }\n\n public doSearchRequest$(): Observable<any> {\n const requestParams = this.searchModel.getRequestParams();\n const params = {\n searchParameters: {\n totalCount: 0, // fake param for apollo\n gallery: !!(this.configId === 'gallery-layout'),\n ...requestParams,\n },\n };\n // update offset\n entityLinksHelper.resetOffset();\n entityLinksHelper.updateParamsOffset(params.searchParameters);\n // initial loader\n entityLinksHelper.addInitialLoader(this);\n\n const resultsReq$ = this.getResultsReq$(params);\n const facetsReq$ = this.getFacetsReq$(params);\n return forkJoin(resultsReq$, facetsReq$);\n }\n\n private _updateSearchPage(page) {\n if (+page === this.currentPage) {\n return of(false);\n }\n\n this.currentPage = +page;\n\n const searchConfig = this.searchModel.getConfig();\n const pageConfig = searchConfig.page;\n const { limit } = pageConfig;\n const newOffset = (this.currentPage - 1) * limit;\n\n this.searchModel.setPageConfigOffset(newOffset);\n\n return of(true);\n }\n\n private _addFacetsLabels(facets) {\n facets\n .filter((f) => Array.isArray(f.data))\n .forEach((f) => {\n f.data.forEach((dataItem) => {\n const key = dataItem.label;\n dataItem.label = (\n this.configKeys[key]?.label\n || helpers.prettifySnakeCase(key, this.prettifyLabels[key])\n );\n });\n });\n }\n\n private _addFacetsOptions(facets) {\n facets\n .filter((f) => f.id === 'query-links')\n .forEach((f) => {\n f.data.forEach((dataItem) => {\n const config = this.configKeys[dataItem.value];\n if (config) {\n dataItem.options = {\n icon: config.icon,\n classes: `color-${config['class-name']}`,\n };\n }\n });\n });\n }\n\n private _normalizeItems(items) {\n return items.map((singleItem) => ({ item: { ...singleItem } }));\n }\n\n private _sidebarStickyControl() {\n // no sticky for Internet Explorer\n if (helpers.browserIsIE()) {\n return;\n }\n const source$ = fromEvent(window, 'scroll');\n\n source$.pipe(\n takeUntil(this.destroyed$),\n ).subscribe(() => {\n const windowOffsetTop = window.pageYOffset;\n const stickyParent = document.getElementsByClassName('sticky-parent')[0] as HTMLElement;\n const wrapperOffsetTop = stickyParent ? stickyParent.offsetTop : 0;\n this.sidebarIsSticky = wrapperOffsetTop <= windowOffsetTop;\n });\n }\n\n private _getPaginationParams() {\n const requestParams = this.searchModel.getRequestParams();\n const queryParams = this.searchModel.filtersAsQueryParams(requestParams.filters);\n\n Object.keys(queryParams).forEach((key) => { queryParams[key] = queryParams[key] || null; });\n\n // aditional params\n queryParams.orderby = this.orderBy;\n queryParams.orderdirection = this.orderDirection;\n queryParams.page = this.currentPage;\n queryParams.limit = this.pageSize;\n\n let href = this.configuration.get('paths').searchBasePath;\n if (this.configId === 'gallery-layout') {\n href = this.configuration.get('paths').galleryBasePath;\n }\n\n return {\n href,\n queryParams,\n };\n }\n\n private setHeadTitle() {\n this.mainState.update('headTitle', getHeadTitle({\n name: this.configuration.get('customer'),\n pageName: this.configuration.get(this.configId)?.pageName,\n pageDefault: this.pageNameDefault,\n }));\n }\n}\n","export default {\n totalCount: 0,\n facets: [\n {\n id: 'query',\n type: 'value'\n },\n {\n id: 'query-all',\n type: 'value',\n hasStaticData: true,\n data: [\n {\n value: '1',\n label: 'Cerca in tutti i campi delle schede'\n }\n ]\n },\n {\n id: 'entity-types',\n type: 'value',\n operator: 'OR',\n limit: 10,\n order: 'count'\n },\n {\n id: 'entity-search',\n type: 'value'\n },\n {\n id: 'entity-links',\n type: 'value',\n searchData: ['entity-type']\n },\n ],\n fields: [\n {\n inputs: [\n {\n type: 'text',\n facetId: 'query',\n placeholder: 'Cerca nei titoli delle schede',\n filterConfig: {\n delay: 500,\n minChars: 3,\n searchIn: [\n {\n key: 'label.ngrams',\n operator: 'LIKE'\n }\n ]\n }\n },\n {\n type: 'checkbox',\n facetId: 'query-all',\n filterConfig: {\n searchIn: [\n {\n key: 'label.ngrams^5,text^4,fields.*^3',\n operator: '='\n }\n ]\n }\n },\n ]\n },\n {\n header: {\n label: 'Relazione con',\n classes: 'related-class'\n },\n inputs: [\n {\n type: 'checkbox',\n facetId: 'entity-types',\n filterConfig: {\n isArray: true,\n context: 'internal',\n target: 'entity-links',\n searchIn: [\n {\n key: 'searchData.entity-type',\n operator: '='\n }\n ]\n }\n },\n {\n type: 'text',\n facetId: 'entity-search',\n filterConfig: {\n delay: 500,\n minChars: 3,\n context: 'internal',\n target: 'entity-links',\n searchIn: [\n {\n key: 'label',\n operator: 'LIKE'\n }\n ]\n }\n },\n {\n type: 'link',\n facetId: 'entity-links',\n emptyState: {\n label: 'La tua ricerca non ha dato risultati, prova a cambiare i filtri'\n },\n filterConfig: {\n isArray: true,\n limit: 20,\n pagination: {\n limit: 50,\n offset: 0\n },\n searchIn: [\n {\n key: 'relatedEntities.id',\n operator: '='\n }\n ]\n }\n }\n ]\n },\n ],\n results: {\n order: {\n type: 'score', // score | text | date\n key: '_score', // docPath, elastic key, ecc\n direction: 'DESC' // ASC | DESC\n },\n fields: [\n {\n id: 'description',\n highlight: true,\n limit: 200\n }\n ]\n },\n page: { offset: 0, limit: 12 }\n};\n","import { delay, filter } from 'rxjs/operators';\nimport tippy, { hideAll } from 'tippy.js';\nimport { AwLinkedObjectsDS } from '../../data-sources/linked-objects.ds';\nimport { AwSearchLayoutDS } from '../search-layout/search-layout.ds';\nimport facetsConfig from './gallery-facets.config';\n\nexport class AwGalleryLayoutDS extends AwSearchLayoutDS {\n public layoutId = 'aw-gallery-layout';\n\n public configId = 'gallery-layout';\n\n public currentNav = 'galleria';\n\n public pageNameDefault = 'Galleria';\n\n public facetsConfig = facetsConfig;\n\n public paginationList = [12, 24, 48];\n\n public pageSize = 12; // linked objects page size\n\n public breadcrumbsTooltip;\n\n onInit(payload) {\n super.onInit(payload);\n\n this.breadcrumbsTooltip = (\n this.configuration.get(this.configId)?.breadcrumbsTooltip\n ) || {};\n\n // load breadcrumbs tooltips\n if (!this.breadcrumbsTooltip?.disable) {\n this.loadTooltips();\n }\n }\n\n loadTooltips() {\n const linkedObjectsDS: AwLinkedObjectsDS = this.getWidgetDataSource('aw-linked-objects');\n linkedObjectsDS.out$.pipe(\n filter((data) => !!data),\n delay(1000) // symbolic timeout\n ).subscribe(() => {\n // clear first\n hideAll();\n\n // load\n tippy('.tooltip-trigger', {\n allowHTML: true,\n interactive: true,\n trigger: 'click',\n theme: 'light-border no-padding',\n placement: 'bottom-start',\n hideOnClick: 'toggle',\n content(reference) {\n const id = reference.getAttribute('data-template');\n const template = document.getElementById(id);\n return template.innerHTML;\n },\n ...(this.breadcrumbsTooltip?.libOptions || {})\n });\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport {\n debounceTime, takeUntil\n} from 'rxjs/operators';\nimport { helpers } from '@net7/boilerplate-common';\nimport entityLinksHelper from '../../search/entity-links.helper';\n\nexport class AwSearchLayoutEH extends EventHandler {\n public layoutId = 'aw-search-layout';\n\n private destroyed$: Subject<void> = new Subject();\n\n private route: any;\n\n /** Emits when any of the search-facets are changed */\n private facetsChange$: Subject<void> = new Subject();\n\n /** Emits when the pagination element\n * or the select-sort element are changed */\n private additionalParamsChange$: Subject<void> = new Subject();\n\n /** Last queried text, used to check if the text has changed */\n private previousText = '';\n\n /** Is true when the search is triggered with a new text-string */\n private textHasChanged = false;\n\n private scrollRefElement: HTMLElement;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.layoutId}.init`: {\n this.route = payload.route;\n this.dataSource.onInit(payload);\n this._listenToFacetsChange();\n this._listenToAdditionalParamsChange();\n this._listenToRouterChanges();\n this._listenToInternalFilters();\n const { value: textInput } = this.dataSource.searchModel.getFiltersByFacetId('query')[0];\n if ((textInput || '').length > 0) {\n this.dataSource.isSearchingText.next(true);\n setTimeout(() => {\n this.dataSource.onOrderByChange('_score_DESC');\n this.additionalParamsChange$.next(); // emit from observable stream\n }, 100);\n }\n // scroll top\n window.scrollTo(0, 0);\n } break;\n\n case `${this.layoutId}.destroy`:\n this.dataSource.onDestroy();\n this.destroyed$.next();\n break;\n\n case `${this.layoutId}.orderbychange`:\n // handle the change of result-order\n this.dataSource.onOrderByChange(payload);\n this.additionalParamsChange$.next(); // emit from observable stream\n break;\n\n case `${this.layoutId}.searchreset`:\n this.dataSource.resetButtonEnabled = false;\n this.dataSource.searchModel.clear();\n this.additionalParamsChange$.next();\n break;\n\n default:\n console.warn('(search) unhandled inner event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'facets-wrapper.facetschange': {\n this.dataSource.resetPagination();\n const { value: textInput } = this.dataSource.searchModel.getFiltersByFacetId('query')[0];\n // Checks if <input type=text>'s value has changed\n this.textHasChanged = !!(textInput && (textInput !== this.previousText));\n this.previousText = textInput;\n const activeOrder = this.dataSource.orderByOptions.filter((d) => d.selected)[0].value;\n if (this.textHasChanged && (textInput || '').length > 0) {\n // Add sort by score option\n this.dataSource.isSearchingText.next(true);\n } else if ((textInput || '').length === 0 && /score/i.test(activeOrder)) {\n // Remove sort by score option\n this.dataSource.isSearchingText.next(false);\n setTimeout(() => {\n this.dataSource.onOrderByChange('label_sort_ASC');\n this.additionalParamsChange$.next(); // emit from observable stream\n }, 100);\n }\n } break;\n\n case 'n7-smart-pagination.change':\n this.dataSource.onResultsLimitChange(payload.value);\n this.additionalParamsChange$.next();\n break;\n\n default:\n break;\n }\n });\n }\n\n /**\n * Handles changes to any of the search-facets\n */\n private _listenToFacetsChange() {\n this.facetsChange$.pipe(\n debounceTime(500),\n ).subscribe(() => {\n this.dataSource.resultsLoading = true;\n if (this.textHasChanged) {\n this.additionalParamsChange$.next();\n } else {\n this.dataSource.doSearchRequest$().subscribe(() => {\n this.dataSource.resultsLoading = false;\n this.dataSource.onSearchResponse();\n this.emitGlobal('searchresponse', this.dataSource.getSearchModelId());\n });\n }\n });\n }\n\n /**\n * Handles entity links pagination\n */\n private _listenToInternalFilters() {\n entityLinksHelper.listenToChanges(this.dataSource)\n .subscribe(() => {\n this.emitGlobal('searchresponse', this.dataSource.getSearchModelId());\n });\n }\n\n /**\n * Handles changes happening on pagination and select elements.\n */\n private _listenToAdditionalParamsChange() {\n this.additionalParamsChange$.subscribe(() => {\n const { searchModel } = this.dataSource;\n const requestParams = searchModel.getRequestParams();\n const queryParams = searchModel.filtersAsQueryParams(requestParams.filters);\n\n Object.keys(queryParams).forEach((key) => { queryParams[key] = queryParams[key] || null; });\n\n // aditional params\n queryParams.orderby = this.dataSource.orderBy;\n queryParams.orderdirection = this.dataSource.orderDirection;\n queryParams.page = this.dataSource.currentPage;\n queryParams.limit = this.dataSource.pageSize;\n\n // If the searched text was updated, overwrite the query params and force sorting by \"score\".\n if (this.textHasChanged) {\n queryParams.orderby = '_score';\n queryParams.orderdirection = 'DESC';\n this.textHasChanged = false;\n }\n\n this.emitGlobal('navigate', {\n handler: 'router',\n path: [],\n queryParams,\n });\n\n this.facetsChange$.next();\n });\n }\n\n /** URL changes */\n private _listenToRouterChanges() {\n this.route.queryParams.pipe(\n takeUntil(this.destroyed$),\n ).subscribe((params) => {\n this.emitOuter('queryparamschange', params);\n // aditional params control\n if (params.orderby && params.orderdirection) {\n this.dataSource.onOrderByChange(`${params.orderby}_${params.orderdirection}`);\n }\n if (params.page) {\n this.dataSource.onPaginationChange(`page-${params.page}`);\n }\n if (params.limit) {\n this.dataSource.setLimit(+params.limit);\n }\n this.facetsChange$.next();// scroll to ref element\n if (!this.scrollRefElement) {\n this.scrollRefElement = document.querySelector('.scroll-ref');\n } else if (!helpers.isElementInViewport(this.scrollRefElement)) {\n this.scrollRefElement.scrollIntoView();\n }\n });\n }\n}\n","import { AwSearchLayoutEH } from '../search-layout/search-layout.eh';\n\nexport class AwGalleryLayoutEH extends AwSearchLayoutEH {\n public layoutId = 'aw-gallery-layout';\n}\n","import { SmartPaginationDS, SmartPaginationEH } from '@net7/boilerplate-common';\nimport { AwGalleryLayoutDS } from './gallery-layout.ds';\nimport { AwGalleryLayoutEH } from './gallery-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\nimport { AwFacetsWrapperDS } from '../../data-sources';\nimport { AwFacetsWrapperEH } from '../../event-handlers';\n\nexport const AwGalleryLayoutConfig = {\n layoutId: 'aw-gallery-layout',\n /**\n * Array of components you want to use\n * in this layout\n */\n widgets: [\n { id: 'facets-wrapper', dataSource: AwFacetsWrapperDS, eventHandler: AwFacetsWrapperEH },\n { id: 'aw-linked-objects' },\n { id: 'aw-search-layout-tabs', hasStaticData: true },\n {\n id: 'n7-smart-pagination',\n dataSource: SmartPaginationDS,\n eventHandler: SmartPaginationEH,\n },\n ],\n layoutDS: AwGalleryLayoutDS,\n layoutEH: AwGalleryLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { AwSearchModel, AwSearchConfig } from './aw-search.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AwSearchService {\n private _models: any = {};\n\n constructor(\n private route: ActivatedRoute\n ) {\n this.route.queryParams.pipe(\n filter((params) => {\n if (Object.keys(params).length) return true;\n return false;\n }),\n ).subscribe((params) => {\n // to use in searchs\n AwSearchModel.queryParams = params;\n });\n }\n\n public add(id: string, config: AwSearchConfig) {\n if (this._models[id]) {\n throw Error(`Search model '${id}' already exists!`);\n }\n\n this._models[id] = new AwSearchModel(id, config);\n }\n\n public remove(id: string) {\n if (this._models[id]) {\n delete this._models[id];\n }\n }\n\n public model(id: string): AwSearchModel {\n return this._models[id] || null;\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'aw-facets-wrapper',\n templateUrl: './aw-facets-wrapper.html',\n})\nexport class AwFacetsWrapperComponent {\n @Input() data: any;\n\n @Input() emit: any;\n\n headerEmit(eventType, eventPayload) {\n if (!this.emit) {\n return;\n }\n this.emit('facetheader', { eventType, eventPayload });\n }\n\n facetEmit(eventType, eventPayload) {\n if (!this.emit) {\n return;\n }\n this.emit('facet', { eventType, eventPayload });\n }\n}\n","<div *ngIf=\"data\" class=\"n7-facets-wrapper {{ data.classes || '' }}\">\n <div *ngFor=\"let group of data.groups\" class=\"n7-facets-wrapper__group {{ group.classes || '' }}\">\n <n7-facet-header\n [data]=\"group.header\"\n [emit]=\"headerEmit.bind(this)\"\n ></n7-facet-header>\n\n <n7-facet\n *ngIf=\"group.isOpen\"\n [data]=\"group.facet\"\n [emit]=\"facetEmit.bind(this)\"\n ></n7-facet>\n </div>\n</div>","import { Component, Input } from '@angular/core';\n\nexport type GalleryBreadcrumbsTooltipData = {\n items: {\n label: string;\n }[]\n}\n\n@Component({\n selector: 'aw-gallery-breadcrumbs-tooltip',\n templateUrl: './gallery-breadcrumbs-tooltip.html'\n})\nexport class GalleryBreadcrumbsTooltipComponent {\n @Input() data: GalleryBreadcrumbsTooltipData;\n\n title = 'Percorso completo';\n\n isLast = (index) => this.data?.items.length === (index + 1);\n\n getLeftMargin = (index) => `${index * 4}px`;\n}\n","<div *ngIf=\"data\" class=\"aw-gallery-breadcrumbs-tooltip\">\n <div class=\"aw-gallery-breadcrumbs-tooltip__title\">{{ title }}</div>\n <ul class=\"aw-gallery-breadcrumbs-tooltip__items\">\n <li *ngFor=\"let item of data.items; let $i = index\"\n class=\"aw-gallery-breadcrumbs-tooltip__item\"\n [ngClass]=\"{ 'is-last': isLast($i) }\">\n <span class=\"aw-gallery-breadcrumbs-tooltip__item-icon n7-icon n7-icon-angle-right\"\n [ngStyle]=\"{ 'margin-left': getLeftMargin($i) }\"></span>\n <span class=\"aw-gallery-breadcrumbs-tooltip__item-label\">{{ item.label }}</span>\n </li>\n </ul>\n</div>","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n AbstractLayout,\n ConfigurationService,\n LayoutsConfigurationService,\n MainStateService,\n CommunicationService\n} from '@net7/boilerplate-common';\nimport { AwSearchService } from '../../search/aw-search.service';\nimport { AwGalleryLayoutConfig as config } from './gallery-layout.config';\n\n@Component({\n selector: 'aw-gallery-layout',\n templateUrl: './gallery-layout.html'\n})\nexport class AwGalleryLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n constructor(\n private configuration: ConfigurationService,\n private layoutsConfiguration: LayoutsConfigurationService,\n private mainState: MainStateService,\n private communication: CommunicationService,\n private search: AwSearchService,\n private route: ActivatedRoute,\n ) {\n super(layoutsConfiguration.get('AwGalleryLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n configuration: this.configuration,\n mainState: this.mainState,\n communication: this.communication,\n search: this.search,\n route: this.route,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div *ngIf=\"lb.dataSource as ds\" class=\"aw-search aw-gallery n7-side-auto-padding\"\n id=\"gallery-layout\">\n <div class=\"aw-search__header\">\n <div class=\"aw-search__header-left\">\n <h1 class=\"aw-search__header-title\">{{ ds.pageTitle }}</h1>\n </div>\n </div>\n <div class=\"aw-search__content-wrapper sticky-parent\">\n <!-- Left sidebar: facets -->\n <div *ngIf=\"!(lb.widgets['facets-wrapper'].ds.out$ | async)\"\n class=\"aw-search__sidebar-loading sticky-target\">\n <div class=\"aw-search__facets-loading\">\n <n7-content-placeholder [data]=\"{\n blocks: [{\n classes: 'search-placeholder-facet-input'\n }, {\n classes: 'search-placeholder-facet-check'\n }, {\n classes: 'search-placeholder-facet-item'\n }, {\n classes: 'search-placeholder-facet-item'\n }, {\n classes: 'search-placeholder-facet-item'\n }, {\n classes: 'search-placeholder-facet-item'\n }, {\n classes: 'search-placeholder-facet-item'\n }]\n }\">\n </n7-content-placeholder>\n </div>\n </div>\n <div *ngIf=\"!!(lb.widgets['facets-wrapper'].ds.out$ | async)\"\n class=\"aw-search__sidebar sticky-target\"\n [ngClass]=\"{ 'is-sticky': ds.sidebarIsSticky }\">\n <div class=\"aw-search__facets\">\n <aw-facets-wrapper [data]=\"lb.widgets['facets-wrapper'].ds.out$ | async\"\n [emit]=\"lb.widgets['facets-wrapper'].emit\">\n </aw-facets-wrapper>\n </div>\n </div>\n <div class=\"scroll-ref\">&nbsp;</div>\n <div class=\"aw-search__content\">\n <div class=\"aw-search__results-header\">\n <div class=\"aw-search__results-header-left\">\n <h3 *ngIf=\"!ds.resultsLoading\"\n class=\"aw-search__total\">\n <span class=\"aw-search__total-number\">{{ ds.totalCount }}</span>&nbsp;\n <span class=\"aw-search__total-title\">{{ ds.resultsTitle }}</span>\n </h3>\n </div>\n <div class=\"aw-search__results-header-right\">\n <label class=\"aw-search__results-select-orderby-label\"\n for=\"aw-search__results-select-orderby\">{{ ds.orderByLabel }}</label>\n <select (change)=\"lb.eventHandler.emitInner('orderbychange', $event.target.value)\"\n id=\"aw-search__results-select-orderby\">\n <option *ngFor=\"let option of ds.orderByOptions\"\n [value]=\"option.value\"\n [selected]=\"option.selected\"\n [hidden]=\"option.type === 'score' && ds.isSearchingText.value === false\">\n {{ option.label }}</option>\n </select>\n </div>\n </div>\n <!-- Search details -->\n <div *ngIf=\"ds.resultsLoading\"\n class=\"aw-search__results-wrapper-loading\">\n <n7-content-placeholder *ngFor=\"let n of [0,1,2,3,4,5,6,7,8,9]\"\n [data]=\"{\n blocks: [\n { classes: 'search-result-placeholder-title' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' }\n ]\n }\"></n7-content-placeholder>\n </div>\n <div *ngIf=\"!ds.resultsLoading\"\n class=\"aw-search__results-wrapper\">\n <div class=\"n7-grid-3\">\n <div *ngFor=\"let preview of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews; let $i = index\">\n \n <!-- BREADCRUMBS WITH TOOLTIP -->\n <div *ngIf=\"!ds.breadcrumbsTooltip?.disable\" class=\"aw-gallery__breadcrumbs\">\n <a class=\"aw-gallery__breadcrumbs-icon tooltip-trigger\" [attr.data-template]=\"'breadcrumbs-tooltip-' + $i\">\n <span class=\"n7-icon n7-icon-tree-icon\"></span>\n </a>\n <div class=\"aw-gallery__breadcrumbs-separator\">\n <span class=\"n7-icon n7-icon-angle-right\"></span>\n </div>\n <n7-smart-breadcrumbs [data]=\"preview.breadcrumbs\">\n </n7-smart-breadcrumbs>\n </div>\n\n <!-- NORMAL BREADCRUMBS -->\n <n7-smart-breadcrumbs *ngIf=\"ds.breadcrumbsTooltip?.disable\" [data]=\"preview.breadcrumbs\">\n </n7-smart-breadcrumbs>\n \n <!-- ITEMPREVIEW -->\n <n7-item-preview [data]=\"preview\"\n [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n <div [attr.id]=\"'breadcrumbs-tooltip-' + $i\" [ngStyle]=\"{ display: 'none' }\">\n <aw-gallery-breadcrumbs-tooltip\n [data]=\"preview.breadcrumbs\"\n ></aw-gallery-breadcrumbs-tooltip>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"ds.totalCount == 0\">\n <div class=\"aw-search__fallback\">\n <p class=\"aw-search__fallback-string\">\n {{ ds.fallback }}\n </p>\n <button [disabled]=\"!ds.resetButtonEnabled\"\n class=\"n7-btn aw-search__fallback-button\"\n (click)=\"lb.eventHandler.emitInner('searchreset', {})\">\n Resetta la ricerca\n </button>\n </div>\n </ng-container>\n <n7-smart-pagination *ngIf=\"ds.totalCount > 10\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n </div>\n </div>\n </div>\n</div>\n","import { LayoutDataSource } from '@net7/core';\nimport { Subject, forkJoin, fromEvent } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { CommunicationService, helpers } from '@net7/boilerplate-common';\nimport { getHeadTitle } from '../../helpers/title.helper';\n\nexport class AwHomeLayoutDS extends LayoutDataSource {\n private communication: CommunicationService;\n\n private mainState: any;\n\n private tippy: any;\n\n private configuration: any;\n\n private facetInputs: any = {};\n\n private autocompletePopover: any;\n\n private autocompletePopoverOpen = false;\n\n private autocompleteChanged$: Subject<string> = new Subject();\n\n public configId = 'home-layout';\n\n public numOfItemsStr: string = null;\n\n public currentHoverEntity: any = null;\n\n public hasScrollBackground = false;\n\n public resultsLimit = -1;\n\n public selectedEntitiesIds = [];\n\n public outerLinks: any;\n\n public outerLinksTitle: string;\n\n public outerLinksDescription: string;\n\n public homeAutocompleteQuery: string;\n\n private destroyed$: Subject<void> = new Subject();\n\n public homeAutocompleteIsLoading = false;\n\n public resultsListIsLoading = false;\n\n /** Enabled from: arianna-config/features-enabled/carousel */\n public carouselEnabled = false;\n\n // ===== BUBBLE CHART =====\n public bubblesEnabled = false; // true if this Arianna Web project has the bubble chart module\n\n public selectedBubbles: any[] = []; // array of IDs\n\n // store last bubble response to refresh the graph with the same data\n public lastBubbleResponse: any;\n\n // store the first array of bubbles, to find them in case of no results.\n public firstBubbleResponse: any;\n // ========================\n\n onInit({\n communication, mainState, configuration, tippy,\n }) {\n this.communication = communication;\n this.configuration = configuration;\n // this.facetData = [];\n this.mainState = mainState;\n this.tippy = tippy;\n this.resultsLimit = this.configuration.get(this.configId)['results-limit'];\n this.bubblesEnabled = this.configuration.get('features-enabled')?.bubblechart;\n this.carouselEnabled = this.configuration.get('features-enabled')?.carousel;\n if (this.carouselEnabled) {\n this.loadCarousel();\n }\n this.one('aw-hero').update(this.configuration.get(this.configId)['top-hero']);\n this.one('aw-home-hero-patrimonio').update(this.configuration.get(this.configId)['bottom-hero']);\n // update streams\n this.mainState.updateCustom('currentNav', 'home');\n this.setHeadTitle();\n // listen autocomplete changes\n this._listenAutoCompleteChanges();\n this.outerLinks = this.configuration.get(this.configId)['outer-links'].test;\n this.outerLinksTitle = this.configuration.get(this.configId)['outer-links'].title;\n this.outerLinksDescription = this.configuration.get(this.configId)['outer-links'].description;\n this.one('aw-bubble-chart').updateOptions({\n selectable: true,\n config: this.configuration,\n limit: this.configuration.get('bubble-chart').bubbleLimit,\n });\n this.one('aw-chart-tippy').updateOptions({\n basePath: this.configuration.get('paths').entitaBasePath,\n selectable: true,\n });\n }\n\n onDestroy() {\n this.destroyed$.next();\n }\n\n public makeRequest$(query, params) {\n // make request from EH\n return this.communication.request$(query, {\n onError: (error) => console.error(error),\n params,\n });\n }\n\n public updateComponent = (id, data, options?) => {\n // update components from EH\n if (options) {\n this.one(id).updateOptions(options);\n }\n this.one(id).update(data);\n };\n\n initialFilterRequest() {\n return this.communication.request$('globalFilter', {\n onError: (error) => console.error(error),\n params: {\n entitiesListSize: this.configuration.get('bubble-chart').bubbleLimit,\n },\n });\n }\n\n parseInitialRequest(response) {\n this.firstBubbleResponse = response.entitiesData;\n const facetData = [];\n response.typeOfEntityData.forEach((toe) => {\n const TOEconfigData = this.configuration.get('config-keys')[toe.type];\n facetData.push({\n ...toe,\n enabled: true,\n locked: false,\n ...TOEconfigData,\n });\n });\n this.one('aw-home-facets-wrapper').updateOptions({\n pageConfig: this.configuration.get(this.configId),\n paths: this.configuration.get('paths')\n });\n this.one('aw-home-facets-wrapper').update(facetData);\n }\n\n renderPreviewsFromApolloQuery(response: any) {\n if (!response || !response.itemsPagination) {\n return;\n }\n let numOfItems = response.itemsPagination.totalCount;\n if (numOfItems > 0) {\n let numOfThousand = 0;\n while (numOfItems > 999) {\n numOfItems -= 1000;\n numOfThousand += 1;\n }\n let numOfItemsTmpStr = `${numOfItems}`;\n if (numOfItems < 10) numOfItemsTmpStr = `00${numOfItems}`;\n else if (numOfItems < 100) numOfItemsTmpStr = `0${numOfItems}`;\n if (numOfThousand > 0) this.numOfItemsStr = `${numOfThousand}.${numOfItemsTmpStr}`;\n else this.numOfItemsStr = `${numOfItems}`;\n } else {\n this.numOfItemsStr = '0';\n }\n this.one('aw-linked-objects').updateOptions({\n context: 'home',\n config: this.configuration,\n });\n this.one('aw-linked-objects').update(response.itemsPagination);\n\n // scroll control\n setTimeout(() => {\n this._scrollBackgroundControl();\n });\n }\n\n public updateTags(onlyBubbles?: boolean) {\n if (!onlyBubbles) {\n this.renderItemTags();\n }\n }\n\n handleFacetSearchChange(change) {\n const payload: string = change.inputPayload;\n const { value } = change;\n // store the entered text in facetInputs\n this.facetInputs[payload] = value;\n }\n\n renderItemTags() {\n /*\n Try to build an item tag for each selected query looking at the data from the\n first response. If the needed bubble data cannot be found, ask the backend\n for that bubble's data.\n */\n const queryList = []; // list of pending queries\n const tagsData = []; // list of tags data built from query\n this.selectedBubbles.forEach((b) => { // try to get the data of each selected bubble\n const theBubble = this.firstBubbleResponse.find((el) => el.entity.id === b);\n if (theBubble) { // if a bubble was found\n const bubbleConfig = this.configuration.get('config-keys')[theBubble.entity.typeOfEntity];\n tagsData.push({\n label: theBubble.entity.label,\n icon: 'n7-icon-close',\n payload: b,\n classes: `tag-${bubbleConfig['class-name']}`,\n });\n } else { // if the bubble was not found, make a query\n const params = { entityId: b, entitiesListSize: 1 };\n queryList.push(this.makeRequest$('getMissingBubble', params));\n }\n });\n if (queryList.length > 0) { // if there are pending bubble queries\n forkJoin(queryList).subscribe((forkres) => {\n forkres.forEach((r: any) => {\n const bubbleConfig = this.configuration.get('config-keys')[r.typeOfEntity];\n tagsData.push({\n label: r.label,\n icon: 'n7-icon-close',\n payload: r.id,\n classes: `tag-${bubbleConfig['class-name']}`,\n });\n });\n this.one('aw-home-item-tags-wrapper').update(tagsData);\n });\n } else {\n this.one('aw-home-item-tags-wrapper').update(tagsData);\n }\n }\n\n /**\n * Loads data for the carousel component\n */\n loadCarousel() {\n const baseUrls = this.configuration.get('baseUrls') || {};\n const baseUrl = baseUrls.portaleMatriceServer || null;\n this.communication.request$('getSlider', baseUrl ? {\n params: { baseUrl }\n } : {}).subscribe({\n next: (res) => {\n if (res) {\n this.one('aw-carousel').update(res);\n }\n },\n error: (err) => {\n console.error(err);\n this.carouselEnabled = false;\n },\n });\n }\n\n onHeroChange(value) {\n if (value) {\n const escapedValue = helpers.escapeQuotes(value);\n this.autocompleteChanged$.next(escapedValue);\n this.homeAutocompleteIsLoading = true;\n this.homeAutocompleteQuery = escapedValue;\n if (!this.autocompletePopoverOpen) {\n this._toggleAutocompletePopover();\n }\n } else if (this.autocompletePopoverOpen) {\n this._toggleAutocompletePopover();\n }\n }\n\n private _scrollBackgroundControl() {\n const node = document.getElementById('bubble-results-list');\n if (!node) return;\n const source$ = fromEvent(node, 'scroll');\n\n // height control\n setTimeout(() => {\n this._setHasScrollBackground(node);\n }, 500);\n\n // scroll listen\n source$.pipe(\n debounceTime(50),\n ).subscribe(({ target }: { target: any }) => {\n this._setHasScrollBackground(target);\n });\n }\n\n private _setHasScrollBackground(target) {\n this.hasScrollBackground = target ? (\n target.scrollHeight > (target.scrollTop + target.clientHeight)\n ) : false;\n }\n\n private _listenAutoCompleteChanges() {\n this.one('aw-home-autocomplete').updateOptions({\n keys: this.configuration.get('config-keys'),\n config: this.configuration,\n labels: this.configuration.get('labels'),\n paths: this.configuration.get('paths'),\n });\n this.autocompleteChanged$.pipe(\n debounceTime(500),\n takeUntil(this.destroyed$),\n ).subscribe((value) => {\n this.communication.request$('autoComplete', {\n onError: (error) => console.error(error),\n params: {\n input: value,\n itemsPagination: { offset: 0, limit: this.configuration.get(this.configId)['results-limit'] },\n },\n }).subscribe((response) => {\n this.homeAutocompleteIsLoading = false;\n this.one('aw-home-autocomplete').update({\n response,\n query: value,\n });\n });\n });\n }\n\n private _toggleAutocompletePopover() {\n if (!this.autocompletePopover) {\n const template = document.getElementById('aw-home-advanced-autocomplete-popover');\n template.style.display = 'block';\n const [popOver] = this.tippy('.aw-home__top-hero .n7-hero__input', {\n content: template,\n trigger: 'manual',\n interactive: true,\n arrow: false,\n flip: false,\n appendTo: 'parent',\n theme: 'light-border',\n placement: 'bottom-start',\n maxWidth: '100%',\n onHidden: () => { this.autocompletePopoverOpen = false; },\n });\n this.autocompletePopover = popOver;\n }\n if (this.autocompletePopoverOpen) {\n this.autocompletePopover.hide();\n } else {\n this.autocompletePopover.show();\n }\n this.autocompletePopoverOpen = !this.autocompletePopoverOpen;\n }\n\n private setHeadTitle() {\n this.mainState.update('headTitle', getHeadTitle({\n name: this.configuration.get('customer'),\n pageName: this.configuration.get(this.configId)?.pageName,\n pageDefault: 'Homepage',\n }));\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject, forkJoin } from 'rxjs';\nimport { helpers } from '@net7/boilerplate-common';\n\nexport class AwHomeLayoutEH extends EventHandler {\n private destroyed$: Subject<void> = new Subject();\n\n private configuration: any;\n\n private route: any;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-home-layout.init':\n this.dataSource.onInit(payload);\n this.loadFilters();\n this.configuration = payload.configuration;\n // scroll top\n window.scrollTo(0, 0);\n break;\n case 'aw-home-layout.outerlinkclick':\n this.emitGlobal('navigate', {\n handler: 'router',\n path: payload,\n });\n break;\n case 'aw-home-layout.destroy':\n this.dataSource.onDestroy();\n break;\n case 'aw-home-layout.bubbleresultsviewallclick': {\n const entityLinks = this.dataSource.selectedBubbles.join(',');\n const basePath = this.configuration.get('paths').searchBasePath;\n this.emitGlobal('navigate', {\n handler: 'router',\n path: [basePath],\n queryParams: { 'entity-links': entityLinks },\n });\n }\n break;\n case 'aw-home-layout.clearselection':\n this.emitOuter('clearselection');\n break;\n default:\n console.warn('(home) unhandled inner event of type: ', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-bubble-chart.d3end': // bounce the event, from bubble-chart to chart-tippy\n this.emitOuter('d3end', payload);\n break;\n case 'aw-chart-tippy.select':\n this.emitOuter('select', payload);\n break;\n case 'aw-hero.enter': {\n const query = helpers.escapeQuotes(payload.value);\n this.emitGlobal('navigate', {\n handler: 'router',\n path: [this.configuration.get('paths').searchBasePath],\n queryParams: {\n query,\n // Cerca in tutti i campi delle schede\n 'query-all': (this.configuration.defaults['home-layout']['top-hero'].searchAllField) ? 1 : 0,\n },\n });\n } break;\n case 'aw-hero.change':\n this.dataSource.autocompleteValue = payload.value;\n this.dataSource.onHeroChange(payload.value);\n break;\n case 'aw-home-facets-wrapper.click':\n this.emitOuter('togglefilter', payload);\n break;\n case 'aw-home-facets-wrapper.change':\n if (\n !payload.value\n || (typeof payload.value === 'string' && payload.value.trim().length === 0)\n ) {\n this.emitOuter('facetswrapperclose', { facetId: payload });\n } else if (payload.value) {\n this.emitOuter('facetswrapperrequest', { facetId: payload });\n // clear autocomplete results\n this.dataSource.updateComponent(\n 'aw-autocomplete-wrapper',\n { key: payload.value, response: null },\n );\n const params = {\n input: payload.value,\n typeOfEntity: payload.inputPayload.replace(/-search/g, '').replace(/-/g, ' '),\n itemsPagination: {\n offset: 0, limit: this.configuration.get('home-layout')['results-limit'],\n },\n };\n this.dataSource.makeRequest$('autoComplete', params).subscribe((response) => {\n if (response.results.length < 1) {\n const fallback = {\n totalcount: 0,\n results: [\n {\n entity: {\n id: 'fallback',\n label: // use fallback string from configuration\n this.configuration.get('home-layout')['autocomplete-fallback']\n ? this.configuration.get('home-layout')['autocomplete-fallback']\n : 'Nessun risultato trovato',\n },\n },\n ],\n };\n // this.emitOuter('facetswrapperresponse', { facetId: payload, response: fallback })\n this.dataSource.updateComponent(\n 'aw-autocomplete-wrapper',\n { key: payload.value, response: fallback },\n { config: this.configuration },\n );\n } else {\n // this.emitOuter('facetswrapperresponse', { facetId: payload, response })\n this.dataSource.updateComponent(\n 'aw-autocomplete-wrapper', // ID\n { key: payload.value, response }, // DATA\n { config: this.configuration }, // OPTIONS\n );\n }\n });\n }\n break;\n case 'aw-home-item-tags-wrapper.click':\n this.emitOuter('tagclick', payload);\n break;\n case 'aw-linked-objects.datarequest': {\n const { currentPage } = payload;\n const params = {\n selectedEntitiesIds: this.dataSource.selectedBubbles,\n itemsPagination: {\n offset: currentPage * this.dataSource.resultsLimit,\n limit: this.dataSource.resultsLimit,\n },\n };\n this.dataSource.makeRequest$('globalFilter', params).subscribe((res) => {\n if (res) {\n this.emitOuter('dataresponse', { res });\n } else {\n console.warn('Unable to fetch additional data.');\n }\n });\n } break;\n case 'aw-autocomplete-wrapper.clickresult':\n this.handleSimpleAutocompleteClick(payload);\n break;\n case 'aw-home-autocomplete.click': {\n const { source, type: payloadType } = payload;\n let basePath;\n if (source === 'item') {\n if (payloadType === 'oggetto-culturale') {\n basePath = this.configuration.get('paths').schedaBasePath;\n } else {\n basePath = this.configuration.get('paths').entitaBasePath;\n }\n this.emitGlobal('navigate', {\n handler: 'router',\n path: [basePath, payload.id, helpers.slugify(payload.title)],\n });\n } else if (source === 'showMore') {\n const query = this.dataSource.homeAutocompleteQuery;\n basePath = this.configuration.get('paths').searchBasePath;\n this.emitGlobal('navigate', {\n handler: 'router',\n path: [basePath],\n queryParams: { query },\n });\n } else if (source === 'extendsearch') { // click on <Cerca in tutti i campi> (call to action)\n this.emitGlobal('navigate', {\n handler: 'router',\n path: [this.configuration.get('paths').searchBasePath],\n queryParams: {\n query: this.dataSource.autocompleteValue,\n 'query-all': 1,\n },\n });\n }\n } break;\n case 'aw-bubble-chart.selection':\n this.handleChartSelection(payload);\n break;\n case 'aw-bubble-chart.lockfilter':\n this.emitOuter('lockfilter', payload); // let aw-home-facets-wrapper handle this event\n break;\n default:\n // console.warn('(home) unhandled outer event of type', type)\n break;\n }\n });\n }\n\n private loadFilters() {\n this.dataSource.initialFilterRequest().subscribe((response) => {\n // console.log('(home) Apollo responded with:', response)\n if (!response) { return; }\n this.dataSource.parseInitialRequest(response);\n if (this.dataSource.bubblesEnabled) {\n this.emitOuter('filterbubbleresponse', response.entitiesData);\n }\n });\n }\n\n public handleSimpleAutocompleteClick = (payload) => {\n this.emitOuter('facetclick', payload);\n };\n\n public outerLinkClick(type, payload) {\n window.open(payload, '_blank');\n }\n\n public handleChartSelection = (payload) => {\n const selectedEntitiesIds = payload;\n this.dataSource.selectedBubbles = payload;\n this.dataSource.resultsListIsLoading = true;\n this.dataSource.makeRequest$('globalFilter', {\n selectedEntitiesIds,\n entitiesListSize: this.configuration.get('bubble-chart').bubbleLimit,\n }).subscribe((res) => {\n this.dataSource.resultsListIsLoading = false;\n if (res && res.entitiesData.length > 0) {\n // if some linked objects exist for the selected entities:\n this.dataSource.lastBubbleResponse = res.entitiesData;\n this.emitOuter('filterbubbleresponse', res.entitiesData);\n this.dataSource.renderPreviewsFromApolloQuery(res);\n this.dataSource.renderItemTags();\n } else {\n // if the backend returns an empty list of results:\n const queryList = [];\n this.dataSource.selectedBubbles.forEach((b) => {\n const params = { entityId: b, entitiesListSize: 1 };\n queryList.push( // make a query for each selected bubble\n this.dataSource.makeRequest$('getMissingBubble', params),\n );\n });\n // await for every missing bubble and build a custom response\n forkJoin(queryList).subscribe((forkres) => {\n const customBubbles = [];\n forkres.forEach((r) => { customBubbles.push({ count: 0, entity: r }); });\n this.emitOuter('filterbubbleresponse', customBubbles);\n this.dataSource.renderPreviewsFromApolloQuery(res);\n this.dataSource.renderItemTags();\n });\n }\n });\n };\n}\n","import { AwHomeLayoutDS } from './home-layout.ds';\nimport { AwHomeLayoutEH } from './home-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const AwHomeLayoutConfig = {\n layoutId: 'aw-home-layout',\n widgets: [{\n id: 'aw-carousel',\n }, {\n id: 'aw-hero',\n }, {\n id: 'aw-home-hero-patrimonio',\n }, {\n id: 'aw-bubble-chart',\n }, {\n id: 'aw-home-facets-wrapper',\n }, {\n id: 'aw-home-item-tags-wrapper',\n }, {\n id: 'aw-home-autocomplete',\n }, {\n id: 'aw-linked-objects',\n }, {\n id: 'aw-autocomplete-wrapper',\n }, {\n id: 'aw-chart-tippy',\n }],\n layoutDS: AwHomeLayoutDS,\n layoutEH: AwHomeLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","//---------------------------\n// BubbleChartWrapper.ts\n//---------------------------\n\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'aw-bubble-chart-wrapper',\n templateUrl: './bubble-chart-wrapper.html',\n})\nexport class BubbleChartWrapperComponent {\n @Input() emit: any;\n\n @Input() container: string;\n\n @Input() buttons: any;\n\n onClick(type, payload) {\n this.emit(type, payload);\n }\n}\n","<div class=\"aw-bubble-chart-wrapper\">\n <ng-content></ng-content>\n</div>","//---------------------------\n// ChartTippy.ts\n//---------------------------\n\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'aw-chart-tippy',\n templateUrl: './chart-tippy.html',\n})\nexport class ChartTippyComponent {\n @Input() data: any;\n\n @Input() emit: any;\n\n @Input() anchorData: any;\n\n onClick(type, payload) {\n this.emit(type, payload);\n }\n}\n","<div *ngIf=\"data\" style=\"display: none;\">\n <div *ngFor=\"let d of data\" id=\"template__{{d.id}}\" class=\"bubble-chart__tippy-template\">\n <div id=\"bubble-popup-menu\" class=\"aw-bubble-popup-menu\">\n <h2 class=\"aw-bubble-popup-menu__title\">{{ d.title }}</h2>\n <p class=\"aw-bubble-popup-menu__text\">\n {{ d.text }}\n </p>\n\n <div *ngIf=\"d.relation.value\" class=\"aw-item-preview-relation\">\n <p class=\"aw-item-preview-relation__description\">Tipo di relazione \n <!-- <span class=\"aw-item-preview-relation__key\">{{d.relation.key}}</span>: -->\n <span class=\"aw-item-preview-relation__label\">{{d.relation.value}}</span>\n </p>\n </div>\n\n <div class=\"aw-bubble-popup-menu__actions\">\n <n7-anchor-wrapper [classes]=\"'aw-bubble-popup-menu__link'\" [data]=\"d.anchorData\">\n Vai alla scheda\n </n7-anchor-wrapper>\n <span *ngIf=\"d.selectable\" class=\"aw-bubble-popup-menu__link\" (click)=\"onClick('select', {id: d.id})\">\n {{ d.isSelected ? 'Deseleziona' : 'Seleziona'}}\n </span>\n </div>\n </div>\n </div>\n</div>","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Router } from '@angular/router';\nimport tippy from 'tippy.js';\nimport {\n AbstractLayout,\n ConfigurationService,\n LayoutsConfigurationService,\n MainStateService,\n CommunicationService\n} from '@net7/boilerplate-common';\nimport { AwHomeLayoutConfig as config } from './home-layout.config';\n\n@Component({\n selector: 'aw-home-layout',\n templateUrl: './home-layout.html',\n})\nexport class AwHomeLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n constructor(\n layoutsConfiguration: LayoutsConfigurationService,\n private router: Router,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n ) {\n super(layoutsConfiguration.get('AwHomeLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n configuration: this.configuration,\n mainState: this.mainState,\n router: this.router,\n communication: this.communication,\n options: this.config.options || {},\n tippy,\n };\n }\n\n ngOnInit() {\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"aw-home\" *ngIf=\"lb.dataSource\">\n <!-- Carousel -->\n <div class=\"aw-home__carousel\" *ngIf=\"lb.dataSource.carouselEnabled\">\n <n7-carousel [data]=\"lb.widgets['aw-carousel'].ds.out$ | async\">\n </n7-carousel>\n </div>\n\n <!-- Hero section at the top of the page -->\n <div class=\"aw-home__top-hero\">\n <n7-hero [data]=\"lb.widgets['aw-hero'].ds.out$ | async\" [emit]=\"lb.widgets['aw-hero'].emit\">\n </n7-hero>\n </div>\n\n <!-- Bubble chart -->\n <div class=\"aw-home__bubble-wrapper n7-side-auto-padding\"\n [ngClass]=\"{ 'has-results' : lb.dataSource.selectedBubbles.length > 0 }\" *ngIf=\"lb.dataSource.bubblesEnabled\">\n <div class=\"aw-home__facets-wrapper-loading\" *ngIf=\"!(lb.widgets['aw-home-facets-wrapper'].ds.out$ | async)\">\n <n7-content-placeholder *ngFor=\"let i of [0,1,2,3]\" [data]=\"{\n blocks: [{\n classes: 'facet-placeholder-header'\n }, {\n classes: 'facet-placeholder-input'\n }] \n }\"></n7-content-placeholder>\n </div>\n <div class=\"aw-home__facets-wrapper\" *ngIf=\"!!(lb.widgets['aw-home-facets-wrapper'].ds.out$ | async)\">\n <span class=\"aw-home__facet\"\n *ngFor=\"let widgetData of lb.widgets['aw-home-facets-wrapper'].ds.out$ | async;\">\n <n7-facet-header [data]=\"widgetData.header\" [emit]=\"lb.widgets['aw-home-facets-wrapper'].emit\">\n </n7-facet-header>\n <a *ngIf=\"widgetData.link as link\" class=\"aw-home__facet-link n7-btn\"\n [routerLink]=\"[link.path]\" [queryParams]=\"link.queryParams\">\n <span class=\"n7-icon n7-icon-list\"></span>\n <span class=\"aw-home__facet-link-label\">{{ link.label }}</span>\n </a>\n <n7-facet [data]=\"widgetData.input\" [emit]=\"lb.widgets['aw-home-facets-wrapper'].emit\">\n </n7-facet>\n </span>\n </div>\n\n <div class=\"aw-home__bubble-chart-wrapper-loading\" *ngIf=\"!(lb.widgets['aw-bubble-chart'].ds.out$ | async)\">\n <n7-content-placeholder [data]=\"{\n blocks: [\n {\n classes: 'facet-placeholder-item-1'\n }\n ]\n }\"></n7-content-placeholder>\n </div>\n <div class=\"aw-home__bubble-chart-wrapper\" *ngIf=\"!!(lb.widgets['aw-bubble-chart'].ds.out$ | async)\"\n [style.overflow]=\"lb.dataSource.loadingBubbles ? 'visible' : 'hidden'\">\n <aw-bubble-chart-wrapper>\n <aw-chart-tippy \n [data]=\"lb.widgets['aw-chart-tippy'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-chart-tippy'].emit\">\n </aw-chart-tippy>\n <n7-bubble-chart [data]=\"lb.widgets['aw-bubble-chart'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-bubble-chart'].emit\">\n </n7-bubble-chart>\n </aw-bubble-chart-wrapper>\n </div>\n\n <!-- Linked objects -->\n <ng-container *ngIf=\"(lb.widgets['aw-bubble-chart'].ds.out$ | async)?.selected.length > 0;\">\n <div class=\"aw-home__bubble-results\" id=\"home-bubble-results\">\n <div *ngIf=\"lb.dataSource.numOfItemsStr\" class=\"aw-home__bubble-results-title-wrapper\">\n <h1 class=\"aw-home__bubble-results-title\"><strong class=\"aw-home__bubble-results-title-counter\">\n {{ lb.dataSource.numOfItemsStr }}</strong> <span> Risultati</span>\n </h1>\n </div>\n <div class=\"aw-home__bubble-tags-wrapper\">\n <h3 class=\"aw-home__bubble-tags-title\">Collegati a </h3>\n <ng-container *ngFor=\"let widgetData of lb.widgets['aw-home-item-tags-wrapper'].ds.out$ | async;\">\n <n7-tag [data]=\"widgetData\" [emit]=\"lb.widgets['aw-home-item-tags-wrapper'].emit\">\n </n7-tag>\n <br>\n </ng-container>\n </div>\n <div class=\"aw-home__bubble-results-list-wrapper\">\n <div class=\"aw-home__bubble-results-list-loading\" *ngIf=\"lb.dataSource.resultsListIsLoading\">\n <n7-content-placeholder \n *ngFor=\"let i of [1, 2, 3, 4, 5]\"\n [data]=\"{\n blocks: [{\n classes: 'search-result-placeholder-title'\n }, {\n classes: 'search-result-placeholder-metadata'\n }]\n }\"></n7-content-placeholder>\n </div>\n <div *ngIf=\"!lb.dataSource.resultsListIsLoading\" class=\"aw-home__bubble-results-list\"\n [attr.id]=\"'bubble-results-list'\" (scroll)=\"lb.eventHandler.emitOuter('scroll', $event.target)\">\n\n <div class=\"aw-home__bubble-results-fallback\"\n *ngIf=\"(lb.widgets['aw-linked-objects'].ds.out$ | async)?.result.length < 1;\">\n <p class=\"aw-home__bubble-results-fallback-text\">\n {{ (lb.widgets['aw-linked-objects'].ds.out$ | async)?.fallback }}\n </p>\n <button class=\"n7-btn aw-home__bubble-results-reset\"\n (click)=\"lb.eventHandler.emitInner('clearselection')\">\n Resetta la ricerca\n </button>\n </div>\n\n <div class=\"aw-item-preview-list\">\n <ng-container *ngFor=\"let preview of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.result\">\n <div class=\"aw-item-preview-wrapper\">\n <n7-smart-breadcrumbs [data]=\"preview.breadcrumbs\">\n </n7-smart-breadcrumbs>\n <n7-item-preview [data]=\"preview\"\n [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n </div>\n </ng-container>\n </div>\n \n <!-- <ng-container\n *ngFor=\"let widgetData of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.result;\">\n <n7-item-preview [data]=\"widgetData\" [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n </ng-container> -->\n\n <ng-container *ngIf=\"(lb.widgets['aw-linked-objects'].ds.out$ | async)?.isLoading\">\n <div class=\"aw-home__bubble-results-list-loader\">\n <n7-loader [data]=\"(lb.widgets['aw-linked-objects'].ds.out$ | async)?.loaderData\">\n </n7-loader>\n </div>\n </ng-container>\n </div>\n <div [ngClass]=\"{ 'is-visible' : lb.dataSource.hasScrollBackground }\"\n class=\"aw-home__bubble-results-list-wrapper-with-scroll\"></div>\n </div>\n <!-- aw-linked-objects__actions -->\n <ng-container\n *ngIf=\"(lb.widgets['aw-linked-objects'].ds.out$ | async)?.result.length > 0 && !lb.dataSource.resultsListIsLoading\">\n <div *ngIf=\"(lb.widgets['aw-linked-objects'].ds.out$ | async)?.actions as action\"\n class=\"aw-home__bubble-results-list-actions\">\n <button (click)=\"lb.eventHandler.emitInner('bubbleresultsviewallclick')\"\n class=\"n7-btn n7-btn-light n7-btn-l aw-home__bubble-results-list-view-all\">\n {{action[0].label}}\n </button>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n\n <!-- Outer links -->\n <div *ngIf=\"lb.dataSource.outerLinks && lb.dataSource.outerLinks.length > 0\" class=\"aw-home__outer-links\">\n <section class=\"aw-home__outer-links-wrapper n7-side-auto-padding\">\n <h2 class=\"aw-home__outer-links-title\" *ngIf=\"lb.dataSource.outerLinksTitle\">\n {{ lb.dataSource.outerLinksTitle }}\n </h2>\n <p class=\"aw-home__outer-links-description\" *ngIf=\"lb.dataSource.outerLinksDescription\">\n {{ lb.dataSource.outerLinksDescription }}\n </p>\n <div class=\"aw-home__outer-links-items\">\n <!-- Item preview -->\n <n7-item-preview *ngFor=\"let outerLink of lb.dataSource.outerLinks\" [data]=\"outerLink\"\n [emit]=\"lb.eventHandler.outerLinkClick.bind(lb.eventHandler)\">\n </n7-item-preview>\n <!-- END // Item preview -->\n </div>\n </section>\n </div>\n <!-- END // Outer links -->\n\n <!-- Hero section at the bottom of the page -->\n <div class=\"aw-home__bottom-hero\">\n <n7-hero [data]=\"lb.widgets['aw-home-hero-patrimonio'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-home-hero-patrimonio'].emit\">\n </n7-hero>\n </div>\n\n <!-- Adavanced autocomplete popover -->\n <div class=\"aw-home__advanced-autocomplete\" id=\"aw-home-advanced-autocomplete-popover\" style=\"display: none;\">\n <div class=\"aw-home__advanced-autocomplete-loader\" *ngIf=\"lb.dataSource.homeAutocompleteIsLoading\">\n <n7-loader [data]=\"{}\"></n7-loader>\n </div>\n <n7-advanced-autocomplete *ngIf=\"!lb.dataSource.homeAutocompleteIsLoading\"\n [data]=\"lb.widgets['aw-home-autocomplete'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-home-autocomplete'].emit\">\n </n7-advanced-autocomplete>\n </div>\n\n <!-- Simple autocomplete popover. DO NOT CHANGE parent div class! -->\n <!-- Creating one template for each facet -->\n <div *ngFor=\"let widgetData of lb.widgets['aw-home-facets-wrapper'].ds.out$ | async;\"\n class=\"aw-home__simple-autocomplete aw-simple-autocomplete__template\" style=\"display: none;\">\n <div class=\"aw-home__simple-autocomplete-content aw-simple-autocomplete__tippy-wrapper\">\n <div class=\"aw-home__simple-autocomplete-loader aw-simple-autocomplete__tippy-wrapper-loader\"\n *ngIf=\"(lb.widgets['aw-autocomplete-wrapper'].ds.out$ | async)?.loading\">\n <n7-loader [data]=\"{}\"></n7-loader>\n </div>\n <n7-simple-autocomplete *ngIf=\"!(lb.widgets['aw-autocomplete-wrapper'].ds.out$ | async)?.loading\"\n [data]=\"lb.widgets['aw-autocomplete-wrapper'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-autocomplete-wrapper'].emit\">\n </n7-simple-autocomplete>\n </div>\n </div>\n</div>\n","import { InnerTitleData } from '@net7/components';\nimport { LayoutDataSource } from '@net7/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { helpers } from '@net7/boilerplate-common';\nimport { getHeadTitle } from '../../helpers/title.helper';\n\ntype LayoutState = 'LOADING' | 'EMPTY' | 'SUCCESS';\n\nexport class AwMapLayoutDS extends LayoutDataSource {\n protected configuration: any;\n\n protected mainState: any;\n\n protected titleService: any;\n\n public configId = 'map-layout';\n\n public options: any;\n\n public pageTitle: string;\n\n private communication: any;\n\n private pageSize = 10;\n\n public state$: BehaviorSubject<LayoutState> = new BehaviorSubject('EMPTY');\n\n private currentPage = 1;\n\n private relatedItems: any[];\n\n public total: number;\n\n onInit({\n configuration, mainState, options, titleService, communication,\n }) {\n this.communication = communication;\n this.configuration = configuration;\n this.mainState = mainState;\n this.options = options;\n this.titleService = titleService;\n\n // head title\n this.setHeadTitle();\n this.setPageTitle();\n\n // navigation update\n this.mainState.updateCustom('currentNav', 'mappa');\n\n this.communication.request$('getMapObjects').subscribe((response) => {\n this.one('aw-map').update(response);\n });\n }\n\n onMarkerOpen({ id, label }) {\n // loading results\n this.state$.next('LOADING');\n this.communication.request$('getEntityRelatedItems', {\n params: {\n selectedEntitiesIds: [id]\n }\n }).subscribe(({ itemsPagination }) => {\n // clear loading\n this.state$.next('SUCCESS');\n\n this.relatedItems = itemsPagination.items;\n this.total = this.relatedItems.length;\n let text = `<strong>${this.total}</strong> Risultati collegati a<br><span class=\"aw-multimedia__results-title-big\">${label}</span>`;\n if (this.total === 1) {\n text = `<strong>${this.total}</strong> Risultato collegato a<br><span class=\"aw-multimedia__results-title-big\">${label}</span>`;\n }\n\n const titleData: InnerTitleData = {\n title: {\n main: { text },\n },\n actions: {\n buttons: [{\n anchor: {\n href: `${this.configuration.get('paths').entitaBasePath}/${id}/${helpers.slugify(label)}`,\n },\n text: 'Vedi Entità'\n }]\n }\n };\n this.one('aw-scheda-inner-title').update(titleData);\n\n // update items\n this.updateItems();\n\n // update pagination\n this.updatePagination();\n });\n }\n\n onMarkerClose() {\n // reset\n this.state$.next('EMPTY');\n this.pageSize = 10;\n this.currentPage = 1;\n this.relatedItems = [];\n this.total = 0;\n this.one('aw-scheda-inner-title').update({\n title: {\n main: { text: '' }\n }\n });\n this.one('aw-linked-objects').update({ items: [] });\n }\n\n onPaginationChange({ value }) {\n this.pageSize = +value;\n this.updateItems();\n this.updatePagination();\n }\n\n onPaginationClick({ page }) {\n if (typeof page === 'number' && page !== this.currentPage) {\n this.currentPage = page;\n this.updateItems();\n this.updatePagination();\n }\n }\n\n private updateItems() {\n this.one('aw-linked-objects').updateOptions({\n context: 'map',\n config: this.configuration,\n page: this.currentPage,\n pagination: true,\n size: this.pageSize,\n });\n this.one('aw-linked-objects').update({ items: this.relatedItems });\n }\n\n private updatePagination() {\n this.one('n7-smart-pagination').updateOptions({\n mode: 'payload'\n });\n this.one('n7-smart-pagination').update({\n totalPages: Math.ceil(this.total / this.pageSize),\n currentPage: this.currentPage,\n pageLimit: 5,\n sizes: {\n label: 'Numero di risultati',\n list: [10, 25, 50],\n active: this.pageSize,\n },\n });\n }\n\n private setHeadTitle() {\n this.mainState.update('headTitle', getHeadTitle({\n name: this.configuration.get('customer'),\n pageName: this.configuration.get(this.configId)?.pageName,\n pageDefault: 'Mappa',\n }));\n }\n\n private setPageTitle() {\n const title = this.configuration.get(this.configId)?.pageName;\n this.pageTitle = (title) || 'I luoghi dell\\'archivio';\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\n\nexport class AwMapLayoutEH extends EventHandler {\n private destroyed$: Subject<void> = new Subject();\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-map-layout.init':\n this.dataSource.onInit(payload);\n this.emitOuter('init', payload);\n // scroll top\n window.scrollTo(0, 0);\n break;\n\n case 'aw-map-layout.destroy':\n this.destroyed$.next();\n break;\n\n default:\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-map.markeropen':\n this.dataSource.onMarkerOpen(payload);\n break;\n case 'aw-map.markerclose':\n this.dataSource.onMarkerClose();\n break;\n case 'n7-smart-pagination.change':\n this.dataSource.onPaginationChange(payload);\n break;\n case 'n7-smart-pagination.click':\n this.dataSource.onPaginationClick(payload);\n break;\n default:\n break;\n }\n });\n }\n}\n","import { SmartPaginationDS, SmartPaginationEH } from '@net7/boilerplate-common';\nimport { AwMapLayoutDS } from './map-layout.ds';\nimport { AwMapLayoutEH } from './map-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const AwMapLayoutConfig = {\n layoutId: 'aw-map-layout',\n widgets: [ // array of components of this layout\n { id: 'aw-map' },\n { id: 'aw-scheda-inner-title' },\n { id: 'aw-linked-objects' },\n {\n id: 'n7-smart-pagination',\n dataSource: SmartPaginationDS,\n eventHandler: SmartPaginationEH,\n }\n ],\n layoutDS: AwMapLayoutDS,\n layoutEH: AwMapLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport {\n AbstractLayout,\n ConfigurationService,\n LayoutsConfigurationService,\n MainStateService,\n CommunicationService,\n} from '@net7/boilerplate-common';\nimport { AwMapLayoutConfig as config } from './map-layout.config';\n\n@Component({\n selector: 'aw-map-layout',\n templateUrl: './map-layout.html',\n})\nexport class AwMapLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n constructor(\n private configuration: ConfigurationService,\n private layoutsConfiguration: LayoutsConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n private titleService: Title,\n ) {\n super(layoutsConfiguration.get('AwMapLayoutConfig') || config);\n }\n\n /*\n Optional variables that can be accessed from the layout's logic.\n If removed, they must also be removed from the layout's DataSource file,\n and from this file imports.\n */\n protected initPayload() {\n return {\n configuration: this.configuration,\n mainState: this.mainState,\n titleService: this.titleService,\n communication: this.communication,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"aw-multimedia\" id=\"map-layout\" *ngIf=\"lb.dataSource\">\n <n7-inner-title [data]=\"{\n title: {\n main: {\n text: lb.dataSource.pageTitle\n }\n }\n }\">\n </n7-inner-title>\n\n <!-- Map -->\n <div class=\"aw-multimedia__map\">\n <n7-map [data]=\"lb.widgets['aw-map'].ds.out$ | async\"></n7-map>\n </div>\n <!-- END // Map -->\n\n <!-- RESULTS -->\n <div class=\"aw-multimedia__results\">\n <div class=\"aw-multimedia__loader\" *ngIf=\"(lb.dataSource.state$ | async) === 'LOADING'\">\n <ng-container>\n <n7-loader></n7-loader>\n </ng-container>\n </div>\n\n <div class=\"aw-multimedia__empty\" *ngIf=\"(lb.dataSource.state$ | async) === 'EMPTY'\">\n <ng-container>\n <p class=\"aw-multimedia__empty-text\">Clicca su un luogo della mappa per vedere tutti gli oggetti collegati.</p>\n </ng-container>\n </div>\n \n <ng-container *ngIf=\"(lb.dataSource.state$ | async) === 'SUCCESS'\">\n <div class=\"aw-multimedia__results-title\">\n <n7-inner-title \n [data]=\"lb.widgets['aw-scheda-inner-title'].ds.out$ | async\">\n </n7-inner-title>\n </div>\n <div class=\"aw-multimedia__results-wrapper\">\n <div>\n <div class=\"aw-item-preview-wrapper\" *ngFor=\"let preview of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews\">\n <n7-smart-breadcrumbs \n [data]=\"preview.breadcrumbs\">\n </n7-smart-breadcrumbs>\n <n7-item-preview \n [data]=\"preview\" \n [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n </div>\n </div>\n <n7-smart-pagination *ngIf=\"lb.dataSource.total > 0\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n </div>\n </ng-container>\n </div>\n</div>","import { LayoutDataSource } from '@net7/core';\nimport {\n fromEvent, Subject, of, merge, Observable\n} from 'rxjs';\nimport {\n delay, first, takeUntil\n} from 'rxjs/operators';\nimport { clone, get as _get } from 'lodash';\nimport { helpers } from '@net7/boilerplate-common';\nimport { Params } from '@angular/router';\nimport metadataHelper from '../../helpers/metadata.helper';\nimport nodeHelper from '../../helpers/node.helper';\nimport { getHeadTitle } from '../../helpers/title.helper';\n\nconst LOCAL_STORAGE_PREFIX = 'aw.scheda';\n\nexport class AwSchedaLayoutDS extends LayoutDataSource {\n static tree: any = null;\n\n private destroyed$: Subject<void> = new Subject();\n\n private stickyControlTrigger$: Subject<void> = new Subject();\n\n private communication: any;\n\n protected configuration: any;\n\n protected mainState: any;\n\n protected router: any;\n\n protected titleService: any;\n\n public configId = 'scheda-layout';\n\n public options: any;\n\n private layoutConfig;\n\n public pageTitle: string;\n\n public hasBreadcrumb: boolean;\n\n public contentParts: any = {};\n\n public tree: any;\n\n public sidebarCollapsed: boolean;\n\n public relatedEntitiesHeader: string;\n\n public similarItemsSectionTitle: string;\n\n public metadataSectionTitle: string;\n\n public treeOpenTitle: string;\n\n public treeCloseTitle: string;\n\n public showRelationType: boolean;\n\n public showRelationQualification: boolean;\n\n public hasMetadata: boolean;\n\n public hasRelatedEntities: boolean;\n\n public hasSimilarItems: boolean;\n\n public hasExtendedTree: boolean;\n\n public hasInternalSearch: boolean;\n\n public hasDigitalObjects: boolean;\n\n public digitalObjects: any;\n\n public currentDigitalObject: any;\n\n public currentDigitalObjectIndex: number;\n\n public imageViewerIstance: any;\n\n public sidebarIsSticky = false;\n\n public treeMaxHeight = '100%';\n\n public contentIsLoading = false;\n\n public currentId: string | null = null;\n\n public emptyLabel: string;\n\n /** Switch loaded-content and loaded-empty states */\n public hasContent = true;\n\n /** String to render in the loaded-empty state */\n public emptyStateString: string;\n\n public externalUrlText: string;\n\n public hasContextMenu: () => boolean;\n\n public extendedTreeParams: {\n [key: string]: string;\n } = {};\n\n public internalSearchParams: {\n [key: string]: string;\n } = {};\n\n public lastResponse;\n\n /** Name of query that should be used (chosen in config) */\n private getTreeQuery: 'getTree' | 'getTreeLite' = 'getTree';\n\n public titleNavigation: {\n prev: { href: string; label: string; };\n next: { href: string; label: string; };\n } = null;\n\n public sectionCollapseState = {\n metadata: false,\n 'extended-tree': false,\n 'similar-items': false,\n 'related-entities': false\n };\n\n public documentType: {\n icon: string;\n label: string;\n } = null;\n\n onInit({\n configuration, mainState, router, options, titleService, communication,\n }) {\n if (configuration) {\n this.configuration = configuration;\n this.layoutConfig = this.configuration.get(this.configId);\n }\n this.mainState = mainState;\n this.router = router;\n this.titleService = titleService;\n this.communication = communication;\n this.options = options;\n if (!this.sidebarCollapsed) {\n this.sidebarCollapsed = this.layoutConfig.tree.collapsedByDefault ?? false;\n }\n this.relatedEntitiesHeader = this.layoutConfig['related-entities'].title;\n this.showRelationType = this.layoutConfig['related-entities'].showRelationType;\n this.showRelationQualification = this.layoutConfig['related-entities'].showRelationQualification;\n this.similarItemsSectionTitle = this.layoutConfig['related-items'].title;\n this.externalUrlText = this.layoutConfig['external-url-text'];\n this.metadataSectionTitle = this.getMetadataSectionTitle();\n this.hasSimilarItems = false;\n this.one('aw-chart-tippy').updateOptions({\n basePath: this.configuration.get('paths').entitaBasePath,\n });\n this.emptyLabel = this.layoutConfig['empty-label'];\n this.emptyStateString = this.layoutConfig['empty-html'];\n this.one('aw-tree').updateOptions({ config: this.configuration.get('config-keys') });\n\n // switch the tree query to the slim version\n if (this.layoutConfig?.tree?.lite) {\n this.getTreeQuery = 'getTreeLite';\n }\n\n this.mainState.updateCustom('currentNav', 'patrimonio');\n\n // head title\n this.setHeadTitle();\n this.setTreeTitle();\n\n // image viewer context-menu check\n const imageViewerConfig = this.configuration.get(this.configId)['image-viewer'] || {};\n this.hasContextMenu = () => !!imageViewerConfig['context-menu'];\n\n // pdf viewer options\n this.one('aw-scheda-pdf').updateOptions(this.configuration.get(this.configId)['pdf-viewer'] || {});\n\n // iiif viewer options\n const imageViewerIiifConfig = this.configuration.get(this.configId)['iiif-viewer'] || {};\n this.hasContextMenu = () => !!imageViewerIiifConfig.libOptions['context-menu'];\n this.one('aw-scheda-image-iiif').updateOptions(imageViewerIiifConfig);\n\n // check section collapse state\n Object.keys(this.sectionCollapseState).forEach((key) => {\n const storageKey = `${LOCAL_STORAGE_PREFIX}.${key}`;\n const storageValue = localStorage.getItem(storageKey);\n this.sectionCollapseState[key] = storageValue ? JSON.parse(storageValue) : false;\n });\n\n // sidebar sticky control\n this._sidebarStickyControl();\n }\n\n onDestroy() {\n this.destroyed$.next();\n }\n\n getMetadataSectionTitle() {\n const layoutConfig = this.configuration.get(this.configId);\n const metadataConfig = layoutConfig.metadata || {};\n return metadataConfig.title || null;\n }\n\n getNavigation() {\n if (AwSchedaLayoutDS.tree) {\n return of(AwSchedaLayoutDS.tree);\n }\n return this.communication.request$(this.getTreeQuery, {\n onError: (error) => console.error(error),\n params: {\n onlyAl: !!this.layoutConfig['extended-tree']\n },\n });\n }\n\n setTree(tree) {\n AwSchedaLayoutDS.tree = tree;\n }\n\n getTree = () => AwSchedaLayoutDS.tree;\n\n updateNavigation(text) {\n this.one('aw-sidebar-header').update({ text, isExpanded: !this.sidebarCollapsed });\n }\n\n loadItem(id) {\n const maxSimilarItems = this.configuration.get(this.configId)['related-items']['max-related-items'];\n return this.communication.request$('getNode', {\n onError: (error) => console.error(error),\n params: { id, maxSimilarItems },\n });\n }\n\n /**\n * Loads the content of the selected tree item in the right portion of the view.\n * @param response http response for the tree item\n */\n loadContent(response) {\n this.lastResponse = response;\n if (response) {\n // reset\n this.currentDigitalObject = null;\n this.currentDigitalObjectIndex = null;\n\n const metadataFields = this.getFields(response);\n this.hasMetadata = !!(Array.isArray(metadataFields) && metadataFields.length);\n this.hasSimilarItems = (\n !this.layoutConfig['extended-tree']\n && Array.isArray(response.relatedItems)\n && response.relatedItems.length\n );\n this.hasBreadcrumb = Array.isArray(response.breadcrumbs) && response.breadcrumbs.length;\n this.hasDigitalObjects = (\n Array.isArray(response.digitalObjects)\n && response.digitalObjects.length\n );\n this.hasRelatedEntities = (\n Array.isArray(response.relatedEntities)\n && response.relatedEntities.length\n );\n this.hasContent = !!(\n this.hasMetadata\n || this.hasSimilarItems\n || this.hasRelatedEntities\n || this.hasDigitalObjects\n );\n\n this.contentParts = [];\n const content = { content: null };\n\n if (response.text) {\n content.content = response.text;\n }\n this.contentParts.push(content);\n\n // digital objects\n if (this.hasDigitalObjects) {\n response.digitalObjects = this.normalizeDigitalObjects(response.digitalObjects);\n // this.one('aw-scheda-digital-objects').update(response.digitalObjects);\n this.one('aw-scheda-dropdown').update(response);\n this.digitalObjects = response.digitalObjects;\n this.changeDigitalObject(0);\n }\n\n const titleObj = {\n icon: response.icon,\n title: {\n main: {\n text: response.title || response.label,\n classes: 'bold',\n },\n },\n tools: response.subTitle,\n actions: {},\n };\n\n this.one('aw-scheda-inner-title').update(titleObj);\n this.one('aw-scheda-metadata').update(metadataFields);\n\n // Breadcrumb section\n const breadcrumbs = {\n items: [],\n };\n\n if (response.breadcrumbs) {\n response.breadcrumbs.forEach((element) => {\n breadcrumbs.items.push({\n label: element.label,\n anchor: {\n href: [\n this.configuration.get('paths').schedaBasePath,\n `${element.link}/`,\n helpers.slugify(element.label),\n ].join(''),\n },\n });\n });\n this.one('aw-scheda-breadcrumbs').update(breadcrumbs);\n }\n\n // title prev / next navigation\n this.loadTitleNavigation();\n\n // document title type (icon, label)\n this.loadDocumentType();\n\n // update head title\n this.setHeadTitle(response.title || response.label);\n }\n\n if (response.relatedItems) {\n this.one('aw-linked-objects').updateOptions({ context: 'scheda', config: this.configuration });\n this.one('aw-linked-objects').update(response);\n }\n if (response.relatedEntities) {\n response.relatedEntities.forEach((el) => {\n const label = response.title || response.label;\n el.relationName = label.length > 30\n ? `${label.substr(0, 30)}... `\n : label;\n });\n this.one('aw-related-entities').updateOptions({\n context: 'scheda', config: this.configuration, list: 'relatedEntities', title: response.title\n });\n this.one('aw-related-entities').update(response.relatedEntities);\n }\n\n // control sticky\n setTimeout(() => {\n this.stickyControlTrigger$.next();\n });\n }\n\n loadExtendedTree() {\n const parentResponse = this.lastResponse;\n\n if (this.layoutConfig['extended-tree']) {\n const configKeys = this.configuration.get('config-keys');\n const widgetOptions = this.layoutConfig['extended-tree'];\n const params: any = {\n id: parentResponse.id,\n page: 1,\n limit: 10,\n query: null,\n ...this.extendedTreeParams,\n };\n const widgetParams = clone(params);\n\n // normalize params\n params.offset = (params.page - 1) * params.limit;\n delete params.page;\n\n const basePath = this.configuration.get('paths').schedaBasePath;\n const request$ = this.communication.request$('getNodeChildren', {\n params,\n onError: (error) => console.error(error),\n });\n request$.subscribe((nodesResponse) => {\n this.hasExtendedTree = (\n params.query\n || widgetParams.page > 1\n || !!nodesResponse?.items?.length\n );\n if (this.hasExtendedTree) {\n this.one('aw-extended-tree').updateOptions({\n basePath,\n configKeys,\n params: widgetParams,\n ...widgetOptions,\n });\n this.one('aw-extended-tree').update({\n parent: parentResponse,\n nodes: nodesResponse\n });\n\n // fix query input update\n setTimeout(() => {\n const queryInput: HTMLInputElement = document\n .querySelector('.aw-extended-tree__header .n7-inner-title__search-bar');\n if (queryInput) {\n queryInput.value = params.query || '';\n }\n });\n }\n });\n } else {\n this.hasExtendedTree = false;\n }\n }\n\n loadInternalSearch() {\n const parentResponse = this.lastResponse;\n\n if (this.layoutConfig['internal-search']) {\n this.hasInternalSearch = true;\n const configKeys = this.configuration.get('config-keys');\n const widgetOptions = this.layoutConfig['internal-search'];\n const rawParams: any = {\n id: parentResponse.id,\n 'search-page': 1,\n 'search-limit': 10,\n 'search-query': null,\n ancestor: true,\n ...this.internalSearchParams,\n };\n\n // set params object without \"search-\" prefix\n const params: Params = {};\n Object.keys(rawParams).forEach((paramKey) => {\n params[paramKey.replace('search-', '')] = rawParams[paramKey];\n });\n\n const widgetParams = clone(params);\n\n // normalize params\n params.offset = (params.page - 1) * params.limit;\n delete params.page;\n\n const basePath = this.configuration.get('paths').schedaBasePath;\n let request$: Observable<any> = of(null);\n if (params.query) {\n request$ = this.communication.request$('getNodeChildren', {\n params,\n onError: (error) => console.error(error),\n });\n }\n\n request$.subscribe((nodesResponse) => {\n this.one('aw-scheda-search').updateOptions({\n basePath,\n configKeys,\n params: widgetParams,\n ...widgetOptions,\n });\n this.one('aw-scheda-search').update(nodesResponse);\n\n // fix query input update\n setTimeout(() => {\n const queryInput: HTMLInputElement = document\n .querySelector('.aw-scheda-search__input input[type=\"text\"]');\n if (queryInput) {\n queryInput.value = params.query || '';\n }\n });\n });\n } else {\n this.hasInternalSearch = false;\n }\n }\n\n loadTitleNavigation() {\n // reset\n this.titleNavigation = null;\n\n const hasTitleNav = (\n !!this.layoutConfig['title-nav']?.enabled\n && this.lastResponse.document_type === 'oggetto-culturale'\n );\n if (!hasTitleNav) return;\n\n this.titleNavigation = { prev: null, next: null };\n const basePath = this.configuration.get('paths').schedaBasePath;\n ['prev', 'next'].forEach((key) => {\n const item = this.lastResponse[key];\n this.titleNavigation[key] = item\n ? {\n href: `${basePath}/${item.id}/${helpers.slugify(item.label)}`,\n label: item.label,\n } : null;\n });\n }\n\n loadDocumentType() {\n const configKeys = this.configuration.get('config-keys');\n const { document_type: type } = this.lastResponse;\n const icon = nodeHelper.getNodeIcon(configKeys, this.lastResponse);\n if (configKeys[type]) {\n this.documentType = {\n icon,\n label: configKeys[type]['singular-label']\n };\n } else {\n this.documentType = null;\n }\n }\n\n /**\n * Toggle between the tree's collapsed or expanded state.\n */\n collapseSidebar() {\n // overwrite the configuration to prevent unwanted changes to the tree state.\n this.layoutConfig.tree.collapsedByDefault = !this.layoutConfig.tree.collapsedByDefault;\n this.sidebarCollapsed = !this.sidebarCollapsed;\n this.getWidgetDataSource('aw-sidebar-header').toggleSidebar();\n }\n\n onSectionCollapse(id: string) {\n this.sectionCollapseState[id] = !this.sectionCollapseState[id];\n\n // update storage\n const storageKey = `${LOCAL_STORAGE_PREFIX}.${id}`;\n localStorage.setItem(storageKey, this.sectionCollapseState[id]);\n }\n\n private _sidebarStickyControl() {\n // no sticky for Internet Explorer\n if (helpers.browserIsIE()) {\n return;\n }\n const source$ = fromEvent(window, 'scroll');\n\n merge(source$, this.stickyControlTrigger$).pipe(\n takeUntil(this.destroyed$),\n ).subscribe(() => {\n const windowTop = window.pageYOffset;\n const windowBottom = window.scrollY + window.innerHeight;\n const wrapper = document.getElementsByClassName('sticky-parent')[0] as HTMLElement;\n const wrapperTop = wrapper.offsetTop;\n const wrapperBottom = wrapperTop + wrapper.clientHeight;\n\n this.sidebarIsSticky = wrapperTop <= windowTop;\n\n // tree height control\n if (this.sidebarIsSticky && windowBottom < wrapperBottom) {\n this.treeMaxHeight = `${windowBottom - windowTop - 50}px`;\n } else if (this.sidebarIsSticky && windowBottom >= wrapperBottom) {\n this.treeMaxHeight = `${wrapperBottom - windowTop - 50}px`;\n } else if (windowBottom < wrapperBottom) {\n this.treeMaxHeight = `${windowBottom - wrapperTop - 50}px`;\n } else {\n this.treeMaxHeight = `${wrapperBottom - wrapperTop - 50}px`;\n }\n });\n }\n\n public getFields(response) {\n const {\n fields,\n document_type: dt,\n document_classification: dc\n } = response;\n const paths = this.configuration.get('paths');\n const labels = this.configuration.get('labels');\n const dcSegments = typeof dc === 'string' ? dc.split('.') : [];\n const dcLastSegment = dcSegments[dcSegments.length - 1];\n let metadataToShow = _get(this.configuration.get(this.configId), 'metadata-to-show', {});\n metadataToShow = metadataToShow[dcLastSegment] || metadataToShow[dt] || [];\n\n return metadataHelper.normalize({\n fields,\n paths,\n labels,\n metadataToShow,\n type: dt\n });\n }\n\n public changeDigitalObject(payload) {\n if (this.currentDigitalObjectIndex !== payload) {\n // link check\n if (this.digitalObjects[payload].type === 'external' && this.currentDigitalObject) {\n window.open(this.digitalObjects[payload].url, '_blank');\n } else {\n // always reset image viewer\n const schedaImageDS = this.getWidgetDataSource('aw-scheda-image');\n schedaImageDS.reset();\n\n this.currentDigitalObjectIndex = payload;\n this.currentDigitalObject = this.digitalObjects[payload];\n if (this.currentDigitalObject.type === 'images-iiif') {\n this.one('aw-scheda-image-iiif').update(this.currentDigitalObject);\n } else if (this.currentDigitalObject.type.includes('images')) {\n if (schedaImageDS.hasInstance()) {\n schedaImageDS.updateImages(this.currentDigitalObject);\n } else {\n this.one('aw-scheda-image').update(this.currentDigitalObject);\n }\n\n // image viewer navigator\n const navigatorConfig = this.layoutConfig['image-viewer-nav'];\n if (navigatorConfig?.enabled) {\n schedaImageDS.instanceLoaded$.pipe(\n first(),\n delay(100) // waiting for viewer instance to update\n ).subscribe((viewer) => {\n this.one('aw-scheda-image-navigator').updateOptions(navigatorConfig);\n this.one('aw-scheda-image-navigator').update(viewer);\n });\n }\n } else if (this.currentDigitalObject.type === 'pdf') {\n this.one('aw-scheda-pdf').update(this.currentDigitalObject);\n }\n }\n }\n }\n\n private normalizeDigitalObjects(digitalObjects) {\n return digitalObjects.map(($do) => {\n if ($do.type.includes('images')) {\n return {\n id: 'scheda-layout-viewer',\n type: $do.type,\n label: $do.label,\n items: $do.items.map(({ url, iiifImages }) => ({\n url,\n iiifImages,\n type: $do.type,\n }))\n };\n }\n return $do;\n });\n }\n\n private _normalizeItems(items) {\n return items.map((singleItem) => ({ item: { ...singleItem } }));\n }\n\n private setHeadTitle(label?: string) {\n this.mainState.update('headTitle', getHeadTitle({\n label,\n name: this.configuration.get('customer'),\n pageName: this.configuration.get(this.configId)?.pageName,\n pageDefault: 'Patrimonio',\n }));\n }\n\n private setTreeTitle() {\n const titleClose = this.configuration.get(this.configId)?.treeCloseTitle;\n const titleOpen = this.configuration.get(this.configId)?.treeOpenTitle;\n this.treeCloseTitle = (titleClose) || 'Consulta il patrimonio';\n this.treeOpenTitle = (titleOpen) || 'Patrimonio';\n }\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { EventHandler } from '@net7/core';\nimport {\n isEmpty, isEqual, isNumber\n} from 'lodash';\nimport {\n forkJoin, from, of, ReplaySubject, Subject, timer\n} from 'rxjs';\nimport {\n debounce, filter, first, switchMap\n} from 'rxjs/operators';\nimport { ConfigurationService } from '@net7/boilerplate-common';\nimport { AwSchedaLayoutDS } from './scheda-layout.ds';\n\nexport class AwSchedaLayoutEH extends EventHandler {\n dataSource: AwSchedaLayoutDS;\n\n private destroyed$: Subject<void> = new Subject();\n\n private configuration: ConfigurationService;\n\n private route: ActivatedRoute;\n\n private router: Router;\n\n private treeLoaded$: ReplaySubject<void> = new ReplaySubject();\n\n private extendedTreeChanged$: Subject<{\n key: string;\n value: string | number;\n delay?: number;\n }> = new Subject();\n\n private schedaSearchChanged$: Subject<{\n key: string;\n value: string | number;\n delay?: number;\n }> = new Subject();\n\n private pageInputValue: number;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-scheda-layout.init': {\n this.dataSource.onInit(payload);\n this.configuration = payload.configuration;\n this.route = payload.route;\n this.router = payload.router;\n const paramId = this.route.snapshot.params.id || '';\n if (paramId) {\n this.dataSource.currentId = paramId;\n }\n this.listenRoute();\n this.listenRouteQueryParams();\n this.listenExtendedTree();\n this.listenSchedaSearch();\n this.loadNavigation(paramId);\n this.emitOuter('viewleaf');\n // scroll top\n window.scrollTo(0, 0);\n } break;\n\n case 'aw-scheda-layout.destroy':\n this.destroyed$.next();\n this.dataSource.onDestroy();\n break;\n\n case 'aw-scheda-layout.togglesidebar':\n this.dataSource.collapseSidebar();\n break;\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-sidebar-header.click':\n this.dataSource.collapseSidebar();\n break;\n case 'aw-scheda-dropdown.click':\n this.dataSource.changeDigitalObject(payload);\n break;\n\n /**\n * EXTENDED TREE EVENTS\n * ---------------------------------------------------> */\n case 'aw-extended-tree.change': {\n let key: string;\n let delay: number;\n if (payload.inputPayload === 'search-input') {\n key = 'query';\n delay = 1000;\n } else if (payload.inputPayload === 'limit-select') {\n key = 'limit';\n } else if (payload.inputPayload === 'page-input-change') {\n this.pageInputValue = +payload.value;\n } else if (payload.inputPayload === 'page-input-enter') {\n key = 'page';\n }\n\n if (key) {\n this.extendedTreeChanged$.next({\n key,\n delay,\n value: payload.value,\n });\n }\n } break;\n case 'aw-extended-tree.search':\n this.extendedTreeChanged$.next({\n key: 'query',\n value: payload.value\n });\n break;\n case 'aw-extended-tree.click':\n this.extendedTreeChanged$.next({\n key: 'page',\n value: payload\n });\n break;\n case 'aw-extended-tree.pageinputsubmit':\n if (isNumber(this.pageInputValue)) {\n this.extendedTreeChanged$.next({\n key: 'page',\n value: this.pageInputValue\n });\n }\n break;\n\n /**\n * SCHEDA (INTERNAL) SEARCH EVENTS\n * ---------------------------------------------------> */\n case 'aw-scheda-search.change': {\n let key: string;\n let delay: number;\n if (payload.inputPayload === 'input-change') {\n key = 'query';\n delay = 1000;\n } else if (payload.inputPayload === 'input-enter') {\n key = 'query';\n } else if (payload.inputPayload === 'limit-select') {\n key = 'limit';\n }\n\n if (key) {\n this.schedaSearchChanged$.next({\n key,\n delay,\n value: payload.value,\n });\n }\n } break;\n case 'aw-scheda-search.click':\n this.schedaSearchChanged$.next({\n key: 'page',\n value: payload\n });\n break;\n default:\n break;\n }\n });\n }\n\n private listenRoute() {\n this.route.paramMap.subscribe((params) => {\n const paramId = params.get('id');\n if (paramId) {\n if (paramId) {\n this.dataSource.currentId = paramId;\n this.emitOuter('routechanged', paramId);\n }\n this.dataSource.contentIsLoading = true;\n this.dataSource.loadItem(paramId).pipe(\n switchMap((response) => this.parseDigitalObjects$(response))\n ).subscribe((response) => {\n this.dataSource.contentIsLoading = false;\n if (response) {\n this.dataSource.loadContent(response);\n this.dataSource.loadExtendedTree();\n this.dataSource.loadInternalSearch();\n this.checkTreeItems(response);\n }\n });\n }\n // scroll top\n window.scrollTo(0, 0);\n });\n }\n\n private listenExtendedTree() {\n this.extendedTreeChanged$.pipe(\n filter(({ key, value }) => !(key === 'page' && (!isNumber(+value) || +value < 1))),\n debounce(({ delay }) => timer(delay || 1)),\n ).subscribe(({ key, value }) => {\n const queryParams: {\n [id: string]: string\n } = {};\n\n if (typeof value === 'string') {\n queryParams[key] = value.trim().length ? value : null;\n } else {\n queryParams[key] = `${value}`;\n }\n\n // page check\n if (key !== 'page') {\n queryParams.page = '1';\n }\n\n // reset pageInput value\n this.pageInputValue = null;\n\n // update url\n this.router.navigate([], {\n queryParams,\n queryParamsHandling: 'merge'\n });\n });\n }\n\n private listenSchedaSearch() {\n this.schedaSearchChanged$.pipe(\n filter(({ key, value }) => !(key === 'page' && (!isNumber(+value) || +value < 1))),\n debounce(({ delay }) => timer(delay || 1)),\n ).subscribe(({ key, value }) => {\n const queryParams: {\n [id: string]: string\n } = {};\n\n if (typeof value === 'string') {\n queryParams[`search-${key}`] = value.trim().length ? value : null;\n } else {\n queryParams[`search-${key}`] = `${value}`;\n }\n\n // page check\n if (key !== 'page') {\n queryParams['search-page'] = '1';\n }\n\n // update url\n this.router.navigate([], {\n queryParams,\n queryParamsHandling: 'merge'\n });\n });\n }\n\n private listenRouteQueryParams() {\n this.route.queryParams.subscribe((params) => {\n const extendedTreeParams = {};\n const internalSearchParams = {};\n Object.keys(params).forEach((key) => {\n const treeAllowed = ['query', 'page', 'limit'];\n const internalAllowed = treeAllowed.map((item) => `search-${item}`);\n if (treeAllowed.includes(key)) {\n let value;\n if (key !== 'query') {\n value = isNumber(+params[key]) ? +params[key] : null;\n } else {\n value = params[key];\n }\n if (value) {\n extendedTreeParams[key] = value;\n }\n }\n if (internalAllowed.includes(key)) {\n let value;\n if (key !== 'search-query') {\n value = isNumber(+params[key]) ? +params[key] : null;\n } else {\n value = params[key];\n }\n if (value) {\n internalSearchParams[key] = value;\n }\n }\n });\n\n // scheda search changed\n if (!isEqual(this.dataSource.internalSearchParams, internalSearchParams)) {\n this.dataSource.internalSearchParams = internalSearchParams;\n // has node response\n if (this.dataSource.lastResponse) {\n this.emitOuter('schedasearchrequest');\n this.dataSource.loadInternalSearch();\n }\n\n // extended tree changed\n }\n if (!isEqual(this.dataSource.extendedTreeParams, extendedTreeParams)) {\n this.dataSource.extendedTreeParams = extendedTreeParams;\n // has node response\n if (this.dataSource.lastResponse) {\n this.emitOuter('extendedtreerequest');\n this.dataSource.loadExtendedTree();\n }\n }\n });\n }\n\n private loadNavigation(selectedItem) {\n this.dataSource.updateNavigation('Caricamento in corso...');\n this.dataSource.getNavigation().subscribe((response) => {\n if (response) {\n this.dataSource.setTree(response);\n const treeLabel = this.dataSource.treeOpenTitle || this.dataSource.getTree().label;\n this.dataSource.updateNavigation(treeLabel);\n this.emitOuter('navigationresponse', {\n tree: this.dataSource.getTree(),\n currentItem: selectedItem,\n basePath: this.configuration.get('paths').schedaBasePath,\n });\n\n // emit signal\n this.treeLoaded$.next();\n }\n });\n }\n\n private parseDigitalObjects$(response) {\n const iiifManifest$ = {};\n const baseUrls = this.configuration.get('baseUrls') || {};\n const { iiifServer, iipServer } = baseUrls;\n if (Array.isArray(response?.digitalObjects)) {\n response.digitalObjects.forEach((digitalObject) => {\n // iip config url check\n if (iipServer && digitalObject.type === 'images-iip') {\n digitalObject.items.forEach((item) => {\n item.url = `${iipServer}${item.url}`;\n });\n }\n // iiif config url check\n if (iiifServer && digitalObject.type === 'images-iiif') {\n digitalObject.items.forEach((item) => {\n item.url = `${iiifServer}${item.url}`;\n });\n }\n\n if (digitalObject.type === 'images-iiif') {\n digitalObject.items.forEach(({ url }) => {\n iiifManifest$[url] = from(\n fetch(url)\n .then((data) => {\n if (!data.ok) {\n throw Error(data.statusText);\n }\n return data.json();\n })\n .catch((err) => {\n console.warn(`Error loading iiif manifest ${url}`, err);\n return null;\n })\n );\n });\n }\n });\n }\n if (!isEmpty(iiifManifest$)) {\n return forkJoin(iiifManifest$).pipe(\n switchMap((data: object) => {\n response.digitalObjects.forEach((digitalObject) => {\n if (digitalObject.type === 'images-iiif') {\n digitalObject.items.forEach((itemImages, index) => {\n digitalObject.items[index].iiifImages = this.getManifestImages(\n data[itemImages.url]\n );\n });\n }\n });\n return of(response);\n })\n );\n }\n return of(response);\n }\n\n private getManifestImages(manifest) {\n const iiifImages = [];\n if (manifest?.sequences) {\n manifest.sequences.forEach(({ canvases }) => {\n canvases.forEach(({ images }) => {\n images.forEach(({ resource }) => {\n iiifImages.push(resource['@id']);\n });\n });\n });\n }\n return iiifImages;\n }\n\n private checkTreeItems(response) {\n this.treeLoaded$.pipe(\n first()\n ).subscribe(() => {\n const treeDS = this.dataSource.getWidgetDataSource('aw-tree');\n const { items } = treeDS.output;\n if (!items.length && response.lastAl?.id) {\n this.emitOuter('selectParent', response.lastAl.id);\n }\n });\n }\n}\n","import { AwSchedaLayoutDS } from './scheda-layout.ds';\nimport { AwSchedaLayoutEH } from './scheda-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const AwPatrimonioLayoutConfig = {\n layoutId: 'aw-scheda-layout',\n /**\n * Array of components you want to use\n * in this leyout\n */\n widgets: [\n { id: 'aw-sidebar-header' },\n { id: 'aw-tree' },\n { id: 'aw-scheda-breadcrumbs' },\n { id: 'aw-scheda-metadata' },\n { id: 'aw-scheda-dropdown' },\n { id: 'aw-scheda-image' },\n { id: 'aw-scheda-image-navigator' },\n { id: 'aw-scheda-pdf' },\n { id: 'aw-scheda-image-iiif' },\n { id: 'aw-scheda-inner-title' },\n { id: 'aw-related-entities' },\n { id: 'aw-chart-tippy' },\n { id: 'aw-linked-objects' },\n { id: 'aw-extended-tree' },\n { id: 'aw-scheda-search' },\n ],\n layoutDS: AwSchedaLayoutDS,\n layoutEH: AwSchedaLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","//---------------------------\n// PdfViewer.ts\n//---------------------------\n\nimport { Component, Input } from '@angular/core';\nimport { isNull } from 'lodash';\n\nexport type PdfViewerData = {\n items: {\n label: string;\n url: string;\n selected: boolean;\n }[];\n next: number | null;\n prev: number | null;\n currentUrl: string;\n libOptions: {\n showToolbar: boolean;\n showSidebarButton: boolean;\n showFindButton: boolean;\n showPagingButtons: boolean;\n showZoomButtons: boolean;\n showPresentationModeButton: boolean;\n showOpenFileButton: boolean;\n showPrintButton: boolean;\n showDownloadButton: boolean;\n showBookModeButton: boolean;\n showSecondaryToolbarButton: boolean;\n showRotateButton: boolean;\n showHandToolButton: boolean;\n showScrollingButton: boolean;\n showSpreadButton: boolean;\n showPropertiesButton: boolean;\n };\n classes?: string;\n}\n\n@Component({\n selector: 'aw-pdf-viewer',\n templateUrl: './pdf-viewer.html',\n})\nexport class PdfViewerComponent {\n @Input() data: PdfViewerData;\n\n @Input() emit: (type: string, payload?: any) => void;\n\n onClick(payload) {\n if (!this.emit || isNull(payload)) {\n return;\n }\n\n this.emit('click', payload);\n }\n\n onLoaded() {\n this.emit('loaded');\n }\n}\n","<div *ngIf=\"data\" class=\"aw-pdf-viewer {{ data.classes || '' }}\">\n <div class=\"aw-pdf-viewer__loader\">\n <n7-loader></n7-loader>\n </div>\n \n <ngx-extended-pdf-viewer\n [src]=\"data.currentUrl\"\n [height]=\"'90vh'\"\n [textLayer]=\"true\"\n [showToolbar]=\"data.libOptions.showToolbar\"\n [showSidebarButton]=\"data.libOptions.showSidebarButton\"\n [showFindButton]=\"data.libOptions.showFindButton\"\n [showPagingButtons]=\"data.libOptions.showPagingButtons\"\n [showZoomButtons]=\"data.libOptions.showZoomButtons\"\n [showPresentationModeButton]=\"data.libOptions.showPresentationModeButton\"\n [showOpenFileButton]=\"data.libOptions.showOpenFileButton\"\n [showPrintButton]=\"data.libOptions.showPrintButton\"\n [showDownloadButton]=\"data.libOptions.showDownloadButton\"\n [showBookModeButton]=\"data.libOptions.showBookModeButton\"\n [showSecondaryToolbarButton]=\"data.libOptions.showSecondaryToolbarButton\"\n [showRotateButton]=\"data.libOptions.showRotateButton\"\n [showHandToolButton]=\"data.libOptions.showHandToolButton\"\n [showScrollingButton]=\"data.libOptions.showScrollingButton\"\n [showSpreadButton]=\"data.libOptions.showSpreadButton\"\n [showPropertiesButton]=\"data.libOptions.showPropertiesButton\"\n (pdfLoaded)=\"onLoaded()\"\n (pdfLoadingFailed)=\"onLoaded()\">\n </ngx-extended-pdf-viewer>\n \n <div *ngIf=\"data.items.length > 1\" class=\"aw-pdf-viewer__navigation\">\n <div class=\"aw-pdf-viewer__navigation-tools\">\n <a class=\"aw-pdf-viewer__navigation-prev {{ (!data.prev && data.prev !== 0) ? 'is-disabled' : '' }}\" \n (click)=\"onClick(data.prev)\">\n <span class=\"n7-icon-angle-left\"></span>\n </a>\n <div class=\"aw-pdf-viewer__navigation-select\">\n <p class=\"aw-pdf-viewer__navigation-select-text\">Scorri i documenti PDF</p>\n <select (change)=\"onClick(+$event.target.value)\">\n <option *ngFor=\"let item of data.items; let $i = index\" [value]=\"$i\"\n [selected]=\"item.selected\">{{ item.label }}</option>\n </select>\n </div>\n <a class=\"aw-pdf-viewer__navigation-next {{ !data.next ? 'is-disabled' : '' }}\" \n (click)=\"onClick(data.next)\">\n <span class=\"n7-icon-angle-right\"></span>\n </a>\n </div>\n </div>\n</div>\n","//---------------------------\n// SchedaDropdown.ts\n//---------------------------\n\nimport { Component, Input } from '@angular/core';\nimport { Icon } from '@net7/components';\n\nexport type SchedaDropdownData = {\n header: {\n label: string;\n icon: Icon;\n payload: any;\n };\n items: {\n label: string;\n payload: any;\n selected: false;\n type: string;\n }[];\n classes?: any;\n}\n\n@Component({\n selector: 'aw-scheda-dropdown',\n templateUrl: './scheda-dropdown.html',\n})\nexport class SchedaDropdownComponent {\n @Input() data: SchedaDropdownData;\n\n @Input() emit: (type: string, payload: any) => void;\n\n onClick(ev: Event, payload) {\n if (!this.emit) {\n return;\n }\n\n ev.stopImmediatePropagation();\n\n this.emit('click', payload);\n }\n}\n","<div *ngIf=\"data\" class=\"aw-scheda-dropdown {{ data.classes || '' }}\">\n <div class=\"aw-scheda-dropdown__header\"\n (click)=\"onClick($event, data.header.payload)\">\n <!-- header label -->\n <span class=\"aw-scheda-dropdown__header-label\">\n {{ data.header.label }}\n </span>\n <!-- header icon -->\n <span class=\"aw-scheda-dropdown__header-icon\"\n [ngClass]=\"data.header.icon['id']\">\n </span>\n </div>\n <div class=\"aw-scheda-dropdown__items\">\n <ul>\n <li *ngFor=\"let item of data.items\"\n [ngClass]=\"{\n 'is-selected': item.selected \n }\"\n (click)=\"onClick($event, item.payload)\">\n {{ item.label }}\n </li>\n </ul>\n </div>\n</div>","import { Component, Input } from '@angular/core';\nimport {\n Anchor, InnerTitleData, InputSelectData, InputTextData, PaginationData\n} from '@net7/components';\n\nexport type ExtendedTreeData = {\n header: InnerTitleData;\n items: {\n icon: string;\n thumbnail?: string;\n label: string;\n anchor: Anchor;\n }[];\n pagination: PaginationData;\n limitSelect?: InputSelectData;\n pageInput?: InputTextData;\n fallback?: string;\n loading?: boolean;\n}\n\n@Component({\n selector: 'aw-extended-tree',\n templateUrl: './extended-tree.html',\n})\nexport class ExtendedTreeComponent {\n @Input() data: ExtendedTreeData;\n\n @Input() emit: (type: string, payload?: any) => void;\n\n @Input() lb: any;\n\n onPageInputSubmit() {\n if (!this.emit) return;\n\n this.emit('pageinputsubmit');\n }\n\n onCollapseClick(type) {\n if (['text', 'submit'].includes(type)) return;\n\n this.lb.dataSource.onSectionCollapse('extended-tree');\n }\n}\n","<div *ngIf=\"data\" class=\"aw-extended-tree\">\n <div class=\"aw-scheda__section-title-wrapper\" (click)=\"onCollapseClick($event.target?.type)\">\n <ng-content></ng-content>\n <div *ngIf=\"data.header as header\" class=\"aw-scheda__inner-title aw-extended-tree__header\">\n <n7-inner-title \n [data]=\"header\"\n [emit]=\"this.emit\"></n7-inner-title>\n </div>\n </div>\n <div [hidden]=\"!!lb.dataSource.sectionCollapseState['extended-tree']\">\n <ng-container *ngIf=\"data.loading\">\n <div class=\"aw-extended-tree__loader\">\n <n7-loader></n7-loader>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!data.loading\">\n <ng-container *ngIf=\"!data.items?.length && data.fallback\">\n <div class=\"aw-extended-tree__content\">\n <p>{{ data.fallback }}</p>\n </div>\n </ng-container>\n <ng-container *ngIf=\"data.items?.length\">\n <div *ngIf=\"data.items as items\" class=\"aw-extended-tree__content\">\n <div *ngFor=\"let item of data.items\" class=\"aw-extended-tree__item\">\n <n7-anchor-wrapper [classes]=\"'aw-extended-tree__item-link'\" [data]=\"item.anchor\">\n <div *ngIf=\"item.icon\" class=\"aw-extended-tree__item-icon\">\n <span class=\"{{ item.icon }}\"></span>\n </div>\n <div *ngIf=\"item.thumbnail\" class=\"aw-extended-tree__item-image\">\n <img src=\"{{ item.thumbnail }}\" alt=\"{{ item.label }}\">\n </div>\n <div *ngIf=\"item.label\" class=\"aw-extended-tree__item-label\">{{ item.label }}</div>\n </n7-anchor-wrapper>\n </div>\n </div>\n <div *ngIf=\"data.pagination as pagination\" class=\"aw-extended-tree__footer\">\n <div *ngIf=\"data.pagination as pagination\" class=\"aw-extended-tree__pagination\">\n <n7-pagination \n [data]=\"pagination\"\n [emit]=\"this.emit\"></n7-pagination>\n </div>\n <div *ngIf=\"data.pageInput as pageInput\" class=\"aw-extended-tree__page-input\">\n <n7-input-text \n [data]=\"pageInput\"\n [emit]=\"this.emit\"></n7-input-text>\n <button class=\"n7-btn\"\n (click)=\"onPageInputSubmit()\">Vai</button>\n </div>\n <div *ngIf=\"data.limitSelect as limitSelect\" class=\"aw-extended-tree__limit-select\">\n <n7-input-select \n [data]=\"limitSelect\"\n [emit]=\"this.emit\"></n7-input-select>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</div>","import { Component, Input } from '@angular/core';\nimport { InputTextData } from '@net7/components';\n\nexport type SchedaImageNavigatorData = {\n input: InputTextData;\n button: {\n label: string;\n disabled?: boolean;\n };\n classes?: string;\n}\n\n@Component({\n selector: 'aw-scheda-image-navigator',\n templateUrl: './scheda-image-navigator.html'\n})\nexport class SchedaImageNavigatorComponent {\n @Input() data: SchedaImageNavigatorData;\n\n @Input() emit: (type: string, payload?: unknown) => void;\n\n onSubmit() {\n if (!this.emit) return;\n this.emit('submit');\n }\n}\n","<div *ngIf=\"data\" class=\"aw-scheda-image-navigator\" [ngClass]=\"data.classes\">\n <div class=\"aw-scheda-image-navigator__input\">\n <n7-input-text \n [data]=\"data.input\"\n [emit]=\"this.emit\"></n7-input-text>\n </div>\n <div *ngIf=\"data.button as button\" class=\"aw-scheda-image-navigator__button\">\n <button class=\"n7-btn\"\n [ngClass]=\"{\n 'is-disabled': button.disabled\n }\"\n [disabled]=\"button.disabled\"\n (click)=\"onSubmit()\">{{ button.label }}</button>\n </div>\n</div>","import { Component, Input } from '@angular/core';\nimport {\n Anchor,\n InnerTitleData, InputSelectData, InputTextData, PaginationData\n} from '@net7/components';\n\nexport type SchedaSearchData = {\n header: InnerTitleData;\n input: InputTextData;\n items: {\n icon: string;\n thumbnail?: string;\n label: string;\n anchor: Anchor;\n breadcrumbs?: {\n items: {\n label: string;\n anchor: Anchor;\n }[];\n }\n }[];\n pagination: PaginationData;\n limitSelect?: InputSelectData;\n fallback?: string;\n loading?: boolean;\n}\n\n@Component({\n selector: 'aw-scheda-search',\n templateUrl: './scheda-search.html',\n})\nexport class SchedaSearchComponent {\n @Input() data: SchedaSearchData;\n\n @Input() emit: (type: string, payload?: any) => void;\n}\n","<div *ngIf=\"data\" class=\"aw-scheda-search\">\n <div class=\"aw-scheda__section-title-wrapper\">\n <div *ngIf=\"data.header as header\" class=\"aw-scheda__inner-title aw-scheda-search__header\">\n <n7-inner-title [data]=\"header\"></n7-inner-title>\n </div>\n </div>\n <div *ngIf=\"data.input as input\" class=\"aw-scheda__input aw-scheda-search__input\">\n <n7-input-text [data]=\"input\" [emit]=\"this.emit\"></n7-input-text>\n </div>\n <div>\n <ng-container *ngIf=\"data.loading\">\n <div class=\"aw-scheda-search__loader\">\n <n7-loader></n7-loader>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!data.loading && data.items\">\n <ng-container *ngIf=\"!data.items?.length && data.fallback\">\n <div class=\"aw-scheda-search__content\">\n <p>{{ data.fallback }}</p>\n </div>\n </ng-container>\n <ng-container *ngIf=\"data.items?.length\">\n <div *ngIf=\"data.items as items\" class=\"aw-scheda-search__content\">\n <div *ngFor=\"let item of data.items\" class=\"aw-scheda-search__item\">\n <n7-anchor-wrapper [classes]=\"'aw-scheda-search__item-link'\" [data]=\"item.anchor\">\n <div class=\"aw-scheda-search__item-top\">\n <n7-smart-breadcrumbs [data]=\"item.breadcrumbs\">\n </n7-smart-breadcrumbs>\n </div>\n <div class=\"aw-scheda-search__item-bottom\">\n <div *ngIf=\"item.icon\" class=\"aw-scheda-search__item-icon\">\n <span class=\"{{ item.icon }}\"></span>\n </div>\n <div *ngIf=\"item.thumbnail\" class=\"aw-scheda-search__item-image\">\n <img src=\"{{ item.thumbnail }}\" alt=\"{{ item.label }}\">\n </div>\n <div *ngIf=\"item.label\" class=\"aw-scheda-search__item-label\">{{ item.label }}</div>\n </div>\n </n7-anchor-wrapper>\n </div>\n </div>\n <div *ngIf=\"data.pagination as pagination\" class=\"aw-scheda-search__footer\">\n <div *ngIf=\"data.pagination as pagination\" class=\"aw-scheda-search__pagination\">\n <n7-pagination \n [data]=\"pagination\"\n [emit]=\"this.emit\"></n7-pagination>\n </div>\n <div *ngIf=\"data.limitSelect as limitSelect\" class=\"aw-scheda-search__limit-select\">\n <n7-input-select \n [data]=\"limitSelect\"\n [emit]=\"this.emit\"></n7-input-select>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</div>","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { Title } from '@angular/platform-browser';\nimport {\n AbstractLayout,\n ConfigurationService,\n LayoutsConfigurationService,\n MainStateService,\n CommunicationService\n} from '@net7/boilerplate-common';\nimport { AwPatrimonioLayoutConfig as config } from './scheda-layout.config';\n\n@Component({\n selector: 'aw-scheda-layout',\n templateUrl: './scheda-layout.html',\n})\n\nexport class AwSchedaLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private configuration: ConfigurationService,\n private layoutsConfiguration: LayoutsConfigurationService,\n private mainState: MainStateService,\n private titleService: Title,\n private communication: CommunicationService,\n\n ) {\n super(layoutsConfiguration.get('AwPatrimonioLayoutConfig') || config);\n }\n\n /**\n * Optional variables that can be accessed from the layout's logic.\n * If removed, they must also be removed from the layout's DataSource file,\n * and from this file imports.\n */\n protected initPayload() {\n return {\n configuration: this.configuration,\n mainState: this.mainState,\n router: this.router,\n route: this.route,\n titleService: this.titleService,\n communication: this.communication,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"aw-scheda\"\n id=\"scheda-layout\">\n <div class=\"aw-scheda__content n7-side-auto-padding sticky-parent\"\n [ngClass]=\"{ 'is-collapsed' : lb.dataSource.sidebarCollapsed }\">\n\n <ng-container *ngTemplateOutlet=\"tree\"></ng-container>\n\n <div class=\"aw-scheda__scheda-wrapper\"\n [hidden]=\"lb.dataSource.contentIsLoading\">\n\n <div class=\"aw-scheda__breadcrumbs-wrapper\">\n <n7-smart-breadcrumbs *ngIf=\"lb.dataSource.hasBreadcrumb\"\n [data]=\"lb.widgets['aw-scheda-breadcrumbs'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-scheda-breadcrumbs'].emit\">\n </n7-smart-breadcrumbs>\n </div>\n\n <div *ngIf=\"!lb.dataSource.hasBreadcrumb\"\n class=\"aw-scheda__fake-breadcrumbs\"\n (click)=\"lb.eventHandler.emitInner('togglesidebar', {})\">\n <p class=\"aw-scheda__fake-breadcrumbs-open\" \n *ngIf=\"lb.dataSource.sidebarCollapsed\">\n {{ lb.dataSource.treeCloseTitle }}\n </p>\n </div>\n\n <div *ngIf=\"!lb.dataSource.currentId\"\n class=\"aw-scheda__intro-text\"\n [innerHTML]=\"lb.dataSource.emptyLabel\">\n </div>\n\n <div class=\"aw-scheda__title-wrapper\">\n <div *ngIf=\"lb.dataSource.titleNavigation as titleNav\" class=\"aw-scheda__prev\">\n <a class=\"n7-btn n7-btn-light\" [routerLink]=\"titleNav.prev?.href ? [titleNav.prev.href] : null\"\n [title]=\"titleNav.prev?.label || ''\"\n [ngClass]=\"{ 'is-disabled': !titleNav.prev?.href }\">\n <span class=\"n7-icon-angle-left\"></span>\n </a>\n </div>\n <div class=\"aw-scheda__title\">\n <div *ngIf=\"lb.dataSource.documentType as documentType\" class=\"aw-scheda__document-type\">\n <span *ngIf=\"documentType.icon\" class=\"aw-scheda__document-type-icon {{ documentType.icon }}\"></span>\n <span class=\"aw-scheda__document-type-label\">{{ documentType.label }}</span>\n </div>\n <n7-inner-title [data]=\"lb.widgets['aw-scheda-inner-title'].ds.out$ | async\">\n </n7-inner-title>\n </div>\n <div *ngIf=\"lb.dataSource.titleNavigation as titleNav\" class=\"aw-scheda__next\">\n <a class=\"n7-btn n7-btn-light\" [routerLink]=\"titleNav.next?.href ? [titleNav.next.href] : null\"\n [title]=\"titleNav.next?.label || ''\"\n [ngClass]=\"{ 'is-disabled': !titleNav.next?.href }\">\n <span class=\"n7-icon-angle-right\"></span>\n </a>\n </div>\n </div>\n\n <!-- Internal search -->\n <ng-container *ngTemplateOutlet=\"internalsearch\"></ng-container>\n\n <!-- Empty state -->\n <ng-container *ngIf=\"!lb.dataSource.hasContent\">\n <ng-container *ngTemplateOutlet=\"empty\"></ng-container>\n </ng-container>\n\n <!-- Content sections -->\n <ng-container *ngIf=\"lb.dataSource.hasContent\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n\n <!-- Extended tree -->\n <ng-container *ngTemplateOutlet=\"extendedtree\"></ng-container>\n\n </div>\n </div>\n</div>\n\n<ng-template #tree>\n <div class=\"aw-scheda__tree sticky-target\"\n [ngClass]=\"{ 'is-sticky': lb.dataSource.sidebarIsSticky }\">\n <n7-sidebar-header [data]=\"lb.widgets['aw-sidebar-header'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-sidebar-header'].emit\"></n7-sidebar-header>\n <div class=\"aw-scheda__tree-content-loading\"\n *ngIf=\"!(lb.widgets['aw-tree'].ds.out$ | async)\">\n <n7-content-placeholder *ngFor=\"let n of [0,1,2,3]\"\n [data]=\"{\n blocks: [{\n classes: 'tree-placeholder-item'\n }]\n }\"></n7-content-placeholder>\n </div>\n <div class=\"aw-scheda__tree-content\"\n (click)=\"lb.eventHandler.emitOuter('treeposition', $event)\"\n [ngStyle]=\"{\n 'max-height': lb.dataSource.treeMaxHeight,\n 'overflow': 'auto'\n }\">\n <n7-tree [data]=\"lb.widgets['aw-tree'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-tree'].emit\"\n *ngIf=\"!lb.dataSource.sidebarCollapsed\">\n </n7-tree>\n </div>\n </div>\n</ng-template>\n\n<ng-template #empty>\n <section class=\"aw-scheda__section aw-scheda__empty\"\n [innerHTML]=\"lb.dataSource.emptyStateString\">\n </section>\n</ng-template>\n\n<ng-template #content>\n <!-- Digital Object selection dropdown -->\n <section class=\"aw-scheda__digital-object-dropdown\"\n *ngIf=\"(\n lb.dataSource.hasDigitalObjects \n && lb.dataSource.digitalObjects.length > 1\n )\">\n <p class=\"aw-scheda__digital-object-dropdown-label\">\n Seleziona l'oggetto digitale da visualizzare:\n </p>\n <aw-scheda-dropdown \n [data]=\"lb.widgets['aw-scheda-dropdown'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-scheda-dropdown'].emit\">\n </aw-scheda-dropdown>\n </section>\n <!-- END // Digital Object selection dropdown -->\n\n <!-- Digital Objects: images, IIP, PDFs, external links -->\n <section *ngIf=\"lb.dataSource.currentDigitalObject as $do\" \n class=\"aw-scheda__media aw-scheda__{{ $do.type }}\">\n <ng-container [ngSwitch]=\"$do.type\">\n <!-- IMAGE VIEWER (IIP) -->\n <ng-container *ngSwitchCase=\"'images-iip'\">\n <aw-scheda-image-navigator \n [data]=\"lb.widgets['aw-scheda-image-navigator'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-scheda-image-navigator'].emit\"></aw-scheda-image-navigator>\n <n7-image-viewer \n (contextmenu)=\"lb.dataSource.hasContextMenu()\" \n [data]=\"lb.widgets['aw-scheda-image'].ds.out$ | async\">\n </n7-image-viewer>\n </ng-container>\n\n <!-- IMAGE VIEWER (IIIF) -->\n <ng-container *ngSwitchCase=\"'images-iiif'\">\n <n7-mirador \n class=\"aw-mirador-viewer\"\n (contextmenu)=\"lb.dataSource.hasContextMenu()\" \n [data]=\"lb.widgets['aw-scheda-image-iiif'].ds.out$ | async\">\n </n7-mirador>\n </ng-container>\n\n <!-- IMAGE VIEWER (Simple: jpg, png) -->\n <ng-container *ngSwitchCase=\"'images-simple'\">\n <aw-scheda-image-navigator \n [data]=\"lb.widgets['aw-scheda-image-navigator'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-scheda-image-navigator'].emit\"></aw-scheda-image-navigator>\n <n7-image-viewer \n (contextmenu)=\"lb.dataSource.hasContextMenu()\"\n [data]=\"lb.widgets['aw-scheda-image'].ds.out$ | async\">\n </n7-image-viewer>\n </ng-container>\n \n <!-- PDF -->\n <ng-container *ngSwitchCase=\"'pdf'\">\n <aw-pdf-viewer \n [data]=\"lb.widgets['aw-scheda-pdf'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-scheda-pdf'].emit\">\n </aw-pdf-viewer>\n </ng-container>\n \n <!-- EXTERNAL URL -->\n <ng-container *ngSwitchCase=\"'external'\">\n <div class=\"aw-scheda__external-url\">\n <a class=\"aw-scheda__external-url-link\" href=\"{{ $do.url }}\" target=\"_blank\">\n {{ $do.label || lb.dataSource.externalUrlText }}\n <span class=\"n7-icon-external-link\"></span>\n </a>\n </div>\n </ng-container>\n </ng-container>\n </section>\n <!-- END // Digital Objects -->\n\n <section *ngIf=\"lb.dataSource.contentParts.content\" class=\"aw-scheda__section aw-scheda__description\">\n <div *ngFor=\"let part of lb.dataSource.contentParts\">\n <div [innerHTML]=\"part.content\"></div>\n </div>\n </section>\n\n <!-- Metadata -->\n <section *ngIf=\"lb.dataSource.hasMetadata\" class=\"aw-scheda__section aw-scheda__metadata\">\n <div class=\"aw-scheda__section-title-wrapper\" (click)=\"lb.dataSource.onSectionCollapse('metadata')\">\n <ng-container *ngTemplateOutlet=\"collapse; context: { $implicit: 'metadata' }\"></ng-container>\n <div class=\"aw-scheda__inner-title\"\n *ngIf=\"lb.dataSource.metadataSectionTitle\">\n {{lb.dataSource.metadataSectionTitle}}\n </div>\n </div>\n <div [hidden]=\"!!lb.dataSource.sectionCollapseState['metadata']\" \n class=\"aw-scheda__section-content-wrapper\">\n <n7-metadata-viewer [data]=\"lb.widgets['aw-scheda-metadata'].ds.out$ | async\">\n </n7-metadata-viewer>\n </div>\n </section>\n <!-- END // Metadata -->\n\n <!-- Related entities -->\n <section *ngIf=\"lb.dataSource.hasRelatedEntities\"\n id=\"related-item-container\"\n class=\"aw-scheda__section aw-scheda__related\">\n <div class=\"aw-scheda__section-title-wrapper\" (click)=\"lb.dataSource.onSectionCollapse('related-entities')\">\n <ng-container *ngTemplateOutlet=\"collapse; context: { $implicit: 'related-entities' }\"></ng-container>\n <div class=\"aw-scheda__inner-title\">\n {{lb.dataSource.relatedEntitiesHeader}}\n </div>\n </div>\n <div [hidden]=\"!!lb.dataSource.sectionCollapseState['related-entities']\" \n class=\"aw-scheda__related-items aw-item-preview-list n7-grid-2\">\n <ng-container *ngFor=\"let preview of (lb.widgets['aw-related-entities'].ds.out$ | async)?.previews\">\n <div class=\"aw-item-preview-wrapper\">\n <n7-item-preview [data]=\"preview\"\n [emit]=\"lb.widgets['aw-related-entities'].emit\">\n </n7-item-preview>\n <div class=\"aw-item-preview-container-relations\">\n <!-- Relation -->\n <div class=\"aw-item-preview-relation\"\n *ngIf=\"preview.relation?.value && lb.dataSource.showRelationType\">\n <p class=\"aw-item-preview-relation__description\">Tipo di relazione\n <!-- <span class=\"aw-item-preview-relation__key\">{{preview.relation.key}}</span>: -->\n <span class=\"aw-item-preview-relation__value\">{{preview.relation.value}}</span>\n </p>\n </div>\n <!-- Qualification -->\n <div class=\"aw-item-preview-relation\"\n *ngIf=\"preview.qualification?.value && lb.dataSource.showRelationQualification\">\n <p class=\"aw-item-preview-relation__description\">Qualifica della relazione\n <span class=\"aw-item-preview-relation__value\">{{preview.qualification.value}}</span>\n </p>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </section>\n <!-- END // Related entities -->\n\n <!-- Similar Objects -->\n <section *ngIf=\"lb.dataSource.hasSimilarItems\"\n id=\"related-item-container\"\n class=\"aw-scheda__section aw-scheda__related\">\n <div class=\"aw-scheda__section-title-wrapper\" (click)=\"lb.dataSource.onSectionCollapse('similar-items')\">\n <ng-container *ngTemplateOutlet=\"collapse; context: { $implicit: 'similar-items' }\"></ng-container>\n <div class=\"aw-scheda__inner-title\">\n {{lb.dataSource.similarItemsSectionTitle}}\n </div>\n </div>\n <div [hidden]=\"!!lb.dataSource.sectionCollapseState['similar-items']\" \n class=\"aw-scheda__related-items aw-item-preview-list n7-grid-2\">\n <ng-container *ngFor=\"let preview of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews\">\n <div class=\"aw-item-preview-wrapper\">\n <n7-item-preview [data]=\"preview\"\n [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n </div> \n </ng-container>\n </div>\n </section>\n <!-- END // Similar Objects -->\n</ng-template>\n\n<ng-template #collapse let-id>\n <div class=\"aw-scheda__collapse\">\n <button class=\"n7-btn n7-btn-light\">\n <span class=\"n7-icon-angle-right\"\n [ngClass]=\"{\n 'n7-icon-angle-right': !!lb.dataSource.sectionCollapseState[id],\n 'n7-icon-angle-down': !lb.dataSource.sectionCollapseState[id]\n }\"></span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #extendedtree>\n <!-- Extended Tree -->\n <section *ngIf=\"lb.dataSource.hasExtendedTree\" id=\"extended-tree-container\" class=\"aw-scheda__section\">\n <div class=\"aw-scheda__section-extended-tree-loader\" *ngIf=\"!(lb.widgets['aw-extended-tree'].ds.out$ | async)\">\n <n7-loader></n7-loader>\n </div>\n <aw-extended-tree\n [data]=\"lb.widgets['aw-extended-tree'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-extended-tree'].emit\"\n [lb]=\"lb\">\n <ng-container *ngTemplateOutlet=\"collapse; context: { $implicit: 'extended-tree' }\"></ng-container>\n </aw-extended-tree>\n </section>\n <!-- END // Extended Tree -->\n</ng-template>\n\n<ng-template #internalsearch>\n <!-- Internal search -->\n <section *ngIf=\"lb.dataSource.hasInternalSearch\" id=\"internal-search-container\" class=\"aw-scheda__section aw-scheda__section-internal-search\">\n <aw-scheda-search\n [data]=\"lb.widgets['aw-scheda-search'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-scheda-search'].emit\"></aw-scheda-search>\n </section>\n <!-- END // Internal search -->\n</ng-template>","import { SmartPaginationDS, SmartPaginationEH } from '@net7/boilerplate-common';\nimport { AwSearchLayoutDS } from './search-layout.ds';\nimport { AwSearchLayoutEH } from './search-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\nimport { AwFacetsWrapperDS } from '../../data-sources';\nimport { AwFacetsWrapperEH } from '../../event-handlers';\n\nexport const AwSearchLayoutConfig = {\n layoutId: 'aw-search-layout',\n /**\n * Array of components you want to use\n * in this layout\n */\n widgets: [\n { id: 'facets-wrapper', dataSource: AwFacetsWrapperDS, eventHandler: AwFacetsWrapperEH },\n { id: 'aw-linked-objects' },\n { id: 'aw-search-layout-tabs', hasStaticData: true },\n {\n id: 'n7-smart-pagination',\n dataSource: SmartPaginationDS,\n eventHandler: SmartPaginationEH,\n },\n ],\n layoutDS: AwSearchLayoutDS,\n layoutEH: AwSearchLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n AbstractLayout,\n ConfigurationService,\n LayoutsConfigurationService,\n MainStateService,\n CommunicationService\n} from '@net7/boilerplate-common';\nimport { AwSearchService } from '../../search/aw-search.service';\nimport { AwSearchLayoutConfig as config } from './search-layout.config';\n\n@Component({\n selector: 'aw-search-layout',\n templateUrl: './search-layout.html',\n})\n\nexport class AwSearchLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n constructor(\n private configuration: ConfigurationService,\n private layoutsConfiguration: LayoutsConfigurationService,\n private mainState: MainStateService,\n private communication: CommunicationService,\n private search: AwSearchService,\n private route: ActivatedRoute,\n ) {\n super(layoutsConfiguration.get('AwSearchLayoutConfig') || config);\n }\n\n /**\n * Optional variables that can be accessed from the layout's logic.\n * If removed, they must also be removed from the layout's DataSource file,\n * and from this file imports.\n */\n protected initPayload() {\n return {\n configuration: this.configuration,\n mainState: this.mainState,\n communication: this.communication,\n search: this.search,\n route: this.route,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"aw-search n7-side-auto-padding\"\n id=\"search-layout\">\n <div class=\"aw-search__header\">\n <div class=\"aw-search__header-left\">\n <h1 class=\"aw-search__header-title\">{{ lb.dataSource.pageTitle }}</h1>\n </div>\n <!--\n <div class=\"aw-search__header-right\">\n <n7-nav\n [data]=\"lb.widgets['aw-search-layout-tabs'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-search-layout-tabs'].emit\">\n </n7-nav>\n </div>\n -->\n </div>\n <div class=\"aw-search__content-wrapper sticky-parent\">\n <!-- Left sidebar: facets -->\n <div *ngIf=\"!(lb.widgets['facets-wrapper'].ds.out$ | async)\"\n class=\"aw-search__sidebar-loading sticky-target\">\n <div class=\"aw-search__facets-loading\">\n <n7-content-placeholder [data]=\"{\n blocks: [{\n classes: 'search-placeholder-facet-input'\n }, {\n classes: 'search-placeholder-facet-check'\n }, {\n classes: 'search-placeholder-facet-item'\n }, {\n classes: 'search-placeholder-facet-item'\n }, {\n classes: 'search-placeholder-facet-item'\n }, {\n classes: 'search-placeholder-facet-item'\n }, {\n classes: 'search-placeholder-facet-item'\n }]\n }\">\n </n7-content-placeholder>\n </div>\n </div>\n <div *ngIf=\"!!(lb.widgets['facets-wrapper'].ds.out$ | async)\"\n class=\"aw-search__sidebar sticky-target\"\n [ngClass]=\"{ 'is-sticky': lb.dataSource.sidebarIsSticky }\">\n <div class=\"aw-search__facets\">\n <aw-facets-wrapper [data]=\"lb.widgets['facets-wrapper'].ds.out$ | async\"\n [emit]=\"lb.widgets['facets-wrapper'].emit\">\n </aw-facets-wrapper>\n </div>\n </div>\n <div class=\"scroll-ref\">&nbsp;</div>\n <div class=\"aw-search__content\">\n <div class=\"aw-search__results-header\">\n <div class=\"aw-search__results-header-left\">\n <h3 *ngIf=\"!lb.dataSource.resultsLoading\"\n class=\"aw-search__total\">\n <span class=\"aw-search__total-number\">{{ lb.dataSource.totalCount }}</span>&nbsp;\n <span class=\"aw-search__total-title\">{{ lb.dataSource.resultsTitle }}</span>\n </h3>\n </div>\n <div class=\"aw-search__results-header-right\">\n <label class=\"aw-search__results-select-orderby-label\"\n for=\"aw-search__results-select-orderby\">{{ lb.dataSource.orderByLabel }}</label>\n <select (change)=\"lb.eventHandler.emitInner('orderbychange', $event.target.value)\"\n id=\"aw-search__results-select-orderby\">\n <option *ngFor=\"let option of lb.dataSource.orderByOptions\"\n [value]=\"option.value\"\n [selected]=\"option.selected\"\n [hidden]=\"option.type === 'score' && lb.dataSource.isSearchingText.value === false\">\n {{ option.label }}</option>\n </select>\n </div>\n </div>\n <!-- Search details -->\n <div *ngIf=\"lb.dataSource.resultsLoading\"\n class=\"aw-search__results-wrapper-loading\">\n <n7-content-placeholder *ngFor=\"let n of [0,1,2,3,4,5,6,7,8,9]\"\n [data]=\"{\n blocks: [\n { classes: 'search-result-placeholder-title' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' }\n ]\n }\"></n7-content-placeholder>\n </div>\n <div *ngIf=\"!lb.dataSource.resultsLoading\"\n class=\"aw-search__results-wrapper\">\n <div class=\"aw-item-preview-list\">\n <ng-container *ngFor=\"let preview of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews\">\n <div class=\"aw-item-preview-wrapper\">\n <n7-smart-breadcrumbs [data]=\"preview.breadcrumbs\">\n </n7-smart-breadcrumbs>\n <n7-item-preview [data]=\"preview\"\n [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n </div>\n </ng-container>\n </div>\n <ng-container *ngIf=\"lb.dataSource.totalCount == 0\">\n <div class=\"aw-search__fallback\">\n <p class=\"aw-search__fallback-string\">\n {{ lb.dataSource.fallback }}\n </p>\n <button [disabled]=\"!lb.dataSource.resetButtonEnabled\"\n class=\"n7-btn aw-search__fallback-button\"\n (click)=\"lb.eventHandler.emitInner('searchreset', {})\">\n Resetta la ricerca\n </button>\n </div>\n </ng-container>\n <n7-smart-pagination *ngIf=\"lb.dataSource.totalCount > 10\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n </div>\n </div>\n </div>\n</div>\n","import { InnerTitleData } from '@net7/components';\nimport { LayoutDataSource } from '@net7/core';\nimport { isNull } from 'lodash';\nimport { BehaviorSubject } from 'rxjs';\nimport { helpers } from '@net7/boilerplate-common';\nimport { getHeadTitle } from '../../helpers/title.helper';\n\ntype LayoutState = 'LOADING' | 'EMPTY' | 'SUCCESS';\n\nexport class AwTimelineLayoutDS extends LayoutDataSource {\n protected configuration: any;\n\n protected mainState: any;\n\n protected titleService: any;\n\n public configId = 'timeline-layout';\n\n public options: any;\n\n public pageTitle: string;\n\n private communication: any;\n\n private pageSize = 10;\n\n public state$: BehaviorSubject<LayoutState> = new BehaviorSubject('EMPTY');\n\n private currentPage = 1;\n\n private relatedItems: any[];\n\n public total: number;\n\n private currentId: string;\n\n onInit({\n configuration, mainState, options, titleService, communication,\n }) {\n this.communication = communication;\n this.configuration = configuration;\n this.mainState = mainState;\n this.options = options;\n this.titleService = titleService;\n\n // head title\n this.setHeadTitle();\n this.setPageTitle();\n\n // navigation update\n this.mainState.updateCustom('currentNav', 'timeline');\n\n this.communication.request$('getEventObjects', {\n params: {},\n onError: (err) => {\n console.warn(err);\n }\n }).subscribe((response) => {\n this.one('aw-timeline').updateOptions({\n configuration: this.configuration.get(this.configId)?.timeline\n });\n this.one('aw-timeline').update(response);\n });\n }\n\n onTimelineClick({ id, label, dateText }) {\n if (isNull(id)) {\n this.currentId = null;\n this.clearResults();\n } else {\n // loading results\n this.state$.next('LOADING');\n this.communication.request$('getEntityRelatedItems', {\n params: {\n selectedEntitiesIds: [id]\n }\n }).subscribe(({ itemsPagination }) => {\n // clear loading\n this.state$.next('SUCCESS');\n\n this.relatedItems = itemsPagination.items;\n this.total = this.relatedItems.length;\n let text = `<strong>${this.total}</strong> Risultati collegati a<br><span class=\"aw-multimedia__results-title-big\">${label}</span>`;\n if (this.total === 1) {\n text = `<strong>${this.total}</strong> Risultato collegato a<br><span class=\"aw-multimedia__results-title-big\">${label}</span>`;\n }\n\n const titleData: InnerTitleData = {\n title: {\n main: { text },\n secondary: dateText ? {\n text: dateText\n } : null\n },\n actions: {\n buttons: [{\n anchor: {\n href: `${this.configuration.get('paths').entitaBasePath}/${id}/${helpers.slugify(label)}`,\n },\n text: 'Vedi Entità'\n }]\n }\n };\n this.one('aw-scheda-inner-title').update(titleData);\n\n // update items\n this.updateItems();\n\n // update pagination\n this.updatePagination();\n });\n }\n }\n\n private clearResults() {\n if (!this.relatedItems) {\n return;\n }\n // reset\n this.state$.next('EMPTY');\n this.pageSize = 10;\n this.currentPage = 1;\n this.relatedItems = [];\n this.total = 0;\n this.one('aw-scheda-inner-title').update({\n title: {\n main: { text: '' }\n }\n });\n this.one('aw-linked-objects').update({ items: [] });\n }\n\n onPaginationChange({ value }) {\n this.pageSize = +value;\n this.updateItems();\n this.updatePagination();\n }\n\n onPaginationClick({ page }) {\n if (typeof page === 'number' && page !== this.currentPage) {\n this.currentPage = page;\n this.updateItems();\n this.updatePagination();\n }\n }\n\n private updateItems() {\n this.one('aw-linked-objects').updateOptions({\n context: 'map',\n config: this.configuration,\n page: this.currentPage,\n pagination: true,\n size: this.pageSize,\n });\n this.one('aw-linked-objects').update({ items: this.relatedItems });\n }\n\n private updatePagination() {\n this.one('n7-smart-pagination').updateOptions({\n mode: 'payload'\n });\n this.one('n7-smart-pagination').update({\n totalPages: Math.ceil(this.total / this.pageSize),\n currentPage: this.currentPage,\n pageLimit: 5,\n sizes: {\n label: 'Numero di risultati',\n list: [10, 25, 50],\n active: this.pageSize,\n },\n });\n }\n\n private setHeadTitle() {\n this.mainState.update('headTitle', getHeadTitle({\n name: this.configuration.get('customer'),\n pageName: this.configuration.get(this.configId)?.pageName,\n pageDefault: 'Timeline',\n }));\n }\n\n private setPageTitle() {\n const title = this.configuration.get(this.configId)?.pageName;\n this.pageTitle = (title) || 'Gli eventi dell\\'archivio';\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\n\nexport class AwTimelineLayoutEH extends EventHandler {\n private destroyed$: Subject<void> = new Subject();\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-timeline-layout.init':\n this.dataSource.onInit(payload);\n this.emitOuter('init', payload);\n // scroll top\n window.scrollTo(0, 0);\n break;\n\n case 'aw-timeline-layout.destroy':\n this.destroyed$.next();\n break;\n\n default:\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-timeline.click':\n this.dataSource.onTimelineClick(payload);\n break;\n case 'n7-smart-pagination.change':\n this.dataSource.onPaginationChange(payload);\n break;\n case 'n7-smart-pagination.click':\n this.dataSource.onPaginationClick(payload);\n break;\n default:\n break;\n }\n });\n }\n}\n","import { SmartPaginationDS, SmartPaginationEH } from '@net7/boilerplate-common';\nimport { AwTimelineLayoutDS } from './timeline-layout.ds';\nimport { AwTimelineLayoutEH } from './timeline-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const AwTimelineLayoutConfig = {\n layoutId: 'aw-timeline-layout',\n widgets: [ // array of components of this layout\n { id: 'aw-timeline' },\n { id: 'aw-scheda-inner-title' },\n { id: 'aw-linked-objects' },\n {\n id: 'n7-smart-pagination',\n dataSource: SmartPaginationDS,\n eventHandler: SmartPaginationEH,\n }\n ],\n layoutDS: AwTimelineLayoutDS,\n layoutEH: AwTimelineLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport {\n AbstractLayout,\n ConfigurationService,\n LayoutsConfigurationService,\n MainStateService,\n CommunicationService\n} from '@net7/boilerplate-common';\nimport { AwTimelineLayoutConfig as config } from './timeline-layout.config';\n\n@Component({\n selector: 'aw-timeline-layout',\n templateUrl: './timeline-layout.html',\n})\nexport class AwTimelineLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n constructor(\n private configuration: ConfigurationService,\n private layoutsConfiguration: LayoutsConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n private titleService: Title,\n ) {\n super(layoutsConfiguration.get('AwTimelineLayoutConfig') || config);\n }\n\n /*\n Optional variables that can be accessed from the layout's logic.\n If removed, they must also be removed from the layout's DataSource file,\n and from this file imports.\n */\n protected initPayload() {\n return {\n configuration: this.configuration,\n mainState: this.mainState,\n titleService: this.titleService,\n communication: this.communication,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"aw-multimedia\" id=\"timeline-layout\" *ngIf=\"lb.dataSource\">\n <n7-inner-title [data]=\"{\n title: {\n main: {\n text: lb.dataSource.pageTitle\n }\n }\n }\">\n </n7-inner-title>\n \n <!-- Timeline -->\n <div class=\"aw-multimedia__timeline\">\n <n7-timeline [data]=\"lb.widgets['aw-timeline'].ds.out$ | async\"></n7-timeline>\n \n <div id=\"timelinecontrols\" class=\"aw-multimedia__timeline-controls\" *ngIf=\"lb.widgets['aw-timeline'].ds.timelineControlsVisible\">\n <button class=\"n7-btn aw-multimedia__timeline-control\" (click)=\"lb.eventHandler.emitOuter('zoomin', {})\">\n <span class=\"n7-icon-search-plus\"></span>\n </button>\n\n <button class=\"n7-btn aw-multimedia__timeline-control\" (click)=\"lb.eventHandler.emitOuter('zoomout', {})\">\n <span class=\"n7-icon-search-minus\"></span>\n </button>\n </div>\n\n </div>\n <!-- END // Timeline -->\n \n <!-- RESULTS -->\n <div class=\"aw-multimedia__results\">\n\n <div class=\"aw-multimedia__loader\" *ngIf=\"(lb.dataSource.state$ | async) === 'LOADING'\">\n <ng-container>\n <n7-loader></n7-loader>\n </ng-container>\n </div>\n\n <div class=\"aw-multimedia__empty\" *ngIf=\"(lb.dataSource.state$ | async) === 'EMPTY'\">\n <ng-container>\n <p class=\"aw-multimedia__empty-text\">Clicca su un evento della timeline per vedere tutti gli oggetti culturali collegati.</p>\n </ng-container>\n </div>\n \n <ng-container *ngIf=\"(lb.dataSource.state$ | async) === 'SUCCESS'\">\n <div class=\"aw-multimedia__results-title\">\n <n7-inner-title [data]=\"lb.widgets['aw-scheda-inner-title'].ds.out$ | async\">\n </n7-inner-title>\n </div>\n <div class=\"aw-multimedia__results-wrapper\">\n <div>\n <div class=\"aw-item-preview-wrapper\" *ngFor=\"let preview of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews\">\n <n7-smart-breadcrumbs [data]=\"preview.breadcrumbs\">\n </n7-smart-breadcrumbs>\n <n7-item-preview [data]=\"preview\" [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n </div>\n </div>\n <n7-smart-pagination *ngIf=\"lb.dataSource.total > 0\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n </div>\n </ng-container>\n </div>\n</div>","const getTreeBranches = (depth, hasImage = true) => {\n let branchConfig = `\n label\n id\n document_type\n document_classification\n `;\n if (hasImage) {\n branchConfig = `\n label\n id\n img\n document_type\n document_classification\n `;\n }\n const output = [];\n let i;\n let j;\n // open config\n for (i = 0; i < depth; i += 1) {\n output.push(\n i === 0\n ? branchConfig\n : `branches {${branchConfig}`\n );\n }\n // close config\n for (j = 0; j < depth; j += 1) {\n output.push(j === 0 ? '' : '}');\n }\n\n return output.join('');\n};\n\nexport default (treeDepth) => ({\n getLastPosts: {\n queryName: 'getLastPosts',\n queryBody: `\n {\n getLastPosts(__PARAMS__) {\n id\n title\n }\n }\n `,\n },\n getSlider: {\n queryName: 'getSlider',\n queryBody: ` {\n getSlider(__PARAMS__) {\n pretext\n title\n text\n background {\n type\n value\n }\n ctaLabel\n ctaPayload\n metadata {\n key\n value\n }\n }\n }`\n },\n getTreeLite: {\n queryName: 'getTreeOfItems',\n queryBody: `\n {\n getTreeOfItems(__PARAMS__){\n ${getTreeBranches(treeDepth, false)}\n }\n }\n `,\n },\n getTree: {\n queryName: 'getTreeOfItems',\n queryBody: `\n {\n getTreeOfItems(__PARAMS__){\n ${getTreeBranches(treeDepth)}\n }\n }\n `,\n },\n globalFilter: {\n queryName: 'globalFilter',\n queryBody: `{\n globalFilter(__PARAMS__){\n entitiesData {\n entity {\n id\n label\n typeOfEntity\n } count\n }\n typeOfEntityData {\n type\n count\n }\n itemsPagination {\n totalCount\n items {\n thumbnail\n item {\n id\n label\n fields\n {\n ...\n on KeyValueField {\n key\n value\n }\n }\n breadcrumbs {\n label\n link\n }\n relatedTypesOfEntity {\n type\n count\n }\n }\n }\n }\n }\n }`,\n },\n getEntityRelatedItems: {\n queryName: 'globalFilter',\n queryBody: `{\n globalFilter(__PARAMS__){\n itemsPagination {\n totalCount\n items {\n thumbnail\n item {\n id\n label\n fields\n {\n ...\n on KeyValueField {\n key\n value\n }\n }\n breadcrumbs {\n label\n link\n }\n relatedTypesOfEntity {\n type\n count\n }\n }\n }\n }\n }\n }`,\n },\n getEntityDetails: {\n queryName: 'getEntity',\n queryBody: `{\n getEntity(__PARAMS__){\n relatedItemsTotalCount,\n relatedLaTotalCount: relatedAlTotalCount,\n overviewTab\n label\n id\n typeOfEntity\n relatedLa: relatedAl {\n thumbnail\n relation\n qualification\n item {\n label\n id\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n }\n }\n }\n fields {\n ... on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ... on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ... on KeyValueField {\n key\n value\n }\n }\n }\n }\n }\n }\n extraTab\n wikiTab {\n text\n url\n }\n relatedItems {\n thumbnail\n relation\n qualification\n item {\n label\n id\n fields\n {\n ...\n on KeyValueField {\n key\n value\n }\n }\n breadcrumbs {\n label\n link\n }\n }\n relatedTypesOfEntity {\n type\n count\n }\n }\n relatedEntities {\n entity {\n id\n label\n typeOfEntity\n relation\n qualification\n }\n count\n }\n }\n }\n `,\n },\n getItem: {\n queryName: 'getItem',\n queryBody: `{\n getItem(__PARAMS__) {\n id\n label\n icon\n title\n subTitle\n image\n text\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n }\n }\n }\n relatedEntities {\n count\n entity{\n id\n label\n typeOfEntity\n relation\n qualification\n }\n }\n relatedItems {\n thumbnail\n item {\n label\n id\n relatedTypesOfEntity {\n type\n count\n }\n }\n }\n breadcrumbs {\n label\n link\n }\n }\n }`,\n },\n getNodeChildren: {\n queryName: 'getNodeChildren',\n queryBody: `{\n getNodeChildren(__PARAMS__) {\n items {\n id\n label\n icon\n img\n document_type\n document_classification\n breadcrumbs {\n label\n link\n }\n }\n totalCount\n }\n }`\n },\n getNode: {\n queryName: 'getNode',\n queryBody: `{\n getNode(__PARAMS__) {\n ... on Item {\n id\n label\n title\n subTitle\n image\n prev {\n id\n label\n }\n next {\n id\n label\n }\n lastAl {\n id\n label\n }\n digitalObjects {\n label\n type\n url\n order\n items { \n order \n label\n url \n }\n }\n text\n document_type\n document_classification\n fields {\n ... on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ... on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ... on KeyValueField {\n key\n value\n }\n }\n }\n }\n }\n }\n relatedEntities {\n count\n entity{\n id\n label\n typeOfEntity\n relation\n qualification\n }\n }\n relatedItems {\n thumbnail\n item {\n label\n id\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n }\n }\n }\n relatedTypesOfEntity {\n type\n count\n }\n }\n }\n breadcrumbs {\n label\n link\n }\n }\n ... on Node {\n id\n label\n img\n document_type\n document_classification\n fields {\n ... on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ... on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ... on KeyValueField {\n key\n value\n }\n }\n }\n }\n }\n }\n relatedEntities {\n count\n entity {\n id\n label\n typeOfEntity\n relation\n qualification\n }\n }\n breadcrumbs {\n label\n link\n }\n }\n }\n }`,\n },\n autoComplete: {\n queryName: 'autoComplete',\n queryBody: `{\n autoComplete(__PARAMS__){\n totalCount\n results {\n ... on EntityCountData {\n count\n entity {\n id\n label\n typeOfEntity\n fields {\n ... on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ... on KeyValueField {\n key\n value\n }\n }\n }\n }\n }\n }\n ... on ItemListing {\n item {\n id\n label\n document_type\n fields {\n ... on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ... on KeyValueField {\n key\n value\n }\n }\n }\n }\n }\n }\n }\n }\n }`,\n },\n search: {\n queryName: 'search',\n queryBody: `{\n search(__PARAMS__){\n totalCount\n results {\n order{\n type\n key\n direction\n }\n fields\n {\n id\n highlight\n limit\n }\n items {\n ... on Entity {\n id\n label\n typeOfEntity\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n }\n }\n }\n relatedEntities {\n count\n entity{\n id\n label\n typeOfEntity\n relation\n qualification\n }\n }\n relatedItems {\n thumbnail\n item {\n label\n id\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n }\n }\n }\n }\n relatedTypesOfEntity {\n type\n count\n }\n }\n }\n ... on Item {\n id\n label\n icon\n title\n subTitle\n image\n text\n relatedTypesOfEntity {\n type\n count\n }\n breadcrumbs {\n label\n link\n }\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n }\n }\n }\n }\n }\n }\n }\n }`,\n },\n facets: {\n queryName: 'search',\n queryBody: `{\n search(__PARAMS__){\n facets {\n id\n type\n operator\n limit\n order\n totalCount\n data {\n label\n value\n counter\n searchData {\n key\n value\n }\n }\n }\n }\n }`,\n },\n getMissingBubble: {\n queryName: 'getEntity',\n queryBody: `{\n getEntity(__PARAMS__){\n label\n id\n typeOfEntity\n }\n }`,\n },\n getMapObjects: {\n queryName: 'getMapObjects',\n queryBody: `{\n getMapObjects{\n lat\n lon\n item {\n ...on Item {\n id\n label\n }\n ...on Entity {\n id\n label\n }\n }\n }\n }`,\n },\n getEventObjects: {\n queryName: 'getEventObjects',\n queryBody: `{\n getEventObjects{\n id\n start\n end\n label\n item {\n ... on Entity {\n id\n label\n }\n }\n }\n }`,\n },\n getCollection: {\n queryName: 'getCollection',\n queryBody: `{\n getCollection(__PARAMS__) {\n title\n text\n total\n items {\n title\n content\n background\n image\n url\n a4vId\n type\n classification\n }\n }\n }`\n }\n});\n","// MODULES\nimport { NgModule, ApplicationInitStatus } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { RouterModule } from '@angular/router';\nimport { DvComponentsLibModule } from '@net7/components';\nimport { N7BoilerplateCommonModule, ConfigurationService } from '@net7/boilerplate-common';\nimport { NgxExtendedPdfViewerModule } from 'ngx-extended-pdf-viewer';\n// LAYOUTS\nimport { AwCollectionLayoutComponent } from './layouts/collection-layout/collection-layout';\nimport { AwEntitaLayoutComponent } from './layouts/entita-layout/entita-layout';\nimport { AwGalleryLayoutComponent } from './layouts/gallery-layout/gallery-layout';\nimport { AwHomeLayoutComponent } from './layouts/home-layout/home-layout';\nimport { AwMapLayoutComponent } from './layouts/map-layout/map-layout';\nimport { AwSchedaLayoutComponent } from './layouts/scheda-layout/scheda-layout';\nimport { AwSearchLayoutComponent } from './layouts/search-layout/search-layout';\nimport { AwTimelineLayoutComponent } from './layouts/timeline-layout/timeline-layout';\n// COMPONENTS\nimport { AwFacetsWrapperComponent } from './components/aw-facets-wrapper/aw-facets-wrapper';\nimport { BubbleChartWrapperComponent } from './components/bubble-chart-wrapper/bubble-chart-wrapper';\nimport { ChartTippyComponent } from './components/chart-tippy/chart-tippy';\nimport { PdfViewerComponent } from './components/pdf-viewer/pdf-viewer';\nimport { SchedaDropdownComponent } from './components/scheda-dropdown/scheda-dropdown';\nimport { SmartBreadcrumbsComponent } from './components/smart-breadcrumbs/smart-breadcrumbs';\nimport { ExtendedTreeComponent } from './components/extended-tree/extended-tree';\nimport { SchedaImageNavigatorComponent } from './components/scheda-image-navigator/scheda-image-navigator';\nimport { SchedaSearchComponent } from './components/scheda-search/scheda-search';\nimport { GalleryBreadcrumbsTooltipComponent } from './components/gallery-breadcrumbs-tooltip/gallery-breadcrumbs-tooltip';\n// LIBS\n\nimport apolloConfig from './config/apollo.config';\n\nconst COMPONENTS = [\n AwCollectionLayoutComponent,\n AwEntitaLayoutComponent,\n AwFacetsWrapperComponent,\n AwGalleryLayoutComponent,\n AwHomeLayoutComponent,\n AwMapLayoutComponent,\n AwSchedaLayoutComponent,\n AwSearchLayoutComponent,\n AwTimelineLayoutComponent,\n BubbleChartWrapperComponent,\n ChartTippyComponent,\n PdfViewerComponent,\n SchedaDropdownComponent,\n SmartBreadcrumbsComponent,\n ExtendedTreeComponent,\n SchedaImageNavigatorComponent,\n SchedaSearchComponent,\n GalleryBreadcrumbsTooltipComponent,\n];\n\n@NgModule({\n declarations: COMPONENTS,\n imports: [\n CommonModule,\n RouterModule,\n DvComponentsLibModule,\n N7BoilerplateCommonModule,\n NgxExtendedPdfViewerModule\n ],\n exports: COMPONENTS\n})\nexport class N7BoilerplateAriannaModule {\n constructor(\n initStatus: ApplicationInitStatus,\n config: ConfigurationService\n ) {\n // add apollo config on app init\n // note: this is just for arianna* sites!\n initStatus.donePromise.then(() => {\n const communication = config.get('communication');\n const { defaultProvider } = communication;\n communication.providers[defaultProvider].config = apolloConfig;\n config.set('communication', communication);\n });\n }\n}\n","// home layout\nexport * from './home-layout/home-layout';\nexport * from './home-layout/home-layout.ds';\nexport * from './home-layout/home-layout.eh';\nexport * from './home-layout/home-layout.config';\n\n// entita layout\nexport * from './entita-layout/entita-layout';\nexport * from './entita-layout/entita-layout.ds';\nexport * from './entita-layout/entita-layout.eh';\nexport * from './entita-layout/entita-layout.config';\n\n// scheda layout\nexport * from './scheda-layout/scheda-layout';\nexport * from './scheda-layout/scheda-layout.ds';\nexport * from './scheda-layout/scheda-layout.eh';\nexport * from './scheda-layout/scheda-layout.config';\n\n// search layout\nexport * from './search-layout/search-layout';\nexport * from './search-layout/search-layout.ds';\nexport * from './search-layout/search-layout.eh';\nexport * from './search-layout/search-layout.config';\n\n// gallery layout\nexport * from './gallery-layout/gallery-layout';\nexport * from './gallery-layout/gallery-layout.ds';\nexport * from './gallery-layout/gallery-layout.eh';\nexport * from './gallery-layout/gallery-layout.config';\n\n// map layout\nexport * from './map-layout/map-layout';\nexport * from './map-layout/map-layout.ds';\nexport * from './map-layout/map-layout.eh';\nexport * from './map-layout/map-layout.config';\n\n// timeline layout\nexport * from './timeline-layout/timeline-layout';\nexport * from './timeline-layout/timeline-layout.ds';\nexport * from './timeline-layout/timeline-layout.eh';\nexport * from './timeline-layout/timeline-layout.config';\n\n// collection layout\nexport * from './collection-layout/collection-layout';\nexport * from './collection-layout/collection-layout.ds';\nexport * from './collection-layout/collection-layout.eh';\nexport * from './collection-layout/collection-layout.config';\n","/*\n * Public API Surface of n7-boilerplate-arianna\n */\n\n// arianna web\nexport * from './lib/n7-boilerplate-arianna.module';\nexport * from './lib/config-types';\nexport * from './lib/data-sources';\nexport * from './lib/event-handlers';\nexport * from './lib/layouts';\nexport * from './lib/components';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_get","PAGE_LIMIT","merge","_max","_min","config","i2","i3","i1","i4","i5","i6.SmartBreadcrumbsComponent","_isEmpty","facetsConfig","i2.AwSearchService","i6.AwFacetsWrapperComponent","i7.SmartBreadcrumbsComponent","i8.GalleryBreadcrumbsTooltipComponent","i5.BubbleChartWrapperComponent","i6.ChartTippyComponent","i5.SmartBreadcrumbsComponent","i3.SmartBreadcrumbsComponent","i6.PdfViewerComponent","i7.SchedaDropdownComponent","i8.SmartBreadcrumbsComponent","i9.ExtendedTreeComponent","i10.SchedaImageNavigatorComponent","i11.SchedaSearchComponent"],"mappings":"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"}
1
+ {"version":3,"file":"net7-boilerplate-arianna.mjs","sources":["../../../projects/n7-boilerplate-arianna/src/lib/data-sources/linked-objects.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/autocomplete-wrapper.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/bubble-chart.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/chart-tippy.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/carousel.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/hero.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/table.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/home-hero-patrimonio.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/home-facets-wrapper.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/home-item-tags-wrapper.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/home-autocomplete.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/entita-nav.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/entita-metadata-viewer.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/related-entities.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-breadcrumbs.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-dropdown.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/sidebar-header.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-image.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-image-iiif.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-inner-title.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-metadata.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-pdf.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/tree.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/helpers/node.helper.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/extended-tree.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-image-navigator.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/scheda-search.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/search-layout-tabs.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/search/entity-links.helper.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/aw-facets-wrapper.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/gallery-results.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/map.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/timeline.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/data-sources/index.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/hero.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/home-facets-wrapper.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/home-hero-patrimonio.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/home-item-tags-wrapper.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/home-autocomplete.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/entita-nav.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/scheda-breadcrumbs.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/sidebar-header.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/tree.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/scheda-dropdown.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/scheda-pdf.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/extended-tree.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/scheda-image-navigator.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/scheda-search.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/search-layout-tabs.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/aw-facets-wrapper.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/gallery-results.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/map.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/timeline.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/linked-objects.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/autocomplete-wrapper.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/bubble-chart.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/table.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/chart-tippy.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/event-handlers/index.ts","../../../projects/n7-boilerplate-arianna/src/lib/helpers/title.helper.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/collection-layout/collection-layout.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/collection-layout/collection-layout.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/collection-layout/collection-layout.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/collection-layout/collection-layout.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/collection-layout/collection-layout.html","../../../projects/n7-boilerplate-arianna/src/lib/helpers/metadata.helper.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/entita-layout/entita-layout.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/entita-layout/entita-layout.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/entita-layout/entita-layout.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/smart-breadcrumbs/smart-breadcrumbs.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/smart-breadcrumbs/smart-breadcrumbs.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/entita-layout/entita-layout.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/entita-layout/entita-layout.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/search-layout/search-facets.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/search/aw-facet-inputs/aw-facet-input.ts","../../../projects/n7-boilerplate-arianna/src/lib/search/aw-facet-inputs/aw-facet-input-checkbox.ts","../../../projects/n7-boilerplate-arianna/src/lib/search/aw-facet-inputs/aw-facet-input-link.ts","../../../projects/n7-boilerplate-arianna/src/lib/search/aw-facet-inputs/aw-facet-input-select.ts","../../../projects/n7-boilerplate-arianna/src/lib/search/aw-facet-inputs/aw-facet-input-text.ts","../../../projects/n7-boilerplate-arianna/src/lib/search/aw-search.model.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/search-layout/search-layout.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/gallery-layout/gallery-facets.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/gallery-layout/gallery-layout.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/search-layout/search-layout.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/gallery-layout/gallery-layout.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/gallery-layout/gallery-layout.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/search/aw-search.service.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/aw-facets-wrapper/aw-facets-wrapper.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/aw-facets-wrapper/aw-facets-wrapper.html","../../../projects/n7-boilerplate-arianna/src/lib/components/gallery-breadcrumbs-tooltip/gallery-breadcrumbs-tooltip.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/gallery-breadcrumbs-tooltip/gallery-breadcrumbs-tooltip.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/gallery-layout/gallery-layout.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/gallery-layout/gallery-layout.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/home-layout/home-layout.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/home-layout/home-layout.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/home-layout/home-layout.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/bubble-chart-wrapper/bubble-chart-wrapper.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/bubble-chart-wrapper/bubble-chart-wrapper.html","../../../projects/n7-boilerplate-arianna/src/lib/components/chart-tippy/chart-tippy.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/chart-tippy/chart-tippy.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/home-layout/home-layout.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/home-layout/home-layout.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/map-layout/map-layout.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/map-layout/map-layout.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/map-layout/map-layout.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/map-layout/map-layout.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/map-layout/map-layout.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/scheda-layout/scheda-layout.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/scheda-layout/scheda-layout.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/scheda-layout/scheda-layout.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/pdf-viewer/pdf-viewer.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/pdf-viewer/pdf-viewer.html","../../../projects/n7-boilerplate-arianna/src/lib/components/scheda-dropdown/scheda-dropdown.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/scheda-dropdown/scheda-dropdown.html","../../../projects/n7-boilerplate-arianna/src/lib/components/extended-tree/extended-tree.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/extended-tree/extended-tree.html","../../../projects/n7-boilerplate-arianna/src/lib/components/scheda-image-navigator/scheda-image-navigator.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/scheda-image-navigator/scheda-image-navigator.html","../../../projects/n7-boilerplate-arianna/src/lib/components/scheda-search/scheda-search.ts","../../../projects/n7-boilerplate-arianna/src/lib/components/scheda-search/scheda-search.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/scheda-layout/scheda-layout.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/scheda-layout/scheda-layout.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/search-layout/search-layout.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/search-layout/search-layout.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/search-layout/search-layout.html","../../../projects/n7-boilerplate-arianna/src/lib/layouts/timeline-layout/timeline-layout.ds.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/timeline-layout/timeline-layout.eh.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/timeline-layout/timeline-layout.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/timeline-layout/timeline-layout.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/timeline-layout/timeline-layout.html","../../../projects/n7-boilerplate-arianna/src/lib/config/apollo.config.ts","../../../projects/n7-boilerplate-arianna/src/lib/n7-boilerplate-arianna.module.ts","../../../projects/n7-boilerplate-arianna/src/lib/layouts/index.ts","../../../projects/n7-boilerplate-arianna/src/public-api.ts","../../../projects/n7-boilerplate-arianna/src/net7-boilerplate-arianna.ts"],"sourcesContent":["import { DataSource } from '@net7/core';\nimport { get as _get } from 'lodash'; // used for cherry-picking object keys from app-config.json\nimport { helpers } from '@net7/boilerplate-common';\n\nexport class AwLinkedObjectsDS extends DataSource {\n public currentPage: number;\n\n public totalPages: number;\n\n public totalObjects: number;\n\n public pageSize: number;\n\n public context: string;\n\n public loadedData: any;\n\n public loadingData = false;\n\n public paths: any; // use dynamic object paths from config\n\n protected transform(data) {\n this.paths = this.options.config.get('item-preview');\n this.pageSize = this.options.size;\n this.totalObjects = data.totalCount;\n this.currentPage = this.options.page ? +this.options.page : 1;\n if (this.options.dynamicPagination && this.options.dynamicPagination.total) {\n this.totalPages = Math.ceil(this.options.dynamicPagination.total / this.pageSize);\n } else if (data.items) {\n this.totalPages = Math.ceil(data.items.length / this.pageSize);\n } else if (data.relatedItems) {\n this.totalPages = Math.ceil(data.relatedItems.length / this.pageSize);\n }\n this.context = this.options.context;\n this.loadedData = this.unpackData(data);\n this.checkForMore(); // checks if <Show More> button should be enabled\n this.loadedData.loaderData = {};\n return this.loadedData;\n }\n\n public checkForMore = (force?: boolean) => {\n /*\n Checks if it is possible to load more item previews.\n Can receive a boolean argument to force the button to be\n enabled or disabled. (Used while data is loading)\n */\n if (!this.loadedData.actions) {\n // if not using actions, don't check\n return;\n }\n if (typeof force !== 'undefined') {\n this.loadedData.actions[1].disabled = !force;\n return;\n }\n if (this.loadedData.result.length >= this.totalObjects) {\n this.loadedData.actions[1].disabled = true;\n } else {\n this.loadedData.actions[1].disabled = false;\n }\n };\n\n public handleIncomingData = (incomingData) => {\n /*\n Called by infinite scroller, adds the incoming\n data to the linked objects component.\n */\n this.currentPage += 1;\n const newData: any = this.unpackData(incomingData.itemsPagination);\n this.loadedData.result = this.loadedData.result.concat(newData.result);\n this.checkForMore();\n this.loadedData.isLoading = false;\n };\n\n /**\n * Dynamically returns the data object for each HTML component\n * data: {\n * previews: [ breadcrumbs: { items[] }, classes, image, metadata, payload, title ],\n * pagination: { first, last, links, next, prev, select }\n * }\n */\n private unpackData = (data) => {\n const\n { config } = this.options; // app-config.json\n const paths = config.get('item-preview'); // item preview dynamic paths\n const { totalCount } = data; // total amount of items available on backend\n const page = this.currentPage; // current page (if using pagination)\n const { context } = this; // parent layout name\n const size = this.pageSize; // items per page (if using pagination)\n const labels = config.get('labels');\n const { dynamicPagination } = this.options;\n const keys = config ? config.get('config-keys') : {};\n let\n lengthLimit: null;\n let resultsLimit: null;\n let d = data.items ? data.items : data.relatedItems; // items to iterate over\n if (config) {\n // dynamic search for max-item-length\n if (config.get(`${context}-layout`)) {\n lengthLimit = config.get(`${context}-layout`)['max-item-length'];\n resultsLimit = config.get(`${context}-layout`)['results-limit'];\n }\n }\n // resize data if necessary\n if (!dynamicPagination && size && page && d.length > size) {\n d = d.slice(page * size - size, page * size);\n } else if (size) {\n d = d.slice(0, size);\n }\n\n const result = [];\n const enabledKeys = paths.metadata.info.selection.map((info) => info.key);\n d.forEach((el) => {\n const itemData = el.item ? el.item : el;\n\n const infoData = _get(el, paths.metadata.info.data, itemData.fields);\n const toeData = _get(el, paths.metadata.toe.data, itemData.relatedTypesOfEntity);\n const breadcrumbs = _get(el, paths.metadata.breadcrumbs.data, itemData.breadcrumbs);\n let infoDataItems = infoData\n ? infoData.filter((info) => enabledKeys.indexOf(info.key) !== -1)\n : [];\n\n // order metadata\n infoDataItems = infoDataItems.map((info) => ({\n ...info,\n order: enabledKeys.indexOf(info.key)\n }));\n infoDataItems.sort((a, b) => a.order - b.order);\n\n if (['entita', 'search', 'gallery'].includes(context)) {\n if (itemData.typeOfEntity && itemData.typeOfEntity !== '') {\n infoDataItems.push({ key: 'Tipo di entità', value: keys[itemData.typeOfEntity]['singular-label'] });\n }\n }\n let classes = ['entita', 'search', 'oggetti-collegati'].includes(context) ? 'is-fullwidth' : '';\n classes += itemData.typeOfEntity ? ` is-${config.get('config-keys')[itemData.typeOfEntity]['class-name']}` : ' is-oggetto-culturale';\n\n // gallery classes\n if (context === 'gallery') {\n classes += ' is-vertical has-image';\n }\n\n // consider the lenght of <em> tags to exclude from count\n const highlights = _get(el, paths.title, itemData.label).match(/<em>/g) ? _get(el, paths.title, itemData.label).match(/<em>/g).length * 9 : 0;\n\n const itemTitle = +paths.title.maxLength\n && _get(el, paths.title, itemData.label).length > +paths.title.maxLength + highlights\n ? `${_get(el, paths.title, itemData.label).slice(0, +paths.title.maxLength + highlights)}…`\n : _get(el, paths.title, itemData.label);\n const itemId = _get(el, paths.payload, itemData.id);\n const itemType = itemData.typeOfEntity;\n const itemHref = [\n itemType ? config.get('paths').entitaBasePath : config.get('paths').schedaBasePath,\n itemId,\n helpers.slugify(itemTitle),\n ].join('/');\n let text;\n if (!paths.text) {\n text = null;\n } else if (\n +paths.text.maxLength\n && _get(el, paths.text.data, itemData.text).length > +paths.text.maxLength\n ) {\n text = `${_get(el, paths.text.data, itemData.text).slice(0, +paths.text.maxLength)}…`;\n } else {\n text = _get(el, paths.text.data, itemData.text);\n }\n const item = {\n text,\n classes,\n breadcrumbs,\n image: _get(el, paths.image, itemData.image),\n title: itemTitle,\n anchor: {\n href: itemHref,\n target: ['gallery', 'search'].includes(context) ? '_blank' : '_self'\n },\n relation: { key: el.relationName, value: el.relation },\n qualification: { key: el.relationName || itemTitle, value: el.qualification || null },\n metadata: infoDataItems.length || toeData ? [] : null,\n };\n // metadata\n if (infoDataItems.length) {\n item.metadata.push({\n classes: 'aw-item-preview_metadata',\n items: infoDataItems.map((infoDItem) => ({\n label: helpers.prettifySnakeCase(infoDItem.key, labels[infoDItem.key]),\n value: infoDItem.value,\n })),\n });\n }\n if (toeData) {\n item.metadata.push({\n classes: 'aw-item-preview-entities',\n items: toeData.map((toe) => ({ // persona: 6, Organizz: 12, Luoghi: 2, Concetti: 32\n value: _get(toe, paths.metadata.toe.value, toe.count),\n // icon: 'n7-icon-bell' // TODO: link icon to config key\n icon: keys[_get(toe, paths.metadata.toe.icon, toe.type)]\n ? keys[_get(toe, paths.metadata.toe.icon, toe.type)].icon\n : '',\n classes: `color-${keys[_get(toe, paths.metadata.toe.icon, toe.type)]['class-name']}`,\n })),\n });\n }\n // breadcrumbs\n if (breadcrumbs) {\n item.breadcrumbs = { // n7-breadcrumbs uses this as it's own data\n items: _get(el, paths.metadata.breadcrumbs.data, el.item.breadcrumbs).map((crumb) => {\n const label = _get(crumb, paths.metadata.breadcrumbs.label, crumb.label);\n return {\n label,\n anchor: {\n href: itemHref,\n },\n };\n }),\n };\n }\n result.push(item);\n });\n if (context === 'home') {\n const actions = [\n {\n label: `Mostra Tutti (${totalCount})`,\n },\n lengthLimit\n ? {\n label: `Mostra Altri (${resultsLimit})`,\n disabled: false,\n } : null,\n ];\n return {\n result,\n actions,\n isLoading: false,\n fallback: config.get('home-layout')['linked-objects-fallback'],\n };\n }\n return { previews: result };\n };\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwAutocompleteWrapperDS extends DataSource {\n protected transform(data) {\n const { response } = data;\n\n if (!response) {\n return { suggestion: [], loading: true };\n }\n\n const suggestion = [];\n const { config } = this.options;\n const maxLength = (config.get('home-layout')['max-item-length'] || 20);\n const fResults = response.results.filter((el) => typeof el.entity === 'object');\n\n // eslint-disable-next-line consistent-return\n fResults.forEach((el) => {\n if (el.entity.id === 'fallback') { // build and return fallback data\n suggestion.push({\n text: el.entity.label,\n payload: 'fallback-simple-autocomplete',\n });\n return { suggestion };\n }\n const text = this.stringTrim(el.entity.label, maxLength);\n suggestion.push({\n text,\n anchor: {\n payload: el.entity.id,\n },\n });\n });\n return { suggestion };\n }\n\n /**\n * Given a string, it trims it to the specified length.\n *\n * @param string an input string\n * @param limit character limit\n * @returns the resulting trimmed string\n */\n private stringTrim = (string, limit) => {\n if (string.length > limit) {\n return `${string.slice(0, limit)}…`;\n } return string;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwBubbleChartDS extends DataSource {\n public chartData: any = []; // data rendered into the graph\n\n public draw: any = null; // exposed component draw function to update the view\n\n public selected: string[] = []; // list of selected bubbles\n\n public filters: any[] = []; // list of active filters to show only some TypeOfEntity(s)\n\n public closedEyes: any[] = []; // array of the activated eye filters\n\n public tippyList: any[] = []; // list of tippy instances\n\n protected transform(data) {\n const { config, smallChartSize } = this.options;\n const { fontRendering, transition, shuffle } = config.get('bubble-chart');\n const domain = []; const\n range = [];\n const colorConfig = config.get('config-keys');\n\n Object.keys(colorConfig).forEach((k) => {\n domain.push(k.replace(/-/g, ' '));\n range.push(((colorConfig[k] || {}).color || {}).hex);\n });\n\n const commonParams = {\n containerId: 'bubbleChartContainer',\n setDraw: (draw) => { this.draw = draw; },\n colorMatch: { domain, range },\n selected: this.selected,\n sizeRange: [0.5, 500],\n fontRendering,\n height: 400,\n width: 500,\n transition,\n shuffle,\n };\n /*\n Two data streams are ouputted.\n The default stream is for the normal visualization,\n \"smallView\" is used for a compressed view of the same data.\n */\n return {\n ...commonParams,\n anchorData: { href: '/placeholder/' },\n data: this.smartSlice(data),\n smallView: {\n ...commonParams,\n data: this.smartSlice(data, smallChartSize),\n },\n };\n }\n\n updateChart = (res) => {\n /*\n Redraws the graph with the incoming data.\n \"res\" should be Apollo's \"response.entitiesData\".\n When res is passed as null, the chart is rendered with the previous data.\n */\n let response = res;\n if (res === null) {\n response = this.chartData;\n } else {\n this.chartData = res;\n }\n if (this.filters.length > 0) { // apply filters to the response\n response = this.chartData.filter((el) => !this.filters.includes(el.entity.typeOfEntity.replace(/ /g, '-')));\n }\n if (!this.draw) {\n this.update(this.smartSlice(response)); // component self-update\n } else {\n this.output.selected = this.selected;\n this.output.data = this.smartSlice(response);\n this.output.smallView.data = this.smartSlice(response, this.options.smallChartSize);\n this.draw();\n }\n };\n\n smartSlice = (d, length?) => {\n const l = length || this.options.limit;\n if (l && l < d.length) {\n return d.slice(0, l);\n }\n return d;\n };\n\n handleBubbleClick = (payload) => {\n /*\n Toggles the selection of the clicked bubble.\n */\n const id = payload;\n if (this.selected.includes(id)) {\n this.selected.splice(this.selected.indexOf(id), 1); // remove selection\n } else {\n this.selected.push(id); // add selection\n }\n };\n}\n","import { DataSource } from '@net7/core';\nimport { helpers } from '@net7/boilerplate-common';\n\nexport class AwChartTippyDS extends DataSource {\n protected transform(data) {\n // ====== DATA ======\n const { bubbles, selected } = data;\n const { basePath, selectable } = this.options;\n // ==================\n const templates: any[] = bubbles.map((b) => {\n const { count, entity } = b;\n const {\n id, label, relation, relationName\n } = entity;\n return {\n id,\n selectable,\n title: label,\n text: `È collegato a ${count} risultati`,\n isSelected: selected.includes(id),\n anchorData: {\n href: `${basePath}${id}/${helpers.slugify(label)}`,\n },\n relation: {\n key: relationName,\n value: relation,\n }\n };\n });\n return templates;\n }\n}\n","import { CarouselData } from '@net7/components';\nimport { DataSource } from '@net7/core';\n\ntype GetSliderResponse = SlideData[];\ntype SlideData = {\n background: { type: string; value: string | null };\n ctaLabel: string;\n ctaPayload: string;\n metadata: {key: string; value: string}[] | null;\n pretext: string;\n text: string;\n title: string;\n}\n\nexport class AwCarouselDS extends DataSource {\n protected transform(data: GetSliderResponse): CarouselData {\n const res: CarouselData = {\n containerId: 'carousel-root',\n classes: 'aw-home__carousel-root',\n libOptions: {\n count: 1,\n move: 1,\n // touch: true,\n // mode: 'align',\n buttons: true,\n dots: true,\n rewind: true,\n autoplay: 4000,\n animation: 500,\n // responsive: {\n // 0: { count: 1.5, buttons: false },\n // 480: { count: 2.5, buttons: false },\n // 768: { count: 3, touch: false },\n // 1440: { count: 4, touch: false },\n // },\n },\n slides: data.map((slide) => {\n const items = [];\n let action;\n let background;\n if (slide.title) items.push({ title: slide.title });\n if (slide.text) items.push({ text: slide.text });\n if (slide.ctaLabel && slide.ctaPayload) {\n action = {\n text: slide.ctaLabel,\n anchor: {\n href: slide.ctaPayload,\n target: '_blank'\n }\n };\n }\n if (slide.background && slide.background.value) {\n if (slide.background.type === 'color') {\n background = {\n color: slide.background.value\n };\n } else if (slide.background.type === 'image') {\n background = {\n image: slide.background.value\n };\n } else if (slide.background.type === 'video') {\n background = {\n video: slide.background.value\n };\n }\n } else {\n // The background is missing!\n background = {\n color: 'rgba(0, 0, 0, 0)'\n };\n }\n return ({\n items,\n action,\n background\n });\n })\n };\n return res;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwHeroDS extends DataSource {\n public currentInputValue = '';\n\n protected transform(data) {\n const {\n title, text, button, backgroundImage, input, classes\n } = data;\n return {\n title,\n text,\n backgroundImage,\n button: {\n text: button.text,\n anchor: {\n payload: 'cerca',\n },\n },\n input: {\n placeholder: input.placeholder,\n payload: 'cerca-in-maxxi',\n },\n classes,\n };\n }\n}\n","import { DataSource } from '@net7/core';\nimport { TABLE_MOCK } from '@net7/components';\n\nexport class AwTableDS extends DataSource {\n protected transform() {\n return TABLE_MOCK;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwHomeHeroPatrimonioDS extends DataSource {\n protected transform(data) {\n return data;\n }\n}\n","import { DataSource } from '@net7/core';\nimport tippy from 'tippy.js';\n\nexport class AwHomeFacetsWrapperDS extends DataSource {\n private autoComplete = {}; // autocomplete data for each facet\n\n public lockedFacets = {}; // locked means that the eye cannot be closed\n\n // store the last response so the component can be rendered again with the same data\n public lastData = {};\n\n public closedEyes = []; // list of closed eyes\n\n public openTippy = ''; // tipe of entity of the currently open tippy\n\n protected transform(data) {\n this.lastData = data;\n const headers: any[] = [];\n const inputs: any[] = [];\n const links: any[] = [];\n const facetData = data;\n const { pageConfig, paths } = this.options || {};\n const { lockedFacets } = this; // locked means that the eye cannot be closed\n const { closedEyes } = this; // list of closed eyes\n\n // when facet data changes, destroy every tippy and reset autocomplete data.\n Object.keys(this.autoComplete).forEach((id) => {\n if (this.autoComplete[id] && this.autoComplete[id].tippy) {\n this.autoComplete[id].tippy.destroy(); // destroy\n }\n });\n this.autoComplete = {}; // reset data\n\n facetData.forEach((facet, j) => {\n /*\n For each facet on back-end, push a header-component\n and a facet-component (search input only) to each array.\n ---//---\n # LOGIC:\n Each facet can be \"locked\" or \"enabled\".\n if a facet is locked, it means that it cannot be enabled or disabled.\n if a facet is enabled or disabled it means that the filter is active or inactive.\n\n there are 2 ways that a facet can be \"locked\"\n 1. When a bubble of the same type is selected in the chart\n 2. When that facet is the only enabled facet\n\n The first case is managed by pushing the selected bubble's ID to the corresponding array\n of lockedFacets.\n The second case is managed by pushing a \"LOCK_LAST\" string\n to the lockedFacets array of the last\n enabled facet.\n */\n Object.keys(lockedFacets).forEach((key) => {\n // clear all locked facets arrays from \"LOCK_LAST\" values (reset all locks)\n const index = lockedFacets[key].indexOf('LOCK_LAST');\n if (index >= 0) {\n lockedFacets[key].splice(index, 1);\n }\n });\n if (closedEyes) {\n if (closedEyes.length === facetData.length - 1) {\n const lastFacet = facetData.find((f) => !closedEyes.includes(f.type.replace(/ /g, '-')));\n if (lastFacet) {\n if (closedEyes[lastFacet.type]) {\n lockedFacets[lastFacet.type].push('LOCK_LAST');\n } else {\n lockedFacets[lastFacet.type] = ['LOCK_LAST'];\n }\n }\n }\n if (closedEyes.includes(facet.type.replace(/ /g, '-'))) { // check if the eyes are open\n facet.enabled = false;\n } else {\n facet.enabled = true;\n }\n }\n if (Object.keys(lockedFacets).length) { // check if bubble chart wants to lock this facet\n if (lockedFacets[facet.type] && lockedFacets[facet.type].length > 0) {\n // if bubble chart say lock this facet, lock it\n facet.locked = true;\n } else {\n facet.locked = false;\n }\n } else {\n facet.locked = false;\n }\n const headerClasses = [];\n const iconClasses = [facet.icon];\n if (!facet.enabled) { headerClasses.push('is-disabled'); }\n if (facet['class-name']) {\n headerClasses.push(`color-${facet['class-name']}`);\n iconClasses.push(`color-${facet['class-name']}`);\n }\n // make array of headers data\n headers.push({\n iconLeft: iconClasses.join(' '),\n text: facet.label,\n additionalText: facet.count,\n iconRight: facet.enabled ? 'n7-icon-eye' : 'n7-icon-eye-slash',\n classes:\n headerClasses.join(' ')\n + (facet.locked\n ? ' is-blocked'\n : ' not-blocked'),\n payload: facet.locked === true ? null : facet.type.replace(/ /g, '-'),\n });\n // make array of inputs data\n inputs.push({\n sections: [\n {\n inputs: [\n {\n id: `${facet.type.replace(/ /g, '-')}-${j}`,\n type: 'text',\n placeholder: facet['input-placeholder'],\n icon: 'n7-icon-search',\n disabled: !facet.enabled,\n inputPayload: `${String(facet.type.replace(/ /g, '-'))}-search`,\n iconPayload: `${String(facet.type.replace(/ /g, '-'))}-search`,\n enterPayload: `${String(facet.type.replace(/ /g, '-'))}-search`,\n classes: `${String(facet.type.replace(' ', '-'))}-search`,\n },\n ],\n },\n ],\n });\n if (pageConfig?.['view-all-links']?.enabled) {\n const { label } = pageConfig['view-all-links'];\n links.push({\n label: label || 'Visualizza tutti',\n path: paths.searchBasePath,\n queryParams: {\n 'query-links': facet.type.replace(/ /g, '-')\n }\n });\n }\n });\n\n // zipping arrays to render widgets with separate data (see home-layout.html)\n return headers.map((h, i) => ({ header: h, input: inputs[i], link: links[i] || null }));\n }\n\n public tippyMaker = (id) => {\n /*\n Builds or updates Tippy for the input in use (id)\n */\n const newId = id.replace(/ /g, '-');\n // create data for this facet\n if (!this.autoComplete[newId]) {\n this.autoComplete[newId] = {\n tippy: undefined, // tippy data / config\n open: true, // show or hide tippy\n };\n const ac = this.autoComplete[newId];\n const getContent = () => {\n const contentNode = document.getElementsByClassName(\n 'aw-simple-autocomplete__template',\n )[0];\n contentNode.setAttribute('style', 'display: block');\n return contentNode;\n };\n\n if (!ac.tippy) {\n // target the correct this.autoComplete[id] input class\n const target = document.getElementsByClassName(newId)[1];\n ac.tippy = tippy(target, {\n content: getContent(),\n trigger: 'manual',\n interactive: true,\n arrow: false,\n flip: false,\n appendTo: 'parent',\n theme: 'light-border aw-home__facet-tippy',\n placement: 'bottom-start',\n maxWidth: '100%',\n }); // attach tippy to input type text\n }\n }\n const ac = this.autoComplete[newId];\n if (ac.tippy) {\n ac.tippy.show();\n }\n };\n\n public tippyClose = (id) => {\n const newId = id.replace(/ /g, '-');\n if (this.autoComplete[newId]) {\n const ac = this.autoComplete[newId];\n if (ac.tippy) {\n ac.tippy.hide();\n }\n }\n };\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwHomeItemTagsWrapperDS extends DataSource {\n protected transform(data) {\n return data;\n }\n}\n","import { DataSource } from '@net7/core';\nimport { helpers } from '@net7/boilerplate-common';\n\nexport class AwHomeAutocompleteDS extends DataSource {\n protected transform(data) {\n const { response, query } = data;\n const { results, totalCount } = response;\n const { keys, config, paths } = this.options;\n const labels = this.options.labels || {};\n const itemIds = [];\n const groups = {};\n\n results.forEach(({ item, entity }) => {\n const groupId = entity ? entity.typeOfEntity : item.document_type;\n const groupConfig = keys[groupId];\n const mainMetadata = groupConfig['main-metadata'];\n const currentItem = item || entity;\n\n if (!groups[groupId]) {\n const { label, icon } = groupConfig;\n groups[groupId] = {\n title: label,\n icon,\n classes: `color-${groupConfig['class-name']}`,\n items: [],\n type: groupId,\n };\n }\n\n if (itemIds.indexOf(currentItem.id) === -1) {\n const metadata = [];\n if (currentItem.fields) {\n currentItem.fields.forEach(({ key, value }) => {\n if (mainMetadata && key === mainMetadata) {\n metadata.push({ key: helpers.prettifySnakeCase(key, labels[key]), value });\n }\n });\n }\n groups[groupId].items.push({\n title: currentItem.label,\n metadata,\n anchor: {\n href: `${paths[entity ? 'entitaBasePath' : 'schedaBasePath']}/${currentItem.id}/${helpers.slugify(currentItem.label)}`,\n },\n });\n }\n });\n\n const grouplist = Object.keys(groups).map((key) => ({\n group: {\n title: groups[key].title,\n icon: groups[key].icon,\n classes: groups[key].classes,\n },\n items: groups[key].items,\n }));\n\n return {\n results: grouplist,\n actions: grouplist.length > 0 ? {\n showMore: {\n text: `Visualizza tutti i ${totalCount} risultati`,\n anchor: {\n href: paths.searchBasePath,\n queryParams: {\n query,\n },\n },\n },\n } : {\n showMore: {\n text: 'Cerca in tutti i campi',\n anchor: {\n href: paths.searchBasePath,\n queryParams: {\n query, // Query string\n 'query-all': 1, // \"Cerca in tutti i campi delle schede\"\n },\n },\n },\n },\n fallback: ((config.get('home-layout') || {})['top-hero'] || {}).fallback,\n };\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwEntitaNavDS extends DataSource {\n protected transform(param): any {\n if (!param) {\n return null;\n }\n const { data, selected } = param;\n const navigation = { items: [], payload: 'entita-nav' };\n const { hasMetadataFields, labels } = this.options;\n\n /* navigation.items.push({\n text: 'OVERVIEW',\n anchor: { href: `${param.basePath}/overview` },\n classes: selected === 'overview' ? 'is-selected overview-tab' : 'overview-tab',\n });\n if (hasMetadataFields) {\n navigation.items.push({\n text: 'INFORMAZIONI',\n anchor: { href: `${param.basePath}/informazioni` },\n classes: selected === 'informazioni' ? 'is-selected' : '',\n });\n } */\n navigation.items.push({\n text: 'INFORMAZIONI',\n anchor: { href: `${param.basePath}/informazioni` },\n classes: selected === 'informazioni' ? 'is-selected' : '',\n });\n if (data.relatedLa) {\n navigation.items.push({\n text: labels['aggregazioni-logiche-collegate'],\n anchor: { href: `${param.basePath}/fondi-collegati` },\n classes: selected === 'fondi-collegati' ? 'is-selected' : '',\n });\n }\n if (data.relatedItems) {\n navigation.items.push({\n text: 'OGGETTI COLLEGATI',\n anchor: {\n href: `${param.basePath}/oggetti-collegati`,\n queryParams: {\n page: 1,\n },\n },\n classes: selected === 'oggetti-collegati' ? 'is-selected' : '',\n });\n }\n if (data.relatedEntities) {\n navigation.items.push({\n text: 'ENTITÀ COLLEGATE',\n anchor: { href: `${param.basePath}/entita-collegate` },\n classes: selected === 'entita-collegate' ? 'is-selected' : '',\n });\n }\n if (data.extraTab) {\n navigation.items.push({\n text: 'MAXXI',\n anchor: { href: `${param.basePath}/maxxi` },\n classes: selected === 'maxxi' ? 'is-selected' : '',\n });\n }\n if (data.wikiTab) {\n navigation.items.push({\n text: 'WIKIPEDIA',\n anchor: { href: `${param.basePath}/wiki` },\n classes: selected === 'wiki' ? 'is-selected' : '',\n });\n }\n\n // one tab control\n if (navigation.items.length === 2 && !hasMetadataFields) {\n navigation.items.shift();\n }\n\n return navigation;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwEntitaMetadataViewerDS extends DataSource {\n public hasFields = false;\n\n protected transform(data) {\n this.hasFields = !!(Array.isArray(data) && data.length);\n\n return {\n group: [{\n items: data || []\n }]\n };\n }\n}\n","import { DataSource } from '@net7/core';\nimport { ItemPreviewData } from '@net7/components';\n\nexport class AwRelatedEntitiesDS extends DataSource {\n protected transform = (data): { previews: ItemPreviewData[] } => {\n const basePath = this.options.config.get('paths').entitaBasePath;\n const configKeys = this.options.config.get('config-keys');\n const { title } = this.options;\n const previews: ItemPreviewData[] = data ? data.map((d) => ({\n title: d.entity.label,\n anchor: {\n href: `${basePath}${d.entity.id}/${d.entity.label}`,\n },\n classes: (configKeys[d.entity.typeOfEntity])\n ? `is-${configKeys[d.entity.typeOfEntity]['class-name']}`\n : null, // adds color to the title\n metadata: [{\n items: [{\n label: 'Tipo di entità',\n value: (configKeys[d.entity.typeOfEntity])\n ? configKeys[d.entity.typeOfEntity].label\n : d.entity.typeOfEntity,\n }],\n }],\n // A special kind of metadata, not to be viewed as other metadata\n relation: {\n key: d.relationName || title,\n value: d.entity.relation || null\n },\n qualification: {\n key: d.relationName || title,\n value: d.entity.qualification || null\n },\n })) : [];\n return { previews };\n };\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwSchedaBreadcrumbsDS extends DataSource {\n protected transform = (data) => data;\n\n toggleSidebar() {\n const sidebarData = this.output;\n if (sidebarData.classes === 'is-expanded') {\n sidebarData.classes = 'is-collapsed';\n } else {\n sidebarData.classes = 'is-expanded';\n }\n this.update(sidebarData);\n }\n}\n","import { DataSource } from '@net7/core';\nimport { SchedaDropdownData } from '../components';\n\nexport class AwSchedaDropdownDS extends DataSource {\n protected transform(response): SchedaDropdownData {\n const { digitalObjects } = response;\n const firstObject = digitalObjects[0];\n return {\n header: {\n label: firstObject.label,\n icon: {\n id: 'n7-icon-caret-down'\n },\n payload: 'toggle',\n },\n items: digitalObjects.map(({ label, type }, index) => ({\n label,\n type,\n payload: index,\n selected: index === 0,\n }))\n };\n }\n\n toggle() {\n const { classes } = this.output;\n this.output.classes = classes ? null : 'is-open';\n }\n\n onChange(payload) {\n // link check\n if (this.output.items[payload].type !== 'external') {\n this.output.items.forEach((item) => {\n item.selected = item.payload === payload;\n if (item.selected) {\n this.output.header.label = item.label;\n }\n });\n }\n // close\n this.toggle();\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwSidebarHeaderDS extends DataSource {\n protected transform(data) {\n return {\n iconLeft: 'n7-icon-tree-icon',\n text: data.text || '',\n iconRight: data.isExpanded ? 'n7-icon-angle-left' : 'n7-icon-angle-right',\n classes: data.isExpanded ? 'is-expanded' : 'is-collapsed',\n payload: 'header',\n };\n }\n\n toggleSidebar() {\n const sidebarData = this.output;\n if (sidebarData.classes === 'is-expanded') {\n sidebarData.classes = 'is-collapsed';\n sidebarData.iconRight = 'n7-icon-angle-right';\n } else {\n sidebarData.classes = 'is-expanded';\n sidebarData.iconRight = 'n7-icon-angle-left';\n }\n }\n}\n","import { DataSource } from '@net7/core';\nimport { ImageViewerData } from '@net7/components';\nimport { interval, Subject } from 'rxjs';\nimport { filter, first } from 'rxjs/operators';\n\nexport class AwSchedaImageDS extends DataSource {\n private instance;\n\n public instanceLoaded$: Subject<any> = new Subject();\n\n protected transform(data): ImageViewerData {\n const tileSources = this.getTileSources(data.items);\n\n return {\n images: [],\n viewerId: data.id,\n libOptions: {\n tileSources,\n sequenceMode: true,\n showReferenceStrip: true,\n autoHideControls: false,\n showNavigator: false,\n },\n _setViewer: (viewer) => {\n this.instance = viewer;\n\n this.onRender();\n }\n };\n }\n\n public hasInstance() {\n return !!this.instance;\n }\n\n public updateImages(data) {\n if (!this.instance) return;\n\n // container exists check\n interval(10).pipe(\n filter(() => !!document.getElementById(this.output.viewerId)),\n first()\n ).subscribe(() => {\n // reset\n this.instance.world.removeAll();\n setTimeout(() => {\n const images = this.getTileSources(data.items);\n this.instance.open(images);\n\n this.onRender();\n });\n });\n }\n\n public reset() {\n if (!this.instance) return;\n this.instance.world.removeAll();\n }\n\n private getTileSources(images) {\n const tileSources = [];\n images.forEach(({ type, url, iiifImages }) => {\n if (type === 'images-simple') {\n tileSources.push({\n url,\n type: 'image'\n });\n } else if (type === 'images-iip') {\n // FIXME: togliere replace\n tileSources.push(url.replace('FIF', 'Deepzoom').replace('.tif', '.tif.dzi'));\n } else if (type === 'images-iiif') {\n iiifImages.forEach((iiifUrl) => {\n tileSources.push(iiifUrl);\n });\n }\n });\n return tileSources;\n }\n\n private onRender() {\n // emit signal\n this.instanceLoaded$.next(this.instance);\n\n // update navigation classes\n const { nextButton } = this.instance;\n const hasNavigation = !!(nextButton && !nextButton.element?.disabled);\n this.output.classes = hasNavigation ? 'has-navigation' : 'navigation-hidden';\n }\n}\n","import { DataSource } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport Mirador from 'mirador';\n\nexport class AwSchedaImageIiifDS extends DataSource {\n private instance;\n\n public instanceLoaded$: Subject<any> = new Subject();\n\n protected transform(data) {\n if (!data) return null;\n\n const { libOptions } = this.options;\n const iiifManifestsList = data.items;\n const windows = [];\n\n iiifManifestsList.forEach((manifest) => {\n windows.push({ manifestId: manifest.url });\n if (this.instance) {\n const state = this.instance.store.getState();\n const currentWindowId = state.workspace.windowIds[0];\n this.instance.store.dispatch(\n Mirador.actions.addWindow({\n manifestId: manifest.url\n })\n );\n this.instance.store.dispatch(Mirador.actions.removeWindow(currentWindowId));\n }\n });\n\n return {\n libOptions: {\n ...libOptions,\n windows\n },\n _setInstance: (viewer) => {\n this.instance = viewer;\n this.onRender();\n }\n };\n }\n\n private onRender() {\n this.instanceLoaded$.next(this.instance);\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwSchedaInnerTitleDS extends DataSource {\n protected transform(data) {\n return data;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwSchedaMetadataDS extends DataSource {\n protected transform(data) {\n return {\n group: [{\n items: data || []\n }]\n };\n }\n}\n","import { DataSource } from '@net7/core';\nimport { merge } from 'lodash';\nimport { PdfViewerData } from '../components';\n\nconst DEFAULT_OPTIONS = {\n showToolbar: true,\n showSidebarButton: true,\n showFindButton: true,\n showPagingButtons: true,\n showZoomButtons: true,\n showPresentationModeButton: true,\n showOpenFileButton: false,\n showPrintButton: false,\n showDownloadButton: false,\n showBookmarkButton: false,\n showSecondaryToolbarButton: true,\n showRotateButton: false,\n showHandToolButton: true,\n showScrollingButton: false,\n showSpreadButton: false,\n showPropertiesButton: false\n};\n\nexport class AwSchedaPdfDS extends DataSource {\n private items: {\n label: string;\n url: string;\n selected: boolean;\n }[];\n\n protected transform(data): PdfViewerData {\n const { items } = data;\n const libOptions = merge(\n DEFAULT_OPTIONS,\n this.options.libOptions || {}\n );\n if (!(Array.isArray(items) && items.length)) {\n return null;\n }\n\n this.items = items.map((item, index) => ({\n ...item,\n selected: index === 0\n }));\n\n console.log('libOptions----------------------------->', libOptions);\n\n // defaults\n return {\n libOptions,\n items: this.items,\n next: 1,\n prev: null,\n currentUrl: items[0].url,\n };\n }\n\n onChange(index) {\n this.output.next = index < (this.items.length - 1) ? index + 1 : null;\n this.output.prev = index > 0 ? index - 1 : null;\n this.output.currentUrl = this.items[index].url;\n this.items.forEach((item, itemIndex) => {\n item.selected = itemIndex === index;\n });\n }\n\n onLoaded() {\n this.output.classes = 'is-loaded';\n }\n}\n","import { DataSource } from '@net7/core';\nimport { helpers } from '@net7/boilerplate-common';\n\nexport class AwTreeDS extends DataSource {\n static dataCache: any = {};\n\n private basePath: string;\n\n private rootId: string;\n\n private currentId: string;\n\n private activeId: string;\n\n protected transform = (data) => data;\n\n public load(data) {\n const { tree, basePath } = data;\n this.rootId = tree.id;\n this.basePath = basePath;\n // save in cache\n if (!AwTreeDS.dataCache[this.rootId]) {\n AwTreeDS.dataCache[this.rootId] = { flatIds: [], flatData: {} };\n this._normalize(tree);\n }\n }\n\n public build(id) {\n const path = this._getTreePath(id);\n const oldPath = this._getTreePath(this.currentId);\n const oldPathIndex = oldPath.indexOf(id);\n\n if (oldPathIndex > 0) {\n path.splice(oldPathIndex);\n this.currentId = null;\n } else if (this.currentId === id) {\n const idIndex = path.indexOf(this.currentId);\n path.splice(idIndex);\n this.currentId = null;\n } else {\n this.currentId = id;\n }\n\n const tree: any = this._getTree(path);\n this.update(tree);\n }\n\n public setActive(id) {\n this.activeId = id;\n }\n\n public highlightActive() {\n const control = (items) => {\n items.forEach((item) => {\n const founded = item.meta === this.activeId;\n const hasActive = item.classes.indexOf('is-active') !== -1;\n\n // clear is-active\n if (hasActive && !founded) {\n const currentClasses = item.classes.split(' ');\n currentClasses.splice(currentClasses.indexOf('is-active'), 1);\n item.classes = currentClasses.join(' ');\n }\n\n if (founded) {\n const currentClasses = item.classes.split(' ');\n if (currentClasses.indexOf('is-active') === -1) {\n currentClasses.push('is-active');\n }\n item.classes = currentClasses.join(' ');\n }\n\n if (Array.isArray(item.items) && item.items.length) {\n control(item.items);\n }\n });\n };\n control(this.output.items);\n }\n\n private _getCachedData = () => AwTreeDS.dataCache[this.rootId];\n\n private _normalize = ({\n id, label, icon, img, branches, document_type: type, document_classification: classification\n }) => {\n const hasBranches = !!(Array.isArray(branches) && branches.length);\n this._getCachedData().flatData[id] = {\n id, label, icon, img, hasBranches, type, classification\n };\n if (hasBranches) {\n branches.forEach((data) => {\n this._getCachedData().flatIds.push([id, data.id]);\n this._normalize(data);\n });\n }\n };\n\n private _getParent = (id) => this._getCachedData().flatIds\n .filter(([, childId]) => childId === id)\n .map(([parentId]) => parentId)[0] || null;\n\n private _getTreePath = (id) => {\n const ids = [id];\n let currentId = id;\n while (currentId) {\n const parentId = this._getParent(currentId);\n if (parentId) {\n ids.push(parentId);\n }\n currentId = parentId;\n }\n return ids.reverse();\n };\n\n private _getTree = (path) => {\n const tree = {};\n let counter = 0;\n\n const loadItems = (id, source) => {\n counter += 1;\n const nextParent = path[counter];\n source.items = [];\n\n this._getCachedData().flatIds\n .filter(([parentId]) => parentId === id)\n .forEach(([, childId], index) => {\n const inPath = childId === nextParent;\n const item = this._getTreeItem(childId, inPath);\n source.items.push(item);\n if (inPath) {\n loadItems(childId, source.items[index]);\n }\n });\n };\n\n // init\n loadItems(path[0], tree);\n return tree;\n };\n\n private _getTreeItem = (id, inPath) => {\n const {\n label, img, hasBranches, type, classification\n } = this._getCachedData().flatData[id];\n const defaultIcon = (this.options.config[type] || { icon: null }).icon;\n let specificIcon = '';\n const lastSegment = /.*\\.(\\w+)$/;\n if (classification && lastSegment.test(classification)) {\n const classID = classification\n .match(lastSegment)[1] // get classification characters\n .toUpperCase(); // normalize\n specificIcon = this.options.config[type].classifications[classID].icon;\n }\n const arrowIcons = inPath ? 'n7-icon-angle-down' : 'n7-icon-angle-right';\n const classes = [];\n if (inPath) {\n classes.push('is-expanded');\n }\n if (this.activeId === id) {\n classes.push('is-active');\n }\n return {\n classes: classes.join(' '),\n text: label || null,\n img: img || null,\n icon: (specificIcon || defaultIcon),\n toggle: hasBranches ? {\n icon: arrowIcons,\n payload: {\n source: 'toggle',\n id,\n },\n } : null,\n meta: id,\n anchor: {\n href: `${this.basePath}/${id}/${helpers.slugify(label)}`,\n },\n };\n };\n}\n","import { ConfigAriannaKeys } from '../config-types';\n\nconst getNodeIcon = (\n configKeys: ConfigAriannaKeys,\n item: {\n document_type: string;\n document_classification: string;\n }\n) => {\n const { document_type: type, document_classification: classification } = item;\n let icon = configKeys[type] ? configKeys[type].icon : null;\n const lastSegment = /.*\\.(\\w+)$/;\n if (classification && lastSegment.test(classification)) {\n const classID = classification\n .match(lastSegment)[1] // get classification characters\n .toUpperCase(); // normalize\n icon = configKeys[type].classifications[classID].icon;\n }\n return icon;\n};\n\nexport default { getNodeIcon };\n","import {\n Button, InnerTitleData, InputSelectData, InputTextData, PaginationData\n} from '@net7/components';\nimport { DataSource } from '@net7/core';\nimport { helpers } from '@net7/boilerplate-common';\nimport { ExtendedTreeData } from '../components/extended-tree/extended-tree';\nimport nodeHelper from '../helpers/node.helper';\n\ntype ParentResponse = {\n label: string;\n}\n\nexport type NodesResponse = {\n items: {\n img?: string;\n label: string;\n id: string;\n document_type: string;\n document_classification: string;\n breadcrumbs?: {\n label: string;\n link: string;\n }[];\n }[];\n totalCount: number;\n}\n\nconst PAGE_LIMIT = 5;\n\nconst SEARCH_OPEN_CLASS = 'search-is-open';\n\nexport class AwExtendedTreeDS extends DataSource {\n public searchIsOpen = false;\n\n protected transform = (\n { parent, nodes }:\n { parent: ParentResponse; nodes: NodesResponse }\n ): ExtendedTreeData => {\n const { totalCount } = nodes;\n const {\n title,\n params,\n basePath,\n lite,\n configKeys,\n fallback,\n } = this.options;\n const page = params.page ? +params.page : 1;\n const limit = params.limit ? +params.limit : 10;\n this.searchIsOpen = (\n this.searchIsOpen\n || (typeof params.query === 'string' && params.query.trim())\n );\n // header\n const header: InnerTitleData = {\n title: {\n main: {\n text: `${title} <span class=\"aw-extended-tree__total\">(${totalCount})</span>`,\n },\n secondary: {\n text: `In: \"${parent.label}\"`\n }\n },\n actions: {\n search: {\n placeholder: 'Cerca negli oggetti culturali',\n payload: 'search-input',\n button: {\n text: '',\n payload: 'search-button'\n }\n },\n },\n classes: this.searchIsOpen ? SEARCH_OPEN_CLASS : ''\n };\n // items\n const items = (nodes.items || []).map((item) => ({\n icon: nodeHelper.getNodeIcon(configKeys, item),\n thumbnail: lite ? null : item.img,\n label: item.label,\n anchor: {\n href: `${basePath}/${item.id}/${helpers.slugify(item.label)}`\n }\n }));\n // pagination\n const pagination: PaginationData = this.getPagination(page, totalCount, limit);\n // page input\n const pageInput: InputTextData = {\n id: 'page-input',\n type: 'number',\n // value: page,\n placeholder: 'pag',\n inputPayload: 'page-input-change',\n enterPayload: 'page-input-enter',\n };\n // results limit select\n const limitSelect: InputSelectData = {\n id: 'limit-select',\n label: 'Numero di risultati',\n options: [10, 25, 50].map((size) => ({\n label: `${size}`,\n value: size,\n selected: size === limit\n })),\n payload: 'limit-select',\n };\n return {\n header,\n items,\n pagination,\n pageInput,\n limitSelect,\n fallback: nodes ? fallback : null,\n loading: false,\n };\n };\n\n public setLoading(loading: boolean) {\n this.output.loading = loading;\n }\n\n public toggleSearch() {\n this.searchIsOpen = !this.searchIsOpen;\n\n const { header } = this.output;\n header.classes = this.searchIsOpen ? SEARCH_OPEN_CLASS : '';\n\n // trigger focus\n if (this.searchIsOpen) {\n setTimeout(() => {\n const inputEl: HTMLInputElement = document.querySelector('.aw-extended-tree input.n7-inner-title__search-bar');\n inputEl.focus();\n }, 500);\n }\n }\n\n private getPagination(page, totalCount, limit): PaginationData {\n const pages = Math.ceil(totalCount / limit);\n\n return {\n links: this.getPaginationLinks(page, pages),\n first: {\n anchor: {\n payload: 1,\n },\n classes: page === 1 ? 'is-disabled' : '',\n },\n prev: {\n anchor: {\n payload: page === 1 ? 1 : page - 1,\n },\n classes: page === 1 ? 'is-disabled' : ''\n },\n next: {\n anchor: {\n payload: page === pages ? pages : page + 1,\n },\n classes: page === pages ? 'is-disabled' : '',\n },\n last: {\n anchor: {\n payload: pages,\n },\n classes: page === pages ? 'is-disabled' : '',\n }\n };\n }\n\n private getPaginationLinks(page, pages): Button[] {\n let firstItem = 1;\n const links: Button[] = [];\n const limit = PAGE_LIMIT;\n let last = limit;\n\n if (pages > limit) {\n const steps = Math.floor(limit / 2);\n if (page > steps) {\n firstItem = page - steps;\n }\n\n if ((page + steps) > pages) {\n firstItem = (pages - limit) + 1;\n }\n } else {\n last = pages;\n }\n\n let i;\n for (i = 0; i < last; i += 1) {\n const itemPage = firstItem + i;\n links.push({\n text: itemPage,\n classes: itemPage === page ? 'is-disabled' : '',\n anchor: {\n payload: itemPage,\n }\n });\n }\n\n return links;\n }\n}\n","import { DataSource } from '@net7/core';\nimport { SchedaImageNavigatorData } from '../components/scheda-image-navigator/scheda-image-navigator';\n\nexport class AwSchedaImageNavigatorDS extends DataSource {\n private instance;\n\n private current;\n\n private total;\n\n protected transform(instance): SchedaImageNavigatorData {\n this.instance = instance;\n this.current = 1;\n this.total = this.instance.referenceStrip?.panels?.length;\n\n // check images total > 1\n if (!this.total) return null;\n\n const { buttonText } = (this.options || {});\n\n // listen viewer\n this.listenViewer();\n\n return {\n input: {\n id: 'scheda-image-navigator-input',\n type: 'number',\n label: this.getLabel(),\n min: 1,\n max: this.total,\n value: this.current,\n inputPayload: 'input',\n enterPayload: 'enter'\n },\n button: {\n label: buttonText,\n // disabled: true,\n }\n };\n }\n\n public onChange({ inputPayload, value }) {\n if (inputPayload === 'input') {\n let formattedValue = value;\n if (formattedValue) {\n formattedValue = +formattedValue;\n if (formattedValue > this.total) {\n formattedValue = this.total;\n }\n if (formattedValue < 1) {\n formattedValue = 1;\n }\n }\n this.current = formattedValue || null;\n\n // force input value\n this.output.input.value = this.current;\n } else if (inputPayload === 'enter') {\n this.onSubmit();\n }\n }\n\n public onSubmit() {\n if (this.instance && this.current) {\n this.instance.goToPage(this.current - 1);\n\n // update label\n this.updateLabel();\n }\n }\n\n private updateLabel() {\n const { input } = this.output;\n input.label = this.getLabel();\n }\n\n private getLabel() {\n const { label } = this.options;\n return label\n .replace('{current}', this.current)\n .replace('{total}', this.total);\n }\n\n private listenViewer() {\n this.instance.addHandler('page', (event) => {\n const { page } = event;\n if ((page + 1) !== this.current) {\n // trigger change manually\n this.onChange({\n inputPayload: 'input',\n value: page + 1\n });\n\n // update label\n this.updateLabel();\n }\n });\n }\n}\n","import { helpers } from '@net7/boilerplate-common';\nimport {\n Button, InnerTitleData, InputSelectData, InputTextData, PaginationData\n} from '@net7/components';\nimport { DataSource } from '@net7/core';\nimport { SchedaSearchData } from '../components/scheda-search/scheda-search';\nimport nodeHelper from '../helpers/node.helper';\nimport { NodesResponse } from './extended-tree.ds';\n\nconst PAGE_LIMIT = 5;\n\nexport class AwSchedaSearchDS extends DataSource {\n protected transform = (nodes: NodesResponse): SchedaSearchData => {\n const {\n search,\n title,\n params,\n basePath,\n lite,\n configKeys,\n fallback,\n } = this.options || {};\n const { totalCount } = nodes || {};\n const page = params.page ? +params.page : 1;\n const limit = params.limit ? +params.limit : 10;\n\n // header\n const header: InnerTitleData = {\n title: {\n main: {\n text: title || 'Cerca nelle Aggregazioni Logiche',\n }\n }\n };\n\n // input\n const input: InputTextData = {\n id: 'scheda-search-input',\n placeholder: search?.placeholder || 'Cerca...',\n icon: 'n7-icon-search',\n enterPayload: 'input-enter',\n inputPayload: 'input-change'\n };\n\n // items\n const items = (nodes?.items || []).map((item) => {\n // breadcrumbs\n const breadcrumbs = {\n items: []\n };\n if (item.breadcrumbs) {\n breadcrumbs.items = item.breadcrumbs.map(({ label, link: href }) => ({\n label,\n anchor: { href },\n }));\n }\n return {\n icon: nodeHelper.getNodeIcon(configKeys, item),\n thumbnail: lite ? null : item.img,\n label: item.label,\n anchor: {\n href: `${basePath}/${item.id}/${helpers.slugify(item.label)}`\n },\n breadcrumbs\n };\n });\n\n // pagination\n const pagination: PaginationData = nodes?.items?.length\n ? this.getPagination(page, totalCount, limit)\n : null;\n\n // results limit select\n const limitSelect: InputSelectData = {\n id: 'limit-select',\n label: 'Numero di risultati',\n options: [10, 25, 50].map((size) => ({\n label: `${size}`,\n value: size,\n selected: size === limit\n })),\n payload: 'limit-select',\n };\n return {\n header,\n input,\n items,\n pagination,\n limitSelect,\n fallback: nodes ? fallback : null,\n loading: false,\n };\n };\n\n public setLoading(loading: boolean) {\n this.output.loading = loading;\n }\n\n private getPagination(page, totalCount, limit): PaginationData {\n const pages = Math.ceil(totalCount / limit);\n\n return {\n links: this.getPaginationLinks(page, pages),\n first: {\n anchor: {\n payload: 1,\n },\n classes: page === 1 ? 'is-disabled' : '',\n },\n prev: {\n anchor: {\n payload: page === 1 ? 1 : page - 1,\n },\n classes: page === 1 ? 'is-disabled' : ''\n },\n next: {\n anchor: {\n payload: page === pages ? pages : page + 1,\n },\n classes: page === pages ? 'is-disabled' : '',\n },\n last: {\n anchor: {\n payload: pages,\n },\n classes: page === pages ? 'is-disabled' : '',\n }\n };\n }\n\n private getPaginationLinks(page, pages): Button[] {\n let firstItem = 1;\n const links: Button[] = [];\n const limit = PAGE_LIMIT;\n let last = limit;\n\n if (pages > limit) {\n const steps = Math.floor(limit / 2);\n if (page > steps) {\n firstItem = page - steps;\n }\n\n if ((page + steps) > pages) {\n firstItem = (pages - limit) + 1;\n }\n } else {\n last = pages;\n }\n\n let i;\n for (i = 0; i < last; i += 1) {\n const itemPage = firstItem + i;\n links.push({\n text: itemPage,\n classes: itemPage === page ? 'is-disabled' : '',\n anchor: {\n payload: itemPage,\n }\n });\n }\n\n return links;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwSearchLayoutTabsDS extends DataSource {\n private selected = 'list';\n\n protected transform() {\n return {\n items: [{\n text: 'LISTA',\n payload: 'list',\n classes: this.selected === 'list' ? 'is-selected' : '',\n }, {\n text: 'GRAFICO',\n payload: 'chart',\n classes: this.selected === 'chart' ? 'is-selected' : '',\n }, {\n text: 'TIMELINE',\n payload: 'timeline',\n classes: this.selected === 'timeline' ? 'is-selected' : '',\n }],\n };\n }\n\n public setSelected(tabId) {\n this.selected = tabId;\n }\n}\n","import { Subject, merge, fromEvent } from 'rxjs';\nimport {\n debounceTime, switchMap, mapTo\n} from 'rxjs/operators';\n// import { isEmpty } from 'lodash';\n\nconst ENTITY_LINKS_CLASS = 'entity-links';\nconst ENTITY_LINKS_PARENT_SELECTOR = '.n7-facets-wrapper__group:last-child .n7-facet__section-input-links';\n\nconst loaderItem = {\n counter: null,\n label: 'Caricamento in corso...',\n searchData: [],\n value: '__loading__',\n};\n\nexport default {\n paginationState: {} as any,\n paginate$: new Subject(),\n listenToChanges(dataSource) {\n const facetsWrapperEH = dataSource.getWidgetEventHandler('facets-wrapper');\n return merge(\n facetsWrapperEH.internalFacetsChange$.pipe(mapTo(null)),\n this.paginate$,\n ).pipe(\n debounceTime(500),\n switchMap((pagination) => {\n const requestParams = dataSource.searchModel.getRequestParams();\n const internalFilters = dataSource.searchModel.getInternalFilters();\n this.paginationState.offset = pagination ? this.paginationState.offset : 0;\n this.updateParamsOffset(requestParams);\n const filters = [...requestParams.filters, ...internalFilters];\n const params = {\n searchParameters: {\n totalCount: 100,\n gallery: !!(dataSource.searchModel.getId() === 'aw-gallery-layout'),\n ...requestParams,\n filters\n },\n };\n\n // initial loader\n if (this.paginationState.offset === 0) {\n this.addInitialLoader(dataSource);\n }\n\n return dataSource.getFacetsReq$(params);\n })\n );\n },\n onFacetsResponse(searchModel, facets) {\n // pagination control\n const entityLinksFacet = facets.find(({ id }) => id === ENTITY_LINKS_CLASS);\n const { totalCount } = entityLinksFacet;\n let { limit, offset } = this.paginationState;\n if (typeof limit === 'undefined') {\n limit = 10;\n }\n if (typeof offset === 'undefined') {\n offset = 0;\n }\n this.paginationState.totalCount = totalCount;\n if (offset > 0) {\n const entityLinksInput = searchModel.getInputByFacetId(ENTITY_LINKS_CLASS);\n const oldData = entityLinksInput.getData() || [];\n // remove fake loading element\n if (oldData.length) {\n oldData.pop();\n }\n const newData = oldData.concat(entityLinksFacet.data);\n entityLinksFacet.data = newData;\n }\n\n if (this.paginationState.totalCount > (limit + offset)) {\n entityLinksFacet.data.push(loaderItem);\n }\n\n // empty state\n const entityLinksInput = searchModel.getInputByFacetId(ENTITY_LINKS_CLASS);\n entityLinksInput.setIsEmpty(!totalCount);\n\n // fix scroll\n if (offset === 0) {\n const scrollEl = document.querySelector(ENTITY_LINKS_PARENT_SELECTOR);\n if (scrollEl) {\n scrollEl.scrollTop = 0;\n }\n }\n\n // update loading state\n this.paginationState.loading = false;\n },\n initPagination(searchModel) {\n searchModel.getFilters().filter((filter) => (\n filter.pagination\n )).forEach(({ pagination }) => {\n this.paginationState = {\n ...pagination,\n ...this.paginationState,\n loading: false\n };\n });\n setTimeout(() => {\n const scrollEl = document.querySelector(ENTITY_LINKS_PARENT_SELECTOR);\n const scroll$ = fromEvent(scrollEl, 'scroll');\n scroll$.pipe(\n debounceTime(300)\n ).subscribe(({ target }) => {\n const { scrollTop, clientHeight, scrollHeight } = target as HTMLElement;\n const {\n offset, limit, totalCount, loading\n } = this.paginationState;\n const margin = 150;\n if (\n (scrollTop + clientHeight >= scrollHeight - margin)\n && (offset + limit < totalCount)\n && loading === false\n ) {\n this.paginationState.loading = true;\n this.paginationState.offset = offset + limit;\n this.paginate$.next(this.paginationState);\n }\n });\n });\n },\n /* clearInternalFilters(searchModel) {\n const searchFilter = searchModel.getFiltersByFacetId('entity-search')[0];\n const typesFilter = searchModel.getFiltersByFacetId('entity-types')[0];\n if (!isEmpty(searchFilter.value) || !isEmpty(typesFilter.value)) {\n searchFilter.value = '';\n typesFilter.value = [];\n searchModel.updateInputsFromFilters();\n }\n }, */\n updateParamsOffset(params) {\n const entityLinksFilter = params.filters\n .find(({ facetId }) => facetId === ENTITY_LINKS_CLASS);\n\n if (entityLinksFilter) {\n entityLinksFilter.pagination.offset = this.paginationState.offset;\n }\n },\n resetOffset() {\n this.paginationState.offset = 0;\n },\n addInitialLoader(dataSource) {\n dataSource.searchModel.setInputData(ENTITY_LINKS_CLASS, [loaderItem]);\n const facetsWrapperDS = dataSource.getWidgetDataSource('facets-wrapper');\n facetsWrapperDS.updateInputLinks();\n }\n};\n","import { DataSource } from '@net7/core';\nimport { AwSearchModel } from '../search/aw-search.model';\nimport entityLinksHelper from '../search/entity-links.helper';\n\nconst HEADER_ICON_OPEN = 'n7-icon-angle-down';\nconst HEADER_ICON_CLOSE = 'n7-icon-angle-right';\n\nexport class AwFacetsWrapperDS extends DataSource {\n public searchModel: AwSearchModel;\n\n protected transform(data) {\n if (!this.searchModel) {\n this.searchModel = data.searchModel;\n entityLinksHelper.initPagination(this.searchModel);\n }\n\n const id = this.searchModel.getId();\n const fields = this.searchModel.getFields();\n\n const groups = [];\n\n fields.forEach((fieldConfig, fieldIndex) => {\n const groupId = `group-${id}-${fieldIndex}`;\n\n // header config\n const header = this._headerConfig(fieldConfig.header, groupId);\n\n // inputs config\n const sections = [];\n this.searchModel.getInputs()\n .filter((input) => input.getSectionIndex() === fieldIndex)\n .map((input) => {\n input.update();\n return {\n facetId: input.getFacetId(),\n type: input.getType(),\n output: input.getOutput(),\n };\n })\n .forEach(({ type, output, facetId }) => {\n sections.push({\n classes: this._getSectionClasses(type),\n inputs: Array.isArray(output) ? output : [output],\n _meta: {\n facetId,\n },\n });\n });\n\n groups.push({\n header,\n facet: { sections },\n classes: `n7-facets-wrapper__${groupId}`,\n isOpen: true,\n _meta: {\n groupId,\n },\n });\n });\n\n return {\n groups,\n classes: `n7-facets-wrapper__${this.searchModel.getId()}`,\n };\n }\n\n public toggleGroup({ eventPayload }) {\n this.output.groups.forEach((group) => {\n if (group._meta.groupId === eventPayload.groupId) {\n group.isOpen = !group.isOpen;\n group.header.iconRight = group.isOpen ? HEADER_ICON_OPEN : HEADER_ICON_CLOSE;\n }\n });\n }\n\n public onFacetChange({ eventPayload }) {\n const { facetId, source, trigger } = eventPayload.inputPayload;\n const filter = this.searchModel.getFiltersByFacetId(facetId)[0] || { value: null };\n const filterValue = filter.value;\n\n let remove = false;\n let value: any = eventPayload.inputPayload.value || eventPayload.value;\n\n // normalize\n value = `${value}`;\n\n // remove control\n if (Array.isArray(filterValue)) {\n remove = filterValue.indexOf(value) !== -1;\n } else {\n remove = filterValue === value;\n }\n\n // input text control\n // TODO: gestire i casi enter / icon click nel input text\n if (source === 'input-text' && ['enter', 'icon'].indexOf(trigger) !== -1) return;\n\n this.searchModel.updateFilter(facetId, value, remove);\n this.searchModel.updateInputsFromFilters();\n }\n\n public updateFilteredTarget(target) {\n if (!this.searchModel) {\n return;\n }\n const input = this.searchModel.getInputByFacetId(target);\n this.output.groups\n .map((group) => group.facet)\n .map((facet) => facet.sections)\n .forEach((sections) => {\n sections.forEach((section) => {\n if (section._meta.facetId === target) {\n const inputOutput = input.getOutput();\n section.inputs = Array.isArray(inputOutput) ? inputOutput : [inputOutput];\n }\n });\n });\n }\n\n public updateInputLinks() {\n if (!this.searchModel) {\n return;\n }\n const linksFacetIds = this.searchModel.getInputs()\n .filter((input) => input.getType() === 'link')\n .map((input) => input.getFacetId());\n\n this.output.groups\n .map((group) => group.facet)\n .map((facet) => facet.sections)\n .forEach((sections) => {\n sections.forEach((section) => {\n if (linksFacetIds.indexOf(section._meta.facetId) !== -1) {\n const input = this.searchModel.getInputByFacetId(section._meta.facetId);\n input.update();\n const inputOutput = input.getOutput();\n section.inputs = Array.isArray(inputOutput) ? inputOutput : [inputOutput];\n }\n });\n });\n }\n\n public getRequestParams = () => this.searchModel.getRequestParams();\n\n public filtersAsQueryParams = (filters) => this.searchModel.filtersAsQueryParams(filters);\n\n public updateFiltersFromQueryParams = (queryParams) => {\n this.searchModel.updateFiltersFromQueryParams(queryParams);\n };\n\n public getInputByFacetId = (facetId) => this.searchModel.getInputByFacetId(facetId);\n\n public filterTarget = (target) => {\n this.searchModel.filterTarget(target);\n };\n\n public updateInputsFromFilters = () => {\n this.searchModel.updateInputsFromFilters();\n };\n\n private _getSectionClasses(type) {\n const classesMap = {\n text: 'text',\n checkbox: 'checkboxes',\n link: 'links',\n select: 'select',\n };\n\n return `n7-facet__section-input-${classesMap[type]}`;\n }\n\n private _headerConfig(header, groupId) {\n return header ? {\n text: header.label,\n iconRight: HEADER_ICON_OPEN,\n classes: header.classes,\n payload: {\n source: 'group-header',\n id: `${groupId}-header`,\n groupId,\n },\n _meta: {\n id: `${groupId}-header`,\n },\n } : null;\n }\n}\n","import { DataSource } from '@net7/core';\n\nexport class AwGalleryResultsDS extends DataSource {\n private pagination: any\n\n protected transform(data) {\n if (!data) return null;\n const { pageSize, currentPage } = this.options;\n // if the data doesn't fit on one page, render the pagination component\n if (data.length > pageSize) {\n this.addPagination(currentPage, Math.ceil(data.length / pageSize), pageSize);\n }\n return {\n res: data.slice(0, pageSize),\n pagination: this.pagination\n };\n }\n\n public chunks(a, size) {\n const results = [];\n while (a.length) {\n results.push(a.splice(0, size));\n }\n return results;\n }\n\n public addPagination = (page, totalPages, size) => {\n const sizeOptions = [12, 24, 48];\n this.pagination = {\n first: { payload: `goto-${1}`, classes: page === 1 ? 'is-disabled' : '' },\n prev: { payload: `goto-${page / 1 - 1}`, classes: page === 1 ? 'is-disabled' : '' },\n next: { payload: `goto-${page / 1 + 1}`, classes: page === totalPages ? 'is-disabled' : '' },\n last: { payload: `goto-${totalPages}`, classes: page === totalPages ? 'is-disabled' : '' },\n links: this.makePagination(totalPages, page),\n select: {\n label: 'Numero di risultati',\n options: sizeOptions.map((o) => ({\n text: o,\n selected: o === size,\n })),\n payload: 'select-size'\n },\n };\n }\n\n public makePagination = (totalPages, currentPage) => {\n /*\n Called by this.unpackData() when this.options.page is defined.\n Returns the data for <n7-pagination> component.\n */\n const result = [];\n let limit = 5 - 1;\n\n if (totalPages <= limit) {\n limit = totalPages - 1;\n }\n\n // always push the first page\n if (limit) {\n let lastPage: number; let\n firstPage: number;\n if (currentPage > Math.floor(limit / 2)) {\n if (totalPages === 2) {\n lastPage = totalPages;\n firstPage = 1;\n // when currentPage is after half-point\n // (example: [ 14 ][ 15 ][!16!][ 17 ][ 18 ])\n } else if (currentPage < (totalPages - Math.floor(limit / 2))) {\n lastPage = currentPage / 1 + Math.floor(limit / 2);\n firstPage = currentPage / 1 - Math.floor(limit / 2);\n } else {\n lastPage = totalPages;\n firstPage = currentPage - limit + (totalPages - currentPage);\n }\n } else {\n // when currentPage is before half-point\n // (example: [ 1 ][!2!][ 3 ][ 4 ][ 5 ])\n lastPage = limit + 1;\n firstPage = 1;\n }\n\n // eslint-disable-next-line no-plusplus\n for (let i = firstPage; i <= lastPage; i++) {\n result.push({\n text: String(i),\n payload: `page-${String(i)}`,\n classes: currentPage === i ? 'is-active' : ''\n });\n }\n } else {\n result.push({\n text: '1',\n payload: 'page-1',\n classes: currentPage === 1 ? 'is-active' : ''\n });\n // eslint-disable-next-line no-plusplus\n for (let i = 1; i < totalPages; i++) {\n result.push({ text: String(i + 1), payload: `page-${String(i + 1)}`, classes: currentPage === i + 1 ? 'is-active' : '' });\n }\n }\n return result;\n }\n}\n","import { MapData } from '@net7/components';\nimport { DataSource } from '@net7/core';\nimport * as Leaflet from 'leaflet';\nimport { Subject } from 'rxjs';\n\nconst MARKER_ICON = Leaflet.icon({\n iconUrl: '/assets/pin.png',\n iconSize: [30, 45.5],\n popupAnchor: [0, -25],\n className: 'marker-icon'\n});\n\nconst MARKER_ICON_SELECTED = Leaflet.icon({\n iconUrl: '/assets/pin-selected.png',\n iconSize: [30, 45.5],\n popupAnchor: [0, -25],\n className: 'marker-icon-selected'\n});\n\nexport class AwMapDS extends DataSource {\n public map;\n\n public markerOpen$: Subject<object> = new Subject();\n\n public markerClose$: Subject<void> = new Subject();\n\n protected transform = (data): MapData => ({\n containerId: 'map-canvas',\n tileLayers: [{\n url: 'https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png',\n options: {}\n }],\n initialView: {\n center: [0, 0],\n zoom: 13\n },\n _setInstance: (map) => {\n this.map = map;\n const bounds = new Leaflet\n .LatLngBounds(data\n .filter((d) => this.isValidMarker(d))\n .map(({ lat, lon }) => [lat, lon]));\n this.map.fitBounds(bounds);\n\n // adding markers\n const markers = Leaflet.markerClusterGroup({\n showCoverageOnHover: false,\n });\n data\n // skip broken markers\n .filter((d) => (this.isValidMarker(d)))\n // draw markers on the map\n .forEach(({ lat, lon, item }) => {\n const { label } = item;\n const marker = Leaflet.marker([lat, lon], { icon: MARKER_ICON })\n .addTo(markers)\n .bindPopup(label)\n .on('click', ({ target }) => {\n const { icon } = target.options;\n const { className } = icon.options;\n if (className === 'marker-icon-selected') {\n this.markerOpen$.next(item);\n }\n });\n\n marker.getPopup().on('remove', ({ target }) => {\n target._source.setIcon(MARKER_ICON);\n this.markerClose$.next();\n });\n\n marker.getPopup().on('add', ({ target }) => {\n target._source.setIcon(MARKER_ICON_SELECTED);\n });\n });\n this.map.addLayer(markers);\n }\n });\n\n /**\n * Performs validation for a leaflet marker data.\n * If the data is invalid displays an error.\n *\n * @param marker data for a leaflet marker\n * @returns true if the marker data is valid\n */\n private isValidMarker({ lat, lon }): boolean {\n const test = (\n lat\n && lon\n && /^-?\\d+\\.\\d*$/.test(lat)\n && /^-?\\d+\\.\\d*$/.test(lon)\n );\n if (test) return true;\n console.error(`${lat}, ${lon} is not a valid marker!`);\n return false;\n }\n}\n","import { DataSource } from '@net7/core';\nimport dayjs from 'dayjs'; // in arianna pkg \"import * as dayjs\" does not work\nimport { max as _max, min as _min } from 'lodash';\nimport { Subject } from 'rxjs';\n\nconst ONE_YEAR = 31557600000;\nconst YEARS_MARGIN = 30;\n\nexport class AwTimelineDS extends DataSource {\n public timeline;\n\n public timelineLoaded$: Subject<void> = new Subject();\n\n public dataSet;\n\n public timelineControlsVisible = false;\n\n protected transform = (data) => {\n const { disableEndDates } = this.options.configuration;\n this.dataSet = data.map(({\n id, start, end, item, label\n }) => ({\n id,\n item,\n start: start ? dayjs(start).format('YYYY-MM-DD') : null,\n end: (end && end !== start && !disableEndDates)\n ? dayjs(end).format('YYYY-MM-DD') // show end date\n : null, // hide end date\n content: this.getItemTemplate(label, item.label),\n _meta: {\n dateText: label\n }\n }));\n\n const max = this.getMax();\n const min = this.getMin();\n\n return {\n containerID: 'timeline-component',\n libOptions: {\n max,\n min,\n start: min,\n end: max,\n align: 'left',\n minHeight: '100px',\n // height: '100px',\n locale: 'it_IT',\n // cluster: {\n // fitOnDoubleClick: true,\n // clusterCriteria: (f, s) => f.content.charAt(0) === s.content.charAt(0),\n // titleTemplate: '{count} eventi',\n // },\n showCurrentTime: false,\n showTooltips: false,\n tooltip: {\n followMouse: false,\n template: (d: any, element: { title: string }) => `<div class=\"tooltip\">${element.title}</div>`\n },\n width: '100%',\n // minHeight: '350px',\n // maxHeight: '800px',\n zoomMax: ONE_YEAR * 2000, // 2000 years\n zoomMin: ONE_YEAR / 12, // a month\n // zoomFriction: 8\n },\n dataSet: this.dataSet,\n _setInstance: (timeline) => {\n this.timeline = timeline;\n this.timelineLoaded$.next();\n\n // fix cluster visualization\n // setTimeout(() => {\n // this.timeline.fit();\n // });\n\n // timeout for zoom controls\n setTimeout(() => {\n this.timelineControlsVisible = true;\n }, 1000);\n }\n };\n };\n\n getItemTemplate(datesLabel, label) {\n return (`\n <div class=\"dates\">\n <em>${datesLabel}</em>\n </div>\n <div class=\"content\">${label}</div>\n `);\n }\n\n getMax() {\n const maxDate = new Date(_max(this.getAllDates()));\n\n const year = maxDate.getFullYear();\n const month = maxDate.getMonth();\n const day = maxDate.getDate();\n return new Date(year + YEARS_MARGIN, month, day);\n }\n\n getMin() {\n const minDate = new Date(_min(this.getAllDates()));\n\n const year = minDate.getFullYear();\n const month = minDate.getMonth();\n const day = minDate.getDate();\n return new Date(year - YEARS_MARGIN, month, day);\n }\n\n getAllDates() {\n return [\n ...this.dataSet\n .filter(({ start }) => start)\n .map(({ start }) => start),\n ...this.dataSet\n .filter(({ end }) => end)\n .map(({ end }) => end)\n ];\n }\n}\n","// Any\nexport * from './linked-objects.ds';\nexport * from './autocomplete-wrapper.ds';\nexport * from './bubble-chart.ds';\nexport * from './chart-tippy.ds';\n\n// Home Layout\nexport * from './carousel.ds';\nexport * from './hero.ds';\nexport * from './table.ds';\nexport * from './home-hero-patrimonio.ds';\nexport * from './home-facets-wrapper.ds';\nexport * from './home-item-tags-wrapper.ds';\nexport * from './home-autocomplete.ds';\n\n// Entita Layout\nexport * from './entita-nav.ds';\nexport * from './entita-metadata-viewer.ds';\n\n// Scheda Layout\nexport * from './related-entities.ds';\nexport * from './scheda-breadcrumbs.ds';\nexport * from './scheda-dropdown.ds';\nexport * from './sidebar-header.ds';\nexport * from './scheda-image.ds';\nexport * from './scheda-image-iiif.ds';\nexport * from './scheda-inner-title.ds';\nexport * from './scheda-metadata.ds';\nexport * from './scheda-pdf.ds';\nexport * from './tree.ds';\nexport * from './extended-tree.ds';\nexport * from './scheda-image-navigator.ds';\nexport * from './scheda-search.ds';\n\n// Search layout\nexport * from './search-layout-tabs.ds';\nexport * from './aw-facets-wrapper.ds';\n\n// Gallery Layout\nexport * from './gallery-results.ds';\n\n// Map Layout\nexport * from './map.ds';\n\n// Timeline Layout\nexport * from './timeline.ds';\n","import { EventHandler } from '@net7/core';\n\nexport class AwHeroEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-hero.click':\n if (payload === 'cerca' && this.dataSource.currentInputValue) {\n this.emitOuter('enter', this.dataSource.currentInputValue);\n }\n break;\n case 'aw-hero.change':\n this.dataSource.currentInputValue = payload;\n this.emitOuter('change', payload);\n break;\n case 'aw-hero.enter':\n this.emitOuter('enter', payload);\n break;\n\n default:\n console.warn('(hero) unhandled event of type', type);\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nexport class AwHomeFacetsWrapperEH extends EventHandler {\n private changedInput$: Subject<any> = new Subject()\n\n public listen() {\n this.changedInput$.pipe(debounceTime(500)).subscribe((payload) => {\n this.emitOuter('change', payload);\n });\n\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n // toggle visibility from facet header\n case 'aw-home-facets-wrapper.click':\n if (payload === null) { // interrupt event for locked facets\n break;\n }\n this.emitOuter('click', payload);\n this.handleEyeClick(payload);\n break;\n // change search input text\n case 'aw-home-facets-wrapper.change':\n this.dataSource.openTippy = payload.inputPayload.replace('-search', '');\n this.changedInput$.next(payload);\n break;\n // pressed return while typing in search\n case 'aw-home-facets-wrapper.enter':\n this.emitOuter('enter', payload);\n break;\n default:\n console.warn('unhandled inner event of type:', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-home-layout.facetswrapperrequest': // incoming autocomplete response\n this.dataSource.tippyMaker(payload.facetId.inputPayload);\n break;\n case 'aw-home-layout.facetswrapperclose': // incoming autocomplete response\n this.dataSource.tippyClose(payload.facetId.inputPayload);\n break;\n case 'aw-home-layout.facetswrapperresponse': // incoming autocomplete response\n // this.dataSource.tippyMaker(payload.response, payload.facetId.inputPayload);\n break;\n case 'aw-home-layout.lockfilter':\n this.updateFilters(payload);\n break;\n case 'aw-home-layout.tagclick':\n Object.keys(this.dataSource.lockedFacets).forEach((key) => {\n if (this.dataSource.lockedFacets[key].includes(payload)) {\n this.dataSource.lockedFacets[key].splice(\n this.dataSource.lockedFacets[key].indexOf(payload), 1\n );\n }\n });\n this.dataSource.update(this.dataSource.lastData);\n break;\n case 'aw-home-layout.clearselection':\n this.dataSource.lockedFacets = {};\n this.dataSource.closedEyes = [];\n this.dataSource.update(this.dataSource.lastData);\n break;\n case 'aw-home-layout.facetclick': {\n const { openTippy } = this.dataSource;\n if (this.dataSource.lockedFacets[openTippy]) {\n if (this.dataSource.lockedFacets[openTippy].indexOf(payload) === -1) {\n this.dataSource.lockedFacets[openTippy].push(payload);\n }\n } else {\n this.dataSource.lockedFacets[openTippy] = [payload];\n }\n this.dataSource.update(this.dataSource.lastData);\n } break;\n default:\n break;\n }\n });\n }\n\n handleEyeClick = (type) => {\n /*\n Toggles the status of the selected eye, then reloads the component.\n */\n if (this.dataSource.closedEyes) {\n const i = this.dataSource.closedEyes.indexOf(type);\n if (i >= 0) { // if the eye was closed\n this.dataSource.closedEyes.splice(i, 1); // open the eye\n } else { // if the eye was open\n this.dataSource.closedEyes.push(type); // close the eye\n }\n } else {\n this.dataSource.closedEyes = [type];\n }\n this.dataSource.update(this.dataSource.lastData); // reload the component with the same data\n }\n\n updateFilters = (selectedBubble) => {\n /*\n Adds (or removes) the ID of the selected bubble from the array of that type of entity.\n Example:\n • Click on bubble \"0263a407-d0dd\" of type \"org\"\n • Add \"0263a407-d0dd\" to array \"org\".\n Result:\n • lockedFacets = { \"org\":[ \"0263a407-d0dd\" ] }\n */\n selectedBubble.entity.id.replace(/ /g, '-'); // fix for space in ID\n const { id, typeOfEntity } = selectedBubble.entity; // payload is the selected bubble\n if (!this.dataSource.lockedFacets[typeOfEntity]) {\n this.dataSource.lockedFacets[typeOfEntity] = [];\n }\n if (this.dataSource.lockedFacets[typeOfEntity].includes(id)) {\n const i = this.dataSource.lockedFacets[typeOfEntity].indexOf(id);\n this.dataSource.lockedFacets[typeOfEntity].splice(i, 1);\n } else {\n this.dataSource.lockedFacets[typeOfEntity].push(id);\n }\n this.dataSource.update(this.dataSource.lastData); // reload the component with the same data\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwHomeHeroPatrimonioEH extends EventHandler {\n public listen() {\n // no events\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwHomeItemTagsWrapperEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe((event) => {\n switch (event.type) {\n case 'aw-home-item-tags-wrapper.click':\n this.emitOuter('click', event.payload);\n break;\n default:\n break;\n }\n });\n /* this.outerEvents$.subscribe(event => {\n\n }); */\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwHomeAutocompleteEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-home-autocomplete.click':\n this.emitOuter('click', payload);\n break;\n\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwEntitaNavEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-entita-nav.click':\n this.emitOuter('click', payload);\n break;\n default:\n console.warn('unhandled event type');\n break;\n }\n });\n /*\n\n this.outerEvents$.subscribe(event => {\n\n });\n */\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwSchedaSidebarEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n if (type === 'aw-sidebar-header.click') {\n this.dataSource.toggleSidebar();\n this.emitOuter(type, payload);\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwSidebarHeaderEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n if (type === 'aw-sidebar-header.click') {\n this.emitOuter('click', payload);\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { first, filter, withLatestFrom } from 'rxjs/operators';\nimport { ReplaySubject } from 'rxjs';\nimport { AwTreeDS } from '../data-sources';\n\nexport class AwTreeEH extends EventHandler {\n dataSource: AwTreeDS;\n\n private targetOffset = new ReplaySubject();\n\n private targetIsOpen = false;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-tree.click':\n if (payload.source === 'toggle') {\n setTimeout(() => {\n this.dataSource.build(payload.id);\n if (this.targetIsOpen) {\n this.scrollOpenedIntoView();\n }\n });\n }\n break;\n default:\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-scheda-layout.selectItem':\n this.dataSource.build(payload);\n break;\n case 'aw-scheda-layout.navigationresponse': {\n if (payload.currentItem) {\n this.dataSource.setActive(payload.currentItem);\n }\n const currentId = payload.currentItem || payload.tree.id;\n this.dataSource.load(payload);\n this.dataSource.build(currentId);\n } break;\n case 'aw-scheda-layout.routechanged':\n // has output (not first load)\n if (this.dataSource.output) {\n this.dataSource.build(payload);\n this.dataSource.setActive(payload);\n this.dataSource.highlightActive();\n this.scrollLeafIntoView();\n } break;\n case 'aw-scheda-layout.viewleaf':\n this.dataSource.out$\n .pipe(\n filter((data) => !!data),\n first()\n ).subscribe(() => {\n this.scrollLeafIntoView();\n });\n break;\n case 'aw-scheda-layout.treeposition': {\n const { target } = payload;\n const targetRect = target.getBoundingClientRect();\n this.targetIsOpen = target.className.indexOf('n7-icon-angle-right') !== -1;\n this.targetOffset.next(targetRect.top);\n } break;\n case 'aw-scheda-layout.selectParent':\n this.dataSource.build(payload);\n this.dataSource.setActive(payload);\n this.dataSource.highlightActive();\n this.scrollLeafIntoView();\n break;\n default:\n break;\n }\n });\n }\n\n private scrollOpenedIntoView = () => {\n this.dataSource.out$\n .pipe(\n filter((data) => !!data),\n first(),\n withLatestFrom(this.targetOffset),\n ).subscribe(([, offset]) => {\n setTimeout(() => {\n const wrapperEl = document.querySelector('.aw-scheda__tree-content') as HTMLElement;\n const expandedNode = document.getElementsByClassName('n7-tree__item is-expanded');\n const lastExpandedNode = expandedNode.length\n ? expandedNode[expandedNode.length - 1]\n : null;\n if (lastExpandedNode) {\n const scrollTreeEl = document.querySelector('.n7-tree') as HTMLElement;\n const wrapperElRect = wrapperEl.getBoundingClientRect();\n const offsetToAdjust = (offset as number) - wrapperElRect.top;\n scrollTreeEl.style.marginBottom = '1000px';\n lastExpandedNode.scrollIntoView();\n wrapperEl.scrollTop -= offsetToAdjust;\n window.scrollTo(0, 0);\n scrollTreeEl.style.marginBottom = '0px';\n }\n }, 200);\n });\n };\n\n private scrollLeafIntoView = () => {\n setTimeout(() => {\n const treeNode = document.querySelector('div.aw-scheda__tree');\n const leafNode = treeNode.querySelector('.is-active .n7-tree__item-contents') as HTMLElement;\n if (leafNode && !this.isInViewport(leafNode)) {\n leafNode.scrollIntoView();\n window.scrollTo(0, 0);\n if (!this.isInViewport(leafNode)) {\n this.scrollLeafIntoView();\n }\n }\n });\n };\n\n private isInViewport = (elem) => {\n const bounding = elem.getBoundingClientRect();\n return (\n bounding.top >= 0\n && bounding.left >= 0\n && bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight)\n && bounding.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n };\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwSchedaDropdownEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n if (type === 'aw-scheda-dropdown.click') {\n if (payload === 'toggle') {\n this.dataSource.toggle();\n } else {\n this.dataSource.onChange(payload);\n this.emitOuter('click', payload);\n }\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { AwSchedaPdfDS } from '../data-sources';\n\nexport class AwSchedaPdfEH extends EventHandler {\n public dataSource: AwSchedaPdfDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n if (type === 'aw-scheda-pdf.click') {\n this.dataSource.onChange(payload);\n } else if (type === 'aw-scheda-pdf.loaded') {\n this.dataSource.onLoaded();\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { AwExtendedTreeDS } from '../data-sources';\n\nexport class AwExtendedTreeEH extends EventHandler {\n dataSource: AwExtendedTreeDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n if (payload === 'search-button') {\n this.dataSource.toggleSearch();\n } else {\n // redirect event\n this.emitOuter(type.split('.')[1], payload);\n }\n });\n\n this.outerEvents$.subscribe(({ type }) => {\n if (type === 'aw-scheda-layout.routechanged') {\n this.dataSource.searchIsOpen = false;\n }\n if (type === 'aw-scheda-layout.extendedtreerequest') {\n this.dataSource.setLoading(true);\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { AwSchedaImageNavigatorDS } from '../data-sources';\n\nexport class AwSchedaImageNavigatorEH extends EventHandler {\n dataSource: AwSchedaImageNavigatorDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-scheda-image-navigator.change':\n this.dataSource.onChange(payload);\n break;\n case 'aw-scheda-image-navigator.submit':\n this.dataSource.onSubmit();\n break;\n default:\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { AwSchedaSearchDS } from '../data-sources';\n\nexport class AwSchedaSearchEH extends EventHandler {\n dataSource: AwSchedaSearchDS;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n // redirect event\n this.emitOuter(type.split('.')[1], payload);\n });\n\n this.outerEvents$.subscribe(({ type }) => {\n if (type === 'aw-scheda-layout.schedasearchrequest') {\n this.dataSource.setLoading(true);\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwSearchLayoutTabsEH extends EventHandler {\n public listen() {\n // TODO\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nexport class AwFacetsWrapperEH extends EventHandler {\n public internalFacetsChange$: Subject<any> = new Subject();\n\n public externalFacetsChange$: Subject<any> = new Subject();\n\n public listen() {\n // listen to inner (widget) events\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'facets-wrapper.facet': {\n // empty payload control\n if (!payload.eventPayload.inputPayload) {\n return;\n }\n const { facetId, value } = payload.eventPayload.inputPayload;\n if (value === '__loading__') {\n return;\n }\n const input = this.dataSource.getInputByFacetId(facetId);\n const context = input.getContext();\n\n // update\n this.dataSource.onFacetChange(payload);\n\n // internal\n if (context === 'internal') {\n this.internalFacetsChange$.next(input.getTarget());\n // external\n } else {\n this.externalFacetsChange$.next(facetId);\n }\n }\n break;\n\n case 'facets-wrapper.facetheader':\n this.dataSource.toggleGroup(payload);\n break;\n\n default:\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n if (type.indexOf('queryparamschange') !== -1 && this.dataSource.searchModel) {\n this.dataSource.updateFiltersFromQueryParams(payload);\n this.dataSource.updateInputsFromFilters();\n }\n });\n\n // listen to global events\n EventHandler.globalEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'global.searchresponse':\n if (this.dataSource.searchModel && this.dataSource.searchModel.getId() === payload) {\n this.dataSource.updateInputLinks();\n const internalFilters = this.dataSource.searchModel.getInternalFilters();\n\n internalFilters.forEach((filter) => {\n const input = this.dataSource.searchModel.getInputByFacetId(filter.facetId);\n const target = input.getTarget();\n // this.dataSource.filterTarget(target);\n this.dataSource.updateFilteredTarget(target);\n });\n }\n break;\n\n default:\n break;\n }\n });\n\n // internal facets change\n this.externalFacetsChange$.pipe(\n debounceTime(500),\n ).subscribe((facetId) => {\n const requestParams = this.dataSource.getRequestParams();\n const queryParams = this.dataSource.filtersAsQueryParams(requestParams.filters);\n\n Object.keys(queryParams).forEach((key) => { queryParams[key] = queryParams[key] || null; });\n // signal\n this.emitOuter('facetschange', { facetId });\n\n // reset page\n queryParams.page = 1;\n\n // router signal\n this.emitGlobal('navigate', {\n handler: 'router',\n path: [],\n queryParams,\n });\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwGalleryResultsEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-gallery-results.change':\n this.emitOuter('change', +payload.value);\n break;\n case 'aw-gallery-results.click':\n if (typeof payload === 'string') { // click on pagination\n if (payload.startsWith('page')) {\n // pagination routing is handled by the parent layout\n this.emitOuter('pagination', payload);\n } else if (payload.startsWith('goto')) {\n const targetPage = +payload.replace('goto-', '');\n // kill impossible page navigations\n if (targetPage > this.dataSource.totalPages) return;\n if (targetPage < 1 || targetPage === this.dataSource.currentPage) return;\n this.emitOuter('goto', payload);\n }\n } else { // click on a linked object\n this.emitOuter('click', payload);\n }\n break;\n default:\n console.warn('(gallery-results) unhandled inner event of type', type);\n break;\n }\n });\n // this.outerEvents$.subscribe(({ type, payload }) => {\n // });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwMapEH extends EventHandler {\n public listen() {\n this.outerEvents$.subscribe(({ type }) => {\n switch (type) {\n case 'aw-map-layout.init':\n this.listenToMarkers();\n break;\n\n default:\n break;\n }\n });\n }\n\n private listenToMarkers() {\n this.dataSource.markerOpen$.subscribe((item) => {\n this.emitOuter('markeropen', item);\n });\n\n this.dataSource.markerClose$.subscribe(() => {\n this.emitOuter('markerclose');\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { first } from 'rxjs/operators';\n\nexport class AwTimelineEH extends EventHandler {\n public listen() {\n this.outerEvents$.subscribe(({ type }) => {\n switch (type) {\n case 'aw-timeline-layout.init':\n this.listenToTimeline();\n break;\n\n case 'aw-timeline-layout.zoomout':\n this.dataSource.timeline.zoomOut(0.7);\n break;\n\n case 'aw-timeline-layout.zoomin':\n this.dataSource.timeline.zoomIn(0.7);\n break;\n\n default:\n break;\n }\n });\n }\n\n private listenToTimeline() {\n this.dataSource.timelineLoaded$\n .pipe(\n first()\n )\n .subscribe(() => {\n const { timeline, dataSet } = this.dataSource;\n timeline.on('click', ({ item }) => {\n const clicked = dataSet.find(({ id }) => item === id);\n if (clicked) {\n const { dateText } = clicked._meta;\n const { id, label } = clicked.item;\n this.emitOuter('click', {\n id,\n label,\n dateText,\n });\n } else {\n this.emitOuter('click', {\n id: null\n });\n }\n });\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwLinkedObjectsEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-linked-objects.change': // changed page size value (pagination)\n this.emitOuter('change', +payload.value);\n break;\n default:\n console.warn('unhandled event type: ', type, ' with payload: ', payload);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-home-layout.viewmore':\n // ask home-layout for more data\n this.dataSource.checkForMore(false);\n this.emitOuter('datarequest', {\n currentPage: this.dataSource.currentPage,\n });\n break;\n case 'aw-home-layout.dataresponse': {\n // handle incoming data from home-layout\n const { res } = payload;\n this.dataSource.handleIncomingData(res);\n } break;\n case 'aw-home-layout.scroll':\n this.handleScroll(payload);\n break;\n default:\n break;\n }\n });\n }\n\n public handleScroll = (target) => {\n const { totalObjects, loadedData } = this.dataSource;\n const loadedTotal = Array.isArray(loadedData.result) ? loadedData.result.length : 0;\n\n if (loadedTotal >= totalObjects) {\n return;\n }\n /*\n Check if the target element is scrolled near the end while data is not already loading.\n If the condition is met, a request for more data is sent.\n */\n if (\n target.scrollTop + target.clientHeight >= target.scrollHeight - 150\n && this.dataSource.loadedData.isLoading === false\n ) {\n this.dataSource.loadedData.isLoading = true;\n this.emitOuter('datarequest', {\n currentPage: this.dataSource.currentPage,\n });\n }\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwAutocompleteWrapperEH extends EventHandler {\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-autocomplete-wrapper.click':\n if (payload !== 'fallback-simple-autocomplete') { // if this is the fallback item, kill the event.\n this.emitOuter('clickresult', payload);\n }\n break;\n default:\n console.warn('unhandled event of type:', type);\n break;\n }\n });\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwBubbleChartEH extends EventHandler {\n public initialLoad = false;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-bubble-chart.click':\n if (this.dataSource.options.selectable !== false) {\n this.toggleSelection(payload);\n }\n this.emitOuter('lockfilter', this.dataSource.chartData.find((el) => payload === el.entity.id));\n break;\n case 'aw-bubble-chart.d3end': { // end of d3.js draw()\n let filteredChartData;\n // apply filters to the data before adding tooltips\n if (this.dataSource.filters.length > 0) {\n filteredChartData = this.dataSource.chartData.filter((el) => !this.dataSource.filters.includes(el.entity.typeOfEntity.replace(/ /g, '-')));\n } else {\n filteredChartData = this.dataSource.chartData;\n }\n this.emitOuter('d3end', {\n bubbles: this.dataSource.smartSlice(filteredChartData),\n selected: this.dataSource.selected,\n });\n } break;\n default:\n console.warn('unhandled inner event of type', type, 'with payload', payload);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-home-layout.select': {\n const { id } = payload;\n this.toggleSelection(id);\n const foundBubble = this.dataSource.chartData.find((el) => id === el.entity.id);\n if (foundBubble) {\n this.emitOuter('lockfilter', foundBubble);\n } else {\n console.warn('Unable to determine which bubble was selected.');\n }\n } break;\n case 'aw-home-layout.tagclick':\n this.toggleSelection(payload);\n break;\n case 'aw-home-layout.facetclick':\n if (!this.dataSource.selected.includes(payload)) {\n this.toggleSelection(payload);\n }\n break;\n case 'aw-home-layout.togglefilter':\n this.toggleFilter(payload);\n break;\n case 'aw-home-layout.clearselection':\n this.dataSource.selected = [];\n this.emitOuter('selection', []);\n break;\n case 'aw-entita-layout.filterbubbleresponse':\n case 'aw-home-layout.filterbubbleresponse':\n this.dataSource.updateChart(payload);\n break;\n default:\n break;\n }\n });\n }\n\n toggleSelection = (id) => {\n /*\n Expects the ID of a bubble.\n Updates the graph with a new request\n */\n this.dataSource.handleBubbleClick(id);\n this.emitOuter('selection', this.dataSource.selected);\n }\n\n toggleFilter = (f) => {\n /*\n Toggle the clicked eye-filter in the filteres array and\n redraw the graph.\n */\n if (this.dataSource.filters.includes(f)) {\n this.dataSource.filters.splice(this.dataSource.filters.indexOf(f), 1);\n } else {\n this.dataSource.filters.push(f);\n }\n this.dataSource.updateChart(null); // null means \"reuse the last response\"\n }\n}\n","import { EventHandler } from '@net7/core';\n\nexport class AwTableEH extends EventHandler {\n public listen() {\n /*\n this.innerEvents$.subscribe(event => {\n\n });\n\n this.outerEvents$.subscribe(event => {\n\n });\n */\n }\n}\n","import { EventHandler } from '@net7/core';\nimport tippy from 'tippy.js';\n\nexport class AwChartTippyEH extends EventHandler {\n private tippyList: any[] = [] // array of tippy instances\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-chart-tippy.select':\n this.emitOuter('select', payload);\n break;\n default:\n console.warn('(chart-tippy) unhandled inner event of type', type);\n break;\n }\n });\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-home-layout.d3end':\n case 'aw-entita-layout.d3end':\n case 'aw-scheda-layout.d3end':\n this.dataSource.update(payload); // creating DOM Elements (templates)\n setTimeout(() => { // wait DOM to be ready\n this.tippyMaker(payload.bubbles); // assign templates to the bubbles\n });\n break;\n default:\n break;\n }\n });\n }\n\n tippyMaker = (bubbles) => {\n /*\n Destroys every existing tooltip,\n then creates a new Tippy instance for each bubble.\n */\n // flush existing tooltips\n this.tippyList.forEach((t) => { if (t) { t.destroy(); } });\n this.tippyList = [];\n // create new tooltips\n bubbles.forEach((b) => { // give a tooltip to each bubble\n const target: Element = document.getElementById(`g_${b.entity.id}`);\n if (target) {\n this.tippyList.push( // add this tippy to the array of instances\n tippy(target, {\n content: document.getElementById(`template__${b.entity.id}`),\n interactive: true,\n appendTo: document.body, // suppress interactive warning\n arrow: true,\n flip: false,\n theme: 'light-border no-padding',\n placement: 'top',\n delay: 150,\n updateDuration: 400,\n }),\n );\n }\n });\n }\n}\n","// Home Layout\nexport * from './hero.eh';\nexport * from './home-facets-wrapper.eh';\nexport * from './home-hero-patrimonio.eh';\nexport * from './home-item-tags-wrapper.eh';\nexport * from './home-autocomplete.eh';\n\n// Entita Layout\nexport * from './entita-nav.eh';\n\n// Scheda Layout\nexport * from './scheda-breadcrumbs.eh';\nexport * from './sidebar-header.eh';\nexport * from './tree.eh';\nexport * from './scheda-dropdown.eh';\nexport * from './scheda-pdf.eh';\nexport * from './extended-tree.eh';\nexport * from './scheda-image-navigator.eh';\nexport * from './scheda-search.eh';\n\n// Search layout\nexport * from './search-layout-tabs.eh';\nexport * from './aw-facets-wrapper.eh';\n\n// Gallery layout\nexport * from './gallery-results.eh';\n\n// Map layout\nexport * from './map.eh';\n\n// Timeline layout\nexport * from './timeline.eh';\n\n// Any\nexport * from './linked-objects.eh';\nexport * from './autocomplete-wrapper.eh';\nexport * from './bubble-chart.eh';\nexport * from './table.eh';\nexport * from './chart-tippy.eh';\n","const getHeadTitle = ({\n name,\n pageName,\n pageDefault,\n label,\n}: {\n name: string;\n pageName: string;\n pageDefault: string;\n label?: string,\n}) => {\n const title = [\n name || 'Patrimonio Digitale',\n pageName || pageDefault,\n ];\n if (label) {\n title.push(label);\n }\n return title.join(' - ');\n};\n\nexport { getHeadTitle };\n","import { InnerTitleData, ItemPreviewData } from '@net7/components';\nimport { LayoutDataSource } from '@net7/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { first, map } from 'rxjs/operators';\nimport slugify from 'slugify';\nimport { ConfigurationService, CommunicationService, MainStateService } from '@net7/boilerplate-common';\nimport { CollectionItem, GetCollectionParams, GetCollectionResponse } from './collection-layout.types';\nimport { getHeadTitle } from '../../helpers/title.helper';\n\nexport class AwCollectionLayoutDS extends LayoutDataSource {\n private communication: CommunicationService;\n\n private configuration: ConfigurationService;\n\n private layoutOptions;\n\n private route;\n\n private mainState: MainStateService;\n\n public configId = 'collection-layout';\n\n public collectionID: string;\n\n private classificationsMap = {\n ff400: 'fondo-fotografico',\n al: 'aggregazione-logica',\n la: 'libro-antico',\n veac301: 'vestimento',\n f400: 'fotografia',\n uasc: 'cartografica',\n dc: 'scheda-dublin-core',\n oa300: 'scheda-oa',\n rmmus: 'materiale-musicale',\n ua: 'unita-archivistica',\n oac300: 'opera-arte-contemporanea',\n };\n\n innerTitleData = new BehaviorSubject<InnerTitleData>({\n title: { main: { text: '' } },\n });\n\n collectionDescription = new BehaviorSubject<string>('');\n\n pageSize = 6;\n\n /** Necessary to iterate with the loading item placeholder HTML */\n pageSizeList = [];\n\n currentOffset = 0;\n\n loadedCollections: BehaviorSubject<ItemPreviewData[] | []>;\n\n /** Button that loads more content into the layout */\n loadMoreButton = new BehaviorSubject(true);\n\n /** Controls the loading state of the layout */\n loading = true;\n\n onInit(payload) {\n this.communication = payload.communication;\n this.route = payload.route;\n this.configuration = payload.configuration;\n this.mainState = payload.mainState;\n this.loadedCollections = new BehaviorSubject([]);\n this.layoutOptions = this.configuration.get(this.configId);\n this.pageSizeList = new Array(this.pageSize);\n\n // head title\n this.setHeadTitle();\n }\n\n /**\n * After the collection ID has been loaded\n */\n onCollectionID() {\n // reset pagination params\n this.pageSize = 6;\n this.currentOffset = 0;\n // load\n this.loadMore(true);\n }\n\n loadMore(reload = false) {\n this.loading = true;\n const collection = this.loadedCollections.getValue();\n const params: GetCollectionParams = {\n id: this.collectionID,\n itemPagination: {\n limit: this.pageSize,\n offset: this.currentOffset,\n }\n };\n // check base url config\n const baseUrls = this.configuration.get('baseUrls') || {};\n const baseUrl = baseUrls.portaleMatriceServer || null;\n if (baseUrl) {\n params.baseUrl = baseUrl;\n }\n this.communication.request$('getCollection', {\n onError: (error) => console.error(error),\n params\n }).pipe(\n first((d) => !!d),\n map((d: GetCollectionResponse) => ({\n // map the backend response to the format used by ItemPreviewComponent\n response: d.items.map((item: CollectionItem) => ({\n title: this.stringLimiter(item.title, {\n maxLength: this.layoutOptions.item.title.maxLength,\n char: this.layoutOptions.item.title.char,\n }),\n text: this.stringLimiter(item.content, {\n maxLength: this.layoutOptions.item.description.maxLength,\n char: this.layoutOptions.item.description.char\n }),\n classes: `${item.image ? 'is-overlay has-image' : 'is-overlay has-image has-watermark'} ${this.classMap(item.classification)}`,\n image: item.image || this.layoutOptions.watermark,\n color: item.background,\n anchor: {\n href: item.url || this.urlBuilder(item.a4vId, item.title, item.type)\n },\n classification: item.classification\n })),\n text: d.text,\n title: d.title,\n total: d.total,\n }))\n ).subscribe({\n next: (data) => {\n this.loading = false;\n if (data.title) {\n this.setTitle(this.stringLimiter(data.title, {\n maxLength: this.layoutOptions.header.maxLength,\n char: this.layoutOptions.header.char\n }));\n }\n this.collectionDescription.next(data.text ? this.stringLimiter(data.text, {\n maxLength: this.layoutOptions.description.maxLength,\n char: this.layoutOptions.description.char\n }) : '');\n this.currentOffset += this.pageSize;\n const collectionData = !reload\n ? [...collection, ...data.response]\n : [...data.response];\n this.loadedCollections.next(collectionData);\n this.loadMoreButton.next(\n data.total > this.loadedCollections.getValue().length\n );\n },\n error: (e) => {\n console.error(e);\n this.loadMoreButton.next(false);\n },\n });\n }\n\n /**\n * Builds a URL from entity type,\n * entity id, and a slug string.\n *\n * @param type entity type\n * @param id entity ID\n * @param title human-readable title\n * @returns URL string including a slug\n */\n urlBuilder(id, title, type: string): string | undefined {\n if (id && title) {\n const titleSlug = slugify(title);\n const { schedaBasePath, entitaBasePath } = this.configuration.get('paths');\n const basePath = type === 'entity' ? entitaBasePath : schedaBasePath;\n return `/${basePath}/${id}/${titleSlug}`;\n } return undefined;\n }\n\n stringLimiter(content: string, options: { maxLength: number; char: string }): string {\n let res = content;\n if (content && options.maxLength) {\n res = content.slice(0, options.maxLength);\n if (options.char && res !== content) {\n res += options.char;\n }\n }\n return res;\n }\n\n setTitle(title: string): void {\n this.innerTitleData.next({\n title: { main: { text: title } }\n });\n }\n\n /**\n * Convert classification strings to css classes.\n *\n * @param classification a classification string like \"a4.oc.ua\"\n * @returns a CSS class\n */\n classMap(classification: string): string {\n if (!classification || classification.length < 1) {\n return '';\n }\n const codeMatch = /\\.(\\w+)$/gi.exec(classification);\n if (codeMatch) {\n const parsedCode = codeMatch[1]?.toLocaleLowerCase();\n const className = this.classificationsMap[parsedCode];\n if (className) {\n return `is-${className}`;\n }\n }\n return `is-${classification.replace('.', '-')}`;\n }\n\n private setHeadTitle() {\n this.mainState.update('headTitle', getHeadTitle({\n name: this.configuration.get('customer'),\n pageName: this.configuration.get(this.configId)?.pageName,\n pageDefault: 'Collezione',\n }));\n }\n}\n","import { ActivatedRoute } from '@angular/router';\nimport { EventHandler } from '@net7/core';\n\nexport class AwCollectionLayoutEH extends EventHandler {\n private route: ActivatedRoute;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-collection-layout.init':\n this.dataSource.onInit(payload);\n this.route = payload.route;\n this.listenRoute();\n break;\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n }\n\n listenRoute() {\n // get collection ID from the url\n this.route.paramMap.subscribe((params) => {\n if (params.get('id')) {\n this.dataSource.collectionID = params.get('id');\n this.dataSource.onCollectionID();\n }\n });\n }\n}\n","import * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\nimport { AwCollectionLayoutDS } from './collection-layout.ds';\nimport { AwCollectionLayoutEH } from './collection-layout.eh';\n\nexport const AwCollectionLayoutConfig = {\n layoutId: 'aw-collection-layout',\n widgets: [ // array of components of this layout\n ],\n layoutDS: AwCollectionLayoutDS,\n layoutEH: AwCollectionLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n ConfigurationService,\n AbstractLayout,\n CommunicationService,\n LayoutsConfigurationService,\n MainStateService\n} from '@net7/boilerplate-common';\nimport { AwCollectionLayoutConfig as config } from './collection-layout.config';\n\n@Component({\n selector: 'n7-collection-layout',\n templateUrl: './collection-layout.html'\n})\nexport class AwCollectionLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n constructor(\n private communication: CommunicationService,\n private layoutsConfiguration: LayoutsConfigurationService,\n private configuration: ConfigurationService,\n private route: ActivatedRoute,\n private mainState: MainStateService,\n ) {\n super(config);\n }\n\n protected initPayload() {\n return {\n communication: this.communication,\n layoutsConfiguration: this.layoutsConfiguration,\n configuration: this.configuration,\n route: this.route,\n mainState: this.mainState,\n };\n }\n\n ngOnInit() {\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"aw-collection-layout\"\n *ngIf=\"lb.dataSource as dataSource\">\n\n <div class=\"aw-collection-layout__header\">\n <n7-inner-title [data]=\"dataSource.innerTitleData.getValue()\">\n </n7-inner-title>\n </div>\n\n <div class=\"aw-collection-layout__description\"\n *ngIf=\"dataSource.collectionDescription.getValue()\">\n <div class=\"aw-collection-layout__description-text\">\n {{ dataSource.collectionDescription.getValue() }}\n </div>\n </div>\n\n <section class=\"n7-grid-3 aw-collection-layout__grid\"\n [ngClass]=\"{ 'is-loading': dataSource.loading }\"\n *ngIf=\"dataSource.loadedCollections | async\">\n \n <ng-container *ngFor=\"let item of (dataSource.loadedCollections | async)\">\n <n7-item-preview [data]=\"item\">\n </n7-item-preview>\n </ng-container>\n \n <ng-container *ngIf=\"dataSource.loading\">\n <n7-content-placeholder *ngFor=\"let n of dataSource.pageSizeList\"\n [data]=\"{\n blocks: [{ classes: 'collection-placeholder-item-preview' }]\n }\"></n7-content-placeholder>\n </ng-container>\n \n </section>\n\n <section *ngIf=\"dataSource.loadMoreButton.getValue()\">\n <button class=\"n7-btn n7-btn-cta n7-btn-xl aw-collection-layout__btn-more\"\n (click)=\"dataSource.loadMore()\"\n [disabled]=\"dataSource.loading\">\n MOSTRA ALTRI\n </button>\n </section>\n</div>\n","import { helpers } from '@net7/boilerplate-common';\n\nconst metadataIsEmpty = (value) => (!value || value === 'null');\n\nconst isLink = (fields: any[]) => !!fields.filter(({ key }) => key === 'isLink').length;\n\nconst isRepeater = (fields: any[]) => Array.isArray(fields);\n\nconst getLink = (fields: any[], paths) => {\n const schedaTypes = ['oggetto-culturale', 'aggregazione-logica'];\n const label = fields.find(({ key }) => key === 'label').value;\n const slug = helpers.slugify(label);\n const id = fields.find(({ key }) => key === 'id').value;\n const type = fields.find(({ key }) => key === 'type').value;\n let basePath = paths.entitaBasePath;\n if (schedaTypes.includes(type)) {\n basePath = paths.schedaBasePath;\n }\n return `<a href=\"${basePath}${id}/${slug}\">${label}</a>`;\n};\n\nconst getRepeater = (fields: any[], labels, metadataToShow, type, parentLabel, paths) => {\n const html = [];\n fields\n .filter(({ fields: subFields }) => subFields)\n .forEach(({ fields: subFields }) => {\n const subHtml = [];\n if (isLink(subFields)) {\n subHtml.push('<div>');\n subHtml.push(`<dd>${getLink(subFields, paths)}</dd>`);\n subHtml.push('</div>');\n }\n subFields\n .filter(({ key }) => {\n if (isLink(subFields)) {\n return !(['label', 'id', 'type', 'isLink'].includes(key));\n }\n return true;\n })\n .filter(({ key, value }) => metadataToShow.includes(`${parentLabel}.${key}`) && !metadataIsEmpty(value))\n .map(({ key, value }) => ({\n key,\n value,\n order: metadataToShow.indexOf(`${parentLabel}.${key}`),\n label: helpers.prettifySnakeCase(key, labels[`${type}.${parentLabel}.${key}`])\n }))\n .sort((a, b) => a.order - b.order)\n .forEach(({ label, value }) => {\n subHtml.push('<div>');\n subHtml.push(`<dt>${label}</dt>`);\n subHtml.push(`<dd>${value}</dd>`);\n subHtml.push('</div>');\n });\n\n if (subHtml.length) {\n html.push(`<dl>${subHtml.join('')}</dl>`);\n }\n });\n return html.length ? html.join('') : null;\n};\n\nexport default {\n normalize: ({\n fields: data,\n paths,\n labels,\n metadataToShow,\n type\n }) => {\n const result = [];\n if (Array.isArray(data)) {\n data.forEach(({\n key, value, label, fields\n }) => {\n // link & repeater control\n if (fields && Array.isArray(fields)) {\n if (isLink(fields)) {\n result.push({ key: label, value: getLink(fields, paths) });\n } else if (isRepeater(fields) && metadataToShow.includes(label)) {\n result.push({\n key: label,\n value: getRepeater(fields, labels, metadataToShow, type, label, paths)\n });\n }\n // default\n } else if (metadataToShow.includes(key)) {\n result.push({ key, value });\n }\n });\n }\n return result\n .filter(({ value }) => !metadataIsEmpty(value))\n .map(({ key, value }) => ({\n key,\n value,\n order: metadataToShow.indexOf(key),\n label: helpers.prettifySnakeCase(key, labels[`${type}.${key}`]),\n }))\n .sort((a, b) => a.order - b.order);\n }\n};\n","import { LayoutDataSource } from '@net7/core';\nimport { Observable, of } from 'rxjs';\nimport {\n catchError, filter, first, tap\n} from 'rxjs/operators';\nimport { get as _get } from 'lodash';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport metadataHelper from '../../helpers/metadata.helper';\nimport { EntitaLayoutResponse } from './entita-layout.types';\nimport { getHeadTitle } from '../../helpers/title.helper';\n\nexport class AwEntitaLayoutDS extends LayoutDataSource {\n protected configuration: any;\n\n protected mainState: any;\n\n protected router: Router;\n\n protected titleService: any;\n\n protected route: ActivatedRoute;\n\n private layoutConfig;\n\n public showRelationType: boolean;\n\n public showRelationQualification: boolean;\n\n public configId = 'entita-layout';\n\n public options: any;\n\n public pageTitle: string;\n\n public hasMetadataFields = false;\n\n public myResponse: EntitaLayoutResponse; // backend response object\n\n public selectedTab: string; // selected nav item\n\n public navHeader: any = {}; // nav-header (custom) data\n\n public currentId: string; // selected entity (url param)\n\n public currentSlug: string; // selected entity (url param)\n\n public currentPage = 1; // pagination value (url param)\n\n public pageSize = 10; // linked objects page size\n\n // ===== BUBBLE CHART =====\n public bubblesSize = 10; // related entities (bubbles) page size\n\n public bubblesEnabled: boolean;\n\n // ========================\n private communication: any;\n\n public fallbackText = '';\n\n public loading = true;\n\n onInit({\n configuration, mainState, router, route, options, titleService, communication,\n }) {\n this.route = route;\n this.communication = communication;\n this.configuration = configuration;\n this.mainState = mainState;\n this.options = options;\n this.router = router;\n this.titleService = titleService;\n this.currentId = '';\n this.currentPage = this.route.snapshot.queryParams.page ?? 1;\n this.one('aw-related-entities').updateOptions({\n config: this.configuration,\n });\n this.layoutConfig = this.configuration.get(this.configId);\n this.showRelationType = this.layoutConfig.showRelationType;\n this.showRelationQualification = this.layoutConfig.showRelationQualification;\n\n // navigation update\n this.mainState.updateCustom('currentNav', 'entita');\n\n // update head title\n this.setHeadTitle();\n\n // check if there is only one tab\n this.singleTabCheck();\n }\n\n singleTabCheck() {\n const navDS = this.getWidgetDataSource('aw-entita-nav');\n navDS.out$\n .pipe(\n filter((output) => !!output)\n )\n .subscribe(({ items }) => {\n // if there is only one tab\n // and there are no query params\n // navigate to the tab.\n if (items.length === 1 && !this.currentPage) {\n this.router.navigate([items[0].anchor.href], { replaceUrl: true });\n }\n });\n }\n\n public updateComponent = (id, data, options?) => {\n if (options) {\n this.one(id).updateOptions(options);\n }\n this.one(id).update(data);\n };\n\n /**\n * Updates the pagination component\n */\n drawPagination = (totalItems, pageSize) => {\n if (!this.getLinkedObjectItems()) return;\n const { href, queryParams } = this._getPaginationURL();\n this.one('n7-smart-pagination').updateOptions({\n mode: 'href',\n href,\n queryParams,\n });\n this.one('n7-smart-pagination').update({\n totalPages: this.getPageCount(totalItems, pageSize),\n currentPage: +this.currentPage || 1,\n pageLimit: 5,\n sizes: {\n label: 'Numero di risultati',\n list: [10, 25, 50],\n active: +this.pageSize,\n },\n });\n };\n\n /**\n * Updates the selected tab on tab change\n */\n handlePageNavigation = () => {\n if (!this.myResponse) {\n return;\n }\n this.getEntityDetailsPage(this.myResponse.id, +this.currentPage, +this.pageSize)\n .pipe(first())\n .subscribe({\n // Await for network response\n next: (data) => {\n this.myResponse = data;\n const { href, queryParams } = this._getPaginationURL();\n // update layout state\n this.pageSize = queryParams.size;\n this.currentPage = queryParams.page;\n // update components\n this.drawPagination(this.getItemCount(), this.pageSize);\n this.one('aw-linked-objects').updateOptions({\n paginationParams: { href, queryParams },\n context: this.selectedTab,\n config: this.configuration,\n dynamicPagination: {\n total: this.getItemCount(),\n },\n page: queryParams.page,\n size: queryParams.size,\n pagination: true,\n });\n this.one('aw-linked-objects').update({ items: this.getLinkedObjectItems() });\n },\n error: (e) => catchError(e),\n });\n };\n\n handleNavUpdate = (tab) => {\n this.selectedTab = tab;\n this.updateWidgets(this.myResponse);\n this.one('aw-linked-objects').updateOptions({\n context: this.selectedTab,\n config: this.configuration,\n dynamicPagination: {\n total: this.getItemCount(),\n },\n page: this.currentPage,\n size: this.pageSize,\n pagination: true,\n paginationParams: this._getPaginationURL(),\n });\n this.one('aw-linked-objects').update({ items: this.getLinkedObjectItems() });\n // update the url with the correct page and size\n const queryParams: Params = {\n page: this.currentPage, size: this.pageSize,\n };\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams,\n queryParamsHandling: 'merge'\n });\n };\n\n updateWidgets(data) {\n /*\n Updates the widgets on this layout, based on route\n */\n const selected = this.selectedTab;\n Object.keys(data).forEach((k) => {\n if (Array.isArray(data[k]) && data[k].length === 0) { data[k] = null; }\n });\n this.one('aw-entita-nav').update({\n data,\n selected,\n basePath: this.getNavBasePath(),\n });\n this.updateComponent('aw-entita-metadata-viewer', this.getFields(this.myResponse));\n this.one('aw-related-entities').update(this.myResponse.relatedEntities);\n this.drawPagination(this.getItemCount(), this.pageSize);\n }\n\n /**\n * Given a page number and a list size, returns the data\n * for a single page of content.\n *\n * @param id Entity ID\n * @param pageNumber Page number to load\n * @param pageSize How many items need to be loaded\n */\n getEntityDetailsPage(id, pageNumber: number, pageSize: number): Observable<any> {\n return this.communication.request$('getEntityDetails', {\n onError: (error) => console.error(error),\n params: {\n entityId: id,\n itemsPagination: { offset: ((pageNumber || 1) - 1) * pageSize, limit: +pageSize },\n entitiesListSize: this.bubblesSize\n },\n }).pipe(\n // global metadata tab control\n tap(({ fields, typeOfEntity }) => {\n this.hasMetadataFields = !!metadataHelper.normalize({\n fields,\n paths: this.configuration.get('paths'),\n labels: this.configuration.get('labels'),\n metadataToShow: _get(this.configuration.get(this.configId), 'metadata-to-show', []),\n type: typeOfEntity\n }).length;\n })\n );\n }\n\n /*\n * Loads the data for the selected nav item, into the adjacent text block.\n */\n loadItem(id, slug, tab): Observable<any> {\n this.loading = true;\n if (id && tab) {\n this.currentId = id; // store selected item from url\n this.currentSlug = slug; // store selected item from url\n this.selectedTab = tab; // store selected tab from url\n return this.getEntityDetailsPage(id, this.currentPage, this.pageSize);\n }\n this.pageTitle = 'Entità Test';\n return of(null);\n }\n\n loadContent(res) {\n this.loading = false;\n const config = this.configuration.get('config-keys')[res.typeOfEntity];\n this.myResponse = res;\n this.navHeader = { // always render nav header\n icon: config ? config.icon : '',\n text: this.myResponse.label,\n color: config['class-name'],\n };\n this.one('aw-entita-nav').updateOptions({\n bubblesEnabled: this.bubblesEnabled,\n config: this.configuration.get(this.configId),\n hasMetadataFields: this.hasMetadataFields,\n labels: this.configuration.get('labels')\n });\n this.one('aw-entita-metadata-viewer').update(this.getFields(res));\n this.one('aw-linked-objects').updateOptions({\n context: this.selectedTab,\n config: this.configuration,\n page: this.currentPage,\n pagination: true,\n dynamicPagination: {\n total: this.getItemCount(),\n },\n paginationParams: this._getPaginationURL(),\n size: this.pageSize,\n });\n this.getLinkedObjectItems().forEach((el: any) => {\n el.relationName = res.label.length > 30\n ? `${res.label.substr(0, 30)}... `\n : res.label;\n });\n res.relatedEntities.forEach((el: any) => {\n el.relationName = res.label.length > 30\n ? `${res.label.substr(0, 30)}... `\n : res.label;\n });\n this.one('aw-linked-objects').update({ items: this.getLinkedObjectItems() });\n this.one('aw-related-entities').update(res.relatedEntities);\n // fallback text\n if (!this.hasMetadataFields) {\n this.fallbackText = this.configuration.get(this.configId).fallback;\n }\n // update head title\n this.setHeadTitle(this.myResponse.label);\n }\n\n private _getPaginationURL() {\n return {\n href: [\n this.configuration.get('paths').entitaBasePath,\n `${this.currentId}/`,\n this.currentSlug,\n `/${this.selectedTab}/`,\n ].join(''),\n queryParams: {\n page: this.currentPage || 1,\n size: this.pageSize,\n },\n };\n }\n\n public getNavBasePath() {\n return [\n this.configuration.get('paths').entitaBasePath,\n `${this.currentId}/`,\n this.currentSlug,\n ].join('');\n }\n\n public getItemCount(): number {\n switch (this.selectedTab) {\n case 'fondi-collegati':\n return this.myResponse.relatedLaTotalCount;\n case 'oggetti-collegati':\n return this.myResponse.relatedItemsTotalCount;\n default:\n return 0;\n }\n }\n\n public getFields(response) {\n const { fields, typeOfEntity } = response;\n const paths = this.configuration.get('paths');\n const labels = this.configuration.get('labels');\n let metadataToShow = _get(this.configuration.get(this.configId), 'metadata-to-show', []);\n if (this.selectedTab === 'overview') {\n metadataToShow = _get(this.configuration.get(this.configId), 'overview.informazioni', []);\n }\n\n return metadataHelper.normalize({\n fields,\n paths,\n labels,\n metadataToShow,\n type: typeOfEntity\n });\n }\n\n private getLinkedObjectItems() {\n return this.selectedTab === 'fondi-collegati'\n ? this.myResponse.relatedLa\n : this.myResponse.relatedItems;\n }\n\n /**\n * Calculates the total amount of pages\n *\n * @param items the number of records in the database\n * @param size the number of items shown on a page\n * @returns the total number of pages\n */\n private getPageCount(items: number, size: number) {\n return Math.floor(items / size);\n }\n\n private setHeadTitle(label?: string) {\n this.mainState.update('headTitle', getHeadTitle({\n label,\n name: this.configuration.get('customer'),\n pageName: this.configuration.get(this.configId)?.pageName,\n pageDefault: 'Entità',\n }));\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport class AwEntitaLayoutEH extends EventHandler {\n private destroyed$: Subject<void> = new Subject();\n\n private configuration: any;\n\n private route: any;\n\n private entityId: string;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-entita-layout.init':\n this.dataSource.onInit(payload);\n this.configuration = payload.configuration;\n this.route = payload.route;\n this.entityId = this.route.snapshot.params.id || '';\n this.dataSource.currentPage = this.route.snapshot.params.page || 1;\n this.listenRoute(this.entityId);\n // scroll top\n window.scrollTo(0, 0);\n break;\n\n case 'aw-entita-layout.destroy':\n this.destroyed$.next();\n break;\n\n case 'aw-entita-layout.showmore':\n if (payload) {\n this.dataSource.handleNavUpdate(payload);\n }\n break;\n\n default:\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-entita-nav.click':\n if (payload) {\n this.dataSource.selectedTab = payload;\n this.dataSource.handleNavUpdate(payload);\n }\n break;\n case 'aw-linked-objects.change': {\n const options = {\n context: this.dataSource.selectedTab,\n config: this.dataSource.configuration,\n dynamicPagination: {\n total: this.dataSource.myResponse.totalCount,\n },\n page: this.dataSource.currentPage,\n size: this.dataSource.pageSize,\n pagination: true,\n };\n this.dataSource.updateComponent(\n 'aw-linked-objects',\n { items: this.dataSource.myResponse.relatedItems },\n options,\n );\n } break;\n case 'n7-smart-pagination.change': // changed page size value (pagination)\n this.handlePageSizeChange(payload.value);\n break;\n default:\n break;\n }\n });\n }\n\n private handlePageSizeChange = (size) => {\n this.dataSource.pageSize = size;\n this.dataSource.currentPage = 1;\n this.dataSource.handleNavUpdate('oggetti-collegati');\n // this.dataSource.handlePageNavigation();\n }\n\n /**\n * Listens to routing events of this layout.\n */\n private listenRoute(selectedItem = '', forceReload = false) {\n // listen for \"page\" query param changes-\n this.route.queryParams.pipe(\n map((params: any) => ({\n page: params.page,\n size: params.size\n })),\n ).subscribe(({ page, size }) => {\n if (size) {\n this.dataSource.pageSize = size;\n }\n if (this.dataSource.currentPage !== page) {\n this.dataSource.currentPage = page;\n this.dataSource.handlePageNavigation();\n }\n });\n // get URL parameters with angular's paramMap\n this.route.paramMap.subscribe((params) => {\n // look for id\n if (params.get('id')) {\n if (this.dataSource.currentId === params.get('id') && !forceReload) {\n if (this.dataSource.selectedTab !== params.get('tab')) {\n this.dataSource.handleNavUpdate(params.get('tab'));\n }\n return;\n }\n // get item from response with id === id and return as promise\n this.dataSource.loadItem(params.get('id'), params.get('slug'), params.get('tab'))\n .subscribe((res) => {\n if (res) {\n this.dataSource.loadContent(res);\n // remove the entity of this page\n this.dataSource.updateWidgets(res);\n if (selectedItem) {\n this.emitOuter('selectItem', selectedItem);\n }\n }\n });\n } else {\n this.dataSource.loadItem();\n }\n // scroll top\n window.scrollTo(0, 0);\n });\n }\n}\n","import { SmartPaginationDS, SmartPaginationEH } from '@net7/boilerplate-common';\nimport { AwEntitaLayoutDS } from './entita-layout.ds';\nimport { AwEntitaLayoutEH } from './entita-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const AwEntitaLayoutConfig = {\n layoutId: 'aw-entita-layout',\n widgets: [ // array of components of this layout\n { id: 'aw-entita-nav', hasStaticData: true },\n { id: 'aw-entita-metadata-viewer' },\n { id: 'aw-linked-objects' },\n { id: 'aw-bubble-chart' },\n { id: 'aw-related-entities' },\n { id: 'aw-chart-tippy' },\n {\n id: 'n7-smart-pagination',\n dataSource: SmartPaginationDS,\n eventHandler: SmartPaginationEH,\n },\n ],\n layoutDS: AwEntitaLayoutDS,\n layoutEH: AwEntitaLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","//---------------------------\n// BREADCRUMBS.ts\n//---------------------------\n\nimport {\n Component, Input, ViewChild, ElementRef, AfterViewChecked,\n} from '@angular/core';\nimport tippy from 'tippy.js';\n\n/**\n * Interface for a single BreadcrumbsComponent's \"Item\"\n *\n * @property label (required)\n * @property payload (required)\n * @property classes (optional)\n * @property _meta (optional)\n *\n */\nexport interface SmartBreadcrumbsItem {\n /**\n * item's label\n */\n label: string;\n /**\n * action click's payload\n */\n payload: any;\n /**\n * additional html classes\n */\n classes?: any;\n /**\n * additional info useful for the component's logic\n */\n _meta?: any;\n}\n\n/**\n * Interface for BreadcrumbsComponent's \"Data\"\n *\n * @property items (required)\n * @property classes (optional)\n *\n */\nexport interface SmartBreadcrumbsData {\n /**\n * each item renders a breadcrumb level\n */\n items: SmartBreadcrumbsItem[];\n /**\n * additional html classes\n */\n classes?: any;\n}\n\n@Component({\n selector: 'n7-smart-breadcrumbs',\n templateUrl: './smart-breadcrumbs.html',\n})\n\nexport class SmartBreadcrumbsComponent implements AfterViewChecked {\n @Input() data: SmartBreadcrumbsData;\n\n @Input() emit: any;\n\n @ViewChild('bcol', { read: ElementRef }) bcol: ElementRef\n\n @ViewChild('bcdiv', { read: ElementRef }) bcdiv: ElementRef\n\n ngAfterViewChecked(): void {\n this.triggerSmartEllipsis();\n }\n\n onClick(payload) {\n if (!this.emit) return;\n this.emit('click', payload);\n }\n\n /**\n * Builds tippy data for a node.\n */\n tippyBuilder = (node, content) => tippy(node, {\n content,\n interactive: true,\n arrow: true,\n theme: 'light-border no-padding',\n appendTo: document.body, // silence tippy interactive warning\n });\n\n /** Calculate the width of an HTML Element and it's child */\n getWidths = (parent: ElementRef, child: ElementRef) => {\n const pw = parent.nativeElement.clientWidth; // parent width\n const cw = child.nativeElement.clientWidth; // child width\n const pp = this.getSidePadding(parent.nativeElement); // parent padding\n return { parentWidth: pw - pp, childWidth: cw };\n }\n\n getSidePadding = (node) => (\n // returns an integer representing the sum of left and right paddings\n (+window.getComputedStyle(node, null).getPropertyValue('padding-left').match(/\\d+/)[0])\n + (+window.getComputedStyle(node, null).getPropertyValue('padding-right').match(/\\d+/)[0])\n )\n\n /**\n * Checks if the smart ellipsis functionality should be enabled,\n * if the children elements are too wide, it enables it.\n */\n triggerSmartEllipsis = () => {\n if (this.bcdiv && this.bcol) {\n let { parentWidth, childWidth } = this.getWidths(this.bcdiv, this.bcol);\n const liArray = this.bcol.nativeElement.children;\n if (parentWidth <= childWidth) { // collapse condition\n let i = 1; // Skip element in position 0\n while (parentWidth <= childWidth && i < liArray.length - 1) { // Skip last element\n const tippyData = document.createElement('ol'); // initialize tippy data\n tippyData.className = 'n7-smart-breadcrumbs__tippy-content';\n tippyData.appendChild(liArray[i].cloneNode(true)); // add <li> to tippy data (<ol>)\n liArray[i].children[0].innerText = '…'; // convert to ellipsis\n liArray[i].className = 'n7-breadcrumbs__item-ellipsis'; // set class to list item\n this.tippyBuilder(liArray[i].children[0], tippyData); // append tooltip to ellipsis\n i += 1;\n // update widths\n ({ parentWidth, childWidth } = this.getWidths(this.bcdiv, this.bcol));\n }\n }\n }\n }\n}\n","<div *ngIf=\"data\" class=\"n7-breadcrumbs {{ data.classes || '' }}\" #bcdiv>\n <nav class=\"n7-breadcrumbs__nav\">\n <ol class=\"n7-breadcrumbs__list\" #bcol>\n <li *ngFor=\"let item of data.items\" class=\"n7-breadcrumbs__item {{ item.classes || '' }}\">\n <span class=\"ellipsis-target\">\n <n7-anchor-wrapper [classes]=\"item.classes\"\n [data]=\"item.anchor\"\n (clicked)=\"onClick($event)\">\n {{ item.label }}\n </n7-anchor-wrapper>\n </span>\n </li>\n </ol>\n </nav>\n</div>\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { Title } from '@angular/platform-browser';\nimport {\n AbstractLayout,\n ConfigurationService,\n MainStateService,\n CommunicationService,\n LayoutsConfigurationService\n} from '@net7/boilerplate-common';\nimport { AwEntitaLayoutConfig as config } from './entita-layout.config';\n\n@Component({\n selector: 'aw-entita-layout',\n templateUrl: './entita-layout.html',\n})\nexport class AwEntitaLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private configuration: ConfigurationService,\n private layoutsConfiguration: LayoutsConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n private titleService: Title,\n ) {\n super(layoutsConfiguration.get('AwEntitaLayoutConfig') || config);\n }\n\n /*\n Optional variables that can be accessed from the layout's logic.\n If removed, they must also be removed from the layout's DataSource file,\n and from this file imports.\n */\n protected initPayload() {\n return {\n configuration: this.configuration,\n mainState: this.mainState,\n router: this.router,\n route: this.route,\n titleService: this.titleService,\n communication: this.communication,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"aw-entity n7-side-auto-padding\"\n *ngIf=\"lb.dataSource\">\n\n <div class=\"aw-entity__sidebar\">\n <!-- Custom header -->\n <div *ngIf=\"lb.dataSource.loading\"\n class=\"aw-entity__sidebar-title-wrapper-loading\">\n <n7-content-placeholder [data]=\"{\n blocks: [{\n classes: 'entity-placeholder-title'\n }]\n }\">\n </n7-content-placeholder>\n </div>\n <div *ngIf=\"!lb.dataSource.loading\"\n class=\"aw-entity__sidebar-title-wrapper color-{{lb.dataSource.navHeader.color}}\">\n <h1 class=\"aw-entity__sidebar-title\">\n <span class=\"aw-entity__sidebar-title-icon {{lb.dataSource.navHeader.icon}}\"></span>\n <span class=\"aw-entity__sidebar-title-text\">{{lb.dataSource.navHeader.text}}</span>\n </h1>\n </div>\n <!-- Navigation -->\n <div *ngIf=\"lb.dataSource.loading\"\n class=\"aw-entity__sidebar-nav-loading\">\n <n7-content-placeholder *ngFor=\"let n of [0,1,2]\"\n [data]=\"{\n blocks: [{\n classes: 'entity-placeholder-nav'\n }]\n }\">\n </n7-content-placeholder>\n </div>\n <n7-nav *ngIf=\"!lb.dataSource.loading\" \n [data]=\"lb.widgets['aw-entita-nav'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-entita-nav'].emit\">\n </n7-nav>\n </div>\n\n <!-- lb.dataSource.selectedTab -->\n <div *ngIf=\"lb.dataSource.loading\"\n class=\"aw-entity__content-loading\">\n <div class=\"aw-entity__content-loading-title\">\n <n7-content-placeholder [data]=\"{\n blocks: [{\n classes: 'entity-placeholder-title'\n }]\n }\"></n7-content-placeholder>\n </div>\n\n <div class=\"aw-entity__content-loading-items\">\n <n7-content-placeholder *ngFor=\"let n of [0,1,2,3]\"\n [data]=\"{\n blocks: [{ classes: 'entity-placeholder-item-preview' }]\n }\"></n7-content-placeholder>\n </div>\n </div>\n\n <div *ngIf=\"!lb.dataSource.loading\"\n class=\"aw-entity__content\">\n <section>\n <div *ngIf=\"lb.dataSource.myResponse.wikiTab || lb.dataSource.myResponse.extraTab\"\n class=\"aw-entity__content-section\"\n [hidden]=\"lb.dataSource.selectedTab != 'overview'\">\n <div class=\"aw-entity__overview-description\">\n {{lb.dataSource.myResponse.extraTab}}\n </div>\n <div class=\"aw-entity-layout__button-wrapper\">\n <a *ngIf=\"lb.dataSource.myResponse.wikiTab\"\n class=\"n7-btn n7-btn-light\"\n [routerLink]=\"[lb.dataSource.getNavBasePath() + '/wiki']\">\n DESCRIZIONE WIKIPEDIA <i class=\"n7-icon-angle-right\"></i>\n </a>\n <a *ngIf=\"lb.dataSource.myResponse.extraTab\"\n class=\"n7-btn n7-btn-light\"\n [routerLink]=\"[lb.dataSource.getNavBasePath() + '/maxxi']\">\n DESCRIZIONE MAXXI <i class=\"n7-icon-angle-right\"></i>\n </a>\n </div>\n </div>\n\n <ng-container *ngIf=\"(\n ['overview', 'informazioni'].includes(lb.dataSource.selectedTab)\n )\">\n <div class=\"aw-entity__content-section aw-entity__content-section-overview\">\n <div class=\"aw-entity__content-section-header\"\n *ngIf=\"lb.dataSource.selectedTab === 'overview'\">\n <h2 class=\"aw-entity__content-section-title\"\n *ngIf=\"lb.dataSource.selectedTab === 'overview'\">Informazioni</h2>\n <a *ngIf=\"lb.dataSource.selectedTab !== 'informazioni'\"\n class=\"n7-btn n7-btn-light\"\n [routerLink]=\"[lb.dataSource.getNavBasePath() + '/informazioni']\">\n TUTTE LE INFORMAZIONI <i class=\"n7-icon-angle-right\"></i>\n </a>\n </div>\n <p *ngIf=\"lb.dataSource.fallbackText\"\n class=\"aw-entity__content-section-empty\">\n {{ lb.dataSource.fallbackText }}\n </p>\n <n7-metadata-viewer class=\"aw-entity-layout__metadata-viewer\"\n [data]=\"lb.widgets['aw-entita-metadata-viewer'].ds.out$ | async\">\n </n7-metadata-viewer>\n </div>\n </ng-container>\n\n <div class=\"aw-entity__content-section aw-entity__content-section-overview\"\n *ngIf=\"(lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews && lb.dataSource.myResponse.relatedItems\"\n [hidden]=\"lb.dataSource.selectedTab != 'overview' && lb.dataSource.selectedTab != 'oggetti-collegati'\">\n <div class=\"aw-entity__content-section-header\">\n <h2 class=\"aw-entity__content-section-title\">Oggetti collegati</h2>\n\n <a *ngIf=\"lb.dataSource.selectedTab === 'overview' \"\n [routerLink]=\"[lb.dataSource.getNavBasePath() + '/oggetti-collegati/']\"\n [queryParams]=\"{ page: 1 }\"\n class=\"n7-btn n7-btn-light\">\n TUTTI GLI OGGETTI COLLEGATI <i class=\"n7-icon-angle-right\"></i>\n </a>\n </div>\n <div class=\"aw-entity__content-item-previews aw-item-preview-list\">\n <ng-container *ngFor=\"let preview of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews\">\n <div class=\"aw-item-preview-wrapper\">\n <n7-smart-breadcrumbs [data]=\"preview.breadcrumbs\">\n </n7-smart-breadcrumbs>\n <n7-item-preview [data]=\"preview\"\n [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n <div class=\"aw-item-preview-container-relations\">\n <!-- Relation -->\n <div class=\"aw-item-preview-relation\"\n *ngIf=\"preview.relation?.value && lb.dataSource.showRelationType\">\n <p class=\"aw-item-preview-relation__description\">Tipo di relazione\n <!-- <span class=\"aw-item-preview-relation__key\">{{preview.relation.key}}</span>: -->\n <span class=\"aw-item-preview-relation__value\">{{preview.relation.value}}</span>\n </p>\n </div>\n <!-- Qualification -->\n <div class=\"aw-item-preview-relation\"\n *ngIf=\"preview.qualification?.value && lb.dataSource.showRelationQualification\">\n <p class=\"aw-item-preview-relation__description\">Qualifica della relazione\n <span class=\"aw-item-preview-relation__value\">{{preview.qualification.value}}</span>\n </p>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <n7-smart-pagination *ngIf=\"lb.dataSource.selectedTab === 'oggetti-collegati'\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n </div>\n\n <div class=\"aw-entity__content-section aw-entity__content-section-overview\"\n *ngIf=\"(lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews && lb.dataSource.myResponse.relatedLa\"\n [hidden]=\"lb.dataSource.selectedTab != 'overview' && lb.dataSource.selectedTab != 'fondi-collegati'\">\n <div class=\"aw-entity__content-section-header\">\n <h2 class=\"aw-entity__content-section-title\">{{ lb.dataSource.configuration.get('labels')['aggregazioni-logiche-collegate'] }}</h2>\n\n <a *ngIf=\"lb.dataSource.selectedTab === 'overview' \"\n [routerLink]=\"[lb.dataSource.getNavBasePath() + '/fondi-collegati/']\"\n [queryParams]=\"{ page: 1 }\"\n class=\"n7-btn n7-btn-light\">\n TUTTE LE FONDI COLLEGATI <i class=\"n7-icon-angle-right\"></i>\n </a>\n </div>\n <div class=\"aw-entity__content-item-previews aw-item-preview-list\">\n <ng-container *ngFor=\"let preview of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews\">\n <div class=\"aw-item-preview-wrapper\">\n <n7-smart-breadcrumbs [data]=\"preview.breadcrumbs\">\n </n7-smart-breadcrumbs>\n <n7-item-preview [data]=\"preview\"\n [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n <div class=\"aw-item-preview-container-relations\">\n <!-- Relation -->\n <div class=\"aw-item-preview-relation\"\n *ngIf=\"preview.relation?.value && lb.dataSource.showRelationType\">\n <p class=\"aw-item-preview-relation__description\">Tipo di relazione\n <!-- <span class=\"aw-item-preview-relation__key\">{{preview.relation.key}}</span>: -->\n <span class=\"aw-item-preview-relation__value\">{{preview.relation.value}}</span>\n </p>\n </div>\n <!-- Qualification -->\n <div class=\"aw-item-preview-relation\"\n *ngIf=\"preview.qualification?.value && lb.dataSource.showRelationQualification\">\n <p class=\"aw-item-preview-relation__description\">Qualifica della relazione\n <span class=\"aw-item-preview-relation__value\">{{preview.qualification.value}}</span>\n </p>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <n7-smart-pagination *ngIf=\"lb.dataSource.selectedTab === 'fondi-collegati'\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n </div>\n\n <div class=\"aw-entity__content-section aw-entity__content-section-overview aw-related-entities__{{lb.dataSource.selectedTab}}\"\n *ngIf=\"lb.dataSource.myResponse.relatedEntities\"\n [hidden]=\"lb.dataSource.selectedTab != 'overview' && lb.dataSource.selectedTab != 'entita-collegate'\">\n <div class=\"aw-entity__content-section-header\">\n <h2 class=\"aw-entity__content-section-title\">Entità collegate</h2>\n <a *ngIf=\"lb.dataSource.selectedTab == 'overview'\"\n class=\"n7-btn n7-btn-light\"\n [routerLink]=\"[lb.dataSource.getNavBasePath() + '/entita-collegate']\">\n TUTTE LE ENTITÀ COLLEGATE <i class=\"n7-icon-angle-right\"></i>\n </a>\n </div>\n\n <!-- ENTITA COLLEGATE -->\n <section id=\"related-item-container\"\n class=\"aw-entity__section aw-entity__related\">\n <div class=\"aw-entity__inner-title\">\n {{lb.dataSource.relatedEntitiesHeader}}\n </div>\n <div class=\"aw-entity__related-items n7-grid-2 aw-item-preview-list\">\n <ng-container *ngFor=\"let preview of (lb.widgets['aw-related-entities'].ds.out$ | async)?.previews\">\n <div class=\"aw-item-preview-wrapper\">\n <n7-item-preview [data]=\"preview\"\n [emit]=\"lb.widgets['aw-related-entities'].emit\">\n </n7-item-preview>\n <div class=\"aw-item-preview-container-relations\">\n <!-- Relation -->\n <div class=\"aw-item-preview-relation\"\n *ngIf=\"preview.relation?.value && lb.dataSource.showRelationType\">\n <p class=\"aw-item-preview-relation__description\">Tipo di relazione\n <!-- <span class=\"aw-item-preview-relation__key\">{{preview.relation.key}}</span>: -->\n <span class=\"aw-item-preview-relation__value\">{{preview.relation.value}}</span>\n </p>\n </div>\n <!-- Qualification -->\n <div class=\"aw-item-preview-relation\"\n *ngIf=\"preview.qualification?.value && lb.dataSource.showRelationQualification\">\n <p class=\"aw-item-preview-relation__description\">Qualifica della relazione\n <span class=\"aw-item-preview-relation__value\">{{preview.qualification.value}}</span>\n </p>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </section>\n </div>\n <div class=\"aw-entity__content-section aw-entity__content-section-maxxi\"\n *ngIf=\"lb.dataSource.myResponse.extraTab\"\n [hidden]=\"lb.dataSource.selectedTab != 'maxxi'\">\n <div class=\"aw-entity__content-section-header aw-entity__content-section-header-decorated\">\n <h2 class=\"aw-entity__content-section-title\">Descrizione Maxxi</h2>\n </div>\n <div>\n {{lb.dataSource.myResponse.extraTab}}\n </div>\n </div>\n <div class=\"aw-entity__content-section aw-entity__content-section-wiki\"\n *ngIf=\"lb.dataSource.myResponse.wikiTab\"\n [hidden]=\"lb.dataSource.selectedTab != 'wiki'\">\n <div class=\"aw-entity__content-section-header aw-entity__content-section-header-decorated\">\n <h2 class=\"aw-entity__content-section-title\">Descrizione Wikipedia</h2>\n </div>\n <div>\n {{lb.dataSource.myResponse.wikiTab.text}}\n </div>\n <a href=\"{{lb.dataSource.myResponse.wikiTabUrl}}\">\n {{ lb.dataSource.myResponse.wikiTab.url }}\n </a>\n </div>\n </section>\n </div>\n</div>\n","export default {\n totalCount: 0,\n facets: [\n {\n id: 'query',\n type: 'value',\n },\n {\n id: 'query-all',\n type: 'value',\n hasStaticData: true,\n data: [\n {\n value: '1',\n label: 'Cerca in tutti i campi delle schede',\n },\n ],\n },\n {\n id: 'query-links',\n type: 'value',\n },\n {\n id: 'entity-types',\n type: 'value',\n operator: 'OR',\n limit: 10,\n order: 'count',\n },\n {\n id: 'entity-search',\n type: 'value',\n },\n {\n id: 'entity-links',\n type: 'value',\n searchData: ['entity-type'],\n },\n ],\n fields: [\n {\n inputs: [\n {\n type: 'text',\n facetId: 'query',\n placeholder: 'Cerca nei titoli delle schede',\n filterConfig: {\n delay: 500,\n minChars: 3,\n searchIn: [\n {\n key: 'label.ngrams',\n operator: 'LIKE',\n },\n ],\n },\n },\n {\n type: 'checkbox',\n facetId: 'query-all',\n filterConfig: {\n searchIn: [\n {\n key: 'label.ngrams^5,text^4,fields.*^3',\n operator: '=',\n },\n ],\n },\n },\n {\n type: 'link',\n facetId: 'query-links',\n filterConfig: {\n isArray: true,\n searchIn: [\n {\n key: 'source.entityType',\n operator: '=',\n },\n ],\n },\n },\n ],\n },\n {\n header: {\n label: 'Relazione con',\n classes: 'related-class',\n },\n inputs: [\n {\n type: 'checkbox',\n facetId: 'entity-types',\n filterConfig: {\n isArray: true,\n context: 'internal',\n target: 'entity-links',\n searchIn: [\n {\n key: 'searchData.entity-type',\n operator: '=',\n },\n ],\n },\n },\n {\n type: 'text',\n facetId: 'entity-search',\n placeholder: 'Cerca entità',\n filterConfig: {\n delay: 500,\n minChars: 3,\n context: 'internal',\n target: 'entity-links',\n searchIn: [\n {\n key: 'label',\n operator: 'LIKE',\n },\n ],\n },\n },\n {\n type: 'link',\n facetId: 'entity-links',\n emptyState: {\n label: 'La tua ricerca non ha dato risultati, prova a cambiare i filtri',\n },\n filterConfig: {\n isArray: true,\n limit: 20,\n pagination: {\n limit: 50,\n offset: 0\n },\n searchIn: [\n {\n key: 'relatedEntities.id',\n operator: '=',\n },\n ],\n },\n },\n ],\n },\n ],\n results: {\n order: { // Default Sorting Method\n type: 'text', // score | text | date\n key: 'label_sort', // docPath, elastic key, ecc\n direction: 'ASC' // ASC | DESC\n },\n fields: [\n {\n id: 'description',\n highlight: true,\n limit: 200,\n },\n ],\n },\n page: { offset: 0, limit: 10 },\n};\n","interface FacetInputData {\n value: string | number;\n label: string;\n counter: number;\n hidden?: boolean;\n options?: any;\n}\n\nexport abstract class AwFacetInput {\n static index = 0;\n\n private id: string;\n\n protected config: any;\n\n protected output: any;\n\n protected data: FacetInputData[];\n\n protected isEmpty = false;\n\n constructor(config) {\n this.config = config;\n this._setId();\n\n AwFacetInput.index += 1;\n }\n\n public abstract setActive(facetValue: any): void;\n\n protected abstract transform(): any;\n\n public update = () => { this.output = this.transform(); }\n\n public getId = () => this.id;\n\n public getData = () => this.data;\n\n public getConfig = () => this.config;\n\n public getFacetId = () => this.config.facetId;\n\n public getInputIndex = () => this.config.inputIndex;\n\n public getSectionIndex = () => this.config.sectionIndex;\n\n public getContext = () => this.config.filterConfig.context || 'external';\n\n public getTarget = () => this.config.filterConfig.target || null;\n\n public getSearchIn = () => this.config.filterConfig.searchIn || null;\n\n public getType = () => this.config.type;\n\n public getOutput = () => this.output;\n\n public clear() { return null; }\n\n public setIsEmpty = (empty: boolean) => {\n this.isEmpty = empty;\n }\n\n public setData = (newData: FacetInputData[]) => { this.data = newData; }\n\n private _setId() {\n this.id = `facet-input-${this.getType()}-${AwFacetInput.index}`;\n }\n}\n","import { AwFacetInput } from './aw-facet-input';\n\nexport class AwFacetInputCheckbox extends AwFacetInput {\n protected transform() {\n const facetId = this.getFacetId();\n\n return this.data.map(({ label, value }, index) => ({\n type: 'checkbox',\n id: `${this.getId()}-${index}`,\n label,\n payload: {\n facetId,\n source: 'input-checkbox',\n value: `${value}`,\n },\n _meta: { facetId, value: `${value}` },\n }));\n }\n\n public setActive(facetValue) {\n const { isArray } = this.config.filterConfig;\n\n this.output.forEach((config) => {\n if (isArray && Array.isArray(facetValue) && facetValue.indexOf(config._meta.value) !== -1) {\n config.checked = true;\n } else if (facetValue === config._meta.value) {\n config.checked = true;\n } else {\n config.checked = false;\n }\n });\n }\n}\n","import { AwFacetInput } from './aw-facet-input';\n\nconst RESULTS_LIMIT = 2000;\n\nexport class AwFacetInputLink extends AwFacetInput {\n private facetValue: string | string[];\n\n protected transform() {\n const facetId = this.getFacetId();\n const results = [];\n let resultsCounter = 0;\n\n this.data.forEach(({\n label,\n counter,\n hidden,\n value: rawValue,\n options: rawOptions\n }) => {\n if (hidden) {\n return;\n }\n resultsCounter += 1;\n\n if (resultsCounter > RESULTS_LIMIT) {\n return;\n }\n\n // normalize value\n const value = `${rawValue}`;\n const options = rawOptions || {};\n\n const classes = [];\n if (options.classes) { classes.push(options.classes); }\n if (this._isActive(this.facetValue, value)) { classes.push('is-active'); }\n if (value === '__loading__') { classes.push('loader-link'); }\n\n results.push({\n type: 'link',\n id: this.getId(),\n text: label,\n counter,\n payload: {\n facetId,\n source: 'input-link',\n value,\n },\n icon: options.icon || null,\n classes: classes.join(' '),\n _meta: { facetId, value },\n });\n });\n\n // empty state control\n const itemEmpty = results.filter((item) => item.id === 'empty')[0];\n if (this.isEmpty) {\n if (itemEmpty) {\n itemEmpty.classes = 'empty-text-link';\n } else {\n const { label } = this.getConfig().emptyState;\n const emptyId = 'empty-link';\n results.push({\n type: 'link',\n id: emptyId,\n text: label,\n classes: 'empty-text-link',\n _meta: { facetId: emptyId, value: null },\n });\n }\n } else if (itemEmpty) {\n itemEmpty.classes = 'empty-text-link is-hidden';\n }\n\n return results;\n }\n\n public setActive(facetValue) {\n this.output.forEach((config) => {\n const isActive = this._isActive(facetValue, config._meta.value);\n let classes = config.classes ? config.classes.split(' ') : [];\n if (!isActive) {\n classes = classes.filter((className) => className !== 'is-active');\n } else if (classes.indexOf('is-active') === -1) {\n classes.push('is-active');\n }\n config.classes = classes.join(' ');\n });\n }\n\n private _isActive(facetValue, value) {\n this.facetValue = facetValue;\n\n return (\n (Array.isArray(facetValue) && facetValue.indexOf(value) !== -1)\n || (facetValue === value)\n );\n }\n\n public clear() {\n this.facetValue = [];\n }\n}\n","import { AwFacetInput } from './aw-facet-input';\n\nexport class AwFacetInputSelect extends AwFacetInput {\n protected transform() {\n const facetId = this.getFacetId();\n\n return {\n type: 'select',\n id: this.getId(),\n label: this.config.label,\n disabled: this.config.disabled,\n options: this.data ? this.data.map(({ value, label }) => ({\n // normalize value\n value: `${value}`,\n label,\n })) : [],\n payload: {\n facetId,\n source: 'input-select',\n },\n _meta: { facetId },\n };\n }\n\n public setActive(facetValue) {\n this.output.options\n .filter((option) => option.value === facetValue)\n .forEach((option) => { option.selected = true; });\n }\n}\n","import { helpers } from '@net7/boilerplate-common';\nimport { AwFacetInput } from './aw-facet-input';\n\nexport class AwFacetInputText extends AwFacetInput {\n protected transform() {\n const facetId = this.getFacetId();\n const payload = {\n facetId,\n source: 'input-text',\n };\n\n return {\n type: 'text',\n id: this.getId(),\n label: this.config.label,\n disabled: this.config.disabled,\n placeholder: this.config.placeholder,\n icon: this.config.icon,\n inputPayload: {\n ...payload,\n trigger: 'input',\n },\n enterPayload: {\n ...payload,\n trigger: 'enter',\n },\n iconPayload: {\n ...payload,\n trigger: 'icon',\n },\n _meta: { facetId },\n };\n }\n\n public setActive(facetValue) {\n this.output.value = helpers.unescapeQuotes(facetValue) || null;\n }\n}\n","/* eslint-disable max-classes-per-file */\nimport { get as _get, isEmpty as _isEmpty } from 'lodash';\nimport { Subject } from 'rxjs';\nimport { helpers } from '@net7/boilerplate-common';\nimport {\n AwFacetInput,\n AwFacetInputCheckbox,\n AwFacetInputText,\n AwFacetInputLink,\n AwFacetInputSelect,\n} from './aw-facet-inputs';\n\nexport type FilterOperators = '=' | '>' | '<' | '>=' | '<=' | '<>' | 'LIKE';\nexport type FacetTypes = 'value' | 'range';\nexport type FacetOperators = 'OR' | 'AND';\n\nconst INPUTS_MAP = {\n checkbox: AwFacetInputCheckbox,\n text: AwFacetInputText,\n link: AwFacetInputLink,\n select: AwFacetInputSelect,\n};\n\nconst FILTERS_MAP = {\n '=': '_filterDataEquals',\n '>': '_filterDataGreaterThan',\n '<': '_filterDataLessThan',\n '>=': '_filterDataGreaterOrEquals',\n '<=': '_filterDataLessOrEquals',\n '<>': '_filterDataNotEqual',\n LIKE: '_filterDataLike',\n};\n\nexport interface AwSearchConfig {\n totalCount: number;\n facets: any;\n page: any;\n results: any;\n fields: any;\n}\n\nexport interface Facet {\n id: string;\n type: FacetTypes;\n operator: FacetOperators;\n hasStaticData?: boolean;\n searchData?: string[];\n data?: any;\n}\n\nexport interface Filter {\n facetId: string;\n value: number | string | (number | string)[] | null;\n searchIn: Array<{\n key: string;\n operator?: FilterOperators;\n }>;\n isArray?: boolean;\n context?: 'internal' | 'external';\n target?: string;\n pagination?: {\n totalCount: number;\n limit: number;\n offset: number;\n };\n}\n\nexport class AwSearchModel {\n static queryParams: any = null;\n\n private _id: string;\n\n private _filters: Filter[] = [];\n\n private _facets: Facet[] = [];\n\n private _inputs: AwFacetInput[] = [];\n\n private _page: any;\n\n private _totalCount: number | null;\n\n private _config: AwSearchConfig;\n\n private _results$: Subject<any[]> = new Subject();\n\n constructor(id: string, config: AwSearchConfig) {\n this._id = id;\n this._config = config;\n\n this._setFilters();\n this._setFacets();\n this._setPage();\n this._setInputs();\n this._setInputsData();\n this._setTotalCount();\n\n // query params control\n /* eslint-disable @typescript-eslint/no-use-before-define */\n if (AwSearchModel.queryParams) {\n this.updateFiltersFromQueryParams(AwSearchModel.queryParams);\n AwSearchModel.queryParams = null;\n }\n }\n\n public getId = () => this._id;\n\n public getFilters = () => this._filters;\n\n public getFacets = () => this._facets;\n\n public getInputs = () => this._inputs;\n\n public getConfig = () => this._config;\n\n public getTotalCount = () => this._totalCount;\n\n public getFields = () => this._config.fields;\n\n public getResults$ = () => this._results$;\n\n public setResults = (results) => this._results$.next(results);\n\n public updateFilter(facetId, value, remove?: boolean) {\n const selectedFilters = this.getFiltersByFacetId(facetId);\n selectedFilters.forEach((filter) => {\n if (Array.isArray(filter.value) && remove) {\n filter.value = filter.value.filter((item) => item !== value);\n } else if (\n Array.isArray(filter.value)\n && filter.value.indexOf(value) === -1\n ) {\n filter.value.push(value);\n } else {\n filter.value = !remove ? helpers.escapeQuotes(value) : null;\n }\n });\n }\n\n public clear() {\n this.updateFiltersFromQueryParams({}, true);\n this._clearInputs();\n }\n\n public updateFiltersFromQueryParams(queryParams, clearAll = false) {\n this._facets.forEach(({ id }) => {\n const selectedFilters = this.getFiltersByFacetId(id);\n const value = queryParams[id];\n const isInternal = this.getInputByFacetId(id).getContext() === 'internal';\n\n if (isInternal && !clearAll) {\n return;\n }\n\n selectedFilters.forEach((filter) => {\n if (filter.isArray) {\n filter.value = value ? value.split(',') : [];\n } else {\n filter.value = value || null;\n }\n });\n });\n }\n\n public updateInputsFromFilters() {\n this._filters.forEach(({ facetId, value }) => {\n this.getInputByFacetId(facetId).setActive(value);\n });\n }\n\n public updateFacets(facets) {\n facets.forEach(({ id, data }) => this.updateFacet(id, data));\n this._setInputsData();\n }\n\n public updateTotalCount(totalCount) {\n this._totalCount = totalCount;\n }\n\n public updateFacet(facetId, data) {\n const selectedFacets = this._facets.filter((facet) => facet.id === facetId);\n if (!selectedFacets.length) {\n throw Error(`Facet with id '${facetId}' does not exists`);\n }\n\n selectedFacets.forEach((facet) => { facet.data = data; });\n }\n\n public reset() {\n this._filters.forEach((filter) => { filter.value = null; });\n }\n\n public getRequestParams() {\n return {\n facets: this._getRequestFacets(),\n page: this._page,\n results: this._config.results,\n filters: this._filters\n .filter((filter) => filter.context !== 'internal')\n .map(({\n facetId, value, searchIn, pagination\n }) => (pagination ? {\n facetId, value, searchIn, pagination\n } : {\n facetId, value, searchIn\n })),\n };\n }\n\n public getInternalFilters() {\n return this._filters\n .filter((filter) => (\n filter.context === 'internal'\n && !_isEmpty(filter.value)\n ))\n .map(({\n facetId, value, searchIn\n }) => ({\n facetId, value, searchIn\n }));\n }\n\n public filtersAsQueryParams(filters) {\n const queryParams: any = {};\n filters.forEach(\n (filter) => {\n queryParams[filter.facetId] = Array.isArray(filter.value)\n ? filter.value.join(',')\n : filter.value;\n },\n );\n\n return queryParams;\n }\n\n public getFiltersByFacetId(facetId: string) {\n return this._filters.filter((filter) => filter.facetId === facetId);\n }\n\n public getInputByFacetId(facetId: string) {\n return this._inputs.filter((input) => input.getFacetId() === facetId)[0];\n }\n\n public setInputData(facetId, data) {\n this.getInputByFacetId(facetId).setData(data);\n }\n\n public filterTarget(target) {\n const inputs = this._inputs.filter((input) => input.getTarget() === target);\n const targetInput = this.getInputByFacetId(target);\n const facet = this._facets.filter((f) => f.id === target)[0];\n const facetData = facet.data;\n\n const searchIns = [];\n inputs.forEach((input) => {\n const filter = this.getFiltersByFacetId(input.getFacetId())[0];\n const searchIn = input.getSearchIn();\n const { value } = filter;\n\n searchIns.push([searchIn, value]);\n });\n\n // filter\n facetData.forEach((item) => this._filterData(searchIns, item));\n\n // update\n targetInput.setData(facetData);\n\n if (targetInput.getConfig().emptyState) {\n const isEmpty = !facetData.filter((data) => !data.hidden).length;\n targetInput.setIsEmpty(isEmpty);\n }\n targetInput.update();\n }\n\n public setSearchConfigOrderBy(orderBy) {\n this._config.results.order.key = orderBy;\n }\n\n public setSearchConfigDirection(direction) {\n this._config.results.order.direction = direction;\n }\n\n public setSearchConfigType(type) {\n this._config.results.order.type = type;\n }\n\n public setPageConfigOffset(offset) {\n this._config.page.offset = offset;\n }\n\n public setPageConfigLimit(limit) {\n this._config.page.limit = limit;\n }\n\n private _clearInputs() {\n // do nothing\n }\n\n private _filterData(searchIns, item) {\n // reset\n item.hidden = false;\n searchIns.forEach(([searchIn, value]) => {\n searchIn.forEach(({ key, operator }) => {\n if (item.hidden) {\n return;\n }\n let refValue = _get(item, key, null);\n if (key.indexOf('searchData') !== -1 && Array.isArray(item.searchData)) {\n const searchDataKey = key.replace('searchData.', '');\n item.searchData.forEach(({ key: dataKey, value: dataValue }) => {\n if (dataKey === searchDataKey) {\n refValue = dataValue;\n }\n });\n }\n if (refValue === null) {\n item.hidden = true;\n } else if (FILTERS_MAP[operator]) {\n item.hidden = this[FILTERS_MAP[operator]](value, refValue);\n } else {\n console.warn(`SearchIn: operator ${operator} not supported`);\n }\n });\n });\n }\n\n private _filterDataEquals(value, refValue) {\n if (Array.isArray(refValue)) {\n if (Array.isArray(value)) {\n let inArray = value.length === 0;\n refValue.forEach((rv) => {\n if (value.indexOf(rv) !== -1) {\n inArray = true;\n }\n });\n return !(inArray);\n }\n return !(value && refValue.indexOf(value) !== -1);\n }\n if (Array.isArray(value)) {\n return !(\n !value.length || value.indexOf(refValue) !== -1\n );\n }\n return !(value && value === refValue);\n }\n\n private _filterDataGreaterThan(value, refValue) {\n if (!Array.isArray(value)) {\n return !(value && value > refValue);\n }\n return false;\n }\n\n private _filterDataLessThan(value, refValue) {\n if (!Array.isArray(value)) {\n return !(value && value < refValue);\n }\n return false;\n }\n\n private _filterDataGreaterOrEquals(value, refValue) {\n if (!Array.isArray(value)) {\n return !(value && value >= refValue);\n }\n return false;\n }\n\n private _filterDataLessOrEquals(value, refValue) {\n if (!Array.isArray(value)) {\n return !(value && value <= refValue);\n }\n return false;\n }\n\n private _filterDataNotEqual(value, refValue) {\n if (!Array.isArray(value)) {\n return !(value && value !== refValue);\n }\n return false;\n }\n\n private _filterDataLike(value, refValue) {\n if (\n value\n && typeof value === 'string'\n && typeof refValue === 'string'\n ) {\n const haystack = refValue.toLowerCase();\n const needle = value.toLocaleLowerCase();\n\n return !(haystack.indexOf(needle) !== -1);\n }\n return false;\n }\n\n private _setFilters() {\n this._config.fields.forEach((field) => {\n field.inputs.forEach((input) => this._filters.push({\n ...input.filterConfig,\n facetId: input.facetId,\n value: input.filterConfig.isArray ? [] : null,\n }));\n });\n }\n\n private _setFacets() {\n this._facets = this._config.facets;\n }\n\n private _setPage() {\n this._page = this._config.page;\n }\n\n private _setTotalCount() {\n this._totalCount = this._config.totalCount;\n }\n\n private _setInputs() {\n this._config.fields.forEach((sectionConfig, sectionIndex) => {\n sectionConfig.inputs.forEach((inputConfig, inputIndex) => {\n const InputModel = INPUTS_MAP[inputConfig.type];\n if (!InputModel) {\n throw Error(`Input type ${inputConfig.type} not supported`);\n }\n\n this._inputs.push(\n new InputModel({ ...inputConfig, inputIndex, sectionIndex }),\n );\n });\n });\n }\n\n private _setInputsData() {\n this._facets.forEach((facet) => this.setInputData(facet.id, facet.data));\n }\n\n private _getRequestFacets() {\n const results: Facet[] = [];\n this._facets.forEach((f) => {\n const facetConfig = { ...f };\n if (!f.hasStaticData) {\n delete facetConfig.data;\n }\n delete facetConfig.hasStaticData;\n\n // searchData control\n if (Array.isArray(facetConfig.data)) {\n facetConfig.data\n .filter((dataItem) => typeof dataItem.searchData !== 'undefined')\n .forEach((dataItem) => {\n delete dataItem.searchData;\n });\n }\n results.push(facetConfig);\n });\n return results;\n }\n}\n","import { cloneDeep } from 'lodash';\nimport { LayoutDataSource } from '@net7/core';\nimport {\n tap, takeUntil\n} from 'rxjs/operators';\nimport {\n Observable, of, fromEvent, Subject, BehaviorSubject, forkJoin\n} from 'rxjs';\nimport { helpers } from '@net7/boilerplate-common';\nimport facetsConfig from './search-facets.config';\nimport { AwSearchService } from '../../search/aw-search.service';\nimport { AwSearchModel } from '../../search/aw-search.model';\nimport entityLinksHelper from '../../search/entity-links.helper';\nimport { getHeadTitle } from '../../helpers/title.helper';\n\nexport class AwSearchLayoutDS extends LayoutDataSource {\n public layoutId = 'aw-search-layout';\n\n public configId = 'search-layout';\n\n public currentNav = 'ricerca';\n\n public pageNameDefault = 'Ricerca';\n\n public facetsConfig: any = facetsConfig;\n\n public paginationList = [10, 25, 50];\n\n protected destroyed$: Subject<void> = new Subject();\n\n protected communication: any;\n\n protected configuration: any;\n\n protected mainState: any;\n\n protected search: AwSearchService;\n\n protected searchModel: AwSearchModel;\n\n protected prettifyLabels: any;\n\n protected configKeys: any;\n\n public fallback: string;\n\n public resetButtonEnabled = true;\n\n public pageTitle: string;\n\n public resultsTitle: string;\n\n public totalCount: number;\n\n /** Pagination value (url parameter) */\n public currentPage: any = 1;\n\n /** Linked objects page size */\n public pageSize = 10;\n\n public sidebarIsSticky = false;\n\n public isFirstLoading = true;\n\n public resultsLoading = false;\n\n /** True when the user has input a text string */\n public isSearchingText = new BehaviorSubject(false);\n\n /** Current order method */\n public orderBy = 'label_sort';\n\n /** Current order direction */\n public orderDirection = 'ASC';\n\n public options: any;\n\n public orderByLabel = 'Ordina per';\n\n /** Options used to render the HTMLSelect */\n public orderByOptions: any = [\n {\n value: '_score_DESC',\n label: 'Ordine per pertinenza',\n type: 'score',\n selected: false\n }, {\n value: 'label_sort_ASC',\n label: 'Ordine alfabetico (A→Z)',\n type: 'text',\n selected: true // Mirrors the default sorting method in `search-facets.config.ts`\n }, {\n value: 'label_sort_DESC',\n label: 'Ordine alfabetico (Z→A)',\n type: 'text',\n selected: false\n }\n ];\n\n onInit({\n configuration, mainState, options, communication, search,\n }) {\n this.configuration = configuration;\n this.mainState = mainState;\n this.communication = communication;\n this.search = search;\n this.options = options;\n this.prettifyLabels = this.configuration.get('labels');\n this.configKeys = this.configuration.get('config-keys');\n this.fallback = this.configuration.get(this.configId).fallback;\n this.pageTitle = this.configuration.get(this.configId).title;\n\n // remove first\n // stateless search\n if (this.search.model(this.layoutId)) {\n this.search.remove(this.layoutId);\n }\n this.search.add(this.layoutId, cloneDeep(this.facetsConfig));\n this.searchModel = this.search.model(this.layoutId);\n\n // query params control\n if (AwSearchModel.queryParams) {\n this.searchModel.updateFiltersFromQueryParams(AwSearchModel.queryParams);\n AwSearchModel.queryParams = null;\n }\n this._sidebarStickyControl();\n this.mainState.updateCustom('currentNav', this.currentNav);\n\n // set head title\n this.setHeadTitle();\n }\n\n onDestroy() {\n this.destroyed$.next();\n AwSearchModel.queryParams = null;\n }\n\n onSearchResponse() {\n this.resetButtonEnabled = true;\n if (this.isFirstLoading) {\n this.isFirstLoading = false;\n this.one('facets-wrapper').update({ searchModel: this.searchModel });\n this.searchModel.updateInputsFromFilters();\n }\n }\n\n /**\n * Handles changes of the HTMLSelect order control\n * @param payload _score_DESC, label_sort_ASC, label_sort_DESC\n */\n onOrderByChange(payload: string) {\n const orderBy = payload.substring(0, payload.lastIndexOf('_'));\n const direction = payload.substring(payload.lastIndexOf('_') + 1);\n let type = '';\n // set selected\n this.orderByOptions.forEach((option) => {\n if (option.value === payload) {\n option.selected = true;\n type = option.type;\n } else {\n option.selected = false;\n }\n });\n this.orderBy = orderBy;\n this.orderDirection = direction;\n this.searchModel.setSearchConfigOrderBy(orderBy);\n this.searchModel.setSearchConfigDirection(direction);\n this.searchModel.setSearchConfigType(type);\n }\n\n onPageSizeChange(size): Observable<boolean> {\n this.pageSize = size;\n return this._updateSearchPage(this.currentPage);\n }\n\n onPaginationChange(payload): Observable<boolean> {\n const page = payload.replace('page-', '');\n return this._updateSearchPage(page);\n }\n\n onPaginationGoToChange(payload): Observable<boolean> {\n const page = payload.replace('goto-', '');\n return this._updateSearchPage(page);\n }\n\n drawPagination = () => {\n const { href, queryParams } = this._getPaginationParams();\n this.one('n7-smart-pagination').updateOptions({\n mode: 'href',\n href,\n queryParams,\n });\n this.one('n7-smart-pagination').update({\n totalPages: Math.ceil(this.totalCount / this.pageSize),\n currentPage: this.currentPage,\n pageLimit: 5,\n sizes: {\n label: 'Numero di risultati',\n list: this.paginationList,\n active: this.pageSize,\n },\n });\n };\n\n resetPagination() {\n this._updateSearchPage(1);\n }\n\n onResultsLimitChange(payload) {\n this.setLimit(payload);\n\n // reset page & offset\n this.currentPage = 1;\n this.searchModel.setPageConfigOffset(0);\n }\n\n setLimit(payload) {\n this.pageSize = payload;\n this.searchModel.setPageConfigLimit(payload);\n this.searchModel.setPageConfigOffset((this.currentPage - 1) * this.pageSize);\n }\n\n public getSearchModelId = () => this.layoutId;\n\n private getResultsReq$(params): Observable<any> {\n return this.communication.request$('search', {\n params,\n onError: (error) => console.error(error),\n }).pipe(\n tap(({ totalCount, results }) => {\n this.totalCount = totalCount;\n let resultsTitleIndex = 0;\n // results title\n if (this.totalCount > 1) {\n resultsTitleIndex = 2;\n } else if (this.totalCount === 1) {\n resultsTitleIndex = 1;\n }\n this.resultsTitle = this.configuration.get(this.configId).results[\n resultsTitleIndex\n ];\n this.searchModel.updateTotalCount(totalCount);\n\n this.one('aw-linked-objects').updateOptions({\n context: this.configId === 'gallery-layout' ? 'gallery' : 'search',\n config: this.configuration,\n page: this.currentPage,\n pagination: true,\n paginationParams: this._getPaginationParams(),\n dynamicPagination: {\n total: totalCount,\n },\n size: this.pageSize,\n });\n this.drawPagination();\n this.one('aw-linked-objects').update({ items: this._normalizeItems(results.items) });\n }),\n );\n }\n\n private getFacetsReq$(params) {\n return this.communication.request$('facets', {\n params,\n onError: (error) => console.error(error),\n }).pipe(\n tap(({ facets }) => {\n // entity links pagination control\n entityLinksHelper.onFacetsResponse(this.searchModel, facets);\n // facets labels\n this._addFacetsLabels(facets);\n // facets options\n this._addFacetsOptions(facets);\n this.searchModel.updateFacets(facets);\n }),\n );\n }\n\n public doSearchRequest$(): Observable<any> {\n const requestParams = this.searchModel.getRequestParams();\n const params = {\n searchParameters: {\n totalCount: 0, // fake param for apollo\n gallery: !!(this.configId === 'gallery-layout'),\n ...requestParams,\n },\n };\n // update offset\n entityLinksHelper.resetOffset();\n entityLinksHelper.updateParamsOffset(params.searchParameters);\n // initial loader\n entityLinksHelper.addInitialLoader(this);\n\n const resultsReq$ = this.getResultsReq$(params);\n const facetsReq$ = this.getFacetsReq$(params);\n return forkJoin(resultsReq$, facetsReq$);\n }\n\n private _updateSearchPage(page) {\n if (+page === this.currentPage) {\n return of(false);\n }\n\n this.currentPage = +page;\n\n const searchConfig = this.searchModel.getConfig();\n const pageConfig = searchConfig.page;\n const { limit } = pageConfig;\n const newOffset = (this.currentPage - 1) * limit;\n\n this.searchModel.setPageConfigOffset(newOffset);\n\n return of(true);\n }\n\n private _addFacetsLabels(facets) {\n facets\n .filter((f) => Array.isArray(f.data))\n .forEach((f) => {\n f.data.forEach((dataItem) => {\n const key = dataItem.label;\n dataItem.label = (\n this.configKeys[key]?.label\n || helpers.prettifySnakeCase(key, this.prettifyLabels[key])\n );\n });\n });\n }\n\n private _addFacetsOptions(facets) {\n facets\n .filter((f) => f.id === 'query-links')\n .forEach((f) => {\n f.data.forEach((dataItem) => {\n const config = this.configKeys[dataItem.value];\n if (config) {\n dataItem.options = {\n icon: config.icon,\n classes: `color-${config['class-name']}`,\n };\n }\n });\n });\n }\n\n private _normalizeItems(items) {\n return items.map((singleItem) => ({ item: { ...singleItem } }));\n }\n\n private _sidebarStickyControl() {\n // no sticky for Internet Explorer\n if (helpers.browserIsIE()) {\n return;\n }\n const source$ = fromEvent(window, 'scroll');\n\n source$.pipe(\n takeUntil(this.destroyed$),\n ).subscribe(() => {\n const windowOffsetTop = window.pageYOffset;\n const stickyParent = document.getElementsByClassName('sticky-parent')[0] as HTMLElement;\n const wrapperOffsetTop = stickyParent ? stickyParent.offsetTop : 0;\n this.sidebarIsSticky = wrapperOffsetTop <= windowOffsetTop;\n });\n }\n\n private _getPaginationParams() {\n const requestParams = this.searchModel.getRequestParams();\n const queryParams = this.searchModel.filtersAsQueryParams(requestParams.filters);\n\n Object.keys(queryParams).forEach((key) => { queryParams[key] = queryParams[key] || null; });\n\n // aditional params\n queryParams.orderby = this.orderBy;\n queryParams.orderdirection = this.orderDirection;\n queryParams.page = this.currentPage;\n queryParams.limit = this.pageSize;\n\n let href = this.configuration.get('paths').searchBasePath;\n if (this.configId === 'gallery-layout') {\n href = this.configuration.get('paths').galleryBasePath;\n }\n\n return {\n href,\n queryParams,\n };\n }\n\n private setHeadTitle() {\n this.mainState.update('headTitle', getHeadTitle({\n name: this.configuration.get('customer'),\n pageName: this.configuration.get(this.configId)?.pageName,\n pageDefault: this.pageNameDefault,\n }));\n }\n}\n","export default {\n totalCount: 0,\n facets: [\n {\n id: 'query',\n type: 'value'\n },\n {\n id: 'query-all',\n type: 'value',\n hasStaticData: true,\n data: [\n {\n value: '1',\n label: 'Cerca in tutti i campi delle schede'\n }\n ]\n },\n {\n id: 'entity-types',\n type: 'value',\n operator: 'OR',\n limit: 10,\n order: 'count'\n },\n {\n id: 'entity-search',\n type: 'value'\n },\n {\n id: 'entity-links',\n type: 'value',\n searchData: ['entity-type']\n },\n ],\n fields: [\n {\n inputs: [\n {\n type: 'text',\n facetId: 'query',\n placeholder: 'Cerca nei titoli delle schede',\n filterConfig: {\n delay: 500,\n minChars: 3,\n searchIn: [\n {\n key: 'label.ngrams',\n operator: 'LIKE'\n }\n ]\n }\n },\n {\n type: 'checkbox',\n facetId: 'query-all',\n filterConfig: {\n searchIn: [\n {\n key: 'label.ngrams^5,text^4,fields.*^3',\n operator: '='\n }\n ]\n }\n },\n ]\n },\n {\n header: {\n label: 'Relazione con',\n classes: 'related-class'\n },\n inputs: [\n {\n type: 'checkbox',\n facetId: 'entity-types',\n filterConfig: {\n isArray: true,\n context: 'internal',\n target: 'entity-links',\n searchIn: [\n {\n key: 'searchData.entity-type',\n operator: '='\n }\n ]\n }\n },\n {\n type: 'text',\n facetId: 'entity-search',\n filterConfig: {\n delay: 500,\n minChars: 3,\n context: 'internal',\n target: 'entity-links',\n searchIn: [\n {\n key: 'label',\n operator: 'LIKE'\n }\n ]\n }\n },\n {\n type: 'link',\n facetId: 'entity-links',\n emptyState: {\n label: 'La tua ricerca non ha dato risultati, prova a cambiare i filtri'\n },\n filterConfig: {\n isArray: true,\n limit: 20,\n pagination: {\n limit: 50,\n offset: 0\n },\n searchIn: [\n {\n key: 'relatedEntities.id',\n operator: '='\n }\n ]\n }\n }\n ]\n },\n ],\n results: {\n order: {\n type: 'score', // score | text | date\n key: '_score', // docPath, elastic key, ecc\n direction: 'DESC' // ASC | DESC\n },\n fields: [\n {\n id: 'description',\n highlight: true,\n limit: 200\n }\n ]\n },\n page: { offset: 0, limit: 12 }\n};\n","import { delay, filter } from 'rxjs/operators';\nimport tippy, { hideAll } from 'tippy.js';\nimport { AwLinkedObjectsDS } from '../../data-sources/linked-objects.ds';\nimport { AwSearchLayoutDS } from '../search-layout/search-layout.ds';\nimport facetsConfig from './gallery-facets.config';\n\nexport class AwGalleryLayoutDS extends AwSearchLayoutDS {\n public layoutId = 'aw-gallery-layout';\n\n public configId = 'gallery-layout';\n\n public currentNav = 'galleria';\n\n public pageNameDefault = 'Galleria';\n\n public facetsConfig = facetsConfig;\n\n public paginationList = [12, 24, 48];\n\n public pageSize = 12; // linked objects page size\n\n public breadcrumbsTooltip;\n\n onInit(payload) {\n super.onInit(payload);\n\n this.breadcrumbsTooltip = (\n this.configuration.get(this.configId)?.breadcrumbsTooltip\n ) || {};\n\n // load breadcrumbs tooltips\n if (!this.breadcrumbsTooltip?.disable) {\n this.loadTooltips();\n }\n }\n\n loadTooltips() {\n const linkedObjectsDS: AwLinkedObjectsDS = this.getWidgetDataSource('aw-linked-objects');\n linkedObjectsDS.out$.pipe(\n filter((data) => !!data),\n delay(1000) // symbolic timeout\n ).subscribe(() => {\n // clear first\n hideAll();\n\n // load\n tippy('.tooltip-trigger', {\n allowHTML: true,\n interactive: true,\n trigger: 'click',\n theme: 'light-border no-padding',\n placement: 'bottom-start',\n hideOnClick: 'toggle',\n content(reference) {\n const id = reference.getAttribute('data-template');\n const template = document.getElementById(id);\n return template.innerHTML;\n },\n ...(this.breadcrumbsTooltip?.libOptions || {})\n });\n });\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\nimport {\n debounceTime, takeUntil\n} from 'rxjs/operators';\nimport { helpers } from '@net7/boilerplate-common';\nimport entityLinksHelper from '../../search/entity-links.helper';\n\nexport class AwSearchLayoutEH extends EventHandler {\n public layoutId = 'aw-search-layout';\n\n private destroyed$: Subject<void> = new Subject();\n\n private route: any;\n\n /** Emits when any of the search-facets are changed */\n private facetsChange$: Subject<void> = new Subject();\n\n /** Emits when the pagination element\n * or the select-sort element are changed */\n private additionalParamsChange$: Subject<void> = new Subject();\n\n /** Last queried text, used to check if the text has changed */\n private previousText = '';\n\n /** Is true when the search is triggered with a new text-string */\n private textHasChanged = false;\n\n private scrollRefElement: HTMLElement;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case `${this.layoutId}.init`: {\n this.route = payload.route;\n this.dataSource.onInit(payload);\n this._listenToFacetsChange();\n this._listenToAdditionalParamsChange();\n this._listenToRouterChanges();\n this._listenToInternalFilters();\n const { value: textInput } = this.dataSource.searchModel.getFiltersByFacetId('query')[0];\n if ((textInput || '').length > 0) {\n this.dataSource.isSearchingText.next(true);\n setTimeout(() => {\n this.dataSource.onOrderByChange('_score_DESC');\n this.additionalParamsChange$.next(); // emit from observable stream\n }, 100);\n }\n // scroll top\n window.scrollTo(0, 0);\n } break;\n\n case `${this.layoutId}.destroy`:\n this.dataSource.onDestroy();\n this.destroyed$.next();\n break;\n\n case `${this.layoutId}.orderbychange`:\n // handle the change of result-order\n this.dataSource.onOrderByChange(payload);\n this.additionalParamsChange$.next(); // emit from observable stream\n break;\n\n case `${this.layoutId}.searchreset`:\n this.dataSource.resetButtonEnabled = false;\n this.dataSource.searchModel.clear();\n this.additionalParamsChange$.next();\n break;\n\n default:\n console.warn('(search) unhandled inner event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'facets-wrapper.facetschange': {\n this.dataSource.resetPagination();\n const { value: textInput } = this.dataSource.searchModel.getFiltersByFacetId('query')[0];\n // Checks if <input type=text>'s value has changed\n this.textHasChanged = !!(textInput && (textInput !== this.previousText));\n this.previousText = textInput;\n const activeOrder = this.dataSource.orderByOptions.filter((d) => d.selected)[0].value;\n if (this.textHasChanged && (textInput || '').length > 0) {\n // Add sort by score option\n this.dataSource.isSearchingText.next(true);\n } else if ((textInput || '').length === 0 && /score/i.test(activeOrder)) {\n // Remove sort by score option\n this.dataSource.isSearchingText.next(false);\n setTimeout(() => {\n this.dataSource.onOrderByChange('label_sort_ASC');\n this.additionalParamsChange$.next(); // emit from observable stream\n }, 100);\n }\n } break;\n\n case 'n7-smart-pagination.change':\n this.dataSource.onResultsLimitChange(payload.value);\n this.additionalParamsChange$.next();\n break;\n\n default:\n break;\n }\n });\n }\n\n /**\n * Handles changes to any of the search-facets\n */\n private _listenToFacetsChange() {\n this.facetsChange$.pipe(\n debounceTime(500),\n ).subscribe(() => {\n this.dataSource.resultsLoading = true;\n if (this.textHasChanged) {\n this.additionalParamsChange$.next();\n } else {\n this.dataSource.doSearchRequest$().subscribe(() => {\n this.dataSource.resultsLoading = false;\n this.dataSource.onSearchResponse();\n this.emitGlobal('searchresponse', this.dataSource.getSearchModelId());\n });\n }\n });\n }\n\n /**\n * Handles entity links pagination\n */\n private _listenToInternalFilters() {\n entityLinksHelper.listenToChanges(this.dataSource)\n .subscribe(() => {\n this.emitGlobal('searchresponse', this.dataSource.getSearchModelId());\n });\n }\n\n /**\n * Handles changes happening on pagination and select elements.\n */\n private _listenToAdditionalParamsChange() {\n this.additionalParamsChange$.subscribe(() => {\n const { searchModel } = this.dataSource;\n const requestParams = searchModel.getRequestParams();\n const queryParams = searchModel.filtersAsQueryParams(requestParams.filters);\n\n Object.keys(queryParams).forEach((key) => { queryParams[key] = queryParams[key] || null; });\n\n // aditional params\n queryParams.orderby = this.dataSource.orderBy;\n queryParams.orderdirection = this.dataSource.orderDirection;\n queryParams.page = this.dataSource.currentPage;\n queryParams.limit = this.dataSource.pageSize;\n\n // If the searched text was updated, overwrite the query params and force sorting by \"score\".\n if (this.textHasChanged) {\n queryParams.orderby = '_score';\n queryParams.orderdirection = 'DESC';\n this.textHasChanged = false;\n }\n\n this.emitGlobal('navigate', {\n handler: 'router',\n path: [],\n queryParams,\n });\n\n this.facetsChange$.next();\n });\n }\n\n /** URL changes */\n private _listenToRouterChanges() {\n this.route.queryParams.pipe(\n takeUntil(this.destroyed$),\n ).subscribe((params) => {\n this.emitOuter('queryparamschange', params);\n // aditional params control\n if (params.orderby && params.orderdirection) {\n this.dataSource.onOrderByChange(`${params.orderby}_${params.orderdirection}`);\n }\n if (params.page) {\n this.dataSource.onPaginationChange(`page-${params.page}`);\n }\n if (params.limit) {\n this.dataSource.setLimit(+params.limit);\n }\n this.facetsChange$.next();// scroll to ref element\n if (!this.scrollRefElement) {\n this.scrollRefElement = document.querySelector('.scroll-ref');\n } else if (!helpers.isElementInViewport(this.scrollRefElement)) {\n this.scrollRefElement.scrollIntoView();\n }\n });\n }\n}\n","import { AwSearchLayoutEH } from '../search-layout/search-layout.eh';\n\nexport class AwGalleryLayoutEH extends AwSearchLayoutEH {\n public layoutId = 'aw-gallery-layout';\n}\n","import { SmartPaginationDS, SmartPaginationEH } from '@net7/boilerplate-common';\nimport { AwGalleryLayoutDS } from './gallery-layout.ds';\nimport { AwGalleryLayoutEH } from './gallery-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\nimport { AwFacetsWrapperDS } from '../../data-sources';\nimport { AwFacetsWrapperEH } from '../../event-handlers';\n\nexport const AwGalleryLayoutConfig = {\n layoutId: 'aw-gallery-layout',\n /**\n * Array of components you want to use\n * in this layout\n */\n widgets: [\n { id: 'facets-wrapper', dataSource: AwFacetsWrapperDS, eventHandler: AwFacetsWrapperEH },\n { id: 'aw-linked-objects' },\n { id: 'aw-search-layout-tabs', hasStaticData: true },\n {\n id: 'n7-smart-pagination',\n dataSource: SmartPaginationDS,\n eventHandler: SmartPaginationEH,\n },\n ],\n layoutDS: AwGalleryLayoutDS,\n layoutEH: AwGalleryLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { AwSearchModel, AwSearchConfig } from './aw-search.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AwSearchService {\n private _models: any = {};\n\n constructor(\n private route: ActivatedRoute\n ) {\n this.route.queryParams.pipe(\n filter((params) => {\n if (Object.keys(params).length) return true;\n return false;\n }),\n ).subscribe((params) => {\n // to use in searchs\n AwSearchModel.queryParams = params;\n });\n }\n\n public add(id: string, config: AwSearchConfig) {\n if (this._models[id]) {\n throw Error(`Search model '${id}' already exists!`);\n }\n\n this._models[id] = new AwSearchModel(id, config);\n }\n\n public remove(id: string) {\n if (this._models[id]) {\n delete this._models[id];\n }\n }\n\n public model(id: string): AwSearchModel {\n return this._models[id] || null;\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'aw-facets-wrapper',\n templateUrl: './aw-facets-wrapper.html',\n})\nexport class AwFacetsWrapperComponent {\n @Input() data: any;\n\n @Input() emit: any;\n\n headerEmit(eventType, eventPayload) {\n if (!this.emit) {\n return;\n }\n this.emit('facetheader', { eventType, eventPayload });\n }\n\n facetEmit(eventType, eventPayload) {\n if (!this.emit) {\n return;\n }\n this.emit('facet', { eventType, eventPayload });\n }\n}\n","<div *ngIf=\"data\" class=\"n7-facets-wrapper {{ data.classes || '' }}\">\n <div *ngFor=\"let group of data.groups\" class=\"n7-facets-wrapper__group {{ group.classes || '' }}\">\n <n7-facet-header\n [data]=\"group.header\"\n [emit]=\"headerEmit.bind(this)\"\n ></n7-facet-header>\n\n <n7-facet\n *ngIf=\"group.isOpen\"\n [data]=\"group.facet\"\n [emit]=\"facetEmit.bind(this)\"\n ></n7-facet>\n </div>\n</div>","import { Component, Input } from '@angular/core';\n\nexport type GalleryBreadcrumbsTooltipData = {\n items: {\n label: string;\n }[]\n}\n\n@Component({\n selector: 'aw-gallery-breadcrumbs-tooltip',\n templateUrl: './gallery-breadcrumbs-tooltip.html'\n})\nexport class GalleryBreadcrumbsTooltipComponent {\n @Input() data: GalleryBreadcrumbsTooltipData;\n\n title = 'Percorso completo';\n\n isLast = (index) => this.data?.items.length === (index + 1);\n\n getLeftMargin = (index) => `${index * 4}px`;\n}\n","<div *ngIf=\"data\" class=\"aw-gallery-breadcrumbs-tooltip\">\n <div class=\"aw-gallery-breadcrumbs-tooltip__title\">{{ title }}</div>\n <ul class=\"aw-gallery-breadcrumbs-tooltip__items\">\n <li *ngFor=\"let item of data.items; let $i = index\"\n class=\"aw-gallery-breadcrumbs-tooltip__item\"\n [ngClass]=\"{ 'is-last': isLast($i) }\">\n <span class=\"aw-gallery-breadcrumbs-tooltip__item-icon n7-icon n7-icon-angle-right\"\n [ngStyle]=\"{ 'margin-left': getLeftMargin($i) }\"></span>\n <span class=\"aw-gallery-breadcrumbs-tooltip__item-label\">{{ item.label }}</span>\n </li>\n </ul>\n</div>","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n AbstractLayout,\n ConfigurationService,\n LayoutsConfigurationService,\n MainStateService,\n CommunicationService\n} from '@net7/boilerplate-common';\nimport { AwSearchService } from '../../search/aw-search.service';\nimport { AwGalleryLayoutConfig as config } from './gallery-layout.config';\n\n@Component({\n selector: 'aw-gallery-layout',\n templateUrl: './gallery-layout.html'\n})\nexport class AwGalleryLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n constructor(\n private configuration: ConfigurationService,\n private layoutsConfiguration: LayoutsConfigurationService,\n private mainState: MainStateService,\n private communication: CommunicationService,\n private search: AwSearchService,\n private route: ActivatedRoute,\n ) {\n super(layoutsConfiguration.get('AwGalleryLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n configuration: this.configuration,\n mainState: this.mainState,\n communication: this.communication,\n search: this.search,\n route: this.route,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div *ngIf=\"lb.dataSource as ds\" class=\"aw-search aw-gallery n7-side-auto-padding\"\n id=\"gallery-layout\">\n <div class=\"aw-search__header\">\n <div class=\"aw-search__header-left\">\n <h1 class=\"aw-search__header-title\">{{ ds.pageTitle }}</h1>\n </div>\n </div>\n <div class=\"aw-search__content-wrapper sticky-parent\">\n <!-- Left sidebar: facets -->\n <div *ngIf=\"!(lb.widgets['facets-wrapper'].ds.out$ | async)\"\n class=\"aw-search__sidebar-loading sticky-target\">\n <div class=\"aw-search__facets-loading\">\n <n7-content-placeholder [data]=\"{\n blocks: [{\n classes: 'search-placeholder-facet-input'\n }, {\n classes: 'search-placeholder-facet-check'\n }, {\n classes: 'search-placeholder-facet-item'\n }, {\n classes: 'search-placeholder-facet-item'\n }, {\n classes: 'search-placeholder-facet-item'\n }, {\n classes: 'search-placeholder-facet-item'\n }, {\n classes: 'search-placeholder-facet-item'\n }]\n }\">\n </n7-content-placeholder>\n </div>\n </div>\n <div *ngIf=\"!!(lb.widgets['facets-wrapper'].ds.out$ | async)\"\n class=\"aw-search__sidebar sticky-target\"\n [ngClass]=\"{ 'is-sticky': ds.sidebarIsSticky }\">\n <div class=\"aw-search__facets\">\n <aw-facets-wrapper [data]=\"lb.widgets['facets-wrapper'].ds.out$ | async\"\n [emit]=\"lb.widgets['facets-wrapper'].emit\">\n </aw-facets-wrapper>\n </div>\n </div>\n <div class=\"scroll-ref\">&nbsp;</div>\n <div class=\"aw-search__content\">\n <div class=\"aw-search__results-header\">\n <div class=\"aw-search__results-header-left\">\n <h3 *ngIf=\"!ds.resultsLoading\"\n class=\"aw-search__total\">\n <span class=\"aw-search__total-number\">{{ ds.totalCount }}</span>&nbsp;\n <span class=\"aw-search__total-title\">{{ ds.resultsTitle }}</span>\n </h3>\n </div>\n <div class=\"aw-search__results-header-right\">\n <label class=\"aw-search__results-select-orderby-label\"\n for=\"aw-search__results-select-orderby\">{{ ds.orderByLabel }}</label>\n <select (change)=\"lb.eventHandler.emitInner('orderbychange', $event.target.value)\"\n id=\"aw-search__results-select-orderby\">\n <option *ngFor=\"let option of ds.orderByOptions\"\n [value]=\"option.value\"\n [selected]=\"option.selected\"\n [hidden]=\"option.type === 'score' && ds.isSearchingText.value === false\">\n {{ option.label }}</option>\n </select>\n </div>\n </div>\n <!-- Search details -->\n <div *ngIf=\"ds.resultsLoading\"\n class=\"aw-search__results-wrapper-loading\">\n <n7-content-placeholder *ngFor=\"let n of [0,1,2,3,4,5,6,7,8,9]\"\n [data]=\"{\n blocks: [\n { classes: 'search-result-placeholder-title' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' }\n ]\n }\"></n7-content-placeholder>\n </div>\n <div *ngIf=\"!ds.resultsLoading\"\n class=\"aw-search__results-wrapper\">\n <div class=\"n7-grid-3\">\n <div *ngFor=\"let preview of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews; let $i = index\">\n \n <!-- BREADCRUMBS WITH TOOLTIP -->\n <div *ngIf=\"!ds.breadcrumbsTooltip?.disable\" class=\"aw-gallery__breadcrumbs\">\n <a class=\"aw-gallery__breadcrumbs-icon tooltip-trigger\" [attr.data-template]=\"'breadcrumbs-tooltip-' + $i\">\n <span class=\"n7-icon n7-icon-tree-icon\"></span>\n </a>\n <div class=\"aw-gallery__breadcrumbs-separator\">\n <span class=\"n7-icon n7-icon-angle-right\"></span>\n </div>\n <n7-smart-breadcrumbs [data]=\"preview.breadcrumbs\">\n </n7-smart-breadcrumbs>\n </div>\n\n <!-- NORMAL BREADCRUMBS -->\n <n7-smart-breadcrumbs *ngIf=\"ds.breadcrumbsTooltip?.disable\" [data]=\"preview.breadcrumbs\">\n </n7-smart-breadcrumbs>\n \n <!-- ITEMPREVIEW -->\n <n7-item-preview [data]=\"preview\"\n [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n <div [attr.id]=\"'breadcrumbs-tooltip-' + $i\" [ngStyle]=\"{ display: 'none' }\">\n <aw-gallery-breadcrumbs-tooltip\n [data]=\"preview.breadcrumbs\"\n ></aw-gallery-breadcrumbs-tooltip>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"ds.totalCount == 0\">\n <div class=\"aw-search__fallback\">\n <p class=\"aw-search__fallback-string\">\n {{ ds.fallback }}\n </p>\n <button [disabled]=\"!ds.resetButtonEnabled\"\n class=\"n7-btn aw-search__fallback-button\"\n (click)=\"lb.eventHandler.emitInner('searchreset', {})\">\n Resetta la ricerca\n </button>\n </div>\n </ng-container>\n <n7-smart-pagination *ngIf=\"ds.totalCount > 10\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n </div>\n </div>\n </div>\n</div>\n","import { LayoutDataSource } from '@net7/core';\nimport { Subject, forkJoin, fromEvent } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { CommunicationService, helpers } from '@net7/boilerplate-common';\nimport { getHeadTitle } from '../../helpers/title.helper';\n\nexport class AwHomeLayoutDS extends LayoutDataSource {\n private communication: CommunicationService;\n\n private mainState: any;\n\n private tippy: any;\n\n private configuration: any;\n\n private facetInputs: any = {};\n\n private autocompletePopover: any;\n\n private autocompletePopoverOpen = false;\n\n private autocompleteChanged$: Subject<string> = new Subject();\n\n public configId = 'home-layout';\n\n public numOfItemsStr: string = null;\n\n public currentHoverEntity: any = null;\n\n public hasScrollBackground = false;\n\n public resultsLimit = -1;\n\n public selectedEntitiesIds = [];\n\n public outerLinks: any;\n\n public outerLinksTitle: string;\n\n public outerLinksDescription: string;\n\n public homeAutocompleteQuery: string;\n\n private destroyed$: Subject<void> = new Subject();\n\n public homeAutocompleteIsLoading = false;\n\n public resultsListIsLoading = false;\n\n /** Enabled from: arianna-config/features-enabled/carousel */\n public carouselEnabled = false;\n\n // ===== BUBBLE CHART =====\n public bubblesEnabled = false; // true if this Arianna Web project has the bubble chart module\n\n public selectedBubbles: any[] = []; // array of IDs\n\n // store last bubble response to refresh the graph with the same data\n public lastBubbleResponse: any;\n\n // store the first array of bubbles, to find them in case of no results.\n public firstBubbleResponse: any;\n // ========================\n\n onInit({\n communication, mainState, configuration, tippy,\n }) {\n this.communication = communication;\n this.configuration = configuration;\n // this.facetData = [];\n this.mainState = mainState;\n this.tippy = tippy;\n this.resultsLimit = this.configuration.get(this.configId)['results-limit'];\n this.bubblesEnabled = this.configuration.get('features-enabled')?.bubblechart;\n this.carouselEnabled = this.configuration.get('features-enabled')?.carousel;\n if (this.carouselEnabled) {\n this.loadCarousel();\n }\n this.one('aw-hero').update(this.configuration.get(this.configId)['top-hero']);\n this.one('aw-home-hero-patrimonio').update(this.configuration.get(this.configId)['bottom-hero']);\n // update streams\n this.mainState.updateCustom('currentNav', 'home');\n this.setHeadTitle();\n // listen autocomplete changes\n this._listenAutoCompleteChanges();\n this.outerLinks = this.configuration.get(this.configId)['outer-links'].test;\n this.outerLinksTitle = this.configuration.get(this.configId)['outer-links'].title;\n this.outerLinksDescription = this.configuration.get(this.configId)['outer-links'].description;\n this.one('aw-bubble-chart').updateOptions({\n selectable: true,\n config: this.configuration,\n limit: this.configuration.get('bubble-chart').bubbleLimit,\n });\n this.one('aw-chart-tippy').updateOptions({\n basePath: this.configuration.get('paths').entitaBasePath,\n selectable: true,\n });\n }\n\n onDestroy() {\n this.destroyed$.next();\n }\n\n public makeRequest$(query, params) {\n // make request from EH\n return this.communication.request$(query, {\n onError: (error) => console.error(error),\n params,\n });\n }\n\n public updateComponent = (id, data, options?) => {\n // update components from EH\n if (options) {\n this.one(id).updateOptions(options);\n }\n this.one(id).update(data);\n };\n\n initialFilterRequest() {\n return this.communication.request$('globalFilter', {\n onError: (error) => console.error(error),\n params: {\n entitiesListSize: this.configuration.get('bubble-chart').bubbleLimit,\n },\n });\n }\n\n parseInitialRequest(response) {\n this.firstBubbleResponse = response.entitiesData;\n const facetData = [];\n response.typeOfEntityData.forEach((toe) => {\n const TOEconfigData = this.configuration.get('config-keys')[toe.type];\n facetData.push({\n ...toe,\n enabled: true,\n locked: false,\n ...TOEconfigData,\n });\n });\n this.one('aw-home-facets-wrapper').updateOptions({\n pageConfig: this.configuration.get(this.configId),\n paths: this.configuration.get('paths')\n });\n this.one('aw-home-facets-wrapper').update(facetData);\n }\n\n renderPreviewsFromApolloQuery(response: any) {\n if (!response || !response.itemsPagination) {\n return;\n }\n let numOfItems = response.itemsPagination.totalCount;\n if (numOfItems > 0) {\n let numOfThousand = 0;\n while (numOfItems > 999) {\n numOfItems -= 1000;\n numOfThousand += 1;\n }\n let numOfItemsTmpStr = `${numOfItems}`;\n if (numOfItems < 10) numOfItemsTmpStr = `00${numOfItems}`;\n else if (numOfItems < 100) numOfItemsTmpStr = `0${numOfItems}`;\n if (numOfThousand > 0) this.numOfItemsStr = `${numOfThousand}.${numOfItemsTmpStr}`;\n else this.numOfItemsStr = `${numOfItems}`;\n } else {\n this.numOfItemsStr = '0';\n }\n this.one('aw-linked-objects').updateOptions({\n context: 'home',\n config: this.configuration,\n });\n this.one('aw-linked-objects').update(response.itemsPagination);\n\n // scroll control\n setTimeout(() => {\n this._scrollBackgroundControl();\n });\n }\n\n public updateTags(onlyBubbles?: boolean) {\n if (!onlyBubbles) {\n this.renderItemTags();\n }\n }\n\n handleFacetSearchChange(change) {\n const payload: string = change.inputPayload;\n const { value } = change;\n // store the entered text in facetInputs\n this.facetInputs[payload] = value;\n }\n\n renderItemTags() {\n /*\n Try to build an item tag for each selected query looking at the data from the\n first response. If the needed bubble data cannot be found, ask the backend\n for that bubble's data.\n */\n const queryList = []; // list of pending queries\n const tagsData = []; // list of tags data built from query\n this.selectedBubbles.forEach((b) => { // try to get the data of each selected bubble\n const theBubble = this.firstBubbleResponse.find((el) => el.entity.id === b);\n if (theBubble) { // if a bubble was found\n const bubbleConfig = this.configuration.get('config-keys')[theBubble.entity.typeOfEntity];\n tagsData.push({\n label: theBubble.entity.label,\n icon: 'n7-icon-close',\n payload: b,\n classes: `tag-${bubbleConfig['class-name']}`,\n });\n } else { // if the bubble was not found, make a query\n const params = { entityId: b, entitiesListSize: 1 };\n queryList.push(this.makeRequest$('getMissingBubble', params));\n }\n });\n if (queryList.length > 0) { // if there are pending bubble queries\n forkJoin(queryList).subscribe((forkres) => {\n forkres.forEach((r: any) => {\n const bubbleConfig = this.configuration.get('config-keys')[r.typeOfEntity];\n tagsData.push({\n label: r.label,\n icon: 'n7-icon-close',\n payload: r.id,\n classes: `tag-${bubbleConfig['class-name']}`,\n });\n });\n this.one('aw-home-item-tags-wrapper').update(tagsData);\n });\n } else {\n this.one('aw-home-item-tags-wrapper').update(tagsData);\n }\n }\n\n /**\n * Loads data for the carousel component\n */\n loadCarousel() {\n const baseUrls = this.configuration.get('baseUrls') || {};\n const baseUrl = baseUrls.portaleMatriceServer || null;\n this.communication.request$('getSlider', baseUrl ? {\n params: { baseUrl }\n } : {}).subscribe({\n next: (res) => {\n if (res) {\n this.one('aw-carousel').update(res);\n }\n },\n error: (err) => {\n console.error(err);\n this.carouselEnabled = false;\n },\n });\n }\n\n onHeroChange(value) {\n if (value) {\n const escapedValue = helpers.escapeQuotes(value);\n this.autocompleteChanged$.next(escapedValue);\n this.homeAutocompleteIsLoading = true;\n this.homeAutocompleteQuery = escapedValue;\n if (!this.autocompletePopoverOpen) {\n this._toggleAutocompletePopover();\n }\n } else if (this.autocompletePopoverOpen) {\n this._toggleAutocompletePopover();\n }\n }\n\n private _scrollBackgroundControl() {\n const node = document.getElementById('bubble-results-list');\n if (!node) return;\n const source$ = fromEvent(node, 'scroll');\n\n // height control\n setTimeout(() => {\n this._setHasScrollBackground(node);\n }, 500);\n\n // scroll listen\n source$.pipe(\n debounceTime(50),\n ).subscribe(({ target }: { target: any }) => {\n this._setHasScrollBackground(target);\n });\n }\n\n private _setHasScrollBackground(target) {\n this.hasScrollBackground = target ? (\n target.scrollHeight > (target.scrollTop + target.clientHeight)\n ) : false;\n }\n\n private _listenAutoCompleteChanges() {\n this.one('aw-home-autocomplete').updateOptions({\n keys: this.configuration.get('config-keys'),\n config: this.configuration,\n labels: this.configuration.get('labels'),\n paths: this.configuration.get('paths'),\n });\n this.autocompleteChanged$.pipe(\n debounceTime(500),\n takeUntil(this.destroyed$),\n ).subscribe((value) => {\n this.communication.request$('autoComplete', {\n onError: (error) => console.error(error),\n params: {\n input: value,\n itemsPagination: { offset: 0, limit: this.configuration.get(this.configId)['results-limit'] },\n },\n }).subscribe((response) => {\n this.homeAutocompleteIsLoading = false;\n this.one('aw-home-autocomplete').update({\n response,\n query: value,\n });\n });\n });\n }\n\n private _toggleAutocompletePopover() {\n if (!this.autocompletePopover) {\n const template = document.getElementById('aw-home-advanced-autocomplete-popover');\n template.style.display = 'block';\n const [popOver] = this.tippy('.aw-home__top-hero .n7-hero__input', {\n content: template,\n trigger: 'manual',\n interactive: true,\n arrow: false,\n flip: false,\n appendTo: 'parent',\n theme: 'light-border',\n placement: 'bottom-start',\n maxWidth: '100%',\n onHidden: () => { this.autocompletePopoverOpen = false; },\n });\n this.autocompletePopover = popOver;\n }\n if (this.autocompletePopoverOpen) {\n this.autocompletePopover.hide();\n } else {\n this.autocompletePopover.show();\n }\n this.autocompletePopoverOpen = !this.autocompletePopoverOpen;\n }\n\n private setHeadTitle() {\n this.mainState.update('headTitle', getHeadTitle({\n name: this.configuration.get('customer'),\n pageName: this.configuration.get(this.configId)?.pageName,\n pageDefault: 'Homepage',\n }));\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject, forkJoin } from 'rxjs';\nimport { helpers } from '@net7/boilerplate-common';\n\nexport class AwHomeLayoutEH extends EventHandler {\n private destroyed$: Subject<void> = new Subject();\n\n private configuration: any;\n\n private route: any;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-home-layout.init':\n this.dataSource.onInit(payload);\n this.loadFilters();\n this.configuration = payload.configuration;\n // scroll top\n window.scrollTo(0, 0);\n break;\n case 'aw-home-layout.outerlinkclick':\n this.emitGlobal('navigate', {\n handler: 'router',\n path: payload,\n });\n break;\n case 'aw-home-layout.destroy':\n this.dataSource.onDestroy();\n break;\n case 'aw-home-layout.bubbleresultsviewallclick': {\n const entityLinks = this.dataSource.selectedBubbles.join(',');\n const basePath = this.configuration.get('paths').searchBasePath;\n this.emitGlobal('navigate', {\n handler: 'router',\n path: [basePath],\n queryParams: { 'entity-links': entityLinks },\n });\n }\n break;\n case 'aw-home-layout.clearselection':\n this.emitOuter('clearselection');\n break;\n default:\n console.warn('(home) unhandled inner event of type: ', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-bubble-chart.d3end': // bounce the event, from bubble-chart to chart-tippy\n this.emitOuter('d3end', payload);\n break;\n case 'aw-chart-tippy.select':\n this.emitOuter('select', payload);\n break;\n case 'aw-hero.enter': {\n const query = helpers.escapeQuotes(payload.value);\n this.emitGlobal('navigate', {\n handler: 'router',\n path: [this.configuration.get('paths').searchBasePath],\n queryParams: {\n query,\n // Cerca in tutti i campi delle schede\n 'query-all': (this.configuration.defaults['home-layout']['top-hero'].searchAllField) ? 1 : 0,\n },\n });\n } break;\n case 'aw-hero.change':\n this.dataSource.autocompleteValue = payload.value;\n this.dataSource.onHeroChange(payload.value);\n break;\n case 'aw-home-facets-wrapper.click':\n this.emitOuter('togglefilter', payload);\n break;\n case 'aw-home-facets-wrapper.change':\n if (\n !payload.value\n || (typeof payload.value === 'string' && payload.value.trim().length === 0)\n ) {\n this.emitOuter('facetswrapperclose', { facetId: payload });\n } else if (payload.value) {\n this.emitOuter('facetswrapperrequest', { facetId: payload });\n // clear autocomplete results\n this.dataSource.updateComponent(\n 'aw-autocomplete-wrapper',\n { key: payload.value, response: null },\n );\n const params = {\n input: payload.value,\n typeOfEntity: payload.inputPayload.replace(/-search/g, '').replace(/-/g, ' '),\n itemsPagination: {\n offset: 0, limit: this.configuration.get('home-layout')['results-limit'],\n },\n };\n this.dataSource.makeRequest$('autoComplete', params).subscribe((response) => {\n if (response.results.length < 1) {\n const fallback = {\n totalcount: 0,\n results: [\n {\n entity: {\n id: 'fallback',\n label: // use fallback string from configuration\n this.configuration.get('home-layout')['autocomplete-fallback']\n ? this.configuration.get('home-layout')['autocomplete-fallback']\n : 'Nessun risultato trovato',\n },\n },\n ],\n };\n // this.emitOuter('facetswrapperresponse', { facetId: payload, response: fallback })\n this.dataSource.updateComponent(\n 'aw-autocomplete-wrapper',\n { key: payload.value, response: fallback },\n { config: this.configuration },\n );\n } else {\n // this.emitOuter('facetswrapperresponse', { facetId: payload, response })\n this.dataSource.updateComponent(\n 'aw-autocomplete-wrapper', // ID\n { key: payload.value, response }, // DATA\n { config: this.configuration }, // OPTIONS\n );\n }\n });\n }\n break;\n case 'aw-home-item-tags-wrapper.click':\n this.emitOuter('tagclick', payload);\n break;\n case 'aw-linked-objects.datarequest': {\n const { currentPage } = payload;\n const params = {\n selectedEntitiesIds: this.dataSource.selectedBubbles,\n itemsPagination: {\n offset: currentPage * this.dataSource.resultsLimit,\n limit: this.dataSource.resultsLimit,\n },\n };\n this.dataSource.makeRequest$('globalFilter', params).subscribe((res) => {\n if (res) {\n this.emitOuter('dataresponse', { res });\n } else {\n console.warn('Unable to fetch additional data.');\n }\n });\n } break;\n case 'aw-autocomplete-wrapper.clickresult':\n this.handleSimpleAutocompleteClick(payload);\n break;\n case 'aw-home-autocomplete.click': {\n const { source, type: payloadType } = payload;\n let basePath;\n if (source === 'item') {\n if (payloadType === 'oggetto-culturale') {\n basePath = this.configuration.get('paths').schedaBasePath;\n } else {\n basePath = this.configuration.get('paths').entitaBasePath;\n }\n this.emitGlobal('navigate', {\n handler: 'router',\n path: [basePath, payload.id, helpers.slugify(payload.title)],\n });\n } else if (source === 'showMore') {\n const query = this.dataSource.homeAutocompleteQuery;\n basePath = this.configuration.get('paths').searchBasePath;\n this.emitGlobal('navigate', {\n handler: 'router',\n path: [basePath],\n queryParams: { query },\n });\n } else if (source === 'extendsearch') { // click on <Cerca in tutti i campi> (call to action)\n this.emitGlobal('navigate', {\n handler: 'router',\n path: [this.configuration.get('paths').searchBasePath],\n queryParams: {\n query: this.dataSource.autocompleteValue,\n 'query-all': 1,\n },\n });\n }\n } break;\n case 'aw-bubble-chart.selection':\n this.handleChartSelection(payload);\n break;\n case 'aw-bubble-chart.lockfilter':\n this.emitOuter('lockfilter', payload); // let aw-home-facets-wrapper handle this event\n break;\n default:\n // console.warn('(home) unhandled outer event of type', type)\n break;\n }\n });\n }\n\n private loadFilters() {\n this.dataSource.initialFilterRequest().subscribe((response) => {\n // console.log('(home) Apollo responded with:', response)\n if (!response) { return; }\n this.dataSource.parseInitialRequest(response);\n if (this.dataSource.bubblesEnabled) {\n this.emitOuter('filterbubbleresponse', response.entitiesData);\n }\n });\n }\n\n public handleSimpleAutocompleteClick = (payload) => {\n this.emitOuter('facetclick', payload);\n };\n\n public outerLinkClick(type, payload) {\n window.open(payload, '_blank');\n }\n\n public handleChartSelection = (payload) => {\n const selectedEntitiesIds = payload;\n this.dataSource.selectedBubbles = payload;\n this.dataSource.resultsListIsLoading = true;\n this.dataSource.makeRequest$('globalFilter', {\n selectedEntitiesIds,\n entitiesListSize: this.configuration.get('bubble-chart').bubbleLimit,\n }).subscribe((res) => {\n this.dataSource.resultsListIsLoading = false;\n if (res && res.entitiesData.length > 0) {\n // if some linked objects exist for the selected entities:\n this.dataSource.lastBubbleResponse = res.entitiesData;\n this.emitOuter('filterbubbleresponse', res.entitiesData);\n this.dataSource.renderPreviewsFromApolloQuery(res);\n this.dataSource.renderItemTags();\n } else {\n // if the backend returns an empty list of results:\n const queryList = [];\n this.dataSource.selectedBubbles.forEach((b) => {\n const params = { entityId: b, entitiesListSize: 1 };\n queryList.push( // make a query for each selected bubble\n this.dataSource.makeRequest$('getMissingBubble', params),\n );\n });\n // await for every missing bubble and build a custom response\n forkJoin(queryList).subscribe((forkres) => {\n const customBubbles = [];\n forkres.forEach((r) => { customBubbles.push({ count: 0, entity: r }); });\n this.emitOuter('filterbubbleresponse', customBubbles);\n this.dataSource.renderPreviewsFromApolloQuery(res);\n this.dataSource.renderItemTags();\n });\n }\n });\n };\n}\n","import { AwHomeLayoutDS } from './home-layout.ds';\nimport { AwHomeLayoutEH } from './home-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const AwHomeLayoutConfig = {\n layoutId: 'aw-home-layout',\n widgets: [{\n id: 'aw-carousel',\n }, {\n id: 'aw-hero',\n }, {\n id: 'aw-home-hero-patrimonio',\n }, {\n id: 'aw-bubble-chart',\n }, {\n id: 'aw-home-facets-wrapper',\n }, {\n id: 'aw-home-item-tags-wrapper',\n }, {\n id: 'aw-home-autocomplete',\n }, {\n id: 'aw-linked-objects',\n }, {\n id: 'aw-autocomplete-wrapper',\n }, {\n id: 'aw-chart-tippy',\n }],\n layoutDS: AwHomeLayoutDS,\n layoutEH: AwHomeLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","//---------------------------\n// BubbleChartWrapper.ts\n//---------------------------\n\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'aw-bubble-chart-wrapper',\n templateUrl: './bubble-chart-wrapper.html',\n})\nexport class BubbleChartWrapperComponent {\n @Input() emit: any;\n\n @Input() container: string;\n\n @Input() buttons: any;\n\n onClick(type, payload) {\n this.emit(type, payload);\n }\n}\n","<div class=\"aw-bubble-chart-wrapper\">\n <ng-content></ng-content>\n</div>","//---------------------------\n// ChartTippy.ts\n//---------------------------\n\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'aw-chart-tippy',\n templateUrl: './chart-tippy.html',\n})\nexport class ChartTippyComponent {\n @Input() data: any;\n\n @Input() emit: any;\n\n @Input() anchorData: any;\n\n onClick(type, payload) {\n this.emit(type, payload);\n }\n}\n","<div *ngIf=\"data\" style=\"display: none;\">\n <div *ngFor=\"let d of data\" id=\"template__{{d.id}}\" class=\"bubble-chart__tippy-template\">\n <div id=\"bubble-popup-menu\" class=\"aw-bubble-popup-menu\">\n <h2 class=\"aw-bubble-popup-menu__title\">{{ d.title }}</h2>\n <p class=\"aw-bubble-popup-menu__text\">\n {{ d.text }}\n </p>\n\n <div *ngIf=\"d.relation.value\" class=\"aw-item-preview-relation\">\n <p class=\"aw-item-preview-relation__description\">Tipo di relazione \n <!-- <span class=\"aw-item-preview-relation__key\">{{d.relation.key}}</span>: -->\n <span class=\"aw-item-preview-relation__label\">{{d.relation.value}}</span>\n </p>\n </div>\n\n <div class=\"aw-bubble-popup-menu__actions\">\n <n7-anchor-wrapper [classes]=\"'aw-bubble-popup-menu__link'\" [data]=\"d.anchorData\">\n Vai alla scheda\n </n7-anchor-wrapper>\n <span *ngIf=\"d.selectable\" class=\"aw-bubble-popup-menu__link\" (click)=\"onClick('select', {id: d.id})\">\n {{ d.isSelected ? 'Deseleziona' : 'Seleziona'}}\n </span>\n </div>\n </div>\n </div>\n</div>","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Router } from '@angular/router';\nimport tippy from 'tippy.js';\nimport {\n AbstractLayout,\n ConfigurationService,\n LayoutsConfigurationService,\n MainStateService,\n CommunicationService\n} from '@net7/boilerplate-common';\nimport { AwHomeLayoutConfig as config } from './home-layout.config';\n\n@Component({\n selector: 'aw-home-layout',\n templateUrl: './home-layout.html',\n})\nexport class AwHomeLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n constructor(\n layoutsConfiguration: LayoutsConfigurationService,\n private router: Router,\n private configuration: ConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n ) {\n super(layoutsConfiguration.get('AwHomeLayoutConfig') || config);\n }\n\n protected initPayload() {\n return {\n configuration: this.configuration,\n mainState: this.mainState,\n router: this.router,\n communication: this.communication,\n options: this.config.options || {},\n tippy,\n };\n }\n\n ngOnInit() {\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"aw-home\" *ngIf=\"lb.dataSource\">\n <!-- Carousel -->\n <div class=\"aw-home__carousel\" *ngIf=\"lb.dataSource.carouselEnabled\">\n <n7-carousel [data]=\"lb.widgets['aw-carousel'].ds.out$ | async\">\n </n7-carousel>\n </div>\n\n <!-- Hero section at the top of the page -->\n <div class=\"aw-home__top-hero\">\n <n7-hero [data]=\"lb.widgets['aw-hero'].ds.out$ | async\" [emit]=\"lb.widgets['aw-hero'].emit\">\n </n7-hero>\n </div>\n\n <!-- Bubble chart -->\n <div class=\"aw-home__bubble-wrapper n7-side-auto-padding\"\n [ngClass]=\"{ 'has-results' : lb.dataSource.selectedBubbles.length > 0 }\" *ngIf=\"lb.dataSource.bubblesEnabled\">\n <div class=\"aw-home__facets-wrapper-loading\" *ngIf=\"!(lb.widgets['aw-home-facets-wrapper'].ds.out$ | async)\">\n <n7-content-placeholder *ngFor=\"let i of [0,1,2,3]\" [data]=\"{\n blocks: [{\n classes: 'facet-placeholder-header'\n }, {\n classes: 'facet-placeholder-input'\n }] \n }\"></n7-content-placeholder>\n </div>\n <div class=\"aw-home__facets-wrapper\" *ngIf=\"!!(lb.widgets['aw-home-facets-wrapper'].ds.out$ | async)\">\n <span class=\"aw-home__facet\"\n *ngFor=\"let widgetData of lb.widgets['aw-home-facets-wrapper'].ds.out$ | async;\">\n <n7-facet-header [data]=\"widgetData.header\" [emit]=\"lb.widgets['aw-home-facets-wrapper'].emit\">\n </n7-facet-header>\n <a *ngIf=\"widgetData.link as link\" class=\"aw-home__facet-link n7-btn\"\n [routerLink]=\"[link.path]\" [queryParams]=\"link.queryParams\">\n <span class=\"n7-icon n7-icon-list\"></span>\n <span class=\"aw-home__facet-link-label\">{{ link.label }}</span>\n </a>\n <n7-facet [data]=\"widgetData.input\" [emit]=\"lb.widgets['aw-home-facets-wrapper'].emit\">\n </n7-facet>\n </span>\n </div>\n\n <div class=\"aw-home__bubble-chart-wrapper-loading\" *ngIf=\"!(lb.widgets['aw-bubble-chart'].ds.out$ | async)\">\n <n7-content-placeholder [data]=\"{\n blocks: [\n {\n classes: 'facet-placeholder-item-1'\n }\n ]\n }\"></n7-content-placeholder>\n </div>\n <div class=\"aw-home__bubble-chart-wrapper\" *ngIf=\"!!(lb.widgets['aw-bubble-chart'].ds.out$ | async)\"\n [style.overflow]=\"lb.dataSource.loadingBubbles ? 'visible' : 'hidden'\">\n <aw-bubble-chart-wrapper>\n <aw-chart-tippy \n [data]=\"lb.widgets['aw-chart-tippy'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-chart-tippy'].emit\">\n </aw-chart-tippy>\n <n7-bubble-chart [data]=\"lb.widgets['aw-bubble-chart'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-bubble-chart'].emit\">\n </n7-bubble-chart>\n </aw-bubble-chart-wrapper>\n </div>\n\n <!-- Linked objects -->\n <ng-container *ngIf=\"(lb.widgets['aw-bubble-chart'].ds.out$ | async)?.selected.length > 0;\">\n <div class=\"aw-home__bubble-results\" id=\"home-bubble-results\">\n <div *ngIf=\"lb.dataSource.numOfItemsStr\" class=\"aw-home__bubble-results-title-wrapper\">\n <h1 class=\"aw-home__bubble-results-title\"><strong class=\"aw-home__bubble-results-title-counter\">\n {{ lb.dataSource.numOfItemsStr }}</strong> <span> Risultati</span>\n </h1>\n </div>\n <div class=\"aw-home__bubble-tags-wrapper\">\n <h3 class=\"aw-home__bubble-tags-title\">Collegati a </h3>\n <ng-container *ngFor=\"let widgetData of lb.widgets['aw-home-item-tags-wrapper'].ds.out$ | async;\">\n <n7-tag [data]=\"widgetData\" [emit]=\"lb.widgets['aw-home-item-tags-wrapper'].emit\">\n </n7-tag>\n <br>\n </ng-container>\n </div>\n <div class=\"aw-home__bubble-results-list-wrapper\">\n <div class=\"aw-home__bubble-results-list-loading\" *ngIf=\"lb.dataSource.resultsListIsLoading\">\n <n7-content-placeholder \n *ngFor=\"let i of [1, 2, 3, 4, 5]\"\n [data]=\"{\n blocks: [{\n classes: 'search-result-placeholder-title'\n }, {\n classes: 'search-result-placeholder-metadata'\n }]\n }\"></n7-content-placeholder>\n </div>\n <div *ngIf=\"!lb.dataSource.resultsListIsLoading\" class=\"aw-home__bubble-results-list\"\n [attr.id]=\"'bubble-results-list'\" (scroll)=\"lb.eventHandler.emitOuter('scroll', $event.target)\">\n\n <div class=\"aw-home__bubble-results-fallback\"\n *ngIf=\"(lb.widgets['aw-linked-objects'].ds.out$ | async)?.result.length < 1;\">\n <p class=\"aw-home__bubble-results-fallback-text\">\n {{ (lb.widgets['aw-linked-objects'].ds.out$ | async)?.fallback }}\n </p>\n <button class=\"n7-btn aw-home__bubble-results-reset\"\n (click)=\"lb.eventHandler.emitInner('clearselection')\">\n Resetta la ricerca\n </button>\n </div>\n\n <div class=\"aw-item-preview-list\">\n <ng-container *ngFor=\"let preview of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.result\">\n <div class=\"aw-item-preview-wrapper\">\n <n7-smart-breadcrumbs [data]=\"preview.breadcrumbs\">\n </n7-smart-breadcrumbs>\n <n7-item-preview [data]=\"preview\"\n [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n </div>\n </ng-container>\n </div>\n \n <!-- <ng-container\n *ngFor=\"let widgetData of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.result;\">\n <n7-item-preview [data]=\"widgetData\" [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n </ng-container> -->\n\n <ng-container *ngIf=\"(lb.widgets['aw-linked-objects'].ds.out$ | async)?.isLoading\">\n <div class=\"aw-home__bubble-results-list-loader\">\n <n7-loader [data]=\"(lb.widgets['aw-linked-objects'].ds.out$ | async)?.loaderData\">\n </n7-loader>\n </div>\n </ng-container>\n </div>\n <div [ngClass]=\"{ 'is-visible' : lb.dataSource.hasScrollBackground }\"\n class=\"aw-home__bubble-results-list-wrapper-with-scroll\"></div>\n </div>\n <!-- aw-linked-objects__actions -->\n <ng-container\n *ngIf=\"(lb.widgets['aw-linked-objects'].ds.out$ | async)?.result.length > 0 && !lb.dataSource.resultsListIsLoading\">\n <div *ngIf=\"(lb.widgets['aw-linked-objects'].ds.out$ | async)?.actions as action\"\n class=\"aw-home__bubble-results-list-actions\">\n <button (click)=\"lb.eventHandler.emitInner('bubbleresultsviewallclick')\"\n class=\"n7-btn n7-btn-light n7-btn-l aw-home__bubble-results-list-view-all\">\n {{action[0].label}}\n </button>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n\n <!-- Outer links -->\n <div *ngIf=\"lb.dataSource.outerLinks && lb.dataSource.outerLinks.length > 0\" class=\"aw-home__outer-links\">\n <section class=\"aw-home__outer-links-wrapper n7-side-auto-padding\">\n <h2 class=\"aw-home__outer-links-title\" *ngIf=\"lb.dataSource.outerLinksTitle\">\n {{ lb.dataSource.outerLinksTitle }}\n </h2>\n <p class=\"aw-home__outer-links-description\" *ngIf=\"lb.dataSource.outerLinksDescription\">\n {{ lb.dataSource.outerLinksDescription }}\n </p>\n <div class=\"aw-home__outer-links-items\">\n <!-- Item preview -->\n <n7-item-preview *ngFor=\"let outerLink of lb.dataSource.outerLinks\" [data]=\"outerLink\"\n [emit]=\"lb.eventHandler.outerLinkClick.bind(lb.eventHandler)\">\n </n7-item-preview>\n <!-- END // Item preview -->\n </div>\n </section>\n </div>\n <!-- END // Outer links -->\n\n <!-- Hero section at the bottom of the page -->\n <div class=\"aw-home__bottom-hero\">\n <n7-hero [data]=\"lb.widgets['aw-home-hero-patrimonio'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-home-hero-patrimonio'].emit\">\n </n7-hero>\n </div>\n\n <!-- Adavanced autocomplete popover -->\n <div class=\"aw-home__advanced-autocomplete\" id=\"aw-home-advanced-autocomplete-popover\" style=\"display: none;\">\n <div class=\"aw-home__advanced-autocomplete-loader\" *ngIf=\"lb.dataSource.homeAutocompleteIsLoading\">\n <n7-loader [data]=\"{}\"></n7-loader>\n </div>\n <n7-advanced-autocomplete *ngIf=\"!lb.dataSource.homeAutocompleteIsLoading\"\n [data]=\"lb.widgets['aw-home-autocomplete'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-home-autocomplete'].emit\">\n </n7-advanced-autocomplete>\n </div>\n\n <!-- Simple autocomplete popover. DO NOT CHANGE parent div class! -->\n <!-- Creating one template for each facet -->\n <div *ngFor=\"let widgetData of lb.widgets['aw-home-facets-wrapper'].ds.out$ | async;\"\n class=\"aw-home__simple-autocomplete aw-simple-autocomplete__template\" style=\"display: none;\">\n <div class=\"aw-home__simple-autocomplete-content aw-simple-autocomplete__tippy-wrapper\">\n <div class=\"aw-home__simple-autocomplete-loader aw-simple-autocomplete__tippy-wrapper-loader\"\n *ngIf=\"(lb.widgets['aw-autocomplete-wrapper'].ds.out$ | async)?.loading\">\n <n7-loader [data]=\"{}\"></n7-loader>\n </div>\n <n7-simple-autocomplete *ngIf=\"!(lb.widgets['aw-autocomplete-wrapper'].ds.out$ | async)?.loading\"\n [data]=\"lb.widgets['aw-autocomplete-wrapper'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-autocomplete-wrapper'].emit\">\n </n7-simple-autocomplete>\n </div>\n </div>\n</div>\n","import { InnerTitleData } from '@net7/components';\nimport { LayoutDataSource } from '@net7/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { helpers } from '@net7/boilerplate-common';\nimport { getHeadTitle } from '../../helpers/title.helper';\n\ntype LayoutState = 'LOADING' | 'EMPTY' | 'SUCCESS';\n\nexport class AwMapLayoutDS extends LayoutDataSource {\n protected configuration: any;\n\n protected mainState: any;\n\n protected titleService: any;\n\n public configId = 'map-layout';\n\n public options: any;\n\n public pageTitle: string;\n\n private communication: any;\n\n private pageSize = 10;\n\n public state$: BehaviorSubject<LayoutState> = new BehaviorSubject('EMPTY');\n\n private currentPage = 1;\n\n private relatedItems: any[];\n\n public total: number;\n\n onInit({\n configuration, mainState, options, titleService, communication,\n }) {\n this.communication = communication;\n this.configuration = configuration;\n this.mainState = mainState;\n this.options = options;\n this.titleService = titleService;\n\n // head title\n this.setHeadTitle();\n this.setPageTitle();\n\n // navigation update\n this.mainState.updateCustom('currentNav', 'mappa');\n\n this.communication.request$('getMapObjects').subscribe((response) => {\n this.one('aw-map').update(response);\n });\n }\n\n onMarkerOpen({ id, label }) {\n // loading results\n this.state$.next('LOADING');\n this.communication.request$('getEntityRelatedItems', {\n params: {\n selectedEntitiesIds: [id]\n }\n }).subscribe(({ itemsPagination }) => {\n // clear loading\n this.state$.next('SUCCESS');\n\n this.relatedItems = itemsPagination.items;\n this.total = this.relatedItems.length;\n let text = `<strong>${this.total}</strong> Risultati collegati a<br><span class=\"aw-multimedia__results-title-big\">${label}</span>`;\n if (this.total === 1) {\n text = `<strong>${this.total}</strong> Risultato collegato a<br><span class=\"aw-multimedia__results-title-big\">${label}</span>`;\n }\n\n const titleData: InnerTitleData = {\n title: {\n main: { text },\n },\n actions: {\n buttons: [{\n anchor: {\n href: `${this.configuration.get('paths').entitaBasePath}/${id}/${helpers.slugify(label)}`,\n },\n text: 'Vedi Entità'\n }]\n }\n };\n this.one('aw-scheda-inner-title').update(titleData);\n\n // update items\n this.updateItems();\n\n // update pagination\n this.updatePagination();\n });\n }\n\n onMarkerClose() {\n // reset\n this.state$.next('EMPTY');\n this.pageSize = 10;\n this.currentPage = 1;\n this.relatedItems = [];\n this.total = 0;\n this.one('aw-scheda-inner-title').update({\n title: {\n main: { text: '' }\n }\n });\n this.one('aw-linked-objects').update({ items: [] });\n }\n\n onPaginationChange({ value }) {\n this.pageSize = +value;\n this.updateItems();\n this.updatePagination();\n }\n\n onPaginationClick({ page }) {\n if (typeof page === 'number' && page !== this.currentPage) {\n this.currentPage = page;\n this.updateItems();\n this.updatePagination();\n }\n }\n\n private updateItems() {\n this.one('aw-linked-objects').updateOptions({\n context: 'map',\n config: this.configuration,\n page: this.currentPage,\n pagination: true,\n size: this.pageSize,\n });\n this.one('aw-linked-objects').update({ items: this.relatedItems });\n }\n\n private updatePagination() {\n this.one('n7-smart-pagination').updateOptions({\n mode: 'payload'\n });\n this.one('n7-smart-pagination').update({\n totalPages: Math.ceil(this.total / this.pageSize),\n currentPage: this.currentPage,\n pageLimit: 5,\n sizes: {\n label: 'Numero di risultati',\n list: [10, 25, 50],\n active: this.pageSize,\n },\n });\n }\n\n private setHeadTitle() {\n this.mainState.update('headTitle', getHeadTitle({\n name: this.configuration.get('customer'),\n pageName: this.configuration.get(this.configId)?.pageName,\n pageDefault: 'Mappa',\n }));\n }\n\n private setPageTitle() {\n const title = this.configuration.get(this.configId)?.pageName;\n this.pageTitle = (title) || 'I luoghi dell\\'archivio';\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\n\nexport class AwMapLayoutEH extends EventHandler {\n private destroyed$: Subject<void> = new Subject();\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-map-layout.init':\n this.dataSource.onInit(payload);\n this.emitOuter('init', payload);\n // scroll top\n window.scrollTo(0, 0);\n break;\n\n case 'aw-map-layout.destroy':\n this.destroyed$.next();\n break;\n\n default:\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-map.markeropen':\n this.dataSource.onMarkerOpen(payload);\n break;\n case 'aw-map.markerclose':\n this.dataSource.onMarkerClose();\n break;\n case 'n7-smart-pagination.change':\n this.dataSource.onPaginationChange(payload);\n break;\n case 'n7-smart-pagination.click':\n this.dataSource.onPaginationClick(payload);\n break;\n default:\n break;\n }\n });\n }\n}\n","import { SmartPaginationDS, SmartPaginationEH } from '@net7/boilerplate-common';\nimport { AwMapLayoutDS } from './map-layout.ds';\nimport { AwMapLayoutEH } from './map-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const AwMapLayoutConfig = {\n layoutId: 'aw-map-layout',\n widgets: [ // array of components of this layout\n { id: 'aw-map' },\n { id: 'aw-scheda-inner-title' },\n { id: 'aw-linked-objects' },\n {\n id: 'n7-smart-pagination',\n dataSource: SmartPaginationDS,\n eventHandler: SmartPaginationEH,\n }\n ],\n layoutDS: AwMapLayoutDS,\n layoutEH: AwMapLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport {\n AbstractLayout,\n ConfigurationService,\n LayoutsConfigurationService,\n MainStateService,\n CommunicationService,\n} from '@net7/boilerplate-common';\nimport { AwMapLayoutConfig as config } from './map-layout.config';\n\n@Component({\n selector: 'aw-map-layout',\n templateUrl: './map-layout.html',\n})\nexport class AwMapLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n constructor(\n private configuration: ConfigurationService,\n private layoutsConfiguration: LayoutsConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n private titleService: Title,\n ) {\n super(layoutsConfiguration.get('AwMapLayoutConfig') || config);\n }\n\n /*\n Optional variables that can be accessed from the layout's logic.\n If removed, they must also be removed from the layout's DataSource file,\n and from this file imports.\n */\n protected initPayload() {\n return {\n configuration: this.configuration,\n mainState: this.mainState,\n titleService: this.titleService,\n communication: this.communication,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"aw-multimedia\" id=\"map-layout\" *ngIf=\"lb.dataSource\">\n <n7-inner-title [data]=\"{\n title: {\n main: {\n text: lb.dataSource.pageTitle\n }\n }\n }\">\n </n7-inner-title>\n\n <!-- Map -->\n <div class=\"aw-multimedia__map\">\n <n7-map [data]=\"lb.widgets['aw-map'].ds.out$ | async\"></n7-map>\n </div>\n <!-- END // Map -->\n\n <!-- RESULTS -->\n <div class=\"aw-multimedia__results\">\n <div class=\"aw-multimedia__loader\" *ngIf=\"(lb.dataSource.state$ | async) === 'LOADING'\">\n <ng-container>\n <n7-loader></n7-loader>\n </ng-container>\n </div>\n\n <div class=\"aw-multimedia__empty\" *ngIf=\"(lb.dataSource.state$ | async) === 'EMPTY'\">\n <ng-container>\n <p class=\"aw-multimedia__empty-text\">Clicca su un luogo della mappa per vedere tutti gli oggetti collegati.</p>\n </ng-container>\n </div>\n \n <ng-container *ngIf=\"(lb.dataSource.state$ | async) === 'SUCCESS'\">\n <div class=\"aw-multimedia__results-title\">\n <n7-inner-title \n [data]=\"lb.widgets['aw-scheda-inner-title'].ds.out$ | async\">\n </n7-inner-title>\n </div>\n <div class=\"aw-multimedia__results-wrapper\">\n <div>\n <div class=\"aw-item-preview-wrapper\" *ngFor=\"let preview of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews\">\n <n7-smart-breadcrumbs \n [data]=\"preview.breadcrumbs\">\n </n7-smart-breadcrumbs>\n <n7-item-preview \n [data]=\"preview\" \n [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n </div>\n </div>\n <n7-smart-pagination *ngIf=\"lb.dataSource.total > 0\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n </div>\n </ng-container>\n </div>\n</div>","import { LayoutDataSource } from '@net7/core';\nimport {\n fromEvent, Subject, of, merge, Observable\n} from 'rxjs';\nimport {\n delay, first, takeUntil\n} from 'rxjs/operators';\nimport { clone, get as _get } from 'lodash';\nimport { helpers } from '@net7/boilerplate-common';\nimport { Params } from '@angular/router';\nimport metadataHelper from '../../helpers/metadata.helper';\nimport nodeHelper from '../../helpers/node.helper';\nimport { getHeadTitle } from '../../helpers/title.helper';\n\nconst LOCAL_STORAGE_PREFIX = 'aw.scheda';\n\nexport class AwSchedaLayoutDS extends LayoutDataSource {\n static tree: any = null;\n\n private destroyed$: Subject<void> = new Subject();\n\n private stickyControlTrigger$: Subject<void> = new Subject();\n\n private communication: any;\n\n protected configuration: any;\n\n protected mainState: any;\n\n protected router: any;\n\n protected titleService: any;\n\n public configId = 'scheda-layout';\n\n public options: any;\n\n private layoutConfig;\n\n public pageTitle: string;\n\n public hasBreadcrumb: boolean;\n\n public contentParts: any = {};\n\n public tree: any;\n\n public sidebarCollapsed: boolean;\n\n public relatedEntitiesHeader: string;\n\n public similarItemsSectionTitle: string;\n\n public metadataSectionTitle: string;\n\n public treeOpenTitle: string;\n\n public treeCloseTitle: string;\n\n public showRelationType: boolean;\n\n public showRelationQualification: boolean;\n\n public hasMetadata: boolean;\n\n public hasRelatedEntities: boolean;\n\n public hasSimilarItems: boolean;\n\n public hasExtendedTree: boolean;\n\n public hasInternalSearch: boolean;\n\n public hasDigitalObjects: boolean;\n\n public digitalObjects: any;\n\n public currentDigitalObject: any;\n\n public currentDigitalObjectIndex: number;\n\n public imageViewerIstance: any;\n\n public sidebarIsSticky = false;\n\n public treeMaxHeight = '100%';\n\n public contentIsLoading = false;\n\n public currentId: string | null = null;\n\n public emptyLabel: string;\n\n /** Switch loaded-content and loaded-empty states */\n public hasContent = true;\n\n /** String to render in the loaded-empty state */\n public emptyStateString: string;\n\n public externalUrlText: string;\n\n public hasContextMenu: () => boolean;\n\n public extendedTreeParams: {\n [key: string]: string;\n } = {};\n\n public internalSearchParams: {\n [key: string]: string;\n } = {};\n\n public lastResponse;\n\n /** Name of query that should be used (chosen in config) */\n private getTreeQuery: 'getTree' | 'getTreeLite' = 'getTree';\n\n public titleNavigation: {\n prev: { href: string; label: string; };\n next: { href: string; label: string; };\n } = null;\n\n public sectionCollapseState = {\n metadata: false,\n 'extended-tree': false,\n 'similar-items': false,\n 'related-entities': false\n };\n\n public documentType: {\n icon: string;\n label: string;\n } = null;\n\n onInit({\n configuration, mainState, router, options, titleService, communication,\n }) {\n if (configuration) {\n this.configuration = configuration;\n this.layoutConfig = this.configuration.get(this.configId);\n }\n this.mainState = mainState;\n this.router = router;\n this.titleService = titleService;\n this.communication = communication;\n this.options = options;\n if (!this.sidebarCollapsed) {\n this.sidebarCollapsed = this.layoutConfig.tree.collapsedByDefault ?? false;\n }\n this.relatedEntitiesHeader = this.layoutConfig['related-entities'].title;\n this.showRelationType = this.layoutConfig['related-entities'].showRelationType;\n this.showRelationQualification = this.layoutConfig['related-entities'].showRelationQualification;\n this.similarItemsSectionTitle = this.layoutConfig['related-items'].title;\n this.externalUrlText = this.layoutConfig['external-url-text'];\n this.metadataSectionTitle = this.getMetadataSectionTitle();\n this.hasSimilarItems = false;\n this.one('aw-chart-tippy').updateOptions({\n basePath: this.configuration.get('paths').entitaBasePath,\n });\n this.emptyLabel = this.layoutConfig['empty-label'];\n this.emptyStateString = this.layoutConfig['empty-html'];\n this.one('aw-tree').updateOptions({ config: this.configuration.get('config-keys') });\n\n // switch the tree query to the slim version\n if (this.layoutConfig?.tree?.lite) {\n this.getTreeQuery = 'getTreeLite';\n }\n\n this.mainState.updateCustom('currentNav', 'patrimonio');\n\n // head title\n this.setHeadTitle();\n this.setTreeTitle();\n\n // image viewer context-menu check\n const imageViewerConfig = this.configuration.get(this.configId)['image-viewer'] || {};\n this.hasContextMenu = () => !!imageViewerConfig['context-menu'];\n\n // pdf viewer options\n this.one('aw-scheda-pdf').updateOptions(this.configuration.get(this.configId)['pdf-viewer'] || {});\n\n // iiif viewer options\n const imageViewerIiifConfig = this.configuration.get(this.configId)['iiif-viewer'] || {};\n this.hasContextMenu = () => !!imageViewerIiifConfig.libOptions['context-menu'];\n this.one('aw-scheda-image-iiif').updateOptions(imageViewerIiifConfig);\n\n // check section collapse state\n Object.keys(this.sectionCollapseState).forEach((key) => {\n const storageKey = `${LOCAL_STORAGE_PREFIX}.${key}`;\n const storageValue = localStorage.getItem(storageKey);\n this.sectionCollapseState[key] = storageValue ? JSON.parse(storageValue) : false;\n });\n\n // sidebar sticky control\n this._sidebarStickyControl();\n }\n\n onDestroy() {\n this.destroyed$.next();\n }\n\n getMetadataSectionTitle() {\n const layoutConfig = this.configuration.get(this.configId);\n const metadataConfig = layoutConfig.metadata || {};\n return metadataConfig.title || null;\n }\n\n getNavigation() {\n if (AwSchedaLayoutDS.tree) {\n return of(AwSchedaLayoutDS.tree);\n }\n return this.communication.request$(this.getTreeQuery, {\n onError: (error) => console.error(error),\n params: {\n onlyAl: !!this.layoutConfig['extended-tree']\n },\n });\n }\n\n setTree(tree) {\n AwSchedaLayoutDS.tree = tree;\n }\n\n getTree = () => AwSchedaLayoutDS.tree;\n\n updateNavigation(text) {\n this.one('aw-sidebar-header').update({ text, isExpanded: !this.sidebarCollapsed });\n }\n\n loadItem(id) {\n const maxSimilarItems = this.configuration.get(this.configId)['related-items']['max-related-items'];\n return this.communication.request$('getNode', {\n onError: (error) => console.error(error),\n params: { id, maxSimilarItems },\n });\n }\n\n /**\n * Loads the content of the selected tree item in the right portion of the view.\n * @param response http response for the tree item\n */\n loadContent(response) {\n this.lastResponse = response;\n if (response) {\n // reset\n this.currentDigitalObject = null;\n this.currentDigitalObjectIndex = null;\n\n const metadataFields = this.getFields(response);\n this.hasMetadata = !!(Array.isArray(metadataFields) && metadataFields.length);\n this.hasSimilarItems = (\n !this.layoutConfig['extended-tree']\n && Array.isArray(response.relatedItems)\n && response.relatedItems.length\n );\n this.hasBreadcrumb = Array.isArray(response.breadcrumbs) && response.breadcrumbs.length;\n this.hasDigitalObjects = (\n Array.isArray(response.digitalObjects)\n && response.digitalObjects.length\n );\n this.hasRelatedEntities = (\n Array.isArray(response.relatedEntities)\n && response.relatedEntities.length\n );\n this.hasContent = !!(\n this.hasMetadata\n || this.hasSimilarItems\n || this.hasRelatedEntities\n || this.hasDigitalObjects\n );\n\n this.contentParts = [];\n const content = { content: null };\n\n if (response.text) {\n content.content = response.text;\n }\n this.contentParts.push(content);\n\n // digital objects\n if (this.hasDigitalObjects) {\n response.digitalObjects = this.normalizeDigitalObjects(response.digitalObjects);\n // this.one('aw-scheda-digital-objects').update(response.digitalObjects);\n this.one('aw-scheda-dropdown').update(response);\n this.digitalObjects = response.digitalObjects;\n this.changeDigitalObject(0);\n }\n\n const titleObj = {\n icon: response.icon,\n title: {\n main: {\n text: response.title || response.label,\n classes: 'bold',\n },\n },\n tools: response.subTitle,\n actions: {},\n };\n\n this.one('aw-scheda-inner-title').update(titleObj);\n this.one('aw-scheda-metadata').update(metadataFields);\n\n // Breadcrumb section\n const breadcrumbs = {\n items: [],\n };\n\n if (response.breadcrumbs) {\n response.breadcrumbs.forEach((element) => {\n breadcrumbs.items.push({\n label: element.label,\n anchor: {\n href: [\n this.configuration.get('paths').schedaBasePath,\n `${element.link}/`,\n helpers.slugify(element.label),\n ].join(''),\n },\n });\n });\n this.one('aw-scheda-breadcrumbs').update(breadcrumbs);\n }\n\n // title prev / next navigation\n this.loadTitleNavigation();\n\n // document title type (icon, label)\n this.loadDocumentType();\n\n // update head title\n this.setHeadTitle(response.title || response.label);\n }\n\n if (response.relatedItems) {\n this.one('aw-linked-objects').updateOptions({ context: 'scheda', config: this.configuration });\n this.one('aw-linked-objects').update(response);\n }\n if (response.relatedEntities) {\n response.relatedEntities.forEach((el) => {\n const label = response.title || response.label;\n el.relationName = label.length > 30\n ? `${label.substr(0, 30)}... `\n : label;\n });\n this.one('aw-related-entities').updateOptions({\n context: 'scheda', config: this.configuration, list: 'relatedEntities', title: response.title\n });\n this.one('aw-related-entities').update(response.relatedEntities);\n }\n\n // control sticky\n setTimeout(() => {\n this.stickyControlTrigger$.next();\n });\n }\n\n loadExtendedTree() {\n const parentResponse = this.lastResponse;\n\n if (this.layoutConfig['extended-tree']) {\n const configKeys = this.configuration.get('config-keys');\n const widgetOptions = this.layoutConfig['extended-tree'];\n const params: any = {\n id: parentResponse.id,\n page: 1,\n limit: 10,\n query: null,\n ...this.extendedTreeParams,\n };\n const widgetParams = clone(params);\n\n // normalize params\n params.offset = (params.page - 1) * params.limit;\n delete params.page;\n\n const basePath = this.configuration.get('paths').schedaBasePath;\n const request$ = this.communication.request$('getNodeChildren', {\n params,\n onError: (error) => console.error(error),\n });\n request$.subscribe((nodesResponse) => {\n this.hasExtendedTree = (\n params.query\n || widgetParams.page > 1\n || !!nodesResponse?.items?.length\n );\n if (this.hasExtendedTree) {\n this.one('aw-extended-tree').updateOptions({\n basePath,\n configKeys,\n params: widgetParams,\n ...widgetOptions,\n });\n this.one('aw-extended-tree').update({\n parent: parentResponse,\n nodes: nodesResponse\n });\n\n // fix query input update\n setTimeout(() => {\n const queryInput: HTMLInputElement = document\n .querySelector('.aw-extended-tree__header .n7-inner-title__search-bar');\n if (queryInput) {\n queryInput.value = params.query || '';\n }\n });\n }\n });\n } else {\n this.hasExtendedTree = false;\n }\n }\n\n loadInternalSearch() {\n const parentResponse = this.lastResponse;\n\n if (this.layoutConfig['internal-search']) {\n this.hasInternalSearch = true;\n const configKeys = this.configuration.get('config-keys');\n const widgetOptions = this.layoutConfig['internal-search'];\n const rawParams: any = {\n id: parentResponse.id,\n 'search-page': 1,\n 'search-limit': 10,\n 'search-query': null,\n ancestor: true,\n ...this.internalSearchParams,\n };\n\n // set params object without \"search-\" prefix\n const params: Params = {};\n Object.keys(rawParams).forEach((paramKey) => {\n params[paramKey.replace('search-', '')] = rawParams[paramKey];\n });\n\n const widgetParams = clone(params);\n\n // normalize params\n params.offset = (params.page - 1) * params.limit;\n delete params.page;\n\n const basePath = this.configuration.get('paths').schedaBasePath;\n let request$: Observable<any> = of(null);\n if (params.query) {\n request$ = this.communication.request$('getNodeChildren', {\n params,\n onError: (error) => console.error(error),\n });\n }\n\n request$.subscribe((nodesResponse) => {\n this.one('aw-scheda-search').updateOptions({\n basePath,\n configKeys,\n params: widgetParams,\n ...widgetOptions,\n });\n this.one('aw-scheda-search').update(nodesResponse);\n\n // fix query input update\n setTimeout(() => {\n const queryInput: HTMLInputElement = document\n .querySelector('.aw-scheda-search__input input[type=\"text\"]');\n if (queryInput) {\n queryInput.value = params.query || '';\n }\n });\n });\n } else {\n this.hasInternalSearch = false;\n }\n }\n\n loadTitleNavigation() {\n // reset\n this.titleNavigation = null;\n\n const hasTitleNav = (\n !!this.layoutConfig['title-nav']?.enabled\n && this.lastResponse.document_type === 'oggetto-culturale'\n );\n if (!hasTitleNav) return;\n\n this.titleNavigation = { prev: null, next: null };\n const basePath = this.configuration.get('paths').schedaBasePath;\n ['prev', 'next'].forEach((key) => {\n const item = this.lastResponse[key];\n this.titleNavigation[key] = item\n ? {\n href: `${basePath}/${item.id}/${helpers.slugify(item.label)}`,\n label: item.label,\n } : null;\n });\n }\n\n loadDocumentType() {\n const configKeys = this.configuration.get('config-keys');\n const { document_type: type } = this.lastResponse;\n const icon = nodeHelper.getNodeIcon(configKeys, this.lastResponse);\n if (configKeys[type]) {\n this.documentType = {\n icon,\n label: configKeys[type]['singular-label']\n };\n } else {\n this.documentType = null;\n }\n }\n\n /**\n * Toggle between the tree's collapsed or expanded state.\n */\n collapseSidebar() {\n // overwrite the configuration to prevent unwanted changes to the tree state.\n this.layoutConfig.tree.collapsedByDefault = !this.layoutConfig.tree.collapsedByDefault;\n this.sidebarCollapsed = !this.sidebarCollapsed;\n this.getWidgetDataSource('aw-sidebar-header').toggleSidebar();\n }\n\n onSectionCollapse(id: string) {\n this.sectionCollapseState[id] = !this.sectionCollapseState[id];\n\n // update storage\n const storageKey = `${LOCAL_STORAGE_PREFIX}.${id}`;\n localStorage.setItem(storageKey, this.sectionCollapseState[id]);\n }\n\n private _sidebarStickyControl() {\n // no sticky for Internet Explorer\n if (helpers.browserIsIE()) {\n return;\n }\n const source$ = fromEvent(window, 'scroll');\n\n merge(source$, this.stickyControlTrigger$).pipe(\n takeUntil(this.destroyed$),\n ).subscribe(() => {\n const windowTop = window.pageYOffset;\n const windowBottom = window.scrollY + window.innerHeight;\n const wrapper = document.getElementsByClassName('sticky-parent')[0] as HTMLElement;\n const wrapperTop = wrapper.offsetTop;\n const wrapperBottom = wrapperTop + wrapper.clientHeight;\n\n this.sidebarIsSticky = wrapperTop <= windowTop;\n\n // tree height control\n if (this.sidebarIsSticky && windowBottom < wrapperBottom) {\n this.treeMaxHeight = `${windowBottom - windowTop - 50}px`;\n } else if (this.sidebarIsSticky && windowBottom >= wrapperBottom) {\n this.treeMaxHeight = `${wrapperBottom - windowTop - 50}px`;\n } else if (windowBottom < wrapperBottom) {\n this.treeMaxHeight = `${windowBottom - wrapperTop - 50}px`;\n } else {\n this.treeMaxHeight = `${wrapperBottom - wrapperTop - 50}px`;\n }\n });\n }\n\n public getFields(response) {\n const {\n fields,\n document_type: dt,\n document_classification: dc\n } = response;\n const paths = this.configuration.get('paths');\n const labels = this.configuration.get('labels');\n const dcSegments = typeof dc === 'string' ? dc.split('.') : [];\n const dcLastSegment = dcSegments[dcSegments.length - 1];\n let metadataToShow = _get(this.configuration.get(this.configId), 'metadata-to-show', {});\n metadataToShow = metadataToShow[dcLastSegment] || metadataToShow[dt] || [];\n\n return metadataHelper.normalize({\n fields,\n paths,\n labels,\n metadataToShow,\n type: dt\n });\n }\n\n public changeDigitalObject(payload) {\n if (this.currentDigitalObjectIndex !== payload) {\n // link check\n if (this.digitalObjects[payload].type === 'external' && this.currentDigitalObject) {\n window.open(this.digitalObjects[payload].url, '_blank');\n } else {\n // always reset image viewer\n const schedaImageDS = this.getWidgetDataSource('aw-scheda-image');\n schedaImageDS.reset();\n\n this.currentDigitalObjectIndex = payload;\n this.currentDigitalObject = this.digitalObjects[payload];\n if (this.currentDigitalObject.type === 'images-iiif') {\n this.one('aw-scheda-image-iiif').update(this.currentDigitalObject);\n } else if (this.currentDigitalObject.type.includes('images')) {\n if (schedaImageDS.hasInstance()) {\n schedaImageDS.updateImages(this.currentDigitalObject);\n } else {\n this.one('aw-scheda-image').update(this.currentDigitalObject);\n }\n\n // image viewer navigator\n const navigatorConfig = this.layoutConfig['image-viewer-nav'];\n if (navigatorConfig?.enabled) {\n schedaImageDS.instanceLoaded$.pipe(\n first(),\n delay(100) // waiting for viewer instance to update\n ).subscribe((viewer) => {\n this.one('aw-scheda-image-navigator').updateOptions(navigatorConfig);\n this.one('aw-scheda-image-navigator').update(viewer);\n });\n }\n } else if (this.currentDigitalObject.type === 'pdf') {\n this.one('aw-scheda-pdf').update(this.currentDigitalObject);\n }\n }\n }\n }\n\n private normalizeDigitalObjects(digitalObjects) {\n return digitalObjects.map(($do) => {\n if ($do.type.includes('images')) {\n return {\n id: 'scheda-layout-viewer',\n type: $do.type,\n label: $do.label,\n items: $do.items.map(({ url, iiifImages }) => ({\n url,\n iiifImages,\n type: $do.type,\n }))\n };\n }\n return $do;\n });\n }\n\n private _normalizeItems(items) {\n return items.map((singleItem) => ({ item: { ...singleItem } }));\n }\n\n private setHeadTitle(label?: string) {\n this.mainState.update('headTitle', getHeadTitle({\n label,\n name: this.configuration.get('customer'),\n pageName: this.configuration.get(this.configId)?.pageName,\n pageDefault: 'Patrimonio',\n }));\n }\n\n private setTreeTitle() {\n const titleClose = this.configuration.get(this.configId)?.treeCloseTitle;\n const titleOpen = this.configuration.get(this.configId)?.treeOpenTitle;\n this.treeCloseTitle = (titleClose) || 'Consulta il patrimonio';\n this.treeOpenTitle = (titleOpen) || 'Patrimonio';\n }\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { EventHandler } from '@net7/core';\nimport {\n isEmpty, isEqual, isNumber\n} from 'lodash';\nimport {\n forkJoin, from, of, ReplaySubject, Subject, timer\n} from 'rxjs';\nimport {\n debounce, filter, first, switchMap\n} from 'rxjs/operators';\nimport { ConfigurationService } from '@net7/boilerplate-common';\nimport { AwSchedaLayoutDS } from './scheda-layout.ds';\n\nexport class AwSchedaLayoutEH extends EventHandler {\n dataSource: AwSchedaLayoutDS;\n\n private destroyed$: Subject<void> = new Subject();\n\n private configuration: ConfigurationService;\n\n private route: ActivatedRoute;\n\n private router: Router;\n\n private treeLoaded$: ReplaySubject<void> = new ReplaySubject();\n\n private extendedTreeChanged$: Subject<{\n key: string;\n value: string | number;\n delay?: number;\n }> = new Subject();\n\n private schedaSearchChanged$: Subject<{\n key: string;\n value: string | number;\n delay?: number;\n }> = new Subject();\n\n private pageInputValue: number;\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-scheda-layout.init': {\n this.dataSource.onInit(payload);\n this.configuration = payload.configuration;\n this.route = payload.route;\n this.router = payload.router;\n const paramId = this.route.snapshot.params.id || '';\n if (paramId) {\n this.dataSource.currentId = paramId;\n }\n this.listenRoute();\n this.listenRouteQueryParams();\n this.listenExtendedTree();\n this.listenSchedaSearch();\n this.loadNavigation(paramId);\n this.emitOuter('viewleaf');\n // scroll top\n window.scrollTo(0, 0);\n } break;\n\n case 'aw-scheda-layout.destroy':\n this.destroyed$.next();\n this.dataSource.onDestroy();\n break;\n\n case 'aw-scheda-layout.togglesidebar':\n this.dataSource.collapseSidebar();\n break;\n\n default:\n console.warn('unhandled inner event of type', type);\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-sidebar-header.click':\n this.dataSource.collapseSidebar();\n break;\n case 'aw-scheda-dropdown.click':\n this.dataSource.changeDigitalObject(payload);\n break;\n\n /**\n * EXTENDED TREE EVENTS\n * ---------------------------------------------------> */\n case 'aw-extended-tree.change': {\n let key: string;\n let delay: number;\n if (payload.inputPayload === 'search-input') {\n key = 'query';\n delay = 1000;\n } else if (payload.inputPayload === 'limit-select') {\n key = 'limit';\n } else if (payload.inputPayload === 'page-input-change') {\n this.pageInputValue = +payload.value;\n } else if (payload.inputPayload === 'page-input-enter') {\n key = 'page';\n }\n\n if (key) {\n this.extendedTreeChanged$.next({\n key,\n delay,\n value: payload.value,\n });\n }\n } break;\n case 'aw-extended-tree.search':\n this.extendedTreeChanged$.next({\n key: 'query',\n value: payload.value\n });\n break;\n case 'aw-extended-tree.click':\n this.extendedTreeChanged$.next({\n key: 'page',\n value: payload\n });\n break;\n case 'aw-extended-tree.pageinputsubmit':\n if (isNumber(this.pageInputValue)) {\n this.extendedTreeChanged$.next({\n key: 'page',\n value: this.pageInputValue\n });\n }\n break;\n\n /**\n * SCHEDA (INTERNAL) SEARCH EVENTS\n * ---------------------------------------------------> */\n case 'aw-scheda-search.change': {\n let key: string;\n let delay: number;\n if (payload.inputPayload === 'input-change') {\n key = 'query';\n delay = 1000;\n } else if (payload.inputPayload === 'input-enter') {\n key = 'query';\n } else if (payload.inputPayload === 'limit-select') {\n key = 'limit';\n }\n\n if (key) {\n this.schedaSearchChanged$.next({\n key,\n delay,\n value: payload.value,\n });\n }\n } break;\n case 'aw-scheda-search.click':\n this.schedaSearchChanged$.next({\n key: 'page',\n value: payload\n });\n break;\n default:\n break;\n }\n });\n }\n\n private listenRoute() {\n this.route.paramMap.subscribe((params) => {\n const paramId = params.get('id');\n if (paramId) {\n if (paramId) {\n this.dataSource.currentId = paramId;\n this.emitOuter('routechanged', paramId);\n }\n this.dataSource.contentIsLoading = true;\n this.dataSource.loadItem(paramId).pipe(\n switchMap((response) => this.parseDigitalObjects$(response))\n ).subscribe((response) => {\n this.dataSource.contentIsLoading = false;\n if (response) {\n this.dataSource.loadContent(response);\n this.dataSource.loadExtendedTree();\n this.dataSource.loadInternalSearch();\n this.checkTreeItems(response);\n }\n });\n }\n // scroll top\n window.scrollTo(0, 0);\n });\n }\n\n private listenExtendedTree() {\n this.extendedTreeChanged$.pipe(\n filter(({ key, value }) => !(key === 'page' && (!isNumber(+value) || +value < 1))),\n debounce(({ delay }) => timer(delay || 1)),\n ).subscribe(({ key, value }) => {\n const queryParams: {\n [id: string]: string\n } = {};\n\n if (typeof value === 'string') {\n queryParams[key] = value.trim().length ? value : null;\n } else {\n queryParams[key] = `${value}`;\n }\n\n // page check\n if (key !== 'page') {\n queryParams.page = '1';\n }\n\n // reset pageInput value\n this.pageInputValue = null;\n\n // update url\n this.router.navigate([], {\n queryParams,\n queryParamsHandling: 'merge'\n });\n });\n }\n\n private listenSchedaSearch() {\n this.schedaSearchChanged$.pipe(\n filter(({ key, value }) => !(key === 'page' && (!isNumber(+value) || +value < 1))),\n debounce(({ delay }) => timer(delay || 1)),\n ).subscribe(({ key, value }) => {\n const queryParams: {\n [id: string]: string\n } = {};\n\n if (typeof value === 'string') {\n queryParams[`search-${key}`] = value.trim().length ? value : null;\n } else {\n queryParams[`search-${key}`] = `${value}`;\n }\n\n // page check\n if (key !== 'page') {\n queryParams['search-page'] = '1';\n }\n\n // update url\n this.router.navigate([], {\n queryParams,\n queryParamsHandling: 'merge'\n });\n });\n }\n\n private listenRouteQueryParams() {\n this.route.queryParams.subscribe((params) => {\n const extendedTreeParams = {};\n const internalSearchParams = {};\n Object.keys(params).forEach((key) => {\n const treeAllowed = ['query', 'page', 'limit'];\n const internalAllowed = treeAllowed.map((item) => `search-${item}`);\n if (treeAllowed.includes(key)) {\n let value;\n if (key !== 'query') {\n value = isNumber(+params[key]) ? +params[key] : null;\n } else {\n value = params[key];\n }\n if (value) {\n extendedTreeParams[key] = value;\n }\n }\n if (internalAllowed.includes(key)) {\n let value;\n if (key !== 'search-query') {\n value = isNumber(+params[key]) ? +params[key] : null;\n } else {\n value = params[key];\n }\n if (value) {\n internalSearchParams[key] = value;\n }\n }\n });\n\n // scheda search changed\n if (!isEqual(this.dataSource.internalSearchParams, internalSearchParams)) {\n this.dataSource.internalSearchParams = internalSearchParams;\n // has node response\n if (this.dataSource.lastResponse) {\n this.emitOuter('schedasearchrequest');\n this.dataSource.loadInternalSearch();\n }\n\n // extended tree changed\n }\n if (!isEqual(this.dataSource.extendedTreeParams, extendedTreeParams)) {\n this.dataSource.extendedTreeParams = extendedTreeParams;\n // has node response\n if (this.dataSource.lastResponse) {\n this.emitOuter('extendedtreerequest');\n this.dataSource.loadExtendedTree();\n }\n }\n });\n }\n\n private loadNavigation(selectedItem) {\n this.dataSource.updateNavigation('Caricamento in corso...');\n this.dataSource.getNavigation().subscribe((response) => {\n if (response) {\n this.dataSource.setTree(response);\n const treeLabel = this.dataSource.treeOpenTitle || this.dataSource.getTree().label;\n this.dataSource.updateNavigation(treeLabel);\n this.emitOuter('navigationresponse', {\n tree: this.dataSource.getTree(),\n currentItem: selectedItem,\n basePath: this.configuration.get('paths').schedaBasePath,\n });\n\n // emit signal\n this.treeLoaded$.next();\n }\n });\n }\n\n private parseDigitalObjects$(response) {\n const iiifManifest$ = {};\n const baseUrls = this.configuration.get('baseUrls') || {};\n const { iiifServer, iipServer } = baseUrls;\n if (Array.isArray(response?.digitalObjects)) {\n response.digitalObjects.forEach((digitalObject) => {\n // iip config url check\n if (iipServer && digitalObject.type === 'images-iip') {\n digitalObject.items.forEach((item) => {\n item.url = `${iipServer}${item.url}`;\n });\n }\n // iiif config url check\n if (iiifServer && digitalObject.type === 'images-iiif') {\n digitalObject.items.forEach((item) => {\n item.url = `${iiifServer}${item.url}`;\n });\n }\n\n if (digitalObject.type === 'images-iiif') {\n digitalObject.items.forEach(({ url }) => {\n iiifManifest$[url] = from(\n fetch(url)\n .then((data) => {\n if (!data.ok) {\n throw Error(data.statusText);\n }\n return data.json();\n })\n .catch((err) => {\n console.warn(`Error loading iiif manifest ${url}`, err);\n return null;\n })\n );\n });\n }\n });\n }\n if (!isEmpty(iiifManifest$)) {\n return forkJoin(iiifManifest$).pipe(\n switchMap((data: object) => {\n response.digitalObjects.forEach((digitalObject) => {\n if (digitalObject.type === 'images-iiif') {\n digitalObject.items.forEach((itemImages, index) => {\n digitalObject.items[index].iiifImages = this.getManifestImages(\n data[itemImages.url]\n );\n });\n }\n });\n return of(response);\n })\n );\n }\n return of(response);\n }\n\n private getManifestImages(manifest) {\n const iiifImages = [];\n if (manifest?.sequences) {\n manifest.sequences.forEach(({ canvases }) => {\n canvases.forEach(({ images }) => {\n images.forEach(({ resource }) => {\n iiifImages.push(resource['@id']);\n });\n });\n });\n }\n return iiifImages;\n }\n\n private checkTreeItems(response) {\n this.treeLoaded$.pipe(\n first()\n ).subscribe(() => {\n const treeDS = this.dataSource.getWidgetDataSource('aw-tree');\n const { items } = treeDS.output;\n if (!items.length && response.lastAl?.id) {\n this.emitOuter('selectParent', response.lastAl.id);\n }\n });\n }\n}\n","import { AwSchedaLayoutDS } from './scheda-layout.ds';\nimport { AwSchedaLayoutEH } from './scheda-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const AwPatrimonioLayoutConfig = {\n layoutId: 'aw-scheda-layout',\n /**\n * Array of components you want to use\n * in this leyout\n */\n widgets: [\n { id: 'aw-sidebar-header' },\n { id: 'aw-tree' },\n { id: 'aw-scheda-breadcrumbs' },\n { id: 'aw-scheda-metadata' },\n { id: 'aw-scheda-dropdown' },\n { id: 'aw-scheda-image' },\n { id: 'aw-scheda-image-navigator' },\n { id: 'aw-scheda-pdf' },\n { id: 'aw-scheda-image-iiif' },\n { id: 'aw-scheda-inner-title' },\n { id: 'aw-related-entities' },\n { id: 'aw-chart-tippy' },\n { id: 'aw-linked-objects' },\n { id: 'aw-extended-tree' },\n { id: 'aw-scheda-search' },\n ],\n layoutDS: AwSchedaLayoutDS,\n layoutEH: AwSchedaLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","//---------------------------\n// PdfViewer.ts\n//---------------------------\n\nimport { Component, Input } from '@angular/core';\nimport { isNull } from 'lodash';\n\nexport type PdfViewerData = {\n items: {\n label: string;\n url: string;\n selected: boolean;\n }[];\n next: number | null;\n prev: number | null;\n currentUrl: string;\n libOptions: {\n showToolbar: boolean;\n showSidebarButton: boolean;\n showFindButton: boolean;\n showPagingButtons: boolean;\n showZoomButtons: boolean;\n showPresentationModeButton: boolean;\n showOpenFileButton: boolean;\n showPrintButton: boolean;\n showDownloadButton: boolean;\n showBookModeButton: boolean;\n showSecondaryToolbarButton: boolean;\n showRotateButton: boolean;\n showHandToolButton: boolean;\n showScrollingButton: boolean;\n showSpreadButton: boolean;\n showPropertiesButton: boolean;\n };\n classes?: string;\n}\n\n@Component({\n selector: 'aw-pdf-viewer',\n templateUrl: './pdf-viewer.html',\n})\nexport class PdfViewerComponent {\n @Input() data: PdfViewerData;\n\n @Input() emit: (type: string, payload?: any) => void;\n\n onClick(payload) {\n if (!this.emit || isNull(payload)) {\n return;\n }\n\n this.emit('click', payload);\n }\n\n onLoaded() {\n this.emit('loaded');\n }\n}\n","<div *ngIf=\"data\" class=\"aw-pdf-viewer {{ data.classes || '' }}\">\n <div class=\"aw-pdf-viewer__loader\">\n <n7-loader></n7-loader>\n </div>\n \n <ngx-extended-pdf-viewer\n [src]=\"data.currentUrl\"\n [height]=\"'90vh'\"\n [textLayer]=\"true\"\n [showToolbar]=\"data.libOptions.showToolbar\"\n [showSidebarButton]=\"data.libOptions.showSidebarButton\"\n [showFindButton]=\"data.libOptions.showFindButton\"\n [showPagingButtons]=\"data.libOptions.showPagingButtons\"\n [showZoomButtons]=\"data.libOptions.showZoomButtons\"\n [showPresentationModeButton]=\"data.libOptions.showPresentationModeButton\"\n [showOpenFileButton]=\"data.libOptions.showOpenFileButton\"\n [showPrintButton]=\"data.libOptions.showPrintButton\"\n [showDownloadButton]=\"data.libOptions.showDownloadButton\"\n [showBookModeButton]=\"data.libOptions.showBookModeButton\"\n [showSecondaryToolbarButton]=\"data.libOptions.showSecondaryToolbarButton\"\n [showRotateButton]=\"data.libOptions.showRotateButton\"\n [showHandToolButton]=\"data.libOptions.showHandToolButton\"\n [showScrollingButton]=\"data.libOptions.showScrollingButton\"\n [showSpreadButton]=\"data.libOptions.showSpreadButton\"\n [showPropertiesButton]=\"data.libOptions.showPropertiesButton\"\n (pdfLoaded)=\"onLoaded()\"\n (pdfLoadingFailed)=\"onLoaded()\">\n </ngx-extended-pdf-viewer>\n \n <div *ngIf=\"data.items.length > 1\" class=\"aw-pdf-viewer__navigation\">\n <div class=\"aw-pdf-viewer__navigation-tools\">\n <a class=\"aw-pdf-viewer__navigation-prev {{ (!data.prev && data.prev !== 0) ? 'is-disabled' : '' }}\" \n (click)=\"onClick(data.prev)\">\n <span class=\"n7-icon-angle-left\"></span>\n </a>\n <div class=\"aw-pdf-viewer__navigation-select\">\n <p class=\"aw-pdf-viewer__navigation-select-text\">Scorri i documenti PDF</p>\n <select (change)=\"onClick(+$event.target.value)\">\n <option *ngFor=\"let item of data.items; let $i = index\" [value]=\"$i\"\n [selected]=\"item.selected\">{{ item.label }}</option>\n </select>\n </div>\n <a class=\"aw-pdf-viewer__navigation-next {{ !data.next ? 'is-disabled' : '' }}\" \n (click)=\"onClick(data.next)\">\n <span class=\"n7-icon-angle-right\"></span>\n </a>\n </div>\n </div>\n</div>\n","//---------------------------\n// SchedaDropdown.ts\n//---------------------------\n\nimport { Component, Input } from '@angular/core';\nimport { Icon } from '@net7/components';\n\nexport type SchedaDropdownData = {\n header: {\n label: string;\n icon: Icon;\n payload: any;\n };\n items: {\n label: string;\n payload: any;\n selected: false;\n type: string;\n }[];\n classes?: any;\n}\n\n@Component({\n selector: 'aw-scheda-dropdown',\n templateUrl: './scheda-dropdown.html',\n})\nexport class SchedaDropdownComponent {\n @Input() data: SchedaDropdownData;\n\n @Input() emit: (type: string, payload: any) => void;\n\n onClick(ev: Event, payload) {\n if (!this.emit) {\n return;\n }\n\n ev.stopImmediatePropagation();\n\n this.emit('click', payload);\n }\n}\n","<div *ngIf=\"data\" class=\"aw-scheda-dropdown {{ data.classes || '' }}\">\n <div class=\"aw-scheda-dropdown__header\"\n (click)=\"onClick($event, data.header.payload)\">\n <!-- header label -->\n <span class=\"aw-scheda-dropdown__header-label\">\n {{ data.header.label }}\n </span>\n <!-- header icon -->\n <span class=\"aw-scheda-dropdown__header-icon\"\n [ngClass]=\"data.header.icon['id']\">\n </span>\n </div>\n <div class=\"aw-scheda-dropdown__items\">\n <ul>\n <li *ngFor=\"let item of data.items\"\n [ngClass]=\"{\n 'is-selected': item.selected \n }\"\n (click)=\"onClick($event, item.payload)\">\n {{ item.label }}\n </li>\n </ul>\n </div>\n</div>","import { Component, Input } from '@angular/core';\nimport {\n Anchor, InnerTitleData, InputSelectData, InputTextData, PaginationData\n} from '@net7/components';\n\nexport type ExtendedTreeData = {\n header: InnerTitleData;\n items: {\n icon: string;\n thumbnail?: string;\n label: string;\n anchor: Anchor;\n }[];\n pagination: PaginationData;\n limitSelect?: InputSelectData;\n pageInput?: InputTextData;\n fallback?: string;\n loading?: boolean;\n}\n\n@Component({\n selector: 'aw-extended-tree',\n templateUrl: './extended-tree.html',\n})\nexport class ExtendedTreeComponent {\n @Input() data: ExtendedTreeData;\n\n @Input() emit: (type: string, payload?: any) => void;\n\n @Input() lb: any;\n\n onPageInputSubmit() {\n if (!this.emit) return;\n\n this.emit('pageinputsubmit');\n }\n\n onCollapseClick(type) {\n if (['text', 'submit'].includes(type)) return;\n\n this.lb.dataSource.onSectionCollapse('extended-tree');\n }\n}\n","<div *ngIf=\"data\" class=\"aw-extended-tree\">\n <div class=\"aw-scheda__section-title-wrapper\" (click)=\"onCollapseClick($event.target?.type)\">\n <ng-content></ng-content>\n <div *ngIf=\"data.header as header\" class=\"aw-scheda__inner-title aw-extended-tree__header\">\n <n7-inner-title \n [data]=\"header\"\n [emit]=\"this.emit\"></n7-inner-title>\n </div>\n </div>\n <div [hidden]=\"!!lb.dataSource.sectionCollapseState['extended-tree']\">\n <ng-container *ngIf=\"data.loading\">\n <div class=\"aw-extended-tree__loader\">\n <n7-loader></n7-loader>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!data.loading\">\n <ng-container *ngIf=\"!data.items?.length && data.fallback\">\n <div class=\"aw-extended-tree__content\">\n <p>{{ data.fallback }}</p>\n </div>\n </ng-container>\n <ng-container *ngIf=\"data.items?.length\">\n <div *ngIf=\"data.items as items\" class=\"aw-extended-tree__content\">\n <div *ngFor=\"let item of data.items\" class=\"aw-extended-tree__item\">\n <n7-anchor-wrapper [classes]=\"'aw-extended-tree__item-link'\" [data]=\"item.anchor\">\n <div *ngIf=\"item.icon\" class=\"aw-extended-tree__item-icon\">\n <span class=\"{{ item.icon }}\"></span>\n </div>\n <div *ngIf=\"item.thumbnail\" class=\"aw-extended-tree__item-image\">\n <img src=\"{{ item.thumbnail }}\" alt=\"{{ item.label }}\">\n </div>\n <div *ngIf=\"item.label\" class=\"aw-extended-tree__item-label\">{{ item.label }}</div>\n </n7-anchor-wrapper>\n </div>\n </div>\n <div *ngIf=\"data.pagination as pagination\" class=\"aw-extended-tree__footer\">\n <div *ngIf=\"data.pagination as pagination\" class=\"aw-extended-tree__pagination\">\n <n7-pagination \n [data]=\"pagination\"\n [emit]=\"this.emit\"></n7-pagination>\n </div>\n <div *ngIf=\"data.pageInput as pageInput\" class=\"aw-extended-tree__page-input\">\n <n7-input-text \n [data]=\"pageInput\"\n [emit]=\"this.emit\"></n7-input-text>\n <button class=\"n7-btn\"\n (click)=\"onPageInputSubmit()\">Vai</button>\n </div>\n <div *ngIf=\"data.limitSelect as limitSelect\" class=\"aw-extended-tree__limit-select\">\n <n7-input-select \n [data]=\"limitSelect\"\n [emit]=\"this.emit\"></n7-input-select>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</div>","import { Component, Input } from '@angular/core';\nimport { InputTextData } from '@net7/components';\n\nexport type SchedaImageNavigatorData = {\n input: InputTextData;\n button: {\n label: string;\n disabled?: boolean;\n };\n classes?: string;\n}\n\n@Component({\n selector: 'aw-scheda-image-navigator',\n templateUrl: './scheda-image-navigator.html'\n})\nexport class SchedaImageNavigatorComponent {\n @Input() data: SchedaImageNavigatorData;\n\n @Input() emit: (type: string, payload?: unknown) => void;\n\n onSubmit() {\n if (!this.emit) return;\n this.emit('submit');\n }\n}\n","<div *ngIf=\"data\" class=\"aw-scheda-image-navigator\" [ngClass]=\"data.classes\">\n <div class=\"aw-scheda-image-navigator__input\">\n <n7-input-text \n [data]=\"data.input\"\n [emit]=\"this.emit\"></n7-input-text>\n </div>\n <div *ngIf=\"data.button as button\" class=\"aw-scheda-image-navigator__button\">\n <button class=\"n7-btn\"\n [ngClass]=\"{\n 'is-disabled': button.disabled\n }\"\n [disabled]=\"button.disabled\"\n (click)=\"onSubmit()\">{{ button.label }}</button>\n </div>\n</div>","import { Component, Input } from '@angular/core';\nimport {\n Anchor,\n InnerTitleData, InputSelectData, InputTextData, PaginationData\n} from '@net7/components';\n\nexport type SchedaSearchData = {\n header: InnerTitleData;\n input: InputTextData;\n items: {\n icon: string;\n thumbnail?: string;\n label: string;\n anchor: Anchor;\n breadcrumbs?: {\n items: {\n label: string;\n anchor: Anchor;\n }[];\n }\n }[];\n pagination: PaginationData;\n limitSelect?: InputSelectData;\n fallback?: string;\n loading?: boolean;\n}\n\n@Component({\n selector: 'aw-scheda-search',\n templateUrl: './scheda-search.html',\n})\nexport class SchedaSearchComponent {\n @Input() data: SchedaSearchData;\n\n @Input() emit: (type: string, payload?: any) => void;\n}\n","<div *ngIf=\"data\" class=\"aw-scheda-search\">\n <div class=\"aw-scheda__section-title-wrapper\">\n <div *ngIf=\"data.header as header\" class=\"aw-scheda__inner-title aw-scheda-search__header\">\n <n7-inner-title [data]=\"header\"></n7-inner-title>\n </div>\n </div>\n <div *ngIf=\"data.input as input\" class=\"aw-scheda__input aw-scheda-search__input\">\n <n7-input-text [data]=\"input\" [emit]=\"this.emit\"></n7-input-text>\n </div>\n <div>\n <ng-container *ngIf=\"data.loading\">\n <div class=\"aw-scheda-search__loader\">\n <n7-loader></n7-loader>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!data.loading && data.items\">\n <ng-container *ngIf=\"!data.items?.length && data.fallback\">\n <div class=\"aw-scheda-search__content\">\n <p>{{ data.fallback }}</p>\n </div>\n </ng-container>\n <ng-container *ngIf=\"data.items?.length\">\n <div *ngIf=\"data.items as items\" class=\"aw-scheda-search__content\">\n <div *ngFor=\"let item of data.items\" class=\"aw-scheda-search__item\">\n <n7-anchor-wrapper [classes]=\"'aw-scheda-search__item-link'\" [data]=\"item.anchor\">\n <div class=\"aw-scheda-search__item-top\">\n <n7-smart-breadcrumbs [data]=\"item.breadcrumbs\">\n </n7-smart-breadcrumbs>\n </div>\n <div class=\"aw-scheda-search__item-bottom\">\n <div *ngIf=\"item.icon\" class=\"aw-scheda-search__item-icon\">\n <span class=\"{{ item.icon }}\"></span>\n </div>\n <div *ngIf=\"item.thumbnail\" class=\"aw-scheda-search__item-image\">\n <img src=\"{{ item.thumbnail }}\" alt=\"{{ item.label }}\">\n </div>\n <div *ngIf=\"item.label\" class=\"aw-scheda-search__item-label\">{{ item.label }}</div>\n </div>\n </n7-anchor-wrapper>\n </div>\n </div>\n <div *ngIf=\"data.pagination as pagination\" class=\"aw-scheda-search__footer\">\n <div *ngIf=\"data.pagination as pagination\" class=\"aw-scheda-search__pagination\">\n <n7-pagination \n [data]=\"pagination\"\n [emit]=\"this.emit\"></n7-pagination>\n </div>\n <div *ngIf=\"data.limitSelect as limitSelect\" class=\"aw-scheda-search__limit-select\">\n <n7-input-select \n [data]=\"limitSelect\"\n [emit]=\"this.emit\"></n7-input-select>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</div>","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { Title } from '@angular/platform-browser';\nimport {\n AbstractLayout,\n ConfigurationService,\n LayoutsConfigurationService,\n MainStateService,\n CommunicationService\n} from '@net7/boilerplate-common';\nimport { AwPatrimonioLayoutConfig as config } from './scheda-layout.config';\n\n@Component({\n selector: 'aw-scheda-layout',\n templateUrl: './scheda-layout.html',\n})\n\nexport class AwSchedaLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private configuration: ConfigurationService,\n private layoutsConfiguration: LayoutsConfigurationService,\n private mainState: MainStateService,\n private titleService: Title,\n private communication: CommunicationService,\n\n ) {\n super(layoutsConfiguration.get('AwPatrimonioLayoutConfig') || config);\n }\n\n /**\n * Optional variables that can be accessed from the layout's logic.\n * If removed, they must also be removed from the layout's DataSource file,\n * and from this file imports.\n */\n protected initPayload() {\n return {\n configuration: this.configuration,\n mainState: this.mainState,\n router: this.router,\n route: this.route,\n titleService: this.titleService,\n communication: this.communication,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"aw-scheda\"\n id=\"scheda-layout\">\n <div class=\"aw-scheda__content n7-side-auto-padding sticky-parent\"\n [ngClass]=\"{ 'is-collapsed' : lb.dataSource.sidebarCollapsed }\">\n\n <ng-container *ngTemplateOutlet=\"tree\"></ng-container>\n\n <div class=\"aw-scheda__scheda-wrapper\"\n [hidden]=\"lb.dataSource.contentIsLoading\">\n\n <div class=\"aw-scheda__breadcrumbs-wrapper\">\n <n7-smart-breadcrumbs *ngIf=\"lb.dataSource.hasBreadcrumb\"\n [data]=\"lb.widgets['aw-scheda-breadcrumbs'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-scheda-breadcrumbs'].emit\">\n </n7-smart-breadcrumbs>\n </div>\n\n <div *ngIf=\"!lb.dataSource.hasBreadcrumb\"\n class=\"aw-scheda__fake-breadcrumbs\"\n (click)=\"lb.eventHandler.emitInner('togglesidebar', {})\">\n <p class=\"aw-scheda__fake-breadcrumbs-open\" \n *ngIf=\"lb.dataSource.sidebarCollapsed\">\n {{ lb.dataSource.treeCloseTitle }}\n </p>\n </div>\n\n <div *ngIf=\"!lb.dataSource.currentId\"\n class=\"aw-scheda__intro-text\"\n [innerHTML]=\"lb.dataSource.emptyLabel\">\n </div>\n\n <div class=\"aw-scheda__title-wrapper\">\n <div *ngIf=\"lb.dataSource.titleNavigation as titleNav\" class=\"aw-scheda__prev\">\n <a class=\"n7-btn n7-btn-light\" [routerLink]=\"titleNav.prev?.href ? [titleNav.prev.href] : null\"\n [title]=\"titleNav.prev?.label || ''\"\n [ngClass]=\"{ 'is-disabled': !titleNav.prev?.href }\">\n <span class=\"n7-icon-angle-left\"></span>\n </a>\n </div>\n <div class=\"aw-scheda__title\">\n <div *ngIf=\"lb.dataSource.documentType as documentType\" class=\"aw-scheda__document-type\">\n <span *ngIf=\"documentType.icon\" class=\"aw-scheda__document-type-icon {{ documentType.icon }}\"></span>\n <span class=\"aw-scheda__document-type-label\">{{ documentType.label }}</span>\n </div>\n <n7-inner-title [data]=\"lb.widgets['aw-scheda-inner-title'].ds.out$ | async\">\n </n7-inner-title>\n </div>\n <div *ngIf=\"lb.dataSource.titleNavigation as titleNav\" class=\"aw-scheda__next\">\n <a class=\"n7-btn n7-btn-light\" [routerLink]=\"titleNav.next?.href ? [titleNav.next.href] : null\"\n [title]=\"titleNav.next?.label || ''\"\n [ngClass]=\"{ 'is-disabled': !titleNav.next?.href }\">\n <span class=\"n7-icon-angle-right\"></span>\n </a>\n </div>\n </div>\n\n <!-- Internal search -->\n <ng-container *ngTemplateOutlet=\"internalsearch\"></ng-container>\n\n <!-- Empty state -->\n <ng-container *ngIf=\"!lb.dataSource.hasContent\">\n <ng-container *ngTemplateOutlet=\"empty\"></ng-container>\n </ng-container>\n\n <!-- Content sections -->\n <ng-container *ngIf=\"lb.dataSource.hasContent\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n\n <!-- Extended tree -->\n <ng-container *ngTemplateOutlet=\"extendedtree\"></ng-container>\n\n </div>\n </div>\n</div>\n\n<ng-template #tree>\n <div class=\"aw-scheda__tree sticky-target\"\n [ngClass]=\"{ 'is-sticky': lb.dataSource.sidebarIsSticky }\">\n <n7-sidebar-header [data]=\"lb.widgets['aw-sidebar-header'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-sidebar-header'].emit\"></n7-sidebar-header>\n <div class=\"aw-scheda__tree-content-loading\"\n *ngIf=\"!(lb.widgets['aw-tree'].ds.out$ | async)\">\n <n7-content-placeholder *ngFor=\"let n of [0,1,2,3]\"\n [data]=\"{\n blocks: [{\n classes: 'tree-placeholder-item'\n }]\n }\"></n7-content-placeholder>\n </div>\n <div class=\"aw-scheda__tree-content\"\n (click)=\"lb.eventHandler.emitOuter('treeposition', $event)\"\n [ngStyle]=\"{\n 'max-height': lb.dataSource.treeMaxHeight,\n 'overflow': 'auto'\n }\">\n <n7-tree [data]=\"lb.widgets['aw-tree'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-tree'].emit\"\n *ngIf=\"!lb.dataSource.sidebarCollapsed\">\n </n7-tree>\n </div>\n </div>\n</ng-template>\n\n<ng-template #empty>\n <section class=\"aw-scheda__section aw-scheda__empty\"\n [innerHTML]=\"lb.dataSource.emptyStateString\">\n </section>\n</ng-template>\n\n<ng-template #content>\n <!-- Digital Object selection dropdown -->\n <section class=\"aw-scheda__digital-object-dropdown\"\n *ngIf=\"(\n lb.dataSource.hasDigitalObjects \n && lb.dataSource.digitalObjects.length > 1\n )\">\n <p class=\"aw-scheda__digital-object-dropdown-label\">\n Seleziona l'oggetto digitale da visualizzare:\n </p>\n <aw-scheda-dropdown \n [data]=\"lb.widgets['aw-scheda-dropdown'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-scheda-dropdown'].emit\">\n </aw-scheda-dropdown>\n </section>\n <!-- END // Digital Object selection dropdown -->\n\n <!-- Digital Objects: images, IIP, PDFs, external links -->\n <section *ngIf=\"lb.dataSource.currentDigitalObject as $do\" \n class=\"aw-scheda__media aw-scheda__{{ $do.type }}\">\n <ng-container [ngSwitch]=\"$do.type\">\n <!-- IMAGE VIEWER (IIP) -->\n <ng-container *ngSwitchCase=\"'images-iip'\">\n <aw-scheda-image-navigator \n [data]=\"lb.widgets['aw-scheda-image-navigator'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-scheda-image-navigator'].emit\"></aw-scheda-image-navigator>\n <n7-image-viewer \n (contextmenu)=\"lb.dataSource.hasContextMenu()\" \n [data]=\"lb.widgets['aw-scheda-image'].ds.out$ | async\">\n </n7-image-viewer>\n </ng-container>\n\n <!-- IMAGE VIEWER (IIIF) -->\n <ng-container *ngSwitchCase=\"'images-iiif'\">\n <n7-mirador \n class=\"aw-mirador-viewer\"\n (contextmenu)=\"lb.dataSource.hasContextMenu()\" \n [data]=\"lb.widgets['aw-scheda-image-iiif'].ds.out$ | async\">\n </n7-mirador>\n </ng-container>\n\n <!-- IMAGE VIEWER (Simple: jpg, png) -->\n <ng-container *ngSwitchCase=\"'images-simple'\">\n <aw-scheda-image-navigator \n [data]=\"lb.widgets['aw-scheda-image-navigator'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-scheda-image-navigator'].emit\"></aw-scheda-image-navigator>\n <n7-image-viewer \n (contextmenu)=\"lb.dataSource.hasContextMenu()\"\n [data]=\"lb.widgets['aw-scheda-image'].ds.out$ | async\">\n </n7-image-viewer>\n </ng-container>\n \n <!-- PDF -->\n <ng-container *ngSwitchCase=\"'pdf'\">\n <aw-pdf-viewer \n [data]=\"lb.widgets['aw-scheda-pdf'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-scheda-pdf'].emit\">\n </aw-pdf-viewer>\n </ng-container>\n \n <!-- EXTERNAL URL -->\n <ng-container *ngSwitchCase=\"'external'\">\n <div class=\"aw-scheda__external-url\">\n <a class=\"aw-scheda__external-url-link\" href=\"{{ $do.url }}\" target=\"_blank\">\n {{ $do.label || lb.dataSource.externalUrlText }}\n <span class=\"n7-icon-external-link\"></span>\n </a>\n </div>\n </ng-container>\n </ng-container>\n </section>\n <!-- END // Digital Objects -->\n\n <section *ngIf=\"lb.dataSource.contentParts.content\" class=\"aw-scheda__section aw-scheda__description\">\n <div *ngFor=\"let part of lb.dataSource.contentParts\">\n <div [innerHTML]=\"part.content\"></div>\n </div>\n </section>\n\n <!-- Metadata -->\n <section *ngIf=\"lb.dataSource.hasMetadata\" class=\"aw-scheda__section aw-scheda__metadata\">\n <div class=\"aw-scheda__section-title-wrapper\" (click)=\"lb.dataSource.onSectionCollapse('metadata')\">\n <ng-container *ngTemplateOutlet=\"collapse; context: { $implicit: 'metadata' }\"></ng-container>\n <div class=\"aw-scheda__inner-title\"\n *ngIf=\"lb.dataSource.metadataSectionTitle\">\n {{lb.dataSource.metadataSectionTitle}}\n </div>\n </div>\n <div [hidden]=\"!!lb.dataSource.sectionCollapseState['metadata']\" \n class=\"aw-scheda__section-content-wrapper\">\n <n7-metadata-viewer [data]=\"lb.widgets['aw-scheda-metadata'].ds.out$ | async\">\n </n7-metadata-viewer>\n </div>\n </section>\n <!-- END // Metadata -->\n\n <!-- Related entities -->\n <section *ngIf=\"lb.dataSource.hasRelatedEntities\"\n id=\"related-item-container\"\n class=\"aw-scheda__section aw-scheda__related\">\n <div class=\"aw-scheda__section-title-wrapper\" (click)=\"lb.dataSource.onSectionCollapse('related-entities')\">\n <ng-container *ngTemplateOutlet=\"collapse; context: { $implicit: 'related-entities' }\"></ng-container>\n <div class=\"aw-scheda__inner-title\">\n {{lb.dataSource.relatedEntitiesHeader}}\n </div>\n </div>\n <div [hidden]=\"!!lb.dataSource.sectionCollapseState['related-entities']\" \n class=\"aw-scheda__related-items aw-item-preview-list n7-grid-2\">\n <ng-container *ngFor=\"let preview of (lb.widgets['aw-related-entities'].ds.out$ | async)?.previews\">\n <div class=\"aw-item-preview-wrapper\">\n <n7-item-preview [data]=\"preview\"\n [emit]=\"lb.widgets['aw-related-entities'].emit\">\n </n7-item-preview>\n <div class=\"aw-item-preview-container-relations\">\n <!-- Relation -->\n <div class=\"aw-item-preview-relation\"\n *ngIf=\"preview.relation?.value && lb.dataSource.showRelationType\">\n <p class=\"aw-item-preview-relation__description\">Tipo di relazione\n <!-- <span class=\"aw-item-preview-relation__key\">{{preview.relation.key}}</span>: -->\n <span class=\"aw-item-preview-relation__value\">{{preview.relation.value}}</span>\n </p>\n </div>\n <!-- Qualification -->\n <div class=\"aw-item-preview-relation\"\n *ngIf=\"preview.qualification?.value && lb.dataSource.showRelationQualification\">\n <p class=\"aw-item-preview-relation__description\">Qualifica della relazione\n <span class=\"aw-item-preview-relation__value\">{{preview.qualification.value}}</span>\n </p>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </section>\n <!-- END // Related entities -->\n\n <!-- Similar Objects -->\n <section *ngIf=\"lb.dataSource.hasSimilarItems\"\n id=\"related-item-container\"\n class=\"aw-scheda__section aw-scheda__related\">\n <div class=\"aw-scheda__section-title-wrapper\" (click)=\"lb.dataSource.onSectionCollapse('similar-items')\">\n <ng-container *ngTemplateOutlet=\"collapse; context: { $implicit: 'similar-items' }\"></ng-container>\n <div class=\"aw-scheda__inner-title\">\n {{lb.dataSource.similarItemsSectionTitle}}\n </div>\n </div>\n <div [hidden]=\"!!lb.dataSource.sectionCollapseState['similar-items']\" \n class=\"aw-scheda__related-items aw-item-preview-list n7-grid-2\">\n <ng-container *ngFor=\"let preview of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews\">\n <div class=\"aw-item-preview-wrapper\">\n <n7-item-preview [data]=\"preview\"\n [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n </div> \n </ng-container>\n </div>\n </section>\n <!-- END // Similar Objects -->\n</ng-template>\n\n<ng-template #collapse let-id>\n <div class=\"aw-scheda__collapse\">\n <button class=\"n7-btn n7-btn-light\">\n <span class=\"n7-icon-angle-right\"\n [ngClass]=\"{\n 'n7-icon-angle-right': !!lb.dataSource.sectionCollapseState[id],\n 'n7-icon-angle-down': !lb.dataSource.sectionCollapseState[id]\n }\"></span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #extendedtree>\n <!-- Extended Tree -->\n <section *ngIf=\"lb.dataSource.hasExtendedTree\" id=\"extended-tree-container\" class=\"aw-scheda__section\">\n <div class=\"aw-scheda__section-extended-tree-loader\" *ngIf=\"!(lb.widgets['aw-extended-tree'].ds.out$ | async)\">\n <n7-loader></n7-loader>\n </div>\n <aw-extended-tree\n [data]=\"lb.widgets['aw-extended-tree'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-extended-tree'].emit\"\n [lb]=\"lb\">\n <ng-container *ngTemplateOutlet=\"collapse; context: { $implicit: 'extended-tree' }\"></ng-container>\n </aw-extended-tree>\n </section>\n <!-- END // Extended Tree -->\n</ng-template>\n\n<ng-template #internalsearch>\n <!-- Internal search -->\n <section *ngIf=\"lb.dataSource.hasInternalSearch\" id=\"internal-search-container\" class=\"aw-scheda__section aw-scheda__section-internal-search\">\n <aw-scheda-search\n [data]=\"lb.widgets['aw-scheda-search'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-scheda-search'].emit\"></aw-scheda-search>\n </section>\n <!-- END // Internal search -->\n</ng-template>","import { SmartPaginationDS, SmartPaginationEH } from '@net7/boilerplate-common';\nimport { AwSearchLayoutDS } from './search-layout.ds';\nimport { AwSearchLayoutEH } from './search-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\nimport { AwFacetsWrapperDS } from '../../data-sources';\nimport { AwFacetsWrapperEH } from '../../event-handlers';\n\nexport const AwSearchLayoutConfig = {\n layoutId: 'aw-search-layout',\n /**\n * Array of components you want to use\n * in this layout\n */\n widgets: [\n { id: 'facets-wrapper', dataSource: AwFacetsWrapperDS, eventHandler: AwFacetsWrapperEH },\n { id: 'aw-linked-objects' },\n { id: 'aw-search-layout-tabs', hasStaticData: true },\n {\n id: 'n7-smart-pagination',\n dataSource: SmartPaginationDS,\n eventHandler: SmartPaginationEH,\n },\n ],\n layoutDS: AwSearchLayoutDS,\n layoutEH: AwSearchLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n AbstractLayout,\n ConfigurationService,\n LayoutsConfigurationService,\n MainStateService,\n CommunicationService\n} from '@net7/boilerplate-common';\nimport { AwSearchService } from '../../search/aw-search.service';\nimport { AwSearchLayoutConfig as config } from './search-layout.config';\n\n@Component({\n selector: 'aw-search-layout',\n templateUrl: './search-layout.html',\n})\n\nexport class AwSearchLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n constructor(\n private configuration: ConfigurationService,\n private layoutsConfiguration: LayoutsConfigurationService,\n private mainState: MainStateService,\n private communication: CommunicationService,\n private search: AwSearchService,\n private route: ActivatedRoute,\n ) {\n super(layoutsConfiguration.get('AwSearchLayoutConfig') || config);\n }\n\n /**\n * Optional variables that can be accessed from the layout's logic.\n * If removed, they must also be removed from the layout's DataSource file,\n * and from this file imports.\n */\n protected initPayload() {\n return {\n configuration: this.configuration,\n mainState: this.mainState,\n communication: this.communication,\n search: this.search,\n route: this.route,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"aw-search n7-side-auto-padding\"\n id=\"search-layout\">\n <div class=\"aw-search__header\">\n <div class=\"aw-search__header-left\">\n <h1 class=\"aw-search__header-title\">{{ lb.dataSource.pageTitle }}</h1>\n </div>\n <!--\n <div class=\"aw-search__header-right\">\n <n7-nav\n [data]=\"lb.widgets['aw-search-layout-tabs'].ds.out$ | async\"\n [emit]=\"lb.widgets['aw-search-layout-tabs'].emit\">\n </n7-nav>\n </div>\n -->\n </div>\n <div class=\"aw-search__content-wrapper sticky-parent\">\n <!-- Left sidebar: facets -->\n <div *ngIf=\"!(lb.widgets['facets-wrapper'].ds.out$ | async)\"\n class=\"aw-search__sidebar-loading sticky-target\">\n <div class=\"aw-search__facets-loading\">\n <n7-content-placeholder [data]=\"{\n blocks: [{\n classes: 'search-placeholder-facet-input'\n }, {\n classes: 'search-placeholder-facet-check'\n }, {\n classes: 'search-placeholder-facet-item'\n }, {\n classes: 'search-placeholder-facet-item'\n }, {\n classes: 'search-placeholder-facet-item'\n }, {\n classes: 'search-placeholder-facet-item'\n }, {\n classes: 'search-placeholder-facet-item'\n }]\n }\">\n </n7-content-placeholder>\n </div>\n </div>\n <div *ngIf=\"!!(lb.widgets['facets-wrapper'].ds.out$ | async)\"\n class=\"aw-search__sidebar sticky-target\"\n [ngClass]=\"{ 'is-sticky': lb.dataSource.sidebarIsSticky }\">\n <div class=\"aw-search__facets\">\n <aw-facets-wrapper [data]=\"lb.widgets['facets-wrapper'].ds.out$ | async\"\n [emit]=\"lb.widgets['facets-wrapper'].emit\">\n </aw-facets-wrapper>\n </div>\n </div>\n <div class=\"scroll-ref\">&nbsp;</div>\n <div class=\"aw-search__content\">\n <div class=\"aw-search__results-header\">\n <div class=\"aw-search__results-header-left\">\n <h3 *ngIf=\"!lb.dataSource.resultsLoading\"\n class=\"aw-search__total\">\n <span class=\"aw-search__total-number\">{{ lb.dataSource.totalCount }}</span>&nbsp;\n <span class=\"aw-search__total-title\">{{ lb.dataSource.resultsTitle }}</span>\n </h3>\n </div>\n <div class=\"aw-search__results-header-right\">\n <label class=\"aw-search__results-select-orderby-label\"\n for=\"aw-search__results-select-orderby\">{{ lb.dataSource.orderByLabel }}</label>\n <select (change)=\"lb.eventHandler.emitInner('orderbychange', $event.target.value)\"\n id=\"aw-search__results-select-orderby\">\n <option *ngFor=\"let option of lb.dataSource.orderByOptions\"\n [value]=\"option.value\"\n [selected]=\"option.selected\"\n [hidden]=\"option.type === 'score' && lb.dataSource.isSearchingText.value === false\">\n {{ option.label }}</option>\n </select>\n </div>\n </div>\n <!-- Search details -->\n <div *ngIf=\"lb.dataSource.resultsLoading\"\n class=\"aw-search__results-wrapper-loading\">\n <n7-content-placeholder *ngFor=\"let n of [0,1,2,3,4,5,6,7,8,9]\"\n [data]=\"{\n blocks: [\n { classes: 'search-result-placeholder-title' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' },\n { classes: 'search-result-placeholder-metadata' }\n ]\n }\"></n7-content-placeholder>\n </div>\n <div *ngIf=\"!lb.dataSource.resultsLoading\"\n class=\"aw-search__results-wrapper\">\n <div class=\"aw-item-preview-list\">\n <ng-container *ngFor=\"let preview of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews\">\n <div class=\"aw-item-preview-wrapper\">\n <n7-smart-breadcrumbs [data]=\"preview.breadcrumbs\">\n </n7-smart-breadcrumbs>\n <n7-item-preview [data]=\"preview\"\n [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n </div>\n </ng-container>\n </div>\n <ng-container *ngIf=\"lb.dataSource.totalCount == 0\">\n <div class=\"aw-search__fallback\">\n <p class=\"aw-search__fallback-string\">\n {{ lb.dataSource.fallback }}\n </p>\n <button [disabled]=\"!lb.dataSource.resetButtonEnabled\"\n class=\"n7-btn aw-search__fallback-button\"\n (click)=\"lb.eventHandler.emitInner('searchreset', {})\">\n Resetta la ricerca\n </button>\n </div>\n </ng-container>\n <n7-smart-pagination *ngIf=\"lb.dataSource.totalCount > 10\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n </div>\n </div>\n </div>\n</div>\n","import { InnerTitleData } from '@net7/components';\nimport { LayoutDataSource } from '@net7/core';\nimport { isNull } from 'lodash';\nimport { BehaviorSubject } from 'rxjs';\nimport { helpers } from '@net7/boilerplate-common';\nimport { getHeadTitle } from '../../helpers/title.helper';\n\ntype LayoutState = 'LOADING' | 'EMPTY' | 'SUCCESS';\n\nexport class AwTimelineLayoutDS extends LayoutDataSource {\n protected configuration: any;\n\n protected mainState: any;\n\n protected titleService: any;\n\n public configId = 'timeline-layout';\n\n public options: any;\n\n public pageTitle: string;\n\n private communication: any;\n\n private pageSize = 10;\n\n public state$: BehaviorSubject<LayoutState> = new BehaviorSubject('EMPTY');\n\n private currentPage = 1;\n\n private relatedItems: any[];\n\n public total: number;\n\n private currentId: string;\n\n onInit({\n configuration, mainState, options, titleService, communication,\n }) {\n this.communication = communication;\n this.configuration = configuration;\n this.mainState = mainState;\n this.options = options;\n this.titleService = titleService;\n\n // head title\n this.setHeadTitle();\n this.setPageTitle();\n\n // navigation update\n this.mainState.updateCustom('currentNav', 'timeline');\n\n this.communication.request$('getEventObjects', {\n params: {},\n onError: (err) => {\n console.warn(err);\n }\n }).subscribe((response) => {\n this.one('aw-timeline').updateOptions({\n configuration: this.configuration.get(this.configId)?.timeline\n });\n this.one('aw-timeline').update(response);\n });\n }\n\n onTimelineClick({ id, label, dateText }) {\n if (isNull(id)) {\n this.currentId = null;\n this.clearResults();\n } else {\n // loading results\n this.state$.next('LOADING');\n this.communication.request$('getEntityRelatedItems', {\n params: {\n selectedEntitiesIds: [id]\n }\n }).subscribe(({ itemsPagination }) => {\n // clear loading\n this.state$.next('SUCCESS');\n\n this.relatedItems = itemsPagination.items;\n this.total = this.relatedItems.length;\n let text = `<strong>${this.total}</strong> Risultati collegati a<br><span class=\"aw-multimedia__results-title-big\">${label}</span>`;\n if (this.total === 1) {\n text = `<strong>${this.total}</strong> Risultato collegato a<br><span class=\"aw-multimedia__results-title-big\">${label}</span>`;\n }\n\n const titleData: InnerTitleData = {\n title: {\n main: { text },\n secondary: dateText ? {\n text: dateText\n } : null\n },\n actions: {\n buttons: [{\n anchor: {\n href: `${this.configuration.get('paths').entitaBasePath}/${id}/${helpers.slugify(label)}`,\n },\n text: 'Vedi Entità'\n }]\n }\n };\n this.one('aw-scheda-inner-title').update(titleData);\n\n // update items\n this.updateItems();\n\n // update pagination\n this.updatePagination();\n });\n }\n }\n\n private clearResults() {\n if (!this.relatedItems) {\n return;\n }\n // reset\n this.state$.next('EMPTY');\n this.pageSize = 10;\n this.currentPage = 1;\n this.relatedItems = [];\n this.total = 0;\n this.one('aw-scheda-inner-title').update({\n title: {\n main: { text: '' }\n }\n });\n this.one('aw-linked-objects').update({ items: [] });\n }\n\n onPaginationChange({ value }) {\n this.pageSize = +value;\n this.updateItems();\n this.updatePagination();\n }\n\n onPaginationClick({ page }) {\n if (typeof page === 'number' && page !== this.currentPage) {\n this.currentPage = page;\n this.updateItems();\n this.updatePagination();\n }\n }\n\n private updateItems() {\n this.one('aw-linked-objects').updateOptions({\n context: 'map',\n config: this.configuration,\n page: this.currentPage,\n pagination: true,\n size: this.pageSize,\n });\n this.one('aw-linked-objects').update({ items: this.relatedItems });\n }\n\n private updatePagination() {\n this.one('n7-smart-pagination').updateOptions({\n mode: 'payload'\n });\n this.one('n7-smart-pagination').update({\n totalPages: Math.ceil(this.total / this.pageSize),\n currentPage: this.currentPage,\n pageLimit: 5,\n sizes: {\n label: 'Numero di risultati',\n list: [10, 25, 50],\n active: this.pageSize,\n },\n });\n }\n\n private setHeadTitle() {\n this.mainState.update('headTitle', getHeadTitle({\n name: this.configuration.get('customer'),\n pageName: this.configuration.get(this.configId)?.pageName,\n pageDefault: 'Timeline',\n }));\n }\n\n private setPageTitle() {\n const title = this.configuration.get(this.configId)?.pageName;\n this.pageTitle = (title) || 'Gli eventi dell\\'archivio';\n }\n}\n","import { EventHandler } from '@net7/core';\nimport { Subject } from 'rxjs';\n\nexport class AwTimelineLayoutEH extends EventHandler {\n private destroyed$: Subject<void> = new Subject();\n\n public listen() {\n this.innerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-timeline-layout.init':\n this.dataSource.onInit(payload);\n this.emitOuter('init', payload);\n // scroll top\n window.scrollTo(0, 0);\n break;\n\n case 'aw-timeline-layout.destroy':\n this.destroyed$.next();\n break;\n\n default:\n break;\n }\n });\n\n this.outerEvents$.subscribe(({ type, payload }) => {\n switch (type) {\n case 'aw-timeline.click':\n this.dataSource.onTimelineClick(payload);\n break;\n case 'n7-smart-pagination.change':\n this.dataSource.onPaginationChange(payload);\n break;\n case 'n7-smart-pagination.click':\n this.dataSource.onPaginationClick(payload);\n break;\n default:\n break;\n }\n });\n }\n}\n","import { SmartPaginationDS, SmartPaginationEH } from '@net7/boilerplate-common';\nimport { AwTimelineLayoutDS } from './timeline-layout.ds';\nimport { AwTimelineLayoutEH } from './timeline-layout.eh';\nimport * as DS from '../../data-sources';\nimport * as EH from '../../event-handlers';\n\nexport const AwTimelineLayoutConfig = {\n layoutId: 'aw-timeline-layout',\n widgets: [ // array of components of this layout\n { id: 'aw-timeline' },\n { id: 'aw-scheda-inner-title' },\n { id: 'aw-linked-objects' },\n {\n id: 'n7-smart-pagination',\n dataSource: SmartPaginationDS,\n eventHandler: SmartPaginationEH,\n }\n ],\n layoutDS: AwTimelineLayoutDS,\n layoutEH: AwTimelineLayoutEH,\n widgetsDataSources: DS,\n widgetsEventHandlers: EH,\n options: {\n // TODO\n },\n};\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport {\n AbstractLayout,\n ConfigurationService,\n LayoutsConfigurationService,\n MainStateService,\n CommunicationService\n} from '@net7/boilerplate-common';\nimport { AwTimelineLayoutConfig as config } from './timeline-layout.config';\n\n@Component({\n selector: 'aw-timeline-layout',\n templateUrl: './timeline-layout.html',\n})\nexport class AwTimelineLayoutComponent extends AbstractLayout implements OnInit, OnDestroy {\n constructor(\n private configuration: ConfigurationService,\n private layoutsConfiguration: LayoutsConfigurationService,\n private communication: CommunicationService,\n private mainState: MainStateService,\n private titleService: Title,\n ) {\n super(layoutsConfiguration.get('AwTimelineLayoutConfig') || config);\n }\n\n /*\n Optional variables that can be accessed from the layout's logic.\n If removed, they must also be removed from the layout's DataSource file,\n and from this file imports.\n */\n protected initPayload() {\n return {\n configuration: this.configuration,\n mainState: this.mainState,\n titleService: this.titleService,\n communication: this.communication,\n options: this.config.options || {},\n };\n }\n\n ngOnInit() {\n this.onInit();\n }\n\n ngOnDestroy() {\n this.onDestroy();\n }\n}\n","<div class=\"aw-multimedia\" id=\"timeline-layout\" *ngIf=\"lb.dataSource\">\n <n7-inner-title [data]=\"{\n title: {\n main: {\n text: lb.dataSource.pageTitle\n }\n }\n }\">\n </n7-inner-title>\n \n <!-- Timeline -->\n <div class=\"aw-multimedia__timeline\">\n <n7-timeline [data]=\"lb.widgets['aw-timeline'].ds.out$ | async\"></n7-timeline>\n \n <div id=\"timelinecontrols\" class=\"aw-multimedia__timeline-controls\" *ngIf=\"lb.widgets['aw-timeline'].ds.timelineControlsVisible\">\n <button class=\"n7-btn aw-multimedia__timeline-control\" (click)=\"lb.eventHandler.emitOuter('zoomin', {})\">\n <span class=\"n7-icon-search-plus\"></span>\n </button>\n\n <button class=\"n7-btn aw-multimedia__timeline-control\" (click)=\"lb.eventHandler.emitOuter('zoomout', {})\">\n <span class=\"n7-icon-search-minus\"></span>\n </button>\n </div>\n\n </div>\n <!-- END // Timeline -->\n \n <!-- RESULTS -->\n <div class=\"aw-multimedia__results\">\n\n <div class=\"aw-multimedia__loader\" *ngIf=\"(lb.dataSource.state$ | async) === 'LOADING'\">\n <ng-container>\n <n7-loader></n7-loader>\n </ng-container>\n </div>\n\n <div class=\"aw-multimedia__empty\" *ngIf=\"(lb.dataSource.state$ | async) === 'EMPTY'\">\n <ng-container>\n <p class=\"aw-multimedia__empty-text\">Clicca su un evento della timeline per vedere tutti gli oggetti culturali collegati.</p>\n </ng-container>\n </div>\n \n <ng-container *ngIf=\"(lb.dataSource.state$ | async) === 'SUCCESS'\">\n <div class=\"aw-multimedia__results-title\">\n <n7-inner-title [data]=\"lb.widgets['aw-scheda-inner-title'].ds.out$ | async\">\n </n7-inner-title>\n </div>\n <div class=\"aw-multimedia__results-wrapper\">\n <div>\n <div class=\"aw-item-preview-wrapper\" *ngFor=\"let preview of (lb.widgets['aw-linked-objects'].ds.out$ | async)?.previews\">\n <n7-smart-breadcrumbs [data]=\"preview.breadcrumbs\">\n </n7-smart-breadcrumbs>\n <n7-item-preview [data]=\"preview\" [emit]=\"lb.widgets['aw-linked-objects'].emit\">\n </n7-item-preview>\n </div>\n </div>\n <n7-smart-pagination *ngIf=\"lb.dataSource.total > 0\"\n [data]=\"lb.widgets['n7-smart-pagination'].ds.out$ | async\"\n [emit]=\"lb.widgets['n7-smart-pagination'].emit\">\n </n7-smart-pagination>\n </div>\n </ng-container>\n </div>\n</div>","const getTreeBranches = (depth, hasImage = true) => {\n let branchConfig = `\n label\n id\n document_type\n document_classification\n `;\n if (hasImage) {\n branchConfig = `\n label\n id\n img\n document_type\n document_classification\n `;\n }\n const output = [];\n let i;\n let j;\n // open config\n for (i = 0; i < depth; i += 1) {\n output.push(\n i === 0\n ? branchConfig\n : `branches {${branchConfig}`\n );\n }\n // close config\n for (j = 0; j < depth; j += 1) {\n output.push(j === 0 ? '' : '}');\n }\n\n return output.join('');\n};\n\nexport default (treeDepth) => ({\n getLastPosts: {\n queryName: 'getLastPosts',\n queryBody: `\n {\n getLastPosts(__PARAMS__) {\n id\n title\n }\n }\n `,\n },\n getSlider: {\n queryName: 'getSlider',\n queryBody: ` {\n getSlider(__PARAMS__) {\n pretext\n title\n text\n background {\n type\n value\n }\n ctaLabel\n ctaPayload\n metadata {\n key\n value\n }\n }\n }`\n },\n getTreeLite: {\n queryName: 'getTreeOfItems',\n queryBody: `\n {\n getTreeOfItems(__PARAMS__){\n ${getTreeBranches(treeDepth, false)}\n }\n }\n `,\n },\n getTree: {\n queryName: 'getTreeOfItems',\n queryBody: `\n {\n getTreeOfItems(__PARAMS__){\n ${getTreeBranches(treeDepth)}\n }\n }\n `,\n },\n globalFilter: {\n queryName: 'globalFilter',\n queryBody: `{\n globalFilter(__PARAMS__){\n entitiesData {\n entity {\n id\n label\n typeOfEntity\n } count\n }\n typeOfEntityData {\n type\n count\n }\n itemsPagination {\n totalCount\n items {\n thumbnail\n item {\n id\n label\n fields\n {\n ...\n on KeyValueField {\n key\n value\n }\n }\n breadcrumbs {\n label\n link\n }\n relatedTypesOfEntity {\n type\n count\n }\n }\n }\n }\n }\n }`,\n },\n getEntityRelatedItems: {\n queryName: 'globalFilter',\n queryBody: `{\n globalFilter(__PARAMS__){\n itemsPagination {\n totalCount\n items {\n thumbnail\n item {\n id\n label\n fields\n {\n ...\n on KeyValueField {\n key\n value\n }\n }\n breadcrumbs {\n label\n link\n }\n relatedTypesOfEntity {\n type\n count\n }\n }\n }\n }\n }\n }`,\n },\n getEntityDetails: {\n queryName: 'getEntity',\n queryBody: `{\n getEntity(__PARAMS__){\n relatedItemsTotalCount,\n relatedLaTotalCount: relatedAlTotalCount,\n overviewTab\n label\n id\n typeOfEntity\n relatedLa: relatedAl {\n thumbnail\n relation\n qualification\n item {\n label\n id\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n }\n }\n }\n fields {\n ... on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ... on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ... on KeyValueField {\n key\n value\n }\n }\n }\n }\n }\n }\n extraTab\n wikiTab {\n text\n url\n }\n relatedItems {\n thumbnail\n relation\n qualification\n item {\n label\n id\n fields\n {\n ...\n on KeyValueField {\n key\n value\n }\n }\n breadcrumbs {\n label\n link\n }\n }\n relatedTypesOfEntity {\n type\n count\n }\n }\n relatedEntities {\n entity {\n id\n label\n typeOfEntity\n relation\n qualification\n }\n count\n }\n }\n }\n `,\n },\n getItem: {\n queryName: 'getItem',\n queryBody: `{\n getItem(__PARAMS__) {\n id\n label\n icon\n title\n subTitle\n image\n text\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n }\n }\n }\n relatedEntities {\n count\n entity{\n id\n label\n typeOfEntity\n relation\n qualification\n }\n }\n relatedItems {\n thumbnail\n item {\n label\n id\n relatedTypesOfEntity {\n type\n count\n }\n }\n }\n breadcrumbs {\n label\n link\n }\n }\n }`,\n },\n getNodeChildren: {\n queryName: 'getNodeChildren',\n queryBody: `{\n getNodeChildren(__PARAMS__) {\n items {\n id\n label\n icon\n img\n document_type\n document_classification\n breadcrumbs {\n label\n link\n }\n }\n totalCount\n }\n }`\n },\n getNode: {\n queryName: 'getNode',\n queryBody: `{\n getNode(__PARAMS__) {\n ... on Item {\n id\n label\n title\n subTitle\n image\n prev {\n id\n label\n }\n next {\n id\n label\n }\n lastAl {\n id\n label\n }\n digitalObjects {\n label\n type\n url\n order\n items { \n order \n label\n url \n }\n }\n text\n document_type\n document_classification\n fields {\n ... on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ... on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ... on KeyValueField {\n key\n value\n }\n }\n }\n }\n }\n }\n relatedEntities {\n count\n entity{\n id\n label\n typeOfEntity\n relation\n qualification\n }\n }\n relatedItems {\n thumbnail\n item {\n label\n id\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n }\n }\n }\n relatedTypesOfEntity {\n type\n count\n }\n }\n }\n breadcrumbs {\n label\n link\n }\n }\n ... on Node {\n id\n label\n img\n document_type\n document_classification\n fields {\n ... on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ... on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ... on KeyValueField {\n key\n value\n }\n }\n }\n }\n }\n }\n relatedEntities {\n count\n entity {\n id\n label\n typeOfEntity\n relation\n qualification\n }\n }\n breadcrumbs {\n label\n link\n }\n }\n }\n }`,\n },\n autoComplete: {\n queryName: 'autoComplete',\n queryBody: `{\n autoComplete(__PARAMS__){\n totalCount\n results {\n ... on EntityCountData {\n count\n entity {\n id\n label\n typeOfEntity\n fields {\n ... on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ... on KeyValueField {\n key\n value\n }\n }\n }\n }\n }\n }\n ... on ItemListing {\n item {\n id\n label\n document_type\n fields {\n ... on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ... on KeyValueField {\n key\n value\n }\n }\n }\n }\n }\n }\n }\n }\n }`,\n },\n search: {\n queryName: 'search',\n queryBody: `{\n search(__PARAMS__){\n totalCount\n results {\n order{\n type\n key\n direction\n }\n fields\n {\n id\n highlight\n limit\n }\n items {\n ... on Entity {\n id\n label\n typeOfEntity\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n }\n }\n }\n relatedEntities {\n count\n entity{\n id\n label\n typeOfEntity\n relation\n qualification\n }\n }\n relatedItems {\n thumbnail\n item {\n label\n id\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n }\n }\n }\n }\n relatedTypesOfEntity {\n type\n count\n }\n }\n }\n ... on Item {\n id\n label\n icon\n title\n subTitle\n image\n text\n relatedTypesOfEntity {\n type\n count\n }\n breadcrumbs {\n label\n link\n }\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n ... on KeyValueFieldGroup {\n label\n fields {\n ...\n on KeyValueField {\n key\n value\n }\n }\n }\n }\n }\n }\n }\n }\n }`,\n },\n facets: {\n queryName: 'search',\n queryBody: `{\n search(__PARAMS__){\n facets {\n id\n type\n operator\n limit\n order\n totalCount\n data {\n label\n value\n counter\n searchData {\n key\n value\n }\n }\n }\n }\n }`,\n },\n getMissingBubble: {\n queryName: 'getEntity',\n queryBody: `{\n getEntity(__PARAMS__){\n label\n id\n typeOfEntity\n }\n }`,\n },\n getMapObjects: {\n queryName: 'getMapObjects',\n queryBody: `{\n getMapObjects{\n lat\n lon\n item {\n ...on Item {\n id\n label\n }\n ...on Entity {\n id\n label\n }\n }\n }\n }`,\n },\n getEventObjects: {\n queryName: 'getEventObjects',\n queryBody: `{\n getEventObjects{\n id\n start\n end\n label\n item {\n ... on Entity {\n id\n label\n }\n }\n }\n }`,\n },\n getCollection: {\n queryName: 'getCollection',\n queryBody: `{\n getCollection(__PARAMS__) {\n title\n text\n total\n items {\n title\n content\n background\n image\n url\n a4vId\n type\n classification\n }\n }\n }`\n }\n});\n","// MODULES\nimport { NgModule, ApplicationInitStatus } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { RouterModule } from '@angular/router';\nimport { DvComponentsLibModule } from '@net7/components';\nimport { N7BoilerplateCommonModule, ConfigurationService } from '@net7/boilerplate-common';\nimport { NgxExtendedPdfViewerModule } from 'ngx-extended-pdf-viewer';\n// LAYOUTS\nimport { AwCollectionLayoutComponent } from './layouts/collection-layout/collection-layout';\nimport { AwEntitaLayoutComponent } from './layouts/entita-layout/entita-layout';\nimport { AwGalleryLayoutComponent } from './layouts/gallery-layout/gallery-layout';\nimport { AwHomeLayoutComponent } from './layouts/home-layout/home-layout';\nimport { AwMapLayoutComponent } from './layouts/map-layout/map-layout';\nimport { AwSchedaLayoutComponent } from './layouts/scheda-layout/scheda-layout';\nimport { AwSearchLayoutComponent } from './layouts/search-layout/search-layout';\nimport { AwTimelineLayoutComponent } from './layouts/timeline-layout/timeline-layout';\n// COMPONENTS\nimport { AwFacetsWrapperComponent } from './components/aw-facets-wrapper/aw-facets-wrapper';\nimport { BubbleChartWrapperComponent } from './components/bubble-chart-wrapper/bubble-chart-wrapper';\nimport { ChartTippyComponent } from './components/chart-tippy/chart-tippy';\nimport { PdfViewerComponent } from './components/pdf-viewer/pdf-viewer';\nimport { SchedaDropdownComponent } from './components/scheda-dropdown/scheda-dropdown';\nimport { SmartBreadcrumbsComponent } from './components/smart-breadcrumbs/smart-breadcrumbs';\nimport { ExtendedTreeComponent } from './components/extended-tree/extended-tree';\nimport { SchedaImageNavigatorComponent } from './components/scheda-image-navigator/scheda-image-navigator';\nimport { SchedaSearchComponent } from './components/scheda-search/scheda-search';\nimport { GalleryBreadcrumbsTooltipComponent } from './components/gallery-breadcrumbs-tooltip/gallery-breadcrumbs-tooltip';\n// LIBS\n\nimport apolloConfig from './config/apollo.config';\n\nconst COMPONENTS = [\n AwCollectionLayoutComponent,\n AwEntitaLayoutComponent,\n AwFacetsWrapperComponent,\n AwGalleryLayoutComponent,\n AwHomeLayoutComponent,\n AwMapLayoutComponent,\n AwSchedaLayoutComponent,\n AwSearchLayoutComponent,\n AwTimelineLayoutComponent,\n BubbleChartWrapperComponent,\n ChartTippyComponent,\n PdfViewerComponent,\n SchedaDropdownComponent,\n SmartBreadcrumbsComponent,\n ExtendedTreeComponent,\n SchedaImageNavigatorComponent,\n SchedaSearchComponent,\n GalleryBreadcrumbsTooltipComponent,\n];\n\n@NgModule({\n declarations: COMPONENTS,\n imports: [\n CommonModule,\n RouterModule,\n DvComponentsLibModule,\n N7BoilerplateCommonModule,\n NgxExtendedPdfViewerModule\n ],\n exports: COMPONENTS\n})\nexport class N7BoilerplateAriannaModule {\n constructor(\n initStatus: ApplicationInitStatus,\n config: ConfigurationService\n ) {\n // add apollo config on app init\n // note: this is just for arianna* sites!\n initStatus.donePromise.then(() => {\n const communication = config.get('communication');\n const { defaultProvider } = communication;\n communication.providers[defaultProvider].config = apolloConfig;\n config.set('communication', communication);\n });\n }\n}\n","// home layout\nexport * from './home-layout/home-layout';\nexport * from './home-layout/home-layout.ds';\nexport * from './home-layout/home-layout.eh';\nexport * from './home-layout/home-layout.config';\n\n// entita layout\nexport * from './entita-layout/entita-layout';\nexport * from './entita-layout/entita-layout.ds';\nexport * from './entita-layout/entita-layout.eh';\nexport * from './entita-layout/entita-layout.config';\n\n// scheda layout\nexport * from './scheda-layout/scheda-layout';\nexport * from './scheda-layout/scheda-layout.ds';\nexport * from './scheda-layout/scheda-layout.eh';\nexport * from './scheda-layout/scheda-layout.config';\n\n// search layout\nexport * from './search-layout/search-layout';\nexport * from './search-layout/search-layout.ds';\nexport * from './search-layout/search-layout.eh';\nexport * from './search-layout/search-layout.config';\n\n// gallery layout\nexport * from './gallery-layout/gallery-layout';\nexport * from './gallery-layout/gallery-layout.ds';\nexport * from './gallery-layout/gallery-layout.eh';\nexport * from './gallery-layout/gallery-layout.config';\n\n// map layout\nexport * from './map-layout/map-layout';\nexport * from './map-layout/map-layout.ds';\nexport * from './map-layout/map-layout.eh';\nexport * from './map-layout/map-layout.config';\n\n// timeline layout\nexport * from './timeline-layout/timeline-layout';\nexport * from './timeline-layout/timeline-layout.ds';\nexport * from './timeline-layout/timeline-layout.eh';\nexport * from './timeline-layout/timeline-layout.config';\n\n// collection layout\nexport * from './collection-layout/collection-layout';\nexport * from './collection-layout/collection-layout.ds';\nexport * from './collection-layout/collection-layout.eh';\nexport * from './collection-layout/collection-layout.config';\n","/*\n * Public API Surface of n7-boilerplate-arianna\n */\n\n// arianna web\nexport * from './lib/n7-boilerplate-arianna.module';\nexport * from './lib/config-types';\nexport * from './lib/data-sources';\nexport * from './lib/event-handlers';\nexport * from './lib/layouts';\nexport * from './lib/components';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_get","PAGE_LIMIT","merge","_max","_min","config","i2","i3","i1","i4","i5","i6.SmartBreadcrumbsComponent","_isEmpty","facetsConfig","i2.AwSearchService","i6.AwFacetsWrapperComponent","i7.SmartBreadcrumbsComponent","i8.GalleryBreadcrumbsTooltipComponent","i5.BubbleChartWrapperComponent","i6.ChartTippyComponent","i5.SmartBreadcrumbsComponent","i3.SmartBreadcrumbsComponent","i6.PdfViewerComponent","i7.SchedaDropdownComponent","i8.SmartBreadcrumbsComponent","i9.ExtendedTreeComponent","i10.SchedaImageNavigatorComponent","i11.SchedaSearchComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIM,MAAO,iBAAkB,SAAQ,UAAU,CAAA;AAAjD,IAAA,WAAA,GAAA;;QAaS,IAAA,CAAA,WAAW,GAAG,KAAK;AAuBnB,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,KAAe,KAAI;AACxC;;;;AAII;AACJ,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;;gBAE5B;;AAEF,YAAA,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AAChC,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,KAAK;gBAC5C;;AAEF,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE;gBACtD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI;;iBACrC;gBACL,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK;;AAE/C,SAAC;AAEM,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,YAAY,KAAI;AAC3C;;;AAGE;AACF,YAAA,IAAI,CAAC,WAAW,IAAI,CAAC;YACrB,MAAM,OAAO,GAAQ,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,eAAe,CAAC;AAClE,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YACtE,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,KAAK;AACnC,SAAC;AAED;;;;;;AAMG;AACK,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,IAAI,KAAI;YAC5B,MACE,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACzC,YAAA,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;AAC5B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;AAC9B,YAAA,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;AACzB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;AACnC,YAAA,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,OAAO;AAC1C,YAAA,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE;AACpD,YAAA,IACE,WAAiB;AACnB,YAAA,IAAI,YAAkB;AACtB,YAAA,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;YACpD,IAAI,MAAM,EAAE;;gBAEV,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAA,OAAA,CAAS,CAAC,EAAE;AACnC,oBAAA,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA,EAAG,OAAO,CAAA,OAAA,CAAS,CAAC,CAAC,iBAAiB,CAAC;AAChE,oBAAA,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA,EAAG,OAAO,CAAA,OAAA,CAAS,CAAC,CAAC,eAAe,CAAC;;;;AAInE,YAAA,IAAI,CAAC,iBAAiB,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,GAAG,IAAI,EAAE;AACzD,gBAAA,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;;iBACvC,IAAI,IAAI,EAAE;gBACf,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;;YAGtB,MAAM,MAAM,GAAG,EAAE;YACjB,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC;AACzE,YAAA,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;AACf,gBAAA,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE;AAEvC,gBAAA,MAAM,QAAQ,GAAGA,GAAI,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;AACpE,gBAAA,MAAM,OAAO,GAAGA,GAAI,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,oBAAoB,CAAC;AAChF,gBAAA,MAAM,WAAW,GAAGA,GAAI,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC;gBACnF,IAAI,aAAa,GAAG;sBAChB,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;sBAC9D,EAAE;;gBAGN,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AAC3C,oBAAA,GAAG,IAAI;oBACP,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;AACpC,iBAAA,CAAC,CAAC;AACH,gBAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAE/C,gBAAA,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;oBACrD,IAAI,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,KAAK,EAAE,EAAE;wBACzD,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC;;;gBAGvG,IAAI,OAAO,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,cAAc,GAAG,EAAE;gBAC/F,OAAO,IAAI,QAAQ,CAAC,YAAY,GAAG,CAAA,IAAA,EAAO,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAA,CAAE,GAAG,uBAAuB;;AAGpI,gBAAA,IAAI,OAAO,KAAK,SAAS,EAAE;oBACzB,OAAO,IAAI,wBAAwB;;;gBAIrC,MAAM,UAAU,GAAGA,GAAI,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAGA,GAAI,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC;AAE7I,gBAAA,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;uBAC1BA,GAAI,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG;AAC3E,sBAAE,CAAA,EAAGA,GAAI,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,CAAA,CAAA;AACxF,sBAAEA,GAAI,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;AACzC,gBAAA,MAAM,MAAM,GAAGA,GAAI,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;AACnD,gBAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY;AACtC,gBAAA,MAAM,QAAQ,GAAG;oBACf,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc;oBAClF,MAAM;AACN,oBAAA,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;AAC3B,iBAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AACX,gBAAA,IAAI,IAAI;AACR,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;oBACf,IAAI,GAAG,IAAI;;AACN,qBAAA,IACL,CAAC,KAAK,CAAC,IAAI,CAAC;uBACTA,GAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAC1E;AACA,oBAAA,IAAI,GAAG,CAAA,EAAGA,GAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG;;qBAChF;AACL,oBAAA,IAAI,GAAGA,GAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;;AAEjD,gBAAA,MAAM,IAAI,GAAG;oBACX,IAAI;oBACJ,OAAO;oBACP,WAAW;AACX,oBAAA,KAAK,EAAEA,GAAI,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;AAC5C,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,MAAM,EAAE;AACN,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,GAAG;AAC9D,qBAAA;AACD,oBAAA,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE;AACtD,oBAAA,aAAa,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,IAAI,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,IAAI,IAAI,EAAE;AACrF,oBAAA,QAAQ,EAAE,aAAa,CAAC,MAAM,IAAI,OAAO,GAAG,EAAE,GAAG,IAAI;iBACtD;;AAED,gBAAA,IAAI,aAAa,CAAC,MAAM,EAAE;AACxB,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,wBAAA,OAAO,EAAE,0BAA0B;wBACnC,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM;AACvC,4BAAA,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;4BACtE,KAAK,EAAE,SAAS,CAAC,KAAK;AACvB,yBAAA,CAAC,CAAC;AACJ,qBAAA,CAAC;;gBAEJ,IAAI,OAAO,EAAE;AACX,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,wBAAA,OAAO,EAAE,0BAA0B;wBACnC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAC3B,4BAAA,KAAK,EAAEA,GAAI,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;;AAErD,4BAAA,IAAI,EAAE,IAAI,CAACA,GAAI,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC;kCACnD,IAAI,CAACA,GAAI,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACrD,kCAAE,EAAE;4BACN,OAAO,EAAE,CAAA,MAAA,EAAS,IAAI,CAACA,GAAI,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA,CAAE;AACrF,yBAAA,CAAC,CAAC;AACJ,qBAAA,CAAC;;;gBAGJ,IAAI,WAAW,EAAE;oBACf,IAAI,CAAC,WAAW,GAAG;wBACjB,KAAK,EAAEA,GAAI,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AAClF,4BAAA,MAAM,KAAK,GAAGA,GAAI,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;4BACxE,OAAO;gCACL,KAAK;AACL,gCAAA,MAAM,EAAE;AACN,oCAAA,IAAI,EAAE,QAAQ;AACf,iCAAA;6BACF;AACH,yBAAC,CAAC;qBACH;;AAEH,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACnB,aAAC,CAAC;AACF,YAAA,IAAI,OAAO,KAAK,MAAM,EAAE;AACtB,gBAAA,MAAM,OAAO,GAAG;AACd,oBAAA;wBACE,KAAK,EAAE,CAAA,cAAA,EAAiB,UAAU,CAAA,CAAA,CAAG;AACtC,qBAAA;oBACD;AACE,0BAAE;4BACA,KAAK,EAAE,CAAA,cAAA,EAAiB,YAAY,CAAA,CAAA,CAAG;AACvC,4BAAA,QAAQ,EAAE,KAAK;yBAChB,GAAG,IAAI;iBACX;gBACD,OAAO;oBACL,MAAM;oBACN,OAAO;AACP,oBAAA,SAAS,EAAE,KAAK;oBAChB,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,yBAAyB,CAAC;iBAC/D;;AAEH,YAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC7B,SAAC;;AAzNS,IAAA,SAAS,CAAC,IAAI,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;AACjC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;AAC7D,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC1E,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;;AAC5E,aAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACrB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;;AACzD,aAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;;QAEvE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;QACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACvC,QAAA,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,EAAE;QAC/B,OAAO,IAAI,CAAC,UAAU;;AA0MzB;;AC7OK,MAAO,uBAAwB,SAAQ,UAAU,CAAA;AAAvD,IAAA,WAAA,GAAA;;AAiCE;;;;;;AAMG;AACK,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,MAAM,EAAE,KAAK,KAAI;AACrC,YAAA,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE;gBACzB,OAAO,CAAA,EAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA,CAAA,CAAG;;AACnC,YAAA,OAAO,MAAM;AACjB,SAAC;;AA3CS,IAAA,SAAS,CAAC,IAAI,EAAA;AACtB,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI;QAEzB,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;;QAG1C,MAAM,UAAU,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO;AAC/B,QAAA,MAAM,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QACtE,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC;;AAG/E,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;YACtB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,UAAU,EAAE;gBAC/B,UAAU,CAAC,IAAI,CAAC;AACd,oBAAA,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK;AACrB,oBAAA,OAAO,EAAE,8BAA8B;AACxC,iBAAA,CAAC;gBACF,OAAO,EAAE,UAAU,EAAE;;AAEvB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC;YACxD,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI;AACJ,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE;AACtB,iBAAA;AACF,aAAA,CAAC;AACJ,SAAC,CAAC;QACF,OAAO,EAAE,UAAU,EAAE;;AAexB;;AC7CK,MAAO,eAAgB,SAAQ,UAAU,CAAA;AAA/C,IAAA,WAAA,GAAA;;AACS,QAAA,IAAA,CAAA,SAAS,GAAQ,EAAE,CAAC;AAEpB,QAAA,IAAA,CAAA,IAAI,GAAQ,IAAI,CAAC;AAEjB,QAAA,IAAA,CAAA,QAAQ,GAAa,EAAE,CAAC;AAExB,QAAA,IAAA,CAAA,OAAO,GAAU,EAAE,CAAC;AAEpB,QAAA,IAAA,CAAA,UAAU,GAAU,EAAE,CAAC;AAEvB,QAAA,IAAA,CAAA,SAAS,GAAU,EAAE,CAAC;AA0C7B,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,GAAG,KAAI;AACpB;;;;AAIE;YACF,IAAI,QAAQ,GAAG,GAAG;AAClB,YAAA,IAAI,GAAG,KAAK,IAAI,EAAE;AAChB,gBAAA,QAAQ,GAAG,IAAI,CAAC,SAAS;;iBACpB;AACL,gBAAA,IAAI,CAAC,SAAS,GAAG,GAAG;;YAEtB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,gBAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;;AAE7G,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;;iBAClC;gBACL,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;gBACpC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC5C,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;gBACnF,IAAI,CAAC,IAAI,EAAE;;AAEf,SAAC;AAED,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,CAAC,EAAE,MAAO,KAAI;YAC1B,MAAM,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK;YACtC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;gBACrB,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;;AAEtB,YAAA,OAAO,CAAC;AACV,SAAC;AAED,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,OAAO,KAAI;AAC9B;;AAEE;YACF,MAAM,EAAE,GAAG,OAAO;YAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAC9B,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;;iBAC9C;gBACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;AAE3B,SAAC;;AAnFS,IAAA,SAAS,CAAC,IAAI,EAAA;QACtB,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,OAAO;AAC/C,QAAA,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;QACzE,MAAM,MAAM,GAAG,EAAE;QAAE,MACjB,KAAK,GAAG,EAAE;QACZ,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;QAE7C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACrC,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC;AACtD,SAAC,CAAC;AAEF,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,WAAW,EAAE,sBAAsB;AACnC,YAAA,OAAO,EAAE,CAAC,IAAI,KAAI,EAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;AACxC,YAAA,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;YACrB,aAAa;AACb,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,KAAK,EAAE,GAAG;YACV,UAAU;YACV,OAAO;SACR;AACD;;;;AAIE;QACF,OAAO;AACL,YAAA,GAAG,YAAY;AACf,YAAA,UAAU,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;AACrC,YAAA,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC3B,YAAA,SAAS,EAAE;AACT,gBAAA,GAAG,YAAY;gBACf,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC;AAC5C,aAAA;SACF;;AA+CJ;;AChGK,MAAO,cAAe,SAAQ,UAAU,CAAA;AAClC,IAAA,SAAS,CAAC,IAAI,EAAA;;AAEtB,QAAA,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI;QAClC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO;;QAE7C,MAAM,SAAS,GAAU,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AACzC,YAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC;YAC3B,MAAM,EACJ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAClC,GAAG,MAAM;YACV,OAAO;gBACL,EAAE;gBACF,UAAU;AACV,gBAAA,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,CAAA,cAAA,EAAiB,KAAK,CAAA,UAAA,CAAY;AACxC,gBAAA,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;AACjC,gBAAA,UAAU,EAAE;AACV,oBAAA,IAAI,EAAE,CAAA,EAAG,QAAQ,CAAA,EAAG,EAAE,CAAA,CAAA,EAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAE;AACnD,iBAAA;AACD,gBAAA,QAAQ,EAAE;AACR,oBAAA,GAAG,EAAE,YAAY;AACjB,oBAAA,KAAK,EAAE,QAAQ;AAChB;aACF;AACH,SAAC,CAAC;AACF,QAAA,OAAO,SAAS;;AAEnB;;ACjBK,MAAO,YAAa,SAAQ,UAAU,CAAA;AAChC,IAAA,SAAS,CAAC,IAAuB,EAAA;AACzC,QAAA,MAAM,GAAG,GAAiB;AACxB,YAAA,WAAW,EAAE,eAAe;AAC5B,YAAA,OAAO,EAAE,wBAAwB;AACjC,YAAA,UAAU,EAAE;AACV,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,IAAI,EAAE,CAAC;;;AAGP,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,SAAS,EAAE,GAAG;;;;;;;AAOf,aAAA;YACD,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;gBACzB,MAAM,KAAK,GAAG,EAAE;AAChB,gBAAA,IAAI,MAAM;AACV,gBAAA,IAAI,UAAU;gBACd,IAAI,KAAK,CAAC,KAAK;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBACnD,IAAI,KAAK,CAAC,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;gBAChD,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,EAAE;AACtC,oBAAA,MAAM,GAAG;wBACP,IAAI,EAAE,KAAK,CAAC,QAAQ;AACpB,wBAAA,MAAM,EAAE;4BACN,IAAI,EAAE,KAAK,CAAC,UAAU;AACtB,4BAAA,MAAM,EAAE;AACT;qBACF;;gBAEH,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE;oBAC9C,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE;AACrC,wBAAA,UAAU,GAAG;AACX,4BAAA,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC;yBACzB;;yBACI,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE;AAC5C,wBAAA,UAAU,GAAG;AACX,4BAAA,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC;yBACzB;;yBACI,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE;AAC5C,wBAAA,UAAU,GAAG;AACX,4BAAA,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC;yBACzB;;;qBAEE;;AAEL,oBAAA,UAAU,GAAG;AACX,wBAAA,KAAK,EAAE;qBACR;;AAEH,gBAAA,QAAQ;oBACN,KAAK;oBACL,MAAM;oBACN;AACD,iBAAA;AACH,aAAC;SACF;AACD,QAAA,OAAO,GAAG;;AAEb;;AC9EK,MAAO,QAAS,SAAQ,UAAU,CAAA;AAAxC,IAAA,WAAA,GAAA;;QACS,IAAA,CAAA,iBAAiB,GAAG,EAAE;;AAEnB,IAAA,SAAS,CAAC,IAAI,EAAA;AACtB,QAAA,MAAM,EACJ,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EACrD,GAAG,IAAI;QACR,OAAO;YACL,KAAK;YACL,IAAI;YACJ,eAAe;AACf,YAAA,MAAM,EAAE;gBACN,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,OAAO;AACjB,iBAAA;AACF,aAAA;AACD,YAAA,KAAK,EAAE;gBACL,WAAW,EAAE,KAAK,CAAC,WAAW;AAC9B,gBAAA,OAAO,EAAE,gBAAgB;AAC1B,aAAA;YACD,OAAO;SACR;;AAEJ;;ACvBK,MAAO,SAAU,SAAQ,UAAU,CAAA;IAC7B,SAAS,GAAA;AACjB,QAAA,OAAO,UAAU;;AAEpB;;ACLK,MAAO,sBAAuB,SAAQ,UAAU,CAAA;AAC1C,IAAA,SAAS,CAAC,IAAI,EAAA;AACtB,QAAA,OAAO,IAAI;;AAEd;;ACHK,MAAO,qBAAsB,SAAQ,UAAU,CAAA;AAArD,IAAA,WAAA,GAAA;;AACU,QAAA,IAAA,CAAA,YAAY,GAAG,EAAE,CAAC;AAEnB,QAAA,IAAA,CAAA,YAAY,GAAG,EAAE,CAAC;;QAGlB,IAAA,CAAA,QAAQ,GAAG,EAAE;AAEb,QAAA,IAAA,CAAA,UAAU,GAAG,EAAE,CAAC;AAEhB,QAAA,IAAA,CAAA,SAAS,GAAG,EAAE,CAAC;AAkIf,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,EAAE,KAAI;AACzB;;AAEE;YACF,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;YAEnC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AAC7B,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG;oBACzB,KAAK,EAAE,SAAS;oBAChB,IAAI,EAAE,IAAI;iBACX;gBACD,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;gBACnC,MAAM,UAAU,GAAG,MAAK;oBACtB,MAAM,WAAW,GAAG,QAAQ,CAAC,sBAAsB,CACjD,kCAAkC,CACnC,CAAC,CAAC,CAAC;AACJ,oBAAA,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,CAAC;AACnD,oBAAA,OAAO,WAAW;AACpB,iBAAC;AAED,gBAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;;oBAEb,MAAM,MAAM,GAAG,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,oBAAA,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;wBACvB,OAAO,EAAE,UAAU,EAAE;AACrB,wBAAA,OAAO,EAAE,QAAQ;AACjB,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,KAAK,EAAE,KAAK;AACZ,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,QAAQ,EAAE,QAAQ;AAClB,wBAAA,KAAK,EAAE,mCAAmC;AAC1C,wBAAA,SAAS,EAAE,cAAc;AACzB,wBAAA,QAAQ,EAAE,MAAM;qBACjB,CAAC,CAAC;;;YAGP,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnC,YAAA,IAAI,EAAE,CAAC,KAAK,EAAE;AACZ,gBAAA,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE;;AAEnB,SAAC;AAEM,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,EAAE,KAAI;YACzB,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AACnC,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;gBAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACnC,gBAAA,IAAI,EAAE,CAAC,KAAK,EAAE;AACZ,oBAAA,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE;;;AAGrB,SAAC;;AAlLS,IAAA,SAAS,CAAC,IAAI,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,MAAM,OAAO,GAAU,EAAE;QACzB,MAAM,MAAM,GAAU,EAAE;QACxB,MAAM,KAAK,GAAU,EAAE;QACvB,MAAM,SAAS,GAAG,IAAI;QACtB,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE;AAChD,QAAA,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;AAC9B,QAAA,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;;AAG5B,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;AAC5C,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;AACxD,gBAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;;AAE1C,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;AAC7B;;;;;;;;;;;;;;;;;;AAkBE;YACF,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;;gBAExC,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;AACpD,gBAAA,IAAI,KAAK,IAAI,CAAC,EAAE;oBACd,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;;AAEtC,aAAC,CAAC;YACF,IAAI,UAAU,EAAE;gBACd,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9C,oBAAA,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;oBACxF,IAAI,SAAS,EAAE;AACb,wBAAA,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;4BAC9B,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;;6BACzC;4BACL,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;;;;AAIlD,gBAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE;AACtD,oBAAA,KAAK,CAAC,OAAO,GAAG,KAAK;;qBAChB;AACL,oBAAA,KAAK,CAAC,OAAO,GAAG,IAAI;;;YAGxB,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;AACpC,gBAAA,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEnE,oBAAA,KAAK,CAAC,MAAM,GAAG,IAAI;;qBACd;AACL,oBAAA,KAAK,CAAC,MAAM,GAAG,KAAK;;;iBAEjB;AACL,gBAAA,KAAK,CAAC,MAAM,GAAG,KAAK;;YAEtB,MAAM,aAAa,GAAG,EAAE;AACxB,YAAA,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AAChC,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AAAE,gBAAA,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;;AACvD,YAAA,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE;gBACvB,aAAa,CAAC,IAAI,CAAC,CAAA,MAAA,EAAS,KAAK,CAAC,YAAY,CAAC,CAAA,CAAE,CAAC;gBAClD,WAAW,CAAC,IAAI,CAAC,CAAA,MAAA,EAAS,KAAK,CAAC,YAAY,CAAC,CAAA,CAAE,CAAC;;;YAGlD,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC/B,IAAI,EAAE,KAAK,CAAC,KAAK;gBACjB,cAAc,EAAE,KAAK,CAAC,KAAK;gBAC3B,SAAS,EAAE,KAAK,CAAC,OAAO,GAAG,aAAa,GAAG,mBAAmB;AAC9D,gBAAA,OAAO,EACL,aAAa,CAAC,IAAI,CAAC,GAAG;uBACnB,KAAK,CAAC;AACP,0BAAE;0BACA,cAAc,CAAC;gBACrB,OAAO,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AACtE,aAAA,CAAC;;YAEF,MAAM,CAAC,IAAI,CAAC;AACV,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,MAAM,EAAE;AACN,4BAAA;AACE,gCAAA,EAAE,EAAE,CAAA,EAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE;AAC3C,gCAAA,IAAI,EAAE,MAAM;AACZ,gCAAA,WAAW,EAAE,KAAK,CAAC,mBAAmB,CAAC;AACvC,gCAAA,IAAI,EAAE,gBAAgB;AACtB,gCAAA,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO;AACxB,gCAAA,YAAY,EAAE,CAAA,EAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA,OAAA,CAAS;AAC/D,gCAAA,WAAW,EAAE,CAAA,EAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA,OAAA,CAAS;AAC9D,gCAAA,YAAY,EAAE,CAAA,EAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA,OAAA,CAAS;AAC/D,gCAAA,OAAO,EAAE,CAAA,EAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA,OAAA,CAAS;AAC1D,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA,CAAC;YACF,IAAI,UAAU,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE;gBAC3C,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,gBAAgB,CAAC;gBAC9C,KAAK,CAAC,IAAI,CAAC;oBACT,KAAK,EAAE,KAAK,IAAI,kBAAkB;oBAClC,IAAI,EAAE,KAAK,CAAC,cAAc;AAC1B,oBAAA,WAAW,EAAE;wBACX,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;AAC5C;AACF,iBAAA,CAAC;;AAEN,SAAC,CAAC;;AAGF,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;;AAsD1F;;AChMK,MAAO,uBAAwB,SAAQ,UAAU,CAAA;AAC3C,IAAA,SAAS,CAAC,IAAI,EAAA;AACtB,QAAA,OAAO,IAAI;;AAEd;;ACHK,MAAO,oBAAqB,SAAQ,UAAU,CAAA;AACxC,IAAA,SAAS,CAAC,IAAI,EAAA;AACtB,QAAA,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI;AAChC,QAAA,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,QAAQ;QACxC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE;QACxC,MAAM,OAAO,GAAG,EAAE;QAClB,MAAM,MAAM,GAAG,EAAE;QAEjB,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAI;AACnC,YAAA,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;AACjE,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;AACjC,YAAA,MAAM,YAAY,GAAG,WAAW,CAAC,eAAe,CAAC;AACjD,YAAA,MAAM,WAAW,GAAG,IAAI,IAAI,MAAM;AAElC,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACpB,gBAAA,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,WAAW;gBACnC,MAAM,CAAC,OAAO,CAAC,GAAG;AAChB,oBAAA,KAAK,EAAE,KAAK;oBACZ,IAAI;AACJ,oBAAA,OAAO,EAAE,CAAA,MAAA,EAAS,WAAW,CAAC,YAAY,CAAC,CAAA,CAAE;AAC7C,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,IAAI,EAAE,OAAO;iBACd;;AAGH,YAAA,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC1C,MAAM,QAAQ,GAAG,EAAE;AACnB,gBAAA,IAAI,WAAW,CAAC,MAAM,EAAE;AACtB,oBAAA,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAI;AAC5C,wBAAA,IAAI,YAAY,IAAI,GAAG,KAAK,YAAY,EAAE;4BACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;;AAE9E,qBAAC,CAAC;;AAEJ,gBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;oBACzB,KAAK,EAAE,WAAW,CAAC,KAAK;oBACxB,QAAQ;AACR,oBAAA,MAAM,EAAE;wBACN,IAAI,EAAE,CAAA,EAAG,KAAK,CAAC,MAAM,GAAG,gBAAgB,GAAG,gBAAgB,CAAC,CAAA,CAAA,EAAI,WAAW,CAAC,EAAE,CAAA,CAAA,EAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA,CAAE;AACvH,qBAAA;AACF,iBAAA,CAAC;;AAEN,SAAC,CAAC;AAEF,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAClD,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK;AACxB,gBAAA,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI;AACtB,gBAAA,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO;AAC7B,aAAA;AACD,YAAA,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK;AACzB,SAAA,CAAC,CAAC;QAEH,OAAO;AACL,YAAA,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG;AAC9B,gBAAA,QAAQ,EAAE;oBACR,IAAI,EAAE,CAAA,mBAAA,EAAsB,UAAU,CAAA,UAAA,CAAY;AAClD,oBAAA,MAAM,EAAE;wBACN,IAAI,EAAE,KAAK,CAAC,cAAc;AAC1B,wBAAA,WAAW,EAAE;4BACX,KAAK;AACN,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA,GAAG;AACF,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,EAAE,wBAAwB;AAC9B,oBAAA,MAAM,EAAE;wBACN,IAAI,EAAE,KAAK,CAAC,cAAc;AAC1B,wBAAA,WAAW,EAAE;AACX,4BAAA,KAAK;4BACL,WAAW,EAAE,CAAC;AACf,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,QAAQ;SACzE;;AAEJ;;AClFK,MAAO,aAAc,SAAQ,UAAU,CAAA;AACjC,IAAA,SAAS,CAAC,KAAK,EAAA;QACvB,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;;AAEb,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK;QAChC,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;QACvD,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO;AAElD;;;;;;;;;;;AAWI;AACJ,QAAA,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAA,aAAA,CAAe,EAAE;YAClD,OAAO,EAAE,QAAQ,KAAK,cAAc,GAAG,aAAa,GAAG,EAAE;AAC1D,SAAA,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;AACpB,gBAAA,IAAI,EAAE,MAAM,CAAC,gCAAgC,CAAC;gBAC9C,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAA,gBAAA,CAAkB,EAAE;gBACrD,OAAO,EAAE,QAAQ,KAAK,iBAAiB,GAAG,aAAa,GAAG,EAAE;AAC7D,aAAA,CAAC;;AAEJ,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;AACpB,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,EAAE,CAAA,EAAG,KAAK,CAAC,QAAQ,CAAA,kBAAA,CAAoB;AAC3C,oBAAA,WAAW,EAAE;AACX,wBAAA,IAAI,EAAE,CAAC;AACR,qBAAA;AACF,iBAAA;gBACD,OAAO,EAAE,QAAQ,KAAK,mBAAmB,GAAG,aAAa,GAAG,EAAE;AAC/D,aAAA,CAAC;;AAEJ,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;AACpB,gBAAA,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAA,iBAAA,CAAmB,EAAE;gBACtD,OAAO,EAAE,QAAQ,KAAK,kBAAkB,GAAG,aAAa,GAAG,EAAE;AAC9D,aAAA,CAAC;;AAEJ,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;AACpB,gBAAA,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAA,MAAA,CAAQ,EAAE;gBAC3C,OAAO,EAAE,QAAQ,KAAK,OAAO,GAAG,aAAa,GAAG,EAAE;AACnD,aAAA,CAAC;;AAEJ,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;AACpB,gBAAA,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAA,KAAA,CAAO,EAAE;gBAC1C,OAAO,EAAE,QAAQ,KAAK,MAAM,GAAG,aAAa,GAAG,EAAE;AAClD,aAAA,CAAC;;;QAIJ,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACvD,YAAA,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE;;AAG1B,QAAA,OAAO,UAAU;;AAEpB;;AC1EK,MAAO,wBAAyB,SAAQ,UAAU,CAAA;AAAxD,IAAA,WAAA,GAAA;;QACS,IAAA,CAAA,SAAS,GAAG,KAAK;;AAEd,IAAA,SAAS,CAAC,IAAI,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC;QAEvD,OAAO;AACL,YAAA,KAAK,EAAE,CAAC;oBACN,KAAK,EAAE,IAAI,IAAI;iBAChB;SACF;;AAEJ;;ACXK,MAAO,mBAAoB,SAAQ,UAAU,CAAA;AAAnD,IAAA,WAAA,GAAA;;AACY,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,IAAI,KAAqC;AAC9D,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc;AAChE,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;AACzD,YAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO;AAC9B,YAAA,MAAM,QAAQ,GAAsB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AAC1D,gBAAA,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;AACrB,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,EAAE,CAAA,EAAG,QAAQ,CAAA,EAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA,CAAE;AACpD,iBAAA;gBACD,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACzC,sBAAE,CAAA,GAAA,EAAM,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAA;sBACrD,IAAI;AACR,gBAAA,QAAQ,EAAE,CAAC;AACT,wBAAA,KAAK,EAAE,CAAC;AACN,gCAAA,KAAK,EAAE,gBAAgB;gCACvB,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;sCACrC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACpC,sCAAE,CAAC,CAAC,MAAM,CAAC,YAAY;6BAC1B,CAAC;qBACH,CAAC;;AAEF,gBAAA,QAAQ,EAAE;AACR,oBAAA,GAAG,EAAE,CAAC,CAAC,YAAY,IAAI,KAAK;AAC5B,oBAAA,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI;AAC7B,iBAAA;AACD,gBAAA,aAAa,EAAE;AACb,oBAAA,GAAG,EAAE,CAAC,CAAC,YAAY,IAAI,KAAK;AAC5B,oBAAA,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,IAAI;AAClC,iBAAA;AACF,aAAA,CAAC,CAAC,GAAG,EAAE;YACR,OAAO,EAAE,QAAQ,EAAE;AACrB,SAAC;;AACF;;AClCK,MAAO,qBAAsB,SAAQ,UAAU,CAAA;AAArD,IAAA,WAAA,GAAA;;AACY,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,IAAI,KAAK,IAAI;;IAEpC,aAAa,GAAA;AACX,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM;AAC/B,QAAA,IAAI,WAAW,CAAC,OAAO,KAAK,aAAa,EAAE;AACzC,YAAA,WAAW,CAAC,OAAO,GAAG,cAAc;;aAC/B;AACL,YAAA,WAAW,CAAC,OAAO,GAAG,aAAa;;AAErC,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;;AAE3B;;ACXK,MAAO,kBAAmB,SAAQ,UAAU,CAAA;AACtC,IAAA,SAAS,CAAC,QAAQ,EAAA;AAC1B,QAAA,MAAM,EAAE,cAAc,EAAE,GAAG,QAAQ;AACnC,QAAA,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC;QACrC,OAAO;AACL,YAAA,MAAM,EAAE;gBACN,KAAK,EAAE,WAAW,CAAC,KAAK;AACxB,gBAAA,IAAI,EAAE;AACJ,oBAAA,EAAE,EAAE;AACL,iBAAA;AACD,gBAAA,OAAO,EAAE,QAAQ;AAClB,aAAA;AACD,YAAA,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,MAAM;gBACrD,KAAK;gBACL,IAAI;AACJ,gBAAA,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,KAAK,KAAK,CAAC;AACtB,aAAA,CAAC;SACH;;IAGH,MAAM,GAAA;AACJ,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM;AAC/B,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS;;AAGlD,IAAA,QAAQ,CAAC,OAAO,EAAA;;AAEd,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE;YAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,KAAK,OAAO;AACxC,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;;AAEzC,aAAC,CAAC;;;QAGJ,IAAI,CAAC,MAAM,EAAE;;AAEhB;;ACxCK,MAAO,iBAAkB,SAAQ,UAAU,CAAA;AACrC,IAAA,SAAS,CAAC,IAAI,EAAA;QACtB,OAAO;AACL,YAAA,QAAQ,EAAE,mBAAmB;AAC7B,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,IAAI,CAAC,UAAU,GAAG,oBAAoB,GAAG,qBAAqB;YACzE,OAAO,EAAE,IAAI,CAAC,UAAU,GAAG,aAAa,GAAG,cAAc;AACzD,YAAA,OAAO,EAAE,QAAQ;SAClB;;IAGH,aAAa,GAAA;AACX,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM;AAC/B,QAAA,IAAI,WAAW,CAAC,OAAO,KAAK,aAAa,EAAE;AACzC,YAAA,WAAW,CAAC,OAAO,GAAG,cAAc;AACpC,YAAA,WAAW,CAAC,SAAS,GAAG,qBAAqB;;aACxC;AACL,YAAA,WAAW,CAAC,OAAO,GAAG,aAAa;AACnC,YAAA,WAAW,CAAC,SAAS,GAAG,oBAAoB;;;AAGjD;;AClBK,MAAO,eAAgB,SAAQ,UAAU,CAAA;AAA/C,IAAA,WAAA,GAAA;;AAGS,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAE;;AAE1C,IAAA,SAAS,CAAC,IAAI,EAAA;QACtB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;QAEnD,OAAO;AACL,YAAA,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,IAAI,CAAC,EAAE;AACjB,YAAA,UAAU,EAAE;gBACV,WAAW;AACX,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,kBAAkB,EAAE,IAAI;AACxB,gBAAA,gBAAgB,EAAE,KAAK;AACvB,gBAAA,aAAa,EAAE,KAAK;AACrB,aAAA;AACD,YAAA,UAAU,EAAE,CAAC,MAAM,KAAI;AACrB,gBAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;gBAEtB,IAAI,CAAC,QAAQ,EAAE;;SAElB;;IAGI,WAAW,GAAA;AAChB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ;;AAGjB,IAAA,YAAY,CAAC,IAAI,EAAA;QACtB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;;AAGpB,QAAA,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CACf,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAC7D,KAAK,EAAE,CACR,CAAC,SAAS,CAAC,MAAK;;AAEf,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE;YAC/B,UAAU,CAAC,MAAK;gBACd,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9C,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;gBAE1B,IAAI,CAAC,QAAQ,EAAE;AACjB,aAAC,CAAC;AACJ,SAAC,CAAC;;IAGG,KAAK,GAAA;QACV,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE;;AAGzB,IAAA,cAAc,CAAC,MAAM,EAAA;QAC3B,MAAM,WAAW,GAAG,EAAE;AACtB,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,KAAI;AAC3C,YAAA,IAAI,IAAI,KAAK,eAAe,EAAE;gBAC5B,WAAW,CAAC,IAAI,CAAC;oBACf,GAAG;AACH,oBAAA,IAAI,EAAE;AACP,iBAAA,CAAC;;AACG,iBAAA,IAAI,IAAI,KAAK,YAAY,EAAE;;AAEhC,gBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;;AACvE,iBAAA,IAAI,IAAI,KAAK,aAAa,EAAE;AACjC,gBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AAC7B,oBAAA,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3B,iBAAC,CAAC;;AAEN,SAAC,CAAC;AACF,QAAA,OAAO,WAAW;;IAGZ,QAAQ,GAAA;;QAEd,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAGxC,QAAA,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ;AACpC,QAAA,MAAM,aAAa,GAAG,CAAC,EAAE,UAAU,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC;AACrE,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,aAAa,GAAG,gBAAgB,GAAG,mBAAmB;;AAE/E;;ACpFK,MAAO,mBAAoB,SAAQ,UAAU,CAAA;AAAnD,IAAA,WAAA,GAAA;;AAGS,QAAA,IAAA,CAAA,eAAe,GAAiB,IAAI,OAAO,EAAE;;AAE1C,IAAA,SAAS,CAAC,IAAI,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI;AAEtB,QAAA,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO;AACnC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK;QACpC,MAAM,OAAO,GAAG,EAAE;AAElB,QAAA,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;YACrC,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;AAC1C,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE;gBAC5C,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AACpD,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAC1B,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;oBACxB,UAAU,EAAE,QAAQ,CAAC;AACtB,iBAAA,CAAC,CACH;AACD,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;;AAE/E,SAAC,CAAC;QAEF,OAAO;AACL,YAAA,UAAU,EAAE;AACV,gBAAA,GAAG,UAAU;gBACb;AACD,aAAA;AACD,YAAA,YAAY,EAAE,CAAC,MAAM,KAAI;AACvB,gBAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;gBACtB,IAAI,CAAC,QAAQ,EAAE;;SAElB;;IAGK,QAAQ,GAAA;QACd,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAE3C;;AC3CK,MAAO,oBAAqB,SAAQ,UAAU,CAAA;AACxC,IAAA,SAAS,CAAC,IAAI,EAAA;AACtB,QAAA,OAAO,IAAI;;AAEd;;ACJK,MAAO,kBAAmB,SAAQ,UAAU,CAAA;AACtC,IAAA,SAAS,CAAC,IAAI,EAAA;QACtB,OAAO;AACL,YAAA,KAAK,EAAE,CAAC;oBACN,KAAK,EAAE,IAAI,IAAI;iBAChB;SACF;;AAEJ;;ACND,MAAM,eAAe,GAAG;AACtB,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,iBAAiB,EAAE,IAAI;AACvB,IAAA,cAAc,EAAE,IAAI;AACpB,IAAA,iBAAiB,EAAE,IAAI;AACvB,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,0BAA0B,EAAE,IAAI;AAChC,IAAA,kBAAkB,EAAE,KAAK;AACzB,IAAA,eAAe,EAAE,KAAK;AACtB,IAAA,kBAAkB,EAAE,KAAK;AACzB,IAAA,kBAAkB,EAAE,KAAK;AACzB,IAAA,0BAA0B,EAAE,IAAI;AAChC,IAAA,gBAAgB,EAAE,KAAK;AACvB,IAAA,kBAAkB,EAAE,IAAI;AACxB,IAAA,mBAAmB,EAAE,KAAK;AAC1B,IAAA,gBAAgB,EAAE,KAAK;AACvB,IAAA,oBAAoB,EAAE;CACvB;AAEK,MAAO,aAAc,SAAQ,UAAU,CAAA;AAOjC,IAAA,SAAS,CAAC,IAAI,EAAA;AACtB,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;AACtB,QAAA,MAAM,UAAU,GAAG,KAAK,CACtB,eAAe,EACf,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAC9B;AACD,QAAA,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC3C,YAAA,OAAO,IAAI;;AAGb,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM;AACvC,YAAA,GAAG,IAAI;YACP,QAAQ,EAAE,KAAK,KAAK;AACrB,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,CAAC,GAAG,CAAC,0CAA0C,EAAE,UAAU,CAAC;;QAGnE,OAAO;YACL,UAAU;YACV,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG;SACzB;;AAGH,IAAA,QAAQ,CAAC,KAAK,EAAA;QACZ,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI;AACrE,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI;AAC/C,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG;QAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,KAAI;AACrC,YAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,KAAK,KAAK;AACrC,SAAC,CAAC;;IAGJ,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,WAAW;;AAEpC;;AClEK,MAAO,QAAS,SAAQ,UAAU,CAAA;AAAxC,IAAA,WAAA,GAAA;;AAWY,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,IAAI,KAAK,IAAI;AAkE5B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;QAEtD,IAAA,CAAA,UAAU,GAAG,CAAC,EACpB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,uBAAuB,EAAE,cAAc,EAC7F,KAAI;AACH,YAAA,MAAM,WAAW,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC;YAClE,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG;gBACnC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE;aAC1C;YACD,IAAI,WAAW,EAAE;AACf,gBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACxB,oBAAA,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACjD,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACvB,iBAAC,CAAC;;AAEN,SAAC;QAEO,IAAA,CAAA,UAAU,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;AAChD,aAAA,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,OAAO,KAAK,EAAE;AACtC,aAAA,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;AAEnC,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,EAAE,KAAI;AAC5B,YAAA,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;YAChB,IAAI,SAAS,GAAG,EAAE;YAClB,OAAO,SAAS,EAAE;gBAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAC3C,IAAI,QAAQ,EAAE;AACZ,oBAAA,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;;gBAEpB,SAAS,GAAG,QAAQ;;AAEtB,YAAA,OAAO,GAAG,CAAC,OAAO,EAAE;AACtB,SAAC;AAEO,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,IAAI,KAAI;YAC1B,MAAM,IAAI,GAAG,EAAE;YACf,IAAI,OAAO,GAAG,CAAC;AAEf,YAAA,MAAM,SAAS,GAAG,CAAC,EAAE,EAAE,MAAM,KAAI;gBAC/B,OAAO,IAAI,CAAC;AACZ,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;AAChC,gBAAA,MAAM,CAAC,KAAK,GAAG,EAAE;AAEjB,gBAAA,IAAI,CAAC,cAAc,EAAE,CAAC;qBACnB,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ,KAAK,EAAE;qBACtC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,KAAK,KAAI;AAC9B,oBAAA,MAAM,MAAM,GAAG,OAAO,KAAK,UAAU;oBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;AAC/C,oBAAA,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;oBACvB,IAAI,MAAM,EAAE;wBACV,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;AAE3C,iBAAC,CAAC;AACN,aAAC;;YAGD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AACxB,YAAA,OAAO,IAAI;AACb,SAAC;AAEO,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,EAAE,EAAE,MAAM,KAAI;YACpC,MAAM,EACJ,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAC9C,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI;YACtE,IAAI,YAAY,GAAG,EAAE;YACrB,MAAM,WAAW,GAAG,YAAY;YAChC,IAAI,cAAc,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;gBACtD,MAAM,OAAO,GAAG;AACb,qBAAA,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;qBACrB,WAAW,EAAE,CAAC;AACjB,gBAAA,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI;;YAExE,MAAM,UAAU,GAAG,MAAM,GAAG,oBAAoB,GAAG,qBAAqB;YACxE,MAAM,OAAO,GAAG,EAAE;YAClB,IAAI,MAAM,EAAE;AACV,gBAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;;AAE7B,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,EAAE,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;;YAE3B,OAAO;AACL,gBAAA,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC1B,IAAI,EAAE,KAAK,IAAI,IAAI;gBACnB,GAAG,EAAE,GAAG,IAAI,IAAI;AAChB,gBAAA,IAAI,GAAG,YAAY,IAAI,WAAW,CAAC;AACnC,gBAAA,MAAM,EAAE,WAAW,GAAG;AACpB,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,QAAQ;wBAChB,EAAE;AACH,qBAAA;iBACF,GAAG,IAAI;AACR,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,EAAE,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAE;AACzD,iBAAA;aACF;AACH,SAAC;;aA9KM,IAAA,CAAA,SAAS,GAAQ,EAAR,CAAW;AAYpB,IAAA,IAAI,CAAC,IAAI,EAAA;AACd,QAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI;AAC/B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;QAExB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACpC,YAAA,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC/D,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;;;AAIlB,IAAA,KAAK,CAAC,EAAE,EAAA;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;QACjD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;AAExC,QAAA,IAAI,YAAY,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AACzB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;AAChB,aAAA,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5C,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACpB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;aAChB;AACL,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;QAGrB,MAAM,IAAI,GAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;AAGZ,IAAA,SAAS,CAAC,EAAE,EAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;IAGb,eAAe,GAAA;AACpB,QAAA,MAAM,OAAO,GAAG,CAAC,KAAK,KAAI;AACxB,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBACrB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ;AAC3C,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;;AAG1D,gBAAA,IAAI,SAAS,IAAI,CAAC,OAAO,EAAE;oBACzB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9C,oBAAA,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;oBAC7D,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;;gBAGzC,IAAI,OAAO,EAAE;oBACX,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;oBAC9C,IAAI,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9C,wBAAA,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;;oBAElC,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;;AAGzC,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAClD,oBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAEvB,aAAC,CAAC;AACJ,SAAC;AACD,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;;;AC3E9B,MAAM,WAAW,GAAG,CAClB,UAA6B,EAC7B,IAGC,KACC;IACF,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,uBAAuB,EAAE,cAAc,EAAE,GAAG,IAAI;AAC7E,IAAA,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI;IAC1D,MAAM,WAAW,GAAG,YAAY;IAChC,IAAI,cAAc,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;QACtD,MAAM,OAAO,GAAG;AACb,aAAA,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;aACrB,WAAW,EAAE,CAAC;AACjB,QAAA,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI;;AAEvD,IAAA,OAAO,IAAI;AACb,CAAC;AAED,iBAAe,EAAE,WAAW,EAAE;;ACM9B,MAAMC,YAAU,GAAG,CAAC;AAEpB,MAAM,iBAAiB,GAAG,gBAAgB;AAEpC,MAAO,gBAAiB,SAAQ,UAAU,CAAA;AAAhD,IAAA,WAAA,GAAA;;QACS,IAAA,CAAA,YAAY,GAAG,KAAK;QAEjB,IAAA,CAAA,SAAS,GAAG,CACpB,EAAE,MAAM,EAAE,KAAK,EACiC,KAC5B;AACpB,YAAA,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK;AAC5B,YAAA,MAAM,EACJ,KAAK,EACL,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,QAAQ,GACT,GAAG,IAAI,CAAC,OAAO;AAChB,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;AAC3C,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;AAC/C,YAAA,IAAI,CAAC,YAAY,IACf,IAAI,CAAC;AACF,oBAAC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAC7D;;AAED,YAAA,MAAM,MAAM,GAAmB;AAC7B,gBAAA,KAAK,EAAE;AACL,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,wCAAA,EAA2C,UAAU,CAAA,QAAA,CAAU;AAC9E,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,IAAI,EAAE,CAAA,KAAA,EAAQ,MAAM,CAAC,KAAK,CAAA,CAAA;AAC3B;AACF,iBAAA;AACD,gBAAA,OAAO,EAAE;AACP,oBAAA,MAAM,EAAE;AACN,wBAAA,WAAW,EAAE,+BAA+B;AAC5C,wBAAA,OAAO,EAAE,cAAc;AACvB,wBAAA,MAAM,EAAE;AACN,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,OAAO,EAAE;AACV;AACF,qBAAA;AACF,iBAAA;gBACD,OAAO,EAAE,IAAI,CAAC,YAAY,GAAG,iBAAiB,GAAG;aAClD;;AAED,YAAA,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM;gBAC/C,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC;gBAC9C,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG;gBACjC,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,EAAE,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAC,EAAE,CAAA,CAAA,EAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC5D;AACF,aAAA,CAAC,CAAC;;AAEH,YAAA,MAAM,UAAU,GAAmB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC;;AAE9E,YAAA,MAAM,SAAS,GAAkB;AAC/B,gBAAA,EAAE,EAAE,YAAY;AAChB,gBAAA,IAAI,EAAE,QAAQ;;AAEd,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,YAAY,EAAE,mBAAmB;AACjC,gBAAA,YAAY,EAAE,kBAAkB;aACjC;;AAED,YAAA,MAAM,WAAW,GAAoB;AACnC,gBAAA,EAAE,EAAE,cAAc;AAClB,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;oBACnC,KAAK,EAAE,CAAA,EAAG,IAAI,CAAA,CAAE;AAChB,oBAAA,KAAK,EAAE,IAAI;oBACX,QAAQ,EAAE,IAAI,KAAK;AACpB,iBAAA,CAAC,CAAC;AACH,gBAAA,OAAO,EAAE,cAAc;aACxB;YACD,OAAO;gBACL,MAAM;gBACN,KAAK;gBACL,UAAU;gBACV,SAAS;gBACT,WAAW;gBACX,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI;AACjC,gBAAA,OAAO,EAAE,KAAK;aACf;AACH,SAAC;;AAEM,IAAA,UAAU,CAAC,OAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO;;IAGxB,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;AAEtC,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM;AAC9B,QAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,GAAG,iBAAiB,GAAG,EAAE;;AAG3D,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,UAAU,CAAC,MAAK;gBACd,MAAM,OAAO,GAAqB,QAAQ,CAAC,aAAa,CAAC,oDAAoD,CAAC;gBAC9G,OAAO,CAAC,KAAK,EAAE;aAChB,EAAE,GAAG,CAAC;;;AAIH,IAAA,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAA;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAE3C,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC;AAC3C,YAAA,KAAK,EAAE;AACL,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,CAAC;AACX,iBAAA;gBACD,OAAO,EAAE,IAAI,KAAK,CAAC,GAAG,aAAa,GAAG,EAAE;AACzC,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;AACnC,iBAAA;gBACD,OAAO,EAAE,IAAI,KAAK,CAAC,GAAG,aAAa,GAAG;AACvC,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,IAAI,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC;AAC3C,iBAAA;gBACD,OAAO,EAAE,IAAI,KAAK,KAAK,GAAG,aAAa,GAAG,EAAE;AAC7C,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,KAAK;AACf,iBAAA;gBACD,OAAO,EAAE,IAAI,KAAK,KAAK,GAAG,aAAa,GAAG,EAAE;AAC7C;SACF;;IAGK,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAA;QACpC,IAAI,SAAS,GAAG,CAAC;QACjB,MAAM,KAAK,GAAa,EAAE;QAC1B,MAAM,KAAK,GAAGA,YAAU;QACxB,IAAI,IAAI,GAAG,KAAK;AAEhB,QAAA,IAAI,KAAK,GAAG,KAAK,EAAE;YACjB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AACnC,YAAA,IAAI,IAAI,GAAG,KAAK,EAAE;AAChB,gBAAA,SAAS,GAAG,IAAI,GAAG,KAAK;;YAG1B,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI,KAAK,EAAE;gBAC1B,SAAS,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC;;;aAE5B;YACL,IAAI,GAAG,KAAK;;AAGd,QAAA,IAAI,CAAC;AACL,QAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAA,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC;AACT,gBAAA,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,QAAQ,KAAK,IAAI,GAAG,aAAa,GAAG,EAAE;AAC/C,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,QAAQ;AAClB;AACF,aAAA,CAAC;;AAGJ,QAAA,OAAO,KAAK;;AAEf;;ACtMK,MAAO,wBAAyB,SAAQ,UAAU,CAAA;AAO5C,IAAA,SAAS,CAAC,QAAQ,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM;;QAGzD,IAAI,CAAC,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QAE5B,MAAM,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;;QAG3C,IAAI,CAAC,YAAY,EAAE;QAEnB,OAAO;AACL,YAAA,KAAK,EAAE;AACL,gBAAA,EAAE,EAAE,8BAA8B;AAClC,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;AACtB,gBAAA,GAAG,EAAE,CAAC;gBACN,GAAG,EAAE,IAAI,CAAC,KAAK;gBACf,KAAK,EAAE,IAAI,CAAC,OAAO;AACnB,gBAAA,YAAY,EAAE,OAAO;AACrB,gBAAA,YAAY,EAAE;AACf,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,UAAU;;AAElB;SACF;;AAGI,IAAA,QAAQ,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAA;AACrC,QAAA,IAAI,YAAY,KAAK,OAAO,EAAE;YAC5B,IAAI,cAAc,GAAG,KAAK;YAC1B,IAAI,cAAc,EAAE;gBAClB,cAAc,GAAG,CAAC,cAAc;AAChC,gBAAA,IAAI,cAAc,GAAG,IAAI,CAAC,KAAK,EAAE;AAC/B,oBAAA,cAAc,GAAG,IAAI,CAAC,KAAK;;AAE7B,gBAAA,IAAI,cAAc,GAAG,CAAC,EAAE;oBACtB,cAAc,GAAG,CAAC;;;AAGtB,YAAA,IAAI,CAAC,OAAO,GAAG,cAAc,IAAI,IAAI;;YAGrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO;;AACjC,aAAA,IAAI,YAAY,KAAK,OAAO,EAAE;YACnC,IAAI,CAAC,QAAQ,EAAE;;;IAIZ,QAAQ,GAAA;QACb,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;YACjC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;;YAGxC,IAAI,CAAC,WAAW,EAAE;;;IAId,WAAW,GAAA;AACjB,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM;AAC7B,QAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;;IAGvB,QAAQ,GAAA;AACd,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO;AAC9B,QAAA,OAAO;AACJ,aAAA,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO;AACjC,aAAA,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;;IAG3B,YAAY,GAAA;QAClB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,KAAK,KAAI;AACzC,YAAA,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK;YACtB,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;;gBAE/B,IAAI,CAAC,QAAQ,CAAC;AACZ,oBAAA,YAAY,EAAE,OAAO;oBACrB,KAAK,EAAE,IAAI,GAAG;AACf,iBAAA,CAAC;;gBAGF,IAAI,CAAC,WAAW,EAAE;;AAEtB,SAAC,CAAC;;AAEL;;ACzFD,MAAM,UAAU,GAAG,CAAC;AAEd,MAAO,gBAAiB,SAAQ,UAAU,CAAA;AAAhD,IAAA,WAAA,GAAA;;AACY,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,KAAoB,KAAsB;YAC/D,MAAM,EACJ,MAAM,EACN,KAAK,EACL,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,QAAQ,GACT,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE;AACtB,YAAA,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,IAAI,EAAE;AAClC,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;AAC3C,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;;AAG/C,YAAA,MAAM,MAAM,GAAmB;AAC7B,gBAAA,KAAK,EAAE;AACL,oBAAA,IAAI,EAAE;wBACJ,IAAI,EAAE,KAAK,IAAI,kCAAkC;AAClD;AACF;aACF;;AAGD,YAAA,MAAM,KAAK,GAAkB;AAC3B,gBAAA,EAAE,EAAE,qBAAqB;AACzB,gBAAA,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,UAAU;AAC9C,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,YAAY,EAAE,aAAa;AAC3B,gBAAA,YAAY,EAAE;aACf;;AAGD,YAAA,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,KAAI;;AAE9C,gBAAA,MAAM,WAAW,GAAG;AAClB,oBAAA,KAAK,EAAE;iBACR;AACD,gBAAA,IAAI,IAAI,CAAC,WAAW,EAAE;oBACpB,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;wBACnE,KAAK;wBACL,MAAM,EAAE,EAAE,IAAI,EAAE;AACjB,qBAAA,CAAC,CAAC;;gBAEL,OAAO;oBACL,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC;oBAC9C,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG;oBACjC,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,oBAAA,MAAM,EAAE;AACN,wBAAA,IAAI,EAAE,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAC,EAAE,CAAA,CAAA,EAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC5D,qBAAA;oBACD;iBACD;AACH,aAAC,CAAC;;AAGF,YAAA,MAAM,UAAU,GAAmB,KAAK,EAAE,KAAK,EAAE;kBAC7C,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK;kBAC1C,IAAI;;AAGR,YAAA,MAAM,WAAW,GAAoB;AACnC,gBAAA,EAAE,EAAE,cAAc;AAClB,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;oBACnC,KAAK,EAAE,CAAA,EAAG,IAAI,CAAA,CAAE;AAChB,oBAAA,KAAK,EAAE,IAAI;oBACX,QAAQ,EAAE,IAAI,KAAK;AACpB,iBAAA,CAAC,CAAC;AACH,gBAAA,OAAO,EAAE,cAAc;aACxB;YACD,OAAO;gBACL,MAAM;gBACN,KAAK;gBACL,KAAK;gBACL,UAAU;gBACV,WAAW;gBACX,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI;AACjC,gBAAA,OAAO,EAAE,KAAK;aACf;AACH,SAAC;;AAEM,IAAA,UAAU,CAAC,OAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO;;AAGvB,IAAA,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAA;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAE3C,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC;AAC3C,YAAA,KAAK,EAAE;AACL,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,CAAC;AACX,iBAAA;gBACD,OAAO,EAAE,IAAI,KAAK,CAAC,GAAG,aAAa,GAAG,EAAE;AACzC,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;AACnC,iBAAA;gBACD,OAAO,EAAE,IAAI,KAAK,CAAC,GAAG,aAAa,GAAG;AACvC,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,IAAI,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC;AAC3C,iBAAA;gBACD,OAAO,EAAE,IAAI,KAAK,KAAK,GAAG,aAAa,GAAG,EAAE;AAC7C,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,KAAK;AACf,iBAAA;gBACD,OAAO,EAAE,IAAI,KAAK,KAAK,GAAG,aAAa,GAAG,EAAE;AAC7C;SACF;;IAGK,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAA;QACpC,IAAI,SAAS,GAAG,CAAC;QACjB,MAAM,KAAK,GAAa,EAAE;QAC1B,MAAM,KAAK,GAAG,UAAU;QACxB,IAAI,IAAI,GAAG,KAAK;AAEhB,QAAA,IAAI,KAAK,GAAG,KAAK,EAAE;YACjB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AACnC,YAAA,IAAI,IAAI,GAAG,KAAK,EAAE;AAChB,gBAAA,SAAS,GAAG,IAAI,GAAG,KAAK;;YAG1B,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI,KAAK,EAAE;gBAC1B,SAAS,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC;;;aAE5B;YACL,IAAI,GAAG,KAAK;;AAGd,QAAA,IAAI,CAAC;AACL,QAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAA,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC;AACT,gBAAA,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,QAAQ,KAAK,IAAI,GAAG,aAAa,GAAG,EAAE;AAC/C,gBAAA,MAAM,EAAE;AACN,oBAAA,OAAO,EAAE,QAAQ;AAClB;AACF,aAAA,CAAC;;AAGJ,QAAA,OAAO,KAAK;;AAEf;;ACjKK,MAAO,oBAAqB,SAAQ,UAAU,CAAA;AAApD,IAAA,WAAA,GAAA;;QACU,IAAA,CAAA,QAAQ,GAAG,MAAM;;IAEf,SAAS,GAAA;QACjB,OAAO;AACL,YAAA,KAAK,EAAE,CAAC;AACN,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,KAAK,MAAM,GAAG,aAAa,GAAG,EAAE;iBACvD,EAAE;AACD,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,KAAK,OAAO,GAAG,aAAa,GAAG,EAAE;iBACxD,EAAE;AACD,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,OAAO,EAAE,UAAU;AACnB,oBAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,KAAK,UAAU,GAAG,aAAa,GAAG,EAAE;iBAC3D,CAAC;SACH;;AAGI,IAAA,WAAW,CAAC,KAAK,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;AAExB;;ACtBD;AAEA,MAAM,kBAAkB,GAAG,cAAc;AACzC,MAAM,4BAA4B,GAAG,qEAAqE;AAE1G,MAAM,UAAU,GAAG;AACjB,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,KAAK,EAAE,yBAAyB;AAChC,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,KAAK,EAAE,aAAa;CACrB;AAED,wBAAe;AACb,IAAA,eAAe,EAAE,EAAS;IAC1B,SAAS,EAAE,IAAI,OAAO,EAAE;AACxB,IAAA,eAAe,CAAC,UAAU,EAAA;QACxB,MAAM,eAAe,GAAG,UAAU,CAAC,qBAAqB,CAAC,gBAAgB,CAAC;AAC1E,QAAA,OAAOC,OAAK,CACV,eAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EACvD,IAAI,CAAC,SAAS,CACf,CAAC,IAAI,CACJ,YAAY,CAAC,GAAG,CAAC,EACjB,SAAS,CAAC,CAAC,UAAU,KAAI;YACvB,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE;YAC/D,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE;AACnE,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;AAC1E,YAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;YACtC,MAAM,OAAO,GAAG,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,GAAG,eAAe,CAAC;AAC9D,YAAA,MAAM,MAAM,GAAG;AACb,gBAAA,gBAAgB,EAAE;AAChB,oBAAA,UAAU,EAAE,GAAG;AACf,oBAAA,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,mBAAmB,CAAC;AACnE,oBAAA,GAAG,aAAa;oBAChB;AACD,iBAAA;aACF;;YAGD,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;AACrC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;;AAGnC,YAAA,OAAO,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC;SACxC,CAAC,CACH;KACF;IACD,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAA;;AAElC,QAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,kBAAkB,CAAC;AAC3E,QAAA,MAAM,EAAE,UAAU,EAAE,GAAG,gBAAgB;QACvC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe;AAC5C,QAAA,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YAChC,KAAK,GAAG,EAAE;;AAEZ,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,MAAM,GAAG,CAAC;;AAEZ,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,UAAU;AAC5C,QAAA,IAAI,MAAM,GAAG,CAAC,EAAE;YACd,MAAM,gBAAgB,GAAG,WAAW,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;YAC1E,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE;;AAEhD,YAAA,IAAI,OAAO,CAAC,MAAM,EAAE;gBAClB,OAAO,CAAC,GAAG,EAAE;;YAEf,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACrD,YAAA,gBAAgB,CAAC,IAAI,GAAG,OAAO;;AAGjC,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,IAAI,KAAK,GAAG,MAAM,CAAC,EAAE;AACtD,YAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;;;QAIxC,MAAM,gBAAgB,GAAG,WAAW,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;AAC1E,QAAA,gBAAgB,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC;;AAGxC,QAAA,IAAI,MAAM,KAAK,CAAC,EAAE;YAChB,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,4BAA4B,CAAC;YACrE,IAAI,QAAQ,EAAE;AACZ,gBAAA,QAAQ,CAAC,SAAS,GAAG,CAAC;;;;AAK1B,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,KAAK;KACrC;AACD,IAAA,cAAc,CAAC,WAAW,EAAA;QACxB,WAAW,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,MACrC,MAAM,CAAC,UAAU,CAClB,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,KAAI;YAC5B,IAAI,CAAC,eAAe,GAAG;AACrB,gBAAA,GAAG,UAAU;gBACb,GAAG,IAAI,CAAC,eAAe;AACvB,gBAAA,OAAO,EAAE;aACV;AACH,SAAC,CAAC;QACF,UAAU,CAAC,MAAK;YACd,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,4BAA4B,CAAC;YACrE,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC7C,YAAA,OAAO,CAAC,IAAI,CACV,YAAY,CAAC,GAAG,CAAC,CAClB,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAI;gBACzB,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,MAAqB;AACvE,gBAAA,MAAM,EACJ,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EACnC,GAAG,IAAI,CAAC,eAAe;gBACxB,MAAM,MAAM,GAAG,GAAG;gBAClB,IACE,CAAC,SAAS,GAAG,YAAY,IAAI,YAAY,GAAG,MAAM;AAC/C,wBAAC,MAAM,GAAG,KAAK,GAAG,UAAU;uBAC5B,OAAO,KAAK,KAAK,EACpB;AACA,oBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI;oBACnC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK;oBAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;AAE7C,aAAC,CAAC;AACJ,SAAC,CAAC;KACH;AACD;;;;;;;;AAQK;AACL,IAAA,kBAAkB,CAAC,MAAM,EAAA;AACvB,QAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAC9B,aAAA,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,KAAK,kBAAkB,CAAC;QAExD,IAAI,iBAAiB,EAAE;YACrB,iBAAiB,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM;;KAEpE;IACD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;KAChC;AACD,IAAA,gBAAgB,CAAC,UAAU,EAAA;QACzB,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,CAAC;QACrE,MAAM,eAAe,GAAG,UAAU,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;QACxE,eAAe,CAAC,gBAAgB,EAAE;;CAErC;;AClJD,MAAM,gBAAgB,GAAG,oBAAoB;AAC7C,MAAM,iBAAiB,GAAG,qBAAqB;AAEzC,MAAO,iBAAkB,SAAQ,UAAU,CAAA;AAAjD,IAAA,WAAA,GAAA;;QAuIS,IAAA,CAAA,gBAAgB,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE;AAE5D,QAAA,IAAA,CAAA,oBAAoB,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,OAAO,CAAC;AAElF,QAAA,IAAA,CAAA,4BAA4B,GAAG,CAAC,WAAW,KAAI;AACpD,YAAA,IAAI,CAAC,WAAW,CAAC,4BAA4B,CAAC,WAAW,CAAC;AAC5D,SAAC;AAEM,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC;AAE5E,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,MAAM,KAAI;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC;AACvC,SAAC;QAEM,IAAA,CAAA,uBAAuB,GAAG,MAAK;AACpC,YAAA,IAAI,CAAC,WAAW,CAAC,uBAAuB,EAAE;AAC5C,SAAC;;AApJS,IAAA,SAAS,CAAC,IAAI,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACnC,YAAA,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;;QAGpD,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;QAE3C,MAAM,MAAM,GAAG,EAAE;QAEjB,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,UAAU,KAAI;AACzC,YAAA,MAAM,OAAO,GAAG,CAAA,MAAA,EAAS,EAAE,CAAA,CAAA,EAAI,UAAU,EAAE;;AAG3C,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC;;YAG9D,MAAM,QAAQ,GAAG,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS;AACvB,iBAAA,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,eAAe,EAAE,KAAK,UAAU;AACxD,iBAAA,GAAG,CAAC,CAAC,KAAK,KAAI;gBACb,KAAK,CAAC,MAAM,EAAE;gBACd,OAAO;AACL,oBAAA,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE;AAC3B,oBAAA,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE;AACrB,oBAAA,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE;iBAC1B;AACH,aAAC;iBACA,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAI;gBACrC,QAAQ,CAAC,IAAI,CAAC;AACZ,oBAAA,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACtC,oBAAA,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC;AACjD,oBAAA,KAAK,EAAE;wBACL,OAAO;AACR,qBAAA;AACF,iBAAA,CAAC;AACJ,aAAC,CAAC;YAEJ,MAAM,CAAC,IAAI,CAAC;gBACV,MAAM;gBACN,KAAK,EAAE,EAAE,QAAQ,EAAE;gBACnB,OAAO,EAAE,CAAA,mBAAA,EAAsB,OAAO,CAAA,CAAE;AACxC,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,KAAK,EAAE;oBACL,OAAO;AACR,iBAAA;AACF,aAAA,CAAC;AACJ,SAAC,CAAC;QAEF,OAAO;YACL,MAAM;YACN,OAAO,EAAE,sBAAsB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA,CAAE;SAC1D;;IAGI,WAAW,CAAC,EAAE,YAAY,EAAE,EAAA;QACjC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YACnC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,YAAY,CAAC,OAAO,EAAE;AAChD,gBAAA,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM;AAC5B,gBAAA,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,gBAAgB,GAAG,iBAAiB;;AAEhF,SAAC,CAAC;;IAGG,aAAa,CAAC,EAAE,YAAY,EAAE,EAAA;QACnC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,YAAY;AAC9D,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;AAClF,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK;QAEhC,IAAI,MAAM,GAAG,KAAK;QAClB,IAAI,KAAK,GAAQ,YAAY,CAAC,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,KAAK;;AAGtE,QAAA,KAAK,GAAG,CAAA,EAAG,KAAK,CAAA,CAAE;;AAGlB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC9B,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;aACrC;AACL,YAAA,MAAM,GAAG,WAAW,KAAK,KAAK;;;;AAKhC,QAAA,IAAI,MAAM,KAAK,YAAY,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAAE;QAE1E,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC;AACrD,QAAA,IAAI,CAAC,WAAW,CAAC,uBAAuB,EAAE;;AAGrC,IAAA,oBAAoB,CAAC,MAAM,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB;;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC;aACT,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;aAC1B,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ;AAC7B,aAAA,OAAO,CAAC,CAAC,QAAQ,KAAI;AACpB,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;gBAC3B,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;AACpC,oBAAA,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,EAAE;AACrC,oBAAA,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,CAAC,WAAW,CAAC;;AAE7E,aAAC,CAAC;AACJ,SAAC,CAAC;;IAGC,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB;;AAEF,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS;AAC7C,aAAA,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE,KAAK,MAAM;aAC5C,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC;aACT,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;aAC1B,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ;AAC7B,aAAA,OAAO,CAAC,CAAC,QAAQ,KAAI;AACpB,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AAC3B,gBAAA,IAAI,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AACvD,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;oBACvE,KAAK,CAAC,MAAM,EAAE;AACd,oBAAA,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,EAAE;AACrC,oBAAA,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,CAAC,WAAW,CAAC;;AAE7E,aAAC,CAAC;AACJ,SAAC,CAAC;;AAqBE,IAAA,kBAAkB,CAAC,IAAI,EAAA;AAC7B,QAAA,MAAM,UAAU,GAAG;AACjB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,MAAM,EAAE,QAAQ;SACjB;AAED,QAAA,OAAO,2BAA2B,UAAU,CAAC,IAAI,CAAC,EAAE;;IAG9C,aAAa,CAAC,MAAM,EAAE,OAAO,EAAA;QACnC,OAAO,MAAM,GAAG;YACd,IAAI,EAAE,MAAM,CAAC,KAAK;AAClB,YAAA,SAAS,EAAE,gBAAgB;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA,MAAM,EAAE,cAAc;gBACtB,EAAE,EAAE,CAAA,EAAG,OAAO,CAAA,OAAA,CAAS;gBACvB,OAAO;AACR,aAAA;AACD,YAAA,KAAK,EAAE;gBACL,EAAE,EAAE,CAAA,EAAG,OAAO,CAAA,OAAA,CAAS;AACxB,aAAA;SACF,GAAG,IAAI;;AAEX;;ACxLK,MAAO,kBAAmB,SAAQ,UAAU,CAAA;AAAlD,IAAA,WAAA,GAAA;;QAwBS,IAAA,CAAA,aAAa,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,KAAI;YAChD,MAAM,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;YAChC,IAAI,CAAC,UAAU,GAAG;gBAChB,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA,CAAE,EAAE,OAAO,EAAE,IAAI,KAAK,CAAC,GAAG,aAAa,GAAG,EAAE,EAAE;gBACzE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAA,KAAA,EAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA,CAAE,EAAE,OAAO,EAAE,IAAI,KAAK,CAAC,GAAG,aAAa,GAAG,EAAE,EAAE;gBACnF,IAAI,EAAE,EAAE,OAAO,EAAE,CAAA,KAAA,EAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA,CAAE,EAAE,OAAO,EAAE,IAAI,KAAK,UAAU,GAAG,aAAa,GAAG,EAAE,EAAE;gBAC5F,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,UAAU,CAAA,CAAE,EAAE,OAAO,EAAE,IAAI,KAAK,UAAU,GAAG,aAAa,GAAG,EAAE,EAAE;gBAC1F,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC;AAC5C,gBAAA,MAAM,EAAE;AACN,oBAAA,KAAK,EAAE,qBAAqB;oBAC5B,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AAC/B,wBAAA,IAAI,EAAE,CAAC;wBACP,QAAQ,EAAE,CAAC,KAAK,IAAI;AACrB,qBAAA,CAAC,CAAC;AACH,oBAAA,OAAO,EAAE;AACV,iBAAA;aACF;AACH,SAAC;AAEM,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,UAAU,EAAE,WAAW,KAAI;AAClD;;;AAGE;YACF,MAAM,MAAM,GAAG,EAAE;AACjB,YAAA,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC;AAEjB,YAAA,IAAI,UAAU,IAAI,KAAK,EAAE;AACvB,gBAAA,KAAK,GAAG,UAAU,GAAG,CAAC;;;YAIxB,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,QAAgB;AAAE,gBAAA,IACpB,SAAiB;gBACnB,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;AACvC,oBAAA,IAAI,UAAU,KAAK,CAAC,EAAE;wBACpB,QAAQ,GAAG,UAAU;wBACrB,SAAS,GAAG,CAAC;;;;AAGR,yBAAA,IAAI,WAAW,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;AAC7D,wBAAA,QAAQ,GAAG,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AAClD,wBAAA,SAAS,GAAG,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;;yBAC9C;wBACL,QAAQ,GAAG,UAAU;wBACrB,SAAS,GAAG,WAAW,GAAG,KAAK,IAAI,UAAU,GAAG,WAAW,CAAC;;;qBAEzD;;;AAGL,oBAAA,QAAQ,GAAG,KAAK,GAAG,CAAC;oBACpB,SAAS,GAAG,CAAC;;;AAIf,gBAAA,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE;oBAC1C,MAAM,CAAC,IAAI,CAAC;AACV,wBAAA,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACf,wBAAA,OAAO,EAAE,CAAA,KAAA,EAAQ,MAAM,CAAC,CAAC,CAAC,CAAA,CAAE;wBAC5B,OAAO,EAAE,WAAW,KAAK,CAAC,GAAG,WAAW,GAAG;AAC5C,qBAAA,CAAC;;;iBAEC;gBACL,MAAM,CAAC,IAAI,CAAC;AACV,oBAAA,IAAI,EAAE,GAAG;AACT,oBAAA,OAAO,EAAE,QAAQ;oBACjB,OAAO,EAAE,WAAW,KAAK,CAAC,GAAG,WAAW,GAAG;AAC5C,iBAAA,CAAC;;AAEF,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;AACnC,oBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAAA,KAAA,EAAQ,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,KAAK,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,EAAE,EAAE,CAAC;;;AAG7H,YAAA,OAAO,MAAM;AACf,SAAC;;AAhGS,IAAA,SAAS,CAAC,IAAI,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI;QACtB,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO;;AAE9C,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,EAAE;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,QAAQ,CAAC;;QAE9E,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;YAC5B,UAAU,EAAE,IAAI,CAAC;SAClB;;IAGI,MAAM,CAAC,CAAC,EAAE,IAAI,EAAA;QACnB,MAAM,OAAO,GAAG,EAAE;AAClB,QAAA,OAAO,CAAC,CAAC,MAAM,EAAE;AACf,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;;AAEjC,QAAA,OAAO,OAAO;;AA+EjB;;ACjGD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;AAC/B,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC;AACpB,IAAA,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACrB,IAAA,SAAS,EAAE;AACZ,CAAA,CAAC;AAEF,MAAM,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;AACxC,IAAA,OAAO,EAAE,0BAA0B;AACnC,IAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC;AACpB,IAAA,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACrB,IAAA,SAAS,EAAE;AACZ,CAAA,CAAC;AAEI,MAAO,OAAQ,SAAQ,UAAU,CAAA;AAAvC,IAAA,WAAA,GAAA;;AAGS,QAAA,IAAA,CAAA,WAAW,GAAoB,IAAI,OAAO,EAAE;AAE5C,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,OAAO,EAAE;AAExC,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,IAAI,MAAe;AACxC,YAAA,WAAW,EAAE,YAAY;AACzB,YAAA,UAAU,EAAE,CAAC;AACX,oBAAA,GAAG,EAAE,8EAA8E;AACnF,oBAAA,OAAO,EAAE;iBACV,CAAC;AACF,YAAA,WAAW,EAAE;AACX,gBAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACd,gBAAA,IAAI,EAAE;AACP,aAAA;AACD,YAAA,YAAY,EAAE,CAAC,GAAG,KAAI;AACpB,gBAAA,IAAI,CAAC,GAAG,GAAG,GAAG;gBACd,MAAM,MAAM,GAAG,IAAI;AAChB,qBAAA,YAAY,CAAC;AACX,qBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AACnC,qBAAA,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACvC,gBAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;;AAG1B,gBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;AACzC,oBAAA,mBAAmB,EAAE,KAAK;AAC3B,iBAAA,CAAC;gBACF;;AAEG,qBAAA,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;;qBAErC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAI;AAC9B,oBAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;AACtB,oBAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;yBAC5D,KAAK,CAAC,OAAO;yBACb,SAAS,CAAC,KAAK;yBACf,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,KAAI;AAC1B,wBAAA,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO;AAC/B,wBAAA,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,OAAO;AAClC,wBAAA,IAAI,SAAS,KAAK,sBAAsB,EAAE;AACxC,4BAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE/B,qBAAC,CAAC;AAEJ,oBAAA,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,KAAI;AAC5C,wBAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;AACnC,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAC1B,qBAAC,CAAC;AAEF,oBAAA,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,KAAI;AACzC,wBAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC;AAC9C,qBAAC,CAAC;AACJ,iBAAC,CAAC;AACJ,gBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;;AAE7B,SAAA,CAAC;;AAEF;;;;;;AAMG;AACK,IAAA,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAA;QAChC,MAAM,IAAI,IACR;eACG;AACA,eAAA,cAAc,CAAC,IAAI,CAAC,GAAG;AACvB,eAAA,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAC5B;AACD,QAAA,IAAI,IAAI;AAAE,YAAA,OAAO,IAAI;QACrB,OAAO,CAAC,KAAK,CAAC,CAAA,EAAG,GAAG,CAAA,EAAA,EAAK,GAAG,CAAA,uBAAA,CAAyB,CAAC;AACtD,QAAA,OAAO,KAAK;;AAEf;;AC3FD,MAAM,QAAQ,GAAG,WAAW;AAC5B,MAAM,YAAY,GAAG,EAAE;AAEjB,MAAO,YAAa,SAAQ,UAAU,CAAA;AAA5C,IAAA,WAAA,GAAA;;AAGS,QAAA,IAAA,CAAA,eAAe,GAAkB,IAAI,OAAO,EAAE;QAI9C,IAAA,CAAA,uBAAuB,GAAG,KAAK;AAE5B,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,IAAI,KAAI;YAC7B,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;YACtD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EACvB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAC5B,MAAM;gBACL,EAAE;gBACF,IAAI;AACJ,gBAAA,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI;gBACvD,GAAG,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,eAAe;sBAC1C,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;sBAC/B,IAAI;gBACR,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;AAChD,gBAAA,KAAK,EAAE;AACL,oBAAA,QAAQ,EAAE;AACX;AACF,aAAA,CAAC,CAAC;AAEH,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;YAEzB,OAAO;AACL,gBAAA,WAAW,EAAE,oBAAoB;AACjC,gBAAA,UAAU,EAAE;oBACV,GAAG;oBACH,GAAG;AACH,oBAAA,KAAK,EAAE,GAAG;AACV,oBAAA,GAAG,EAAE,GAAG;AACR,oBAAA,KAAK,EAAE,MAAM;AACb,oBAAA,SAAS,EAAE,OAAO;;AAElB,oBAAA,MAAM,EAAE,OAAO;;;;;;AAMf,oBAAA,eAAe,EAAE,KAAK;AACtB,oBAAA,YAAY,EAAE,KAAK;AACnB,oBAAA,OAAO,EAAE;AACP,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,QAAQ,EAAE,CAAC,CAAM,EAAE,OAA0B,KAAK,CAAA,qBAAA,EAAwB,OAAO,CAAC,KAAK,CAAA,MAAA;AACxF,qBAAA;AACD,oBAAA,KAAK,EAAE,MAAM;;;AAGb,oBAAA,OAAO,EAAE,QAAQ,GAAG,IAAI;AACxB,oBAAA,OAAO,EAAE,QAAQ,GAAG,EAAE;;AAEvB,iBAAA;gBACD,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,YAAY,EAAE,CAAC,QAAQ,KAAI;AACzB,oBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;;;;;;oBAQ3B,UAAU,CAAC,MAAK;AACd,wBAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;qBACpC,EAAE,IAAI,CAAC;;aAEX;AACH,SAAC;;IAED,eAAe,CAAC,UAAU,EAAE,KAAK,EAAA;AAC/B,QAAA,QAAQ;;cAEE,UAAU,CAAA;;6BAEK,KAAK,CAAA;AAC7B,IAAA,CAAA;;IAGH,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAACC,GAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAElD,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE;AAClC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE;AAChC,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE;QAC7B,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC;;IAGlD,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAACC,GAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAElD,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE;AAClC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE;AAChC,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE;QAC7B,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC;;IAGlD,WAAW,GAAA;QACT,OAAO;YACL,GAAG,IAAI,CAAC;iBACL,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK;iBAC3B,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC;YAC5B,GAAG,IAAI,CAAC;iBACL,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG;iBACvB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG;SACxB;;AAEJ;;ACzHD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACEM,MAAO,QAAS,SAAQ,YAAY,CAAA;IACjC,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,eAAe;oBAClB,IAAI,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;wBAC5D,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;;oBAE5D;AACF,gBAAA,KAAK,gBAAgB;AACnB,oBAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,OAAO;AAC3C,oBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;oBACjC;AACF,gBAAA,KAAK,eAAe;AAClB,oBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;oBAChC;AAEF,gBAAA;AACE,oBAAA,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,IAAI,CAAC;oBACpD;;AAEN,SAAC,CAAC;;AAEL;;ACrBK,MAAO,qBAAsB,SAAQ,YAAY,CAAA;AAAvD,IAAA,WAAA,GAAA;;AACU,QAAA,IAAA,CAAA,aAAa,GAAiB,IAAI,OAAO,EAAE;AA8EnD,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,IAAI,KAAI;AACxB;;AAEE;AACF,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC9B,gBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;AAClD,gBAAA,IAAI,CAAC,IAAI,CAAC,EAAE;AACV,oBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;AACnC,qBAAA;oBACL,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;iBAEnC;gBACL,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC;;AAErC,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnD,SAAC;AAED,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,cAAc,KAAI;AACjC;;;;;;;AAOE;AACF,YAAA,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC5C,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE;gBAC/C,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,EAAE;;AAEjD,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAC3D,gBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;AAChE,gBAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;;iBAClD;AACL,gBAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;AAErD,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnD,SAAC;;IAlHM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AAC/D,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;AACnC,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;;AAEV,gBAAA,KAAK,8BAA8B;AACjC,oBAAA,IAAI,OAAO,KAAK,IAAI,EAAE;wBACpB;;AAEF,oBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;AAChC,oBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;oBAC5B;;AAEF,gBAAA,KAAK,+BAA+B;AAClC,oBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;AACvE,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;oBAChC;;AAEF,gBAAA,KAAK,8BAA8B;AACjC,oBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;oBAChC;AACF,gBAAA;AACE,oBAAA,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,IAAI,CAAC;oBACpD;;AAEN,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;gBACV,KAAK,qCAAqC;oBACxC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;oBACxD;gBACF,KAAK,mCAAmC;oBACtC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;oBACxD;gBACF,KAAK,sCAAsC;;oBAEzC;AACF,gBAAA,KAAK,2BAA2B;AAC9B,oBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;oBAC3B;AACF,gBAAA,KAAK,yBAAyB;AAC5B,oBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACxD,wBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;4BACvD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,CACtC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CACtD;;AAEL,qBAAC,CAAC;oBACF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;oBAChD;AACF,gBAAA,KAAK,+BAA+B;AAClC,oBAAA,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,EAAE;AACjC,oBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,EAAE;oBAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;oBAChD;AACF,gBAAA,KAAK,2BAA2B;oBAAE;AAChC,wBAAA,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU;wBACrC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AAC3C,4BAAA,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AACnE,gCAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;;;6BAElD;4BACL,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;;wBAErD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;;oBAChD;AACF,gBAAA;oBACE;;AAEN,SAAC,CAAC;;AA0CL;;ACxHK,MAAO,sBAAuB,SAAQ,YAAY,CAAA;IAC/C,MAAM,GAAA;;;AAGd;;ACJK,MAAO,uBAAwB,SAAQ,YAAY,CAAA;IAChD,MAAM,GAAA;QACX,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACpC,YAAA,QAAQ,KAAK,CAAC,IAAI;AAChB,gBAAA,KAAK,iCAAiC;oBACpC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;oBACtC;AACF,gBAAA;oBACE;;AAEN,SAAC,CAAC;AACF;;AAEM;;AAET;;ACfK,MAAO,oBAAqB,SAAQ,YAAY,CAAA;IAC7C,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,4BAA4B;AAC/B,oBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;oBAChC;AAEF,gBAAA;oBACE;;AAEN,SAAC,CAAC;;AAEL;;ACbK,MAAO,aAAc,SAAQ,YAAY,CAAA;IACtC,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,qBAAqB;AACxB,oBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;oBAChC;AACF,gBAAA;AACE,oBAAA,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC;oBACpC;;AAEN,SAAC,CAAC;AACF;;;;;AAKE;;AAEL;;ACnBK,MAAO,iBAAkB,SAAQ,YAAY,CAAA;IAC1C,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;AAChD,YAAA,IAAI,IAAI,KAAK,yBAAyB,EAAE;AACtC,gBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;AAC/B,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC;;AAEjC,SAAC,CAAC;;AAEL;;ACTK,MAAO,iBAAkB,SAAQ,YAAY,CAAA;IAC1C,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;AAChD,YAAA,IAAI,IAAI,KAAK,yBAAyB,EAAE;AACtC,gBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;;AAEpC,SAAC,CAAC;;AAEL;;ACLK,MAAO,QAAS,SAAQ,YAAY,CAAA;AAA1C,IAAA,WAAA,GAAA;;AAGU,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,aAAa,EAAE;QAElC,IAAA,CAAA,YAAY,GAAG,KAAK;QAoEpB,IAAA,CAAA,oBAAoB,GAAG,MAAK;YAClC,IAAI,CAAC,UAAU,CAAC;AACb,iBAAA,IAAI,CACH,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,EACxB,KAAK,EAAE,EACP,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAClC,CAAC,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,KAAI;gBACzB,UAAU,CAAC,MAAK;oBACd,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,0BAA0B,CAAgB;oBACnF,MAAM,YAAY,GAAG,QAAQ,CAAC,sBAAsB,CAAC,2BAA2B,CAAC;AACjF,oBAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC;0BAClC,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;0BACpC,IAAI;oBACR,IAAI,gBAAgB,EAAE;wBACpB,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAgB;AACtE,wBAAA,MAAM,aAAa,GAAG,SAAS,CAAC,qBAAqB,EAAE;AACvD,wBAAA,MAAM,cAAc,GAAI,MAAiB,GAAG,aAAa,CAAC,GAAG;AAC7D,wBAAA,YAAY,CAAC,KAAK,CAAC,YAAY,GAAG,QAAQ;wBAC1C,gBAAgB,CAAC,cAAc,EAAE;AACjC,wBAAA,SAAS,CAAC,SAAS,IAAI,cAAc;AACrC,wBAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AACrB,wBAAA,YAAY,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK;;iBAE1C,EAAE,GAAG,CAAC;AACT,aAAC,CAAC;AACN,SAAC;QAEO,IAAA,CAAA,kBAAkB,GAAG,MAAK;YAChC,UAAU,CAAC,MAAK;gBACd,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC;gBAC9D,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,oCAAoC,CAAgB;gBAC5F,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;oBAC5C,QAAQ,CAAC,cAAc,EAAE;AACzB,oBAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;oBACrB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;wBAChC,IAAI,CAAC,kBAAkB,EAAE;;;AAG/B,aAAC,CAAC;AACJ,SAAC;AAEO,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,IAAI,KAAI;AAC9B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAC7C,YAAA,QACE,QAAQ,CAAC,GAAG,IAAI;mBACb,QAAQ,CAAC,IAAI,IAAI;AACjB,mBAAA,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,YAAY;AAC/E,mBAAA,QAAQ,CAAC,KAAK,KAAK,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC;AAEpF,SAAC;;IAnHM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,eAAe;AAClB,oBAAA,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE;wBAC/B,UAAU,CAAC,MAAK;4BACd,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;AACjC,4BAAA,IAAI,IAAI,CAAC,YAAY,EAAE;gCACrB,IAAI,CAAC,oBAAoB,EAAE;;AAE/B,yBAAC,CAAC;;oBAEJ;AACF,gBAAA;oBACE;;AAEN,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,6BAA6B;AAChC,oBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC9B;AACF,gBAAA,KAAK,qCAAqC;oBAAE;AAC1C,wBAAA,IAAI,OAAO,CAAC,WAAW,EAAE;4BACvB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC;;wBAEhD,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;AACxD,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,wBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;;oBAChC;AACF,gBAAA,KAAK,+BAA+B;;AAElC,oBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAC1B,wBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;AAC9B,wBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;AAClC,wBAAA,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;wBACjC,IAAI,CAAC,kBAAkB,EAAE;;oBACzB;AACJ,gBAAA,KAAK,2BAA2B;oBAC9B,IAAI,CAAC,UAAU,CAAC;yBACb,IAAI,CACH,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,EACxB,KAAK,EAAE,CACR,CAAC,SAAS,CAAC,MAAK;wBACf,IAAI,CAAC,kBAAkB,EAAE;AAC3B,qBAAC,CAAC;oBACJ;AACF,gBAAA,KAAK,+BAA+B;oBAAE;AACpC,wBAAA,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO;AAC1B,wBAAA,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,EAAE;AACjD,wBAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;wBAC1E,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;;oBACtC;AACF,gBAAA,KAAK,+BAA+B;AAClC,oBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;AAC9B,oBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;AAClC,oBAAA,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;oBACjC,IAAI,CAAC,kBAAkB,EAAE;oBACzB;AACF,gBAAA;oBACE;;AAEN,SAAC,CAAC;;AAqDL;;AC9HK,MAAO,kBAAmB,SAAQ,YAAY,CAAA;IAC3C,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;AAChD,YAAA,IAAI,IAAI,KAAK,0BAA0B,EAAE;AACvC,gBAAA,IAAI,OAAO,KAAK,QAAQ,EAAE;AACxB,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;;qBACnB;AACL,oBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,oBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;;;AAGtC,SAAC,CAAC;;AAEL;;ACZK,MAAO,aAAc,SAAQ,YAAY,CAAA;IAGtC,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;AAChD,YAAA,IAAI,IAAI,KAAK,qBAAqB,EAAE;AAClC,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;;AAC5B,iBAAA,IAAI,IAAI,KAAK,sBAAsB,EAAE;AAC1C,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;;AAE9B,SAAC,CAAC;;AAEL;;ACZK,MAAO,gBAAiB,SAAQ,YAAY,CAAA;IAGzC,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;AAChD,YAAA,IAAI,OAAO,KAAK,eAAe,EAAE;AAC/B,gBAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;;iBACzB;;AAEL,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;;AAE/C,SAAC,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;AACvC,YAAA,IAAI,IAAI,KAAK,+BAA+B,EAAE;AAC5C,gBAAA,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,KAAK;;AAEtC,YAAA,IAAI,IAAI,KAAK,sCAAsC,EAAE;AACnD,gBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;;AAEpC,SAAC,CAAC;;AAEL;;ACtBK,MAAO,wBAAyB,SAAQ,YAAY,CAAA;IAGjD,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,kCAAkC;AACrC,oBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;oBACjC;AACF,gBAAA,KAAK,kCAAkC;AACrC,oBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;oBAC1B;AACF,gBAAA;oBACE;;AAEN,SAAC,CAAC;;AAEL;;ACjBK,MAAO,gBAAiB,SAAQ,YAAY,CAAA;IAGzC,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;;AAEhD,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;AAC7C,SAAC,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;AACvC,YAAA,IAAI,IAAI,KAAK,sCAAsC,EAAE;AACnD,gBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;;AAEpC,SAAC,CAAC;;AAEL;;AChBK,MAAO,oBAAqB,SAAQ,YAAY,CAAA;IAC7C,MAAM,GAAA;;;AAGd;;ACFK,MAAO,iBAAkB,SAAQ,YAAY,CAAA;AAAnD,IAAA,WAAA,GAAA;;AACS,QAAA,IAAA,CAAA,qBAAqB,GAAiB,IAAI,OAAO,EAAE;AAEnD,QAAA,IAAA,CAAA,qBAAqB,GAAiB,IAAI,OAAO,EAAE;;IAEnD,MAAM,GAAA;;AAEX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,sBAAsB;oBAAE;;AAE3B,wBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE;4BACtC;;wBAEF,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY;AAC5D,wBAAA,IAAI,KAAK,KAAK,aAAa,EAAE;4BAC3B;;wBAEF,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACxD,wBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE;;AAGlC,wBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC;;AAGtC,wBAAA,IAAI,OAAO,KAAK,UAAU,EAAE;4BAC1B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;;;6BAE7C;AACL,4BAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;;;oBAG1C;AAEF,gBAAA,KAAK,4BAA4B;AAC/B,oBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC;oBACpC;AAEF,gBAAA;oBACE;;AAEN,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;AAChD,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AAC3E,gBAAA,IAAI,CAAC,UAAU,CAAC,4BAA4B,CAAC,OAAO,CAAC;AACrD,gBAAA,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE;;AAE7C,SAAC,CAAC;;AAGF,QAAA,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YACzD,QAAQ,IAAI;AACV,gBAAA,KAAK,uBAAuB;AAC1B,oBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,OAAO,EAAE;AAClF,wBAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;wBAClC,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE;AAExE,wBAAA,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACjC,4BAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC;AAC3E,4BAAA,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE;;AAEhC,4BAAA,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC;AAC9C,yBAAC,CAAC;;oBAEJ;AAEF,gBAAA;oBACE;;AAEN,SAAC,CAAC;;AAGF,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAC7B,YAAY,CAAC,GAAG,CAAC,CAClB,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;YACtB,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;AACxD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC;AAE/E,YAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI,EAAG,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;;YAE3F,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,CAAC;;AAG3C,YAAA,WAAW,CAAC,IAAI,GAAG,CAAC;;AAGpB,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC1B,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,IAAI,EAAE,EAAE;gBACR,WAAW;AACZ,aAAA,CAAC;AACJ,SAAC,CAAC;;AAEL;;AChGK,MAAO,kBAAmB,SAAQ,YAAY,CAAA;IAC3C,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,2BAA2B;oBAC9B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;oBACxC;AACF,gBAAA,KAAK,0BAA0B;AAC7B,oBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,wBAAA,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;;AAE9B,4BAAA,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC;;AAChC,6BAAA,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;4BACrC,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;;AAEhD,4BAAA,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU;gCAAE;4BAC7C,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,WAAW;gCAAE;AAClE,4BAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;;;AAE5B,yBAAA;AACL,wBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;;oBAElC;AACF,gBAAA;AACE,oBAAA,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,IAAI,CAAC;oBACrE;;AAEN,SAAC,CAAC;;;;AAIL;;AC/BK,MAAO,OAAQ,SAAQ,YAAY,CAAA;IAChC,MAAM,GAAA;QACX,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;YACvC,QAAQ,IAAI;AACV,gBAAA,KAAK,oBAAoB;oBACvB,IAAI,CAAC,eAAe,EAAE;oBACtB;AAEF,gBAAA;oBACE;;AAEN,SAAC,CAAC;;IAGI,eAAe,GAAA;QACrB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC;AACpC,SAAC,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;AAC1C,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AAC/B,SAAC,CAAC;;AAEL;;ACtBK,MAAO,YAAa,SAAQ,YAAY,CAAA;IACrC,MAAM,GAAA;QACX,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;YACvC,QAAQ,IAAI;AACV,gBAAA,KAAK,yBAAyB;oBAC5B,IAAI,CAAC,gBAAgB,EAAE;oBACvB;AAEF,gBAAA,KAAK,4BAA4B;oBAC/B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;oBACrC;AAEF,gBAAA,KAAK,2BAA2B;oBAC9B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;oBACpC;AAEF,gBAAA;oBACE;;AAEN,SAAC,CAAC;;IAGI,gBAAgB,GAAA;QACtB,IAAI,CAAC,UAAU,CAAC;aACb,IAAI,CACH,KAAK,EAAE;aAER,SAAS,CAAC,MAAK;YACd,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU;YAC7C,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,KAAI;AAChC,gBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,KAAK,EAAE,CAAC;gBACrD,IAAI,OAAO,EAAE;AACX,oBAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,KAAK;oBAClC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI;AAClC,oBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;wBACtB,EAAE;wBACF,KAAK;wBACL,QAAQ;AACT,qBAAA,CAAC;;qBACG;AACL,oBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACtB,wBAAA,EAAE,EAAE;AACL,qBAAA,CAAC;;AAEN,aAAC,CAAC;AACJ,SAAC,CAAC;;AAEP;;AChDK,MAAO,iBAAkB,SAAQ,YAAY,CAAA;AAAnD,IAAA,WAAA,GAAA;;AAoCS,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,MAAM,KAAI;YAC/B,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU;YACpD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;AAEnF,YAAA,IAAI,WAAW,IAAI,YAAY,EAAE;gBAC/B;;AAEF;;;AAGE;AACF,YAAA,IACE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,GAAG;mBAC7D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,KAAK,KAAK,EACjD;gBACA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI;AAC3C,gBAAA,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;AAC5B,oBAAA,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW;AACzC,iBAAA,CAAC;;AAEN,SAAC;;IAvDM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;gBACV,KAAK,0BAA0B;oBAC7B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;oBACxC;AACF,gBAAA;oBACE,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC;oBACxE;;AAEN,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,yBAAyB;;AAE5B,oBAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC;AACnC,oBAAA,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;AAC5B,wBAAA,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW;AACzC,qBAAA,CAAC;oBACF;AACF,gBAAA,KAAK,6BAA6B;oBAAE;;AAElC,wBAAA,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO;AACvB,wBAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC;;oBACvC;AACF,gBAAA,KAAK,uBAAuB;AAC1B,oBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;oBAC1B;AACF,gBAAA;oBACE;;AAEN,SAAC,CAAC;;AAwBL;;ACzDK,MAAO,uBAAwB,SAAQ,YAAY,CAAA;IAChD,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,+BAA+B;AAClC,oBAAA,IAAI,OAAO,KAAK,8BAA8B,EAAE;AAC9C,wBAAA,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC;;oBAExC;AACF,gBAAA;AACE,oBAAA,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC;oBAC9C;;AAEN,SAAC,CAAC;;AAEL;;ACfK,MAAO,eAAgB,SAAQ,YAAY,CAAA;AAAjD,IAAA,WAAA,GAAA;;QACS,IAAA,CAAA,WAAW,GAAG,KAAK;AAmE1B,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,EAAE,KAAI;AACvB;;;AAGE;AACF,YAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACvD,SAAC;AAED,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,CAAC,KAAI;AACnB;;;AAGE;YACF,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;gBACvC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;iBAChE;gBACL,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;;YAEjC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACpC,SAAC;;IArFM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,uBAAuB;oBAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE;AAChD,wBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;;oBAE/B,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC9F;AACF,gBAAA,KAAK,uBAAuB;AAAE,oBAAA;AAC5B,wBAAA,IAAI,iBAAiB;;wBAErB,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACtC,4BAAA,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;;6BACrI;AACL,4BAAA,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS;;AAE/C,wBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;4BACtB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC;AACtD,4BAAA,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ;AACnC,yBAAA,CAAC;;oBACF;AACF,gBAAA;oBACE,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC;oBAC5E;;AAEN,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,uBAAuB;oBAAE;AAC5B,wBAAA,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO;AACtB,wBAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;wBACxB,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC/E,IAAI,WAAW,EAAE;AACf,4BAAA,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;;6BACpC;AACL,4BAAA,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC;;;oBAEhE;AACF,gBAAA,KAAK,yBAAyB;AAC5B,oBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;oBAC7B;AACF,gBAAA,KAAK,2BAA2B;AAC9B,oBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC/C,wBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;;oBAE/B;AACF,gBAAA,KAAK,6BAA6B;AAChC,oBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;oBAC1B;AACF,gBAAA,KAAK,+BAA+B;AAClC,oBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,EAAE;AAC7B,oBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;oBAC/B;AACF,gBAAA,KAAK,uCAAuC;AAC5C,gBAAA,KAAK,qCAAqC;AACxC,oBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC;oBACpC;AACF,gBAAA;oBACE;;AAEN,SAAC,CAAC;;AAwBL;;ACzFK,MAAO,SAAU,SAAQ,YAAY,CAAA;IAClC,MAAM,GAAA;AACX;;;;;;;;AAQE;;AAEL;;ACXK,MAAO,cAAe,SAAQ,YAAY,CAAA;AAAhD,IAAA,WAAA,GAAA;;AACU,QAAA,IAAA,CAAA,SAAS,GAAU,EAAE,CAAA;AA6B7B,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,OAAO,KAAI;AACvB;;;AAGE;;AAEF,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI,EAAG,IAAI,CAAC,EAAE;gBAAE,CAAC,CAAC,OAAO,EAAE;aAAG,EAAE,CAAC;AAC1D,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAEnB,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACpB,gBAAA,MAAM,MAAM,GAAY,QAAQ,CAAC,cAAc,CAAC,CAAA,EAAA,EAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA,CAAE,CAAC;gBACnE,IAAI,MAAM,EAAE;AACV,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI;oBACjB,KAAK,CAAC,MAAM,EAAE;AACZ,wBAAA,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAA,UAAA,EAAa,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA,CAAE,CAAC;AAC5D,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACvB,wBAAA,KAAK,EAAE,IAAI;AACX,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,KAAK,EAAE,yBAAyB;AAChC,wBAAA,SAAS,EAAE,KAAK;AAChB,wBAAA,KAAK,EAAE,GAAG;AACV,wBAAA,cAAc,EAAE,GAAG;AACpB,qBAAA,CAAC,CACH;;AAEL,aAAC,CAAC;AACJ,SAAC;;IAtDM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,uBAAuB;AAC1B,oBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;oBACjC;AACF,gBAAA;AACE,oBAAA,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,IAAI,CAAC;oBACjE;;AAEN,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,sBAAsB;AAC3B,gBAAA,KAAK,wBAAwB;AAC7B,gBAAA,KAAK,wBAAwB;oBAC3B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAChC,UAAU,CAAC,MAAK;wBACd,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACnC,qBAAC,CAAC;oBACF;AACF,gBAAA;oBACE;;AAEN,SAAC,CAAC;;AA+BL;;AC7DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA,MAAM,YAAY,GAAG,CAAC,EACpB,IAAI,EACJ,QAAQ,EACR,WAAW,EACX,KAAK,GAMN,KAAI;AACH,IAAA,MAAM,KAAK,GAAG;AACZ,QAAA,IAAI,IAAI,qBAAqB;AAC7B,QAAA,QAAQ,IAAI,WAAW;KACxB;IACD,IAAI,KAAK,EAAE;AACT,QAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;;AAEnB,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,CAAC;;ACVK,MAAO,oBAAqB,SAAQ,gBAAgB,CAAA;AAA1D,IAAA,WAAA,GAAA;;QAWS,IAAA,CAAA,QAAQ,GAAG,mBAAmB;AAI7B,QAAA,IAAA,CAAA,kBAAkB,GAAG;AAC3B,YAAA,KAAK,EAAE,mBAAmB;AAC1B,YAAA,EAAE,EAAE,qBAAqB;AACzB,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,EAAE,EAAE,oBAAoB;AACxB,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,KAAK,EAAE,oBAAoB;AAC3B,YAAA,EAAE,EAAE,oBAAoB;AACxB,YAAA,MAAM,EAAE,0BAA0B;SACnC;QAED,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAiB;YACnD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;AAC9B,SAAA,CAAC;AAEF,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;QAEvD,IAAA,CAAA,QAAQ,GAAG,CAAC;;QAGZ,IAAA,CAAA,YAAY,GAAG,EAAE;QAEjB,IAAA,CAAA,aAAa,GAAG,CAAC;;AAKjB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC;;QAG1C,IAAA,CAAA,OAAO,GAAG,IAAI;;AAEd,IAAA,MAAM,CAAC,OAAO,EAAA;AACZ,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa;AAC1C,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa;AAC1C,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS;QAClC,IAAI,CAAC,iBAAiB,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;;QAG5C,IAAI,CAAC,YAAY,EAAE;;AAGrB;;AAEG;IACH,cAAc,GAAA;;AAEZ,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;AACjB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC;;AAEtB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;;IAGrB,QAAQ,CAAC,MAAM,GAAG,KAAK,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AACpD,QAAA,MAAM,MAAM,GAAwB;YAClC,EAAE,EAAE,IAAI,CAAC,YAAY;AACrB,YAAA,cAAc,EAAE;gBACd,KAAK,EAAE,IAAI,CAAC,QAAQ;gBACpB,MAAM,EAAE,IAAI,CAAC,aAAa;AAC3B;SACF;;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;AACzD,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,oBAAoB,IAAI,IAAI;QACrD,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,CAAC,OAAO,GAAG,OAAO;;AAE1B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE;YAC3C,OAAO,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YACxC;SACD,CAAC,CAAC,IAAI,CACL,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACjB,GAAG,CAAC,CAAC,CAAwB,MAAM;;AAEjC,YAAA,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAoB,MAAM;gBAC/C,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE;oBACpC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS;oBAClD,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;iBACzC,CAAC;gBACF,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE;oBACrC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS;oBACxD,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;iBAC3C,CAAC;gBACF,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,sBAAsB,GAAG,oCAAoC,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA,CAAE;gBAC9H,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS;gBACjD,KAAK,EAAE,IAAI,CAAC,UAAU;AACtB,gBAAA,MAAM,EAAE;oBACN,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI;AACpE,iBAAA;gBACD,cAAc,EAAE,IAAI,CAAC;AACtB,aAAA,CAAC,CAAC;YACH,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,CAAC,CAAC,KAAK;AACf,SAAA,CAAC,CAAC,CACJ,CAAC,SAAS,CAAC;AACV,YAAA,IAAI,EAAE,CAAC,IAAI,KAAI;AACb,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;oBACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE;AAC3C,wBAAA,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS;AAC9C,wBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AACjC,qBAAA,CAAC,CAAC;;AAEL,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE;AACxE,oBAAA,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS;AACnD,oBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;AACtC,iBAAA,CAAC,GAAG,EAAE,CAAC;AACR,gBAAA,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ;gBACnC,MAAM,cAAc,GAAG,CAAC;sBACpB,CAAC,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ;AAClC,sBAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AACtB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC;AAC3C,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,MAAM,CACtD;aACF;AACD,YAAA,KAAK,EAAE,CAAC,CAAC,KAAI;AACX,gBAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChB,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;aAChC;AACF,SAAA,CAAC;;AAGJ;;;;;;;;AAQG;AACH,IAAA,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,IAAY,EAAA;AAChC,QAAA,IAAI,EAAE,IAAI,KAAK,EAAE;AACf,YAAA,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;AAChC,YAAA,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;AAC1E,YAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,QAAQ,GAAG,cAAc,GAAG,cAAc;AACpE,YAAA,OAAO,IAAI,QAAQ,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,SAAS,EAAE;;AACxC,QAAA,OAAO,SAAS;;IAGpB,aAAa,CAAC,OAAe,EAAE,OAA4C,EAAA;QACzE,IAAI,GAAG,GAAG,OAAO;AACjB,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE;YAChC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;YACzC,IAAI,OAAO,CAAC,IAAI,IAAI,GAAG,KAAK,OAAO,EAAE;AACnC,gBAAA,GAAG,IAAI,OAAO,CAAC,IAAI;;;AAGvB,QAAA,OAAO,GAAG;;AAGZ,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACvB,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AAC/B,SAAA,CAAC;;AAGJ;;;;;AAKG;AACH,IAAA,QAAQ,CAAC,cAAsB,EAAA;QAC7B,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAChD,YAAA,OAAO,EAAE;;QAEX,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;QACnD,IAAI,SAAS,EAAE;YACb,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE;YACpD,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;YACrD,IAAI,SAAS,EAAE;gBACb,OAAO,CAAA,GAAA,EAAM,SAAS,CAAA,CAAE;;;QAG5B,OAAO,CAAA,GAAA,EAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA,CAAE;;IAGzC,YAAY,GAAA;QAClB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;YAC9C,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;AACxC,YAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ;AACzD,YAAA,WAAW,EAAE,YAAY;AAC1B,SAAA,CAAC,CAAC;;AAEN;;ACxNK,MAAO,oBAAqB,SAAQ,YAAY,CAAA;IAG7C,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,2BAA2B;AAC9B,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/B,oBAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;oBAC1B,IAAI,CAAC,WAAW,EAAE;oBAClB;AAEF,gBAAA;AACE,oBAAA,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,IAAI,CAAC;oBACnD;;AAEN,SAAC,CAAC;;IAGJ,WAAW,GAAA;;QAET,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACvC,YAAA,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACpB,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/C,gBAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;;AAEpC,SAAC,CAAC;;AAEL;;AC1BM,MAAM,wBAAwB,GAAG;AACtC,IAAA,QAAQ,EAAE,sBAAsB;IAChC,OAAO,EAAE;AACR,KAAA;AACD,IAAA,QAAQ,EAAE,oBAAoB;AAC9B,IAAA,QAAQ,EAAE,oBAAoB;AAC9B,IAAA,kBAAkB,EAAE,EAAE;AACtB,IAAA,oBAAoB,EAAE,EAAE;AACxB,IAAA,OAAO,EAAE;;AAER,KAAA;;;ACAG,MAAO,2BAA4B,SAAQ,cAAc,CAAA;IAC7D,WAAA,CACU,aAAmC,EACnC,oBAAiD,EACjD,aAAmC,EACnC,KAAqB,EACrB,SAA2B,EAAA;QAEnC,KAAK,CAACC,wBAAM,CAAC;QANL,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,SAAS,GAAT,SAAS;;IAKT,WAAW,GAAA;QACnB,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B;;IAGH,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,EAAE;;IAGf,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,EAAE;;+GA1BP,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,mFCfxC,gkDAyCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD1Ba,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,gkDAAA,EAAA;;;AEVlC,MAAM,eAAe,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC;AAE/D,MAAM,MAAM,GAAG,CAAC,MAAa,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,QAAQ,CAAC,CAAC,MAAM;AAEvF,MAAM,UAAU,GAAG,CAAC,MAAa,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AAE3D,MAAM,OAAO,GAAG,CAAC,MAAa,EAAE,KAAK,KAAI;AACvC,IAAA,MAAM,WAAW,GAAG,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;AAChE,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,OAAO,CAAC,CAAC,KAAK;IAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AACnC,IAAA,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,KAAK;AACvD,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,MAAM,CAAC,CAAC,KAAK;AAC3D,IAAA,IAAI,QAAQ,GAAG,KAAK,CAAC,cAAc;AACnC,IAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC9B,QAAA,QAAQ,GAAG,KAAK,CAAC,cAAc;;IAEjC,OAAO,CAAA,SAAA,EAAY,QAAQ,CAAA,EAAG,EAAE,IAAI,IAAI,CAAA,EAAA,EAAK,KAAK,CAAA,IAAA,CAAM;AAC1D,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,MAAa,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,KAAI;IACtF,MAAM,IAAI,GAAG,EAAE;IACf;SACG,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,SAAS;SAC3C,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAI;QACjC,MAAM,OAAO,GAAG,EAAE;AAClB,QAAA,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE;AACrB,YAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AACrB,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,IAAA,EAAO,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA,KAAA,CAAO,CAAC;AACrD,YAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;;QAExB;AACG,aAAA,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAI;AAClB,YAAA,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE;AACrB,gBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;;AAE3D,YAAA,OAAO,IAAI;AACb,SAAC;aACA,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,cAAc,CAAC,QAAQ,CAAC,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;aACtG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM;YACxB,GAAG;YACH,KAAK;YACL,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,WAAW,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAC;AACtD,YAAA,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,WAAW,IAAI,GAAG,CAAA,CAAE,CAAC;AAC9E,SAAA,CAAC;AACD,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;aAChC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAI;AAC5B,YAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AACrB,YAAA,OAAO,CAAC,IAAI,CAAC,OAAO,KAAK,CAAA,KAAA,CAAO,CAAC;AACjC,YAAA,OAAO,CAAC,IAAI,CAAC,OAAO,KAAK,CAAA,KAAA,CAAO,CAAC;AACjC,YAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxB,SAAC,CAAC;AAEJ,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,CAAA,IAAA,EAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,KAAA,CAAO,CAAC;;AAE7C,KAAC,CAAC;AACJ,IAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI;AAC3C,CAAC;AAED,qBAAe;AACb,IAAA,SAAS,EAAE,CAAC,EACV,MAAM,EAAE,IAAI,EACZ,KAAK,EACL,MAAM,EACN,cAAc,EACd,IAAI,EACL,KAAI;QACH,MAAM,MAAM,GAAG,EAAE;AACjB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,EACZ,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAC1B,KAAI;;gBAEH,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACnC,oBAAA,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;AAClB,wBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;;AACrD,yBAAA,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;wBAC/D,MAAM,CAAC,IAAI,CAAC;AACV,4BAAA,GAAG,EAAE,KAAK;AACV,4BAAA,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK;AACtE,yBAAA,CAAC;;;;AAGC,qBAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACvC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;;AAE/B,aAAC,CAAC;;AAEJ,QAAA,OAAO;AACJ,aAAA,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC;aAC7C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM;YACxB,GAAG;YACH,KAAK;AACL,YAAA,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC;AAClC,YAAA,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAC,CAAC;AAChE,SAAA,CAAC;AACD,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;;CAEvC;;ACzFK,MAAO,gBAAiB,SAAQ,gBAAgB,CAAA;AAAtD,IAAA,WAAA,GAAA;;QAiBS,IAAA,CAAA,QAAQ,GAAG,eAAe;QAM1B,IAAA,CAAA,iBAAiB,GAAG,KAAK;AAMzB,QAAA,IAAA,CAAA,SAAS,GAAQ,EAAE,CAAC;AAMpB,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,CAAC;AAEhB,QAAA,IAAA,CAAA,QAAQ,GAAG,EAAE,CAAC;;AAGd,QAAA,IAAA,CAAA,WAAW,GAAG,EAAE,CAAC;QAOjB,IAAA,CAAA,YAAY,GAAG,EAAE;QAEjB,IAAA,CAAA,OAAO,GAAG,IAAI;QA+Cd,IAAA,CAAA,eAAe,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,OAAQ,KAAI;YAC9C,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC;;YAErC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,SAAC;AAED;;AAEG;AACH,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,UAAU,EAAE,QAAQ,KAAI;AACxC,YAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAAE;YAClC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACtD,YAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,aAAa,CAAC;AAC5C,gBAAA,IAAI,EAAE,MAAM;gBACZ,IAAI;gBACJ,WAAW;AACZ,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC;gBACrC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC;AACnD,gBAAA,WAAW,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC;AACnC,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,KAAK,EAAE;AACL,oBAAA,KAAK,EAAE,qBAAqB;AAC5B,oBAAA,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAClB,oBAAA,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ;AACvB,iBAAA;AACF,aAAA,CAAC;AACJ,SAAC;AAED;;AAEG;QACH,IAAA,CAAA,oBAAoB,GAAG,MAAK;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB;;AAEF,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,QAAQ;iBAC5E,IAAI,CAAC,KAAK,EAAE;AACZ,iBAAA,SAAS,CAAC;;AAET,gBAAA,IAAI,EAAE,CAAC,IAAI,KAAI;AACb,oBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;oBACtB,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE;;AAEtD,oBAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI;AAChC,oBAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI;;AAEnC,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC;AACvD,oBAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,aAAa,CAAC;AAC1C,wBAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;wBACvC,OAAO,EAAE,IAAI,CAAC,WAAW;wBACzB,MAAM,EAAE,IAAI,CAAC,aAAa;AAC1B,wBAAA,iBAAiB,EAAE;AACjB,4BAAA,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE;AAC3B,yBAAA;wBACD,IAAI,EAAE,WAAW,CAAC,IAAI;wBACtB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,wBAAA,UAAU,EAAE,IAAI;AACjB,qBAAA,CAAC;AACF,oBAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;iBAC7E;gBACD,KAAK,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC;AAC5B,aAAA,CAAC;AACN,SAAC;AAED,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,GAAG,KAAI;AACxB,YAAA,IAAI,CAAC,WAAW,GAAG,GAAG;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;AACnC,YAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,aAAa,CAAC;gBAC1C,OAAO,EAAE,IAAI,CAAC,WAAW;gBACzB,MAAM,EAAE,IAAI,CAAC,aAAa;AAC1B,gBAAA,iBAAiB,EAAE;AACjB,oBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE;AAC3B,iBAAA;gBACD,IAAI,EAAE,IAAI,CAAC,WAAW;gBACtB,IAAI,EAAE,IAAI,CAAC,QAAQ;AACnB,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,EAAE;AAC3C,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;;AAE5E,YAAA,MAAM,WAAW,GAAW;gBAC1B,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ;aAC5C;AACD,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACvB,UAAU,EAAE,IAAI,CAAC,KAAK;gBACtB,WAAW;AACX,gBAAA,mBAAmB,EAAE;AACtB,aAAA,CAAC;AACJ,SAAC;;AAvID,IAAA,MAAM,CAAC,EACL,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,GAC9E,EAAA;AACC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;AAC5D,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,aAAa,CAAC;YAC5C,MAAM,EAAE,IAAI,CAAC,aAAa;AAC3B,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QACzD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB;QAC1D,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,YAAY,CAAC,yBAAyB;;QAG5E,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC;;QAGnD,IAAI,CAAC,YAAY,EAAE;;QAGnB,IAAI,CAAC,cAAc,EAAE;;IAGvB,cAAc,GAAA;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC;AACvD,QAAA,KAAK,CAAC;AACH,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC;AAE7B,aAAA,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAI;;;;YAIvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAC3C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;AAEtE,SAAC,CAAC;;AA+FN,IAAA,aAAa,CAAC,IAAI,EAAA;AAChB;;AAEE;AACF,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW;QACjC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC9B,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAAE,gBAAA,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;;AACtE,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC;YAC/B,IAAI;YACJ,QAAQ;AACR,YAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE;AAChC,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,eAAe,CAAC,2BAA2B,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;AACvE,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC;;AAGzD;;;;;;;AAOG;AACH,IAAA,oBAAoB,CAAC,EAAE,EAAE,UAAkB,EAAE,QAAgB,EAAA;AAC3D,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,kBAAkB,EAAE;YACrD,OAAO,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACxC,YAAA,MAAM,EAAE;AACN,gBAAA,QAAQ,EAAE,EAAE;gBACZ,eAAe,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE;gBACjF,gBAAgB,EAAE,IAAI,CAAC;AACxB,aAAA;AACF,SAAA,CAAC,CAAC,IAAI;;QAEL,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,KAAI;YAC/B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC;gBAClD,MAAM;gBACN,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;gBACtC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxC,gBAAA,cAAc,EAAEP,GAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,kBAAkB,EAAE,EAAE,CAAC;AACnF,gBAAA,IAAI,EAAE;aACP,CAAC,CAAC,MAAM;SACV,CAAC,CACH;;AAGH;;AAEG;AACH,IAAA,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAA;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,EAAE,IAAI,GAAG,EAAE;AACb,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;AACvB,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC;;AAEvE,QAAA,IAAI,CAAC,SAAS,GAAG,aAAa;AAC9B,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC;;AAGjB,IAAA,WAAW,CAAC,GAAG,EAAA;AACb,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;AACtE,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG;QACrB,IAAI,CAAC,SAAS,GAAG;YACf,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE;AAC/B,YAAA,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;AAC3B,YAAA,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;SAC5B;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC;YACtC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC7C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ;AACxC,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,aAAa,CAAC;YAC1C,OAAO,EAAE,IAAI,CAAC,WAAW;YACzB,MAAM,EAAE,IAAI,CAAC,aAAa;YAC1B,IAAI,EAAE,IAAI,CAAC,WAAW;AACtB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,iBAAiB,EAAE;AACjB,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE;AAC3B,aAAA;AACD,YAAA,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,EAAE;YAC1C,IAAI,EAAE,IAAI,CAAC,QAAQ;AACpB,SAAA,CAAC;QACF,IAAI,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,CAAC,EAAO,KAAI;YAC9C,EAAE,CAAC,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG;AACnC,kBAAE,CAAA,EAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA,IAAA;AAC5B,kBAAE,GAAG,CAAC,KAAK;AACf,SAAC,CAAC;QACF,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAO,KAAI;YACtC,EAAE,CAAC,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG;AACnC,kBAAE,CAAA,EAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA,IAAA;AAC5B,kBAAE,GAAG,CAAC,KAAK;AACf,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;AAC5E,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;;AAE3D,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ;;;QAGpE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;;IAGlC,iBAAiB,GAAA;QACvB,OAAO;AACL,YAAA,IAAI,EAAE;gBACJ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc;gBAC9C,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,CAAA,CAAG;AACpB,gBAAA,IAAI,CAAC,WAAW;gBAChB,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,CAAA,CAAA,CAAG;aACxB,CAAC,IAAI,CAAC,EAAE,CAAC;AACV,YAAA,WAAW,EAAE;AACX,gBAAA,IAAI,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC;gBAC3B,IAAI,EAAE,IAAI,CAAC,QAAQ;AACpB,aAAA;SACF;;IAGI,cAAc,GAAA;QACnB,OAAO;YACL,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc;YAC9C,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,CAAA,CAAG;AACpB,YAAA,IAAI,CAAC,WAAW;AACjB,SAAA,CAAC,IAAI,CAAC,EAAE,CAAC;;IAGL,YAAY,GAAA;AACjB,QAAA,QAAQ,IAAI,CAAC,WAAW;AACtB,YAAA,KAAK,iBAAiB;AACpB,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB;AAC5C,YAAA,KAAK,mBAAmB;AACtB,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAsB;AAC/C,YAAA;AACE,gBAAA,OAAO,CAAC;;;AAIP,IAAA,SAAS,CAAC,QAAQ,EAAA;AACvB,QAAA,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,QAAQ;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/C,QAAA,IAAI,cAAc,GAAGA,GAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,kBAAkB,EAAE,EAAE,CAAC;AACxF,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;AACnC,YAAA,cAAc,GAAGA,GAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,uBAAuB,EAAE,EAAE,CAAC;;QAG3F,OAAO,cAAc,CAAC,SAAS,CAAC;YAC9B,MAAM;YACN,KAAK;YACL,MAAM;YACN,cAAc;AACd,YAAA,IAAI,EAAE;AACP,SAAA,CAAC;;IAGI,oBAAoB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,WAAW,KAAK;AAC1B,cAAE,IAAI,CAAC,UAAU,CAAC;AAClB,cAAE,IAAI,CAAC,UAAU,CAAC,YAAY;;AAGlC;;;;;;AAMG;IACK,YAAY,CAAC,KAAa,EAAE,IAAY,EAAA;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;;AAGzB,IAAA,YAAY,CAAC,KAAc,EAAA;QACjC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;YAC9C,KAAK;YACL,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;AACxC,YAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ;AACzD,YAAA,WAAW,EAAE,QAAQ;AACtB,SAAA,CAAC,CAAC;;AAEN;;AC9XK,MAAO,gBAAiB,SAAQ,YAAY,CAAA;AAAlD,IAAA,WAAA,GAAA;;AACU,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,OAAO,EAAE;AAuEzC,QAAA,IAAA,CAAA,oBAAoB,GAAG,CAAC,IAAI,KAAI;AACtC,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI;AAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,CAAC;AAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,mBAAmB,CAAC;;AAEtD,SAAC;;IApEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,uBAAuB;AAC1B,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/B,oBAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa;AAC1C,oBAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AAC1B,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE;AACnD,oBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;AAClE,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAE/B,oBAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;oBACrB;AAEF,gBAAA,KAAK,0BAA0B;AAC7B,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;oBACtB;AAEF,gBAAA,KAAK,2BAA2B;oBAC9B,IAAI,OAAO,EAAE;AACX,wBAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC;;oBAE1C;AAEF,gBAAA;oBACE;;AAEN,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,qBAAqB;oBACxB,IAAI,OAAO,EAAE;AACX,wBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,OAAO;AACrC,wBAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC;;oBAE1C;AACF,gBAAA,KAAK,0BAA0B;oBAAE;AAC/B,wBAAA,MAAM,OAAO,GAAG;AACd,4BAAA,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW;AACpC,4BAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;AACrC,4BAAA,iBAAiB,EAAE;AACjB,gCAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU;AAC7C,6BAAA;AACD,4BAAA,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW;AACjC,4BAAA,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ;AAC9B,4BAAA,UAAU,EAAE,IAAI;yBACjB;wBACD,IAAI,CAAC,UAAU,CAAC,eAAe,CAC7B,mBAAmB,EACnB,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,EAAE,EAClD,OAAO,CACR;;oBACD;gBACF,KAAK,4BAA4B;AAC/B,oBAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC;oBACxC;AACF,gBAAA;oBACE;;AAEN,SAAC,CAAC;;AAUJ;;AAEG;AACK,IAAA,WAAW,CAAC,YAAY,GAAG,EAAE,EAAE,WAAW,GAAG,KAAK,EAAA;;AAExD,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CACzB,GAAG,CAAC,CAAC,MAAW,MAAM;YACpB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC;AACd,SAAA,CAAC,CAAC,CACJ,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAI;YAC7B,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI;;YAEjC,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,KAAK,IAAI,EAAE;AACxC,gBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI;AAClC,gBAAA,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE;;AAE1C,SAAC,CAAC;;QAEF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;;AAEvC,YAAA,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACpB,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAClE,oBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACrD,wBAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;oBAEpD;;;gBAGF,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7E,qBAAA,SAAS,CAAC,CAAC,GAAG,KAAI;oBACjB,IAAI,GAAG,EAAE;AACP,wBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC;;AAEhC,wBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC;wBAClC,IAAI,YAAY,EAAE;AAChB,4BAAA,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;;;AAGhD,iBAAC,CAAC;;iBACC;AACL,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;;;AAG5B,YAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AACvB,SAAC,CAAC;;AAEL;;AC7HM,MAAM,oBAAoB,GAAG;AAClC,IAAA,QAAQ,EAAE,kBAAkB;AAC5B,IAAA,OAAO,EAAE;AACP,QAAA,EAAE,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE,IAAI,EAAE;QAC5C,EAAE,EAAE,EAAE,2BAA2B,EAAE;QACnC,EAAE,EAAE,EAAE,mBAAmB,EAAE;QAC3B,EAAE,EAAE,EAAE,iBAAiB,EAAE;QACzB,EAAE,EAAE,EAAE,qBAAqB,EAAE;QAC7B,EAAE,EAAE,EAAE,gBAAgB,EAAE;AACxB,QAAA;AACE,YAAA,EAAE,EAAE,qBAAqB;AACzB,YAAA,UAAU,EAAE,iBAAiB;AAC7B,YAAA,YAAY,EAAE,iBAAiB;AAChC,SAAA;AACF,KAAA;AACD,IAAA,QAAQ,EAAE,gBAAgB;AAC1B,IAAA,QAAQ,EAAE,gBAAgB;AAC1B,IAAA,kBAAkB,EAAE,EAAE;AACtB,IAAA,oBAAoB,EAAE,EAAE;AACxB,IAAA,OAAO,EAAE;;AAER,KAAA;;;AC3BH;AACA;AACA;MA0Da,yBAAyB,CAAA;AALtC,IAAA,WAAA,GAAA;AAuBE;;AAEG;QACH,IAAA,CAAA,YAAY,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,KAAK,CAAC,IAAI,EAAE;YAC5C,OAAO;AACP,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,KAAK,EAAE,yBAAyB;AAChC,YAAA,QAAQ,EAAE,QAAQ,CAAC,IAAI;AACxB,SAAA,CAAC;;AAGF,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,MAAkB,EAAE,KAAiB,KAAI;YACpD,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC;YAC5C,MAAM,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC;AAC3C,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACrD,OAAO,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;AACjD,SAAC;AAED,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,IAAI;;QAEpB,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;eACnF,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3F;AAED;;;AAGG;QACH,IAAA,CAAA,oBAAoB,GAAG,MAAK;YAC1B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;AAC3B,gBAAA,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;gBACvE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ;AAChD,gBAAA,IAAI,WAAW,IAAI,UAAU,EAAE;AAC7B,oBAAA,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,oBAAA,OAAO,WAAW,IAAI,UAAU,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC1D,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC/C,wBAAA,SAAS,CAAC,SAAS,GAAG,qCAAqC;AAC3D,wBAAA,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,wBAAA,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC;wBACvC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,+BAA+B,CAAC;AACvD,wBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;wBACrD,CAAC,IAAI,CAAC;;AAEN,wBAAA,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;;;;AAI5E,SAAC;AACF;IA1DC,kBAAkB,GAAA;QAChB,IAAI,CAAC,oBAAoB,EAAE;;AAG7B,IAAA,OAAO,CAAC,OAAO,EAAA;QACb,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;;+GAflB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAKT,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAET,UAAU,6BCnExC,ypBAeA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD6Ca,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,ypBAAA,EAAA;8BAKvB,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBAEwC,IAAI,EAAA,CAAA;sBAA5C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAEG,KAAK,EAAA,CAAA;sBAA9C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;;AEnDpC,MAAO,uBAAwB,SAAQ,cAAc,CAAA;AACzD,IAAA,WAAA,CACU,MAAc,EACd,KAAqB,EACrB,aAAmC,EACnC,oBAAiD,EACjD,aAAmC,EACnC,SAA2B,EAC3B,YAAmB,EAAA;QAE3B,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAID,oBAAM,CAAC;QARzD,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,YAAY,GAAZ,YAAY;;AAKtB;;;;AAIG;IACO,WAAW,GAAA;QACnB,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;AACjC,YAAA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;SACnC;;IAGH,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,EAAE;;IAGf,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,EAAE;;+GAnCP,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,+EChBpC,67fA8QA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,yBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD9Pa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,67fAAA,EAAA;;;AEb9B,qBAAe;AACb,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,MAAM,EAAE;AACN,QAAA;AACE,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,IAAI,EAAE,OAAO;AACd,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,IAAI,EAAE;AACJ,gBAAA;AACE,oBAAA,KAAK,EAAE,GAAG;AACV,oBAAA,KAAK,EAAE,qCAAqC;AAC7C,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,aAAa;AACjB,YAAA,IAAI,EAAE,OAAO;AACd,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,KAAK,EAAE,OAAO;AACf,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,IAAI,EAAE,OAAO;AACd,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,CAAC,aAAa,CAAC;AAC5B,SAAA;AACF,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA;AACE,YAAA,MAAM,EAAE;AACN,gBAAA;AACE,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,WAAW,EAAE,+BAA+B;AAC5C,oBAAA,YAAY,EAAE;AACZ,wBAAA,KAAK,EAAE,GAAG;AACV,wBAAA,QAAQ,EAAE,CAAC;AACX,wBAAA,QAAQ,EAAE;AACR,4BAAA;AACE,gCAAA,GAAG,EAAE,cAAc;AACnB,gCAAA,QAAQ,EAAE,MAAM;AACjB,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,OAAO,EAAE,WAAW;AACpB,oBAAA,YAAY,EAAE;AACZ,wBAAA,QAAQ,EAAE;AACR,4BAAA;AACE,gCAAA,GAAG,EAAE,kCAAkC;AACvC,gCAAA,QAAQ,EAAE,GAAG;AACd,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,OAAO,EAAE,aAAa;AACtB,oBAAA,YAAY,EAAE;AACZ,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,QAAQ,EAAE;AACR,4BAAA;AACE,gCAAA,GAAG,EAAE,mBAAmB;AACxB,gCAAA,QAAQ,EAAE,GAAG;AACd,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,OAAO,EAAE,eAAe;AACzB,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA;AACE,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,OAAO,EAAE,cAAc;AACvB,oBAAA,YAAY,EAAE;AACZ,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,MAAM,EAAE,cAAc;AACtB,wBAAA,QAAQ,EAAE;AACR,4BAAA;AACE,gCAAA,GAAG,EAAE,wBAAwB;AAC7B,gCAAA,QAAQ,EAAE,GAAG;AACd,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,OAAO,EAAE,eAAe;AACxB,oBAAA,WAAW,EAAE,cAAc;AAC3B,oBAAA,YAAY,EAAE;AACZ,wBAAA,KAAK,EAAE,GAAG;AACV,wBAAA,QAAQ,EAAE,CAAC;AACX,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,MAAM,EAAE,cAAc;AACtB,wBAAA,QAAQ,EAAE;AACR,4BAAA;AACE,gCAAA,GAAG,EAAE,OAAO;AACZ,gCAAA,QAAQ,EAAE,MAAM;AACjB,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,OAAO,EAAE,cAAc;AACvB,oBAAA,UAAU,EAAE;AACV,wBAAA,KAAK,EAAE,iEAAiE;AACzE,qBAAA;AACD,oBAAA,YAAY,EAAE;AACZ,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,KAAK,EAAE,EAAE;AACT,wBAAA,UAAU,EAAE;AACV,4BAAA,KAAK,EAAE,EAAE;AACT,4BAAA,MAAM,EAAE;AACT,yBAAA;AACD,wBAAA,QAAQ,EAAE;AACR,4BAAA;AACE,gCAAA,GAAG,EAAE,oBAAoB;AACzB,gCAAA,QAAQ,EAAE,GAAG;AACd,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,KAAK,EAAE;YACL,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,YAAY;YACjB,SAAS,EAAE,KAAK;AACjB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA;AACE,gBAAA,EAAE,EAAE,aAAa;AACjB,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,KAAK,EAAE,GAAG;AACX,aAAA;AACF,SAAA;AACF,KAAA;IACD,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;CAC/B;;MCzJqB,YAAY,CAAA;aACzB,IAAA,CAAA,KAAK,GAAG,CAAH,CAAK;AAYjB,IAAA,WAAA,CAAY,MAAM,EAAA;QAFR,IAAA,CAAA,OAAO,GAAG,KAAK;AAalB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAK,EAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AAElD,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE;AAErB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI;AAEzB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM;QAE7B,IAAA,CAAA,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO;QAEtC,IAAA,CAAA,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU;QAE5C,IAAA,CAAA,eAAe,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY;AAEhD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,IAAI,UAAU;AAEjE,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI;AAEzD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,IAAI,IAAI;QAE7D,IAAA,CAAA,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI;AAEhC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM;AAI7B,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,KAAc,KAAI;AACrC,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACtB,SAAC;AAEM,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,OAAyB,KAAI,EAAG,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,EAAE;AAxCtE,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QACpB,IAAI,CAAC,MAAM,EAAE;AAEb,QAAA,YAAY,CAAC,KAAK,IAAI,CAAC;;AA+BlB,IAAA,KAAK,GAAA,EAAK,OAAO,IAAI,CAAC;IAQrB,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,EAAE,GAAG,CAAA,YAAA,EAAe,IAAI,CAAC,OAAO,EAAE,CAAA,CAAA,EAAI,YAAY,CAAC,KAAK,EAAE;;;;AC/D7D,MAAO,oBAAqB,SAAQ,YAAY,CAAA;IAC1C,SAAS,GAAA;AACjB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AAEjC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,MAAM;AACjD,YAAA,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;YAC9B,KAAK;AACL,YAAA,OAAO,EAAE;gBACP,OAAO;AACP,gBAAA,MAAM,EAAE,gBAAgB;gBACxB,KAAK,EAAE,CAAA,EAAG,KAAK,CAAA,CAAE;AAClB,aAAA;YACD,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA,EAAG,KAAK,CAAA,CAAE,EAAE;AACtC,SAAA,CAAC,CAAC;;AAGE,IAAA,SAAS,CAAC,UAAU,EAAA;QACzB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;QAE5C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;YAC7B,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACzF,gBAAA,MAAM,CAAC,OAAO,GAAG,IAAI;;iBAChB,IAAI,UAAU,KAAK,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;AAC5C,gBAAA,MAAM,CAAC,OAAO,GAAG,IAAI;;iBAChB;AACL,gBAAA,MAAM,CAAC,OAAO,GAAG,KAAK;;AAE1B,SAAC,CAAC;;AAEL;;AC9BD,MAAM,aAAa,GAAG,IAAI;AAEpB,MAAO,gBAAiB,SAAQ,YAAY,CAAA;IAGtC,SAAS,GAAA;AACjB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;QACjC,MAAM,OAAO,GAAG,EAAE;QAClB,IAAI,cAAc,GAAG,CAAC;QAEtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EACjB,KAAK,EACL,OAAO,EACP,MAAM,EACN,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,UAAU,EACpB,KAAI;YACH,IAAI,MAAM,EAAE;gBACV;;YAEF,cAAc,IAAI,CAAC;AAEnB,YAAA,IAAI,cAAc,GAAG,aAAa,EAAE;gBAClC;;;AAIF,YAAA,MAAM,KAAK,GAAG,CAAA,EAAG,QAAQ,EAAE;AAC3B,YAAA,MAAM,OAAO,GAAG,UAAU,IAAI,EAAE;YAEhC,MAAM,OAAO,GAAG,EAAE;AAClB,YAAA,IAAI,OAAO,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;;YACpD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;;AACvE,YAAA,IAAI,KAAK,KAAK,aAAa,EAAE;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;;YAE1D,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE;AAChB,gBAAA,IAAI,EAAE,KAAK;gBACX,OAAO;AACP,gBAAA,OAAO,EAAE;oBACP,OAAO;AACP,oBAAA,MAAM,EAAE,YAAY;oBACpB,KAAK;AACN,iBAAA;AACD,gBAAA,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;AAC1B,gBAAA,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,gBAAA,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;AAC1B,aAAA,CAAC;AACJ,SAAC,CAAC;;QAGF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,SAAS,EAAE;AACb,gBAAA,SAAS,CAAC,OAAO,GAAG,iBAAiB;;iBAChC;gBACL,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU;gBAC7C,MAAM,OAAO,GAAG,YAAY;gBAC5B,OAAO,CAAC,IAAI,CAAC;AACX,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,EAAE,EAAE,OAAO;AACX,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,OAAO,EAAE,iBAAiB;oBAC1B,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;AACzC,iBAAA,CAAC;;;aAEC,IAAI,SAAS,EAAE;AACpB,YAAA,SAAS,CAAC,OAAO,GAAG,2BAA2B;;AAGjD,QAAA,OAAO,OAAO;;AAGT,IAAA,SAAS,CAAC,UAAU,EAAA;QACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC7B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YAC/D,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAC7D,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,KAAK,WAAW,CAAC;;iBAC7D,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9C,gBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;;YAE3B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACpC,SAAC,CAAC;;IAGI,SAAS,CAAC,UAAU,EAAE,KAAK,EAAA;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAE5B,QAAA,QACE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3D,gBAAC,UAAU,KAAK,KAAK,CAAC;;IAItB,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;AAEvB;;ACnGK,MAAO,kBAAmB,SAAQ,YAAY,CAAA;IACxC,SAAS,GAAA;AACjB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;QAEjC,OAAO;AACL,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE;AAChB,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AACxB,YAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,OAAO,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;;gBAExD,KAAK,EAAE,CAAA,EAAG,KAAK,CAAA,CAAE;gBACjB,KAAK;AACN,aAAA,CAAC,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,EAAE;gBACP,OAAO;AACP,gBAAA,MAAM,EAAE,cAAc;AACvB,aAAA;YACD,KAAK,EAAE,EAAE,OAAO,EAAE;SACnB;;AAGI,IAAA,SAAS,CAAC,UAAU,EAAA;QACzB,IAAI,CAAC,MAAM,CAAC;aACT,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,KAAK,UAAU;AAC9C,aAAA,OAAO,CAAC,CAAC,MAAM,KAAI,EAAG,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC;;AAEtD;;AC1BK,MAAO,gBAAiB,SAAQ,YAAY,CAAA;IACtC,SAAS,GAAA;AACjB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,QAAA,MAAM,OAAO,GAAG;YACd,OAAO;AACP,YAAA,MAAM,EAAE,YAAY;SACrB;QAED,OAAO;AACL,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE;AAChB,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AACxB,YAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC9B,YAAA,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;AACpC,YAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;AACtB,YAAA,YAAY,EAAE;AACZ,gBAAA,GAAG,OAAO;AACV,gBAAA,OAAO,EAAE,OAAO;AACjB,aAAA;AACD,YAAA,YAAY,EAAE;AACZ,gBAAA,GAAG,OAAO;AACV,gBAAA,OAAO,EAAE,OAAO;AACjB,aAAA;AACD,YAAA,WAAW,EAAE;AACX,gBAAA,GAAG,OAAO;AACV,gBAAA,OAAO,EAAE,MAAM;AAChB,aAAA;YACD,KAAK,EAAE,EAAE,OAAO,EAAE;SACnB;;AAGI,IAAA,SAAS,CAAC,UAAU,EAAA;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,IAAI;;AAEjE;;ACrCD;AAgBA,MAAM,UAAU,GAAG;AACjB,IAAA,QAAQ,EAAE,oBAAoB;AAC9B,IAAA,IAAI,EAAE,gBAAgB;AACtB,IAAA,IAAI,EAAE,gBAAgB;AACtB,IAAA,MAAM,EAAE,kBAAkB;CAC3B;AAED,MAAM,WAAW,GAAG;AAClB,IAAA,GAAG,EAAE,mBAAmB;AACxB,IAAA,GAAG,EAAE,wBAAwB;AAC7B,IAAA,GAAG,EAAE,qBAAqB;AAC1B,IAAA,IAAI,EAAE,4BAA4B;AAClC,IAAA,IAAI,EAAE,yBAAyB;AAC/B,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,IAAI,EAAE,iBAAiB;CACxB;MAoCY,aAAa,CAAA;aACjB,IAAA,CAAA,WAAW,GAAQ,IAAR,CAAa;IAkB/B,WAAA,CAAY,EAAU,EAAE,MAAsB,EAAA;QAdtC,IAAA,CAAA,QAAQ,GAAa,EAAE;QAEvB,IAAA,CAAA,OAAO,GAAY,EAAE;QAErB,IAAA,CAAA,OAAO,GAAmB,EAAE;AAQ5B,QAAA,IAAA,CAAA,SAAS,GAAmB,IAAI,OAAO,EAAE;AAqB1C,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG;AAEtB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ;AAEhC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO;AAE9B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO;AAE9B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO;AAE9B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,IAAI,CAAC,WAAW;QAEtC,IAAA,CAAA,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM;AAErC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS;AAElC,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;AAlC3D,QAAA,IAAI,CAAC,GAAG,GAAG,EAAE;AACb,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;QAErB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,cAAc,EAAE;;;AAIrB,QAAA,IAAI,aAAa,CAAC,WAAW,EAAE;AAC7B,YAAA,IAAI,CAAC,4BAA4B,CAAC,aAAa,CAAC,WAAW,CAAC;AAC5D,YAAA,aAAa,CAAC,WAAW,GAAG,IAAI;;;AAsB7B,IAAA,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,MAAgB,EAAA;QAClD,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;AACzD,QAAA,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;YACjC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,EAAE;AACzC,gBAAA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC;;AACvD,iBAAA,IACL,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;mBACvB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EACrC;AACA,gBAAA,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;;iBACnB;AACL,gBAAA,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI;;AAE/D,SAAC,CAAC;;IAGG,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,4BAA4B,CAAC,EAAE,EAAE,IAAI,CAAC;QAC3C,IAAI,CAAC,YAAY,EAAE;;AAGd,IAAA,4BAA4B,CAAC,WAAW,EAAE,QAAQ,GAAG,KAAK,EAAA;QAC/D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,KAAI;YAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;AACpD,YAAA,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC;AAC7B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,UAAU;AAEzE,YAAA,IAAI,UAAU,IAAI,CAAC,QAAQ,EAAE;gBAC3B;;AAGF,YAAA,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACjC,gBAAA,IAAI,MAAM,CAAC,OAAO,EAAE;AAClB,oBAAA,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;;qBACvC;AACL,oBAAA,MAAM,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI;;AAEhC,aAAC,CAAC;AACJ,SAAC,CAAC;;IAGG,uBAAuB,GAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAI;YAC3C,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;AAClD,SAAC,CAAC;;AAGG,IAAA,YAAY,CAAC,MAAM,EAAA;QACxB,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,cAAc,EAAE;;AAGhB,IAAA,gBAAgB,CAAC,UAAU,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU;;IAGxB,WAAW,CAAC,OAAO,EAAE,IAAI,EAAA;AAC9B,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC;AAC3E,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC1B,YAAA,MAAM,KAAK,CAAC,CAAA,eAAA,EAAkB,OAAO,CAAA,iBAAA,CAAmB,CAAC;;AAG3D,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI,EAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;;IAGpD,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,OAAO,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC;;IAGtD,gBAAgB,GAAA;QACrB,OAAO;AACL,YAAA,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE;YAChC,IAAI,EAAE,IAAI,CAAC,KAAK;AAChB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,OAAO,EAAE,IAAI,CAAC;iBACX,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,KAAK,UAAU;AAChD,iBAAA,GAAG,CAAC,CAAC,EACJ,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EACrC,MAAM,UAAU,GAAG;AAClB,gBAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC3B,aAAA,GAAG;gBACF,OAAO,EAAE,KAAK,EAAE;AACjB,aAAA,CAAC,CAAC;SACN;;IAGI,kBAAkB,GAAA;QACvB,OAAO,IAAI,CAAC;aACT,MAAM,CAAC,CAAC,MAAM,MACb,MAAM,CAAC,OAAO,KAAK;AAChB,eAAA,CAACG,OAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAC3B;AACA,aAAA,GAAG,CAAC,CAAC,EACJ,OAAO,EAAE,KAAK,EAAE,QAAQ,EACzB,MAAM;YACL,OAAO,EAAE,KAAK,EAAE;AACjB,SAAA,CAAC,CAAC;;AAGA,IAAA,oBAAoB,CAAC,OAAO,EAAA;QACjC,MAAM,WAAW,GAAQ,EAAE;AAC3B,QAAA,OAAO,CAAC,OAAO,CACb,CAAC,MAAM,KAAI;AACT,YAAA,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;kBACpD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG;AACvB,kBAAE,MAAM,CAAC,KAAK;AAClB,SAAC,CACF;AAED,QAAA,OAAO,WAAW;;AAGb,IAAA,mBAAmB,CAAC,OAAe,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC;;AAG9D,IAAA,iBAAiB,CAAC,OAAe,EAAA;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,UAAU,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;;IAGnE,YAAY,CAAC,OAAO,EAAE,IAAI,EAAA;QAC/B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;;AAGxC,IAAA,YAAY,CAAC,MAAM,EAAA;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,EAAE,KAAK,MAAM,CAAC;QAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5D,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI;QAE5B,MAAM,SAAS,GAAG,EAAE;AACpB,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACvB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9D,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE;AACpC,YAAA,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM;YAExB,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnC,SAAC,CAAC;;AAGF,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;AAG9D,QAAA,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;AAE9B,QAAA,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE;AACtC,YAAA,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM;AAChE,YAAA,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC;;QAEjC,WAAW,CAAC,MAAM,EAAE;;AAGf,IAAA,sBAAsB,CAAC,OAAO,EAAA;QACnC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO;;AAGnC,IAAA,wBAAwB,CAAC,SAAS,EAAA;QACvC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS;;AAG3C,IAAA,mBAAmB,CAAC,IAAI,EAAA;QAC7B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI;;AAGjC,IAAA,mBAAmB,CAAC,MAAM,EAAA;QAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM;;AAG5B,IAAA,kBAAkB,CAAC,KAAK,EAAA;QAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK;;IAGzB,YAAY,GAAA;;;IAIZ,WAAW,CAAC,SAAS,EAAE,IAAI,EAAA;;AAEjC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACnB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAI;YACtC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAI;AACrC,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf;;gBAEF,IAAI,QAAQ,GAAGZ,GAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;AACpC,gBAAA,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;oBACtE,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;AACpD,oBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAI;AAC7D,wBAAA,IAAI,OAAO,KAAK,aAAa,EAAE;4BAC7B,QAAQ,GAAG,SAAS;;AAExB,qBAAC,CAAC;;AAEJ,gBAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrB,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;AACb,qBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE;AAChC,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC;;qBACrD;AACL,oBAAA,OAAO,CAAC,IAAI,CAAC,sBAAsB,QAAQ,CAAA,cAAA,CAAgB,CAAC;;AAEhE,aAAC,CAAC;AACJ,SAAC,CAAC;;IAGI,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAA;AACvC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC3B,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,gBAAA,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC;AAChC,gBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;oBACtB,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;wBAC5B,OAAO,GAAG,IAAI;;AAElB,iBAAC,CAAC;AACF,gBAAA,OAAO,EAAE,OAAO,CAAC;;AAEnB,YAAA,OAAO,EAAE,KAAK,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;;AAEnD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,OAAO,EACL,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAChD;;QAEH,OAAO,EAAE,KAAK,IAAI,KAAK,KAAK,QAAQ,CAAC;;IAG/B,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAA;QAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,OAAO,EAAE,KAAK,IAAI,KAAK,GAAG,QAAQ,CAAC;;AAErC,QAAA,OAAO,KAAK;;IAGN,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAA;QACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,OAAO,EAAE,KAAK,IAAI,KAAK,GAAG,QAAQ,CAAC;;AAErC,QAAA,OAAO,KAAK;;IAGN,0BAA0B,CAAC,KAAK,EAAE,QAAQ,EAAA;QAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,OAAO,EAAE,KAAK,IAAI,KAAK,IAAI,QAAQ,CAAC;;AAEtC,QAAA,OAAO,KAAK;;IAGN,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAA;QAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,OAAO,EAAE,KAAK,IAAI,KAAK,IAAI,QAAQ,CAAC;;AAEtC,QAAA,OAAO,KAAK;;IAGN,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAA;QACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,OAAO,EAAE,KAAK,IAAI,KAAK,KAAK,QAAQ,CAAC;;AAEvC,QAAA,OAAO,KAAK;;IAGN,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAA;AACrC,QAAA,IACE;eACG,OAAO,KAAK,KAAK;AACjB,eAAA,OAAO,QAAQ,KAAK,QAAQ,EAC/B;AACA,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE;AACvC,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,EAAE;AAExC,YAAA,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;;AAE3C,QAAA,OAAO,KAAK;;IAGN,WAAW,GAAA;QACjB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACpC,YAAA,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACjD,GAAG,KAAK,CAAC,YAAY;gBACrB,OAAO,EAAE,KAAK,CAAC,OAAO;AACtB,gBAAA,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI;AAC9C,aAAA,CAAC,CAAC;AACL,SAAC,CAAC;;IAGI,UAAU,GAAA;QAChB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;;IAG5B,QAAQ,GAAA;QACd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;;IAGxB,cAAc,GAAA;QACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU;;IAGpC,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,YAAY,KAAI;YAC1D,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,UAAU,KAAI;gBACvD,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC;gBAC/C,IAAI,CAAC,UAAU,EAAE;oBACf,MAAM,KAAK,CAAC,CAAA,WAAA,EAAc,WAAW,CAAC,IAAI,CAAA,cAAA,CAAgB,CAAC;;AAG7D,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,UAAU,CAAC,EAAE,GAAG,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAC7D;AACH,aAAC,CAAC;AACJ,SAAC,CAAC;;IAGI,cAAc,GAAA;QACpB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;;IAGlE,iBAAiB,GAAA;QACvB,MAAM,OAAO,GAAY,EAAE;QAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACzB,YAAA,MAAM,WAAW,GAAG,EAAE,GAAG,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE;gBACpB,OAAO,WAAW,CAAC,IAAI;;YAEzB,OAAO,WAAW,CAAC,aAAa;;YAGhC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;AACnC,gBAAA,WAAW,CAAC;AACT,qBAAA,MAAM,CAAC,CAAC,QAAQ,KAAK,OAAO,QAAQ,CAAC,UAAU,KAAK,WAAW;AAC/D,qBAAA,OAAO,CAAC,CAAC,QAAQ,KAAI;oBACpB,OAAO,QAAQ,CAAC,UAAU;AAC5B,iBAAC,CAAC;;AAEN,YAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AAC3B,SAAC,CAAC;AACF,QAAA,OAAO,OAAO;;;;AC1bZ,MAAO,gBAAiB,SAAQ,gBAAgB,CAAA;AAAtD,IAAA,WAAA,GAAA;;QACS,IAAA,CAAA,QAAQ,GAAG,kBAAkB;QAE7B,IAAA,CAAA,QAAQ,GAAG,eAAe;QAE1B,IAAA,CAAA,UAAU,GAAG,SAAS;QAEtB,IAAA,CAAA,eAAe,GAAG,SAAS;QAE3B,IAAA,CAAA,YAAY,GAAQa,cAAY;QAEhC,IAAA,CAAA,cAAc,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAE1B,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,OAAO,EAAE;QAkB5C,IAAA,CAAA,kBAAkB,GAAG,IAAI;;QASzB,IAAA,CAAA,WAAW,GAAQ,CAAC;;QAGpB,IAAA,CAAA,QAAQ,GAAG,EAAE;QAEb,IAAA,CAAA,eAAe,GAAG,KAAK;QAEvB,IAAA,CAAA,cAAc,GAAG,IAAI;QAErB,IAAA,CAAA,cAAc,GAAG,KAAK;;AAGtB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;;QAG5C,IAAA,CAAA,OAAO,GAAG,YAAY;;QAGtB,IAAA,CAAA,cAAc,GAAG,KAAK;QAItB,IAAA,CAAA,YAAY,GAAG,YAAY;;AAG3B,QAAA,IAAA,CAAA,cAAc,GAAQ;AAC3B,YAAA;AACE,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,KAAK,EAAE,uBAAuB;AAC9B,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,QAAQ,EAAE;aACX,EAAE;AACD,gBAAA,KAAK,EAAE,gBAAgB;AACvB,gBAAA,KAAK,EAAE,yBAAyB;AAChC,gBAAA,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,IAAI;aACf,EAAE;AACD,gBAAA,KAAK,EAAE,iBAAiB;AACxB,gBAAA,KAAK,EAAE,yBAAyB;AAChC,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,QAAQ,EAAE;AACX;SACF;QAwFD,IAAA,CAAA,cAAc,GAAG,MAAK;YACpB,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACzD,YAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,aAAa,CAAC;AAC5C,gBAAA,IAAI,EAAE,MAAM;gBACZ,IAAI;gBACJ,WAAW;AACZ,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC;AACrC,gBAAA,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;gBACtD,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,KAAK,EAAE;AACL,oBAAA,KAAK,EAAE,qBAAqB;oBAC5B,IAAI,EAAE,IAAI,CAAC,cAAc;oBACzB,MAAM,EAAE,IAAI,CAAC,QAAQ;AACtB,iBAAA;AACF,aAAA,CAAC;AACJ,SAAC;AAoBM,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ;;IA3H7C,MAAM,CAAC,EACL,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GACzD,EAAA;AACC,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;QACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;QACtD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC;AACvD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ;AAC9D,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK;;;QAI5D,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACpC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAEnC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAGnD,QAAA,IAAI,aAAa,CAAC,WAAW,EAAE;YAC7B,IAAI,CAAC,WAAW,CAAC,4BAA4B,CAAC,aAAa,CAAC,WAAW,CAAC;AACxE,YAAA,aAAa,CAAC,WAAW,GAAG,IAAI;;QAElC,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC;;QAG1D,IAAI,CAAC,YAAY,EAAE;;IAGrB,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,aAAa,CAAC,WAAW,GAAG,IAAI;;IAGlC,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,YAAA,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACpE,YAAA,IAAI,CAAC,WAAW,CAAC,uBAAuB,EAAE;;;AAI9C;;;AAGG;AACH,IAAA,eAAe,CAAC,OAAe,EAAA;AAC7B,QAAA,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC9D,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjE,IAAI,IAAI,GAAG,EAAE;;QAEb,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACrC,YAAA,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE;AAC5B,gBAAA,MAAM,CAAC,QAAQ,GAAG,IAAI;AACtB,gBAAA,IAAI,GAAG,MAAM,CAAC,IAAI;;iBACb;AACL,gBAAA,MAAM,CAAC,QAAQ,GAAG,KAAK;;AAE3B,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,OAAO,CAAC;AAChD,QAAA,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,SAAS,CAAC;AACpD,QAAA,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC;;AAG5C,IAAA,gBAAgB,CAAC,IAAI,EAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;;AAGjD,IAAA,kBAAkB,CAAC,OAAO,EAAA;QACxB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;AACzC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;;AAGrC,IAAA,sBAAsB,CAAC,OAAO,EAAA;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;AACzC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;;IAsBrC,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;;AAG3B,IAAA,oBAAoB,CAAC,OAAO,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;;AAGtB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC;;AAGzC,IAAA,QAAQ,CAAC,OAAO,EAAA;AACd,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC;AAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;;AAKtE,IAAA,cAAc,CAAC,MAAM,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC3C,MAAM;YACN,OAAO,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACzC,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,KAAI;AAC9B,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU;YAC5B,IAAI,iBAAiB,GAAG,CAAC;;AAEzB,YAAA,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;gBACvB,iBAAiB,GAAG,CAAC;;AAChB,iBAAA,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;gBAChC,iBAAiB,GAAG,CAAC;;AAEvB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAC/D,iBAAiB,CAClB;AACD,YAAA,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC;AAE7C,YAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,aAAa,CAAC;AAC1C,gBAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,KAAK,gBAAgB,GAAG,SAAS,GAAG,QAAQ;gBAClE,MAAM,EAAE,IAAI,CAAC,aAAa;gBAC1B,IAAI,EAAE,IAAI,CAAC,WAAW;AACtB,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,EAAE;AAC7C,gBAAA,iBAAiB,EAAE;AACjB,oBAAA,KAAK,EAAE,UAAU;AAClB,iBAAA;gBACD,IAAI,EAAE,IAAI,CAAC,QAAQ;AACpB,aAAA,CAAC;YACF,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;SACrF,CAAC,CACH;;AAGK,IAAA,aAAa,CAAC,MAAM,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC3C,MAAM;YACN,OAAO,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;SACzC,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAI;;YAEjB,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;;AAE5D,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;;AAE7B,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC;SACtC,CAAC,CACH;;IAGI,gBAAgB,GAAA;QACrB,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE;AACzD,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,gBAAgB,EAAE;gBAChB,UAAU,EAAE,CAAC;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,KAAK,gBAAgB,CAAC;AAC/C,gBAAA,GAAG,aAAa;AACjB,aAAA;SACF;;QAED,iBAAiB,CAAC,WAAW,EAAE;AAC/B,QAAA,iBAAiB,CAAC,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,CAAC;;AAE7D,QAAA,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAExC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC7C,QAAA,OAAO,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;;AAGlC,IAAA,iBAAiB,CAAC,IAAI,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC;;AAGlB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI;QAExB,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;AACjD,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI;AACpC,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU;QAC5B,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,KAAK;AAEhD,QAAA,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC;AAE/C,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC;;AAGT,IAAA,gBAAgB,CAAC,MAAM,EAAA;QAC7B;AACG,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,aAAA,OAAO,CAAC,CAAC,CAAC,KAAI;YACb,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AAC1B,gBAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK;gBAC1B,QAAQ,CAAC,KAAK,IACZ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACnB,uBAAA,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAC5D;AACH,aAAC,CAAC;AACJ,SAAC,CAAC;;AAGE,IAAA,iBAAiB,CAAC,MAAM,EAAA;QAC9B;aACG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,aAAa;AACpC,aAAA,OAAO,CAAC,CAAC,CAAC,KAAI;YACb,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;gBAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC9C,IAAI,MAAM,EAAE;oBACV,QAAQ,CAAC,OAAO,GAAG;wBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,wBAAA,OAAO,EAAE,CAAA,MAAA,EAAS,MAAM,CAAC,YAAY,CAAC,CAAA,CAAE;qBACzC;;AAEL,aAAC,CAAC;AACJ,SAAC,CAAC;;AAGE,IAAA,eAAe,CAAC,KAAK,EAAA;QAC3B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,EAAE,CAAC,CAAC;;IAGzD,qBAAqB,GAAA;;AAE3B,QAAA,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE;YACzB;;QAEF,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;AAE3C,QAAA,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC,SAAS,CAAC,MAAK;AACf,YAAA,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW;YAC1C,MAAM,YAAY,GAAG,QAAQ,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAgB;AACvF,YAAA,MAAM,gBAAgB,GAAG,YAAY,GAAG,YAAY,CAAC,SAAS,GAAG,CAAC;AAClE,YAAA,IAAI,CAAC,eAAe,GAAG,gBAAgB,IAAI,eAAe;AAC5D,SAAC,CAAC;;IAGI,oBAAoB,GAAA;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE;AACzD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC;AAEhF,QAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI,EAAG,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;;AAG3F,QAAA,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AAClC,QAAA,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AAChD,QAAA,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW;AACnC,QAAA,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ;AAEjC,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc;AACzD,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAgB,EAAE;YACtC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,eAAe;;QAGxD,OAAO;YACL,IAAI;YACJ,WAAW;SACZ;;IAGK,YAAY,GAAA;QAClB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;YAC9C,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;AACxC,YAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ;YACzD,WAAW,EAAE,IAAI,CAAC,eAAe;AAClC,SAAA,CAAC,CAAC;;AAEN;;AC3YD,mBAAe;AACb,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,MAAM,EAAE;AACN,QAAA;AACE,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,IAAI,EAAE;AACJ,gBAAA;AACE,oBAAA,KAAK,EAAE,GAAG;AACV,oBAAA,KAAK,EAAE;AACR;AACF;AACF,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA;AACE,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,CAAC,aAAa;AAC3B,SAAA;AACF,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA;AACE,YAAA,MAAM,EAAE;AACN,gBAAA;AACE,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,WAAW,EAAE,+BAA+B;AAC5C,oBAAA,YAAY,EAAE;AACZ,wBAAA,KAAK,EAAE,GAAG;AACV,wBAAA,QAAQ,EAAE,CAAC;AACX,wBAAA,QAAQ,EAAE;AACR,4BAAA;AACE,gCAAA,GAAG,EAAE,cAAc;AACnB,gCAAA,QAAQ,EAAE;AACX;AACF;AACF;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,OAAO,EAAE,WAAW;AACpB,oBAAA,YAAY,EAAE;AACZ,wBAAA,QAAQ,EAAE;AACR,4BAAA;AACE,gCAAA,GAAG,EAAE,kCAAkC;AACvC,gCAAA,QAAQ,EAAE;AACX;AACF;AACF;AACF,iBAAA;AACF;AACF,SAAA;AACD,QAAA;AACE,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA;AACE,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,OAAO,EAAE,cAAc;AACvB,oBAAA,YAAY,EAAE;AACZ,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,MAAM,EAAE,cAAc;AACtB,wBAAA,QAAQ,EAAE;AACR,4BAAA;AACE,gCAAA,GAAG,EAAE,wBAAwB;AAC7B,gCAAA,QAAQ,EAAE;AACX;AACF;AACF;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,OAAO,EAAE,eAAe;AACxB,oBAAA,YAAY,EAAE;AACZ,wBAAA,KAAK,EAAE,GAAG;AACV,wBAAA,QAAQ,EAAE,CAAC;AACX,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,MAAM,EAAE,cAAc;AACtB,wBAAA,QAAQ,EAAE;AACR,4BAAA;AACE,gCAAA,GAAG,EAAE,OAAO;AACZ,gCAAA,QAAQ,EAAE;AACX;AACF;AACF;AACF,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,OAAO,EAAE,cAAc;AACvB,oBAAA,UAAU,EAAE;AACV,wBAAA,KAAK,EAAE;AACR,qBAAA;AACD,oBAAA,YAAY,EAAE;AACZ,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,KAAK,EAAE,EAAE;AACT,wBAAA,UAAU,EAAE;AACV,4BAAA,KAAK,EAAE,EAAE;AACT,4BAAA,MAAM,EAAE;AACT,yBAAA;AACD,wBAAA,QAAQ,EAAE;AACR,4BAAA;AACE,gCAAA,GAAG,EAAE,oBAAoB;AACzB,gCAAA,QAAQ,EAAE;AACX;AACF;AACF;AACF;AACF;AACF,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,GAAG,EAAE,QAAQ;YACb,SAAS,EAAE,MAAM;AAClB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA;AACE,gBAAA,EAAE,EAAE,aAAa;AACjB,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,KAAK,EAAE;AACR;AACF;AACF,KAAA;IACD,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;CAC7B;;ACzIK,MAAO,iBAAkB,SAAQ,gBAAgB,CAAA;AAAvD,IAAA,WAAA,GAAA;;QACS,IAAA,CAAA,QAAQ,GAAG,mBAAmB;QAE9B,IAAA,CAAA,QAAQ,GAAG,gBAAgB;QAE3B,IAAA,CAAA,UAAU,GAAG,UAAU;QAEvB,IAAA,CAAA,eAAe,GAAG,UAAU;QAE5B,IAAA,CAAA,YAAY,GAAG,YAAY;QAE3B,IAAA,CAAA,cAAc,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAE7B,QAAA,IAAA,CAAA,QAAQ,GAAG,EAAE,CAAC;;AAIrB,IAAA,MAAM,CAAC,OAAO,EAAA;AACZ,QAAA,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;AAErB,QAAA,IAAI,CAAC,kBAAkB,GAAG,CACxB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,kBAAkB,KACtD,EAAE;;AAGP,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE;YACrC,IAAI,CAAC,YAAY,EAAE;;;IAIvB,YAAY,GAAA;QACV,MAAM,eAAe,GAAsB,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;QACxF,eAAe,CAAC,IAAI,CAAC,IAAI,CACvB,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,EACxB,KAAK,CAAC,IAAI,CAAC;SACZ,CAAC,SAAS,CAAC,MAAK;;AAEf,YAAA,OAAO,EAAE;;YAGT,KAAK,CAAC,kBAAkB,EAAE;AACxB,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,KAAK,EAAE,yBAAyB;AAChC,gBAAA,SAAS,EAAE,cAAc;AACzB,gBAAA,WAAW,EAAE,QAAQ;AACrB,gBAAA,OAAO,CAAC,SAAS,EAAA;oBACf,MAAM,EAAE,GAAG,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC;oBAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;oBAC5C,OAAO,QAAQ,CAAC,SAAS;iBAC1B;gBACD,IAAI,IAAI,CAAC,kBAAkB,EAAE,UAAU,IAAI,EAAE;AAC9C,aAAA,CAAC;AACJ,SAAC,CAAC;;AAEL;;ACtDK,MAAO,gBAAiB,SAAQ,YAAY,CAAA;AAAlD,IAAA,WAAA,GAAA;;QACS,IAAA,CAAA,QAAQ,GAAG,kBAAkB;AAE5B,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,OAAO,EAAE;;AAKzC,QAAA,IAAA,CAAA,aAAa,GAAkB,IAAI,OAAO,EAAE;AAEpD;AAC4C;AACpC,QAAA,IAAA,CAAA,uBAAuB,GAAkB,IAAI,OAAO,EAAE;;QAGtD,IAAA,CAAA,YAAY,GAAG,EAAE;;QAGjB,IAAA,CAAA,cAAc,GAAG,KAAK;;IAIvB,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,KAAA,CAAO;oBAAE;AAC5B,wBAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AAC1B,wBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;wBAC/B,IAAI,CAAC,qBAAqB,EAAE;wBAC5B,IAAI,CAAC,+BAA+B,EAAE;wBACtC,IAAI,CAAC,sBAAsB,EAAE;wBAC7B,IAAI,CAAC,wBAAwB,EAAE;AAC/B,wBAAA,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;wBACxF,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE;4BAChC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;4BAC1C,UAAU,CAAC,MAAK;AACd,gCAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,aAAa,CAAC;AAC9C,gCAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;6BACrC,EAAE,GAAG,CAAC;;;AAGT,wBAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;;oBACrB;AAEF,gBAAA,KAAK,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,QAAA,CAAU;AAC7B,oBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;AAC3B,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;oBACtB;AAEF,gBAAA,KAAK,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,cAAA,CAAgB;;AAEnC,oBAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC;AACxC,oBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;oBACpC;AAEF,gBAAA,KAAK,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,YAAA,CAAc;AACjC,oBAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,GAAG,KAAK;AAC1C,oBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE;AACnC,oBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE;oBACnC;AAEF,gBAAA;AACE,oBAAA,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,IAAI,CAAC;oBAC5D;;AAEN,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,6BAA6B;oBAAE;AAClC,wBAAA,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;AACjC,wBAAA,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;AAExF,wBAAA,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,SAAS,KAAK,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC;AACxE,wBAAA,IAAI,CAAC,YAAY,GAAG,SAAS;wBAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;AACrF,wBAAA,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE;;4BAEvD,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;AACrC,6BAAA,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;;4BAEvE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;4BAC3C,UAAU,CAAC,MAAK;AACd,gCAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,gBAAgB,CAAC;AACjD,gCAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;6BACrC,EAAE,GAAG,CAAC;;;oBAET;AAEF,gBAAA,KAAK,4BAA4B;oBAC/B,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC;AACnD,oBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE;oBACnC;AAEF,gBAAA;oBACE;;AAEN,SAAC,CAAC;;AAGJ;;AAEG;IACK,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,YAAY,CAAC,GAAG,CAAC,CAClB,CAAC,SAAS,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI;AACrC,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,gBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE;;iBAC9B;gBACL,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC,MAAK;AAChD,oBAAA,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,KAAK;AACtC,oBAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;AAClC,oBAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;AACvE,iBAAC,CAAC;;AAEN,SAAC,CAAC;;AAGJ;;AAEG;IACK,wBAAwB,GAAA;AAC9B,QAAA,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU;aAC9C,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;AACvE,SAAC,CAAC;;AAGN;;AAEG;IACK,+BAA+B,GAAA;AACrC,QAAA,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAK;AAC1C,YAAA,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU;AACvC,YAAA,MAAM,aAAa,GAAG,WAAW,CAAC,gBAAgB,EAAE;YACpD,MAAM,WAAW,GAAG,WAAW,CAAC,oBAAoB,CAAC,aAAa,CAAC,OAAO,CAAC;AAE3E,YAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI,EAAG,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;;YAG3F,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO;YAC7C,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc;YAC3D,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW;YAC9C,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ;;AAG5C,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,gBAAA,WAAW,CAAC,OAAO,GAAG,QAAQ;AAC9B,gBAAA,WAAW,CAAC,cAAc,GAAG,MAAM;AACnC,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;AAG7B,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC1B,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,IAAI,EAAE,EAAE;gBACR,WAAW;AACZ,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AAC3B,SAAC,CAAC;;;IAII,sBAAsB,GAAA;QAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CACzB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC;;YAE3C,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,cAAc,EAAE;AAC3C,gBAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA,EAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,cAAc,CAAA,CAAE,CAAC;;AAE/E,YAAA,IAAI,MAAM,CAAC,IAAI,EAAE;gBACf,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA,KAAA,EAAQ,MAAM,CAAC,IAAI,CAAA,CAAE,CAAC;;AAE3D,YAAA,IAAI,MAAM,CAAC,KAAK,EAAE;gBAChB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;;AAEzC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC;;iBACxD,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AAC9D,gBAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE;;AAE1C,SAAC,CAAC;;AAEL;;AClMK,MAAO,iBAAkB,SAAQ,gBAAgB,CAAA;AAAvD,IAAA,WAAA,GAAA;;QACS,IAAA,CAAA,QAAQ,GAAG,mBAAmB;;AACtC;;ACIM,MAAM,qBAAqB,GAAG;AACnC,IAAA,QAAQ,EAAE,mBAAmB;AAC7B;;;AAGG;AACH,IAAA,OAAO,EAAE;QACP,EAAE,EAAE,EAAE,gBAAgB,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,iBAAiB,EAAE;QACxF,EAAE,EAAE,EAAE,mBAAmB,EAAE;AAC3B,QAAA,EAAE,EAAE,EAAE,uBAAuB,EAAE,aAAa,EAAE,IAAI,EAAE;AACpD,QAAA;AACE,YAAA,EAAE,EAAE,qBAAqB;AACzB,YAAA,UAAU,EAAE,iBAAiB;AAC7B,YAAA,YAAY,EAAE,iBAAiB;AAChC,SAAA;AACF,KAAA;AACD,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,kBAAkB,EAAE,EAAE;AACtB,IAAA,oBAAoB,EAAE,EAAE;AACxB,IAAA,OAAO,EAAE;;AAER,KAAA;;;MCtBU,eAAe,CAAA;AAG1B,IAAA,WAAA,CACU,KAAqB,EAAA;QAArB,IAAA,CAAA,KAAK,GAAL,KAAK;QAHP,IAAA,CAAA,OAAO,GAAQ,EAAE;AAKvB,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CACzB,MAAM,CAAC,CAAC,MAAM,KAAI;AAChB,YAAA,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM;AAAE,gBAAA,OAAO,IAAI;AAC3C,YAAA,OAAO,KAAK;SACb,CAAC,CACH,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;;AAErB,YAAA,aAAa,CAAC,WAAW,GAAG,MAAM;AACpC,SAAC,CAAC;;IAGG,GAAG,CAAC,EAAU,EAAE,MAAsB,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AACpB,YAAA,MAAM,KAAK,CAAC,CAAA,cAAA,EAAiB,EAAE,CAAA,iBAAA,CAAmB,CAAC;;AAGrD,QAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC;;AAG3C,IAAA,MAAM,CAAC,EAAU,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;;;AAIpB,IAAA,KAAK,CAAC,EAAU,EAAA;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI;;+GAhCtB,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCDY,wBAAwB,CAAA;IAKnC,UAAU,CAAC,SAAS,EAAE,YAAY,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd;;QAEF,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;;IAGvD,SAAS,CAAC,SAAS,EAAE,YAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd;;QAEF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;;+GAhBtC,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,iGCNrC,qfAaM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDPO,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,qfAAA,EAAA;8BAIpB,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;;;MEGU,kCAAkC,CAAA;AAJ/C,IAAA,WAAA,GAAA;QAOE,IAAA,CAAA,KAAK,GAAG,mBAAmB;AAE3B,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC;QAE3D,IAAA,CAAA,aAAa,GAAG,CAAC,KAAK,KAAK,CAAA,EAAG,KAAK,GAAG,CAAC,CAAA,EAAA,CAAI;AAC5C;+GARY,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,gGCZ/C,2pBAWM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDCO,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAJ9C,SAAS;+BACE,gCAAgC,EAAA,QAAA,EAAA,2pBAAA,EAAA;8BAIjC,IAAI,EAAA,CAAA;sBAAZ;;;AEGG,MAAO,wBAAyB,SAAQ,cAAc,CAAA;IAC1D,WAAA,CACU,aAAmC,EACnC,oBAAiD,EACjD,SAA2B,EAC3B,aAAmC,EACnC,MAAuB,EACvB,KAAqB,EAAA;QAE7B,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAIH,qBAAM,CAAC;QAP1D,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,KAAK,GAAL,KAAK;;IAKL,WAAW,GAAA;QACnB,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,YAAA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;SACnC;;IAGH,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,EAAE;;IAGf,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,EAAE;;+GA5BP,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,gFChBrC,61NAiIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kCAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDjHa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,61NAAA,EAAA;;;AEPzB,MAAO,cAAe,SAAQ,gBAAgB,CAAA;AAApD,IAAA,WAAA,GAAA;;QASU,IAAA,CAAA,WAAW,GAAQ,EAAE;QAIrB,IAAA,CAAA,uBAAuB,GAAG,KAAK;AAE/B,QAAA,IAAA,CAAA,oBAAoB,GAAoB,IAAI,OAAO,EAAE;QAEtD,IAAA,CAAA,QAAQ,GAAG,aAAa;QAExB,IAAA,CAAA,aAAa,GAAW,IAAI;QAE5B,IAAA,CAAA,kBAAkB,GAAQ,IAAI;QAE9B,IAAA,CAAA,mBAAmB,GAAG,KAAK;QAE3B,IAAA,CAAA,YAAY,GAAG,CAAC,CAAC;QAEjB,IAAA,CAAA,mBAAmB,GAAG,EAAE;AAUvB,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,OAAO,EAAE;QAE1C,IAAA,CAAA,yBAAyB,GAAG,KAAK;QAEjC,IAAA,CAAA,oBAAoB,GAAG,KAAK;;QAG5B,IAAA,CAAA,eAAe,GAAG,KAAK;;AAGvB,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAC;AAEvB,QAAA,IAAA,CAAA,eAAe,GAAU,EAAE,CAAC;QAwD5B,IAAA,CAAA,eAAe,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,OAAQ,KAAI;;YAE9C,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC;;YAErC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3B,SAAC;;;IArDD,MAAM,CAAC,EACL,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,GAC/C,EAAA;AACC,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;;AAElC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC;AAC1E,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,WAAW;AAC7E,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,QAAQ;AAC3E,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,YAAY,EAAE;;QAErB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC;QAC7E,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC;;QAEhG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC;QACjD,IAAI,CAAC,YAAY,EAAE;;QAEnB,IAAI,CAAC,0BAA0B,EAAE;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI;AAC3E,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK;AACjF,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,WAAW;AAC7F,QAAA,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,aAAa,CAAC;AACxC,YAAA,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,IAAI,CAAC,aAAa;YAC1B,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,WAAW;AAC1D,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,aAAa,CAAC;YACvC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc;AACxD,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC;;IAGJ,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;;IAGjB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAA;;AAE/B,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE;YACxC,OAAO,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YACxC,MAAM;AACP,SAAA,CAAC;;IAWJ,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE;YACjD,OAAO,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACxC,YAAA,MAAM,EAAE;gBACN,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,WAAW;AACrE,aAAA;AACF,SAAA,CAAC;;AAGJ,IAAA,mBAAmB,CAAC,QAAQ,EAAA;AAC1B,QAAA,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,YAAY;QAChD,MAAM,SAAS,GAAG,EAAE;QACpB,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACxC,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;YACrE,SAAS,CAAC,IAAI,CAAC;AACb,gBAAA,GAAG,GAAG;AACN,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,GAAG,aAAa;AACjB,aAAA,CAAC;AACJ,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,aAAa,CAAC;YAC/C,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YACjD,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO;AACtC,SAAA,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;;AAGtD,IAAA,6BAA6B,CAAC,QAAa,EAAA;QACzC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;YAC1C;;AAEF,QAAA,IAAI,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,UAAU;AACpD,QAAA,IAAI,UAAU,GAAG,CAAC,EAAE;YAClB,IAAI,aAAa,GAAG,CAAC;AACrB,YAAA,OAAO,UAAU,GAAG,GAAG,EAAE;gBACvB,UAAU,IAAI,IAAI;gBAClB,aAAa,IAAI,CAAC;;AAEpB,YAAA,IAAI,gBAAgB,GAAG,CAAA,EAAG,UAAU,EAAE;YACtC,IAAI,UAAU,GAAG,EAAE;AAAE,gBAAA,gBAAgB,GAAG,CAAA,EAAA,EAAK,UAAU,CAAA,CAAE;iBACpD,IAAI,UAAU,GAAG,GAAG;AAAE,gBAAA,gBAAgB,GAAG,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE;YAC9D,IAAI,aAAa,GAAG,CAAC;gBAAE,IAAI,CAAC,aAAa,GAAG,CAAA,EAAG,aAAa,CAAA,CAAA,EAAI,gBAAgB,EAAE;;AAC7E,gBAAA,IAAI,CAAC,aAAa,GAAG,CAAA,EAAG,UAAU,EAAE;;aACpC;AACL,YAAA,IAAI,CAAC,aAAa,GAAG,GAAG;;AAE1B,QAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,aAAa,CAAC;AAC1C,YAAA,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,IAAI,CAAC,aAAa;AAC3B,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC;;QAG9D,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,wBAAwB,EAAE;AACjC,SAAC,CAAC;;AAGG,IAAA,UAAU,CAAC,WAAqB,EAAA;QACrC,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,CAAC,cAAc,EAAE;;;AAIzB,IAAA,uBAAuB,CAAC,MAAM,EAAA;AAC5B,QAAA,MAAM,OAAO,GAAW,MAAM,CAAC,YAAY;AAC3C,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM;;AAExB,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,KAAK;;IAGnC,cAAc,GAAA;AACZ;;;;AAII;AACJ,QAAA,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,QAAA,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YACjC,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;AAC3E,YAAA,IAAI,SAAS,EAAE;AACb,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC;gBACzF,QAAQ,CAAC,IAAI,CAAC;AACZ,oBAAA,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK;AAC7B,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,OAAO,EAAE,CAAA,IAAA,EAAO,YAAY,CAAC,YAAY,CAAC,CAAA,CAAE;AAC7C,iBAAA,CAAC;;AACG,iBAAA;gBACL,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE;AACnD,gBAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;;AAEjE,SAAC,CAAC;QACF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AACxC,gBAAA,OAAO,CAAC,OAAO,CAAC,CAAC,CAAM,KAAI;AACzB,oBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;oBAC1E,QAAQ,CAAC,IAAI,CAAC;wBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;AACd,wBAAA,IAAI,EAAE,eAAe;wBACrB,OAAO,EAAE,CAAC,CAAC,EAAE;AACb,wBAAA,OAAO,EAAE,CAAA,IAAA,EAAO,YAAY,CAAC,YAAY,CAAC,CAAA,CAAE;AAC7C,qBAAA,CAAC;AACJ,iBAAC,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AACxD,aAAC,CAAC;;aACG;YACL,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;;;AAI1D;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;AACzD,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,oBAAoB,IAAI,IAAI;QACrD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,GAAG;YACjD,MAAM,EAAE,EAAE,OAAO;AAClB,SAAA,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC;AAChB,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;gBACZ,IAAI,GAAG,EAAE;oBACP,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;;aAEtC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAClB,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;aAC7B;AACF,SAAA,CAAC;;AAGJ,IAAA,YAAY,CAAC,KAAK,EAAA;QAChB,IAAI,KAAK,EAAE;YACT,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;AAChD,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC;AAC5C,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI;AACrC,YAAA,IAAI,CAAC,qBAAqB,GAAG,YAAY;AACzC,YAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBACjC,IAAI,CAAC,0BAA0B,EAAE;;;AAE9B,aAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;YACvC,IAAI,CAAC,0BAA0B,EAAE;;;IAI7B,wBAAwB,GAAA;QAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC;AAC3D,QAAA,IAAI,CAAC,IAAI;YAAE;QACX,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC;;QAGzC,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;SACnC,EAAE,GAAG,CAAC;;AAGP,QAAA,OAAO,CAAC,IAAI,CACV,YAAY,CAAC,EAAE,CAAC,CACjB,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAmB,KAAI;AAC1C,YAAA,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;AACtC,SAAC,CAAC;;AAGI,IAAA,uBAAuB,CAAC,MAAM,EAAA;QACpC,IAAI,CAAC,mBAAmB,GAAG,MAAM,IAC/B,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,IAC5D,KAAK;;IAGH,0BAA0B,GAAA;AAChC,QAAA,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,aAAa,CAAC;YAC7C,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC;YAC3C,MAAM,EAAE,IAAI,CAAC,aAAa;YAC1B,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;YACxC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;AACvC,SAAA,CAAC;QACF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC5B,YAAY,CAAC,GAAG,CAAC,EACjB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,EAAE;gBAC1C,OAAO,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACxC,gBAAA,MAAM,EAAE;AACN,oBAAA,KAAK,EAAE,KAAK;oBACZ,eAAe,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE;AAC9F,iBAAA;AACF,aAAA,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACxB,gBAAA,IAAI,CAAC,yBAAyB,GAAG,KAAK;AACtC,gBAAA,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC;oBACtC,QAAQ;AACR,oBAAA,KAAK,EAAE,KAAK;AACb,iBAAA,CAAC;AACJ,aAAC,CAAC;AACJ,SAAC,CAAC;;IAGI,0BAA0B,GAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,uCAAuC,CAAC;AACjF,YAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;YAChC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,oCAAoC,EAAE;AACjE,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,KAAK,EAAE,cAAc;AACrB,gBAAA,SAAS,EAAE,cAAc;AACzB,gBAAA,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,MAAK,EAAG,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC,EAAE;AAC1D,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,mBAAmB,GAAG,OAAO;;AAEpC,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;;aAC1B;AACL,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;;AAEjC,QAAA,IAAI,CAAC,uBAAuB,GAAG,CAAC,IAAI,CAAC,uBAAuB;;IAGtD,YAAY,GAAA;QAClB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;YAC9C,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;AACxC,YAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ;AACzD,YAAA,WAAW,EAAE,UAAU;AACxB,SAAA,CAAC,CAAC;;AAEN;;AC3VK,MAAO,cAAe,SAAQ,YAAY,CAAA;AAAhD,IAAA,WAAA,GAAA;;AACU,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,OAAO,EAAE;AA2M1C,QAAA,IAAA,CAAA,6BAA6B,GAAG,CAAC,OAAO,KAAI;AACjD,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC;AACvC,SAAC;AAMM,QAAA,IAAA,CAAA,oBAAoB,GAAG,CAAC,OAAO,KAAI;YACxC,MAAM,mBAAmB,GAAG,OAAO;AACnC,YAAA,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,OAAO;AACzC,YAAA,IAAI,CAAC,UAAU,CAAC,oBAAoB,GAAG,IAAI;AAC3C,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,cAAc,EAAE;gBAC3C,mBAAmB;gBACnB,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,WAAW;AACrE,aAAA,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACnB,gBAAA,IAAI,CAAC,UAAU,CAAC,oBAAoB,GAAG,KAAK;gBAC5C,IAAI,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;;oBAEtC,IAAI,CAAC,UAAU,CAAC,kBAAkB,GAAG,GAAG,CAAC,YAAY;oBACrD,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,GAAG,CAAC,YAAY,CAAC;AACxD,oBAAA,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC,GAAG,CAAC;AAClD,oBAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;;qBAC3B;;oBAEL,MAAM,SAAS,GAAG,EAAE;oBACpB,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;wBAC5C,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE;wBACnD,SAAS,CAAC,IAAI;wBACZ,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CACzD;AACH,qBAAC,CAAC;;oBAEF,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;wBACxC,MAAM,aAAa,GAAG,EAAE;wBACxB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI,EAAG,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACxE,wBAAA,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,aAAa,CAAC;AACrD,wBAAA,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC,GAAG,CAAC;AAClD,wBAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;AAClC,qBAAC,CAAC;;AAEN,aAAC,CAAC;AACJ,SAAC;;IA/OM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,qBAAqB;AACxB,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;oBAC/B,IAAI,CAAC,WAAW,EAAE;AAClB,oBAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa;;AAE1C,oBAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;oBACrB;AACF,gBAAA,KAAK,+BAA+B;AAClC,oBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC1B,wBAAA,OAAO,EAAE,QAAQ;AACjB,wBAAA,IAAI,EAAE,OAAO;AACd,qBAAA,CAAC;oBACF;AACF,gBAAA,KAAK,wBAAwB;AAC3B,oBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;oBAC3B;AACF,gBAAA,KAAK,0CAA0C;oBAAE;AAC/C,wBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7D,wBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc;AAC/D,wBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC1B,4BAAA,OAAO,EAAE,QAAQ;4BACjB,IAAI,EAAE,CAAC,QAAQ,CAAC;AAChB,4BAAA,WAAW,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE;AAC7C,yBAAA,CAAC;;oBAEF;AACF,gBAAA,KAAK,+BAA+B;AAClC,oBAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;oBAChC;AACF,gBAAA;AACE,oBAAA,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAE,IAAI,CAAC;oBAC5D;;AAEN,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;gBACV,KAAK,uBAAuB;AAC1B,oBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;oBAChC;AACF,gBAAA,KAAK,uBAAuB;AAC1B,oBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;oBACjC;AACF,gBAAA,KAAK,eAAe;oBAAE;wBACpB,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC;AACjD,wBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC1B,4BAAA,OAAO,EAAE,QAAQ;AACjB,4BAAA,IAAI,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC;AACtD,4BAAA,WAAW,EAAE;gCACX,KAAK;;gCAEL,WAAW,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC,cAAc,IAAI,CAAC,GAAG,CAAC;AAC7F,6BAAA;AACF,yBAAA,CAAC;;oBACF;AACF,gBAAA,KAAK,gBAAgB;oBACnB,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,OAAO,CAAC,KAAK;oBACjD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC;oBAC3C;AACF,gBAAA,KAAK,8BAA8B;AACjC,oBAAA,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC;oBACvC;AACF,gBAAA,KAAK,+BAA+B;oBAClC,IACE,CAAC,OAAO,CAAC;AACN,4BAAC,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAC3E;wBACA,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;;AACrD,yBAAA,IAAI,OAAO,CAAC,KAAK,EAAE;wBACxB,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;;AAE5D,wBAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAC7B,yBAAyB,EACzB,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CACvC;AACD,wBAAA,MAAM,MAAM,GAAG;4BACb,KAAK,EAAE,OAAO,CAAC,KAAK;AACpB,4BAAA,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AAC7E,4BAAA,eAAe,EAAE;AACf,gCAAA,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC;AACzE,6BAAA;yBACF;AACD,wBAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;4BAC1E,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,gCAAA,MAAM,QAAQ,GAAG;AACf,oCAAA,UAAU,EAAE,CAAC;AACb,oCAAA,OAAO,EAAE;AACP,wCAAA;AACE,4CAAA,MAAM,EAAE;AACN,gDAAA,EAAE,EAAE,UAAU;AACd,gDAAA,KAAK;gDACH,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,uBAAuB;sDACzD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,uBAAuB;AAC/D,sDAAE,0BAA0B;AACjC,6CAAA;AACF,yCAAA;AACF,qCAAA;iCACF;;gCAED,IAAI,CAAC,UAAU,CAAC,eAAe,CAC7B,yBAAyB,EACzB,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAC1C,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,CAC/B;;iCACI;;AAEL,gCAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAC7B,yBAAyB;gCACzB,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE;AAChC,gCAAA,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,CAC/B;;AAEL,yBAAC,CAAC;;oBAEJ;AACF,gBAAA,KAAK,iCAAiC;AACpC,oBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;oBACnC;AACF,gBAAA,KAAK,+BAA+B;oBAAE;AACpC,wBAAA,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO;AAC/B,wBAAA,MAAM,MAAM,GAAG;AACb,4BAAA,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe;AACpD,4BAAA,eAAe,EAAE;AACf,gCAAA,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY;AAClD,gCAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY;AACpC,6BAAA;yBACF;AACD,wBAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;4BACrE,IAAI,GAAG,EAAE;gCACP,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,CAAC;;iCAClC;AACL,gCAAA,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC;;AAEpD,yBAAC,CAAC;;oBACF;AACF,gBAAA,KAAK,qCAAqC;AACxC,oBAAA,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC;oBAC3C;AACF,gBAAA,KAAK,4BAA4B;oBAAE;wBACjC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO;AAC7C,wBAAA,IAAI,QAAQ;AACZ,wBAAA,IAAI,MAAM,KAAK,MAAM,EAAE;AACrB,4BAAA,IAAI,WAAW,KAAK,mBAAmB,EAAE;gCACvC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc;;iCACpD;gCACL,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc;;AAE3D,4BAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC1B,gCAAA,OAAO,EAAE,QAAQ;AACjB,gCAAA,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7D,6BAAA,CAAC;;AACG,6BAAA,IAAI,MAAM,KAAK,UAAU,EAAE;AAChC,4BAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB;4BACnD,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc;AACzD,4BAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC1B,gCAAA,OAAO,EAAE,QAAQ;gCACjB,IAAI,EAAE,CAAC,QAAQ,CAAC;gCAChB,WAAW,EAAE,EAAE,KAAK,EAAE;AACvB,6BAAA,CAAC;;AACG,6BAAA,IAAI,MAAM,KAAK,cAAc,EAAE;AACpC,4BAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC1B,gCAAA,OAAO,EAAE,QAAQ;AACjB,gCAAA,IAAI,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC;AACtD,gCAAA,WAAW,EAAE;AACX,oCAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAiB;AACxC,oCAAA,WAAW,EAAE,CAAC;AACf,iCAAA;AACF,6BAAA,CAAC;;;oBAEJ;AACF,gBAAA,KAAK,2BAA2B;AAC9B,oBAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;oBAClC;AACF,gBAAA,KAAK,4BAA4B;oBAC/B,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBACtC;AACF,gBAAA;;oBAEE;;AAEN,SAAC,CAAC;;IAGI,WAAW,GAAA;QACjB,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;;YAE5D,IAAI,CAAC,QAAQ,EAAE;gBAAE;;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,QAAQ,CAAC;AAC7C,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;gBAClC,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,QAAQ,CAAC,YAAY,CAAC;;AAEjE,SAAC,CAAC;;IAOG,cAAc,CAAC,IAAI,EAAE,OAAO,EAAA;AACjC,QAAA,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;;AAsCjC;;ACtPM,MAAM,kBAAkB,GAAG;AAChC,IAAA,QAAQ,EAAE,gBAAgB;AAC1B,IAAA,OAAO,EAAE,CAAC;AACR,YAAA,EAAE,EAAE,aAAa;SAClB,EAAE;AACD,YAAA,EAAE,EAAE,SAAS;SACd,EAAE;AACD,YAAA,EAAE,EAAE,yBAAyB;SAC9B,EAAE;AACD,YAAA,EAAE,EAAE,iBAAiB;SACtB,EAAE;AACD,YAAA,EAAE,EAAE,wBAAwB;SAC7B,EAAE;AACD,YAAA,EAAE,EAAE,2BAA2B;SAChC,EAAE;AACD,YAAA,EAAE,EAAE,sBAAsB;SAC3B,EAAE;AACD,YAAA,EAAE,EAAE,mBAAmB;SACxB,EAAE;AACD,YAAA,EAAE,EAAE,yBAAyB;SAC9B,EAAE;AACD,YAAA,EAAE,EAAE,gBAAgB;SACrB,CAAC;AACF,IAAA,QAAQ,EAAE,cAAc;AACxB,IAAA,QAAQ,EAAE,cAAc;AACxB,IAAA,kBAAkB,EAAE,EAAE;AACtB,IAAA,oBAAoB,EAAE,EAAE;AACxB,IAAA,OAAO,EAAE;;AAER,KAAA;;;AClCH;AACA;AACA;MAQa,2BAA2B,CAAA;IAOtC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;;+GARf,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,qICVxC,gFAEM,EAAA,CAAA,CAAA;;4FDQO,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,gFAAA,EAAA;8BAI1B,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,SAAS,EAAA,CAAA;sBAAjB;gBAEQ,OAAO,EAAA,CAAA;sBAAf;;;AEfH;AACA;AACA;MAQa,mBAAmB,CAAA;IAO9B,OAAO,CAAC,IAAI,EAAE,OAAO,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;;+GARf,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,wHCVhC,qpCAyBM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDfO,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,qpCAAA,EAAA;8BAIjB,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;;;AECG,MAAO,qBAAsB,SAAQ,cAAc,CAAA;IACvD,WAAA,CACE,oBAAiD,EACzC,MAAc,EACd,aAAmC,EACnC,aAAmC,EACnC,SAA2B,EAAA;QAEnC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAID,kBAAM,CAAC;QALvD,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,SAAS,GAAT,SAAS;;IAKT,WAAW,GAAA;QACnB,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,IAAI,CAAC,aAAa;AACjC,YAAA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;YAClC,KAAK;SACN;;IAGH,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,EAAE;;IAGf,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,EAAE;;+GA3BP,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,6EChBlC,+xWAyMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,2BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,yBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDzLa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,+xWAAA,EAAA;;;AELtB,MAAO,aAAc,SAAQ,gBAAgB,CAAA;AAAnD,IAAA,WAAA,GAAA;;QAOS,IAAA,CAAA,QAAQ,GAAG,YAAY;QAQtB,IAAA,CAAA,QAAQ,GAAG,EAAE;AAEd,QAAA,IAAA,CAAA,MAAM,GAAiC,IAAI,eAAe,CAAC,OAAO,CAAC;QAElE,IAAA,CAAA,WAAW,GAAG,CAAC;;IAMvB,MAAM,CAAC,EACL,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,GAC/D,EAAA;AACC,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;;QAGhC,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,YAAY,EAAE;;QAGnB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC;AAElD,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;YAClE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AACrC,SAAC,CAAC;;AAGJ,IAAA,YAAY,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAA;;AAExB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,uBAAuB,EAAE;AACnD,YAAA,MAAM,EAAE;gBACN,mBAAmB,EAAE,CAAC,EAAE;AACzB;SACF,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,eAAe,EAAE,KAAI;;AAEnC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AAE3B,YAAA,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,KAAK;YACzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;YACrC,IAAI,IAAI,GAAG,CAAA,QAAA,EAAW,IAAI,CAAC,KAAK,CAAA,kFAAA,EAAqF,KAAK,CAAA,OAAA,CAAS;AACnI,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;gBACpB,IAAI,GAAG,WAAW,IAAI,CAAC,KAAK,CAAA,kFAAA,EAAqF,KAAK,SAAS;;AAGjI,YAAA,MAAM,SAAS,GAAmB;AAChC,gBAAA,KAAK,EAAE;oBACL,IAAI,EAAE,EAAE,IAAI,EAAE;AACf,iBAAA;AACD,gBAAA,OAAO,EAAE;AACP,oBAAA,OAAO,EAAE,CAAC;AACR,4BAAA,MAAM,EAAE;gCACN,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAE;AAC1F,6BAAA;AACD,4BAAA,IAAI,EAAE;yBACP;AACF;aACF;YACD,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;;YAGnD,IAAI,CAAC,WAAW,EAAE;;YAGlB,IAAI,CAAC,gBAAgB,EAAE;AACzB,SAAC,CAAC;;IAGJ,aAAa,GAAA;;AAEX,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;AACd,QAAA,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC;AACvC,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE;AACjB;AACF,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;;IAGrD,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK;QACtB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,gBAAgB,EAAE;;IAGzB,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAA;QACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;AACzD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YACvB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,gBAAgB,EAAE;;;IAInB,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,aAAa,CAAC;AAC1C,YAAA,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,IAAI,CAAC,aAAa;YAC1B,IAAI,EAAE,IAAI,CAAC,WAAW;AACtB,YAAA,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,IAAI,CAAC,QAAQ;AACpB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;;IAG5D,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,aAAa,CAAC;AAC5C,YAAA,IAAI,EAAE;AACP,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC;AACrC,YAAA,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;YACjD,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBAClB,MAAM,EAAE,IAAI,CAAC,QAAQ;AACtB,aAAA;AACF,SAAA,CAAC;;IAGI,YAAY,GAAA;QAClB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;YAC9C,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;AACxC,YAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ;AACzD,YAAA,WAAW,EAAE,OAAO;AACrB,SAAA,CAAC,CAAC;;IAGG,YAAY,GAAA;AAClB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ;QAC7D,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,KAAK,yBAAyB;;AAExD;;AChKK,MAAO,aAAc,SAAQ,YAAY,CAAA;AAA/C,IAAA,WAAA,GAAA;;AACU,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,OAAO,EAAE;;IAE1C,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,oBAAoB;AACvB,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/B,oBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;;AAE/B,oBAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;oBACrB;AAEF,gBAAA,KAAK,uBAAuB;AAC1B,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;oBACtB;AAEF,gBAAA;oBACE;;AAEN,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,mBAAmB;AACtB,oBAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC;oBACrC;AACF,gBAAA,KAAK,oBAAoB;AACvB,oBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;oBAC/B;AACF,gBAAA,KAAK,4BAA4B;AAC/B,oBAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC;oBAC3C;AACF,gBAAA,KAAK,2BAA2B;AAC9B,oBAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC;oBAC1C;AACF,gBAAA;oBACE;;AAEN,SAAC,CAAC;;AAEL;;ACtCM,MAAM,iBAAiB,GAAG;AAC/B,IAAA,QAAQ,EAAE,eAAe;AACzB,IAAA,OAAO,EAAE;QACP,EAAE,EAAE,EAAE,QAAQ,EAAE;QAChB,EAAE,EAAE,EAAE,uBAAuB,EAAE;QAC/B,EAAE,EAAE,EAAE,mBAAmB,EAAE;AAC3B,QAAA;AACE,YAAA,EAAE,EAAE,qBAAqB;AACzB,YAAA,UAAU,EAAE,iBAAiB;AAC7B,YAAA,YAAY,EAAE,iBAAiB;AAChC;AACF,KAAA;AACD,IAAA,QAAQ,EAAE,aAAa;AACvB,IAAA,QAAQ,EAAE,aAAa;AACvB,IAAA,kBAAkB,EAAE,EAAE;AACtB,IAAA,oBAAoB,EAAE,EAAE;AACxB,IAAA,OAAO,EAAE;;AAER,KAAA;;;ACTG,MAAO,oBAAqB,SAAQ,cAAc,CAAA;IACtD,WAAA,CACU,aAAmC,EACnC,oBAAiD,EACjD,aAAmC,EACnC,SAA2B,EAC3B,YAAmB,EAAA;QAE3B,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAIF,iBAAM,CAAC;QANtD,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,YAAY,GAAZ,YAAY;;AAKtB;;;;AAIG;IACO,WAAW,GAAA;QACnB,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;AACjC,YAAA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;SACnC;;IAGH,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,EAAE;;IAGf,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,EAAE;;+GA/BP,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,4ECfjC,ixEAuDM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,yBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDxCO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,ixEAAA,EAAA;;;AEE3B,MAAM,oBAAoB,GAAG,WAAW;AAElC,MAAO,gBAAiB,SAAQ,gBAAgB,CAAA;AAAtD,IAAA,WAAA,GAAA;;AAGU,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,OAAO,EAAE;AAEzC,QAAA,IAAA,CAAA,qBAAqB,GAAkB,IAAI,OAAO,EAAE;QAYrD,IAAA,CAAA,QAAQ,GAAG,eAAe;QAU1B,IAAA,CAAA,YAAY,GAAQ,EAAE;QAwCtB,IAAA,CAAA,eAAe,GAAG,KAAK;QAEvB,IAAA,CAAA,aAAa,GAAG,MAAM;QAEtB,IAAA,CAAA,gBAAgB,GAAG,KAAK;QAExB,IAAA,CAAA,SAAS,GAAkB,IAAI;;QAK/B,IAAA,CAAA,UAAU,GAAG,IAAI;QASjB,IAAA,CAAA,kBAAkB,GAErB,EAAE;QAEC,IAAA,CAAA,oBAAoB,GAEvB,EAAE;;QAKE,IAAA,CAAA,YAAY,GAA8B,SAAS;QAEpD,IAAA,CAAA,eAAe,GAGlB,IAAI;AAED,QAAA,IAAA,CAAA,oBAAoB,GAAG;AAC5B,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,kBAAkB,EAAE;SACrB;QAEM,IAAA,CAAA,YAAY,GAGf,IAAI;AA2FR,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI;;aA7M9B,IAAA,CAAA,IAAI,GAAQ,IAAR,CAAa;AAoHxB,IAAA,MAAM,CAAC,EACL,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,GACvE,EAAA;QACC,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAE3D,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,IAAI,KAAK;;QAE5E,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,KAAK;QACxE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,gBAAgB;QAC9E,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,yBAAyB;QAChG,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,KAAK;QACxE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC;AAC7D,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAC1D,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,aAAa,CAAC;YACvC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc;AACzD,SAAA,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;QAClD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;QACvD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;;QAGpF,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE;AACjC,YAAA,IAAI,CAAC,YAAY,GAAG,aAAa;;QAGnC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC;;QAGvD,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,YAAY,EAAE;;AAGnB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE;AACrF,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC,iBAAiB,CAAC,cAAc,CAAC;;QAG/D,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;;AAGlG,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE;AACxF,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC,qBAAqB,CAAC,UAAU,CAAC,cAAc,CAAC;QAC9E,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,aAAa,CAAC,qBAAqB,CAAC;;AAGrE,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACrD,YAAA,MAAM,UAAU,GAAG,CAAA,EAAG,oBAAoB,CAAA,CAAA,EAAI,GAAG,EAAE;YACnD,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC;YACrD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,KAAK;AAClF,SAAC,CAAC;;QAGF,IAAI,CAAC,qBAAqB,EAAE;;IAG9B,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;;IAGxB,uBAAuB,GAAA;AACrB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1D,QAAA,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,IAAI,EAAE;AAClD,QAAA,OAAO,cAAc,CAAC,KAAK,IAAI,IAAI;;IAGrC,aAAa,GAAA;AACX,QAAA,IAAI,gBAAgB,CAAC,IAAI,EAAE;AACzB,YAAA,OAAO,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;;QAElC,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE;YACpD,OAAO,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACxC,YAAA,MAAM,EAAE;gBACN,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe;AAC5C,aAAA;AACF,SAAA,CAAC;;AAGJ,IAAA,OAAO,CAAC,IAAI,EAAA;AACV,QAAA,gBAAgB,CAAC,IAAI,GAAG,IAAI;;AAK9B,IAAA,gBAAgB,CAAC,IAAI,EAAA;AACnB,QAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;;AAGpF,IAAA,QAAQ,CAAC,EAAE,EAAA;AACT,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,mBAAmB,CAAC;AACnG,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC5C,OAAO,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACxC,YAAA,MAAM,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE;AAChC,SAAA,CAAC;;AAGJ;;;AAGG;AACH,IAAA,WAAW,CAAC,QAAQ,EAAA;AAClB,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;QAC5B,IAAI,QAAQ,EAAE;;AAEZ,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAChC,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI;YAErC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC/C,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC;YAC7E,IAAI,CAAC,eAAe,IAClB,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe;AAC/B,mBAAA,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY;AACnC,mBAAA,QAAQ,CAAC,YAAY,CAAC,MAAM,CAChC;AACD,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM;YACvF,IAAI,CAAC,iBAAiB,IACpB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc;AAClC,mBAAA,QAAQ,CAAC,cAAc,CAAC,MAAM,CAClC;YACD,IAAI,CAAC,kBAAkB,IACrB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe;AACnC,mBAAA,QAAQ,CAAC,eAAe,CAAC,MAAM,CACnC;YACD,IAAI,CAAC,UAAU,GAAG,CAAC,EACjB,IAAI,CAAC;AACF,mBAAA,IAAI,CAAC;AACL,mBAAA,IAAI,CAAC;mBACL,IAAI,CAAC,iBAAiB,CAC1B;AAED,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,YAAA,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;AAEjC,YAAA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACjB,gBAAA,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI;;AAEjC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG/B,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,cAAc,CAAC;;gBAE/E,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC/C,gBAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc;AAC7C,gBAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;;AAG7B,YAAA,MAAM,QAAQ,GAAG;gBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;AACnB,gBAAA,KAAK,EAAE;AACL,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;AACtC,wBAAA,OAAO,EAAE,MAAM;AAChB,qBAAA;AACF,iBAAA;gBACD,KAAK,EAAE,QAAQ,CAAC,QAAQ;AACxB,gBAAA,OAAO,EAAE,EAAE;aACZ;YAED,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;YAClD,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC;;AAGrD,YAAA,MAAM,WAAW,GAAG;AAClB,gBAAA,KAAK,EAAE,EAAE;aACV;AAED,YAAA,IAAI,QAAQ,CAAC,WAAW,EAAE;gBACxB,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AACvC,oBAAA,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;wBACrB,KAAK,EAAE,OAAO,CAAC,KAAK;AACpB,wBAAA,MAAM,EAAE;AACN,4BAAA,IAAI,EAAE;gCACJ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc;gCAC9C,CAAA,EAAG,OAAO,CAAC,IAAI,CAAA,CAAA,CAAG;AAClB,gCAAA,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;6BAC/B,CAAC,IAAI,CAAC,EAAE,CAAC;AACX,yBAAA;AACF,qBAAA,CAAC;AACJ,iBAAC,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;;;YAIvD,IAAI,CAAC,mBAAmB,EAAE;;YAG1B,IAAI,CAAC,gBAAgB,EAAE;;YAGvB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;;AAGrD,QAAA,IAAI,QAAQ,CAAC,YAAY,EAAE;YACzB,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9F,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;;AAEhD,QAAA,IAAI,QAAQ,CAAC,eAAe,EAAE;YAC5B,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;gBACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;AAC9C,gBAAA,EAAE,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG;sBAC7B,CAAA,EAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA,IAAA;sBACtB,KAAK;AACX,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,aAAa,CAAC;AAC5C,gBAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,CAAC;AACzF,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC;;;QAIlE,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE;AACnC,SAAC,CAAC;;IAGJ,gBAAgB,GAAA;AACd,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY;AAExC,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC;YACxD,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC;AACxD,YAAA,MAAM,MAAM,GAAQ;gBAClB,EAAE,EAAE,cAAc,CAAC,EAAE;AACrB,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,KAAK,EAAE,IAAI;gBACX,GAAG,IAAI,CAAC,kBAAkB;aAC3B;AACD,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;;AAGlC,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK;YAChD,OAAO,MAAM,CAAC,IAAI;AAElB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc;YAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,iBAAiB,EAAE;gBAC9D,MAAM;gBACN,OAAO,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACzC,aAAA,CAAC;AACF,YAAA,QAAQ,CAAC,SAAS,CAAC,CAAC,aAAa,KAAI;AACnC,gBAAA,IAAI,CAAC,eAAe,IAClB,MAAM,CAAC;uBACJ,YAAY,CAAC,IAAI,GAAG;AACpB,uBAAA,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,CAClC;AACD,gBAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,oBAAA,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,aAAa,CAAC;wBACzC,QAAQ;wBACR,UAAU;AACV,wBAAA,MAAM,EAAE,YAAY;AACpB,wBAAA,GAAG,aAAa;AACjB,qBAAA,CAAC;AACF,oBAAA,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC;AAClC,wBAAA,MAAM,EAAE,cAAc;AACtB,wBAAA,KAAK,EAAE;AACR,qBAAA,CAAC;;oBAGF,UAAU,CAAC,MAAK;wBACd,MAAM,UAAU,GAAqB;6BAClC,aAAa,CAAC,uDAAuD,CAAC;wBACzE,IAAI,UAAU,EAAE;4BACd,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;;AAEzC,qBAAC,CAAC;;AAEN,aAAC,CAAC;;aACG;AACL,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;;;IAIhC,kBAAkB,GAAA;AAChB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY;AAExC,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC;YACxD,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC;AAC1D,YAAA,MAAM,SAAS,GAAQ;gBACrB,EAAE,EAAE,cAAc,CAAC,EAAE;AACrB,gBAAA,aAAa,EAAE,CAAC;AAChB,gBAAA,cAAc,EAAE,EAAE;AAClB,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,QAAQ,EAAE,IAAI;gBACd,GAAG,IAAI,CAAC,oBAAoB;aAC7B;;YAGD,MAAM,MAAM,GAAW,EAAE;YACzB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AAC1C,gBAAA,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC;AAC/D,aAAC,CAAC;AAEF,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;;AAGlC,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK;YAChD,OAAO,MAAM,CAAC,IAAI;AAElB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc;AAC/D,YAAA,IAAI,QAAQ,GAAoB,EAAE,CAAC,IAAI,CAAC;AACxC,YAAA,IAAI,MAAM,CAAC,KAAK,EAAE;gBAChB,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,iBAAiB,EAAE;oBACxD,MAAM;oBACN,OAAO,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACzC,iBAAA,CAAC;;AAGJ,YAAA,QAAQ,CAAC,SAAS,CAAC,CAAC,aAAa,KAAI;AACnC,gBAAA,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,aAAa,CAAC;oBACzC,QAAQ;oBACR,UAAU;AACV,oBAAA,MAAM,EAAE,YAAY;AACpB,oBAAA,GAAG,aAAa;AACjB,iBAAA,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;;gBAGlD,UAAU,CAAC,MAAK;oBACd,MAAM,UAAU,GAAqB;yBAClC,aAAa,CAAC,6CAA6C,CAAC;oBAC/D,IAAI,UAAU,EAAE;wBACd,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;;AAEzC,iBAAC,CAAC;AACJ,aAAC,CAAC;;aACG;AACL,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;;;IAIlC,mBAAmB,GAAA;;AAEjB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAE3B,QAAA,MAAM,WAAW,IACf,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;AAC/B,eAAA,IAAI,CAAC,YAAY,CAAC,aAAa,KAAK,mBAAmB,CAC3D;AACD,QAAA,IAAI,CAAC,WAAW;YAAE;AAElB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AACjD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc;QAC/D,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AACnC,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG;AAC1B,kBAAE;AACA,oBAAA,IAAI,EAAE,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAC,EAAE,CAAA,CAAA,EAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,CAAE;oBAC7D,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB,GAAG,IAAI;AACZ,SAAC,CAAC;;IAGJ,gBAAgB,GAAA;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC;QACxD,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY;AACjD,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;AAClE,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;YACpB,IAAI,CAAC,YAAY,GAAG;gBAClB,IAAI;AACJ,gBAAA,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,gBAAgB;aACzC;;aACI;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;;AAI5B;;AAEG;IACH,eAAe,GAAA;;AAEb,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB;AACtF,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB;QAC9C,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,aAAa,EAAE;;AAG/D,IAAA,iBAAiB,CAAC,EAAU,EAAA;AAC1B,QAAA,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC;;AAG9D,QAAA,MAAM,UAAU,GAAG,CAAA,EAAG,oBAAoB,CAAA,CAAA,EAAI,EAAE,EAAE;AAClD,QAAA,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;;IAGzD,qBAAqB,GAAA;;AAE3B,QAAA,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE;YACzB;;QAEF,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;QAE3CL,OAAK,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAC7C,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC,SAAS,CAAC,MAAK;AACf,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW;YACpC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW;YACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAgB;AAClF,YAAA,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS;AACpC,YAAA,MAAM,aAAa,GAAG,UAAU,GAAG,OAAO,CAAC,YAAY;AAEvD,YAAA,IAAI,CAAC,eAAe,GAAG,UAAU,IAAI,SAAS;;YAG9C,IAAI,IAAI,CAAC,eAAe,IAAI,YAAY,GAAG,aAAa,EAAE;gBACxD,IAAI,CAAC,aAAa,GAAG,CAAA,EAAG,YAAY,GAAG,SAAS,GAAG,EAAE,CAAA,EAAA,CAAI;;iBACpD,IAAI,IAAI,CAAC,eAAe,IAAI,YAAY,IAAI,aAAa,EAAE;gBAChE,IAAI,CAAC,aAAa,GAAG,CAAA,EAAG,aAAa,GAAG,SAAS,GAAG,EAAE,CAAA,EAAA,CAAI;;AACrD,iBAAA,IAAI,YAAY,GAAG,aAAa,EAAE;gBACvC,IAAI,CAAC,aAAa,GAAG,CAAA,EAAG,YAAY,GAAG,UAAU,GAAG,EAAE,CAAA,EAAA,CAAI;;iBACrD;gBACL,IAAI,CAAC,aAAa,GAAG,CAAA,EAAG,aAAa,GAAG,UAAU,GAAG,EAAE,CAAA,EAAA,CAAI;;AAE/D,SAAC,CAAC;;AAGG,IAAA,SAAS,CAAC,QAAQ,EAAA;AACvB,QAAA,MAAM,EACJ,MAAM,EACN,aAAa,EAAE,EAAE,EACjB,uBAAuB,EAAE,EAAE,EAC5B,GAAG,QAAQ;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/C,QAAA,MAAM,UAAU,GAAG,OAAO,EAAE,KAAK,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;QAC9D,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AACvD,QAAA,IAAI,cAAc,GAAGF,GAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,kBAAkB,EAAE,EAAE,CAAC;AACxF,QAAA,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE;QAE1E,OAAO,cAAc,CAAC,SAAS,CAAC;YAC9B,MAAM;YACN,KAAK;YACL,MAAM;YACN,cAAc;AACd,YAAA,IAAI,EAAE;AACP,SAAA,CAAC;;AAGG,IAAA,mBAAmB,CAAC,OAAO,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,yBAAyB,KAAK,OAAO,EAAE;;AAE9C,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACjF,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC;;iBAClD;;gBAEL,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC;gBACjE,aAAa,CAAC,KAAK,EAAE;AAErB,gBAAA,IAAI,CAAC,yBAAyB,GAAG,OAAO;gBACxC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;gBACxD,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,KAAK,aAAa,EAAE;AACpD,oBAAA,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;;qBAC7D,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC5D,oBAAA,IAAI,aAAa,CAAC,WAAW,EAAE,EAAE;AAC/B,wBAAA,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC;;yBAChD;AACL,wBAAA,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;;;oBAI/D,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC;AAC7D,oBAAA,IAAI,eAAe,EAAE,OAAO,EAAE;AAC5B,wBAAA,aAAa,CAAC,eAAe,CAAC,IAAI,CAChC,KAAK,EAAE,EACP,KAAK,CAAC,GAAG,CAAC;AACX,yBAAA,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;4BACrB,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,aAAa,CAAC,eAAe,CAAC;4BACpE,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACtD,yBAAC,CAAC;;;qBAEC,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,KAAK,KAAK,EAAE;AACnD,oBAAA,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;;;;;AAM3D,IAAA,uBAAuB,CAAC,cAAc,EAAA;AAC5C,QAAA,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;YAChC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAC/B,OAAO;AACL,oBAAA,EAAE,EAAE,sBAAsB;oBAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,KAAK,EAAE,GAAG,CAAC,KAAK;AAChB,oBAAA,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM;wBAC7C,GAAG;wBACH,UAAU;wBACV,IAAI,EAAE,GAAG,CAAC,IAAI;AACf,qBAAA,CAAC;iBACH;;AAEH,YAAA,OAAO,GAAG;AACZ,SAAC,CAAC;;AAGI,IAAA,eAAe,CAAC,KAAK,EAAA;QAC3B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,EAAE,CAAC,CAAC;;AAGzD,IAAA,YAAY,CAAC,KAAc,EAAA;QACjC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;YAC9C,KAAK;YACL,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;AACxC,YAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ;AACzD,YAAA,WAAW,EAAE,YAAY;AAC1B,SAAA,CAAC,CAAC;;IAGG,YAAY,GAAA;AAClB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,cAAc;AACxE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa;QACtE,IAAI,CAAC,cAAc,GAAG,CAAC,UAAU,KAAK,wBAAwB;QAC9D,IAAI,CAAC,aAAa,GAAG,CAAC,SAAS,KAAK,YAAY;;;;AChoB9C,MAAO,gBAAiB,SAAQ,YAAY,CAAA;AAAlD,IAAA,WAAA,GAAA;;AAGU,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,OAAO,EAAE;AAQzC,QAAA,IAAA,CAAA,WAAW,GAAwB,IAAI,aAAa,EAAE;AAEtD,QAAA,IAAA,CAAA,oBAAoB,GAIvB,IAAI,OAAO,EAAE;AAEV,QAAA,IAAA,CAAA,oBAAoB,GAIvB,IAAI,OAAO,EAAE;;IAIX,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,uBAAuB;oBAAE;AAC5B,wBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/B,wBAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa;AAC1C,wBAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AAC1B,wBAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;AAC5B,wBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE;wBACnD,IAAI,OAAO,EAAE;AACX,4BAAA,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,OAAO;;wBAErC,IAAI,CAAC,WAAW,EAAE;wBAClB,IAAI,CAAC,sBAAsB,EAAE;wBAC7B,IAAI,CAAC,kBAAkB,EAAE;wBACzB,IAAI,CAAC,kBAAkB,EAAE;AACzB,wBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAC5B,wBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;;AAE1B,wBAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;;oBACrB;AAEF,gBAAA,KAAK,0BAA0B;AAC7B,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,oBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;oBAC3B;AAEF,gBAAA,KAAK,gCAAgC;AACnC,oBAAA,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;oBACjC;AAEF,gBAAA;AACE,oBAAA,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,IAAI,CAAC;oBACnD;;AAEN,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,yBAAyB;AAC5B,oBAAA,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;oBACjC;AACF,gBAAA,KAAK,0BAA0B;AAC7B,oBAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC;oBAC5C;AAEF;;AAE0D;AAC1D,gBAAA,KAAK,yBAAyB;oBAAE;AAC9B,wBAAA,IAAI,GAAW;AACf,wBAAA,IAAI,KAAa;AACjB,wBAAA,IAAI,OAAO,CAAC,YAAY,KAAK,cAAc,EAAE;4BAC3C,GAAG,GAAG,OAAO;4BACb,KAAK,GAAG,IAAI;;AACP,6BAAA,IAAI,OAAO,CAAC,YAAY,KAAK,cAAc,EAAE;4BAClD,GAAG,GAAG,OAAO;;AACR,6BAAA,IAAI,OAAO,CAAC,YAAY,KAAK,mBAAmB,EAAE;AACvD,4BAAA,IAAI,CAAC,cAAc,GAAG,CAAC,OAAO,CAAC,KAAK;;AAC/B,6BAAA,IAAI,OAAO,CAAC,YAAY,KAAK,kBAAkB,EAAE;4BACtD,GAAG,GAAG,MAAM;;wBAGd,IAAI,GAAG,EAAE;AACP,4BAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;gCAC7B,GAAG;gCACH,KAAK;gCACL,KAAK,EAAE,OAAO,CAAC,KAAK;AACrB,6BAAA,CAAC;;;oBAEJ;AACF,gBAAA,KAAK,yBAAyB;AAC5B,oBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC7B,wBAAA,GAAG,EAAE,OAAO;wBACZ,KAAK,EAAE,OAAO,CAAC;AAChB,qBAAA,CAAC;oBACF;AACF,gBAAA,KAAK,wBAAwB;AAC3B,oBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC7B,wBAAA,GAAG,EAAE,MAAM;AACX,wBAAA,KAAK,EAAE;AACR,qBAAA,CAAC;oBACF;AACF,gBAAA,KAAK,kCAAkC;AACrC,oBAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AACjC,wBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC7B,4BAAA,GAAG,EAAE,MAAM;4BACX,KAAK,EAAE,IAAI,CAAC;AACb,yBAAA,CAAC;;oBAEJ;AAEF;;AAE0D;AAC1D,gBAAA,KAAK,yBAAyB;oBAAE;AAC9B,wBAAA,IAAI,GAAW;AACf,wBAAA,IAAI,KAAa;AACjB,wBAAA,IAAI,OAAO,CAAC,YAAY,KAAK,cAAc,EAAE;4BAC3C,GAAG,GAAG,OAAO;4BACb,KAAK,GAAG,IAAI;;AACP,6BAAA,IAAI,OAAO,CAAC,YAAY,KAAK,aAAa,EAAE;4BACjD,GAAG,GAAG,OAAO;;AACR,6BAAA,IAAI,OAAO,CAAC,YAAY,KAAK,cAAc,EAAE;4BAClD,GAAG,GAAG,OAAO;;wBAGf,IAAI,GAAG,EAAE;AACP,4BAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;gCAC7B,GAAG;gCACH,KAAK;gCACL,KAAK,EAAE,OAAO,CAAC,KAAK;AACrB,6BAAA,CAAC;;;oBAEJ;AACF,gBAAA,KAAK,wBAAwB;AAC3B,oBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC7B,wBAAA,GAAG,EAAE,MAAM;AACX,wBAAA,KAAK,EAAE;AACR,qBAAA,CAAC;oBACF;AACF,gBAAA;oBACE;;AAEN,SAAC,CAAC;;IAGI,WAAW,GAAA;QACjB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YACvC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YAChC,IAAI,OAAO,EAAE;gBACX,IAAI,OAAO,EAAE;AACX,oBAAA,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,OAAO;AACnC,oBAAA,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC;;AAEzC,gBAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI;AACvC,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CACpC,SAAS,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAC7D,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACvB,oBAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK;oBACxC,IAAI,QAAQ,EAAE;AACZ,wBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC;AACrC,wBAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;AAClC,wBAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE;AACpC,wBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;;AAEjC,iBAAC,CAAC;;;AAGJ,YAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AACvB,SAAC,CAAC;;IAGI,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC5B,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAClF,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAC3C,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAI;YAC7B,MAAM,WAAW,GAEb,EAAE;AAEN,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,gBAAA,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI;;iBAChD;AACL,gBAAA,WAAW,CAAC,GAAG,CAAC,GAAG,CAAA,EAAG,KAAK,EAAE;;;AAI/B,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;AAClB,gBAAA,WAAW,CAAC,IAAI,GAAG,GAAG;;;AAIxB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;AAG1B,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACvB,WAAW;AACX,gBAAA,mBAAmB,EAAE;AACtB,aAAA,CAAC;AACJ,SAAC,CAAC;;IAGI,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC5B,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAClF,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAC3C,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAI;YAC7B,MAAM,WAAW,GAEb,EAAE;AAEN,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC7B,WAAW,CAAC,UAAU,GAAG,CAAA,CAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI;;iBAC5D;gBACL,WAAW,CAAC,UAAU,GAAG,CAAA,CAAE,CAAC,GAAG,CAAA,EAAG,KAAK,CAAA,CAAE;;;AAI3C,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;AAClB,gBAAA,WAAW,CAAC,aAAa,CAAC,GAAG,GAAG;;;AAIlC,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACvB,WAAW;AACX,gBAAA,mBAAmB,EAAE;AACtB,aAAA,CAAC;AACJ,SAAC,CAAC;;IAGI,sBAAsB,GAAA;QAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YAC1C,MAAM,kBAAkB,GAAG,EAAE;YAC7B,MAAM,oBAAoB,GAAG,EAAE;YAC/B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;gBAClC,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;AAC9C,gBAAA,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAA,OAAA,EAAU,IAAI,CAAA,CAAE,CAAC;AACnE,gBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC7B,oBAAA,IAAI,KAAK;AACT,oBAAA,IAAI,GAAG,KAAK,OAAO,EAAE;wBACnB,KAAK,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI;;yBAC/C;AACL,wBAAA,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;;oBAErB,IAAI,KAAK,EAAE;AACT,wBAAA,kBAAkB,CAAC,GAAG,CAAC,GAAG,KAAK;;;AAGnC,gBAAA,IAAI,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACjC,oBAAA,IAAI,KAAK;AACT,oBAAA,IAAI,GAAG,KAAK,cAAc,EAAE;wBAC1B,KAAK,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI;;yBAC/C;AACL,wBAAA,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;;oBAErB,IAAI,KAAK,EAAE;AACT,wBAAA,oBAAoB,CAAC,GAAG,CAAC,GAAG,KAAK;;;AAGvC,aAAC,CAAC;;AAGF,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,EAAE;AACxE,gBAAA,IAAI,CAAC,UAAU,CAAC,oBAAoB,GAAG,oBAAoB;;AAE3D,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAChC,oBAAA,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC;AACrC,oBAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE;;;;AAKxC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,EAAE;AACpE,gBAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,GAAG,kBAAkB;;AAEvD,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAChC,oBAAA,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC;AACrC,oBAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;;;AAGxC,SAAC,CAAC;;AAGI,IAAA,cAAc,CAAC,YAAY,EAAA;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,yBAAyB,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;YACrD,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC;AACjC,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK;AAClF,gBAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAC3C,gBAAA,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE;AACnC,oBAAA,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AAC/B,oBAAA,WAAW,EAAE,YAAY;oBACzB,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc;AACzD,iBAAA,CAAC;;AAGF,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;AAE3B,SAAC,CAAC;;AAGI,IAAA,oBAAoB,CAAC,QAAQ,EAAA;QACnC,MAAM,aAAa,GAAG,EAAE;AACxB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;AACzD,QAAA,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,QAAQ;QAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE;YAC3C,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,aAAa,KAAI;;gBAEhD,IAAI,SAAS,IAAI,aAAa,CAAC,IAAI,KAAK,YAAY,EAAE;oBACpD,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;wBACnC,IAAI,CAAC,GAAG,GAAG,CAAA,EAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAA,CAAE;AACtC,qBAAC,CAAC;;;gBAGJ,IAAI,UAAU,IAAI,aAAa,CAAC,IAAI,KAAK,aAAa,EAAE;oBACtD,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;wBACnC,IAAI,CAAC,GAAG,GAAG,CAAA,EAAG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAA,CAAE;AACvC,qBAAC,CAAC;;AAGJ,gBAAA,IAAI,aAAa,CAAC,IAAI,KAAK,aAAa,EAAE;oBACxC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,KAAI;wBACtC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CACvB,KAAK,CAAC,GAAG;AACN,6BAAA,IAAI,CAAC,CAAC,IAAI,KAAI;AACb,4BAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACZ,gCAAA,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;;AAE9B,4BAAA,OAAO,IAAI,CAAC,IAAI,EAAE;AACpB,yBAAC;AACA,6BAAA,KAAK,CAAC,CAAC,GAAG,KAAI;4BACb,OAAO,CAAC,IAAI,CAAC,CAAA,4BAAA,EAA+B,GAAG,CAAA,CAAE,EAAE,GAAG,CAAC;AACvD,4BAAA,OAAO,IAAI;yBACZ,CAAC,CACL;AACH,qBAAC,CAAC;;AAEN,aAAC,CAAC;;AAEJ,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AAC3B,YAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CACjC,SAAS,CAAC,CAAC,IAAY,KAAI;gBACzB,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,aAAa,KAAI;AAChD,oBAAA,IAAI,aAAa,CAAC,IAAI,KAAK,aAAa,EAAE;wBACxC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,KAAI;AAChD,4BAAA,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAC5D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CACrB;AACH,yBAAC,CAAC;;AAEN,iBAAC,CAAC;AACF,gBAAA,OAAO,EAAE,CAAC,QAAQ,CAAC;aACpB,CAAC,CACH;;AAEH,QAAA,OAAO,EAAE,CAAC,QAAQ,CAAC;;AAGb,IAAA,iBAAiB,CAAC,QAAQ,EAAA;QAChC,MAAM,UAAU,GAAG,EAAE;AACrB,QAAA,IAAI,QAAQ,EAAE,SAAS,EAAE;YACvB,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAI;gBAC1C,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,KAAI;oBAC9B,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAI;wBAC9B,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClC,qBAAC,CAAC;AACJ,iBAAC,CAAC;AACJ,aAAC,CAAC;;AAEJ,QAAA,OAAO,UAAU;;AAGX,IAAA,cAAc,CAAC,QAAQ,EAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,KAAK,EAAE,CACR,CAAC,SAAS,CAAC,MAAK;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,SAAS,CAAC;AAC7D,YAAA,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM;YAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE;gBACxC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;;AAEtD,SAAC,CAAC;;AAEL;;AClZM,MAAM,wBAAwB,GAAG;AACtC,IAAA,QAAQ,EAAE,kBAAkB;AAC5B;;;AAGG;AACH,IAAA,OAAO,EAAE;QACP,EAAE,EAAE,EAAE,mBAAmB,EAAE;QAC3B,EAAE,EAAE,EAAE,SAAS,EAAE;QACjB,EAAE,EAAE,EAAE,uBAAuB,EAAE;QAC/B,EAAE,EAAE,EAAE,oBAAoB,EAAE;QAC5B,EAAE,EAAE,EAAE,oBAAoB,EAAE;QAC5B,EAAE,EAAE,EAAE,iBAAiB,EAAE;QACzB,EAAE,EAAE,EAAE,2BAA2B,EAAE;QACnC,EAAE,EAAE,EAAE,eAAe,EAAE;QACvB,EAAE,EAAE,EAAE,sBAAsB,EAAE;QAC9B,EAAE,EAAE,EAAE,uBAAuB,EAAE;QAC/B,EAAE,EAAE,EAAE,qBAAqB,EAAE;QAC7B,EAAE,EAAE,EAAE,gBAAgB,EAAE;QACxB,EAAE,EAAE,EAAE,mBAAmB,EAAE;QAC3B,EAAE,EAAE,EAAE,kBAAkB,EAAE;QAC1B,EAAE,EAAE,EAAE,kBAAkB,EAAE;AAC3B,KAAA;AACD,IAAA,QAAQ,EAAE,gBAAgB;AAC1B,IAAA,QAAQ,EAAE,gBAAgB;AAC1B,IAAA,kBAAkB,EAAE,EAAE;AACtB,IAAA,oBAAoB,EAAE,EAAE;AACxB,IAAA,OAAO,EAAE;;AAER,KAAA;;;AClCH;AACA;AACA;MAuCa,kBAAkB,CAAA;AAK7B,IAAA,OAAO,CAAC,OAAO,EAAA;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE;YACjC;;AAGF,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;;IAG7B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;+GAdV,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,6FCzC/B,ohFAiDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,KAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,QAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDRa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,ohFAAA,EAAA;8BAIhB,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;;;AE5CH;AACA;AACA;MAwBa,uBAAuB,CAAA;IAKlC,OAAO,CAAC,EAAS,EAAE,OAAO,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd;;QAGF,EAAE,CAAC,wBAAwB,EAAE;AAE7B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;;+GAZlB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,kGC1BpC,g0BAuBM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDGO,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,g0BAAA,EAAA;8BAIrB,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;;;MELU,qBAAqB,CAAA;IAOhC,iBAAiB,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE;AAEhB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;;AAG9B,IAAA,eAAe,CAAC,IAAI,EAAA;QAClB,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE;QAEvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,eAAe,CAAC;;+GAhB5C,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,0GCxBlC,mlGAyDM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDjCO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,mlGAAA,EAAA;8BAInB,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,EAAE,EAAA,CAAA;sBAAV;;;MEbU,6BAA6B,CAAA;IAKxC,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;+GAPV,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,yGChB1C,+jBAcM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDEO,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,+jBAAA,EAAA;8BAI5B,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;;;MEYU,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,gGC/BlC,mkGAwDM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,yBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDzBO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,mkGAAA,EAAA;8BAInB,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;;;AEjBG,MAAO,uBAAwB,SAAQ,cAAc,CAAA;AACzD,IAAA,WAAA,CACU,MAAc,EACd,KAAqB,EACrB,aAAmC,EACnC,oBAAiD,EACjD,SAA2B,EAC3B,YAAmB,EACnB,aAAmC,EAAA;QAG3C,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAIhB,wBAAM,CAAC;QAT7D,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,aAAa,GAAb,aAAa;;AAMvB;;;;AAIG;IACO,WAAW,GAAA;QACnB,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;AACjC,YAAA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;SACnC;;IAGH,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,EAAE;;IAGf,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,EAAE;;+GApCP,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,+ECjBpC,kpdAkTc,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDjSD,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,kpdAAA,EAAA;;;AELvB,MAAM,oBAAoB,GAAG;AAClC,IAAA,QAAQ,EAAE,kBAAkB;AAC5B;;;AAGG;AACH,IAAA,OAAO,EAAE;QACP,EAAE,EAAE,EAAE,gBAAgB,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,iBAAiB,EAAE;QACxF,EAAE,EAAE,EAAE,mBAAmB,EAAE;AAC3B,QAAA,EAAE,EAAE,EAAE,uBAAuB,EAAE,aAAa,EAAE,IAAI,EAAE;AACpD,QAAA;AACE,YAAA,EAAE,EAAE,qBAAqB;AACzB,YAAA,UAAU,EAAE,iBAAiB;AAC7B,YAAA,YAAY,EAAE,iBAAiB;AAChC,SAAA;AACF,KAAA;AACD,IAAA,QAAQ,EAAE,gBAAgB;AAC1B,IAAA,QAAQ,EAAE,gBAAgB;AAC1B,IAAA,kBAAkB,EAAE,EAAE;AACtB,IAAA,oBAAoB,EAAE,EAAE;AACxB,IAAA,OAAO,EAAE;;AAER,KAAA;;;ACbG,MAAO,uBAAwB,SAAQ,cAAc,CAAA;IACzD,WAAA,CACU,aAAmC,EACnC,oBAAiD,EACjD,SAA2B,EAC3B,aAAmC,EACnC,MAAuB,EACvB,KAAqB,EAAA;QAE7B,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAIJ,oBAAM,CAAC;QAPzD,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,KAAK,GAAL,KAAK;;AAKf;;;;AAIG;IACO,WAAW,GAAA;QACnB,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,YAAA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;SACnC;;IAGH,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,EAAE;;IAGf,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,EAAE;;+GAjCP,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,+ECjBpC,0kMAsHA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDrGa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,0kMAAA,EAAA;;;AEJxB,MAAO,kBAAmB,SAAQ,gBAAgB,CAAA;AAAxD,IAAA,WAAA,GAAA;;QAOS,IAAA,CAAA,QAAQ,GAAG,iBAAiB;QAQ3B,IAAA,CAAA,QAAQ,GAAG,EAAE;AAEd,QAAA,IAAA,CAAA,MAAM,GAAiC,IAAI,eAAe,CAAC,OAAO,CAAC;QAElE,IAAA,CAAA,WAAW,GAAG,CAAC;;IAQvB,MAAM,CAAC,EACL,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,GAC/D,EAAA;AACC,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;;QAGhC,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,YAAY,EAAE;;QAGnB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC;AAErD,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,iBAAiB,EAAE;AAC7C,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,OAAO,EAAE,CAAC,GAAG,KAAI;AACf,gBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;;AAEpB,SAAA,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACxB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC;AACpC,gBAAA,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACvD,aAAA,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC1C,SAAC,CAAC;;AAGJ,IAAA,eAAe,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAA;AACrC,QAAA,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;AACd,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;YACrB,IAAI,CAAC,YAAY,EAAE;;aACd;;AAEL,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AAC3B,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,uBAAuB,EAAE;AACnD,gBAAA,MAAM,EAAE;oBACN,mBAAmB,EAAE,CAAC,EAAE;AACzB;aACF,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,eAAe,EAAE,KAAI;;AAEnC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AAE3B,gBAAA,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,KAAK;gBACzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;gBACrC,IAAI,IAAI,GAAG,CAAA,QAAA,EAAW,IAAI,CAAC,KAAK,CAAA,kFAAA,EAAqF,KAAK,CAAA,OAAA,CAAS;AACnI,gBAAA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;oBACpB,IAAI,GAAG,WAAW,IAAI,CAAC,KAAK,CAAA,kFAAA,EAAqF,KAAK,SAAS;;AAGjI,gBAAA,MAAM,SAAS,GAAmB;AAChC,oBAAA,KAAK,EAAE;wBACL,IAAI,EAAE,EAAE,IAAI,EAAE;AACd,wBAAA,SAAS,EAAE,QAAQ,GAAG;AACpB,4BAAA,IAAI,EAAE;yBACP,GAAG;AACL,qBAAA;AACD,oBAAA,OAAO,EAAE;AACP,wBAAA,OAAO,EAAE,CAAC;AACR,gCAAA,MAAM,EAAE;oCACN,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAE;AAC1F,iCAAA;AACD,gCAAA,IAAI,EAAE;6BACP;AACF;iBACF;gBACD,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;;gBAGnD,IAAI,CAAC,WAAW,EAAE;;gBAGlB,IAAI,CAAC,gBAAgB,EAAE;AACzB,aAAC,CAAC;;;IAIE,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB;;;AAGF,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;AACd,QAAA,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC;AACvC,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE;AACjB;AACF,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;;IAGrD,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK;QACtB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,gBAAgB,EAAE;;IAGzB,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAA;QACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;AACzD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YACvB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,gBAAgB,EAAE;;;IAInB,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,aAAa,CAAC;AAC1C,YAAA,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,IAAI,CAAC,aAAa;YAC1B,IAAI,EAAE,IAAI,CAAC,WAAW;AACtB,YAAA,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,IAAI,CAAC,QAAQ;AACpB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;;IAG5D,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,aAAa,CAAC;AAC5C,YAAA,IAAI,EAAE;AACP,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC;AACrC,YAAA,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;YACjD,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;gBAClB,MAAM,EAAE,IAAI,CAAC,QAAQ;AACtB,aAAA;AACF,SAAA,CAAC;;IAGI,YAAY,GAAA;QAClB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;YAC9C,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;AACxC,YAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ;AACzD,YAAA,WAAW,EAAE,UAAU;AACxB,SAAA,CAAC,CAAC;;IAGG,YAAY,GAAA;AAClB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ;QAC7D,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,KAAK,2BAA2B;;AAE1D;;ACtLK,MAAO,kBAAmB,SAAQ,YAAY,CAAA;AAApD,IAAA,WAAA,GAAA;;AACU,QAAA,IAAA,CAAA,UAAU,GAAkB,IAAI,OAAO,EAAE;;IAE1C,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,yBAAyB;AAC5B,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/B,oBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;;AAE/B,oBAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;oBACrB;AAEF,gBAAA,KAAK,4BAA4B;AAC/B,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;oBACtB;AAEF,gBAAA;oBACE;;AAEN,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAI;YAChD,QAAQ,IAAI;AACV,gBAAA,KAAK,mBAAmB;AACtB,oBAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC;oBACxC;AACF,gBAAA,KAAK,4BAA4B;AAC/B,oBAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC;oBAC3C;AACF,gBAAA,KAAK,2BAA2B;AAC9B,oBAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC;oBAC1C;AACF,gBAAA;oBACE;;AAEN,SAAC,CAAC;;AAEL;;ACnCM,MAAM,sBAAsB,GAAG;AACpC,IAAA,QAAQ,EAAE,oBAAoB;AAC9B,IAAA,OAAO,EAAE;QACP,EAAE,EAAE,EAAE,aAAa,EAAE;QACrB,EAAE,EAAE,EAAE,uBAAuB,EAAE;QAC/B,EAAE,EAAE,EAAE,mBAAmB,EAAE;AAC3B,QAAA;AACE,YAAA,EAAE,EAAE,qBAAqB;AACzB,YAAA,UAAU,EAAE,iBAAiB;AAC7B,YAAA,YAAY,EAAE,iBAAiB;AAChC;AACF,KAAA;AACD,IAAA,QAAQ,EAAE,kBAAkB;AAC5B,IAAA,QAAQ,EAAE,kBAAkB;AAC5B,IAAA,kBAAkB,EAAE,EAAE;AACtB,IAAA,oBAAoB,EAAE,EAAE;AACxB,IAAA,OAAO,EAAE;;AAER,KAAA;;;ACTG,MAAO,yBAA0B,SAAQ,cAAc,CAAA;IAC3D,WAAA,CACU,aAAmC,EACnC,oBAAiD,EACjD,aAAmC,EACnC,SAA2B,EAC3B,YAAmB,EAAA;QAE3B,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAIJ,sBAAM,CAAC;QAN3D,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,YAAY,GAAZ,YAAY;;AAKtB;;;;AAIG;IACO,WAAW,GAAA;QACnB,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;AACjC,YAAA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE;SACnC;;IAGH,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,EAAE;;IAGf,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,EAAE;;+GA/BP,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,iFCftC,o1FA+DM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,yBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDhDO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,o1FAAA,EAAA;;;AEZhC,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,KAAI;AACjD,IAAA,IAAI,YAAY,GAAG;;;;;GAKlB;IACD,IAAI,QAAQ,EAAE;AACZ,QAAA,YAAY,GAAG;;;;;;KAMd;;IAEH,MAAM,MAAM,GAAG,EAAE;AACjB,IAAA,IAAI,CAAC;AACL,IAAA,IAAI,CAAC;;AAEL,IAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7B,QAAA,MAAM,CAAC,IAAI,CACT,CAAC,KAAK;AACJ,cAAE;AACF,cAAE,CAAA,UAAA,EAAa,YAAY,CAAA,CAAE,CAChC;;;AAGH,IAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7B,QAAA,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;;AAGjC,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AACxB,CAAC;AAED,mBAAe,CAAC,SAAS,MAAM;AAC7B,IAAA,YAAY,EAAE;AACZ,QAAA,SAAS,EAAE,cAAc;AACzB,QAAA,SAAS,EAAE;;;;;;;AAOR,MAAA,CAAA;AACJ,KAAA;AACD,IAAA,SAAS,EAAE;AACT,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,SAAS,EAAE,CAAA;;;;;;;;;;;;;;;;AAgBT,KAAA;AACH,KAAA;AACD,IAAA,WAAW,EAAE;AACX,QAAA,SAAS,EAAE,gBAAgB;AAC3B,QAAA,SAAS,EAAE;;;AAGH,UAAA,EAAA,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC;;;AAGtC,MAAA,CAAA;AACJ,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE,gBAAgB;AAC3B,QAAA,SAAS,EAAE;;;YAGH,eAAe,CAAC,SAAS,CAAC;;;AAG/B,MAAA,CAAA;AACJ,KAAA;AACD,IAAA,YAAY,EAAE;AACZ,QAAA,SAAS,EAAE,cAAc;AACzB,QAAA,SAAS,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCL,SAAA,CAAA;AACP,KAAA;AACD,IAAA,qBAAqB,EAAE;AACrB,QAAA,SAAS,EAAE,cAAc;AACzB,QAAA,SAAS,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BL,SAAA,CAAA;AACP,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,SAAS,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0FR,MAAA,CAAA;AACJ,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,SAAS,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDP,OAAA,CAAA;AACL,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,SAAS,EAAE,iBAAiB;AAC5B,QAAA,SAAS,EAAE,CAAA;;;;;;;;;;;;;;;;AAgBT,KAAA;AACH,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,SAAS,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmJP,OAAA,CAAA;AACL,KAAA;AACD,IAAA,YAAY,EAAE;AACZ,QAAA,SAAS,EAAE,cAAc;AACzB,QAAA,SAAS,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDP,OAAA,CAAA;AACL,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,SAAS,EAAE,QAAQ;AACnB,QAAA,SAAS,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiHT,KAAA,CAAA;AACH,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,SAAS,EAAE,QAAQ;AACnB,QAAA,SAAS,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;AAoBT,KAAA,CAAA;AACH,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,SAAS,EAAE,CAAA;;;;;;AAMP,OAAA,CAAA;AACL,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,SAAS,EAAE,eAAe;AAC1B,QAAA,SAAS,EAAE,CAAA;;;;;;;;;;;;;;;AAeT,KAAA,CAAA;AACH,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,SAAS,EAAE,iBAAiB;AAC5B,QAAA,SAAS,EAAE,CAAA;;;;;;;;;;;;;AAaT,KAAA,CAAA;AACH,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,SAAS,EAAE,eAAe;AAC1B,QAAA,SAAS,EAAE,CAAA;;;;;;;;;;;;;;;;AAgBT,KAAA;AACH;AACF,CAAA,CAAC;;AC3uBF;AAgCA,MAAM,UAAU,GAAG;IACjB,2BAA2B;IAC3B,uBAAuB;IACvB,wBAAwB;IACxB,wBAAwB;IACxB,qBAAqB;IACrB,oBAAoB;IACpB,uBAAuB;IACvB,uBAAuB;IACvB,yBAAyB;IACzB,2BAA2B;IAC3B,mBAAmB;IACnB,kBAAkB;IAClB,uBAAuB;IACvB,yBAAyB;IACzB,qBAAqB;IACrB,6BAA6B;IAC7B,qBAAqB;IACrB,kCAAkC;CACnC;MAaY,0BAA0B,CAAA;IACrC,WAAA,CACE,UAAiC,EACjC,MAA4B,EAAA;;;AAI5B,QAAA,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAK;YAC/B,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;AACjD,YAAA,MAAM,EAAE,eAAe,EAAE,GAAG,aAAa;YACzC,aAAa,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,YAAY;AAC9D,YAAA,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC;AAC5C,SAAC,CAAC;;+GAZO,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,iBA/BrC,2BAA2B;YAC3B,uBAAuB;YACvB,wBAAwB;YACxB,wBAAwB;YACxB,qBAAqB;YACrB,oBAAoB;YACpB,uBAAuB;YACvB,uBAAuB;YACvB,yBAAyB;YACzB,2BAA2B;YAC3B,mBAAmB;YACnB,kBAAkB;YAClB,uBAAuB;YACvB,yBAAyB;YACzB,qBAAqB;YACrB,6BAA6B;YAC7B,qBAAqB;AACrB,YAAA,kCAAkC,aAMhC,YAAY;YACZ,YAAY;YACZ,qBAAqB;YACrB,yBAAyB;AACzB,YAAA,0BAA0B,aA3B5B,2BAA2B;YAC3B,uBAAuB;YACvB,wBAAwB;YACxB,wBAAwB;YACxB,qBAAqB;YACrB,oBAAoB;YACpB,uBAAuB;YACvB,uBAAuB;YACvB,yBAAyB;YACzB,2BAA2B;YAC3B,mBAAmB;YACnB,kBAAkB;YAClB,uBAAuB;YACvB,yBAAyB;YACzB,qBAAqB;YACrB,6BAA6B;YAC7B,qBAAqB;YACrB,kCAAkC,CAAA,EAAA,CAAA,CAAA;AAcvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,YARnC,YAAY;YACZ,YAAY;YACZ,qBAAqB;YACrB,yBAAyB;YACzB,0BAA0B,CAAA,EAAA,CAAA,CAAA;;4FAIjB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAXtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,UAAU;AACxB,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,YAAY;wBACZ,qBAAqB;wBACrB,yBAAyB;wBACzB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;AACV,iBAAA;;;AC/DD;;ACAA;;AAEG;AAEH;;ACJA;;AAEG;;;;"}