ng-prime-tools 1.0.22 → 1.0.23

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":"ng-prime-tools.mjs","sources":["../../../projects/ng-prime-tools/src/lib/utils/text.util.ts","../../../projects/ng-prime-tools/src/lib/pipes/custom-currency.ts","../../../projects/ng-prime-tools/src/lib/pipes/custom-date.pipe.ts","../../../projects/ng-prime-tools/src/lib/pt-advanced-prime-table/pt-advanced-prime-table.component.ts","../../../projects/ng-prime-tools/src/lib/pt-advanced-prime-table/pt-advanced-prime-table.component.html","../../../projects/ng-prime-tools/src/lib/pt-advanced-prime-table/pt-advanced-prime-table.module.ts","../../../projects/ng-prime-tools/src/lib/enums/table-type.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/search-criteria-type.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/form-input-type.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/button-color.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/input-validation.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/badge-type.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/public-api.ts","../../../projects/ng-prime-tools/src/lib/multi-search-criteria/multi-search-criteria.component.ts","../../../projects/ng-prime-tools/src/lib/multi-search-criteria/multi-search-criteria.component.html","../../../projects/ng-prime-tools/src/lib/multi-search-criteria/multi-search-criteria.module.ts","../../../projects/ng-prime-tools/src/lib/pt-check-box-input/pt-check-box-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-check-box-input/pt-check-box-input.component.html","../../../projects/ng-prime-tools/src/lib/utils/date.util.ts","../../../projects/ng-prime-tools/src/lib/pt-date-input/pt-date.service.ts","../../../projects/ng-prime-tools/src/lib/pt-date-input/pt-date-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-date-input/pt-date-input.component.html","../../../projects/ng-prime-tools/src/lib/pt-number-input/pt-number-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-number-input/pt-number-input.component.html","../../../projects/ng-prime-tools/src/lib/pt-switch-input/pt-switch-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-switch-input/pt-switch-input.component.html","../../../projects/ng-prime-tools/src/lib/pt-text-area-input/pt-text-area-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-text-area-input/pt-text-area-input.component.html","../../../projects/ng-prime-tools/src/lib/pt-text-input/pt-text-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-text-input/pt-text-input.component.html","../../../projects/ng-prime-tools/src/lib/pt-dropdown/pt-dropdown.component.ts","../../../projects/ng-prime-tools/src/lib/pt-dropdown/pt-dropdown.component.html","../../../projects/ng-prime-tools/src/lib/pt-multi-select/pt-multi-select.component.ts","../../../projects/ng-prime-tools/src/lib/pt-multi-select/pt-multi-select.component.html","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-dynamic-form-field/pt-dynamic-form-field.component.ts","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-dynamic-form-field/pt-dynamic-form-field.component.html","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-form-builder.component.ts","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-form-builder.component.html","../../../projects/ng-prime-tools/src/lib/pt-check-box-input/pt-check-box-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-number-input/pt-number-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-switch-input/pt-switch-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-text-input/pt-text-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-text-area-input/pt-text-area-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-date-input/pt-date-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-dropdown/pt-dropdown.module.ts","../../../projects/ng-prime-tools/src/lib/pt-multi-select/pt-multi-select.module.ts","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-dynamic-form-field/pt-dynamic-form-field-module.ts","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-form-builder.module.ts","../../../projects/ng-prime-tools/src/lib/pt-metric-card/pt-metric-card.component.ts","../../../projects/ng-prime-tools/src/lib/pt-metric-card/pt-metric-card.component.html","../../../projects/ng-prime-tools/src/lib/pt-metric-card/pt-metric-card.module.ts","../../../projects/ng-prime-tools/src/lib/pt-metric-card-group/pt-metric-card-group.component.ts","../../../projects/ng-prime-tools/src/lib/pt-metric-card-group/pt-metric-card-group.component.html","../../../projects/ng-prime-tools/src/lib/pt-metric-card-group/pt-metric-card-group.module.ts","../../../projects/ng-prime-tools/src/lib/pt-chart/pt-chart.component.ts","../../../projects/ng-prime-tools/src/lib/pt-chart/pt-chart.component.html","../../../projects/ng-prime-tools/src/lib/pt-chart/pt-chart.module.ts","../../../projects/ng-prime-tools/src/lib/pt-menu/pt-menu.component.ts","../../../projects/ng-prime-tools/src/lib/pt-menu/pt-menu.component.html","../../../projects/ng-prime-tools/src/lib/pt-card/pt-card.component.ts","../../../projects/ng-prime-tools/src/lib/pt-card/pt-card.component.html","../../../projects/ng-prime-tools/src/lib/pt-menu/pt-menu.module.ts","../../../projects/ng-prime-tools/src/lib/pt-card/pt-card.module.ts","../../../projects/ng-prime-tools/src/lib/pt-menu-fancy/pt-menu-fancy.component.ts","../../../projects/ng-prime-tools/src/lib/pt-menu-fancy/pt-menu-fancy.component.html","../../../projects/ng-prime-tools/src/lib/pt-nav-bar-menu/pt-nav-bar-menu.component.ts","../../../projects/ng-prime-tools/src/lib/pt-nav-bar-menu/pt-nav-bar-menu.component.html","../../../projects/ng-prime-tools/src/lib/pt-menu-fancy/pt-menu-fancy.module.ts","../../../projects/ng-prime-tools/src/lib/pt-nav-bar-menu/pt-nav-bar-menu.module.ts","../../../projects/ng-prime-tools/src/lib/pt-side-bar-menu/pt-side-bar-menu.component.ts","../../../projects/ng-prime-tools/src/lib/pt-side-bar-menu/pt-side-bar-menu.component.html","../../../projects/ng-prime-tools/src/lib/pt-side-bar-menu/pt-side-bar-menu.module.ts","../../../projects/ng-prime-tools/src/lib/pt-footer/pt-footer.component.ts","../../../projects/ng-prime-tools/src/lib/pt-footer/pt-footer.component.html","../../../projects/ng-prime-tools/src/lib/pt-bread-crumb/pt-bread-crumb.service.ts","../../../projects/ng-prime-tools/src/lib/pt-bread-crumb/pt-bread-crumb.component.ts","../../../projects/ng-prime-tools/src/lib/pt-bread-crumb/pt-bread-crumb.component.html","../../../projects/ng-prime-tools/src/lib/pt-page-skeleton/pt-page-skeleton.component.ts","../../../projects/ng-prime-tools/src/lib/pt-page-skeleton/pt-page-skeleton.component.html","../../../projects/ng-prime-tools/src/lib/pt-footer/pt-footer.module.ts","../../../projects/ng-prime-tools/src/lib/pt-bread-crumb/pt-bread-crumb.module.ts","../../../projects/ng-prime-tools/src/lib/pt-page-skeleton/pt-page-skeleton.module.ts","../../../projects/ng-prime-tools/src/lib/pt-button/pt-button.component.ts","../../../projects/ng-prime-tools/src/lib/pt-button/pt-button.component.html","../../../projects/ng-prime-tools/src/lib/pt-button/pt-button.module.ts","../../../projects/ng-prime-tools/src/lib/pt-login-page/pt-login-card/pt-login-card.component.ts","../../../projects/ng-prime-tools/src/lib/pt-login-page/pt-login-card/pt-login-card.component.html","../../../projects/ng-prime-tools/src/lib/pt-login-page/pt-login-page.component.ts","../../../projects/ng-prime-tools/src/lib/pt-login-page/pt-login-page.component.html","../../../projects/ng-prime-tools/src/lib/pt-login-page/pt-login-page.module.ts","../../../projects/ng-prime-tools/src/lib/pt-dialog/pt-dialog.component.ts","../../../projects/ng-prime-tools/src/lib/pt-dialog/pt-dialog.component.html","../../../projects/ng-prime-tools/src/lib/pt-dialog/pt-dialog.module.ts","../../../projects/ng-prime-tools/src/lib/ng-prime-tools.module.ts","../../../projects/ng-prime-tools/src/lib/pt-line-chart/pt-line-chart.component.ts","../../../projects/ng-prime-tools/src/lib/pt-line-chart/pt-line-chart.component.html","../../../projects/ng-prime-tools/src/lib/pt-line-chart/pt-line-chart.module.ts","../../../projects/ng-prime-tools/src/lib/models/public-api.ts","../../../projects/ng-prime-tools/src/ng-prime-tools.ts"],"sourcesContent":["import { TableColumn } from '../models';\n\n/**\n * Calculates the width required for a column based on the header text (column title).\n * It uses the Canvas API to measure text width dynamically.\n *\n * @param {TableColumn} col - The column metadata containing the header title and code.\n * @param {string} [font='16px Arial'] - The font to use for measurement (defaults to '16px Arial').\n * @returns {number} - The calculated width of the column in pixels.\n */\nexport function calculateTextWidth(\n col: TableColumn,\n font: string = '16px Arial'\n): number {\n // Create a canvas context for measuring text\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n\n if (!context) {\n return 100; // Fallback width if canvas context is not available\n }\n\n // Set the font to match the provided font or the document body font\n context.font = font || getComputedStyle(document.body).font;\n\n // Measure the header text width\n const headerWidth = context.measureText(col.title).width;\n\n // Return the width with some padding\n return Math.ceil(headerWidth + 20); // Add padding for extra space\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'customCurrency',\n standalone: true,\n})\nexport class CustomCurrencyPipe implements PipeTransform {\n transform(\n value: number,\n currency?: string,\n decimalPlaces?: number,\n thousandSeparator: 'comma' | 'space' = 'comma',\n decimalSeparator: 'comma' | 'dot' = 'dot'\n ): string {\n let formattedValue: string;\n\n if (decimalPlaces !== undefined) {\n formattedValue = value.toFixed(decimalPlaces);\n } else {\n formattedValue = value.toString();\n }\n\n const thousandSeparatorChar = thousandSeparator === 'space' ? ' ' : ',';\n const decimalSeparatorChar = decimalSeparator === 'comma' ? ',' : '.';\n\n formattedValue = formattedValue.replace(\n /\\B(?=(\\d{3})+(?!\\d))/g,\n thousandSeparatorChar\n );\n\n if (decimalSeparatorChar === ',') {\n formattedValue = formattedValue.replace('.', ',');\n }\n\n if (currency) {\n let formattedCurrency: string;\n\n switch (currency) {\n case 'MAD':\n formattedCurrency = `${formattedValue} DH`;\n break;\n case 'USD':\n formattedCurrency = `$${formattedValue}`;\n break;\n default:\n formattedCurrency = `${formattedValue} ${currency}`;\n }\n\n return formattedCurrency;\n }\n\n return formattedValue;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'customDate',\n})\nexport class CustomDatePipe implements PipeTransform {\n transform(value: any, format: string = 'dd/MM/yyyy'): string | null {\n if (!value) return null;\n\n if (typeof value === 'string') {\n const parts = value.split('/');\n if (parts.length === 3) {\n const day = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const year = parseInt(parts[2], 10);\n const date = new Date(year, month, day);\n\n if (isNaN(date.getTime())) return null;\n\n const options: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n };\n return new Intl.DateTimeFormat('en-GB', options).format(date);\n }\n } else if (value instanceof Date) {\n // If the value is already a Date object\n const options: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n };\n return new Intl.DateTimeFormat('en-GB', options).format(value);\n }\n\n return null;\n }\n}\n","import { Component, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { Table } from 'primeng/table';\nimport {\n ImageStyle,\n TableColumn,\n TableTypeEnum,\n TitleStyle,\n} from '../../public-api';\nimport { calculateTextWidth } from '../utils/text.util';\n\n@Component({\n selector: 'pt-advanced-prime-table',\n templateUrl: './pt-advanced-prime-table.component.html',\n styleUrl: './pt-advanced-prime-table.component.css',\n})\nexport class PTAdvancedPrimeTableComponent implements OnInit {\n // Inputs\n @Input() data: any[] = [];\n @Input() columns: TableColumn[] = [];\n @Input() totalRecords: number = 0;\n @Input() rowsPerPage: number[] = [];\n @Input() hasSearchFilter: boolean = false;\n @Input() hasExportExcel: boolean = false;\n @Input() hasExportPDF: boolean = false;\n @Input() hasColumnFilter: boolean = false;\n @Input() isPaginated: boolean = false;\n @Input() actions: any[] = [];\n @Input() isSortable: boolean = false;\n @Input() loading: boolean = false;\n @Input() maxHeight: string | null = null;\n\n // Outputs: Events emitted to the parent component\n @Output() filter = new EventEmitter();\n @Output() search = new EventEmitter<any>();\n @Output() exportExcelEvent = new EventEmitter<void>();\n @Output() exportPdfEvent = new EventEmitter<void>();\n\n @ViewChild('dt', { static: false }) dt!: Table;\n\n public TableTypeEnum = TableTypeEnum;\n searchValue: string = '';\n\n private validCurrencyCodes = ['USD', 'EUR', 'MAD'];\n iconWidth = 77;\n\n // Component state properties\n isDelete: boolean = false;\n isEdit: boolean = false;\n rows: number = 0;\n\n // Data management properties\n dataMap = new Map();\n map = new Map();\n optionEntries = new Map<string, any[]>();\n optionValues: any[] = [];\n globalFilterFields: string[] = [];\n\n // CRUD operation handlers\n Delete: (value: any) => void = () => {};\n initEditableRow: (data: any) => void = () => {};\n saveEditableRow: (data: any) => void = () => {};\n cancelEditableRow: (item: any) => void = () => {};\n hasGroupedColumns: boolean = false;\n constructor() {}\n\n ngOnInit(): void {\n this.hasGroupedColumns = this.columns.some(\n (col) => col.children && col.children.length > 0\n );\n // Transform the date fields based on column metadata\n this.data = this.formatingDateFields();\n this.globalFilterFields = this.columns\n .filter((col) => col.code !== undefined && col.isFilter !== false)\n .map((col) => col.code as string);\n this.initializePagination();\n this.initializeActions();\n\n // Set default value for isSortable\n this.columns.forEach((col) => {\n if (col.type === TableTypeEnum.ACTION) {\n col.isEditable = false;\n col.isFilter = false;\n col.isSortable = false;\n }\n\n if (col.isSortable === undefined) {\n col.isSortable = true;\n }\n\n if (col.isEditable === undefined) {\n col.isEditable = true;\n }\n\n if (col.isFilter !== false && col.code !== undefined) {\n this.globalFilterFields.push(col.code);\n }\n\n if (!col.width) {\n col.width = this.calculateColumnWidth(col);\n }\n });\n }\n\n // Function to calculate column width based on text in header and data\n private calculateColumnWidth(col: TableColumn): string {\n const calculatedWidth = calculateTextWidth(col, col.title);\n const totalWidth = calculatedWidth + this.iconWidth + 20;\n return `${totalWidth}px`;\n }\n\n getHeaderWidth(col: TableColumn): string {\n // Remove 'px' from col.width and convert it to a number\n const widthWithoutPx = parseInt(col.width?.replace('px', '') || '0', 10);\n\n // Add 20 to the calculated width\n const headerWidth = widthWithoutPx + 20;\n\n // Return the new width in 'px'\n return `${headerWidth}px`;\n }\n\n // Initialization Methods\n private formatingDateFields(): any {\n return this.data.map((item) => {\n const transformedItem = { ...item };\n this.columns.forEach((column) => {\n if (\n column.type === TableTypeEnum.DATE &&\n column.code !== undefined &&\n transformedItem[column.code] !== undefined\n ) {\n const dateValue = this.parseDate(transformedItem[column.code]);\n transformedItem[column.code] = dateValue ? dateValue : null;\n }\n });\n return transformedItem;\n });\n }\n\n clear(table: Table) {\n table.clear();\n this.searchValue = '';\n }\n\n private parseDate(dateString: string): Date | null {\n const parts = dateString.split('/');\n if (parts.length === 3) {\n // Assuming date format is DD/MM/YYYY\n const day = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const year = parseInt(parts[2], 10);\n const date = new Date(year, month, day);\n return isNaN(date.getTime()) ? null : date;\n }\n return null;\n }\n\n private initializePagination(): void {\n if (this.isPaginated) {\n // Check if rowsPerPage is undefined or an empty array\n if (!this.rowsPerPage || this.rowsPerPage.length === 0) {\n this.rowsPerPage = [20, 30, 40];\n }\n this.rows = this.rowsPerPage[0];\n }\n }\n\n private initializeActions(): void {\n if (this.actions) {\n this.actions.forEach((action) => {\n switch (action.code) {\n case 'delete':\n this.isDelete = true;\n this.Delete = (value: any) => action.action(value);\n break;\n case 'edit':\n this.initializeEditActions(action);\n break;\n default:\n this.isDelete = false;\n this.isEdit = false;\n }\n });\n }\n }\n\n private initializeEditActions(action: any): void {\n this.isEdit = true;\n this.initEditableRow = (data: any) => action.action.init(data);\n this.saveEditableRow = (data: any) => {\n const record = this.map.get(data.id);\n action.action.save(data, record);\n this.dataMap.clear();\n };\n this.cancelEditableRow = (item: any) => console.log(item);\n }\n\n onChange(event: Event, id: number, key: any) {\n const target = event.target as HTMLInputElement;\n this.changeHandler(id, key, target.value);\n }\n\n changeHandler(id: number, key: any, value: any) {\n let column = this.columns.find((item) => item.code === key);\n if (!this.map.get(id)) {\n if (column?.type === TableTypeEnum.DATE) {\n let date = this.parseDate(value);\n this.dataMap.set(key, date);\n } else {\n this.dataMap.set(key, value);\n }\n this.map.set(id, new Map(this.dataMap));\n } else {\n let mapItem = this.map.get(id);\n if (column?.type === TableTypeEnum.DATE) {\n let date = this.parseDate(value);\n mapItem.set(key, date);\n } else {\n mapItem.set(key, value);\n }\n }\n }\n\n getColumnFilterType(column: TableColumn): string {\n switch (column.type) {\n case TableTypeEnum.STRING:\n return 'text';\n case TableTypeEnum.AMOUNT:\n return 'numeric';\n case TableTypeEnum.NUMBER:\n return 'numeric';\n case TableTypeEnum.DATE:\n return 'date';\n case TableTypeEnum.MULTISELECT:\n return 'multiSelect';\n case TableTypeEnum.BOOLEAN:\n return 'boolean';\n default:\n return 'text';\n }\n }\n\n // State Check Methods\n isEditable(key: string): boolean {\n let column = this.columns.find((item) => item.code === key);\n return column?.isEditable !== false;\n }\n\n isMultiSelect(key: any): boolean {\n let column = this.columns.find((item) => item.code === key);\n if (\n column?.type === TableTypeEnum.MULTISELECT &&\n column.options &&\n column.code !== undefined\n ) {\n this.optionEntries = new Map([\n [column.code, Object.values(column.options)],\n ]);\n this.optionValues = this.optionEntries.get(key) || [];\n return true;\n }\n return false;\n }\n\n isDatePicker(key: any): boolean {\n return (\n this.columns.find((item) => item.code === key)?.type ===\n TableTypeEnum.DATE\n );\n }\n\n // Utility Methods\n dateConverter(value: any): string {\n return new Date(value).toLocaleDateString('en-US');\n }\n\n getCurrencySymbol(column: TableColumn): string | undefined {\n return column.type === TableTypeEnum.AMOUNT &&\n column.currency &&\n this.isValidCurrencyCode(column.currency)\n ? column.currency\n : undefined;\n }\n\n private isValidCurrencyCode(currencyCode: string): boolean {\n return this.validCurrencyCodes.includes(currencyCode);\n }\n\n filterGlobal(event: Event): void {\n const target = event.target as HTMLInputElement;\n const value = target.value.toLowerCase();\n\n // Create a new filtered dataset\n const filteredData = this.data.filter((item) => {\n return this.globalFilterFields.some((field) => {\n const column = this.columns.find((col) => col.code === field);\n if (!column) {\n return false;\n }\n\n // Handle different column types\n if (column.type === TableTypeEnum.DATE) {\n const itemDate = this.formatDate(item[field]);\n return itemDate && itemDate.includes(value);\n } else if (\n column.type === TableTypeEnum.AMOUNT ||\n column.type === TableTypeEnum.NUMBER\n ) {\n return (\n item[field] && item[field].toString().toLowerCase().includes(value)\n );\n } else {\n return (\n item[field] && item[field].toString().toLowerCase().includes(value)\n );\n }\n });\n });\n\n // Update the table's value\n this.dt.value = filteredData;\n }\n\n private formatDate(date: any): string {\n if (!date) return '';\n if (date instanceof Date) {\n // Handle Date object\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const year = date.getFullYear().toString();\n return `${day}/${month}/${year}`;\n } else if (typeof date === 'string') {\n // Handle string date\n const parts = date.split('/');\n if (parts.length === 3) {\n return `${parts[0]}/${parts[1]}/${parts[2]}`;\n } else {\n // Handle partial dates\n return date;\n }\n }\n return '';\n }\n\n exportExcel() {\n this.exportExcelEvent.emit();\n }\n\n exportPdf() {\n this.exportPdfEvent.emit();\n }\n\n getImageStyle(style: TitleStyle | ImageStyle | undefined): {\n [key: string]: string;\n } {\n if (style) {\n const imageStyle: { [key: string]: string } = {\n width: (style as ImageStyle).width || 'auto',\n height: (style as ImageStyle).height || 'auto',\n };\n\n // Fallback to empty string if margin, marginLeft, or marginRight are undefined\n if ((style as ImageStyle).margin) {\n imageStyle.margin = (style as ImageStyle).margin!;\n }\n\n if ((style as ImageStyle).marginLeft) {\n imageStyle.marginLeft = (style as ImageStyle).marginLeft!;\n }\n\n if ((style as ImageStyle).marginRight) {\n imageStyle.marginRight = (style as ImageStyle).marginRight!;\n }\n\n if ((style as ImageStyle).marginTop) {\n imageStyle.marginTop = (style as ImageStyle).marginTop!;\n }\n\n if ((style as ImageStyle).marginBottom) {\n imageStyle.marginBottom = (style as ImageStyle).marginBottom!;\n }\n\n return imageStyle;\n }\n\n return {};\n }\n\n getTitleStyle(style: TitleStyle | ImageStyle | undefined): {\n [key: string]: string;\n } {\n if (style) {\n return {\n color: style.color || 'inherit',\n fontSize: (style as TitleStyle).fontSize || 'inherit',\n textAlign: (style as TitleStyle).position || 'left',\n };\n }\n return {};\n }\n}\n","<div class=\"pt-advanced-prime-table table-container\">\n <p-table\n #dt\n [value]=\"data\"\n [loading]=\"loading\"\n [rows]=\"rows\"\n [paginator]=\"isPaginated\"\n [globalFilterFields]=\"globalFilterFields\"\n [rowsPerPageOptions]=\"rowsPerPage\"\n dataKey=\"id\"\n styleClass=\"p-datatable-gridlines\"\n styleClass=\"p-datatable-striped\"\n editMode=\"row\"\n [scrollable]=\"true\"\n [scrollHeight]=\"maxHeight !== null ? maxHeight : undefined\"\n >\n <ng-template pTemplate=\"caption\">\n <div class=\"flex\">\n <div>\n <h3>Total: {{ totalRecords }}</h3>\n </div>\n\n <div>\n <!-- Clear filters -->\n <button\n *ngIf=\"hasSearchFilter\"\n pButton\n icon=\"pi pi-filter-slash\"\n class=\"p-button-rounded p-button-text\"\n (click)=\"clear(dt)\"\n title=\"Clear filters\"\n ></button>\n\n <!-- Export to Excel Button -->\n <button\n *ngIf=\"hasExportExcel\"\n pButton\n icon=\"pi pi-file-excel\"\n class=\"p-button-rounded p-button-text\"\n (click)=\"exportExcel()\"\n title=\"Export to Excel\"\n ></button>\n\n <!-- Export to PDF Button -->\n <button\n *ngIf=\"hasExportPDF\"\n pButton\n icon=\"pi pi-file-pdf\"\n class=\"p-button-rounded p-button-text\"\n (click)=\"exportPdf()\"\n title=\"Export to PDF\"\n ></button>\n </div>\n <div class=\"ml-auto\" *ngIf=\"hasSearchFilter\">\n <!-- Add this wrapper div with ml-auto class -->\n <p-iconField iconPosition=\"left\" class=\"ml-auto\">\n <p-inputIcon>\n <i class=\"pi pi-search\"></i>\n </p-inputIcon>\n <input\n pInputText\n type=\"text\"\n [(ngModel)]=\"searchValue\"\n (input)=\"filterGlobal($event)\"\n placeholder=\"Search keyword\"\n />\n </p-iconField>\n </div>\n </div>\n </ng-template>\n\n <ng-template pTemplate=\"header\">\n <tr class=\"sticky-header\">\n <ng-container *ngFor=\"let col of columns\">\n <th\n *ngIf=\"!col.children; else groupHeader\"\n [style.width]=\"getHeaderWidth(col)\"\n [style.padding]=\"'0px'\"\n colspan=\"1\"\n >\n <ng-container\n *ngIf=\"isSortable && col.isSortable !== false; else noSortHeader\"\n >\n <th\n pSortableColumn=\"{{ col.code }}\"\n [style.width]=\"getHeaderWidth(col)\"\n >\n <div\n class=\"header-container d-flex align-items-center justify-content-between\"\n [style.width]=\"col.width\"\n [style.padding]=\"'0px'\"\n [style.margin]=\"'10px'\"\n >\n <span>{{ col.title }}</span>\n <div\n class=\"icons d-flex align-items-center\"\n [style.width]=\"'77px'\"\n >\n <p-sortIcon field=\"{{ col.code }}\" />\n <ng-container *ngIf=\"col.isFilter !== false\">\n <p-columnFilter\n *ngIf=\"col.type === 'AMOUNT'\"\n display=\"menu\"\n [field]=\"col.code\"\n [type]=\"getColumnFilterType(col)\"\n [currency]=\"getCurrencySymbol(col)\"\n ></p-columnFilter>\n\n <p-columnFilter\n *ngIf=\"col.type !== 'AMOUNT'\"\n display=\"menu\"\n [field]=\"col.code\"\n display=\"menu\"\n [type]=\"getColumnFilterType(col)\"\n [type]=\"getColumnFilterType(col)\"\n >\n <ng-template\n pTemplate=\"filter\"\n let-value\n let-filterCallback=\"filterCallback\"\n *ngIf=\"getColumnFilterType(col) === 'date'\"\n >\n <p-calendar\n [ngModel]=\"value\"\n (ngModelChange)=\"filterCallback($event)\"\n [dateFormat]=\"'dd/mm/yy'\"\n ></p-calendar>\n </ng-template>\n\n <ng-template\n pTemplate=\"filter\"\n let-value\n let-filterCallback=\"filterCallback\"\n *ngIf=\"getColumnFilterType(col) === 'multiSelect'\"\n >\n <p-multiSelect\n [options]=\"col.filterOptions\"\n [ngModel]=\"value\"\n (ngModelChange)=\"filterCallback($event)\"\n [display]=\"'chip'\"\n placeholder=\"Select\"\n class=\"custom-multiselect\"\n ></p-multiSelect>\n </ng-template>\n </p-columnFilter>\n </ng-container>\n </div>\n </div>\n </th>\n </ng-container>\n <ng-template #noSortHeader>\n <th>\n <div class=\"header-container\">\n <span>{{ col.title }}</span>\n <ng-container *ngIf=\"col.isFilter !== false\">\n <p-columnFilter\n *ngIf=\"col.type === 'AMOUNT'\"\n display=\"menu\"\n [field]=\"col.code\"\n [type]=\"getColumnFilterType(col)\"\n [currency]=\"getCurrencySymbol(col)\"\n ></p-columnFilter>\n\n <p-columnFilter\n *ngIf=\"col.type !== 'AMOUNT'\"\n display=\"menu\"\n [field]=\"col.code\"\n [type]=\"getColumnFilterType(col)\"\n >\n <ng-template\n pTemplate=\"filter\"\n let-value\n let-filterCallback=\"filterCallback\"\n *ngIf=\"getColumnFilterType(col) === 'date'\"\n >\n <p-calendar\n [ngModel]=\"value\"\n (ngModelChange)=\"filterCallback($event)\"\n [dateFormat]=\"'dd/mm/yy'\"\n ></p-calendar>\n </ng-template>\n\n <ng-template\n pTemplate=\"filter\"\n let-value\n let-filterCallback=\"filterCallback\"\n *ngIf=\"getColumnFilterType(col) === 'multiSelect'\"\n >\n <p-multiSelect\n [options]=\"col.filterOptions\"\n [ngModel]=\"value\"\n (ngModelChange)=\"filterCallback($event)\"\n [display]=\"'chip'\"\n placeholder=\"Select\"\n class=\"custom-multiselect\"\n ></p-multiSelect>\n </ng-template>\n </p-columnFilter>\n </ng-container>\n </div>\n </th>\n </ng-template>\n </th>\n <!-- Grouped headers -->\n <ng-template #groupHeader>\n <th\n [attr.colspan]=\"col.children?.length\"\n [style.width]=\"getHeaderWidth(col)\"\n [style.text-align]=\"'center'\"\n >\n <span>{{ col.title }}</span>\n </th>\n </ng-template>\n </ng-container>\n </tr>\n <!-- Child headers (Second Row) -->\n <tr *ngIf=\"hasGroupedColumns\">\n <ng-container *ngFor=\"let col of columns\">\n <ng-container *ngIf=\"col.children\">\n <th\n *ngFor=\"let child of col.children\"\n [style.width]=\"getHeaderWidth(child)\"\n [style.padding]=\"'0px'\"\n >\n <!-- Sortable/Filterable header logic for child columns -->\n </th>\n </ng-container>\n </ng-container>\n </tr>\n </ng-template>\n\n <!-- Empty message template -->\n <ng-template pTemplate=\"emptymessage\">\n <div class=\"empty-message\">\n <i class=\"pi pi-info-circle\"></i>\n <p>No records available to display.</p>\n </div>\n </ng-template>\n\n <ng-template\n pTemplate=\"body\"\n let-data\n let-editing=\"editing\"\n let-ri=\"rowIndex\"\n >\n <!-- Render a table row and make it editable if `isEdit` is true -->\n <tr *ngIf=\"!loading\" [pEditableRow]=\"isEdit ? data : null\">\n <!-- Loop through each column -->\n <ng-container *ngFor=\"let col of columns\">\n <!-- Check if the column has children -->\n <ng-container *ngIf=\"!col.children; else childColumns\">\n <!-- Render a single cell for columns without children -->\n <ng-container\n *ngIf=\"col.code !== undefined && data[col.code] !== undefined\"\n >\n <td\n *ngIf=\"isEditable(col.code); else normalTD\"\n [style.width]=\"getHeaderWidth(col)\"\n >\n <!-- Editable input for the column -->\n <ng-container *ngIf=\"isMultiSelect(col.code); else datePicker\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <p-multiSelect\n appendTo=\"body\"\n [ngModel]=\"data[col.code]\"\n [style]=\"{ width: '100%' }\"\n (ngModelChange)=\"\n changeHandler(data.id, col.code, $event)\n \"\n [options]=\"optionValues\"\n ></p-multiSelect>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <div class=\"multi-select-container\">\n <ng-container *ngFor=\"let rec of data[col.code]\">\n <p-tag [value]=\"rec\"></p-tag>\n </ng-container>\n </div>\n </ng-template>\n </p-cellEditor>\n </ng-container>\n\n <ng-template #datePicker>\n <ng-container\n *ngIf=\"isDatePicker(col.code); else normalInput\"\n >\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <p-calendar\n [inputId]=\"data[col.code]\"\n [ngModel]=\"data[col.code]\"\n (ngModelChange)=\"\n changeHandler(data.id, col.code, $event)\n \"\n [dateFormat]=\"'dd/mm/yy'\"\n ></p-calendar>\n </ng-template>\n <ng-template pTemplate=\"output\">\n {{ data[col.code] | customDate }}\n </ng-template>\n </p-cellEditor>\n </ng-container>\n </ng-template>\n\n <ng-template #normalInput>\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <input\n pInputText\n type=\"text\"\n [ngModel]=\"data[col.code]\"\n (change)=\"onChange($event, data.id, col.code)\"\n />\n </ng-template>\n <ng-template pTemplate=\"output\">\n <ng-container\n *ngIf=\"\n col.type === TableTypeEnum.AMOUNT;\n else normalOutput\n \"\n >\n {{\n data[col.code]\n | customCurrency\n : getCurrencySymbol(col)\n : col.decimalPlaces\n : col.thousandSeparator\n : col.decimalSeparator\n }}\n </ng-container>\n <ng-template #normalOutput>\n {{ data[col.code] }}\n </ng-template>\n </ng-template>\n </p-cellEditor>\n </ng-template>\n </td>\n\n <ng-template #normalTD>\n <td [style.width]=\"getHeaderWidth(col)\">\n <ng-container\n *ngIf=\"col.type === TableTypeEnum.COMPOSED; else normalText\"\n >\n <div class=\"composed-cell\">\n <ng-container\n *ngFor=\"\n let composedName of col.composedNames;\n let i = index\n \"\n >\n <!-- Check if the composedType is IMAGE -->\n <ng-container\n *ngIf=\"\n col.composedTypes &&\n col.composedTypes[i] === TableTypeEnum.IMAGE\n \"\n >\n <img\n [src]=\"data[col.code][composedName]\"\n alt=\"composed-img\"\n class=\"composed-image\"\n [ngStyle]=\"getImageStyle(col.composedStyles?.[composedName])\"\n />\n </ng-container>\n\n <!-- Check if the composedType is STRING -->\n <ng-container\n *ngIf=\"\n col.composedTypes &&\n col.composedTypes[i] === TableTypeEnum.STRING\n \"\n >\n <span\n class=\"composed-text\"\n [ngStyle]=\"getTitleStyle(col.composedStyles?.[composedName])\"\n >\n {{ data[col.code][composedName] }}\n </span>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"col.type === TableTypeEnum.AMOUNT; else normalText\"\n >\n {{\n data[col.code]\n | customCurrency\n : getCurrencySymbol(col)\n : col.decimalPlaces\n : col.thousandSeparator\n : col.decimalSeparator\n }}\n </ng-container>\n\n <ng-template #normalText>\n <ng-container *ngIf=\"col.type === TableTypeEnum.STRING\">\n {{ data[col.code] }}\n </ng-container>\n </ng-template>\n </td>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- Render child columns if the column has children -->\n <ng-template #childColumns>\n <ng-container *ngFor=\"let child of col.children\">\n <ng-container\n *ngIf=\"\n child.code !== undefined && data[child.code] !== undefined\n \"\n >\n <td [style.width]=\"getHeaderWidth(child)\">\n <!-- Render editable or normal cells for child columns -->\n <ng-container\n *ngIf=\"isEditable(child.code); else childNormalTD\"\n >\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <input\n pInputText\n type=\"text\"\n [ngModel]=\"data[child.code]\"\n (change)=\"onChange($event, data.id, child.code)\"\n />\n </ng-template>\n <ng-template pTemplate=\"output\">\n {{ data[child.code] }}\n </ng-template>\n </p-cellEditor>\n </ng-container>\n\n <ng-template #childNormalTD>\n {{ data[child.code] }}\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n\n <!-- Render action buttons if there are any actions defined -->\n <td *ngIf=\"actions?.length\">\n <div class=\"action-buttons-container\">\n <div *ngIf=\"isDelete\">\n <button\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-trash\"\n (click)=\"Delete(data.id)\"\n class=\"p-button-rounded p-button-text\"\n ></button>\n </div>\n <div>\n <button\n pInitEditableRow\n *ngIf=\"!editing\"\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-pencil\"\n (click)=\"initEditableRow(data)\"\n class=\"p-button-rounded p-button-text\"\n ></button>\n <button\n *ngIf=\"editing\"\n pSaveEditableRow\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-check\"\n (click)=\"saveEditableRow(data)\"\n class=\"p-button-rounded p-button-text\"\n ></button>\n <button\n *ngIf=\"editing\"\n pCancelEditableRow\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-times\"\n (click)=\"cancelEditableRow(data)\"\n class=\"p-button-rounded p-button-text\"\n ></button>\n </div>\n </div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n</div>\n","import { NgModule } from '@angular/core';\nimport { PTAdvancedPrimeTableComponent } from './pt-advanced-prime-table.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { CalendarModule } from 'primeng/calendar';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { TableModule } from 'primeng/table';\nimport { TagModule } from 'primeng/tag';\nimport { CustomCurrencyPipe } from '../pipes/custom-currency';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { CustomDatePipe } from '../pipes/custom-date.pipe';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\n\n@NgModule({\n declarations: [PTAdvancedPrimeTableComponent, CustomDatePipe],\n imports: [\n CommonModule,\n TableModule,\n InputTextModule,\n ButtonModule,\n CalendarModule,\n FormsModule,\n MultiSelectModule,\n TagModule,\n CustomCurrencyPipe,\n IconFieldModule,\n InputIconModule,\n ProgressSpinnerModule,\n ],\n exports: [PTAdvancedPrimeTableComponent],\n})\nexport class PTAdvancedPrimeTableModule {}\n","export enum TableTypeEnum {\n DATE = 'DATE',\n STRING = 'STRING',\n AMOUNT = 'AMOUNT',\n NUMBER = 'NUMBER',\n MULTISELECT = 'MULTISELECT',\n CURRENCY = 'CURRENCY',\n BOOLEAN = 'BOOLEAN',\n ACTION = 'ACTION',\n COMPOSED = 'COMPOSED',\n IMAGE = 'IMAGE',\n}\n","export enum SearchCriteriaTypeEnum {\n DATE = 'DATE',\n DATERANGE = 'DATERANGE',\n STRING = 'STRING',\n AMOUNT = 'AMOUNT',\n NUMBER = 'NUMBER',\n MULTISELECT = 'MULTISELECT',\n}\n","export enum FormInputTypeEnum {\n DATE = 'DATE',\n TEXT = 'TEXT',\n TEXTAREA = 'TEXTAREA',\n AMOUNT = 'AMOUNT',\n NUMBER = 'NUMBER',\n MULTISELECT = 'MULTISELECT',\n SELECT = 'SELECT',\n CURRENCY = 'CURRENCY',\n CHECKBOX = 'CHECKBOX',\n SWITCH = 'SWITCH',\n PASSWORD = 'PASSWORD',\n}\n","export enum ButtonColorEnum {\n PRIMARY = 'p-button-primary',\n SECONDARY = 'p-button-secondary',\n SUCCESS = 'p-button-success',\n INFO = 'p-button-info',\n WARNING = 'p-button-warning',\n DANGER = 'p-button-danger',\n}\n","export enum InputValidationEnum {\n ONLY_LETTERS = '^[A-Za-z ]+$',\n ONLY_NUMBERS = '^[0-9]+$',\n LETTERS_AND_NUMBERS = '^[A-Za-z0-9 ]+$',\n PHONE_NUMBER = '^[0-9 ]+$',\n}\n","export enum BadgeType {\n Info = 'info',\n Danger = 'danger',\n Warning = 'warning',\n}\n\nexport const BadgeTypeStyles = {\n [BadgeType.Info]: {\n color: 'white',\n backgroundColor: '#17a2b8', // Info blue\n },\n [BadgeType.Danger]: {\n color: 'white',\n backgroundColor: '#dc3545', // Danger red\n },\n [BadgeType.Warning]: {\n color: 'white',\n backgroundColor: '#ffc107', // Warning yellow\n },\n};\n","// projects/ng-prime-tools/src/lib/enums/public_api.ts\nexport * from './table-type.enum';\nexport * from './search-criteria-type.enum';\nexport * from './form-input-type.enum';\nexport * from './button-color.enum';\nexport * from './input-validation.enum';\nexport * from './badge-type.enum';\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { SearchCriteriaTypeEnum } from '../enums';\nimport { SearchCriteria } from '../models/search-criteria.model';\nimport { FilterOption } from '../models/filter-option.model';\n\n@Component({\n selector: 'multi-search-criteria',\n templateUrl: './multi-search-criteria.component.html',\n styleUrls: ['./multi-search-criteria.component.css'],\n})\nexport class MultiSearchCriteriaComponent implements OnInit {\n SearchCriteriaTypeEnum = SearchCriteriaTypeEnum;\n\n @Input() title: String = '';\n @Input() criteria: SearchCriteria[] = [];\n @Input() inputsPerRow: number = 3;\n @Input() data: any[] = [];\n @Input() mode: 'static' | 'dynamic' = 'static'; // Add mode input\n @Output() filteredData = new EventEmitter<any[]>();\n @Output() searchCriteria = new EventEmitter<{ [key: string]: any }>();\n\n selectAll: boolean = false;\n selected: FilterOption[] = [];\n\n ngOnInit() {\n this.criteria.forEach((item) => {\n if (\n item.type === SearchCriteriaTypeEnum.MULTISELECT &&\n item.filterOptions\n ) {\n this.selected = [...item.filterOptions];\n item.value = this.selected;\n }\n });\n }\n\n getCurrencySymbol(input: SearchCriteria): string {\n return input.currency || 'EUR';\n }\n\n search(): void {\n if (this.mode === 'dynamic') {\n const criteriaValues: { [key: string]: any } = {};\n this.criteria.forEach((criterion) => {\n if (criterion.value !== null && criterion.value !== undefined) {\n criteriaValues[criterion.code] = criterion.value;\n }\n });\n this.searchCriteria.emit(criteriaValues);\n } else {\n const filtered = this.data.filter((item) => {\n return this.criteria.every((criterion) => {\n if (criterion.type === SearchCriteriaTypeEnum.DATERANGE) {\n const [startDate, endDate] = criterion.value || [\n undefined,\n undefined,\n ];\n const itemDate = this.parseDate(\n item[criterion.code] || item['date']\n );\n if (!startDate && !endDate) {\n return true;\n }\n if (itemDate === null) {\n return false;\n }\n const parsedStartDate = startDate\n ? this.parseDate(startDate)\n : null;\n const parsedEndDate = endDate ? this.parseDate(endDate) : null;\n return (\n (!parsedStartDate || itemDate >= parsedStartDate) &&\n (!parsedEndDate || itemDate <= parsedEndDate)\n );\n } else if (criterion.type === SearchCriteriaTypeEnum.AMOUNT) {\n return !criterion.value || item[criterion.code] === criterion.value;\n } else if (criterion.type === SearchCriteriaTypeEnum.MULTISELECT) {\n return (\n !criterion.value ||\n criterion.value.some(\n (option: FilterOption) => option.label === item[criterion.code]\n )\n );\n } else if (criterion.type === SearchCriteriaTypeEnum.STRING) {\n return (\n !criterion.value ||\n item[criterion.code]\n .toString()\n .toLowerCase()\n .includes(criterion.value.toString().toLowerCase())\n );\n }\n return true;\n });\n });\n this.filteredData.emit(filtered);\n }\n }\n\n clear(): void {\n this.criteria.forEach((input) => {\n input.value = null;\n });\n this.filteredData.emit(this.data);\n }\n\n onSelectAllChange(event: any, criterion: SearchCriteria) {\n this.selectAll = event.checked;\n criterion.value = event.checked ? [...(criterion.filterOptions ?? [])] : [];\n }\n\n private parseDate(dateString: string | Date | null | undefined): Date | null {\n if (!dateString) {\n return null;\n }\n\n if (Object.prototype.toString.call(dateString) === '[object Date]') {\n return dateString as Date;\n }\n\n const parts = (dateString as string).split('/');\n if (parts.length === 3) {\n const day = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const year = parseInt(parts[2], 10);\n const date = new Date(year, month, day);\n return isNaN(date.getTime()) ? null : date;\n }\n return null;\n }\n}\n","<p-panel\n header=\"{{ title }}\"\n [toggleable]=\"true\"\n [collapsed]=\"true\"\n class=\"multi-search-criteria\"\n>\n <div\n class=\"criteria-container\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + inputsPerRow + ', 1fr)' }\"\n >\n <div *ngFor=\"let input of criteria\" class=\"criteria-item\">\n <label class=\"bsc-label\">{{ input.title }}</label>\n\n <ng-container [ngSwitch]=\"input.type\">\n <p-calendar\n *ngSwitchCase=\"SearchCriteriaTypeEnum.DATERANGE\"\n [(ngModel)]=\"input.value\"\n selectionMode=\"range\"\n [dateFormat]=\"'dd/mm/yy'\"\n class=\"full-width-input\"\n [showIcon]=\"true\"\n (ngModelChange)=\"input.value = $event\"\n ></p-calendar>\n <p-calendar\n *ngSwitchCase=\"SearchCriteriaTypeEnum.DATE\"\n [ngModel]=\"input.value\"\n (ngModelChange)=\"input.value = $event\"\n [dateFormat]=\"'dd/mm/yy'\"\n [showIcon]=\"true\"\n class=\"full-width-input\"\n ></p-calendar>\n <input\n *ngSwitchCase=\"SearchCriteriaTypeEnum.STRING\"\n type=\"text\"\n pInputText\n [(ngModel)]=\"input.value\"\n class=\"full-width-input\"\n />\n\n <p-inputNumber\n *ngSwitchCase=\"SearchCriteriaTypeEnum.AMOUNT\"\n type=\"number\"\n [(ngModel)]=\"input.value\"\n mode=\"decimal\"\n inputId=\"minmaxfraction\"\n [minFractionDigits]=\"2\"\n [maxFractionDigits]=\"5\"\n [placeholder]=\"getCurrencySymbol(input)\"\n class=\"full-width-input\"\n ></p-inputNumber>\n\n <p-inputNumber\n *ngSwitchCase=\"SearchCriteriaTypeEnum.NUMBER\"\n type=\"number\"\n [(ngModel)]=\"input.value\"\n class=\"full-width-input\"\n ></p-inputNumber>\n\n <p-multiSelect\n *ngSwitchCase=\"SearchCriteriaTypeEnum.MULTISELECT\"\n [options]=\"input.filterOptions\"\n [display]=\"'chip'\"\n placeholder=\"Select\"\n [selectAll]=\"selectAll\"\n [(ngModel)]=\"input.value\"\n optionLabel=\"label\"\n (onSelectAllChange)=\"onSelectAllChange($event, input)\"\n class=\"custom-multiselect full-width-input\"\n ></p-multiSelect>\n </ng-container>\n </div>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"footer-buttons\">\n <p-button\n label=\"Effacer\"\n icon=\"pi pi-times\"\n (click)=\"clear()\"\n class=\"footer-button\"\n ></p-button>\n <p-button\n label=\"Rechercher\"\n icon=\"pi pi-search\"\n (click)=\"search()\"\n class=\"footer-button\"\n ></p-button>\n </div>\n </ng-template>\n</p-panel>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { CalendarModule } from 'primeng/calendar';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { PanelModule } from 'primeng/panel';\nimport { MultiSearchCriteriaComponent } from './multi-search-criteria.component';\n\n@NgModule({\n declarations: [MultiSearchCriteriaComponent],\n imports: [\n CommonModule,\n CalendarModule,\n InputTextModule,\n MultiSelectModule,\n ButtonModule,\n FormsModule,\n InputNumberModule,\n PanelModule,\n ],\n exports: [MultiSearchCriteriaComponent],\n})\nexport class MultiSearchCriteriaModule {}\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n FormGroup,\n FormControl,\n ValidatorFn,\n AbstractControl,\n} from '@angular/forms';\nimport { FormCheckBoxField } from '../models/form-check-field.model';\n\n@Component({\n selector: 'pt-check-box-input',\n templateUrl: './pt-check-box-input.component.html',\n styleUrls: ['./pt-check-box-input.component.css'],\n})\nexport class PTCheckBoxInputComponent implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() formField!: FormCheckBoxField;\n\n ngOnInit() {\n this.setupControl();\n }\n\n setupControl() {\n let control = this.formGroup.get(this.formField.name) as FormControl;\n if (!control) {\n control = new FormControl(null);\n this.formGroup.addControl(this.formField.name, control);\n }\n\n setTimeout(() => {\n if (this.formField.disabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n }\n });\n\n const validators = this.getValidators();\n control.setValidators(validators);\n control.updateValueAndValidity({ emitEvent: false });\n }\n\n private getValidators(): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n if (this.formField.required) {\n validators.push(this.requireChoiceValidator());\n }\n return validators;\n }\n\n private requireChoiceValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } | null => {\n return control.value !== null && control.value !== undefined\n ? null\n : { requiredChoice: true };\n };\n }\n\n getErrorMessage(): string {\n const control = this.formGroup.get(this.formField.name);\n if (control?.errors?.['requiredChoice'] && !control?.dirty) {\n return this.formField.errorText || `${this.formField.label} is required`;\n }\n return '';\n }\n}\n","<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{ width: formField.width || '100%' }\"\n *ngIf=\"!formField.hidden\"\n>\n <div class=\"checkbox-container\">\n <p-checkbox\n [formControlName]=\"formField.name\"\n [binary]=\"true\"\n [label]=\"formField.label || ''\"\n ></p-checkbox>\n </div>\n <div\n *ngIf=\"\n formGroup.get(formField.name)?.errors &&\n (formGroup.get(formField.name)?.touched ||\n formGroup.get(formField.name)?.dirty)\n \"\n class=\"error-container\"\n >\n <small class=\"p-error\">{{ getErrorMessage() }}</small>\n </div>\n</div>\n","// date.util.ts\n\nimport { DateFormatType } from '../types/date-format.type';\nimport { DateInputType } from '../types/date-input.type';\n\nexport function getDefaultDateFormat(\n dateInputType: DateInputType\n): DateFormatType {\n switch (dateInputType) {\n case 'time':\n return 'HH:mm';\n case 'datetime':\n return 'dd/mm/yy';\n case 'date':\n default:\n return 'dd/mm/yy';\n }\n}\n\nexport function getDefaultPlaceholder(dateInputType: DateInputType): string {\n switch (dateInputType) {\n case 'time':\n return 'Select time';\n case 'datetime':\n return 'Select date and time';\n case 'date':\n default:\n return 'Select date';\n }\n}\n\nexport function parseDate(dateString: string, format: DateFormatType): Date {\n const parts = dateString.match(/\\d+/g);\n if (!parts || parts.length < 2)\n throw new Error(`Invalid date string: ${dateString}`);\n\n let day, month, year, hour, minute, second;\n switch (format) {\n case 'dd/mm/yy':\n case 'dd-mm-yy':\n case 'dd.mm.yy':\n [day, month, year] = parts;\n break;\n case 'mm/dd/yy':\n [month, day, year] = parts;\n break;\n case 'yy/mm/dd':\n [year, month, day] = parts;\n break;\n case 'HH:mm':\n [hour, minute] = parts;\n return new Date(0, 0, 0, Number(hour), Number(minute));\n case 'HH:mm:ss':\n [hour, minute, second] = parts;\n return new Date(0, 0, 0, Number(hour), Number(minute), Number(second));\n default:\n throw new Error(`Unsupported date format: ${format}`);\n }\n\n year = year.length === 2 ? `20${year}` : year;\n return new Date(\n Number(year),\n Number(month) - 1,\n Number(day),\n Number(hour || 0),\n Number(minute || 0),\n Number(second || 0)\n );\n}\n\nexport function validateTimeValue(\n value: string,\n dateFormat: DateFormatType,\n valueType: 'minValue' | 'maxValue',\n hourFormat: '12' | '24'\n): void {\n const timeFormat = dateFormat.includes('ss') ? 'HH:mm:ss' : 'HH:mm';\n const timeParts = value.match(/\\d+/g);\n\n if (!timeParts || timeParts.length !== (timeFormat === 'HH:mm:ss' ? 3 : 2)) {\n throw new Error(\n `Invalid ${valueType} \"${value}\" for time format \"${timeFormat}\".`\n );\n }\n\n const [hour, minute, second] = timeParts.map(Number);\n const maxHour = hourFormat === '12' ? 12 : 23;\n if (\n hour < 0 ||\n hour > maxHour ||\n minute < 0 ||\n minute > 59 ||\n (second !== undefined && (second < 0 || second > 59))\n ) {\n throw new Error(\n `Invalid ${valueType} \"${value}\". Time must be between 00:00 and ${maxHour}:59.`\n );\n }\n}\n","// pt-date.service.ts\nimport { Injectable } from '@angular/core';\nimport { DateFormatType } from '../types/date-format.type';\nimport { DateInputType } from '../types/date-input.type';\nimport { getDefaultDateFormat, validateTimeValue } from '../utils/date.util';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PTDateService {\n constructor() {}\n\n // Assign default date format based on input type\n assignDefaultDateFormat(\n dateInputType: DateInputType,\n currentFormat?: DateFormatType\n ): DateFormatType {\n return currentFormat || getDefaultDateFormat(dateInputType);\n }\n\n // Validate date format and input type compatibility\n validateDateFormatAndType(\n dateFormat: DateFormatType,\n dateInputType: DateInputType,\n minValue?: string,\n maxValue?: string,\n hourFormat: '12' | '24' = '24'\n ): void {\n const dateOnlyFormats: DateFormatType[] = [\n 'dd/mm/yy',\n 'dd-mm-yy',\n 'dd.mm.yy',\n 'mm/dd/yy',\n 'yy/mm/dd',\n ];\n\n const timeOnlyFormats: DateFormatType[] = ['HH:mm', 'HH:mm:ss'];\n\n const dateTimeFormats: DateFormatType[] = dateOnlyFormats;\n\n switch (dateInputType) {\n case 'date':\n if (!dateOnlyFormats.includes(dateFormat)) {\n throw new Error(\n `Invalid dateFormat \"${dateFormat}\" for dateInputType \"date\".`\n );\n }\n break;\n case 'time':\n if (!timeOnlyFormats.includes(dateFormat)) {\n throw new Error(\n `Invalid dateFormat \"${dateFormat}\" for dateInputType \"time\".`\n );\n }\n if (minValue) {\n validateTimeValue(minValue, dateFormat, 'minValue', hourFormat);\n }\n if (maxValue) {\n validateTimeValue(maxValue, dateFormat, 'maxValue', hourFormat);\n }\n break;\n case 'datetime':\n if (!dateTimeFormats.includes(dateFormat)) {\n throw new Error(\n `Invalid dateFormat \"${dateFormat}\" for dateInputType \"datetime\".`\n );\n }\n break;\n case 'range':\n if (!dateOnlyFormats.includes(dateFormat)) {\n throw new Error(\n `Invalid dateFormat \"${dateFormat}\" for dateInputType \"range\".`\n );\n }\n break;\n default:\n throw new Error(`Unsupported dateInputType: ${dateInputType}`);\n }\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { getDefaultPlaceholder, parseDate } from '../utils/date.util';\nimport { DateFormatType } from '../types/date-format.type';\nimport { DateInputType } from '../types/date-input.type';\nimport { PTDateService } from './pt-date.service';\nimport { FormDateField } from '../models/form-date-field.model';\n\n@Component({\n selector: 'pt-date-input',\n templateUrl: './pt-date-input.component.html',\n styleUrls: ['./pt-date-input.component.css'],\n})\nexport class PTDateInputComponent implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() formField!: FormDateField;\n\n minDate: Date | null = null;\n maxDate: Date | null = null;\n defaultPlaceholder: string = 'Select date';\n defaultDateFormat: DateFormatType = 'dd/mm/yy';\n\n constructor(private dateService: PTDateService) {}\n\n ngOnInit() {\n this.defaultDateFormat = this.dateService.assignDefaultDateFormat(\n (this.formField.dateInputType as DateInputType) || 'date',\n this.formField.dateFormat\n );\n\n this.setupControl();\n this.initializeDateLimits();\n\n try {\n this.dateService.validateDateFormatAndType(\n this.defaultDateFormat,\n (this.formField.dateInputType as DateInputType) || 'date',\n this.formField.minValue,\n this.formField.maxValue,\n this.formField.hourFormat || '24'\n );\n } catch (error) {\n if (error instanceof Error) {\n console.error(error.message);\n } else {\n console.error('An unknown error occurred.');\n }\n }\n\n this.defaultPlaceholder = getDefaultPlaceholder(\n (this.formField.dateInputType as DateInputType) || 'date'\n );\n }\n\n setupControl() {\n let control = this.formGroup.get(this.formField.name) as FormControl;\n if (!control) {\n control = new FormControl(null);\n this.formGroup.addControl(this.formField.name, control);\n }\n\n setTimeout(() => {\n if (this.formField.disabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n }\n });\n control.setValidators(this.getValidators());\n control.updateValueAndValidity({ emitEvent: false });\n }\n\n initializeDateLimits() {\n const dateFormat = this.formField.dateFormat as DateFormatType;\n\n if (this.formField.minValue) {\n this.minDate = parseDate(this.formField.minValue, dateFormat);\n }\n if (this.formField.maxValue) {\n this.maxDate = parseDate(this.formField.maxValue, dateFormat);\n }\n }\n\n private getValidators() {\n const validators = [];\n if (this.formField.required) {\n validators.push(Validators.required);\n }\n return validators;\n }\n\n getErrorMessage(): string {\n const control = this.formGroup.get(this.formField.name);\n if (control?.hasError('required')) {\n return this.formField.errorText || `${this.formField.label} is required`;\n }\n return '';\n }\n}\n","<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{ width: formField.width || '100%' }\"\n *ngIf=\"!formField.hidden\"\n>\n <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n <p-calendar\n [formControlName]=\"formField.name\"\n [placeholder]=\"formField.placeholder || defaultPlaceholder\"\n [dateFormat]=\"formField.dateFormat || defaultDateFormat\"\n [showIcon]=\"true\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [showTime]=\"\n formField.dateInputType === 'datetime' ||\n formField.dateInputType === 'time'\n \"\n [timeOnly]=\"formField.dateInputType === 'time'\"\n [hourFormat]=\"formField.hourFormat || '24'\"\n [selectionMode]=\"formField.dateInputType === 'range' ? 'range' : 'single'\"\n ></p-calendar>\n <div\n *ngIf=\"\n formGroup.get(formField.name)?.invalid &&\n formGroup.get(formField.name)?.touched\n \"\n >\n <small class=\"p-error\">{{ getErrorMessage() }}</small>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n FormGroup,\n Validators,\n ValidatorFn,\n FormControl,\n} from '@angular/forms';\nimport { InputValidationEnum } from '../enums/input-validation.enum';\nimport { FormNumberField } from '../models/form-number-field.model';\n\n@Component({\n selector: 'pt-number-input',\n templateUrl: './pt-number-input.component.html',\n styleUrls: ['./pt-number-input.component.css'],\n})\nexport class PTNumberInputComponent implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() formField!: FormNumberField;\n\n ngOnInit() {\n this.setupControl();\n }\n\n setupControl() {\n const control = this.formGroup.get(this.formField.name) as FormControl;\n if (control) {\n const validators = this.getValidators();\n control.setValidators(validators);\n\n // Manage the disabled state directly\n setTimeout(() => {\n if (this.formField.disabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n }\n\n control.updateValueAndValidity({ emitEvent: false });\n });\n }\n }\n\n private getValidators(): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n if (this.formField.required) {\n validators.push(Validators.required);\n }\n if (this.formField.minValue !== undefined) {\n const minValue = Number(this.formField.minValue);\n if (!isNaN(minValue)) {\n validators.push(Validators.min(minValue));\n } else {\n console.error(\n `Invalid minValue: ${this.formField.minValue} is not a number.`\n );\n }\n }\n if (this.formField.maxValue !== undefined) {\n const maxValue = Number(this.formField.maxValue);\n if (!isNaN(maxValue)) {\n validators.push(Validators.max(maxValue));\n } else {\n console.error(\n `Invalid maxValue: ${this.formField.maxValue} is not a number.`\n );\n }\n }\n if (this.formField.inputValidation) {\n validators.push(\n this.validateWithInputValidation(this.formField.inputValidation)\n );\n }\n return validators;\n }\n\n private validateWithInputValidation(\n inputValidation: InputValidationEnum\n ): ValidatorFn {\n return Validators.pattern(new RegExp(inputValidation));\n }\n\n getErrorMessage(): string {\n const control = this.formGroup.get(this.formField.name);\n if (control?.hasError('required')) {\n return this.formField.errorText || `${this.formField.label} is required`;\n } else if (control?.hasError('min')) {\n return `${this.formField.label} must be at least ${this.formField.minValue}`;\n } else if (control?.hasError('max')) {\n return `${this.formField.label} must be at most ${this.formField.maxValue}`;\n } else if (control?.hasError('pattern')) {\n return `${this.formField.label} is invalid`;\n }\n return '';\n }\n}\n","<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{ width: formField.width || '100%' }\"\n *ngIf=\"!formField.hidden\"\n>\n <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n <p-inputGroup>\n <ng-container\n *ngIf=\"!formField.iconPosition || formField.iconPosition === 'left'\"\n >\n <p-inputGroupAddon *ngIf=\"formField.iconClass || formField.currency\">\n <i *ngIf=\"formField.iconClass\" [ngClass]=\"formField.iconClass\"></i>\n <span *ngIf=\"!formField.iconClass && formField.currency\">\n {{ formField.currency }}\n </span>\n </p-inputGroupAddon>\n <p-inputNumber\n [formControlName]=\"formField.name\"\n mode=\"decimal\"\n [locale]=\"formField.numberFormat || undefined\"\n [useGrouping]=\"formField.numberFormat ? true : false\"\n [minFractionDigits]=\"formField.decimalDigits || 0\"\n [maxFractionDigits]=\"formField.decimalDigits || 0\"\n [placeholder]=\"formField.placeholder || ''\"\n ></p-inputNumber>\n </ng-container>\n <ng-container *ngIf=\"formField.iconPosition === 'right'\">\n <p-inputNumber\n [formControlName]=\"formField.name\"\n mode=\"decimal\"\n [locale]=\"formField.numberFormat || undefined\"\n [useGrouping]=\"formField.numberFormat ? true : false\"\n [minFractionDigits]=\"formField.decimalDigits || 0\"\n [maxFractionDigits]=\"formField.decimalDigits || 0\"\n [placeholder]=\"formField.placeholder || ''\"\n ></p-inputNumber>\n <p-inputGroupAddon *ngIf=\"formField.iconClass || formField.currency\">\n <i *ngIf=\"formField.iconClass\" [ngClass]=\"formField.iconClass\"></i>\n <span *ngIf=\"!formField.iconClass && formField.currency\">\n {{ formField.currency }}\n </span>\n </p-inputGroupAddon>\n </ng-container>\n </p-inputGroup>\n <div\n *ngIf=\"\n formGroup.get(formField.name)?.invalid &&\n formGroup.get(formField.name)?.touched\n \"\n >\n <small class=\"p-error\">{{ getErrorMessage() }}</small>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n FormGroup,\n FormControl,\n ValidatorFn,\n AbstractControl,\n} from '@angular/forms';\nimport { FormSwitchField } from '../models/form-switch-field.model';\n\n@Component({\n selector: 'pt-switch-input',\n templateUrl: './pt-switch-input.component.html',\n styleUrls: ['./pt-switch-input.component.css'],\n})\nexport class PTSwitchInputComponent implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() formField!: FormSwitchField;\n\n ngOnInit() {\n this.setupControl();\n }\n\n setupControl() {\n let control = this.formGroup.get(this.formField.name) as FormControl;\n if (!control) {\n // Initialize control with false indicating not activated\n control = new FormControl(this.formField.required ? null : false);\n this.formGroup.addControl(this.formField.name, control);\n }\n\n // Apply validators and manage disabled state\n control.setValidators(this.getValidators());\n setTimeout(() => {\n if (this.formField.disabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n }\n control.updateValueAndValidity({ emitEvent: false });\n });\n }\n\n private getValidators(): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n if (this.formField.required) {\n validators.push(this.requireChoiceValidator());\n }\n return validators;\n }\n\n private requireChoiceValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } | null => {\n return control.value !== null && control.value !== undefined\n ? null\n : { requiredChoice: true };\n };\n }\n\n getErrorMessage(): string {\n const control = this.formGroup.get(this.formField.name);\n if (control?.errors?.['requiredChoice'] && !control?.dirty) {\n return this.formField.errorText || `${this.formField.label} is required`;\n }\n return '';\n }\n}\n","<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{ width: formField.width || '100%' }\"\n *ngIf=\"!formField.hidden\"\n>\n <div class=\"switch-container\" style=\"display: flex; align-items: center\">\n <p-inputSwitch [formControlName]=\"formField.name\"></p-inputSwitch>\n <label *ngIf=\"formField.label\" style=\"margin-left: 8px\">{{\n formField.label\n }}</label>\n </div>\n <div\n *ngIf=\"\n formGroup.get(formField.name)?.errors &&\n (formGroup.get(formField.name)?.touched ||\n formGroup.get(formField.name)?.dirty)\n \"\n class=\"error-container\"\n >\n <small class=\"p-error\">{{ getErrorMessage() }}</small>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n FormGroup,\n Validators,\n FormControl,\n ValidatorFn,\n} from '@angular/forms';\nimport { InputValidationEnum } from '../enums/input-validation.enum';\nimport { FormTextAreaField } from '../models/form-text-area-field.model';\n\n@Component({\n selector: 'pt-text-area-input',\n templateUrl: './pt-text-area-input.component.html',\n styleUrls: ['./pt-text-area-input.component.css'],\n})\nexport class PTTextAreaInputComponent implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() formField!: FormTextAreaField;\n characterCount: number = 0;\n\n ngOnInit() {\n this.setupControl();\n }\n\n setupControl() {\n const control = this.formGroup.get(this.formField.name) as FormControl;\n if (control) {\n const validators = this.getValidators();\n control.setValidators(validators);\n\n // Manage the disabled state here\n setTimeout(() => {\n if (this.formField.disabled) {\n control.disable();\n } else {\n control.enable();\n }\n\n control.updateValueAndValidity();\n });\n // Subscribe to value changes to update character count\n control.valueChanges.subscribe((value) => {\n this.characterCount = value ? value.length : 0;\n });\n }\n }\n\n private getValidators(): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n if (this.formField.required) {\n validators.push(Validators.required);\n }\n if (this.formField.minLength !== undefined) {\n validators.push(Validators.minLength(this.formField.minLength));\n }\n if (this.formField.maxLength !== undefined) {\n validators.push(Validators.maxLength(this.formField.maxLength));\n }\n if (this.formField.inputValidation) {\n validators.push(\n this.validateWithInputValidation(this.formField.inputValidation)\n );\n }\n return validators;\n }\n\n private validateWithInputValidation(\n inputValidation: InputValidationEnum\n ): ValidatorFn {\n return Validators.pattern(new RegExp(inputValidation));\n }\n\n getErrorMessage(): string {\n const control = this.formGroup.get(this.formField.name);\n if (control?.hasError('required')) {\n return this.formField.errorText || `${this.formField.label} is required`;\n } else if (control?.hasError('minlength')) {\n return `${this.formField.label} must be at least ${this.formField.minLength} characters long`;\n } else if (control?.hasError('maxlength')) {\n return `${this.formField.label} must be at most ${this.formField.maxLength} characters long`;\n } else if (control?.hasError('pattern')) {\n return `${this.formField.label} is invalid`;\n }\n return '';\n }\n}\n","<div\n [formGroup]=\"formGroup\"\n *ngIf=\"!formField.hidden\"\n class=\"form-field\"\n [ngStyle]=\"{ width: formField.width || '100%' }\"\n>\n <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n <p-inputGroup>\n <ng-container\n *ngIf=\"!formField.iconPosition || formField.iconPosition === 'left'\"\n >\n <p-inputGroupAddon *ngIf=\"formField.iconClass\">\n <i *ngIf=\"formField.iconClass\" [ngClass]=\"formField.iconClass\"></i>\n </p-inputGroupAddon>\n <textarea\n pInputTextarea\n [formControlName]=\"formField.name\"\n [rows]=\"formField.rows || 5\"\n [cols]=\"formField.cols || 30\"\n [autoResize]=\"formField.autoResize || false\"\n [attr.minlength]=\"formField.minLength\"\n [attr.maxlength]=\"formField.maxLength\"\n [placeholder]=\"formField.placeholder || ''\"\n ></textarea>\n </ng-container>\n <ng-container *ngIf=\"formField.iconPosition === 'right'\">\n <textarea\n pInputTextarea\n [formControlName]=\"formField.name\"\n [rows]=\"formField.rows || 5\"\n [cols]=\"formField.cols || 30\"\n [autoResize]=\"formField.autoResize || false\"\n [attr.minlength]=\"formField.minLength\"\n [attr.maxlength]=\"formField.maxLength\"\n [placeholder]=\"formField.placeholder || ''\"\n ></textarea>\n <p-inputGroupAddon *ngIf=\"formField.iconClass\">\n <i *ngIf=\"formField.iconClass\" [ngClass]=\"formField.iconClass\"></i>\n </p-inputGroupAddon>\n </ng-container>\n </p-inputGroup>\n <div class=\"form-info-row\">\n <small\n *ngIf=\"\n formGroup.get(formField.name)?.invalid &&\n formGroup.get(formField.name)?.touched\n \"\n class=\"p-error\"\n >\n {{ getErrorMessage() }}\n </small>\n <div class=\"spacer\"></div>\n <!-- Spacer to ensure alignment -->\n <div\n *ngIf=\"!formField.disabled && formField.maxLength !== undefined\"\n class=\"character-counter\"\n >\n {{ characterCount }}/{{ formField.maxLength }} characters\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n FormGroup,\n Validators,\n ValidatorFn,\n FormControl,\n} from '@angular/forms';\nimport { InputValidationEnum } from '../enums/input-validation.enum';\nimport { FormTextField } from '../models/form-text-field.model';\nimport { FormInputTypeEnum } from '../enums/form-input-type.enum';\nimport { CardConfig } from '../models';\n\n@Component({\n selector: 'pt-text-input',\n templateUrl: './pt-text-input.component.html',\n styleUrls: ['./pt-text-input.component.css'],\n})\nexport class PTTextInputComponent implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() formField!: FormTextField;\n\n characterCount: number = 0;\n\n ngOnInit() {\n this.setupControl();\n this.updateCharacterCount();\n }\n\n setupControl() {\n const control = this.formGroup.get(this.formField.name) as FormControl;\n if (control) {\n const validators = this.getValidators();\n control.setValidators(validators);\n\n setTimeout(() => {\n if (this.formField.disabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n control.valueChanges.subscribe(() => {\n this.updateCharacterCount();\n });\n }\n control.updateValueAndValidity({ emitEvent: false });\n });\n }\n }\n\n updateCharacterCount() {\n const control = this.formGroup.get(this.formField.name) as FormControl;\n if (control && control.value !== null) {\n this.characterCount = control.value ? control.value.length : 0;\n } else {\n this.characterCount = 0;\n }\n }\n\n getInputType(): string {\n switch (this.formField.type) {\n case FormInputTypeEnum.PASSWORD:\n return 'password';\n case FormInputTypeEnum.NUMBER:\n return 'number';\n default:\n return 'text';\n }\n }\n\n private getValidators(): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n if (this.formField.required) {\n validators.push(Validators.required);\n }\n if (this.formField.minLength !== undefined) {\n validators.push(Validators.minLength(this.formField.minLength));\n }\n if (this.formField.maxLength !== undefined) {\n validators.push(Validators.maxLength(this.formField.maxLength));\n }\n if (this.formField.inputValidation) {\n validators.push(\n this.validateWithInputValidation(this.formField.inputValidation)\n );\n }\n return validators;\n }\n\n private validateWithInputValidation(\n inputValidation: InputValidationEnum\n ): ValidatorFn {\n return Validators.pattern(new RegExp(inputValidation));\n }\n\n getErrorMessage(): string {\n const control = this.formGroup.get(this.formField.name);\n if (control?.hasError('required')) {\n return `${this.formField.label} is required`;\n } else if (control?.hasError('minlength')) {\n return `${this.formField.label} must be at least ${this.formField.minLength} characters`;\n } else if (control?.hasError('maxlength')) {\n return `${this.formField.label} must be at most ${this.formField.maxLength} characters`;\n } else if (control?.hasError('pattern')) {\n return `${this.formField.label} is invalid`;\n }\n return '';\n }\n}\n","<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n *ngIf=\"!formField.hidden\"\n>\n <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n\n <ng-container *ngIf=\"formField.iconClass; else noIcon\">\n <p-iconField [iconPosition]=\"formField.iconPosition || 'left'\">\n <p-inputIcon\n *ngIf=\"formField.iconClass\"\n [styleClass]=\"formField.iconClass\"\n ></p-inputIcon>\n <input\n [type]=\"getInputType()\"\n pInputText\n [formControlName]=\"formField.name\"\n [placeholder]=\"formField.placeholder ?? ''\"\n [attr.minlength]=\"formField.minLength\"\n [attr.maxlength]=\"formField.maxLength\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n />\n </p-iconField>\n </ng-container>\n\n <ng-template #noIcon>\n <input\n [type]=\"getInputType()\"\n pInputText\n [formControlName]=\"formField.name\"\n [placeholder]=\"formField.placeholder ?? ''\"\n [attr.minlength]=\"formField.minLength\"\n [attr.maxlength]=\"formField.maxLength\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n />\n </ng-template>\n\n <div class=\"form-info-row\">\n <small\n *ngIf=\"\n formGroup.get(formField.name)?.invalid &&\n formGroup.get(formField.name)?.touched\n \"\n class=\"p-error\"\n >\n {{ getErrorMessage() }}\n </small>\n <div class=\"spacer\"></div>\n <div\n *ngIf=\"!formField.disabled && formField.maxLength !== undefined\"\n class=\"character-counter\"\n >\n {{ characterCount }}/{{ formField.maxLength }} characters\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { FormDropdownField } from '../models/form-drop-down-field.model';\n\n@Component({\n selector: 'pt-dropdown',\n templateUrl: './pt-dropdown.component.html',\n styleUrls: ['./pt-dropdown.component.css'],\n})\nexport class PTDropdownComponent implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() formField!: FormDropdownField;\n\n ngOnInit() {\n this.setupControl();\n }\n\n setupControl() {\n let control = this.formGroup.get(this.formField.name) as FormControl;\n\n if (!control) {\n control = new FormControl(this.formField.value || null);\n this.formGroup.addControl(this.formField.name, control);\n }\n\n const validators = this.getValidators();\n control.setValidators(validators);\n\n // Manage the disabled state using form control\n setTimeout(() => {\n if (this.formField.disabled !== undefined) {\n if (this.formField.disabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n }\n }\n\n control.updateValueAndValidity({ emitEvent: false });\n });\n }\n\n private getValidators() {\n const validators = [];\n if (this.formField.required) {\n validators.push(Validators.required);\n }\n return validators;\n }\n\n getErrorMessage(): string {\n const control = this.formGroup.get(this.formField.name);\n if (control?.hasError('required')) {\n return this.formField.errorText || `${this.formField.label} is required`;\n }\n return '';\n }\n}\n","<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{ width: formField.width || '100%' }\"\n *ngIf=\"!formField.hidden\"\n>\n <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n <p-dropdown\n [formControlName]=\"formField.name\"\n [options]=\"formField.options\"\n [placeholder]=\"formField.placeholder || 'Select an option'\"\n optionLabel=\"label\"\n ></p-dropdown>\n <div\n *ngIf=\"\n formGroup.get(formField.name)?.invalid &&\n formGroup.get(formField.name)?.touched\n \"\n >\n <small class=\"p-error\">{{ getErrorMessage() }}</small>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { FormMultiSelectField } from '../models/form-multi-select.model';\n\n@Component({\n selector: 'pt-multi-select',\n templateUrl: './pt-multi-select.component.html',\n styleUrls: ['./pt-multi-select.component.css'],\n})\nexport class PTMultiSelectComponent implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() formField!: FormMultiSelectField;\n\n ngOnInit() {\n this.setupControl();\n }\n\n setupControl() {\n let control = this.formGroup.get(this.formField.name) as FormControl;\n\n if (!control) {\n control = new FormControl(this.formField.value || []);\n this.formGroup.addControl(this.formField.name, control);\n }\n\n const validators = this.getValidators();\n control.setValidators(validators);\n\n // Manage the disabled state using form control\n setTimeout(() => {\n if (this.formField.disabled !== undefined) {\n if (this.formField.disabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n }\n }\n control.updateValueAndValidity({ emitEvent: false });\n });\n }\n\n private getValidators() {\n const validators = [];\n if (this.formField.required) {\n validators.push(Validators.required);\n }\n return validators;\n }\n\n getErrorMessage(): string {\n const control = this.formGroup.get(this.formField.name);\n if (control?.hasError('required')) {\n return this.formField.errorText || `${this.formField.label} is required`;\n }\n return '';\n }\n}\n","<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{ width: formField.width || '100%' }\"\n *ngIf=\"!formField.hidden\"\n>\n <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n <p-multiSelect\n [formControlName]=\"formField.name\"\n [options]=\"formField.options\"\n [placeholder]=\"formField.placeholder || 'Select options'\"\n optionLabel=\"label\"\n ></p-multiSelect>\n <div\n *ngIf=\"\n formGroup.get(formField.name)?.invalid &&\n formGroup.get(formField.name)?.touched\n \"\n >\n <small class=\"p-error\">{{ getErrorMessage() }}</small>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FormField } from '../../models';\nimport { FormInputTypeEnum } from '../../enums';\nimport { FormTextField } from '../../models/form-text-field.model';\nimport { FormTextAreaField } from '../../models/form-text-area-field.model';\nimport { FormMultiSelectField } from '../../models/form-multi-select.model';\nimport { FormDropdownField } from '../../models/form-drop-down-field.model';\nimport { FormSwitchField } from '../../models/form-switch-field.model';\nimport { FormNumberField } from '../../models/form-number-field.model';\nimport { FormDateField } from '../../models/form-date-field.model';\nimport { FormCheckBoxField } from '../../models/form-check-field.model';\n\n@Component({\n selector: 'pt-dynamic-form-field',\n templateUrl: './pt-dynamic-form-field.component.html',\n styleUrls: ['./pt-dynamic-form-field.component.css'],\n})\nexport class PTDynamicFormFieldComponent {\n @Input() field!: FormField;\n @Input() form!: FormGroup;\n @Input() inputWidth!: string;\n\n FormInputTypeEnum = FormInputTypeEnum;\n\n asTextField(field: FormField): FormTextField {\n return field as FormTextField;\n }\n\n asNumberField(field: FormField): FormNumberField {\n return field as FormNumberField;\n }\n\n asTextAreaField(field: FormField): FormTextAreaField {\n return field as FormTextAreaField;\n }\n\n asDateField(field: FormField): FormDateField {\n return field as FormDateField;\n }\n\n asSelectField(field: FormField): FormDropdownField {\n return field as FormDropdownField;\n }\n\n asMultiSelectField(field: FormField): FormMultiSelectField {\n return field as FormMultiSelectField;\n }\n\n asCheckboxField(field: FormField): FormCheckBoxField {\n return field as FormCheckBoxField;\n }\n\n asSwitchField(field: FormField): FormSwitchField {\n return field as FormSwitchField;\n }\n}\n","<div\n [formGroup]=\"form\"\n class=\"form-field\"\n [ngStyle]=\"{\n width:\n field.type !== FormInputTypeEnum.CHECKBOX &&\n field.type !== FormInputTypeEnum.SWITCH\n ? field.width || inputWidth\n : 'auto'\n }\"\n>\n <ng-container [ngSwitch]=\"field.type\">\n <pt-text-input\n *ngSwitchCase=\"FormInputTypeEnum.TEXT\"\n [formGroup]=\"form\"\n [formField]=\"asTextField(field)\"\n ></pt-text-input>\n <pt-number-input\n *ngSwitchCase=\"FormInputTypeEnum.NUMBER\"\n [formGroup]=\"form\"\n [formField]=\"asNumberField(field)\"\n ></pt-number-input>\n <pt-number-input\n *ngSwitchCase=\"FormInputTypeEnum.AMOUNT\"\n [formGroup]=\"form\"\n [formField]=\"asNumberField(field)\"\n ></pt-number-input>\n <pt-text-area-input\n *ngSwitchCase=\"FormInputTypeEnum.TEXTAREA\"\n [formGroup]=\"form\"\n [formField]=\"asTextAreaField(field)\"\n ></pt-text-area-input>\n <pt-date-input\n *ngSwitchCase=\"FormInputTypeEnum.DATE\"\n [formGroup]=\"form\"\n [formField]=\"asDateField(field)\"\n ></pt-date-input>\n <pt-multi-select\n *ngSwitchCase=\"FormInputTypeEnum.MULTISELECT\"\n [formGroup]=\"form\"\n [formField]=\"asMultiSelectField(field)\"\n ></pt-multi-select>\n <pt-dropdown\n *ngSwitchCase=\"FormInputTypeEnum.SELECT\"\n [formGroup]=\"form\"\n [formField]=\"asSelectField(field)\"\n ></pt-dropdown>\n <pt-check-box-input\n *ngSwitchCase=\"FormInputTypeEnum.CHECKBOX\"\n [formGroup]=\"form\"\n [formField]=\"asCheckboxField(field)\"\n ></pt-check-box-input>\n <pt-switch-input\n *ngSwitchCase=\"FormInputTypeEnum.SWITCH\"\n [formGroup]=\"form\"\n [formField]=\"asSwitchField(field)\"\n ></pt-switch-input>\n </ng-container>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { FormField } from '../models/form-field.model';\nimport { FormFieldGroup } from '../models/form-field-group.model';\nimport { FormButton } from '../models/form-button.model';\nimport { FormInputTypeEnum } from '../enums/form-input-type.enum';\n\n@Component({\n selector: 'pt-form-builder',\n templateUrl: './pt-form-builder.component.html',\n styleUrls: ['./pt-form-builder.component.css'],\n})\nexport class PTFormBuilderComponent implements OnInit {\n @Input() mainGroup: FormFieldGroup = { fields: [], groups: [] };\n @Input() buttons: FormButton[] = [];\n @Input() title?: string;\n @Input() titleStyle?: { [key: string]: string };\n @Input() inputWidth: string = '100%';\n @Input() language: 'en' | 'fr' = 'en';\n @Output() formSubmit = new EventEmitter<{ [key: string]: any }>();\n form: FormGroup;\n\n FormInputTypeEnum = FormInputTypeEnum;\n\n private errorMessages = {\n en: {\n required: 'is required',\n },\n fr: {\n required: 'est requis',\n },\n };\n\n constructor(private fb: FormBuilder) {\n this.form = this.fb.group({});\n }\n\n ngOnInit() {\n this.buildFormGroup(this.mainGroup);\n }\n\n buildFormGroup(group: FormFieldGroup) {\n group.fields?.forEach((field) => {\n const validators = field.required ? [Validators.required] : [];\n this.form.addControl(\n field.name,\n this.fb.control(field.value, validators)\n );\n });\n\n group.groups?.forEach((subGroup) => {\n this.buildFormGroup(subGroup);\n });\n }\n\n getErrorMessage(field: FormField): string {\n if (this.form.get(field.name)?.hasError('required')) {\n return (\n field.errorText ||\n `${field.label} ${this.errorMessages[this.language].required}`\n );\n }\n return '';\n }\n\n onSubmit() {\n this.form.markAllAsTouched();\n if (this.form.valid) {\n this.formSubmit.emit(this.form.value);\n }\n }\n\n onClear() {\n this.form.reset();\n }\n}\n","<div *ngIf=\"title\" [ngStyle]=\"titleStyle\" class=\"form-title\">{{ title }}</div>\n<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <ng-container *ngFor=\"let field of mainGroup.fields\">\n <pt-dynamic-form-field\n [field]=\"field\"\n [form]=\"form\"\n [inputWidth]=\"inputWidth\"\n ></pt-dynamic-form-field>\n </ng-container>\n\n <ng-container *ngFor=\"let group of mainGroup.groups\">\n <div class=\"form-field-group\" [ngStyle]=\"{ width: group.width || '100%' }\">\n <ng-container *ngFor=\"let field of group.fields\">\n <pt-dynamic-form-field\n [field]=\"field\"\n [form]=\"form\"\n class=\"flex-item\"\n ></pt-dynamic-form-field>\n </ng-container>\n </div>\n </ng-container>\n\n <div class=\"button-group\">\n <button\n *ngFor=\"let button of buttons\"\n type=\"button\"\n pButton\n [label]=\"button.text\"\n [icon]=\"button.icon || ''\"\n [class]=\"button.color\"\n (click)=\"\n button.isSubmit\n ? onSubmit()\n : button.isClear\n ? onClear()\n : button.action\n ? button.action()\n : null\n \"\n ></button>\n </div>\n</form>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { PTCheckBoxInputComponent } from './pt-check-box-input.component';\n\n@NgModule({\n declarations: [PTCheckBoxInputComponent],\n imports: [CommonModule, ReactiveFormsModule, CheckboxModule],\n exports: [PTCheckBoxInputComponent],\n})\nexport class PTCheckBoxInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { PTNumberInputComponent } from './pt-number-input.component';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputNumberModule } from 'primeng/inputnumber';\n\n@NgModule({\n declarations: [PTNumberInputComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n InputGroupModule,\n InputGroupAddonModule,\n InputTextModule,\n InputNumberModule,\n ],\n exports: [PTNumberInputComponent],\n})\nexport class PTNumberInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { InputSwitchModule } from 'primeng/inputswitch';\nimport { PTSwitchInputComponent } from './pt-switch-input.component';\n\n@NgModule({\n declarations: [PTSwitchInputComponent],\n imports: [CommonModule, ReactiveFormsModule, InputSwitchModule],\n exports: [PTSwitchInputComponent],\n})\nexport class PTSwitchInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { PTTextInputComponent } from './pt-text-input.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\n\n@NgModule({\n declarations: [PTTextInputComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextModule,\n IconFieldModule,\n InputIconModule,\n ],\n exports: [PTTextInputComponent],\n})\nexport class PTTextInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { InputTextareaModule } from 'primeng/inputtextarea';\nimport { PTTextAreaInputComponent } from './pt-text-area-input.component';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\n\n@NgModule({\n declarations: [PTTextAreaInputComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextareaModule,\n InputGroupModule,\n InputGroupAddonModule,\n ],\n exports: [PTTextAreaInputComponent],\n})\nexport class PTTextAreaInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CalendarModule } from 'primeng/calendar';\nimport { PTDateInputComponent } from './pt-date-input.component';\n\n@NgModule({\n declarations: [PTDateInputComponent],\n imports: [CommonModule, ReactiveFormsModule, CalendarModule],\n exports: [PTDateInputComponent],\n})\nexport class PTDateInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { PTDropdownComponent } from './pt-dropdown.component';\n\n@NgModule({\n declarations: [PTDropdownComponent],\n imports: [CommonModule, ReactiveFormsModule, DropdownModule],\n exports: [PTDropdownComponent],\n})\nexport class PTDropdownModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MultiSelectModule } from 'primeng/multiselect'; // PrimeNG module\nimport { PTMultiSelectComponent } from './pt-multi-select.component';\n\n@NgModule({\n declarations: [PTMultiSelectComponent],\n imports: [CommonModule, ReactiveFormsModule, MultiSelectModule],\n exports: [PTMultiSelectComponent],\n})\nexport class PTMultiSelectModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { PTDynamicFormFieldComponent as PTDynamicFormFieldComponent } from './pt-dynamic-form-field.component';\nimport { PTCheckBoxInputModule } from '../../pt-check-box-input';\nimport { PTNumberInputModule } from '../../pt-number-input/pt-number-input.module';\nimport { PTSwitchInputModule } from '../../pt-switch-input/pt-switch-input.module';\nimport { PTTextInputModule } from '../../pt-text-input/pt-text-input.module';\nimport { PTTextAreaInputModule } from '../../pt-text-area-input/pt-text-area-input.module';\nimport { PTDateInputModule } from '../../pt-date-input';\nimport { PTDropdownModule } from '../../pt-dropdown';\nimport { PTMultiSelectModule } from '../../pt-multi-select';\n\n@NgModule({\n declarations: [PTDynamicFormFieldComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n\n // Inputs\n PTCheckBoxInputModule,\n PTDateInputModule,\n PTNumberInputModule,\n PTSwitchInputModule,\n PTTextAreaInputModule,\n PTTextInputModule,\n PTDropdownModule,\n PTMultiSelectModule,\n ],\n exports: [PTDynamicFormFieldComponent],\n})\nexport class PTDynamicFormFieldModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { PTFormBuilderComponent } from './pt-form-builder.component';\nimport { ButtonModule } from 'primeng/button';\nimport { PTDynamicFormFieldModule } from './pt-dynamic-form-field/pt-dynamic-form-field-module';\n\n@NgModule({\n declarations: [PTFormBuilderComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n ButtonModule,\n PTDynamicFormFieldModule,\n ],\n exports: [PTFormBuilderComponent],\n})\nexport class PTFormBuilderModule {}\n","import { Component, Input } from '@angular/core';\nimport {\n LabelSetting,\n MetricCardData,\n ValueSetting,\n IconStyle,\n TextStyle,\n} from '../models';\n\n@Component({\n selector: 'pt-metric-card',\n templateUrl: './pt-metric-card.component.html',\n styleUrls: ['./pt-metric-card.component.css'],\n})\nexport class PTMetricCardComponent {\n private static readonly DEFAULT_ICON_COLOR = '#5a67d8';\n private static readonly DEFAULT_ICON_SIZE = '24px';\n private static readonly DEFAULT_TITLE_COLOR = '#5a67d8';\n private static readonly DEFAULT_TITLE_SIZE = '16px';\n private static readonly DEFAULT_VALUE_COLOR = '#2d3748';\n private static readonly DEFAULT_VALUE_SIZE = '32px';\n private static readonly DEFAULT_LABEL_COLOR = '#718096';\n private static readonly DEFAULT_LABEL_SIZE = '14px';\n private static readonly DEFAULT_ADDITIONAL_INFO_COLOR = 'gray';\n private static readonly DEFAULT_ADDITIONAL_INFO_SIZE = '14px';\n private static readonly DEFAULT_BACKGROUND_COLOR = '#fff';\n\n @Input() cardData!: MetricCardData;\n\n isIconObject(): boolean {\n return typeof this.cardData.icon === 'object';\n }\n\n isTitleObject(): boolean {\n return typeof this.cardData.title === 'object';\n }\n\n isValueObject(): boolean {\n return typeof this.cardData.value === 'object';\n }\n\n isLabelObject(label: LabelSetting | string | undefined): boolean {\n return typeof label === 'object';\n }\n\n isAdditionalInfoObject(): boolean {\n return typeof this.cardData.additionalInfo === 'object';\n }\n\n getIconText(): string {\n return this.isIconObject()\n ? (this.cardData.icon as IconStyle).code\n : (this.cardData.icon as string);\n }\n\n getTitleText(): string {\n return this.isTitleObject()\n ? (this.cardData.title as TextStyle).text\n : (this.cardData.title as string);\n }\n\n getValueText(): string {\n return this.isValueObject()\n ? (this.cardData.value as ValueSetting).text\n : (this.cardData.value as string);\n }\n\n getLabelText(): string {\n const label = (this.cardData.value as ValueSetting)?.label;\n return this.isLabelObject(label)\n ? (label as LabelSetting).text\n : (label as string);\n }\n\n getAdditionalInfoText(): string {\n return this.isAdditionalInfoObject()\n ? (this.cardData.additionalInfo as TextStyle).text\n : (this.cardData.additionalInfo as string);\n }\n\n getIconStyles() {\n if (this.isIconObject()) {\n const icon = this.cardData.icon as IconStyle;\n const shape = icon.shape || 'circular'; // Default to 'circular' if not specified\n\n // Determine border radius based on shape\n const borderRadius = shape === 'circular' ? '50%' : '8px';\n\n return {\n color: icon.color || PTMetricCardComponent.DEFAULT_ICON_COLOR,\n fontSize: icon.fontSize || PTMetricCardComponent.DEFAULT_ICON_SIZE,\n 'background-color': icon.backgroundColor || 'transparent',\n 'border-radius': borderRadius,\n padding: '6px',\n display: 'inline-block',\n };\n }\n return {};\n }\n\n getTitleStyles() {\n if (this.isTitleObject()) {\n const title = this.cardData.title as TextStyle;\n return {\n color: title.color || PTMetricCardComponent.DEFAULT_TITLE_COLOR,\n fontSize: title.fontSize || PTMetricCardComponent.DEFAULT_TITLE_SIZE,\n fontWeight: title.fontWeight || 'normal',\n };\n }\n return {};\n }\n\n getValueStyles() {\n if (this.isValueObject()) {\n const value = this.cardData.value as ValueSetting;\n return {\n color: value.color || PTMetricCardComponent.DEFAULT_VALUE_COLOR,\n fontSize: value.fontSize || PTMetricCardComponent.DEFAULT_VALUE_SIZE,\n fontWeight: value.fontWeight || 'bold',\n };\n } else {\n return {\n color: PTMetricCardComponent.DEFAULT_VALUE_COLOR,\n fontSize: PTMetricCardComponent.DEFAULT_VALUE_SIZE,\n fontWeight: 'bold',\n };\n }\n }\n\n getLabelStyles(position: 'left' | 'right') {\n const label = (this.cardData.value as ValueSetting)?.label;\n if (\n this.isLabelObject(label) &&\n (label as LabelSetting).position === position\n ) {\n return {\n color:\n (label as LabelSetting).color ||\n PTMetricCardComponent.DEFAULT_LABEL_COLOR,\n fontSize:\n (label as LabelSetting).fontSize ||\n PTMetricCardComponent.DEFAULT_LABEL_SIZE,\n fontWeight: (label as LabelSetting).fontWeight || 'normal',\n };\n } else {\n return {\n color: PTMetricCardComponent.DEFAULT_LABEL_COLOR,\n fontSize: PTMetricCardComponent.DEFAULT_LABEL_SIZE,\n fontWeight: 'normal',\n };\n }\n }\n\n getAdditionalInfoStyles() {\n if (this.isAdditionalInfoObject()) {\n const additionalInfo = this.cardData.additionalInfo as TextStyle;\n return {\n color:\n additionalInfo.color ||\n PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_COLOR,\n fontSize:\n additionalInfo.fontSize ||\n PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_SIZE,\n fontWeight: additionalInfo.fontWeight || 'normal',\n };\n } else {\n return {\n color: PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_COLOR,\n fontSize: PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_SIZE,\n fontWeight: 'normal',\n };\n }\n }\n\n isLabelOnLeft(): boolean {\n const label = (this.cardData.value as ValueSetting)?.label;\n return (\n this.isLabelObject(label) && (label as LabelSetting).position === 'left'\n );\n }\n\n isLabelOnRight(): boolean {\n const label = (this.cardData.value as ValueSetting)?.label;\n return (\n this.isLabelObject(label) && (label as LabelSetting).position === 'right'\n );\n }\n\n getMetricCardContainerStyle() {\n return {\n 'min-width': this.cardData.size?.minWidth || '100%',\n 'max-width': this.cardData.size?.maxWidth || 'calc(25% - 16px)',\n width: this.cardData.size?.fixedWidth || 'auto',\n };\n }\n\n getMetricCardStyle() {\n return {\n 'background-color':\n this.cardData.appearance?.backgroundColor ||\n PTMetricCardComponent.DEFAULT_BACKGROUND_COLOR,\n 'min-width': this.cardData.size?.minWidth || '100%',\n 'max-width': this.cardData.size?.maxWidth || 'calc(25% - 16px)',\n width: this.cardData.size?.fixedWidth || 'auto',\n };\n }\n}\n","<div class=\"metric-card-container\" [ngStyle]=\"getMetricCardContainerStyle()\">\n <div\n *ngIf=\"cardData.verticalLine?.show\"\n class=\"vertical-line\"\n [ngStyle]=\"{\n 'background-color': cardData.verticalLine?.color || '#5a67d8'\n }\"\n ></div>\n\n <div class=\"metric-card\" [ngStyle]=\"getMetricCardStyle()\">\n <div class=\"metric-card-header\">\n <i\n *ngIf=\"isIconObject()\"\n [ngClass]=\"getIconText()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <i *ngIf=\"!isIconObject()\" [ngClass]=\"cardData.icon\"></i>\n\n <span\n *ngIf=\"isTitleObject()\"\n class=\"metric-card-header-text\"\n [ngStyle]=\"getTitleStyles()\"\n >\n {{ getTitleText() }}\n </span>\n <span *ngIf=\"!isTitleObject()\" class=\"metric-card-header-text\">\n {{ cardData.title }}\n </span>\n </div>\n\n <div class=\"metric-card-content\">\n <div class=\"metric-value\" [ngStyle]=\"getValueStyles()\">\n <span\n *ngIf=\"isLabelOnLeft()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('left')\"\n >\n {{ getLabelText() }}\n </span>\n\n <span [ngStyle]=\"getValueStyles()\">{{ getValueText() }}</span>\n\n <span\n *ngIf=\"isLabelOnRight()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('right')\"\n >\n {{ getLabelText() }}\n </span>\n </div>\n\n <div\n *ngIf=\"cardData.divider?.show\"\n class=\"metric-divider\"\n [ngStyle]=\"{ backgroundColor: cardData.divider?.color || '#e2e8f0' }\"\n ></div>\n\n <div\n *ngIf=\"isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ getAdditionalInfoText() }}\n </div>\n <div\n *ngIf=\"!isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ cardData.additionalInfo }}\n </div>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTMetricCardComponent } from './pt-metric-card.component';\n\n@NgModule({\n declarations: [PTMetricCardComponent],\n imports: [CommonModule],\n exports: [PTMetricCardComponent],\n})\nexport class PTMetricCardModule {}\n","import { Component, Input } from '@angular/core';\nimport { MetricCardData } from '../models/metric-card-data.model';\n\n@Component({\n selector: 'pt-metric-card-group',\n templateUrl: './pt-metric-card-group.component.html',\n styleUrls: ['./pt-metric-card-group.component.css'],\n})\nexport class PTMetricCardGroupComponent {\n @Input() cardsData: MetricCardData[] = [];\n}\n","<div class=\"metric-card-group\">\n <pt-metric-card\n *ngFor=\"let card of cardsData\"\n [cardData]=\"card\"\n ></pt-metric-card>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTMetricCardGroupComponent } from './pt-metric-card-group.component';\nimport { PTMetricCardModule } from '../pt-metric-card/pt-metric-card.module';\n\n@NgModule({\n declarations: [PTMetricCardGroupComponent],\n imports: [CommonModule, PTMetricCardModule],\n exports: [PTMetricCardGroupComponent],\n})\nexport class PTMetricCardGroupModule {}\n","import {\n Component,\n Input,\n OnInit,\n OnDestroy,\n ViewChild,\n ElementRef,\n} from '@angular/core';\nimport {\n Chart,\n ChartConfiguration,\n registerables,\n ChartType,\n ChartData,\n} from 'chart.js';\nimport { ChartConfig } from '../models/chart-config.model';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\n\n@Component({\n selector: 'pt-chart',\n templateUrl: './pt-chart.component.html',\n styleUrls: ['./pt-chart.component.css'],\n})\nexport class PTChartComponent implements OnInit, OnDestroy {\n @Input() chartConfig!: ChartConfig;\n @ViewChild('chartCanvas', { static: true })\n canvasRef!: ElementRef<HTMLCanvasElement>;\n\n private chart!: Chart;\n\n constructor() {\n Chart.register(...registerables, ChartDataLabels);\n }\n\n ngOnInit() {\n this.initializeChart();\n }\n\n ngOnDestroy() {\n this.destroyChart();\n }\n\n initializeChart() {\n const canvas = this.canvasRef.nativeElement;\n\n // Destroy the existing chart instance if it already exists\n this.destroyChart();\n\n const config: ChartConfiguration = {\n type: this.chartConfig.type as ChartType,\n data: this.chartConfig.data as ChartData,\n options: {\n ...this.chartConfig.options,\n plugins: {\n datalabels: {\n formatter: (value, context) => {\n const data = context.chart.data.datasets[0].data as number[];\n const total = data.reduce((sum, val) => sum + val, 0);\n const percentage = ((value / total) * 100).toFixed(1) + '%';\n return percentage;\n },\n color: '#000',\n font: {\n weight: 'bold',\n },\n },\n ...this.chartConfig.options?.plugins,\n },\n },\n };\n\n // Create a new Chart instance\n this.chart = new Chart(canvas, config);\n }\n\n updateChart() {\n if (this.chart) {\n this.chart.data = this.chartConfig.data;\n\n if (this.chartConfig.options) {\n this.chart.options = this.chartConfig.options;\n }\n\n this.chart.update();\n }\n }\n\n private destroyChart() {\n if (this.chart) {\n this.chart.destroy();\n this.chart = undefined as any;\n }\n }\n}\n","<div style=\"position: relative; height: 100%; width: 100%\">\n <canvas #chartCanvas></canvas>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTChartComponent } from './pt-chart.component';\n\n@NgModule({\n declarations: [PTChartComponent],\n imports: [CommonModule],\n exports: [PTChartComponent],\n})\nexport class PTChartModule {}\n","import { Component, Input, HostListener } from '@angular/core';\nimport { MenuItem, MenuConfig } from '../models';\n\n@Component({\n selector: 'pt-menu',\n templateUrl: './pt-menu.component.html',\n styleUrls: ['./pt-menu.component.css'],\n})\nexport class PTMenuComponent {\n @Input() config: MenuConfig = {\n icon: { code: 'pi pi-ellipsis-v', color: '#000', fontSize: '15px' },\n menuDirection: 'right',\n };\n\n private static readonly DEFAULT_TEXT_COLOR = '#000';\n private static readonly DEFAULT_TEXT_FONT_SIZE = '15px';\n private static readonly DEFAULT_ICON_COLOR = '#000';\n private static readonly DEFAULT_ICON_FONT_SIZE = '15px';\n private static readonly DEFAULT_ICON_CODE = 'pi pi-ellipsis-v';\n\n private static openMenuInstance: PTMenuComponent | null = null;\n\n isOpen = false;\n\n toggleMenu() {\n if (\n PTMenuComponent.openMenuInstance &&\n PTMenuComponent.openMenuInstance !== this\n ) {\n PTMenuComponent.openMenuInstance.closeMenu();\n }\n\n this.isOpen = !this.isOpen;\n\n if (this.isOpen) {\n PTMenuComponent.openMenuInstance = this;\n } else {\n PTMenuComponent.openMenuInstance = null;\n }\n }\n\n closeMenu() {\n this.isOpen = false;\n if (PTMenuComponent.openMenuInstance === this) {\n PTMenuComponent.openMenuInstance = null;\n }\n }\n\n getMenuItemIconClass(item: MenuItem): string {\n // Assuming that icons starting with \"fa\" are FontAwesome icons\n return typeof item.icon === 'string' ? item.icon : item.icon?.code || '';\n }\n\n getMenuItemIconStyles(item: MenuItem) {\n if (typeof item.icon !== 'string') {\n return {\n color: item.icon?.color || PTMenuComponent.DEFAULT_ICON_COLOR,\n fontSize: item.icon?.fontSize || PTMenuComponent.DEFAULT_ICON_FONT_SIZE,\n };\n }\n return {\n color: PTMenuComponent.DEFAULT_ICON_COLOR,\n fontSize: PTMenuComponent.DEFAULT_ICON_FONT_SIZE,\n };\n }\n\n getIconClass(): string {\n return this.config.icon?.code || PTMenuComponent.DEFAULT_ICON_CODE;\n }\n\n getIconStyles() {\n return {\n color:\n this.config.color ||\n this.config.icon?.color ||\n PTMenuComponent.DEFAULT_ICON_COLOR,\n fontSize:\n this.config.fontSize ||\n this.config.icon?.fontSize ||\n PTMenuComponent.DEFAULT_ICON_FONT_SIZE,\n };\n }\n\n getTextStyles(item: MenuItem) {\n return {\n color: item.color || PTMenuComponent.DEFAULT_TEXT_COLOR,\n fontSize: item.fontSize || PTMenuComponent.DEFAULT_TEXT_FONT_SIZE,\n };\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n const clickedInside = (event.target as HTMLElement).closest('.pt-menu');\n if (!clickedInside) {\n this.closeMenu();\n }\n }\n}\n","<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (click)=\"item.action()\"\n >\n <i\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnInit,\n} from '@angular/core';\nimport { CardConfig, IconStyle, TitleStyle } from '../models';\n\n@Component({\n selector: 'pt-card',\n templateUrl: './pt-card.component.html',\n styleUrls: ['./pt-card.component.css'],\n})\nexport class PTCardComponent implements AfterViewInit {\n @Input() config: CardConfig = {};\n\n // Default values as readonly variables\n private static readonly DEFAULT_TITLE_COLOR = '#333';\n private static readonly DEFAULT_TITLE_FONT_SIZE = '1.5em';\n private static readonly DEFAULT_ICON_COLOR = '#333';\n private static readonly DEFAULT_ICON_FONT_SIZE = '1em';\n private static readonly DEFAULT_ICON_POSITION = 'left';\n private static readonly DEFAULT_BACKGROUND_COLOR = '#fff';\n private static readonly DEFAULT_WIDTH = '100%';\n private static readonly DEFAULT_HEIGHT = 'auto';\n private static readonly DEFAULT_TITLE_POSITION = 'left';\n private static readonly DEFAULT_MENU_POSITION = 'right';\n private static readonly DEFAULT_BORDER_COLOR = '#ddd';\n private static readonly DEFAULT_BORDER_WIDTH = '1px';\n private static readonly DEFAULT_TRANSPARENCY = '100';\n private static readonly DEFAULT_PADDING = '16px';\n private static readonly DEFAULT_MARGIN = '16px 0';\n\n ngAfterViewInit() {\n this.logPatternUrl();\n }\n\n private logPatternUrl() {\n if (this.config.pattern?.imageUrl) {\n console.log(\n `[PTCardComponent] Identifier: ${this.config.identifier}, Pattern URL: ${this.config.pattern.imageUrl}`\n );\n }\n }\n\n isTitleObject(): boolean {\n return typeof this.config.title === 'object';\n }\n\n hasTitle(): boolean {\n return this.config.title !== undefined && this.config.title !== null;\n }\n\n getTitleText(): string {\n return this.isTitleObject()\n ? (this.config.title as TitleStyle).text\n : (this.config.title as string);\n }\n\n getTitleStyles() {\n const title = this.config.title as TitleStyle | undefined;\n const alignMap: { [key: string]: string } = {\n left: 'flex-start',\n center: 'center',\n right: 'flex-end',\n };\n return {\n color: title?.color || PTCardComponent.DEFAULT_TITLE_COLOR,\n fontSize: title?.fontSize || PTCardComponent.DEFAULT_TITLE_FONT_SIZE,\n '--text-align':\n alignMap[title?.position || PTCardComponent.DEFAULT_TITLE_POSITION],\n };\n }\n\n constructor(private cd: ChangeDetectorRef) {}\n\n updateStyles() {\n // After data is fetched or updated\n this.getCardStyles();\n this.cd.detectChanges(); // Force Angular to detect the changes\n }\n\n getIconClass(): string | null {\n const icon = (this.config.title as TitleStyle)?.icon;\n return typeof icon === 'string' ? icon : (icon as IconStyle)?.code || null;\n }\n\n getIconStyles() {\n const icon = (this.config.title as TitleStyle)?.icon;\n if (typeof icon !== 'string') {\n return {\n color: icon?.color || PTCardComponent.DEFAULT_ICON_COLOR,\n fontSize: icon?.fontSize || PTCardComponent.DEFAULT_ICON_FONT_SIZE,\n };\n }\n return {\n color: PTCardComponent.DEFAULT_ICON_COLOR,\n fontSize: PTCardComponent.DEFAULT_ICON_FONT_SIZE,\n };\n }\n\n getIconPosition(): 'left' | 'right' | null {\n const icon = (this.config.title as TitleStyle)?.icon;\n if (typeof icon !== 'string' && icon?.position) {\n return icon.position;\n }\n return PTCardComponent.DEFAULT_ICON_POSITION;\n }\n\n getMenuPosition(): 'left' | 'right' {\n return this.config.menuPosition || PTCardComponent.DEFAULT_MENU_POSITION;\n }\n\n getCardStyles() {\n // Transparency for the background color\n const backgroundTransparency = this.config.transparencyPercentage\n ? parseFloat(this.config.transparencyPercentage) / 100\n : 1;\n\n // Transparency for the pattern image\n const patternTransparency = this.config.pattern?.transparencyPercentage\n ? parseFloat(this.config.pattern.transparencyPercentage) / 100\n : 1;\n\n // Background color with transparency\n const backgroundColor =\n this.config.backgroundColor && this.config.transparencyPercentage !== '0'\n ? this.hexToRgba(this.config.backgroundColor, backgroundTransparency)\n : 'transparent';\n\n // Pattern image with transparency applied via linear-gradient\n const backgroundImage =\n this.config.pattern?.imageUrl &&\n this.config.pattern.transparencyPercentage !== '0'\n ? `linear-gradient(rgba(255, 255, 255, ${\n 1 - patternTransparency\n }), rgba(255, 255, 255, ${1 - patternTransparency})), url('${\n this.config.pattern.imageUrl\n }')`\n : '';\n\n const patternWidth = this.config.pattern?.width || '100%';\n const patternHeight = this.config.pattern?.height || 'auto';\n\n // Determine background-repeat value\n const repeatX = this.config.pattern?.repeatX ? 'repeat' : 'no-repeat';\n const repeatY = this.config.pattern?.repeatY ? 'repeat' : 'no-repeat';\n const backgroundRepeat = `${repeatX} ${repeatY}`;\n\n // Adjust background-size based on repeatCount if provided\n const repeatCount = this.config.pattern?.repeatCount || 1;\n const backgroundSize =\n repeatCount > 1\n ? `${patternWidth} ${patternHeight}`\n : `${patternWidth} ${patternHeight}`;\n\n // Determine background-position based on the position parameter\n const backgroundPosition = this.config.pattern?.position || 'center';\n\n const justifyContent =\n this.config.alignContent === 'center' ? 'center' : 'flex-start';\n\n const alignItems =\n this.config.alignContent === 'center' ? 'center' : 'stretch';\n\n return {\n display: 'flex',\n flexDirection: 'column',\n justifyContent, // Apply conditional vertical alignment\n alignItems, // Apply conditional horizontal alignment\n backgroundColor, // Background color with transparency\n backgroundImage, // Pattern image with transparency\n backgroundSize,\n backgroundPosition,\n backgroundRepeat,\n width: this.config.width || PTCardComponent.DEFAULT_WIDTH,\n height: this.config.height || PTCardComponent.DEFAULT_HEIGHT,\n border: this.config.noBorder\n ? 'none'\n : `solid ${\n this.config.borderWidth || PTCardComponent.DEFAULT_BORDER_WIDTH\n } ${this.config.borderColor || PTCardComponent.DEFAULT_BORDER_COLOR}`,\n padding: this.config.padding || PTCardComponent.DEFAULT_PADDING,\n margin: this.config.margin || PTCardComponent.DEFAULT_MARGIN,\n borderRadius: this.config.borderRadius || '8px',\n boxShadow: this.config.boxShadow || '0 2px 4px rgba(0, 0, 0, 0.1)',\n position: 'relative',\n zIndex: this.config.zIndex !== undefined ? this.config.zIndex : 'auto',\n };\n }\n\n // Utility function to convert hex color to rgba\n private hexToRgba(hex: string, alpha: number): string {\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n hex = hex.replace(shorthandRegex, (_, r, g, b) => r + r + g + g + b + b);\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? `rgba(${parseInt(result[1], 16)}, ${parseInt(\n result[2],\n 16\n )}, ${parseInt(result[3], 16)}, ${alpha})`\n : hex;\n }\n\n getBodyStyles() {\n const justifyContent =\n this.config.alignBodyContent === 'center' ? 'center' : 'flex-start';\n const alignItems =\n this.config.alignBodyContent === 'center' ? 'center' : 'stretch';\n\n return {\n display: 'flex',\n flexDirection: 'column',\n justifyContent,\n alignItems,\n flexGrow: 1,\n maxWidth: '100%',\n padding: '16px', // Default padding for body\n boxSizing: 'border-box',\n overflowX: this.isScrollableHorizontal() ? 'auto' : 'hidden',\n overflowY: this.isScrollableVertical() ? 'auto' : 'hidden',\n };\n }\n\n getHeaderStyles() {\n const justifyContent =\n this.config.alignHeaderContent === 'center' ? 'center' : 'flex-start';\n const alignItems =\n this.config.alignHeaderContent === 'center' ? 'center' : 'stretch';\n\n return {\n display: 'flex',\n justifyContent,\n alignItems,\n marginBottom: '16px', // Default margin for header\n position: 'relative',\n };\n }\n\n isScrollableHorizontal(): boolean {\n return !!this.config.scrollableHorizontal;\n }\n\n isScrollableVertical(): boolean {\n return !!this.config.scrollableVertical;\n }\n\n getCardClass() {\n return this.config.alignContent === 'center' ? 'center-align' : '';\n }\n\n getBodyClass() {\n return this.config.alignBodyContent === 'center' ? 'center-align' : '';\n }\n\n getHeaderClass() {\n return this.config.alignHeaderContent === 'center' ? 'center-align' : '';\n }\n}\n","<div\n class=\"pt-card card\"\n [ngClass]=\"getCardClass()\"\n [attr.id]=\"config.identifier\"\n [ngStyle]=\"getCardStyles()\"\n>\n <!-- Card Header -->\n <div\n *ngIf=\"hasTitle()\"\n class=\"card-header\"\n [ngClass]=\"getHeaderClass()\"\n [ngStyle]=\"getHeaderStyles()\"\n >\n <i\n *ngIf=\"getIconClass() && getIconPosition() === 'left'\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n class=\"card-header-icon-left\"\n ></i>\n <span>{{ getTitleText() }}</span>\n <i\n *ngIf=\"getIconClass() && getIconPosition() === 'right'\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n class=\"card-header-icon-right\"\n ></i>\n <pt-menu\n *ngIf=\"config.menu\"\n [config]=\"config.menu\"\n [ngClass]=\"{\n 'menu-left': getMenuPosition() === 'left',\n 'menu-right': getMenuPosition() === 'right'\n }\"\n ></pt-menu>\n </div>\n\n <!-- Card Body -->\n <div class=\"card-body\" [ngClass]=\"getBodyClass()\" [ngStyle]=\"getBodyStyles()\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTMenuComponent } from './pt-menu.component';\n\n@NgModule({\n declarations: [PTMenuComponent],\n imports: [CommonModule],\n exports: [PTMenuComponent],\n})\nexport class PTMenuModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTCardComponent } from './pt-card.component';\nimport { PTMenuModule } from '../pt-menu';\n\n@NgModule({\n declarations: [PTCardComponent],\n imports: [CommonModule, PTMenuModule],\n exports: [PTCardComponent],\n})\nexport class PTCardModule {}\n","import { Component, Input, HostListener } from '@angular/core';\nimport { MenuItem, MenuConfig, CardConfig } from '../models';\n\n@Component({\n selector: 'pt-menu-fancy',\n templateUrl: './pt-menu-fancy.component.html',\n styleUrls: ['./pt-menu-fancy.component.css'],\n})\nexport class PTMenuFancyComponent {\n @Input() config: MenuConfig = {\n icon: { code: 'pi pi-ellipsis-v', color: '#000', fontSize: '15px' },\n menuDirection: 'right',\n };\n\n cardMenuConfig: CardConfig = {\n noBorder: true,\n margin: '0',\n padding: '5px',\n };\n\n private static readonly DEFAULT_TEXT_COLOR = '#000';\n private static readonly DEFAULT_TEXT_FONT_SIZE = '15px';\n private static readonly DEFAULT_ICON_COLOR = '#000';\n private static readonly DEFAULT_ICON_FONT_SIZE = '15px';\n private static readonly DEFAULT_ICON_CODE = 'pi pi-ellipsis-v';\n\n private static openMenuInstance: PTMenuFancyComponent | null = null;\n\n isOpen = false;\n\n toggleMenu() {\n if (\n PTMenuFancyComponent.openMenuInstance &&\n PTMenuFancyComponent.openMenuInstance !== this\n ) {\n PTMenuFancyComponent.openMenuInstance.closeMenu();\n }\n\n this.isOpen = !this.isOpen;\n\n if (this.isOpen) {\n PTMenuFancyComponent.openMenuInstance = this;\n } else {\n PTMenuFancyComponent.openMenuInstance = null;\n }\n }\n\n closeMenu() {\n this.isOpen = false;\n if (PTMenuFancyComponent.openMenuInstance === this) {\n PTMenuFancyComponent.openMenuInstance = null;\n }\n }\n\n getMenuItemIconClass(item: MenuItem): string {\n // Assuming that icons starting with \"fa\" are FontAwesome icons\n return typeof item.icon === 'string' ? item.icon : item.icon?.code || '';\n }\n\n getMenuItemIconStyles(item: MenuItem) {\n if (typeof item.icon !== 'string') {\n return {\n color: item.icon?.color || PTMenuFancyComponent.DEFAULT_ICON_COLOR,\n fontSize:\n item.icon?.fontSize || PTMenuFancyComponent.DEFAULT_ICON_FONT_SIZE,\n };\n }\n return {\n color: PTMenuFancyComponent.DEFAULT_ICON_COLOR,\n fontSize: PTMenuFancyComponent.DEFAULT_ICON_FONT_SIZE,\n };\n }\n\n getIconClass(): string {\n return this.config.icon?.code || PTMenuFancyComponent.DEFAULT_ICON_CODE;\n }\n\n getIconStyles() {\n return {\n color:\n this.config.color ||\n this.config.icon?.color ||\n PTMenuFancyComponent.DEFAULT_ICON_COLOR,\n fontSize:\n this.config.fontSize ||\n this.config.icon?.fontSize ||\n PTMenuFancyComponent.DEFAULT_ICON_FONT_SIZE,\n };\n }\n\n getTextStyles(item: MenuItem) {\n return {\n color: item.color || PTMenuFancyComponent.DEFAULT_TEXT_COLOR,\n fontSize: item.fontSize || PTMenuFancyComponent.DEFAULT_TEXT_FONT_SIZE,\n };\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n const clickedInside = (event.target as HTMLElement).closest(\n '.pt-menu-fancy'\n );\n if (!clickedInside) {\n this.closeMenu();\n }\n }\n}\n","<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (click)=\"item.action()\"\n >\n <i\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </pt-card>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ImageStyle, NavBarMenuConfig, TextStyle } from '../models';\n\n@Component({\n selector: 'pt-nav-bar-menu',\n templateUrl: './pt-nav-bar-menu.component.html',\n styleUrls: ['./pt-nav-bar-menu.component.css'],\n})\nexport class PTNavbarMenuComponent {\n @Input() navBarMenuConfig: NavBarMenuConfig = {};\n\n @Output() toggleSidebar: EventEmitter<void> = new EventEmitter<void>();\n\n // Default values as readonly variables\n private static readonly DEFAULT_LOGO_URL: string = '';\n private static readonly DEFAULT_LOGO_ALT_TEXT: string = 'Logo';\n private static readonly DEFAULT_LOGO_WIDTH: string = '40px';\n private static readonly DEFAULT_LOGO_HEIGHT: string = 'auto';\n private static readonly DEFAULT_APP_NAME: string = 'Application';\n private static readonly DEFAULT_APP_NAME_COLOR: string = '#000';\n private static readonly DEFAULT_APP_NAME_FONT_SIZE: string = '24px';\n private static readonly DEFAULT_TRANSPARENCY: string = '100';\n private static readonly DEFAULT_ICON_COLOR: string = '#333';\n private static readonly DEFAULT_TOGGLE_BUTTON_ICON: string = 'pi pi-bars';\n private static readonly DEFAULT_TOGGLE_BUTTON_COLOR: string = '#333';\n\n isImageStyle(object: any): object is ImageStyle {\n return typeof object === 'object' && 'imageUrl' in object;\n }\n\n isTextStyle(object: any): object is TextStyle {\n return typeof object === 'object' && 'text' in object;\n }\n\n getLogoUrl(): string {\n return this.isImageStyle(this.navBarMenuConfig.logo)\n ? this.navBarMenuConfig.logo.imageUrl\n : PTNavbarMenuComponent.DEFAULT_LOGO_URL;\n }\n\n getLogoAltText(): string {\n return this.isImageStyle(this.navBarMenuConfig.logo)\n ? this.navBarMenuConfig.logo.altText ||\n PTNavbarMenuComponent.DEFAULT_LOGO_ALT_TEXT\n : PTNavbarMenuComponent.DEFAULT_LOGO_ALT_TEXT;\n }\n\n getLogoStyles() {\n if (this.isImageStyle(this.navBarMenuConfig.logo)) {\n return {\n color:\n this.navBarMenuConfig.logo.color ||\n PTNavbarMenuComponent.DEFAULT_ICON_COLOR,\n width:\n this.navBarMenuConfig.logo.width ||\n PTNavbarMenuComponent.DEFAULT_LOGO_WIDTH,\n height:\n this.navBarMenuConfig.logo.height ||\n PTNavbarMenuComponent.DEFAULT_LOGO_HEIGHT,\n };\n }\n return {};\n }\n\n getAppName(): string {\n return this.isTextStyle(this.navBarMenuConfig.appName)\n ? this.navBarMenuConfig.appName.text\n : PTNavbarMenuComponent.DEFAULT_APP_NAME;\n }\n\n getAppNameStyles() {\n if (this.isTextStyle(this.navBarMenuConfig.appName)) {\n return {\n color:\n this.navBarMenuConfig.appName.color ||\n PTNavbarMenuComponent.DEFAULT_APP_NAME_COLOR,\n fontSize:\n this.navBarMenuConfig.appName.fontSize ||\n PTNavbarMenuComponent.DEFAULT_APP_NAME_FONT_SIZE,\n };\n }\n return {\n color: PTNavbarMenuComponent.DEFAULT_APP_NAME_COLOR,\n fontSize: PTNavbarMenuComponent.DEFAULT_APP_NAME_FONT_SIZE,\n };\n }\n\n getNavbarStyles() {\n const transparency =\n this.navBarMenuConfig.pattern?.transparencyPercentage ||\n PTNavbarMenuComponent.DEFAULT_TRANSPARENCY;\n const imageUrl = this.navBarMenuConfig.pattern?.imageUrl || '';\n const patternWidth = this.navBarMenuConfig.pattern?.width || '100%';\n const patternHeight = this.navBarMenuConfig.pattern?.height || 'auto';\n\n // Determine background-repeat value\n const repeatX = this.navBarMenuConfig.pattern?.repeatX\n ? 'repeat'\n : 'no-repeat';\n const repeatY = this.navBarMenuConfig.pattern?.repeatY\n ? 'repeat'\n : 'no-repeat';\n const backgroundRepeat = `${repeatX} ${repeatY}`;\n\n // Use the position directly from the pattern configuration\n const backgroundPosition =\n this.navBarMenuConfig.pattern?.position || 'center';\n\n // Construct the background image style with transparency\n const backgroundImage = imageUrl\n ? `linear-gradient(rgba(255, 255, 255, ${\n 1 - parseFloat(transparency) / 100\n }), rgba(255, 255, 255, ${\n 1 - parseFloat(transparency) / 100\n })), url(${imageUrl})`\n : '';\n\n return {\n backgroundColor: this.navBarMenuConfig.pattern ? 'transparent' : '#fff',\n backgroundImage: backgroundImage,\n backgroundSize: `${patternWidth} ${patternHeight}`,\n backgroundPosition: backgroundPosition,\n backgroundRepeat: backgroundRepeat,\n };\n }\n\n toggleMenu() {\n this.toggleSidebar.emit();\n }\n\n getToggleButtonIcon(): string {\n return (\n this.navBarMenuConfig.toggleButtonIcon ||\n PTNavbarMenuComponent.DEFAULT_TOGGLE_BUTTON_ICON\n );\n }\n\n getToggleButtonStyles() {\n return {\n color:\n this.navBarMenuConfig.toggleButtonColor ||\n PTNavbarMenuComponent.DEFAULT_TOGGLE_BUTTON_COLOR,\n };\n }\n}\n","<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <div class=\"navbar-left\">\n <a\n [routerLink]=\"\n isImageStyle(navBarMenuConfig.logo)\n ? navBarMenuConfig.logo.routerLink\n : '/'\n \"\n class=\"logo-link\"\n >\n <img\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n class=\"navbar-logo\"\n />\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n <!-- Toggle Button -->\n <a (click)=\"toggleMenu()\" class=\"toggle-btn\">\n <i\n [class]=\"getToggleButtonIcon()\"\n [ngStyle]=\"getToggleButtonStyles()\"\n ></i>\n </a>\n </div>\n <div class=\"navbar-right\">\n <pt-menu-fancy\n *ngFor=\"let menuConfig of navBarMenuConfig.menus\"\n [config]=\"menuConfig\"\n ></pt-menu-fancy>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTMenuFancyComponent } from './pt-menu-fancy.component';\nimport { PTCardModule } from '../pt-card/pt-card.module';\n\n@NgModule({\n declarations: [PTMenuFancyComponent],\n imports: [CommonModule, PTCardModule],\n exports: [PTMenuFancyComponent],\n})\nexport class PTMenuFancyModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTNavbarMenuComponent } from './pt-nav-bar-menu.component';\nimport { RouterModule } from '@angular/router';\nimport { PTMenuFancyModule } from '../pt-menu-fancy';\n\n@NgModule({\n declarations: [PTNavbarMenuComponent],\n imports: [CommonModule, RouterModule, PTMenuFancyModule],\n exports: [PTNavbarMenuComponent],\n})\nexport class PTNavbarMenuModule {}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnInit,\n Renderer2,\n} from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport {\n Menu,\n FormTextField,\n SideMenuBarConfig,\n CardConfig,\n Badge,\n} from '../models';\nimport { BadgeType } from '../enums';\n\n@Component({\n selector: 'pt-side-bar-menu',\n templateUrl: './pt-side-bar-menu.component.html',\n styleUrls: ['./pt-side-bar-menu.component.css'],\n})\nexport class PTSideBarMenuComponent implements OnInit, AfterViewInit {\n @Input() menuConfig: SideMenuBarConfig = {\n menus: [],\n isVisible: true,\n searchable: true,\n width: '250px',\n height: '100vh',\n scrollable: true,\n backgroundColor: 'white',\n fontColor: '#333',\n fontColorSubMenu: '#666',\n hoverColor: '#f1f1f1',\n hoverColorSubMenu: '#e0e0e0',\n };\n\n constructor(private renderer: Renderer2, private el: ElementRef) {}\n\n searchCardConfig: CardConfig = {\n alignContent: 'center',\n alignBodyContent: 'center',\n identifier: 'pt-side-bar-menu/search',\n backgroundColor: 'white',\n height: '72px',\n padding: '0',\n };\n\n cardConfig: CardConfig = {\n identifier: 'pt-side-bar-menu',\n backgroundColor: '',\n width: '',\n height: '',\n scrollableVertical: false,\n };\n\n formGroup: FormGroup = new FormGroup({\n search: new FormControl(''),\n });\n\n searchField: FormTextField = {\n name: 'search',\n placeholder: 'Search...',\n iconClass: 'pi pi-search',\n };\n\n filteredMenus: Menu[] = [];\n\n ngOnInit(): void {\n this.cardConfig = {\n identifier: 'pt-side-bar-menu',\n backgroundColor: this.menuConfig.backgroundColor,\n width: this.menuConfig.width,\n height: this.menuConfig.height,\n scrollableVertical: this.menuConfig.scrollable,\n pattern: this.menuConfig.pattern,\n };\n\n this.filteredMenus = this.menuConfig.menus;\n\n const cardWidth = this.menuConfig.width\n ? parseInt(this.menuConfig.width)\n : 250;\n this.searchField.width = `${cardWidth - 60}px`;\n this.searchCardConfig.width = this.menuConfig.width;\n this.searchCardConfig.pattern = this.menuConfig.pattern;\n\n if (this.menuConfig.searchable) {\n this.formGroup\n .get('search')\n ?.valueChanges.subscribe((searchTerm: string) => {\n this.onSearch(searchTerm);\n });\n }\n }\n\n toggleMenu(item: Menu, event: Event): void {\n item.isExpanded = !item.isExpanded;\n event.preventDefault();\n }\n\n getChevronClass(item: Menu): string {\n return item.isExpanded ? 'fa fa-chevron-down' : 'fa fa-chevron-right';\n }\n\n getBadgeStyles(badge: Badge) {\n const defaultColors = this.getDefaultBadgeColors(\n badge.type || BadgeType.Info\n );\n\n return {\n color: badge.color || defaultColors.color,\n backgroundColor: badge.backgroundColor || defaultColors.backgroundColor,\n padding: '2px 8px',\n borderRadius: '5px',\n fontSize: '12px',\n };\n }\n\n getDefaultBadgeColors(type: BadgeType) {\n switch (type) {\n case BadgeType.Info:\n return { color: 'white', backgroundColor: '#17a2b8' };\n case BadgeType.Danger:\n return { color: 'white', backgroundColor: '#dc3545' };\n case BadgeType.Warning:\n return { color: 'white', backgroundColor: '#ffc107' };\n default:\n return { color: 'white', backgroundColor: '#6c757d' };\n }\n }\n\n onSearch(searchTerm: string): void {\n if (searchTerm.trim() === '') {\n this.filteredMenus = this.menuConfig.menus;\n this.collapseAllMenus();\n } else {\n const lowerCaseSearch = searchTerm.toLowerCase();\n this.filteredMenus = this.menuConfig.menus\n .map((menu) => this.searchInMenu({ ...menu }, lowerCaseSearch))\n .filter(Boolean) as Menu[];\n }\n }\n\n searchInMenu(menu: Menu, searchTerm: string): Menu | null {\n const isMatch = menu.label.toLowerCase().includes(searchTerm);\n\n if (menu.children) {\n const matchingChildren = menu.children\n .map((child) => this.searchInMenu(child, searchTerm))\n .filter(Boolean) as Menu[];\n\n if (matchingChildren.length > 0) {\n menu.children = matchingChildren;\n menu.isExpanded = true;\n return menu;\n }\n }\n\n return isMatch ? menu : null;\n }\n\n collapseAllMenus(): void {\n this.menuConfig.menus.forEach((menu) => {\n menu.isExpanded = false;\n });\n }\n\n getMenuItemStyles(): any {\n return {\n color: this.menuConfig.fontColor || '#333', // Set default font color if not specified in config\n };\n }\n\n getMenuLinkStyles(): any {\n return {\n color: this.menuConfig.fontColor || '#333',\n 'text-decoration': 'none',\n 'border-radius': '8px',\n padding: '10px 15px',\n 'font-size': '16px',\n transition: 'background-color 0.2s, color 0.2s',\n display: 'flex',\n 'align-items': 'center',\n ':hover': {\n backgroundColor: this.menuConfig.hoverColor || '#f1f1f1',\n color: '#111',\n },\n };\n }\n\n getSubMenuLinkStyles(): any {\n return {\n color:\n this.menuConfig.fontColorSubMenu || this.menuConfig.fontColor || '#666',\n 'text-decoration': 'none',\n 'border-radius': '5px',\n padding: '5px 10px',\n transition: 'background-color 0.2s, color 0.2s',\n ':hover': {\n backgroundColor: this.menuConfig.hoverColorSubMenu || '#e0e0e0',\n },\n };\n }\n ngAfterViewInit(): void {\n this.applyHoverEffects();\n }\n\n applyHoverEffects(): void {\n const menuLinks = this.el.nativeElement.querySelectorAll('a.menu-link');\n const subMenuLinks =\n this.el.nativeElement.querySelectorAll('a.submenu-link');\n\n // Apply hover effects for main menu links\n menuLinks.forEach((link: HTMLElement) => {\n this.renderer.listen(link, 'mouseenter', () => {\n this.renderer.setStyle(\n link,\n 'background-color',\n this.menuConfig.hoverColor || '#f1f1f1'\n );\n this.renderer.setStyle(\n link,\n 'color',\n this.menuConfig.hoverFontColor || 'white'\n );\n });\n\n this.renderer.listen(link, 'mouseleave', () => {\n this.renderer.removeStyle(link, 'background-color');\n this.renderer.setStyle(\n link,\n 'color',\n this.menuConfig.fontColor || '#333'\n );\n });\n });\n\n // Apply hover effects for submenu links\n subMenuLinks.forEach((link: HTMLElement) => {\n this.renderer.listen(link, 'mouseenter', () => {\n this.renderer.setStyle(\n link,\n 'background-color',\n this.menuConfig.hoverColorSubMenu ||\n this.menuConfig.hoverColor ||\n '#f1f1f1'\n );\n this.renderer.setStyle(\n link,\n 'color',\n this.menuConfig.hoverFontColorSubMenu ||\n this.menuConfig.hoverFontColor ||\n '#fff'\n );\n });\n\n this.renderer.listen(link, 'mouseleave', () => {\n this.renderer.removeStyle(link, 'background-color');\n this.renderer.setStyle(\n link,\n 'color',\n this.menuConfig.fontColorSubMenu ||\n this.menuConfig.fontColor ||\n '#666'\n );\n });\n });\n }\n}\n","<div class=\"pt-side-bar-menu\">\n <pt-card\n *ngIf=\"menuConfig.searchable\"\n [config]=\"searchCardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <div class=\"search-input\">\n <pt-text-input [formGroup]=\"formGroup\" [formField]=\"searchField\">\n </pt-text-input>\n </div>\n </pt-card>\n\n <pt-card\n [config]=\"cardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <ul class=\"menu-list\">\n <li\n *ngFor=\"let item of filteredMenus\"\n class=\"menu-item\"\n [ngClass]=\"{ 'menu-item-expanded': item.isExpanded }\"\n [ngStyle]=\"getMenuItemStyles()\"\n >\n <!-- Main menu items without children -->\n <a\n *ngIf=\"!item.children?.length\"\n [routerLink]=\"item.url\"\n class=\"menu-link\"\n [ngStyle]=\"getMenuLinkStyles()\"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span>{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n </a>\n\n <!-- Menu items with children -->\n <a\n *ngIf=\"item.children?.length\"\n class=\"menu-link\"\n (click)=\"toggleMenu(item, $event)\"\n [ngStyle]=\"getMenuLinkStyles()\"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span>{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n <i [ngClass]=\"getChevronClass(item)\" class=\"chevron\"></i>\n </a>\n\n <!-- Submenu -->\n <ul class=\"submenu-list\">\n <li *ngFor=\"let child of item.children\" class=\"submenu-item\">\n <a\n [routerLink]=\"child.url\"\n class=\"submenu-link\"\n [ngStyle]=\"getSubMenuLinkStyles()\"\n >\n <i [ngClass]=\"child.icon\"></i>\n <span class=\"submenu-title\">{{ child.label }}</span>\n <span\n *ngIf=\"child.badge\"\n [ngStyle]=\"getBadgeStyles(child.badge)\"\n class=\"badge\"\n >\n {{ child.badge.count }}\n </span>\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </pt-card>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTSideBarMenuComponent } from './pt-side-bar-menu.component';\nimport { RouterModule } from '@angular/router';\nimport { PTCardModule } from '../pt-card';\nimport { PTTextInputModule } from '../pt-text-input';\n\n@NgModule({\n declarations: [PTSideBarMenuComponent],\n imports: [CommonModule, RouterModule, PTCardModule, PTTextInputModule],\n exports: [PTSideBarMenuComponent],\n})\nexport class PTSideBarMenuModule {}\n","import { Component, Input } from '@angular/core';\nimport { FooterConfig, CardConfig } from '../models';\n\n@Component({\n selector: 'pt-footer',\n templateUrl: './pt-footer.component.html',\n styleUrls: ['./pt-footer.component.css'],\n})\nexport class PTFooterComponent {\n @Input() footerConfig: FooterConfig = {\n appName: 'Default App',\n version: '1.0.0',\n productionYear: new Date().getFullYear(),\n };\n\n getCurrentYear(): number {\n return new Date().getFullYear();\n }\n\n getCardConfig(): CardConfig {\n return (\n this.footerConfig.cardConfig ?? {\n backgroundColor: '#f8f8f8',\n width: '100%',\n height: 'auto',\n scrollableVertical: false,\n padding: '0',\n margin: '0',\n }\n );\n }\n\n displayYears(): string {\n const currentYear = this.getCurrentYear();\n const productionYear = this.footerConfig.productionYear;\n\n return productionYear === currentYear\n ? `${currentYear}`\n : `${productionYear} - ${currentYear}`;\n }\n}\n","<pt-card [config]=\"getCardConfig()\" class=\"footer-card\">\n <footer class=\"footer\">\n <p>\n {{ footerConfig.appName }} V {{ footerConfig.version }}\n <br />\n &copy; {{ displayYears() }} All rights reserved.\n </p>\n </footer>\n</pt-card>\n","import { Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { MenuItem } from 'primeng/api';\nimport { BehaviorSubject } from 'rxjs';\nimport { Menu } from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PTBreadCrumbService {\n private _breadcrumb = new BehaviorSubject<MenuItem[]>([]);\n breadcrumb$ = this._breadcrumb.asObservable();\n private menuData: any[] = [];\n\n constructor(private router: Router) {\n this.router.events\n .pipe(\n filter(\n (event): event is NavigationEnd => event instanceof NavigationEnd\n )\n )\n .subscribe((event: NavigationEnd) => {\n let urlParts = event.urlAfterRedirects.split('/');\n urlParts.splice(0, 1);\n let urlWithoutContext = urlParts.join('/');\n let newBreadcrumb = this.createBreadcrumb(urlWithoutContext);\n this._breadcrumb.next(newBreadcrumb);\n });\n }\n\n // Method to set menuData\n setMenuData(menuData: any[]) {\n this.menuData = menuData;\n }\n\n createBreadcrumb(url: string = '', breadcrumbs: MenuItem[] = []): MenuItem[] {\n if (!url) {\n return breadcrumbs;\n }\n\n const pathSegments = url.split('/').filter((segment) => segment);\n\n return this.buildParentBreadcrumbs(\n this.menuData,\n pathSegments,\n breadcrumbs\n );\n }\n\n private buildParentBreadcrumbs(\n menuData: any[],\n pathSegments: string[],\n breadcrumbs: MenuItem[]\n ): MenuItem[] {\n if (pathSegments.length === 0) {\n return breadcrumbs;\n }\n\n const currentSegment = pathSegments.shift();\n\n const currentMenu = menuData.find(\n (menu) => menu.url === currentSegment || menu.url.endsWith(currentSegment)\n );\n\n if (currentMenu) {\n breadcrumbs.push({ label: currentMenu.label, url: currentMenu.url });\n\n if (\n currentMenu.children &&\n currentMenu.children.length > 0 &&\n pathSegments.length > 0\n ) {\n return this.buildChildBreadcrumbs(\n currentMenu.children,\n pathSegments,\n breadcrumbs,\n currentSegment || ''\n );\n }\n }\n\n return breadcrumbs;\n }\n\n private buildChildBreadcrumbs(\n menuData: Menu[],\n pathSegments: string[],\n breadcrumbs: MenuItem[],\n currentUrl: string\n ): MenuItem[] {\n if (pathSegments.length === 0) {\n return breadcrumbs;\n }\n\n const currentSegment = pathSegments.shift();\n currentUrl = `/${currentUrl}/${currentSegment}`;\n\n const currentMenu = menuData.find((menu) => menu.url === currentUrl);\n\n if (currentMenu) {\n breadcrumbs.push({ label: currentMenu.label, url: currentMenu.url });\n\n if (\n currentMenu.children &&\n currentMenu.children.length > 0 &&\n pathSegments.length > 0\n ) {\n return this.buildChildBreadcrumbs(\n currentMenu.children,\n pathSegments,\n breadcrumbs,\n currentUrl\n );\n }\n } else {\n const parentMenu = menuData.find(\n (menu) =>\n menu.children &&\n menu.children.some((child) => child.url === currentUrl)\n );\n if (parentMenu && parentMenu.children) {\n const childMenu = parentMenu.children.find(\n (child: Menu) => child.url === currentUrl\n );\n if (childMenu) {\n breadcrumbs.push({ label: parentMenu.label, url: parentMenu.url });\n breadcrumbs.push({ label: childMenu.label, url: childMenu.url });\n\n if (\n childMenu.children &&\n childMenu.children.length > 0 &&\n pathSegments.length > 0\n ) {\n return this.buildChildBreadcrumbs(\n childMenu.children,\n pathSegments,\n breadcrumbs,\n currentUrl\n );\n }\n }\n }\n }\n\n return breadcrumbs;\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n OnDestroy,\n Renderer2,\n ElementRef,\n AfterViewInit,\n} from '@angular/core';\nimport { MenuItem } from 'primeng/api';\nimport { Subscription } from 'rxjs';\nimport { PTBreadCrumbService } from './pt-bread-crumb.service';\nimport { BreadCrumbConfig } from '../models/bread-crumb-config.model';\n\n@Component({\n selector: 'pt-bread-crumb',\n templateUrl: './pt-bread-crumb.component.html',\n styleUrls: ['./pt-bread-crumb.component.css'],\n})\nexport class PTBreadCrumbComponent implements OnInit, OnDestroy, AfterViewInit {\n @Input() breadCrumbConfig!: BreadCrumbConfig;\n items: MenuItem[] | undefined;\n home: MenuItem | undefined;\n breadCrumbSubscription!: Subscription;\n\n constructor(\n private breadcrumbService: PTBreadCrumbService,\n private renderer: Renderer2,\n private el: ElementRef\n ) {}\n\n ngOnInit(): void {\n this.home = { icon: 'pi pi-home', routerLink: 'dashboard' };\n\n // Pass the input menuData to the service\n this.breadcrumbService.setMenuData(this.breadCrumbConfig.menuData);\n\n this.breadCrumbSubscription = this.breadcrumbService.breadcrumb$.subscribe(\n (breadcrumb) => {\n this.items = breadcrumb;\n }\n );\n }\n\n ngAfterViewInit(): void {\n this.applyBackgroundStyles();\n }\n\n ngOnDestroy(): void {\n if (this.breadCrumbSubscription) {\n this.breadCrumbSubscription.unsubscribe();\n }\n }\n\n applyBackgroundStyles() {\n const transparency =\n this.breadCrumbConfig.pattern?.transparencyPercentage || '100';\n const backgroundImage = this.breadCrumbConfig.pattern?.imageUrl\n ? `linear-gradient(rgba(255, 255, 255, ${\n 1 - parseFloat(transparency) / 100\n }), rgba(255, 255, 255, ${1 - parseFloat(transparency) / 100})), url('${\n this.breadCrumbConfig.pattern.imageUrl\n }')`\n : '';\n\n // Delay to ensure that the element is fully rendered before applying styles\n setTimeout(() => {\n const breadcrumbNav = this.el.nativeElement.querySelector(\n 'nav.p-breadcrumb.p-component'\n );\n\n if (breadcrumbNav) {\n this.renderer.setStyle(\n breadcrumbNav,\n 'background-image',\n backgroundImage\n );\n }\n });\n }\n}\n","<div\n *ngIf=\"items && items.length > 0\"\n class=\"pt-bread-crumb breadcrumb-container\"\n>\n <p-breadcrumb class=\"max-w-full\" [model]=\"items\" [home]=\"home\"></p-breadcrumb>\n</div>\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { PageSkeletonConfig, CardConfig } from '../models';\n\n@Component({\n selector: 'pt-page-skeleton',\n templateUrl: './pt-page-skeleton.component.html',\n styleUrls: ['./pt-page-skeleton.component.css'],\n})\nexport class PTPageSkeletonComponent implements OnInit {\n @Input() pageSkeletonConfig!: PageSkeletonConfig;\n @Output() toggleSidebar: EventEmitter<void> = new EventEmitter<void>();\n\n isSidebarVisible: boolean = true;\n\n ngOnInit() {\n this.initializeBackgroundCardConfig();\n this.initializeContentCardConfig();\n }\n\n onToggleSidebar(): void {\n this.isSidebarVisible = !this.isSidebarVisible;\n this.toggleSidebar.emit();\n }\n\n // Initialize backgroundCardConfig with default values\n initializeBackgroundCardConfig() {\n this.pageSkeletonConfig.backgroundCardConfig = {\n identifier: 'pt-page-skeleton/background',\n noBorder: this.pageSkeletonConfig.backgroundCardConfig?.noBorder ?? true,\n backgroundColor:\n this.pageSkeletonConfig.backgroundCardConfig?.backgroundColor || '#fff',\n padding: this.pageSkeletonConfig.backgroundCardConfig?.padding || '20px',\n margin: this.pageSkeletonConfig.backgroundCardConfig?.margin || '10px',\n ...this.pageSkeletonConfig.backgroundCardConfig,\n };\n }\n\n // Initialize contentCardConfig with default values (if necessary)\n initializeContentCardConfig() {\n this.pageSkeletonConfig.contentCardConfig = {\n identifier: 'pt-page-skeleton/content',\n noBorder: this.pageSkeletonConfig.contentCardConfig?.noBorder ?? false,\n backgroundColor:\n this.pageSkeletonConfig.contentCardConfig?.backgroundColor || '#f0f0f0',\n padding: this.pageSkeletonConfig.contentCardConfig?.padding || '15px',\n scrollableVertical: true,\n scrollableHorizontal: true,\n ...this.pageSkeletonConfig.contentCardConfig,\n };\n }\n}\n","<pt-card [config]=\"pageSkeletonConfig.backgroundCardConfig!\">\n <!-- Navbar -->\n <pt-nav-bar-menu\n [navBarMenuConfig]=\"pageSkeletonConfig.navBarMenuConfig\"\n (toggleSidebar)=\"onToggleSidebar()\"\n ></pt-nav-bar-menu>\n\n <div class=\"main-content\">\n <!-- Sidebar (use *ngIf to toggle visibility) -->\n <pt-side-bar-menu\n *ngIf=\"isSidebarVisible\"\n [menuConfig]=\"pageSkeletonConfig.sideMenuBarConfig\"\n class=\"sidebar\"\n ></pt-side-bar-menu>\n\n <!-- Main View Area -->\n <div class=\"content-area\" [ngClass]=\"{ 'full-width': !isSidebarVisible }\">\n <!-- Content Card Wrapper -->\n <pt-card [config]=\"pageSkeletonConfig.contentCardConfig\">\n <!-- Breadcrumb -->\n <pt-bread-crumb\n *ngIf=\"pageSkeletonConfig.breadCrumbConfig\"\n [breadCrumbConfig]=\"pageSkeletonConfig.breadCrumbConfig\"\n class=\"bread-crumb\"\n ></pt-bread-crumb>\n\n <!-- Background Card -->\n\n <router-outlet></router-outlet>\n </pt-card>\n </div>\n </div>\n\n <!-- Footer -->\n <pt-footer\n *ngIf=\"pageSkeletonConfig.footerConfig\"\n [footerConfig]=\"pageSkeletonConfig.footerConfig\"\n class=\"pt-footer\"\n ></pt-footer>\n</pt-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTFooterComponent } from './pt-footer.component';\nimport { PTCardModule } from '../pt-card';\n\n@NgModule({\n declarations: [PTFooterComponent],\n imports: [CommonModule, PTCardModule],\n exports: [PTFooterComponent],\n})\nexport class PTFooterModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTBreadCrumbComponent } from './pt-bread-crumb.component';\nimport { BreadcrumbModule } from 'primeng/breadcrumb';\n\n@NgModule({\n declarations: [PTBreadCrumbComponent],\n imports: [CommonModule, BreadcrumbModule],\n exports: [PTBreadCrumbComponent],\n})\nexport class PTBreadCrumbModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTPageSkeletonComponent } from './pt-page-skeleton.component';\nimport { PTNavbarMenuModule } from '../pt-nav-bar-menu';\nimport { PTCardModule } from '../pt-card';\nimport { PTSideBarMenuModule } from '../pt-side-bar-menu';\nimport { RouterModule } from '@angular/router';\nimport { PTFooterModule } from '../pt-footer';\nimport { PTBreadCrumbModule } from '../pt-bread-crumb';\n\n@NgModule({\n declarations: [PTPageSkeletonComponent],\n imports: [\n CommonModule,\n PTNavbarMenuModule,\n PTCardModule,\n PTSideBarMenuModule,\n RouterModule,\n PTFooterModule,\n PTBreadCrumbModule,\n ],\n exports: [PTPageSkeletonComponent],\n})\nexport class PTPageSkeletonModule {}\n","import {\n Component,\n Input,\n OnInit,\n AfterViewInit,\n Renderer2,\n ElementRef,\n} from '@angular/core';\nimport { ButtonModel } from '../models';\n\n@Component({\n selector: 'pt-button',\n templateUrl: './pt-button.component.html',\n styleUrls: ['./pt-button.component.css'],\n})\nexport class PTButtonComponent implements OnInit, AfterViewInit {\n @Input() buttonConfig: ButtonModel = {\n label: 'Click Me',\n icon: '',\n iconPos: 'left',\n disabled: false,\n styleClass: '',\n loading: false,\n type: 'button',\n width: '100%',\n height: 'auto',\n fontColor: '#000',\n backgroundColor: '#fff',\n borderColor: '#000',\n };\n\n constructor(private renderer: Renderer2, private el: ElementRef) {}\n\n ngOnInit(): void {\n // Initialization logic if needed\n }\n\n ngAfterViewInit(): void {\n this.applyButtonStyles();\n }\n\n getIconPos(): 'left' | 'right' {\n return this.buttonConfig.iconPos === 'right' ? 'right' : 'left';\n }\n\n getType(): string {\n return this.buttonConfig.type || 'button';\n }\n\n applyButtonStyles(): void {\n // Select the native button element inside the p-button\n const buttonElement =\n this.el.nativeElement.querySelector('button.p-element');\n\n if (buttonElement) {\n // Apply dynamic styles using Renderer2\n this.renderer.setStyle(\n buttonElement,\n 'color',\n this.buttonConfig.fontColor\n );\n this.renderer.setStyle(\n buttonElement,\n 'background-color',\n this.buttonConfig.backgroundColor\n );\n this.renderer.setStyle(\n buttonElement,\n 'border-color',\n this.buttonConfig.borderColor\n );\n this.renderer.setStyle(\n buttonElement,\n 'width',\n this.buttonConfig.width || 'auto'\n );\n this.renderer.setStyle(\n buttonElement,\n 'height',\n this.buttonConfig.height || 'auto'\n );\n }\n }\n}\n","<p-button\n [label]=\"buttonConfig.label\"\n [icon]=\"buttonConfig.icon || ''\"\n [iconPos]=\"getIconPos()\"\n [disabled]=\"buttonConfig.disabled\"\n [loading]=\"buttonConfig.loading\"\n [class]=\"buttonConfig.styleClass\"\n [type]=\"getType()\"\n></p-button>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTButtonComponent } from './pt-button.component';\nimport { ButtonModule } from 'primeng/button';\n\n@NgModule({\n declarations: [PTButtonComponent],\n imports: [CommonModule, ButtonModule],\n exports: [PTButtonComponent],\n})\nexport class PTButtonModule {}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n FormBuilder,\n FormGroup,\n Validators,\n FormsModule,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { LoginModel, LoginPageConfig } from '../../models';\nimport { FormInputTypeEnum } from '../../enums';\nimport { CommonModule } from '@angular/common';\nimport { PTCardModule } from '../../pt-card';\nimport { PTButtonModule } from '../../pt-button';\nimport { PTTextInputModule } from '../../pt-text-input';\n\n@Component({\n selector: 'pt-login-card',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n PTCardModule,\n PTButtonModule,\n PTTextInputModule,\n ],\n templateUrl: './pt-login-card.component.html',\n styleUrls: ['./pt-login-card.component.css'],\n})\nexport class PTLoginCardComponent implements OnInit {\n @Input() loginPageConfig!: LoginPageConfig;\n @Input() loginErrorMessage: string | null = null;\n @Output() loginSubmit: EventEmitter<LoginModel> =\n new EventEmitter<LoginModel>();\n\n formGroup: FormGroup;\n\n constructor(private fb: FormBuilder) {\n this.formGroup = this.fb.group({});\n }\n\n ngOnInit(): void {\n this.initializeDefaults();\n this.setupFormFields();\n\n this.formGroup.patchValue({\n username: this.loginPageConfig?.login?.username || '',\n password: this.loginPageConfig?.login?.password || '',\n });\n // Enable/Disable the button based on form validity\n this.formGroup.statusChanges.subscribe((status) => {\n this.loginPageConfig.buttonConfig!.disabled = status !== 'VALID';\n });\n }\n\n // Initialize default values for all fields in loginPageConfig if not set\n initializeDefaults() {\n // Initialize backgroundImage\n this.loginPageConfig.backgroundImage = {\n imageUrl: this.loginPageConfig.backgroundImage?.imageUrl || '',\n transparencyPercentage:\n this.loginPageConfig.backgroundImage?.transparencyPercentage || '100',\n ...this.loginPageConfig.backgroundImage,\n };\n\n // Initialize title\n this.loginPageConfig.title = {\n text: this.loginPageConfig.title?.text || 'Login',\n position: this.loginPageConfig.title?.position || 'center',\n color: this.loginPageConfig.title?.color || '#333',\n fontSize: this.loginPageConfig.title?.fontSize || '24px',\n ...this.loginPageConfig.title,\n };\n\n // Initialize logoUrl\n this.loginPageConfig.logoUrl = {\n altText: this.loginPageConfig.logoUrl?.altText || 'Logo',\n imageUrl: this.loginPageConfig.logoUrl?.imageUrl || '',\n width: this.loginPageConfig.logoUrl?.width || '100px',\n height: this.loginPageConfig.logoUrl?.height || 'auto',\n ...this.loginPageConfig.logoUrl,\n };\n\n // Initialize footer\n this.loginPageConfig.footer = {\n version: this.loginPageConfig.footer?.version || 'V1.0',\n copyright:\n this.loginPageConfig.footer?.copyright || 'Your Company © 2024',\n ...this.loginPageConfig.footer,\n };\n\n // Initialize login\n this.loginPageConfig.login = {\n username: this.loginPageConfig.login?.username || '',\n password: this.loginPageConfig.login?.password || '',\n errorMessage: this.loginPageConfig.login?.errorMessage || '',\n emptyFieldsErrorMessage:\n this.loginPageConfig.login?.emptyFieldsErrorMessage ||\n \"Veuillez saisir votre nom d'utilisateur et votre mot de passe !\",\n ...this.loginPageConfig.login,\n };\n\n // Initialize cardConfig\n this.loginPageConfig.loginCardConfig = {\n noBorder: this.loginPageConfig.loginCardConfig?.noBorder ?? true,\n width: this.loginPageConfig.loginCardConfig?.width ?? '400px',\n padding: this.loginPageConfig.loginCardConfig?.padding ?? '40px',\n ...this.loginPageConfig.loginCardConfig,\n };\n\n // Initialize usernameField\n this.loginPageConfig.usernameField = {\n name: this.loginPageConfig.usernameField?.name || 'username',\n label: this.loginPageConfig.usernameField?.label || \"Nom d'utilisateur\",\n required: this.loginPageConfig.usernameField?.required ?? true,\n placeholder:\n this.loginPageConfig.usernameField?.placeholder ||\n \"Entrer votre nom d'utilisateur\",\n ...this.loginPageConfig.usernameField,\n };\n\n // Initialize passwordField\n this.loginPageConfig.passwordField = {\n name: this.loginPageConfig.passwordField?.name || 'password',\n label: this.loginPageConfig.passwordField?.label || 'Mot de passe',\n required: this.loginPageConfig.passwordField?.required ?? true,\n placeholder:\n this.loginPageConfig.passwordField?.placeholder ||\n 'Entrer votre mot de passe',\n type:\n this.loginPageConfig.passwordField?.type || FormInputTypeEnum.PASSWORD,\n ...this.loginPageConfig.passwordField,\n };\n\n // Initialize buttonConfig\n this.loginPageConfig.buttonConfig = {\n label: this.loginPageConfig.buttonConfig?.label || 'Login',\n type: this.loginPageConfig.buttonConfig?.type || 'submit',\n icon: this.loginPageConfig.buttonConfig?.icon || 'pi pi-sign-in',\n iconPos: this.loginPageConfig.buttonConfig?.iconPos || 'left',\n styleClass:\n this.loginPageConfig.buttonConfig?.styleClass || 'p-button-success',\n disabled: this.loginPageConfig.buttonConfig?.disabled ?? true,\n width: this.loginPageConfig.buttonConfig?.width ?? '100%',\n ...this.loginPageConfig.buttonConfig,\n };\n }\n\n onSubmit(): void {\n if (this.formGroup.valid) {\n this.loginSubmit.emit(this.formGroup.value);\n } else {\n this.loginPageConfig.login!.errorMessage =\n this.loginPageConfig.login?.emptyFieldsErrorMessage;\n }\n }\n\n // Setup form fields using the usernameField and passwordField from LoginPageConfig\n setupFormFields() {\n const usernameValidators = this.loginPageConfig.usernameField?.required\n ? [Validators.required]\n : [];\n const passwordValidators = this.loginPageConfig.passwordField?.required\n ? [Validators.required]\n : [];\n\n this.formGroup.addControl(\n this.loginPageConfig.usernameField!.name,\n this.fb.control(this.loginPageConfig.login?.username, usernameValidators)\n );\n this.formGroup.addControl(\n this.loginPageConfig.passwordField!.name,\n this.fb.control(this.loginPageConfig.login?.password, passwordValidators)\n );\n }\n}\n","<pt-card [config]=\"loginPageConfig.loginCardConfig!\">\n <!-- Logo -->\n <div class=\"logo-container\" *ngIf=\"loginPageConfig.logoUrl?.imageUrl\">\n <img\n [src]=\"loginPageConfig.logoUrl?.imageUrl\"\n [alt]=\"loginPageConfig.logoUrl?.altText || 'Logo'\"\n [style.width]=\"loginPageConfig.logoUrl?.width || '100px'\"\n [style.height]=\"loginPageConfig.logoUrl?.height || 'auto'\"\n />\n </div>\n\n <!-- Title -->\n <div class=\"title-container\">\n <h1\n [ngStyle]=\"{\n color: loginPageConfig.title?.color || '#333',\n 'font-size': loginPageConfig.title?.fontSize || '24px'\n }\"\n >\n {{ loginPageConfig.title?.text || \"Default Title\" }}\n </h1>\n </div>\n <!-- Error Message -->\n <div *ngIf=\"loginErrorMessage\" class=\"error-message\">\n {{ loginErrorMessage }}\n </div>\n <!-- Form -->\n <form class=\"form-container\" [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\n <div *ngIf=\"loginPageConfig.login?.errorMessage\" class=\"error-message\">\n {{ loginPageConfig.login?.errorMessage }}\n </div>\n\n <div class=\"field\">\n <pt-text-input\n [formGroup]=\"formGroup\"\n [formField]=\"loginPageConfig.usernameField!\"\n ></pt-text-input>\n </div>\n <div class=\"field\">\n <pt-text-input\n [formGroup]=\"formGroup\"\n [formField]=\"loginPageConfig.passwordField!\"\n ></pt-text-input>\n </div>\n\n <div class=\"submit-btn\">\n <pt-button [buttonConfig]=\"loginPageConfig.buttonConfig!\"></pt-button>\n </div>\n </form>\n <div class=\"login-footer\">\n {{ loginPageConfig.footer?.version }}\n <span>{{ loginPageConfig.footer?.copyright }}</span>\n </div>\n</pt-card>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { LoginModel, LoginPageConfig, CardConfig } from '../models';\n\n@Component({\n selector: 'pt-login-page',\n templateUrl: './pt-login-page.component.html',\n styleUrls: ['./pt-login-page.component.css'],\n})\nexport class PTLoginPageComponent implements OnInit {\n @Input() loginPageConfig!: LoginPageConfig;\n @Input() loginErrorMessage: string | null = null;\n @Output() loginSubmit: EventEmitter<LoginModel> =\n new EventEmitter<LoginModel>();\n\n private defaultCardConfig: CardConfig = {\n borderRadius: '0',\n margin: '0',\n width: '100%',\n height: '100%',\n noBorder: true,\n alignContent: 'center',\n alignBodyContent: 'center',\n };\n\n ngOnInit(): void {\n this.applyDefaultConfigs();\n }\n\n private applyDefaultConfigs(): void {\n // Apply defaults to centerCardConfig\n this.loginPageConfig.centerCardConfig = this.applyDefaults(\n this.loginPageConfig.centerCardConfig\n );\n\n // Apply defaults to leftCardConfig\n this.loginPageConfig.leftCardConfig = this.applyDefaults(\n this.loginPageConfig.leftCardConfig\n );\n\n // Apply defaults to rightCardConfig\n this.loginPageConfig.rightCardConfig = this.applyDefaults(\n this.loginPageConfig.rightCardConfig\n );\n }\n\n private applyDefaults(config?: CardConfig): CardConfig {\n return {\n ...this.defaultCardConfig,\n ...(config || {}),\n };\n }\n\n onLoginSubmit(loginModel: LoginModel): void {\n console.log('Login Submitted:', loginModel);\n this.loginSubmit.emit(loginModel);\n }\n}\n","<!-- Center Position -->\n<ng-container>\n <div *ngIf=\"loginPageConfig.position === 'center'\" class=\"center-container\">\n <pt-card\n *ngIf=\"loginPageConfig.centerCardConfig\"\n [config]=\"loginPageConfig.centerCardConfig\"\n >\n <pt-login-card\n [loginErrorMessage]=\"loginErrorMessage\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n </div>\n <!-- Left and Right Positions -->\n <div\n *ngIf=\"\n loginPageConfig.position === 'left' ||\n loginPageConfig.position === 'right'\n \"\n class=\"left-right-container\"\n >\n <!-- Left Card -->\n <pt-card\n *ngIf=\"loginPageConfig.leftCardConfig\"\n [config]=\"loginPageConfig.leftCardConfig\"\n >\n <pt-login-card\n *ngIf=\"loginPageConfig.position === 'left'\"\n [loginErrorMessage]=\"loginErrorMessage\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n\n <!-- Right Card -->\n <pt-card\n *ngIf=\"loginPageConfig.rightCardConfig\"\n [config]=\"loginPageConfig.rightCardConfig\"\n >\n <pt-login-card\n *ngIf=\"loginPageConfig.position === 'right'\"\n [loginErrorMessage]=\"loginErrorMessage\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n </div>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTLoginPageComponent } from './pt-login-page.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PTTextInputModule } from '../pt-text-input/pt-text-input.module';\nimport { PTCardModule } from '../pt-card/pt-card.module';\nimport { PTButtonModule } from '../pt-button';\nimport { PTLoginCardComponent } from './pt-login-card/pt-login-card.component';\n\n@NgModule({\n declarations: [PTLoginPageComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n PTTextInputModule,\n PTCardModule,\n PTButtonModule,\n PTLoginCardComponent,\n ],\n exports: [PTLoginPageComponent],\n})\nexport class PTLoginPageModule {}\n","import {\n Component,\n Input,\n OnInit,\n Output,\n EventEmitter,\n Renderer2,\n ElementRef,\n SimpleChanges,\n OnChanges,\n} from '@angular/core';\nimport {\n ConfirmationService,\n ConfirmEventType,\n MessageService,\n} from 'primeng/api';\nimport { DialogModel } from '../models/dialog.model';\nimport { ButtonModel } from '../models/button.model';\n\n@Component({\n selector: 'pt-dialog',\n templateUrl: './pt-dialog.component.html',\n styleUrls: ['./pt-dialog.component.css'],\n providers: [ConfirmationService, MessageService],\n})\nexport class PTDialogComponent implements OnChanges {\n @Input() dialogModel: DialogModel = {\n header: { text: 'Confirmation' },\n visible: false,\n width: '400px',\n height: 'auto',\n content: 'Do you want to proceed?',\n confirmButtonConfig: {\n label: 'Confirm',\n fontColor: '#fff',\n backgroundColor: '#007bff',\n },\n cancelButtonConfig: {\n label: 'Cancel',\n fontColor: '#fff',\n backgroundColor: '#6c757d',\n },\n };\n\n @Output() confirm: EventEmitter<void> = new EventEmitter();\n @Output() cancel: EventEmitter<void> = new EventEmitter();\n\n constructor(\n private confirmationService: ConfirmationService,\n private messageService: MessageService,\n private renderer: Renderer2,\n private el: ElementRef\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['dialogModel'] && this.dialogModel.visible) {\n this.showDialog();\n }\n }\n\n showDialog(): void {\n this.confirmationService.confirm({\n header: this.dialogModel.header?.text || 'Confirmation',\n message: this.dialogModel.content || 'Are you sure?',\n acceptButtonStyleClass: this.getButtonStyle(\n this.dialogModel.confirmButtonConfig\n ),\n rejectButtonStyleClass: this.getButtonStyle(\n this.dialogModel.cancelButtonConfig\n ),\n acceptIcon: this.dialogModel.confirmButtonConfig?.icon || 'pi pi-check',\n rejectIcon: this.dialogModel.cancelButtonConfig?.icon || 'pi pi-times',\n accept: () => {\n this.confirm.emit();\n this.messageService.add({\n severity: 'info',\n summary: 'Confirmed',\n detail: 'Action confirmed',\n life: 3000,\n });\n },\n reject: (type: ConfirmEventType) => {\n this.cancel.emit();\n if (type === ConfirmEventType.REJECT) {\n this.messageService.add({\n severity: 'error',\n summary: 'Rejected',\n detail: 'Action cancelled',\n life: 3000,\n });\n }\n },\n });\n\n // Use renderer to apply dynamic styles\n setTimeout(() => {\n const dialogElement = this.el.nativeElement.querySelector('.p-dialog');\n if (dialogElement) {\n this.renderer.setStyle(\n dialogElement,\n 'width',\n this.dialogModel.width || '400px'\n );\n this.renderer.setStyle(\n dialogElement,\n 'height',\n this.dialogModel.height || 'auto'\n );\n }\n }, 0);\n }\n\n private getButtonStyle(buttonConfig?: ButtonModel): string {\n return buttonConfig?.styleClass || 'p-button-sm'; // Default to small button style\n }\n}\n","<div>\n <p-toast></p-toast>\n <p-confirmDialog>\n <ng-template pTemplate=\"message\" let-message>\n <div\n class=\"flex flex-column align-items-center w-full gap-3 border-bottom-1 surface-border\"\n >\n <i [class]=\"dialogModel.header?.icon || 'pi pi-exclamation-circle'\"></i>\n <p>{{ message.message }}</p>\n </div>\n </ng-template>\n </p-confirmDialog>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTDialogComponent } from './pt-dialog.component';\nimport { DialogModule } from 'primeng/dialog';\nimport { PTButtonModule } from '../pt-button';\nimport { ToastModule } from 'primeng/toast';\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\n\n@NgModule({\n declarations: [PTDialogComponent],\n imports: [\n CommonModule,\n DialogModule,\n PTButtonModule,\n ToastModule,\n ConfirmDialogModule,\n ],\n exports: [PTDialogComponent],\n})\nexport class PTDialogModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { PTAdvancedPrimeTableModule } from './pt-advanced-prime-table';\nimport { MultiSearchCriteriaModule } from './multi-search-criteria';\nimport { PTFormBuilderModule } from './pt-form-builder';\nimport { PTTextInputModule } from './pt-text-input';\nimport { PTTextAreaInputModule } from './pt-text-area-input';\nimport { PTSwitchInputModule } from './pt-switch-input';\nimport { PTNumberInputModule } from './pt-number-input';\nimport { PTCheckBoxInputModule } from './pt-check-box-input';\nimport { PTDateInputModule } from './pt-date-input';\nimport { PTMetricCardModule } from './pt-metric-card';\nimport { PTMetricCardGroupModule } from './pt-metric-card-group';\nimport { PTChartModule } from './pt-chart';\nimport { PTCardModule } from './pt-card';\nimport { PTMenuModule } from './pt-menu';\nimport { PTNavbarMenuModule } from './pt-nav-bar-menu';\nimport { PTSideBarMenuModule } from './pt-side-bar-menu';\nimport { PTPageSkeletonModule } from './pt-page-skeleton';\nimport { PTFooterModule } from './pt-footer';\nimport { PTBreadCrumbModule } from './pt-bread-crumb';\nimport { PTMenuFancyModule } from './pt-menu-fancy';\nimport { PTLoginPageModule } from './pt-login-page';\nimport { PTButtonModule } from './pt-button';\nimport { PTDialogModule } from './pt-dialog/pt-dialog.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n PTAdvancedPrimeTableModule,\n MultiSearchCriteriaModule,\n\n // Inputs\n PTCheckBoxInputModule,\n PTDateInputModule,\n PTFormBuilderModule,\n PTNumberInputModule,\n PTSwitchInputModule,\n PTTextAreaInputModule,\n PTTextInputModule,\n\n // Dashboard\n PTMetricCardModule,\n PTMetricCardGroupModule,\n\n // Chart\n PTChartModule,\n\n // Cards\n PTCardModule,\n\n // Menu\n PTMenuModule,\n PTMenuFancyModule,\n\n // Navbar\n PTNavbarMenuModule,\n\n // SideBar\n PTSideBarMenuModule,\n\n // Page skeleton\n PTPageSkeletonModule,\n\n // Footer\n PTFooterModule,\n\n // BreadCrumb\n PTBreadCrumbModule,\n\n // Login\n PTLoginPageModule,\n\n // Button\n PTButtonModule,\n\n // Dialog\n PTDialogModule,\n ],\n exports: [\n PTAdvancedPrimeTableModule,\n MultiSearchCriteriaModule,\n\n // Inputs\n PTCheckBoxInputModule,\n PTDateInputModule,\n PTFormBuilderModule,\n PTNumberInputModule,\n PTSwitchInputModule,\n PTTextAreaInputModule,\n PTTextInputModule,\n\n // Dashboard\n PTMetricCardModule,\n PTMetricCardGroupModule,\n\n // Chart\n PTChartModule,\n\n // Cards\n PTCardModule,\n\n // Menu\n PTMenuModule,\n PTMenuFancyModule,\n // Navbar\n PTNavbarMenuModule,\n\n // SideBar\n PTSideBarMenuModule,\n\n // Page skeleton\n PTPageSkeletonModule,\n\n // Footer\n PTFooterModule,\n\n // BreadCrumb\n PTBreadCrumbModule,\n\n // Login\n PTLoginPageModule,\n\n // Button\n PTButtonModule,\n\n // Dialog\n PTDialogModule,\n ],\n})\nexport class NgPrimeToolsModule {}\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport {\n AxisChartConfig,\n AxisChartData,\n ChartConfig,\n TitleStyle,\n} from '../models';\n\n@Component({\n selector: 'pt-line-chart',\n templateUrl: './pt-line-chart.component.html',\n styleUrls: ['./pt-line-chart.component.css'],\n})\nexport class PTLineChartComponent implements OnChanges {\n @Input() chartData!: AxisChartData[];\n @Input() config: AxisChartConfig = {\n yAxisTitle: 'Values',\n xAxisTitle: 'Labels',\n chartIdentifier: 'line-chart',\n chartMenu: [],\n chartWidth: '100%',\n cardConfig: {\n identifier: 'line-chart-card',\n title: 'Line Chart',\n width: '100%',\n menu: {\n menuItems: [],\n },\n },\n };\n\n lineChartConfig: ChartConfig;\n\n constructor() {\n this.lineChartConfig = this.createLineChartConfig();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['chartData'] && this.chartData && this.chartData.length > 0) {\n this.updateChartData();\n }\n }\n\n private createLineChartConfig(): ChartConfig {\n const chartTitle =\n typeof this.config.cardConfig?.title === 'string'\n ? this.config.cardConfig.title\n : (this.config.cardConfig?.title as TitleStyle)?.text || 'Line Chart';\n\n return {\n type: 'line',\n data: {\n labels: [],\n datasets: [\n {\n label: chartTitle,\n data: [],\n borderColor: '#4aa0fa',\n backgroundColor: 'rgba(74, 160, 250, 0.2)',\n borderWidth: 2,\n tension: 0.4,\n fill: true,\n pointRadius: 5,\n pointBackgroundColor: '#4aa0fa',\n },\n ],\n },\n options: {\n responsive: true,\n plugins: {\n legend: {\n display: true,\n position: 'bottom',\n },\n tooltip: {\n callbacks: {\n label: (context: any) =>\n `${context.dataset.label}: ${context.raw.toFixed(2)}`,\n },\n },\n datalabels: {\n display: false,\n },\n },\n scales: {\n y: {\n beginAtZero: true,\n title: {\n display: !!this.config.yAxisTitle,\n text: this.config.yAxisTitle,\n },\n },\n x: {\n title: {\n display: !!this.config.xAxisTitle,\n text: this.config.xAxisTitle,\n },\n },\n },\n },\n };\n }\n\n private updateChartData(): void {\n const labels = this.chartData.map((item) => item.label);\n const data = this.chartData.map((item) => item.value);\n\n this.lineChartConfig.data.labels = labels;\n this.lineChartConfig.data.datasets[0].data = data;\n\n // Trigger chart update\n (this.lineChartConfig as any)._chart?.update();\n }\n}\n","<pt-card [config]=\"config.cardConfig!\">\n <pt-chart [chartConfig]=\"lineChartConfig\"></pt-chart>\n</pt-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTCardModule } from '../pt-card';\nimport { PTChartModule } from '../pt-chart';\nimport { PTLineChartComponent } from './pt-line-chart.component';\n\n@NgModule({\n declarations: [PTLineChartComponent],\n imports: [CommonModule, PTCardModule, PTChartModule],\n exports: [PTLineChartComponent],\n})\nexport class PTLineChartModule {}\n","// Advanced table\nexport * from './table-column.model';\n\n// Multi search criteria\nexport * from './search-criteria.model';\nexport * from './filter-option.model';\n\n// Form inputs and btns\nexport * from './form-button.model';\nexport * from './form-field.model';\nexport * from './form-field-group.model';\nexport * from './form-check-field.model';\nexport * from './form-date-field.model';\nexport * from './form-drop-down-field.model';\nexport * from './form-multi-select.model';\nexport * from './form-number-field.model';\nexport * from './form-switch-field.model';\nexport * from './form-text-area-field.model';\nexport * from './form-text-field.model';\n\n// Metric data for dashboard\nexport * from './metric-card-data.model';\n\n// Chart\nexport * from './chart-config.model';\nexport * from './axis-chart-config.model';\nexport * from './axis-chart-data.model';\n\n// Card\nexport * from './card-config.model';\n\n// Menu\nexport * from './menu.model';\nexport * from './menu-item.model';\nexport * from './menu-config.model';\nexport * from './nav-bar-menu-config.model';\nexport * from './side-menu-bar-config.model';\n\n// Page Skeleton\nexport * from './page-skeleton-config.model';\n\n// Footer\nexport * from './footer-config.model';\n\n// Bread Crumb\nexport * from './bread-crumb-config.model';\n\n// login\nexport * from './login-page-config.model';\nexport * from './login-model';\n\n// Button\nexport * from './button.model';\n\n// Dialog\nexport * from './dialog.model';\n\n// Generic\nexport * from './icon-style.model';\nexport * from './title-style.model';\nexport * from './text-style.model';\nexport * from './image-style.model';\nexport * from './badge.model';\nexport * from './pattern.model';\nexport * from './footer.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i5","i7","i12.CustomCurrencyPipe","i13.CustomDatePipe","i2","i4","i6","i8","i9","i1.PTDateService","i3.PTCheckBoxInputComponent","i4.PTDateInputComponent","i5.PTNumberInputComponent","i6.PTSwitchInputComponent","i7.PTTextAreaInputComponent","i8.PTTextInputComponent","i9.PTDropdownComponent","i10.PTMultiSelectComponent","i1","i4.PTDynamicFormFieldComponent","i2.PTMetricCardComponent","i2.PTMenuComponent","i2.PTCardComponent","i3.PTMenuFancyComponent","i3.PTCardComponent","i4.PTTextInputComponent","i1.PTCardComponent","i1.PTBreadCrumbService","i2.PTNavbarMenuComponent","i4.PTSideBarMenuComponent","i6.PTFooterComponent","i7.PTBreadCrumbComponent","i5.PTTextInputComponent","i3.PTLoginCardComponent","i2.PTChartComponent"],"mappings":"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"}
1
+ {"version":3,"file":"ng-prime-tools.mjs","sources":["../../../projects/ng-prime-tools/src/lib/utils/text.util.ts","../../../projects/ng-prime-tools/src/lib/pipes/custom-currency.ts","../../../projects/ng-prime-tools/src/lib/pipes/custom-date.pipe.ts","../../../projects/ng-prime-tools/src/lib/pt-advanced-prime-table/pt-advanced-prime-table.component.ts","../../../projects/ng-prime-tools/src/lib/pt-advanced-prime-table/pt-advanced-prime-table.component.html","../../../projects/ng-prime-tools/src/lib/pt-advanced-prime-table/pt-advanced-prime-table.module.ts","../../../projects/ng-prime-tools/src/lib/enums/table-type.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/search-criteria-type.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/form-input-type.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/button-color.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/input-validation.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/badge-type.enum.ts","../../../projects/ng-prime-tools/src/lib/enums/public-api.ts","../../../projects/ng-prime-tools/src/lib/multi-search-criteria/multi-search-criteria.component.ts","../../../projects/ng-prime-tools/src/lib/multi-search-criteria/multi-search-criteria.component.html","../../../projects/ng-prime-tools/src/lib/multi-search-criteria/multi-search-criteria.module.ts","../../../projects/ng-prime-tools/src/lib/pt-check-box-input/pt-check-box-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-check-box-input/pt-check-box-input.component.html","../../../projects/ng-prime-tools/src/lib/utils/date.util.ts","../../../projects/ng-prime-tools/src/lib/pt-date-input/pt-date.service.ts","../../../projects/ng-prime-tools/src/lib/pt-date-input/pt-date-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-date-input/pt-date-input.component.html","../../../projects/ng-prime-tools/src/lib/pt-number-input/pt-number-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-number-input/pt-number-input.component.html","../../../projects/ng-prime-tools/src/lib/pt-switch-input/pt-switch-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-switch-input/pt-switch-input.component.html","../../../projects/ng-prime-tools/src/lib/pt-text-area-input/pt-text-area-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-text-area-input/pt-text-area-input.component.html","../../../projects/ng-prime-tools/src/lib/pt-text-input/pt-text-input.component.ts","../../../projects/ng-prime-tools/src/lib/pt-text-input/pt-text-input.component.html","../../../projects/ng-prime-tools/src/lib/pt-dropdown/pt-dropdown.component.ts","../../../projects/ng-prime-tools/src/lib/pt-dropdown/pt-dropdown.component.html","../../../projects/ng-prime-tools/src/lib/pt-multi-select/pt-multi-select.component.ts","../../../projects/ng-prime-tools/src/lib/pt-multi-select/pt-multi-select.component.html","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-dynamic-form-field/pt-dynamic-form-field.component.ts","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-dynamic-form-field/pt-dynamic-form-field.component.html","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-form-builder.component.ts","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-form-builder.component.html","../../../projects/ng-prime-tools/src/lib/pt-check-box-input/pt-check-box-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-number-input/pt-number-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-switch-input/pt-switch-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-text-input/pt-text-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-text-area-input/pt-text-area-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-date-input/pt-date-input.module.ts","../../../projects/ng-prime-tools/src/lib/pt-dropdown/pt-dropdown.module.ts","../../../projects/ng-prime-tools/src/lib/pt-multi-select/pt-multi-select.module.ts","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-dynamic-form-field/pt-dynamic-form-field-module.ts","../../../projects/ng-prime-tools/src/lib/pt-form-builder/pt-form-builder.module.ts","../../../projects/ng-prime-tools/src/lib/pt-metric-card/pt-metric-card.component.ts","../../../projects/ng-prime-tools/src/lib/pt-metric-card/pt-metric-card.component.html","../../../projects/ng-prime-tools/src/lib/pt-metric-card/pt-metric-card.module.ts","../../../projects/ng-prime-tools/src/lib/pt-metric-card-group/pt-metric-card-group.component.ts","../../../projects/ng-prime-tools/src/lib/pt-metric-card-group/pt-metric-card-group.component.html","../../../projects/ng-prime-tools/src/lib/pt-metric-card-group/pt-metric-card-group.module.ts","../../../projects/ng-prime-tools/src/lib/pt-chart/pt-chart.component.ts","../../../projects/ng-prime-tools/src/lib/pt-chart/pt-chart.component.html","../../../projects/ng-prime-tools/src/lib/pt-chart/pt-chart.module.ts","../../../projects/ng-prime-tools/src/lib/pt-menu/pt-menu.component.ts","../../../projects/ng-prime-tools/src/lib/pt-menu/pt-menu.component.html","../../../projects/ng-prime-tools/src/lib/pt-card/pt-card.component.ts","../../../projects/ng-prime-tools/src/lib/pt-card/pt-card.component.html","../../../projects/ng-prime-tools/src/lib/pt-menu/pt-menu.module.ts","../../../projects/ng-prime-tools/src/lib/pt-card/pt-card.module.ts","../../../projects/ng-prime-tools/src/lib/pt-menu-fancy/pt-menu-fancy.component.ts","../../../projects/ng-prime-tools/src/lib/pt-menu-fancy/pt-menu-fancy.component.html","../../../projects/ng-prime-tools/src/lib/pt-nav-bar-menu/pt-nav-bar-menu.component.ts","../../../projects/ng-prime-tools/src/lib/pt-nav-bar-menu/pt-nav-bar-menu.component.html","../../../projects/ng-prime-tools/src/lib/pt-menu-fancy/pt-menu-fancy.module.ts","../../../projects/ng-prime-tools/src/lib/pt-nav-bar-menu/pt-nav-bar-menu.module.ts","../../../projects/ng-prime-tools/src/lib/pt-side-bar-menu/pt-side-bar-menu.component.ts","../../../projects/ng-prime-tools/src/lib/pt-side-bar-menu/pt-side-bar-menu.component.html","../../../projects/ng-prime-tools/src/lib/pt-side-bar-menu/pt-side-bar-menu.module.ts","../../../projects/ng-prime-tools/src/lib/pt-footer/pt-footer.component.ts","../../../projects/ng-prime-tools/src/lib/pt-footer/pt-footer.component.html","../../../projects/ng-prime-tools/src/lib/pt-bread-crumb/pt-bread-crumb.service.ts","../../../projects/ng-prime-tools/src/lib/pt-bread-crumb/pt-bread-crumb.component.ts","../../../projects/ng-prime-tools/src/lib/pt-bread-crumb/pt-bread-crumb.component.html","../../../projects/ng-prime-tools/src/lib/pt-page-skeleton/pt-page-skeleton.component.ts","../../../projects/ng-prime-tools/src/lib/pt-page-skeleton/pt-page-skeleton.component.html","../../../projects/ng-prime-tools/src/lib/pt-footer/pt-footer.module.ts","../../../projects/ng-prime-tools/src/lib/pt-bread-crumb/pt-bread-crumb.module.ts","../../../projects/ng-prime-tools/src/lib/pt-page-skeleton/pt-page-skeleton.module.ts","../../../projects/ng-prime-tools/src/lib/pt-button/pt-button.component.ts","../../../projects/ng-prime-tools/src/lib/pt-button/pt-button.component.html","../../../projects/ng-prime-tools/src/lib/pt-button/pt-button.module.ts","../../../projects/ng-prime-tools/src/lib/pt-login-page/pt-login-card/pt-login-card.component.ts","../../../projects/ng-prime-tools/src/lib/pt-login-page/pt-login-card/pt-login-card.component.html","../../../projects/ng-prime-tools/src/lib/pt-login-page/pt-login-page.component.ts","../../../projects/ng-prime-tools/src/lib/pt-login-page/pt-login-page.component.html","../../../projects/ng-prime-tools/src/lib/pt-login-page/pt-login-page.module.ts","../../../projects/ng-prime-tools/src/lib/pt-dialog/pt-dialog.component.ts","../../../projects/ng-prime-tools/src/lib/pt-dialog/pt-dialog.component.html","../../../projects/ng-prime-tools/src/lib/pt-dialog/pt-dialog.module.ts","../../../projects/ng-prime-tools/src/lib/ng-prime-tools.module.ts","../../../projects/ng-prime-tools/src/lib/pt-line-chart/pt-line-chart.component.ts","../../../projects/ng-prime-tools/src/lib/pt-line-chart/pt-line-chart.component.html","../../../projects/ng-prime-tools/src/lib/pt-line-chart/pt-line-chart.module.ts","../../../projects/ng-prime-tools/src/lib/models/public-api.ts","../../../projects/ng-prime-tools/src/ng-prime-tools.ts"],"sourcesContent":["import { TableColumn } from '../models';\n\n/**\n * Calculates the width required for a column based on the header text (column title).\n * It uses the Canvas API to measure text width dynamically.\n *\n * @param {TableColumn} col - The column metadata containing the header title and code.\n * @param {string} [font='16px Arial'] - The font to use for measurement (defaults to '16px Arial').\n * @returns {number} - The calculated width of the column in pixels.\n */\nexport function calculateTextWidth(\n col: TableColumn,\n font: string = '16px Arial'\n): number {\n // Create a canvas context for measuring text\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n\n if (!context) {\n return 100; // Fallback width if canvas context is not available\n }\n\n // Set the font to match the provided font or the document body font\n context.font = font || getComputedStyle(document.body).font;\n\n // Measure the header text width\n const headerWidth = context.measureText(col.title).width;\n\n // Return the width with some padding\n return Math.ceil(headerWidth + 20); // Add padding for extra space\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'customCurrency',\n standalone: true,\n})\nexport class CustomCurrencyPipe implements PipeTransform {\n transform(\n value: number,\n currency?: string,\n decimalPlaces?: number,\n thousandSeparator: 'comma' | 'space' = 'comma',\n decimalSeparator: 'comma' | 'dot' = 'dot'\n ): string {\n let formattedValue: string;\n\n if (decimalPlaces !== undefined) {\n formattedValue = value.toFixed(decimalPlaces);\n } else {\n formattedValue = value.toString();\n }\n\n const thousandSeparatorChar = thousandSeparator === 'space' ? ' ' : ',';\n const decimalSeparatorChar = decimalSeparator === 'comma' ? ',' : '.';\n\n formattedValue = formattedValue.replace(\n /\\B(?=(\\d{3})+(?!\\d))/g,\n thousandSeparatorChar\n );\n\n if (decimalSeparatorChar === ',') {\n formattedValue = formattedValue.replace('.', ',');\n }\n\n if (currency) {\n let formattedCurrency: string;\n\n switch (currency) {\n case 'MAD':\n formattedCurrency = `${formattedValue} DH`;\n break;\n case 'USD':\n formattedCurrency = `$${formattedValue}`;\n break;\n default:\n formattedCurrency = `${formattedValue} ${currency}`;\n }\n\n return formattedCurrency;\n }\n\n return formattedValue;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'customDate',\n})\nexport class CustomDatePipe implements PipeTransform {\n transform(value: any, format: string = 'dd/MM/yyyy'): string | null {\n if (!value) return null;\n\n if (typeof value === 'string') {\n const parts = value.split('/');\n if (parts.length === 3) {\n const day = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const year = parseInt(parts[2], 10);\n const date = new Date(year, month, day);\n\n if (isNaN(date.getTime())) return null;\n\n const options: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n };\n return new Intl.DateTimeFormat('en-GB', options).format(date);\n }\n } else if (value instanceof Date) {\n // If the value is already a Date object\n const options: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n };\n return new Intl.DateTimeFormat('en-GB', options).format(value);\n }\n\n return null;\n }\n}\n","import { Component, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { Table } from 'primeng/table';\nimport {\n ImageStyle,\n TableColumn,\n TableTypeEnum,\n TitleStyle,\n} from '../../public-api';\nimport { calculateTextWidth } from '../utils/text.util';\n\n@Component({\n selector: 'pt-advanced-prime-table',\n templateUrl: './pt-advanced-prime-table.component.html',\n styleUrl: './pt-advanced-prime-table.component.css',\n})\nexport class PTAdvancedPrimeTableComponent implements OnInit {\n // Inputs\n @Input() data: any[] = [];\n @Input() columns: TableColumn[] = [];\n @Input() totalRecords: number = 0;\n @Input() rowsPerPage: number[] = [];\n @Input() hasSearchFilter: boolean = false;\n @Input() hasExportExcel: boolean = false;\n @Input() hasExportPDF: boolean = false;\n @Input() hasColumnFilter: boolean = false;\n @Input() isPaginated: boolean = false;\n @Input() actions: any[] = [];\n @Input() isSortable: boolean = false;\n @Input() loading: boolean = false;\n @Input() maxHeight: string | null = null;\n\n // Outputs: Events emitted to the parent component\n @Output() filter = new EventEmitter();\n @Output() search = new EventEmitter<any>();\n @Output() exportExcelEvent = new EventEmitter<void>();\n @Output() exportPdfEvent = new EventEmitter<void>();\n\n @ViewChild('dt', { static: false }) dt!: Table;\n\n public TableTypeEnum = TableTypeEnum;\n searchValue: string = '';\n\n private validCurrencyCodes = ['USD', 'EUR', 'MAD'];\n iconWidth = 77;\n\n // Component state properties\n isDelete: boolean = false;\n isEdit: boolean = false;\n rows: number = 0;\n\n // Data management properties\n dataMap = new Map();\n map = new Map();\n optionEntries = new Map<string, any[]>();\n optionValues: any[] = [];\n globalFilterFields: string[] = [];\n\n // CRUD operation handlers\n Delete: (value: any) => void = () => {};\n initEditableRow: (data: any) => void = () => {};\n saveEditableRow: (data: any) => void = () => {};\n cancelEditableRow: (item: any) => void = () => {};\n hasGroupedColumns: boolean = false;\n constructor() {}\n\n ngOnInit(): void {\n this.hasGroupedColumns = this.columns.some(\n (col) => col.children && col.children.length > 0\n );\n // Transform the date fields based on column metadata\n this.data = this.formatingDateFields();\n this.globalFilterFields = this.columns\n .filter((col) => col.code !== undefined && col.isFilter !== false)\n .map((col) => col.code as string);\n this.initializePagination();\n this.initializeActions();\n\n // Set default value for isSortable\n this.columns.forEach((col) => {\n if (col.type === TableTypeEnum.ACTION) {\n col.isEditable = false;\n col.isFilter = false;\n col.isSortable = false;\n }\n\n if (col.isSortable === undefined) {\n col.isSortable = true;\n }\n\n if (col.isEditable === undefined) {\n col.isEditable = true;\n }\n\n if (col.isFilter !== false && col.code !== undefined) {\n this.globalFilterFields.push(col.code);\n }\n\n if (!col.width) {\n col.width = this.calculateColumnWidth(col);\n }\n });\n }\n\n // Function to calculate column width based on text in header and data\n private calculateColumnWidth(col: TableColumn): string {\n const calculatedWidth = calculateTextWidth(col, col.title);\n const totalWidth = calculatedWidth + this.iconWidth + 20;\n return `${totalWidth}px`;\n }\n\n getHeaderWidth(col: TableColumn): string {\n // Remove 'px' from col.width and convert it to a number\n const widthWithoutPx = parseInt(col.width?.replace('px', '') || '0', 10);\n\n // Add 20 to the calculated width\n const headerWidth = widthWithoutPx + 20;\n\n // Return the new width in 'px'\n return `${headerWidth}px`;\n }\n\n // Initialization Methods\n private formatingDateFields(): any {\n return this.data.map((item) => {\n const transformedItem = { ...item };\n this.columns.forEach((column) => {\n if (\n column.type === TableTypeEnum.DATE &&\n column.code !== undefined &&\n transformedItem[column.code] !== undefined\n ) {\n const dateValue = this.parseDate(transformedItem[column.code]);\n transformedItem[column.code] = dateValue ? dateValue : null;\n }\n });\n return transformedItem;\n });\n }\n\n clear(table: Table) {\n table.clear();\n this.searchValue = '';\n }\n\n private parseDate(dateString: string): Date | null {\n const parts = dateString.split('/');\n if (parts.length === 3) {\n // Assuming date format is DD/MM/YYYY\n const day = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const year = parseInt(parts[2], 10);\n const date = new Date(year, month, day);\n return isNaN(date.getTime()) ? null : date;\n }\n return null;\n }\n\n private initializePagination(): void {\n if (this.isPaginated) {\n // Check if rowsPerPage is undefined or an empty array\n if (!this.rowsPerPage || this.rowsPerPage.length === 0) {\n this.rowsPerPage = [20, 30, 40];\n }\n this.rows = this.rowsPerPage[0];\n }\n }\n\n private initializeActions(): void {\n if (this.actions) {\n this.actions.forEach((action) => {\n switch (action.code) {\n case 'delete':\n this.isDelete = true;\n this.Delete = (value: any) => action.action(value);\n break;\n case 'edit':\n this.initializeEditActions(action);\n break;\n default:\n this.isDelete = false;\n this.isEdit = false;\n }\n });\n }\n }\n\n private initializeEditActions(action: any): void {\n this.isEdit = true;\n this.initEditableRow = (data: any) => action.action.init(data);\n this.saveEditableRow = (data: any) => {\n const record = this.map.get(data.id);\n action.action.save(data, record);\n this.dataMap.clear();\n };\n this.cancelEditableRow = (item: any) => console.log(item);\n }\n\n onChange(event: Event, id: number, key: any) {\n const target = event.target as HTMLInputElement;\n this.changeHandler(id, key, target.value);\n }\n\n changeHandler(id: number, key: any, value: any) {\n let column = this.columns.find((item) => item.code === key);\n if (!this.map.get(id)) {\n if (column?.type === TableTypeEnum.DATE) {\n let date = this.parseDate(value);\n this.dataMap.set(key, date);\n } else {\n this.dataMap.set(key, value);\n }\n this.map.set(id, new Map(this.dataMap));\n } else {\n let mapItem = this.map.get(id);\n if (column?.type === TableTypeEnum.DATE) {\n let date = this.parseDate(value);\n mapItem.set(key, date);\n } else {\n mapItem.set(key, value);\n }\n }\n }\n\n getColumnFilterType(column: TableColumn): string {\n switch (column.type) {\n case TableTypeEnum.STRING:\n return 'text';\n case TableTypeEnum.AMOUNT:\n case TableTypeEnum.NUMBER:\n return 'numeric';\n case TableTypeEnum.DATE:\n return 'date';\n case TableTypeEnum.MULTISELECT:\n return 'multiSelect';\n case TableTypeEnum.BOOLEAN:\n return 'boolean';\n default:\n return 'text';\n }\n }\n\n // State Check Methods\n isEditable(key: string): boolean {\n let column = this.columns.find((item) => item.code === key);\n return column?.isEditable !== false;\n }\n\n isMultiSelect(key: any): boolean {\n let column = this.columns.find((item) => item.code === key);\n if (\n column?.type === TableTypeEnum.MULTISELECT &&\n column.options &&\n column.code !== undefined\n ) {\n this.optionEntries = new Map([\n [column.code, Object.values(column.options)],\n ]);\n this.optionValues = this.optionEntries.get(key) || [];\n return true;\n }\n return false;\n }\n\n isDatePicker(key: any): boolean {\n return (\n this.columns.find((item) => item.code === key)?.type ===\n TableTypeEnum.DATE\n );\n }\n\n // Utility Methods\n dateConverter(value: any): string {\n return new Date(value).toLocaleDateString('en-US');\n }\n\n getCurrencySymbol(column: TableColumn): string | undefined {\n return column.type === TableTypeEnum.AMOUNT &&\n column.currency &&\n this.isValidCurrencyCode(column.currency)\n ? column.currency\n : undefined;\n }\n\n private isValidCurrencyCode(currencyCode: string): boolean {\n return this.validCurrencyCodes.includes(currencyCode);\n }\n\n filterGlobal(event: Event): void {\n const target = event.target as HTMLInputElement;\n const value = target.value.toLowerCase();\n\n // Create a new filtered dataset\n const filteredData = this.data.filter((item) => {\n return this.globalFilterFields.some((field) => {\n const column = this.columns.find((col) => col.code === field);\n if (!column) {\n return false;\n }\n\n // Handle different column types\n if (column.type === TableTypeEnum.DATE) {\n const itemDate = this.formatDate(item[field]);\n return itemDate && itemDate.includes(value);\n } else if (\n column.type === TableTypeEnum.AMOUNT ||\n column.type === TableTypeEnum.NUMBER\n ) {\n return (\n item[field] && item[field].toString().toLowerCase().includes(value)\n );\n } else {\n return (\n item[field] && item[field].toString().toLowerCase().includes(value)\n );\n }\n });\n });\n\n // Update the table's value\n this.dt.value = filteredData;\n }\n\n private formatDate(date: any): string {\n if (!date) return '';\n if (date instanceof Date) {\n // Handle Date object\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const year = date.getFullYear().toString();\n return `${day}/${month}/${year}`;\n } else if (typeof date === 'string') {\n // Handle string date\n const parts = date.split('/');\n if (parts.length === 3) {\n return `${parts[0]}/${parts[1]}/${parts[2]}`;\n } else {\n // Handle partial dates\n return date;\n }\n }\n return '';\n }\n\n exportExcel() {\n this.exportExcelEvent.emit();\n }\n\n exportPdf() {\n this.exportPdfEvent.emit();\n }\n\n getImageStyle(style: TitleStyle | ImageStyle | undefined): {\n [key: string]: string;\n } {\n if (style) {\n const imageStyle: { [key: string]: string } = {\n width: (style as ImageStyle).width || 'auto',\n height: (style as ImageStyle).height || 'auto',\n };\n\n // Fallback to empty string if margin, marginLeft, or marginRight are undefined\n if ((style as ImageStyle).margin) {\n imageStyle.margin = (style as ImageStyle).margin!;\n }\n\n if ((style as ImageStyle).marginLeft) {\n imageStyle.marginLeft = (style as ImageStyle).marginLeft!;\n }\n\n if ((style as ImageStyle).marginRight) {\n imageStyle.marginRight = (style as ImageStyle).marginRight!;\n }\n\n if ((style as ImageStyle).marginTop) {\n imageStyle.marginTop = (style as ImageStyle).marginTop!;\n }\n\n if ((style as ImageStyle).marginBottom) {\n imageStyle.marginBottom = (style as ImageStyle).marginBottom!;\n }\n\n return imageStyle;\n }\n\n return {};\n }\n\n getTitleStyle(style: TitleStyle | ImageStyle | undefined): {\n [key: string]: string;\n } {\n if (style) {\n return {\n color: style.color || 'inherit',\n fontSize: (style as TitleStyle).fontSize || 'inherit',\n textAlign: (style as TitleStyle).position || 'left',\n };\n }\n return {};\n }\n\n formatNumber(\n value: number,\n decimalPlaces?: number,\n thousandSeparator: 'comma' | 'space' = 'comma',\n decimalSeparator: 'comma' | 'dot' = 'dot'\n ): string {\n if (value === null || value === undefined || isNaN(value)) return '';\n\n // Convert the number to a string with full precision if decimalPlaces is undefined\n let formattedNumber =\n decimalPlaces !== undefined\n ? value.toFixed(decimalPlaces)\n : value.toString();\n\n // Replace decimal separator (default is \"dot\")\n if (decimalSeparator === 'comma') {\n formattedNumber = formattedNumber.replace('.', ',');\n }\n\n // Apply thousand separator only if the number is >= 1000\n if (thousandSeparator && Math.abs(value) >= 1000) {\n const parts = formattedNumber.split(\n decimalSeparator === 'comma' ? ',' : '.'\n );\n parts[0] = parts[0].replace(\n /\\B(?=(\\d{3})+(?!\\d))/g,\n thousandSeparator === 'comma' ? ',' : ' '\n );\n formattedNumber = parts.join(decimalSeparator === 'comma' ? ',' : '.');\n }\n\n return formattedNumber;\n }\n}\n","<div class=\"pt-advanced-prime-table table-container\">\n <p-table\n #dt\n [value]=\"data\"\n [loading]=\"loading\"\n [rows]=\"rows\"\n [paginator]=\"isPaginated\"\n [globalFilterFields]=\"globalFilterFields\"\n [rowsPerPageOptions]=\"rowsPerPage\"\n dataKey=\"id\"\n styleClass=\"p-datatable-gridlines\"\n styleClass=\"p-datatable-striped\"\n editMode=\"row\"\n [scrollable]=\"true\"\n [scrollHeight]=\"maxHeight !== null ? maxHeight : undefined\"\n >\n <ng-template pTemplate=\"caption\">\n <div class=\"flex\">\n <div>\n <h3>Total: {{ totalRecords }}</h3>\n </div>\n\n <div>\n <!-- Clear filters -->\n <button\n *ngIf=\"hasSearchFilter\"\n pButton\n icon=\"pi pi-filter-slash\"\n class=\"p-button-rounded p-button-text\"\n (click)=\"clear(dt)\"\n title=\"Clear filters\"\n ></button>\n\n <!-- Export to Excel Button -->\n <button\n *ngIf=\"hasExportExcel\"\n pButton\n icon=\"pi pi-file-excel\"\n class=\"p-button-rounded p-button-text\"\n (click)=\"exportExcel()\"\n title=\"Export to Excel\"\n ></button>\n\n <!-- Export to PDF Button -->\n <button\n *ngIf=\"hasExportPDF\"\n pButton\n icon=\"pi pi-file-pdf\"\n class=\"p-button-rounded p-button-text\"\n (click)=\"exportPdf()\"\n title=\"Export to PDF\"\n ></button>\n </div>\n <div class=\"ml-auto\" *ngIf=\"hasSearchFilter\">\n <!-- Add this wrapper div with ml-auto class -->\n <p-iconField iconPosition=\"left\" class=\"ml-auto\">\n <p-inputIcon>\n <i class=\"pi pi-search\"></i>\n </p-inputIcon>\n <input\n pInputText\n type=\"text\"\n [(ngModel)]=\"searchValue\"\n (input)=\"filterGlobal($event)\"\n placeholder=\"Search keyword\"\n />\n </p-iconField>\n </div>\n </div>\n </ng-template>\n\n <ng-template pTemplate=\"header\">\n <tr class=\"sticky-header\">\n <ng-container *ngFor=\"let col of columns\">\n <th\n *ngIf=\"!col.children; else groupHeader\"\n [style.width]=\"getHeaderWidth(col)\"\n [style.padding]=\"'0px'\"\n colspan=\"1\"\n >\n <ng-container\n *ngIf=\"isSortable && col.isSortable !== false; else noSortHeader\"\n >\n <th\n pSortableColumn=\"{{ col.code }}\"\n [style.width]=\"getHeaderWidth(col)\"\n >\n <div\n class=\"header-container d-flex align-items-center justify-content-between\"\n [style.width]=\"col.width\"\n [style.padding]=\"'0px'\"\n [style.margin]=\"'10px'\"\n >\n <span>{{ col.title }}</span>\n <div\n class=\"icons d-flex align-items-center\"\n [style.width]=\"'77px'\"\n >\n <p-sortIcon field=\"{{ col.code }}\" />\n <ng-container *ngIf=\"col.isFilter !== false\">\n <p-columnFilter\n *ngIf=\"col.type === 'AMOUNT'\"\n display=\"menu\"\n [field]=\"col.code\"\n [type]=\"getColumnFilterType(col)\"\n [currency]=\"getCurrencySymbol(col)\"\n ></p-columnFilter>\n\n <p-columnFilter\n *ngIf=\"col.type !== 'AMOUNT'\"\n display=\"menu\"\n [field]=\"col.code\"\n display=\"menu\"\n [type]=\"getColumnFilterType(col)\"\n [type]=\"getColumnFilterType(col)\"\n >\n <ng-template\n pTemplate=\"filter\"\n let-value\n let-filterCallback=\"filterCallback\"\n *ngIf=\"col.type === TableTypeEnum.NUMBER\"\n >\n <input\n pInputText\n type=\"number\"\n [step]=\"\n col.decimalPlaces\n ? '0.' + '1'.padEnd(col.decimalPlaces, '0')\n : 'any'\n \"\n [ngModel]=\"value\"\n (ngModelChange)=\"filterCallback($event)\"\n placeholder=\"Enter number\"\n />\n </ng-template>\n <ng-template\n pTemplate=\"filter\"\n let-value\n let-filterCallback=\"filterCallback\"\n *ngIf=\"getColumnFilterType(col) === 'date'\"\n >\n <p-calendar\n [ngModel]=\"value\"\n (ngModelChange)=\"filterCallback($event)\"\n [dateFormat]=\"'dd/mm/yy'\"\n ></p-calendar>\n </ng-template>\n\n <ng-template\n pTemplate=\"filter\"\n let-value\n let-filterCallback=\"filterCallback\"\n *ngIf=\"getColumnFilterType(col) === 'multiSelect'\"\n >\n <p-multiSelect\n [options]=\"col.filterOptions\"\n [ngModel]=\"value\"\n (ngModelChange)=\"filterCallback($event)\"\n [display]=\"'chip'\"\n placeholder=\"Select\"\n class=\"custom-multiselect\"\n ></p-multiSelect>\n </ng-template>\n </p-columnFilter>\n </ng-container>\n </div>\n </div>\n </th>\n </ng-container>\n <ng-template #noSortHeader>\n <th>\n <div class=\"header-container\">\n <span>{{ col.title }}</span>\n <ng-container *ngIf=\"col.isFilter !== false\">\n <p-columnFilter\n *ngIf=\"col.type === 'AMOUNT'\"\n display=\"menu\"\n [field]=\"col.code\"\n [type]=\"getColumnFilterType(col)\"\n [currency]=\"getCurrencySymbol(col)\"\n ></p-columnFilter>\n\n <p-columnFilter\n *ngIf=\"col.type !== 'AMOUNT'\"\n display=\"menu\"\n [field]=\"col.code\"\n [type]=\"getColumnFilterType(col)\"\n >\n <ng-template\n pTemplate=\"filter\"\n let-value\n let-filterCallback=\"filterCallback\"\n *ngIf=\"getColumnFilterType(col) === 'date'\"\n >\n <p-calendar\n [ngModel]=\"value\"\n (ngModelChange)=\"filterCallback($event)\"\n [dateFormat]=\"'dd/mm/yy'\"\n ></p-calendar>\n </ng-template>\n\n <ng-template\n pTemplate=\"filter\"\n let-value\n let-filterCallback=\"filterCallback\"\n *ngIf=\"getColumnFilterType(col) === 'multiSelect'\"\n >\n <p-multiSelect\n [options]=\"col.filterOptions\"\n [ngModel]=\"value\"\n (ngModelChange)=\"filterCallback($event)\"\n [display]=\"'chip'\"\n placeholder=\"Select\"\n class=\"custom-multiselect\"\n ></p-multiSelect>\n </ng-template>\n </p-columnFilter>\n </ng-container>\n </div>\n </th>\n </ng-template>\n </th>\n <!-- Grouped headers -->\n <ng-template #groupHeader>\n <th\n [attr.colspan]=\"col.children?.length\"\n [style.width]=\"getHeaderWidth(col)\"\n [style.text-align]=\"'center'\"\n >\n <span>{{ col.title }}</span>\n </th>\n </ng-template>\n </ng-container>\n </tr>\n <!-- Child headers (Second Row) -->\n <tr *ngIf=\"hasGroupedColumns\">\n <ng-container *ngFor=\"let col of columns\">\n <ng-container *ngIf=\"col.children\">\n <th\n *ngFor=\"let child of col.children\"\n [style.width]=\"getHeaderWidth(child)\"\n [style.padding]=\"'0px'\"\n >\n <!-- Sortable/Filterable header logic for child columns -->\n </th>\n </ng-container>\n </ng-container>\n </tr>\n </ng-template>\n\n <!-- Empty message template -->\n <ng-template pTemplate=\"emptymessage\">\n <div class=\"empty-message\">\n <i class=\"pi pi-info-circle\"></i>\n <p>No records available to display.</p>\n </div>\n </ng-template>\n\n <ng-template\n pTemplate=\"body\"\n let-data\n let-editing=\"editing\"\n let-ri=\"rowIndex\"\n >\n <!-- Render a table row and make it editable if `isEdit` is true -->\n <tr *ngIf=\"!loading\" [pEditableRow]=\"isEdit ? data : null\">\n <!-- Loop through each column -->\n <ng-container *ngFor=\"let col of columns\">\n <!-- Check if the column has children -->\n <ng-container *ngIf=\"!col.children; else childColumns\">\n <!-- Render a single cell for columns without children -->\n <ng-container\n *ngIf=\"col.code !== undefined && data[col.code] !== undefined\"\n >\n <td\n *ngIf=\"isEditable(col.code); else normalTD\"\n [style.width]=\"getHeaderWidth(col)\"\n >\n <!-- Editable input for the column -->\n <ng-container *ngIf=\"isMultiSelect(col.code); else datePicker\">\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <p-multiSelect\n appendTo=\"body\"\n [ngModel]=\"data[col.code]\"\n [style]=\"{ width: '100%' }\"\n (ngModelChange)=\"\n changeHandler(data.id, col.code, $event)\n \"\n [options]=\"optionValues\"\n ></p-multiSelect>\n </ng-template>\n <ng-template pTemplate=\"output\">\n <div class=\"multi-select-container\">\n <ng-container *ngFor=\"let rec of data[col.code]\">\n <p-tag [value]=\"rec\"></p-tag>\n </ng-container>\n </div>\n </ng-template>\n </p-cellEditor>\n </ng-container>\n\n <ng-template #datePicker>\n <ng-container\n *ngIf=\"isDatePicker(col.code); else normalInput\"\n >\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <p-calendar\n [inputId]=\"data[col.code]\"\n [ngModel]=\"data[col.code]\"\n (ngModelChange)=\"\n changeHandler(data.id, col.code, $event)\n \"\n [dateFormat]=\"'dd/mm/yy'\"\n ></p-calendar>\n </ng-template>\n <ng-template pTemplate=\"output\">\n {{ data[col.code] | customDate }}\n </ng-template>\n </p-cellEditor>\n </ng-container>\n </ng-template>\n\n <ng-template #normalInput>\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <input\n pInputText\n type=\"text\"\n [ngModel]=\"data[col.code]\"\n (change)=\"onChange($event, data.id, col.code)\"\n />\n </ng-template>\n <ng-template pTemplate=\"output\">\n <ng-container\n *ngIf=\"\n col.type === TableTypeEnum.AMOUNT;\n else normalOutput\n \"\n >\n {{\n data[col.code]\n | customCurrency\n : getCurrencySymbol(col)\n : col.decimalPlaces\n : col.thousandSeparator\n : col.decimalSeparator\n }}\n </ng-container>\n <ng-template #normalOutput>\n {{ data[col.code] }}\n </ng-template>\n </ng-template>\n </p-cellEditor>\n </ng-template>\n </td>\n\n <ng-template #normalTD>\n <td [style.width]=\"getHeaderWidth(col)\">\n <!-- COMPOSED -->\n <ng-container *ngIf=\"col.type === TableTypeEnum.COMPOSED\">\n <div class=\"composed-cell\">\n <ng-container\n *ngFor=\"\n let composedName of col.composedNames;\n let i = index\n \"\n >\n <!-- Check if the composedType is IMAGE -->\n <ng-container\n *ngIf=\"\n col.composedTypes &&\n col.composedTypes[i] === TableTypeEnum.IMAGE\n \"\n >\n <img\n [src]=\"data[col.code][composedName]\"\n alt=\"composed-img\"\n class=\"composed-image\"\n [ngStyle]=\"getImageStyle(col.composedStyles?.[composedName])\"\n />\n </ng-container>\n\n <!-- Check if the composedType is STRING -->\n <ng-container\n *ngIf=\"\n col.composedTypes &&\n col.composedTypes[i] === TableTypeEnum.STRING\n \"\n >\n <span\n class=\"composed-text\"\n [ngStyle]=\"getTitleStyle(col.composedStyles?.[composedName])\"\n >\n {{ data[col.code][composedName] }}\n </span>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <!-- AMOUNT-->\n <ng-container *ngIf=\"col.type === TableTypeEnum.AMOUNT\">\n {{\n data[col.code]\n | customCurrency\n : getCurrencySymbol(col)\n : col.decimalPlaces\n : col.thousandSeparator\n : col.decimalSeparator\n }}\n </ng-container>\n\n <!-- NUMBER-->\n <ng-container *ngIf=\"col.type === TableTypeEnum.NUMBER\">\n {{\n formatNumber(\n data[col.code],\n col.decimalPlaces,\n col.thousandSeparator,\n col.decimalSeparator\n )\n }}\n </ng-container>\n\n <!-- STRING-->\n <ng-container *ngIf=\"col.type === TableTypeEnum.STRING\">\n {{ data[col.code] }}\n </ng-container>\n </td>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- Render child columns if the column has children -->\n <ng-template #childColumns>\n <ng-container *ngFor=\"let child of col.children\">\n <ng-container\n *ngIf=\"\n child.code !== undefined && data[child.code] !== undefined\n \"\n >\n <td [style.width]=\"getHeaderWidth(child)\">\n <!-- Render editable or normal cells for child columns -->\n <ng-container\n *ngIf=\"isEditable(child.code); else childNormalTD\"\n >\n <p-cellEditor>\n <ng-template pTemplate=\"input\">\n <input\n pInputText\n type=\"text\"\n [ngModel]=\"data[child.code]\"\n (change)=\"onChange($event, data.id, child.code)\"\n />\n </ng-template>\n <ng-template pTemplate=\"output\">\n {{ data[child.code] }}\n </ng-template>\n </p-cellEditor>\n </ng-container>\n\n <ng-template #childNormalTD>\n {{ data[child.code] }}\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n\n <!-- Render action buttons if there are any actions defined -->\n <td *ngIf=\"actions?.length\">\n <div class=\"action-buttons-container\">\n <div *ngIf=\"isDelete\">\n <button\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-trash\"\n (click)=\"Delete(data.id)\"\n class=\"p-button-rounded p-button-text\"\n ></button>\n </div>\n <div>\n <button\n pInitEditableRow\n *ngIf=\"!editing\"\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-pencil\"\n (click)=\"initEditableRow(data)\"\n class=\"p-button-rounded p-button-text\"\n ></button>\n <button\n *ngIf=\"editing\"\n pSaveEditableRow\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-check\"\n (click)=\"saveEditableRow(data)\"\n class=\"p-button-rounded p-button-text\"\n ></button>\n <button\n *ngIf=\"editing\"\n pCancelEditableRow\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-times\"\n (click)=\"cancelEditableRow(data)\"\n class=\"p-button-rounded p-button-text\"\n ></button>\n </div>\n </div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n</div>\n","import { NgModule } from '@angular/core';\nimport { PTAdvancedPrimeTableComponent } from './pt-advanced-prime-table.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { CalendarModule } from 'primeng/calendar';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { TableModule } from 'primeng/table';\nimport { TagModule } from 'primeng/tag';\nimport { CustomCurrencyPipe } from '../pipes/custom-currency';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { CustomDatePipe } from '../pipes/custom-date.pipe';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\n\n@NgModule({\n declarations: [PTAdvancedPrimeTableComponent, CustomDatePipe],\n imports: [\n CommonModule,\n TableModule,\n InputTextModule,\n ButtonModule,\n CalendarModule,\n FormsModule,\n MultiSelectModule,\n TagModule,\n CustomCurrencyPipe,\n IconFieldModule,\n InputIconModule,\n ProgressSpinnerModule,\n ],\n exports: [PTAdvancedPrimeTableComponent],\n})\nexport class PTAdvancedPrimeTableModule {}\n","export enum TableTypeEnum {\n DATE = 'DATE',\n STRING = 'STRING',\n AMOUNT = 'AMOUNT',\n NUMBER = 'NUMBER',\n MULTISELECT = 'MULTISELECT',\n CURRENCY = 'CURRENCY',\n BOOLEAN = 'BOOLEAN',\n ACTION = 'ACTION',\n COMPOSED = 'COMPOSED',\n IMAGE = 'IMAGE',\n}\n","export enum SearchCriteriaTypeEnum {\n DATE = 'DATE',\n DATERANGE = 'DATERANGE',\n STRING = 'STRING',\n AMOUNT = 'AMOUNT',\n NUMBER = 'NUMBER',\n MULTISELECT = 'MULTISELECT',\n}\n","export enum FormInputTypeEnum {\n DATE = 'DATE',\n TEXT = 'TEXT',\n TEXTAREA = 'TEXTAREA',\n AMOUNT = 'AMOUNT',\n NUMBER = 'NUMBER',\n MULTISELECT = 'MULTISELECT',\n SELECT = 'SELECT',\n CURRENCY = 'CURRENCY',\n CHECKBOX = 'CHECKBOX',\n SWITCH = 'SWITCH',\n PASSWORD = 'PASSWORD',\n}\n","export enum ButtonColorEnum {\n PRIMARY = 'p-button-primary',\n SECONDARY = 'p-button-secondary',\n SUCCESS = 'p-button-success',\n INFO = 'p-button-info',\n WARNING = 'p-button-warning',\n DANGER = 'p-button-danger',\n}\n","export enum InputValidationEnum {\n ONLY_LETTERS = '^[A-Za-z ]+$',\n ONLY_NUMBERS = '^[0-9]+$',\n LETTERS_AND_NUMBERS = '^[A-Za-z0-9 ]+$',\n PHONE_NUMBER = '^[0-9 ]+$',\n}\n","export enum BadgeType {\n Info = 'info',\n Danger = 'danger',\n Warning = 'warning',\n}\n\nexport const BadgeTypeStyles = {\n [BadgeType.Info]: {\n color: 'white',\n backgroundColor: '#17a2b8', // Info blue\n },\n [BadgeType.Danger]: {\n color: 'white',\n backgroundColor: '#dc3545', // Danger red\n },\n [BadgeType.Warning]: {\n color: 'white',\n backgroundColor: '#ffc107', // Warning yellow\n },\n};\n","// projects/ng-prime-tools/src/lib/enums/public_api.ts\nexport * from './table-type.enum';\nexport * from './search-criteria-type.enum';\nexport * from './form-input-type.enum';\nexport * from './button-color.enum';\nexport * from './input-validation.enum';\nexport * from './badge-type.enum';\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { SearchCriteriaTypeEnum } from '../enums';\nimport { SearchCriteria } from '../models/search-criteria.model';\nimport { FilterOption } from '../models/filter-option.model';\n\n@Component({\n selector: 'multi-search-criteria',\n templateUrl: './multi-search-criteria.component.html',\n styleUrls: ['./multi-search-criteria.component.css'],\n})\nexport class MultiSearchCriteriaComponent implements OnInit {\n SearchCriteriaTypeEnum = SearchCriteriaTypeEnum;\n\n @Input() title: String = '';\n @Input() criteria: SearchCriteria[] = [];\n @Input() inputsPerRow: number = 3;\n @Input() data: any[] = [];\n @Input() mode: 'static' | 'dynamic' = 'static'; // Add mode input\n @Output() filteredData = new EventEmitter<any[]>();\n @Output() searchCriteria = new EventEmitter<{ [key: string]: any }>();\n\n selectAll: boolean = false;\n selected: FilterOption[] = [];\n\n ngOnInit() {\n this.criteria.forEach((item) => {\n if (\n item.type === SearchCriteriaTypeEnum.MULTISELECT &&\n item.filterOptions\n ) {\n this.selected = [...item.filterOptions];\n item.value = this.selected;\n }\n });\n }\n\n getCurrencySymbol(input: SearchCriteria): string {\n return input.currency || 'EUR';\n }\n\n getMinFractionDigits(input: SearchCriteria): number {\n return input.minFractionDigits ?? 0;\n }\n\n getMaxFractionDigits(input: SearchCriteria): number | undefined {\n return input.maxFractionDigits ?? undefined;\n }\n\n getStepValue(input: SearchCriteria): number {\n return input.maxFractionDigits\n ? parseFloat(`0.${'1'.padEnd(input.maxFractionDigits, '0')}`)\n : 0.0000000001;\n }\n\n search(): void {\n if (this.mode === 'dynamic') {\n const criteriaValues: { [key: string]: any } = {};\n this.criteria.forEach((criterion) => {\n if (criterion.value !== null && criterion.value !== undefined) {\n criteriaValues[criterion.code] = criterion.value;\n }\n });\n this.searchCriteria.emit(criteriaValues);\n } else {\n const filtered = this.data.filter((item) => {\n return this.criteria.every((criterion) => {\n if (criterion.type === SearchCriteriaTypeEnum.DATERANGE) {\n const [startDate, endDate] = criterion.value || [\n undefined,\n undefined,\n ];\n const itemDate = this.parseDate(\n item[criterion.code] || item['date']\n );\n if (!startDate && !endDate) {\n return true;\n }\n if (itemDate === null) {\n return false;\n }\n const parsedStartDate = startDate\n ? this.parseDate(startDate)\n : null;\n const parsedEndDate = endDate ? this.parseDate(endDate) : null;\n return (\n (!parsedStartDate || itemDate >= parsedStartDate) &&\n (!parsedEndDate || itemDate <= parsedEndDate)\n );\n } else if (\n criterion.type === SearchCriteriaTypeEnum.AMOUNT ||\n criterion.type === SearchCriteriaTypeEnum.NUMBER\n ) {\n return (\n !criterion.value ||\n Number(item[criterion.code]) === Number(criterion.value)\n );\n } else if (criterion.type === SearchCriteriaTypeEnum.MULTISELECT) {\n return (\n !criterion.value ||\n criterion.value.some(\n (option: FilterOption) => option.label === item[criterion.code]\n )\n );\n } else if (criterion.type === SearchCriteriaTypeEnum.STRING) {\n return (\n !criterion.value ||\n item[criterion.code]\n .toString()\n .toLowerCase()\n .includes(criterion.value.toString().toLowerCase())\n );\n }\n return true;\n });\n });\n this.filteredData.emit(filtered);\n }\n }\n\n clear(): void {\n this.criteria.forEach((input) => {\n input.value = null;\n });\n this.filteredData.emit(this.data);\n }\n\n onSelectAllChange(event: any, criterion: SearchCriteria) {\n this.selectAll = event.checked;\n criterion.value = event.checked ? [...(criterion.filterOptions ?? [])] : [];\n }\n\n private parseDate(dateString: string | Date | null | undefined): Date | null {\n if (!dateString) {\n return null;\n }\n\n if (Object.prototype.toString.call(dateString) === '[object Date]') {\n return dateString as Date;\n }\n\n const parts = (dateString as string).split('/');\n if (parts.length === 3) {\n const day = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const year = parseInt(parts[2], 10);\n const date = new Date(year, month, day);\n return isNaN(date.getTime()) ? null : date;\n }\n return null;\n }\n getDecimalSeparator(input: SearchCriteria): string {\n return input.decimalSeparator === 'comma' ? 'fr-FR' : 'en-US';\n }\n}\n","<p-panel\n header=\"{{ title }}\"\n [toggleable]=\"true\"\n [collapsed]=\"true\"\n class=\"multi-search-criteria\"\n>\n <div\n class=\"criteria-container\"\n [ngStyle]=\"{ 'grid-template-columns': 'repeat(' + inputsPerRow + ', 1fr)' }\"\n >\n <div *ngFor=\"let input of criteria\" class=\"criteria-item\">\n <label class=\"bsc-label\">{{ input.title }}</label>\n\n <ng-container [ngSwitch]=\"input.type\">\n <!-- Date Range -->\n <p-calendar\n *ngSwitchCase=\"SearchCriteriaTypeEnum.DATERANGE\"\n [(ngModel)]=\"input.value\"\n selectionMode=\"range\"\n [dateFormat]=\"'dd/mm/yy'\"\n class=\"full-width-input\"\n [showIcon]=\"true\"\n (ngModelChange)=\"input.value = $event\"\n ></p-calendar>\n\n <!-- Date -->\n <p-calendar\n *ngSwitchCase=\"SearchCriteriaTypeEnum.DATE\"\n [ngModel]=\"input.value\"\n (ngModelChange)=\"input.value = $event\"\n [dateFormat]=\"'dd/mm/yy'\"\n [showIcon]=\"true\"\n class=\"full-width-input\"\n ></p-calendar>\n\n <!-- String Input -->\n <input\n *ngSwitchCase=\"SearchCriteriaTypeEnum.STRING\"\n type=\"text\"\n pInputText\n [(ngModel)]=\"input.value\"\n class=\"full-width-input\"\n />\n\n <!-- AMOUNT (Ensures Decimal Handling) -->\n <p-inputNumber\n *ngSwitchCase=\"SearchCriteriaTypeEnum.AMOUNT\"\n type=\"number\"\n [(ngModel)]=\"input.value\"\n mode=\"decimal\"\n [minFractionDigits]=\"getMinFractionDigits(input)\"\n [maxFractionDigits]=\"getMaxFractionDigits(input)\"\n [step]=\"getStepValue(input)\"\n [placeholder]=\"getCurrencySymbol(input)\"\n [locale]=\"getDecimalSeparator(input)\"\n class=\"full-width-input\"\n ></p-inputNumber>\n\n <!-- NUMBER (Ensures Decimal Handling) -->\n <p-inputNumber\n *ngSwitchCase=\"SearchCriteriaTypeEnum.NUMBER\"\n [(ngModel)]=\"input.value\"\n mode=\"decimal\"\n [minFractionDigits]=\"getMinFractionDigits(input)\"\n [maxFractionDigits]=\"getMaxFractionDigits(input)\"\n [step]=\"getStepValue(input)\"\n [useGrouping]=\"false\"\n [locale]=\"getDecimalSeparator(input)\"\n class=\"full-width-input\"\n ></p-inputNumber>\n\n <!-- Multi-Select -->\n <p-multiSelect\n *ngSwitchCase=\"SearchCriteriaTypeEnum.MULTISELECT\"\n [options]=\"input.filterOptions\"\n [display]=\"'chip'\"\n placeholder=\"Select\"\n [selectAll]=\"selectAll\"\n [(ngModel)]=\"input.value\"\n optionLabel=\"label\"\n (onSelectAllChange)=\"onSelectAllChange($event, input)\"\n class=\"custom-multiselect full-width-input\"\n ></p-multiSelect>\n </ng-container>\n </div>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"footer-buttons\">\n <p-button\n label=\"Effacer\"\n icon=\"pi pi-times\"\n (click)=\"clear()\"\n class=\"footer-button\"\n ></p-button>\n <p-button\n label=\"Rechercher\"\n icon=\"pi pi-search\"\n (click)=\"search()\"\n class=\"footer-button\"\n ></p-button>\n </div>\n </ng-template>\n</p-panel>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { CalendarModule } from 'primeng/calendar';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { PanelModule } from 'primeng/panel';\nimport { MultiSearchCriteriaComponent } from './multi-search-criteria.component';\n\n@NgModule({\n declarations: [MultiSearchCriteriaComponent],\n imports: [\n CommonModule,\n CalendarModule,\n InputTextModule,\n MultiSelectModule,\n ButtonModule,\n FormsModule,\n InputNumberModule,\n PanelModule,\n ],\n exports: [MultiSearchCriteriaComponent],\n})\nexport class MultiSearchCriteriaModule {}\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n FormGroup,\n FormControl,\n ValidatorFn,\n AbstractControl,\n} from '@angular/forms';\nimport { FormCheckBoxField } from '../models/form-check-field.model';\n\n@Component({\n selector: 'pt-check-box-input',\n templateUrl: './pt-check-box-input.component.html',\n styleUrls: ['./pt-check-box-input.component.css'],\n})\nexport class PTCheckBoxInputComponent implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() formField!: FormCheckBoxField;\n\n ngOnInit() {\n this.setupControl();\n }\n\n setupControl() {\n let control = this.formGroup.get(this.formField.name) as FormControl;\n if (!control) {\n control = new FormControl(null);\n this.formGroup.addControl(this.formField.name, control);\n }\n\n setTimeout(() => {\n if (this.formField.disabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n }\n });\n\n const validators = this.getValidators();\n control.setValidators(validators);\n control.updateValueAndValidity({ emitEvent: false });\n }\n\n private getValidators(): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n if (this.formField.required) {\n validators.push(this.requireChoiceValidator());\n }\n return validators;\n }\n\n private requireChoiceValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } | null => {\n return control.value !== null && control.value !== undefined\n ? null\n : { requiredChoice: true };\n };\n }\n\n getErrorMessage(): string {\n const control = this.formGroup.get(this.formField.name);\n if (control?.errors?.['requiredChoice'] && !control?.dirty) {\n return this.formField.errorText || `${this.formField.label} is required`;\n }\n return '';\n }\n}\n","<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{ width: formField.width || '100%' }\"\n *ngIf=\"!formField.hidden\"\n>\n <div class=\"checkbox-container\">\n <p-checkbox\n [formControlName]=\"formField.name\"\n [binary]=\"true\"\n [label]=\"formField.label || ''\"\n ></p-checkbox>\n </div>\n <div\n *ngIf=\"\n formGroup.get(formField.name)?.errors &&\n (formGroup.get(formField.name)?.touched ||\n formGroup.get(formField.name)?.dirty)\n \"\n class=\"error-container\"\n >\n <small class=\"p-error\">{{ getErrorMessage() }}</small>\n </div>\n</div>\n","// date.util.ts\n\nimport { DateFormatType } from '../types/date-format.type';\nimport { DateInputType } from '../types/date-input.type';\n\nexport function getDefaultDateFormat(\n dateInputType: DateInputType\n): DateFormatType {\n switch (dateInputType) {\n case 'time':\n return 'HH:mm';\n case 'datetime':\n return 'dd/mm/yy';\n case 'date':\n default:\n return 'dd/mm/yy';\n }\n}\n\nexport function getDefaultPlaceholder(dateInputType: DateInputType): string {\n switch (dateInputType) {\n case 'time':\n return 'Select time';\n case 'datetime':\n return 'Select date and time';\n case 'date':\n default:\n return 'Select date';\n }\n}\n\nexport function parseDate(dateString: string, format: DateFormatType): Date {\n const parts = dateString.match(/\\d+/g);\n if (!parts || parts.length < 2)\n throw new Error(`Invalid date string: ${dateString}`);\n\n let day, month, year, hour, minute, second;\n switch (format) {\n case 'dd/mm/yy':\n case 'dd-mm-yy':\n case 'dd.mm.yy':\n [day, month, year] = parts;\n break;\n case 'mm/dd/yy':\n [month, day, year] = parts;\n break;\n case 'yy/mm/dd':\n [year, month, day] = parts;\n break;\n case 'HH:mm':\n [hour, minute] = parts;\n return new Date(0, 0, 0, Number(hour), Number(minute));\n case 'HH:mm:ss':\n [hour, minute, second] = parts;\n return new Date(0, 0, 0, Number(hour), Number(minute), Number(second));\n default:\n throw new Error(`Unsupported date format: ${format}`);\n }\n\n year = year.length === 2 ? `20${year}` : year;\n return new Date(\n Number(year),\n Number(month) - 1,\n Number(day),\n Number(hour || 0),\n Number(minute || 0),\n Number(second || 0)\n );\n}\n\nexport function validateTimeValue(\n value: string,\n dateFormat: DateFormatType,\n valueType: 'minValue' | 'maxValue',\n hourFormat: '12' | '24'\n): void {\n const timeFormat = dateFormat.includes('ss') ? 'HH:mm:ss' : 'HH:mm';\n const timeParts = value.match(/\\d+/g);\n\n if (!timeParts || timeParts.length !== (timeFormat === 'HH:mm:ss' ? 3 : 2)) {\n throw new Error(\n `Invalid ${valueType} \"${value}\" for time format \"${timeFormat}\".`\n );\n }\n\n const [hour, minute, second] = timeParts.map(Number);\n const maxHour = hourFormat === '12' ? 12 : 23;\n if (\n hour < 0 ||\n hour > maxHour ||\n minute < 0 ||\n minute > 59 ||\n (second !== undefined && (second < 0 || second > 59))\n ) {\n throw new Error(\n `Invalid ${valueType} \"${value}\". Time must be between 00:00 and ${maxHour}:59.`\n );\n }\n}\n","// pt-date.service.ts\nimport { Injectable } from '@angular/core';\nimport { DateFormatType } from '../types/date-format.type';\nimport { DateInputType } from '../types/date-input.type';\nimport { getDefaultDateFormat, validateTimeValue } from '../utils/date.util';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PTDateService {\n constructor() {}\n\n // Assign default date format based on input type\n assignDefaultDateFormat(\n dateInputType: DateInputType,\n currentFormat?: DateFormatType\n ): DateFormatType {\n return currentFormat || getDefaultDateFormat(dateInputType);\n }\n\n // Validate date format and input type compatibility\n validateDateFormatAndType(\n dateFormat: DateFormatType,\n dateInputType: DateInputType,\n minValue?: string,\n maxValue?: string,\n hourFormat: '12' | '24' = '24'\n ): void {\n const dateOnlyFormats: DateFormatType[] = [\n 'dd/mm/yy',\n 'dd-mm-yy',\n 'dd.mm.yy',\n 'mm/dd/yy',\n 'yy/mm/dd',\n ];\n\n const timeOnlyFormats: DateFormatType[] = ['HH:mm', 'HH:mm:ss'];\n\n const dateTimeFormats: DateFormatType[] = dateOnlyFormats;\n\n switch (dateInputType) {\n case 'date':\n if (!dateOnlyFormats.includes(dateFormat)) {\n throw new Error(\n `Invalid dateFormat \"${dateFormat}\" for dateInputType \"date\".`\n );\n }\n break;\n case 'time':\n if (!timeOnlyFormats.includes(dateFormat)) {\n throw new Error(\n `Invalid dateFormat \"${dateFormat}\" for dateInputType \"time\".`\n );\n }\n if (minValue) {\n validateTimeValue(minValue, dateFormat, 'minValue', hourFormat);\n }\n if (maxValue) {\n validateTimeValue(maxValue, dateFormat, 'maxValue', hourFormat);\n }\n break;\n case 'datetime':\n if (!dateTimeFormats.includes(dateFormat)) {\n throw new Error(\n `Invalid dateFormat \"${dateFormat}\" for dateInputType \"datetime\".`\n );\n }\n break;\n case 'range':\n if (!dateOnlyFormats.includes(dateFormat)) {\n throw new Error(\n `Invalid dateFormat \"${dateFormat}\" for dateInputType \"range\".`\n );\n }\n break;\n default:\n throw new Error(`Unsupported dateInputType: ${dateInputType}`);\n }\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { getDefaultPlaceholder, parseDate } from '../utils/date.util';\nimport { DateFormatType } from '../types/date-format.type';\nimport { DateInputType } from '../types/date-input.type';\nimport { PTDateService } from './pt-date.service';\nimport { FormDateField } from '../models/form-date-field.model';\n\n@Component({\n selector: 'pt-date-input',\n templateUrl: './pt-date-input.component.html',\n styleUrls: ['./pt-date-input.component.css'],\n})\nexport class PTDateInputComponent implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() formField!: FormDateField;\n\n minDate: Date | null = null;\n maxDate: Date | null = null;\n defaultPlaceholder: string = 'Select date';\n defaultDateFormat: DateFormatType = 'dd/mm/yy';\n\n constructor(private dateService: PTDateService) {}\n\n ngOnInit() {\n this.defaultDateFormat = this.dateService.assignDefaultDateFormat(\n (this.formField.dateInputType as DateInputType) || 'date',\n this.formField.dateFormat\n );\n\n this.setupControl();\n this.initializeDateLimits();\n\n try {\n this.dateService.validateDateFormatAndType(\n this.defaultDateFormat,\n (this.formField.dateInputType as DateInputType) || 'date',\n this.formField.minValue,\n this.formField.maxValue,\n this.formField.hourFormat || '24'\n );\n } catch (error) {\n if (error instanceof Error) {\n console.error(error.message);\n } else {\n console.error('An unknown error occurred.');\n }\n }\n\n this.defaultPlaceholder = getDefaultPlaceholder(\n (this.formField.dateInputType as DateInputType) || 'date'\n );\n }\n\n setupControl() {\n let control = this.formGroup.get(this.formField.name) as FormControl;\n if (!control) {\n control = new FormControl(null);\n this.formGroup.addControl(this.formField.name, control);\n }\n\n setTimeout(() => {\n if (this.formField.disabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n }\n });\n control.setValidators(this.getValidators());\n control.updateValueAndValidity({ emitEvent: false });\n }\n\n initializeDateLimits() {\n const dateFormat = this.formField.dateFormat as DateFormatType;\n\n if (this.formField.minValue) {\n this.minDate = parseDate(this.formField.minValue, dateFormat);\n }\n if (this.formField.maxValue) {\n this.maxDate = parseDate(this.formField.maxValue, dateFormat);\n }\n }\n\n private getValidators() {\n const validators = [];\n if (this.formField.required) {\n validators.push(Validators.required);\n }\n return validators;\n }\n\n getErrorMessage(): string {\n const control = this.formGroup.get(this.formField.name);\n if (control?.hasError('required')) {\n return this.formField.errorText || `${this.formField.label} is required`;\n }\n return '';\n }\n}\n","<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{ width: formField.width || '100%' }\"\n *ngIf=\"!formField.hidden\"\n>\n <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n <p-calendar\n [formControlName]=\"formField.name\"\n [placeholder]=\"formField.placeholder || defaultPlaceholder\"\n [dateFormat]=\"formField.dateFormat || defaultDateFormat\"\n [showIcon]=\"true\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [showTime]=\"\n formField.dateInputType === 'datetime' ||\n formField.dateInputType === 'time'\n \"\n [timeOnly]=\"formField.dateInputType === 'time'\"\n [hourFormat]=\"formField.hourFormat || '24'\"\n [selectionMode]=\"formField.dateInputType === 'range' ? 'range' : 'single'\"\n ></p-calendar>\n <div\n *ngIf=\"\n formGroup.get(formField.name)?.invalid &&\n formGroup.get(formField.name)?.touched\n \"\n >\n <small class=\"p-error\">{{ getErrorMessage() }}</small>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n FormGroup,\n Validators,\n ValidatorFn,\n FormControl,\n} from '@angular/forms';\nimport { InputValidationEnum } from '../enums/input-validation.enum';\nimport { FormNumberField } from '../models/form-number-field.model';\n\n@Component({\n selector: 'pt-number-input',\n templateUrl: './pt-number-input.component.html',\n styleUrls: ['./pt-number-input.component.css'],\n})\nexport class PTNumberInputComponent implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() formField!: FormNumberField;\n\n ngOnInit() {\n this.setupControl();\n }\n\n setupControl() {\n const control = this.formGroup.get(this.formField.name) as FormControl;\n if (control) {\n const validators = this.getValidators();\n control.setValidators(validators);\n\n // Manage the disabled state directly\n setTimeout(() => {\n if (this.formField.disabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n }\n\n control.updateValueAndValidity({ emitEvent: false });\n });\n }\n }\n\n private getValidators(): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n if (this.formField.required) {\n validators.push(Validators.required);\n }\n if (this.formField.minValue !== undefined) {\n const minValue = Number(this.formField.minValue);\n if (!isNaN(minValue)) {\n validators.push(Validators.min(minValue));\n } else {\n console.error(\n `Invalid minValue: ${this.formField.minValue} is not a number.`\n );\n }\n }\n if (this.formField.maxValue !== undefined) {\n const maxValue = Number(this.formField.maxValue);\n if (!isNaN(maxValue)) {\n validators.push(Validators.max(maxValue));\n } else {\n console.error(\n `Invalid maxValue: ${this.formField.maxValue} is not a number.`\n );\n }\n }\n if (this.formField.inputValidation) {\n validators.push(\n this.validateWithInputValidation(this.formField.inputValidation)\n );\n }\n return validators;\n }\n\n private validateWithInputValidation(\n inputValidation: InputValidationEnum\n ): ValidatorFn {\n return Validators.pattern(new RegExp(inputValidation));\n }\n\n getErrorMessage(): string {\n const control = this.formGroup.get(this.formField.name);\n if (control?.hasError('required')) {\n return this.formField.errorText || `${this.formField.label} is required`;\n } else if (control?.hasError('min')) {\n return `${this.formField.label} must be at least ${this.formField.minValue}`;\n } else if (control?.hasError('max')) {\n return `${this.formField.label} must be at most ${this.formField.maxValue}`;\n } else if (control?.hasError('pattern')) {\n return `${this.formField.label} is invalid`;\n }\n return '';\n }\n}\n","<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{ width: formField.width || '100%' }\"\n *ngIf=\"!formField.hidden\"\n>\n <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n <p-inputGroup>\n <ng-container\n *ngIf=\"!formField.iconPosition || formField.iconPosition === 'left'\"\n >\n <p-inputGroupAddon *ngIf=\"formField.iconClass || formField.currency\">\n <i *ngIf=\"formField.iconClass\" [ngClass]=\"formField.iconClass\"></i>\n <span *ngIf=\"!formField.iconClass && formField.currency\">\n {{ formField.currency }}\n </span>\n </p-inputGroupAddon>\n <p-inputNumber\n [formControlName]=\"formField.name\"\n mode=\"decimal\"\n [locale]=\"formField.numberFormat || undefined\"\n [useGrouping]=\"formField.numberFormat ? true : false\"\n [minFractionDigits]=\"formField.decimalDigits || 0\"\n [maxFractionDigits]=\"formField.decimalDigits || 0\"\n [placeholder]=\"formField.placeholder || ''\"\n ></p-inputNumber>\n </ng-container>\n <ng-container *ngIf=\"formField.iconPosition === 'right'\">\n <p-inputNumber\n [formControlName]=\"formField.name\"\n mode=\"decimal\"\n [locale]=\"formField.numberFormat || undefined\"\n [useGrouping]=\"formField.numberFormat ? true : false\"\n [minFractionDigits]=\"formField.decimalDigits || 0\"\n [maxFractionDigits]=\"formField.decimalDigits || 0\"\n [placeholder]=\"formField.placeholder || ''\"\n ></p-inputNumber>\n <p-inputGroupAddon *ngIf=\"formField.iconClass || formField.currency\">\n <i *ngIf=\"formField.iconClass\" [ngClass]=\"formField.iconClass\"></i>\n <span *ngIf=\"!formField.iconClass && formField.currency\">\n {{ formField.currency }}\n </span>\n </p-inputGroupAddon>\n </ng-container>\n </p-inputGroup>\n <div\n *ngIf=\"\n formGroup.get(formField.name)?.invalid &&\n formGroup.get(formField.name)?.touched\n \"\n >\n <small class=\"p-error\">{{ getErrorMessage() }}</small>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n FormGroup,\n FormControl,\n ValidatorFn,\n AbstractControl,\n} from '@angular/forms';\nimport { FormSwitchField } from '../models/form-switch-field.model';\n\n@Component({\n selector: 'pt-switch-input',\n templateUrl: './pt-switch-input.component.html',\n styleUrls: ['./pt-switch-input.component.css'],\n})\nexport class PTSwitchInputComponent implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() formField!: FormSwitchField;\n\n ngOnInit() {\n this.setupControl();\n }\n\n setupControl() {\n let control = this.formGroup.get(this.formField.name) as FormControl;\n if (!control) {\n // Initialize control with false indicating not activated\n control = new FormControl(this.formField.required ? null : false);\n this.formGroup.addControl(this.formField.name, control);\n }\n\n // Apply validators and manage disabled state\n control.setValidators(this.getValidators());\n setTimeout(() => {\n if (this.formField.disabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n }\n control.updateValueAndValidity({ emitEvent: false });\n });\n }\n\n private getValidators(): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n if (this.formField.required) {\n validators.push(this.requireChoiceValidator());\n }\n return validators;\n }\n\n private requireChoiceValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } | null => {\n return control.value !== null && control.value !== undefined\n ? null\n : { requiredChoice: true };\n };\n }\n\n getErrorMessage(): string {\n const control = this.formGroup.get(this.formField.name);\n if (control?.errors?.['requiredChoice'] && !control?.dirty) {\n return this.formField.errorText || `${this.formField.label} is required`;\n }\n return '';\n }\n}\n","<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{ width: formField.width || '100%' }\"\n *ngIf=\"!formField.hidden\"\n>\n <div class=\"switch-container\" style=\"display: flex; align-items: center\">\n <p-inputSwitch [formControlName]=\"formField.name\"></p-inputSwitch>\n <label *ngIf=\"formField.label\" style=\"margin-left: 8px\">{{\n formField.label\n }}</label>\n </div>\n <div\n *ngIf=\"\n formGroup.get(formField.name)?.errors &&\n (formGroup.get(formField.name)?.touched ||\n formGroup.get(formField.name)?.dirty)\n \"\n class=\"error-container\"\n >\n <small class=\"p-error\">{{ getErrorMessage() }}</small>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n FormGroup,\n Validators,\n FormControl,\n ValidatorFn,\n} from '@angular/forms';\nimport { InputValidationEnum } from '../enums/input-validation.enum';\nimport { FormTextAreaField } from '../models/form-text-area-field.model';\n\n@Component({\n selector: 'pt-text-area-input',\n templateUrl: './pt-text-area-input.component.html',\n styleUrls: ['./pt-text-area-input.component.css'],\n})\nexport class PTTextAreaInputComponent implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() formField!: FormTextAreaField;\n characterCount: number = 0;\n\n ngOnInit() {\n this.setupControl();\n }\n\n setupControl() {\n const control = this.formGroup.get(this.formField.name) as FormControl;\n if (control) {\n const validators = this.getValidators();\n control.setValidators(validators);\n\n // Manage the disabled state here\n setTimeout(() => {\n if (this.formField.disabled) {\n control.disable();\n } else {\n control.enable();\n }\n\n control.updateValueAndValidity();\n });\n // Subscribe to value changes to update character count\n control.valueChanges.subscribe((value) => {\n this.characterCount = value ? value.length : 0;\n });\n }\n }\n\n private getValidators(): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n if (this.formField.required) {\n validators.push(Validators.required);\n }\n if (this.formField.minLength !== undefined) {\n validators.push(Validators.minLength(this.formField.minLength));\n }\n if (this.formField.maxLength !== undefined) {\n validators.push(Validators.maxLength(this.formField.maxLength));\n }\n if (this.formField.inputValidation) {\n validators.push(\n this.validateWithInputValidation(this.formField.inputValidation)\n );\n }\n return validators;\n }\n\n private validateWithInputValidation(\n inputValidation: InputValidationEnum\n ): ValidatorFn {\n return Validators.pattern(new RegExp(inputValidation));\n }\n\n getErrorMessage(): string {\n const control = this.formGroup.get(this.formField.name);\n if (control?.hasError('required')) {\n return this.formField.errorText || `${this.formField.label} is required`;\n } else if (control?.hasError('minlength')) {\n return `${this.formField.label} must be at least ${this.formField.minLength} characters long`;\n } else if (control?.hasError('maxlength')) {\n return `${this.formField.label} must be at most ${this.formField.maxLength} characters long`;\n } else if (control?.hasError('pattern')) {\n return `${this.formField.label} is invalid`;\n }\n return '';\n }\n}\n","<div\n [formGroup]=\"formGroup\"\n *ngIf=\"!formField.hidden\"\n class=\"form-field\"\n [ngStyle]=\"{ width: formField.width || '100%' }\"\n>\n <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n <p-inputGroup>\n <ng-container\n *ngIf=\"!formField.iconPosition || formField.iconPosition === 'left'\"\n >\n <p-inputGroupAddon *ngIf=\"formField.iconClass\">\n <i *ngIf=\"formField.iconClass\" [ngClass]=\"formField.iconClass\"></i>\n </p-inputGroupAddon>\n <textarea\n pInputTextarea\n [formControlName]=\"formField.name\"\n [rows]=\"formField.rows || 5\"\n [cols]=\"formField.cols || 30\"\n [autoResize]=\"formField.autoResize || false\"\n [attr.minlength]=\"formField.minLength\"\n [attr.maxlength]=\"formField.maxLength\"\n [placeholder]=\"formField.placeholder || ''\"\n ></textarea>\n </ng-container>\n <ng-container *ngIf=\"formField.iconPosition === 'right'\">\n <textarea\n pInputTextarea\n [formControlName]=\"formField.name\"\n [rows]=\"formField.rows || 5\"\n [cols]=\"formField.cols || 30\"\n [autoResize]=\"formField.autoResize || false\"\n [attr.minlength]=\"formField.minLength\"\n [attr.maxlength]=\"formField.maxLength\"\n [placeholder]=\"formField.placeholder || ''\"\n ></textarea>\n <p-inputGroupAddon *ngIf=\"formField.iconClass\">\n <i *ngIf=\"formField.iconClass\" [ngClass]=\"formField.iconClass\"></i>\n </p-inputGroupAddon>\n </ng-container>\n </p-inputGroup>\n <div class=\"form-info-row\">\n <small\n *ngIf=\"\n formGroup.get(formField.name)?.invalid &&\n formGroup.get(formField.name)?.touched\n \"\n class=\"p-error\"\n >\n {{ getErrorMessage() }}\n </small>\n <div class=\"spacer\"></div>\n <!-- Spacer to ensure alignment -->\n <div\n *ngIf=\"!formField.disabled && formField.maxLength !== undefined\"\n class=\"character-counter\"\n >\n {{ characterCount }}/{{ formField.maxLength }} characters\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport {\n FormGroup,\n Validators,\n ValidatorFn,\n FormControl,\n} from '@angular/forms';\nimport { InputValidationEnum } from '../enums/input-validation.enum';\nimport { FormTextField } from '../models/form-text-field.model';\nimport { FormInputTypeEnum } from '../enums/form-input-type.enum';\nimport { CardConfig } from '../models';\n\n@Component({\n selector: 'pt-text-input',\n templateUrl: './pt-text-input.component.html',\n styleUrls: ['./pt-text-input.component.css'],\n})\nexport class PTTextInputComponent implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() formField!: FormTextField;\n\n characterCount: number = 0;\n\n ngOnInit() {\n this.setupControl();\n this.updateCharacterCount();\n }\n\n setupControl() {\n const control = this.formGroup.get(this.formField.name) as FormControl;\n if (control) {\n const validators = this.getValidators();\n control.setValidators(validators);\n\n setTimeout(() => {\n if (this.formField.disabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n control.valueChanges.subscribe(() => {\n this.updateCharacterCount();\n });\n }\n control.updateValueAndValidity({ emitEvent: false });\n });\n }\n }\n\n updateCharacterCount() {\n const control = this.formGroup.get(this.formField.name) as FormControl;\n if (control && control.value !== null) {\n this.characterCount = control.value ? control.value.length : 0;\n } else {\n this.characterCount = 0;\n }\n }\n\n getInputType(): string {\n switch (this.formField.type) {\n case FormInputTypeEnum.PASSWORD:\n return 'password';\n case FormInputTypeEnum.NUMBER:\n return 'number';\n default:\n return 'text';\n }\n }\n\n private getValidators(): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n if (this.formField.required) {\n validators.push(Validators.required);\n }\n if (this.formField.minLength !== undefined) {\n validators.push(Validators.minLength(this.formField.minLength));\n }\n if (this.formField.maxLength !== undefined) {\n validators.push(Validators.maxLength(this.formField.maxLength));\n }\n if (this.formField.inputValidation) {\n validators.push(\n this.validateWithInputValidation(this.formField.inputValidation)\n );\n }\n return validators;\n }\n\n private validateWithInputValidation(\n inputValidation: InputValidationEnum\n ): ValidatorFn {\n return Validators.pattern(new RegExp(inputValidation));\n }\n\n getErrorMessage(): string {\n const control = this.formGroup.get(this.formField.name);\n if (control?.hasError('required')) {\n return `${this.formField.label} is required`;\n } else if (control?.hasError('minlength')) {\n return `${this.formField.label} must be at least ${this.formField.minLength} characters`;\n } else if (control?.hasError('maxlength')) {\n return `${this.formField.label} must be at most ${this.formField.maxLength} characters`;\n } else if (control?.hasError('pattern')) {\n return `${this.formField.label} is invalid`;\n }\n return '';\n }\n}\n","<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n *ngIf=\"!formField.hidden\"\n>\n <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n\n <ng-container *ngIf=\"formField.iconClass; else noIcon\">\n <p-iconField [iconPosition]=\"formField.iconPosition || 'left'\">\n <p-inputIcon\n *ngIf=\"formField.iconClass\"\n [styleClass]=\"formField.iconClass\"\n ></p-inputIcon>\n <input\n [type]=\"getInputType()\"\n pInputText\n [formControlName]=\"formField.name\"\n [placeholder]=\"formField.placeholder ?? ''\"\n [attr.minlength]=\"formField.minLength\"\n [attr.maxlength]=\"formField.maxLength\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n />\n </p-iconField>\n </ng-container>\n\n <ng-template #noIcon>\n <input\n [type]=\"getInputType()\"\n pInputText\n [formControlName]=\"formField.name\"\n [placeholder]=\"formField.placeholder ?? ''\"\n [attr.minlength]=\"formField.minLength\"\n [attr.maxlength]=\"formField.maxLength\"\n [ngStyle]=\"{\n width: formField.width || '100%',\n height: formField.height || 'auto'\n }\"\n />\n </ng-template>\n\n <div class=\"form-info-row\">\n <small\n *ngIf=\"\n formGroup.get(formField.name)?.invalid &&\n formGroup.get(formField.name)?.touched\n \"\n class=\"p-error\"\n >\n {{ getErrorMessage() }}\n </small>\n <div class=\"spacer\"></div>\n <div\n *ngIf=\"!formField.disabled && formField.maxLength !== undefined\"\n class=\"character-counter\"\n >\n {{ characterCount }}/{{ formField.maxLength }} characters\n </div>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { FormDropdownField } from '../models/form-drop-down-field.model';\n\n@Component({\n selector: 'pt-dropdown',\n templateUrl: './pt-dropdown.component.html',\n styleUrls: ['./pt-dropdown.component.css'],\n})\nexport class PTDropdownComponent implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() formField!: FormDropdownField;\n\n ngOnInit() {\n this.setupControl();\n }\n\n setupControl() {\n let control = this.formGroup.get(this.formField.name) as FormControl;\n\n if (!control) {\n control = new FormControl(this.formField.value || null);\n this.formGroup.addControl(this.formField.name, control);\n }\n\n const validators = this.getValidators();\n control.setValidators(validators);\n\n // Manage the disabled state using form control\n setTimeout(() => {\n if (this.formField.disabled !== undefined) {\n if (this.formField.disabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n }\n }\n\n control.updateValueAndValidity({ emitEvent: false });\n });\n }\n\n private getValidators() {\n const validators = [];\n if (this.formField.required) {\n validators.push(Validators.required);\n }\n return validators;\n }\n\n getErrorMessage(): string {\n const control = this.formGroup.get(this.formField.name);\n if (control?.hasError('required')) {\n return this.formField.errorText || `${this.formField.label} is required`;\n }\n return '';\n }\n}\n","<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{ width: formField.width || '100%' }\"\n *ngIf=\"!formField.hidden\"\n>\n <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n <p-dropdown\n [formControlName]=\"formField.name\"\n [options]=\"formField.options\"\n [placeholder]=\"formField.placeholder || 'Select an option'\"\n optionLabel=\"label\"\n ></p-dropdown>\n <div\n *ngIf=\"\n formGroup.get(formField.name)?.invalid &&\n formGroup.get(formField.name)?.touched\n \"\n >\n <small class=\"p-error\">{{ getErrorMessage() }}</small>\n </div>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { FormMultiSelectField } from '../models/form-multi-select.model';\n\n@Component({\n selector: 'pt-multi-select',\n templateUrl: './pt-multi-select.component.html',\n styleUrls: ['./pt-multi-select.component.css'],\n})\nexport class PTMultiSelectComponent implements OnInit {\n @Input() formGroup!: FormGroup;\n @Input() formField!: FormMultiSelectField;\n\n ngOnInit() {\n this.setupControl();\n }\n\n setupControl() {\n let control = this.formGroup.get(this.formField.name) as FormControl;\n\n if (!control) {\n control = new FormControl(this.formField.value || []);\n this.formGroup.addControl(this.formField.name, control);\n }\n\n const validators = this.getValidators();\n control.setValidators(validators);\n\n // Manage the disabled state using form control\n setTimeout(() => {\n if (this.formField.disabled !== undefined) {\n if (this.formField.disabled) {\n control.disable({ emitEvent: false });\n } else {\n control.enable({ emitEvent: false });\n }\n }\n control.updateValueAndValidity({ emitEvent: false });\n });\n }\n\n private getValidators() {\n const validators = [];\n if (this.formField.required) {\n validators.push(Validators.required);\n }\n return validators;\n }\n\n getErrorMessage(): string {\n const control = this.formGroup.get(this.formField.name);\n if (control?.hasError('required')) {\n return this.formField.errorText || `${this.formField.label} is required`;\n }\n return '';\n }\n}\n","<div\n [formGroup]=\"formGroup\"\n class=\"form-field\"\n [ngStyle]=\"{ width: formField.width || '100%' }\"\n *ngIf=\"!formField.hidden\"\n>\n <label *ngIf=\"formField.label\">{{ formField.label }}</label>\n <p-multiSelect\n [formControlName]=\"formField.name\"\n [options]=\"formField.options\"\n [placeholder]=\"formField.placeholder || 'Select options'\"\n optionLabel=\"label\"\n ></p-multiSelect>\n <div\n *ngIf=\"\n formGroup.get(formField.name)?.invalid &&\n formGroup.get(formField.name)?.touched\n \"\n >\n <small class=\"p-error\">{{ getErrorMessage() }}</small>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FormField } from '../../models';\nimport { FormInputTypeEnum } from '../../enums';\nimport { FormTextField } from '../../models/form-text-field.model';\nimport { FormTextAreaField } from '../../models/form-text-area-field.model';\nimport { FormMultiSelectField } from '../../models/form-multi-select.model';\nimport { FormDropdownField } from '../../models/form-drop-down-field.model';\nimport { FormSwitchField } from '../../models/form-switch-field.model';\nimport { FormNumberField } from '../../models/form-number-field.model';\nimport { FormDateField } from '../../models/form-date-field.model';\nimport { FormCheckBoxField } from '../../models/form-check-field.model';\n\n@Component({\n selector: 'pt-dynamic-form-field',\n templateUrl: './pt-dynamic-form-field.component.html',\n styleUrls: ['./pt-dynamic-form-field.component.css'],\n})\nexport class PTDynamicFormFieldComponent {\n @Input() field!: FormField;\n @Input() form!: FormGroup;\n @Input() inputWidth!: string;\n\n FormInputTypeEnum = FormInputTypeEnum;\n\n asTextField(field: FormField): FormTextField {\n return field as FormTextField;\n }\n\n asNumberField(field: FormField): FormNumberField {\n return field as FormNumberField;\n }\n\n asTextAreaField(field: FormField): FormTextAreaField {\n return field as FormTextAreaField;\n }\n\n asDateField(field: FormField): FormDateField {\n return field as FormDateField;\n }\n\n asSelectField(field: FormField): FormDropdownField {\n return field as FormDropdownField;\n }\n\n asMultiSelectField(field: FormField): FormMultiSelectField {\n return field as FormMultiSelectField;\n }\n\n asCheckboxField(field: FormField): FormCheckBoxField {\n return field as FormCheckBoxField;\n }\n\n asSwitchField(field: FormField): FormSwitchField {\n return field as FormSwitchField;\n }\n}\n","<div\n [formGroup]=\"form\"\n class=\"form-field\"\n [ngStyle]=\"{\n width:\n field.type !== FormInputTypeEnum.CHECKBOX &&\n field.type !== FormInputTypeEnum.SWITCH\n ? field.width || inputWidth\n : 'auto'\n }\"\n>\n <ng-container [ngSwitch]=\"field.type\">\n <pt-text-input\n *ngSwitchCase=\"FormInputTypeEnum.TEXT\"\n [formGroup]=\"form\"\n [formField]=\"asTextField(field)\"\n ></pt-text-input>\n <pt-number-input\n *ngSwitchCase=\"FormInputTypeEnum.NUMBER\"\n [formGroup]=\"form\"\n [formField]=\"asNumberField(field)\"\n ></pt-number-input>\n <pt-number-input\n *ngSwitchCase=\"FormInputTypeEnum.AMOUNT\"\n [formGroup]=\"form\"\n [formField]=\"asNumberField(field)\"\n ></pt-number-input>\n <pt-text-area-input\n *ngSwitchCase=\"FormInputTypeEnum.TEXTAREA\"\n [formGroup]=\"form\"\n [formField]=\"asTextAreaField(field)\"\n ></pt-text-area-input>\n <pt-date-input\n *ngSwitchCase=\"FormInputTypeEnum.DATE\"\n [formGroup]=\"form\"\n [formField]=\"asDateField(field)\"\n ></pt-date-input>\n <pt-multi-select\n *ngSwitchCase=\"FormInputTypeEnum.MULTISELECT\"\n [formGroup]=\"form\"\n [formField]=\"asMultiSelectField(field)\"\n ></pt-multi-select>\n <pt-dropdown\n *ngSwitchCase=\"FormInputTypeEnum.SELECT\"\n [formGroup]=\"form\"\n [formField]=\"asSelectField(field)\"\n ></pt-dropdown>\n <pt-check-box-input\n *ngSwitchCase=\"FormInputTypeEnum.CHECKBOX\"\n [formGroup]=\"form\"\n [formField]=\"asCheckboxField(field)\"\n ></pt-check-box-input>\n <pt-switch-input\n *ngSwitchCase=\"FormInputTypeEnum.SWITCH\"\n [formGroup]=\"form\"\n [formField]=\"asSwitchField(field)\"\n ></pt-switch-input>\n </ng-container>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { FormField } from '../models/form-field.model';\nimport { FormFieldGroup } from '../models/form-field-group.model';\nimport { FormButton } from '../models/form-button.model';\nimport { FormInputTypeEnum } from '../enums/form-input-type.enum';\n\n@Component({\n selector: 'pt-form-builder',\n templateUrl: './pt-form-builder.component.html',\n styleUrls: ['./pt-form-builder.component.css'],\n})\nexport class PTFormBuilderComponent implements OnInit {\n @Input() mainGroup: FormFieldGroup = { fields: [], groups: [] };\n @Input() buttons: FormButton[] = [];\n @Input() title?: string;\n @Input() titleStyle?: { [key: string]: string };\n @Input() inputWidth: string = '100%';\n @Input() language: 'en' | 'fr' = 'en';\n @Output() formSubmit = new EventEmitter<{ [key: string]: any }>();\n form: FormGroup;\n\n FormInputTypeEnum = FormInputTypeEnum;\n\n private errorMessages = {\n en: {\n required: 'is required',\n },\n fr: {\n required: 'est requis',\n },\n };\n\n constructor(private fb: FormBuilder) {\n this.form = this.fb.group({});\n }\n\n ngOnInit() {\n this.buildFormGroup(this.mainGroup);\n }\n\n buildFormGroup(group: FormFieldGroup) {\n group.fields?.forEach((field) => {\n const validators = field.required ? [Validators.required] : [];\n this.form.addControl(\n field.name,\n this.fb.control(field.value, validators)\n );\n });\n\n group.groups?.forEach((subGroup) => {\n this.buildFormGroup(subGroup);\n });\n }\n\n getErrorMessage(field: FormField): string {\n if (this.form.get(field.name)?.hasError('required')) {\n return (\n field.errorText ||\n `${field.label} ${this.errorMessages[this.language].required}`\n );\n }\n return '';\n }\n\n onSubmit() {\n this.form.markAllAsTouched();\n if (this.form.valid) {\n this.formSubmit.emit(this.form.value);\n }\n }\n\n onClear() {\n this.form.reset();\n }\n}\n","<div *ngIf=\"title\" [ngStyle]=\"titleStyle\" class=\"form-title\">{{ title }}</div>\n<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <ng-container *ngFor=\"let field of mainGroup.fields\">\n <pt-dynamic-form-field\n [field]=\"field\"\n [form]=\"form\"\n [inputWidth]=\"inputWidth\"\n ></pt-dynamic-form-field>\n </ng-container>\n\n <ng-container *ngFor=\"let group of mainGroup.groups\">\n <div class=\"form-field-group\" [ngStyle]=\"{ width: group.width || '100%' }\">\n <ng-container *ngFor=\"let field of group.fields\">\n <pt-dynamic-form-field\n [field]=\"field\"\n [form]=\"form\"\n class=\"flex-item\"\n ></pt-dynamic-form-field>\n </ng-container>\n </div>\n </ng-container>\n\n <div class=\"button-group\">\n <button\n *ngFor=\"let button of buttons\"\n type=\"button\"\n pButton\n [label]=\"button.text\"\n [icon]=\"button.icon || ''\"\n [class]=\"button.color\"\n (click)=\"\n button.isSubmit\n ? onSubmit()\n : button.isClear\n ? onClear()\n : button.action\n ? button.action()\n : null\n \"\n ></button>\n </div>\n</form>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { PTCheckBoxInputComponent } from './pt-check-box-input.component';\n\n@NgModule({\n declarations: [PTCheckBoxInputComponent],\n imports: [CommonModule, ReactiveFormsModule, CheckboxModule],\n exports: [PTCheckBoxInputComponent],\n})\nexport class PTCheckBoxInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { PTNumberInputComponent } from './pt-number-input.component';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputNumberModule } from 'primeng/inputnumber';\n\n@NgModule({\n declarations: [PTNumberInputComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n InputGroupModule,\n InputGroupAddonModule,\n InputTextModule,\n InputNumberModule,\n ],\n exports: [PTNumberInputComponent],\n})\nexport class PTNumberInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { InputSwitchModule } from 'primeng/inputswitch';\nimport { PTSwitchInputComponent } from './pt-switch-input.component';\n\n@NgModule({\n declarations: [PTSwitchInputComponent],\n imports: [CommonModule, ReactiveFormsModule, InputSwitchModule],\n exports: [PTSwitchInputComponent],\n})\nexport class PTSwitchInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { PTTextInputComponent } from './pt-text-input.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\n\n@NgModule({\n declarations: [PTTextInputComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextModule,\n IconFieldModule,\n InputIconModule,\n ],\n exports: [PTTextInputComponent],\n})\nexport class PTTextInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { InputTextareaModule } from 'primeng/inputtextarea';\nimport { PTTextAreaInputComponent } from './pt-text-area-input.component';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\n\n@NgModule({\n declarations: [PTTextAreaInputComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n InputTextareaModule,\n InputGroupModule,\n InputGroupAddonModule,\n ],\n exports: [PTTextAreaInputComponent],\n})\nexport class PTTextAreaInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CalendarModule } from 'primeng/calendar';\nimport { PTDateInputComponent } from './pt-date-input.component';\n\n@NgModule({\n declarations: [PTDateInputComponent],\n imports: [CommonModule, ReactiveFormsModule, CalendarModule],\n exports: [PTDateInputComponent],\n})\nexport class PTDateInputModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { PTDropdownComponent } from './pt-dropdown.component';\n\n@NgModule({\n declarations: [PTDropdownComponent],\n imports: [CommonModule, ReactiveFormsModule, DropdownModule],\n exports: [PTDropdownComponent],\n})\nexport class PTDropdownModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MultiSelectModule } from 'primeng/multiselect'; // PrimeNG module\nimport { PTMultiSelectComponent } from './pt-multi-select.component';\n\n@NgModule({\n declarations: [PTMultiSelectComponent],\n imports: [CommonModule, ReactiveFormsModule, MultiSelectModule],\n exports: [PTMultiSelectComponent],\n})\nexport class PTMultiSelectModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { PTDynamicFormFieldComponent as PTDynamicFormFieldComponent } from './pt-dynamic-form-field.component';\nimport { PTCheckBoxInputModule } from '../../pt-check-box-input';\nimport { PTNumberInputModule } from '../../pt-number-input/pt-number-input.module';\nimport { PTSwitchInputModule } from '../../pt-switch-input/pt-switch-input.module';\nimport { PTTextInputModule } from '../../pt-text-input/pt-text-input.module';\nimport { PTTextAreaInputModule } from '../../pt-text-area-input/pt-text-area-input.module';\nimport { PTDateInputModule } from '../../pt-date-input';\nimport { PTDropdownModule } from '../../pt-dropdown';\nimport { PTMultiSelectModule } from '../../pt-multi-select';\n\n@NgModule({\n declarations: [PTDynamicFormFieldComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n\n // Inputs\n PTCheckBoxInputModule,\n PTDateInputModule,\n PTNumberInputModule,\n PTSwitchInputModule,\n PTTextAreaInputModule,\n PTTextInputModule,\n PTDropdownModule,\n PTMultiSelectModule,\n ],\n exports: [PTDynamicFormFieldComponent],\n})\nexport class PTDynamicFormFieldModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { PTFormBuilderComponent } from './pt-form-builder.component';\nimport { ButtonModule } from 'primeng/button';\nimport { PTDynamicFormFieldModule } from './pt-dynamic-form-field/pt-dynamic-form-field-module';\n\n@NgModule({\n declarations: [PTFormBuilderComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n ButtonModule,\n PTDynamicFormFieldModule,\n ],\n exports: [PTFormBuilderComponent],\n})\nexport class PTFormBuilderModule {}\n","import { Component, Input } from '@angular/core';\nimport {\n LabelSetting,\n MetricCardData,\n ValueSetting,\n IconStyle,\n TextStyle,\n} from '../models';\n\n@Component({\n selector: 'pt-metric-card',\n templateUrl: './pt-metric-card.component.html',\n styleUrls: ['./pt-metric-card.component.css'],\n})\nexport class PTMetricCardComponent {\n private static readonly DEFAULT_ICON_COLOR = '#5a67d8';\n private static readonly DEFAULT_ICON_SIZE = '24px';\n private static readonly DEFAULT_TITLE_COLOR = '#5a67d8';\n private static readonly DEFAULT_TITLE_SIZE = '16px';\n private static readonly DEFAULT_VALUE_COLOR = '#2d3748';\n private static readonly DEFAULT_VALUE_SIZE = '32px';\n private static readonly DEFAULT_LABEL_COLOR = '#718096';\n private static readonly DEFAULT_LABEL_SIZE = '14px';\n private static readonly DEFAULT_ADDITIONAL_INFO_COLOR = 'gray';\n private static readonly DEFAULT_ADDITIONAL_INFO_SIZE = '14px';\n private static readonly DEFAULT_BACKGROUND_COLOR = '#fff';\n\n @Input() cardData!: MetricCardData;\n\n isIconObject(): boolean {\n return typeof this.cardData.icon === 'object';\n }\n\n isTitleObject(): boolean {\n return typeof this.cardData.title === 'object';\n }\n\n isValueObject(): boolean {\n return typeof this.cardData.value === 'object';\n }\n\n isLabelObject(label: LabelSetting | string | undefined): boolean {\n return typeof label === 'object';\n }\n\n isAdditionalInfoObject(): boolean {\n return typeof this.cardData.additionalInfo === 'object';\n }\n\n getIconText(): string {\n return this.isIconObject()\n ? (this.cardData.icon as IconStyle).code\n : (this.cardData.icon as string);\n }\n\n getTitleText(): string {\n return this.isTitleObject()\n ? (this.cardData.title as TextStyle).text\n : (this.cardData.title as string);\n }\n\n getValueText(): string {\n return this.isValueObject()\n ? (this.cardData.value as ValueSetting).text\n : (this.cardData.value as string);\n }\n\n getLabelText(): string {\n const label = (this.cardData.value as ValueSetting)?.label;\n return this.isLabelObject(label)\n ? (label as LabelSetting).text\n : (label as string);\n }\n\n getAdditionalInfoText(): string {\n return this.isAdditionalInfoObject()\n ? (this.cardData.additionalInfo as TextStyle).text\n : (this.cardData.additionalInfo as string);\n }\n\n getIconStyles() {\n if (this.isIconObject()) {\n const icon = this.cardData.icon as IconStyle;\n const shape = icon.shape || 'circular'; // Default to 'circular' if not specified\n\n // Determine border radius based on shape\n const borderRadius = shape === 'circular' ? '50%' : '8px';\n\n return {\n color: icon.color || PTMetricCardComponent.DEFAULT_ICON_COLOR,\n fontSize: icon.fontSize || PTMetricCardComponent.DEFAULT_ICON_SIZE,\n 'background-color': icon.backgroundColor || 'transparent',\n 'border-radius': borderRadius,\n padding: '6px',\n display: 'inline-block',\n };\n }\n return {};\n }\n\n getTitleStyles() {\n if (this.isTitleObject()) {\n const title = this.cardData.title as TextStyle;\n return {\n color: title.color || PTMetricCardComponent.DEFAULT_TITLE_COLOR,\n fontSize: title.fontSize || PTMetricCardComponent.DEFAULT_TITLE_SIZE,\n fontWeight: title.fontWeight || 'normal',\n };\n }\n return {};\n }\n\n getValueStyles() {\n if (this.isValueObject()) {\n const value = this.cardData.value as ValueSetting;\n return {\n color: value.color || PTMetricCardComponent.DEFAULT_VALUE_COLOR,\n fontSize: value.fontSize || PTMetricCardComponent.DEFAULT_VALUE_SIZE,\n fontWeight: value.fontWeight || 'bold',\n };\n } else {\n return {\n color: PTMetricCardComponent.DEFAULT_VALUE_COLOR,\n fontSize: PTMetricCardComponent.DEFAULT_VALUE_SIZE,\n fontWeight: 'bold',\n };\n }\n }\n\n getLabelStyles(position: 'left' | 'right') {\n const label = (this.cardData.value as ValueSetting)?.label;\n if (\n this.isLabelObject(label) &&\n (label as LabelSetting).position === position\n ) {\n return {\n color:\n (label as LabelSetting).color ||\n PTMetricCardComponent.DEFAULT_LABEL_COLOR,\n fontSize:\n (label as LabelSetting).fontSize ||\n PTMetricCardComponent.DEFAULT_LABEL_SIZE,\n fontWeight: (label as LabelSetting).fontWeight || 'normal',\n };\n } else {\n return {\n color: PTMetricCardComponent.DEFAULT_LABEL_COLOR,\n fontSize: PTMetricCardComponent.DEFAULT_LABEL_SIZE,\n fontWeight: 'normal',\n };\n }\n }\n\n getAdditionalInfoStyles() {\n if (this.isAdditionalInfoObject()) {\n const additionalInfo = this.cardData.additionalInfo as TextStyle;\n return {\n color:\n additionalInfo.color ||\n PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_COLOR,\n fontSize:\n additionalInfo.fontSize ||\n PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_SIZE,\n fontWeight: additionalInfo.fontWeight || 'normal',\n };\n } else {\n return {\n color: PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_COLOR,\n fontSize: PTMetricCardComponent.DEFAULT_ADDITIONAL_INFO_SIZE,\n fontWeight: 'normal',\n };\n }\n }\n\n isLabelOnLeft(): boolean {\n const label = (this.cardData.value as ValueSetting)?.label;\n return (\n this.isLabelObject(label) && (label as LabelSetting).position === 'left'\n );\n }\n\n isLabelOnRight(): boolean {\n const label = (this.cardData.value as ValueSetting)?.label;\n return (\n this.isLabelObject(label) && (label as LabelSetting).position === 'right'\n );\n }\n\n getMetricCardContainerStyle() {\n return {\n 'min-width': this.cardData.size?.minWidth || '100%',\n 'max-width': this.cardData.size?.maxWidth || 'calc(25% - 16px)',\n width: this.cardData.size?.fixedWidth || 'auto',\n };\n }\n\n getMetricCardStyle() {\n return {\n 'background-color':\n this.cardData.appearance?.backgroundColor ||\n PTMetricCardComponent.DEFAULT_BACKGROUND_COLOR,\n 'min-width': this.cardData.size?.minWidth || '100%',\n 'max-width': this.cardData.size?.maxWidth || 'calc(25% - 16px)',\n width: this.cardData.size?.fixedWidth || 'auto',\n };\n }\n}\n","<div class=\"metric-card-container\" [ngStyle]=\"getMetricCardContainerStyle()\">\n <div\n *ngIf=\"cardData.verticalLine?.show\"\n class=\"vertical-line\"\n [ngStyle]=\"{\n 'background-color': cardData.verticalLine?.color || '#5a67d8'\n }\"\n ></div>\n\n <div class=\"metric-card\" [ngStyle]=\"getMetricCardStyle()\">\n <div class=\"metric-card-header\">\n <i\n *ngIf=\"isIconObject()\"\n [ngClass]=\"getIconText()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <i *ngIf=\"!isIconObject()\" [ngClass]=\"cardData.icon\"></i>\n\n <span\n *ngIf=\"isTitleObject()\"\n class=\"metric-card-header-text\"\n [ngStyle]=\"getTitleStyles()\"\n >\n {{ getTitleText() }}\n </span>\n <span *ngIf=\"!isTitleObject()\" class=\"metric-card-header-text\">\n {{ cardData.title }}\n </span>\n </div>\n\n <div class=\"metric-card-content\">\n <div class=\"metric-value\" [ngStyle]=\"getValueStyles()\">\n <span\n *ngIf=\"isLabelOnLeft()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('left')\"\n >\n {{ getLabelText() }}\n </span>\n\n <span [ngStyle]=\"getValueStyles()\">{{ getValueText() }}</span>\n\n <span\n *ngIf=\"isLabelOnRight()\"\n class=\"value-label\"\n [ngStyle]=\"getLabelStyles('right')\"\n >\n {{ getLabelText() }}\n </span>\n </div>\n\n <div\n *ngIf=\"cardData.divider?.show\"\n class=\"metric-divider\"\n [ngStyle]=\"{ backgroundColor: cardData.divider?.color || '#e2e8f0' }\"\n ></div>\n\n <div\n *ngIf=\"isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ getAdditionalInfoText() }}\n </div>\n <div\n *ngIf=\"!isAdditionalInfoObject()\"\n class=\"metric-additional-info\"\n [ngStyle]=\"getAdditionalInfoStyles()\"\n >\n {{ cardData.additionalInfo }}\n </div>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTMetricCardComponent } from './pt-metric-card.component';\n\n@NgModule({\n declarations: [PTMetricCardComponent],\n imports: [CommonModule],\n exports: [PTMetricCardComponent],\n})\nexport class PTMetricCardModule {}\n","import { Component, Input } from '@angular/core';\nimport { MetricCardData } from '../models/metric-card-data.model';\n\n@Component({\n selector: 'pt-metric-card-group',\n templateUrl: './pt-metric-card-group.component.html',\n styleUrls: ['./pt-metric-card-group.component.css'],\n})\nexport class PTMetricCardGroupComponent {\n @Input() cardsData: MetricCardData[] = [];\n}\n","<div class=\"metric-card-group\">\n <pt-metric-card\n *ngFor=\"let card of cardsData\"\n [cardData]=\"card\"\n ></pt-metric-card>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTMetricCardGroupComponent } from './pt-metric-card-group.component';\nimport { PTMetricCardModule } from '../pt-metric-card/pt-metric-card.module';\n\n@NgModule({\n declarations: [PTMetricCardGroupComponent],\n imports: [CommonModule, PTMetricCardModule],\n exports: [PTMetricCardGroupComponent],\n})\nexport class PTMetricCardGroupModule {}\n","import {\n Component,\n Input,\n OnInit,\n OnDestroy,\n ViewChild,\n ElementRef,\n} from '@angular/core';\nimport {\n Chart,\n ChartConfiguration,\n registerables,\n ChartType,\n ChartData,\n} from 'chart.js';\nimport { ChartConfig } from '../models/chart-config.model';\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\n\n@Component({\n selector: 'pt-chart',\n templateUrl: './pt-chart.component.html',\n styleUrls: ['./pt-chart.component.css'],\n})\nexport class PTChartComponent implements OnInit, OnDestroy {\n @Input() chartConfig!: ChartConfig;\n @ViewChild('chartCanvas', { static: true })\n canvasRef!: ElementRef<HTMLCanvasElement>;\n\n private chart!: Chart;\n\n constructor() {\n Chart.register(...registerables, ChartDataLabels);\n }\n\n ngOnInit() {\n this.initializeChart();\n }\n\n ngOnDestroy() {\n this.destroyChart();\n }\n\n initializeChart() {\n const canvas = this.canvasRef.nativeElement;\n\n // Destroy the existing chart instance if it already exists\n this.destroyChart();\n\n const config: ChartConfiguration = {\n type: this.chartConfig.type as ChartType,\n data: this.chartConfig.data as ChartData,\n options: {\n ...this.chartConfig.options,\n plugins: {\n datalabels: {\n formatter: (value, context) => {\n const data = context.chart.data.datasets[0].data as number[];\n const total = data.reduce((sum, val) => sum + val, 0);\n const percentage = ((value / total) * 100).toFixed(1) + '%';\n return percentage;\n },\n color: '#000',\n font: {\n weight: 'bold',\n },\n },\n ...this.chartConfig.options?.plugins,\n },\n },\n };\n\n // Create a new Chart instance\n this.chart = new Chart(canvas, config);\n }\n\n updateChart() {\n if (this.chart) {\n this.chart.data = this.chartConfig.data;\n\n if (this.chartConfig.options) {\n this.chart.options = this.chartConfig.options;\n }\n\n this.chart.update();\n }\n }\n\n private destroyChart() {\n if (this.chart) {\n this.chart.destroy();\n this.chart = undefined as any;\n }\n }\n}\n","<div style=\"position: relative; height: 100%; width: 100%\">\n <canvas #chartCanvas></canvas>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTChartComponent } from './pt-chart.component';\n\n@NgModule({\n declarations: [PTChartComponent],\n imports: [CommonModule],\n exports: [PTChartComponent],\n})\nexport class PTChartModule {}\n","import { Component, Input, HostListener } from '@angular/core';\nimport { MenuItem, MenuConfig } from '../models';\n\n@Component({\n selector: 'pt-menu',\n templateUrl: './pt-menu.component.html',\n styleUrls: ['./pt-menu.component.css'],\n})\nexport class PTMenuComponent {\n @Input() config: MenuConfig = {\n icon: { code: 'pi pi-ellipsis-v', color: '#000', fontSize: '15px' },\n menuDirection: 'right',\n };\n\n private static readonly DEFAULT_TEXT_COLOR = '#000';\n private static readonly DEFAULT_TEXT_FONT_SIZE = '15px';\n private static readonly DEFAULT_ICON_COLOR = '#000';\n private static readonly DEFAULT_ICON_FONT_SIZE = '15px';\n private static readonly DEFAULT_ICON_CODE = 'pi pi-ellipsis-v';\n\n private static openMenuInstance: PTMenuComponent | null = null;\n\n isOpen = false;\n\n toggleMenu() {\n if (\n PTMenuComponent.openMenuInstance &&\n PTMenuComponent.openMenuInstance !== this\n ) {\n PTMenuComponent.openMenuInstance.closeMenu();\n }\n\n this.isOpen = !this.isOpen;\n\n if (this.isOpen) {\n PTMenuComponent.openMenuInstance = this;\n } else {\n PTMenuComponent.openMenuInstance = null;\n }\n }\n\n closeMenu() {\n this.isOpen = false;\n if (PTMenuComponent.openMenuInstance === this) {\n PTMenuComponent.openMenuInstance = null;\n }\n }\n\n getMenuItemIconClass(item: MenuItem): string {\n // Assuming that icons starting with \"fa\" are FontAwesome icons\n return typeof item.icon === 'string' ? item.icon : item.icon?.code || '';\n }\n\n getMenuItemIconStyles(item: MenuItem) {\n if (typeof item.icon !== 'string') {\n return {\n color: item.icon?.color || PTMenuComponent.DEFAULT_ICON_COLOR,\n fontSize: item.icon?.fontSize || PTMenuComponent.DEFAULT_ICON_FONT_SIZE,\n };\n }\n return {\n color: PTMenuComponent.DEFAULT_ICON_COLOR,\n fontSize: PTMenuComponent.DEFAULT_ICON_FONT_SIZE,\n };\n }\n\n getIconClass(): string {\n return this.config.icon?.code || PTMenuComponent.DEFAULT_ICON_CODE;\n }\n\n getIconStyles() {\n return {\n color:\n this.config.color ||\n this.config.icon?.color ||\n PTMenuComponent.DEFAULT_ICON_COLOR,\n fontSize:\n this.config.fontSize ||\n this.config.icon?.fontSize ||\n PTMenuComponent.DEFAULT_ICON_FONT_SIZE,\n };\n }\n\n getTextStyles(item: MenuItem) {\n return {\n color: item.color || PTMenuComponent.DEFAULT_TEXT_COLOR,\n fontSize: item.fontSize || PTMenuComponent.DEFAULT_TEXT_FONT_SIZE,\n };\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n const clickedInside = (event.target as HTMLElement).closest('.pt-menu');\n if (!clickedInside) {\n this.closeMenu();\n }\n }\n}\n","<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (click)=\"item.action()\"\n >\n <i\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnInit,\n} from '@angular/core';\nimport { CardConfig, IconStyle, TitleStyle } from '../models';\n\n@Component({\n selector: 'pt-card',\n templateUrl: './pt-card.component.html',\n styleUrls: ['./pt-card.component.css'],\n})\nexport class PTCardComponent implements AfterViewInit {\n @Input() config: CardConfig = {};\n\n // Default values as readonly variables\n private static readonly DEFAULT_TITLE_COLOR = '#333';\n private static readonly DEFAULT_TITLE_FONT_SIZE = '1.5em';\n private static readonly DEFAULT_ICON_COLOR = '#333';\n private static readonly DEFAULT_ICON_FONT_SIZE = '1em';\n private static readonly DEFAULT_ICON_POSITION = 'left';\n private static readonly DEFAULT_BACKGROUND_COLOR = '#fff';\n private static readonly DEFAULT_WIDTH = '100%';\n private static readonly DEFAULT_HEIGHT = 'auto';\n private static readonly DEFAULT_TITLE_POSITION = 'left';\n private static readonly DEFAULT_MENU_POSITION = 'right';\n private static readonly DEFAULT_BORDER_COLOR = '#ddd';\n private static readonly DEFAULT_BORDER_WIDTH = '1px';\n private static readonly DEFAULT_TRANSPARENCY = '100';\n private static readonly DEFAULT_PADDING = '16px';\n private static readonly DEFAULT_MARGIN = '16px 0';\n\n ngAfterViewInit() {\n this.logPatternUrl();\n }\n\n private logPatternUrl() {\n if (this.config.pattern?.imageUrl) {\n console.log(\n `[PTCardComponent] Identifier: ${this.config.identifier}, Pattern URL: ${this.config.pattern.imageUrl}`\n );\n }\n }\n\n isTitleObject(): boolean {\n return typeof this.config.title === 'object';\n }\n\n hasTitle(): boolean {\n return this.config.title !== undefined && this.config.title !== null;\n }\n\n getTitleText(): string {\n return this.isTitleObject()\n ? (this.config.title as TitleStyle).text\n : (this.config.title as string);\n }\n\n getTitleStyles() {\n const title = this.config.title as TitleStyle | undefined;\n const alignMap: { [key: string]: string } = {\n left: 'flex-start',\n center: 'center',\n right: 'flex-end',\n };\n return {\n color: title?.color || PTCardComponent.DEFAULT_TITLE_COLOR,\n fontSize: title?.fontSize || PTCardComponent.DEFAULT_TITLE_FONT_SIZE,\n '--text-align':\n alignMap[title?.position || PTCardComponent.DEFAULT_TITLE_POSITION],\n };\n }\n\n constructor(private cd: ChangeDetectorRef) {}\n\n updateStyles() {\n // After data is fetched or updated\n this.getCardStyles();\n this.cd.detectChanges(); // Force Angular to detect the changes\n }\n\n getIconClass(): string | null {\n const icon = (this.config.title as TitleStyle)?.icon;\n return typeof icon === 'string' ? icon : (icon as IconStyle)?.code || null;\n }\n\n getIconStyles() {\n const icon = (this.config.title as TitleStyle)?.icon;\n if (typeof icon !== 'string') {\n return {\n color: icon?.color || PTCardComponent.DEFAULT_ICON_COLOR,\n fontSize: icon?.fontSize || PTCardComponent.DEFAULT_ICON_FONT_SIZE,\n };\n }\n return {\n color: PTCardComponent.DEFAULT_ICON_COLOR,\n fontSize: PTCardComponent.DEFAULT_ICON_FONT_SIZE,\n };\n }\n\n getIconPosition(): 'left' | 'right' | null {\n const icon = (this.config.title as TitleStyle)?.icon;\n if (typeof icon !== 'string' && icon?.position) {\n return icon.position;\n }\n return PTCardComponent.DEFAULT_ICON_POSITION;\n }\n\n getMenuPosition(): 'left' | 'right' {\n return this.config.menuPosition || PTCardComponent.DEFAULT_MENU_POSITION;\n }\n\n getCardStyles() {\n // Transparency for the background color\n const backgroundTransparency = this.config.transparencyPercentage\n ? parseFloat(this.config.transparencyPercentage) / 100\n : 1;\n\n // Transparency for the pattern image\n const patternTransparency = this.config.pattern?.transparencyPercentage\n ? parseFloat(this.config.pattern.transparencyPercentage) / 100\n : 1;\n\n // Background color with transparency\n const backgroundColor =\n this.config.backgroundColor && this.config.transparencyPercentage !== '0'\n ? this.hexToRgba(this.config.backgroundColor, backgroundTransparency)\n : 'transparent';\n\n // Pattern image with transparency applied via linear-gradient\n const backgroundImage =\n this.config.pattern?.imageUrl &&\n this.config.pattern.transparencyPercentage !== '0'\n ? `linear-gradient(rgba(255, 255, 255, ${\n 1 - patternTransparency\n }), rgba(255, 255, 255, ${1 - patternTransparency})), url('${\n this.config.pattern.imageUrl\n }')`\n : '';\n\n const patternWidth = this.config.pattern?.width || '100%';\n const patternHeight = this.config.pattern?.height || 'auto';\n\n // Determine background-repeat value\n const repeatX = this.config.pattern?.repeatX ? 'repeat' : 'no-repeat';\n const repeatY = this.config.pattern?.repeatY ? 'repeat' : 'no-repeat';\n const backgroundRepeat = `${repeatX} ${repeatY}`;\n\n // Adjust background-size based on repeatCount if provided\n const repeatCount = this.config.pattern?.repeatCount || 1;\n const backgroundSize =\n repeatCount > 1\n ? `${patternWidth} ${patternHeight}`\n : `${patternWidth} ${patternHeight}`;\n\n // Determine background-position based on the position parameter\n const backgroundPosition = this.config.pattern?.position || 'center';\n\n const justifyContent =\n this.config.alignContent === 'center' ? 'center' : 'flex-start';\n\n const alignItems =\n this.config.alignContent === 'center' ? 'center' : 'stretch';\n\n return {\n display: 'flex',\n flexDirection: 'column',\n justifyContent, // Apply conditional vertical alignment\n alignItems, // Apply conditional horizontal alignment\n backgroundColor, // Background color with transparency\n backgroundImage, // Pattern image with transparency\n backgroundSize,\n backgroundPosition,\n backgroundRepeat,\n width: this.config.width || PTCardComponent.DEFAULT_WIDTH,\n height: this.config.height || PTCardComponent.DEFAULT_HEIGHT,\n border: this.config.noBorder\n ? 'none'\n : `solid ${\n this.config.borderWidth || PTCardComponent.DEFAULT_BORDER_WIDTH\n } ${this.config.borderColor || PTCardComponent.DEFAULT_BORDER_COLOR}`,\n padding: this.config.padding || PTCardComponent.DEFAULT_PADDING,\n margin: this.config.margin || PTCardComponent.DEFAULT_MARGIN,\n borderRadius: this.config.borderRadius || '8px',\n boxShadow: this.config.boxShadow || '0 2px 4px rgba(0, 0, 0, 0.1)',\n position: 'relative',\n zIndex: this.config.zIndex !== undefined ? this.config.zIndex : 'auto',\n };\n }\n\n // Utility function to convert hex color to rgba\n private hexToRgba(hex: string, alpha: number): string {\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n hex = hex.replace(shorthandRegex, (_, r, g, b) => r + r + g + g + b + b);\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? `rgba(${parseInt(result[1], 16)}, ${parseInt(\n result[2],\n 16\n )}, ${parseInt(result[3], 16)}, ${alpha})`\n : hex;\n }\n\n getBodyStyles() {\n const justifyContent =\n this.config.alignBodyContent === 'center' ? 'center' : 'flex-start';\n const alignItems =\n this.config.alignBodyContent === 'center' ? 'center' : 'stretch';\n\n return {\n display: 'flex',\n flexDirection: 'column',\n justifyContent,\n alignItems,\n flexGrow: 1,\n maxWidth: '100%',\n padding: '16px', // Default padding for body\n boxSizing: 'border-box',\n overflowX: this.isScrollableHorizontal() ? 'auto' : 'hidden',\n overflowY: this.isScrollableVertical() ? 'auto' : 'hidden',\n };\n }\n\n getHeaderStyles() {\n const justifyContent =\n this.config.alignHeaderContent === 'center' ? 'center' : 'flex-start';\n const alignItems =\n this.config.alignHeaderContent === 'center' ? 'center' : 'stretch';\n\n return {\n display: 'flex',\n justifyContent,\n alignItems,\n marginBottom: '16px', // Default margin for header\n position: 'relative',\n };\n }\n\n isScrollableHorizontal(): boolean {\n return !!this.config.scrollableHorizontal;\n }\n\n isScrollableVertical(): boolean {\n return !!this.config.scrollableVertical;\n }\n\n getCardClass() {\n return this.config.alignContent === 'center' ? 'center-align' : '';\n }\n\n getBodyClass() {\n return this.config.alignBodyContent === 'center' ? 'center-align' : '';\n }\n\n getHeaderClass() {\n return this.config.alignHeaderContent === 'center' ? 'center-align' : '';\n }\n}\n","<div\n class=\"pt-card card\"\n [ngClass]=\"getCardClass()\"\n [attr.id]=\"config.identifier\"\n [ngStyle]=\"getCardStyles()\"\n>\n <!-- Card Header -->\n <div\n *ngIf=\"hasTitle()\"\n class=\"card-header\"\n [ngClass]=\"getHeaderClass()\"\n [ngStyle]=\"getHeaderStyles()\"\n >\n <i\n *ngIf=\"getIconClass() && getIconPosition() === 'left'\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n class=\"card-header-icon-left\"\n ></i>\n <span>{{ getTitleText() }}</span>\n <i\n *ngIf=\"getIconClass() && getIconPosition() === 'right'\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n class=\"card-header-icon-right\"\n ></i>\n <pt-menu\n *ngIf=\"config.menu\"\n [config]=\"config.menu\"\n [ngClass]=\"{\n 'menu-left': getMenuPosition() === 'left',\n 'menu-right': getMenuPosition() === 'right'\n }\"\n ></pt-menu>\n </div>\n\n <!-- Card Body -->\n <div class=\"card-body\" [ngClass]=\"getBodyClass()\" [ngStyle]=\"getBodyStyles()\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTMenuComponent } from './pt-menu.component';\n\n@NgModule({\n declarations: [PTMenuComponent],\n imports: [CommonModule],\n exports: [PTMenuComponent],\n})\nexport class PTMenuModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTCardComponent } from './pt-card.component';\nimport { PTMenuModule } from '../pt-menu';\n\n@NgModule({\n declarations: [PTCardComponent],\n imports: [CommonModule, PTMenuModule],\n exports: [PTCardComponent],\n})\nexport class PTCardModule {}\n","import { Component, Input, HostListener } from '@angular/core';\nimport { MenuItem, MenuConfig, CardConfig } from '../models';\n\n@Component({\n selector: 'pt-menu-fancy',\n templateUrl: './pt-menu-fancy.component.html',\n styleUrls: ['./pt-menu-fancy.component.css'],\n})\nexport class PTMenuFancyComponent {\n @Input() config: MenuConfig = {\n icon: { code: 'pi pi-ellipsis-v', color: '#000', fontSize: '15px' },\n menuDirection: 'right',\n };\n\n cardMenuConfig: CardConfig = {\n noBorder: true,\n margin: '0',\n padding: '5px',\n };\n\n private static readonly DEFAULT_TEXT_COLOR = '#000';\n private static readonly DEFAULT_TEXT_FONT_SIZE = '15px';\n private static readonly DEFAULT_ICON_COLOR = '#000';\n private static readonly DEFAULT_ICON_FONT_SIZE = '15px';\n private static readonly DEFAULT_ICON_CODE = 'pi pi-ellipsis-v';\n\n private static openMenuInstance: PTMenuFancyComponent | null = null;\n\n isOpen = false;\n\n toggleMenu() {\n if (\n PTMenuFancyComponent.openMenuInstance &&\n PTMenuFancyComponent.openMenuInstance !== this\n ) {\n PTMenuFancyComponent.openMenuInstance.closeMenu();\n }\n\n this.isOpen = !this.isOpen;\n\n if (this.isOpen) {\n PTMenuFancyComponent.openMenuInstance = this;\n } else {\n PTMenuFancyComponent.openMenuInstance = null;\n }\n }\n\n closeMenu() {\n this.isOpen = false;\n if (PTMenuFancyComponent.openMenuInstance === this) {\n PTMenuFancyComponent.openMenuInstance = null;\n }\n }\n\n getMenuItemIconClass(item: MenuItem): string {\n // Assuming that icons starting with \"fa\" are FontAwesome icons\n return typeof item.icon === 'string' ? item.icon : item.icon?.code || '';\n }\n\n getMenuItemIconStyles(item: MenuItem) {\n if (typeof item.icon !== 'string') {\n return {\n color: item.icon?.color || PTMenuFancyComponent.DEFAULT_ICON_COLOR,\n fontSize:\n item.icon?.fontSize || PTMenuFancyComponent.DEFAULT_ICON_FONT_SIZE,\n };\n }\n return {\n color: PTMenuFancyComponent.DEFAULT_ICON_COLOR,\n fontSize: PTMenuFancyComponent.DEFAULT_ICON_FONT_SIZE,\n };\n }\n\n getIconClass(): string {\n return this.config.icon?.code || PTMenuFancyComponent.DEFAULT_ICON_CODE;\n }\n\n getIconStyles() {\n return {\n color:\n this.config.color ||\n this.config.icon?.color ||\n PTMenuFancyComponent.DEFAULT_ICON_COLOR,\n fontSize:\n this.config.fontSize ||\n this.config.icon?.fontSize ||\n PTMenuFancyComponent.DEFAULT_ICON_FONT_SIZE,\n };\n }\n\n getTextStyles(item: MenuItem) {\n return {\n color: item.color || PTMenuFancyComponent.DEFAULT_TEXT_COLOR,\n fontSize: item.fontSize || PTMenuFancyComponent.DEFAULT_TEXT_FONT_SIZE,\n };\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n const clickedInside = (event.target as HTMLElement).closest(\n '.pt-menu-fancy'\n );\n if (!clickedInside) {\n this.closeMenu();\n }\n }\n}\n","<div\n [ngClass]=\"{\n open: isOpen,\n 'menu-left': config.menuDirection === 'left',\n 'menu-right': config.menuDirection === 'right'\n }\"\n class=\"pt-menu-fancy\"\n>\n <i\n class=\"menu-icon\"\n (click)=\"toggleMenu()\"\n [ngClass]=\"getIconClass()\"\n [ngStyle]=\"getIconStyles()\"\n ></i>\n <div class=\"menu-dropdown\" *ngIf=\"isOpen\">\n <pt-card [config]=\"cardMenuConfig\">\n <div\n class=\"menu-item\"\n *ngFor=\"let item of config.menuItems\"\n (click)=\"item.action()\"\n >\n <i\n [ngClass]=\"getMenuItemIconClass(item)\"\n [ngStyle]=\"getMenuItemIconStyles(item)\"\n ></i>\n <span [ngStyle]=\"getTextStyles(item)\">{{ item.text }}</span>\n </div>\n </pt-card>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ImageStyle, NavBarMenuConfig, TextStyle } from '../models';\n\n@Component({\n selector: 'pt-nav-bar-menu',\n templateUrl: './pt-nav-bar-menu.component.html',\n styleUrls: ['./pt-nav-bar-menu.component.css'],\n})\nexport class PTNavbarMenuComponent {\n @Input() navBarMenuConfig: NavBarMenuConfig = {};\n\n @Output() toggleSidebar: EventEmitter<void> = new EventEmitter<void>();\n\n // Default values as readonly variables\n private static readonly DEFAULT_LOGO_URL: string = '';\n private static readonly DEFAULT_LOGO_ALT_TEXT: string = 'Logo';\n private static readonly DEFAULT_LOGO_WIDTH: string = '40px';\n private static readonly DEFAULT_LOGO_HEIGHT: string = 'auto';\n private static readonly DEFAULT_APP_NAME: string = 'Application';\n private static readonly DEFAULT_APP_NAME_COLOR: string = '#000';\n private static readonly DEFAULT_APP_NAME_FONT_SIZE: string = '24px';\n private static readonly DEFAULT_TRANSPARENCY: string = '100';\n private static readonly DEFAULT_ICON_COLOR: string = '#333';\n private static readonly DEFAULT_TOGGLE_BUTTON_ICON: string = 'pi pi-bars';\n private static readonly DEFAULT_TOGGLE_BUTTON_COLOR: string = '#333';\n\n isImageStyle(object: any): object is ImageStyle {\n return typeof object === 'object' && 'imageUrl' in object;\n }\n\n isTextStyle(object: any): object is TextStyle {\n return typeof object === 'object' && 'text' in object;\n }\n\n getLogoUrl(): string {\n return this.isImageStyle(this.navBarMenuConfig.logo)\n ? this.navBarMenuConfig.logo.imageUrl\n : PTNavbarMenuComponent.DEFAULT_LOGO_URL;\n }\n\n getLogoAltText(): string {\n return this.isImageStyle(this.navBarMenuConfig.logo)\n ? this.navBarMenuConfig.logo.altText ||\n PTNavbarMenuComponent.DEFAULT_LOGO_ALT_TEXT\n : PTNavbarMenuComponent.DEFAULT_LOGO_ALT_TEXT;\n }\n\n getLogoStyles() {\n if (this.isImageStyle(this.navBarMenuConfig.logo)) {\n return {\n color:\n this.navBarMenuConfig.logo.color ||\n PTNavbarMenuComponent.DEFAULT_ICON_COLOR,\n width:\n this.navBarMenuConfig.logo.width ||\n PTNavbarMenuComponent.DEFAULT_LOGO_WIDTH,\n height:\n this.navBarMenuConfig.logo.height ||\n PTNavbarMenuComponent.DEFAULT_LOGO_HEIGHT,\n };\n }\n return {};\n }\n\n getAppName(): string {\n return this.isTextStyle(this.navBarMenuConfig.appName)\n ? this.navBarMenuConfig.appName.text\n : PTNavbarMenuComponent.DEFAULT_APP_NAME;\n }\n\n getAppNameStyles() {\n if (this.isTextStyle(this.navBarMenuConfig.appName)) {\n return {\n color:\n this.navBarMenuConfig.appName.color ||\n PTNavbarMenuComponent.DEFAULT_APP_NAME_COLOR,\n fontSize:\n this.navBarMenuConfig.appName.fontSize ||\n PTNavbarMenuComponent.DEFAULT_APP_NAME_FONT_SIZE,\n };\n }\n return {\n color: PTNavbarMenuComponent.DEFAULT_APP_NAME_COLOR,\n fontSize: PTNavbarMenuComponent.DEFAULT_APP_NAME_FONT_SIZE,\n };\n }\n\n getNavbarStyles() {\n const transparency =\n this.navBarMenuConfig.pattern?.transparencyPercentage ||\n PTNavbarMenuComponent.DEFAULT_TRANSPARENCY;\n const imageUrl = this.navBarMenuConfig.pattern?.imageUrl || '';\n const patternWidth = this.navBarMenuConfig.pattern?.width || '100%';\n const patternHeight = this.navBarMenuConfig.pattern?.height || 'auto';\n\n // Determine background-repeat value\n const repeatX = this.navBarMenuConfig.pattern?.repeatX\n ? 'repeat'\n : 'no-repeat';\n const repeatY = this.navBarMenuConfig.pattern?.repeatY\n ? 'repeat'\n : 'no-repeat';\n const backgroundRepeat = `${repeatX} ${repeatY}`;\n\n // Use the position directly from the pattern configuration\n const backgroundPosition =\n this.navBarMenuConfig.pattern?.position || 'center';\n\n // Construct the background image style with transparency\n const backgroundImage = imageUrl\n ? `linear-gradient(rgba(255, 255, 255, ${\n 1 - parseFloat(transparency) / 100\n }), rgba(255, 255, 255, ${\n 1 - parseFloat(transparency) / 100\n })), url(${imageUrl})`\n : '';\n\n return {\n backgroundColor: this.navBarMenuConfig.pattern ? 'transparent' : '#fff',\n backgroundImage: backgroundImage,\n backgroundSize: `${patternWidth} ${patternHeight}`,\n backgroundPosition: backgroundPosition,\n backgroundRepeat: backgroundRepeat,\n };\n }\n\n toggleMenu() {\n this.toggleSidebar.emit();\n }\n\n getToggleButtonIcon(): string {\n return (\n this.navBarMenuConfig.toggleButtonIcon ||\n PTNavbarMenuComponent.DEFAULT_TOGGLE_BUTTON_ICON\n );\n }\n\n getToggleButtonStyles() {\n return {\n color:\n this.navBarMenuConfig.toggleButtonColor ||\n PTNavbarMenuComponent.DEFAULT_TOGGLE_BUTTON_COLOR,\n };\n }\n}\n","<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <div class=\"navbar-left\">\n <a\n [routerLink]=\"\n isImageStyle(navBarMenuConfig.logo)\n ? navBarMenuConfig.logo.routerLink\n : '/'\n \"\n class=\"logo-link\"\n >\n <img\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n class=\"navbar-logo\"\n />\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n <!-- Toggle Button -->\n <a (click)=\"toggleMenu()\" class=\"toggle-btn\">\n <i\n [class]=\"getToggleButtonIcon()\"\n [ngStyle]=\"getToggleButtonStyles()\"\n ></i>\n </a>\n </div>\n <div class=\"navbar-right\">\n <pt-menu-fancy\n *ngFor=\"let menuConfig of navBarMenuConfig.menus\"\n [config]=\"menuConfig\"\n ></pt-menu-fancy>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTMenuFancyComponent } from './pt-menu-fancy.component';\nimport { PTCardModule } from '../pt-card/pt-card.module';\n\n@NgModule({\n declarations: [PTMenuFancyComponent],\n imports: [CommonModule, PTCardModule],\n exports: [PTMenuFancyComponent],\n})\nexport class PTMenuFancyModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTNavbarMenuComponent } from './pt-nav-bar-menu.component';\nimport { RouterModule } from '@angular/router';\nimport { PTMenuFancyModule } from '../pt-menu-fancy';\n\n@NgModule({\n declarations: [PTNavbarMenuComponent],\n imports: [CommonModule, RouterModule, PTMenuFancyModule],\n exports: [PTNavbarMenuComponent],\n})\nexport class PTNavbarMenuModule {}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnInit,\n Renderer2,\n} from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport {\n Menu,\n FormTextField,\n SideMenuBarConfig,\n CardConfig,\n Badge,\n} from '../models';\nimport { BadgeType } from '../enums';\n\n@Component({\n selector: 'pt-side-bar-menu',\n templateUrl: './pt-side-bar-menu.component.html',\n styleUrls: ['./pt-side-bar-menu.component.css'],\n})\nexport class PTSideBarMenuComponent implements OnInit, AfterViewInit {\n @Input() menuConfig: SideMenuBarConfig = {\n menus: [],\n isVisible: true,\n searchable: true,\n width: '250px',\n height: '100vh',\n scrollable: true,\n backgroundColor: 'white',\n fontColor: '#333',\n fontColorSubMenu: '#666',\n hoverColor: '#f1f1f1',\n hoverColorSubMenu: '#e0e0e0',\n };\n\n constructor(private renderer: Renderer2, private el: ElementRef) {}\n\n searchCardConfig: CardConfig = {\n alignContent: 'center',\n alignBodyContent: 'center',\n identifier: 'pt-side-bar-menu/search',\n backgroundColor: 'white',\n height: '72px',\n padding: '0',\n };\n\n cardConfig: CardConfig = {\n identifier: 'pt-side-bar-menu',\n backgroundColor: '',\n width: '',\n height: '',\n scrollableVertical: false,\n };\n\n formGroup: FormGroup = new FormGroup({\n search: new FormControl(''),\n });\n\n searchField: FormTextField = {\n name: 'search',\n placeholder: 'Search...',\n iconClass: 'pi pi-search',\n };\n\n filteredMenus: Menu[] = [];\n\n ngOnInit(): void {\n this.cardConfig = {\n identifier: 'pt-side-bar-menu',\n backgroundColor: this.menuConfig.backgroundColor,\n width: this.menuConfig.width,\n height: this.menuConfig.height,\n scrollableVertical: this.menuConfig.scrollable,\n pattern: this.menuConfig.pattern,\n };\n\n this.filteredMenus = this.menuConfig.menus;\n\n const cardWidth = this.menuConfig.width\n ? parseInt(this.menuConfig.width)\n : 250;\n this.searchField.width = `${cardWidth - 60}px`;\n this.searchCardConfig.width = this.menuConfig.width;\n this.searchCardConfig.pattern = this.menuConfig.pattern;\n\n if (this.menuConfig.searchable) {\n this.formGroup\n .get('search')\n ?.valueChanges.subscribe((searchTerm: string) => {\n this.onSearch(searchTerm);\n });\n }\n }\n\n toggleMenu(item: Menu, event: Event): void {\n item.isExpanded = !item.isExpanded;\n event.preventDefault();\n }\n\n getChevronClass(item: Menu): string {\n return item.isExpanded ? 'fa fa-chevron-down' : 'fa fa-chevron-right';\n }\n\n getBadgeStyles(badge: Badge) {\n const defaultColors = this.getDefaultBadgeColors(\n badge.type || BadgeType.Info\n );\n\n return {\n color: badge.color || defaultColors.color,\n backgroundColor: badge.backgroundColor || defaultColors.backgroundColor,\n padding: '2px 8px',\n borderRadius: '5px',\n fontSize: '12px',\n };\n }\n\n getDefaultBadgeColors(type: BadgeType) {\n switch (type) {\n case BadgeType.Info:\n return { color: 'white', backgroundColor: '#17a2b8' };\n case BadgeType.Danger:\n return { color: 'white', backgroundColor: '#dc3545' };\n case BadgeType.Warning:\n return { color: 'white', backgroundColor: '#ffc107' };\n default:\n return { color: 'white', backgroundColor: '#6c757d' };\n }\n }\n\n onSearch(searchTerm: string): void {\n if (searchTerm.trim() === '') {\n this.filteredMenus = this.menuConfig.menus;\n this.collapseAllMenus();\n } else {\n const lowerCaseSearch = searchTerm.toLowerCase();\n this.filteredMenus = this.menuConfig.menus\n .map((menu) => this.searchInMenu({ ...menu }, lowerCaseSearch))\n .filter(Boolean) as Menu[];\n }\n }\n\n searchInMenu(menu: Menu, searchTerm: string): Menu | null {\n const isMatch = menu.label.toLowerCase().includes(searchTerm);\n\n if (menu.children) {\n const matchingChildren = menu.children\n .map((child) => this.searchInMenu(child, searchTerm))\n .filter(Boolean) as Menu[];\n\n if (matchingChildren.length > 0) {\n menu.children = matchingChildren;\n menu.isExpanded = true;\n return menu;\n }\n }\n\n return isMatch ? menu : null;\n }\n\n collapseAllMenus(): void {\n this.menuConfig.menus.forEach((menu) => {\n menu.isExpanded = false;\n });\n }\n\n getMenuItemStyles(): any {\n return {\n color: this.menuConfig.fontColor || '#333', // Set default font color if not specified in config\n };\n }\n\n getMenuLinkStyles(): any {\n return {\n color: this.menuConfig.fontColor || '#333',\n 'text-decoration': 'none',\n 'border-radius': '8px',\n padding: '10px 15px',\n 'font-size': '16px',\n transition: 'background-color 0.2s, color 0.2s',\n display: 'flex',\n 'align-items': 'center',\n ':hover': {\n backgroundColor: this.menuConfig.hoverColor || '#f1f1f1',\n color: '#111',\n },\n };\n }\n\n getSubMenuLinkStyles(): any {\n return {\n color:\n this.menuConfig.fontColorSubMenu || this.menuConfig.fontColor || '#666',\n 'text-decoration': 'none',\n 'border-radius': '5px',\n padding: '5px 10px',\n transition: 'background-color 0.2s, color 0.2s',\n ':hover': {\n backgroundColor: this.menuConfig.hoverColorSubMenu || '#e0e0e0',\n },\n };\n }\n ngAfterViewInit(): void {\n this.applyHoverEffects();\n }\n\n applyHoverEffects(): void {\n const menuLinks = this.el.nativeElement.querySelectorAll('a.menu-link');\n const subMenuLinks =\n this.el.nativeElement.querySelectorAll('a.submenu-link');\n\n // Apply hover effects for main menu links\n menuLinks.forEach((link: HTMLElement) => {\n this.renderer.listen(link, 'mouseenter', () => {\n this.renderer.setStyle(\n link,\n 'background-color',\n this.menuConfig.hoverColor || '#f1f1f1'\n );\n this.renderer.setStyle(\n link,\n 'color',\n this.menuConfig.hoverFontColor || 'white'\n );\n });\n\n this.renderer.listen(link, 'mouseleave', () => {\n this.renderer.removeStyle(link, 'background-color');\n this.renderer.setStyle(\n link,\n 'color',\n this.menuConfig.fontColor || '#333'\n );\n });\n });\n\n // Apply hover effects for submenu links\n subMenuLinks.forEach((link: HTMLElement) => {\n this.renderer.listen(link, 'mouseenter', () => {\n this.renderer.setStyle(\n link,\n 'background-color',\n this.menuConfig.hoverColorSubMenu ||\n this.menuConfig.hoverColor ||\n '#f1f1f1'\n );\n this.renderer.setStyle(\n link,\n 'color',\n this.menuConfig.hoverFontColorSubMenu ||\n this.menuConfig.hoverFontColor ||\n '#fff'\n );\n });\n\n this.renderer.listen(link, 'mouseleave', () => {\n this.renderer.removeStyle(link, 'background-color');\n this.renderer.setStyle(\n link,\n 'color',\n this.menuConfig.fontColorSubMenu ||\n this.menuConfig.fontColor ||\n '#666'\n );\n });\n });\n }\n}\n","<div class=\"pt-side-bar-menu\">\n <pt-card\n *ngIf=\"menuConfig.searchable\"\n [config]=\"searchCardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <div class=\"search-input\">\n <pt-text-input [formGroup]=\"formGroup\" [formField]=\"searchField\">\n </pt-text-input>\n </div>\n </pt-card>\n\n <pt-card\n [config]=\"cardConfig\"\n [ngClass]=\"{ 'sidebar-hidden': !menuConfig.isVisible }\"\n >\n <ul class=\"menu-list\">\n <li\n *ngFor=\"let item of filteredMenus\"\n class=\"menu-item\"\n [ngClass]=\"{ 'menu-item-expanded': item.isExpanded }\"\n [ngStyle]=\"getMenuItemStyles()\"\n >\n <!-- Main menu items without children -->\n <a\n *ngIf=\"!item.children?.length\"\n [routerLink]=\"item.url\"\n class=\"menu-link\"\n [ngStyle]=\"getMenuLinkStyles()\"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span>{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n </a>\n\n <!-- Menu items with children -->\n <a\n *ngIf=\"item.children?.length\"\n class=\"menu-link\"\n (click)=\"toggleMenu(item, $event)\"\n [ngStyle]=\"getMenuLinkStyles()\"\n >\n <i [ngClass]=\"item.icon\"></i>\n <span>{{ item.label }}</span>\n <span\n *ngIf=\"item.badge\"\n [ngStyle]=\"getBadgeStyles(item.badge)\"\n class=\"badge\"\n >\n {{ item.badge.count }}\n </span>\n <i [ngClass]=\"getChevronClass(item)\" class=\"chevron\"></i>\n </a>\n\n <!-- Submenu -->\n <ul class=\"submenu-list\">\n <li *ngFor=\"let child of item.children\" class=\"submenu-item\">\n <a\n [routerLink]=\"child.url\"\n class=\"submenu-link\"\n [ngStyle]=\"getSubMenuLinkStyles()\"\n >\n <i [ngClass]=\"child.icon\"></i>\n <span class=\"submenu-title\">{{ child.label }}</span>\n <span\n *ngIf=\"child.badge\"\n [ngStyle]=\"getBadgeStyles(child.badge)\"\n class=\"badge\"\n >\n {{ child.badge.count }}\n </span>\n </a>\n </li>\n </ul>\n </li>\n </ul>\n </pt-card>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTSideBarMenuComponent } from './pt-side-bar-menu.component';\nimport { RouterModule } from '@angular/router';\nimport { PTCardModule } from '../pt-card';\nimport { PTTextInputModule } from '../pt-text-input';\n\n@NgModule({\n declarations: [PTSideBarMenuComponent],\n imports: [CommonModule, RouterModule, PTCardModule, PTTextInputModule],\n exports: [PTSideBarMenuComponent],\n})\nexport class PTSideBarMenuModule {}\n","import { Component, Input } from '@angular/core';\nimport { FooterConfig, CardConfig } from '../models';\n\n@Component({\n selector: 'pt-footer',\n templateUrl: './pt-footer.component.html',\n styleUrls: ['./pt-footer.component.css'],\n})\nexport class PTFooterComponent {\n @Input() footerConfig: FooterConfig = {\n appName: 'Default App',\n version: '1.0.0',\n productionYear: new Date().getFullYear(),\n };\n\n getCurrentYear(): number {\n return new Date().getFullYear();\n }\n\n getCardConfig(): CardConfig {\n return (\n this.footerConfig.cardConfig ?? {\n backgroundColor: '#f8f8f8',\n width: '100%',\n height: 'auto',\n scrollableVertical: false,\n padding: '0',\n margin: '0',\n }\n );\n }\n\n displayYears(): string {\n const currentYear = this.getCurrentYear();\n const productionYear = this.footerConfig.productionYear;\n\n return productionYear === currentYear\n ? `${currentYear}`\n : `${productionYear} - ${currentYear}`;\n }\n}\n","<pt-card [config]=\"getCardConfig()\" class=\"footer-card\">\n <footer class=\"footer\">\n <p>\n {{ footerConfig.appName }} V {{ footerConfig.version }}\n <br />\n &copy; {{ displayYears() }} All rights reserved.\n </p>\n </footer>\n</pt-card>\n","import { Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { MenuItem } from 'primeng/api';\nimport { BehaviorSubject } from 'rxjs';\nimport { Menu } from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PTBreadCrumbService {\n private _breadcrumb = new BehaviorSubject<MenuItem[]>([]);\n breadcrumb$ = this._breadcrumb.asObservable();\n private menuData: any[] = [];\n\n constructor(private router: Router) {\n this.router.events\n .pipe(\n filter(\n (event): event is NavigationEnd => event instanceof NavigationEnd\n )\n )\n .subscribe((event: NavigationEnd) => {\n let urlParts = event.urlAfterRedirects.split('/');\n urlParts.splice(0, 1);\n let urlWithoutContext = urlParts.join('/');\n let newBreadcrumb = this.createBreadcrumb(urlWithoutContext);\n this._breadcrumb.next(newBreadcrumb);\n });\n }\n\n // Method to set menuData\n setMenuData(menuData: any[]) {\n this.menuData = menuData;\n }\n\n createBreadcrumb(url: string = '', breadcrumbs: MenuItem[] = []): MenuItem[] {\n if (!url) {\n return breadcrumbs;\n }\n\n const pathSegments = url.split('/').filter((segment) => segment);\n\n return this.buildParentBreadcrumbs(\n this.menuData,\n pathSegments,\n breadcrumbs\n );\n }\n\n private buildParentBreadcrumbs(\n menuData: any[],\n pathSegments: string[],\n breadcrumbs: MenuItem[]\n ): MenuItem[] {\n if (pathSegments.length === 0) {\n return breadcrumbs;\n }\n\n const currentSegment = pathSegments.shift();\n\n const currentMenu = menuData.find(\n (menu) => menu.url === currentSegment || menu.url.endsWith(currentSegment)\n );\n\n if (currentMenu) {\n breadcrumbs.push({ label: currentMenu.label, url: currentMenu.url });\n\n if (\n currentMenu.children &&\n currentMenu.children.length > 0 &&\n pathSegments.length > 0\n ) {\n return this.buildChildBreadcrumbs(\n currentMenu.children,\n pathSegments,\n breadcrumbs,\n currentSegment || ''\n );\n }\n }\n\n return breadcrumbs;\n }\n\n private buildChildBreadcrumbs(\n menuData: Menu[],\n pathSegments: string[],\n breadcrumbs: MenuItem[],\n currentUrl: string\n ): MenuItem[] {\n if (pathSegments.length === 0) {\n return breadcrumbs;\n }\n\n const currentSegment = pathSegments.shift();\n currentUrl = `/${currentUrl}/${currentSegment}`;\n\n const currentMenu = menuData.find((menu) => menu.url === currentUrl);\n\n if (currentMenu) {\n breadcrumbs.push({ label: currentMenu.label, url: currentMenu.url });\n\n if (\n currentMenu.children &&\n currentMenu.children.length > 0 &&\n pathSegments.length > 0\n ) {\n return this.buildChildBreadcrumbs(\n currentMenu.children,\n pathSegments,\n breadcrumbs,\n currentUrl\n );\n }\n } else {\n const parentMenu = menuData.find(\n (menu) =>\n menu.children &&\n menu.children.some((child) => child.url === currentUrl)\n );\n if (parentMenu && parentMenu.children) {\n const childMenu = parentMenu.children.find(\n (child: Menu) => child.url === currentUrl\n );\n if (childMenu) {\n breadcrumbs.push({ label: parentMenu.label, url: parentMenu.url });\n breadcrumbs.push({ label: childMenu.label, url: childMenu.url });\n\n if (\n childMenu.children &&\n childMenu.children.length > 0 &&\n pathSegments.length > 0\n ) {\n return this.buildChildBreadcrumbs(\n childMenu.children,\n pathSegments,\n breadcrumbs,\n currentUrl\n );\n }\n }\n }\n }\n\n return breadcrumbs;\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n OnDestroy,\n Renderer2,\n ElementRef,\n AfterViewInit,\n} from '@angular/core';\nimport { MenuItem } from 'primeng/api';\nimport { Subscription } from 'rxjs';\nimport { PTBreadCrumbService } from './pt-bread-crumb.service';\nimport { BreadCrumbConfig } from '../models/bread-crumb-config.model';\n\n@Component({\n selector: 'pt-bread-crumb',\n templateUrl: './pt-bread-crumb.component.html',\n styleUrls: ['./pt-bread-crumb.component.css'],\n})\nexport class PTBreadCrumbComponent implements OnInit, OnDestroy, AfterViewInit {\n @Input() breadCrumbConfig!: BreadCrumbConfig;\n items: MenuItem[] | undefined;\n home: MenuItem | undefined;\n breadCrumbSubscription!: Subscription;\n\n constructor(\n private breadcrumbService: PTBreadCrumbService,\n private renderer: Renderer2,\n private el: ElementRef\n ) {}\n\n ngOnInit(): void {\n this.home = { icon: 'pi pi-home', routerLink: 'dashboard' };\n\n // Pass the input menuData to the service\n this.breadcrumbService.setMenuData(this.breadCrumbConfig.menuData);\n\n this.breadCrumbSubscription = this.breadcrumbService.breadcrumb$.subscribe(\n (breadcrumb) => {\n this.items = breadcrumb;\n }\n );\n }\n\n ngAfterViewInit(): void {\n this.applyBackgroundStyles();\n }\n\n ngOnDestroy(): void {\n if (this.breadCrumbSubscription) {\n this.breadCrumbSubscription.unsubscribe();\n }\n }\n\n applyBackgroundStyles() {\n const transparency =\n this.breadCrumbConfig.pattern?.transparencyPercentage || '100';\n const backgroundImage = this.breadCrumbConfig.pattern?.imageUrl\n ? `linear-gradient(rgba(255, 255, 255, ${\n 1 - parseFloat(transparency) / 100\n }), rgba(255, 255, 255, ${1 - parseFloat(transparency) / 100})), url('${\n this.breadCrumbConfig.pattern.imageUrl\n }')`\n : '';\n\n // Delay to ensure that the element is fully rendered before applying styles\n setTimeout(() => {\n const breadcrumbNav = this.el.nativeElement.querySelector(\n 'nav.p-breadcrumb.p-component'\n );\n\n if (breadcrumbNav) {\n this.renderer.setStyle(\n breadcrumbNav,\n 'background-image',\n backgroundImage\n );\n }\n });\n }\n}\n","<div\n *ngIf=\"items && items.length > 0\"\n class=\"pt-bread-crumb breadcrumb-container\"\n>\n <p-breadcrumb class=\"max-w-full\" [model]=\"items\" [home]=\"home\"></p-breadcrumb>\n</div>\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { PageSkeletonConfig, CardConfig } from '../models';\n\n@Component({\n selector: 'pt-page-skeleton',\n templateUrl: './pt-page-skeleton.component.html',\n styleUrls: ['./pt-page-skeleton.component.css'],\n})\nexport class PTPageSkeletonComponent implements OnInit {\n @Input() pageSkeletonConfig!: PageSkeletonConfig;\n @Output() toggleSidebar: EventEmitter<void> = new EventEmitter<void>();\n\n isSidebarVisible: boolean = true;\n\n ngOnInit() {\n this.initializeBackgroundCardConfig();\n this.initializeContentCardConfig();\n }\n\n onToggleSidebar(): void {\n this.isSidebarVisible = !this.isSidebarVisible;\n this.toggleSidebar.emit();\n }\n\n // Initialize backgroundCardConfig with default values\n initializeBackgroundCardConfig() {\n this.pageSkeletonConfig.backgroundCardConfig = {\n identifier: 'pt-page-skeleton/background',\n noBorder: this.pageSkeletonConfig.backgroundCardConfig?.noBorder ?? true,\n backgroundColor:\n this.pageSkeletonConfig.backgroundCardConfig?.backgroundColor || '#fff',\n padding: this.pageSkeletonConfig.backgroundCardConfig?.padding || '20px',\n margin: this.pageSkeletonConfig.backgroundCardConfig?.margin || '10px',\n ...this.pageSkeletonConfig.backgroundCardConfig,\n };\n }\n\n // Initialize contentCardConfig with default values (if necessary)\n initializeContentCardConfig() {\n this.pageSkeletonConfig.contentCardConfig = {\n identifier: 'pt-page-skeleton/content',\n noBorder: this.pageSkeletonConfig.contentCardConfig?.noBorder ?? false,\n backgroundColor:\n this.pageSkeletonConfig.contentCardConfig?.backgroundColor || '#f0f0f0',\n padding: this.pageSkeletonConfig.contentCardConfig?.padding || '15px',\n scrollableVertical: true,\n scrollableHorizontal: true,\n ...this.pageSkeletonConfig.contentCardConfig,\n };\n }\n}\n","<pt-card [config]=\"pageSkeletonConfig.backgroundCardConfig!\">\n <!-- Navbar -->\n <pt-nav-bar-menu\n [navBarMenuConfig]=\"pageSkeletonConfig.navBarMenuConfig\"\n (toggleSidebar)=\"onToggleSidebar()\"\n ></pt-nav-bar-menu>\n\n <div class=\"main-content\">\n <!-- Sidebar (use *ngIf to toggle visibility) -->\n <pt-side-bar-menu\n *ngIf=\"isSidebarVisible\"\n [menuConfig]=\"pageSkeletonConfig.sideMenuBarConfig\"\n class=\"sidebar\"\n ></pt-side-bar-menu>\n\n <!-- Main View Area -->\n <div class=\"content-area\" [ngClass]=\"{ 'full-width': !isSidebarVisible }\">\n <!-- Content Card Wrapper -->\n <pt-card [config]=\"pageSkeletonConfig.contentCardConfig\">\n <!-- Breadcrumb -->\n <pt-bread-crumb\n *ngIf=\"pageSkeletonConfig.breadCrumbConfig\"\n [breadCrumbConfig]=\"pageSkeletonConfig.breadCrumbConfig\"\n class=\"bread-crumb\"\n ></pt-bread-crumb>\n\n <!-- Background Card -->\n\n <router-outlet></router-outlet>\n </pt-card>\n </div>\n </div>\n\n <!-- Footer -->\n <pt-footer\n *ngIf=\"pageSkeletonConfig.footerConfig\"\n [footerConfig]=\"pageSkeletonConfig.footerConfig\"\n class=\"pt-footer\"\n ></pt-footer>\n</pt-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTFooterComponent } from './pt-footer.component';\nimport { PTCardModule } from '../pt-card';\n\n@NgModule({\n declarations: [PTFooterComponent],\n imports: [CommonModule, PTCardModule],\n exports: [PTFooterComponent],\n})\nexport class PTFooterModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTBreadCrumbComponent } from './pt-bread-crumb.component';\nimport { BreadcrumbModule } from 'primeng/breadcrumb';\n\n@NgModule({\n declarations: [PTBreadCrumbComponent],\n imports: [CommonModule, BreadcrumbModule],\n exports: [PTBreadCrumbComponent],\n})\nexport class PTBreadCrumbModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTPageSkeletonComponent } from './pt-page-skeleton.component';\nimport { PTNavbarMenuModule } from '../pt-nav-bar-menu';\nimport { PTCardModule } from '../pt-card';\nimport { PTSideBarMenuModule } from '../pt-side-bar-menu';\nimport { RouterModule } from '@angular/router';\nimport { PTFooterModule } from '../pt-footer';\nimport { PTBreadCrumbModule } from '../pt-bread-crumb';\n\n@NgModule({\n declarations: [PTPageSkeletonComponent],\n imports: [\n CommonModule,\n PTNavbarMenuModule,\n PTCardModule,\n PTSideBarMenuModule,\n RouterModule,\n PTFooterModule,\n PTBreadCrumbModule,\n ],\n exports: [PTPageSkeletonComponent],\n})\nexport class PTPageSkeletonModule {}\n","import {\n Component,\n Input,\n OnInit,\n AfterViewInit,\n Renderer2,\n ElementRef,\n} from '@angular/core';\nimport { ButtonModel } from '../models';\n\n@Component({\n selector: 'pt-button',\n templateUrl: './pt-button.component.html',\n styleUrls: ['./pt-button.component.css'],\n})\nexport class PTButtonComponent implements OnInit, AfterViewInit {\n @Input() buttonConfig: ButtonModel = {\n label: 'Click Me',\n icon: '',\n iconPos: 'left',\n disabled: false,\n styleClass: '',\n loading: false,\n type: 'button',\n width: '100%',\n height: 'auto',\n fontColor: '#000',\n backgroundColor: '#fff',\n borderColor: '#000',\n };\n\n constructor(private renderer: Renderer2, private el: ElementRef) {}\n\n ngOnInit(): void {\n // Initialization logic if needed\n }\n\n ngAfterViewInit(): void {\n this.applyButtonStyles();\n }\n\n getIconPos(): 'left' | 'right' {\n return this.buttonConfig.iconPos === 'right' ? 'right' : 'left';\n }\n\n getType(): string {\n return this.buttonConfig.type || 'button';\n }\n\n applyButtonStyles(): void {\n // Select the native button element inside the p-button\n const buttonElement =\n this.el.nativeElement.querySelector('button.p-element');\n\n if (buttonElement) {\n // Apply dynamic styles using Renderer2\n this.renderer.setStyle(\n buttonElement,\n 'color',\n this.buttonConfig.fontColor\n );\n this.renderer.setStyle(\n buttonElement,\n 'background-color',\n this.buttonConfig.backgroundColor\n );\n this.renderer.setStyle(\n buttonElement,\n 'border-color',\n this.buttonConfig.borderColor\n );\n this.renderer.setStyle(\n buttonElement,\n 'width',\n this.buttonConfig.width || 'auto'\n );\n this.renderer.setStyle(\n buttonElement,\n 'height',\n this.buttonConfig.height || 'auto'\n );\n }\n }\n}\n","<p-button\n [label]=\"buttonConfig.label\"\n [icon]=\"buttonConfig.icon || ''\"\n [iconPos]=\"getIconPos()\"\n [disabled]=\"buttonConfig.disabled\"\n [loading]=\"buttonConfig.loading\"\n [class]=\"buttonConfig.styleClass\"\n [type]=\"getType()\"\n></p-button>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTButtonComponent } from './pt-button.component';\nimport { ButtonModule } from 'primeng/button';\n\n@NgModule({\n declarations: [PTButtonComponent],\n imports: [CommonModule, ButtonModule],\n exports: [PTButtonComponent],\n})\nexport class PTButtonModule {}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n FormBuilder,\n FormGroup,\n Validators,\n FormsModule,\n ReactiveFormsModule,\n} from '@angular/forms';\nimport { LoginModel, LoginPageConfig } from '../../models';\nimport { FormInputTypeEnum } from '../../enums';\nimport { CommonModule } from '@angular/common';\nimport { PTCardModule } from '../../pt-card';\nimport { PTButtonModule } from '../../pt-button';\nimport { PTTextInputModule } from '../../pt-text-input';\n\n@Component({\n selector: 'pt-login-card',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n PTCardModule,\n PTButtonModule,\n PTTextInputModule,\n ],\n templateUrl: './pt-login-card.component.html',\n styleUrls: ['./pt-login-card.component.css'],\n})\nexport class PTLoginCardComponent implements OnInit {\n @Input() loginPageConfig!: LoginPageConfig;\n @Input() loginErrorMessage: string | null = null;\n @Output() loginSubmit: EventEmitter<LoginModel> =\n new EventEmitter<LoginModel>();\n\n formGroup: FormGroup;\n\n constructor(private fb: FormBuilder) {\n this.formGroup = this.fb.group({});\n }\n\n ngOnInit(): void {\n this.initializeDefaults();\n this.setupFormFields();\n\n this.formGroup.patchValue({\n username: this.loginPageConfig?.login?.username || '',\n password: this.loginPageConfig?.login?.password || '',\n });\n // Enable/Disable the button based on form validity\n this.formGroup.statusChanges.subscribe((status) => {\n this.loginPageConfig.buttonConfig!.disabled = status !== 'VALID';\n });\n }\n\n // Initialize default values for all fields in loginPageConfig if not set\n initializeDefaults() {\n // Initialize backgroundImage\n this.loginPageConfig.backgroundImage = {\n imageUrl: this.loginPageConfig.backgroundImage?.imageUrl || '',\n transparencyPercentage:\n this.loginPageConfig.backgroundImage?.transparencyPercentage || '100',\n ...this.loginPageConfig.backgroundImage,\n };\n\n // Initialize title\n this.loginPageConfig.title = {\n text: this.loginPageConfig.title?.text || 'Login',\n position: this.loginPageConfig.title?.position || 'center',\n color: this.loginPageConfig.title?.color || '#333',\n fontSize: this.loginPageConfig.title?.fontSize || '24px',\n ...this.loginPageConfig.title,\n };\n\n // Initialize logoUrl\n this.loginPageConfig.logoUrl = {\n altText: this.loginPageConfig.logoUrl?.altText || 'Logo',\n imageUrl: this.loginPageConfig.logoUrl?.imageUrl || '',\n width: this.loginPageConfig.logoUrl?.width || '100px',\n height: this.loginPageConfig.logoUrl?.height || 'auto',\n ...this.loginPageConfig.logoUrl,\n };\n\n // Initialize footer\n this.loginPageConfig.footer = {\n version: this.loginPageConfig.footer?.version || 'V1.0',\n copyright:\n this.loginPageConfig.footer?.copyright || 'Your Company © 2024',\n ...this.loginPageConfig.footer,\n };\n\n // Initialize login\n this.loginPageConfig.login = {\n username: this.loginPageConfig.login?.username || '',\n password: this.loginPageConfig.login?.password || '',\n errorMessage: this.loginPageConfig.login?.errorMessage || '',\n emptyFieldsErrorMessage:\n this.loginPageConfig.login?.emptyFieldsErrorMessage ||\n \"Veuillez saisir votre nom d'utilisateur et votre mot de passe !\",\n ...this.loginPageConfig.login,\n };\n\n // Initialize cardConfig\n this.loginPageConfig.loginCardConfig = {\n noBorder: this.loginPageConfig.loginCardConfig?.noBorder ?? true,\n width: this.loginPageConfig.loginCardConfig?.width ?? '400px',\n padding: this.loginPageConfig.loginCardConfig?.padding ?? '40px',\n ...this.loginPageConfig.loginCardConfig,\n };\n\n // Initialize usernameField\n this.loginPageConfig.usernameField = {\n name: this.loginPageConfig.usernameField?.name || 'username',\n label: this.loginPageConfig.usernameField?.label || \"Nom d'utilisateur\",\n required: this.loginPageConfig.usernameField?.required ?? true,\n placeholder:\n this.loginPageConfig.usernameField?.placeholder ||\n \"Entrer votre nom d'utilisateur\",\n ...this.loginPageConfig.usernameField,\n };\n\n // Initialize passwordField\n this.loginPageConfig.passwordField = {\n name: this.loginPageConfig.passwordField?.name || 'password',\n label: this.loginPageConfig.passwordField?.label || 'Mot de passe',\n required: this.loginPageConfig.passwordField?.required ?? true,\n placeholder:\n this.loginPageConfig.passwordField?.placeholder ||\n 'Entrer votre mot de passe',\n type:\n this.loginPageConfig.passwordField?.type || FormInputTypeEnum.PASSWORD,\n ...this.loginPageConfig.passwordField,\n };\n\n // Initialize buttonConfig\n this.loginPageConfig.buttonConfig = {\n label: this.loginPageConfig.buttonConfig?.label || 'Login',\n type: this.loginPageConfig.buttonConfig?.type || 'submit',\n icon: this.loginPageConfig.buttonConfig?.icon || 'pi pi-sign-in',\n iconPos: this.loginPageConfig.buttonConfig?.iconPos || 'left',\n styleClass:\n this.loginPageConfig.buttonConfig?.styleClass || 'p-button-success',\n disabled: this.loginPageConfig.buttonConfig?.disabled ?? true,\n width: this.loginPageConfig.buttonConfig?.width ?? '100%',\n ...this.loginPageConfig.buttonConfig,\n };\n }\n\n onSubmit(): void {\n if (this.formGroup.valid) {\n this.loginSubmit.emit(this.formGroup.value);\n } else {\n this.loginPageConfig.login!.errorMessage =\n this.loginPageConfig.login?.emptyFieldsErrorMessage;\n }\n }\n\n // Setup form fields using the usernameField and passwordField from LoginPageConfig\n setupFormFields() {\n const usernameValidators = this.loginPageConfig.usernameField?.required\n ? [Validators.required]\n : [];\n const passwordValidators = this.loginPageConfig.passwordField?.required\n ? [Validators.required]\n : [];\n\n this.formGroup.addControl(\n this.loginPageConfig.usernameField!.name,\n this.fb.control(this.loginPageConfig.login?.username, usernameValidators)\n );\n this.formGroup.addControl(\n this.loginPageConfig.passwordField!.name,\n this.fb.control(this.loginPageConfig.login?.password, passwordValidators)\n );\n }\n}\n","<pt-card [config]=\"loginPageConfig.loginCardConfig!\">\n <!-- Logo -->\n <div class=\"logo-container\" *ngIf=\"loginPageConfig.logoUrl?.imageUrl\">\n <img\n [src]=\"loginPageConfig.logoUrl?.imageUrl\"\n [alt]=\"loginPageConfig.logoUrl?.altText || 'Logo'\"\n [style.width]=\"loginPageConfig.logoUrl?.width || '100px'\"\n [style.height]=\"loginPageConfig.logoUrl?.height || 'auto'\"\n />\n </div>\n\n <!-- Title -->\n <div class=\"title-container\">\n <h1\n [ngStyle]=\"{\n color: loginPageConfig.title?.color || '#333',\n 'font-size': loginPageConfig.title?.fontSize || '24px'\n }\"\n >\n {{ loginPageConfig.title?.text || \"Default Title\" }}\n </h1>\n </div>\n <!-- Error Message -->\n <div *ngIf=\"loginErrorMessage\" class=\"error-message\">\n {{ loginErrorMessage }}\n </div>\n <!-- Form -->\n <form class=\"form-container\" [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\n <div *ngIf=\"loginPageConfig.login?.errorMessage\" class=\"error-message\">\n {{ loginPageConfig.login?.errorMessage }}\n </div>\n\n <div class=\"field\">\n <pt-text-input\n [formGroup]=\"formGroup\"\n [formField]=\"loginPageConfig.usernameField!\"\n ></pt-text-input>\n </div>\n <div class=\"field\">\n <pt-text-input\n [formGroup]=\"formGroup\"\n [formField]=\"loginPageConfig.passwordField!\"\n ></pt-text-input>\n </div>\n\n <div class=\"submit-btn\">\n <pt-button [buttonConfig]=\"loginPageConfig.buttonConfig!\"></pt-button>\n </div>\n </form>\n <div class=\"login-footer\">\n {{ loginPageConfig.footer?.version }}\n <span>{{ loginPageConfig.footer?.copyright }}</span>\n </div>\n</pt-card>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { LoginModel, LoginPageConfig, CardConfig } from '../models';\n\n@Component({\n selector: 'pt-login-page',\n templateUrl: './pt-login-page.component.html',\n styleUrls: ['./pt-login-page.component.css'],\n})\nexport class PTLoginPageComponent implements OnInit {\n @Input() loginPageConfig!: LoginPageConfig;\n @Input() loginErrorMessage: string | null = null;\n @Output() loginSubmit: EventEmitter<LoginModel> =\n new EventEmitter<LoginModel>();\n\n private defaultCardConfig: CardConfig = {\n borderRadius: '0',\n margin: '0',\n width: '100%',\n height: '100%',\n noBorder: true,\n alignContent: 'center',\n alignBodyContent: 'center',\n };\n\n ngOnInit(): void {\n this.applyDefaultConfigs();\n }\n\n private applyDefaultConfigs(): void {\n // Apply defaults to centerCardConfig\n this.loginPageConfig.centerCardConfig = this.applyDefaults(\n this.loginPageConfig.centerCardConfig\n );\n\n // Apply defaults to leftCardConfig\n this.loginPageConfig.leftCardConfig = this.applyDefaults(\n this.loginPageConfig.leftCardConfig\n );\n\n // Apply defaults to rightCardConfig\n this.loginPageConfig.rightCardConfig = this.applyDefaults(\n this.loginPageConfig.rightCardConfig\n );\n }\n\n private applyDefaults(config?: CardConfig): CardConfig {\n return {\n ...this.defaultCardConfig,\n ...(config || {}),\n };\n }\n\n onLoginSubmit(loginModel: LoginModel): void {\n console.log('Login Submitted:', loginModel);\n this.loginSubmit.emit(loginModel);\n }\n}\n","<!-- Center Position -->\n<ng-container>\n <div *ngIf=\"loginPageConfig.position === 'center'\" class=\"center-container\">\n <pt-card\n *ngIf=\"loginPageConfig.centerCardConfig\"\n [config]=\"loginPageConfig.centerCardConfig\"\n >\n <pt-login-card\n [loginErrorMessage]=\"loginErrorMessage\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n </div>\n <!-- Left and Right Positions -->\n <div\n *ngIf=\"\n loginPageConfig.position === 'left' ||\n loginPageConfig.position === 'right'\n \"\n class=\"left-right-container\"\n >\n <!-- Left Card -->\n <pt-card\n *ngIf=\"loginPageConfig.leftCardConfig\"\n [config]=\"loginPageConfig.leftCardConfig\"\n >\n <pt-login-card\n *ngIf=\"loginPageConfig.position === 'left'\"\n [loginErrorMessage]=\"loginErrorMessage\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n\n <!-- Right Card -->\n <pt-card\n *ngIf=\"loginPageConfig.rightCardConfig\"\n [config]=\"loginPageConfig.rightCardConfig\"\n >\n <pt-login-card\n *ngIf=\"loginPageConfig.position === 'right'\"\n [loginErrorMessage]=\"loginErrorMessage\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n </div>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTLoginPageComponent } from './pt-login-page.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PTTextInputModule } from '../pt-text-input/pt-text-input.module';\nimport { PTCardModule } from '../pt-card/pt-card.module';\nimport { PTButtonModule } from '../pt-button';\nimport { PTLoginCardComponent } from './pt-login-card/pt-login-card.component';\n\n@NgModule({\n declarations: [PTLoginPageComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n PTTextInputModule,\n PTCardModule,\n PTButtonModule,\n PTLoginCardComponent,\n ],\n exports: [PTLoginPageComponent],\n})\nexport class PTLoginPageModule {}\n","import {\n Component,\n Input,\n OnInit,\n Output,\n EventEmitter,\n Renderer2,\n ElementRef,\n SimpleChanges,\n OnChanges,\n} from '@angular/core';\nimport {\n ConfirmationService,\n ConfirmEventType,\n MessageService,\n} from 'primeng/api';\nimport { DialogModel } from '../models/dialog.model';\nimport { ButtonModel } from '../models/button.model';\n\n@Component({\n selector: 'pt-dialog',\n templateUrl: './pt-dialog.component.html',\n styleUrls: ['./pt-dialog.component.css'],\n providers: [ConfirmationService, MessageService],\n})\nexport class PTDialogComponent implements OnChanges {\n @Input() dialogModel: DialogModel = {\n header: { text: 'Confirmation' },\n visible: false,\n width: '400px',\n height: 'auto',\n content: 'Do you want to proceed?',\n confirmButtonConfig: {\n label: 'Confirm',\n fontColor: '#fff',\n backgroundColor: '#007bff',\n },\n cancelButtonConfig: {\n label: 'Cancel',\n fontColor: '#fff',\n backgroundColor: '#6c757d',\n },\n };\n\n @Output() confirm: EventEmitter<void> = new EventEmitter();\n @Output() cancel: EventEmitter<void> = new EventEmitter();\n\n constructor(\n private confirmationService: ConfirmationService,\n private messageService: MessageService,\n private renderer: Renderer2,\n private el: ElementRef\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['dialogModel'] && this.dialogModel.visible) {\n this.showDialog();\n }\n }\n\n showDialog(): void {\n this.confirmationService.confirm({\n header: this.dialogModel.header?.text || 'Confirmation',\n message: this.dialogModel.content || 'Are you sure?',\n acceptButtonStyleClass: this.getButtonStyle(\n this.dialogModel.confirmButtonConfig\n ),\n rejectButtonStyleClass: this.getButtonStyle(\n this.dialogModel.cancelButtonConfig\n ),\n acceptIcon: this.dialogModel.confirmButtonConfig?.icon || 'pi pi-check',\n rejectIcon: this.dialogModel.cancelButtonConfig?.icon || 'pi pi-times',\n accept: () => {\n this.confirm.emit();\n this.messageService.add({\n severity: 'info',\n summary: 'Confirmed',\n detail: 'Action confirmed',\n life: 3000,\n });\n },\n reject: (type: ConfirmEventType) => {\n this.cancel.emit();\n if (type === ConfirmEventType.REJECT) {\n this.messageService.add({\n severity: 'error',\n summary: 'Rejected',\n detail: 'Action cancelled',\n life: 3000,\n });\n }\n },\n });\n\n // Use renderer to apply dynamic styles\n setTimeout(() => {\n const dialogElement = this.el.nativeElement.querySelector('.p-dialog');\n if (dialogElement) {\n this.renderer.setStyle(\n dialogElement,\n 'width',\n this.dialogModel.width || '400px'\n );\n this.renderer.setStyle(\n dialogElement,\n 'height',\n this.dialogModel.height || 'auto'\n );\n }\n }, 0);\n }\n\n private getButtonStyle(buttonConfig?: ButtonModel): string {\n return buttonConfig?.styleClass || 'p-button-sm'; // Default to small button style\n }\n}\n","<div>\n <p-toast></p-toast>\n <p-confirmDialog>\n <ng-template pTemplate=\"message\" let-message>\n <div\n class=\"flex flex-column align-items-center w-full gap-3 border-bottom-1 surface-border\"\n >\n <i [class]=\"dialogModel.header?.icon || 'pi pi-exclamation-circle'\"></i>\n <p>{{ message.message }}</p>\n </div>\n </ng-template>\n </p-confirmDialog>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTDialogComponent } from './pt-dialog.component';\nimport { DialogModule } from 'primeng/dialog';\nimport { PTButtonModule } from '../pt-button';\nimport { ToastModule } from 'primeng/toast';\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\n\n@NgModule({\n declarations: [PTDialogComponent],\n imports: [\n CommonModule,\n DialogModule,\n PTButtonModule,\n ToastModule,\n ConfirmDialogModule,\n ],\n exports: [PTDialogComponent],\n})\nexport class PTDialogModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { PTAdvancedPrimeTableModule } from './pt-advanced-prime-table';\nimport { MultiSearchCriteriaModule } from './multi-search-criteria';\nimport { PTFormBuilderModule } from './pt-form-builder';\nimport { PTTextInputModule } from './pt-text-input';\nimport { PTTextAreaInputModule } from './pt-text-area-input';\nimport { PTSwitchInputModule } from './pt-switch-input';\nimport { PTNumberInputModule } from './pt-number-input';\nimport { PTCheckBoxInputModule } from './pt-check-box-input';\nimport { PTDateInputModule } from './pt-date-input';\nimport { PTMetricCardModule } from './pt-metric-card';\nimport { PTMetricCardGroupModule } from './pt-metric-card-group';\nimport { PTChartModule } from './pt-chart';\nimport { PTCardModule } from './pt-card';\nimport { PTMenuModule } from './pt-menu';\nimport { PTNavbarMenuModule } from './pt-nav-bar-menu';\nimport { PTSideBarMenuModule } from './pt-side-bar-menu';\nimport { PTPageSkeletonModule } from './pt-page-skeleton';\nimport { PTFooterModule } from './pt-footer';\nimport { PTBreadCrumbModule } from './pt-bread-crumb';\nimport { PTMenuFancyModule } from './pt-menu-fancy';\nimport { PTLoginPageModule } from './pt-login-page';\nimport { PTButtonModule } from './pt-button';\nimport { PTDialogModule } from './pt-dialog/pt-dialog.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n PTAdvancedPrimeTableModule,\n MultiSearchCriteriaModule,\n\n // Inputs\n PTCheckBoxInputModule,\n PTDateInputModule,\n PTFormBuilderModule,\n PTNumberInputModule,\n PTSwitchInputModule,\n PTTextAreaInputModule,\n PTTextInputModule,\n\n // Dashboard\n PTMetricCardModule,\n PTMetricCardGroupModule,\n\n // Chart\n PTChartModule,\n\n // Cards\n PTCardModule,\n\n // Menu\n PTMenuModule,\n PTMenuFancyModule,\n\n // Navbar\n PTNavbarMenuModule,\n\n // SideBar\n PTSideBarMenuModule,\n\n // Page skeleton\n PTPageSkeletonModule,\n\n // Footer\n PTFooterModule,\n\n // BreadCrumb\n PTBreadCrumbModule,\n\n // Login\n PTLoginPageModule,\n\n // Button\n PTButtonModule,\n\n // Dialog\n PTDialogModule,\n ],\n exports: [\n PTAdvancedPrimeTableModule,\n MultiSearchCriteriaModule,\n\n // Inputs\n PTCheckBoxInputModule,\n PTDateInputModule,\n PTFormBuilderModule,\n PTNumberInputModule,\n PTSwitchInputModule,\n PTTextAreaInputModule,\n PTTextInputModule,\n\n // Dashboard\n PTMetricCardModule,\n PTMetricCardGroupModule,\n\n // Chart\n PTChartModule,\n\n // Cards\n PTCardModule,\n\n // Menu\n PTMenuModule,\n PTMenuFancyModule,\n // Navbar\n PTNavbarMenuModule,\n\n // SideBar\n PTSideBarMenuModule,\n\n // Page skeleton\n PTPageSkeletonModule,\n\n // Footer\n PTFooterModule,\n\n // BreadCrumb\n PTBreadCrumbModule,\n\n // Login\n PTLoginPageModule,\n\n // Button\n PTButtonModule,\n\n // Dialog\n PTDialogModule,\n ],\n})\nexport class NgPrimeToolsModule {}\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport {\n AxisChartConfig,\n AxisChartData,\n ChartConfig,\n TitleStyle,\n} from '../models';\n\n@Component({\n selector: 'pt-line-chart',\n templateUrl: './pt-line-chart.component.html',\n styleUrls: ['./pt-line-chart.component.css'],\n})\nexport class PTLineChartComponent implements OnChanges {\n @Input() chartData!: AxisChartData[];\n @Input() config: AxisChartConfig = {\n yAxisTitle: 'Values',\n xAxisTitle: 'Labels',\n chartIdentifier: 'line-chart',\n chartMenu: [],\n chartWidth: '100%',\n cardConfig: {\n identifier: 'line-chart-card',\n title: 'Line Chart',\n width: '100%',\n menu: {\n menuItems: [],\n },\n },\n };\n\n lineChartConfig: ChartConfig;\n\n constructor() {\n this.lineChartConfig = this.createLineChartConfig();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['chartData'] && this.chartData && this.chartData.length > 0) {\n this.updateChartData();\n }\n }\n\n private createLineChartConfig(): ChartConfig {\n const chartTitle =\n typeof this.config.cardConfig?.title === 'string'\n ? this.config.cardConfig.title\n : (this.config.cardConfig?.title as TitleStyle)?.text || 'Line Chart';\n\n return {\n type: 'line',\n data: {\n labels: [],\n datasets: [\n {\n label: chartTitle,\n data: [],\n borderColor: '#4aa0fa',\n backgroundColor: 'rgba(74, 160, 250, 0.2)',\n borderWidth: 2,\n tension: 0.4,\n fill: true,\n pointRadius: 5,\n pointBackgroundColor: '#4aa0fa',\n },\n ],\n },\n options: {\n responsive: true,\n plugins: {\n legend: {\n display: true,\n position: 'bottom',\n },\n tooltip: {\n callbacks: {\n label: (context: any) =>\n `${context.dataset.label}: ${context.raw.toFixed(2)}`,\n },\n },\n datalabels: {\n display: false,\n },\n },\n scales: {\n y: {\n beginAtZero: true,\n title: {\n display: !!this.config.yAxisTitle,\n text: this.config.yAxisTitle,\n },\n },\n x: {\n title: {\n display: !!this.config.xAxisTitle,\n text: this.config.xAxisTitle,\n },\n },\n },\n },\n };\n }\n\n private updateChartData(): void {\n const labels = this.chartData.map((item) => item.label);\n const data = this.chartData.map((item) => item.value);\n\n this.lineChartConfig.data.labels = labels;\n this.lineChartConfig.data.datasets[0].data = data;\n\n // Trigger chart update\n (this.lineChartConfig as any)._chart?.update();\n }\n}\n","<pt-card [config]=\"config.cardConfig!\">\n <pt-chart [chartConfig]=\"lineChartConfig\"></pt-chart>\n</pt-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PTCardModule } from '../pt-card';\nimport { PTChartModule } from '../pt-chart';\nimport { PTLineChartComponent } from './pt-line-chart.component';\n\n@NgModule({\n declarations: [PTLineChartComponent],\n imports: [CommonModule, PTCardModule, PTChartModule],\n exports: [PTLineChartComponent],\n})\nexport class PTLineChartModule {}\n","// Advanced table\nexport * from './table-column.model';\n\n// Multi search criteria\nexport * from './search-criteria.model';\nexport * from './filter-option.model';\n\n// Form inputs and btns\nexport * from './form-button.model';\nexport * from './form-field.model';\nexport * from './form-field-group.model';\nexport * from './form-check-field.model';\nexport * from './form-date-field.model';\nexport * from './form-drop-down-field.model';\nexport * from './form-multi-select.model';\nexport * from './form-number-field.model';\nexport * from './form-switch-field.model';\nexport * from './form-text-area-field.model';\nexport * from './form-text-field.model';\n\n// Metric data for dashboard\nexport * from './metric-card-data.model';\n\n// Chart\nexport * from './chart-config.model';\nexport * from './axis-chart-config.model';\nexport * from './axis-chart-data.model';\n\n// Card\nexport * from './card-config.model';\n\n// Menu\nexport * from './menu.model';\nexport * from './menu-item.model';\nexport * from './menu-config.model';\nexport * from './nav-bar-menu-config.model';\nexport * from './side-menu-bar-config.model';\n\n// Page Skeleton\nexport * from './page-skeleton-config.model';\n\n// Footer\nexport * from './footer-config.model';\n\n// Bread Crumb\nexport * from './bread-crumb-config.model';\n\n// login\nexport * from './login-page-config.model';\nexport * from './login-model';\n\n// Button\nexport * from './button.model';\n\n// Dialog\nexport * from './dialog.model';\n\n// Generic\nexport * from './icon-style.model';\nexport * from './title-style.model';\nexport * from './text-style.model';\nexport * from './image-style.model';\nexport * from './badge.model';\nexport * from './pattern.model';\nexport * from './footer.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i5","i7","i12.CustomCurrencyPipe","i13.CustomDatePipe","i2","i4","i6","i8","i9","i1.PTDateService","i3.PTCheckBoxInputComponent","i4.PTDateInputComponent","i5.PTNumberInputComponent","i6.PTSwitchInputComponent","i7.PTTextAreaInputComponent","i8.PTTextInputComponent","i9.PTDropdownComponent","i10.PTMultiSelectComponent","i1","i4.PTDynamicFormFieldComponent","i2.PTMetricCardComponent","i2.PTMenuComponent","i2.PTCardComponent","i3.PTMenuFancyComponent","i3.PTCardComponent","i4.PTTextInputComponent","i1.PTCardComponent","i1.PTBreadCrumbService","i2.PTNavbarMenuComponent","i4.PTSideBarMenuComponent","i6.PTFooterComponent","i7.PTBreadCrumbComponent","i5.PTTextInputComponent","i3.PTLoginCardComponent","i2.PTChartComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;;;;;;AAOG;SACa,kBAAkB,CAChC,GAAgB,EAChB,OAAe,YAAY,EAAA;;IAG3B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAExC,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,GAAG,CAAC;KACZ;;AAGD,IAAA,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;;AAG5D,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;;IAGzD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;AACrC;;MCxBa,kBAAkB,CAAA;IAC7B,SAAS,CACP,KAAa,EACb,QAAiB,EACjB,aAAsB,EACtB,iBAAuC,GAAA,OAAO,EAC9C,gBAAA,GAAoC,KAAK,EAAA;AAEzC,QAAA,IAAI,cAAsB,CAAC;AAE3B,QAAA,IAAI,aAAa,KAAK,SAAS,EAAE;AAC/B,YAAA,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SAC/C;aAAM;AACL,YAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;SACnC;AAED,QAAA,MAAM,qBAAqB,GAAG,iBAAiB,KAAK,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC;AACxE,QAAA,MAAM,oBAAoB,GAAG,gBAAgB,KAAK,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC;QAEtE,cAAc,GAAG,cAAc,CAAC,OAAO,CACrC,uBAAuB,EACvB,qBAAqB,CACtB,CAAC;AAEF,QAAA,IAAI,oBAAoB,KAAK,GAAG,EAAE;YAChC,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACnD;QAED,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,iBAAyB,CAAC;YAE9B,QAAQ,QAAQ;AACd,gBAAA,KAAK,KAAK;AACR,oBAAA,iBAAiB,GAAG,CAAA,EAAG,cAAc,CAAA,GAAA,CAAK,CAAC;oBAC3C,MAAM;AACR,gBAAA,KAAK,KAAK;AACR,oBAAA,iBAAiB,GAAG,CAAA,CAAA,EAAI,cAAc,CAAA,CAAE,CAAC;oBACzC,MAAM;AACR,gBAAA;AACE,oBAAA,iBAAiB,GAAG,CAAG,EAAA,cAAc,CAAI,CAAA,EAAA,QAAQ,EAAE,CAAC;aACvD;AAED,YAAA,OAAO,iBAAiB,CAAC;SAC1B;AAED,QAAA,OAAO,cAAc,CAAC;KACvB;+GA9CU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,CAAA,EAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;MCAY,cAAc,CAAA;AACzB,IAAA,SAAS,CAAC,KAAU,EAAE,MAAA,GAAiB,YAAY,EAAA;AACjD,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI,CAAC;AAExB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnC,gBAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;gBACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAExC,gBAAA,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAAE,oBAAA,OAAO,IAAI,CAAC;AAEvC,gBAAA,MAAM,OAAO,GAA+B;AAC1C,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,GAAG,EAAE,SAAS;iBACf,CAAC;AACF,gBAAA,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAC/D;SACF;AAAM,aAAA,IAAI,KAAK,YAAY,IAAI,EAAE;;AAEhC,YAAA,MAAM,OAAO,GAA+B;AAC1C,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,GAAG,EAAE,SAAS;aACf,CAAC;AACF,YAAA,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAChE;AAED,QAAA,OAAO,IAAI,CAAC;KACb;+GAhCU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAd,cAAc,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA,EAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,YAAY;AACnB,iBAAA,CAAA;;;MCYY,6BAA6B,CAAA;AAgDxC,IAAA,WAAA,GAAA;;QA9CS,IAAI,CAAA,IAAA,GAAU,EAAE,CAAC;QACjB,IAAO,CAAA,OAAA,GAAkB,EAAE,CAAC;QAC5B,IAAY,CAAA,YAAA,GAAW,CAAC,CAAC;QACzB,IAAW,CAAA,WAAA,GAAa,EAAE,CAAC;QAC3B,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;QACjC,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;QAChC,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;QAC9B,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;QACjC,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAO,CAAA,OAAA,GAAU,EAAE,CAAC;QACpB,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAC5B,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;QACzB,IAAS,CAAA,SAAA,GAAkB,IAAI,CAAC;;AAG/B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAC5B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAO,CAAC;AACjC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAQ,CAAC;AAC5C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAQ,CAAC;QAI7C,IAAa,CAAA,aAAA,GAAG,aAAa,CAAC;QACrC,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;QAEjB,IAAkB,CAAA,kBAAA,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACnD,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;;QAGf,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QAC1B,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;QACxB,IAAI,CAAA,IAAA,GAAW,CAAC,CAAC;;AAGjB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;AACpB,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AAChB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAiB,CAAC;QACzC,IAAY,CAAA,YAAA,GAAU,EAAE,CAAC;QACzB,IAAkB,CAAA,kBAAA,GAAa,EAAE,CAAC;;AAGlC,QAAA,IAAA,CAAA,MAAM,GAAyB,MAAK,GAAG,CAAC;AACxC,QAAA,IAAA,CAAA,eAAe,GAAwB,MAAK,GAAG,CAAC;AAChD,QAAA,IAAA,CAAA,eAAe,GAAwB,MAAK,GAAG,CAAC;AAChD,QAAA,IAAA,CAAA,iBAAiB,GAAwB,MAAK,GAAG,CAAC;QAClD,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;KACnB;IAEhB,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CACxC,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CACjD,CAAC;;AAEF,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO;AACnC,aAAA,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAC;aACjE,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAc,CAAC,CAAC;QACpC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;;QAGzB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,EAAE;AACrC,gBAAA,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;AACvB,gBAAA,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;AACrB,gBAAA,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;aACxB;AAED,YAAA,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE;AAChC,gBAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;aACvB;AAED,YAAA,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE;AAChC,gBAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;aACvB;AAED,YAAA,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;gBACpD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACxC;AAED,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;gBACd,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;aAC5C;AACH,SAAC,CAAC,CAAC;KACJ;;AAGO,IAAA,oBAAoB,CAAC,GAAgB,EAAA;QAC3C,MAAM,eAAe,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,eAAe,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACzD,OAAO,CAAA,EAAG,UAAU,CAAA,EAAA,CAAI,CAAC;KAC1B;AAED,IAAA,cAAc,CAAC,GAAgB,EAAA;;AAE7B,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;;AAGzE,QAAA,MAAM,WAAW,GAAG,cAAc,GAAG,EAAE,CAAC;;QAGxC,OAAO,CAAA,EAAG,WAAW,CAAA,EAAA,CAAI,CAAC;KAC3B;;IAGO,mBAAmB,GAAA;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AAC5B,YAAA,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC9B,gBAAA,IACE,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI;oBAClC,MAAM,CAAC,IAAI,KAAK,SAAS;oBACzB,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,EAC1C;AACA,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,oBAAA,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;iBAC7D;AACH,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,eAAe,CAAC;AACzB,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,KAAK,CAAC,KAAY,EAAA;QAChB,KAAK,CAAC,KAAK,EAAE,CAAC;AACd,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;KACvB;AAEO,IAAA,SAAS,CAAC,UAAkB,EAAA;QAClC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;;YAEtB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnC,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACxC,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;SAC5C;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;;AAEpB,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtD,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;aACjC;YACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SACjC;KACF;IAEO,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC9B,gBAAA,QAAQ,MAAM,CAAC,IAAI;AACjB,oBAAA,KAAK,QAAQ;AACX,wBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,wBAAA,IAAI,CAAC,MAAM,GAAG,CAAC,KAAU,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBACnD,MAAM;AACR,oBAAA,KAAK,MAAM;AACT,wBAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;wBACnC,MAAM;AACR,oBAAA;AACE,wBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,wBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;iBACvB;AACH,aAAC,CAAC,CAAC;SACJ;KACF;AAEO,IAAA,qBAAqB,CAAC,MAAW,EAAA;AACvC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAS,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAS,KAAI;AACnC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACvB,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAS,KAAK,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC3D;AAED,IAAA,QAAQ,CAAC,KAAY,EAAE,EAAU,EAAE,GAAQ,EAAA;AACzC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;QAChD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;KAC3C;AAED,IAAA,aAAa,CAAC,EAAU,EAAE,GAAQ,EAAE,KAAU,EAAA;AAC5C,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YACrB,IAAI,MAAM,EAAE,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE;gBACvC,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;aAC7B;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aAC9B;AACD,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;SACzC;aAAM;YACL,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,MAAM,EAAE,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE;gBACvC,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjC,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;aACxB;iBAAM;AACL,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACzB;SACF;KACF;AAED,IAAA,mBAAmB,CAAC,MAAmB,EAAA;AACrC,QAAA,QAAQ,MAAM,CAAC,IAAI;YACjB,KAAK,aAAa,CAAC,MAAM;AACvB,gBAAA,OAAO,MAAM,CAAC;YAChB,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,MAAM;AACvB,gBAAA,OAAO,SAAS,CAAC;YACnB,KAAK,aAAa,CAAC,IAAI;AACrB,gBAAA,OAAO,MAAM,CAAC;YAChB,KAAK,aAAa,CAAC,WAAW;AAC5B,gBAAA,OAAO,aAAa,CAAC;YACvB,KAAK,aAAa,CAAC,OAAO;AACxB,gBAAA,OAAO,SAAS,CAAC;AACnB,YAAA;AACE,gBAAA,OAAO,MAAM,CAAC;SACjB;KACF;;AAGD,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AAC5D,QAAA,OAAO,MAAM,EAAE,UAAU,KAAK,KAAK,CAAC;KACrC;AAED,IAAA,aAAa,CAAC,GAAQ,EAAA;AACpB,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AAC5D,QAAA,IACE,MAAM,EAAE,IAAI,KAAK,aAAa,CAAC,WAAW;AAC1C,YAAA,MAAM,CAAC,OAAO;AACd,YAAA,MAAM,CAAC,IAAI,KAAK,SAAS,EACzB;AACA,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,CAAC;AAC3B,gBAAA,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7C,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACtD,YAAA,OAAO,IAAI,CAAC;SACb;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,YAAY,CAAC,GAAQ,EAAA;AACnB,QAAA,QACE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,IAAI;YACpD,aAAa,CAAC,IAAI,EAClB;KACH;;AAGD,IAAA,aAAa,CAAC,KAAU,EAAA;QACtB,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;KACpD;AAED,IAAA,iBAAiB,CAAC,MAAmB,EAAA;AACnC,QAAA,OAAO,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM;AACzC,YAAA,MAAM,CAAC,QAAQ;AACf,YAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC;cACvC,MAAM,CAAC,QAAQ;cACf,SAAS,CAAC;KACf;AAEO,IAAA,mBAAmB,CAAC,YAAoB,EAAA;QAC9C,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;KACvD;AAED,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;;QAGzC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;YAC7C,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;AAC5C,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;gBAC9D,IAAI,CAAC,MAAM,EAAE;AACX,oBAAA,OAAO,KAAK,CAAC;iBACd;;gBAGD,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE;oBACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC9C,OAAO,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBAC7C;AAAM,qBAAA,IACL,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM;AACpC,oBAAA,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,EACpC;oBACA,QACE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EACnE;iBACH;qBAAM;oBACL,QACE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EACnE;iBACH;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;;AAGH,QAAA,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,YAAY,CAAC;KAC9B;AAEO,IAAA,UAAU,CAAC,IAAS,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE,CAAC;AACrB,QAAA,IAAI,IAAI,YAAY,IAAI,EAAE;;AAExB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC;AAC3C,YAAA,OAAO,GAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAI,CAAA,EAAA,IAAI,EAAE,CAAC;SAClC;AAAM,aAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;;YAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9B,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACtB,gBAAA,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9C;iBAAM;;AAEL,gBAAA,OAAO,IAAI,CAAC;aACb;SACF;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;KAC9B;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC5B;AAED,IAAA,aAAa,CAAC,KAA0C,EAAA;QAGtD,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,UAAU,GAA8B;AAC5C,gBAAA,KAAK,EAAG,KAAoB,CAAC,KAAK,IAAI,MAAM;AAC5C,gBAAA,MAAM,EAAG,KAAoB,CAAC,MAAM,IAAI,MAAM;aAC/C,CAAC;;AAGF,YAAA,IAAK,KAAoB,CAAC,MAAM,EAAE;AAChC,gBAAA,UAAU,CAAC,MAAM,GAAI,KAAoB,CAAC,MAAO,CAAC;aACnD;AAED,YAAA,IAAK,KAAoB,CAAC,UAAU,EAAE;AACpC,gBAAA,UAAU,CAAC,UAAU,GAAI,KAAoB,CAAC,UAAW,CAAC;aAC3D;AAED,YAAA,IAAK,KAAoB,CAAC,WAAW,EAAE;AACrC,gBAAA,UAAU,CAAC,WAAW,GAAI,KAAoB,CAAC,WAAY,CAAC;aAC7D;AAED,YAAA,IAAK,KAAoB,CAAC,SAAS,EAAE;AACnC,gBAAA,UAAU,CAAC,SAAS,GAAI,KAAoB,CAAC,SAAU,CAAC;aACzD;AAED,YAAA,IAAK,KAAoB,CAAC,YAAY,EAAE;AACtC,gBAAA,UAAU,CAAC,YAAY,GAAI,KAAoB,CAAC,YAAa,CAAC;aAC/D;AAED,YAAA,OAAO,UAAU,CAAC;SACnB;AAED,QAAA,OAAO,EAAE,CAAC;KACX;AAED,IAAA,aAAa,CAAC,KAA0C,EAAA;QAGtD,IAAI,KAAK,EAAE;YACT,OAAO;AACL,gBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS;AAC/B,gBAAA,QAAQ,EAAG,KAAoB,CAAC,QAAQ,IAAI,SAAS;AACrD,gBAAA,SAAS,EAAG,KAAoB,CAAC,QAAQ,IAAI,MAAM;aACpD,CAAC;SACH;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAED,YAAY,CACV,KAAa,EACb,aAAsB,EACtB,iBAAuC,GAAA,OAAO,EAC9C,gBAAA,GAAoC,KAAK,EAAA;QAEzC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;;AAGrE,QAAA,IAAI,eAAe,GACjB,aAAa,KAAK,SAAS;AACzB,cAAE,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;AAC9B,cAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;;AAGvB,QAAA,IAAI,gBAAgB,KAAK,OAAO,EAAE;YAChC,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACrD;;QAGD,IAAI,iBAAiB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;AAChD,YAAA,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CACjC,gBAAgB,KAAK,OAAO,GAAG,GAAG,GAAG,GAAG,CACzC,CAAC;YACF,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CACzB,uBAAuB,EACvB,iBAAiB,KAAK,OAAO,GAAG,GAAG,GAAG,GAAG,CAC1C,CAAC;AACF,YAAA,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;SACxE;AAED,QAAA,OAAO,eAAe,CAAC;KACxB;+GAjaU,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,wnBChB1C,6qoBA2gBA,EAAA,MAAA,EAAA,CAAA,gtFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,eAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD3fa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,6qoBAAA,EAAA,MAAA,EAAA,CAAA,gtFAAA,CAAA,EAAA,CAAA;wDAM1B,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAGI,MAAM,EAAA,CAAA;sBAAf,MAAM;gBACG,MAAM,EAAA,CAAA;sBAAf,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBACG,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAE6B,EAAE,EAAA,CAAA;sBAArC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;MEJvB,0BAA0B,CAAA;+GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;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,EAjBtB,YAAA,EAAA,CAAA,6BAA6B,EAAE,cAAc,aAE1D,YAAY;YACZ,WAAW;YACX,eAAe;YACf,YAAY;YACZ,cAAc;YACd,WAAW;YACX,iBAAiB;YACjB,SAAS;YACT,kBAAkB;YAClB,eAAe;YACf,eAAe;AACf,YAAA,qBAAqB,aAEb,6BAA6B,CAAA,EAAA,CAAA,CAAA,EAAA;AAE5B,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,YAfnC,YAAY;YACZ,WAAW;YACX,eAAe;YACf,YAAY;YACZ,cAAc;YACd,WAAW;YACX,iBAAiB;YACjB,SAAS;YAET,eAAe;YACf,eAAe;YACf,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIZ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAlBtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,6BAA6B,EAAE,cAAc,CAAC;AAC7D,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,eAAe;wBACf,YAAY;wBACZ,cAAc;wBACd,WAAW;wBACX,iBAAiB;wBACjB,SAAS;wBACT,kBAAkB;wBAClB,eAAe;wBACf,eAAe;wBACf,qBAAqB;AACtB,qBAAA;oBACD,OAAO,EAAE,CAAC,6BAA6B,CAAC;AACzC,iBAAA,CAAA;;;ICjCW,cAWX;AAXD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EAXW,aAAa,KAAb,aAAa,GAWxB,EAAA,CAAA,CAAA;;ICXW,uBAOX;AAPD,CAAA,UAAY,sBAAsB,EAAA;AAChC,IAAA,sBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,sBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,sBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,sBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,sBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,sBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC7B,CAAC,EAPW,sBAAsB,KAAtB,sBAAsB,GAOjC,EAAA,CAAA,CAAA;;ICPW,kBAYX;AAZD,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACvB,CAAC,EAZW,iBAAiB,KAAjB,iBAAiB,GAY5B,EAAA,CAAA,CAAA;;ICZW,gBAOX;AAPD,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,kBAA4B,CAAA;AAC5B,IAAA,eAAA,CAAA,WAAA,CAAA,GAAA,oBAAgC,CAAA;AAChC,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,kBAA4B,CAAA;AAC5B,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,eAAsB,CAAA;AACtB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,kBAA4B,CAAA;AAC5B,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,iBAA0B,CAAA;AAC5B,CAAC,EAPW,eAAe,KAAf,eAAe,GAO1B,EAAA,CAAA,CAAA;;ICPW,oBAKX;AALD,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,mBAAA,CAAA,cAAA,CAAA,GAAA,UAAyB,CAAA;AACzB,IAAA,mBAAA,CAAA,qBAAA,CAAA,GAAA,iBAAuC,CAAA;AACvC,IAAA,mBAAA,CAAA,cAAA,CAAA,GAAA,WAA0B,CAAA;AAC5B,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,GAK9B,EAAA,CAAA,CAAA;;ICLW,UAIX;AAJD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EAJW,SAAS,KAAT,SAAS,GAIpB,EAAA,CAAA,CAAA,CAAA;AAEY,MAAA,eAAe,GAAG;AAC7B,IAAA,CAAC,SAAS,CAAC,IAAI,GAAG;AAChB,QAAA,KAAK,EAAE,OAAO;QACd,eAAe,EAAE,SAAS;AAC3B,KAAA;AACD,IAAA,CAAC,SAAS,CAAC,MAAM,GAAG;AAClB,QAAA,KAAK,EAAE,OAAO;QACd,eAAe,EAAE,SAAS;AAC3B,KAAA;AACD,IAAA,CAAC,SAAS,CAAC,OAAO,GAAG;AACnB,QAAA,KAAK,EAAE,OAAO;QACd,eAAe,EAAE,SAAS;AAC3B,KAAA;;;AClBH;;MCUa,4BAA4B,CAAA;AALzC,IAAA,WAAA,GAAA;QAME,IAAsB,CAAA,sBAAA,GAAG,sBAAsB,CAAC;QAEvC,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAQ,CAAA,QAAA,GAAqB,EAAE,CAAC;QAChC,IAAY,CAAA,YAAA,GAAW,CAAC,CAAC;QACzB,IAAI,CAAA,IAAA,GAAU,EAAE,CAAC;AACjB,QAAA,IAAA,CAAA,IAAI,GAAyB,QAAQ,CAAC;AACrC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAS,CAAC;AACzC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAA0B,CAAC;QAEtE,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAQ,CAAA,QAAA,GAAmB,EAAE,CAAC;AAmI/B,KAAA;IAjIC,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC7B,YAAA,IACE,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAAC,WAAW;gBAChD,IAAI,CAAC,aAAa,EAClB;gBACA,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;aAC5B;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,iBAAiB,CAAC,KAAqB,EAAA;AACrC,QAAA,OAAO,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC;KAChC;AAED,IAAA,oBAAoB,CAAC,KAAqB,EAAA;AACxC,QAAA,OAAO,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;KACrC;AAED,IAAA,oBAAoB,CAAC,KAAqB,EAAA;AACxC,QAAA,OAAO,KAAK,CAAC,iBAAiB,IAAI,SAAS,CAAC;KAC7C;AAED,IAAA,YAAY,CAAC,KAAqB,EAAA;QAChC,OAAO,KAAK,CAAC,iBAAiB;AAC5B,cAAE,UAAU,CAAC,CAAA,EAAA,EAAK,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,EAAE,CAAC;cAC3D,YAAY,CAAC;KAClB;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;YAC3B,MAAM,cAAc,GAA2B,EAAE,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AAClC,gBAAA,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,EAAE;oBAC7D,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;iBAClD;AACH,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC1C;aAAM;YACL,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;gBACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,KAAI;oBACvC,IAAI,SAAS,CAAC,IAAI,KAAK,sBAAsB,CAAC,SAAS,EAAE;wBACvD,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,KAAK,IAAI;4BAC9C,SAAS;4BACT,SAAS;yBACV,CAAC;AACF,wBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CACrC,CAAC;AACF,wBAAA,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE;AAC1B,4BAAA,OAAO,IAAI,CAAC;yBACb;AACD,wBAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrB,4BAAA,OAAO,KAAK,CAAC;yBACd;wBACD,MAAM,eAAe,GAAG,SAAS;AAC/B,8BAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;8BACzB,IAAI,CAAC;AACT,wBAAA,MAAM,aAAa,GAAG,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;wBAC/D,QACE,CAAC,CAAC,eAAe,IAAI,QAAQ,IAAI,eAAe;6BAC/C,CAAC,aAAa,IAAI,QAAQ,IAAI,aAAa,CAAC,EAC7C;qBACH;AAAM,yBAAA,IACL,SAAS,CAAC,IAAI,KAAK,sBAAsB,CAAC,MAAM;AAChD,wBAAA,SAAS,CAAC,IAAI,KAAK,sBAAsB,CAAC,MAAM,EAChD;AACA,wBAAA,QACE,CAAC,SAAS,CAAC,KAAK;AAChB,4BAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EACxD;qBACH;yBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,sBAAsB,CAAC,WAAW,EAAE;AAChE,wBAAA,QACE,CAAC,SAAS,CAAC,KAAK;4BAChB,SAAS,CAAC,KAAK,CAAC,IAAI,CAClB,CAAC,MAAoB,KAAK,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAChE,EACD;qBACH;yBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,sBAAsB,CAAC,MAAM,EAAE;AAC3D,wBAAA,QACE,CAAC,SAAS,CAAC,KAAK;AAChB,4BAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACjB,iCAAA,QAAQ,EAAE;AACV,iCAAA,WAAW,EAAE;AACb,iCAAA,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,EACrD;qBACH;AACD,oBAAA,OAAO,IAAI,CAAC;AACd,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAClC;KACF;IAED,KAAK,GAAA;QACH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC9B,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACnC;IAED,iBAAiB,CAAC,KAAU,EAAE,SAAyB,EAAA;AACrD,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,SAAS,CAAC,aAAa,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC;KAC7E;AAEO,IAAA,SAAS,CAAC,UAA4C,EAAA;QAC5D,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,OAAO,IAAI,CAAC;SACb;AAED,QAAA,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,eAAe,EAAE;AAClE,YAAA,OAAO,UAAkB,CAAC;SAC3B;QAED,MAAM,KAAK,GAAI,UAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChD,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnC,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACxC,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;SAC5C;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AACD,IAAA,mBAAmB,CAAC,KAAqB,EAAA;AACvC,QAAA,OAAO,KAAK,CAAC,gBAAgB,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;KAC/D;+GA9IU,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,sPCVzC,62GAwGA,EAAA,MAAA,EAAA,CAAA,umCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,KAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,SAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD9Fa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,62GAAA,EAAA,MAAA,EAAA,CAAA,umCAAA,CAAA,EAAA,CAAA;8BAOxB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACI,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,cAAc,EAAA,CAAA;sBAAvB,MAAM;;;MEMI,yBAAyB,CAAA;+GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAzB,yBAAyB,EAAA,YAAA,EAAA,CAbrB,4BAA4B,CAAA,EAAA,OAAA,EAAA,CAEzC,YAAY;YACZ,cAAc;YACd,eAAe;YACf,iBAAiB;YACjB,YAAY;YACZ,WAAW;YACX,iBAAiB;AACjB,YAAA,WAAW,aAEH,4BAA4B,CAAA,EAAA,CAAA,CAAA,EAAA;AAE3B,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,yBAAyB,YAXlC,YAAY;YACZ,cAAc;YACd,eAAe;YACf,iBAAiB;YACjB,YAAY;YACZ,WAAW;YACX,iBAAiB;YACjB,WAAW,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIF,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAdrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,4BAA4B,CAAC;AAC5C,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,cAAc;wBACd,eAAe;wBACf,iBAAiB;wBACjB,YAAY;wBACZ,WAAW;wBACX,iBAAiB;wBACjB,WAAW;AACZ,qBAAA;oBACD,OAAO,EAAE,CAAC,4BAA4B,CAAC;AACxC,iBAAA,CAAA;;;MCVY,wBAAwB,CAAA;IAInC,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;AACV,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QACrE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACzD;QAED,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;gBAC3B,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aACvC;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aACtC;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,QAAA,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAClC,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;KACtD;IAEO,aAAa,GAAA;QACnB,MAAM,UAAU,GAAkB,EAAE,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC3B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;SAChD;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;IAEO,sBAAsB,GAAA;QAC5B,OAAO,CAAC,OAAwB,KAAmC;YACjE,OAAO,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;AAC1D,kBAAE,IAAI;AACN,kBAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AAC/B,SAAC,CAAC;KACH;IAED,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;AAC1D,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC;SAC1E;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GAlDU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,sHCdrC,2nBAwBA,EAAA,MAAA,EAAA,CAAA,iNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDVa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,2nBAAA,EAAA,MAAA,EAAA,CAAA,iNAAA,CAAA,EAAA,CAAA;8BAKrB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;AEhBR;AAKM,SAAU,oBAAoB,CAClC,aAA4B,EAAA;IAE5B,QAAQ,aAAa;AACnB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,OAAO,CAAC;AACjB,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,UAAU,CAAC;AACpB,QAAA,KAAK,MAAM,CAAC;AACZ,QAAA;AACE,YAAA,OAAO,UAAU,CAAC;KACrB;AACH,CAAC;AAEK,SAAU,qBAAqB,CAAC,aAA4B,EAAA;IAChE,QAAQ,aAAa;AACnB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,aAAa,CAAC;AACvB,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,sBAAsB,CAAC;AAChC,QAAA,KAAK,MAAM,CAAC;AACZ,QAAA;AACE,YAAA,OAAO,aAAa,CAAC;KACxB;AACH,CAAC;AAEe,SAAA,SAAS,CAAC,UAAkB,EAAE,MAAsB,EAAA;IAClE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACvC,IAAA,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;AAC5B,QAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,CAAA,CAAE,CAAC,CAAC;IAExD,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3C,QAAQ,MAAM;AACZ,QAAA,KAAK,UAAU,CAAC;AAChB,QAAA,KAAK,UAAU,CAAC;AAChB,QAAA,KAAK,UAAU;YACb,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;YAC3B,MAAM;AACR,QAAA,KAAK,UAAU;YACb,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;YAC3B,MAAM;AACR,QAAA,KAAK,UAAU;YACb,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;YAC3B,MAAM;AACR,QAAA,KAAK,OAAO;AACV,YAAA,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;AACvB,YAAA,OAAO,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,QAAA,KAAK,UAAU;YACb,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;YAC/B,OAAO,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACzE,QAAA;AACE,YAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,CAAA,CAAE,CAAC,CAAC;KACzD;AAED,IAAA,IAAI,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,CAAA,EAAA,EAAK,IAAI,CAAE,CAAA,GAAG,IAAI,CAAC;AAC9C,IAAA,OAAO,IAAI,IAAI,CACb,MAAM,CAAC,IAAI,CAAC,EACZ,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EACjB,MAAM,CAAC,GAAG,CAAC,EACX,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EACjB,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,EACnB,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CACpB,CAAC;AACJ,CAAC;AAEK,SAAU,iBAAiB,CAC/B,KAAa,EACb,UAA0B,EAC1B,SAAkC,EAClC,UAAuB,EAAA;AAEvB,IAAA,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,GAAG,OAAO,CAAC;IACpE,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEtC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,MAAM,UAAU,KAAK,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;QAC1E,MAAM,IAAI,KAAK,CACb,CAAW,QAAA,EAAA,SAAS,CAAK,EAAA,EAAA,KAAK,CAAsB,mBAAA,EAAA,UAAU,CAAI,EAAA,CAAA,CACnE,CAAC;KACH;AAED,IAAA,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACrD,IAAA,MAAM,OAAO,GAAG,UAAU,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;IAC9C,IACE,IAAI,GAAG,CAAC;AACR,QAAA,IAAI,GAAG,OAAO;AACd,QAAA,MAAM,GAAG,CAAC;AACV,QAAA,MAAM,GAAG,EAAE;AACX,SAAC,MAAM,KAAK,SAAS,KAAK,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,EACrD;QACA,MAAM,IAAI,KAAK,CACb,CAAW,QAAA,EAAA,SAAS,CAAK,EAAA,EAAA,KAAK,CAAqC,kCAAA,EAAA,OAAO,CAAM,IAAA,CAAA,CACjF,CAAC;KACH;AACH;;AClGA;MASa,aAAa,CAAA;AACxB,IAAA,WAAA,GAAA,GAAgB;;IAGhB,uBAAuB,CACrB,aAA4B,EAC5B,aAA8B,EAAA;AAE9B,QAAA,OAAO,aAAa,IAAI,oBAAoB,CAAC,aAAa,CAAC,CAAC;KAC7D;;IAGD,yBAAyB,CACvB,UAA0B,EAC1B,aAA4B,EAC5B,QAAiB,EACjB,QAAiB,EACjB,UAAA,GAA0B,IAAI,EAAA;AAE9B,QAAA,MAAM,eAAe,GAAqB;YACxC,UAAU;YACV,UAAU;YACV,UAAU;YACV,UAAU;YACV,UAAU;SACX,CAAC;AAEF,QAAA,MAAM,eAAe,GAAqB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEhE,MAAM,eAAe,GAAqB,eAAe,CAAC;QAE1D,QAAQ,aAAa;AACnB,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACzC,oBAAA,MAAM,IAAI,KAAK,CACb,uBAAuB,UAAU,CAAA,2BAAA,CAA6B,CAC/D,CAAC;iBACH;gBACD,MAAM;AACR,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACzC,oBAAA,MAAM,IAAI,KAAK,CACb,uBAAuB,UAAU,CAAA,2BAAA,CAA6B,CAC/D,CAAC;iBACH;gBACD,IAAI,QAAQ,EAAE;oBACZ,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;iBACjE;gBACD,IAAI,QAAQ,EAAE;oBACZ,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;iBACjE;gBACD,MAAM;AACR,YAAA,KAAK,UAAU;gBACb,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACzC,oBAAA,MAAM,IAAI,KAAK,CACb,uBAAuB,UAAU,CAAA,+BAAA,CAAiC,CACnE,CAAC;iBACH;gBACD,MAAM;AACR,YAAA,KAAK,OAAO;gBACV,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACzC,oBAAA,MAAM,IAAI,KAAK,CACb,uBAAuB,UAAU,CAAA,4BAAA,CAA8B,CAChE,CAAC;iBACH;gBACD,MAAM;AACR,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,aAAa,CAAA,CAAE,CAAC,CAAC;SAClE;KACF;+GArEU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAb,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,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCKY,oBAAoB,CAAA;AAS/B,IAAA,WAAA,CAAoB,WAA0B,EAAA;QAA1B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAe;QAL9C,IAAO,CAAA,OAAA,GAAgB,IAAI,CAAC;QAC5B,IAAO,CAAA,OAAA,GAAgB,IAAI,CAAC;QAC5B,IAAkB,CAAA,kBAAA,GAAW,aAAa,CAAC;QAC3C,IAAiB,CAAA,iBAAA,GAAmB,UAAU,CAAC;KAEG;IAElD,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAC9D,IAAI,CAAC,SAAS,CAAC,aAA+B,IAAI,MAAM,EACzD,IAAI,CAAC,SAAS,CAAC,UAAU,CAC1B,CAAC;QAEF,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,WAAW,CAAC,yBAAyB,CACxC,IAAI,CAAC,iBAAiB,EACrB,IAAI,CAAC,SAAS,CAAC,aAA+B,IAAI,MAAM,EACzD,IAAI,CAAC,SAAS,CAAC,QAAQ,EACvB,IAAI,CAAC,SAAS,CAAC,QAAQ,EACvB,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,IAAI,CAClC,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,KAAK,YAAY,KAAK,EAAE;AAC1B,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aAC9B;iBAAM;AACL,gBAAA,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;aAC7C;SACF;AAED,QAAA,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAC5C,IAAI,CAAC,SAAS,CAAC,aAA+B,IAAI,MAAM,CAC1D,CAAC;KACH;IAED,YAAY,GAAA;AACV,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QACrE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACzD;QAED,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;gBAC3B,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aACvC;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aACtC;AACH,SAAC,CAAC,CAAC;QACH,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;KACtD;IAED,oBAAoB,GAAA;AAClB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAA4B,CAAC;AAE/D,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;SAC/D;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;SAC/D;KACF;IAEO,aAAa,GAAA;QACnB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC3B,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACtC;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;IAED,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC;SAC1E;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GApFU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAU,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,iHCbjC,w/BA+BA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,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,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDlBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,w/BAAA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,CAAA;+EAKhB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEAK,sBAAsB,CAAA;IAIjC,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QACvE,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,YAAA,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;;YAGlC,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;oBAC3B,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACvC;qBAAM;oBACL,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACtC;gBAED,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD,aAAC,CAAC,CAAC;SACJ;KACF;IAEO,aAAa,GAAA;QACnB,MAAM,UAAU,GAAkB,EAAE,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC3B,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,EAAE;YACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;gBACpB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;aAC3C;iBAAM;gBACL,OAAO,CAAC,KAAK,CACX,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAmB,iBAAA,CAAA,CAChE,CAAC;aACH;SACF;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,EAAE;YACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;gBACpB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;aAC3C;iBAAM;gBACL,OAAO,CAAC,KAAK,CACX,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAmB,iBAAA,CAAA,CAChE,CAAC;aACH;SACF;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;AAClC,YAAA,UAAU,CAAC,IAAI,CACb,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CACjE,CAAC;SACH;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;AAEO,IAAA,2BAA2B,CACjC,eAAoC,EAAA;QAEpC,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;KACxD;IAED,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC;SAC1E;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAC9E;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAoB,iBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;SAC7E;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE;AACvC,YAAA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,aAAa,CAAC;SAC7C;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GA9EU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,mHCfnC,ulEAsDA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,KAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDvCa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,ulEAAA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,CAAA;8BAKlB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEHK,sBAAsB,CAAA;IAIjC,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;AACV,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QACrE,IAAI,CAAC,OAAO,EAAE;;AAEZ,YAAA,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;AAClE,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACzD;;QAGD,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC5C,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;gBAC3B,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aACvC;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aACtC;YACD,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD,SAAC,CAAC,CAAC;KACJ;IAEO,aAAa,GAAA;QACnB,MAAM,UAAU,GAAkB,EAAE,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC3B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;SAChD;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;IAEO,sBAAsB,GAAA;QAC5B,OAAO,CAAC,OAAwB,KAAmC;YACjE,OAAO,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;AAC1D,kBAAE,IAAI;AACN,kBAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AAC/B,SAAC,CAAC;KACH;IAED,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;AAC1D,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC;SAC1E;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GAlDU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,mHCdnC,wsBAuBA,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDTa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,wsBAAA,EAAA,MAAA,EAAA,CAAA,sFAAA,CAAA,EAAA,CAAA;8BAKlB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEDK,wBAAwB,CAAA;AALrC,IAAA,WAAA,GAAA;QAQE,IAAc,CAAA,cAAA,GAAW,CAAC,CAAC;AAmE5B,KAAA;IAjEC,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QACvE,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,YAAA,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;;YAGlC,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;oBAC3B,OAAO,CAAC,OAAO,EAAE,CAAC;iBACnB;qBAAM;oBACL,OAAO,CAAC,MAAM,EAAE,CAAC;iBAClB;gBAED,OAAO,CAAC,sBAAsB,EAAE,CAAC;AACnC,aAAC,CAAC,CAAC;;YAEH,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACvC,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,aAAC,CAAC,CAAC;SACJ;KACF;IAEO,aAAa,GAAA;QACnB,MAAM,UAAU,GAAkB,EAAE,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC3B,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE;AAC1C,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;SACjE;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE;AAC1C,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;SACjE;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;AAClC,YAAA,UAAU,CAAC,IAAI,CACb,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CACjE,CAAC;SACH;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;AAEO,IAAA,2BAA2B,CACjC,eAAoC,EAAA;QAEpC,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;KACxD;IAED,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC;SAC1E;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE;AACzC,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,SAAS,kBAAkB,CAAC;SAC/F;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE;AACzC,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAoB,iBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,SAAS,kBAAkB,CAAC;SAC9F;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE;AACvC,YAAA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,aAAa,CAAC;SAC7C;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GArEU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,sHCfrC,wlEA6DA,EAAA,MAAA,EAAA,CAAA,iXAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD9Ca,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,wlEAAA,EAAA,MAAA,EAAA,CAAA,iXAAA,CAAA,EAAA,CAAA;8BAKrB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEAK,oBAAoB,CAAA;AALjC,IAAA,WAAA,GAAA;QASE,IAAc,CAAA,cAAA,GAAW,CAAC,CAAC;AAqF5B,KAAA;IAnFC,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;IAED,YAAY,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QACvE,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,YAAA,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAElC,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;oBAC3B,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACvC;qBAAM;oBACL,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACrC,oBAAA,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;wBAClC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC9B,qBAAC,CAAC,CAAC;iBACJ;gBACD,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD,aAAC,CAAC,CAAC;SACJ;KACF;IAED,oBAAoB,GAAA;AAClB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QACvE,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE;AACrC,YAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;SAChE;aAAM;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;SACzB;KACF;IAED,YAAY,GAAA;AACV,QAAA,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI;YACzB,KAAK,iBAAiB,CAAC,QAAQ;AAC7B,gBAAA,OAAO,UAAU,CAAC;YACpB,KAAK,iBAAiB,CAAC,MAAM;AAC3B,gBAAA,OAAO,QAAQ,CAAC;AAClB,YAAA;AACE,gBAAA,OAAO,MAAM,CAAC;SACjB;KACF;IAEO,aAAa,GAAA;QACnB,MAAM,UAAU,GAAkB,EAAE,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC3B,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE;AAC1C,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;SACjE;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE;AAC1C,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;SACjE;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;AAClC,YAAA,UAAU,CAAC,IAAI,CACb,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CACjE,CAAC;SACH;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;AAEO,IAAA,2BAA2B,CACjC,eAAoC,EAAA;QAEpC,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;KACxD;IAED,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;AACjC,YAAA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC;SAC9C;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE;AACzC,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,SAAS,aAAa,CAAC;SAC1F;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE;AACzC,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAoB,iBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,SAAS,aAAa,CAAC;SACzF;AAAM,aAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE;AACvC,YAAA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,aAAa,CAAC;SAC7C;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GAxFU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,iHCjBjC,g3DAkEA,EAAA,MAAA,EAAA,CAAA,4ZAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDjDa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,g3DAAA,EAAA,MAAA,EAAA,CAAA,4ZAAA,CAAA,EAAA,CAAA;8BAKhB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEVK,mBAAmB,CAAA;IAI9B,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;AACV,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QAErE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;AACxD,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACzD;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,QAAA,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;;QAGlC,UAAU,CAAC,MAAK;YACd,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,EAAE;AACzC,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;oBAC3B,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACvC;qBAAM;oBACL,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACtC;aACF;YAED,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD,SAAC,CAAC,CAAC;KACJ;IAEO,aAAa,GAAA;QACnB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC3B,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACtC;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;IAED,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC;SAC1E;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GA/CU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,+GCThC,unBAsBA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDba,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,aAAa,EAAA,QAAA,EAAA,unBAAA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,CAAA;8BAKd,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEFK,sBAAsB,CAAA;IAIjC,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;AACV,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QAErE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AACtD,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACzD;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,QAAA,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;;QAGlC,UAAU,CAAC,MAAK;YACd,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,EAAE;AACzC,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;oBAC3B,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACvC;qBAAM;oBACL,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;iBACtC;aACF;YACD,OAAO,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD,SAAC,CAAC,CAAC;KACJ;IAEO,aAAa,GAAA;QACnB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC3B,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACtC;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;IAED,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,CAAG,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,cAAc,CAAC;SAC1E;AACD,QAAA,OAAO,EAAE,CAAC;KACX;+GA9CU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,mHCTnC,2nBAsBA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDba,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,2nBAAA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,CAAA;8BAKlB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEOK,2BAA2B,CAAA;AALxC,IAAA,WAAA,GAAA;QAUE,IAAiB,CAAA,iBAAA,GAAG,iBAAiB,CAAC;AAiCvC,KAAA;AA/BC,IAAA,WAAW,CAAC,KAAgB,EAAA;AAC1B,QAAA,OAAO,KAAsB,CAAC;KAC/B;AAED,IAAA,aAAa,CAAC,KAAgB,EAAA;AAC5B,QAAA,OAAO,KAAwB,CAAC;KACjC;AAED,IAAA,eAAe,CAAC,KAAgB,EAAA;AAC9B,QAAA,OAAO,KAA0B,CAAC;KACnC;AAED,IAAA,WAAW,CAAC,KAAgB,EAAA;AAC1B,QAAA,OAAO,KAAsB,CAAC;KAC/B;AAED,IAAA,aAAa,CAAC,KAAgB,EAAA;AAC5B,QAAA,OAAO,KAA0B,CAAC;KACnC;AAED,IAAA,kBAAkB,CAAC,KAAgB,EAAA;AACjC,QAAA,OAAO,KAA6B,CAAC;KACtC;AAED,IAAA,eAAe,CAAC,KAAgB,EAAA;AAC9B,QAAA,OAAO,KAA0B,CAAC;KACnC;AAED,IAAA,aAAa,CAAC,KAAgB,EAAA;AAC5B,QAAA,OAAO,KAAwB,CAAC;KACjC;+GArCU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,iIClBxC,uzDA2DA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDzCa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,uzDAAA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,CAAA;8BAKxB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;;;METK,sBAAsB,CAAA;AAqBjC,IAAA,WAAA,CAAoB,EAAe,EAAA;QAAf,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QApB1B,IAAS,CAAA,SAAA,GAAmB,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACvD,IAAO,CAAA,OAAA,GAAiB,EAAE,CAAC;QAG3B,IAAU,CAAA,UAAA,GAAW,MAAM,CAAC;QAC5B,IAAQ,CAAA,QAAA,GAAgB,IAAI,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAA0B,CAAC;QAGlE,IAAiB,CAAA,iBAAA,GAAG,iBAAiB,CAAC;AAE9B,QAAA,IAAA,CAAA,aAAa,GAAG;AACtB,YAAA,EAAE,EAAE;AACF,gBAAA,QAAQ,EAAE,aAAa;AACxB,aAAA;AACD,YAAA,EAAE,EAAE;AACF,gBAAA,QAAQ,EAAE,YAAY;AACvB,aAAA;SACF,CAAC;QAGA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;KAC/B;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACrC;AAED,IAAA,cAAc,CAAC,KAAqB,EAAA;QAClC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,KAAI;AAC9B,YAAA,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YAC/D,IAAI,CAAC,IAAI,CAAC,UAAU,CAClB,KAAK,CAAC,IAAI,EACV,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CACzC,CAAC;AACJ,SAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,KAAI;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,eAAe,CAAC,KAAgB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;YACnD,QACE,KAAK,CAAC,SAAS;AACf,gBAAA,CAAA,EAAG,KAAK,CAAC,KAAK,CAAI,CAAA,EAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAA,CAAE,EAC9D;SACH;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC7B,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACvC;KACF;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KACnB;+GA9DU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,gPCZnC,qtCA0CA,EAAA,MAAA,EAAA,CAAA,u8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,EAAA,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,EAAA,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,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAc,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD9Ba,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,qtCAAA,EAAA,MAAA,EAAA,CAAA,u8BAAA,CAAA,EAAA,CAAA;kFAKlB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACI,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;MERI,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAArB,qBAAqB,EAAA,YAAA,EAAA,CAJjB,wBAAwB,CAC7B,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAA,EAAA,OAAA,EAAA,CACjD,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEvB,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,qBAAqB,EAHtB,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGhD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,wBAAwB,CAAC;AACxC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAC;oBAC5D,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA,CAAA;;;MCYY,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAnB,mBAAmB,EAAA,YAAA,EAAA,CAZf,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAEnC,YAAY;YACZ,mBAAmB;YACnB,WAAW;YACX,gBAAgB;YAChB,qBAAqB;YACrB,eAAe;AACf,YAAA,iBAAiB,aAET,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;AAErB,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,mBAAmB,YAV5B,YAAY;YACZ,mBAAmB;YACnB,WAAW;YACX,gBAAgB;YAChB,qBAAqB;YACrB,eAAe;YACf,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIR,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;AACtC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,WAAW;wBACX,gBAAgB;wBAChB,qBAAqB;wBACrB,eAAe;wBACf,iBAAiB;AAClB,qBAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;MCVY,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAnB,mBAAmB,EAAA,YAAA,EAAA,CAJf,sBAAsB,CAC3B,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACpD,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;AAErB,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,mBAAmB,EAHpB,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGnD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;AACtC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,CAAC;oBAC/D,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;MCSY,iBAAiB,CAAA;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAjB,iBAAiB,EAAA,YAAA,EAAA,CAVb,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAEjC,YAAY;YACZ,mBAAmB;YACnB,eAAe;YACf,eAAe;AACf,YAAA,eAAe,aAEP,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEnB,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,iBAAiB,YAR1B,YAAY;YACZ,mBAAmB;YACnB,eAAe;YACf,eAAe;YACf,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIN,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAX7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,eAAe;wBACf,eAAe;wBACf,eAAe;AAChB,qBAAA;oBACD,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;MCCY,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAArB,qBAAqB,EAAA,YAAA,EAAA,CAVjB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAErC,YAAY;YACZ,mBAAmB;YACnB,mBAAmB;YACnB,gBAAgB;AAChB,YAAA,qBAAqB,aAEb,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEvB,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,qBAAqB,YAR9B,YAAY;YACZ,mBAAmB;YACnB,mBAAmB;YACnB,gBAAgB;YAChB,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIZ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,wBAAwB,CAAC;AACxC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,mBAAmB;wBACnB,gBAAgB;wBAChB,qBAAqB;AACtB,qBAAA;oBACD,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA,CAAA;;;MCPY,iBAAiB,CAAA;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAjB,iBAAiB,EAAA,YAAA,EAAA,CAJb,oBAAoB,CACzB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAA,EAAA,OAAA,EAAA,CACjD,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEnB,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,iBAAiB,EAHlB,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGhD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAC;oBAC5D,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;MCCY,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAhB,gBAAgB,EAAA,YAAA,EAAA,CAJZ,mBAAmB,CACxB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAA,EAAA,OAAA,EAAA,CACjD,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;AAElB,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,gBAAgB,EAHjB,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGhD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;AACnC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,cAAc,CAAC;oBAC5D,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA,CAAA;;;MCCY,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAnB,mBAAmB,EAAA,YAAA,EAAA,CAJf,sBAAsB,CAC3B,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACpD,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;AAErB,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,mBAAmB,EAHpB,OAAA,EAAA,CAAA,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGnD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;AACtC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,CAAC;oBAC/D,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;MCqBY,wBAAwB,CAAA;+GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAxB,wBAAwB,EAAA,YAAA,EAAA,CAjBpB,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAExC,YAAY;YACZ,mBAAmB;;YAGnB,qBAAqB;YACrB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;YACnB,qBAAqB;YACrB,iBAAiB;YACjB,gBAAgB;AAChB,YAAA,mBAAmB,aAEX,2BAA2B,CAAA,EAAA,CAAA,CAAA,EAAA;AAE1B,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,wBAAwB,YAfjC,YAAY;YACZ,mBAAmB;;YAGnB,qBAAqB;YACrB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;YACnB,qBAAqB;YACrB,iBAAiB;YACjB,gBAAgB;YAChB,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIV,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAlBpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,2BAA2B,CAAC;AAC3C,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;;wBAGnB,qBAAqB;wBACrB,iBAAiB;wBACjB,mBAAmB;wBACnB,mBAAmB;wBACnB,qBAAqB;wBACrB,iBAAiB;wBACjB,gBAAgB;wBAChB,mBAAmB;AACpB,qBAAA;oBACD,OAAO,EAAE,CAAC,2BAA2B,CAAC;AACvC,iBAAA,CAAA;;;MCbY,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAnB,mBAAmB,EAAA,YAAA,EAAA,CATf,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAEnC,YAAY;YACZ,mBAAmB;YACnB,YAAY;AACZ,YAAA,wBAAwB,aAEhB,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;AAErB,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,mBAAmB,YAP5B,YAAY;YACZ,mBAAmB;YACnB,YAAY;YACZ,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIf,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;AACtC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,YAAY;wBACZ,wBAAwB;AACzB,qBAAA;oBACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;MCFY,qBAAqB,CAAA;aACR,IAAkB,CAAA,kBAAA,GAAG,SAAH,CAAa,EAAA;aAC/B,IAAiB,CAAA,iBAAA,GAAG,MAAH,CAAU,EAAA;aAC3B,IAAmB,CAAA,mBAAA,GAAG,SAAH,CAAa,EAAA;aAChC,IAAkB,CAAA,kBAAA,GAAG,MAAH,CAAU,EAAA;aAC5B,IAAmB,CAAA,mBAAA,GAAG,SAAH,CAAa,EAAA;aAChC,IAAkB,CAAA,kBAAA,GAAG,MAAH,CAAU,EAAA;aAC5B,IAAmB,CAAA,mBAAA,GAAG,SAAH,CAAa,EAAA;aAChC,IAAkB,CAAA,kBAAA,GAAG,MAAH,CAAU,EAAA;aAC5B,IAA6B,CAAA,6BAAA,GAAG,MAAH,CAAU,EAAA;aACvC,IAA4B,CAAA,4BAAA,GAAG,MAAH,CAAU,EAAA;aACtC,IAAwB,CAAA,wBAAA,GAAG,MAAH,CAAU,EAAA;IAI1D,YAAY,GAAA;QACV,OAAO,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC;KAC/C;IAED,aAAa,GAAA;QACX,OAAO,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC;KAChD;IAED,aAAa,GAAA;QACX,OAAO,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC;KAChD;AAED,IAAA,aAAa,CAAC,KAAwC,EAAA;AACpD,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;KAClC;IAED,sBAAsB,GAAA;QACpB,OAAO,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,KAAK,QAAQ,CAAC;KACzD;IAED,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,YAAY,EAAE;AACxB,cAAG,IAAI,CAAC,QAAQ,CAAC,IAAkB,CAAC,IAAI;AACxC,cAAG,IAAI,CAAC,QAAQ,CAAC,IAAe,CAAC;KACpC;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,aAAa,EAAE;AACzB,cAAG,IAAI,CAAC,QAAQ,CAAC,KAAmB,CAAC,IAAI;AACzC,cAAG,IAAI,CAAC,QAAQ,CAAC,KAAgB,CAAC;KACrC;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,aAAa,EAAE;AACzB,cAAG,IAAI,CAAC,QAAQ,CAAC,KAAsB,CAAC,IAAI;AAC5C,cAAG,IAAI,CAAC,QAAQ,CAAC,KAAgB,CAAC;KACrC;IAED,YAAY,GAAA;QACV,MAAM,KAAK,GAAI,IAAI,CAAC,QAAQ,CAAC,KAAsB,EAAE,KAAK,CAAC;AAC3D,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;cAC3B,KAAsB,CAAC,IAAI;cAC3B,KAAgB,CAAC;KACvB;IAED,qBAAqB,GAAA;QACnB,OAAO,IAAI,CAAC,sBAAsB,EAAE;AAClC,cAAG,IAAI,CAAC,QAAQ,CAAC,cAA4B,CAAC,IAAI;AAClD,cAAG,IAAI,CAAC,QAAQ,CAAC,cAAyB,CAAC;KAC9C;IAED,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAiB,CAAC;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC;;AAGvC,YAAA,MAAM,YAAY,GAAG,KAAK,KAAK,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC;YAE1D,OAAO;AACL,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,qBAAqB,CAAC,kBAAkB;AAC7D,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,qBAAqB,CAAC,iBAAiB;AAClE,gBAAA,kBAAkB,EAAE,IAAI,CAAC,eAAe,IAAI,aAAa;AACzD,gBAAA,eAAe,EAAE,YAAY;AAC7B,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,cAAc;aACxB,CAAC;SACH;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAkB,CAAC;YAC/C,OAAO;AACL,gBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,qBAAqB,CAAC,mBAAmB;AAC/D,gBAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,qBAAqB,CAAC,kBAAkB;AACpE,gBAAA,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,QAAQ;aACzC,CAAC;SACH;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAqB,CAAC;YAClD,OAAO;AACL,gBAAA,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,qBAAqB,CAAC,mBAAmB;AAC/D,gBAAA,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,qBAAqB,CAAC,kBAAkB;AACpE,gBAAA,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,MAAM;aACvC,CAAC;SACH;aAAM;YACL,OAAO;gBACL,KAAK,EAAE,qBAAqB,CAAC,mBAAmB;gBAChD,QAAQ,EAAE,qBAAqB,CAAC,kBAAkB;AAClD,gBAAA,UAAU,EAAE,MAAM;aACnB,CAAC;SACH;KACF;AAED,IAAA,cAAc,CAAC,QAA0B,EAAA;QACvC,MAAM,KAAK,GAAI,IAAI,CAAC,QAAQ,CAAC,KAAsB,EAAE,KAAK,CAAC;AAC3D,QAAA,IACE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACxB,YAAA,KAAsB,CAAC,QAAQ,KAAK,QAAQ,EAC7C;YACA,OAAO;gBACL,KAAK,EACF,KAAsB,CAAC,KAAK;AAC7B,oBAAA,qBAAqB,CAAC,mBAAmB;gBAC3C,QAAQ,EACL,KAAsB,CAAC,QAAQ;AAChC,oBAAA,qBAAqB,CAAC,kBAAkB;AAC1C,gBAAA,UAAU,EAAG,KAAsB,CAAC,UAAU,IAAI,QAAQ;aAC3D,CAAC;SACH;aAAM;YACL,OAAO;gBACL,KAAK,EAAE,qBAAqB,CAAC,mBAAmB;gBAChD,QAAQ,EAAE,qBAAqB,CAAC,kBAAkB;AAClD,gBAAA,UAAU,EAAE,QAAQ;aACrB,CAAC;SACH;KACF;IAED,uBAAuB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;AACjC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,cAA2B,CAAC;YACjE,OAAO;gBACL,KAAK,EACH,cAAc,CAAC,KAAK;AACpB,oBAAA,qBAAqB,CAAC,6BAA6B;gBACrD,QAAQ,EACN,cAAc,CAAC,QAAQ;AACvB,oBAAA,qBAAqB,CAAC,4BAA4B;AACpD,gBAAA,UAAU,EAAE,cAAc,CAAC,UAAU,IAAI,QAAQ;aAClD,CAAC;SACH;aAAM;YACL,OAAO;gBACL,KAAK,EAAE,qBAAqB,CAAC,6BAA6B;gBAC1D,QAAQ,EAAE,qBAAqB,CAAC,4BAA4B;AAC5D,gBAAA,UAAU,EAAE,QAAQ;aACrB,CAAC;SACH;KACF;IAED,aAAa,GAAA;QACX,MAAM,KAAK,GAAI,IAAI,CAAC,QAAQ,CAAC,KAAsB,EAAE,KAAK,CAAC;AAC3D,QAAA,QACE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAK,KAAsB,CAAC,QAAQ,KAAK,MAAM,EACxE;KACH;IAED,cAAc,GAAA;QACZ,MAAM,KAAK,GAAI,IAAI,CAAC,QAAQ,CAAC,KAAsB,EAAE,KAAK,CAAC;AAC3D,QAAA,QACE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAK,KAAsB,CAAC,QAAQ,KAAK,OAAO,EACzE;KACH;IAED,2BAA2B,GAAA;QACzB,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,IAAI,MAAM;YACnD,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,IAAI,kBAAkB;YAC/D,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,IAAI,MAAM;SAChD,CAAC;KACH;IAED,kBAAkB,GAAA;QAChB,OAAO;AACL,YAAA,kBAAkB,EAChB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,eAAe;AACzC,gBAAA,qBAAqB,CAAC,wBAAwB;YAChD,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,IAAI,MAAM;YACnD,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,IAAI,kBAAkB;YAC/D,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,IAAI,MAAM;SAChD,CAAC;KACH;+GA/LU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,wFCdlC,ilEA0EA,EAAA,MAAA,EAAA,CAAA,wtBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD5Da,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,ilEAAA,EAAA,MAAA,EAAA,CAAA,wtBAAA,CAAA,EAAA,CAAA;8BAiBjB,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MElBK,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,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,kBAAkB,EAJd,YAAA,EAAA,CAAA,qBAAqB,CAC1B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEpB,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,kBAAkB,YAHnB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;oBACrC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA,CAAA;;;MCAY,0BAA0B,CAAA;AALvC,IAAA,WAAA,GAAA;QAMW,IAAS,CAAA,SAAA,GAAqB,EAAE,CAAC;AAC3C,KAAA;+GAFY,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,gGCRvC,qJAMA,EAAA,MAAA,EAAA,CAAA,kHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDEa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,qJAAA,EAAA,MAAA,EAAA,CAAA,kHAAA,CAAA,EAAA,CAAA;8BAKvB,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MECK,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,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,uBAAuB,iBAJnB,0BAA0B,CAAA,EAAA,OAAA,EAAA,CAC/B,YAAY,EAAE,kBAAkB,aAChC,0BAA0B,CAAA,EAAA,CAAA,CAAA,EAAA;gHAEzB,uBAAuB,EAAA,OAAA,EAAA,CAHxB,YAAY,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAG/B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,0BAA0B,CAAC;AAC1C,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,CAAC;oBAC3C,OAAO,EAAE,CAAC,0BAA0B,CAAC;AACtC,iBAAA,CAAA;;;MCcY,gBAAgB,CAAA;AAO3B,IAAA,WAAA,GAAA;QACE,KAAK,CAAC,QAAQ,CAAC,GAAG,aAAa,EAAE,eAAe,CAAC,CAAC;KACnD;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IAED,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,eAAe,GAAA;AACb,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;;QAG5C,IAAI,CAAC,YAAY,EAAE,CAAC;AAEpB,QAAA,MAAM,MAAM,GAAuB;AACjC,YAAA,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAiB;AACxC,YAAA,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAiB;AACxC,YAAA,OAAO,EAAE;AACP,gBAAA,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO;AAC3B,gBAAA,OAAO,EAAE;AACP,oBAAA,UAAU,EAAE;AACV,wBAAA,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAI;AAC5B,4BAAA,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAgB,CAAC;AAC7D,4BAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;AACtD,4BAAA,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5D,4BAAA,OAAO,UAAU,CAAC;yBACnB;AACD,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE,MAAM;AACf,yBAAA;AACF,qBAAA;AACD,oBAAA,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO;AACrC,iBAAA;AACF,aAAA;SACF,CAAC;;QAGF,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC;IAED,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAExC,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;gBAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;aAC/C;AAED,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;SACrB;KACF;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,KAAK,GAAG,SAAgB,CAAC;SAC/B;KACF;+GArEU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,gNCvB7B,2GAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDoBa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,UAAU,EAAA,QAAA,EAAA,2GAAA,EAAA,CAAA;wDAKX,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEN,SAAS,EAAA,CAAA;sBADR,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;MEhB/B,aAAa,CAAA;+GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAb,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,aAAa,EAJT,YAAA,EAAA,CAAA,gBAAgB,CACrB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEf,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,aAAa,YAHd,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGX,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,gBAAgB,CAAC;oBAChC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC5B,iBAAA,CAAA;;;MCAY,eAAe,CAAA;AAL5B,IAAA,WAAA,GAAA;AAMW,QAAA,IAAA,CAAA,MAAM,GAAe;AAC5B,YAAA,IAAI,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;AACnE,YAAA,aAAa,EAAE,OAAO;SACvB,CAAC;QAUF,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AA2EhB,KAAA;aAnFyB,IAAkB,CAAA,kBAAA,GAAG,MAAH,CAAU,EAAA;aAC5B,IAAsB,CAAA,sBAAA,GAAG,MAAH,CAAU,EAAA;aAChC,IAAkB,CAAA,kBAAA,GAAG,MAAH,CAAU,EAAA;aAC5B,IAAsB,CAAA,sBAAA,GAAG,MAAH,CAAU,EAAA;aAChC,IAAiB,CAAA,iBAAA,GAAG,kBAAH,CAAsB,EAAA;aAEhD,IAAgB,CAAA,gBAAA,GAA2B,IAA3B,CAAgC,EAAA;IAI/D,UAAU,GAAA;QACR,IACE,eAAe,CAAC,gBAAgB;AAChC,YAAA,eAAe,CAAC,gBAAgB,KAAK,IAAI,EACzC;AACA,YAAA,eAAe,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;SAC9C;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAE3B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC;SACzC;aAAM;AACL,YAAA,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC;SACzC;KACF;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,eAAe,CAAC,gBAAgB,KAAK,IAAI,EAAE;AAC7C,YAAA,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC;SACzC;KACF;AAED,IAAA,oBAAoB,CAAC,IAAc,EAAA;;QAEjC,OAAO,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;KAC1E;AAED,IAAA,qBAAqB,CAAC,IAAc,EAAA;AAClC,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YACjC,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,eAAe,CAAC,kBAAkB;gBAC7D,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,eAAe,CAAC,sBAAsB;aACxE,CAAC;SACH;QACD,OAAO;YACL,KAAK,EAAE,eAAe,CAAC,kBAAkB;YACzC,QAAQ,EAAE,eAAe,CAAC,sBAAsB;SACjD,CAAC;KACH;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,eAAe,CAAC,iBAAiB,CAAC;KACpE;IAED,aAAa,GAAA;QACX,OAAO;AACL,YAAA,KAAK,EACH,IAAI,CAAC,MAAM,CAAC,KAAK;AACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK;AACvB,gBAAA,eAAe,CAAC,kBAAkB;AACpC,YAAA,QAAQ,EACN,IAAI,CAAC,MAAM,CAAC,QAAQ;AACpB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ;AAC1B,gBAAA,eAAe,CAAC,sBAAsB;SACzC,CAAC;KACH;AAED,IAAA,aAAa,CAAC,IAAc,EAAA;QAC1B,OAAO;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,eAAe,CAAC,kBAAkB;AACvD,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,eAAe,CAAC,sBAAsB;SAClE,CAAC;KACH;AAGD,IAAA,eAAe,CAAC,KAAiB,EAAA;QAC/B,MAAM,aAAa,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,aAAa,EAAE;YAClB,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;KACF;+GAxFU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,mJCR5B,2sBA4BA,EAAA,MAAA,EAAA,CAAA,o1BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDpBa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,SAAS,EAAA,QAAA,EAAA,2sBAAA,EAAA,MAAA,EAAA,CAAA,o1BAAA,CAAA,EAAA,CAAA;8BAKV,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAkFN,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ME3E/B,eAAe,CAAA;;aAIF,IAAmB,CAAA,mBAAA,GAAG,MAAH,CAAU,EAAA;aAC7B,IAAuB,CAAA,uBAAA,GAAG,OAAH,CAAW,EAAA;aAClC,IAAkB,CAAA,kBAAA,GAAG,MAAH,CAAU,EAAA;aAC5B,IAAsB,CAAA,sBAAA,GAAG,KAAH,CAAS,EAAA;aAC/B,IAAqB,CAAA,qBAAA,GAAG,MAAH,CAAU,EAAA;aAC/B,IAAwB,CAAA,wBAAA,GAAG,MAAH,CAAU,EAAA;aAClC,IAAa,CAAA,aAAA,GAAG,MAAH,CAAU,EAAA;aACvB,IAAc,CAAA,cAAA,GAAG,MAAH,CAAU,EAAA;aACxB,IAAsB,CAAA,sBAAA,GAAG,MAAH,CAAU,EAAA;aAChC,IAAqB,CAAA,qBAAA,GAAG,OAAH,CAAW,EAAA;aAChC,IAAoB,CAAA,oBAAA,GAAG,MAAH,CAAU,EAAA;aAC9B,IAAoB,CAAA,oBAAA,GAAG,KAAH,CAAS,EAAA;aAC7B,IAAoB,CAAA,oBAAA,GAAG,KAAH,CAAS,EAAA;aAC7B,IAAe,CAAA,eAAA,GAAG,MAAH,CAAU,EAAA;aACzB,IAAc,CAAA,cAAA,GAAG,QAAH,CAAY,EAAA;IAElD,eAAe,GAAA;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAEO,aAAa,GAAA;QACnB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE;AACjC,YAAA,OAAO,CAAC,GAAG,CACT,iCAAiC,IAAI,CAAC,MAAM,CAAC,UAAU,kBAAkB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAA,CAAE,CACxG,CAAC;SACH;KACF;IAED,aAAa,GAAA;QACX,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC;KAC9C;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;KACtE;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,aAAa,EAAE;AACzB,cAAG,IAAI,CAAC,MAAM,CAAC,KAAoB,CAAC,IAAI;AACxC,cAAG,IAAI,CAAC,MAAM,CAAC,KAAgB,CAAC;KACnC;IAED,cAAc,GAAA;AACZ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAA+B,CAAC;AAC1D,QAAA,MAAM,QAAQ,GAA8B;AAC1C,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,KAAK,EAAE,UAAU;SAClB,CAAC;QACF,OAAO;AACL,YAAA,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,eAAe,CAAC,mBAAmB;AAC1D,YAAA,QAAQ,EAAE,KAAK,EAAE,QAAQ,IAAI,eAAe,CAAC,uBAAuB;YACpE,cAAc,EACZ,QAAQ,CAAC,KAAK,EAAE,QAAQ,IAAI,eAAe,CAAC,sBAAsB,CAAC;SACtE,CAAC;KACH;AAED,IAAA,WAAA,CAAoB,EAAqB,EAAA;QAArB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAmB;QA5DhC,IAAM,CAAA,MAAA,GAAe,EAAE,CAAC;KA4DY;IAE7C,YAAY,GAAA;;QAEV,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;KACzB;IAED,YAAY,GAAA;QACV,MAAM,IAAI,GAAI,IAAI,CAAC,MAAM,CAAC,KAAoB,EAAE,IAAI,CAAC;AACrD,QAAA,OAAO,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAI,IAAkB,EAAE,IAAI,IAAI,IAAI,CAAC;KAC5E;IAED,aAAa,GAAA;QACX,MAAM,IAAI,GAAI,IAAI,CAAC,MAAM,CAAC,KAAoB,EAAE,IAAI,CAAC;AACrD,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO;AACL,gBAAA,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,eAAe,CAAC,kBAAkB;AACxD,gBAAA,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,eAAe,CAAC,sBAAsB;aACnE,CAAC;SACH;QACD,OAAO;YACL,KAAK,EAAE,eAAe,CAAC,kBAAkB;YACzC,QAAQ,EAAE,eAAe,CAAC,sBAAsB;SACjD,CAAC;KACH;IAED,eAAe,GAAA;QACb,MAAM,IAAI,GAAI,IAAI,CAAC,MAAM,CAAC,KAAoB,EAAE,IAAI,CAAC;QACrD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,EAAE,QAAQ,EAAE;YAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;QACD,OAAO,eAAe,CAAC,qBAAqB,CAAC;KAC9C;IAED,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,eAAe,CAAC,qBAAqB,CAAC;KAC1E;IAED,aAAa,GAAA;;AAEX,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB;cAC7D,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,GAAG,GAAG;cACpD,CAAC,CAAC;;QAGN,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,sBAAsB;AACrE,cAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,GAAG;cAC5D,CAAC,CAAC;;AAGN,QAAA,MAAM,eAAe,GACnB,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,KAAK,GAAG;AACvE,cAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;cACnE,aAAa,CAAC;;QAGpB,MAAM,eAAe,GACnB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ;AAC7B,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,KAAK,GAAG;AAChD,cAAE,CACE,oCAAA,EAAA,CAAC,GAAG,mBACN,0BAA0B,CAAC,GAAG,mBAAmB,CAAA,SAAA,EAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QACtB,CAAI,EAAA,CAAA;cACJ,EAAE,CAAC;QAET,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC;QAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC;;AAG5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AACtE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AACtE,QAAA,MAAM,gBAAgB,GAAG,CAAA,EAAG,OAAO,CAAI,CAAA,EAAA,OAAO,EAAE,CAAC;;QAGjD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,IAAI,CAAC,CAAC;AAC1D,QAAA,MAAM,cAAc,GAClB,WAAW,GAAG,CAAC;AACb,cAAE,CAAA,EAAG,YAAY,CAAA,CAAA,EAAI,aAAa,CAAE,CAAA;AACpC,cAAE,CAAG,EAAA,YAAY,CAAI,CAAA,EAAA,aAAa,EAAE,CAAC;;QAGzC,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,IAAI,QAAQ,CAAC;AAErE,QAAA,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;AAElE,QAAA,MAAM,UAAU,GACd,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAE/D,OAAO;AACL,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,cAAc;AACd,YAAA,UAAU;AACV,YAAA,eAAe;AACf,YAAA,eAAe;YACf,cAAc;YACd,kBAAkB;YAClB,gBAAgB;YAChB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,eAAe,CAAC,aAAa;YACzD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,eAAe,CAAC,cAAc;AAC5D,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC1B,kBAAE,MAAM;kBACN,SACE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,eAAe,CAAC,oBAC7C,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,eAAe,CAAC,oBAAoB,CAAE,CAAA;YACzE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,eAAe,CAAC,eAAe;YAC/D,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,eAAe,CAAC,cAAc;AAC5D,YAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,KAAK;AAC/C,YAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,8BAA8B;AAClE,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM;SACvE,CAAC;KACH;;IAGO,SAAS,CAAC,GAAW,EAAE,KAAa,EAAA;QAC1C,MAAM,cAAc,GAAG,kCAAkC,CAAC;AAC1D,QAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,2CAA2C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrE,QAAA,OAAO,MAAM;AACX,cAAE,CAAA,KAAA,EAAQ,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAK,EAAA,EAAA,QAAQ,CAC1C,MAAM,CAAC,CAAC,CAAC,EACT,EAAE,CACH,CAAA,EAAA,EAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA,EAAA,EAAK,KAAK,CAAG,CAAA,CAAA;cAC1C,GAAG,CAAC;KACT;IAED,aAAa,GAAA;AACX,QAAA,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;AACtE,QAAA,MAAM,UAAU,GACd,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAEnE,OAAO;AACL,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE,QAAQ;YACvB,cAAc;YACd,UAAU;AACV,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,MAAM;AACf,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,SAAS,EAAE,IAAI,CAAC,sBAAsB,EAAE,GAAG,MAAM,GAAG,QAAQ;AAC5D,YAAA,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,GAAG,MAAM,GAAG,QAAQ;SAC3D,CAAC;KACH;IAED,eAAe,GAAA;AACb,QAAA,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,kBAAkB,KAAK,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;AACxE,QAAA,MAAM,UAAU,GACd,IAAI,CAAC,MAAM,CAAC,kBAAkB,KAAK,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAErE,OAAO;AACL,YAAA,OAAO,EAAE,MAAM;YACf,cAAc;YACd,UAAU;YACV,YAAY,EAAE,MAAM;AACpB,YAAA,QAAQ,EAAE,UAAU;SACrB,CAAC;KACH;IAED,sBAAsB,GAAA;AACpB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;KAC3C;IAED,oBAAoB,GAAA;AAClB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;KACzC;IAED,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,QAAQ,GAAG,cAAc,GAAG,EAAE,CAAC;KACpE;IAED,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,QAAQ,GAAG,cAAc,GAAG,EAAE,CAAC;KACxE;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,KAAK,QAAQ,GAAG,cAAc,GAAG,EAAE,CAAC;KAC1E;+GApPU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,6ECf5B,2mCAyCA,EAAA,MAAA,EAAA,CAAA,szCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD1Ba,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,SAAS,EAAA,QAAA,EAAA,2mCAAA,EAAA,MAAA,EAAA,CAAA,szCAAA,CAAA,EAAA,CAAA;sFAKV,MAAM,EAAA,CAAA;sBAAd,KAAK;;;MEPK,YAAY,CAAA;+GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,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,YAAY,EAJR,YAAA,EAAA,CAAA,eAAe,CACpB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;AAEd,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,YAAY,YAHb,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGX,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,eAAe,CAAC;oBAC/B,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,eAAe,CAAC;AAC3B,iBAAA,CAAA;;;MCEY,YAAY,CAAA;+GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,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,YAAY,iBAJR,eAAe,CAAA,EAAA,OAAA,EAAA,CACpB,YAAY,EAAE,YAAY,aAC1B,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;gHAEd,YAAY,EAAA,OAAA,EAAA,CAHb,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGzB,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,eAAe,CAAC;AAC/B,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;oBACrC,OAAO,EAAE,CAAC,eAAe,CAAC;AAC3B,iBAAA,CAAA;;;MCDY,oBAAoB,CAAA;AALjC,IAAA,WAAA,GAAA;AAMW,QAAA,IAAA,CAAA,MAAM,GAAe;AAC5B,YAAA,IAAI,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;AACnE,YAAA,aAAa,EAAE,OAAO;SACvB,CAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAe;AAC3B,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,OAAO,EAAE,KAAK;SACf,CAAC;QAUF,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AA8EhB,KAAA;aAtFyB,IAAkB,CAAA,kBAAA,GAAG,MAAH,CAAU,EAAA;aAC5B,IAAsB,CAAA,sBAAA,GAAG,MAAH,CAAU,EAAA;aAChC,IAAkB,CAAA,kBAAA,GAAG,MAAH,CAAU,EAAA;aAC5B,IAAsB,CAAA,sBAAA,GAAG,MAAH,CAAU,EAAA;aAChC,IAAiB,CAAA,iBAAA,GAAG,kBAAH,CAAsB,EAAA;aAEhD,IAAgB,CAAA,gBAAA,GAAgC,IAAhC,CAAqC,EAAA;IAIpE,UAAU,GAAA;QACR,IACE,oBAAoB,CAAC,gBAAgB;AACrC,YAAA,oBAAoB,CAAC,gBAAgB,KAAK,IAAI,EAC9C;AACA,YAAA,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;SACnD;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAE3B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,oBAAoB,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9C;aAAM;AACL,YAAA,oBAAoB,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9C;KACF;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,oBAAoB,CAAC,gBAAgB,KAAK,IAAI,EAAE;AAClD,YAAA,oBAAoB,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9C;KACF;AAED,IAAA,oBAAoB,CAAC,IAAc,EAAA;;QAEjC,OAAO,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;KAC1E;AAED,IAAA,qBAAqB,CAAC,IAAc,EAAA;AAClC,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YACjC,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,oBAAoB,CAAC,kBAAkB;gBAClE,QAAQ,EACN,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,oBAAoB,CAAC,sBAAsB;aACrE,CAAC;SACH;QACD,OAAO;YACL,KAAK,EAAE,oBAAoB,CAAC,kBAAkB;YAC9C,QAAQ,EAAE,oBAAoB,CAAC,sBAAsB;SACtD,CAAC;KACH;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,oBAAoB,CAAC,iBAAiB,CAAC;KACzE;IAED,aAAa,GAAA;QACX,OAAO;AACL,YAAA,KAAK,EACH,IAAI,CAAC,MAAM,CAAC,KAAK;AACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK;AACvB,gBAAA,oBAAoB,CAAC,kBAAkB;AACzC,YAAA,QAAQ,EACN,IAAI,CAAC,MAAM,CAAC,QAAQ;AACpB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ;AAC1B,gBAAA,oBAAoB,CAAC,sBAAsB;SAC9C,CAAC;KACH;AAED,IAAA,aAAa,CAAC,IAAc,EAAA;QAC1B,OAAO;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,oBAAoB,CAAC,kBAAkB;AAC5D,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,oBAAoB,CAAC,sBAAsB;SACvE,CAAC;KACH;AAGD,IAAA,eAAe,CAAC,KAAiB,EAAA;QAC/B,MAAM,aAAa,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CACzD,gBAAgB,CACjB,CAAC;QACF,IAAI,CAAC,aAAa,EAAE;YAClB,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;KACF;+GAjGU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,yJCRjC,kyBA8BA,EAAA,MAAA,EAAA,CAAA,u/BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDtBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,kyBAAA,EAAA,MAAA,EAAA,CAAA,u/BAAA,CAAA,EAAA,CAAA;8BAKhB,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAyFN,eAAe,EAAA,CAAA;sBADd,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MEzF/B,qBAAqB,CAAA;AALlC,IAAA,WAAA,GAAA;QAMW,IAAgB,CAAA,gBAAA,GAAqB,EAAE,CAAC;AAEvC,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAqIxE,KAAA;;aAlIyB,IAAgB,CAAA,gBAAA,GAAW,EAAX,CAAc,EAAA;aAC9B,IAAqB,CAAA,qBAAA,GAAW,MAAX,CAAkB,EAAA;aACvC,IAAkB,CAAA,kBAAA,GAAW,MAAX,CAAkB,EAAA;aACpC,IAAmB,CAAA,mBAAA,GAAW,MAAX,CAAkB,EAAA;aACrC,IAAgB,CAAA,gBAAA,GAAW,aAAX,CAAyB,EAAA;aACzC,IAAsB,CAAA,sBAAA,GAAW,MAAX,CAAkB,EAAA;aACxC,IAA0B,CAAA,0BAAA,GAAW,MAAX,CAAkB,EAAA;aAC5C,IAAoB,CAAA,oBAAA,GAAW,KAAX,CAAiB,EAAA;aACrC,IAAkB,CAAA,kBAAA,GAAW,MAAX,CAAkB,EAAA;aACpC,IAA0B,CAAA,0BAAA,GAAW,YAAX,CAAwB,EAAA;aAClD,IAA2B,CAAA,2BAAA,GAAW,MAAX,CAAkB,EAAA;AAErE,IAAA,YAAY,CAAC,MAAW,EAAA;QACtB,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,UAAU,IAAI,MAAM,CAAC;KAC3D;AAED,IAAA,WAAW,CAAC,MAAW,EAAA;QACrB,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC;KACvD;IAED,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAClD,cAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ;AACrC,cAAE,qBAAqB,CAAC,gBAAgB,CAAC;KAC5C;IAED,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAClD,cAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO;AAChC,gBAAA,qBAAqB,CAAC,qBAAqB;AAC/C,cAAE,qBAAqB,CAAC,qBAAqB,CAAC;KACjD;IAED,aAAa,GAAA;QACX,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;YACjD,OAAO;AACL,gBAAA,KAAK,EACH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK;AAChC,oBAAA,qBAAqB,CAAC,kBAAkB;AAC1C,gBAAA,KAAK,EACH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK;AAChC,oBAAA,qBAAqB,CAAC,kBAAkB;AAC1C,gBAAA,MAAM,EACJ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM;AACjC,oBAAA,qBAAqB,CAAC,mBAAmB;aAC5C,CAAC;SACH;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAED,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACpD,cAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI;AACpC,cAAE,qBAAqB,CAAC,gBAAgB,CAAC;KAC5C;IAED,gBAAgB,GAAA;QACd,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;YACnD,OAAO;AACL,gBAAA,KAAK,EACH,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK;AACnC,oBAAA,qBAAqB,CAAC,sBAAsB;AAC9C,gBAAA,QAAQ,EACN,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ;AACtC,oBAAA,qBAAqB,CAAC,0BAA0B;aACnD,CAAC;SACH;QACD,OAAO;YACL,KAAK,EAAE,qBAAqB,CAAC,sBAAsB;YACnD,QAAQ,EAAE,qBAAqB,CAAC,0BAA0B;SAC3D,CAAC;KACH;IAED,eAAe,GAAA;QACb,MAAM,YAAY,GAChB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,sBAAsB;YACrD,qBAAqB,CAAC,oBAAoB,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC;QACpE,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC;;QAGtE,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO;AACpD,cAAE,QAAQ;cACR,WAAW,CAAC;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO;AACpD,cAAE,QAAQ;cACR,WAAW,CAAC;AAChB,QAAA,MAAM,gBAAgB,GAAG,CAAA,EAAG,OAAO,CAAI,CAAA,EAAA,OAAO,EAAE,CAAC;;QAGjD,MAAM,kBAAkB,GACtB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,IAAI,QAAQ,CAAC;;QAGtD,MAAM,eAAe,GAAG,QAAQ;cAC5B,uCACE,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,GACjC,0BACE,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,GACjC,CAAW,QAAA,EAAA,QAAQ,CAAG,CAAA,CAAA;cACtB,EAAE,CAAC;QAEP,OAAO;AACL,YAAA,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,aAAa,GAAG,MAAM;AACvE,YAAA,eAAe,EAAE,eAAe;AAChC,YAAA,cAAc,EAAE,CAAA,EAAG,YAAY,CAAA,CAAA,EAAI,aAAa,CAAE,CAAA;AAClD,YAAA,kBAAkB,EAAE,kBAAkB;AACtC,YAAA,gBAAgB,EAAE,gBAAgB;SACnC,CAAC;KACH;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC3B;IAED,mBAAmB,GAAA;AACjB,QAAA,QACE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB;YACtC,qBAAqB,CAAC,0BAA0B,EAChD;KACH;IAED,qBAAqB,GAAA;QACnB,OAAO;AACL,YAAA,KAAK,EACH,IAAI,CAAC,gBAAgB,CAAC,iBAAiB;AACvC,gBAAA,qBAAqB,CAAC,2BAA2B;SACpD,CAAC;KACH;+GAvIU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,sJCRlC,m8BAmCA,EAAA,MAAA,EAAA,CAAA,41BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,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,EAAAmB,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD3Ba,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,m8BAAA,EAAA,MAAA,EAAA,CAAA,41BAAA,CAAA,EAAA,CAAA;8BAKlB,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEI,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;MEDI,iBAAiB,CAAA;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,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,iBAAiB,iBAJb,oBAAoB,CAAA,EAAA,OAAA,EAAA,CACzB,YAAY,EAAE,YAAY,aAC1B,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAEnB,iBAAiB,EAAA,OAAA,EAAA,CAHlB,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGzB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;oBACrC,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;MCEY,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAlB,kBAAkB,EAAA,YAAA,EAAA,CAJd,qBAAqB,CAC1B,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,YAAY,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAC7C,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEpB,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,kBAAkB,EAHnB,OAAA,EAAA,CAAA,YAAY,EAAE,YAAY,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAG5C,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;AACrC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,iBAAiB,CAAC;oBACxD,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA,CAAA;;;MCaY,sBAAsB,CAAA;IAejC,WAAoB,CAAA,QAAmB,EAAU,EAAc,EAAA;QAA3C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAU,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AAdtD,QAAA,IAAA,CAAA,UAAU,GAAsB;AACvC,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,eAAe,EAAE,OAAO;AACxB,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,gBAAgB,EAAE,MAAM;AACxB,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,iBAAiB,EAAE,SAAS;SAC7B,CAAC;AAIF,QAAA,IAAA,CAAA,gBAAgB,GAAe;AAC7B,YAAA,YAAY,EAAE,QAAQ;AACtB,YAAA,gBAAgB,EAAE,QAAQ;AAC1B,YAAA,UAAU,EAAE,yBAAyB;AACrC,YAAA,eAAe,EAAE,OAAO;AACxB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,GAAG;SACb,CAAC;AAEF,QAAA,IAAA,CAAA,UAAU,GAAe;AACvB,YAAA,UAAU,EAAE,kBAAkB;AAC9B,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,kBAAkB,EAAE,KAAK;SAC1B,CAAC;QAEF,IAAS,CAAA,SAAA,GAAc,IAAI,SAAS,CAAC;AACnC,YAAA,MAAM,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC;AAC5B,SAAA,CAAC,CAAC;AAEH,QAAA,IAAA,CAAA,WAAW,GAAkB;AAC3B,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,SAAS,EAAE,cAAc;SAC1B,CAAC;QAEF,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;KA7BwC;IA+BnE,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG;AAChB,YAAA,UAAU,EAAE,kBAAkB;AAC9B,YAAA,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe;AAChD,YAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;AAC5B,YAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;AAC9B,YAAA,kBAAkB,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU;AAC9C,YAAA,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO;SACjC,CAAC;QAEF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAE3C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK;cACnC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;cAC/B,GAAG,CAAC;QACR,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,GAAG,SAAS,GAAG,EAAE,CAAA,EAAA,CAAI,CAAC;QAC/C,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACpD,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AAExD,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS;iBACX,GAAG,CAAC,QAAQ,CAAC;AACd,kBAAE,YAAY,CAAC,SAAS,CAAC,CAAC,UAAkB,KAAI;AAC9C,gBAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC5B,aAAC,CAAC,CAAC;SACN;KACF;IAED,UAAU,CAAC,IAAU,EAAE,KAAY,EAAA;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;AAED,IAAA,eAAe,CAAC,IAAU,EAAA;QACxB,OAAO,IAAI,CAAC,UAAU,GAAG,oBAAoB,GAAG,qBAAqB,CAAC;KACvE;AAED,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAC9C,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAC7B,CAAC;QAEF,OAAO;AACL,YAAA,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK;AACzC,YAAA,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,aAAa,CAAC,eAAe;AACvE,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,QAAQ,EAAE,MAAM;SACjB,CAAC;KACH;AAED,IAAA,qBAAqB,CAAC,IAAe,EAAA;QACnC,QAAQ,IAAI;YACV,KAAK,SAAS,CAAC,IAAI;gBACjB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;YACxD,KAAK,SAAS,CAAC,MAAM;gBACnB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;YACxD,KAAK,SAAS,CAAC,OAAO;gBACpB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;AACxD,YAAA;gBACE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;SACzD;KACF;AAED,IAAA,QAAQ,CAAC,UAAkB,EAAA;AACzB,QAAA,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAC3C,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;aAAM;AACL,YAAA,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;AACjD,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK;AACvC,iBAAA,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;iBAC9D,MAAM,CAAC,OAAO,CAAW,CAAC;SAC9B;KACF;IAED,YAAY,CAAC,IAAU,EAAE,UAAkB,EAAA;AACzC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAE9D,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ;AACnC,iBAAA,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;iBACpD,MAAM,CAAC,OAAO,CAAW,CAAC;AAE7B,YAAA,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,gBAAA,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC;AACjC,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,gBAAA,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;KAC9B;IAED,gBAAgB,GAAA;QACd,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1B,SAAC,CAAC,CAAC;KACJ;IAED,iBAAiB,GAAA;QACf,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,MAAM;SAC3C,CAAC;KACH;IAED,iBAAiB,GAAA;QACf,OAAO;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,MAAM;AAC1C,YAAA,iBAAiB,EAAE,MAAM;AACzB,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,UAAU,EAAE,mCAAmC;AAC/C,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,QAAQ,EAAE;AACR,gBAAA,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,SAAS;AACxD,gBAAA,KAAK,EAAE,MAAM;AACd,aAAA;SACF,CAAC;KACH;IAED,oBAAoB,GAAA;QAClB,OAAO;AACL,YAAA,KAAK,EACH,IAAI,CAAC,UAAU,CAAC,gBAAgB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,MAAM;AACzE,YAAA,iBAAiB,EAAE,MAAM;AACzB,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,UAAU,EAAE,mCAAmC;AAC/C,YAAA,QAAQ,EAAE;AACR,gBAAA,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAiB,IAAI,SAAS;AAChE,aAAA;SACF,CAAC;KACH;IACD,eAAe,GAAA;QACb,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAED,iBAAiB,GAAA;AACf,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACxE,QAAA,MAAM,YAAY,GAChB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;;AAG3D,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAiB,KAAI;YACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAK;AAC5C,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,EACJ,kBAAkB,EAClB,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,SAAS,CACxC,CAAC;AACF,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,EACJ,OAAO,EACP,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,OAAO,CAC1C,CAAC;AACJ,aAAC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAK;gBAC5C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;AACpD,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,EACJ,OAAO,EACP,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,MAAM,CACpC,CAAC;AACJ,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;;AAGH,QAAA,YAAY,CAAC,OAAO,CAAC,CAAC,IAAiB,KAAI;YACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAK;AAC5C,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,EACJ,kBAAkB,EAClB,IAAI,CAAC,UAAU,CAAC,iBAAiB;oBAC/B,IAAI,CAAC,UAAU,CAAC,UAAU;AAC1B,oBAAA,SAAS,CACZ,CAAC;AACF,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,EACJ,OAAO,EACP,IAAI,CAAC,UAAU,CAAC,qBAAqB;oBACnC,IAAI,CAAC,UAAU,CAAC,cAAc;AAC9B,oBAAA,MAAM,CACT,CAAC;AACJ,aAAC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAK;gBAC5C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;AACpD,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,EACJ,OAAO,EACP,IAAI,CAAC,UAAU,CAAC,gBAAgB;oBAC9B,IAAI,CAAC,UAAU,CAAC,SAAS;AACzB,oBAAA,MAAM,CACT,CAAC;AACJ,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;+GAtPU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,8FCvBnC,whFAoFA,EAAA,MAAA,EAAA,CAAA,w8DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnB,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,EAAAoB,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FD7Da,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,whFAAA,EAAA,MAAA,EAAA,CAAA,w8DAAA,CAAA,EAAA,CAAA;uGAKnB,UAAU,EAAA,CAAA;sBAAlB,KAAK;;;MEZK,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAnB,mBAAmB,EAAA,YAAA,EAAA,CAJf,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAC3B,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAC3D,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;AAErB,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,mBAAmB,YAHpB,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAG1D,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,CAAC;oBACtE,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;MCHY,iBAAiB,CAAA;AAL9B,IAAA,WAAA,GAAA;AAMW,QAAA,IAAA,CAAA,YAAY,GAAiB;AACpC,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACzC,CAAC;AA2BH,KAAA;IAzBC,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;KACjC;IAED,aAAa,GAAA;AACX,QAAA,QACE,IAAI,CAAC,YAAY,CAAC,UAAU,IAAI;AAC9B,YAAA,eAAe,EAAE,SAAS;AAC1B,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,MAAM,EAAE,GAAG;AACZ,SAAA,EACD;KACH;IAED,YAAY,GAAA;AACV,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1C,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;QAExD,OAAO,cAAc,KAAK,WAAW;cACjC,CAAG,EAAA,WAAW,CAAE,CAAA;AAClB,cAAE,CAAG,EAAA,cAAc,CAAM,GAAA,EAAA,WAAW,EAAE,CAAC;KAC1C;+GA/BU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,2FCR9B,8QASA,EAAA,MAAA,EAAA,CAAA,wJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDDa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACE,WAAW,EAAA,QAAA,EAAA,8QAAA,EAAA,MAAA,EAAA,CAAA,wJAAA,CAAA,EAAA,CAAA;8BAKZ,YAAY,EAAA,CAAA;sBAApB,KAAK;;;MECK,mBAAmB,CAAA;AAK9B,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAJ1B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAa,EAAE,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QACtC,IAAQ,CAAA,QAAA,GAAU,EAAE,CAAC;QAG3B,IAAI,CAAC,MAAM,CAAC,MAAM;AACf,aAAA,IAAI,CACH,MAAM,CACJ,CAAC,KAAK,KAA6B,KAAK,YAAY,aAAa,CAClE,CACF;AACA,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;YAClC,IAAI,QAAQ,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClD,YAAA,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,IAAI,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACN;;AAGD,IAAA,WAAW,CAAC,QAAe,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;AAED,IAAA,gBAAgB,CAAC,GAAA,GAAc,EAAE,EAAE,cAA0B,EAAE,EAAA;QAC7D,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,WAAW,CAAC;SACpB;AAED,QAAA,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;AAEjE,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAChC,IAAI,CAAC,QAAQ,EACb,YAAY,EACZ,WAAW,CACZ,CAAC;KACH;AAEO,IAAA,sBAAsB,CAC5B,QAAe,EACf,YAAsB,EACtB,WAAuB,EAAA;AAEvB,QAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,YAAA,OAAO,WAAW,CAAC;SACpB;AAED,QAAA,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;QAE5C,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAC/B,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,cAAc,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAC3E,CAAC;QAEF,IAAI,WAAW,EAAE;AACf,YAAA,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;YAErE,IACE,WAAW,CAAC,QAAQ;AACpB,gBAAA,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AAC/B,gBAAA,YAAY,CAAC,MAAM,GAAG,CAAC,EACvB;AACA,gBAAA,OAAO,IAAI,CAAC,qBAAqB,CAC/B,WAAW,CAAC,QAAQ,EACpB,YAAY,EACZ,WAAW,EACX,cAAc,IAAI,EAAE,CACrB,CAAC;aACH;SACF;AAED,QAAA,OAAO,WAAW,CAAC;KACpB;AAEO,IAAA,qBAAqB,CAC3B,QAAgB,EAChB,YAAsB,EACtB,WAAuB,EACvB,UAAkB,EAAA;AAElB,QAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,YAAA,OAAO,WAAW,CAAC;SACpB;AAED,QAAA,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;AAC5C,QAAA,UAAU,GAAG,CAAI,CAAA,EAAA,UAAU,CAAI,CAAA,EAAA,cAAc,EAAE,CAAC;AAEhD,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;QAErE,IAAI,WAAW,EAAE;AACf,YAAA,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;YAErE,IACE,WAAW,CAAC,QAAQ;AACpB,gBAAA,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AAC/B,gBAAA,YAAY,CAAC,MAAM,GAAG,CAAC,EACvB;AACA,gBAAA,OAAO,IAAI,CAAC,qBAAqB,CAC/B,WAAW,CAAC,QAAQ,EACpB,YAAY,EACZ,WAAW,EACX,UAAU,CACX,CAAC;aACH;SACF;aAAM;AACL,YAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAC9B,CAAC,IAAI,KACH,IAAI,CAAC,QAAQ;AACb,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,UAAU,CAAC,CAC1D,CAAC;AACF,YAAA,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,EAAE;AACrC,gBAAA,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CACxC,CAAC,KAAW,KAAK,KAAK,CAAC,GAAG,KAAK,UAAU,CAC1C,CAAC;gBACF,IAAI,SAAS,EAAE;AACb,oBAAA,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;AACnE,oBAAA,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;oBAEjE,IACE,SAAS,CAAC,QAAQ;AAClB,wBAAA,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AAC7B,wBAAA,YAAY,CAAC,MAAM,GAAG,CAAC,EACvB;AACA,wBAAA,OAAO,IAAI,CAAC,qBAAqB,CAC/B,SAAS,CAAC,QAAQ,EAClB,YAAY,EACZ,WAAW,EACX,UAAU,CACX,CAAC;qBACH;iBACF;aACF;SACF;AAED,QAAA,OAAO,WAAW,CAAC;KACpB;+GAxIU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,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,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCUY,qBAAqB,CAAA;AAMhC,IAAA,WAAA,CACU,iBAAsC,EACtC,QAAmB,EACnB,EAAc,EAAA;QAFd,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAqB;QACtC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;KACpB;IAEJ,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;;QAG5D,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,SAAS,CACxE,CAAC,UAAU,KAAI;AACb,YAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;AAC1B,SAAC,CACF,CAAC;KACH;IAED,eAAe,GAAA;QACb,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAED,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,YAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;SAC3C;KACF;IAED,qBAAqB,GAAA;QACnB,MAAM,YAAY,GAChB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,IAAI,KAAK,CAAC;QACjE,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ;cAC3D,CACE,oCAAA,EAAA,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,GACjC,CAAA,uBAAA,EAA0B,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,GAAG,CAC1D,SAAA,EAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAChC,CAAI,EAAA,CAAA;cACJ,EAAE,CAAC;;QAGP,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CACvD,8BAA8B,CAC/B,CAAC;YAEF,IAAI,aAAa,EAAE;gBACjB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,kBAAkB,EAClB,eAAe,CAChB,CAAC;aACH;AACH,SAAC,CAAC,CAAC;KACJ;+GA5DU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAS,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,wGCnBlC,mMAMA,EAAA,MAAA,EAAA,CAAA,yXAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDaa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,mMAAA,EAAA,MAAA,EAAA,CAAA,yXAAA,CAAA,EAAA,CAAA;sIAKjB,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;;;MEZK,uBAAuB,CAAA;AALpC,IAAA,WAAA,GAAA;AAOY,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAEvE,IAAgB,CAAA,gBAAA,GAAY,IAAI,CAAC;AAsClC,KAAA;IApCC,QAAQ,GAAA;QACN,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,CAAC,2BAA2B,EAAE,CAAC;KACpC;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC/C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC3B;;IAGD,8BAA8B,GAAA;AAC5B,QAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,GAAG;AAC7C,YAAA,UAAU,EAAE,6BAA6B;YACzC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,QAAQ,IAAI,IAAI;YACxE,eAAe,EACb,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,eAAe,IAAI,MAAM;YACzE,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,OAAO,IAAI,MAAM;YACxE,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,MAAM,IAAI,MAAM;AACtE,YAAA,GAAG,IAAI,CAAC,kBAAkB,CAAC,oBAAoB;SAChD,CAAC;KACH;;IAGD,2BAA2B,GAAA;AACzB,QAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,GAAG;AAC1C,YAAA,UAAU,EAAE,0BAA0B;YACtC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,QAAQ,IAAI,KAAK;YACtE,eAAe,EACb,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,eAAe,IAAI,SAAS;YACzE,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,OAAO,IAAI,MAAM;AACrE,YAAA,kBAAkB,EAAE,IAAI;AACxB,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB;SAC7C,CAAC;KACH;+GAzCU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,2JCRpC,kvCAwCA,EAAA,MAAA,EAAA,CAAA,0mBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6B,qBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,sBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA7B,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8B,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDhCa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,kvCAAA,EAAA,MAAA,EAAA,CAAA,0mBAAA,CAAA,EAAA,CAAA;8BAKnB,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACI,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;MEAI,cAAc,CAAA;+GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAd,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,cAAc,iBAJV,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACtB,YAAY,EAAE,YAAY,aAC1B,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAEhB,cAAc,EAAA,OAAA,EAAA,CAHf,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGzB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;AACjC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;oBACrC,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA,CAAA;;;MCCY,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,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,kBAAkB,iBAJd,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAC1B,YAAY,EAAE,gBAAgB,aAC9B,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAEpB,kBAAkB,EAAA,OAAA,EAAA,CAHnB,YAAY,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAG7B,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;AACrC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;oBACzC,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA,CAAA;;;MCcY,oBAAoB,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAApB,oBAAoB,EAAA,YAAA,EAAA,CAZhB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAEpC,YAAY;YACZ,kBAAkB;YAClB,YAAY;YACZ,mBAAmB;YACnB,YAAY;YACZ,cAAc;AACd,YAAA,kBAAkB,aAEV,uBAAuB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEtB,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,oBAAoB,YAV7B,YAAY;YACZ,kBAAkB;YAClB,YAAY;YACZ,mBAAmB;YACnB,YAAY;YACZ,cAAc;YACd,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIT,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,uBAAuB,CAAC;AACvC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,YAAY;wBACZ,mBAAmB;wBACnB,YAAY;wBACZ,cAAc;wBACd,kBAAkB;AACnB,qBAAA;oBACD,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACnC,iBAAA,CAAA;;;MCPY,iBAAiB,CAAA;IAgB5B,WAAoB,CAAA,QAAmB,EAAU,EAAc,EAAA;QAA3C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAU,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AAftD,QAAA,IAAA,CAAA,YAAY,GAAgB;AACnC,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,eAAe,EAAE,MAAM;AACvB,YAAA,WAAW,EAAE,MAAM;SACpB,CAAC;KAEiE;IAEnE,QAAQ,GAAA;;KAEP;IAED,eAAe,GAAA;QACb,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAED,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,KAAK,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;KACjE;IAED,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,QAAQ,CAAC;KAC3C;IAED,iBAAiB,GAAA;;AAEf,QAAA,MAAM,aAAa,GACjB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAE1D,IAAI,aAAa,EAAE;;AAEjB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,OAAO,EACP,IAAI,CAAC,YAAY,CAAC,SAAS,CAC5B,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,kBAAkB,EAClB,IAAI,CAAC,YAAY,CAAC,eAAe,CAClC,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,cAAc,EACd,IAAI,CAAC,YAAY,CAAC,WAAW,CAC9B,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,OAAO,EACP,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,MAAM,CAClC,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,QAAQ,EACR,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,MAAM,CACnC,CAAC;SACH;KACF;+GAnEU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,2FCf9B,8QASA,EAAA,MAAA,EAAA,CAAA,qCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDMa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACE,WAAW,EAAA,QAAA,EAAA,8QAAA,EAAA,MAAA,EAAA,CAAA,qCAAA,CAAA,EAAA,CAAA;uGAKZ,YAAY,EAAA,CAAA;sBAApB,KAAK;;;MENK,cAAc,CAAA;+GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAd,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,cAAc,iBAJV,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACtB,YAAY,EAAE,YAAY,aAC1B,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAEhB,cAAc,EAAA,OAAA,EAAA,CAHf,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGzB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;AACjC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;oBACrC,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA,CAAA;;;MCoBY,oBAAoB,CAAA;AAQ/B,IAAA,WAAA,CAAoB,EAAe,EAAA;QAAf,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QAN1B,IAAiB,CAAA,iBAAA,GAAkB,IAAI,CAAC;AACvC,QAAA,IAAA,CAAA,WAAW,GACnB,IAAI,YAAY,EAAc,CAAC;QAK/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;KACpC;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YACxB,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE;YACrD,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE;AACtD,SAAA,CAAC,CAAC;;QAEH,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YAChD,IAAI,CAAC,eAAe,CAAC,YAAa,CAAC,QAAQ,GAAG,MAAM,KAAK,OAAO,CAAC;AACnE,SAAC,CAAC,CAAC;KACJ;;IAGD,kBAAkB,GAAA;;AAEhB,QAAA,IAAI,CAAC,eAAe,CAAC,eAAe,GAAG;YACrC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,QAAQ,IAAI,EAAE;YAC9D,sBAAsB,EACpB,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,sBAAsB,IAAI,KAAK;AACvE,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe;SACxC,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG;YAC3B,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,IAAI,OAAO;YACjD,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,IAAI,QAAQ;YAC1D,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,IAAI,MAAM;YAClD,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,IAAI,MAAM;AACxD,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;SAC9B,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG;YAC7B,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,IAAI,MAAM;YACxD,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE;YACtD,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,IAAI,OAAO;YACrD,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,IAAI,MAAM;AACtD,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO;SAChC,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG;YAC5B,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,IAAI,MAAM;YACvD,SAAS,EACP,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,IAAI,qBAAqB;AACjE,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM;SAC/B,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG;YAC3B,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE;YACpD,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE;YACpD,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,IAAI,EAAE;AAC5D,YAAA,uBAAuB,EACrB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,uBAAuB;gBACnD,iEAAiE;AACnE,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK;SAC9B,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,eAAe,GAAG;YACrC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,QAAQ,IAAI,IAAI;YAChE,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,KAAK,IAAI,OAAO;YAC7D,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,OAAO,IAAI,MAAM;AAChE,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe;SACxC,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG;YACnC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,IAAI,UAAU;YAC5D,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,KAAK,IAAI,mBAAmB;YACvE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,QAAQ,IAAI,IAAI;AAC9D,YAAA,WAAW,EACT,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,WAAW;gBAC/C,gCAAgC;AAClC,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa;SACtC,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG;YACnC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,IAAI,UAAU;YAC5D,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,KAAK,IAAI,cAAc;YAClE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,QAAQ,IAAI,IAAI;AAC9D,YAAA,WAAW,EACT,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,WAAW;gBAC/C,2BAA2B;YAC7B,IAAI,EACF,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,IAAI,iBAAiB,CAAC,QAAQ;AACxE,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa;SACtC,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG;YAClC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,KAAK,IAAI,OAAO;YAC1D,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,IAAI,QAAQ;YACzD,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,IAAI,eAAe;YAChE,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,OAAO,IAAI,MAAM;YAC7D,UAAU,EACR,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,UAAU,IAAI,kBAAkB;YACrE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,QAAQ,IAAI,IAAI;YAC7D,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,KAAK,IAAI,MAAM;AACzD,YAAA,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY;SACrC,CAAC;KACH;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC7C;aAAM;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,KAAM,CAAC,YAAY;AACtC,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,uBAAuB,CAAC;SACvD;KACF;;IAGD,eAAe,GAAA;QACb,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,QAAQ;AACrE,cAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;cACrB,EAAE,CAAC;QACP,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,QAAQ;AACrE,cAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;cACrB,EAAE,CAAC;AAEP,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CACvB,IAAI,CAAC,eAAe,CAAC,aAAc,CAAC,IAAI,EACxC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAC1E,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CACvB,IAAI,CAAC,eAAe,CAAC,aAAc,CAAC,IAAI,EACxC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAC1E,CAAC;KACH;+GAjJU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EC7BjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0tDAsDA,EDnCI,MAAA,EAAA,CAAA,grBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,EAAA,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,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAc,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,+HACd,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAKR,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,YAAY;wBACZ,cAAc;wBACd,iBAAiB;AAClB,qBAAA,EAAA,QAAA,EAAA,0tDAAA,EAAA,MAAA,EAAA,CAAA,grBAAA,CAAA,EAAA,CAAA;kFAKQ,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;;;MExBI,oBAAoB,CAAA;AALjC,IAAA,WAAA,GAAA;QAOW,IAAiB,CAAA,iBAAA,GAAkB,IAAI,CAAC;AACvC,QAAA,IAAA,CAAA,WAAW,GACnB,IAAI,YAAY,EAAc,CAAC;AAEzB,QAAA,IAAA,CAAA,iBAAiB,GAAe;AACtC,YAAA,YAAY,EAAE,GAAG;AACjB,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,YAAY,EAAE,QAAQ;AACtB,YAAA,gBAAgB,EAAE,QAAQ;SAC3B,CAAC;AAkCH,KAAA;IAhCC,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;IAEO,mBAAmB,GAAA;;AAEzB,QAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CACxD,IAAI,CAAC,eAAe,CAAC,gBAAgB,CACtC,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CACtD,IAAI,CAAC,eAAe,CAAC,cAAc,CACpC,CAAC;;AAGF,QAAA,IAAI,CAAC,eAAe,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CACvD,IAAI,CAAC,eAAe,CAAC,eAAe,CACrC,CAAC;KACH;AAEO,IAAA,aAAa,CAAC,MAAmB,EAAA;QACvC,OAAO;YACL,GAAG,IAAI,CAAC,iBAAiB;AACzB,YAAA,IAAI,MAAM,IAAI,EAAE;SACjB,CAAC;KACH;AAED,IAAA,aAAa,CAAC,UAAsB,EAAA;AAClC,QAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACnC;+GA/CU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,sLCRjC,i/CAiDA,EAAA,MAAA,EAAA,CAAA,sqBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDzCa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,i/CAAA,EAAA,MAAA,EAAA,CAAA,sqBAAA,CAAA,EAAA,CAAA;8BAKhB,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;;;MEWI,iBAAiB,CAAA;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAjB,iBAAiB,EAAA,YAAA,EAAA,CAZb,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAEjC,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,iBAAiB;YACjB,YAAY;YACZ,cAAc;AACd,YAAA,oBAAoB,aAEZ,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEnB,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,iBAAiB,YAV1B,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,iBAAiB;YACjB,YAAY;YACZ,cAAc;YACd,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,iBAAiB;wBACjB,YAAY;wBACZ,cAAc;wBACd,oBAAoB;AACrB,qBAAA;oBACD,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;MCIY,iBAAiB,CAAA;AAsB5B,IAAA,WAAA,CACU,mBAAwC,EACxC,cAA8B,EAC9B,QAAmB,EACnB,EAAc,EAAA;QAHd,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AAzBf,QAAA,IAAA,CAAA,WAAW,GAAgB;AAClC,YAAA,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;AAChC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,yBAAyB;AAClC,YAAA,mBAAmB,EAAE;AACnB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,SAAS,EAAE,MAAM;AACjB,gBAAA,eAAe,EAAE,SAAS;AAC3B,aAAA;AACD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,SAAS,EAAE,MAAM;AACjB,gBAAA,eAAe,EAAE,SAAS;AAC3B,aAAA;SACF,CAAC;AAEQ,QAAA,IAAA,CAAA,OAAO,GAAuB,IAAI,YAAY,EAAE,CAAC;AACjD,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAE,CAAC;KAOtD;AAEJ,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACtD,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;KACF;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;YAC/B,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,IAAI,cAAc;AACvD,YAAA,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,eAAe;YACpD,sBAAsB,EAAE,IAAI,CAAC,cAAc,CACzC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CACrC;YACD,sBAAsB,EAAE,IAAI,CAAC,cAAc,CACzC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CACpC;YACD,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,IAAI,IAAI,aAAa;YACvE,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,IAAI,aAAa;YACtE,MAAM,EAAE,MAAK;AACX,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACpB,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,OAAO,EAAE,WAAW;AACpB,oBAAA,MAAM,EAAE,kBAAkB;AAC1B,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA,CAAC,CAAC;aACJ;AACD,YAAA,MAAM,EAAE,CAAC,IAAsB,KAAI;AACjC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACnB,gBAAA,IAAI,IAAI,KAAK,gBAAgB,CAAC,MAAM,EAAE;AACpC,oBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,wBAAA,QAAQ,EAAE,OAAO;AACjB,wBAAA,OAAO,EAAE,UAAU;AACnB,wBAAA,MAAM,EAAE,kBAAkB;AAC1B,wBAAA,IAAI,EAAE,IAAI;AACX,qBAAA,CAAC,CAAC;iBACJ;aACF;AACF,SAAA,CAAC,CAAC;;QAGH,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACvE,IAAI,aAAa,EAAE;AACjB,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,OAAO,EACP,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,OAAO,CAClC,CAAC;AACF,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,aAAa,EACb,QAAQ,EACR,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,MAAM,CAClC,CAAC;aACH;SACF,EAAE,CAAC,CAAC,CAAC;KACP;AAEO,IAAA,cAAc,CAAC,YAA0B,EAAA;AAC/C,QAAA,OAAO,YAAY,EAAE,UAAU,IAAI,aAAa,CAAC;KAClD;+GAzFU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,+HAFjB,CAAC,mBAAmB,EAAE,cAAc,CAAC,+CCvBlD,4ZAaA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,IAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,KAAA,EAAA,UAAA,EAAA,UAAA,EAAA,KAAA,EAAA,YAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDYa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAGV,SAAA,EAAA,CAAC,mBAAmB,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,4ZAAA,EAAA,CAAA;0KAGvC,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAkBI,OAAO,EAAA,CAAA;sBAAhB,MAAM;gBACG,MAAM,EAAA,CAAA;sBAAf,MAAM;;;ME1BI,cAAc,CAAA;+GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAd,cAAc,EAAA,YAAA,EAAA,CAVV,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAE9B,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,WAAW;AACX,YAAA,mBAAmB,aAEX,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEhB,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,cAAc,YARvB,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,WAAW;YACX,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIV,cAAc,EAAA,UAAA,EAAA,CAAA;kBAX1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;AACjC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,YAAY;wBACZ,cAAc;wBACd,WAAW;wBACX,mBAAmB;AACpB,qBAAA;oBACD,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC7B,iBAAA,CAAA;;;MCkHY,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,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,kBAAkB,YAvG3B,YAAY;YACZ,WAAW;YACX,0BAA0B;YAC1B,yBAAyB;;YAGzB,qBAAqB;YACrB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,qBAAqB;YACrB,iBAAiB;;YAGjB,kBAAkB;YAClB,uBAAuB;;YAGvB,aAAa;;YAGb,YAAY;;YAGZ,YAAY;YACZ,iBAAiB;;YAGjB,kBAAkB;;YAGlB,mBAAmB;;YAGnB,oBAAoB;;YAGpB,cAAc;;YAGd,kBAAkB;;YAGlB,iBAAiB;;YAGjB,cAAc;;AAGd,YAAA,cAAc,aAGd,0BAA0B;YAC1B,yBAAyB;;YAGzB,qBAAqB;YACrB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,qBAAqB;YACrB,iBAAiB;;YAGjB,kBAAkB;YAClB,uBAAuB;;YAGvB,aAAa;;YAGb,YAAY;;YAGZ,YAAY;YACZ,iBAAiB;;YAEjB,kBAAkB;;YAGlB,mBAAmB;;YAGnB,oBAAoB;;YAGpB,cAAc;;YAGd,kBAAkB;;YAGlB,iBAAiB;;YAGjB,cAAc;;YAGd,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;AAGL,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,kBAAkB,YAvG3B,YAAY;YACZ,WAAW;YACX,0BAA0B;YAC1B,yBAAyB;;YAGzB,qBAAqB;YACrB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,qBAAqB;YACrB,iBAAiB;;YAGjB,kBAAkB;YAClB,uBAAuB;;YAGvB,aAAa;;YAGb,YAAY;;YAGZ,YAAY;YACZ,iBAAiB;;YAGjB,kBAAkB;;YAGlB,mBAAmB;;YAGnB,oBAAoB;;YAGpB,cAAc;;YAGd,kBAAkB;;YAGlB,iBAAiB;;YAGjB,cAAc;;AAGd,YAAA,cAAc,EAGd,0BAA0B;YAC1B,yBAAyB;;YAGzB,qBAAqB;YACrB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB;YACnB,qBAAqB;YACrB,iBAAiB;;YAGjB,kBAAkB;YAClB,uBAAuB;;YAGvB,aAAa;;YAGb,YAAY;;YAGZ,YAAY;YACZ,iBAAiB;;YAEjB,kBAAkB;;YAGlB,mBAAmB;;YAGnB,oBAAoB;;YAGpB,cAAc;;YAGd,kBAAkB;;YAGlB,iBAAiB;;YAGjB,cAAc;;YAGd,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGL,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAzG9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,0BAA0B;wBAC1B,yBAAyB;;wBAGzB,qBAAqB;wBACrB,iBAAiB;wBACjB,mBAAmB;wBACnB,mBAAmB;wBACnB,mBAAmB;wBACnB,qBAAqB;wBACrB,iBAAiB;;wBAGjB,kBAAkB;wBAClB,uBAAuB;;wBAGvB,aAAa;;wBAGb,YAAY;;wBAGZ,YAAY;wBACZ,iBAAiB;;wBAGjB,kBAAkB;;wBAGlB,mBAAmB;;wBAGnB,oBAAoB;;wBAGpB,cAAc;;wBAGd,kBAAkB;;wBAGlB,iBAAiB;;wBAGjB,cAAc;;wBAGd,cAAc;AACf,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,0BAA0B;wBAC1B,yBAAyB;;wBAGzB,qBAAqB;wBACrB,iBAAiB;wBACjB,mBAAmB;wBACnB,mBAAmB;wBACnB,mBAAmB;wBACnB,qBAAqB;wBACrB,iBAAiB;;wBAGjB,kBAAkB;wBAClB,uBAAuB;;wBAGvB,aAAa;;wBAGb,YAAY;;wBAGZ,YAAY;wBACZ,iBAAiB;;wBAEjB,kBAAkB;;wBAGlB,mBAAmB;;wBAGnB,oBAAoB;;wBAGpB,cAAc;;wBAGd,kBAAkB;;wBAGlB,iBAAiB;;wBAGjB,cAAc;;wBAGd,cAAc;AACf,qBAAA;AACF,iBAAA,CAAA;;;MCtHY,oBAAoB,CAAA;AAoB/B,IAAA,WAAA,GAAA;AAlBS,QAAA,IAAA,CAAA,MAAM,GAAoB;AACjC,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,eAAe,EAAE,YAAY;AAC7B,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,UAAU,EAAE;AACV,gBAAA,UAAU,EAAE,iBAAiB;AAC7B,gBAAA,KAAK,EAAE,YAAY;AACnB,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,IAAI,EAAE;AACJ,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA;AACF,aAAA;SACF,CAAC;AAKA,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;KACrD;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACvE,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;KACF;IAEO,qBAAqB,GAAA;QAC3B,MAAM,UAAU,GACd,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,KAAK,QAAQ;AAC/C,cAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK;AAC9B,cAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,KAAoB,EAAE,IAAI,IAAI,YAAY,CAAC;QAE1E,OAAO;AACL,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,IAAI,EAAE;AACJ,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,WAAW,EAAE,SAAS;AACtB,wBAAA,eAAe,EAAE,yBAAyB;AAC1C,wBAAA,WAAW,EAAE,CAAC;AACd,wBAAA,OAAO,EAAE,GAAG;AACZ,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,WAAW,EAAE,CAAC;AACd,wBAAA,oBAAoB,EAAE,SAAS;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,OAAO,EAAE;AACP,oBAAA,MAAM,EAAE;AACN,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,QAAQ,EAAE,QAAQ;AACnB,qBAAA;AACD,oBAAA,OAAO,EAAE;AACP,wBAAA,SAAS,EAAE;4BACT,KAAK,EAAE,CAAC,OAAY,KAClB,CAAA,EAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAA,EAAA,EAAK,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,CAAA;AACxD,yBAAA;AACF,qBAAA;AACD,oBAAA,UAAU,EAAE;AACV,wBAAA,OAAO,EAAE,KAAK;AACf,qBAAA;AACF,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,CAAC,EAAE;AACD,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,KAAK,EAAE;AACL,4BAAA,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;AACjC,4BAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;AAC7B,yBAAA;AACF,qBAAA;AACD,oBAAA,CAAC,EAAE;AACD,wBAAA,KAAK,EAAE;AACL,4BAAA,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;AACjC,4BAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;AAC7B,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;SACF,CAAC;KACH;IAEO,eAAe,GAAA;AACrB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;AACxD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;;AAGjD,QAAA,IAAI,CAAC,eAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;KAChD;+GAnGU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,gICbjC,oHAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2B,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDUa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,oHAAA,EAAA,CAAA;wDAKhB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;;;MEJK,iBAAiB,CAAA;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;gHAAjB,iBAAiB,EAAA,YAAA,EAAA,CAJb,oBAAoB,CACzB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,YAAY,EAAE,aAAa,CAAA,EAAA,OAAA,EAAA,CACzC,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEnB,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,iBAAiB,EAHlB,OAAA,EAAA,CAAA,YAAY,EAAE,YAAY,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGxC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,CAAC;oBACpD,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;ACVD;;ACAA;;AAEG;;;;"}