@tilde-nlp/ngx-common 8.1.20 → 8.1.21
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":"tilde-nlp-ngx-common.mjs","sources":["../../../projects/ngx-common/src/lib/services/icon/icon.service.ts","../../../projects/ngx-common/src/lib/services/dom/dom.service.ts","../../../projects/ngx-common/src/lib/close-button/close-button.component.ts","../../../projects/ngx-common/src/lib/close-button/close-button.component.html","../../../projects/ngx-common/src/lib/close-button/close-button.module.ts","../../../projects/ngx-common/src/lib/notification-message/notification-message.component.html","../../../projects/ngx-common/src/lib/notification-message/notification-message.component.ts","../../../projects/ngx-common/src/lib/notification-message/notification-message.module.ts","../../../projects/ngx-common/src/lib/notification-message/enums/notification-message-type.enum.ts","../../../projects/ngx-common/src/lib/services/alert/injection-tokens/alert-configuration.token.ts","../../../projects/ngx-common/src/lib/services/alert/alert.service.ts","../../../projects/ngx-common/src/lib/helpers/missing-translation.helper.ts","../../../projects/ngx-common/src/lib/helpers/save-file.helper.ts","../../../projects/ngx-common/src/lib/helpers/html-element-parse.helper.ts","../../../projects/ngx-common/src/lib/helpers/auth-headers.helper.ts","../../../projects/ngx-common/src/lib/helpers/file-extension.helper.ts","../../../projects/ngx-common/src/lib/helpers/conversion.helper.ts","../../../projects/ngx-common/src/lib/helpers/sort.helper.ts","../../../projects/ngx-common/src/lib/helpers/html.helper.ts","../../../projects/ngx-common/src/lib/constants/screen-size.const.ts","../../../projects/ngx-common/src/lib/constants/last-used-system-local-storage-key.const.ts","../../../projects/ngx-common/src/lib/constants/error-codes.const.ts","../../../projects/ngx-common/src/lib/helpers/resolution.helper.ts","../../../projects/ngx-common/src/lib/pipes/file-size-label/enums/file-size-unit.enum.ts","../../../projects/ngx-common/src/lib/pipes/file-size-label/file-size-label.pipe.ts","../../../projects/ngx-common/src/lib/helpers/file-size-label.helper.ts","../../../projects/ngx-common/src/lib/helpers/custom-paginator-internatioinalization.helper.ts","../../../projects/ngx-common/src/lib/helpers/hash.helper.ts","../../../projects/ngx-common/src/lib/terminology/services/system-api-v2/models/engine-status.enum.ts","../../../projects/ngx-common/src/lib/terminology/services/system-api-v2/models/engine-sub-status.enum.ts","../../../projects/ngx-common/src/lib/terminology/services/system-api-v2/models/tilde-vendor.const.ts","../../../projects/ngx-common/src/lib/terminology/config/services/terminology-config/terminology-config.service.ts","../../../projects/ngx-common/src/lib/terminology/services/system-api-v2/system-api.service.ts","../../../projects/ngx-common/src/lib/services/system/system.service.ts","../../../projects/ngx-common/src/lib/pipes/filter-with-highlight/filter-with-highlight.pipe.ts","../../../projects/ngx-common/src/lib/pipes/filter-with-highlight/filter-with-highlight.module.ts","../../../projects/ngx-common/src/lib/pipes/sort-translations/sort-translations.pipe.ts","../../../projects/ngx-common/src/lib/pipes/sort-translations/sort-translations.module.ts","../../../projects/ngx-common/src/lib/pipes/sort-translations-by-property/sort-translations-by-property.pipe.ts","../../../projects/ngx-common/src/lib/pipes/sort-translations-by-property/sort-translations-by-property.module.ts","../../../projects/ngx-common/src/lib/pipes/language-translate/language-translate.pipe.ts","../../../projects/ngx-common/src/lib/pipes/language-translate/language-translate.module.ts","../../../projects/ngx-common/src/lib/pipes/date-ago/models/date-ago-settings.token.ts","../../../projects/ngx-common/src/lib/pipes/date-ago/date-ago.pipe.ts","../../../projects/ngx-common/src/lib/pipes/date-ago/date-ago.module.ts","../../../projects/ngx-common/src/lib/pipes/object-length/object-length.pipe.ts","../../../projects/ngx-common/src/lib/pipes/object-length/object-length.module.ts","../../../projects/ngx-common/src/lib/pipes/sort-by-number/sort-by-number.pipe.ts","../../../projects/ngx-common/src/lib/pipes/sort-alphabetically/sort-alphabetically.pipe.ts","../../../projects/ngx-common/src/lib/pipes/sort-alphabetically/sort-alphabetically.module.ts","../../../projects/ngx-common/src/lib/pipes/sort-language-list/sort-language-list.pipe.ts","../../../projects/ngx-common/src/lib/pipes/domain-translate/domain-translate.pipe.ts","../../../projects/ngx-common/src/lib/pipes/sort-domains/sort-domains.pipe.ts","../../../projects/ngx-common/src/lib/services/language-translate/language-translate.service.ts","../../../projects/ngx-common/src/lib/services/notification/models/operations.enum.ts","../../../projects/ngx-common/src/lib/services/notification/notification.service.ts","../../../projects/ngx-common/src/lib/inline-message/models/inline-message-icon-position.enum.ts","../../../projects/ngx-common/src/lib/inline-message/inline-message.component.html","../../../projects/ngx-common/src/lib/inline-message/inline-message.component.ts","../../../projects/ngx-common/src/lib/inline-message/inline-message.module.ts","../../../projects/ngx-common/src/lib/inline-message/models/inline-message-type.enum.ts","../../../projects/ngx-common/src/lib/directives/click-outside/click-outside.directive.ts","../../../projects/ngx-common/src/lib/directives/click-outside/click-outside.module.ts","../../../projects/ngx-common/src/lib/directives/drag-and-drop/drag-and-drop.directive.ts","../../../projects/ngx-common/src/lib/directives/drag-and-drop/drag-and-drop.module.ts","../../../projects/ngx-common/src/lib/directives/mat-button-loading/mat-button-loading.directive.ts","../../../projects/ngx-common/src/lib/directives/mat-button-loading/mat-button-loading.module.ts","../../../projects/ngx-common/src/lib/tld-loader/tld-loader.component.ts","../../../projects/ngx-common/src/lib/tld-loader/tld-loader.component.html","../../../projects/ngx-common/src/lib/tld-loader/tld-loader.module.ts","../../../projects/ngx-common/src/lib/company-product/company-product.component.ts","../../../projects/ngx-common/src/lib/company-product/company-product.component.html","../../../projects/ngx-common/src/lib/company-product/company-product.module.ts","../../../projects/ngx-common/src/lib/footer/footer.component.html","../../../projects/ngx-common/src/lib/footer/footer.component.ts","../../../projects/ngx-common/src/lib/footer/footer.module.ts","../../../projects/ngx-common/src/lib/file-upload/models/file-upload-error-type.enum.ts","../../../projects/ngx-common/src/lib/extension-dialog/models/enums/file-type-icons.enum.ts","../../../projects/ngx-common/src/lib/extension-dialog/models/enums/file-categories.enum.ts","../../../projects/ngx-common/src/lib/extension-dialog/models/enums/file-types.enum.ts","../../../projects/ngx-common/src/lib/extension-dialog/models/enums/file-extensions.enum.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/word.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/web.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/scanned.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/powerpoint.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/pdf.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/other.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/office-other.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/interchange.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/excel.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/extension-dialog.component.html","../../../projects/ngx-common/src/lib/extension-dialog/extension-dialog.component.ts","../../../projects/ngx-common/src/lib/extension-dialog/services/extension-dialog.service.ts","../../../projects/ngx-common/src/lib/extension-dialog/components/open-extension-dialog/open-extension-dialog.component.ts","../../../projects/ngx-common/src/lib/extension-dialog/components/open-extension-dialog/open-extension-dialog.component.html","../../../projects/ngx-common/src/lib/extension-dialog/extension-dialog.module.ts","../../../projects/ngx-common/src/lib/file-upload/models/file-upload.icon.ts","../../../projects/ngx-common/src/lib/file-upload/file-upload.component.html","../../../projects/ngx-common/src/lib/file-upload/file-upload.component.ts","../../../projects/ngx-common/src/lib/file-upload/file-upload.module.ts","../../../projects/ngx-common/src/lib/filter-bar/filter-bar.component.html","../../../projects/ngx-common/src/lib/filter-bar/filter-bar.component.ts","../../../projects/ngx-common/src/lib/filter-bar/filter-bar.module.ts","../../../projects/ngx-common/src/lib/multi-functional-table/constants/disable-export-attribute-name.const.ts","../../../projects/ngx-common/src/lib/multi-functional-table/models/export-format.enum.ts","../../../projects/ngx-common/src/lib/status-display/status-display.component.html","../../../projects/ngx-common/src/lib/status-display/status-display.component.ts","../../../projects/ngx-common/src/lib/multi-functional-table/multi-functional-table.component.html","../../../projects/ngx-common/src/lib/multi-functional-table/multi-functional-table.component.ts","../../../projects/ngx-common/src/lib/status-display/status-display.module.ts","../../../projects/ngx-common/src/lib/multi-functional-table/multi-functional-table.module.ts","../../../projects/ngx-common/src/lib/confirmation-modal/models/confirmation.enum.ts","../../../projects/ngx-common/src/lib/confirmation-modal/confirmation-modal.component.html","../../../projects/ngx-common/src/lib/confirmation-modal/confirmation-modal.component.ts","../../../projects/ngx-common/src/lib/confirmation-modal/confirmation-modal.module.ts","../../../projects/ngx-common/src/lib/confirmation-modal/services/confirmation.service.ts","../../../projects/ngx-common/src/lib/open-close-button/injection-tokens/open-close-btn-icons.token.ts","../../../projects/ngx-common/src/lib/open-close-button/open-close-button.component.html","../../../projects/ngx-common/src/lib/open-close-button/open-close-button.component.ts","../../../projects/ngx-common/src/lib/open-close-button/open-close-button.module.ts","../../../projects/ngx-common/src/lib/terminology/enums/engine-term-collection-scope.enum.ts","../../../projects/ngx-common/src/lib/terminology/enums/engine-term-collection-source.enum.ts","../../../projects/ngx-common/src/lib/terminology/enums/engine-term-collection-status.enum.ts","../../../projects/ngx-common/src/lib/terminology/enums/combined-collection-tooltip-key.enum.ts","../../../projects/ngx-common/src/lib/terminology/enums/mt-collection-status.enum.ts","../../../projects/ngx-common/src/lib/terminology/enums/engine-term-collection-sub-status.enum.ts","../../../projects/ngx-common/src/lib/terminology/models/combined-collection.model.ts","../../../projects/ngx-common/src/lib/terminology/services/terminology-collection/terminology-collection.service.ts","../../../projects/ngx-common/src/lib/terminology/services/engine-term-api/engine-term-api.service.ts","../../../projects/ngx-common/src/lib/terminology/services/terminology-api/terminology-api.service.ts","../../../projects/ngx-common/src/lib/terminology/services/terminology/terminology.service.ts","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-collection-list/terminology-collection-card/terminology-collection-card.component.html","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-collection-list/terminology-collection-card/terminology-collection-card.component.ts","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-collection-list/terminology-collection-list.component.html","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-collection-list/terminology-collection-list.component.ts","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-create-collection/terminology-create-collection-dialog/terminology-create-collection-dialog.component.html","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-create-collection/terminology-create-collection-dialog/terminology-create-collection-dialog.component.ts","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-create-collection/terminology-create-collection.component.html","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-create-collection/terminology-create-collection.component.ts","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-panel.component.html","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-panel.component.ts","../../../projects/ngx-common/src/lib/terminology/icons/collections-menu.icon.ts","../../../projects/ngx-common/src/lib/terminology/terminology.component.html","../../../projects/ngx-common/src/lib/terminology/terminology.component.ts","../../../projects/ngx-common/src/lib/terminology/terminology.module.ts","../../../projects/ngx-common/src/lib/text-to-speech/services/tts-api.service.ts","../../../projects/ngx-common/src/lib/text-to-speech/text-to-speech.component.html","../../../projects/ngx-common/src/lib/text-to-speech/text-to-speech.component.ts","../../../projects/ngx-common/src/lib/llm/models/llm-actions.enum.ts","../../../projects/ngx-common/src/lib/analytics/plausible/plausible.helper.ts","../../../projects/ngx-common/src/lib/analytics/plausible/plausible-event.directive.ts","../../../projects/ngx-common/src/lib/analytics/plausible/plausible.module.ts","../../../projects/ngx-common/src/lib/llm/models/llm-writing-style.enum.ts","../../../projects/ngx-common/src/lib/llm/models/llm-configuration.token.ts","../../../projects/ngx-common/src/lib/llm/services/llm-helper.service.ts","../../../projects/ngx-common/src/lib/llm/shared/llm-textarea/llm-textarea.component.ts","../../../projects/ngx-common/src/lib/llm/shared/llm-textarea/llm-textarea.component.html","../../../projects/ngx-common/src/lib/llm/components/llm-textarea-with-actions/llm-textarea-with-actions.component.html","../../../projects/ngx-common/src/lib/llm/components/llm-textarea-with-actions/llm-textarea-with-actions.component.ts","../../../projects/ngx-common/src/lib/llm/icons/llm-menu.icon.ts","../../../projects/ngx-common/src/lib/new-feature-dialog/new-feature-dialog.component.ts","../../../projects/ngx-common/src/lib/new-feature-dialog/new-feature-dialog.component.html","../../../projects/ngx-common/src/lib/new-feature-dialog/new-feature-dialog-wrapper/new-feature-dialog.service.ts","../../../projects/ngx-common/src/lib/new-feature-dialog/new-feature-dialog-wrapper/new-feature-dialog-wrapper.component.ts","../../../projects/ngx-common/src/lib/llm/components/llm-summary/llm-summary.component.ts","../../../projects/ngx-common/src/lib/llm/components/llm-summary/llm-summary.component.html","../../../projects/ngx-common/src/lib/llm/components/llm-rephrase/llm-rephrase.component.ts","../../../projects/ngx-common/src/lib/llm/components/llm-rephrase/llm-rephrase.component.html","../../../projects/ngx-common/src/lib/llm/llm.component.html","../../../projects/ngx-common/src/lib/llm/llm.component.ts","../../../projects/ngx-common/src/lib/llm/llm.module.ts","../../../projects/ngx-common/src/lib/sidebar/services/sidebar.service.ts","../../../projects/ngx-common/src/lib/sidebar/sidebar.component.ts","../../../projects/ngx-common/src/lib/sidebar/sidebar.component.html","../../../projects/ngx-common/src/lib/toast/toast-service/toast-service.service.ts","../../../projects/ngx-common/src/lib/toast/toast.component.html","../../../projects/ngx-common/src/lib/toast/toast.component.ts","../../../projects/ngx-common/src/lib/core/auth/subscription-plan.enum.ts","../../../projects/ngx-common/src/lib/core/title-strategy/custom-title-strategy-configuration.token.ts","../../../projects/ngx-common/src/lib/core/title-strategy/custom-title-strategy.service.ts","../../../projects/ngx-common/src/lib/core/title-strategy/custom-title-strategy.provider.ts","../../../projects/ngx-common/src/lib/core/localization/missing-translation-handler.service.ts","../../../projects/ngx-common/src/lib/core/localization/select-language-dialog-component/select-language-dialog.component.html","../../../projects/ngx-common/src/lib/core/localization/select-language-dialog-component/select-language-dialog.component.ts","../../../projects/ngx-common/src/lib/global-message/global-message.component.html","../../../projects/ngx-common/src/lib/global-message/global-message.component.ts","../../../projects/ngx-common/src/lib/subscription/models/subscription-state.enum.ts","../../../projects/ngx-common/src/lib/subscription/chargebee-mount.service.ts","../../../projects/ngx-common/src/lib/subscription/subscription.component.html","../../../projects/ngx-common/src/lib/subscription/subscription.component.ts","../../../projects/ngx-common/src/lib/accessibility/models/accessibility-font-sizes.enum.ts","../../../projects/ngx-common/src/lib/accessibility/models/accessibility-contrasts.enum.ts","../../../projects/ngx-common/src/lib/accessibility/services/accessibility-text-magnifier.service.ts","../../../projects/ngx-common/src/lib/accessibility/services/accessibility-screen-mask.service.ts","../../../projects/ngx-common/src/lib/accessibility/services/accessibility.service.ts","../../../projects/ngx-common/src/lib/accessibility/accessibility-dialog.component.html","../../../projects/ngx-common/src/lib/accessibility/accessibility-dialog.component.ts","../../../projects/ngx-common/src/lib/custom-translate-loader/custom-translate-loader.service.ts","../../../projects/ngx-common/src/lib/analytics/cookie-consent/translations/cookie-consent.translations.ts","../../../projects/ngx-common/src/lib/analytics/services/analytics.service.ts","../../../projects/ngx-common/src/lib/analytics/cookie-consent/cookie-consent.component.html","../../../projects/ngx-common/src/lib/analytics/cookie-consent/cookie-consent.component.ts","../../../projects/ngx-common/src/public-api.ts","../../../projects/ngx-common/src/tilde-nlp-ngx-common.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { MatIconRegistry } from '@angular/material/icon';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IconService {\r\n constructor(private readonly iconRegistry: MatIconRegistry,\r\n private readonly sanitizer: DomSanitizer) {\r\n }\r\n\r\n //https://material.angular.io/components/icon/examples\r\n /** Registers svg icons to mat icon registry. Icon SVG's should be under some key in object. Icon name can be used with property name in lowercase. */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n registerIcons(icons: any) {\r\n for (const key in icons) {\r\n this.iconRegistry.addSvgIconLiteral(key.toLowerCase(), this.sanitizer.bypassSecurityTrustHtml(icons[key]));\r\n }\r\n }\r\n\r\n registerIconFromUrl(name: string, url: string) {\r\n this.iconRegistry.addSvgIcon(name, this.sanitizer.bypassSecurityTrustResourceUrl(url));\r\n }\r\n\r\n addSvgIconSet(path: string, namespace?: string) {\r\n namespace ?\r\n this.iconRegistry.addSvgIconSetInNamespace(namespace, this.sanitizer.bypassSecurityTrustResourceUrl(path)) :\r\n this.iconRegistry.addSvgIconSet(this.sanitizer.bypassSecurityTrustResourceUrl(path));\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nconst _localStorage: Storage | null = typeof localStorage !== 'undefined' ? localStorage : null;\r\nconst _window: Window | null = typeof window !== 'undefined' ? window : null;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DOMService {\r\n get window(): Window | null {\r\n return _window;\r\n }\r\n\r\n get localStorage(): Storage | null {\r\n return _localStorage;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'tld-close-button',\r\n templateUrl: './close-button.component.html',\r\n standalone: false\r\n})\r\nexport class CloseButtonComponent {\r\n // any type because emitter doesn't really need a value\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() tldClick: EventEmitter<any> = new EventEmitter();\r\n @Input() ariaCode = \"CLOSE_BUTTON\";\r\n // This property is created so it is easier to access real button from outside component.\r\n @ViewChild(\"clearButton\") clearButton!: MatButton;\r\n @Input() disabled!: boolean;\r\n @Input() tooltip!: string;\r\n\r\n clicked() {\r\n this.tldClick.emit(null);\r\n }\r\n}\r\n","<button [matTooltip]=\"tooltip | translate\"\r\n#clearButton mat-icon-button (click)=\"clicked()\" [attr.aria-label]=\"'ARIA_LABELS.'+ariaCode | translate\"\r\n [disabled]=\"disabled\">\r\n <span class=\"material-icons\">\r\n close\r\n </span>\r\n</button>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CloseButtonComponent } from './close-button.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CloseButtonComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n TranslateModule,\r\n MatTooltipModule\r\n ],\r\n exports: [\r\n CloseButtonComponent\r\n ]\r\n})\r\nexport class CloseButtonModule { }\r\n","<div class=\"notification-message {{className}}\">\r\n <div class=\"notification-message-container tld-default-border\" [ngClass.lt-md]=\"'mobile'\" [class.inline]=\"inline\"\r\n fxLayout=\"row\" fxLayoutAlign=\"start start\" [attr.id]=\"message?.id\" aria-live=\"polite\" fxLayout=\"row\">\r\n <span class=\"material-icons-outlined message-icon\">\r\n {{iconNames[message.type]}}\r\n </span>\r\n <div class=\"items-container\" fxFlex>\r\n <div fxLayout=\"row\">\r\n <div class=\"text-container\" fxFlex>\r\n <p *ngIf=\"message.title\" class=\"message-title\"\r\n [innerHtml]=\"message.title | translate: message.localizationParams\"></p>\r\n <p *ngIf=\"message.body\" class=\"message-body\">\r\n <span [innerHtml]=\"message.body | translate: message.localizationParams\"></span>\r\n <span *ngIf=\"message.support\" [innerHtml]=\"message.support | translate: message.localizationParams\"></span>\r\n </p>\r\n </div>\r\n <button\r\n *ngIf=\"message.callbackButtonText\"\r\n color=\"accent\"\r\n mat-stroked-button\r\n class=\"callback-button\"\r\n (click)=\"message?.callbackButtonClick()\"\r\n >\r\n <mat-icon *ngIf=\"message.callbackButtonIcon\">{{message.callbackButtonIcon}}</mat-icon>\r\n {{ message.callbackButtonText | translate }}\r\n </button>\r\n <tld-close-button *ngIf=\"!message.hideClose && !message.callbackButtonText\" class=\"close-button\" [class.no-top-margin]=\"!message.title || !message.body\" (tldClick)=\"closeClick()\">\r\n </tld-close-button>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"16px\" fxLayoutAlign=\"start center\"\r\n *ngIf=\"message.buttonText || message.linkHref || message.routerLink\">\r\n <button class=\"message-action-button\" color=\"accent\" mat-flat-button *ngIf=\"message.buttonText\"\r\n (click)=\"buttonClick()\">{{message.buttonText | translate}} </button>\r\n <a class=\"message-action-link\" *ngIf=\"message.linkHref && message.linkText\" (click)=\"linkClick()\"\r\n [attr.href]=\"message.linkHref\">{{message.linkText |\r\n translate}}</a>\r\n <a class=\"message-action-link\" *ngIf=\"message.routerLink && message.linkText\" (click)=\"linkClick()\"\r\n [routerLink]=\"[message.routerLink]\">{{message.linkText |\r\n translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NotificationMessageType } from './enums/notification-message-type.enum';\r\nimport { NotificationMessage } from './interfaces/notification-message.model';\r\n\r\n@Component({\r\n selector: 'lib-tld-notification-message',\r\n templateUrl: './notification-message.component.html',\r\n styleUrls: ['./notification-message.component.scss'],\r\n standalone: false\r\n})\r\nexport class NotificationMessageComponent implements OnInit {\r\n @Input() message!: NotificationMessage;\r\n\r\n @Output() buttonClicked = new EventEmitter();\r\n @Output() closeClicked = new EventEmitter();\r\n @Output() linkClicked = new EventEmitter();\r\n /** Adds additional class that makes message to take less space on screen. */\r\n @Input() inline!: boolean;\r\n\r\n readonly iconNames: { [key in NotificationMessageType]: string } = {\r\n \"BASIC\": \"info\",\r\n \"INFO\": \"info\",\r\n \"ERROR\": \"error\",\r\n \"SUCCESS\": \"check_circle\",\r\n \"WARNING\": \"info\",\r\n }\r\n className!: string;\r\n\r\n ngOnInit(): void {\r\n this.className = this.message.type.toLocaleLowerCase();\r\n }\r\n\r\n buttonClick() {\r\n this.buttonClicked.next(null)\r\n }\r\n\r\n closeClick() {\r\n this.closeClicked.next(null)\r\n }\r\n\r\n linkClick(){\r\n this.linkClicked.next(null)\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CloseButtonModule } from '../close-button/close-button.module';\r\nimport { NotificationMessageComponent } from './notification-message.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n NotificationMessageComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FlexLayoutModule,\r\n CloseButtonModule,\r\n MatButtonModule,\r\n TranslateModule,\r\n RouterModule,\r\n MatIconModule\r\n ],\r\n exports: [\r\n NotificationMessageComponent\r\n ]\r\n})\r\nexport class NotificationMessageModule { }\r\n","export enum NotificationMessageType{\r\n BASIC = \"BASIC\",\r\n INFO = \"INFO\",\r\n WARNING = \"WARNING\",\r\n SUCCESS = \"SUCCESS\",\r\n ERROR = \"ERROR\"\r\n}","export const ALERT_CONFIGURATION_TOKEN = 'ALERT_CONFIGURATION_TOKEN';","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { NotificationMessage, NotificationMessageType } from '../../notification-message';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { AlertConfiguration } from './models/alert-configuration.model';\r\nimport { ALERT_CONFIGURATION_TOKEN } from './injection-tokens/alert-configuration.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AlertService {\r\n constructor(@Optional() @Inject(ALERT_CONFIGURATION_TOKEN) private readonly config: AlertConfiguration) {}\r\n\r\n private messageSubject: Subject<NotificationMessage> = new Subject();\r\n\r\n get defaultParams() {\r\n return {\r\n email: this.config.supportEmail,\r\n registerLink: this.config.registerLink,\r\n };\r\n }\r\n\r\n private readonly defaultErrorKey = 'ERROR_DEFAULT';\r\n private readonly errorKey = 'ERRORS.';\r\n private readonly numericErrorKeyPrefix = 'E_';\r\n // if message key has key with this postfix, message should be with title\r\n private readonly titlePostFix = '_TITLE';\r\n // if message key has key with this postfix, message should be with support info, it is configured and turned on\r\n private readonly supportPostFix = '_SUPPORT';\r\n private readonly subscriptionPostFix = '_SUBSCRIPTION';\r\n\r\n defaultError(error?: any) {\r\n if (error) {\r\n console.error(error);\r\n }\r\n this.error(\r\n `${this.errorKey}${this.defaultErrorKey}`,\r\n error,\r\n this.defaultParams\r\n );\r\n }\r\n\r\n getMessages() {\r\n return this.messageSubject.asObservable();\r\n }\r\n\r\n basic(text: string, params?: any) {\r\n this.emit(NotificationMessageType.BASIC, text, null, params);\r\n }\r\n\r\n info(text: string, params?: any) {\r\n this.emit(NotificationMessageType.INFO, text, null, params);\r\n }\r\n\r\n success(text: string, params?: any) {\r\n this.emit(NotificationMessageType.SUCCESS, text, null, params);\r\n }\r\n\r\n error(text: string, error: any, params?: any) {\r\n console.error(error);\r\n this.emit(NotificationMessageType.ERROR, text, error, params);\r\n }\r\n\r\n warning(text: string, params?: any, hideClose?: boolean) {\r\n this.emit(NotificationMessageType.WARNING, text, null, params, undefined, hideClose);\r\n }\r\n\r\n deleteMessage(type: NotificationMessageType, text: string, params?: any, hideClose?: boolean): void {\r\n this.emit(type, text, null, params, true, hideClose);\r\n }\r\n\r\n unhandeledError(error: any, errorTranslationSubKeys: string[] = [], params?: any) {\r\n if (error) {\r\n const errorKey = this.findErrorKey(error, errorTranslationSubKeys);\r\n\r\n if (errorKey) {\r\n this.error(errorKey, error, params ?? this.defaultParams);\r\n return;\r\n }\r\n }\r\n this.defaultError(error);\r\n }\r\n\r\n findErrorTitleAndLocalizationKey(error: unknown, errorTranslationSubKeys: string[]): {\r\n title: string;\r\n description: string;\r\n } {\r\n const errorDescriptionKey = this.findErrorKey(error, errorTranslationSubKeys);\r\n let errorTitleKey = null;\r\n\r\n if (errorDescriptionKey) {\r\n errorTitleKey = this.findPostfix(errorDescriptionKey, this.titlePostFix);\r\n }\r\n\r\n return {\r\n description: errorDescriptionKey as string,\r\n title: errorTitleKey as string,\r\n };\r\n }\r\n\r\n private findErrorKey(error: any, errorTranslationSubKeys: string[]) {\r\n if (!error) {\r\n return null;\r\n }\r\n\r\n let errorKey = null;\r\n const errorTranslations = this.config.availableLanguages.en.ERRORS;\r\n if (\r\n error instanceof HttpErrorResponse &&\r\n errorTranslations[this.numericErrorKeyPrefix + error.status]\r\n ) {\r\n errorKey = this.numericErrorKeyPrefix + error.status;\r\n } else if (errorTranslations[error.ErrorCode]) {\r\n errorKey = error.ErrorCode;\r\n } else if (\r\n errorTranslations[this.numericErrorKeyPrefix + error.ErrorCode]\r\n ) {\r\n errorKey = this.numericErrorKeyPrefix + error.ErrorCode;\r\n } else if (errorTranslations[error.error?.ErrorCode]) {\r\n errorKey = error.error?.ErrorCode;\r\n } else if (errorTranslations[error.error]) {\r\n errorKey = error.error;\r\n } else if (\r\n errorTranslations[this.numericErrorKeyPrefix + error.error?.ErrorCode]\r\n ) {\r\n errorKey = this.numericErrorKeyPrefix + error.error?.ErrorCode;\r\n } else if (errorTranslations[this.numericErrorKeyPrefix + error.error?.error?.code]) {\r\n errorKey = this.numericErrorKeyPrefix + error.error?.error?.code\r\n }\r\n\r\n if (!errorKey) {\r\n for (let i = 0; i < errorTranslationSubKeys.length; i++) {\r\n const subKey = errorTranslationSubKeys[i];\r\n const element = errorTranslations[subKey];\r\n if (element[error.ErrorCode]) {\r\n errorKey = `${subKey}.${error.ErrorCode}`;\r\n break;\r\n }\r\n }\r\n }\r\n return this.errorKey + (errorKey ?? this.defaultErrorKey);\r\n }\r\n\r\n private emit(\r\n type: NotificationMessageType,\r\n text: string,\r\n error: any,\r\n params?: any,\r\n deleteMsg?: boolean,\r\n hideClose?: boolean\r\n ) {\r\n // if there is no title for this text, text will be shown as title\r\n const title = this.findPostfix(text, this.titlePostFix) ?? text;\r\n const message: NotificationMessage = {\r\n body: text === title ? undefined : text,\r\n title,\r\n type,\r\n localizationParams: { ...this.defaultParams, ...params },\r\n support: this.getSupportMessage(text) as string,\r\n delete: deleteMsg,\r\n hideClose: hideClose\r\n };\r\n if (error) {\r\n message.error = error;\r\n }\r\n this.messageSubject.next(message);\r\n }\r\n\r\n private getSupportMessage(text: string): string | null {\r\n const support = this.findPostfix(text, this.supportPostFix);\r\n const subscription = this.findPostfix(text, this.subscriptionPostFix);\r\n\r\n if (this.config.contactSupport && support !== null) {\r\n return support;\r\n } else if (\r\n this.config.subscriptionSupport && subscription !== null\r\n ) {\r\n return subscription;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private findPostfix(text: string, postfix: string) {\r\n const parts = text.split('.');\r\n let localizationObject = this.config.availableLanguages.en;\r\n for (let i = 0; i < parts.length; i++) {\r\n if (i > 0) {\r\n localizationObject = localizationObject[parts[i - 1]];\r\n }\r\n if (!localizationObject[parts[i]]) {\r\n return null;\r\n }\r\n }\r\n const keyWithTitle = parts[parts.length - 1] + postfix;\r\n return localizationObject[keyWithTitle] ? text + postfix : null;\r\n }\r\n}\r\n","import { MissingTranslationHandler, MissingTranslationHandlerParams } from \"@ngx-translate/core\";\r\n\r\nexport class MissingTranslationHelper implements MissingTranslationHandler {\r\n handle(params: MissingTranslationHandlerParams) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return (params.interpolateParams as any)?.default || params.key;\r\n }\r\n}\r\n","export class SaveFileHelper {\r\n static saveFile(content: string, fileName: string) {\r\n const blob = new Blob([content]);\r\n this.saveBlob(blob, fileName);\r\n }\r\n\r\n static saveBlob(blob: Blob, fileName: string) {\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(blob);\r\n link.download = fileName;\r\n link.click();\r\n link.remove();\r\n }\r\n}\r\n","export class HtmlElementParseHelper {\r\n static tableAsCsv(tableElement: HTMLElement, ignoreAttributeName?: string) {\r\n const csv_data = [];\r\n const rows = tableElement.querySelectorAll('tr');\r\n const columnSelector = ignoreAttributeName ? `td:not([${ignoreAttributeName}]),th:not([${ignoreAttributeName}])` : `td,th`;\r\n for (let i = 0; i < rows.length; i++) {\r\n const cols = rows[i].querySelectorAll(columnSelector);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const csvrow = Array.from(cols).map((element: any) => `\"${element.innerText}\"`);\r\n csv_data.push(csvrow.join(\",\"));\r\n }\r\n return csv_data.join('\\n');\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nexport class AuthHeadersHelper {\r\n static getAuthHeaders(clientId: string) {\r\n const authHeaders: any = {};\r\n\r\n if (clientId) {\r\n authHeaders['client-id'] = clientId;\r\n }\r\n\r\n authHeaders['Content-Type'] = 'application/json';\r\n\r\n return authHeaders;\r\n }\r\n\r\n static getAppIdAuthHeaders(appId: string): any {\r\n const authHeaders: any = {};\r\n if (appId) {\r\n authHeaders['X-App-Id'] = appId;\r\n }\r\n return authHeaders;\r\n }\r\n}\r\n","export class FileExtensionHelper {\r\n static getFileExtension(fileName: string) {\r\n return fileName.slice(fileName.lastIndexOf(\".\") + 1).toLowerCase();\r\n }\r\n}","export class ConversionHelper {\r\n static bytesToMb(bytes: number): number {\r\n return Math.round(bytes / 1048576);\r\n }\r\n\r\n static pascalCaseToEnum(property: string): string {\r\n return property\r\n .replace(new RegExp('([a-z])([A-Z])', 'g'), '$1_$2')\r\n .toUpperCase();\r\n }\r\n}\r\n","export class SortHelper {\r\n\t/**\r\n\t * Sorts an array of objects based on the order of values specified in another array.\r\n\t *\r\n\t * @param objectArr - The array of objects to be sorted.\r\n\t * @param sortByArray - The array that defines the preferred order of values.\r\n\t * @param fieldName - The name of the field in the objects used for sorting.\r\n\t *\r\n\t * Objects in `objectArr` will be sorted based on the position of their `fieldName` value in `sortByArray`.\r\n\t */\r\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\tstatic sortByArray(objectArr: any[], sortByArray: any[], fieldName: string) {\r\n\t\tobjectArr.sort((a, b) => {\r\n\t\t\tconst aPreferredIndex = sortByArray.indexOf(a[fieldName]);\r\n\t\t\tconst bPreferredIndex = sortByArray.indexOf(b[fieldName]);\r\n\t\t\treturn aPreferredIndex < bPreferredIndex && aPreferredIndex !== -1 ? -1 : 1;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Transforms the input array of objects by sorting them based on the specified sortingValueKey.\r\n\t * @param values - An array of objects to be sorted.\r\n\t * @param sortingValueKey - The key by which the provided values should be sorted, leave it empty if you want to sort string[].\r\n\t */\r\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\tstatic sortAlphabetically(values: any[], sortingValueKey?: string): any {\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\tvalues.sort((a: any, b: any) => {\r\n\t\t\tif (!sortingValueKey) {\r\n\t\t\t\treturn a.localeCompare(b);\r\n\t\t\t}\r\n\r\n\t\t\tconst aTranslated = a[sortingValueKey].toLowerCase();\r\n\t\t\tconst bTranslated = b[sortingValueKey].toLowerCase();\r\n\t\t\treturn aTranslated.localeCompare(bTranslated);\r\n\t\t});\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n\t/**\r\n\t * Sorts an array of values by a specified numeric property or by their numeric value if no property is specified.\r\n\t * @param values - The array of values to be sorted. Can be an array of objects or primitive numeric values.\r\n\t * @param sortingValueKey - The key of the numeric property in the objects to sort by.\r\n\t * @param desc - Flag indicating whether to sort in descending (true) or ascending (false) order.\r\n\t */\r\n\tstatic sortByNumber<T>(values: T[], sortingValueKey?: string, desc = true): T[] {\r\n\t\tconst getValueByKey = (obj: T, keyPath?: string): number => {\r\n\t\t\tif (!keyPath) return Number(obj ?? 0);\r\n\r\n\t\t\tconst keys = keyPath.split('.');\r\n\t\t\tlet value = obj;\r\n\t\t\tfor (const key of keys) {\r\n\t\t\t\tif (value && typeof value === 'object' && key in value) {\r\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\t\t\t\tvalue = (value as any)[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn Number(value ?? 0);\r\n\t\t};\r\n\r\n\t\tvalues.sort((a, b) => {\r\n\t\t\tconst numberA = getValueByKey(a, sortingValueKey);\r\n\t\t\tconst numberB = getValueByKey(b, sortingValueKey);\r\n\t\t\treturn desc ? numberB - numberA : numberA - numberB;\r\n\t\t});\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n\t/**\r\n\t * Sorts an array of values by a specified boolean property or by their boolean value if no property is specified.\r\n\t * @param values - The array of values to be sorted. Can be an array of objects or primitive boolean values.\r\n\t * @param sortingValueKey - The key of the boolean property in the objects to sort by.\r\n\t * @param desc - Flag indicating whether to sort in descending (true) or ascending (false) order.\r\n\t */\r\n\tstatic sortByBoolean<T>(values: T[], sortingValueKey?: string, desc = true): T[] {\r\n\t\tconst getValue = (item: T): boolean => {\r\n\t\t\tif (sortingValueKey) {\r\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\t\t\tconst value = (item as any)[sortingValueKey];\r\n\t\t\t\treturn Boolean(value);\r\n\t\t\t}\r\n\t\t\treturn Boolean(item);\r\n\t\t};\r\n\r\n\t\tvalues.sort((a, b) => {\r\n\t\t\tconst valA = getValue(a) ? 1 : 0;\r\n\t\t\tconst valB = getValue(b) ? 1 : 0;\r\n\t\t\treturn desc ? valB - valA : valA - valB;\r\n\t\t});\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n\t/**\r\n\t * This method is intended to be used with sorting methods like Array.sort(). It compares two strings, a and b, against a reference substring input.\r\n\t * @param a - The first string to be compared.\r\n\t * @param b - The second string to be compared.\r\n\t * @param input - The reference substring used to influence the sorting order.\r\n\t */\r\n\tstatic sortByStartingLetter(a: string, b: string, input: string) {\r\n\t\tconst startsWithInputA = a.toLowerCase().startsWith(input.toLowerCase());\r\n\t\tconst startsWithInputB = b.toLowerCase().startsWith(input.toLowerCase());\r\n\r\n\t\tif (startsWithInputA && !startsWithInputB) {\r\n\t\t\treturn -1;\r\n\t\t} else if (!startsWithInputA && startsWithInputB) {\r\n\t\t\treturn 1;\r\n\t\t} else {\r\n\t\t\treturn a.toLowerCase().indexOf(input.toLowerCase()) - b.toLowerCase().indexOf(input.toLowerCase());\r\n\t\t}\r\n\t}\r\n}\r\n","export class HtmlHelper {\r\n /**\r\n * Removes special characters so string is not interpretated as html.\r\n * @param text\r\n */\r\n static escapeHtmlString(text: string): string {\r\n // without creating regexp, it is not building library.\r\n // https://stackoverflow.com/questions/57292603/angular7-aot-expression-form-not-supported\r\n return text.replace(new RegExp(\"&\", \"g\"), \"&\")\r\n .replace(new RegExp(\"<\", \"g\"), \"<\")\r\n .replace(new RegExp(\">\", \"g\"), \">\")\r\n .replace(new RegExp(\"\\\"\", \"g\"), \""\")\r\n .replace(new RegExp(\"'\", \"g\"), \"'\");\r\n }\r\n\r\n static encodeHtmlString(text: string): string {\r\n return text.replace(new RegExp(\"&\", \"g\"), \"&\")\r\n .replace(new RegExp(\"<\", \"g\"), \"<\")\r\n .replace(new RegExp(\">\", \"g\"), \">\")\r\n .replace(new RegExp(\""\", \"g\"), \"\\\"\")\r\n .replace(new RegExp(\"'\", \"g\"), \"'\");\r\n }\r\n /**\r\n * Splits string into paragraphs.\r\n * @param text\r\n */\r\n static splitInParagraphs(text: string): string[] {\r\n return text.split(\"\\n\");\r\n }\r\n\r\n static joinParagraphs(text: string[]): string {\r\n return text.join(\"\\n\");\r\n }\r\n\r\n static toCamelCase(text: string, symbol = \"-\"): string {\r\n const arr = text.split(symbol);\r\n const capital = arr.map((item, index) => index ? item.charAt(0).toUpperCase() + item.slice(1).toLowerCase() : item.toLowerCase());\r\n // ^-- change here.\r\n return capital.join(\"\");\r\n }\r\n\r\n static isTextUrl(text: string): string | null {\r\n //eslint-disable-next-line\r\n const urlPattern = /\\b((?:https?:(?:\\/{1,3}|[a-z0-9%])|[a-z0-9.\\-]+[.](?:com|net|org|edu|gov|mil|aero|asia|biz|cat|coop|info|int|jobs|mobi|museum|name|post|pro|tel|travel|xxx|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|dd|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|Ja|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)\\/)(?:[^\\s()<>{}\\[\\]]+|\\([^\\s()]*?\\([^\\s()]+\\)[^\\s()]*?\\)|\\([^\\s]+?\\))+(?:\\([^\\s()]*?\\([^\\s()]+\\)[^\\s()]*?\\)|\\([^\\s]+?\\)|[^\\s`!() \\[\\]{};: '\".,<>?«»“”‘’])|(?:[a-z0-9]+(?:[.\\-][a-z0-9]+)*[.](?:com|net|org|edu|gov|mil|aero|asia|biz|cat|coop|info|int|jobs|mobi|museum|name|post|pro|tel|travel|xxx|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|dd|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|Ja|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)\\b\\/?(?!@)))/gi;\r\n const urlMatch = urlPattern.exec(text);\r\n if (urlMatch) {\r\n const url = urlMatch[0];\r\n if (url.length / text.trim().length > 0.8) { // most of the text is url\r\n return url;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n static getWordCount(text: string) {\r\n return text.match(/\\b(\\w+)\\b/g)?.length;\r\n }\r\n\r\n static getLocalizationKey(text: string): string {\r\n return text?.replace(/[^\\p{L}\\p{N} -]+/gu, \"\").split(/[ -]+/).join(\"_\").toUpperCase().replace(/_$/, \"\")\r\n }\r\n}","/** \r\n This properties are same defined as Angular material min-width breakpoints.\r\n https://material.angular.io/cdk/layout/overview\r\n*/\r\n\r\nexport const SCREEN_SIZE = {\r\n SMALL: 600,\r\n MEDIUM: 960,\r\n LARGE: 1280,\r\n XLARGE: 1920,\r\n};\r\n","/**\r\n * Local storage key which stores last used configuration of language direction in Machine Translation.\r\n * By overwriting this value with langugeId (sourceLanguage-targetLanguage-domain-vendor-engineId), this system is going to be preselected.\r\n */\r\nexport const LAST_USED_SYSTEM_LOCAL_STORAGE_KEY = 'lastUsedSystem';","export enum ERROR_CODES {\r\n TIMEOUT = 504\r\n}","import { SCREEN_SIZE } from '../constants';\r\n\r\nexport class ResolutionHelper {\r\n static isMobileRes(): boolean {\r\n return window.innerWidth < SCREEN_SIZE.SMALL;\r\n }\r\n}\r\n","export enum FILE_SIZE_UNIT{\r\n BYTES = \"B\",\r\n KILOBYTES = \"KB\",\r\n MEGABYTES = \"MB\",\r\n GIGABYTES = \"GB\"\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { getFileSizeLabel } from '../../helpers';\r\nimport { FILE_SIZE_UNIT } from './enums/file-size-unit.enum';\r\n\r\n@Pipe({\r\n name: 'fileSizeLabel',\r\n standalone: true,\r\n})\r\n/**\r\n * Pipe that converts Byte value into human-readable file size label e.g., KB, MB, GB.\r\n */\r\nexport class FileSizeLabelPipe implements PipeTransform {\r\n transform(value: number, decimalPlaces: number = 2, unit: FILE_SIZE_UNIT = FILE_SIZE_UNIT.BYTES): string {\r\n return getFileSizeLabel(value, decimalPlaces, unit);\r\n }\r\n}\r\n","import { FILE_SIZE_UNIT } from \"../pipes/file-size-label\";\r\n\r\nexport const getFileSizeLabel = (size: number, decimalPlaces: number = 2, unit: FILE_SIZE_UNIT = FILE_SIZE_UNIT.BYTES): string => {\r\n const multipliers = {\r\n [FILE_SIZE_UNIT.BYTES]: 1,\r\n [FILE_SIZE_UNIT.KILOBYTES]: 1024,\r\n [FILE_SIZE_UNIT.MEGABYTES]: 1024 ** 2,\r\n [FILE_SIZE_UNIT.GIGABYTES]: 1024 ** 3,\r\n };\r\n\r\n const GB = multipliers[FILE_SIZE_UNIT.GIGABYTES];\r\n const MB = multipliers[FILE_SIZE_UNIT.MEGABYTES];\r\n const KB = multipliers[FILE_SIZE_UNIT.KILOBYTES];\r\n\r\n const sizeInBytes = size * multipliers[unit]\r\n\r\n if (sizeInBytes >= GB) {\r\n const sizeInGB = sizeInBytes / GB;\r\n return `${sizeInGB.toFixed(decimalPlaces)} GB`;\r\n } else if (sizeInBytes >= MB) {\r\n const sizeInMB = sizeInBytes / MB;\r\n return `${sizeInMB.toFixed(decimalPlaces)} MB`;\r\n } else if (sizeInBytes >= KB) {\r\n const sizeInKB = sizeInBytes / KB;\r\n return `${sizeInKB.toFixed(decimalPlaces)} KB`;\r\n }\r\n\r\n return `${sizeInBytes} B`;\r\n};\r\n","// custom-paginator-intl.ts\r\nimport { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Injectable()\r\nexport class CustomPaginatorInernationalizationHelper extends MatPaginatorIntl {\r\n readonly #translate = inject(TranslateService);\r\n constructor() {\r\n super();\r\n this.#translate.onLangChange.subscribe(() => {\r\n this.getTranslations();\r\n });\r\n\r\n this.getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n length = Math.max(length, 0);\r\n const startIndex = page * pageSize;\r\n\r\n // If the start index exceeds the list length, do not try and fix the end index to attempt showing\r\n // fewer items.\r\n const endIndex =\r\n startIndex < length\r\n ? Math.min(startIndex + pageSize, length)\r\n : startIndex + pageSize;\r\n\r\n return this.#translate.instant('PAGINATOR.RANGE_LABEL', {startIndex: startIndex + 1, endIndex: endIndex, length: length});\r\n };\r\n\r\n this.getTranslations();\r\n }\r\n\r\n getTranslations() {\r\n this.itemsPerPageLabel = this.#translate.instant(\"PAGINATOR.ITEMS_PER_PAGE\");\r\n this.nextPageLabel = this.#translate.instant(\"PAGINATOR.NEXT_PAGE_LABEL\");\r\n this.previousPageLabel = this.#translate.instant(\"PAGINATOR.PREVIOUS_PAGE_LABEL\");\r\n this.firstPageLabel = this.#translate.instant(\"PAGINATOR.FIRST_PAGE_LABEL\");\r\n this.lastPageLabel = this.#translate.instant(\"PAGINATOR.LAST_PAGE_LABEL\");\r\n this.changes.next();\r\n // this.#translate.get('RANGE_LABEL', {startIndex:0, endIndex:0, length:0}).subscribe(res =>{\r\n // this.getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n // if (length === 0 || pageSize === 0) {\r\n // return `0 of ${length}`;\r\n // }\r\n\r\n // length = Math.max(length, 0);\r\n\r\n // const startIndex = page * pageSize;\r\n\r\n // // If the start index exceeds the list length, do not try and fix the end index to attempt showing\r\n // // fewer items.\r\n // const endIndex =\r\n // startIndex < length\r\n // ? Math.min(startIndex + pageSize, length)\r\n // : startIndex + pageSize;\r\n\r\n // return this.#translate.instant('RANGE_LABEL', {startIndex: startIndex + 1, endIndex: endIndex, length: length});\r\n // };\r\n // this.changes.next();\r\n // });\r\n }\r\n\r\n}\r\n","export class HashHelper {\r\n static hashString(username: string) {\r\n let hash = 0;\r\n if (username?.length > 0) {\r\n for (let i = 0; i < username.length; i++) {\r\n const char = username.charCodeAt(i);\r\n hash = (hash << 5) - hash + char;\r\n hash = hash & hash; // Convert to 32bit integer\r\n }\r\n }\r\n return hash.toString();\r\n }\r\n}\r\n","export enum EngineStatus {\r\n IMPORTING = \"Importing\",\r\n DELETING = \"Deleting\",\r\n ERROR = \"Error\",\r\n RUNNING = \"Running\",\r\n STARTING = \"Starting\",\r\n STAND_BY = \"StandBy\",\r\n OFF = \"Off\"\r\n}\r\n","export enum EngineSubStatus {\r\n Unspecified = \"Unspecified\",\r\n Importing = 'Importing',\r\n ImportingQueuing = 'ImportingQueuing',\r\n ImportingTerms = 'ImportingTerms',\r\n ImportingDeploying = 'ImportingDeploying',\r\n ImportingImported = \"ImportingImported\",\r\n Deleting = 'Deleting',\r\n DeletingQueuing = 'DeletingQueuing',\r\n DeletingTerms = 'DeletingTerms',\r\n ErrorGeneric = 'ErrorGeneric',\r\n ErrorImportingFailed = 'ErrorImportingFailed',\r\n ErrorImportingTermsFailed = 'ErrorImportingTermsFailed',\r\n ErrorDeletingFailed = 'ErrorDeletingFailed',\r\n ErrorDeletingTermsFailed = 'ErrorDeletingTermsFailed'\r\n}\r\n","export const TILDE_VENDOR = 'Tilde';\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TerminologyConfig } from \"../../models\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class TerminologyConfigService {\r\n private _termConfig: TerminologyConfig = {};\r\n\r\n get termConfig() {\r\n return this._termConfig;\r\n }\r\n\r\n private readonly defaultApiUrl = \"https://translate.tilde.ai/api/engine\";\r\n\r\n initConfigs(configuration?: TerminologyConfig): void {\r\n const config = configuration ?? {};\r\n \r\n this._termConfig.collectionNameMinLength = config?.collectionNameMinLength ?? 8;\r\n this._termConfig.collectionNameMaxLength = config?.collectionNameMaxLength ?? 300;\r\n this._termConfig.xApiKey = config?.xApiKey;\r\n this._termConfig.systemListUrl = config?.systemListUrl ?? this.defaultApiUrl;\r\n this._termConfig.engineTermUrl = config?.engineTermUrl ?? this.defaultApiUrl;\r\n this._termConfig.terminologyPortalUrl = config?.terminologyPortalUrl ?? \"https://term.tilde.com\";\r\n this._termConfig.isTermPortalSupported = config?.isTermPortalSupported ?? false;\r\n this._termConfig.refreshTimeoutMs = config?.refreshTimeoutMs ?? 10000;\r\n this._termConfig.refreshTimeoutMsWhenImporting = config?.refreshTimeoutMsWhenImporting ?? 5000;\r\n this._termConfig.allowedSystemStatuses = config?.allowedSystemStatuses ?? ['running', 'standby', 'queuingtransl'];\r\n this._termConfig.defaultVendor = config?.defaultVendor ?? \"Tilde\";\r\n this._termConfig.canCreateCollection = config?.canCreateCollection;\r\n this._termConfig.isAuth = config?.isAuth ?? false;\r\n this._termConfig.defaultGlossaryManagementLink = config?.defaultGlossaryManagementLink;\r\n this._termConfig.hideGlossaryMenuWithoutCollections = config?.hideGlossaryMenuWithoutCollections ?? false;\r\n this._termConfig.showGlossaryMenuAdvertisement = config?.showGlossaryMenuAdvertisement ?? false;\r\n this._termConfig.filterCollectionsByLanguageDirection = config?.filterCollectionsByLanguageDirection ?? false;\r\n this._termConfig.startTrialUrl = config?.startTrialUrl ?? 'https://tilde.ai/machine-translation/#price';\r\n this._termConfig.signInUrl = config?.signInUrl ?? 'https://translate.tilde.ai/';\r\n\r\n this._termConfig.isCollectionsActivated = config?.isCollectionsActivated;\r\n this._termConfig.maxRecentSystemCount = config?.maxRecentSystemCount ?? 4;\r\n this._termConfig.autoDomainDetection = config?.autoDomainDetection ?? false;\r\n this._termConfig.defaultDomains = config?.defaultDomains ?? [\"GEN\", \"general\"];\r\n this._termConfig.appId = config?.appId;\r\n this._termConfig.appName = config?.appName ?? \"Tilde MT\";\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { map, Observable } from \"rxjs\";\r\nimport { AuthHeadersHelper } from \"../../../helpers\";\r\nimport { TerminologyConfigService } from \"../../config/services\";\r\nimport { System } from \"../../models/system.model\";\r\nimport { Engine, EngineStatus, EngineSubStatus } from \"./models\";\r\nimport { EngineList } from \"./models/engine-list.model\";\r\nimport { TILDE_VENDOR } from \"./models/tilde-vendor.const\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class SystemApiService {\r\n constructor(private readonly http: HttpClient, private readonly config: TerminologyConfigService) {\r\n }\r\n // Note that this api call is duplicate from Website engine service. Might need some refactoring and using common engine service ?\r\n getSystemList(showDisabledEngines?: boolean): Observable<System[]> {\r\n const headers = AuthHeadersHelper.getAppIdAuthHeaders(this.config.termConfig.appId ?? '');\r\n return this.http.get<EngineList>(`${(this.config.termConfig.systemListUrl as string)}?apiVersion=v2`, { headers }).pipe(\r\n map((engineList) => {\r\n const convertedEngines: System[] = [];\r\n const unavailableStatuses: EngineStatus[] = [EngineStatus.IMPORTING];\r\n const unavailableSubStatuses: EngineSubStatus[] = [EngineSubStatus.ErrorImportingFailed, EngineSubStatus.ErrorDeletingFailed];\r\n\r\n if (!showDisabledEngines) {\r\n unavailableStatuses.push(EngineStatus.OFF);\r\n }\r\n\r\n const engineMap = {};\r\n\r\n engineList.engines.forEach((engine) => {\r\n engine.domain = engine.domain?.toLowerCase();\r\n \r\n if (unavailableStatuses.includes(engine.status) || unavailableSubStatuses.includes(engine.subStatus)) {\r\n return;\r\n }\r\n\r\n if (engine.domains && Object.keys(engine.domains).length) {\r\n convertedEngines.push(...this.generateSystemsFromDomains(engine, convertedEngines, engineMap));\r\n } else {\r\n convertedEngines.push(...this.generateSystemsFromLanguages(engine, convertedEngines, engineMap));\r\n }\r\n })\r\n return convertedEngines;\r\n })\r\n )\r\n }\r\n\r\n private generateSystemsFromLanguages(engine: Engine, convertedEngines: System[], engineMap: { [key: string]: boolean }): System[] {\r\n const systems: System[] = [];\r\n engine.sourceLanguages.forEach((sourceLanguage) => {\r\n engine.targetLanguages.forEach((targetLanguage) => {\r\n if (sourceLanguage !== targetLanguage) {\r\n const newSystem = this.createSystemObject(engine.id, sourceLanguage, targetLanguage, engine.domain, engine.vendor, engine.supportsTermCollections);\r\n\r\n if (this.isLanguageDirectionAdded(newSystem, convertedEngines, engineMap, engine.vendor)) {\r\n systems.push(newSystem);\r\n }\r\n }\r\n })\r\n })\r\n return systems;\r\n }\r\n\r\n private generateSystemsFromDomains(engine: Engine, convertedEngines: System[], engineMap: { [key: string]: boolean }): System[] { \r\n const domains = engine.domains;\r\n const systems: System[] = [];\r\n\r\n for (const domainKey in domains) {\r\n const domain = domains[domainKey];\r\n\r\n // Loop through each language property\r\n const languages = domain.languages;\r\n for (const sourceLanguage in languages) {\r\n const targetLanguages = languages[sourceLanguage];\r\n // Loop through each key within the language\r\n targetLanguages.forEach((targetLanguage) => {\r\n const newSystem = this.createSystemObject(engine.id, sourceLanguage, targetLanguage, domainKey, engine.vendor, engine.supportsTermCollections);\r\n \r\n if (sourceLanguage !== targetLanguage) {\r\n if (this.isLanguageDirectionAdded(newSystem, convertedEngines, engineMap, engine.vendor)) {\r\n systems.push(newSystem);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n return systems;\r\n }\r\n\r\n private isLanguageDirectionAdded(newSystem: System, convertedEngines: System[], engineMap: { [key: string]: boolean }, vendor: string): boolean {\r\n const languageDirectionKey = `${newSystem.sourceLanguage}${newSystem.targetLanguage}${newSystem.domain}`;\r\n \r\n if (engineMap[languageDirectionKey]) {\r\n if (vendor === TILDE_VENDOR) {\r\n const existingSystemIx = convertedEngines.findIndex((e) => e.sourceLanguage === newSystem.sourceLanguage && e.targetLanguage === newSystem.targetLanguage && e.domain === newSystem.domain);\r\n convertedEngines[existingSystemIx] = newSystem;\r\n }\r\n return false;\r\n }\r\n \r\n engineMap[languageDirectionKey] = true;\r\n \r\n return true;\r\n }\r\n\r\n private createSystemObject(id: string, sourceLanguage: string, targetLanguage: string, domain: string, vendor: string, includesTerminology: boolean) {\r\n const systemBase: System = {\r\n sourceLanguage,\r\n targetLanguage,\r\n domain: domain.toLowerCase(),\r\n languageId: `${sourceLanguage}-${targetLanguage}-${domain}-${vendor}-${id}`,\r\n id,\r\n vendor,\r\n includesTerminology\r\n };\r\n\r\n return systemBase;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { System } from '../../terminology/models/system.model';\r\nimport { SystemApiService } from '../../terminology/services/system-api-v2/system-api.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SystemService {\r\n constructor(\r\n private readonly api: SystemApiService\r\n ) { }\r\n\r\n getSystemList(showDisabledEngines = false): Observable<System[]> {\r\n return this.api.getSystemList(showDisabledEngines);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'filterWithHighlight',\r\n standalone: false\r\n})\r\nexport class FilterWithHighlightPipe implements PipeTransform {\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n transform(value: any[], filter: string, key?: string): any[] {\r\n if (!filter.length) {\r\n return [...value];\r\n }\r\n\r\n const regex = new RegExp(filter, 'gi');\r\n\r\n const filteredArr = value\r\n .map((element) => {\r\n const elementText: string = key ? element[key] : element;\r\n const match = elementText.match(regex);\r\n\r\n if (!match) {\r\n return null;\r\n }\r\n\r\n // Get the index of the match\r\n const indexOfMatch = elementText.toLowerCase().indexOf(filter.toLowerCase());\r\n\r\n const textWithHighlight = elementText.replace(regex, (matched) => `<span class=\"filter-highlight\">${matched}</span>`);\r\n\r\n return {\r\n transformed: key ? { ...element, [key]: textWithHighlight } : textWithHighlight,\r\n indexOfMatch: indexOfMatch\r\n };\r\n })\r\n .filter((item) => item !== null)\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .sort((a: any, b: any) => {\r\n // Sort based on the index of the match\r\n return a.indexOfMatch - b.indexOfMatch;\r\n })\r\n .map((item) => item?.transformed);\r\n return filteredArr;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FilterWithHighlightPipe } from './filter-with-highlight.pipe';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n FilterWithHighlightPipe\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n FilterWithHighlightPipe\r\n ]\r\n})\r\nexport class FilterWithHighlightModule { }\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Pipe({\r\n name: 'sortTranslations',\r\n standalone: false\r\n})\r\n/**\r\n * Pipe used to sort translated values.\r\n */\r\nexport class SortTranslationsPipe implements PipeTransform {\r\n\r\n constructor(private translate: TranslateService) { }\r\n\r\n /**\r\n *\r\n * @param objects array of objects to be sorted\r\n * @param localizationPrefix prefix for localization code. This is used to get necessary object translations.\r\n * @param key Which object property needs to be used for sorting.\r\n * @param currentLanguage This is necessary to update values if language is changed.\r\n * @returns \r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n transform(objects: Array<any>, localizationPrefix: string | null, key: string | null = null, currentLanguage: string, translationKey: string | null = null): Observable<Array<any>> {\r\n const arrayCopy = [...objects];\r\n if (localizationPrefix) {\r\n return new Observable<string[]>((subscriber) => {\r\n this.translate.get(localizationPrefix ?? \"\").subscribe((translations) => {\r\n const array = this.sortObjects(arrayCopy, key, translations);\r\n subscriber.next(array);\r\n subscriber.complete();\r\n })\r\n });\r\n }\r\n else {\r\n return of(this.sortObjects(arrayCopy, key));\r\n }\r\n }\r\n\r\n private sortObjects(array: any[], key?: string | null, translations?: any):any[] {\r\n return array.sort((a: any, b: any) => {\r\n const aValue = key ? a[key] : a;\r\n const aTranslation = translations ? translations[aValue.toUpperCase()] : aValue;\r\n\r\n const bValue = key ? b[key] : b;\r\n const bTranslation = translations ? translations[bValue.toUpperCase()] : bValue;\r\n\r\n if (aTranslation < bTranslation)\r\n return -1;\r\n else if (aTranslation > bTranslation)\r\n return 1;\r\n else\r\n return 0;\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SortTranslationsPipe } from './sort-translations.pipe';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [SortTranslationsPipe],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n SortTranslationsPipe\r\n ]\r\n})\r\nexport class SortTranslationsModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'sortTranslationsByProperty',\r\n standalone: false\r\n})\r\n/**\r\n * Pipe transforms an array of objects by sorting them based on a provided localization key in A-Z order.\r\n * Unlike the \"sortTranslations\" pipe, it does not require knowledge of the current language, and it does not require the use of the async pipe.\r\n */\r\nexport class SortTranslationsByPropertyPipe implements PipeTransform {\r\n constructor(private translate: TranslateService) {}\r\n\r\n /**\r\n * Transforms the input array of objects by sorting them based on the specified sortingValueKey.\r\n * @param values An array of objects to be sorted.\r\n * @param sortingValueKey The key by which the provided values should be sorted.\r\n * @param defaultValueKey For missing translations there is option to provide a default key to take value from.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n transform(values: any[], sortingValueKey: string, defaultValueKey?: string): any {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n values.sort((a: any, b: any) => {\r\n const aTranslationParams = defaultValueKey && a[defaultValueKey] ? { default: a[defaultValueKey] } : {};\r\n const bTranslationParams = defaultValueKey && b[defaultValueKey] ? { default: b[defaultValueKey] } : {};\r\n const aTranslated = this.translate.instant(a[sortingValueKey], aTranslationParams).toLowerCase();\r\n const bTranslated = this.translate.instant(b[sortingValueKey], bTranslationParams).toLowerCase();\r\n\r\n if (aTranslated < bTranslated) return -1;\r\n if (aTranslated > bTranslated) return 1;\r\n return 0;\r\n });\r\n\r\n return values;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SortTranslationsByPropertyPipe } from './sort-translations-by-property.pipe';\r\n\r\n@NgModule({\r\n declarations: [SortTranslationsByPropertyPipe],\r\n imports: [CommonModule],\r\n exports: [SortTranslationsByPropertyPipe],\r\n})\r\nexport class SortTranslationsByPropertyModule {}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'languageTranslate',\r\n pure: false,\r\n standalone: true\r\n})\r\n/**\r\n This pipe searches for a language code translation within our JSON files.\r\n If the translation for a given language code is not found there, it retrieves it from the browser's Intl object.\r\n*/\r\nexport class LanguageTranslatePipe implements PipeTransform {\r\n private readonly languagesLocalizationKey = 'LANGUAGES';\r\n\r\n private lastUiLanguage: string;\r\n\r\n private readonly translationCache = new Map<string, string>();\r\n\r\n // For languages where region is different code (but in reality the same), we should not show region.\r\n private readonly localeSameRegions: Record<string, string[]> = {\r\n \"nb\": [\"no\"],\r\n \"et\": [\"ee\"],\r\n \"sl\": [\"si\"],\r\n \"sv\": [\"se\"],\r\n \"uk\": [\"ua\"],\r\n \"en\": [\"gb\", \"us\"]\r\n };\r\n\r\n // Some locales ar not translated on all devices, so storing here as final backup.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private readonly translations: any = {\r\n \"en\": {\r\n \"mt\": \"Maltese\",\r\n },\r\n \"lv\": {\r\n \"mt\": \"Maltiešu\",\r\n },\r\n \"lt\": {\r\n \"mt\": \"Maltiečių\",\r\n },\r\n \"et\": {\r\n \"mt\": \"Malta\",\r\n }\r\n }\r\n\r\n constructor(private readonly translate: TranslateService) {\r\n this.translate.onLangChange.subscribe(() => {\r\n this.translationCache.clear();\r\n this.lastUiLanguage = this.translate.currentLang;\r\n });\r\n this.lastUiLanguage = this.translate.currentLang;\r\n }\r\n\r\n transform(fullLangCode: string, hideRegion = false): string {\r\n if (!fullLangCode) {\r\n return '';\r\n }\r\n\r\n if (this.lastUiLanguage !== this.translate.currentLang) {\r\n this.translationCache.clear();\r\n this.lastUiLanguage = this.translate.currentLang;\r\n }\r\n\r\n const cacheKey = `${fullLangCode}:${hideRegion}`;\r\n\r\n if (this.translationCache.has(cacheKey)) {\r\n return this.translationCache.get(cacheKey)!;\r\n }\r\n\r\n const langCodeWithoutRegion = this.getLanguageFromLanguageCode(fullLangCode);\r\n const isCodeAndRegionSame = this.isLanguageCodeSameAsRegion(fullLangCode);\r\n const langCodeForTranslation = isCodeAndRegionSame ? langCodeWithoutRegion : fullLangCode;\r\n\r\n const translation = this.getTranslation(langCodeForTranslation, hideRegion);\r\n\r\n this.translationCache.set(cacheKey, translation);\r\n\r\n return translation;\r\n }\r\n\r\n private getTranslation(langCode: string, hideRegion?: boolean): string {\r\n const languageTranslations = this.translate.instant(this.languagesLocalizationKey);\r\n let translation =\r\n /**\r\n e.g. In case we need to display \"en-GB\" language code as \"British\" we can do this\r\n by adding \"EN_GB\": \"British\" in localization files under \"LANGUAGES\" key.\r\n */\r\n languageTranslations[langCode.toUpperCase().replace('-', '_')] ??\r\n this.getLanguageTranslationFromLanguageCode(this.translate.currentLang, langCode);\r\n\r\n if (hideRegion) {\r\n translation = translation.split('(')[0].trim();\r\n }\r\n\r\n return translation;\r\n }\r\n\r\n private getLanguageTranslationFromLanguageCode(currentLang: string, code: string): string {\r\n const languageNamesInCurrentLang = new Intl.DisplayNames([currentLang], { type: 'language' });\r\n const regionNamesInCurrentLang = new Intl.DisplayNames([currentLang], { type: 'region' });\r\n\r\n let translation: string;\r\n const language = this.getLanguageFromLanguageCode(code);\r\n const region = this.getRegionFromLanguageCode(code);\r\n try {\r\n const languagetranslation = languageNamesInCurrentLang.of(language);\r\n const regionTranslation = regionNamesInCurrentLang.of(region);\r\n\r\n translation = `${languagetranslation} (${regionTranslation})`;\r\n } catch {\r\n try {\r\n translation = languageNamesInCurrentLang.of(code) as string;\r\n } catch {\r\n translation = this.translations[currentLang]?.[language] ?? code;\r\n return translation;\r\n }\r\n }\r\n\r\n return this.capitalizeFirstLetter(translation);\r\n }\r\n\r\n private isLanguageCodeSameAsRegion(fullLangCode: string): boolean {\r\n const [code, region, extra] = fullLangCode.split('-');\r\n return (code === region?.toLowerCase() || this.localeSameRegions[code]?.includes(region?.toLowerCase())) && !extra;\r\n }\r\n\r\n private getRegionFromLanguageCode(fullLangCode: string): string {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const [_code, region, extra] = fullLangCode.split('-');\r\n const regionCode = extra ? `${region}-${extra}` : `${region}`;\r\n return regionCode.toUpperCase();\r\n }\r\n\r\n private getLanguageFromLanguageCode(fullLangCode: string): string {\r\n return fullLangCode.split('-')[0].toLowerCase();\r\n }\r\n\r\n private capitalizeFirstLetter(text: string): string {\r\n return text.charAt(0).toUpperCase() + text.slice(1);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LanguageTranslatePipe } from './language-translate.pipe';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [LanguageTranslatePipe, CommonModule],\r\n exports: [LanguageTranslatePipe]\r\n})\r\nexport class LanguageTranslateModule { }\r\n","export const DateAgoSettingsToken = \"DATE_AGO_SETTINGS\";\r\n","import { Inject, Optional, Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { DateAgo, DateAgoSettings, DateAgoSettingsToken } from './models';\r\n\r\n@Pipe({\r\n name: 'dateAgo',\r\n pure: false,\r\n standalone: false\r\n})\r\n/**\r\n * Pipe that converts date to date ago and returns translated string.\r\n */\r\nexport class DateAgoPipe implements PipeTransform {\r\n\r\n readonly defaultSettings: DateAgoSettings = {\r\n intervals: [\r\n {\r\n key: \"YEAR\",\r\n interval: 31536000,\r\n min: 1\r\n },\r\n {\r\n key: \"MONTH\",\r\n interval: 2592000,\r\n min: 1\r\n },\r\n {\r\n key: \"WEEK\",\r\n interval: 604800,\r\n min: 2\r\n },\r\n {\r\n key: \"DAY\",\r\n interval: 86400,\r\n min: 1\r\n },\r\n {\r\n key: \"HOUR\",\r\n interval: 3600,\r\n min: 1\r\n },\r\n {\r\n key: \"MINUTE\",\r\n interval: 60,\r\n min: 1\r\n },\r\n {\r\n key: \"SECOND\",\r\n interval: 1,\r\n min: 10\r\n }\r\n ],\r\n localizationPrefix: \"DATE_AGO\",\r\n multiplePostfix: \"S\",\r\n justNowKey: \"JUST_NOW\",\r\n justNowSeconds: 29\r\n\r\n };\r\n\r\n get intervals() { return this.settings?.intervals ?? this.defaultSettings.intervals }\r\n get multiplePostfix() { return this.settings?.multiplePostfix ?? this.defaultSettings.multiplePostfix }\r\n get localizationPrefix() { return this.settings?.localizationPrefix ?? this.defaultSettings.localizationPrefix }\r\n get justNowKey() { return this.settings?.justNowKey ?? this.defaultSettings.justNowKey }\r\n get justNowSeconds() { return this.settings?.justNowSeconds ?? this.defaultSettings.justNowSeconds }\r\n\r\n constructor(\r\n private readonly translate: TranslateService,\r\n @Inject(DateAgoSettingsToken) @Optional() private readonly settings: DateAgoSettings) {\r\n\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n transform(value: Date, enableMultiplePostfix = true): string {\r\n if (!value) {\r\n return \"\";\r\n }\r\n\r\n const dateAgo = this.calculateDateAgo(value, enableMultiplePostfix);\r\n if (!dateAgo) {\r\n return \"\";\r\n }\r\n\r\n return this.translate.instant(`${this.localizationPrefix}.${dateAgo.key}`, { value: dateAgo.howMany });\r\n }\r\n\r\n calculateDateAgo(value: Date, enableMultiplePostfix: boolean): DateAgo | null {\r\n if (value) {\r\n const seconds = Math.floor((new Date().getTime() - new Date(value).getTime()) / 1000);\r\n\r\n if (seconds < this.justNowSeconds || Number.isNaN(seconds)) // less than 30 seconds ago will show as 'Just now'\r\n return { key: this.justNowKey };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\r\n let counter!: number;\r\n let type!: string;\r\n\r\n for (let i = 0; i < this.intervals.length; i++) {\r\n const interval = this.intervals[i];\r\n counter = Math.floor(seconds / interval.interval);\r\n if (counter >= interval.min) {\r\n type = interval.key;\r\n if (enableMultiplePostfix && counter > 1) {\r\n // add \"S\" in the end of localization key\r\n type += this.multiplePostfix;\r\n }\r\n break;\r\n }\r\n }\r\n return { key: type, howMany: counter };\r\n }\r\n return null;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DateAgoPipe } from './date-ago.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n DateAgoPipe\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n DateAgoPipe\r\n ],\r\n providers: []\r\n})\r\nexport class DateAgoModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'objectLength',\r\n standalone: false\r\n})\r\n/**\r\n * Pipe used to calculate the length of an object.\r\n */\r\nexport class ObjectLengthPipe implements PipeTransform {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n transform(value: any): number {\r\n\t\tif (!value || typeof value !== 'object') {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\treturn Object.keys(value).length;\r\n\t}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ObjectLengthPipe } from './object-length.pipe';\r\n\r\n@NgModule({\r\n declarations: [ObjectLengthPipe],\r\n imports: [CommonModule],\r\n exports: [ObjectLengthPipe]\r\n})\r\nexport class ObjectLengthModule {}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SortHelper } from '../../helpers';\r\n\r\n@Pipe({\r\n name: 'sortByNumber',\r\n standalone: true,\r\n pure: false\r\n})\r\n/**\r\n * Pipe sorts array in desc-asc order of objects by provided key or just a value without providing a specific key.\r\n */\r\nexport class SortByNumberPipe implements PipeTransform {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n transform(values: any[], sortingValueKey?: string, desc = true): any {\r\n return SortHelper.sortByNumber(values, sortingValueKey, desc);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SortHelper } from '../../helpers';\r\n\r\n@Pipe({\r\n name: 'sortAlphabetically',\r\n standalone: false\r\n})\r\n/**\r\n * Pipe sorts array in A-Z order of objects by provided key or a string values without providing a specific key.\r\n */\r\nexport class SortAlphabeticallyPipe implements PipeTransform {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n transform(values: any[], sortingValueKey?: string): any {\r\n return SortHelper.sortAlphabetically(values, sortingValueKey);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SortAlphabeticallyPipe } from './sort-alphabetically.pipe';\r\n\r\n@NgModule({\r\n declarations: [SortAlphabeticallyPipe],\r\n imports: [CommonModule],\r\n exports: [SortAlphabeticallyPipe],\r\n})\r\nexport class SortAlphabeticallyModule {}\r\n","import { Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable, map } from 'rxjs';\r\nimport { LanguageTranslateService } from '../../services/language-translate';\r\nimport { TranslatedLanguage } from './models/translated-language.model';\r\n\r\n@Pipe({\r\n name: 'sortLanguageList',\r\n standalone: true\r\n})\r\nexport class SortLanguageListPipe implements PipeTransform {\r\n readonly #translateService = inject(TranslateService);\r\n readonly #languageTranslationService = inject(LanguageTranslateService);\r\n\r\n transform<T>(list: T[], key?: string): Observable<TranslatedLanguage<T>[]> {\r\n const keyParts = key?.split(\".\");\r\n // do some random stream so method gets called first time when transform is executed\r\n return this.#translateService.stream(\"languages\").pipe(\r\n map(() => {\r\n if (!list) {\r\n return [];\r\n }\r\n\r\n const translatedLanguages: TranslatedLanguage<T>[] = list\r\n .map(language => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let languageCode: string;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let objValue: any = language;\r\n\r\n if (keyParts?.length) {\r\n for (const element of keyParts) {\r\n const keyPart = element;\r\n if (!objValue) {\r\n console.error(`Can't find value for sort language pipe ${key}`, language);\r\n break;\r\n }\r\n objValue = objValue[keyPart];\r\n }\r\n languageCode = objValue;\r\n }\r\n else {\r\n languageCode = language as string;\r\n }\r\n\r\n return {\r\n ...language, value: language, translation: this.#languageTranslationService.getLanguageCodeTranslation(languageCode, false)\r\n }\r\n })\r\n .sort((a, b) => {\r\n const translationA = a.translation.toLowerCase();\r\n const translationB = b.translation.toLowerCase();\r\n return translationA.localeCompare(translationB);\r\n });\r\n return translatedLanguages;\r\n })\r\n )\r\n }\r\n\r\n}\r\n","import { TitleCasePipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { HtmlHelper } from '../../helpers';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'domainTranslate',\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class DomainTranslatePipe implements PipeTransform {\r\n constructor(readonly translate: TranslateService) {}\r\n\r\n transform(value: string, isDomain: boolean): string {\r\n if (!isDomain) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n const titleCasePipe = new TitleCasePipe();\r\n const domainLocalizationKey = HtmlHelper.getLocalizationKey(value);\r\n\r\n const domains = this.translate.instant('DOMAINS');\r\n\r\n return domains[domainLocalizationKey] ?? titleCasePipe.transform(value);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { HtmlHelper } from '../../helpers';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n/**\r\n * This is a custom pipe for sorting domains.\r\n * It prioritizes the most important entries using a specific order:\r\n * \"General\" first, followed by LLM-related domains, and then the rest in alphabetical order.\r\n */\r\n@Pipe({\r\n\tname: 'sortDomains',\r\n\tstandalone: true,\r\n})\r\nexport class SortDomainsPipe implements PipeTransform {\r\n\tconstructor (readonly translate: TranslateService) {}\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\ttransform(value: any[], isDomainList: boolean, key: string): any[] {\r\n\t\tif (!isDomainList) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tconst llmDomainKeys = ['GENERAL_AI', 'PROFESSIONAL_AI', 'ACADEMIC_AI'];\r\n\r\n\t\treturn value.slice().sort((a, b) => {\r\n\t\t\tconst nameA = HtmlHelper.getLocalizationKey(a[key] ?? a);\r\n\t\t\tconst nameB = HtmlHelper.getLocalizationKey(b[key] ?? b);\r\n\r\n\t\t\tconst getPriority = (name: string): number => {\r\n\t\t\t\tif (name === 'GENERAL') return 0;\r\n\t\t\t\tif (llmDomainKeys.includes(name)) return 1;\r\n\t\t\t\treturn 2;\r\n\t\t\t};\r\n\r\n\t\t\tconst priorityA = getPriority(nameA);\r\n\t\t\tconst priorityB = getPriority(nameB);\r\n\r\n\t\t\t// First sort by custom priority\r\n\t\t\tif (priorityA !== priorityB) {\r\n\t\t\t\treturn priorityA - priorityB;\r\n\t\t\t}\r\n\r\n\t\t\tconst domains = this.translate.instant('DOMAINS');\r\n\r\n\t\t\t// If same priority, sort alphabetically\r\n\t\t\treturn (domains[nameA] ?? nameA).localeCompare(domains[nameB] ?? nameB);\r\n\t\t});\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { LanguageTranslatePipe } from '../../pipes';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LanguageTranslateService {\r\n constructor(private readonly translateService: TranslateService) {}\r\n\r\n getLanguageCodeTranslation(code: string, hideRegion = false): string {\r\n const languageTranslate = new LanguageTranslatePipe(this.translateService);\r\n return languageTranslate.transform(code, hideRegion);\r\n }\r\n\r\n removeRegionFromLanguageCode(code: string): string {\r\n return code.split('-')[0];\r\n }\r\n}\r\n","export enum Operations {\r\n\tCREATE = 'CREATE',\r\n\tDELETE = 'DELETE'\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { NotificationWithOperation } from './models/notification.model';\r\nimport { Operations } from './models/operations.enum';\r\nimport { NotificationMessage } from '../../notification-message';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class NotificationService {\r\n\tprivate messageSubject = new Subject<NotificationWithOperation>();\r\n\tnotificationMessage = this.messageSubject.asObservable();\r\n\r\n\tprivate clearMessageSubject = new Subject<NotificationMessage[]>();\r\n\tclearMessage = this.clearMessageSubject.asObservable();\r\n\r\n\taddMessage(message: NotificationMessage): void {\r\n\t\tthis.messageSubject.next({ message, operation: Operations.CREATE });\r\n\t}\r\n\r\n\tdeleteMessage(message: NotificationMessage): void {\r\n\t\tthis.messageSubject.next({ message, operation: Operations.DELETE });\r\n\t}\r\n\r\n\tclearMessages() {\r\n\t\tthis.clearMessageSubject.next([]);\r\n\t}\r\n\r\n\t// Returns True if the message is not found in the messages array, false otherwise.\r\n\tisMessageUnique(messages: NotificationMessage[], newMessage: NotificationMessage): boolean {\r\n\t\tconst newMessageJSON = JSON.stringify(newMessage);\r\n\t\treturn !messages.some(existingMessage => JSON.stringify(existingMessage) === newMessageJSON);\r\n\t}\r\n}\r\n","export enum InlineMessageIconPosition {\r\n START,\r\n END\r\n}\r\n","<div class=\"tld-inline-message {{message.type}}\">\r\n <span class=\"material-icons\" [class.order-end]=\"message.iconPosition === END_ICON_POSITION\"\r\n [matTooltip]=\"message.iconTooltip? (message.iconTooltip | translate: message.localizationParams) : ''\" *ngIf=\"iconName\">{{iconName}}</span>\r\n <section *ngIf=\"message\">\r\n <div class=\"text-s-semi-bold title\" *ngIf=\"message.title\"\r\n [innerHtml]=\"message.title | translate: message.localizationParams\">\r\n </div>\r\n <p class=\"text-s description\" *ngIf=\"message.description\" [innerHtml]=\"message.description | translate:\r\n message.localizationParams\"></p>\r\n </section>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { InlineMessageIconPosition } from './models/inline-message-icon-position.enum';\r\nimport { InlineMessage } from './models/inline-message.model';\r\n\r\n@Component({\r\n selector: 'lib-inline-message',\r\n templateUrl: './inline-message.component.html',\r\n styleUrls: ['./inline-message.component.scss'],\r\n standalone: false\r\n})\r\nexport class InlineMessageComponent {\r\n readonly END_ICON_POSITION = InlineMessageIconPosition.END;\r\n\r\n @Input() iconName = \"info\";\r\n @Input() message!: InlineMessage;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { InlineMessageComponent } from './inline-message.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n InlineMessageComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n MatTooltipModule\r\n ],\r\n exports: [\r\n InlineMessageComponent\r\n ]\r\n})\r\nexport class InlineMessageModule { }\r\n","export enum InlineMessageType {\r\n INFO = 'info',\r\n WARNING = 'warning',\r\n ERROR = 'error'\r\n}\r\n","import { Directive, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[clickOutside]',\r\n standalone: false\r\n})\r\nexport class ClickOutsideDirective {\r\n @Output() clickOutside = new EventEmitter<void>();\r\n\r\n constructor(private elementRef: ElementRef) { }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(target: HTMLElement) {\r\n const clickedInside = this.elementRef.nativeElement.contains(target);\r\n if (!clickedInside) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ClickOutsideDirective } from './click-outside.directive';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ClickOutsideDirective\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n ClickOutsideDirective\r\n ]\r\n})\r\nexport class ClickOutsideModule { }\r\n","import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\r\n\r\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[tldDragAndDrop]',\n standalone: false\n})\r\nexport class DragAndDropDirective {\r\n\r\n get disabled() { return this.element.nativeElement.classList.contains('disabled-upload-zone') }\r\n\r\n @HostBinding('class.tld-file-over') active!: boolean;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() fileDropped = new EventEmitter<any>();\r\n\r\n // Dragover listener\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @HostListener('dragover', ['$event']) onDragOver(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.active = !this.disabled;\r\n }\r\n\r\n // Dragleave listener\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @HostListener('dragleave', ['$event']) public onDragLeave(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.active = false;\r\n }\r\n\r\n // Drop listener\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @HostListener('drop', ['$event']) public ondrop(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.active = false;\r\n if (this.disabled) {\r\n return;\r\n }\r\n const files = evt.dataTransfer.files;\r\n if (files.length > 0) {\r\n this.fileDropped.emit(files);\r\n }\r\n }\r\n\r\n constructor(private readonly element: ElementRef) { }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DragAndDropDirective } from './drag-and-drop.directive';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n DragAndDropDirective\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n DragAndDropDirective\r\n ]\r\n})\r\nexport class DragAndDropModule { }\r\n","import { ComponentRef, Directive, Input, Renderer2, ViewContainerRef } from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: `button[mat-button][loading],\r\n button[mat-raised-button][loading],\r\n button[mat-icon-button][loading],\r\n button[mat-fab][loading],\r\n button[mat-mini-fab][loading],\r\n button[mat-stroked-button][loading],\r\n button[mat-flat-button][loading]`,\r\n standalone: false\r\n})\r\nexport class MatButtonLoadingDirective {\r\n\r\n private _loading = false;\r\n @Input() set loading(value: boolean) {\r\n if (value != this._loading) {\r\n this._loading = value;\r\n this.updateState();\r\n }\r\n }\r\n\r\n private spinner!: ComponentRef<MatProgressSpinner> | null;\r\n\r\n constructor(private matButton: MatButton,\r\n private viewContainerRef: ViewContainerRef,\r\n private renderer: Renderer2) { }\r\n\r\n get nativeElement(): HTMLElement {\r\n return this.matButton._elementRef.nativeElement;\r\n }\r\n\r\n updateState(): void {\r\n if (this._loading) {\r\n this.nativeElement.classList.add('mat-loading');\r\n this.matButton.disabled = true;\r\n this.createSpinner();\r\n return;\r\n }\r\n this.nativeElement.classList.remove('mat-loading');\r\n this.matButton.disabled = false;\r\n this.destroySpinner();\r\n }\r\n\r\n private createSpinner(): void {\r\n if (!this.spinner) {\r\n this.spinner = this.viewContainerRef.createComponent(MatProgressSpinner);\r\n this.spinner.instance.color = this.matButton.color;\r\n this.spinner.instance.diameter = 20;\r\n this.spinner.instance.mode = 'indeterminate';\r\n this.renderer.appendChild(this.matButton._elementRef.nativeElement, this.spinner.instance._elementRef.nativeElement);\r\n }\r\n }\r\n\r\n private destroySpinner(): void {\r\n if (this.spinner) {\r\n this.spinner.destroy();\r\n this.spinner = null;\r\n }\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonLoadingDirective } from './mat-button-loading.directive';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [MatButtonLoadingDirective],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [MatButtonLoadingDirective]\r\n})\r\nexport class MatButtonLoadingModule { }\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-tld-loader',\r\n templateUrl: './tld-loader.component.html',\r\n styleUrls: ['./tld-loader.component.scss'],\r\n standalone: false\r\n})\r\nexport class TldLoaderComponent {\r\n}\r\n","<div class=\"tld-loader accent-color\" fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <div class=\"accent-bg-color tld-loader-element element-1\"></div>\r\n <div class=\"accent-bg-color tld-loader-element element-2\"></div>\r\n <div class=\"accent-bg-color tld-loader-element element-3\"></div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { TldLoaderComponent } from './tld-loader.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n TldLoaderComponent\r\n ],\r\n exports: [\r\n TldLoaderComponent\r\n ]\r\n})\r\nexport class TldLoaderModule { }\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-company-product',\r\n templateUrl: './company-product.component.html',\r\n styleUrls: ['./company-product.component.scss'],\r\n standalone: false\r\n})\r\nexport class CompanyProductComponent{\r\n\r\n @Input() company = \"\";\r\n @Input() product = \"\";\r\n\r\n}\r\n","<div fxHide.lt-md class=\"tilde-product-title\">\r\n <span class=\"company\">\r\n {{company | uppercase}}\r\n </span>\r\n <span class=\"product\">\r\n {{product}}\r\n </span>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CompanyProductComponent } from './company-product.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CompanyProductComponent\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [CompanyProductComponent]\r\n})\r\nexport class CompanyProductModule { }\r\n","<footer fxLayout=\"row\" class=\"text-m\">\r\n <div fxFlex fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutAlign.xs=\"center center\" fxLayout.xs=\"column\"\r\n fxLayoutGap=\"16px\">\r\n <div>\r\n {{ 'FOOTER.TITLE' | translate: {currentYear: currentYear} }}\r\n </div>\r\n <div fxLayoutGap=\"1rem\">\r\n <ng-container *ngIf=\"baseUrl; else localRoutes\">\r\n <a class=\"semi-bold\" *ngIf=\"termsOfUseRoute\" [attr.href]=\"termsOfUseRoute\" target=\"_blank\"> {{\r\n 'FOOTER.TERMS_OF_USE' |\r\n translate }}</a>\r\n <a class=\"semi-bold\" *ngIf=\"privacyRoute\" [attr.href]=\"privacyRoute\" target=\"_blank\"> {{ 'FOOTER.PRIVACY'\r\n | translate }}</a>\r\n <a class=\"semi-bold\" *ngIf=\"contactUsRoute\" [routerLink]=\"[contactUsRoute]\"> {{ 'FOOTER.CONTACT_US'| translate\r\n }}</a>\r\n\r\n </ng-container>\r\n <ng-template #localRoutes>\r\n <a class=\"semi-bold\" *ngIf=\"termsOfUseRoute\" [routerLink]=\"[termsOfUseRoute]\"> {{ 'FOOTER.TERMS_OF_USE' |\r\n translate }}</a>\r\n <a class=\"semi-bold\" *ngIf=\"privacyRoute\" [routerLink]=\"[privacyRoute]\"> {{ 'FOOTER.PRIVACY'| translate }}</a>\r\n <a class=\"semi-bold\" *ngIf=\"contactUsRoute\" [routerLink]=\"[contactUsRoute]\"> {{ 'FOOTER.CONTACT_US'| translate\r\n }}</a>\r\n </ng-template>\r\n </div>\r\n </div>\r\n</footer>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'tld-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.scss'],\r\n standalone: false\r\n})\r\nexport class FooterComponent implements OnInit {\r\n currentYear!: number;\r\n\r\n readonly defaultTermsRoute = \"terms-of-use\";\r\n readonly defaultPrivacyRoute = \"privacy-policy\"\r\n\r\n @Input() privacyRoute = this.defaultPrivacyRoute;\r\n @Input() termsOfUseRoute = this.defaultTermsRoute;\r\n @Input() contactUsRoute = \"https://tilde.com/about/get-in-touch\";\r\n\r\n @Input() baseUrl!: string;\r\n\r\n constructor() {\r\n this.currentYear = new Date().getFullYear();\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.baseUrl) {\r\n this.privacyRoute = this.baseUrl + this.privacyRoute;\r\n this.termsOfUseRoute = this.baseUrl + this.termsOfUseRoute;\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FooterComponent } from './footer.component';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n FooterComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FlexLayoutModule,\r\n TranslateModule,\r\n RouterModule\r\n ],\r\n exports: [FooterComponent]\r\n})\r\nexport class FooterModule { }\r\n","export enum FileUploadErrorTypeEnum{\r\n FILE_UPLOAD_UNSUPPORTED_FORMAT = \"FILE_UPLOAD_UNSUPPORTED_FORMAT\",\r\n FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER = \"FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER\",\r\n MAX_SIZE = \"FILE_UPLOAD_MAX_SIZE\",\r\n FILE_EMPTY = \"FILE_UPLOAD_EMPTY\"\r\n}\r\n","export enum FileTypeIcons{\r\n WORD = \"file_type_word\",\r\n WEB = \"file_type_web\",\r\n OTHER = \"file_type_other\",\r\n POWERPOINT = \"file_type_powerpoint\",\r\n EXCEL = \"file_type_excel\",\r\n OFFICE_OTHER = \"file_type_office_other\",\r\n PDF = \"file_type_pdf\",\r\n SCANNED = \"file_type_scanned\",\r\n INTERCHANGE = \"file_type_interchange\",\r\n}","export enum FileCategories {\r\n OFFICE = \"OFFICE\",\r\n SCANNED = \"SCANNED\",\r\n INTERCHANGE = \"INTERCHANGE\",\r\n WEB = \"WEB\",\r\n OTHER = \"OTHER\"\r\n}","export enum FileTypes{\r\n WORD = \"WORD\",\r\n WEB = \"WEB\",\r\n OTHER = \"OTHER\",\r\n POWERPOINT = \"POWERPOINT\",\r\n EXCEL = \"EXCEL\",\r\n OFFICE_OTHER = \"OFFICE_OTHER\",\r\n PDF = \"PDF\",\r\n SCANNED = \"SCANNED\",\r\n INTERCHANGE = \"INTERCHANGE\",\r\n}","export enum FileExtensions{\r\n DOC = \"doc\",\r\n DOCX = \"docx\",\r\n DOCM = 'docm',\r\n XLSX = \"xlsx\",\r\n PPTX = \"pptx\",\r\n ODT = \"odt\",\r\n ODP = \"odp\",\r\n ODS = \"ods\",\r\n TXT = \"txt\",\r\n RTF = \"rtf\",\r\n PAGES = \"pages\",\r\n SXW = \"sxw\",\r\n JPG = \"jpg\",\r\n JPEG = \"jpeg\",\r\n PNG = \"png\",\r\n BMP = \"bmp\",\r\n PDF = \"pdf\",\r\n SDLXLIFF = \"sdlxliff\",\r\n SDLXLF = \"sdlxlf\",\r\n TTX = \"ttx\",\r\n TMX = \"tmx\",\r\n XLF = \"xlf\",\r\n XLIF = \"xlif\",\r\n HTML = \"html\",\r\n HTM = \"htm\",\r\n JSON = \"json\",\r\n XHTML = \"xhtml\",\r\n XHT = \"xht\",\r\n XLIFF = \"xliff\",\r\n TEX = \"tex\",\r\n TTL = \"ttl\",\r\n SRT = \"srt\"\r\n}","export const FILE_TYPE_WORD = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M21.128 2.75H7.872C7.3905 2.75 7 3.10796 7 3.54933V6.87637H22V3.54933C22 3.10796 21.6095 2.75 21.128 2.75Z\" fill=\"#2D92D4\"/>\r\n<path d=\"M7 15.1499V18.4508C7 18.8922 7.3905 19.2502 7.8715 19.2502H21.128C21.6095 19.2502 22 18.8922 22 18.4508V15.1499H7Z\" fill=\"#2150A9\"/>\r\n<path d=\"M7 6.87646H22V11.0024H7V6.87646Z\" fill=\"#2D83D4\"/>\r\n<path d=\"M7 11.0024H22V15.1504H7V11.0024Z\" fill=\"#2E70C9\"/>\r\n<path d=\"M11.1595 15.5832H2.8405C2.3765 15.5832 2 15.238 2 14.8127V7.18696C2 6.76163 2.3765 6.4165 2.8405 6.4165H11.1595C11.6235 6.4165 12 6.76163 12 7.18696V14.8127C12 15.238 11.6235 15.5832 11.1595 15.5832Z\" fill=\"#00488D\"/>\r\n<path d=\"M9.20131 8.7085L8.42831 12.0378L7.57181 8.7085H6.47831L5.59481 12.141L4.79831 8.7085H3.82031L4.99231 13.2918H6.16831L7.02481 9.7677L7.88181 13.2918H9.00731L10.1793 8.7085H9.20131Z\" fill=\"white\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_WEB = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M8 15H16V17H8V15ZM8 11H16V13H8V11ZM14 1H6C4.9 1 4 1.9 4 3V19C4 20.1 4.89 21 5.99 21H18C19.1 21 20 20.1 20 19V7L14 1ZM18 19H6V3H13V8H18V19Z\" fill=\"#DF9BA4\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_SCANNED = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M8 15H16V17H8V15ZM8 11H16V13H8V11ZM14 1H6C4.9 1 4 1.9 4 3V19C4 20.1 4.89 21 5.99 21H18C19.1 21 20 20.1 20 19V7L14 1ZM18 19H6V3H13V8H18V19Z\" fill=\"#245A30\"/>\r\n</svg>\r\n`;\r\n","export const FILE_TYPE_POWERPOINT = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M4 11C4 15.5563 8.0295 19.25 13 19.25C17.9705 19.25 22 15.5563 22 11H13H4Z\" fill=\"#DC4C2C\"/>\r\n<path d=\"M13 2.75V11H22C22 6.44371 17.9705 2.75 13 2.75Z\" fill=\"#F7A278\"/>\r\n<path d=\"M13 2.75C8.0295 2.75 4 6.44371 4 11H13V2.75Z\" fill=\"#C06346\"/>\r\n<path d=\"M11.1595 15.5832H2.8405C2.3765 15.5832 2 15.238 2 14.8127V7.18696C2 6.76163 2.3765 6.4165 2.8405 6.4165H11.1595C11.6235 6.4165 12 6.76163 12 7.18696V14.8127C12 15.238 11.6235 15.5832 11.1595 15.5832Z\" fill=\"#9B341F\"/>\r\n<path d=\"M7.3365 8.71387H5V13.2972H6.012V11.6834H7.15C8.088 11.6834 8.8485 10.9863 8.8485 10.1265V10.0999C8.8485 9.33445 8.1715 8.71387 7.3365 8.71387ZM7.785 10.2475C7.785 10.6412 7.4365 10.9606 7.007 10.9606H6.012V9.43666H7.007C7.4365 9.43666 7.785 9.75612 7.785 10.1498V10.2475Z\" fill=\"white\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_PDF = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n<rect x=\"4\" y=\"1\" width=\"16.2822\" height=\"20\" fill=\"url(#pattern0)\"/>\r\n<defs>\r\n<pattern id=\"pattern0\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\r\n<use xlink:href=\"#image0_1791_18185\" transform=\"scale(0.000833333 0.000678426)\"/>\r\n</pattern>\r\n<image id=\"image0_1791_18185\" width=\"1200\" height=\"1474\" xlink:href=\"data:image/png;base64,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ffZ/fq9///6x7LLLxiqrrBKrrrpqrLrqqh9fOgYdoa2tLUaPHh2jR4+OBx988ONf79u3byy33HKx3HLLxfLLLx9rrbVWLLzwwgoGADAHAiwAGs6/d8888cQTERGRy+ViyJAhseaaa8Z6660Xa6+9tnOO6BRTp06Np59+Op5++umPf23xxRePddZZJ9Zdd91Ye+21o2/fvgoFAPAJAiwAGl61Wo2RI0fGyJEj45ZbbolisRirrrpqbLjhhrHlllvGoosuqkh0mnfeeSfeeeeduP322yOXy8Wyyy4ba6+9dmy22WaxyiqrRJIkigQANDwBFgB8QqlUimeeeSaeeeaZuOCCC2K11VaLrbbaKrbcckvnZ9GpqtVqvPrqq/Hqq6/Gb37zmxg4cGBsuummsfnmm8dqq60mzAIAGpYACwA+Q5qm8dxzz8Vzzz0X55xzTmy55Zbxne98J5ZaainFodONGzcubrrpprjpppti0KBBseWWW8Z2220XSy+9tOIAAA0lpwQAMHdKpVLce++98bWvfS2OPfbYePXVVxWFLjN27Ni4/vrr4xvf+Ebsvffecc8990SlUlEYAKAhCLAA4HOqVqvxwAMPxN577x0//elPY9KkSYpCl3rllVfipJNOiq985Stx+eWXx5QpUxQFAKhrAiwAmEdpmsa9994bu+++e9x4441RLpcVhS41ceLEuOKKK+IrX/lKnH766TF+/HhFAQDqkgALAObTRx99FOecc07sv//+8dZbbykIXa6trS1uu+222GWXXeK0006LyZMnKwoAUFcEWADQQV5++eXYe++94/bbb1cMukWpVIrbb789dtlll7jgggti+vTpigIA1AUBFgB0oOnTp8dpp50WJ554YrS1tSkI3bYOr7/++thjjz3i3nvvVRAAoOYJsACgE/zxj3+Mgw8+2KVcdKsJEybET3/60zj44INd3goA1DQBFgB0khdffDH23XffePPNNxWDbvXMM8/Et771rbj++uujWq0qCABQcwRYANCJ3n333TjggANi+PDhikG3am1tjQsuuCAOOOCAGDlypIIAADVFgAUAnWzq1Klx2GGHxUsvvaQYdLvhw4fHPvvs48sGAICaIsACgC4wbdq0OPTQQ+PVV19VDLpdW1tbnHbaafHTn/40WltbFQQAyDwBFgB0kY8++igOP/zwGD16tGKQCffee28ccMAB8fbbbysGAJBpAiwA6EKTJ0+OI444wrcTkhmvvfZa7L333vHII48oBgCQWQIsAOhiY8eOjWOOOSba29sVg0yYNm1aHH300XHDDTcoBgCQSQIsAOgGzz//fJx++ukKQWakaRrnnntuXHDBBYoBAGSOAAsAusndd98dN910k0KQKddff32cfPLJUalUFAMAyAwBFgB0o/POOy9eeuklhSBT7r777vjRj34UbW1tigEAZIIACwC6UblcjpNOOilaW1sVg0x55JFH4qijjnJWGwCQCQIsAOhmo0ePdu4QmfTUU0/FCSecENVqVTEAgG4lwAKADLjlllvi0UcfVQgy58EHH4xf/OIXCgEAdCsBFgBkQJqmccYZZ8T06dMVg8y59dZb46KLLlIIAKDbFJQAgDnZZZddYu211+7Q2yyVSv9z7tO0adOiWq3Ghx9+GB988MGn/j1x4sS6P1B63LhxcdVVV8X3vvc9i47Mufbaa6OlpSW+8Y1vKAYA0OUEWADM0YorrhhbbLFFt44hTdOYOHFijBkzJt59990YM2ZMjB49Op5//vl4//3366bWN954Y+ywww4xdOhQC28u9OrVK44//vgOua22trZob2//n/D0/fffjwkTJsT48ePrap3Nq/PPPz+GDh0aG2ywgcXXzfbdd99YccUVFaKTrLDCCooAkDECLABqQpIkMWDAgBgwYECsscYa//N7b731Vvzzn/+Mv//97/HXv/41Pvzww5qdZ7lcjjPPPDMuuuiiSJJE4+f0RqZQ6LJwtb29PUaPHh2jRo2KkSNHxmuvvRYvvvhiTJ06tWHqXa1W4yc/+Ulcc801scQSS1iA3WiVVVaJDTfcUCEAaJz3fUoAQK0bPHhwDB48OHbYYYcolUrxyCOPxHXXXRevvPJKTc7nmWeeiQcffDA233xzzc2QpqamWG655WK55Zb7n1//d4D65JNPxpNPPhlTpkyp6zp8+OGHccwxx8QVV1wRPXv2tDAAgC7hEHcA6kqxWIwtttgirr322jjttNNiwIABNTmPK664IqrVqobWgH+HpyeffHLce++9cdVVV8U3v/nNWHTRRet2zm+88Uaceuqpmg8AdBkBFgB1a/PNN4+bbroptt1225ob+4gRI+LBBx/UxFp7Y5XLxcorrxyHHXZY3H777XHZZZfFDjvsEM3NzXU31z/96U9xww03aDoA0DXvs5QAgHrWu3fvOOmkk+Koo46KXK62XvauvPJKu7BqWJIksdpqq8UJJ5wQd911Vxx22GE1uyNwdi6++OIYOXKkZgMAnU6ABUBD2H333ePUU0+NpqammhmzXVj1Y8EFF4xvfvObceutt8YxxxwTgwYNqot5tbe3x0knnRSVSkWTAYBOJcACoGFsttlmceaZZ0ahUDvfYfLb3/5W4+pIU1NT7LLLLnHLLbfEkUceGb179675Ob3yyitx7bXXai4A0KkEWAA0lA022CBOOOGEmrmc8IUXXogRI0ZoXJ0pFArxta99LW699dbYcccdI0mSmp7PVVddFa+//rrGAgCdRoAFQMPZZptt4oADDqiZ8d52222aVqdaWlriJz/5SVx88cWx5JJL1uw8SqVSnHTSSVEqlTQVAOgUAiwAGtJ3vvOd2GyzzWpirPfcc0/MmDFD0+rYGmusEdddd11svfXWNTuH119/PW688UbNBAA6hQALgIaUJEkcf/zxMXDgwMyPddq0afHAAw9oWp3r1atXnHLKKXHiiSdGjx49anIOV199dUycOFEzAYAOJ8ACoGH16dMnTjjhhJo4f+j+++/XsAax/fbbx0UXXRQLLbRQzY19+vTpcdlll2kiANDhBFgANLS11147dt1118yP8+9//3tMmzZNwxrEyiuvHNdee20st9xyNTf2P/zhD/HKK69oIgDQoQRYADS8Qw45JPr375/pMZZKpXj00Uc1q4EsssgicfHFF8cqq6xSU+OuVqtx7rnnaiAA0KEEWAA0vN69e8dBBx2U+XE+9NBDmtVg+vTpE+edd16suuqqNTXuZ555Jh5++GENBAA6jAALACJixx13jKWWWirTY3z88cejra1NsxpM796949xzz43ll1++psZ98cUXR7Va1UAAoEMIsAAgInK5XOy9996ZHuP06dPjpZde0qwG1Lt37zjvvPNi8ODBNTPmUaNGxSOPPKJ5AEDHvF9XAgCYaZtttolFF10002N87rnnNKpBtbS0xNlnnx19+/atmTFfc801GgcAdAgBFgD8S6FQiB133DHTY3zhhRc0qoEtueSSceqpp0Y+n6+J8b788svx5JNPahwAMN8EWADwX3bcccfI5bL78vj88887V6jBrb322nHIIYfUzHjtwgIAOoIACwD+y6BBg2L11VfP7PimTZsWI0aM0KgG981vfjM22mijmhjrM888Y+cgADDfBFgA8Akbb7xxpsf38ssva1KDS5IkjjvuuOjXr19NjPf666/XNABgvgiwAOATvvjFL2Z6fKNGjdIkYqGFFopjjz22Jsb6t7/9LcaNG6dpAMA8E2ABwCcMGTIkBg0alNnxCbD4t0022SS22GKLzI+zWq3G7bffrmEAwDwTYAHALKy66qqZHdvo0aM1iI/94Ac/iD59+mR+nHfccUeUy2UNAwDmiQALAGZhpZVWyuzY3nvvvZg+fbomERER/fv3jwMOOCDz43z//ffj4Ycf1jAAYJ4IsABgFlZeeeXMji1N03j77bc1iY/ttttuMXjw4MyP89Zbb9UsAGCeCLAAYBaWXnrpTI/Pgdj8t0KhEAcddFDmx/mPf/wj3nrrLQ0DAD43ARYAzELv3r2jpaUls+ObNGmSJvE/Nt9880xf+hoxc/fgvffeq1kAwOcmwAKA2cjyJVkCLD4pSZL4zne+k/lx/ulPf4o0TTUMAPhcBFgAMBuLLbZYZscmwGJWNt5441h++eUzPcYxY8bEyy+/rFkAwOciwAKA2ejXr19mx/b+++9rEJ+SJEnstddemR/nn//8Z80CAD4XARYAzEaWA6wpU6ZoELO0xRZbxCKLLJLpMf75z3+OarWqWQDAXBNgAcBs9O3bN7Nja2tr0yBmKZ/Px0477ZTpMU6YMCGef/55zQIA5poACwBmo2fPnpkdW3t7uwYxW1/96lejWCxmeoz333+/RgEAc02ABQCz0dTUlNmx2YHFZ1l44YVjo402yvQYH330UY0CAOaaAAsAZiPLAVapVNIgPtO2226b6fGNHTs23nzzTY0CAOaKAAsAZiPLl2DZgcWcbLjhhtHS0pLpMdqFBQDMLQEWAMxGpVLJ7NjK5bIG8ZmKxWJsscUWmR7j448/rlEAwFwRYAHAbLS2tmZ2bFk/oJts2HzzzTM9vueeey6mT5+uUQDAHAmwAGA2svxNf1k+n4vsWGONNWLBBRfM9GPs2Wef1SgAYI4EWAAwG1k+KN0OLOZGPp+PDTfcMNNjfOKJJzQKAJgjARYAzEaWD0oXYDG3Nt5440yP7/nnn9ckAGCOBFgAMBtTp07N7NhcQsjcWnfddSOXy+5bvtdff905WADAHAmwAGA2JkyYkNmxLbDAAhrEXK+VFVZYIbPjq1ar8dJLL2kUAPCZBFgAMBsTJ07M7NhaWlo0iLm27rrrZnp8L7zwgiYBAJ9JgAUAs/H+++9ndmwLLbSQBjHX1lprrUyPT4AFAMyJAAsAZmP8+PGZHVvfvn01iLm2yiqrZPocrH/+859RrVY1CgCYLQEWAMzChx9+mOkzsOzA4vPo1atXLL300pkd30cffRRvvvmmRgEAsyXAAoBZGDFiRKbHt/DCC2sSn8tqq62W6fG98cYbmgQAzJYACwBq8MP04MGDNYnPZaWVVsr0+EaOHKlJAMBsCbAAYBayvAMrl8vFoEGDNInPZbnllsv0+ARYAMBnvgdWAgD4tGeeeSazY1t00UWjWCxqEp/L0KFDo7m5ObPjE2ABAJ9FgAUAnzBhwoRMHyi95JJLahKfW6FQiCFDhmR2fGPGjIkZM2ZoFAAwSwIsAPiEv//975GmaWbHN3ToUE1ingwbNiyzY6tWq76JEACYLQEWAHzCE088kenxrbjiiprEPMn67r2sf/snANB9BFgA8F9mzJgRjzzySKbHmPVvkyO7llhiiUyP791339UkAGCWBFgA8F/+8pe/xPTp0zM7vt69e2c+hCC7Fl988UyPb+zYsZoEAMySAAsA/stdd92V6fGtuOKKkct5+WbeZD38FGABALPjHTAA/MuIESPi2WefzfQYV1ttNY1inrW0tETv3r0zO7733ntPkwCAWRJgAcC/XHbZZZn+9sGIiPXXX1+jmC9Z3oU1fvz4qFarmgQAfIoACwAi4tVXX42HH34402Ps06dPrLzyyprFfMlygFUul2PixImaBAB8igALgIaXpmlccMEFmd99td5660U+n9cw5ouD3AGAWiTAAqDh3XHHHfHUU09lfpzrrbeeZjHfBgwYkOnxTZgwQZMAgE8RYAHQ0MaOHRvnnntu5seZz+djk0020TDmW0tLS6bH98EHH2gSAPApAiwAGlZbW1scf/zxMX369MyPdf31149+/fppGvOtb9++mR6fAAsAmJWCEgDQiKrVapx44okxfPjwmhjvtttuq2l0CDuw6sObb76Z+TCyO/Tu3TuGDh2qEAB1SIAFQMOpVqtx+umnx4MPPlgT4+3Zs2dsvPHGGkeHsAOrPtTCpc/dYc0114yLL75YIQDqkAALgIYyY8aM+OlPfxoPPfRQzYx58803j549e2oeHcIOLACgFgmwAGgY7733Xvzwhz+M1157rabGveeee2oeHaZHjx7R3NwcbW1tmRyfAAsAmBWHuANQ96rVatxzzz3x7W9/u+bCqzXXXDOWX355TaRDZXkXlgALAJgVO7AAqGvDhw+PX/ziF/HKK6/U5PjtvqIztLS0xLhx4zI5tvb2dg0CAD5FgAVA3alWq/Hoo4/GDTfcEM8880zNzmOJJZaITTbZREPpcH369Mns2ARYAMCsCLAAqBvvvPNOPPjgg3HHHXfEW2+9VfPz2X///SOXc7U/Ha9YLGZ2bOVyWYMAgE8RYAFQsyqVSrz++uvx2GOPxUMPPRSvvvpq3cxt2LBhsc0222gynSLLAVapVNIgAOBTBFgA1IRyuRzvvvtujBo1KoYPHx7Dhw+Pl19+OWbMmFGX8z344IPtvqLTNDU1ZfqxDgDwSQIsALpFqVSK1tbWiIiYMWNGTJs2LaZOnRpTpkyJKVOmxOTJk2PSpEnx9ttvx5gxY+Ldd9+NSqXSELVZZZVVYuONN7ZI6DT5fD7Tzw0AAJ8kwAJgjs4666w477zzOuS2PvzwQwX9DPl8Po4++uhIkkQx6DRZv4QwTVOPAQDgfwiwAJij1tbWj3dL0bn23HPPWH755RWCTpXlSwgjZl5GmOWQDQDoeg7XAICMWHTRReOAAw5QCDpd1sOhLF/iCAB0DwEWAGRAkiRx9NFHR69evRSDTlcoZHcTfi6X8wUGAMCn3yMoAQB0v9122y023HBDhaBLZHkHlksHAYBZEWABQDcbNmxYHHrooQpBl8nyJXouHwQAZkWABQDdqEePHnHaaadFc3OzYtBlSqVSZsdmBxYAMCsCLADoJkmSxHHHHRdDhgxRDLpUuVzO7NiyfD4XANB9BFgA0E3233//2HrrrRWCLpflHVgCLABgVgRYANANttxyy9hvv/0Ugm7R3t6e2bEJsACAWRFgAUAXW3PNNePEE0+MJEkUg26R5QCrT58+GgQAfIoACwC60GqrrRZnnXVWNDU1KQbdJstnYPXu3VuDAIBPEWABQBdZbbXV4pxzzolevXopBt0qyzuwFlhgAQ0CAD5FgAUAXWDttdcWXpEZWT7E3SWEAMCsCLAAoJPtuOOOwisyxRlYAECt8TUvANBJkiSJ/fbbLw444ADFIFOmTp2a2bEJsACAWRFgAUAnWHDBBeMnP/lJbLLJJopB5giwAIBaI8ACgA62yiqrxCmnnBKLLbaYYpBJAiwAoNYIsACggxSLxdh3331jn332iVzOMZNk07Rp0zJ9BtaAAQM0CQD4FAEWAHSANddcM374wx/GsGHDFINMmzx5cqbHt/DCC2vSXFhhhRWiX79+CvEJyyyzjCIA1CkBFgDMhwEDBsRhhx0WW2+9tWJQE6ZMmZL5xxRzduCBB8aGG26oEAA0DAEWAMyDlpaW2GuvvWL33XePHj16KAg1I8vnXzU1NUXfvn01CQD4FAEWAHwOCy20UOy1116xyy67RM+ePRWEmpPlHVgLL7xwJEmiSQDApwiwAGAurLDCCrHzzjvHdtttF83NzQpCzZo0aVJmx+b8KwBgdgRYADAbSy21VGy22Wax4447xpJLLqkg1IUxY8ZkdmyLLLKIBgEAsyTAAoB/yeVyseqqq8bGG28cX/rSl2Lw4MGKQt0RYAEAtUiABUDjvggWCrHMMsvEaqutFquttlqss846seCCCyoMdS3LAZbQGACY7Xt3JQCgEfTr1y+WXnrpWHbZZWPYsGGxzDLLxHLLLReFgpdCGkd7e3uMHz8+s+MTYAEAs+NdOwB1oVgsxsCBA2PRRReNQYMGxWKLLRaDBg2KQYMGxVJLLRX9+vVTJBreO++8E9VqNbPjE2ABALMjwAKgS+Vyuejdu/f//FqPHj2iqanp4//v06fPx7+24IILRnNzczQ3N0efPn2iT58+0b9//+jbt2+0tLRES0tL9O/f/1O3CXxali8f7Nmzp28hBABmS4AFwBwdd9xx8ZWvfEUhoMa9/fbbmR3b4MGDI0kSTQIAZimnBAAAjcEB7gBArRJgAQA0iFdeeSWzY1tyySU1CACYLQEWAEADKJVK8frrr2d2fMstt5wmAQCzJcACAGgAb7zxRrS3t2d2fCussIImAQCzJcACAGgAL730UmbH1rdv3xg0aJAmAQCzJcACAGgAL7/8cmbHZvcVADAnAiwAgAaQ5R1YAiwAYE4EWAAAda61tTVGjx6d2fEJsACAORFgAQDUuZdeeikqlUpmxyfAAgDmRIAFAFDnHnvsscyObaGFFnKAOwAwRwIsAIA69/jjj2d2bGuttVYkSaJJAMBnEmABANSxiRMnxogRIzI7vjXWWEOTAIA5EmABANSxxx57LNI0zez41lprLU0CAOZIgAUAUMeeeOKJzI6tX79+sdRSS2kSADBHAiwAgDpVqVTiySefzOz4nH8FAMwtARYAQJ16/vnn46OPPsrs+Jx/BQDMLQEWAECduu+++zI9vnXXXVeTAIC5IsACAKhDbW1tcf/992d2fEOHDo3BgwdrFAAwVwRYAAB16JFHHsn05YMbb7yxJgEAc02ABQBQh+65555Mj2+TTTbRJABgrgmwAADqzKRJkzL97YP9+vWLlVdeWaMAgLkmwAIAqDN//OMfo1KpZHZ8G2+8ceRy3oYCAHPPOwcAgDqSpmn84Q9/yPQYnX8FAHxeAiwAgDry1FNPxciRIzM7vt69e8d6662nUQDA5yLAAgCoIzfeeGOmx7fFFltEc3OzRgEAn4sACwCgTowaNSqeeOKJTI9xu+220ygA4HMTYAEA1Imrrroq0jTN7PgWXXTRWH311TUKAPjcBFgAAHXgrbfeigceeCDTY9x22219+yAAME+8gwAAqANXXnllVCqVTI/R5YMAwLwSYAEA1LjXX389/vSnP2V6jCuvvHIMGTJEswCAeSLAAgCoceeff35Uq9VMj3G33XbTKABgngmwAABq2OOPPx5PPvlkpsfYr1+/2HLLLTULAJhnAiwAgBpVKpXiV7/6VebHucsuu0RTU5OGAQDzTIAFAFCjrrvuunjzzTczPcZCoRA777yzZgEA80WABQBQg95666249tprMz/OzTffPAYMGKBhAMB8EWABANSYSqUSJ598crS1tWV+rHvssYeGAQDzTYAFAFBjrrrqqvjnP/+Z+XGutdZaseqqq2oYADDfBFgAADXkueeei6uvvromxnrggQdqGADQIQRYAAA1YuLEiXH88cdHpVLJ/FjXWWedWH311TUNAOgQAiwAgBrQ1tYWRx99dEyYMKEmxmv3FQDQkQRYAAAZV61W46STTooXX3yxJsa7wQYbxBe+8AWNAwA6jAALACDD0jSN0047LR544IGaGG+SJLH//vtrHADQoQRYAAAZlaZpnHPOOXHnnXfWzJi33nrrWGWVVTQPAOhQBSUAAMiearUap59+etxxxx01M+ZevXrFoYceqnkAQIcTYAEAZExbW1ucfPLJcf/999fUuPfbb78YMGCABgIAHU6ABQCQIRMmTIhjjjmmZg5s/7fBgwfHHnvsoYEAQKdwBhYAQEY899xzsc8++9RceBURcfTRR0dTU5MmAgCdwg4sAIBuVi6X44orrohrr702qtVqzY1/q622inXWWUcjAYBOI8ACAOhGr7/+epx22mk1uesqImLhhReOo446SiMBgE4lwAIA6AYzZsyIK6+8Mm644YaoVCo1O49jjz02WlpaNBQA6FQCLACALtTW1ha33XZbXHPNNTF58uSansvOO+8cG264oaYCAJ1OgAUA0AVaW1vj7rvvjmuvvTbGjRtX8/NZcskl47DDDtNYAKBLCLAAADrR2LFj4/e//33ccccd8cEHH9TFnHK5XJxwwgnRq1cvDQYAuoQACwCgg02bNi0efvjheOCBB+Kxxx6ryW8W/CyHHnpofOELX9BoAKDLCLAAADrAu+++G0899VT89a9/jaeffjra2trqcp5bb711fOMb39BwAKBLCbAAAD6n1tbWGDVqVAwfPjz++c9/xnPPPVcX51rNyfLLLx/HHXecBQAAdDkBFgDAJ0yfPj0+/PDDmDJlSowbNy7Gjh0b7733XrzzzjsxYsSIePfdd+vussA5aWlpiTPOOCN69OhhgQAAXU6ABQDUrGnTpsXee+89X7fx0UcfRZqmERHxwQcfxIwZM6JcLivuf8nn83HqqafGoEGDFAMA6BYCLACgZlUqlXjllVcUohMlSRI//vGPY6211lIMAKDb5JQAAIDZOeyww+LLX/6yQgAA3UqABQDALO23336+cRAAyAQBFgAAn7LbbrvFgQceqBAAQCYIsAAA+B/bbrtt/OAHP1AIACAzHOIOAMDHtt9++zj++OMjl/P3nABAdgiwAACIiIg999wzjjzyyEiSRDEAgEwRYAEAEN/61rfie9/7nkIAAJkkwAIAaGBJksQRRxwRX/va1xQDAMgsARYAQIPq1atXnHjiibHpppsqBgCQaQIsAIAGNHDgwPjFL34Ryy+/vGIAAJnn62UAABrM6quvHtdee63wCgCoGXZgAQA0kJ122il++MMfRqHgbSAAUDu8cwEAaAC9e/eOo48+OrbddlvFAABqjgALAKDOrbzyynHSSSfFkksuqRgAQE0SYAEA1Knm5ubYf//945vf/Gbk83kFAQBqlgALAKAOrbnmmvHjH/84Bg8erBgAQM0TYAEA1JFFFlkkDj744Nhuu+0iSRIFAQDqggALAKAOLLDAAvHtb3879txzz2hublYQAKCuCLAAAGpYr169Ytddd4199tkn+vTpoyAAQF0SYAEA1KBFF100dt9999h5552j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\"/>\r\n</defs>\r\n</svg>\r\n`;","export const FILE_TYPE_OTHER = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M8 15H16V17H8V15ZM8 11H16V13H8V11ZM14 1H6C4.9 1 4 1.9 4 3V19C4 20.1 4.89 21 5.99 21H18C19.1 21 20 20.1 20 19V7L14 1ZM18 19H6V3H13V8H18V19Z\" fill=\"#4D7498\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_OFFICE_OTHER = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M8 15H16V17H8V15ZM8 11H16V13H8V11ZM14 1H6C4.9 1 4 1.9 4 3V19C4 20.1 4.89 21 5.99 21H18C19.1 21 20 20.1 20 19V7L14 1ZM18 19H6V3H13V8H18V19Z\" fill=\"#8E80DB\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_INTERCHANGE = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M8 15H16V17H8V15ZM8 11H16V13H8V11ZM14 1H6C4.9 1 4 1.9 4 3V19C4 20.1 4.89 21 5.99 21H18C19.1 21 20 20.1 20 19V7L14 1ZM18 19H6V3H13V8H18V19Z\" fill=\"#B85547\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_EXCEL = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M22 6.875H14V11H22V6.875Z\" fill=\"#21A366\"/>\r\n<path d=\"M22 11H6V18.3333C6 18.8398 6.4475 19.25 7 19.25H21C21.5525 19.25 22 18.8398 22 18.3333V11Z\" fill=\"#185C37\"/>\r\n<path d=\"M22 11H14V15.125H22V11Z\" fill=\"#107C42\"/>\r\n<path d=\"M14 6.875H6V11H14V6.875Z\" fill=\"#3FA071\"/>\r\n<path d=\"M21 2.75H14V6.875H22V3.66667C22 3.16021 21.5525 2.75 21 2.75Z\" fill=\"#33C481\"/>\r\n<path d=\"M7 2.75H14V6.875H6V3.66667C6 3.16021 6.4475 2.75 7 2.75Z\" fill=\"#21A366\"/>\r\n<path opacity=\"0.05\" d=\"M11.1595 5.9585H6V16.9585H11.1595C12.176 16.9585 13 16.2032 13 15.2714V7.64562C13 6.71383 12.176 5.9585 11.1595 5.9585Z\" fill=\"black\"/>\r\n<path opacity=\"0.07\" d=\"M11.1065 16.4999H6V6.11084H11.1065C11.9685 6.11084 12.667 6.75113 12.667 7.5413V15.0694C12.6665 15.8596 11.968 16.4999 11.1065 16.4999Z\" fill=\"black\"/>\r\n<path opacity=\"0.09\" d=\"M11.053 16.0418H6V6.26416H11.053C11.76 6.26416 12.333 6.78941 12.333 7.43749V14.8685C12.3335 15.5165 11.76 16.0418 11.053 16.0418Z\" fill=\"black\"/>\r\n<path d=\"M11 15.5832H3C2.4475 15.5832 2 15.173 2 14.6665V7.33317C2 6.82671 2.4475 6.4165 3 6.4165H11C11.5525 6.4165 12 6.82671 12 7.33317V14.6665C12 15.173 11.5525 15.5832 11 15.5832Z\" fill=\"url(#paint0_linear_1791_17641)\"/>\r\n<path d=\"M4.9032 8.7085H6.09619L7.06419 10.4291L8.08719 8.7085H9.20169L7.66619 11.0002L9.23669 13.2918H8.06119L7.00619 11.4906L5.95569 13.2918H4.7627L6.35919 10.9919L4.9032 8.7085Z\" fill=\"white\"/>\r\n<defs>\r\n<linearGradient id=\"paint0_linear_1791_17641\" x1=\"2.3625\" y1=\"6.7488\" x2=\"10.732\" y2=\"15.8792\" gradientUnits=\"userSpaceOnUse\">\r\n<stop stop-color=\"#18884F\"/>\r\n<stop offset=\"1\" stop-color=\"#0B6731\"/>\r\n</linearGradient>\r\n</defs>\r\n</svg>\r\n`;","<tld-close-button class=\"close\" mat-dialog-close></tld-close-button>\r\n<h1 mat-dialog-title class=\"text-2-xl\">{{'EXTENSION_POPUP.TITLE' | translate}}</h1>\r\n<p class=\"description\">{{'EXTENSION_POPUP.DESCRIPTION' | translate}}</p>\r\n\r\n<div mat-dialog-content>\r\n <div fxLayout=\"row\" fxLayout.lt-md=\"column\" [ngClass.lt-md]=\"'small-screen'\">\r\n <ng-container *ngFor=\"let category of config.elements\">\r\n <div *ngIf=\"category.anyVisible\" class=\"category\">\r\n <h2 class=\"category-title\">\r\n {{ 'EXTENSION_POPUP.' + category.category | translate }}\r\n </h2>\r\n <div fxLayout=\"row\">\r\n <div *ngFor=\"let column of category.columns\" class=\"extension-column\">\r\n <ul *ngIf=\"column.anyVisible\">\r\n <ng-container *ngFor=\"let extension of column.extensions\">\r\n <li *ngIf=\"extension.visible\" fxLayoutAlign=\"start center\">\r\n <mat-icon svgIcon=\"{{ extension.icon }}\" aria-hidden=\"false\"[attr.aria-label]=\"extension.extension\"></mat-icon>\r\n <span>{{ extension.extension }}</span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { FileCategories, FileExtensions, FileTypeIcons } from './models';\r\nimport { Config } from './models/interfaces/config';\r\nimport { DialogData } from './models/interfaces/dialog-data.model';\r\nimport { IconService } from '../services';\r\nimport * as icons from './icons'\r\n/** \r\n This is an extension dialog component. \r\n Use <lib-open-extension-dialog> to open this dialog, by proivding [extensions] to it you can specify what extensions should be displayed.\r\n*/\r\n@Component({\r\n selector: 'lib-extension-dialog',\r\n templateUrl: './extension-dialog.component.html',\r\n styleUrls: ['./extension-dialog.component.scss'],\r\n standalone: false\r\n})\r\nexport class ExtensionDialogComponent implements OnInit {\r\n\r\n readonly config: Config = {\r\n elements: [\r\n {\r\n category: FileCategories.OFFICE,\r\n columns: [\r\n {\r\n extensions:\r\n [\r\n { extension: FileExtensions.DOC, icon: FileTypeIcons.WORD },\r\n { extension: FileExtensions.DOCX, icon: FileTypeIcons.WORD },\r\n { extension: FileExtensions.DOCM, icon: FileTypeIcons.WORD },\r\n { extension: FileExtensions.XLSX, icon: FileTypeIcons.EXCEL },\r\n { extension: FileExtensions.PPTX, icon: FileTypeIcons.POWERPOINT },\r\n { extension: FileExtensions.PDF, icon: FileTypeIcons.PDF }\r\n ]\r\n },\r\n {\r\n extensions: [\r\n { extension: FileExtensions.ODT, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.ODP, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.ODS, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.TXT, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.RTF, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.PAGES, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.SXW, icon: FileTypeIcons.OFFICE_OTHER }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n category: FileCategories.SCANNED,\r\n columns: [\r\n {\r\n extensions:\r\n [\r\n { extension: FileExtensions.JPG, icon: FileTypeIcons.SCANNED },\r\n { extension: FileExtensions.JPEG, icon: FileTypeIcons.SCANNED },\r\n { extension: FileExtensions.PNG, icon: FileTypeIcons.SCANNED },\r\n { extension: FileExtensions.BMP, icon: FileTypeIcons.SCANNED },\r\n { extension: FileExtensions.BMP, icon: FileTypeIcons.SCANNED },\r\n { extension: FileExtensions.PDF, icon: FileTypeIcons.PDF }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n category: FileCategories.INTERCHANGE,\r\n columns: [\r\n {\r\n extensions: [\r\n { extension: FileExtensions.SDLXLIFF, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.SDLXLF, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.TTX, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.TMX, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.XLF, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.XLIF, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.XLIFF, icon: FileTypeIcons.INTERCHANGE }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n category: FileCategories.WEB,\r\n columns: [\r\n {\r\n extensions:\r\n [\r\n { extension: FileExtensions.HTML, icon: FileTypeIcons.WEB },\r\n { extension: FileExtensions.HTM, icon: FileTypeIcons.WEB },\r\n { extension: FileExtensions.JSON, icon: FileTypeIcons.WEB },\r\n { extension: FileExtensions.XHTML, icon: FileTypeIcons.WEB },\r\n { extension: FileExtensions.XHT, icon: FileTypeIcons.WEB }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n category: FileCategories.OTHER,\r\n columns: [\r\n {\r\n extensions: [\r\n { extension: FileExtensions.TEX, icon: FileTypeIcons.OTHER },\r\n { extension: FileExtensions.TTL, icon: FileTypeIcons.OTHER },\r\n { extension: FileExtensions.SRT, icon: FileTypeIcons.OTHER }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n };\r\n\r\n extensions: string[] = [];\r\n undescribedExtensions: string[] = [];\r\n\r\n constructor(@Inject(MAT_DIALOG_DATA) private data: DialogData, private readonly iconService: IconService) { }\r\n\r\n ngOnInit(): void {\r\n this.iconService.registerIcons(icons);\r\n this.updateConfig();\r\n }\r\n\r\n updateConfig() {\r\n const extensions = [...this.data.extensions];\r\n this.config.elements.forEach(category => {\r\n category.columns.forEach((column) => {\r\n column.extensions.forEach((element) => {\r\n const elementIx = extensions.indexOf(element.extension);\r\n if (elementIx >= 0) {\r\n extensions.splice(elementIx, 1);\r\n element.visible = true;\r\n category.anyVisible = true;\r\n column.anyVisible = true;\r\n }\r\n })\r\n })\r\n });\r\n this.undescribedExtensions = extensions;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ExtensionDialogComponent } from '../extension-dialog.component';\r\nimport { DialogData } from '../models/interfaces/dialog-data.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExtensionDialogService {\r\n\r\n\r\n constructor(private readonly dialog: MatDialog) { }\r\n\r\n open(extensions: string[]) {\r\n const data: DialogData = { extensions };\r\n this.dialog.open(ExtensionDialogComponent, { data, panelClass: 'responsive-dialog' });\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { ExtensionDialogService } from '../../services';\r\n\r\n@Component({\r\n selector: 'lib-open-extension-dialog',\r\n templateUrl: './open-extension-dialog.component.html',\r\n styleUrls: ['./open-extension-dialog.component.scss'],\r\n standalone: false\r\n})\r\nexport class OpenExtensionDialogComponent {\r\n @Input() extensions: string[] = [];\r\n\r\n constructor(private readonly service: ExtensionDialogService) { }\r\n\r\n open() {\r\n this.service.open(this.extensions);\r\n }\r\n\r\n}\r\n","<button type=\"button\" class=\"open-extension-popup btn-as-link\" (click)=\"open()\">\r\n {{'EXTENSION_POPUP.OPEN' | translate}}\r\n</button>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ExtensionDialogComponent } from './extension-dialog.component';\r\nimport { OpenExtensionDialogComponent } from './components/open-extension-dialog/open-extension-dialog.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { CloseButtonModule } from '../close-button';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ExtensionDialogComponent,\r\n OpenExtensionDialogComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n TranslateModule,\r\n MatDialogModule,\r\n FlexLayoutModule,\r\n MatIconModule,\r\n CloseButtonModule\r\n ],\r\n exports: [\r\n OpenExtensionDialogComponent\r\n ]\r\n})\r\nexport class ExtensionDialogModule { }\r\n","export const FILE_UPLOAD_ICON = `<svg width=\"23\" height=\"22\" viewBox=\"0 0 23 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M19.4999 15V19H3.49992V15H0.833252V19C0.833252 20.4666 2.03325 21.6666 3.49992 21.6666H19.4999C20.9666 21.6666 22.1666 20.4666 22.1666 19V15H19.4999ZM4.83325 6.99998L6.71325 8.87998L10.1666 5.43998V16.3333H12.8333V5.43998L16.2866 8.87998L18.1666 6.99998L11.4999 0.333313L4.83325 6.99998Z\" fill=\"black\"/></svg>`;\r\n","<div class=\"file-upload\" [ngClass.lt-sm]=\"'file-upload-mobile'\" [class.disabled]=\"disabled\">\r\n <mat-progress-bar \r\n *ngIf=\"filePreviewProgress\"\r\n color=\"primary\" \r\n class=\"tld-file-upload-progress\" \r\n [value]=\"filePreviewProgress\"\r\n >\r\n </mat-progress-bar>\r\n\r\n <ng-container *ngIf=\"useCompactUpload; else regularUpload\">\r\n <button tldDragAndDrop #inputButton mat-button (fileDropped)=\"onFileDrop($event)\" [disabled]=\"disabled\" type=\"button\"\r\n (click)=\"fileInput.click()\" class=\"upload-button text-l\"\r\n >\r\n <mat-icon *ngIf=\"uploadIconName\">{{uploadIconName}}</mat-icon>\r\n <ng-content></ng-content>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-template #regularUpload>\r\n <div class=\"upload-zone\" tldDragAndDrop (fileDropped)=\"onFileDrop($event)\" [class.disabled-upload-zone]=\"disabled\">\r\n <mat-icon svgIcon=\"file_upload_icon\"></mat-icon>\r\n\r\n \r\n <div class=\"upload-zone-labels\">\r\n <a color=\"accent\" class=\"file-upload--btn\" (click)=\"fileInput.click()\">{{ uploadButtonLabel }}</a>\r\n \r\n <span fxHide.lt-sm class=\"upload-label\" [innerHTML]=\"dragZoneLabel\"></span>\r\n \r\n <p class=\"upload-zone-formats\">\r\n (<span *ngFor=\"let format of accept; let i = index\"\r\n >{{ format\r\n }}{{ accept.length - 1 === i ? \".\" : \", \" }}</span\r\n >\r\n\r\n <span *ngIf=\"maxSize && !hideDefaultLimitsLabel\" [innerHTML]=\"'FILE_UPLOAD.LIMITS_MB' | translate: { maxSize: maxSizeLabel }\"></span>)\r\n </p>\r\n\r\n <ng-content select=\"[customLimits]\"></ng-content>\r\n \r\n @if (accept.length > minSupportedFormatCount) {\r\n <a class=\"supported-formats-btn\" (click)=\"openSupportedFormatModal()\">{{openExtensionPopupLabel}}</a>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<input \r\n #fileInput \r\n type=\"file\" \r\n name=\"files\" \r\n class=\"native-file-input\"\r\n [accept]=\"allowedExtensions\" \r\n [multiple]=\"multiple\" \r\n [disabled]=\"disabled\"\r\n (change)=\"handleFileInput($event)\" \r\n/>\r\n","import { Component, ElementRef, EventEmitter, inject, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { FileUploadErrorTypeEnum } from './models/file-upload-error-type.enum';\r\nimport { FileUploadError } from './models/file-upload-error.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ExtensionDialogComponent } from '../extension-dialog';\r\nimport { IconService } from '../services';\r\nimport { FILE_UPLOAD_ICON } from './models/file-upload.icon';\r\nimport { getFileSizeLabel } from '../helpers';\r\n\r\n@Component({\r\n selector: 'lib-file-upload',\r\n templateUrl: './file-upload.component.html',\r\n styleUrls: ['./file-upload.component.scss'],\r\n standalone: false\r\n})\r\nexport class FileUploadComponent implements OnInit {\r\n @ViewChild('fileInput') fileInput!: ElementRef;\r\n\r\n @Output() fileChange: EventEmitter<File[]> = new EventEmitter<File[]>();\r\n @Output() errorEvent: EventEmitter<FileUploadError> = new EventEmitter<FileUploadError>();\r\n private _accept: string[] = [];\r\n @Input() set accept(val: string[]) {\r\n this._accept = val;\r\n this.allowedExtensions = val ? val.join(\",\") : \"\";\r\n }\r\n get accept() { return this._accept }\r\n @Input() useCompactUpload = true;\r\n\r\n @Input() maxSize!: number;\r\n @Input() multiple = false;\r\n @Input() filePreviewProgress!: number;\r\n @Input() allowEmpty!: boolean;\r\n @Input() disabled!: boolean;\r\n @Input() dragZoneLabel!: string;\r\n @Input() uploadIconName!: string;\r\n @Input() uploadButtonLabel!: string;\r\n @Input() openExtensionPopupLabel!: string;\r\n @Input() minSupportedFormatCount: number = 9;\r\n @Input() hideDefaultLimitsLabel: boolean = false;\r\n\r\n /** same as accept but for registered users. It changes error message if extension is supported for registered users. */\r\n @Input() extendedAcceptList!: string[];\r\n\r\n maxSizeLabel!: string;\r\n allowedExtensions!: string;\r\n\r\n #dialog = inject(MatDialog);\r\n #icon = inject(IconService);\r\n\r\n constructor() {\r\n this.#icon.registerIcons({FILE_UPLOAD_ICON});\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setMaxSizeLabel();\r\n }\r\n\r\n openSupportedFormatModal(): void {\r\n this.#dialog.open(ExtensionDialogComponent, {data: { extensions: this.accept.map(item => item.replace('.', '')) }})\r\n }\r\n\r\n handleFileInput(event: Event) {\r\n const target = event.target as HTMLInputElement;\r\n const files = target.files as FileList;\r\n this.validate(files);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onFileDrop(files: any) {\r\n this.validate(files);\r\n }\r\n\r\n private setMaxSizeLabel(): void {\r\n this.maxSizeLabel = getFileSizeLabel(this.maxSize, 0);\r\n }\r\n\r\n private emit(files: File[]) {\r\n if (files && files.length > 0) {\r\n this.fileChange.emit(files);\r\n }\r\n }\r\n\r\n private emitError(error: FileUploadError) {\r\n this.errorEvent.emit(error);\r\n }\r\n\r\n private validate(files: FileList) {\r\n //let size = 0;\r\n const validFiles: File[] = [];\r\n for (let i = 0; i < files.length; i++) {\r\n const file = files[i];\r\n if (!this.allowEmpty && file.size == 0) {\r\n this.emitError({ code: FileUploadErrorTypeEnum.FILE_EMPTY, error: \"File is empty\", fileName: file.name, maxSizeLabel: this.maxSizeLabel });\r\n return;\r\n }\r\n //size += file.size;\r\n const extensionErrorCode = this.getExtensionErrorCode(file.name);\r\n if (extensionErrorCode) {\r\n const error = { code: extensionErrorCode, error: \"Not valid extension.\", fileName: file.name, maxSizeLabel: this.maxSizeLabel };\r\n this.emitError(error);\r\n }\r\n else if (this.maxSize && file.size > this.maxSize) {\r\n const error = { code: FileUploadErrorTypeEnum.MAX_SIZE, error: \"Maximum allowed file size exceeded.\", fileName: file.name, maxSizeLabel: this.maxSizeLabel};\r\n this.emitError(error);\r\n }\r\n else {\r\n validFiles.push(file);\r\n }\r\n }\r\n\r\n this.emit(validFiles);\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n\r\n private getExtensionErrorCode(fileName: string): FileUploadErrorTypeEnum | null {\r\n const extension = fileName.slice(fileName.lastIndexOf('.')).toLowerCase()\r\n if (\r\n this.accept.length == 0 || (this.accept.length == 1 && this.accept[0] == '*') || this.accept.includes(extension)) {\r\n return null;\r\n }\r\n else {\r\n return this.extendedAcceptList?.includes(extension) ? FileUploadErrorTypeEnum.FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER : FileUploadErrorTypeEnum.FILE_UPLOAD_UNSUPPORTED_FORMAT;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FileUploadComponent } from './file-upload.component';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { DragAndDropModule } from '../directives/drag-and-drop/drag-and-drop.module';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { ExtensionDialogModule } from '../extension-dialog';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n\r\n@NgModule({\r\n declarations: [FileUploadComponent],\r\n imports: [\r\n CommonModule,\r\n MatProgressBarModule,\r\n FlexLayoutModule,\r\n MatButtonModule,\r\n DragAndDropModule,\r\n MatIconModule,\r\n ExtensionDialogModule,\r\n TranslateModule\r\n ],\r\n exports: [\r\n FileUploadComponent\r\n ]\r\n})\r\nexport class FileUploadModule { }\r\n","<div class=\"filter-row\" *ngIf=\"filterRowVisible\">\r\n <div fxLayout=\"row\" class=\"filter-wrapper\" #filterWrapper [formGroup]=\"form\">\r\n <ng-container [formGroup]=\"filterFormGroup\">\r\n @for (filter of currentFilters; track filter.fieldName; let i = $index) {\r\n <button [class.filter-active]=\"filter.selectedValues?.length\" class=\"select-trigger-btn\" mat-stroked-button color=\"accent\" (click)=\"select.open()\">\r\n <div class=\"select-trigger-btn-label\">\r\n <span>{{filter.title | translate}}</span>\r\n <span *ngIf=\"filter.selectedValues?.length\" class=\"selected-count\">({{filter.selectedValues?.length}})</span>\r\n <mat-icon>{{ select.panelOpen ? \"keyboard_arrow_up\" : \"keyboard_arrow_down\" }}</mat-icon>\r\n </div>\r\n\r\n <mat-select\r\n multiple \r\n #select\r\n [panelClass]=\"'filter-panel'\"\r\n [panelWidth]=\"filter?.maxPanelWidth ?? 'auto'\" \r\n [formControlName]=\"filter.fieldName\" \r\n (openedChange)=\"$event === true ? focusOptionSearchInput(filter, i) : clearOptionSearchInput(filter, i)\"\r\n (selectionChange)=\"selectEvent($event, filter)\" \r\n >\r\n <ng-container *ngIf=\"filter?.search?.placeholder\">\r\n <input #optionSearchInput class=\"option-search-input\" [class.hidden]=\"filter.values!.length < 10\" type=\"text\" [placeholder]=\"filter.search?.placeholder ?? '' | translate\" (keyup)=\"filterOptions($event, filter)\" (keydown)=\"$event.stopPropagation()\">\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"filter.values.length\">\r\n <ng-container *ngIf=\"filter.translated; else sortedValuesByProperty\">\r\n @for (value of (filter.search?.filteredValues ?? filter.values) | sortAlphabetically:'key'; track value.key) {\r\n <mat-option [class.hidden]=\"filter.search?.searchCriteria && value.isSelected && !value.matchesSearchCriteria\" class=\"filter-option\" [disabled]=\"filter.singleSelection?.selected && filter.singleSelection?.value !== value.value\" [value]=\"value\">\r\n {{ filter.disableTitleCase ? value.key : (value.key | titlecase) }}\r\n </mat-option>\r\n }\r\n </ng-container>\r\n \r\n <ng-template #sortedValuesByProperty>\r\n @for (value of (filter.search?.filteredValues ?? filter.values) | sortTranslationsByProperty:'key':'value'; track value.value) {\r\n <mat-option [class.hidden]=\"filter.search?.searchCriteria && value.isSelected && !value.matchesSearchCriteria\" class=\"filter-option\" [disabled]=\"filter.singleSelection?.selected && filter.singleSelection?.value !== value.value\" [value]=\"value\">\r\n <ng-container *ngIf=\"!filter.disableTitleCase; else defaultCase\">\r\n {{ value.key | translate : { default: value.value | titlecase } }}\r\n </ng-container>\r\n \r\n <ng-template #defaultCase>\r\n {{ value.key | translate : { default: value.value } }} \r\n </ng-template>\r\n </mat-option>\r\n }\r\n </ng-template>\r\n </ng-container>\r\n </mat-select>\r\n </button>\r\n }\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"filterOverflow\">\r\n <div class=\"filter-arrows\">\r\n <button mat-icon-button (click)=\"switchLeft()\">\r\n <span class=\"material-icons-outlined\">\r\n chevron_left\r\n </span>\r\n </button>\r\n <button mat-icon-button (click)=\"switchRight()\">\r\n <span class=\"material-icons-outlined\">\r\n chevron_right\r\n </span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n</div>\r\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, ViewChild, ViewChildren } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { FilterBarFilter, FilterBarFilterItem } from './models';\r\nimport { FilterBarChangeEvent } from './models/filter-bar-change-event.model';\r\nimport { FilterBarSettings } from './models/filter-bar-settings.model';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MatSelectChange } from '@angular/material/select';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'tld-filter-bar',\r\n templateUrl: './filter-bar.component.html',\r\n styleUrls: ['./filter-bar.component.scss'],\r\n standalone: false\r\n})\r\nexport class FilterBarComponent implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChild(\"filterWrapper\") filterWrapper!: ElementRef;\r\n @ViewChildren('optionSearchInput') optionSearchInputs!: ElementRef[];\r\n @HostListener('window:resize', [])\r\n onResize() {\r\n this.checkOverflow();\r\n }\r\n\r\n @Input() settings!: FilterBarSettings;\r\n @Input() set filterRowVisible(value: boolean) {\r\n this._filterRowVisible = value;\r\n this.cdref.detectChanges();\r\n this.checkOverflow();\r\n }\r\n\r\n @Output() filterBarChange: EventEmitter<FilterBarChangeEvent> = new EventEmitter<FilterBarChangeEvent>();\r\n\r\n private _inputText = \"\";\r\n private _filterRowVisible!: boolean;\r\n private formChangesSubscription!: Subscription;\r\n\r\n readonly filterFormGroup = new FormGroup({});\r\n readonly form = new FormGroup({\r\n filters: this.filterFormGroup\r\n });\r\n\r\n filters: FilterBarChangeEvent = {\r\n input: '',\r\n filters: {},\r\n };\r\n\r\n filterOverflow = false;\r\n activeFilterIndex = 0;\r\n\r\n // getter for cleaner template html\r\n get filterFormGroupValue(): { [key: string]: FilterBarFilterItem[] } {\r\n return this.filterFormGroup.value;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures\r\n get filterRowVisible() { return this._filterRowVisible; }\r\n get inputText() {\r\n return this._inputText;\r\n }\r\n get outputFilterKeyAndValue() {\r\n return this.settings?.outputFilterKeyAndValue;\r\n }\r\n get currentFilters() {\r\n return this.settings?.splittedFilters?.length ? this.settings.splittedFilters[this.activeFilterIndex] : this.settings?.filters;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures\r\n set inputText(value) {\r\n this._inputText = value;\r\n this.filters.input = this._inputText;\r\n this.emitFilters();\r\n }\r\n\r\n constructor(private cdref: ChangeDetectorRef, private translate: TranslateService) { }\r\n\r\n ngOnInit() {\r\n this.settings.filters?.forEach((field) => {\r\n this.filterFormGroup.addControl(field.fieldName, new FormControl([]));\r\n })\r\n\r\n this.subscribeToFormValueChanges();\r\n \r\n this.activeFilterIndex = 0;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.checkOverflow();\r\n this.cdref.detectChanges();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removeAllFilters();\r\n this.formChangesSubscription.unsubscribe();\r\n }\r\n\r\n focusOptionSearchInput(filter: FilterBarFilter, index: number): void {\r\n if (!filter.search?.placeholder || filter.selectedValues?.length) {\r\n return;\r\n }\r\n\r\n this.optionSearchInputs.find((_item, i) => i === index)?.nativeElement.focus();\r\n\r\n if (filter.maxPanelWidth === '' && filter.search.placeholder) {\r\n this.setPanelWidth(filter);\r\n }\r\n }\r\n\r\n clearOptionSearchInput(filter: FilterBarFilter, index: number): void {\r\n if (!filter.search?.placeholder) {\r\n return;\r\n }\r\n\r\n const input = this.optionSearchInputs.find((_item, i) => i === index)?.nativeElement;\r\n\r\n if (input) {\r\n input.value = '';\r\n }\r\n\r\n filter.search.searchCriteria = '';\r\n this.filterOptions(null, filter);\r\n }\r\n\r\n filterOptions(event: KeyboardEvent | null, filter: FilterBarFilter) {\r\n const target = event?.target as HTMLTextAreaElement;\r\n filter.search!.searchCriteria = target?.value ?? '';\r\n this.settings.filters?.forEach((item) => {\r\n if (item.fieldName === filter.fieldName && item.search) {\r\n item.search.filteredValues = filter.values.filter((value) => {\r\n const valueKey = item.translated ? value.key : this.translate.instant(value.key);\r\n const matchesSearch = valueKey.toLowerCase().includes(target?.value?.toLowerCase() ?? '');\r\n const isSelected = filter.selectedValues?.some((selectedValue) => selectedValue.key === value.key);\r\n value.isSelected = isSelected ?? false;\r\n value.matchesSearchCriteria = matchesSearch ?? false;\r\n return matchesSearch || isSelected;\r\n })\r\n }\r\n });\r\n }\r\n\r\n selectEvent(event: MatSelectChange, filter: FilterBarFilter) {\r\n const settingFilter = this.settings.filters?.find((item) => item.fieldName === filter.fieldName) as FilterBarFilter;\r\n settingFilter.selectedValues = event.value;\r\n }\r\n\r\n setPanelWidth(filter: FilterBarFilter): void {\r\n // We must save panel width, so filtering does not affect it`s size.\r\n const selectPanel = document.querySelector('.cdk-overlay-pane') as HTMLElement;\r\n setTimeout(() => {\r\n const selectPanelWidth = selectPanel.clientWidth as number;\r\n const filterObj = this.settings.filters?.find((item) => item.fieldName === filter.fieldName) as FilterBarFilter;\r\n filterObj.maxPanelWidth = selectPanelWidth;\r\n selectPanel.style.minWidth = `${selectPanelWidth}px`;\r\n });\r\n }\r\n\r\n emitFilters() {\r\n this.filterBarChange.next(this.filters);\r\n }\r\n\r\n switchRight() {\r\n if (this.settings?.splittedFilters?.length === this.activeFilterIndex + 1) {\r\n return;\r\n }\r\n this.activeFilterIndex += 1;\r\n }\r\n\r\n switchLeft() {\r\n if (this.activeFilterIndex === 0) {\r\n return;\r\n }\r\n this.activeFilterIndex -= 1;\r\n }\r\n\r\n removeFilter(key: string, ix: number) {\r\n const control = this.filterFormGroup.get(key);\r\n\r\n if (!control) {\r\n return;\r\n }\r\n\r\n const newArray = control.value as [];\r\n newArray.splice(ix, 1);\r\n control.setValue(newArray);\r\n }\r\n\r\n removeAllFilters() {\r\n this.settings.filters?.forEach((filter) => {\r\n const valuesArray = this.filterFormGroupValue[filter.fieldName];\r\n while (valuesArray.length > 0) {\r\n this.removeFilter(filter.fieldName, 0);\r\n }\r\n });\r\n }\r\n\r\n private checkOverflow() {\r\n if (this.filterWrapper?.nativeElement) {\r\n const minFilterWidth = 100;\r\n \r\n if (this.settings?.filters?.length) {\r\n const containerWidth = this.filterWrapper.nativeElement.clientWidth;\r\n \r\n // Calculate the total width needed for all filters\r\n const totalWidthNeeded = this.settings.filters.length * minFilterWidth;\r\n \r\n // If all filters can fit within the container, no need to split\r\n if (totalWidthNeeded <= containerWidth) {\r\n this.activeFilterIndex = 0;\r\n this.settings.splittedFilters = [];\r\n this.filterOverflow = false;\r\n return;\r\n }\r\n \r\n // Calculate how many filters can fit per row based on the container width\r\n const filtersPerRow = Math.floor(containerWidth / minFilterWidth);\r\n \r\n // Determine how many groups are needed\r\n const groupCount = Math.ceil(this.settings.filters.length / filtersPerRow);\r\n\r\n if (groupCount < this.activeFilterIndex + 1) {\r\n this.activeFilterIndex = 0;\r\n }\r\n \r\n // Calculate group size based on the number of groups\r\n const groupSize = Math.ceil(this.settings.filters.length / groupCount);\r\n \r\n // Split filters into the calculated number of groups\r\n const newSplittedFilters: FilterBarFilter[][] = [];\r\n for (let i = 0; i < this.settings.filters.length; i += groupSize) {\r\n newSplittedFilters.push(this.settings.filters.slice(i, i + groupSize));\r\n }\r\n \r\n this.settings.splittedFilters = newSplittedFilters;\r\n this.filterOverflow = true;\r\n }\r\n }\r\n }\r\n \r\n private subscribeToFormValueChanges() {\r\n this.formChangesSubscription = this.form.valueChanges.subscribe(() => {\r\n this.filters = {\r\n input: '',\r\n filters: {}\r\n };\r\n\r\n for (const filterKey in this.form.value.filters) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const filter: FilterBarFilterItem[] = (this.form.value.filters as any)[filterKey] as FilterBarFilterItem[];\r\n this.filters.filters[filterKey] = filter.map((item) => this.outputFilterKeyAndValue ? item : item.value)\r\n }\r\n this.emitFilters();\r\n })\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FilterBarComponent } from './filter-bar.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SortTranslationsByPropertyModule } from '../pipes/sort-translations-by-property';\r\nimport { SortAlphabeticallyModule } from '../pipes/sort-alphabetically';\r\n\r\n@NgModule({\r\n declarations: [\r\n FilterBarComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n FlexLayoutModule,\r\n MatSelectModule,\r\n FormsModule,\r\n MatTooltipModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n SortTranslationsByPropertyModule,\r\n SortAlphabeticallyModule\r\n ],\r\n exports: [\r\n FilterBarComponent\r\n ]\r\n})\r\nexport class FilterBarModule { }\r\n","export const DISABLE_EXPORT_ATTRIBUTE_NAME = \"disable-export\";\r\n","export enum ExportFormat {\r\n CSV = \"csv\"\r\n}\r\n","<div class=\"status-display-wrapper\">\r\n <ng-container *ngIf=\"!config.loading; else loading\">\r\n <div>\r\n <span class=\"material-icons-outlined\">\r\n {{ config.icon }}\r\n </span>\r\n </div>\r\n <div\r\n class=\"text-xl-semi-bold status-display-row-title\"\r\n *ngIf=\"config.title\"\r\n [innerHtml]=\"config.title | translate : config.titleParams\"\r\n ></div>\r\n <div\r\n *ngIf=\"config.description\"\r\n class=\"text-l status-display-row-description\"\r\n [innerHtml]=\"config.description | translate : config.descriptionParams\"\r\n ></div>\r\n <div\r\n *ngIf=\"config.extraDescription\"\r\n class=\"text-l status-display-row-extra\"\r\n [innerHtml]=\"config.extraDescription | translate : config.extraDescriptionParams\"\r\n ></div>\r\n <ng-content></ng-content>\r\n </ng-container>\r\n <ng-template #loading>\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </ng-template>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { StatusDisplayConfig } from './models/status-display-config.model';\r\n\r\n@Component({\r\n selector: 'lib-status-display',\r\n templateUrl: './status-display.component.html',\r\n styleUrls: ['./status-display.component.scss'],\r\n standalone: false\r\n})\r\nexport class StatusDisplayComponent {\r\n @Input({ required: true }) config!: StatusDisplayConfig;\r\n}\r\n","<div [ngClass.lt-md]=\"'mobile'\" fxLayout=\"column\" fxLayoutGap=\"0.75rem\">\r\n <div fxLayout=\"row\" fxLayout.lt-md=\"column\" fxLayoutGap.lt-md=\"0.75rem\">\r\n <div\r\n fxFlex\r\n fxLayout.lt-md=\"column\"\r\n fxLayoutGap=\"0.75rem\"\r\n fxLayoutAlign=\"start center\"\r\n fxLayoutAlign.lt-md=\"start start\"\r\n class=\"action-row\"\r\n >\r\n <button\r\n class=\"export-data\"\r\n mat-stroked-button\r\n color=\"accent\"\r\n *ngIf=\"exportActive\"\r\n (click)=\"export()\"\r\n >\r\n <span class=\"material-icons-outlined\">cloud_download</span>\r\n <span>{{ \"MULTI_FUNCTIONAL_TABLE.EXPORT\" | translate }}</span>\r\n </button>\r\n\r\n <div\r\n *ngIf=\"filterActive && showFilterToggle\"\r\n fxFlex\r\n fxLayoutGap=\"0.5rem\"\r\n fxLayoutAlign=\"start center\"\r\n >\r\n <button\r\n [class.filter-active]=\"filterBarVisible\"\r\n mat-stroked-button\r\n color=\"accent\"\r\n (click)=\"toggleFilterBar()\"\r\n >\r\n <span class=\"material-icons\">filter_list</span>\r\n <span>{{ \"MULTI_FUNCTIONAL_TABLE.FILTER_TOGGLE\" | translate }}</span>\r\n </button>\r\n\r\n <div *ngIf=\"showFilterReset\" class=\"clear-filters-wrapper\">\r\n <button mat-icon-button (click)=\"clearFilters()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"showSearch\"\r\n fxLayout=\"row\"\r\n fxLayoutAlign=\"start center\"\r\n class=\"wild-search-wrapper\"\r\n >\r\n <mat-icon\r\n class=\"search-icon\"\r\n [matTooltip]=\"hideSearchTooltip ? '' : (searchTooltip | translate)\"\r\n >search</mat-icon\r\n >\r\n <input\r\n [value]=\"config.filter?.settings?.searchValue ?? ''\"\r\n #wildSearch\r\n type=\"text\"\r\n [placeholder]=\"searchTitle | translate\"\r\n (keyup)=\"search($event)\"\r\n />\r\n <button\r\n *ngIf=\"showSearchClearButton && wildSearch.value\"\r\n mat-icon-button\r\n class=\"wild-search-clear-btn\"\r\n (click)=\"wildSearch.value = ''; search({ target: { value: '' } })\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <ng-content select=\"[additionalActions]\"></ng-content>\r\n </div>\r\n\r\n <tld-filter-bar\r\n *ngIf=\"config.filter && config.filter.enabled\"\r\n #filterBar\r\n [filterRowVisible]=\"filterBarVisible\"\r\n [settings]=\"config.filter.settings\"\r\n (filterBarChange)=\"filtersChanged($event)\"\r\n >\r\n </tld-filter-bar>\r\n\r\n <ng-content select=\"[batchActions]\"></ng-content>\r\n\r\n @if(config.paginator?.enabled){\r\n @let paginatorConfig = config.paginator!;\r\n\r\n <mat-paginator [hidePageSize]=\"!paginatorConfig.showPageSize\" [showFirstLastButtons]=\"paginatorConfig.showFirstLastButtons\"\r\n [attr.aria-label]=\"'MULTI_FUNCTIONAL_TABLE.PAGINATOR_LABEL' | translate\" [pageSizeOptions]=\"paginatorConfig.pageSizeOptions ?? [10]\" (page)=\"paginatorChange($event)\">\r\n </mat-paginator>\r\n }\r\n <div\r\n #tableContainer\r\n class=\"table-overflow\"\r\n [class.table-sticky-header]=\"config?.stickyHeader\"\r\n [class.table-dragable]=\"tableOverflow && !config?.disableMouseDragging\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (mouseup)=\"onMouseUp()\"\r\n (mouseleave)=\"onMouseUp()\"\r\n (mousemove)=\"onMouseMove($event)\"\r\n >\r\n <table\r\n #table\r\n mat-table\r\n [dataSource]=\"dataSource!\"\r\n [trackBy]=\"trackByFn\"\r\n >\r\n <ng-content></ng-content>\r\n <ng-container [matColumnDef]=\"batchColumnName\">\r\n <th class=\"row-select\" mat-header-cell *matHeaderCellDef disable-export>\r\n <mat-checkbox\r\n [matTooltip]=\"'MULTI_FUNCTIONAL_TABLE.SELECT_ALL' | translate\"\r\n [disabled]=\"config.batchConfig!.checkBoxesDisabled\"\r\n (change)=\"toggleAllRowSelection()\"\r\n [checked]=\"matSelection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"matSelection.hasValue() && !isAllSelected()\"\r\n >\r\n </mat-checkbox>\r\n </th>\r\n <td\r\n class=\"row-select\"\r\n mat-cell\r\n *matCellDef=\"let element\"\r\n disable-export\r\n >\r\n <mat-checkbox\r\n [matTooltip]=\"'MULTI_FUNCTIONAL_TABLE.SELECT' | translate\"\r\n *ngIf=\"\r\n isRowCheckboxAlwaysVisible ||\r\n hoveredRow === element ||\r\n matSelection.isSelected(element)\r\n \"\r\n [disabled]=\"\r\n config.batchConfig!.checkBoxesDisabled ||\r\n (preselectedItems.includes(element) && disablePreselectedItems)\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"toggleElementSelection(element)\"\r\n [checked]=\"matSelection.isSelected(element)\"\r\n >\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n <tr\r\n mat-header-row\r\n *matHeaderRowDef=\"displayColumns; sticky: config?.stickyHeader ?? false\"\r\n ></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; let index = index; columns: displayColumns\"\r\n (click)=\"\r\n config?.rowClickCallback && (!config.disableRowClick || !config?.disableRowClick(row))\r\n ? config?.rowClickCallback(row)\r\n : null\r\n \"\r\n (mouseover)=\"rowHovered(index,row)\"\r\n (mouseleave)=\"rowHoverLeave()\"\r\n [class.row-clickable]=\"\r\n config?.rowClickCallback && (!config.disableRowClick || !config?.disableRowClick(row))\r\n \"\r\n [class.highlight-error]=\"highlightErrorElement(index, row)\"\r\n [class.highlight]=\"isElementHighlighted(index,row)\"\r\n ></tr>\r\n\r\n <ng-container [matColumnDef]=\"columnSelectColumnName\">\r\n <th class=\"row-select\" mat-header-cell *matHeaderCellDef disable-export>\r\n <div class=\"column-selector-wrapper\">\r\n <button\r\n class=\"column-selector\"\r\n mat-icon-button\r\n color=\"accent\"\r\n [matMenuTriggerFor]=\"columnMenu\"\r\n >\r\n <span class=\"material-icons\">more_vert</span>\r\n </button>\r\n </div>\r\n </th>\r\n <td\r\n class=\"row-select\"\r\n mat-cell\r\n *matCellDef=\"let element\"\r\n disable-export\r\n ></td>\r\n </ng-container>\r\n <ng-container *ngIf=\"noDataRowActive\">\r\n <tr *matNoDataRow>\r\n <!-- add random number to make sure it takes full width -->\r\n <td colspan=\"99\">\r\n <lib-status-display [config]=\"noDataRowConfig\"></lib-status-display>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n</div>\r\n\r\n<mat-menu #columnMenu=\"matMenu\">\r\n <div class=\"column-select-menu\" (click)=\"$event.stopPropagation()\">\r\n <div *ngFor=\"let column of configurableColumns\">\r\n <mat-checkbox [(ngModel)]=\"column.selected\">\r\n {{ column.displayName | translate }}\r\n </mat-checkbox>\r\n </div>\r\n\r\n <div class=\"column-select-save\">\r\n <button\r\n mat-flat-button\r\n color=\"accent\"\r\n (click)=\"updateDisplayColumns()\"\r\n >\r\n {{ \"MULTI_FUNCTIONAL_TABLE.COLUMN_SELECT_SAVE\" | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n","import { SelectionModel } from '@angular/cdk/collections';\r\nimport { AfterContentInit, AfterViewInit, Component, ContentChild, ContentChildren, effect, ElementRef, EventEmitter, input, Input, OnInit, Output, QueryList, ViewChild } from '@angular/core';\r\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatColumnDef, MatHeaderRowDef, MatNoDataRow, MatRowDef, MatTable, MatTableDataSource } from '@angular/material/table';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { map, Observable, take } from 'rxjs';\r\nimport { FilterBarComponent } from '../filter-bar';\r\nimport { FilterBarChangeEvent } from '../filter-bar/models/filter-bar-change-event.model';\r\nimport { HtmlElementParseHelper } from '../helpers';\r\nimport { SaveFileHelper } from '../helpers/save-file.helper';\r\nimport { DOMService } from '../services';\r\nimport { StatusDisplayConfig } from '../status-display/models/status-display-config.model';\r\nimport { DISABLE_EXPORT_ATTRIBUTE_NAME } from './constants/disable-export-attribute-name.const';\r\nimport { ExportFormat } from './models';\r\nimport { ColumnConfig } from './models/column-config.model';\r\nimport { MultiFunctionalTableConfig } from './models/multi-functional-table-config.model';\r\nimport { SelectedColumnLocalStorageConfig } from './models/selected-column-local-storage-config.model';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'tld-multi-functional-table',\r\n templateUrl: './multi-functional-table.component.html',\r\n styleUrls: ['./multi-functional-table.component.scss'],\r\n standalone: false\r\n})\r\nexport class MultiFunctionalTableComponent<T> implements OnInit, AfterContentInit, AfterViewInit {\r\n readonly matSelection = new SelectionModel<T>(true, []);\r\n\r\n #dataSource: MatTableDataSource<T> | undefined;\r\n get dataSource(): MatTableDataSource<T> {\r\n return (this.#dataSource ?? this.config.dataSource)!;\r\n }\r\n\r\n @Input() config!: MultiFunctionalTableConfig<T>;\r\n @Input() highlightedElements!: T[];\r\n @Input() trackByFn: (ix: number, row: T) => string | number = this.defaultTrackBy;\r\n @Input() highlightedErrorElements!: T[];\r\n @Input() set selection(value: T[]) {\r\n this.matSelection.setSelection(...(value ?? []));\r\n }\r\n\r\n // Set this to false if you want to display checkboxes only on row hover.\r\n @Input() isRowCheckboxAlwaysVisible = true;\r\n @Input() disablePreselectedItems = false;\r\n\r\n //#region Output properties\r\n @Output() filterBarChange: EventEmitter<FilterBarChangeEvent> = new EventEmitter<FilterBarChangeEvent>();\r\n @Output() paginatorUpdate: EventEmitter<PageEvent> = new EventEmitter<PageEvent>();\r\n @Output() exported: EventEmitter<T[]> = new EventEmitter<T[]>();\r\n @Output() selectionChange: Observable<T[]> = this.matSelection.changed.asObservable().pipe(map(() => { return this.matSelection.selected; }));\r\n //#endregion\r\n\r\n // #region Properties for mat table wrapper\r\n @ContentChildren(MatHeaderRowDef) headerRowDefs!: QueryList<MatHeaderRowDef>;\r\n @ContentChildren(MatRowDef, { descendants: true }) rowDefs!: QueryList<MatRowDef<T>>;\r\n @ContentChildren(MatColumnDef) columnDefs!: QueryList<MatColumnDef>;\r\n @ContentChild(MatNoDataRow) noDataRow!: MatNoDataRow;\r\n\r\n @ViewChild(MatTable, { static: true }) table!: MatTable<T>;\r\n @ViewChild(MatSort) sort!: MatSort;\r\n\r\n @ViewChild('tableContainer') tableContainer!: ElementRef<HTMLElement>;\r\n @ViewChild('filterBar') filterBar!: FilterBarComponent;\r\n @ViewChild(MatPaginator) paginator!: MatPaginator;\r\n\r\n //#endregion\r\n\r\n @ViewChild(MatTable, { read: ElementRef }) tableElementRef!: ElementRef<HTMLElement>;\r\n\r\n /** This property will be taken into account only if config.DataSource not set. */\r\n data = input<T[]>();\r\n dataSourceUpdateEffect = effect(() => { this.updateDataSourceData(); })\r\n\r\n preselectedItems!: T[];\r\n\r\n get ignoreAttributeName() { return DISABLE_EXPORT_ATTRIBUTE_NAME }\r\n displayColumns!: string[];\r\n\r\n columnSelectActive!: boolean;\r\n exportActive!: boolean;\r\n noDataRowActive!: boolean;\r\n\r\n filters!: FilterBarChangeEvent;\r\n filterBarVisible!: boolean;\r\n\r\n hideSearchTooltip!: boolean;\r\n showSearch!: boolean;\r\n showSearchClearButton!: boolean;\r\n searchTitle!: string;\r\n searchTooltip!: string;\r\n\r\n noDataRowConfig!: StatusDisplayConfig;\r\n noDataRowIcon = \"manage_search\";\r\n\r\n configurableColumns!: ColumnConfig[];\r\n batchSelectedEnabled!: boolean;\r\n\r\n // is used in html to display batch checkbox on hovered row\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n hoveredRow: any;\r\n hoveredRowIndex: number | undefined;\r\n\r\n // properties for overflow scrolling with mouse click\r\n tableOverflow!: boolean;\r\n private scrollMovement!: number | null;\r\n private isDragging = false;\r\n private startX = 0;\r\n private startY = 0;\r\n private scrollLeft = 0;\r\n private scrollTop = 0;\r\n\r\n get filterActive() { return this.config.filter?.enabled; }\r\n get showFilterToggle() { return !this.config.filter?.hideFilterToggle; }\r\n\r\n get showFilterReset() { return this.config.filter?.settings.filters?.find(filter => filter.selectedValues?.length) }\r\n\r\n private localStorageValue!: SelectedColumnLocalStorageConfig;\r\n readonly batchColumnName = \"batch\";\r\n readonly columnSelectColumnName = \"columnSelect\";\r\n\r\n constructor(private readonly domService: DOMService,\r\n private readonly translateService: TranslateService) { }\r\n\r\n //#region Angular lifecycle hooks\r\n ngOnInit(): void {\r\n this.createDataSource();\r\n this.readFromLocalStorage();\r\n this.setFilterVisibility();\r\n this.setColumnSelectProperties();\r\n this.setExportProperties();\r\n this.setNoDataRowProperties();\r\n this.preselectedItems = this.matSelection.selected;\r\n this.searchTooltip = this.config.filter?.settings?.searchTooltip ?? 'FILTER_BAR.SEARCH_TOOLTIP';\r\n this.searchTitle = this.config.filter?.settings?.searchTitle ?? 'FILTER_BAR.SEARCH';\r\n this.showSearch = !this.config.filter?.settings?.hideSearch;\r\n this.showSearchClearButton = this.config.filter?.settings?.showSearchClearButton ?? true;\r\n this.hideSearchTooltip = !this.config.filter?.settings?.hideTooltip;\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.columnDefs.forEach(columnDef => this.table.addColumnDef(columnDef));\r\n this.rowDefs.forEach(rowDef => this.table.addRowDef(rowDef));\r\n this.headerRowDefs.forEach(headerRowDef => this.table.addHeaderRowDef(headerRowDef));\r\n this.headerRowDefs.forEach(headerRowDef => this.table.addHeaderRowDef(headerRowDef));\r\n this.table.setNoDataRow(this.noDataRow);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.dataSource.sort = this.sort;\r\n this.dataSource.paginator = this.paginator;\r\n\r\n if (this.config.paginator?.initialPage) {\r\n this.paginator.pageIndex = this.config.paginator.initialPage\r\n }\r\n }\r\n //#endregion\r\n\r\n search(event: { target: { value: string } } | KeyboardEvent): void {\r\n const input = (event.target as HTMLInputElement)?.value;\r\n this.config.filter!.settings.searchInput = input;\r\n this.filterBarChange.emit({ ...this.filters, input });\r\n this.updatePaginator(0);\r\n }\r\n\r\n updateDisplayColumns(initial = false) {\r\n this.batchSelectedEnabled = this.config.batchConfig?.enabled ? true : false;\r\n const allColumns = this.config.columnSelect?.columns ?? [];\r\n this.displayColumns = [];\r\n this.configurableColumns = allColumns.filter(column => !column.notConfigurable);\r\n\r\n if (this.batchSelectedEnabled) {\r\n this.displayColumns.push(this.batchColumnName);\r\n }\r\n\r\n if (!allColumns.length) {\r\n return;\r\n }\r\n\r\n const localStorageValue = this.localStorageValue ?? {};\r\n if (!localStorageValue.columns) {\r\n localStorageValue.columns = {};\r\n }\r\n\r\n allColumns.forEach((column) => {\r\n if (initial) {\r\n column.selected = localStorageValue.columns?.[column.name] ?? column.selected;\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n localStorageValue.columns![column.name] = column.selected;\r\n }\r\n\r\n if (column.selected) {\r\n this.displayColumns.push(column.name);\r\n }\r\n })\r\n\r\n if (this.columnSelectActive) {\r\n this.displayColumns.push(this.columnSelectColumnName);\r\n }\r\n\r\n if (!initial) {\r\n this.updateLocalStorage(localStorageValue);\r\n }\r\n }\r\n\r\n toggleFilterBar() {\r\n const localstorageObject = this.localStorageValue ?? {};\r\n if (!localstorageObject.filter) {\r\n localstorageObject.filter = {};\r\n }\r\n\r\n this.filterBarVisible = !this.filterBarVisible;\r\n localstorageObject.filter.visible = this.filterBarVisible;\r\n this.updateLocalStorage(localstorageObject);\r\n }\r\n\r\n filtersChanged(filters: FilterBarChangeEvent) {\r\n this.filters = { ...filters, input: this.config.filter!.settings.searchInput ?? '' };\r\n this.filterBarChange.emit(this.filters);\r\n }\r\n\r\n clearFilters() {\r\n this.config.filter?.settings.filters?.forEach((filter) => {\r\n filter.selectedValues = [];\r\n })\r\n\r\n this.filterBar.removeAllFilters();\r\n }\r\n\r\n export() {\r\n this.dataSource!.connect().pipe(take(1)).subscribe((data) => {\r\n this.exported.emit(data);\r\n })\r\n\r\n if (this.config.export?.fileOptions) {\r\n this.exportToFile()\r\n }\r\n }\r\n\r\n isElementHighlighted(ix: number, element: T) {\r\n let isHovered = false;\r\n if (this.hoveredRow && this.hoveredRowIndex !== undefined) {\r\n isHovered = this.trackByFn(this.hoveredRowIndex, this.hoveredRow) === this.trackByFn(ix, element);\r\n }\r\n return isHovered ||\r\n this.highlightedElements?.some((highlightElement, highlightElementIx) => this.trackByFn(highlightElementIx, highlightElement) === this.trackByFn(ix, element));\r\n }\r\n\r\n highlightErrorElement(ix: number, element: T) {\r\n return this.highlightedErrorElements?.some((highlightElement, highlightElementIx) => this.trackByFn(highlightElementIx, highlightElement) === this.trackByFn(ix, element));\r\n }\r\n\r\n //#region Methods for batch selection\r\n isAllSelected() {\r\n const numSelected = this.matSelection.selected.length;\r\n const numRows = this.dataSource?.data.length;\r\n return numSelected === numRows;\r\n }\r\n\r\n toggleAllRowSelection() {\r\n if (this.isAllSelected()) {\r\n if (this.disablePreselectedItems) {\r\n // deselect only those items which were not already preselected\r\n this.matSelection.deselect(\r\n ...this.matSelection.selected.filter(elm => !this.preselectedItems.map(elm => elm).includes(elm))\r\n );\r\n return;\r\n }\r\n else {\r\n this.matSelection.clear();\r\n return;\r\n }\r\n }\r\n\r\n this.matSelection.select(...this.dataSource?.data ?? []);\r\n }\r\n\r\n toggleElementSelection(element: T) {\r\n this.matSelection.toggle(element);\r\n }\r\n\r\n onMouseDown(event: MouseEvent) {\r\n if (this.config.disableMouseDragging) {\r\n return;\r\n }\r\n\r\n this.isDragging = true;\r\n this.startX = event.pageX - this.tableContainer.nativeElement.offsetLeft;\r\n this.startY = event.pageY - this.tableContainer.nativeElement.offsetTop;\r\n this.scrollLeft = this.tableContainer.nativeElement.scrollLeft;\r\n this.scrollTop = this.tableContainer.nativeElement.scrollTop;\r\n\r\n // canceling any previous animation frame\r\n if (this.scrollMovement !== null) {\r\n cancelAnimationFrame(this.scrollMovement);\r\n }\r\n }\r\n\r\n onMouseMove(event: MouseEvent) {\r\n if (this.config.disableMouseDragging) {\r\n return;\r\n }\r\n\r\n this.checkTableOverflow();\r\n\r\n if (!this.isDragging) {\r\n return;\r\n }\r\n\r\n // using requestAnimationFrame for smoother updates\r\n if (this.scrollMovement === null) {\r\n this.scrollMovement = requestAnimationFrame(() => {\r\n if (!this.tableOverflow) {\r\n return;\r\n }\r\n\r\n const x = event.pageX - this.tableContainer.nativeElement.offsetLeft;\r\n const y = event.pageY - this.tableContainer.nativeElement.offsetTop;\r\n\r\n // calculating the differences in movement\r\n const walkX = (x - this.startX) * 2;\r\n const walkY = (y - this.startY) * 2;\r\n\r\n // updating scroll positions\r\n this.tableContainer.nativeElement.scrollLeft = this.scrollLeft - walkX;\r\n this.tableContainer.nativeElement.scrollTop = this.scrollTop - walkY;\r\n\r\n this.scrollMovement = null;\r\n });\r\n }\r\n }\r\n\r\n onMouseUp() {\r\n if (this.config.disableMouseDragging) {\r\n return;\r\n }\r\n\r\n this.isDragging = false;\r\n\r\n // canceling any pending animation\r\n if (this.scrollMovement !== null) {\r\n cancelAnimationFrame(this.scrollMovement);\r\n this.scrollMovement = null;\r\n }\r\n }\r\n\r\n paginatorChange(change: PageEvent) {\r\n this.paginatorUpdate.emit(change);\r\n }\r\n //#endregion\r\n\r\n rowHovered(index: number, row: T) {\r\n this.hoveredRow = row;\r\n this.hoveredRowIndex = index;\r\n }\r\n\r\n rowHoverLeave() {\r\n this.hoveredRow = null;\r\n this.hoveredRowIndex = undefined;\r\n }\r\n\r\n defaultTrackBy(ix: number): number {\r\n return ix;\r\n }\r\n\r\n private checkTableOverflow(): void {\r\n // when data is available we should check once for table overflow\r\n // when there wasnt overflow, but width of the table became bigger, then we are reseting tableOverflow variable\r\n // same for when there was overflow, but size of the table is same as container, so overflow is gone and we reseting tableOverflow variable again\r\n if ((this.dataSource?.data.length && this.tableOverflow === undefined) ||\r\n (!this.tableOverflow && this.tableContainer.nativeElement.clientWidth < this.tableElementRef.nativeElement.clientWidth) ||\r\n (this.tableOverflow && this.tableContainer.nativeElement.clientWidth === this.tableElementRef.nativeElement.clientWidth)) {\r\n\r\n if (this.tableContainer.nativeElement.clientWidth < this.tableElementRef.nativeElement.clientWidth) {\r\n this.tableOverflow = true;\r\n } else {\r\n this.tableOverflow = false;\r\n }\r\n }\r\n }\r\n\r\n private exportToFile() {\r\n if (!this.config.export?.fileOptions?.saveToFile) {\r\n return;\r\n }\r\n\r\n let fileString = \"\";\r\n let extension!: ExportFormat;\r\n switch (this.config.export.fileOptions.format) {\r\n case ExportFormat.CSV:\r\n default:\r\n extension = ExportFormat.CSV;\r\n fileString = HtmlElementParseHelper.tableAsCsv(this.tableElementRef.nativeElement, this.ignoreAttributeName);\r\n break;\r\n }\r\n const translatedFileName = this.translateService.instant(this.config.export.fileOptions.fileName);\r\n SaveFileHelper.saveFile(fileString, `${translatedFileName}.${extension}`);\r\n }\r\n\r\n private updateLocalStorage(newValue: SelectedColumnLocalStorageConfig) {\r\n this.localStorageValue = newValue;\r\n if (this.config.localStorageKey && newValue) {\r\n this.domService.localStorage?.setItem(this.config.localStorageKey, JSON.stringify(newValue));\r\n }\r\n }\r\n private readFromLocalStorage() {\r\n if (this.config.localStorageKey) {\r\n try {\r\n const localStorageString = this.domService.localStorage?.getItem(this.config.localStorageKey);\r\n if (localStorageString) {\r\n this.localStorageValue = JSON.parse(localStorageString);\r\n }\r\n }\r\n // eslint-disable-next-line no-empty\r\n catch {\r\n }\r\n }\r\n }\r\n\r\n private setColumnSelectProperties() {\r\n this.columnSelectActive = this.config.columnSelect?.enabled ? true : false;\r\n this.updateDisplayColumns(true);\r\n }\r\n\r\n private setFilterVisibility() {\r\n this.filterBarVisible = this.localStorageValue?.filter?.visible ?? this.config?.filter?.visible ?? false;\r\n }\r\n\r\n private setNoDataRowProperties() {\r\n if (this.config.noDataRow) {\r\n this.noDataRowActive = true;\r\n this.noDataRowConfig = this.config.noDataRow;\r\n this.noDataRowConfig.icon = this.config.noDataRow?.icon ?? this.noDataRowIcon;\r\n }\r\n }\r\n\r\n private setExportProperties() {\r\n if (this.config.export?.enabled) {\r\n this.exportActive = true;\r\n }\r\n }\r\n\r\n private createDataSource() {\r\n if (!this.config.dataSource) {\r\n this.#dataSource = new MatTableDataSource<T>(this.data());\r\n }\r\n }\r\n\r\n private updateDataSourceData() {\r\n const data = this.data();\r\n if (!data || !this.#dataSource) {\r\n return;\r\n }\r\n\r\n const shouldInitializePaginator = !this.#dataSource.data.length;\r\n this.#dataSource.data = data;\r\n\r\n // if data is async loaded, page needs to be set on first load.\r\n if (shouldInitializePaginator) {\r\n this.updatePaginator(this.config.paginator?.initialPage ?? 0);\r\n }\r\n }\r\n\r\n private updatePaginator(pageIndex: number) {\r\n if (this.paginator) {\r\n this.paginator.pageIndex = pageIndex;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { StatusDisplayComponent } from './status-display.component';\r\n\r\n@NgModule({\r\n declarations: [StatusDisplayComponent],\r\n imports: [CommonModule, TranslateModule, MatProgressSpinnerModule, RouterModule],\r\n exports: [StatusDisplayComponent]\r\n})\r\nexport class StatusDisplayModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MultiFunctionalTableComponent } from './multi-functional-table.component';\r\nimport { FilterBarModule } from '../filter-bar';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { StatusDisplayModule } from '../status-display';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { CustomPaginatorInernationalizationHelper } from '../helpers/custom-paginator-internatioinalization.helper';\r\n\r\n@NgModule({\r\n declarations: [\r\n MultiFunctionalTableComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatTableModule,\r\n MatButtonModule,\r\n TranslateModule,\r\n MatMenuModule,\r\n MatCheckboxModule,\r\n FormsModule,\r\n FilterBarModule,\r\n FlexLayoutModule,\r\n MatSortModule,\r\n MatProgressSpinnerModule,\r\n MatTooltipModule,\r\n StatusDisplayModule,\r\n MatIconModule,\r\n MatPaginatorModule\r\n ],\r\n providers:[\r\n {\r\n provide: MatPaginatorIntl,\r\n useClass: CustomPaginatorInernationalizationHelper\r\n }\r\n ],\r\n exports: [\r\n MultiFunctionalTableComponent\r\n ]\r\n})\r\nexport class MultiFunctionalTableModule { }\r\n","export enum Confirmation {\r\n PRIMARY = 1,\r\n SECONDARY = 2,\r\n}\r\n","<h1 mat-dialog-title>{{ data.title | translate }}</h1>\r\n<div mat-dialog-content>\r\n <p class=\"confirmation-description\">{{ data.descriptioon | translate }}</p>\r\n \r\n <ul *ngIf=\"data.details\">\r\n <li *ngFor=\"let extraData of data.details\">\r\n {{ extraData }}\r\n </li>\r\n </ul>\r\n</div>\r\n<mat-dialog-actions align=\"end\">\r\n <button mat-button [mat-dialog-close]=\"confirmation.SECONDARY\">\r\n {{ data.rejectionText | translate }}\r\n </button>\r\n <button mat-flat-button color=\"accent\" [mat-dialog-close]=\"confirmation.PRIMARY\">\r\n {{ data.confirmationText | translate }}\r\n </button>\r\n</mat-dialog-actions>\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ConfirmationBody } from './models/confirmation-body.model';\r\nimport { Confirmation } from './models/confirmation.enum';\r\n\r\n@Component({\r\n selector: 'lib-confirmation-modal',\r\n templateUrl: './confirmation-modal.component.html',\r\n styleUrls: ['./confirmation-modal.component.scss'],\r\n standalone: false\r\n})\r\nexport class ConfirmationModalComponent {\r\n confirmation = Confirmation;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<ConfirmationModalComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: ConfirmationBody\r\n ) {\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ConfirmationModalComponent } from './confirmation-modal.component';\r\n\r\n@NgModule({\r\n declarations: [ConfirmationModalComponent],\r\n imports: [CommonModule, MatDialogModule, MatButtonModule, TranslateModule],\r\n exports: [ConfirmationModalComponent],\r\n})\r\nexport class ConfirmationModalModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\r\nimport { ConfirmationModalComponent } from '../confirmation-modal.component';\r\nimport { ConfirmationBody } from '../models/confirmation-body.model';\r\nimport { Confirmation } from '../models/confirmation.enum';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfirmationService {\r\n\r\n constructor(private readonly dialog: MatDialog) { }\r\n\r\n openDialog(data: ConfirmationBody): Observable<Confirmation> {\r\n const dialogRef = this.dialog.open(ConfirmationModalComponent, {\r\n data: data,\r\n width: '40rem'\r\n });\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n}\r\n","export const OPEN_CLOSE_BTN_ICONS_TOKEN = 'OPEN_CLOSE_BTN_ICONS_TOKEN'","<button\r\n mat-button\r\n *ngIf=\"!isIcon\"\r\n [disabled]=\"disabled\"\r\n [disableRipple]=\"true\"\r\n [ngClass.lt-md]=\"'open-close-button-tablet'\"\r\n [attr.aria-label]=\"ariaLabelCode | translate\"\r\n [attr.aria-expanded]=\"isOpened\" \r\n>\r\n <span fxLayout=\"row\" fxLayoutAlign=\"center center\">\r\n <span class=\"open-close-button-content text-l\" fxLayoutAlign=\"center center\">\r\n <ng-content></ng-content>\r\n </span>\r\n\r\n <span *ngIf=\"isOpened; else closed\" class=\"material-icons spin\">\r\n {{ icons.open }}\r\n </span>\r\n\r\n <ng-template #closed>\r\n <span class=\"material-icons spin\">\r\n {{ icons.close }}\r\n </span>\r\n </ng-template>\r\n </span>\r\n</button>\r\n<button\r\n mat-icon-button\r\n fxLayoutAlign=\"center center\"\r\n *ngIf=\"isIcon\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"ariaLabelCode | translate\">\r\n <span class=\"material-icons\">\r\n {{ isOpened ? icons.open : icons.close }}\r\n </span>\r\n</button>\r\n","import { Component, Inject, Input, OnInit, Optional, ViewChild } from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { OpenCloseBtnIcons } from './models';\r\nimport { OPEN_CLOSE_BTN_ICONS_TOKEN } from './injection-tokens';\r\n\r\n@Component({\r\n selector: 'lib-open-close-button',\r\n templateUrl: './open-close-button.component.html',\r\n styleUrl: './open-close-button.component.scss',\r\n standalone: false\r\n})\r\nexport class OpenCloseButtonComponent implements OnInit {\r\n private _isOpened!: boolean;\r\n\r\n @Input() disableFocusOnAction!: boolean;\r\n @Input() disabled!: boolean;\r\n @Input() isIcon!: boolean;\r\n @Input() ariaLabelCode!: string;\r\n \r\n @Input() set isOpened(value: boolean) {\r\n if (this._isOpened && !value && !this.disableFocusOnAction) {\r\n this.focus();\r\n }\r\n this._isOpened = value;\r\n }\r\n\r\n get isOpened() { return this._isOpened; }\r\n\r\n @ViewChild(MatButton) button!: MatButton;\r\n\r\n icons!: OpenCloseBtnIcons;\r\n defaultIcons: OpenCloseBtnIcons = { open: 'keyboard_arrow_down', close: 'keyboard_arrow_up' };\r\n\r\n constructor(@Optional() @Inject(OPEN_CLOSE_BTN_ICONS_TOKEN) private readonly openCloseBtnIcons: OpenCloseBtnIcons ) {}\r\n\r\n ngOnInit(): void {\r\n this.icons = this.openCloseBtnIcons ?? this.defaultIcons;\r\n }\r\n\r\n focus(): void {\r\n this.button?.focus();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { OpenCloseButtonComponent } from './open-close-button.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\n\r\n@NgModule({\r\n declarations: [OpenCloseButtonComponent],\r\n imports: [CommonModule, TranslateModule, MatButtonModule, FlexLayoutModule],\r\n exports: [OpenCloseButtonComponent]\r\n})\r\nexport class OpenCloseButtonModule { }\r\n","export enum EngineTermCollectionScope {\r\n GROUP = \"Group\",\r\n GLOBAL = \"Global\"\r\n}\r\n","export enum EngineTermCollectionSource {\r\n TILDE_TERM = \"TildeTerm\",\r\n FILE = \"File\"\r\n}\r\n","export enum EngineTermCollectionStatus {\r\n IMPORTING = \"Importing\",\r\n READY = \"Ready\",\r\n ERROR = \"Error\",\r\n DELETING = \"Deleting\"\r\n}\r\n","export enum CombinedCollectionTooltipKey {\r\n NO_ENTRIES = \"NO_ENTRIES\",\r\n DEFAULT_COLLECTION = \"DEFAULT_COLLECTION\"\r\n}\r\n","\r\nexport enum MtCollectionStatus {\r\n IMPORTING = \"Importing\",\r\n DELETING = \"Deleting\",\r\n READY = \"Ready\",\r\n PROCESSING = \"Processing\",\r\n ERROR = \"Error\",\r\n // basic status created in frontend\r\n NOT_IN_USE = \"NotInUse\"\r\n}\r\n","export enum EngineTermCollectionSubStatus {\r\n UNSPECIFIED = \"Unspecified\",\r\n IMPORTING_QUEUING = \"ImportingQueuing\",\r\n IMPORTING = \"Importing\",\r\n IMPORTING_FETCHING = \"ImportingFetching\",\r\n IMPORTING_PREPROCESSING = \"ImportingPreprocessing\",\r\n DELETING_QUEUING = \"DeletingQueuing\",\r\n DELETING = \"Deleting\",\r\n DELETING_DELETED = \"DeletingDeleted\",\r\n ERROR_IMPORTING = \"ErrorImporting\",\r\n ERROR_DELETING = \"ErrorDeleting \",\r\n}\r\n","import { EngineTermCollectionSource } from \"../enums\";\r\nimport { CombinedCollectionTooltipKey } from \"../enums/combined-collection-tooltip-key.enum\";\r\nimport { MtCollectionStatus } from \"../enums/mt-collection-status.enum\";\r\nimport { EngineTermCollectionAccess } from \"./engine-term-collection-access.model\";\r\nimport { MtCollection } from \"./mt-collection.model\";\r\nimport { ITldTermCollection } from \"./tld-term-collection.model\";\r\n\r\n/**\r\n * Class that joins collection from term api and its imported collection from MT api.\r\n */\r\nexport class CombinedCollection {\r\n mtCollection!: MtCollection | null;\r\n termCollection!: ITldTermCollection | null;\r\n termTooltipKey!: CombinedCollectionTooltipKey | null;\r\n source!: EngineTermCollectionSource;\r\n /**\r\n * Modified date from term api or last updated from mt api.\r\n */\r\n lastUpdated!: Date | undefined;\r\n\r\n //#region Static properties\r\n static importingStatuses = [MtCollectionStatus.IMPORTING, MtCollectionStatus.PROCESSING];\r\n\r\n static findExistingCollectionFromList(collections: Iterable<CombinedCollection>, collection: CombinedCollection) {\r\n for (const col of collections) {\r\n if ((col.termId && col.termId == collection.termId) ||\r\n (col.mtCollection?.id && col.mtCollection.id == collection.mtCollection?.id)) {\r\n return col;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n static findExistingIndexFromList(collections: Iterable<CombinedCollection>, collection: CombinedCollection): number | null {\r\n if (!collections) {\r\n return null;\r\n }\r\n\r\n let i = 0;\r\n for (const col of collections) {\r\n if ((col.termId && col.termId == collection.termId) ||\r\n (col.mtCollection?.id && col.mtCollection.id == collection.mtCollection?.id)) {\r\n return i;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n //#endregion\r\n\r\n //#region Editable MT fields\r\n editables: {\r\n globalDefault?: boolean;\r\n groupDefault?: boolean;\r\n } = {};\r\n // #endregion\r\n\r\n //#region Getters for common fields\r\n // It is possible to optimize getters, by setting some of the values in update method, but it is left this way, so that data is more consistent.\r\n // Otherwise it might be easy to miss some property updating and get wrong data in future.\r\n\r\n private _isSynchronized = true;\r\n /**\r\n * Weather collection is synchronized with term portal collection. If no term collection, value is set to true.\r\n */\r\n get isSynchronized() {\r\n return this._isSynchronized;\r\n }\r\n\r\n /**\r\n * Determines if collections is 'syncable'. Returns true if it is not synced or if synchronization has failed and status is error.\r\n */\r\n private _syncButtonVisible!: boolean;\r\n get syncButtonVisible() { return this._syncButtonVisible; }\r\n /**\r\n * Term collection id. Returns value from term collection or from mt, if term collection not existing.\r\n */\r\n get termId(): string {\r\n return this.termCollection?.id ?? this.mtCollection?.termId as string;\r\n }\r\n\r\n get mtStatus() {\r\n return this.mtCollection?.status;\r\n }\r\n\r\n /**\r\n * Collection name. If has term collection, takes from there. If not, then returns mt collection name.\r\n */\r\n get name() {\r\n return this.termCollection?.name ?? this.mtCollection?.name;\r\n }\r\n\r\n /**\r\n * Entry count from term api.\r\n */\r\n get termEntries() {\r\n return this.termCollection?.entryCount;\r\n }\r\n\r\n /** Checks if has set to default in any scope */\r\n private _default!: boolean;\r\n get default() { return this._default }\r\n\r\n /**\r\n * Status from mt api or custom \"NOT_IN_USE\" status if not imported in mt.s\r\n */\r\n get status() {\r\n return this.mtStatus ?? MtCollectionStatus.NOT_IN_USE;\r\n }\r\n\r\n /**\r\n * Scope can be edited only if has mt collcetion or term collection is being prepared for import.\r\n */\r\n get canEditScope() {\r\n return this.mtCollection || this.default;\r\n }\r\n\r\n get termCount() {\r\n return this.mtCollection?.termCount;\r\n }\r\n\r\n private _isTermPortalCollection!: boolean;\r\n get isTermPortalCollection() { return this._isTermPortalCollection; }\r\n\r\n private _isImporting!: boolean | null;\r\n get isImporting() { return this._isImporting; }\r\n\r\n //#endregion\r\n\r\n constructor(termApiCollection: ITldTermCollection | null, mtCollection: MtCollection | null) {\r\n this.mtCollection = mtCollection;\r\n this.termCollection = termApiCollection;\r\n this.update(null);\r\n }\r\n\r\n /**\r\n * Updates collection with values from new collection.\r\n * @param collection collection from which should be updated.\r\n */\r\n update(collection: CombinedCollection | null) {\r\n if (collection?.termCollection) {\r\n this.termCollection = collection.termCollection;\r\n }\r\n\r\n if (collection?.mtCollection) {\r\n this.mtCollection = collection.mtCollection;\r\n }\r\n\r\n this._isTermPortalCollection = this.mtCollection?.collectionSource === EngineTermCollectionSource.TILDE_TERM ? true : false;\r\n\r\n if (this.mtCollection?.access) {\r\n this.updateEditables(this.mtCollection?.access);\r\n }\r\n\r\n this._isImporting = this.mtCollection && CombinedCollection.importingStatuses.includes(this.mtCollection?.status);\r\n this._default = (this.editables.groupDefault || this.editables.globalDefault) ?? false;\r\n this.updateIsSynchronized();\r\n this.updateTooltipKey();\r\n this.updateSource();\r\n }\r\n\r\n /**\r\n * If some of editables are edited.\r\n *\r\n * if collection not imported and enabled not set, method will return true, because you cannot update collection if it is not imported or is not meant to be imported.\r\n *\r\n * @returns true if collection is edited, false if not.\r\n */\r\n isEdited() {\r\n if ((this.mtCollection?.access?.group?.default !== this.editables.groupDefault)\r\n || (this.mtCollection?.access?.global?.default !== this.editables.globalDefault)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Deletes term collection and its properties.\r\n */\r\n deleteTerms() {\r\n this.termCollection = null;\r\n this.update(null);\r\n }\r\n\r\n\r\n /**\r\n * Deletes mt collection and its properties.\r\n */\r\n deleteMT() {\r\n this.mtCollection = null;\r\n this.update(null);\r\n }\r\n\r\n updateEditables(access: EngineTermCollectionAccess | null) {\r\n if (!access) {\r\n return;\r\n }\r\n\r\n this.editables.globalDefault = access.global?.default;\r\n this.editables.groupDefault = access.group?.default;\r\n }\r\n\r\n //#region Private methods\r\n private updateIsSynchronized() {\r\n let isSynchronized = true;\r\n\r\n const termModified = this.termCollection?.modifyDate;\r\n const lastMtUpdated = this.mtCollection?.lastUpdated;\r\n if (termModified && lastMtUpdated) {\r\n isSynchronized = termModified <= lastMtUpdated;\r\n }\r\n\r\n this._isSynchronized = isSynchronized;\r\n this.lastUpdated = lastMtUpdated ?? termModified;\r\n this._syncButtonVisible = !this.isImporting && (!this.isSynchronized || this.mtStatus === MtCollectionStatus.ERROR);\r\n }\r\n\r\n private updateSource() {\r\n if (this.termCollection) {\r\n this.source = EngineTermCollectionSource.TILDE_TERM;\r\n }\r\n else if (this.mtCollection) {\r\n this.source = EngineTermCollectionSource.FILE;\r\n }\r\n }\r\n\r\n private updateTooltipKey() {\r\n if (this.default) {\r\n this.termTooltipKey = CombinedCollectionTooltipKey.DEFAULT_COLLECTION;\r\n }\r\n else if (this.termCollection?.entryCount === 0) {\r\n this.termTooltipKey = CombinedCollectionTooltipKey.NO_ENTRIES;\r\n }\r\n else {\r\n this.termTooltipKey = null;\r\n }\r\n }\r\n\r\n //#endregion\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TerminologyConfigService } from \"../../config/services\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { Observable, map } from \"rxjs\";\r\nimport { CombinedCollection, ITldTermCollection } from \"../../models\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class TerminologyCollectionService {\r\n get url() {\r\n return `${this.config.termConfig.terminologyPortalUrl}/api/termservice/collection`;\r\n }\r\n\r\n constructor(private readonly config: TerminologyConfigService, private readonly http: HttpClient) {}\r\n\r\n createCollection(defaultLanguages: string[], collectionName: string): Observable<CombinedCollection> {\r\n const params = { name: collectionName, defaultLanguages };\r\n return this.http.post<ITldTermCollection>(this.url, params).pipe(\r\n map((collection) => {\r\n return this.convertToCombinedCollection(collection);\r\n })\r\n );\r\n }\r\n\r\n getCollectionList(): Observable<CombinedCollection[]> {\r\n return this.http.get<ITldTermCollection[]>(this.url).pipe(\r\n map((collections) => {\r\n const converted: CombinedCollection[] = [];\r\n collections.forEach((collection) => {\r\n converted.push(this.convertToCombinedCollection(collection));\r\n });\r\n return converted;\r\n })\r\n );\r\n }\r\n\r\n getEditLink(termId: string, sourceLanguage?: string, targetLanguage?: string): string {\r\n let link = `${this.config.termConfig.terminologyPortalUrl}/collections/${termId}/mt`;\r\n if (sourceLanguage) {\r\n link = `${link}/${sourceLanguage}`;\r\n }\r\n if (targetLanguage) {\r\n link = `${link}/${targetLanguage}`;\r\n }\r\n return link;\r\n }\r\n\r\n private convertToCombinedCollection(collection: ITldTermCollection): CombinedCollection {\r\n // dirty approach, but term portal not returning timezone, but returns dates as UTC\r\n collection.modifyDate = new Date(collection.modifyDate.toString() + \"Z\");\r\n return new CombinedCollection(collection, null);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TerminologyConfigService } from '../../config/services';\r\nimport { AddEngineTermsRequestParams, DefaultCollectionOrderUpdate, EngineTermCollection, EngineTermCollectionList, UpdateEngineTermsRequestParams } from '../../models';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthHeadersHelper } from '../../../helpers';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EngineTermApiService {\r\n baseUrl!: string;\r\n\r\n constructor(\r\n private readonly http: HttpClient,\r\n private readonly config: TerminologyConfigService\r\n ) {\r\n this.baseUrl = this.config?.termConfig?.engineTermUrl as string;\r\n }\r\n\r\n add(engineId: string, params: AddEngineTermsRequestParams) {\r\n const data = new FormData();\r\n data.append(\"collectionId\", params.collectionId);\r\n data.append(\"collectionSource\", params.collectionSource);\r\n if (params.access.global?.default !== undefined) {\r\n data.append(\"access.Global.Default\", params.access.global?.default.toString());\r\n }\r\n if (params.access.group?.default !== undefined) {\r\n data.append(\"access.Group.Default\", params.access.group?.default.toString());\r\n }\r\n return this.http.post<EngineTermCollection>(`${this.baseUrl}/${engineId}/terms`, data);\r\n }\r\n\r\n update(engineId: string, collectionId: string, params: UpdateEngineTermsRequestParams) {\r\n return this.http.put<EngineTermCollection>(`${this.baseUrl}/${engineId}/terms/${collectionId}`, params);\r\n }\r\n\r\n getList(engineId: string): Observable<EngineTermCollectionList> {\r\n return this.http.get<EngineTermCollectionList>(`${this.baseUrl}/${engineId}/terms`, { params: { engineId }, headers: AuthHeadersHelper.getAppIdAuthHeaders(this.config.termConfig.appId ?? '') });\r\n }\r\n\r\n remove(engineId: string, collectionId: string) {\r\n return this.http.delete<EngineTermCollection>(`${this.baseUrl}/${engineId}/terms/${collectionId}`);\r\n }\r\n\r\n order(engineId: string, orderUpdate: DefaultCollectionOrderUpdate): Observable<EngineTermCollectionList> {\r\n return this.http.post<EngineTermCollectionList>(`${this.baseUrl}/${engineId}/terms/order`, orderUpdate);\r\n }\r\n\r\n sync(engineId: string, collectionId: string): Observable<EngineTermCollection> {\r\n return this.http.post<EngineTermCollection>(`${this.baseUrl}/${engineId}/terms/${collectionId}/sync`, {});\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Observable, map, of } from \"rxjs\";\r\nimport { TerminologyConfigService } from \"../../config/services\";\r\nimport { AddEngineTermsRequestParams, CombinedCollection, EngineTermCollection, EngineTermCollectionAccessUpdate, MtCollection, UpdateEngineTermsRequestParams } from \"../../models\";\r\nimport { EngineTermApiService } from \"../engine-term-api/engine-term-api.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class TerminologyApiService {\r\n baseUrl!: string;\r\n\r\n constructor(private readonly config: TerminologyConfigService, private readonly engineTermApi: EngineTermApiService) {\r\n this.baseUrl = this.config?.termConfig?.engineTermUrl as string;\r\n }\r\n\r\n add(engineId: string, collection: CombinedCollection): Observable<CombinedCollection> {\r\n const access: EngineTermCollectionAccessUpdate = {\r\n group: { default: collection.editables.groupDefault as boolean },\r\n };\r\n\r\n if (collection.editables.globalDefault !== undefined) {\r\n access.global = { default: collection.editables.globalDefault }\r\n }\r\n\r\n if (!access.group.default && !access.global?.default) {\r\n access.group.default = false;\r\n }\r\n\r\n if (!collection.mtCollection) {\r\n const params: AddEngineTermsRequestParams = {\r\n collectionId: collection.termId,\r\n collectionSource: collection.source,\r\n access,\r\n };\r\n return this.engineTermApi.add(engineId, params).pipe(map((collection) => this.convertToCombinedCollection(collection)));\r\n } else {\r\n const params: UpdateEngineTermsRequestParams = {\r\n access,\r\n };\r\n return this.engineTermApi.update(engineId, collection.mtCollection.id, params).pipe(map((collection) => this.convertToCombinedCollection(collection)));\r\n }\r\n }\r\n\r\n getList(engineId: string): Observable<CombinedCollection[]> {\r\n return this.engineTermApi.getList(engineId).pipe(\r\n map((collections) => {\r\n const converted: CombinedCollection[] = [];\r\n collections?.termCollections?.forEach((collection) => {\r\n converted.push(this.convertToCombinedCollection(collection));\r\n });\r\n return converted;\r\n })\r\n );\r\n }\r\n\r\n remove(engineId: string, collection: CombinedCollection): Observable<CombinedCollection> {\r\n if (!collection?.mtCollection?.id) {\r\n return of();\r\n }\r\n\r\n return this.engineTermApi.remove(engineId, collection.mtCollection.id).pipe(map((collection) => this.convertToCombinedCollection(collection)));\r\n }\r\n\r\n sync(engineId: string, collection: CombinedCollection): Observable<CombinedCollection> {\r\n if (!collection?.mtCollection?.id) {\r\n return of();\r\n }\r\n\r\n return this.engineTermApi.sync(engineId, collection.mtCollection.id).pipe(\r\n map((updatedCollection) => {\r\n return updatedCollection ? this.convertToCombinedCollection(updatedCollection) : collection;\r\n })\r\n );\r\n }\r\n\r\n private convertToCombinedCollection(collection: EngineTermCollection): CombinedCollection {\r\n const convertedMtCollection: MtCollection = {\r\n id: collection.id,\r\n lastUpdated: collection.externalCollection?.updatedAt ? new Date(collection.externalCollection.updatedAt) : null,\r\n name: collection.name,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n status: collection.status as any,\r\n subStatus: collection.subStatus,\r\n termId: collection.externalCollection.id,\r\n termCount: collection.externalCollection.termCount,\r\n progress: collection.progress,\r\n collectionSource: collection.collectionSource,\r\n access: collection.access,\r\n };\r\n return new CombinedCollection(null, convertedMtCollection);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subject, forkJoin, of, tap } from 'rxjs';\r\nimport { AlertService } from '../../../services';\r\nimport { TerminologyConfigService } from '../../config/services';\r\nimport { EngineTermCollectionSource, MtCollectionStatus } from '../../enums';\r\nimport { CombinedCollection } from '../../models';\r\nimport { TerminologyEngine } from '../../models/terminology-engine.model';\r\nimport { TerminologyApiService } from '../terminology-api/terminology-api.service';\r\nimport { TerminologyCollectionService } from '../terminology-collection/terminology-collection.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TerminologyService {\r\n public engines: { [engineId: string]: TerminologyEngine } = {};\r\n\r\n private retranslateSubject = new Subject<boolean>();\r\n private engineSubject = new BehaviorSubject(this.engines);\r\n private updatedEnginesSubject = new Subject<{ [engineId: string]: TerminologyEngine }>();\r\n\r\n get isAuthenticated() { return this.config.termConfig.isAuth }\r\n get canCreateCollections() { return this.config.termConfig.canCreateCollection }\r\n\r\n public readonly LOCAL_STORAGE_KEY = 'systemLastCollections';\r\n\r\n get hasEditPermissions() {\r\n return (\r\n this.config?.termConfig.isAuth &&\r\n this.canCreateCollections &&\r\n this.config.termConfig.isTermPortalSupported\r\n );\r\n }\r\n\r\n constructor(\r\n private readonly config: TerminologyConfigService,\r\n private readonly alert: AlertService,\r\n private readonly termCollectionApi: TerminologyCollectionService,\r\n private readonly mtApi: TerminologyApiService\r\n ) { }\r\n\r\n getRetranslateSignal(): Observable<boolean> {\r\n return this.retranslateSubject.asObservable();\r\n }\r\n\r\n resetEngines(): void {\r\n this.engines = {};\r\n }\r\n\r\n hasAnyCollections(systemId: string): boolean { return this.engines[systemId]?.collections.size > 0 }\r\n\r\n getEnginesWithSelectedCollectionChange(): Observable<{ [engineId: string]: TerminologyEngine }> {\r\n return this.updatedEnginesSubject.asObservable();\r\n }\r\n\r\n setEngine(\r\n engineId: string,\r\n languages: string[] | null = null,\r\n setSelectedFromLocalStorage = false,\r\n termCollections = true,\r\n mtCollections = true,\r\n selectedCollection?: CombinedCollection,\r\n autoRefresh?: boolean\r\n ) {\r\n const engineExists = this.engines[engineId] ?? null;\r\n\r\n if (!engineExists) {\r\n const newEngine: TerminologyEngine = {\r\n selected: selectedCollection || null,\r\n isImporting: false,\r\n isAnyImporting: false,\r\n hasAnyCollections: false,\r\n isRefreshingCollections: false,\r\n collections: new Set<CombinedCollection>,\r\n refreshMtCollections: mtCollections,\r\n refreshTermCollections: termCollections,\r\n engineLanguages: languages || [],\r\n isSoftAutoRefreshOn: false,\r\n hardAutoRefresh: autoRefresh ?? false,\r\n refreshTimeout: 0\r\n };\r\n\r\n this.engines[engineId] = newEngine;\r\n } else {\r\n engineExists.hardAutoRefresh = autoRefresh ?? false;\r\n }\r\n\r\n return this.loadCollections(engineId, setSelectedFromLocalStorage);\r\n }\r\n\r\n setSelectedCollection(engineId: string, collection: CombinedCollection | null, storeSelectedInLocalStorage: boolean): void {\r\n if (this.engines[engineId]) {\r\n this.engines[engineId].selected = collection;\r\n }\r\n\r\n if (storeSelectedInLocalStorage) {\r\n this.storeSelectedInLocalStorage(engineId);\r\n }\r\n\r\n this.retranslateSubject.next(true);\r\n }\r\n\r\n loadCollections(engineId: string, setSelectedFromLocalStorage?: boolean): Observable<{ [engineId: string]: TerminologyEngine; }> {\r\n // clear timeout since this refresh replaces scheduled\r\n this.clearTimeout(engineId);\r\n\r\n this.engines[engineId] = { ...this.engines[engineId], isRefreshingCollections: true }\r\n\r\n let termResponse: CombinedCollection[];\r\n let mtApiResponse: CombinedCollection[];\r\n\r\n const observables: Observable<CombinedCollection[]>[] = [];\r\n\r\n if (this.engines[engineId].refreshTermCollections) {\r\n observables.push(\r\n this.termCollectionApi\r\n .getCollectionList()\r\n .pipe(tap((response) => (termResponse = response)))\r\n );\r\n }\r\n if (this.engines[engineId].refreshMtCollections) {\r\n observables.push(\r\n this.mtApi\r\n .getList(engineId)\r\n .pipe(tap((response) => (mtApiResponse = response)))\r\n );\r\n }\r\n forkJoin(observables).subscribe({\r\n // do not need response becaue responses are saved in pipe methods\r\n next: () => {\r\n this.engines[engineId].isAnyImporting = false;\r\n // note that termResponse and mtapiresponse gets changed during remove method\r\n this.removeDeleted(termResponse, mtApiResponse, engineId);\r\n\r\n const joined = [];\r\n if (mtApiResponse) {\r\n joined.push(...mtApiResponse);\r\n }\r\n if (termResponse) {\r\n joined.push(...termResponse);\r\n }\r\n\r\n this.addCollections(joined, engineId);\r\n if (setSelectedFromLocalStorage) {\r\n this.setSelectedFromLocalStorage(engineId);\r\n }\r\n this.engines[engineId].isRefreshingCollections = false;\r\n this.scheduleRefresh(engineId, null);\r\n },\r\n error: (error) => {\r\n this.engines[engineId].isRefreshingCollections = false;\r\n // it is enough to show error only in console. No special thing is necessary.\r\n console.error(error);\r\n },\r\n });\r\n\r\n return this.engineSubject.asObservable();\r\n }\r\n\r\n getCollections(): Observable<{ [engineId: string]: TerminologyEngine }> {\r\n return this.engineSubject.asObservable();\r\n }\r\n\r\n startAutoRefresh(engineId: string, languages: string[] | null = null, setSelectedFromLocalStorage = false, termCollections = true, mtCollections = true) {\r\n return this.setEngine(engineId, languages ?? this.engines[engineId]?.engineLanguages, setSelectedFromLocalStorage, termCollections, mtCollections, undefined, true);\r\n }\r\n\r\n stopAutoRefresh(engineId: string) {\r\n this.clearTimeout(engineId);\r\n\r\n if (this.engines[engineId]) {\r\n this.engines[engineId].isSoftAutoRefreshOn = false;\r\n this.engines[engineId].hardAutoRefresh = false;\r\n }\r\n }\r\n\r\n create(\r\n sourceLanguage: string,\r\n targetLanguage: string,\r\n collectionName: string,\r\n engineId: string,\r\n redirectToEdit = true\r\n ) {\r\n return this.termCollectionApi\r\n .createCollection([sourceLanguage, targetLanguage], collectionName)\r\n .pipe(\r\n tap((collection) => {\r\n if (redirectToEdit) {\r\n window.open(\r\n this.termCollectionApi.getEditLink(\r\n collection.termCollection?.id ?? '',\r\n sourceLanguage,\r\n targetLanguage\r\n ),\r\n '_blank'\r\n );\r\n }\r\n\r\n this.engines[engineId]?.collections?.add(collection);\r\n\r\n this.loadCollections(engineId);\r\n })\r\n );\r\n }\r\n\r\n selectedIdForTranslation(engineId: string): string | null {\r\n const selected = this.engines[engineId]?.selected;\r\n if (\r\n selected?.mtCollection &&\r\n (selected.mtCollection.lastUpdated ||\r\n selected.mtCollection.status === MtCollectionStatus.READY)\r\n ) {\r\n return selected.mtCollection.id;\r\n }\r\n return null;\r\n }\r\n\r\n updateIfNecessary(\r\n collection: CombinedCollection,\r\n engineId: string,\r\n isEdited = false\r\n ): Observable<CombinedCollection> {\r\n // collection is not imported and should be attached to engine\r\n if (collection.isEdited() || isEdited) {\r\n return this.mtApi.add(engineId, collection).pipe(\r\n tap((updatedCollection) => {\r\n collection.update(updatedCollection);\r\n })\r\n );\r\n } else {\r\n return of(collection);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n handleAddToEngineError(error: any, engineId: string): void {\r\n this.alert.unhandeledError(error);\r\n this.engines[engineId].selected = null;\r\n }\r\n\r\n sync(\r\n collection: CombinedCollection,\r\n engineId: string\r\n ): Observable<CombinedCollection> {\r\n return this.mtApi.sync(engineId, collection).pipe(\r\n tap((updatedCollection) => {\r\n collection.update(updatedCollection);\r\n })\r\n );\r\n }\r\n\r\n removeMtCollection(collection: CombinedCollection, engineId: string) {\r\n return this.mtApi.remove(engineId, collection).pipe(\r\n tap((response) => {\r\n collection.update(response);\r\n })\r\n );\r\n }\r\n\r\n addToEngineValidation(collection: CombinedCollection): boolean {\r\n if (!collection || !collection.termCollection) {\r\n console.error(\"Trying to attach collection that has no tilde term id.\");\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private clearTimeout(engineId: string) {\r\n if (this.engines[engineId]?.refreshTimeout) {\r\n clearTimeout(this.engines[engineId].refreshTimeout);\r\n this.engines[engineId].refreshTimeout = null;\r\n }\r\n }\r\n\r\n private setSelectedFromLocalStorage(engineId: string) {\r\n // If no collections or selected is already set, it should not be changed from localstorage value. (Usually, localstorage should have the same value).\r\n if (this.engines[engineId].collections?.size === 0 || this.engines[engineId].selected) {\r\n this.updateSelectedCollectionOutsideService();\r\n return;\r\n }\r\n\r\n const storedId = this.readLocalStorage()?.[engineId];\r\n\r\n if (!storedId) {\r\n this.engines[engineId].selected = null;\r\n this.updateSelectedCollectionOutsideService();\r\n return;\r\n }\r\n\r\n const existing = Array.from(this.engines[engineId].collections).find(\r\n (item) => item.mtCollection?.id === storedId || item.termCollection?.id === storedId);\r\n this.engines[engineId].selected = existing as CombinedCollection;\r\n\r\n this.updateSelectedCollectionOutsideService();\r\n }\r\n\r\n\r\n private removeDeleted(termResponse: CombinedCollection[], mtResponse: CombinedCollection[], engineId: string): void {\r\n for (const collection of this.engines[engineId].collections) {\r\n const termExistingIx = CombinedCollection.findExistingIndexFromList(termResponse, collection);\r\n const mtExistingIx = CombinedCollection.findExistingIndexFromList(mtResponse, collection);\r\n\r\n if (termExistingIx === null && mtExistingIx === null) {\r\n this.engines[engineId]?.collections.delete(collection);\r\n\r\n if (this.engines[engineId]?.selected === collection) {\r\n this.engines[engineId].selected = null;\r\n this.updateSelectedCollectionOutsideService();\r\n }\r\n } else {\r\n if (termExistingIx !== null) {\r\n const existingTerm = termResponse[termExistingIx];\r\n collection.update(existingTerm);\r\n termResponse.splice(termExistingIx, 1);\r\n } else {\r\n collection.deleteTerms();\r\n }\r\n\r\n if (mtExistingIx !== null) {\r\n const existingMt = mtResponse[mtExistingIx];\r\n collection.update(existingMt);\r\n mtResponse.splice(mtExistingIx, 1);\r\n } else {\r\n collection.deleteMT();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private addCollections(newCollections: Iterable<CombinedCollection>, engineId: string) {\r\n // sets collection list to this value at the end, so deleted collections are not in the list.\r\n for (const collection of newCollections) {\r\n // User shouldn't see failed collections if he can't retry to import them.\r\n if (!this.hasEditPermissions && collection.mtStatus === MtCollectionStatus.ERROR || collection.mtStatus === MtCollectionStatus.DELETING) {\r\n continue;\r\n }\r\n\r\n if (collection.isImporting) {\r\n this.engines[engineId].isAnyImporting = true;\r\n }\r\n\r\n const existing: CombinedCollection | null = CombinedCollection.findExistingCollectionFromList(this.engines[engineId].collections, collection);\r\n\r\n if (!existing && collection.source === EngineTermCollectionSource.TILDE_TERM) {\r\n const filterByLanguageDirection = this.config.termConfig.filterCollectionsByLanguageDirection;\r\n \r\n let hasLanguages = true;\r\n for (let i = 0; i < this.engines[engineId].engineLanguages.length; i++) {\r\n if (\r\n !collection.termCollection?.languages?.find(\r\n (lang) => filterByLanguageDirection ? lang.id === this.engines[engineId].engineLanguages[i] : this.engines[engineId].engineLanguages.includes(lang.id)\r\n )\r\n ) {\r\n hasLanguages = false;\r\n break;\r\n }\r\n }\r\n\r\n if (!hasLanguages) {\r\n continue;\r\n }\r\n }\r\n\r\n if (!existing) {\r\n this.engines[engineId].collections.add(collection);\r\n } else {\r\n existing.update(collection);\r\n }\r\n }\r\n\r\n this.engines[engineId].hasAnyCollections = this.engines[engineId].collections.size > 0;\r\n\r\n this.engineSubject.next(this.engines);\r\n }\r\n\r\n private scheduleRefresh(engineId: string, timeout?: number | null,) {\r\n // if menu is closed and selected collection is not importing anymore - auto refreshing should be cancelled.\r\n if (\r\n !this.engines[engineId].hardAutoRefresh &&\r\n !this.engines[engineId]?.isImporting &&\r\n this.engines[engineId].isSoftAutoRefreshOn\r\n ) {\r\n this.stopAutoRefresh(engineId);\r\n return;\r\n }\r\n\r\n // if hard auto refresho on, auto refresh should be on. If hard autoreferesh is off , refresh needs to be done only if selected is importing.\r\n if (\r\n this.engines[engineId].hardAutoRefresh ||\r\n (this.engines[engineId] &&\r\n (this.engines[engineId].isSoftAutoRefreshOn || this.engines[engineId].selected?.isImporting))\r\n ) {\r\n const timeoutMs =\r\n timeout ??\r\n (this.engines[engineId].isAnyImporting\r\n ? this.config.termConfig.refreshTimeoutMsWhenImporting\r\n : this.config.termConfig.refreshTimeoutMs);\r\n this.engines[engineId].refreshTimeout = setTimeout(() => {\r\n this.engines[engineId].refreshTimeout = null;\r\n this.loadCollections(engineId);\r\n }, timeoutMs);\r\n }\r\n }\r\n\r\n private storeSelectedInLocalStorage(engineId: string): void {\r\n let localStorageObject = this.readLocalStorage();\r\n\r\n if (!localStorageObject) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n localStorageObject = {} as any;\r\n }\r\n \r\n localStorageObject[engineId] = this.engines[engineId].selected ? this.engines[engineId]?.selected?.mtCollection?.id : null;\r\n \r\n localStorage.setItem(this.LOCAL_STORAGE_KEY, JSON.stringify(localStorageObject));\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private readLocalStorage(): any {\r\n const data = localStorage.getItem(this.LOCAL_STORAGE_KEY) as string;\r\n try {\r\n return JSON.parse(data);\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n private updateSelectedCollectionOutsideService(): void {\r\n this.updatedEnginesSubject.next(this.engines);\r\n }\r\n}\r\n","<ng-container *ngIf=\"collection\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <mat-radio-button\r\n fxFlex\r\n fxLayoutAlign=\"center center\"\r\n [class.mat-mdc-radio-checked]=\"collection.default || collection === selected\"\r\n [disabled]=\"isSelectionDisabled\"\r\n [matTooltip]=\"collection.termTooltipKey ? (tooltipLocalizationKey + collection.termTooltipKey | translate) : ''\"\r\n (click)=\"selectGlossary(collection)\"\r\n >\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <div class=\"collection-label\">\r\n <span *ngIf=\"!collection.termTooltipKey\" class=\"text-m-semi-bold\" [matTooltip]=\"collection.name ?? ''\">\r\n {{ collection.name }}\r\n </span>\r\n\r\n <span *ngIf=\"collection.termTooltipKey\" class=\"text-m-semi-bold\">\r\n {{ collection.name }}\r\n </span>\r\n </div>\r\n \r\n <span *ngIf=\"collection.default\" class=\"default-badge\" >{{ localizationKey + \"DEFAULT\" | translate }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"showCollectionLanguages\" class=\"collection-languages\">\r\n <ng-container *ngIf=\"collection.termCollection; else currentDirection\">\r\n <span *ngFor=\"let lang of collection.termCollection.languages\">{{lang.id}}</span>\r\n </ng-container>\r\n\r\n <ng-template #currentDirection>\r\n <span>{{sourceLanguageCode}}</span>\r\n <span>{{targetLanguageCode}}</span>\r\n </ng-template>\r\n </div>\r\n \r\n <span *ngIf=\"collection.termCount\" class=\"collection-label-block text-s\">\r\n {{ localizationKey + \"TERMS_IN_USE\" | translate : { termCount: collection.termCount } }}\r\n </span>\r\n <span *ngIf=\"collection.lastUpdated\" class=\"collection-label-block text-s\">\r\n {{ localizationKey + \"LAST_UPDATED\" | translate : { date: collection.lastUpdated | dateAgo } }}\r\n </span>\r\n \r\n <div class=\"collection-label-block collection-status-labels text-s\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"0.5rem\">\r\n <div *ngIf=\"collection.mtStatus && collection.mtStatus === collectionErrorStatus\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"0.25rem\">\r\n <span color=\"accent\" class=\"material-icons collection-list-error\"> error </span>\r\n \r\n <span *ngIf=\"collection.mtCollection?.subStatus === collectionImportingErrorSubStatus\">\r\n {{ localizationKey + \"ERRORS.\" + (collection.mtCollection?.subStatus | uppercase) | translate }}\r\n </span>\r\n </div>\r\n \r\n <span *ngIf=\"collection.isImporting\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"0.5rem\">\r\n <mat-spinner color=\"accent\" diameter=\"20\"> </mat-spinner>\r\n <span>\r\n {{ tooltipLocalizationKey + \"IMPORTING\" | translate }}\r\n </span>\r\n </span>\r\n \r\n <button *ngIf=\"collection.syncButtonVisible\" mat-button color=\"primary\" (click)=\"attach(collection); $event.stopPropagation()\" [matTooltip]=\"tooltipLocalizationKey + 'SYNC' | translate\">\r\n <span fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"text-s\">\r\n <mat-icon class=\"pt-1\">sync</mat-icon>\r\n {{ localizationKey + \"SYNC\" | translate }}\r\n </span>\r\n </button>\r\n </div>\r\n </mat-radio-button>\r\n\r\n <ng-container *ngIf=\"hasEditPermissions\">\r\n <a\r\n class=\"collection-list-edit\"\r\n mat-icon-button\r\n target=\"_blank\"\r\n [matTooltip]=\"tooltipLocalizationKey + 'EDIT' | translate\"\r\n [attr.href]=\"getEditLink(collection)\"\r\n *ngIf=\"collection.termCollection\"\r\n >\r\n <mat-icon class=\"material-icons material-icons-outlined\">edit</mat-icon>\r\n </a>\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CombinedCollection } from '../../../../models';\r\nimport { EngineTermCollectionSubStatus, MtCollectionStatus } from '../../../../enums';\r\nimport { TerminologyCollectionService, TerminologyService } from '../../../../services';\r\n\r\n@Component({\r\n selector: 'lib-terminology-collection-card',\r\n templateUrl: './terminology-collection-card.component.html',\r\n styleUrls: ['./terminology-collection-card.component.scss'],\r\n standalone: false\r\n})\r\nexport class TerminologyCollectionCardComponent {\r\n @Input() collection!: CombinedCollection;\r\n @Input() selected!: CombinedCollection | null;\r\n @Input() localizationKey!: string;\r\n @Input() tooltipLocalizationKey!: string;\r\n @Input() sourceLanguageCode!: string;\r\n @Input() engineId!: string;\r\n @Input() targetLanguageCode!: string;\r\n @Input() hasEditPermissions!: boolean;\r\n @Input() showCollectionLanguages!: boolean;\r\n @Output() glossarySelectEvent = new EventEmitter<CombinedCollection>();\r\n\r\n collectionErrorStatus = MtCollectionStatus.ERROR\r\n\r\n collectionImportingErrorSubStatus = EngineTermCollectionSubStatus.ERROR_IMPORTING;\r\n\r\n get isSelectionDisabled(): boolean {\r\n return this.isCollectionDisabled(this.collection);\r\n }\r\n \r\n constructor (private readonly terminologyService: TerminologyService, private readonly terminologyCollection: TerminologyCollectionService) {}\r\n\r\n selectGlossary(collection: CombinedCollection): void {\r\n if (this.isCollectionDisabled(collection)) {\r\n return;\r\n }\r\n\r\n this.glossarySelectEvent.emit(collection);\r\n }\r\n\r\n attach(collection: CombinedCollection): void {\r\n this.terminologyService.sync(collection, this.engineId).subscribe();\r\n }\r\n\r\n getEditLink(collection: CombinedCollection): string {\r\n // Collections with terms that shouldn't be translated.\r\n if (collection.termCollection?.languages && collection.termCollection?.languages.length === 1) {\r\n return this.terminologyCollection.getEditLink(collection.termCollection.id);\r\n }\r\n\r\n // Adds both source and target languages to the collection. \r\n return this.terminologyCollection.getEditLink(collection.termCollection!.id, this.sourceLanguageCode, this.targetLanguageCode);\r\n }\r\n\r\n private isCollectionDisabled(collection: CombinedCollection): boolean {\r\n return collection.termId !== null && collection.termEntries as number <= 0 || collection.default\r\n }\r\n}\r\n","<header class=\"tld-collection-list-header\">\r\n <h1 class=\"term-window-title text-l-semi-bold\">\r\n <span>{{ localizationKey + \"TITLE\" | translate }}</span>\r\n </h1>\r\n <ng-container *ngIf=\"hasAnyCollections\">\r\n <p class=\"term-window-description text-s\">\r\n <span>{{ localizationKey + \"DESCRIPTION\" | translate }}</span>\r\n </p>\r\n </ng-container>\r\n <ng-container *ngIf=\"!hasAnyCollections\">\r\n <p class=\"term-window-unavailable text-xl-semi-bold\">\r\n {{ localizationKey + \"UNAVAILABLE_GLOSSARIES\" | translate }}\r\n </p>\r\n\r\n <p [innerHtml]=\"localizationKey + 'DESCRIPTION_EMPTY' | translate : {\r\n srcLang: system.sourceLanguageCode | languageTranslate,\r\n trgLang: system.targetLanguageCode | languageTranslate\r\n }\" class=\"term-window-description text-m\"></p>\r\n </ng-container>\r\n</header>\r\n<div *ngIf=\"hasAnyCollections\" class=\"tld-collection-list-body\">\r\n <mat-radio-group [attr.aria-label]=\"localizationKey + 'ARIA_LABELS.RADIO_GROUP' | translate\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"none-option\">\r\n <mat-radio-button [class.mat-mdc-radio-checked]=\"!selectedCollection\" (click)=\"selectGlossary(null)\">\r\n <span class=\"text-m-semi-bold\">\r\n {{ localizationKey + \"SELECTED_NONE\" | translate }}\r\n </span>\r\n </mat-radio-button>\r\n </div>\r\n <div class=\"collection\" *ngFor=\"let collection of collections\">\r\n <lib-terminology-collection-card\r\n *ngIf=\"collection.status\"\r\n class=\"collection-card\"\r\n [collection]=\"collection\"\r\n [engineId]=\"system.systemId\"\r\n [selected]=\"selectedCollection\"\r\n [localizationKey]=\"localizationKey\"\r\n [tooltipLocalizationKey]=\"tooltipLocalizationKey\"\r\n [hasEditPermissions]=\"hasEditPermissions\"\r\n [sourceLanguageCode]=\"system.sourceLanguageCode\"\r\n [targetLanguageCode]=\"system.targetLanguageCode\"\r\n [showCollectionLanguages]=\"showCollectionLanguages\"\r\n (glossarySelectEvent)=\"selectGlossary($event)\"\r\n ></lib-terminology-collection-card>\r\n </div>\r\n </mat-radio-group>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\r\nimport { TerminologyService } from \"../../../services\";\r\nimport { CombinedCollection } from \"../../../models\";\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { TerminologyConfigService } from \"../../../config/services\";\r\n\r\n@Component({\r\n selector: \"lib-terminology-collection-list\",\r\n templateUrl: \"./terminology-collection-list.component.html\",\r\n styleUrls: [\"./terminology-collection-list.component.scss\"],\r\n standalone: false\r\n})\r\nexport class TerminologyCollectionListComponent implements OnInit, OnDestroy {\r\n @Input({ required: true }) system!: { systemId: string; sourceLanguageCode: string; targetLanguageCode: string };\r\n @Input() selectedCollection!: CombinedCollection | null;\r\n @Output() glossarySelectEvent = new EventEmitter<CombinedCollection | null>();\r\n\r\n appName!: string;\r\n\r\n collections: CombinedCollection[] = [];\r\n\r\n readonly localizationKey = \"TERM_COLLECTIONS.\";\r\n readonly tooltipLocalizationKey = \"TERM_COLLECTIONS.TOOLTIPS.\";\r\n\r\n get hasAnyCollections() {\r\n return this.terminologyService.hasAnyCollections(this.system.systemId) as boolean;\r\n }\r\n\r\n get hasEditPermissions() {\r\n return this.terminologyService.hasEditPermissions as boolean;\r\n }\r\n\r\n get showCollectionLanguages() {\r\n return !this.config.termConfig.filterCollectionsByLanguageDirection;\r\n }\r\n\r\n private readonly destroy = new Subject();\r\n\r\n constructor(\r\n private readonly terminologyService: TerminologyService,\r\n private readonly config: TerminologyConfigService\r\n ) {\r\n this.appName = this.config.termConfig.appName as string;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.terminologyService.getCollections().pipe(takeUntil(this.destroy)).subscribe((data) => {\r\n const collections: CombinedCollection[] = [];\r\n\r\n if (data[this.system.systemId]?.collections) {\r\n const srcKey = `\"id\":\"${this.system.sourceLanguageCode}\"`;\r\n const trgKey = `\"id\":\"${this.system.targetLanguageCode}\"`;\r\n\r\n data[this.system.systemId]?.collections.forEach((collection) => {\r\n if (JSON.stringify(collection.termCollection?.languages ?? []).includes(srcKey && trgKey) || !collection.isTermPortalCollection || collection?.mtCollection) {\r\n collections.push(collection);\r\n }\r\n })\r\n\r\n this.collections = collections.sort(this.collectionsSortFunction);\r\n }\r\n });\r\n }\r\n\r\n selectGlossary(collection: CombinedCollection | null): void {\r\n this.glossarySelectEvent.emit(collection as CombinedCollection);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy.next(null);\r\n this.destroy.complete();\r\n }\r\n\r\n private collectionsSortFunction = (a: CombinedCollection, b: CombinedCollection) => {\r\n const aName = a.name ?? \"\";\r\n const bName = b.name ?? \"\";\r\n\r\n return Number(a.default) - Number(b.default) || aName.localeCompare(bName);\r\n };\r\n}\r\n","<h1 mat-dialog-title>{{ \"TERM_COLLECTIONS.CREATE_DIALOG.TITLE\" | translate }}</h1>\r\n<tld-close-button class=\"close-button\" mat-dialog-close> </tld-close-button>\r\n<div mat-dialog-content>\r\n <p class=\"main-description\" [innerHtml]=\"'TERM_COLLECTIONS.CREATE_DIALOG.DESCRIPTION_1' | translate : { appName, termPortalName }\"></p>\r\n <p class=\"text-s\" [innerHtml]=\"'TERM_COLLECTIONS.CREATE_DIALOG.DESCRIPTION_2' | translate\"></p>\r\n <form [formGroup]=\"form\">\r\n <mat-form-field appearance=\"outline\" class=\"collection-name-form-field\">\r\n <mat-label>{{ \"TERM_COLLECTIONS.CREATE_DIALOG.COLLECTION_NAME_LABEL\" | translate }} </mat-label>\r\n <input matInput formControlName=\"collectionName\" (keyup.enter)=\"create()\" />\r\n <mat-error *ngIf=\"form.controls['collectionName'].errors\">{{ \"TERM_COLLECTIONS.CREATE_DIALOG.COLLECTION_NAME_ERROR\" | translate : { minLength: minLength, maxLength: maxLength } }}</mat-error>\r\n </mat-form-field>\r\n</form>\r\n</div>\r\n<mat-dialog-actions fxLayout=\"row\" fxLayoutAlign=\"end center\" class=\"glossary-create-actions\">\r\n <button mat-stroked-button mat-dialog-close color=\"accent\">{{ \"TERM_COLLECTIONS.CREATE_DIALOG.CANCEL\" | translate }}</button>\r\n <button mat-flat-button (click)=\"create()\" cdkFocusInitial color=\"accent\" [disabled]=\"form.invalid\">{{ \"TERM_COLLECTIONS.CREATE_DIALOG.CREATE\" | translate }}</button>\r\n</mat-dialog-actions>\r\n","import { Component, Inject, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from \"@angular/material/dialog\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { TerminologyConfigService } from \"../../../../config/services\";\r\n\r\n@Component({\r\n selector: \"lib-terminology-create-collection-dialog\",\r\n templateUrl: \"./terminology-create-collection-dialog.component.html\",\r\n styleUrls: [\"./terminology-create-collection-dialog.component.scss\"],\r\n standalone: false\r\n})\r\nexport class TerminologyCreateCollectionDialogComponent implements OnInit, OnDestroy {\r\n form!: FormGroup;\r\n\r\n collectionName!: string;\r\n minLength!: number;\r\n maxLength!: number;\r\n termPortalName!: string;\r\n appName!: string;\r\n\r\n appNameKey = \"APP_NAME\";\r\n termPortalKey = \"TERM_PORTAL_NAME\";\r\n\r\n private subscription!: Subscription;\r\n\r\n constructor(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private readonly dialogRef: MatDialogRef<any>,\r\n private readonly config: TerminologyConfigService,\r\n private readonly translateService: TranslateService,\r\n private readonly fb: FormBuilder,\r\n @Inject(MAT_DIALOG_DATA) public data: { collectionName: string }\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.form = this.fb.group({\r\n collectionName: [this.data.collectionName, [Validators.minLength(this.minLength), Validators.maxLength(this.maxLength), Validators.required]],\r\n });\r\n\r\n if (this.config.termConfig.collectionNameMinLength && this.config.termConfig.collectionNameMaxLength) {\r\n this.minLength = this.config.termConfig.collectionNameMinLength;\r\n this.maxLength = this.config.termConfig.collectionNameMaxLength;\r\n }\r\n\r\n this.subscription = this.translateService.stream([this.appNameKey, this.termPortalKey]).subscribe((translations) => {\r\n this.appName = translations[this.appNameKey];\r\n if (this.config.termConfig) {\r\n this.termPortalName = translations[this.termPortalKey];\r\n }\r\n });\r\n }\r\n\r\n create(): void {\r\n if (this.form.valid) {\r\n this.dialogRef.close(this.form.value.collectionName);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","<button *ngIf=\"canCreateCollections\" mat-flat-button color=\"accent\" (click)=\"create()\" class=\"term-create-btn\">\r\n {{ \"TERM_COLLECTIONS.CREATE\" | translate }}\r\n</button>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { TerminologyService } from '../../../services';\r\nimport { TerminologyCreateCollectionDialogComponent } from './terminology-create-collection-dialog/terminology-create-collection-dialog.component';\r\nimport { CombinedCollection } from '../../../models';\r\n\r\n@Component({\r\n selector: 'lib-terminology-create-collection',\r\n templateUrl: './terminology-create-collection.component.html',\r\n styleUrls: ['./terminology-create-collection.component.scss'],\r\n standalone: false\r\n})\r\nexport class TerminologyCreateCollectionComponent {\r\n @Input() sourceLanguageCode!: string;\r\n @Input() targetLanguageCode!: string;\r\n\r\n @Output() collectionCreated: EventEmitter<CombinedCollection> = new EventEmitter<CombinedCollection>();\r\n\r\n private readonly createCollectionErrorCode = \"COLLECTION_CREATE\";\r\n\r\n get canCreateCollections() { return this.terminologyService.canCreateCollections; }\r\n\r\n constructor(\r\n private readonly translate: TranslateService,\r\n private readonly dialog: MatDialog,\r\n private readonly terminologyService: TerminologyService\r\n ) { }\r\n\r\n create(): void {\r\n const localizationKey = \"TERM_COLLECTIONS.DEFAULT_COLLECTION_NAME\";\r\n this.translate.get(localizationKey).subscribe((collectionName) => {\r\n const dialogRef = this.dialog.open(TerminologyCreateCollectionDialogComponent, {\r\n minWidth: '300px',\r\n maxWidth: '700px',\r\n data: { collectionName: collectionName }\r\n });\r\n dialogRef.afterClosed().subscribe(collectionName => {\r\n if (!collectionName) {\r\n return;\r\n }\r\n \r\n this.terminologyService.create(this.sourceLanguageCode, this.targetLanguageCode, collectionName, '').subscribe({\r\n next: (collection) => {\r\n this.collectionCreated.emit(collection);\r\n },\r\n error: (err) => {\r\n console.error(err);\r\n const error = { ErrorCode: this.createCollectionErrorCode };\r\n throw error;\r\n }\r\n });\r\n });\r\n });\r\n }\r\n}\r\n","<section class=\"tld-collection-list-wrapper\">\r\n <ng-container *ngIf=\"showGlossaryList; else emptyView\">\r\n <lib-terminology-collection-list (glossarySelectEvent)=\"selectGlossary($event)\" [system]=\"system\" [selectedCollection]=\"selectedCollection\"></lib-terminology-collection-list>\r\n\r\n <footer *ngIf=\"hasEditPermissions\" class=\"tld-collection-list-footer\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"1rem\">\r\n <lib-terminology-create-collection [sourceLanguageCode]=\"sourceLanguageCode\" [targetLanguageCode]=\"targetLanguageCode\"></lib-terminology-create-collection>\r\n \r\n <a *ngIf=\"defaultGlossaryManagementLink\" [attr.href]=\"defaultGlossaryManagementLink\" class=\"default-glossary-management text-m\" target=\"_blank\">\r\n {{ \"TERM_COLLECTIONS.DEFAULT_GLOSSARY_MANAGEMENT\" | translate }}\r\n </a>\r\n </footer>\r\n </ng-container>\r\n <ng-template #emptyView>\r\n <section class=\"term-reader-wrapper\" fxLayout=\"column\" fxLayoutGap=\"16px\">\r\n <div>\r\n <h1 class=\"text-l-semi-bold\">{{ readerLocalizationKey + \"TITLE\" | translate }}</h1>\r\n <p class=\"text-xl-semi-bold glossary-unavailable\">{{ readerLocalizationKey + \"UNAVAILABLE\" | translate }}</p>\r\n <p *ngIf=\"!isAuthenticated; else authEmptyView\" [innerHtml]=\"readerLocalizationKey + 'TEXT' | translate: { signInUrl: signInUrl, startTrialUrl: startTrialUrl }\"></p>\r\n\r\n <ng-template #authEmptyView>\r\n <p>{{ readerLocalizationKey + \"AUTH_UNAVAILABLE\" | translate }}</p>\r\n </ng-template>\r\n </div>\r\n </section>\r\n </ng-template>\r\n</section>\r\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from \"@angular/core\";\r\nimport { TerminologyService } from \"../../services\";\r\nimport { TerminologyConfigService } from \"../../config/services\";\r\nimport { CombinedCollection } from \"../../models\";\r\n\r\n@Component({\r\n selector: \"lib-terminology-panel\",\r\n templateUrl: \"./terminology-panel.component.html\",\r\n styleUrls: [\"./terminology-panel.component.scss\"],\r\n standalone: false\r\n})\r\nexport class TerminologyPanelComponent implements OnInit, OnChanges {\r\n @Input({ required: true }) system!: { systemId: string, sourceLanguageCode: string, targetLanguageCode: string };\r\n @Input({ required: true }) setSelectedFromLocalStorage!: boolean;\r\n @Input() selectedCollection!: CombinedCollection | null;\r\n @Output() glossarySelectEvent = new EventEmitter<CombinedCollection | null>();\r\n \r\n get isAuthenticated() { return this.terminologyService.isAuthenticated }\r\n get hasAnyCollections() { return this.terminologyService.hasAnyCollections(this.system.systemId) }\r\n get hasEditPermissions(){ return this.terminologyService.hasEditPermissions }\r\n get canCreateCollections() { return this.terminologyService.canCreateCollections }\r\n get showGlossaryMenuAdvertisement() { return this.config.termConfig.showGlossaryMenuAdvertisement }\r\n get signInUrl() { return this.config.termConfig.signInUrl }\r\n get startTrialUrl() { return this.config.termConfig.startTrialUrl }\r\n \r\n get showGlossaryList() {\r\n return (this.hasAnyCollections || this.canCreateCollections) && (this.showGlossaryMenuAdvertisement && this.hasAnyCollections || !this.showGlossaryMenuAdvertisement)\r\n }\r\n\r\n sourceLanguageCode!: string;\r\n targetLanguageCode!: string;\r\n\r\n defaultGlossaryManagementLink!: string;\r\n\r\n readonly readerLocalizationKey = \"TERM_COLLECTIONS.READER.\";\r\n\r\n constructor(private readonly terminologyService: TerminologyService, private readonly config: TerminologyConfigService) {}\r\n\r\n private systemId!: string;\r\n\r\n ngOnInit(): void {\r\n this.systemId = this.system.systemId;\r\n this.initializeData(this.system.sourceLanguageCode, this.system.targetLanguageCode, this.system.systemId, this.setSelectedFromLocalStorage);\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes && this.systemId !== this.system.systemId) {\r\n this.systemId = this.system.systemId;\r\n this.initializeData(this.system.sourceLanguageCode, this.system.targetLanguageCode, this.system.systemId, this.setSelectedFromLocalStorage);\r\n }\r\n }\r\n\r\n selectGlossary(collection: CombinedCollection | null): void {\r\n this.glossarySelectEvent.emit(collection);\r\n }\r\n\r\n private initializeData(srcLang: string, trgLang: string, systemId: string, setSelectedFromLocalStorage: boolean): void {\r\n this.sourceLanguageCode = srcLang;\r\n this.targetLanguageCode = trgLang;\r\n \r\n this.terminologyService.setEngine(systemId, [this.sourceLanguageCode, this.targetLanguageCode], setSelectedFromLocalStorage);\r\n \r\n if (this.config.termConfig.defaultGlossaryManagementLink) {\r\n this.defaultGlossaryManagementLink = this.config.termConfig.defaultGlossaryManagementLink(systemId);\r\n }\r\n }\r\n}\r\n","export const COLLECTIONS_MENU = `\r\n<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\r\n\t viewBox=\"0 0 15.9 20.3\" style=\"enable-background:new 0 0 15.9 20.3;\" xml:space=\"preserve\">\r\n<g id=\"Layer_1_00000122707316528403919840000013038058684751510177_\">\r\n</g>\r\n<g id=\"Layer_2_00000016758538246796687430000000356337115434427298_\">\r\n\t<polygon class=\"st0\" points=\"6.4,5.1 7.6,5.1 7,2.9 \t\"/>\r\n\t<path class=\"st0\" d=\"M15.7,0H3C1.3,0,0,1.3,0,2.9v12.2c0.6-0.5,1.4-0.9,2.3-0.9h13.6v-14C15.9,0.1,15.8,0,15.7,0z M9.1,7.2\r\n\t\tC8.9,7.3,8.8,7.3,8.6,7.3S8.2,7.2,8.2,7.1l-0.3-1H6.2l-0.3,1c0,0.2-0.2,0.2-0.4,0.2c-0.2,0-0.4-0.1-0.6-0.2c-0.2,0-0.3-0.2-0.2-0.4\r\n\t\tl1.5-5C6.3,1.3,6.8,1.3,7,1.3s0.7,0,0.8,0.4l1.5,5C9.4,6.9,9.3,7.1,9.1,7.2z M13.2,13.1h-2.9c-0.6,0-0.9-0.6-0.6-1.1l2.1-3.3h-1.5\r\n\t\tC10,8.7,9.7,8.4,9.7,8c0-0.4,0.3-0.7,0.7-0.7h2.8c0.5,0,0.9,0.6,0.6,1.1l-2.1,3.3h1.6c0.4,0,0.7,0.3,0.7,0.7\r\n\t\tC13.9,12.8,13.6,13.1,13.2,13.1z\"/>\r\n</g>\r\n<path class=\"st0\" d=\"M2.3,15.4c-0.4,0-0.8,0.1-1.1,0.4c-0.7,0.4-1.2,1.1-1.2,2c0,1.1,0.8,2.1,1.9,2.2C2,20,2,20,2.1,20\r\n\tc0.1,0,0.1,0,0.2,0c0,0,0,0,0,0c0,0,0,0,0,0h13.4c0.1,0,0.2-0.1,0.2-0.2v-4.4H2.3z\"/>\r\n</svg>\r\n`;\r\n","<div *ngIf=\"!hideGlossaryMenuWithoutCollections || (hideGlossaryMenuWithoutCollections && hasAnyCollections)\" class=\"glossary-menu\" fxLayoutAlign=\"center center\" [ngClass.lt-sm]=\"'tld-term-collection-wrapper-mobile'\" fxLayoutGap=\"8px\">\r\n <span class=\"glossary-label\" fxHide.lt-md>\r\n {{ \"TERM_COLLECTIONS.GLOSSARY\" | translate }}\r\n </span>\r\n\r\n <lib-open-close-button\r\n *ngIf=\"!showMenuIconOnMobile; else defaultLayout\"\r\n class=\"tld-collection-menu-button\"\r\n #state=\"matMenuTrigger\"\r\n [isOpened]=\"state.menuOpen\"\r\n (menuOpened)=\"openMenu()\"\r\n (menuClosed)=\"closeMenu()\"\r\n [matMenuTriggerFor]=\"menu\"\r\n [attr.aria-label]=\"'TERM_COLLECTIONS.ARIA_LABELS.OTHER_COLLECTIONS' | translate\"\r\n [matTooltip]=\"selected?.mtCollection?.name ?? selected?.termCollection?.name ?? ''\"\r\n [disabled]=\"disabled\"\r\n >\r\n <span class=\"selected-collection\">\r\n {{ selected?.mtCollection?.name ?? selected?.termCollection?.name ?? (\"TERM_COLLECTIONS.SELECTED_NONE\" | translate) }}\r\n </span>\r\n <mat-spinner *ngIf=\"selected?.isImporting\" class=\"selected-col-spinner\" color=\"accent\" diameter=\"16\"></mat-spinner>\r\n </lib-open-close-button>\r\n\r\n <ng-template #defaultLayout>\r\n <lib-open-close-button\r\n fxHide.lt-sm\r\n class=\"tld-collection-menu-button\"\r\n #state=\"matMenuTrigger\"\r\n [isOpened]=\"state.menuOpen\"\r\n (menuOpened)=\"openMenu()\"\r\n (menuClosed)=\"closeMenu()\"\r\n [matMenuTriggerFor]=\"menu\"\r\n [attr.aria-label]=\"'TERM_COLLECTIONS.ARIA_LABELS.OTHER_COLLECTIONS' | translate\"\r\n [matTooltip]=\"selected?.mtCollection?.name ?? selected?.termCollection?.name ?? ''\"\r\n [disabled]=\"disabled\"\r\n >\r\n <span class=\"selected-collection\">\r\n {{ selected?.mtCollection?.name ?? selected?.termCollection?.name ?? (\"TERM_COLLECTIONS.SELECTED_NONE\" | translate) }}\r\n </span>\r\n <mat-spinner *ngIf=\"selected?.isImporting\" class=\"selected-col-spinner\" color=\"accent\" diameter=\"16\"></mat-spinner>\r\n </lib-open-close-button>\r\n\r\n <button (menuOpened)=\"openMenu()\" (menuClosed)=\"closeMenu()\" mat-icon-button fxHide.gt-xs #state=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\">\r\n <mat-icon svgIcon=\"collections_menu\" [attr.color]=\"selected ? 'accent' : ''\"></mat-icon>\r\n </button>\r\n </ng-template>\r\n</div>\r\n\r\n<mat-menu #menu=\"matMenu\" class=\"tld-collection-menu\">\r\n <tld-close-button fxHide.gt-xs></tld-close-button>\r\n <div class=\"tld-term-collection\" (click)=\"$event.stopPropagation()\" (keydown)=\"$event.stopPropagation()\">\r\n <lib-terminology-panel (glossarySelectEvent)=\"selectGlossary($event)\" [system]=\"system\" [selectedCollection]=\"selected\" [setSelectedFromLocalStorage]=\"setSelectedFromLocalStorage\"></lib-terminology-panel>\r\n </div>\r\n</mat-menu>\r\n","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { TerminologyService } from './services';\r\nimport { Subject, Subscription, takeUntil } from 'rxjs';\r\nimport { CombinedCollection } from './models';\r\nimport { IconService } from '../services';\r\nimport * as icons from './icons';\r\nimport { TerminologyConfigService } from './config/services';\r\n\r\n@Component({\r\n selector: 'lib-terminology',\r\n templateUrl: './terminology.component.html',\r\n styleUrls: ['./terminology.component.scss'],\r\n standalone: false\r\n})\r\nexport class TerminologyComponent implements OnInit, OnDestroy, OnChanges {\r\n @Input() selectedCollectionId!: string;\r\n @Input({ required: true }) system!: { systemId: string; sourceLanguageCode: string; targetLanguageCode: string };\r\n @Input() disabled!: boolean;\r\n @Input() storeSelectedInLocalStorage = true;\r\n @Input() setSelectedFromLocalStorage = true;\r\n @Input() showMenuIconOnMobile = true;\r\n @Output() glossarySelectEvent = new EventEmitter<CombinedCollection | null>();\r\n @Output() menuToggleEvent = new EventEmitter<boolean>();\r\n\r\n private isRefreshEnabled = false;\r\n private isMenuOpened = false;\r\n\r\n private presetCollectionSubscription!: Subscription;\r\n private readonly destroy = new Subject();\r\n\r\n selected: CombinedCollection | null = null;\r\n\r\n get hideGlossaryMenuWithoutCollections() {\r\n return this.config.termConfig.hideGlossaryMenuWithoutCollections;\r\n }\r\n\r\n get hasAnyCollections() {\r\n return this.terminologyService.hasAnyCollections(this.system.systemId);\r\n }\r\n\r\n constructor(private readonly config: TerminologyConfigService, private readonly terminologyService: TerminologyService, private readonly iconService: IconService) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes) {\r\n this.selected = this.terminologyService.engines[this.system.systemId]?.selected;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.iconService.registerIcons(icons);\r\n\r\n if (this.selectedCollectionId) {\r\n this.presetCollection();\r\n }\r\n\r\n this.watchSystemChanges();\r\n }\r\n\r\n selectGlossary(collection: CombinedCollection | null): void {\r\n this.selected = collection;\r\n\r\n if (!collection?.mtCollection && collection !== null) {\r\n if (this.terminologyService.addToEngineValidation(collection)) {\r\n this.terminologyService.updateIfNecessary(collection, this.system.systemId, true).subscribe({ \r\n next: (res) => {\r\n this.glossarySelectEvent.emit(res);\r\n },\r\n error: (error) => {\r\n this.terminologyService.handleAddToEngineError(error, this.system.systemId)\r\n }\r\n });\r\n }\r\n } else {\r\n this.glossarySelectEvent.emit(collection);\r\n }\r\n \r\n this.terminologyService.setSelectedCollection(this.system.systemId, collection, this.storeSelectedInLocalStorage);\r\n }\r\n\r\n openMenu(): void {\r\n this.menuToggleEvent.emit(true);\r\n\r\n this.isRefreshEnabled = true;\r\n this.isMenuOpened = true;\r\n\r\n this.terminologyService\r\n .startAutoRefresh(this.system.systemId)\r\n .subscribe(() => {\r\n const isBackgroundImportCompleted = \r\n this.isRefreshEnabled && !this.isMenuOpened && !this.selected?.isImporting;\r\n\r\n if ((!this.isRefreshEnabled && !this.selected?.isImporting) || isBackgroundImportCompleted) {\r\n this.stopRefresh();\r\n }\r\n },\r\n );\r\n }\r\n\r\n closeMenu(): void {\r\n this.menuToggleEvent.emit(false);\r\n\r\n this.isMenuOpened = false;\r\n\r\n if (this.selected?.isImporting) {\r\n this.isRefreshEnabled = true;\r\n return;\r\n }\r\n\r\n this.stopRefresh();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.terminologyService.resetEngines(); \r\n this.stopRefresh();\r\n this.destroy.next(null);\r\n this.destroy.complete();\r\n }\r\n\r\n private stopRefresh(): void {\r\n this.terminologyService.stopAutoRefresh(this.system.systemId);\r\n this.isRefreshEnabled = false;\r\n }\r\n\r\n private presetCollection(): void {\r\n this.presetCollectionSubscription = this.terminologyService.getCollections().subscribe((res) => {\r\n res[this.system.systemId]?.collections.forEach((collection) => {\r\n if (collection.mtCollection?.id === this.selectedCollectionId || collection.termId === this.selectedCollectionId) {\r\n this.selected = collection;\r\n\r\n this.terminologyService.setSelectedCollection(this.system.systemId, collection, false);\r\n this.presetCollectionSubscription?.unsubscribe();\r\n }\r\n });\r\n })\r\n }\r\n\r\n private watchSystemChanges(): void {\r\n this.terminologyService.getEnginesWithSelectedCollectionChange()\r\n .pipe(takeUntil(this.destroy))\r\n .subscribe((res) => {\r\n if (res[this.system.systemId]) {\r\n this.selected = res[this.system.systemId].selected;\r\n } \r\n })\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n provideHttpClient,\r\n withInterceptorsFromDi,\r\n} from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\n\r\nimport { CloseButtonModule } from '../close-button';\r\nimport { OpenCloseButtonModule } from '../open-close-button';\r\n\r\nimport { DateAgoModule, LanguageTranslateModule } from '../pipes';\r\n\r\nimport { TerminologyCollectionCardComponent } from './components/terminology-panel/terminology-collection-list/terminology-collection-card/terminology-collection-card.component';\r\nimport { TerminologyCollectionListComponent } from './components/terminology-panel/terminology-collection-list/terminology-collection-list.component';\r\nimport { TerminologyCreateCollectionDialogComponent } from './components/terminology-panel/terminology-create-collection/terminology-create-collection-dialog/terminology-create-collection-dialog.component';\r\nimport { TerminologyCreateCollectionComponent } from './components/terminology-panel/terminology-create-collection/terminology-create-collection.component';\r\nimport { TerminologyPanelComponent } from './components/terminology-panel/terminology-panel.component';\r\nimport { TerminologyComponent } from './terminology.component';\r\n\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n@NgModule({\r\n declarations: [\r\n TerminologyComponent,\r\n TerminologyPanelComponent,\r\n TerminologyCreateCollectionComponent,\r\n TerminologyCreateCollectionDialogComponent,\r\n TerminologyCollectionListComponent,\r\n TerminologyCollectionCardComponent,\r\n ],\r\n exports: [TerminologyComponent, TerminologyCreateCollectionComponent],\r\n imports: [\r\n CommonModule,\r\n OpenCloseButtonModule,\r\n TranslateModule,\r\n FlexLayoutModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n CloseButtonModule,\r\n DateAgoModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n MatMenuModule,\r\n MatRadioModule,\r\n MatDialogModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n LanguageTranslateModule,\r\n ],\r\n providers: [provideHttpClient(withInterceptorsFromDi())],\r\n})\r\nexport class TerminologyModule {}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Voice } from '../models/voice.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TTSApiService {\r\n readonly #http = inject(HttpClient);\r\n\r\n play(text: string, voice: Voice): Observable<Blob> {\r\n return this.#http.get(\r\n `https://services.tilde.com/service/tts?system=${voice.voice}&text=${text}`,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n}\r\n","<div [ngClass.lt-md]=\"'mobile'\" class=\"text-to-speech-wrapper\">\r\n <mat-form-field appearance=\"outline\" color=\"accent\">\r\n <mat-label>{{\"selectVoice\" | translate }}</mat-label>\r\n <mat-select [(value)]=\"selected\">\r\n <mat-option *ngFor=\"let voice of voices; let i = index\" [value]=\"voice\">\r\n {{voice.voiceName}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <div class=\"text-to-speech-textarea-wrapper\">\r\n <textarea [(ngModel)]=\"text\" class=\"text-to-speech-textarea\" [placeholder]=\"'placeholder' | translate\"></textarea>\r\n <div [class.text-overflow]=\"hasOverflow\" class=\"text-to-speech-characters\">\r\n {{text?.length ?? 0}}/{{maxCharLength}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-to-speech-actions\">\r\n <div [matTooltip]=\"!text ? ('playDisabled' | translate) : ''\">\r\n <button [matTooltip]=\"(isPlaying ? 'stop' : 'play') | translate\" [disabled]=\"!text || isLoading\" (click)=\"togglePlay()\" mat-icon-button>\r\n <mat-icon *ngIf=\"!isLoading\"> {{ isPlaying ? 'stop' : 'volume_up' }} </mat-icon>\r\n <mat-spinner *ngIf=\"isLoading\" [diameter]=\"15\"></mat-spinner>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, inject, Input, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatIconButton } from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { TTSApiService } from './services/tts-api.service';\r\nimport { finalize } from 'rxjs';\r\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { Voice } from './models/voice.model';\r\n\r\n@Component({\r\n selector: 'lib-text-to-speech',\r\n imports: [\r\n CommonModule,\r\n MatIconButton,\r\n MatIcon,\r\n FormsModule,\r\n MatProgressSpinner,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n FlexLayoutModule,\r\n TranslateModule\r\n ],\r\n templateUrl: './text-to-speech.component.html',\r\n styleUrl: './text-to-speech.component.scss'\r\n})\r\nexport class TextToSpeechComponent implements OnInit {\r\n @Input() maxCharLength: number = 1000;\r\n @Input() voices!: Voice[];\r\n\r\n text!: string;\r\n previousText!: string;\r\n previousVoice!: string;\r\n audio!: HTMLAudioElement;\r\n isLoading!: boolean;\r\n isPlaying!: boolean;\r\n \r\n selected!: Voice;\r\n\r\n get hasOverflow() {\r\n const textarea = document.querySelector('textarea') as HTMLTextAreaElement;\r\n return textarea?.clientHeight < textarea?.scrollHeight ? true : false\r\n }\r\n\r\n readonly #TTSApiService = inject(TTSApiService);\r\n\r\n ngOnInit(): void {\r\n this.selected = this.voices[0];\r\n }\r\n\r\n togglePlay(): void {\r\n if (this.isPlaying) {\r\n this.stop();\r\n return;\r\n }\r\n\r\n this.isLoading = true;\r\n\r\n const text = this.text.length > this.maxCharLength ? this.text.substring(0, this.maxCharLength) : this.text;\r\n\r\n if ((this.audio && text === this.previousText) && (this.selected.voice === this.previousVoice)) {\r\n this.audio.play();\r\n this.isPlaying = true;\r\n this.isLoading = false;\r\n return;\r\n }\r\n\r\n this.#TTSApiService\r\n .play(text, this.selected)\r\n .pipe(finalize(() => { this.isLoading = false }))\r\n .subscribe({\r\n next: (res) => {\r\n this.previousText = text;\r\n this.previousVoice = this.selected.voice;\r\n const audioUrl = URL.createObjectURL(res);\r\n this.audio = new Audio(audioUrl);\r\n this.audio.play();\r\n\r\n this.isPlaying = true;\r\n\r\n this.audio.onended = () => {\r\n URL.revokeObjectURL(audioUrl);\r\n this.isPlaying = false;\r\n };\r\n },\r\n });\r\n }\r\n\r\n stop(): void {\r\n if (this.audio) {\r\n this.audio.pause();\r\n this.audio.currentTime = 0;\r\n this.isPlaying = false;\r\n }\r\n }\r\n}\r\n","export enum LLMActions {\r\n SUMMARY = 'SUMMARY',\r\n REPHRASE = 'REPHRASE'\r\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport { DOMService } from \"../../services\";\r\n\r\nexport class PlausibleHelper {\r\n /**\r\n * Adds plausible for selected domain and adds additional script for custom event (goal) triggering\r\n * @param domain domain that is registered in your plausible account\r\n * @returns\r\n */\r\n static addPlausible(domain: string) {\r\n const domService = new DOMService();\r\n const windowObj: any = domService.window;\r\n if (!windowObj || !domain) {\r\n return;\r\n }\r\n\r\n const plausibleSrc = \"https://plausible.io/js/plausible.js\";\r\n const script = document.createElement(\"script\");\r\n script.src = plausibleSrc;\r\n script.setAttribute(\"data-domain\", domain);\r\n document.head.append(script);\r\n\r\n // Add plausible custom event functionality https://plausible.io/docs/custom-event-goals#code-example-for-tracking-link-clicks\r\n windowObj.plausible = windowObj.plausible || ((...params: any) => { (windowObj.plausible.q = windowObj.plausible.q || []).push(params) })\r\n }\r\n\r\n /**\r\n * Emits custom plausible event\r\n * @param id plausible event id that should be the same as registered in plausible\r\n * @param properties an object with custom properties for the event\r\n * @returns\r\n */\r\n static customEvent(id: string, properties?: any) {\r\n const windowObj: any = window;\r\n if (!windowObj?.plausible) {\r\n return;\r\n }\r\n windowObj.plausible(id, { props: properties });\r\n }\r\n}\r\n","import { Directive, HostListener, Input } from '@angular/core';\r\nimport { PlausibleEvent } from './models';\r\nimport { PlausibleHelper } from './plausible.helper';\r\n\r\n@Directive({\r\n selector: '[libPlausibleEvent]',\r\n standalone: false\r\n})\r\nexport class PlausibleEventDirective {\r\n private id = \"\";\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private properties: any = null;\r\n /** Plausible event id. */\r\n @Input() set libPlausibleEvent(value: PlausibleEvent | undefined) {\r\n if (!value) {\r\n return;\r\n }\r\n this.id = value.eventId;\r\n\r\n if (value.properties) {\r\n this.properties = {}\r\n value.properties.forEach(item => this.properties[item.key] = item.value);\r\n }\r\n\r\n }\r\n\r\n @HostListener(\"click\") onClick() {\r\n if (this.id.length) {\r\n PlausibleHelper.customEvent(this.id, this.properties);\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PlausibleEventDirective } from './plausible-event.directive';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n PlausibleEventDirective\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n PlausibleEventDirective\r\n ]\r\n})\r\nexport class PlausibleModule { }\r\n","export enum LLMWritingStyle {\r\n GENERAL = 'General',\r\n PROFESSIONAL = 'Professional',\r\n ACADEMIC = 'Academic'\r\n}","import { InjectionToken } from \"@angular/core\";\r\nimport { LLMConfiguration } from \"./llm-configuration.model\";\r\n\r\nexport const LLM_CONFIGURATION_TOKEN = new InjectionToken<LLMConfiguration>('LLM_CONFIGURATION_TOKEN');\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { QuotaService, QuotaType } from '@tilde-nlp/ngx-services';\r\nimport { catchError, map, Observable, of } from 'rxjs';\r\nimport { NotificationMessageType } from '../../notification-message/enums/notification-message-type.enum';\r\nimport { NotificationMessage } from '../../notification-message/interfaces/notification-message.model';\r\nimport { LLM_CONFIGURATION_TOKEN } from '../models';\r\nimport { LLMActions } from '../models/llm-actions.enum';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LLMHelperService {\r\n readonly llmConfiguration = inject(LLM_CONFIGURATION_TOKEN);\r\n readonly trialRequestCount = 15;\r\n\r\n private readonly LLMQuotaLocalStorageKey = 'LLM_QUOTA';\r\n\r\n constructor(private readonly quotaService: QuotaService) {\r\n }\r\n\r\n /**\r\n * Returns remaining quota from API. If quota is missing, daily limit is being used from local storage.\r\n */\r\n getRemainingQuota(decrease?: boolean): Observable<number> {\r\n if (this.llmConfiguration.useLocalQuota) {\r\n return of(this.setQuotaLocalStorageUsage(decrease));\r\n }\r\n\r\n return this.quotaService.getQuotaUsage().pipe(\r\n map((response) => {\r\n const quota = response.usage.find((item) => item.quotaType === QuotaType.LLM_REQUESTS || item.quotaType === QuotaType.LEGACY_LLM_REQUESTS);\r\n\r\n if (!quota) {\r\n return this.setQuotaLocalStorageUsage(decrease);\r\n }\r\n\r\n return quota.quotaRemaining;\r\n }), catchError(() => {\r\n return of(this.setQuotaLocalStorageUsage(decrease))\r\n })\r\n )\r\n }\r\n\r\n getExceededLimitMessage(totalSymbols: number): NotificationMessage {\r\n return {\r\n type: NotificationMessageType.WARNING,\r\n body: 'ERRORS.MAX_CHAR_LENGTH',\r\n localizationParams: {\r\n maxCharLength: this.llmConfiguration.maxCharLength,\r\n totalSymbols: totalSymbols\r\n },\r\n };\r\n }\r\n\r\n getReachedQuotaMessage(): NotificationMessage {\r\n return {\r\n type: NotificationMessageType.ERROR,\r\n body: 'LLM.ERRORS.QUOTA_LIMIT_REACHED',\r\n localizationParams: {\r\n subscriptionUrl: this.llmConfiguration.subscriptionUrl,\r\n },\r\n };\r\n }\r\n\r\n getDefaultErrorMessage(): NotificationMessage {\r\n return {\r\n type: NotificationMessageType.ERROR,\r\n body: 'LLM.ERRORS.DEFAULT',\r\n localizationParams: {\r\n supportEmail: this.llmConfiguration.supportEmail\r\n }\r\n }\r\n }\r\n\r\n getRequestTimeoutMessage(action: LLMActions): NotificationMessage {\r\n return {\r\n type: NotificationMessageType.ERROR,\r\n body: `LLM.ERRORS.${action}_REQUEST_TIMEOUT`,\r\n localizationParams: {\r\n supportEmail: this.llmConfiguration.supportEmail\r\n }\r\n }\r\n }\r\n\r\n private setQuotaLocalStorageUsage(decrease?: boolean): number {\r\n const localStorageObj = localStorage.getItem(this.LLMQuotaLocalStorageKey);\r\n const currentDate = new Date();\r\n let trialQuota = {\r\n remainingQuota: this.trialRequestCount,\r\n lastUsedAt: currentDate\r\n };\r\n\r\n if (localStorageObj) {\r\n const parsedObj = JSON.parse(localStorageObj);\r\n trialQuota = parsedObj;\r\n\r\n const lastUsedDate = new Date(trialQuota.lastUsedAt);\r\n\r\n // Checking if the last used date is from a different day than today\r\n if (lastUsedDate.getDate() !== currentDate.getDate() || lastUsedDate.getMonth() !== currentDate.getMonth() || lastUsedDate.getFullYear() !== currentDate.getFullYear()) {\r\n // Reseting quota for the new day\r\n trialQuota.remainingQuota = this.trialRequestCount;\r\n }\r\n\r\n if (decrease) {\r\n trialQuota.remainingQuota -= 1;\r\n }\r\n }\r\n\r\n trialQuota.lastUsedAt = currentDate;\r\n\r\n localStorage.setItem(this.LLMQuotaLocalStorageKey, JSON.stringify(trialQuota));\r\n\r\n return trialQuota.remainingQuota;\r\n }\r\n}\r\n","import { Clipboard } from '@angular/cdk/clipboard';\r\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { debounceTime, fromEvent, Subject, takeUntil, tap } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-llm-textarea',\r\n templateUrl: './llm-textarea.component.html',\r\n styleUrls: ['./llm-textarea.component.scss'],\r\n standalone: false\r\n})\r\nexport class LLMTextareaComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit {\r\n @ViewChild('textarea') textarea!: ElementRef;\r\n @Input() text!: string;\r\n @Input() disabled!: boolean;\r\n @Input() actionButtonsDisabled!: boolean;\r\n @Output() textEditEvent = new EventEmitter();\r\n @Output() dislikeEvent = new EventEmitter();\r\n @Output() copyEvent = new EventEmitter();\r\n\r\n textareaControl!: FormControl;\r\n\r\n private readonly destroy = new Subject();\r\n\r\n constructor (private readonly clipboard: Clipboard) {}\r\n\r\n ngOnInit(): void {\r\n this.textareaControl = new FormControl(this.text);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n fromEvent<KeyboardEvent>(this.textarea.nativeElement, 'keyup').pipe(\r\n tap((event) => {\r\n if (event.ctrlKey && event.key === 'c') {\r\n this.copyEvent.emit();\r\n }\r\n }),\r\n debounceTime(300),\r\n takeUntil(this.destroy)\r\n ).subscribe(() => {\r\n this.textEditEvent.emit(this.textareaControl.value);\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes && changes['disabled']) {\r\n this.disabled ? this.textareaControl?.disable() : this.textareaControl?.enable();\r\n }\r\n\r\n if (changes && changes['text']) {\r\n this.textareaControl = new FormControl(this.text);\r\n }\r\n }\r\n\r\n dislike(): void {\r\n this.dislikeEvent.emit();\r\n }\r\n\r\n copy(): void {\r\n this.clipboard.copy(this.textareaControl.value);\r\n this.copyEvent.emit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy.next(null);\r\n this.destroy.complete();\r\n }\r\n}\r\n","<div [ngClass.gt-lg]=\"'desktop'\" class=\"llm-wrapper\">\r\n <div class=\"llm-textarea-wrapper\">\r\n <textarea\r\n #textarea\r\n class=\"llm-textarea\"\r\n [formControl]=\"textareaControl\"\r\n >\r\n </textarea>\r\n\r\n <div class=\"llm-textarea-actions\">\r\n <mat-icon [matTooltip]=\"'LLM.EU_DATA_TOOLTIP' | translate\" class=\"material-icons-outlined llm-eu-data-tooltip\"> gpp_maybe </mat-icon>\r\n\r\n <div>\r\n <button [matTooltip]=\"'TOOLTIPS.DISLIKE' | translate\" (click)=\"dislike()\" mat-icon-button [disabled]=\"actionButtonsDisabled || !textareaControl.value\">\r\n <mat-icon class=\"material-icons-outlined copy\"> thumb_down </mat-icon>\r\n </button>\r\n \r\n <button\r\n mat-icon-button\r\n [disabled]=\"actionButtonsDisabled || !textareaControl.value\"\r\n [matTooltip]=\"'TOOLTIPS.COPY' | translate\"\r\n (click)=\"copy()\"\r\n >\r\n <mat-icon class=\"material-icons-outlined dislike\"> content_copy </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","<h1 mat-dialog-title>{{ localizationKey + \"TITLE\" | translate }}</h1>\r\n<div mat-dialog-content>\r\n <p [innerHTML]=\"localizationKey + 'DESCRIPTION' | translate\"></p>\r\n\r\n <lib-tld-notification-message *ngFor=\"let message of messages\" [message]=\"message\" (closeClicked)=\"closeMessage(message)\"></lib-tld-notification-message>\r\n\r\n <mat-form-field *ngIf=\"showUseCase\" color=\"accent\" class=\"w-full llm-writing-style-select\" appearance=\"outline\">\r\n <mat-label>{{ 'LLM.USE_CASES_LABEL' | translate }}</mat-label>\r\n <mat-select [disabled]=\"isLoading\" [(ngModel)]=\"selectedUseCase\">\r\n @for (useCase of useCases; track $index) {\r\n\r\n <mat-option [value]=\"useCase\">\r\n {{ 'LLM.USE_CASE.' + (useCase | uppercase) | translate }}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n\r\n\r\n <lib-llm-textarea [class.rephrase]=\"llmActionType === llmActions.REPHRASE\" [text]=\"editedText !== '' ? editedText : initialText\" [disabled]=\"isLoading || !quotaLeft\" [actionButtonsDisabled]=\"!isEdited\" (textEditEvent)=\"textEditEvent($event)\" (copyEvent)=\"copyPlausibleEvent()\" (dislikeEvent)=\"dislikePlausibleEvent()\"></lib-llm-textarea>\r\n</div>\r\n<div class=\"llm-actions-wrapper\" mat-dialog-actions>\r\n <div *ngIf=\"remainingQuotaMessageVisible\" class=\"quota-left-message\" [innerHTML]=\"localizationKey + 'LIMIT' | translate: { limit: quotaLeft, subscriptionUrl: subscriptionUrl }\"></div>\r\n\r\n <div [class.w-full]=\"!remainingQuotaMessageVisible\" class=\"llm-actions\">\r\n <button *ngIf=\"isLoading; else closeButton\" mat-button color=\"accent\" (click)=\"cancel()\">\r\n {{ localizationKey + \"CANCEL\" | translate }}\r\n </button>\r\n\r\n <ng-template #closeButton>\r\n <button mat-button color=\"accent\" [mat-dialog-close]=\"null\">\r\n {{ localizationKey + \"CLOSE\" | translate }}\r\n </button>\r\n </ng-template>\r\n\r\n <button\r\n mat-flat-button\r\n color=\"accent\"\r\n (click)=\"getEditedText()\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <span *ngIf=\"llmActionType === llmActions.SUMMARY; else rephraseAction\">\r\n {{\r\n (!isSummarized\r\n ? \"LLM.SUMMARY_MODAL.ACTION\"\r\n : \"LLM.SUMMARY_MODAL.REGENERATE\"\r\n ) | translate\r\n }}\r\n </span>\r\n\r\n <ng-template #rephraseAction>\r\n {{ localizationKey + \"ACTION\" | translate }}\r\n </ng-template>\r\n <mat-spinner *ngIf=\"isLoading\" [diameter]=\"20\" color=\"primary-accent-darker\"></mat-spinner>\r\n </button>\r\n </div>\r\n</div>\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatSelectChange } from '@angular/material/select';\r\nimport { LLMRephraseUseCase, LLMService, LLMSummaryUseCase } from '@tilde-nlp/ngx-services';\r\nimport { Subscription, finalize } from 'rxjs';\r\nimport { ERROR_CODES } from '../../../constants';\r\nimport { NotificationMessage } from '../../../notification-message';\r\nimport { PlausibleHelper } from '../../../analytics/plausible';\r\nimport { LLMActions } from '../../models/llm-actions.enum';\r\nimport { LLMData } from '../../models/llm-data.model';\r\nimport { LLMWritingStyle } from '../../models/llm-writing-style.enum';\r\nimport { LLMHelperService } from '../../services/llm-helper.service';\r\n\r\n@Component({\r\n selector: 'lib-llm-textarea-with-actions',\r\n templateUrl: './llm-textarea-with-actions.component.html', \r\n styleUrls: ['./llm-textarea-with-actions.component.scss'],\r\n standalone: false\r\n})\r\nexport class LLMTextareaWithActionsComponent implements OnInit {\r\n isLoading!: boolean;\r\n isSummarized!: boolean;\r\n isEdited!: boolean;\r\n remainingQuotaMessageVisible!: boolean;\r\n quotaLeft!: number;\r\n maxCharLength!: number;\r\n subscriptionUrl!: string;\r\n previousWritingStyle!: LLMWritingStyle;\r\n selectedWritingStyle = LLMWritingStyle.GENERAL;\r\n\r\n reachedQuotaMessage!: NotificationMessage;\r\n exceededLimitMessage!: NotificationMessage;\r\n requestTimeoutMessage!: NotificationMessage;\r\n defaultErrorMessage!: NotificationMessage;\r\n\r\n subscription!: Subscription;\r\n\r\n initialText!: string;\r\n editedText = '';\r\n manuallyEditedText = '';\r\n\r\n localizationKey!: string;\r\n llmActionType!: LLMActions;\r\n selectedUseCase!: LLMSummaryUseCase | LLMRephraseUseCase;\r\n\r\n private savedRephrasings: { style: LLMWritingStyle, text: string }[] = [];\r\n\r\n readonly llmActions = LLMActions;\r\n readonly writingStyles = Object.values(LLMWritingStyle);\r\n useCases: LLMSummaryUseCase[] | LLMRephraseUseCase[] = [];\r\n\r\n readonly messages: NotificationMessage[] = [];\r\n\r\n showUseCase = false;\r\n\r\n get isDisabled() {\r\n return this.isLoading || !this.initialText || this.quotaLeft < 1;\r\n }\r\n\r\n constructor(\r\n private readonly llmService: LLMService,\r\n private readonly llmHelperService: LLMHelperService,\r\n @Inject(MAT_DIALOG_DATA) private readonly data: LLMData\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.setInitialText();\r\n if(this.llmActionType === LLMActions.REPHRASE) {\r\n this.useCases = this.data.rephraseUseCases ?? Object.values(LLMRephraseUseCase) as LLMRephraseUseCase[];\r\n this.selectedUseCase = this.useCases[0];\r\n }\r\n else if(this.llmActionType === LLMActions.SUMMARY) {\r\n this.useCases = this.data.summaryUseCases ?? Object.values(LLMSummaryUseCase) as LLMSummaryUseCase[];\r\n this.selectedUseCase = LLMSummaryUseCase.General;\r\n }\r\n\r\n this.showUseCase = (this.llmActionType=== LLMActions.REPHRASE && this.data.showUseCaseRephrase) || (this.llmActionType === LLMActions.SUMMARY && this.data.showUseCaseSummary);\r\n }\r\n\r\n closeMessage(msg: NotificationMessage): void {\r\n const index = this.messages?.findIndex((message) => JSON.stringify(message) === JSON.stringify(msg));\r\n\r\n if (index || index === 0) {\r\n this.messages.splice(index, 1);\r\n }\r\n }\r\n\r\n checkRephrasedTextSaves(event: MatSelectChange): void {\r\n if (event.value !== this.selectedWritingStyle) {\r\n this.previousWritingStyle = this.selectedWritingStyle;\r\n this.selectedWritingStyle = event.value;\r\n }\r\n\r\n const selectedWritingStyleSave = this.savedRephrasings.find((rephrasing) => rephrasing.style === this.selectedWritingStyle);\r\n const previousWritingStyleSave = this.savedRephrasings.find((save) => save.style === this.previousWritingStyle);\r\n\r\n if (previousWritingStyleSave) {\r\n previousWritingStyleSave.text = this.editedText !== '' ? this.editedText : this.initialText;\r\n } else {\r\n this.savedRephrasings.push({ style: this.previousWritingStyle, text: this.editedText !== '' ? this.editedText : this.initialText });\r\n }\r\n\r\n this.editedText = selectedWritingStyleSave?.text ?? this.initialText;\r\n this.manuallyEditedText = '';\r\n\r\n this.checkTextLimit();\r\n }\r\n\r\n getEditedText(): void {\r\n this.isLoading = true;\r\n\r\n if (this.llmActionType === LLMActions.REPHRASE) {\r\n this.writingStylePlausibleEvent();\r\n } else {\r\n this.summaryPlausibleEvent();\r\n }\r\n\r\n this.subscription = this.getRequest();\r\n }\r\n\r\n cancel(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n textEditEvent(text: string): void {\r\n this.manuallyEditedText = text;\r\n this.initialText = text;\r\n this.editedText = '';\r\n\r\n this.checkTextLimit();\r\n }\r\n\r\n copyPlausibleEvent(): void {\r\n PlausibleHelper.customEvent(this.llmActionType.toLowerCase(), { action: 'copy' });\r\n }\r\n\r\n dislikePlausibleEvent(): void {\r\n PlausibleHelper.customEvent(this.llmActionType.toLowerCase(), { action: 'dislike' });\r\n }\r\n\r\n private setInitialText() {\r\n this.data.text.subscribe((text) => {\r\n this.initialText = text;\r\n this.llmActionType = this.data.action;\r\n this.localizationKey = `LLM.${this.llmActionType}_MODAL.`\r\n this.subscriptionUrl = this.llmHelperService.llmConfiguration.subscriptionUrl;\r\n this.maxCharLength = this.llmHelperService.llmConfiguration.maxCharLength;\r\n\r\n this.refreshQuota();\r\n })\r\n }\r\n\r\n private checkTextLimit(): void {\r\n const limit = this.maxCharLength;\r\n const texts = [this.initialText, this.manuallyEditedText, this.editedText];\r\n const longestText = this.editedText && !this.manuallyEditedText ? this.editedText : texts.reduce((a, b) => a.length > b.length ? a : b);\r\n\r\n if (longestText.length > limit) {\r\n if (this.exceededLimitMessage) {\r\n this.closeMessage(this.exceededLimitMessage);\r\n }\r\n\r\n this.exceededLimitMessage = this.llmHelperService.getExceededLimitMessage(longestText.length);\r\n this.messages.push(this.exceededLimitMessage)\r\n return;\r\n }\r\n\r\n this.closeMessage(this.exceededLimitMessage);\r\n }\r\n\r\n private writingStylePlausibleEvent(): void {\r\n PlausibleHelper.customEvent(this.llmActionType.toLowerCase(), { writingStyle: this.selectedWritingStyle });\r\n }\r\n\r\n private summaryPlausibleEvent(): void {\r\n PlausibleHelper.customEvent(this.llmActionType.toLowerCase(), { action: 'summary' });\r\n }\r\n\r\n private refreshQuota(decrease?: boolean): void {\r\n this.llmHelperService.getRemainingQuota(decrease).subscribe((remainingQuota) => {\r\n this.quotaLeft = remainingQuota;\r\n this.setQuotaMessage();\r\n })\r\n }\r\n\r\n private setQuotaMessage(): void {\r\n if (this.quotaLeft <= this.llmHelperService.trialRequestCount) {\r\n this.remainingQuotaMessageVisible = true;\r\n }\r\n\r\n if (this.quotaLeft < 1) {\r\n this.reachedQuotaMessage = this.llmHelperService.getReachedQuotaMessage();\r\n this.messages.push(this.reachedQuotaMessage);\r\n }\r\n }\r\n\r\n private getRequest(): Subscription {\r\n let text =\r\n this.manuallyEditedText !== ''\r\n ? this.manuallyEditedText\r\n : this.initialText;\r\n\r\n if (text.length > this.maxCharLength) {\r\n text = text.substring(0, this.maxCharLength);\r\n }\r\n\r\n const method =\r\n this.llmActionType === LLMActions.REPHRASE\r\n ? this.llmService.rephrase({ text: text, language: this.data.language, style: this.selectedWritingStyle, useCase: this.selectedUseCase as LLMRephraseUseCase })\r\n : this.llmService.summarize({ text: text, language: this.data.language, useCase: this.selectedUseCase as LLMSummaryUseCase });\r\n\r\n return method\r\n .pipe(finalize(() => (this.isLoading = false)))\r\n .subscribe(this.getRequestCallback());\r\n }\r\n\r\n private getRequestCallback() {\r\n return {\r\n next: (response: string) => {\r\n if (this.llmActionType === this.llmActions.SUMMARY) {\r\n this.isSummarized = true;\r\n }\r\n\r\n this.editedText = response;\r\n this.manuallyEditedText = '';\r\n this.defaultErrorMessage = this.llmHelperService.getDefaultErrorMessage();\r\n this.closeMessage(this.defaultErrorMessage);\r\n this.closeMessage(this.requestTimeoutMessage);\r\n this.isEdited = true;\r\n this.refreshQuota(true);\r\n this.checkTextLimit();\r\n },\r\n error: (error: HttpErrorResponse) => {\r\n if (error.status === ERROR_CODES.TIMEOUT) {\r\n this.requestTimeoutMessage = this.llmHelperService.getRequestTimeoutMessage(this.llmActionType);\r\n this.messages.push(this.requestTimeoutMessage);\r\n return;\r\n }\r\n\r\n this.messages.push(this.defaultErrorMessage);\r\n }\r\n }\r\n }\r\n}\r\n","export const SUMMARIZE = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M4 5H18.6286V6.82857H4V5ZM4 10.4857H18.6286V8.65714H4V10.4857ZM4 14.1429H10.4V12.3143H4V14.1429ZM4 17.8H10.4V15.9714H4V17.8Z\" fill=\"currentColor\"/>\r\n<path d=\"M17.4005 13.3093C17.0801 12.5922 16.0622 12.5922 15.7418 13.3093L15.1052 14.7341L13.6804 15.3707C12.9633 15.6911 12.9633 16.709 13.6804 17.0294L15.1052 17.666L15.7418 19.0908C16.0622 19.8079 17.0801 19.8079 17.4005 19.0908L18.0371 17.666L19.4619 17.0294C20.179 16.709 20.179 15.6911 19.4619 15.3707L18.0371 14.7341L17.4005 13.3093Z\" fill=\"currentColor\"/>\r\n<path d=\"M13.5612 12.0546C13.4438 11.7917 13.0705 11.7917 12.953 12.0546L12.7196 12.577L12.1972 12.8105C11.9343 12.9279 11.9343 13.3012 12.1972 13.4187L12.7196 13.6521L12.953 14.1745C13.0705 14.4374 13.4438 14.4374 13.5612 14.1745L13.7947 13.6521L14.3171 13.4187C14.58 13.3012 14.58 12.9279 14.3171 12.8105L13.7947 12.577L13.5612 12.0546Z\" fill=\"currentColor\"/>\r\n</svg>\r\n`;\r\nexport const REPHRASE = `<svg width=\"25\" height=\"25\" viewBox=\"0 0 25 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19.879 4.16166L21.229 5.51166C22.019 6.29166 22.019 7.56166 21.229 8.34166L7.99897 21.5717H3.81897V17.3917L14.219 6.98166L17.049 4.16166C17.829 3.38166 19.099 3.38166 19.879 4.16166ZM5.81897 19.5717L7.22897 19.6317L17.049 9.80166L15.639 8.39166L5.81897 18.2117V19.5717Z\" fill=\"currentColor\"/>\r\n<path d=\"M19.5181 19.798L18.8644 21.261C18.6793 21.6752 18.0913 21.6752 17.9062 21.261L17.2526 19.798C17.1471 19.5621 16.9584 19.3734 16.7225 19.268L15.2595 18.6143C14.8453 18.4292 14.8453 17.8412 15.2595 17.6561L16.7225 17.0024C16.9584 16.897 17.1471 16.7083 17.2526 16.4724L17.9062 15.0094C18.0913 14.5952 18.6793 14.5952 18.8644 15.0094L19.5181 16.4724C19.6235 16.7083 19.8122 16.897 20.0481 17.0024L21.5111 17.6561C21.9253 17.8412 21.9253 18.4292 21.5111 18.6143L20.0481 19.268C19.8122 19.3734 19.6235 19.5621 19.5181 19.798Z\" stroke=\"#474D53\"/>\r\n<path d=\"M9.88502 3.56437C9.75242 3.26761 9.33117 3.26761 9.19857 3.56437L8.93512 4.15399L8.3455 4.41744C8.04874 4.55003 8.04874 4.97129 8.3455 5.10389L8.93512 5.36733L9.19857 5.95696C9.33117 6.25372 9.75242 6.25372 9.88502 5.95696L10.1485 5.36733L10.7381 5.10389C11.0349 4.97129 11.0349 4.55003 10.7381 4.41744L10.1485 4.15399L9.88502 3.56437Z\" fill=\"currentColor\"/>\r\n<path d=\"M6.50947 5.80395C6.31057 5.35881 5.67869 5.35881 5.4798 5.80395L5.08462 6.68839L4.20019 7.08356C3.75505 7.28245 3.75505 7.91434 4.20019 8.11323L5.08462 8.5084L5.4798 9.39284C5.67869 9.83798 6.31057 9.83798 6.50947 9.39284L6.90464 8.5084L7.78907 8.11323C8.23421 7.91434 8.23421 7.28245 7.78907 7.08356L6.90464 6.68839L6.50947 5.80395Z\" fill=\"currentColor\"/>\r\n</svg>\r\n`;","import { Component, inject } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'lib-new-feature-dialog',\r\n imports: [MatDialogModule, MatButtonModule, TranslatePipe],\r\n templateUrl: './new-feature-dialog.component.html',\r\n styleUrl: './new-feature-dialog.component.scss'\r\n})\r\nexport class NewFeatureDialogComponent {\r\n data = inject(MAT_DIALOG_DATA);\r\n}\r\n","<h2 mat-dialog-title>{{ data.title | translate }}</h2>\r\n<mat-dialog-content>\r\n <p class=\"description\" [innerHTML]=\"data.description | translate\"></p>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button mat-dialog-close color=\"accent\">\r\n {{ data.close | translate }}\r\n </button>\r\n</mat-dialog-actions>\r\n","import { Injectable, signal } from '@angular/core';\r\nimport { NewFeatureDialogWrapperComponent } from './new-feature-dialog-wrapper.component';\r\n \r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class NewFeatureDialogService {\r\n current = signal<NewFeatureDialogWrapperComponent | undefined>(undefined);\r\n \r\n queue: NewFeatureDialogWrapperComponent[] = [];\r\n \r\n requestOpenFeature(component: NewFeatureDialogWrapperComponent): void {\r\n if (this.queue.includes(component)) {\r\n return;\r\n }\r\n this.queue.push(component);\r\n if (!this.current()) {\r\n this.showNextFeature();\r\n }\r\n }\r\n \r\n showNextFeature(): void {\r\n if (this.queue.length === 0) {\r\n return;\r\n }\r\n \r\n const nextFeature = this.queue.shift();\r\n if (!nextFeature) {\r\n return\r\n }\r\n this.current.set(nextFeature);\r\n nextFeature.showFeatureDialog();\r\n }\r\n}\r\n \r\n ","import { Component, inject, Input, OnDestroy, OnInit, signal } from '@angular/core';\r\nimport { MatDialog, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NewFeatureDialogComponent } from '../new-feature-dialog.component';\r\nimport { ResolutionHelper } from '../../helpers';\r\nimport { NewFeatureDialogService } from './new-feature-dialog.service';\r\nimport { Subject } from 'rxjs';\r\nimport { MobileScreenCustomPosition } from '../models/mobile-screen-custom-position.model';\r\n\r\n@Component({\r\n selector: 'lib-new-feature-dialog-wrapper',\r\n imports: [CommonModule, MatDialogModule],\r\n template: ''\r\n})\r\nexport class NewFeatureDialogWrapperComponent implements OnInit, OnDestroy {\r\n\t@Input() titleLocalizationKey!: string;\r\n\t@Input() descriptionLocalizationKey!: string;\r\n\t@Input() closeLocalizationKey!: string;\r\n\t@Input() featureClassName!: string;\r\n\t@Input() featureLocalStorageKey!: string;\r\n\t@Input() timeout = 0;\r\n\t@Input() maxWidth = 320;\r\n\t@Input() mobileScreenCustomPosition?: MobileScreenCustomPosition;\r\n\r\n\treadonly #dialog = inject(MatDialog);\r\n\treadonly #featureService = inject(NewFeatureDialogService);\r\n\treadonly #destroy = new Subject();\r\n\r\n\tdialogRef: MatDialogRef<NewFeatureDialogComponent> | undefined;\r\n\tfeatureActive = signal(false);\r\n\tisFeatureSeen = false;\r\n\r\n\tngOnInit(): void {\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.setFeatureStatus();\r\n\t\t}, this.timeout);\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.#destroy.next(null);\r\n\t\tthis.#destroy.complete();\r\n\t}\r\n\r\n\tshowFeatureDialog(): void {\r\n\t\tconst targetElement = document.querySelector(`.${this.featureClassName}`);\r\n\t\tif (!targetElement) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (ResolutionHelper.isMobileRes() && this.mobileScreenCustomPosition?.autoScroll) {\r\n\t\t\ttargetElement!.scrollIntoView({ behavior: 'smooth', block: 'center'});\r\n\t\t}\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.featureActive.set(true);\r\n\t\t\tconst updatedRects = targetElement.getBoundingClientRect();\r\n\t\t\tthis.dialogRef = this.#dialog.open(NewFeatureDialogComponent, {\r\n\t\t\t\tdata: {\r\n\t\t\t\t\ttitle: this.titleLocalizationKey,\r\n\t\t\t\t\tdescription: this.descriptionLocalizationKey,\r\n\t\t\t\t\tclose: this.closeLocalizationKey,\r\n\t\t\t\t\tfeatureLocalStorageKey: this.featureLocalStorageKey,\r\n\t\t\t\t},\r\n\t\t\t\tposition: {\r\n\t\t\t\t\tleft: `${ResolutionHelper.isMobileRes() && this.mobileScreenCustomPosition?.left ? this.mobileScreenCustomPosition.left : (updatedRects.left - this.maxWidth) + 'px'}`,\r\n\t\t\t\t\ttop: `${ResolutionHelper.isMobileRes() && this.mobileScreenCustomPosition?.top ? this.mobileScreenCustomPosition.top : (updatedRects.top + 45) + 'px'}`\r\n\t\t\t\t},\r\n\t\t\t\tmaxWidth: `${this.maxWidth}px`\r\n\t\t\t});\r\n\r\n\t\t\tthis.dialogRef.afterClosed().subscribe(() => {\r\n\t\t\t\tthis.setFeatureSeen();\r\n\t\t\t\tthis.#featureService.current.set(undefined);\r\n\t\t\t\tthis.#featureService.showNextFeature();\r\n\t\t\t});\r\n\t\t\t// Wait until the element is visible in the viewport.\r\n\t\t}, ResolutionHelper.isMobileRes() && this.mobileScreenCustomPosition?.autoScroll ? 500 : 0);\r\n\t}\r\n\r\n\tprivate setFeatureStatus(): void {\r\n\t\tthis.isFeatureSeen = !!this.featureLocalStorageKey && !!localStorage.getItem(this.featureLocalStorageKey);\r\n\r\n\t\tif (!this.isFeatureSeen) {\r\n\t\t\tthis.#featureService.requestOpenFeature(this);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setFeatureSeen(): void {\r\n\t\tthis.featureActive.set(false);\r\n\t\tthis.isFeatureSeen = true;\r\n\t\tif (this.featureLocalStorageKey) {\r\n\t\t\tlocalStorage.setItem(this.featureLocalStorageKey, 'true');\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { LLMActions } from '../../models';\r\n\r\n@Component({\r\n selector: 'lib-llm-summary',\r\n templateUrl: './llm-summary.component.html',\r\n styleUrl: './llm-summary.component.scss',\r\n standalone: false\r\n})\r\nexport class LLMSummaryComponent {\r\n @Input() isTextSummarizable!: boolean;\r\n @Input() newFeatureLocalStorageKey!: string | undefined;\r\n @Output() openModalEvent = new EventEmitter<LLMActions>();\r\n\r\n openModal(): void {\r\n this.openModalEvent.emit(LLMActions.SUMMARY);\r\n }\r\n}\r\n","<button\r\n\tmat-stroked-button\r\n\tclass=\"llm-summary\"\r\n\tcolor=\"accent\"\r\n\t[disabled]=\"!isTextSummarizable\"\r\n\t[class.summarize-feature-active]=\"summarizeFeature?.featureActive()\"\r\n\t(click)=\"openModal()\"\r\n>\r\n\t<mat-icon [svgIcon]=\"'summarize'\"></mat-icon>\r\n\t{{ \"LLM.SUMMARY\" | translate }}\r\n</button>\r\n\r\n<lib-new-feature-dialog-wrapper\r\n\t#summarizeFeature\r\n\t[titleLocalizationKey]=\"'LLM.SUMMARY_NEW_FEATURE.TITLE'\"\r\n\t[descriptionLocalizationKey]=\"'LLM.SUMMARY_NEW_FEATURE.DESCRIPTION'\"\r\n\t[closeLocalizationKey]=\"'LLM.SUMMARY_NEW_FEATURE.CLOSE'\"\r\n\t[featureClassName]=\"'llm-summary'\"\r\n\t[featureLocalStorageKey]=\"'summary' + newFeatureLocalStorageKey\"\r\n></lib-new-feature-dialog-wrapper>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { LLMActions } from '../../models';\r\n\r\n@Component({\r\n selector: 'lib-llm-rephrase',\r\n templateUrl: './llm-rephrase.component.html',\r\n styleUrl: './llm-rephrase.component.scss',\r\n standalone: false\r\n})\r\nexport class LLMRephraseComponent {\r\n @Input() isTargetLanguageRephrasable!: boolean;\r\n @Input() newFeatureLocalStorageKey!: string | undefined;\r\n @Output() openModalEvent = new EventEmitter<LLMActions>();\r\n\r\n openModal(): void {\r\n this.openModalEvent.emit(LLMActions.REPHRASE);\r\n }\r\n}\r\n","<button\r\n\tmat-stroked-button\r\n\tclass=\"llm-rephrase\"\r\n\tcolor=\"accent\"\r\n\t[disabled]=\"!isTargetLanguageRephrasable\"\r\n\t[class.rephrase-feature-active]=\"rephraseFeature?.featureActive()\"\r\n\t(click)=\"openModal()\"\r\n>\r\n\t<mat-icon [svgIcon]=\"'rephrase'\"></mat-icon>\r\n\t{{ \"LLM.REPHRASE\" | translate }}\r\n</button>\r\n\r\n<lib-new-feature-dialog-wrapper\r\n\t#rephraseFeature\r\n\t[titleLocalizationKey]=\"'LLM.REPHRASE_NEW_FEATURE.TITLE'\"\r\n\t[descriptionLocalizationKey]=\"'LLM.REPHRASE_NEW_FEATURE.DESCRIPTION'\"\r\n\t[closeLocalizationKey]=\"'LLM.REPHRASE_NEW_FEATURE.CLOSE'\"\r\n\t[featureClassName]=\"'llm-rephrase'\"\r\n\t[featureLocalStorageKey]=\"'rephrase' + newFeatureLocalStorageKey\"\r\n\t[maxWidth]=\"400\"\r\n></lib-new-feature-dialog-wrapper>\r\n","<div class=\"llm-wrapper\">\r\n\t<div *ngIf=\"summaryEnabled\" [matTooltipPosition]=\"'left'\" [matTooltip]=\"!isTextSummarizable ? ('LLM.MENU_SUMMARY_DISABLED_TOOLTIP' | translate) : ''\">\r\n\t\t<lib-llm-summary [isTextSummarizable]=\"!!isTextSummarizable\" [newFeatureLocalStorageKey]=\"newFeatureLocalStorageKey\" (openModalEvent)=\"openLLMModal($event)\"></lib-llm-summary>\r\n\t</div>\r\n\r\n\t<div *ngIf=\"rephraseEnabled\" [matTooltipPosition]=\"'left'\" [matTooltip]=\"!isTargetLanguageRephrasable ? ('LLM.MENU_REPHRASE_DISABLED_TOOLTIP' | translate) : ''\">\r\n\t\t<lib-llm-rephrase\r\n\t\t\t[isTargetLanguageRephrasable]=\"!!isTargetLanguageRephrasable\"\r\n\t\t\t[newFeatureLocalStorageKey]=\"newFeatureLocalStorageKey\"\r\n\t\t\t(openModalEvent)=\"openLLMModal($event)\"\r\n\t\t></lib-llm-rephrase>\r\n\t</div>\r\n</div>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { LLMActions } from './models/llm-actions.enum';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { IconService, LanguageTranslateService } from '../services';\r\nimport { LLMTextareaWithActionsComponent } from './components/llm-textarea-with-actions/llm-textarea-with-actions.component';\r\nimport * as icons from './icons';\r\nimport { Observable, of } from 'rxjs';\r\nimport { LLMData } from './models/llm-data.model';\r\nimport { LLMRephraseUseCase, LLMSummaryUseCase } from '@tilde-nlp/ngx-services';\r\n\r\n@Component({\r\n selector: 'lib-llm',\r\n templateUrl: './llm.component.html',\r\n styleUrls: ['./llm.component.scss'],\r\n standalone: false\r\n})\r\nexport class LLMComponent {\r\n @Input() text: string | Observable<string> | undefined;\r\n @Input() language!: string | undefined;\r\n @Input() rephrasableLanguagesCodeList: string[] | undefined;\r\n @Input() summaryEnabled = true;\r\n @Input() rephraseEnabled = true;\r\n @Input() showUseCaseSummary = false;\r\n @Input() showUseCaseRephrase = false;\r\n @Input() newFeatureLocalStorageKey!: string | undefined;\r\n @Input() rephraseUseCases: LLMRephraseUseCase[] | undefined;\r\n @Input() summaryUseCases: LLMSummaryUseCase[] | undefined;\r\n\r\n @Output() menuTriggerClick = new EventEmitter<void>();\r\n\r\n readonly llmAction = LLMActions;\r\n\r\n get isTextSummarizable() {\r\n return this.text;\r\n }\r\n\r\n get isTargetLanguageRephrasable() {\r\n return !this.rephrasableLanguagesCodeList || (this.language && this.rephrasableLanguagesCodeList.includes(this.languageService.removeRegionFromLanguageCode(this.language)));\r\n }\r\n\r\n constructor(\r\n public dialog: MatDialog,\r\n private readonly iconService: IconService,\r\n private readonly languageService: LanguageTranslateService\r\n ) {\r\n this.iconService.registerIcons(icons);\r\n }\r\n\r\n openLLMModal(action: LLMActions): void {\r\n let textObservable: Observable<string>;\r\n if (!this.text || typeof this.text === \"string\") {\r\n textObservable = of(this.text ?? \"\");\r\n } else {\r\n textObservable = this.text;\r\n }\r\n const data: LLMData = {\r\n text: textObservable,\r\n language: this.language!,\r\n action: action,\r\n showUseCaseSummary: this.showUseCaseSummary,\r\n showUseCaseRephrase: this.showUseCaseRephrase,\r\n summaryUseCases: this.summaryUseCases,\r\n rephraseUseCases: this.rephraseUseCases,\r\n };\r\n\r\n this.dialog.open(LLMTextareaWithActionsComponent, {\r\n panelClass: 'responsive-dialog',\r\n maxWidth: '800px',\r\n width: '100%',\r\n data\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LLMComponent } from './llm.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { ClipboardModule } from '@angular/cdk/clipboard';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { LLMTextareaComponent } from './shared/llm-textarea/llm-textarea.component';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { NotificationMessageModule } from '../notification-message';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { LLMTextareaWithActionsComponent } from './components/llm-textarea-with-actions/llm-textarea-with-actions.component';\r\nimport { NewFeatureDialogWrapperComponent } from '../new-feature-dialog';\r\nimport { LLMRephraseComponent } from './components/llm-rephrase/llm-rephrase.component';\r\nimport { LLMSummaryComponent } from './components/llm-summary/llm-summary.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n LLMComponent,\r\n LLMTextareaComponent,\r\n LLMTextareaWithActionsComponent,\r\n LLMSummaryComponent,\r\n LLMRephraseComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n TranslateModule,\r\n MatDialogModule,\r\n ClipboardModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatSelectModule,\r\n NotificationMessageModule,\r\n MatTooltipModule,\r\n FlexLayoutModule,\r\n MatProgressSpinnerModule,\r\n NewFeatureDialogWrapperComponent\r\n ],\r\n exports: [LLMComponent],\r\n})\r\nexport class LLMModule {}\r\n","import { Injectable, TemplateRef } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SidebarService {\r\n isOpen = false;\r\n\r\n contentTemplate!: TemplateRef<HTMLTemplateElement> | null;\r\n\r\n showSidebar(content: TemplateRef<HTMLTemplateElement>): void {\r\n this.isOpen = true;\r\n \r\n this.contentTemplate = content;\r\n }\r\n\r\n hideSidebar(): void {\r\n this.isOpen = false;\r\n\r\n this.contentTemplate = null;\r\n }\r\n}\r\n","import { Component, inject } from '@angular/core';\r\nimport { SidebarService } from './services';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-sidebar',\r\n imports: [CommonModule],\r\n templateUrl: './sidebar.component.html',\r\n styleUrl: './sidebar.component.scss'\r\n})\r\nexport class SidebarComponent {\r\n #sidebarService = inject(SidebarService);\r\n\r\n get isOpen() {\r\n return this.#sidebarService.isOpen;\r\n }\r\n\r\n get template() {\r\n return this.#sidebarService.contentTemplate;\r\n }\r\n}\r\n","<section [class.expanded]=\"isOpen\" class=\"sidebar-wrapper\">\r\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\r\n</section>\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { Toast } from '../models/toast.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ToastService {\r\n private toasts: Toast[] = [];\r\n\r\n subject = new Subject<Toast[]>();\r\n\r\n watchToasts(): Observable<Toast[]> {\r\n return this.subject.asObservable();\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n showToast(message: string, appearanceTime?: number, localizationParams?: any): void {\r\n const animationDurationTime = 500;\r\n const toast: Toast = {\r\n id: new Date().getTime(),\r\n message,\r\n localizationParams\r\n };\r\n\r\n this.toasts.push(toast);\r\n this.subject.next(this.toasts);\r\n\r\n setTimeout(() => {\r\n document.querySelector('.toast')?.classList.add(\"fade-out\")\r\n }, (appearanceTime ?? 3000) - animationDurationTime)\r\n\r\n setTimeout(() => {\r\n this.closeToast(toast.id);\r\n }, appearanceTime ?? 3000);\r\n }\r\n\r\n closeToast(id: number): void {\r\n this.toasts = this.toasts.filter((toast) => toast.id !== id);\r\n this.subject.next(this.toasts);\r\n }\r\n}\r\n","<div class=\"toast-container\">\r\n @for (toast of toasts; track toast.id) {\r\n <div class=\"toast\">\r\n <span>{{ toast.message | translate: toast?.localizationParams }}</span>\r\n <button mat-icon-button (click)=\"closeToast(toast.id)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, inject, OnInit } from '@angular/core';\r\nimport { Toast } from './models/toast.model';\r\nimport { ToastService } from './toast-service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'lib-toast',\r\n imports: [CommonModule, MatIconModule, MatButtonModule, TranslateModule],\r\n templateUrl: './toast.component.html',\r\n styleUrl: './toast.component.scss'\r\n})\r\nexport class ToastComponent implements OnInit {\r\n toasts: Toast[] = [];\r\n\r\n #toast = inject(ToastService);\r\n\r\n ngOnInit(): void {\r\n this.#toast.watchToasts().subscribe({\r\n next: (toasts) => (this.toasts = toasts),\r\n });\r\n }\r\n\r\n closeToast(id: number) {\r\n this.#toast.closeToast(id);\r\n }\r\n}\r\n","export enum SubscriptionPlan {\r\n MTStarter = \"MT-Starter\",\r\n MTPremium = \"MT-Premium\",\r\n MTAdvanced = \"MT-Advanced\",\r\n MTUnlimited = \"MT-Unlimited\",\r\n MTWTStarter = \"MT-WT-Starter\",\r\n MTWTPremium = \"MT-WT-Premium\",\r\n MTWTAdvanced = \"MT-WT-Advanced\",\r\n SpeechStarter = \"Speech-Starter\",\r\n SpeechPremium = \"Speech-Premium\",\r\n SpeechAdvanced = \"Speech-Advanced\",\r\n SpeechUnlimited = \"Speech-Unlimited\",\r\n TildeTermFreelance = \"Tilde-Term-Freelance\",\r\n AnonymiseUnlimited = \"Anonymise-Unlimited\",\r\n EventAssistantUnlimited = \"Event-Assistant-Unlimited\"\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const CUSTOM_TITLE_CONFIGURATION_TOKEN = new InjectionToken('CUSTOM_TITLE_CONFIGURATION_TOKEN');\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { RouterStateSnapshot, TitleStrategy } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { CUSTOM_TITLE_CONFIGURATION_TOKEN } from './custom-title-strategy-configuration.token';\r\nimport { CustomTitleStrategyConfiguration } from './custom-title-strategy-configuration.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CustomTitleStrategyService extends TitleStrategy {\r\n readonly #translateService = inject(TranslateService);\r\n readonly title = inject(Title);\r\n\r\n private subscription!: Subscription;\r\n\r\n private readonly appName = \"APP_NAME\";\r\n private readonly owner = \"OWNER\";\r\n\r\n readonly #config = inject<CustomTitleStrategyConfiguration>(CUSTOM_TITLE_CONFIGURATION_TOKEN, { optional: true });\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n override updateTitle(snapshot: RouterStateSnapshot): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n const title = this.buildTitle(snapshot);\r\n\r\n const translationKeys = [this.appName, this.owner];\r\n if (title) {\r\n translationKeys.push(title);\r\n }\r\n\r\n this.subscription = this.#translateService.stream(translationKeys, { appName: this.appName }).subscribe((translations) => {\r\n let translatedTitle: string = `${translations[this.owner]} ${translations[this.appName]}`;\r\n if (title && translations[title]) {\r\n translatedTitle = this.#config?.isPageTitleFirst ?? false\r\n ? `${translations[title]} | ${translatedTitle}`\r\n : `${translatedTitle} | ${translations[title]}`;\r\n }\r\n this.title.setTitle(translatedTitle);\r\n })\r\n }\r\n}\r\n","import { Provider } from '@angular/core';\r\nimport { TitleStrategy } from '@angular/router';\r\nimport { CustomTitleStrategyService } from './custom-title-strategy.service';\r\n\r\nexport const provideCustomTitleStrategy = (customConfigProvider?: Provider): Provider[] => {\r\n\tconst TITLE_STRATEGY_PROVIDERS: Provider[] = [\r\n\t\t{\r\n\t\t\tprovide: TitleStrategy,\r\n\t\t\tuseClass: CustomTitleStrategyService,\r\n\t\t},\r\n\t];\r\n\r\n\tif (customConfigProvider) {\r\n\t\tTITLE_STRATEGY_PROVIDERS.push(customConfigProvider);\r\n\t}\r\n\r\n\treturn TITLE_STRATEGY_PROVIDERS;\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { MissingTranslationHandler, MissingTranslationHandlerParams } from '@ngx-translate/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class MissingTranslationHandlerService implements MissingTranslationHandler {\r\n constructor() {}\r\n\r\n handle(params: MissingTranslationHandlerParams) {\r\n if (params.interpolateParams) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return (params.interpolateParams as any)[\"default\"] || params.key;\r\n }\r\n return params.key;\r\n }\r\n}\r\n","<h1 mat-dialog-title>{{ \"SELECT_LANGUAGE.TITLE\" | translate }}</h1>\r\n<div mat-dialog-content>\r\n <p class=\"description\">{{ \"SELECT_LANGUAGE.DESCRIPTION\" | translate }}</p>\r\n\r\n <mat-form-field appearance=\"outline\" class=\"w-full mt-4 mb-9\">\r\n <mat-label>{{ \"SELECT_LANGUAGE.INPUT_LABEL\" | translate }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedLanguage\">\r\n @for (language of languages | sortLanguageList | async; track $index) {\r\n <mat-option [value]=\"language.value\">\r\n <span class=\"language-name\">\r\n {{language.translation}}\r\n </span>\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n</div>\r\n\r\n<mat-dialog-actions align=\"end\">\r\n <button mat-stroked-button color=\"accent\" mat-dialog-close>\r\n {{ \"SELECT_LANGUAGE.CANCEL\" | translate }}\r\n </button>\r\n <button mat-flat-button color=\"accent\" (click)=\"save()\">\r\n {{ \"SELECT_LANGUAGE.SAVE\" | translate }}\r\n </button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { AsyncPipe } from '@angular/common';\r\nimport { Component, inject, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\r\nimport { SortLanguageListPipe } from '../../../pipes';\r\n/**\r\n This is an extension dialog component.\r\n Use <lib-open-extension-dialog> to open this dialog, by proivding [extensions] to it you can specify what extensions should be displayed.\r\n*/\r\n@Component({\r\n selector: 'lib-extension-dialog',\r\n templateUrl: './select-language-dialog.component.html',\r\n styleUrls: ['./select-language-dialog.component.scss'],\r\n imports: [\r\n SortLanguageListPipe,\r\n AsyncPipe,\r\n TranslatePipe,\r\n MatDialogModule,\r\n MatButtonModule,\r\n MatSelectModule,\r\n FormsModule\r\n ]\r\n})\r\nexport class SelectLanguageDialogComponent implements OnInit {\r\n readonly #data = inject(MAT_DIALOG_DATA);\r\n readonly #translate = inject(TranslateService);\r\n readonly #dialogRef = inject(MatDialogRef);\r\n\r\n languages!: string[];\r\n selectedLanguage = this.#translate.currentLang;\r\n\r\n ngOnInit(): void {\r\n this.languages = this.#data.languages;\r\n }\r\n\r\n save(){\r\n this.#translate.use(this.selectedLanguage);\r\n this.#dialogRef.close(this.selectedLanguage);\r\n }\r\n\r\n\r\n\r\n}\r\n","<div class=\"tld-global-message\">\r\n\t<p [innerHTML]=\"text | translate\"></p>\r\n\r\n\t@if (showCloseButton) {\r\n\t<button class=\"tld-global-message-close\" mat-icon-button (click)=\"close()\">\r\n\t\t<mat-icon>close</mat-icon>\r\n\t</button>\r\n\t} \r\n \r\n @for (action of actions; track $index) {\r\n\t <button class=\"tld-global-message-action\" mat-stroked-button color=\"accent\" (click)=\"action.click()\">{{ action.label | translate }}</button>\r\n\t}\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { GlobalMessageAction } from './models/global-message-action.model';\r\n\r\n@Component({\r\n selector: 'lib-global-message',\r\n imports: [CommonModule, TranslateModule, MatButtonModule, MatIconModule],\r\n templateUrl: './global-message.component.html',\r\n styleUrl: './global-message.component.scss',\r\n})\r\nexport class GlobalMessageComponent {\r\n @Input() text!: string;\r\n @Input() showCloseButton = true;\r\n @Input() actions?: GlobalMessageAction[];\r\n @Output() closeClick = new EventEmitter<void>();\r\n\r\n close(): void {\r\n this.closeClick.emit();\r\n }\r\n}\r\n","export enum SUBSCRIPTION_STATE {\r\n ACTIVE,\r\n TRIAL,\r\n ENDED,\r\n NONE\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ChargebeeMountService {\r\n chargebeeMounted = false;\r\n}\r\n","@if(token()){\r\n <!-- narrow type to non null property -->\r\n @let userToken = token()!;\r\n\r\n <h3 class=\"subscription-section-title text-l-semi-bold\">{{ \"SUBSCRIPTION.USER_INFO\" | translate }}</h3>\r\n\r\n <div class=\"subscription-data-row\">\r\n <div class=\"subscription-label\">\r\n <span class=\"label\">{{ \"SUBSCRIPTION.LABEL_NAME\" | translate }}</span>\r\n </div>\r\n\r\n <div class=\"subscription-data\">\r\n <span>{{ userToken.name }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"subscription-data-row\">\r\n <div class=\"subscription-label\">\r\n <span class=\"label\">{{ \"SUBSCRIPTION.LABEL_EMAIL\" | translate }}</span>\r\n </div>\r\n\r\n <div class=\"subscription-data\">\r\n <span>{{ userToken.email }}</span>\r\n </div>\r\n </div>\r\n}\r\n\r\n@if(subscription()){\r\n @let currentSubscription = subscription()!;\r\n\r\n <div fxLayout=\"row\" class=\"subscription-data-row\">\r\n <div class=\"subscription-label\">\r\n <span class=\"label\">{{ \"SUBSCRIPTION.LABEL_SUBSCRIPTION_PLAN_ID\" | translate }}</span>\r\n </div>\r\n\r\n <div class=\"subscription-data\">\r\n <ng-container>\r\n <span>\r\n {{ currentSubscription.Label ? currentSubscription.Label : currentSubscription.PlanId }}\r\n\r\n @switch (subscriptionState()) {\r\n @case(subscriptionStates.TRIAL){\r\n <span> ({{ \"SUBSCRIPTION.TRIAL_END_DATE\" | translate: { date: currentSubscription.EndDate | date: \"dd.MM.yyyy.\" } }}) </span>\r\n }\r\n @case (subscriptionStates.ACTIVE) {\r\n @if(currentSubscription.EndDate){\r\n <span> ({{ \"SUBSCRIPTION.END_DATE\" | translate: { date: currentSubscription.EndDate | date: \"dd.MM.yyyy.\" } }}) </span>\r\n }\r\n }\r\n @case (subscriptionStates.ENDED) {\r\n ({{ \"SUBSCRIPTION.END_DATE\" | translate: { date: currentSubscription.EndDate | date: \"dd.MM.yyyy.\" } }})\r\n }\r\n }\r\n </span>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n @if(currentSubscription.EndDate){\r\n <div class=\"subscription-data-row\">\r\n <div class=\"subscription-label\">\r\n <span class=\"label\">{{ \"SUBSCRIPTION.LABEL_SUBSCRIPTION_END_DATE\" | translate }}</span>\r\n </div>\r\n\r\n <div class=\"subscription-data\">\r\n <ng-container>\r\n <span>{{currentSubscription.EndDate | date: \"dd.MM.yyyy\"}}</span>\r\n </ng-container>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if(currentSubscription.Addons?.length){\r\n <div fxLayout=\"row\" class=\"subscription-data-row\">\r\n <div class=\"subscription-label\">\r\n <span class=\"label\">{{ \"SUBSCRIPTION.ADDITIONS_PLUGINS\" | translate }}</span>\r\n </div>\r\n\r\n <div class=\"subscription-data\">\r\n @for (item of currentSubscription.Addons; track $index; let i = $index) {\r\n <span>{{ item.id }}</span>\r\n @if(item.qt>1){\r\n <span> ({{item.qt}})</span>\r\n }\r\n <span> {{ currentSubscription.Addons!.length - 1 > i ? \",\" : \"\" }} </span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n}\r\n\r\n@if(visibleQuotas().length){\r\n <h3 class=\"subscription-section-title text-l-semi-bold\">{{ \"SUBSCRIPTION.LIMITS\" | translate }}</h3>\r\n\r\n @for (currentQuota of visibleQuotas(); track $index) {\r\n <div class=\"subscription-limit-wrapper\">\r\n <mat-progress-bar [value]=\"currentQuota.percentUsed\"></mat-progress-bar>\r\n <div class=\"subscription-limit\">\r\n <span class=\"text-l-semi-bold\">\r\n {{ (\"QUOTA.\" + (currentQuota.quotaType.toString() | uppercase) + (currentQuota.isUnlimited? \"_UNLIMITED\": \"\")) | translate: { used: currentQuota.convertedUsed, limit: currentQuota.convertedLimit, percent: currentQuota.percentUsed} }}\r\n </span>\r\n </div>\r\n </div>\r\n }\r\n}\r\n\r\n<!-- Add some extra info, such as disclaimer etc -->\r\n <ng-content></ng-content>\r\n\r\n<div class=\"subscription-actions-wrapper\">\r\n @if(chargebeeSettings()){\r\n <a mat-flat-button color=\"accent\" class=\"manage-sub-btn button-row-element\" href=\"javascript:void(0)\" data-cb-type=\"portal\" (click)=\"manageClicked()\">\r\n {{ \"SUBSCRIPTION.MANAGE\" | translate }}\r\n </a>\r\n }\r\n @if(contactUsUrl()){\r\n <a mat-stroked-button [attr.href]=\"contactUsUrl()\" target=\"_blank\" color=\"accent\" (click)=\"contactUsClicked()\">{{\"SUBSCRIPTION.CONTACT\" | translate}}</a>\r\n }\r\n</div>\r\n","import { CommonModule, DatePipe } from '@angular/common';\r\nimport { Component, computed, inject, input, OnInit, output } from '@angular/core';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { QuotaResponse, QuotaType, QuotaUsage } from '@tilde-nlp/ngx-services';\r\nimport { AuthSubscription } from '../core/auth/auth-subscription.model';\r\nimport { JwtToken } from '../core/auth/jwt-token.model';\r\nimport { SUBSCRIPTION_STATE } from './models/subscription-state.enum';\r\nimport { SubscriptionQuotaDisplay } from './models/subscription-quota-display.model';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { ChargebeeMountService } from './chargebee-mount.service';\r\nimport { ChargebeeSettings } from './models/chargebee-settings.model';\r\n\r\n@Component({\n selector: 'lib-subscription',\n imports: [\n TranslatePipe,\n DatePipe,\n MatProgressBarModule,\n CommonModule,\n MatButtonModule\n ],\n templateUrl: './subscription.component.html',\n styleUrl: './subscription.component.scss'\n})\r\nexport class SubscriptionComponent implements OnInit {\r\n readonly #chargebeeMountService = inject(ChargebeeMountService);\r\n\r\n /** Parsed user token to get user related info */\r\n readonly token = input.required<JwtToken | undefined>();\r\n /** Current user plan that app has selected */\r\n readonly subscription = input.required<AuthSubscription | undefined>();\r\n /** Quota usage */\r\n readonly quota = input.required<QuotaResponse | undefined>();\r\n readonly visibleQuotaTypes = input<QuotaType[]>();\r\n readonly contactUsUrl = input<string>();\r\n readonly chargebeeSettings = input<ChargebeeSettings>();\r\n\r\n readonly manageClick = output();\r\n readonly contactUsClick = output();\r\n\r\n readonly visibleQuotas = computed<SubscriptionQuotaDisplay[]>(() => {\r\n const quota = this.quota();\r\n if (!quota?.usage) {\r\n return [];\r\n }\r\n\r\n let filtered: QuotaUsage[];\r\n if (!this.visibleQuotaTypes()) {\r\n filtered = quota.usage;\r\n }\r\n else {\r\n filtered = quota.usage.filter(quota => this.visibleQuotaTypes()?.includes(quota.quotaType));\r\n }\r\n\r\n const visibleQuotas: SubscriptionQuotaDisplay[] = filtered.map(quota => {\r\n return this.#convertUsageToDisplayQuota(quota);\r\n });\r\n return visibleQuotas;\r\n })\r\n\r\n readonly subscriptionStates = SUBSCRIPTION_STATE;\r\n\r\n readonly subscriptionState = computed(() => {\r\n const subscription = this.subscription();\r\n if (!subscription) {\r\n return SUBSCRIPTION_STATE.NONE;\r\n }\r\n\r\n if (subscription.IsTrial) {\r\n return SUBSCRIPTION_STATE.TRIAL;\r\n }\r\n\r\n\r\n const now = new Date();\r\n if (!subscription.EndDate || new Date(subscription.EndDate) < now) {\r\n return SUBSCRIPTION_STATE.ACTIVE;\r\n } else {\r\n return SUBSCRIPTION_STATE.ENDED;\r\n }\r\n });\r\n\r\n ngOnInit(): void {\r\n this.#mountChargeBeeScript();\r\n }\r\n\r\n manageClicked(){\r\n this.manageClick.emit();\r\n }\r\n\r\n contactUsClicked(){\r\n this.contactUsClick.emit();\r\n }\r\n\r\n #mountChargeBeeScript() {\r\n const chargebeeSettings = this.chargebeeSettings();\r\n if (!chargebeeSettings?.site || !chargebeeSettings.script) {\r\n return;\r\n }\r\n\r\n if (!this.#chargebeeMountService.chargebeeMounted) {\r\n const el = document.createElement('script');\r\n el.onload = () => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const windowObj: any = window;\r\n windowObj.Chargebee.init({\r\n site: chargebeeSettings.site\r\n });\r\n windowObj.Chargebee.registerAgain();\r\n this.#chargebeeMountService.chargebeeMounted = true;\r\n };\r\n el.setAttribute('src', chargebeeSettings.script);\r\n document.head.appendChild(el);\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const windowObj: any = window;\r\n windowObj.Chargebee.registerAgain();\r\n }\r\n }\r\n\r\n #convertUsageToDisplayQuota(quota: QuotaUsage): SubscriptionQuotaDisplay {\r\n // int max in c#\r\n const unlimitedBenchmark = 2147483647;\r\n\r\n const used = quota.quotaLimit - quota.quotaRemaining;\r\n let convertedLimit = quota.quotaLimit.toString();\r\n let convertedUsed = used.toString();\r\n const isUnlimited = unlimitedBenchmark <= quota.quotaLimit;\r\n const percentUsed = Math.round(((quota.quotaLimit - quota.quotaRemaining) / quota.quotaLimit) * 100);\r\n\r\n switch (quota.quotaType) {\r\n case QuotaType.ASR_FILE_LENGTH_SECONDS:\r\n case QuotaType.ONLINE_ASR_USED_SECONDS:\r\n convertedLimit = Math.ceil(quota.quotaLimit / 60).toString();\r\n convertedUsed = Math.round(used / 60).toString();\r\n break;\r\n case QuotaType.ASR_FILE_SIZE_KB:\r\n convertedLimit = this.#formatBytes(quota.quotaLimit * 1024);\r\n convertedUsed = this.#formatBytes(used * 1024);\r\n break;\r\n case QuotaType.LLM_REQUESTS:\r\n break;\r\n }\r\n\r\n return {\r\n ...quota,\r\n convertedLimit,\r\n convertedUsed,\r\n isUnlimited,\r\n percentUsed\r\n };\r\n }\r\n\r\n #formatBytes(bytes: number, decimals = 0) {\r\n if (!+bytes) return '0 Bytes'\r\n\r\n const k = 1024\r\n const dm = decimals < 0 ? 0 : decimals\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\r\n\r\n const i = Math.floor(Math.log(bytes) / Math.log(k))\r\n\r\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`\r\n }\r\n\r\n}\r\n","export enum AccessibilityFontSizes {\r\n\tBASE = '1rem',\r\n\tL = '1.25rem',\r\n\tXL = '1.5rem',\r\n}\r\n","export enum AccessibilityContrasts {\r\n\tBASE = 'base',\r\n\tBLACK_WHITE = 'black-white',\r\n\tYELLOW_BLACK = 'yellow-black',\r\n\tBLACK_YELLOW = 'black-yellow',\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AccessibilityTextMagnifierService {\r\n\tprivate magnifiedText: HTMLDivElement | null = null;\r\n\tprivate mousemoveHandler: EventListener | null = null;\r\n\tprivate mouseoverHandler: EventListener | null = null;\r\n\r\n\ttoggleTextMagnifier(isDisabled: boolean): void {\r\n\t\tif (isDisabled) {\r\n\t\t\tthis.addMagnifier();\r\n\t\t} else {\r\n\t\t\tthis.removeMagnifier();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate addMagnifier(): void {\r\n\t\tthis.magnifiedText = document.createElement('div');\r\n\t\tthis.magnifiedText.classList.add('magnified-text');\r\n\t\tdocument.body.appendChild(this.magnifiedText);\r\n\r\n\t\tlet positionTop: number;\r\n\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\tthis.mouseoverHandler = (event: any) => {\r\n\t\t\tif (event.target && event.target.nodeType === Node.ELEMENT_NODE) {\r\n\t\t\t\tif (event.target?.classList?.contains('mat-icon')) {\r\n\t\t\t\t\treturn;\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tconst textContent = this.getFirstTextContent(event.target);\r\n\r\n\t\t\t\tif (!textContent.length) {\r\n\t\t\t\t\tthis.magnifiedText!.style.display = 'none';\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.magnifiedText!.style.display = 'block';\r\n\t\t\t\tthis.magnifiedText!.textContent = textContent;\r\n\r\n\t\t\t\tpositionTop = event.pageY - this.magnifiedText!.clientHeight - 25 > 0 ? event.pageY - this.magnifiedText!.clientHeight - 25 : 0;\r\n\r\n\t\t\t\tthis.magnifiedText!.style.left = `${event.pageX - 35}px`;\r\n\t\t\t\tthis.magnifiedText!.style.top = `${positionTop}px`;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdocument.addEventListener('mouseover', this.mouseoverHandler);\r\n\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\tthis.mousemoveHandler = (event: any) => {\r\n\t\t\tif (this.magnifiedText) {\r\n\t\t\t\tthis.magnifiedText!.style.left = `${event.pageX - 35}px`;\r\n\t\t\t\tthis.magnifiedText!.style.top = `${positionTop}px`;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdocument.addEventListener('mousemove', this.mousemoveHandler);\r\n\t}\r\n\r\n\tprivate removeMagnifier(): void {\r\n\t\tif (this.magnifiedText) {\r\n\t\t\tdocument.body.removeChild(this.magnifiedText);\r\n\t\t\tthis.magnifiedText = null;\r\n\t\t}\r\n\r\n\t\tif (this.mouseoverHandler) {\r\n\t\t\tdocument.removeEventListener('mouseover', this.mouseoverHandler);\r\n\t\t\tthis.mouseoverHandler = null;\r\n\t\t}\r\n\r\n\t\tif (this.mousemoveHandler) {\r\n\t\t\tdocument.removeEventListener('mousemove', this.mousemoveHandler);\r\n\t\t\tthis.mousemoveHandler = null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getFirstTextContent(element: Element): string {\r\n\t\tlet textContent = '';\r\n\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\tfor (const child of element.childNodes as any) {\r\n\t\t\tif (child.nodeType === Node.TEXT_NODE) {\r\n\t\t\t\ttextContent = child.textContent || '';\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn textContent;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AccessibilityScreenMaskService {\r\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\tlistener: any;\r\n\tfocusBarHeight = 60;\r\n\r\n\treadonly SCREEN_MASK_HEIGHT_KEY = 'SCREEN_MASK_HEIGHT_KEY';\r\n\treadonly MASK_CLASS = 'screen-mask';\r\n\treadonly MASK_OVERLAY_CLASS = 'screen-mask-overlay';\r\n\treadonly FOCUS_BAR_CLASS = 'screen-mask-focus-bar';\r\n\treadonly FOCUS_BAR_BTN_CLASS = 'screen-mask-bar-btn';\r\n\treadonly INCREASE_BTN_TEXT = '+';\r\n\treadonly DECREASE_BTN_TEXT = '-';\r\n\treadonly CLOSE_BTN_TEXT = 'x';\r\n\r\n\ttoggleScreenMask(isDisabled: boolean): void {\r\n\t\tconst body = document.querySelector('body')!;\r\n\r\n\t\tif (!isDisabled) {\r\n\t\t\tthis.closeFocusBar();\r\n\t\t} else {\r\n\t\t\tconst mask = document.createElement('div');\r\n\t\t\tconst maskOverlay = document.createElement('div');\r\n\t\t\tconst maskFocusBar = document.createElement('div');\r\n\t\t\tconst increaseButton = document.createElement('button');\r\n\t\t\tconst decreaseButton = document.createElement('button');\r\n\t\t\tconst closeButton = document.createElement('button');\r\n\r\n\t\t\tmask.classList.add(this.MASK_CLASS);\r\n\t\t\tmaskFocusBar.classList.add(this.FOCUS_BAR_CLASS);\r\n\t\t\tmaskOverlay.classList.add(this.MASK_OVERLAY_CLASS);\r\n\r\n\t\t\tincreaseButton.textContent = this.INCREASE_BTN_TEXT;\r\n\t\t\tdecreaseButton.textContent = this.DECREASE_BTN_TEXT;\r\n\t\t\tcloseButton.textContent = this.CLOSE_BTN_TEXT;\r\n\r\n\t\t\tincreaseButton.addEventListener('click', () => this.increaseFocusBar());\r\n\t\t\tdecreaseButton.addEventListener('click', () => this.decreaseFocusBar());\r\n\t\t\tcloseButton.addEventListener('click', () => this.closeFocusBar());\r\n\r\n\t\t\tmaskFocusBar.appendChild(increaseButton);\r\n\t\t\tmaskFocusBar.appendChild(decreaseButton);\r\n\t\t\tmaskFocusBar.appendChild(closeButton);\r\n\r\n\t\t\tmask.appendChild(maskOverlay);\r\n\t\t\tmask.appendChild(maskFocusBar);\r\n\r\n\t\t\tbody.appendChild(mask);\r\n\r\n\t\t\tconst storedHeight = localStorage.getItem(this.SCREEN_MASK_HEIGHT_KEY);\r\n\t\t\tconst height = storedHeight ? JSON.parse(storedHeight) : this.focusBarHeight;\r\n\t\t\tthis.focusBarHeight = height;\r\n\r\n\t\t\tthis.updateFocusBar();\r\n\r\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\t\tthis.listener = (event: any) => {\r\n\t\t\t\tconst mouseY = event.clientY - this.focusBarHeight / 2;\r\n\t\t\t\tmaskFocusBar.style.height = `${this.focusBarHeight}px`;\r\n\t\t\t\tmaskFocusBar.style.top = `${mouseY}px`;\r\n\t\t\t\tconst clipPathValue = `polygon(0px 0px, 100% 0px, 100% ${mouseY}px, 0px ${mouseY}px, 0px ${mouseY + this.focusBarHeight}px, 100% ${\r\n\t\t\t\t\tmouseY + this.focusBarHeight\r\n\t\t\t\t}px, 100% 100%, 0px 100%)`;\r\n\t\t\t\tmaskOverlay.style.clipPath = clipPathValue;\r\n\t\t\t};\r\n\r\n\t\t\tbody.addEventListener('mousemove', this.listener);\r\n\t\t}\r\n\t}\r\n\r\n\tincreaseFocusBar(): void {\r\n\t\tthis.focusBarHeight += 10;\r\n\t\tthis.updateFocusBar();\r\n\t}\r\n\r\n\tdecreaseFocusBar(): void {\r\n\t\tthis.focusBarHeight = Math.max(40, this.focusBarHeight - 10);\r\n\t\tthis.updateFocusBar();\r\n\t}\r\n\r\n\tupdateFocusBar(): void {\r\n\t\tconst maskFocusBar = document.querySelector(`.${this.FOCUS_BAR_CLASS}`) as HTMLElement;\r\n\t\tconst maskOverlay = document.querySelector(`.${this.MASK_OVERLAY_CLASS}`) as HTMLElement;\r\n\r\n\t\tif (maskFocusBar && maskOverlay) {\r\n\t\t\tconst mouseY = parseInt(maskFocusBar.style.top || '0');\r\n\r\n\t\t\tmaskFocusBar.style.height = `${this.focusBarHeight}px`;\r\n\t\t\tconst clipPathValue = `polygon(0px 0px, 100% 0px, 100% ${mouseY}px, 0px ${mouseY}px, 0px ${mouseY + this.focusBarHeight}px, 100% ${\r\n\t\t\t\tmouseY + this.focusBarHeight\r\n\t\t\t}px, 100% 100%, 0px 100%)`;\r\n\t\t\tmaskOverlay.style.clipPath = clipPathValue;\r\n\t\t}\r\n\r\n\t\tlocalStorage.setItem(this.SCREEN_MASK_HEIGHT_KEY, JSON.stringify(this.focusBarHeight));\r\n\t}\r\n\r\n\tcloseFocusBar(): void {\r\n\t\tconst body = document.querySelector('body')!;\r\n\t\tconst existingMask = document.querySelector(`.${this.MASK_CLASS}`);\r\n\r\n\t\tif (existingMask) {\r\n\t\t\tbody.removeChild(existingMask);\r\n\t\t\tbody.removeEventListener('mousemove', this.listener);\r\n\t\t\tlocalStorage.setItem('SCREEN_MASK', JSON.stringify(false));\r\n\t\t\tdocument.querySelector('.screen-mask-btn')?.classList.remove('active');\r\n\t\t}\r\n\t}\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { AccessibilityFontSizes } from '../models/accessibility-font-sizes.enum';\r\nimport { AccessibilityContrasts } from '../models/accessibility-contrasts.enum';\r\nimport { AccessibilityTextMagnifierService } from './accessibility-text-magnifier.service';\r\nimport { AccessibilityScreenMaskService } from './accessibility-screen-mask.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AccessibilityService {\r\n\treadonly fontSizeLocalStorageKey = 'ACCESSIBILITY_FONT_SIZE_IX';\r\n\treadonly contrastLocalStorageKey = 'ACCESSIBILITY_CONTRAST';\r\n\treadonly textMagnifierLocalStorageKey = 'TEXT_MAGNIFIER';\r\n\treadonly screenMaskLocalStorageKey = 'SCREEN_MASK';\r\n\r\n\tsizeIncreaseSubject = new Subject<boolean>();\r\n\tcontrastSubject = new Subject<string>();\r\n\r\n\treadonly #textMagnifier = inject(AccessibilityTextMagnifierService);\r\n\treadonly #screenMask = inject(AccessibilityScreenMaskService);\r\n\r\n\ttoggleScreenMask(): void {\r\n\t\tconst currnetStatus = this.getSavedScreenMaskStatus();\r\n\t\tconst oppositeStatus = JSON.stringify(!currnetStatus);\r\n\t\tthis.#screenMask.toggleScreenMask(!currnetStatus);\r\n\t\tlocalStorage.setItem(this.screenMaskLocalStorageKey, oppositeStatus);\r\n\t}\r\n\r\n\tcloseFocusBar(): void {\r\n\t\tthis.#screenMask.closeFocusBar();\r\n\t}\r\n\r\n\ttoggleTextMagnifier(): void {\r\n\t\tconst currnetStatus = this.getSavedTextMagnifierStatus();\r\n\t\tconst oppositeStatus = JSON.stringify(!currnetStatus);\r\n\t\tthis.#textMagnifier.toggleTextMagnifier(!currnetStatus);\r\n\t\tlocalStorage.setItem(this.textMagnifierLocalStorageKey, oppositeStatus);\r\n\t}\r\n\r\n\tgetSavedTextMagnifierStatus(): boolean {\r\n\t\tconst savedTextMagnifierStatus = JSON.parse(localStorage.getItem(this.textMagnifierLocalStorageKey) ?? 'false');\r\n\t\treturn savedTextMagnifierStatus;\r\n\t}\r\n\r\n\tgetSavedScreenMaskStatus(): boolean {\r\n\t\tconst savedScreenMaskStatus = JSON.parse(localStorage.getItem(this.screenMaskLocalStorageKey) ?? 'false');\r\n\t\treturn savedScreenMaskStatus;\r\n\t}\r\n\r\n\tsetSavedTextMagnifierStatus(): void {\r\n\t\tconst currnetStatus = this.getSavedTextMagnifierStatus();\r\n\t\tthis.#textMagnifier.toggleTextMagnifier(currnetStatus);\r\n\t}\r\n\r\n\tsetSavedScreenMaskStatus(): void {\r\n\t\tconst currnetStatus = this.getSavedScreenMaskStatus();\r\n\t\tthis.#screenMask.toggleScreenMask(currnetStatus);\r\n\t}\r\n\r\n\tsaveContrast(contrast: string): void {\r\n\t\tlocalStorage.setItem(this.contrastLocalStorageKey, contrast);\r\n\t}\r\n\r\n\tgetSavedContrast(): AccessibilityContrasts {\r\n\t\tconst savedContrast = localStorage.getItem(this.contrastLocalStorageKey);\r\n\t\treturn savedContrast as AccessibilityContrasts ?? AccessibilityContrasts.BASE;\r\n\t}\r\n\r\n\tgetSavedFontSize(): number {\r\n\t\tconst savedFontSizeIx = localStorage.getItem(this.fontSizeLocalStorageKey);\r\n\t\treturn JSON.parse(savedFontSizeIx ?? '0');\r\n\t}\r\n\r\n\tsaveFontSize(ix: number): void {\r\n\t\tlocalStorage.setItem(this.fontSizeLocalStorageKey, ix.toString());\r\n\t}\r\n\r\n\tsetFontSize(fontSizeIx: number): void {\r\n\t\tconst sizes = Object.values(AccessibilityFontSizes);\r\n\r\n\t\tif (fontSizeIx > 0) {\r\n\t\t\tthis.sizeIncreaseSubject.next(true);\r\n\t\t} else {\r\n\t\t\tthis.sizeIncreaseSubject.next(false);\r\n\t\t}\r\n\r\n\t\tdocument.querySelector('html')!.style.fontSize = sizes[fontSizeIx];\r\n\t}\r\n\r\n\tsetContrast(contrast: string): void {\r\n\t\tthis.contrastSubject.next(contrast);\r\n\t\tdocument.querySelector('html')!.className = contrast;\r\n\t}\r\n}\r\n","<h1 mat-dialog-title class=\"text-2-xl\">{{ \"ACCESSIBILITY.TITLE\" | translate }}</h1>\r\n\r\n<div mat-dialog-content>\r\n\t<div class=\"font-size-wrapper\">\r\n\t\t<p class=\"settings-title\">\r\n\t\t\t{{ \"ACCESSIBILITY.FONT_SIZE_LABEL\" | translate }}\r\n\t\t</p>\r\n\r\n\t\t<mat-tab-group [selectedIndex]=\"selectedFontSizeIndex\" (selectedTabChange)=\"changeFontSize($event)\" animationDuration=\"0ms\">\r\n\t\t\t<mat-tab [label]=\"'100%'\"></mat-tab>\r\n\t\t\t<mat-tab [label]=\"'150%'\"></mat-tab>\r\n\t\t\t<mat-tab [label]=\"'200%'\"></mat-tab>\r\n\t\t</mat-tab-group>\r\n\t</div>\r\n\r\n\t<div class=\"contrast-wrapper\">\r\n\t\t<p class=\"settings-title\">\r\n\t\t\t{{ \"ACCESSIBILITY.CONTRAST_LABEL\" | translate }}\r\n\t\t</p>\r\n\r\n\t\t<div class=\"contrast-option-wrapper\">\r\n\t\t\t@for (contrast of contrasts; track contrast) {\r\n\t\t\t<button (click)=\"changeContrast(contrast)\" [class]=\"contrast\" [class.active]=\"contrast === currentContrast\" class=\"contrast-option\">\r\n\t\t\t\t<mat-icon class=\"material-icons-outlined\">visibility</mat-icon>\r\n\t\t\t</button>\r\n\t\t\t}\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"visual-tools-wrapper\">\r\n\t\t<p class=\"settings-title\">\r\n\t\t\t{{ \"ACCESSIBILITY.VISUAL_TOOLS_LABEL\" | translate }}\r\n\t\t</p>\r\n\r\n\t\t<button mat-stroked-button [class.active]=\"isTextMagnifierEnabled\" (click)=\"toggleTextMagnifier()\">\r\n\t\t\t{{ \"ACCESSIBILITY.TEXT_MAGNIFIER\" | translate }}\r\n\t\t</button>\r\n\r\n\t\t<button class=\"screen-mask-btn\" mat-stroked-button [class.active]=\"isScreenMaskEnabled\" (click)=\"toggleScreenMask()\">\r\n\t\t\t{{ \"ACCESSIBILITY.SCREEN_MASK\" | translate }}\r\n\t\t</button>\r\n\t</div>\r\n\r\n\t<div class=\"divider\"></div>\r\n\r\n\t<div class=\"feature-links-wrapper\">\r\n\t\t@for (feature of featureSources; track feature.text) {\r\n\t\t\t<a [href]=\"feature.link\" class=\"feature-link\">\r\n\t\t\t\t{{ feature.text | translate }} \r\n\t\t\t\t<mat-icon>arrow_forward_ios</mat-icon>\r\n\t\t\t</a>\r\n\t\t}\r\n\t</div>\r\n</div>\r\n\r\n<div mat-dialog-actions>\r\n\t<button mat-stroked-button (click)=\"reset()\">{{ \"ACCESSIBILITY.RESET\" | translate }}</button>\r\n\t<button mat-flat-button mat-dialog-close>{{ \"ACCESSIBILITY.CLOSE\" | translate }}</button>\r\n</div>\r\n","import { Component, inject, OnInit } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatTabChangeEvent, MatTabsModule } from '@angular/material/tabs';\r\nimport { AccessibilityService } from './services/accessibility.service';\r\nimport { AccessibilityContrasts } from './models/accessibility-contrasts.enum';\r\n\r\n@Component({\r\n\tselector: 'lib-accessibility-dialog',\r\n\timports: [MatDialogModule, TranslateModule, MatButtonModule, MatTabsModule, MatIconModule],\r\n\ttemplateUrl: './accessibility-dialog.component.html',\r\n\tstyleUrl: './accessibility-dialog.component.scss',\r\n})\r\nexport class AccessibilityDialogComponent implements OnInit {\r\n\tisTextMagnifierEnabled!: boolean;\r\n\tisScreenMaskEnabled!: boolean;\r\n\tselectedFontSizeIndex!: number;\r\n\tcurrentContrast = AccessibilityContrasts.BASE;\r\n\r\n\treadonly #accessibility = inject(AccessibilityService);\r\n\r\n\treadonly contrasts = Object.values(AccessibilityContrasts);\r\n\r\n\treadonly data = inject<{ baseUrl: string }>(MAT_DIALOG_DATA);\r\n\r\n\tfeatureSources: {text: string, link: string}[] = [];\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.selectedFontSizeIndex = this.#accessibility.getSavedFontSize();\r\n\t\tthis.currentContrast = this.#accessibility.getSavedContrast();\r\n\t\tthis.isTextMagnifierEnabled = this.#accessibility.getSavedTextMagnifierStatus();\r\n\t\tthis.isScreenMaskEnabled = this.#accessibility.getSavedScreenMaskStatus();\r\n\r\n\t\tthis.setFeatureSources();\r\n\t}\r\n\r\n\tchangeContrast(contrast: AccessibilityContrasts): void {\r\n\t\tthis.currentContrast = contrast;\r\n\t\tthis.#accessibility.saveContrast(contrast);\r\n\t\tthis.#accessibility.setContrast(contrast);\r\n\t}\r\n\r\n\tchangeFontSize(e: MatTabChangeEvent): void {\r\n\t\tthis.selectedFontSizeIndex = e.index;\r\n\t\tthis.#accessibility.saveFontSize(this.selectedFontSizeIndex);\r\n\t\tthis.#accessibility.setFontSize(this.selectedFontSizeIndex);\r\n\t}\r\n\r\n\ttoggleTextMagnifier(): void {\r\n\t\tthis.#accessibility.toggleTextMagnifier();\r\n\t\tthis.isTextMagnifierEnabled = this.#accessibility.getSavedTextMagnifierStatus();\r\n\t}\r\n\r\n\ttoggleScreenMask(): void {\r\n\t\tthis.#accessibility.toggleScreenMask();\r\n\t\tthis.isScreenMaskEnabled = this.#accessibility.getSavedScreenMaskStatus();\r\n\t}\r\n\r\n\tcloseFocusBar(): void {\r\n\t\tthis.#accessibility.closeFocusBar();\r\n\t}\r\n\r\n\treset(): void {\r\n\t\tif (this.isTextMagnifierEnabled) {\r\n\t\t\tthis.toggleTextMagnifier();\r\n\t\t}\r\n\r\n\t\tif (this.isScreenMaskEnabled) {\r\n\t\t\tthis.toggleScreenMask();\r\n\t\t}\r\n\t\t\r\n\t\tthis.changeContrast(AccessibilityContrasts.BASE);\r\n\t\tthis.selectedFontSizeIndex = 0;\r\n\t\tthis.#accessibility.saveFontSize(this.selectedFontSizeIndex);\r\n\t\tthis.#accessibility.setFontSize(this.selectedFontSizeIndex);\r\n\t}\r\n\r\n\tprivate setFeatureSources(): void {\r\n\t\tthis.featureSources = [\r\n\t\t\t{\r\n\t\t\t\ttext: 'ACCESSIBILITY.EASY_TO_READ',\r\n\t\t\t\tlink: `${this.data.baseUrl}easy-read`,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttext: 'ACCESSIBILITY.OTHER_SETTINGS',\r\n\t\t\t\tlink: `${this.data.baseUrl}accessibility-features`,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttext: 'ACCESSIBILITY.NOTIFICATION',\r\n\t\t\t\tlink: `${this.data.baseUrl}accessibility-statement`,\r\n\t\t\t}\r\n\t\t]\r\n\t}\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslateLoader } from '@ngx-translate/core';\r\nimport { Observable, forkJoin, of } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class CustomTranslateLoader implements TranslateLoader {\r\n\tconstructor(private http: HttpClient) {}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\tgetTranslation(lang: string): Observable<any> {\r\n\t\tconst defaultTranslationsDirectory = `./assets/i18n/${lang}.json`;\r\n\t\tconst overrideDirectory = `./assets/i18n/overrides/${lang}.json`;\r\n\r\n\t\tconst defaultTranslations$ = this.http.get(defaultTranslationsDirectory).pipe(catchError(() => of({})));\r\n\t\tconst overrideTranslations$ = this.http.get(overrideDirectory).pipe(catchError(() => of({})));\r\n\r\n\t\treturn forkJoin([defaultTranslations$, overrideTranslations$]).pipe(\r\n\t\t\tmap(([defaultTranslations, overrideTranslations]) => {\r\n\t\t\t\treturn this.mergeDeep(defaultTranslations, overrideTranslations);\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\tprivate mergeDeep(target: any, source: any): any {\r\n\t\tconst output = { ...target };\r\n\t\tif (this.isObject(target) && this.isObject(source)) {\r\n\t\t\tObject.keys(source).forEach((key) => {\r\n\t\t\t\tif (this.isObject(source[key])) {\r\n\t\t\t\t\tif (!(key in target)) {\r\n\t\t\t\t\t\tObject.assign(output, { [key]: source[key] });\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\toutput[key] = this.mergeDeep(target[key], source[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tObject.assign(output, { [key]: source[key] });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn output;\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\tprivate isObject(item: any): boolean {\r\n\t\treturn item && typeof item === 'object' && !Array.isArray(item);\r\n\t}\r\n}\r\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport const translations: { [key: string]: any } = {\r\n\tlv: {\r\n\t\tCOOKIE_CONSENT: {\r\n\t\t\tDESCRIPTION:\r\n\t\t\t\t'Ar Jūsu piekrīšanu šajā vietnē izmantotas funkcionālās un analītiski statistiskās sīkdatnes. <br/> Ja piekrītat šo sīkdatņu izmantošanai, lūdzu, atzimējiet savu izvēli.',\r\n\t\t\tACCEPT: 'Apstiptināt',\r\n\t\t\tDECLINE: 'Noraidīt',\r\n\t\t\tCONFIGURE: 'Pielāgot izvēli',\r\n\t\t\tPRIVACY: 'Privātums',\r\n\t\t\tDETAILS: 'Detalizētāka informācija par izmantojamām sīkdatnēm',\r\n\t\t\tMORE_INFORMATION: {\r\n\t\t\t\tNAME: 'Nosaukums',\r\n\t\t\t\tPURPOSE: 'Mērķis',\r\n\t\t\t\tCATEGORY: 'Kategorija',\r\n\t\t\t\tDURATION: 'Apstrādes termiņš',\r\n\t\t\t\tALLOW_COOKIES: 'allowCookies',\r\n\t\t\t\tALLOW_COOKIES_PURPOSE: 'Saglabā lietotāja piekrišanu sīkdatņu izmantošanai un statistikas ieguvei.',\r\n\t\t\t\tFUNCTIONAL_COOKIES: 'Funkcionālās sīkdatnes',\r\n\t\t\t\tONE_YEAR: '1 gads',\r\n\t\t\t\tCULTURE: 'culture',\r\n\t\t\t\tCULTURE_PURPOSE: 'Saglabā lietotāja izvēlēto valodu, lai lietotājam katru reizi nav jāpārslēdz.',\r\n\t\t\t\tONE_MONTH: '1 mēnesis',\r\n\t\t\t\tPK_ID: '_pk_id',\r\n\t\t\t\tPK_ID_PURPOSE: 'Apmeklējuma uzskaites sīkdatne, kas pieglabā unikāla apmeklētāja ID.',\r\n\t\t\t\tANALYTICAL_COOKIES: 'Analītiskās statistiskās sīkdatnes',\r\n\t\t\t\tTHIRTEEN_MONTHS: '13 mēneši',\r\n\t\t\t\tPK_SES: '_pk_ses',\r\n\t\t\t\tPK_SES_PURPOSE: 'Sesijas sīkdatne, kas pieglabā datus par apmeklējumu.',\r\n\t\t\t\tSESSION_COOKIES: 'Sesijas sīkdatnes',\r\n\t\t\t\tTHIRTY_MINUTES: '30 min',\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\ten: {\r\n\t\tCOOKIE_CONSENT: {\r\n\t\t\tDESCRIPTION:\r\n\t\t\t\t'By your consent, functional and analytical cookies are used on this site. <br/> If you agree to the use of these cookies, please confirm your choice.',\r\n\t\t\tACCEPT: 'Accept',\r\n\t\t\tDECLINE: 'Decline',\r\n\t\t\tCONFIGURE: 'Configure choice',\r\n\t\t\tPRIVACY: 'Privacy',\r\n\t\t\tDETAILS: 'More information about the cookies used',\r\n\t\t\tMORE_INFORMATION: {\r\n\t\t\t\tNAME: 'Name',\r\n\t\t\t\tPURPOSE: 'Purpose',\r\n\t\t\t\tCATEGORY: 'Category',\r\n\t\t\t\tDURATION: 'Duration',\r\n\t\t\t\tALLOW_COOKIES: 'allowCookies',\r\n\t\t\t\tALLOW_COOKIES_PURPOSE: 'Saves user consent for cookie usage and statistics gathering.',\r\n\t\t\t\tFUNCTIONAL_COOKIES: 'Functional cookies',\r\n\t\t\t\tONE_YEAR: '1 year',\r\n\t\t\t\tCULTURE: 'culture',\r\n\t\t\t\tCULTURE_PURPOSE: \"Saves user selected language so it doesn't need to be switched every time.\",\r\n\t\t\t\tONE_MONTH: '1 month',\r\n\t\t\t\tPK_ID: '_pk_id',\r\n\t\t\t\tPK_ID_PURPOSE: 'Visit tracking cookie that stores unique visitor ID.',\r\n\t\t\t\tANALYTICAL_COOKIES: 'Analytical statistical cookies',\r\n\t\t\t\tTHIRTEEN_MONTHS: '13 months',\r\n\t\t\t\tPK_SES: '_pk_ses',\r\n\t\t\t\tPK_SES_PURPOSE: 'Session cookie that stores visit data.',\r\n\t\t\t\tSESSION_COOKIES: 'Session cookies',\r\n\t\t\t\tTHIRTY_MINUTES: '30 min',\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n};\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Observable, Subject } from \"rxjs\";\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AnalyticsService {\r\n\tcookieConsentSubject = new Subject<boolean>();\r\n\r\n\tgetCookieConsent(): Observable<boolean> {\r\n\t\treturn this.cookieConsentSubject.asObservable();\r\n\t}\r\n\r\n\tcookieConsentGiven(approved: boolean): void {\r\n\t\tthis.cookieConsentSubject.next(approved);\r\n\t}\r\n}","@if (!isClosed) {\r\n<section class=\"cookie-consent-container\">\r\n\t<div class=\"cookie-consent-content\">\r\n\t\t<div class=\"cookie-consent-description\" [innerHTML]=\"'COOKIE_CONSENT.DESCRIPTION' | translate\"></div>\r\n\r\n\t\t<div class=\"cookie-consent-actions\">\r\n\t\t\t<button mat-flat-button (click)=\"accept()\">{{ \"COOKIE_CONSENT.ACCEPT\" | translate }}</button>\r\n\t\t\t<button mat-stroked-button (click)=\"decline()\">{{ \"COOKIE_CONSENT.DECLINE\" | translate }}</button>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"cookie-consent-info\">\r\n\t\t\t<a [href]=\"privacyPolicyUrl\" class=\"cookie-consent-info--privacy\">{{ \"COOKIE_CONSENT.PRIVACY\" | translate }}</a>\r\n\t\t\t|\r\n\t\t\t<button class=\"cookie-consent-info--details\" (click)=\"toggleDetails()\">\r\n\t\t\t\t{{ \"COOKIE_CONSENT.DETAILS\" | translate }}\r\n\r\n\t\t\t\t@if (isDetailsVisible) {\r\n\t\t\t\t<mat-icon class=\"spin\">{{ \"keyboard_arrow_down\" }}</mat-icon>\r\n\t\t\t\t} @else {\r\n\t\t\t\t<mat-icon class=\"spin\">{{ \"keyboard_arrow_up\" }}</mat-icon>\r\n\t\t\t\t}\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"cookie-consent--details\" [class.cookie-consent--details-hidden]=\"!isDetailsVisible\">\r\n\t\t<table>\r\n\t\t\t<thead>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<th>{{ \"COOKIE_CONSENT.MORE_INFORMATION.NAME\" | translate }}</th>\r\n\t\t\t\t\t<th>{{ \"COOKIE_CONSENT.MORE_INFORMATION.PURPOSE\" | translate }}</th>\r\n\t\t\t\t\t<th>{{ \"COOKIE_CONSENT.MORE_INFORMATION.CATEGORY\" | translate }}</th>\r\n\t\t\t\t\t<th>{{ \"COOKIE_CONSENT.MORE_INFORMATION.DURATION\" | translate }}</th>\r\n\t\t\t\t</tr>\r\n\t\t\t</thead>\r\n\t\t\t<tbody>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.ALLOW_COOKIES\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.ALLOW_COOKIES_PURPOSE\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.FUNCTIONAL_COOKIES\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.ONE_YEAR\" | translate }}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.CULTURE\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.CULTURE_PURPOSE\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.FUNCTIONAL_COOKIES\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.ONE_MONTH\" | translate }}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.PK_ID\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.PK_ID_PURPOSE\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.ANALYTICAL_COOKIES\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.THIRTEEN_MONTHS\" | translate }}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.PK_SES\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.PK_SES_PURPOSE\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.SESSION_COOKIES\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.THIRTY_MINUTES\" | translate }}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t</tbody>\r\n\t\t</table>\r\n\t</div>\r\n</section>\r\n\r\n}\r\n","import { Component, inject, Input, OnInit } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { translations } from './translations/cookie-consent.translations';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { AnalyticsService } from '../services';\r\n\r\n@Component({\r\n\tselector: 'lib-cookie-consent',\r\n\timports: [TranslateModule, MatButtonModule, MatIconModule, MatCheckboxModule],\r\n\ttemplateUrl: './cookie-consent.component.html',\r\n\tstyleUrl: './cookie-consent.component.scss',\r\n})\r\nexport class CookieConsentComponent implements OnInit {\r\n\t@Input() script!: string;\r\n\t@Input() privacyPolicyUrl!: string;\r\n\r\n\treadonly #analytics = inject(AnalyticsService);\r\n\treadonly #translate = inject(TranslateService);\r\n\r\n\tisClosed = false;\r\n\tisDetailsVisible = false;\r\n\r\n\treadonly #COOKIE_CONSENT_ACCEPTED_KEY = 'cookie-consent-accepted';\r\n\treadonly #COOKIE_CONSENT_DECLINED_KEY = 'cookie-consent-declined';\r\n\r\n\tngOnInit(): void {\r\n const script = document.createElement('script');\r\n script.async = true;\r\n script.defer = true;\r\n script.innerHTML = this.script;\r\n document.body.appendChild(script);\r\n \r\n\t\tif (this.isCookieConsentConfigured()) {\r\n\t\t\tthis.isClosed = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst currentLang = this.#translate.getCurrentLang();\r\n\r\n\t\tthis.#translate.setTranslation(currentLang, translations[currentLang.split('-')[0]], true);\r\n\t}\r\n\r\n\ttoggleDetails(): void {\r\n\t\tthis.isDetailsVisible = !this.isDetailsVisible;\r\n\t}\r\n\r\n\taccept(): void {\r\n\t\tthis.isClosed = true;\r\n\t\tthis.#analytics.cookieConsentGiven(true);\r\n\t\tlocalStorage.setItem(this.#COOKIE_CONSENT_ACCEPTED_KEY, 'true');\r\n\t}\r\n\r\n\tdecline(): void {\r\n\t\tthis.isClosed = true;\r\n\t\tlocalStorage.setItem(this.#COOKIE_CONSENT_DECLINED_KEY, 'true');\r\n\t}\r\n\r\n\tprivate isCookieConsentConfigured(): boolean {\r\n\t\tconst isAccepted = localStorage.getItem(this.#COOKIE_CONSENT_ACCEPTED_KEY) === 'true';\r\n\r\n\t\tconst isDeclined = localStorage.getItem(this.#COOKIE_CONSENT_DECLINED_KEY) === 'true';\r\n\r\n\t\tif (isAccepted) {\r\n this.accept();\r\n\t\t}\r\n\r\n\t\treturn isAccepted || isDeclined;\r\n\t}\r\n}\r\n","/*\r\n * Public API Surface of ngx-common\r\n */\r\n\r\nexport * from './lib/services';\r\nexport * from './lib/inline-message';\r\nexport * from './lib/pipes';\r\nexport * from './lib/directives';\r\nexport * from './lib/close-button';\r\nexport * from './lib/notification-message';\r\nexport * from './lib/tld-loader'\r\nexport * from './lib/helpers';\r\nexport * from './lib/company-product';\r\nexport * from './lib/footer';\r\nexport * from './lib/file-upload';\r\nexport * from './lib/filter-bar';\r\nexport * from './lib/multi-functional-table';\r\nexport * from './lib/confirmation-modal';\r\nexport * from './lib/terminology';\r\nexport * from './lib/open-close-button';\r\nexport * from './lib/constants';\r\nexport * from './lib/extension-dialog';\r\nexport * from './lib/status-display';\r\nexport * from './lib/text-to-speech';\r\nexport * from './lib/llm';\r\nexport * from './lib/sidebar';\r\nexport * from './lib/toast';\r\nexport * from './lib/core';\r\nexport * from './lib/global-message';\r\nexport * from './lib/subscription';\r\nexport * from './lib/new-feature-dialog';\r\nexport * from './lib/accessibility';\r\nexport * from './lib/custom-translate-loader';\r\nexport * from './lib/analytics';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","_c0","i2.TerminologyConfigService","i1.SystemApiService","_c1","icons","i1.IconService","i1.ExtensionDialogService","_c3","_c2","_forTrack0","i1.DOMService","i1.TerminologyConfigService","i2.EngineTermApiService","i2.AlertService","i3.TerminologyCollectionService","i4.TerminologyApiService","i1.TerminologyService","i1.TerminologyCollectionService","i3.TerminologyService","i2.TerminologyService","i3.IconService","i4","i5","i7","i2.IconService","i2.LanguageTranslateService","i3","catchError","map"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAOa,WAAW,CAAA;IACtB,WAAA,CAA6B,YAA6B,EACvC,SAAuB,EAAA;QADb,IAAA,CAAA,YAAY,GAAZ,YAAY;QACtB,IAAA,CAAA,SAAS,GAAT,SAAS;IAC5B;;;;AAKA,IAAA,aAAa,CAAC,KAAU,EAAA;AACtB,QAAA,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;YACvB,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5G;IACF;IAEA,mBAAmB,CAAC,IAAY,EAAE,GAAW,EAAA;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC;IACxF;IAEA,aAAa,CAAC,IAAY,EAAE,SAAkB,EAAA;AAC5C,QAAA,SAAS;AACP,YAAA,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC;AAC1G,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACxF;4GAtBW,WAAW,EAAA,EAAA,CAAA,QAAA,CAAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,IAAA,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;uEAAX,WAAW,EAAA,OAAA,EAAX,WAAW,CAAA,IAAA,EAAA,UAAA,EAFV,MAAM,EAAA,CAAA,CAAA;;iFAEP,WAAW,EAAA,CAAA;cAHvB,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE;AACb,aAAA;;;ACJD,MAAM,aAAa,GAAmB,OAAO,YAAY,KAAK,WAAW,GAAG,YAAY,GAAG,IAAI;AAC/F,MAAM,OAAO,GAAkB,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,IAAI;MAK/D,UAAU,CAAA;AACrB,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,aAAa;IACtB;2GAPW,UAAU,GAAA,CAAA,CAAA,CAAA,CAAA;uEAAV,UAAU,EAAA,OAAA,EAAV,UAAU,CAAA,IAAA,EAAA,UAAA,EAFT,MAAM,EAAA,CAAA,CAAA;;iFAEP,UAAU,EAAA,CAAA;cAHtB,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA;;;;MCEY,oBAAoB,CAAA;AANjC,IAAA,WAAA,GAAA;;;AASY,QAAA,IAAA,CAAA,QAAQ,GAAsB,IAAI,YAAY,EAAE;QACjD,IAAA,CAAA,QAAQ,GAAG,cAAc;AASnC,IAAA;IAHC,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B;qHAZW,oBAAoB,GAAA,CAAA,CAAA,CAAA,CAAA;oEAApB,oBAAoB,EAAA,SAAA,EAAA,CAAA,CAAA,kBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,0BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;YCTjC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,CAE0B;;;AADG,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,qDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,aAAS,CAAA,CAAA,CAAA,CAAA,CAAC;YAE5C,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAA6B;YACzB,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,SAAA,CACJ;AACJ,YADI,iBAAO,EACF;;AAJL,YAFI,8DAAkC,CAAA,UAAA,EAAA,GAAA,CAAA,QAAA,CAEjB;;;;iFDOZ,oBAAoB,EAAA,CAAA;cANhC,SAAS;AAEI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAEhB,KAAK,EAAA,QAAA,EAAA,kRAAA,EAAA;gBAKT,QAAQ,EAAA,CAAA;kBAAjB;YACQ,QAAQ,EAAA,CAAA;kBAAhB;YAEyB,WAAW,EAAA,CAAA;kBAApC,SAAS;mBAAC,aAAa;YACf,QAAQ,EAAA,CAAA;kBAAhB;YACQ,OAAO,EAAA,CAAA;kBAAf;;kFARU,oBAAoB,EAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MEcpB,iBAAiB,CAAA;kHAAjB,iBAAiB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAjB,iBAAiB,EAAA,CAAA,CAAA;uEAT1B,YAAY;YACZ,eAAe;YACf,eAAe;YACf,gBAAgB,CAAA,EAAA,CAAA,CAAA;;iFAMP,iBAAiB,EAAA,CAAA;cAd7B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE;oBACZ;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP,YAAY;oBACZ,eAAe;oBACf,eAAe;oBACf;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD;AACF,aAAA;;wFACY,iBAAiB,EAAA,EAAA,YAAA,EAAA,CAZ1B,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAGpB,YAAY;QACZ,eAAe;QACf,eAAe;AACf,QAAA,gBAAgB,aAGhB,oBAAoB,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;;;ICXd,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAC0E;;;;IAAxE,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,OAAA,CAAA,KAAA,EAAA,MAAA,CAAA,OAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAAmE;;;IAGnE,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAA2G;;;;IAA7E,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,OAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAAqE;;;IAFrG,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAA6C;IAC3C,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAgF;;IAChF,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAoG;IACtG,EAAA,CAAA,YAAA,EAAI;;;IAFI,EAAA,CAAA,SAAA,EAAkE;IAAlE,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,OAAA,CAAA,IAAA,EAAA,MAAA,CAAA,OAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAAkE;IACjE,EAAA,CAAA,SAAA,CAAA,CAAA,CAAqB;IAArB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAqB;;;IAU9B,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,CAA6C;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA8B;IAAA,EAAA,CAAA,YAAA,EAAW;;;IAAzC,EAAA,CAAA,SAAA,EAA8B;IAA9B,EAAA,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,kBAAA,CAA8B;;;;IAP7E,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAMC;IADC,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,sEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,OAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,OAAA,CAAA,mBAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAwC;IAExC,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,yDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAA6C;IAC7C,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;IAAA,EAAA,CAAA,YAAA,EAAS;;;IAFI,EAAA,CAAA,SAAA,EAAgC;IAAhC,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,OAAA,CAAA,kBAAA,CAAgC;IAC3C,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,OAAA,CAAA,kBAAA,CAAA,EAAA,GAAA,CACF;;;;IACA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,EAAA,CAAmL;AAA1B,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,SAAA,8FAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAY,mBAAY,CAAA,CAAA,CAAA,CAAA,CAAC;IAClL,EAAA,CAAA,YAAA,EAAmB;;;IAD8E,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,CAAA,MAAA,CAAA,OAAA,CAAA,KAAA,IAAA,CAAA,MAAA,CAAA,OAAA,CAAA,IAAA,CAAuD;;;;IAKxJ,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAC0B;AAAxB,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,6EAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,oBAAa,CAAA,CAAA,CAAA,CAAA,CAAC;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CAAmC;;IAAA,EAAA,CAAA,YAAA,EAAS;;;IAA5C,EAAA,CAAA,SAAA,EAAmC;IAAnC,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,OAAA,CAAA,UAAA,CAAA,EAAA,GAAA,CAAmC;;;;IAC7D,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CACiC;AAD2C,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,mEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,kBAAW,CAAA,CAAA,CAAA,CAAA,CAAC;IAChE,EAAA,CAAA,MAAA,CAAA,CAAA,CACpB;;IAAA,EAAA,CAAA,YAAA,EAAI;;;;IADgB,EAAA,CAAA,SAAA,EACpB;IADoB,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,OAAA,CAAA,QAAA,CAAA,CACpB;;;;IACb,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CACsC;AADwC,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,mEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,kBAAW,CAAA,CAAA,CAAA,CAAA,CAAC;IAC7D,EAAA,CAAA,MAAA,CAAA,CAAA,CACzB;;IAAA,EAAA,CAAA,YAAA,EAAI;;;IADf,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAC,KAAA,EAAA,MAAA,CAAA,OAAA,CAAA,UAAA,CAAA,CAAmC;IAAC,EAAA,CAAA,SAAA,EACzB;IADyB,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,OAAA,CAAA,QAAA,CAAA,CACzB;;;IATf,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CACuE;IACrE,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAC0B,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAEO,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAGK;IAExC,EAAA,CAAA,YAAA,EAAM;;;IARkE,EAAA,CAAA,SAAA,EAAwB;IAAxB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,OAAA,CAAA,UAAA,CAAwB;IAE9D,EAAA,CAAA,SAAA,EAA0C;IAA1C,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,OAAA,CAAA,QAAA,IAAA,MAAA,CAAA,OAAA,CAAA,QAAA,CAA0C;IAG1C,EAAA,CAAA,SAAA,EAA4C;IAA5C,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,OAAA,CAAA,UAAA,IAAA,MAAA,CAAA,OAAA,CAAA,QAAA,CAA4C;;MC1BvE,4BAA4B,CAAA;AANzC,IAAA,WAAA,GAAA;AASY,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE;AAClC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE;AACjC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE;AAIjC,QAAA,IAAA,CAAA,SAAS,GAAiD;AACjE,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,SAAS,EAAE,cAAc;AACzB,YAAA,SAAS,EAAE,MAAM;SAClB;AAmBF,IAAA;IAhBC,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE;IACxD;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/B;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B;6HAhCW,4BAA4B,GAAA,CAAA,CAAA,CAAA,CAAA;oEAA5B,4BAA4B,EAAA,SAAA,EAAA,CAAA,CAAA,8BAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,UAAA,EAAA,KAAA,EAAA,eAAA,EAAA,aAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,EAAA,KAAA,CAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,cAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,cAAA,EAAA,CAAA,EAAA,eAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,KAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,cAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,UAAA,CAAA,EAAA,CAAA,UAAA,EAAA,KAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,CAAA,OAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,YAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,qCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YDVzC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAgD,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAEyD,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAClD;YACjD,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;YAAA,EAAA,CAAA,YAAA,EAAO;YACP,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAoC,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACd,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACiB;AAGjC,YAFA,yEACsE,CAAA,CAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CACzB;YAI/C,EAAA,CAAA,YAAA,EAAM;AAWN,YAVA,mFAMC,CAAA,EAAA,EAAA,yDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,CAIkL;YAErL,EAAA,CAAA,YAAA,EAAM;YACN,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACuE;YAUzE,EAAA,CAAA,YAAA,EAAM,EACF,EACF;;AA1CD,YAAA,EAAA,CAAA,UAAA,CAAA,yDAA0C,CAAA;YAC6C,EAAA,CAAA,SAAA,EAAuB;YAAvB,EAAA,CAAA,WAAA,CAAA,QAAA,EAAA,GAAA,CAAA,MAAA,CAAuB;YAAlD,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,QAAA,CAA0B;;YAGrF,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;YADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,GAAA,CAAA,SAAA,CAAA,GAAA,CAAA,OAAA,CAAA,IAAA,CAAA,EAAA,GAAA,CACF;YAIU,EAAA,CAAA,SAAA,CAAA,CAAA,CAAmB;YAAnB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,CAAA,KAAA,CAAmB;YAEnB,EAAA,CAAA,SAAA,EAAkB;YAAlB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,CAAA,IAAA,CAAkB;YAMrB,EAAA,CAAA,SAAA,EAAgC;YAAhC,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,CAAA,kBAAA,CAAgC;YAShB,EAAA,CAAA,SAAA,EAAuD;YAAvD,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,OAAA,CAAA,SAAA,IAAA,CAAA,GAAA,CAAA,OAAA,CAAA,kBAAA,CAAuD;YAIzE,EAAA,CAAA,SAAA,EAAkE;YAAlE,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,CAAA,UAAA,IAAA,GAAA,CAAA,OAAA,CAAA,QAAA,IAAA,GAAA,CAAA,OAAA,CAAA,UAAA,CAAkE;;;iFCpB9D,4BAA4B,EAAA,CAAA;cANxC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,cAG5B,KAAK,EAAA,QAAA,EAAA,g+EAAA,EAAA,MAAA,EAAA,CAAA,iyIAAA,CAAA,EAAA;gBAGV,OAAO,EAAA,CAAA;kBAAf;YAES,aAAa,EAAA,CAAA;kBAAtB;YACS,YAAY,EAAA,CAAA;kBAArB;YACS,WAAW,EAAA,CAAA;kBAApB;YAEQ,MAAM,EAAA,CAAA;kBAAd;;kFAPU,4BAA4B,EAAA,EAAA,SAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCmB5B,yBAAyB,CAAA;0HAAzB,yBAAyB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAzB,yBAAyB,EAAA,CAAA,CAAA;uEAZlC,YAAY;YACZ,gBAAgB;YAChB,iBAAiB;YACjB,eAAe;YACf,eAAe;YACf,YAAY;YACZ,aAAa,CAAA,EAAA,CAAA,CAAA;;iFAMJ,yBAAyB,EAAA,CAAA;cAjBrC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE;oBACZ;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP,YAAY;oBACZ,gBAAgB;oBAChB,iBAAiB;oBACjB,eAAe;oBACf,eAAe;oBACf,YAAY;oBACZ;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD;AACF,aAAA;;wFACY,yBAAyB,EAAA,EAAA,YAAA,EAAA,CAflC,4BAA4B,CAAA,EAAA,OAAA,EAAA,CAG5B,YAAY;QACZ,gBAAgB;QAChB,iBAAiB;QACjB,eAAe;QACf,eAAe;QACf,YAAY;AACZ,QAAA,aAAa,aAGb,4BAA4B,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;IC1BpB;AAAZ,CAAA,UAAY,uBAAuB,EAAA;AAC/B,IAAA,uBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,uBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,uBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,uBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,uBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACnB,CAAC,EANW,uBAAuB,KAAvB,uBAAuB,GAAA,EAAA,CAAA,CAAA;;ACA5B,MAAM,yBAAyB,GAAG;;ACAzC;MAWa,YAAY,CAAA;AACvB,IAAA,WAAA,CAA4E,MAA0B,EAAA;QAA1B,IAAA,CAAA,MAAM,GAAN,MAAM;AAE1E,QAAA,IAAA,CAAA,cAAc,GAAiC,IAAI,OAAO,EAAE;QASnD,IAAA,CAAA,eAAe,GAAG,eAAe;QACjC,IAAA,CAAA,QAAQ,GAAG,SAAS;QACpB,IAAA,CAAA,qBAAqB,GAAG,IAAI;;QAE5B,IAAA,CAAA,YAAY,GAAG,QAAQ;;QAEvB,IAAA,CAAA,cAAc,GAAG,UAAU;QAC3B,IAAA,CAAA,mBAAmB,GAAG,eAAe;IAlBmD;AAIzG,IAAA,IAAI,aAAa,GAAA;QACf,OAAO;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;AAC/B,YAAA,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;SACvC;IACH;AAWA,IAAA,YAAY,CAAC,KAAW,EAAA;QACtB,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACtB;AACA,QAAA,IAAI,CAAC,KAAK,CACR,GAAG,IAAI,CAAC,QAAQ,CAAA,EAAG,IAAI,CAAC,eAAe,CAAA,CAAE,EACzC,KAAK,EACL,IAAI,CAAC,aAAa,CACnB;IACH;IAEA,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;IAC3C;IAEA,KAAK,CAAC,IAAY,EAAE,MAAY,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;IAC9D;IAEA,IAAI,CAAC,IAAY,EAAE,MAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;IAC7D;IAEA,OAAO,CAAC,IAAY,EAAE,MAAY,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;IAChE;AAEA,IAAA,KAAK,CAAC,IAAY,EAAE,KAAU,EAAE,MAAY,EAAA;AAC1C,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC;IAC/D;AAEA,IAAA,OAAO,CAAC,IAAY,EAAE,MAAY,EAAE,SAAmB,EAAA;AACrD,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;IACtF;AAEA,IAAA,aAAa,CAAC,IAA6B,EAAE,IAAY,EAAE,MAAY,EAAE,SAAmB,EAAA;AAC1F,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;IACtD;AAEA,IAAA,eAAe,CAAC,KAAU,EAAE,uBAAA,GAAoC,EAAE,EAAE,MAAY,EAAA;QAC9E,IAAI,KAAK,EAAE;YACT,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC;YAElE,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC;gBACzD;YACF;QACF;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC1B;IAEA,gCAAgC,CAAC,KAAc,EAAE,uBAAiC,EAAA;QAIhF,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC;QAC7E,IAAI,aAAa,GAAG,IAAI;QAExB,IAAI,mBAAmB,EAAE;YACvB,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC;QAC1E;QAEA,OAAO;AACL,YAAA,WAAW,EAAE,mBAA6B;AAC1C,YAAA,KAAK,EAAE,aAAuB;SAC/B;IACH;IAEQ,YAAY,CAAC,KAAU,EAAE,uBAAiC,EAAA;QAChE,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,QAAQ,GAAG,IAAI;QACnB,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM;QAClE,IACE,KAAK,YAAY,iBAAiB;YAClC,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,MAAM,CAAC,EAC5D;YACA,QAAQ,GAAG,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,MAAM;QACtD;AAAO,aAAA,IAAI,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AAC7C,YAAA,QAAQ,GAAG,KAAK,CAAC,SAAS;QAC5B;aAAO,IACL,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,SAAS,CAAC,EAC/D;YACA,QAAQ,GAAG,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,SAAS;QACzD;aAAO,IAAI,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;AACpD,YAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS;QACnC;AAAO,aAAA,IAAI,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACzC,YAAA,QAAQ,GAAG,KAAK,CAAC,KAAK;QACxB;AAAO,aAAA,IACL,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EACtE;YACA,QAAQ,GAAG,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS;QAChE;AAAO,aAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;AACnF,YAAA,QAAQ,GAAG,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI;QAClE;QAEA,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvD,gBAAA,MAAM,MAAM,GAAG,uBAAuB,CAAC,CAAC,CAAC;AACzC,gBAAA,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC;AACzC,gBAAA,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;oBAC5B,QAAQ,GAAG,GAAG,MAAM,CAAA,CAAA,EAAI,KAAK,CAAC,SAAS,EAAE;oBACzC;gBACF;YACF;QACF;QACA,OAAO,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC;IAC3D;IAEQ,IAAI,CACV,IAA6B,EAC7B,IAAY,EACZ,KAAU,EACV,MAAY,EACZ,SAAmB,EACnB,SAAmB,EAAA;;AAGnB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI;AAC/D,QAAA,MAAM,OAAO,GAAwB;YACnC,IAAI,EAAE,IAAI,KAAK,KAAK,GAAG,SAAS,GAAG,IAAI;YACvC,KAAK;YACL,IAAI;YACJ,kBAAkB,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,MAAM,EAAE;AACxD,YAAA,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAW;AAC/C,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,SAAS,EAAE;SACZ;QACD,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,CAAC,KAAK,GAAG,KAAK;QACvB;AACA,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;IACnC;AAEQ,IAAA,iBAAiB,CAAC,IAAY,EAAA;AACpC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC;AAC3D,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC;QAErE,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,OAAO,KAAK,IAAI,EAAE;AAClD,YAAA,OAAO,OAAO;QAChB;aAAO,IACL,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,YAAY,KAAK,IAAI,EACxD;AACA,YAAA,OAAO,YAAY;QACrB;AAEA,QAAA,OAAO,IAAI;IACb;IAEQ,WAAW,CAAC,IAAY,EAAE,OAAe,EAAA;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7B,IAAI,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE;AAC1D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE;gBACT,kBAAkB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACvD;YACA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACjC,gBAAA,OAAO,IAAI;YACb;QACF;AACA,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,OAAO;AACtD,QAAA,OAAO,kBAAkB,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI;IACjE;AA1LW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,SAAA,oBAAA,CAAA,iBAAA,EAAA,EAAA,OAAA,KAAA,iBAAA,IAAA,YAAY,cACS,yBAAyB,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;uEAD9C,YAAY,EAAA,OAAA,EAAZ,YAAY,CAAA,IAAA,EAAA,UAAA,EAFX,MAAM,EAAA,CAAA,CAAA;;iFAEP,YAAY,EAAA,CAAA;cAHxB,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA;;sBAEc;;sBAAY,MAAM;uBAAC,yBAAyB;;;MCV9C,wBAAwB,CAAA;AACnC,IAAA,MAAM,CAAC,MAAuC,EAAA;;QAE5C,OAAQ,MAAM,CAAC,iBAAyB,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG;IACjE;AACD;;MCPY,cAAc,CAAA;AACzB,IAAA,OAAO,QAAQ,CAAC,OAAe,EAAE,QAAgB,EAAA;QAC/C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC/B;AAEA,IAAA,OAAO,QAAQ,CAAC,IAAU,EAAE,QAAgB,EAAA;QAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QACxB,IAAI,CAAC,KAAK,EAAE;QACZ,IAAI,CAAC,MAAM,EAAE;IACf;AACD;;MCbY,sBAAsB,CAAA;AACjC,IAAA,OAAO,UAAU,CAAC,YAAyB,EAAE,mBAA4B,EAAA;QACvE,MAAM,QAAQ,GAAG,EAAE;QACnB,MAAM,IAAI,GAAG,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAChD,QAAA,MAAM,cAAc,GAAG,mBAAmB,GAAG,CAAA,QAAA,EAAW,mBAAmB,CAAA,WAAA,EAAc,mBAAmB,CAAA,EAAA,CAAI,GAAG,OAAO;AAC1H,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,cAAc,CAAC;;YAErD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,OAAY,KAAK,CAAA,CAAA,EAAI,OAAO,CAAC,SAAS,CAAA,CAAA,CAAG,CAAC;YAC/E,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC;AACA,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;AACD;;ACbD;MACa,iBAAiB,CAAA;IAC5B,OAAO,cAAc,CAAC,QAAgB,EAAA;QACpC,MAAM,WAAW,GAAQ,EAAE;QAE3B,IAAI,QAAQ,EAAE;AACZ,YAAA,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ;QACrC;AAEA,QAAA,WAAW,CAAC,cAAc,CAAC,GAAG,kBAAkB;AAEhD,QAAA,OAAO,WAAW;IACpB;IAEA,OAAO,mBAAmB,CAAC,KAAa,EAAA;QACtC,MAAM,WAAW,GAAQ,EAAE;QAC3B,IAAI,KAAK,EAAE;AACT,YAAA,WAAW,CAAC,UAAU,CAAC,GAAG,KAAK;QACjC;AACA,QAAA,OAAO,WAAW;IACpB;AACD;;MCrBY,mBAAmB,CAAA;IAC9B,OAAO,gBAAgB,CAAC,QAAgB,EAAA;AACtC,QAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE;IACpE;AACD;;MCJY,gBAAgB,CAAA;IAC3B,OAAO,SAAS,CAAC,KAAa,EAAA;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;IACpC;IAEA,OAAO,gBAAgB,CAAC,QAAgB,EAAA;AACtC,QAAA,OAAO;aACJ,OAAO,CAAC,IAAI,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAE,OAAO;AAClD,aAAA,WAAW,EAAE;IAClB;AACD;;MCVY,UAAU,CAAA;AACtB;;;;;;;;AAQG;;AAEH,IAAA,OAAO,WAAW,CAAC,SAAgB,EAAE,WAAkB,EAAE,SAAiB,EAAA;QACzE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YACvB,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACzD,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACzD,YAAA,OAAO,eAAe,GAAG,eAAe,IAAI,eAAe,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AAC5E,QAAA,CAAC,CAAC;IACH;AAEA;;;;AAIG;;AAEH,IAAA,OAAO,kBAAkB,CAAC,MAAa,EAAE,eAAwB,EAAA;;QAEhE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,KAAI;YAC9B,IAAI,CAAC,eAAe,EAAE;AACrB,gBAAA,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;YAC1B;YAEA,MAAM,WAAW,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE;YACpD,MAAM,WAAW,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE;AACpD,YAAA,OAAO,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC;AAC9C,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,MAAM;IACd;AAEA;;;;;AAKG;IACH,OAAO,YAAY,CAAI,MAAW,EAAE,eAAwB,EAAE,IAAI,GAAG,IAAI,EAAA;AACxE,QAAA,MAAM,aAAa,GAAG,CAAC,GAAM,EAAE,OAAgB,KAAY;AAC1D,YAAA,IAAI,CAAC,OAAO;AAAE,gBAAA,OAAO,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;YAErC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;YAC/B,IAAI,KAAK,GAAG,GAAG;AACf,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACvB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,GAAG,IAAI,KAAK,EAAE;;AAEvD,oBAAA,KAAK,GAAI,KAAa,CAAC,GAAG,CAAC;gBAC5B;YACD;AACA,YAAA,OAAO,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;AAC1B,QAAA,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YACpB,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,eAAe,CAAC;YACjD,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,eAAe,CAAC;AACjD,YAAA,OAAO,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO;AACpD,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,MAAM;IACd;AAEA;;;;;AAKG;IACH,OAAO,aAAa,CAAI,MAAW,EAAE,eAAwB,EAAE,IAAI,GAAG,IAAI,EAAA;AACzE,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAO,KAAa;YACrC,IAAI,eAAe,EAAE;;AAEpB,gBAAA,MAAM,KAAK,GAAI,IAAY,CAAC,eAAe,CAAC;AAC5C,gBAAA,OAAO,OAAO,CAAC,KAAK,CAAC;YACtB;AACA,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC;AACrB,QAAA,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACpB,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,YAAA,OAAO,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;AACxC,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,MAAM;IACd;AAEA;;;;;AAKG;AACH,IAAA,OAAO,oBAAoB,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAA;AAC9D,QAAA,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AACxE,QAAA,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AAExE,QAAA,IAAI,gBAAgB,IAAI,CAAC,gBAAgB,EAAE;YAC1C,OAAO,CAAC,CAAC;QACV;AAAO,aAAA,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,EAAE;AACjD,YAAA,OAAO,CAAC;QACT;aAAO;YACN,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACnG;IACD;AACA;;MCjHY,UAAU,CAAA;AACpB;;;AAGE;IACF,OAAO,gBAAgB,CAAC,IAAY,EAAA;;;AAGnC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO;aAC9C,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;aACpC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;aACpC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,QAAQ;aACvC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC;IAC5C;IAEA,OAAO,gBAAgB,CAAC,IAAY,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG;aAC9C,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG;aACpC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG;aACpC,OAAO,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,IAAI;aACvC,OAAO,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC;IAC5C;AACA;;;AAGG;IACH,OAAO,iBAAiB,CAAC,IAAY,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB;IAEA,OAAO,cAAc,CAAC,IAAc,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB;AAEA,IAAA,OAAO,WAAW,CAAC,IAAY,EAAE,MAAM,GAAG,GAAG,EAAA;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;;AAEjI,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACzB;IAEA,OAAO,SAAS,CAAC,IAAY,EAAA;;QAE3B,MAAM,UAAU,GAAG,q8DAAq8D;QACx9D,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QACtC,IAAI,QAAQ,EAAE;AACZ,YAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC;AACvB,YAAA,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE;AACzC,gBAAA,OAAO,GAAG;YACZ;QACF;AACA,QAAA,OAAO,IAAI;IACb;IAEA,OAAO,YAAY,CAAC,IAAY,EAAA;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM;IACzC;IAEA,OAAO,kBAAkB,CAAC,IAAY,EAAA;AACpC,QAAA,OAAO,IAAI,EAAE,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IACzG;AACD;;AC7DD;;;AAGE;AAEK,MAAM,WAAW,GAAG;AACzB,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,MAAM,EAAE,GAAG;AACX,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,MAAM,EAAE,IAAI;;;ACTd;;;AAGG;AACI,MAAM,kCAAkC,GAAG;;ICJtC;AAAZ,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,WAAA,CAAA,SAAA,CAAA,GAAA,GAAA,CAAA,GAAA,SAAa;AACf,CAAC,EAFW,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;;MCEV,gBAAgB,CAAA;AAC3B,IAAA,OAAO,WAAW,GAAA;AAChB,QAAA,OAAO,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC,KAAK;IAC9C;AACD;;ICNW;AAAZ,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,GAAW;AACX,IAAA,cAAA,CAAA,WAAA,CAAA,GAAA,IAAgB;AAChB,IAAA,cAAA,CAAA,WAAA,CAAA,GAAA,IAAgB;AAChB,IAAA,cAAA,CAAA,WAAA,CAAA,GAAA,IAAgB;AAClB,CAAC,EALW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;;ACQ1B;;AAEG;MACU,iBAAiB,CAAA;IAC5B,SAAS,CAAC,KAAa,EAAE,aAAA,GAAwB,CAAC,EAAE,IAAA,GAAuB,cAAc,CAAC,KAAK,EAAA;QAC7F,OAAO,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC;IACrD;kHAHW,iBAAiB,GAAA,CAAA,CAAA,CAAA,CAAA;uFAAjB,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;iFAAjB,iBAAiB,EAAA,CAAA;cAP7B,IAAI;AAAC,QAAA,IAAA,EAAA,CAAA;AACJ,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,UAAU,EAAE,IAAI;AACjB,aAAA;;;ACLM,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,aAAA,GAAwB,CAAC,EAAE,IAAA,GAAuB,cAAc,CAAC,KAAK,KAAY;AAC/H,IAAA,MAAM,WAAW,GAAG;AAClB,QAAA,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC;AACzB,QAAA,CAAC,cAAc,CAAC,SAAS,GAAG,IAAI;AAChC,QAAA,CAAC,cAAc,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC;AACrC,QAAA,CAAC,cAAc,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC;KACtC;IAED,MAAM,EAAE,GAAG,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC;IAChD,MAAM,EAAE,GAAG,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC;IAChD,MAAM,EAAE,GAAG,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC;IAEhD,MAAM,WAAW,GAAG,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;AAE5C,IAAA,IAAI,WAAW,IAAI,EAAE,EAAE;AACrB,QAAA,MAAM,QAAQ,GAAG,WAAW,GAAG,EAAE;QACjC,OAAO,CAAA,EAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK;IAChD;AAAO,SAAA,IAAI,WAAW,IAAI,EAAE,EAAE;AAC5B,QAAA,MAAM,QAAQ,GAAG,WAAW,GAAG,EAAE;QACjC,OAAO,CAAA,EAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK;IAChD;AAAO,SAAA,IAAI,WAAW,IAAI,EAAE,EAAE;AAC5B,QAAA,MAAM,QAAQ,GAAG,WAAW,GAAG,EAAE;QACjC,OAAO,CAAA,EAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK;IAChD;IAEA,OAAO,CAAA,EAAG,WAAW,CAAA,EAAA,CAAI;AAC3B;;AC5BA;AAMM,MAAO,wCAAyC,SAAQ,gBAAgB,CAAA;AACnE,IAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;YAC1C,IAAI,CAAC,eAAe,EAAE;AACxB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,aAAa,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAE,MAAc,KAAI;YACtE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5B,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,QAAQ;;;AAIlC,YAAA,MAAM,QAAQ,GACZ,UAAU,GAAG;kBACT,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,QAAQ,EAAE,MAAM;AACxC,kBAAE,UAAU,GAAG,QAAQ;YAE3B,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAC,UAAU,EAAE,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC;AAC3H,QAAA,CAAC;QAED,IAAI,CAAC,eAAe,EAAE;IACxB;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,0BAA0B,CAAC;QAC5E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,2BAA2B,CAAC;QACzE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,+BAA+B,CAAC;QACjF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,4BAA4B,CAAC;QAC3E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,2BAA2B,CAAC;AACzE,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;;;;;;;;;;;;;;;;;IAsBrB;yIArDW,wCAAwC,GAAA,CAAA,CAAA,CAAA,CAAA;AAAxC,IAAA,SAAA,IAAA,CAAA,KAAA,iBAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,wCAAwC,WAAxC,wCAAwC,CAAA,IAAA,EAAA,CAAA,CAAA;;iFAAxC,wCAAwC,EAAA,CAAA;cADpD;;;MCLY,UAAU,CAAA;IACrB,OAAO,UAAU,CAAC,QAAgB,EAAA;QAChC,IAAI,IAAI,GAAG,CAAC;AACZ,QAAA,IAAI,QAAQ,EAAE,MAAM,GAAG,CAAC,EAAE;AACxB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;gBACnC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI;AAChC,gBAAA,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;YACrB;QACF;AACA,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE;IACxB;AACD;;ACZD,IAAY,YAQX;AARD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,YAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,YAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,CAAC,EARW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;;ACAxB,IAAY,eAeX;AAfD,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,eAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,eAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC;AACrC,IAAA,eAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,eAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC;AACzC,IAAA,eAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACvC,IAAA,eAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,eAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,eAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AAC/B,IAAA,eAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,eAAA,CAAA,sBAAA,CAAA,GAAA,sBAA6C;AAC7C,IAAA,eAAA,CAAA,2BAAA,CAAA,GAAA,2BAAuD;AACvD,IAAA,eAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C;AAC3C,IAAA,eAAA,CAAA,0BAAA,CAAA,GAAA,0BAAqD;AACvD,CAAC,EAfW,eAAe,KAAf,eAAe,GAAA,EAAA,CAAA,CAAA;;ACApB,MAAM,YAAY,GAAG,OAAO;;MCMtB,wBAAwB,CAAA;AAHrC,IAAA,WAAA,GAAA;QAIU,IAAA,CAAA,WAAW,GAAsB,EAAE;QAM1B,IAAA,CAAA,aAAa,GAAG,uCAAuC;AAgCzE,IAAA;AApCC,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW;IACzB;AAIA,IAAA,WAAW,CAAC,aAAiC,EAAA;AAC3C,QAAA,MAAM,MAAM,GAAG,aAAa,IAAI,EAAE;QAElC,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,MAAM,EAAE,uBAAuB,IAAI,CAAC;QAC/E,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,MAAM,EAAE,uBAAuB,IAAI,GAAG;QACjF,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,MAAM,EAAE,OAAO;AAC1C,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,MAAM,EAAE,aAAa,IAAI,IAAI,CAAC,aAAa;AAC5E,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,MAAM,EAAE,aAAa,IAAI,IAAI,CAAC,aAAa;QAC5E,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,MAAM,EAAE,oBAAoB,IAAI,wBAAwB;QAChG,IAAI,CAAC,WAAW,CAAC,qBAAqB,GAAG,MAAM,EAAE,qBAAqB,IAAI,KAAK;QAC/E,IAAI,CAAC,WAAW,CAAC,gBAAgB,GAAG,MAAM,EAAE,gBAAgB,IAAI,KAAK;QACrE,IAAI,CAAC,WAAW,CAAC,6BAA6B,GAAG,MAAM,EAAE,6BAA6B,IAAI,IAAI;AAC9F,QAAA,IAAI,CAAC,WAAW,CAAC,qBAAqB,GAAG,MAAM,EAAE,qBAAqB,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,CAAC;QACjH,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,MAAM,EAAE,aAAa,IAAI,OAAO;QACjE,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,MAAM,EAAE,mBAAmB;QAClE,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,KAAK;QACjD,IAAI,CAAC,WAAW,CAAC,6BAA6B,GAAG,MAAM,EAAE,6BAA6B;QACtF,IAAI,CAAC,WAAW,CAAC,kCAAkC,GAAG,MAAM,EAAE,kCAAkC,IAAI,KAAK;QACzG,IAAI,CAAC,WAAW,CAAC,6BAA6B,GAAG,MAAM,EAAE,6BAA6B,IAAI,KAAK;QAC/F,IAAI,CAAC,WAAW,CAAC,oCAAoC,GAAG,MAAM,EAAE,oCAAoC,IAAI,KAAK;QAC7G,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,MAAM,EAAE,aAAa,IAAI,6CAA6C;QACvG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,6BAA6B;QAE/E,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,MAAM,EAAE,sBAAsB;QACxE,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,MAAM,EAAE,oBAAoB,IAAI,CAAC;QACzE,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,MAAM,EAAE,mBAAmB,IAAI,KAAK;AAC3E,QAAA,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,MAAM,EAAE,cAAc,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;QAC9E,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,MAAM,EAAE,KAAK;QACtC,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,UAAU;IAC1D;yHAtCW,wBAAwB,GAAA,CAAA,CAAA,CAAA,CAAA;uEAAxB,wBAAwB,EAAA,OAAA,EAAxB,wBAAwB,CAAA,IAAA,EAAA,UAAA,EAFvB,MAAM,EAAA,CAAA,CAAA;;iFAEP,wBAAwB,EAAA,CAAA;cAHpC,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA;;;MCQY,gBAAgB,CAAA;IAC3B,WAAA,CAA6B,IAAgB,EAAmB,MAAgC,EAAA;QAAnE,IAAA,CAAA,IAAI,GAAJ,IAAI;QAA+B,IAAA,CAAA,MAAM,GAAN,MAAM;IACtE;;AAEA,IAAA,aAAa,CAAC,mBAA6B,EAAA;AACzC,QAAA,MAAM,OAAO,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;AACzF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,CAAA,EAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAwB,CAAA,cAAA,CAAgB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CACrH,GAAG,CAAC,CAAC,UAAU,KAAI;YACjB,MAAM,gBAAgB,GAAa,EAAE;AACrC,YAAA,MAAM,mBAAmB,GAAmB,CAAC,YAAY,CAAC,SAAS,CAAC;YACpE,MAAM,sBAAsB,GAAsB,CAAC,eAAe,CAAC,oBAAoB,EAAE,eAAe,CAAC,mBAAmB,CAAC;YAE7H,IAAI,CAAC,mBAAmB,EAAE;AACxB,gBAAA,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;YAC5C;YAEA,MAAM,SAAS,GAAG,EAAE;YAEpB,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;gBACpC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE;AAE5C,gBAAA,IAAI,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,sBAAsB,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;oBACpG;gBACF;AAEA,gBAAA,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE;AACxD,oBAAA,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;gBAChG;qBAAO;AACL,oBAAA,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;gBAClG;AACF,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,gBAAgB;QACzB,CAAC,CAAC,CACH;IACH;AAEQ,IAAA,4BAA4B,CAAC,MAAc,EAAE,gBAA0B,EAAE,SAAqC,EAAA;QACpH,MAAM,OAAO,GAAa,EAAE;QAC5B,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,cAAc,KAAI;YAChD,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,cAAc,KAAI;AAChD,gBAAA,IAAI,cAAc,KAAK,cAAc,EAAE;oBACrC,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,uBAAuB,CAAC;AAElJ,oBAAA,IAAI,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;AACxF,wBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;oBACzB;gBACF;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,OAAO;IAChB;AAEQ,IAAA,0BAA0B,CAAC,MAAc,EAAE,gBAA0B,EAAE,SAAqC,EAAA;AAClH,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;QAC9B,MAAM,OAAO,GAAa,EAAE;AAE5B,QAAA,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE;AAC/B,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;;AAGjC,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS;AAClC,YAAA,KAAK,MAAM,cAAc,IAAI,SAAS,EAAE;AACtC,gBAAA,MAAM,eAAe,GAAG,SAAS,CAAC,cAAc,CAAC;;AAEjD,gBAAA,eAAe,CAAC,OAAO,CAAC,CAAC,cAAc,KAAI;oBACzC,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,uBAAuB,CAAC;AAE9I,oBAAA,IAAI,cAAc,KAAK,cAAc,EAAE;AACrC,wBAAA,IAAI,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;AACxF,4BAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;wBACzB;oBACF;AACF,gBAAA,CAAC,CAAC;YACJ;QACF;AACA,QAAA,OAAO,OAAO;IAChB;AAEQ,IAAA,wBAAwB,CAAC,SAAiB,EAAE,gBAA0B,EAAE,SAAqC,EAAE,MAAc,EAAA;AACnI,QAAA,MAAM,oBAAoB,GAAG,CAAA,EAAG,SAAS,CAAC,cAAc,CAAA,EAAG,SAAS,CAAC,cAAc,CAAA,EAAG,SAAS,CAAC,MAAM,EAAE;AAExG,QAAA,IAAI,SAAS,CAAC,oBAAoB,CAAC,EAAE;AACnC,YAAA,IAAI,MAAM,KAAK,YAAY,EAAE;AAC3B,gBAAA,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,cAAc,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC;AAC3L,gBAAA,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,SAAS;YAChD;AACA,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,SAAS,CAAC,oBAAoB,CAAC,GAAG,IAAI;AAEtC,QAAA,OAAO,IAAI;IACb;IAEQ,kBAAkB,CAAC,EAAU,EAAE,cAAsB,EAAE,cAAsB,EAAE,MAAc,EAAE,MAAc,EAAE,mBAA4B,EAAA;AACjJ,QAAA,MAAM,UAAU,GAAW;YACzB,cAAc;YACd,cAAc;AACd,YAAA,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;YAC5B,UAAU,EAAE,CAAA,EAAG,cAAc,CAAA,CAAA,EAAI,cAAc,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE;YAC3E,EAAE;YACF,MAAM;YACN;SACD;AAED,QAAA,OAAO,UAAU;IACnB;iHA1GW,gBAAgB,EAAA,EAAA,CAAA,QAAA,CAAAF,IAAA,CAAA,UAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAG,wBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;uEAAhB,gBAAgB,EAAA,OAAA,EAAhB,gBAAgB,CAAA,IAAA,EAAA,UAAA,EAFf,MAAM,EAAA,CAAA,CAAA;;iFAEP,gBAAgB,EAAA,CAAA;cAH5B,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA;;;MCJY,aAAa,CAAA;AACxB,IAAA,WAAA,CACmB,GAAqB,EAAA;QAArB,IAAA,CAAA,GAAG,GAAH,GAAG;IAClB;IAEJ,aAAa,CAAC,mBAAmB,GAAG,KAAK,EAAA;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC;IACpD;8GAPW,aAAa,EAAA,EAAA,CAAA,QAAA,CAAAC,gBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;uEAAb,aAAa,EAAA,OAAA,EAAb,aAAa,CAAA,IAAA,EAAA,UAAA,EAFZ,MAAM,EAAA,CAAA,CAAA;;iFAEP,aAAa,EAAA,CAAA;cAHzB,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA;;;MCDY,uBAAuB,CAAA;;AAGlC,IAAA,SAAS,CAAC,KAAY,EAAE,MAAc,EAAE,GAAY,EAAA;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAClB,YAAA,OAAO,CAAC,GAAG,KAAK,CAAC;QACnB;QAEA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;QAEtC,MAAM,WAAW,GAAG;AACjB,aAAA,GAAG,CAAC,CAAC,OAAO,KAAI;AACf,YAAA,MAAM,WAAW,GAAW,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO;YACxD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;YAEtC,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,OAAO,IAAI;YACb;;AAGA,YAAA,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAE5E,YAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,OAAO,KAAK,kCAAkC,OAAO,CAAA,OAAA,CAAS,CAAC;YAErH,OAAO;AACL,gBAAA,WAAW,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,GAAG,iBAAiB,EAAE,GAAG,iBAAiB;AAC/E,gBAAA,YAAY,EAAE;aACf;AACH,QAAA,CAAC;aACA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI;;AAE9B,aAAA,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,KAAI;;AAEvB,YAAA,OAAO,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY;AACxC,QAAA,CAAC;aACA,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,WAAW,CAAC;AACnC,QAAA,OAAO,WAAW;IACpB;wHArCW,uBAAuB,GAAA,CAAA,CAAA,CAAA,CAAA;6FAAvB,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;iFAAvB,uBAAuB,EAAA,CAAA;cAJnC,IAAI;AAAC,QAAA,IAAA,EAAA,CAAA;AACF,gBAAA,IAAI,EAAE,qBAAqB;AAC3B,gBAAA,UAAU,EAAE;AACf,aAAA;;;MCYY,yBAAyB,CAAA;0HAAzB,yBAAyB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAzB,yBAAyB,EAAA,CAAA,CAAA;uEANlC,YAAY,CAAA,EAAA,CAAA,CAAA;;iFAMH,yBAAyB,EAAA,CAAA;cAXrC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE;oBACZ;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD;AACF,aAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,yBAAyB,EAAA,EAAA,YAAA,EAAA,CATlC,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAGvB,YAAY,aAGZ,uBAAuB,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;ACd3B;AASA;;AAEG;MACU,oBAAoB,CAAA;AAE/B,IAAA,WAAA,CAAoB,SAA2B,EAAA;QAA3B,IAAA,CAAA,SAAS,GAAT,SAAS;IAAsB;AAEnD;;;;;;;AAOG;;IAEH,SAAS,CAAC,OAAmB,EAAE,kBAAiC,EAAE,GAAA,GAAqB,IAAI,EAAE,eAAuB,EAAE,cAAA,GAAgC,IAAI,EAAA;AACxJ,QAAA,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;QAC9B,IAAI,kBAAkB,EAAE;AACtB,YAAA,OAAO,IAAI,UAAU,CAAW,CAAC,UAAU,KAAI;AAC7C,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,KAAI;AACtE,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,YAAY,CAAC;AAC5D,oBAAA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;oBACtB,UAAU,CAAC,QAAQ,EAAE;AACvB,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;QACJ;aACK;YACH,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC7C;IACF;AAEQ,IAAA,WAAW,CAAC,KAAY,EAAE,GAAmB,EAAE,YAAkB,EAAA;QACvE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,KAAI;AACnC,YAAA,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/B,YAAA,MAAM,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,MAAM;AAE/E,YAAA,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/B,YAAA,MAAM,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,MAAM;YAE/E,IAAI,YAAY,GAAG,YAAY;gBAC7B,OAAO,CAAC,CAAC;iBACN,IAAI,YAAY,GAAG,YAAY;AAClC,gBAAA,OAAO,CAAC;;AAER,gBAAA,OAAO,CAAC;AACZ,QAAA,CAAC,CAAC;IACJ;qHA5CW,oBAAoB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;0FAApB,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;iFAApB,oBAAoB,EAAA,CAAA;cAPhC,IAAI;AAAC,QAAA,IAAA,EAAA,CAAA;AACF,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,UAAU,EAAE;AACf,aAAA;;;MCOY,sBAAsB,CAAA;uHAAtB,sBAAsB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAtB,sBAAsB,EAAA,CAAA,CAAA;uEAN/B,YAAY,CAAA,EAAA,CAAA,CAAA;;iFAMH,sBAAsB,EAAA,CAAA;cATlC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,gBAAA,OAAO,EAAE;oBACP;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD;AACF,aAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,sBAAsB,EAAA,EAAA,YAAA,EAAA,CARlB,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAEjC,YAAY,aAGZ,oBAAoB,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;ACLxB;;;AAGG;MACU,8BAA8B,CAAA;AACzC,IAAA,WAAA,CAAoB,SAA2B,EAAA;QAA3B,IAAA,CAAA,SAAS,GAAT,SAAS;IAAqB;AAElD;;;;;AAKG;;AAEH,IAAA,SAAS,CAAC,MAAa,EAAE,eAAuB,EAAE,eAAwB,EAAA;;QAExE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,KAAI;YAC7B,MAAM,kBAAkB,GAAG,eAAe,IAAI,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE;YACvG,MAAM,kBAAkB,GAAG,eAAe,IAAI,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE;AACvG,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,kBAAkB,CAAC,CAAC,WAAW,EAAE;AAChG,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,kBAAkB,CAAC,CAAC,WAAW,EAAE;YAEhG,IAAI,WAAW,GAAG,WAAW;gBAAE,OAAO,CAAC,CAAC;YACxC,IAAI,WAAW,GAAG,WAAW;AAAE,gBAAA,OAAO,CAAC;AACvC,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,MAAM;IACf;+HAxBW,8BAA8B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oGAA9B,8BAA8B,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;iFAA9B,8BAA8B,EAAA,CAAA;cAR1C,IAAI;AAAC,QAAA,IAAA,EAAA,CAAA;AACF,gBAAA,IAAI,EAAE,4BAA4B;AAClC,gBAAA,UAAU,EAAE;AACf,aAAA;;;MCGY,gCAAgC,CAAA;iIAAhC,gCAAgC,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAhC,gCAAgC,EAAA,CAAA,CAAA;uEAHjC,YAAY,CAAA,EAAA,CAAA,CAAA;;iFAGX,gCAAgC,EAAA,CAAA;cAL5C,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACR,YAAY,EAAE,CAAC,8BAA8B,CAAC;gBAC9C,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,8BAA8B,CAAC;AAC1C,aAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,gCAAgC,EAAA,EAAA,YAAA,EAAA,CAJ5B,8BAA8B,CAAA,EAAA,OAAA,EAAA,CACnC,YAAY,aACZ,8BAA8B,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;ACC1C;;;AAGE;MACW,qBAAqB,CAAA;AAkChC,IAAA,WAAA,CAA6B,SAA2B,EAAA;QAA3B,IAAA,CAAA,SAAS,GAAT,SAAS;QAjCrB,IAAA,CAAA,wBAAwB,GAAG,WAAW;AAItC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,GAAG,EAAkB;;AAG5C,QAAA,IAAA,CAAA,iBAAiB,GAA6B;YAC7D,IAAI,EAAE,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,CAAC,IAAI,CAAC;AACZ,YAAA,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI;SAClB;;;AAIgB,QAAA,IAAA,CAAA,YAAY,GAAQ;AACnC,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,SAAS;AAChB,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,UAAU;AACjB,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,WAAW;AAClB,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,OAAO;AACd;SACF;QAGC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;AACzC,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;YAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;AAClD,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;IAClD;AAEA,IAAA,SAAS,CAAC,YAAoB,EAAE,UAAU,GAAG,KAAK,EAAA;QAChD,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,OAAO,EAAE;QACX;QAEA,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;AACtD,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;YAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;QAClD;AAEA,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,YAAY,CAAA,CAAA,EAAI,UAAU,EAAE;QAEhD,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAE;QAC7C;QAEA,MAAM,qBAAqB,GAAG,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC;QAC5E,MAAM,mBAAmB,GAAG,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC;QACzE,MAAM,sBAAsB,GAAG,mBAAmB,GAAG,qBAAqB,GAAG,YAAY;QAEzF,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,UAAU,CAAC;QAE3E,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC;AAEhD,QAAA,OAAO,WAAW;IACpB;IAEQ,cAAc,CAAC,QAAgB,EAAE,UAAoB,EAAA;AAC3D,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC;AAClF,QAAA,IAAI,WAAW;AACb;;;AAGE;AACF,QAAA,oBAAoB,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9D,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC;QAEnF,IAAI,UAAU,EAAE;AACd,YAAA,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QAChD;AAEA,QAAA,OAAO,WAAW;IACpB;IAEQ,sCAAsC,CAAC,WAAmB,EAAE,IAAY,EAAA;AAC9E,QAAA,MAAM,0BAA0B,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC7F,QAAA,MAAM,wBAAwB,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAEzF,QAAA,IAAI,WAAmB;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;AACnD,QAAA,IAAI;YACF,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,EAAE,CAAC,QAAQ,CAAC;YACnE,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,EAAE,CAAC,MAAM,CAAC;AAE7D,YAAA,WAAW,GAAG,CAAA,EAAG,mBAAmB,CAAA,EAAA,EAAK,iBAAiB,GAAG;QAC/D;AAAE,QAAA,MAAM;AACN,YAAA,IAAI;AACF,gBAAA,WAAW,GAAG,0BAA0B,CAAC,EAAE,CAAC,IAAI,CAAW;YAC7D;AAAE,YAAA,MAAM;AACN,gBAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI;AAChE,gBAAA,OAAO,WAAW;YACpB;QACF;AAEA,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC;IAChD;AAEQ,IAAA,0BAA0B,CAAC,YAAoB,EAAA;AACrD,QAAA,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;QACrD,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK;IACpH;AAEQ,IAAA,yBAAyB,CAAC,YAAoB,EAAA;;AAEpD,QAAA,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;AACtD,QAAA,MAAM,UAAU,GAAG,KAAK,GAAG,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,KAAK,EAAE,GAAG,CAAA,EAAG,MAAM,EAAE;AAC7D,QAAA,OAAO,UAAU,CAAC,WAAW,EAAE;IACjC;AAEQ,IAAA,2BAA2B,CAAC,YAAoB,EAAA;AACtD,QAAA,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;IACjD;AAEQ,IAAA,qBAAqB,CAAC,IAAY,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD;sHAhIW,qBAAqB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;iFAArB,qBAAqB,EAAA,CAAA;cATjC,IAAI;AAAC,QAAA,IAAA,EAAA,CAAA;AACJ,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,UAAU,EAAE;AACb,aAAA;;;MCEY,uBAAuB,CAAA;wHAAvB,uBAAuB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAvB,uBAAuB,EAAA,CAAA,CAAA;uEAHD,YAAY,CAAA,EAAA,CAAA,CAAA;;iFAGlC,uBAAuB,EAAA,CAAA;cALnC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE,EAAE;AAChB,gBAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,YAAY,CAAC;gBAC9C,OAAO,EAAE,CAAC,qBAAqB;AAChC,aAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,uBAAuB,EAAA,EAAA,OAAA,EAAA,CAHxB,qBAAqB,EAAE,YAAY,aACnC,qBAAqB,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;ACP1B,MAAM,oBAAoB,GAAG,mBAAmB;;ACSvD;;AAEG;MACU,WAAW,CAAA;AA+CtB,IAAA,IAAI,SAAS,GAAA,EAAK,OAAO,IAAI,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAA,CAAC;AACpF,IAAA,IAAI,eAAe,GAAA,EAAK,OAAO,IAAI,CAAC,QAAQ,EAAE,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,eAAe,CAAA,CAAC;AACtG,IAAA,IAAI,kBAAkB,GAAA,EAAK,OAAO,IAAI,CAAC,QAAQ,EAAE,kBAAkB,IAAI,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAA,CAAC;AAC/G,IAAA,IAAI,UAAU,GAAA,EAAK,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,CAAA,CAAC;AACvF,IAAA,IAAI,cAAc,GAAA,EAAK,OAAO,IAAI,CAAC,QAAQ,EAAE,cAAc,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,CAAA,CAAC;IAEnG,WAAA,CACmB,SAA2B,EACe,QAAyB,EAAA;QADnE,IAAA,CAAA,SAAS,GAAT,SAAS;QACiC,IAAA,CAAA,QAAQ,GAAR,QAAQ;AArD5D,QAAA,IAAA,CAAA,eAAe,GAAoB;AAC1C,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,GAAG,EAAE,MAAM;AACX,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,GAAG,EAAE;AACN,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,OAAO;AACZ,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,GAAG,EAAE;AACN,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,MAAM;AACX,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,GAAG,EAAE;AACN,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,KAAK;AACV,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,GAAG,EAAE;AACN,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,MAAM;AACX,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,GAAG,EAAE;AACN,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,QAAQ;AACb,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,GAAG,EAAE;AACN,iBAAA;AACD,gBAAA;AACE,oBAAA,GAAG,EAAE,QAAQ;AACb,oBAAA,QAAQ,EAAE,CAAC;AACX,oBAAA,GAAG,EAAE;AACN;AACF,aAAA;AACD,YAAA,kBAAkB,EAAE,UAAU;AAC9B,YAAA,eAAe,EAAE,GAAG;AACpB,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,cAAc,EAAE;SAEjB;IAYD;;AAGA,IAAA,SAAS,CAAC,KAAW,EAAE,qBAAqB,GAAG,IAAI,EAAA;QACjD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE;QACX;QAEA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,CAAC;QACnE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,EAAE;QACX;QAEA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,CAAA,EAAI,OAAO,CAAC,GAAG,CAAA,CAAE,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IACxG;IAEA,gBAAgB,CAAC,KAAW,EAAE,qBAA8B,EAAA;QAC1D,IAAI,KAAK,EAAE;YACT,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC;AAErF,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;AACxD,gBAAA,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE;;AAIjC,YAAA,IAAI,OAAgB;AACpB,YAAA,IAAI,IAAa;AAEjB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAClC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACjD,gBAAA,IAAI,OAAO,IAAI,QAAQ,CAAC,GAAG,EAAE;AAC3B,oBAAA,IAAI,GAAG,QAAQ,CAAC,GAAG;AACnB,oBAAA,IAAI,qBAAqB,IAAI,OAAO,GAAG,CAAC,EAAE;;AAExC,wBAAA,IAAI,IAAI,IAAI,CAAC,eAAe;oBAC9B;oBACA;gBACF;YACF;YACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;QACxC;AACA,QAAA,OAAO,IAAI;IACb;AApGW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,SAAA,mBAAA,CAAA,iBAAA,EAAA,EAAA,OAAA,KAAA,iBAAA,IAAA,WAAW,sEAuDZ,oBAAoB,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;iFAvDnB,WAAW,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;iFAAX,WAAW,EAAA,CAAA;cARvB,IAAI;AAAC,QAAA,IAAA,EAAA,CAAA;AACF,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,UAAU,EAAE;AACf,aAAA;;sBA2DI,MAAM;uBAAC,oBAAoB;;sBAAG;;;MCnDtB,aAAa,CAAA;8GAAb,aAAa,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAb,aAAa,EAAA,CAAA,CAAA;uEAPtB,YAAY,CAAA,EAAA,CAAA,CAAA;;iFAOH,aAAa,EAAA,CAAA;cAZzB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE;oBACZ;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD,iBAAA;AACD,gBAAA,SAAS,EAAE;AACZ,aAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,aAAa,EAAA,EAAA,YAAA,EAAA,CAVtB,WAAW,CAAA,EAAA,OAAA,EAAA,CAGX,YAAY,aAGZ,WAAW,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;ACNf;;AAEG;MACU,gBAAgB,CAAA;;AAE3B,IAAA,SAAS,CAAC,KAAU,EAAA;QACpB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACxC,YAAA,OAAO,CAAC;QACT;QACA,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;IACjC;iHAPY,gBAAgB,GAAA,CAAA,CAAA,CAAA,CAAA;sFAAhB,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;iFAAhB,gBAAgB,EAAA,CAAA;cAP5B,IAAI;AAAC,QAAA,IAAA,EAAA,CAAA;AACF,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,UAAU,EAAE;AACf,aAAA;;;MCIY,kBAAkB,CAAA;mHAAlB,kBAAkB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAlB,kBAAkB,EAAA,CAAA,CAAA;uEAHnB,YAAY,CAAA,EAAA,CAAA,CAAA;;iFAGX,kBAAkB,EAAA,CAAA;cAL9B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACR,YAAY,EAAE,CAAC,gBAAgB,CAAC;gBAChC,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,gBAAgB;AAC3B,aAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,kBAAkB,EAAA,EAAA,YAAA,EAAA,CAJd,gBAAgB,CAAA,EAAA,OAAA,EAAA,CACrB,YAAY,aACZ,gBAAgB,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;ACC5B;;AAEG;MACU,gBAAgB,CAAA;;AAE3B,IAAA,SAAS,CAAC,MAAa,EAAE,eAAwB,EAAE,IAAI,GAAG,IAAI,EAAA;QAC5D,OAAO,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC;IAC/D;iHAJW,gBAAgB,GAAA,CAAA,CAAA,CAAA,CAAA;sFAAhB,gBAAgB,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;iFAAhB,gBAAgB,EAAA,CAAA;cAR5B,IAAI;AAAC,QAAA,IAAA,EAAA,CAAA;AACJ,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,IAAI,EAAE;AACP,aAAA;;;ACAD;;AAEG;MACU,sBAAsB,CAAA;;IAEjC,SAAS,CAAC,MAAa,EAAE,eAAwB,EAAA;QAC/C,OAAO,UAAU,CAAC,kBAAkB,CAAC,MAAM,EAAE,eAAe,CAAC;IAC/D;uHAJW,sBAAsB,GAAA,CAAA,CAAA,CAAA,CAAA;4FAAtB,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;iFAAtB,sBAAsB,EAAA,CAAA;cAPlC,IAAI;AAAC,QAAA,IAAA,EAAA,CAAA;AACF,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,UAAU,EAAE;AACf,aAAA;;;MCGY,wBAAwB,CAAA;yHAAxB,wBAAwB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAxB,wBAAwB,EAAA,CAAA,CAAA;uEAHzB,YAAY,CAAA,EAAA,CAAA,CAAA;;iFAGX,wBAAwB,EAAA,CAAA;cALpC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;gBACtC,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,aAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,wBAAwB,EAAA,EAAA,YAAA,EAAA,CAJpB,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAC3B,YAAY,aACZ,sBAAsB,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCGrB,oBAAoB,CAAA;AACtB,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC5C,IAAA,2BAA2B,GAAG,MAAM,CAAC,wBAAwB,CAAC;IAEvE,SAAS,CAAI,IAAS,EAAE,GAAY,EAAA;QAClC,MAAM,QAAQ,GAAG,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;;AAEhC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CACpD,GAAG,CAAC,MAAK;YACP,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,OAAO,EAAE;YACX;YAEA,MAAM,mBAAmB,GAA4B;iBAClD,GAAG,CAAC,QAAQ,IAAG;;AAEd,gBAAA,IAAI,YAAoB;;gBAExB,IAAI,QAAQ,GAAQ,QAAQ;AAE5B,gBAAA,IAAI,QAAQ,EAAE,MAAM,EAAE;AACpB,oBAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;wBAC9B,MAAM,OAAO,GAAG,OAAO;wBACvB,IAAI,CAAC,QAAQ,EAAE;4BACb,OAAO,CAAC,KAAK,CAAC,CAAA,wCAAA,EAA2C,GAAG,CAAA,CAAE,EAAE,QAAQ,CAAC;4BACzE;wBACF;AACA,wBAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC;oBAC9B;oBACA,YAAY,GAAG,QAAQ;gBACzB;qBACK;oBACH,YAAY,GAAG,QAAkB;gBACnC;gBAEA,OAAO;AACL,oBAAA,GAAG,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,2BAA2B,CAAC,0BAA0B,CAAC,YAAY,EAAE,KAAK;iBAC3H;AACH,YAAA,CAAC;AACA,iBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;gBACb,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE;gBAChD,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE;AAChD,gBAAA,OAAO,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC;AACjD,YAAA,CAAC,CAAC;AACJ,YAAA,OAAO,mBAAmB;QAC5B,CAAC,CAAC,CACH;IACH;qHA/CW,oBAAoB,GAAA,CAAA,CAAA,CAAA,CAAA;0FAApB,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;iFAApB,oBAAoB,EAAA,CAAA;cAJhC,IAAI;AAAC,QAAA,IAAA,EAAA,CAAA;AACJ,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,UAAU,EAAE;AACb,aAAA;;;MCCY,mBAAmB,CAAA;AAC9B,IAAA,WAAA,CAAqB,SAA2B,EAAA;QAA3B,IAAA,CAAA,SAAS,GAAT,SAAS;IAAqB;IAEnD,SAAS,CAAC,KAAa,EAAE,QAAiB,EAAA;QACxC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,OAAO,KAAK;QACb;AAEE,QAAA,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE;QACzC,MAAM,qBAAqB,GAAG,UAAU,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAElE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;QAEjD,OAAO,OAAO,CAAC,qBAAqB,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC;IACzE;oHAdW,mBAAmB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;yFAAnB,mBAAmB,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;iFAAnB,mBAAmB,EAAA,CAAA;cAL/B,IAAI;AAAC,QAAA,IAAA,EAAA,CAAA;AACJ,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,IAAI,EAAE;AACP,aAAA;;;ACLD;;;;AAIG;MAKU,eAAe,CAAA;AAC3B,IAAA,WAAA,CAAsB,SAA2B,EAAA;QAA3B,IAAA,CAAA,SAAS,GAAT,SAAS;IAAqB;;AAGpD,IAAA,SAAS,CAAC,KAAY,EAAE,YAAqB,EAAE,GAAW,EAAA;QACzD,IAAI,CAAC,YAAY,EAAE;AAClB,YAAA,OAAO,KAAK;QACb;QAEA,MAAM,aAAa,GAAG,CAAC,YAAY,EAAE,iBAAiB,EAAE,aAAa,CAAC;AAEtE,QAAA,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAClC,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxD,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAExD,YAAA,MAAM,WAAW,GAAG,CAAC,IAAY,KAAY;gBAC5C,IAAI,IAAI,KAAK,SAAS;AAAE,oBAAA,OAAO,CAAC;AAChC,gBAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;AAAE,oBAAA,OAAO,CAAC;AAC1C,gBAAA,OAAO,CAAC;AACT,YAAA,CAAC;AAED,YAAA,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC;AACpC,YAAA,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC;;AAGpC,YAAA,IAAI,SAAS,KAAK,SAAS,EAAE;gBAC5B,OAAO,SAAS,GAAG,SAAS;YAC7B;YAEA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;;AAGjD,YAAA,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AACxE,QAAA,CAAC,CAAC;IACH;gHAlCY,eAAe,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;qFAAf,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;iFAAf,eAAe,EAAA,CAAA;cAJ3B,IAAI;AAAC,QAAA,IAAA,EAAA,CAAA;AACL,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,UAAU,EAAE,IAAI;AAChB,aAAA;;;MCLY,wBAAwB,CAAA;AACnC,IAAA,WAAA,CAA6B,gBAAkC,EAAA;QAAlC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAAqB;AAElE,IAAA,0BAA0B,CAAC,IAAY,EAAE,UAAU,GAAG,KAAK,EAAA;QACzD,MAAM,iBAAiB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC1E,OAAO,iBAAiB,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC;IACtD;AAEA,IAAA,4BAA4B,CAAC,IAAY,EAAA;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3B;yHAVW,wBAAwB,EAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;uEAAxB,wBAAwB,EAAA,OAAA,EAAxB,wBAAwB,CAAA,IAAA,EAAA,UAAA,EAFvB,MAAM,EAAA,CAAA,CAAA;;iFAEP,wBAAwB,EAAA,CAAA;cAHpC,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA;;;ICNW;AAAZ,CAAA,UAAY,UAAU,EAAA;AACrB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AAClB,CAAC,EAHW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;;MCST,mBAAmB,CAAA;AAHhC,IAAA,WAAA,GAAA;AAIS,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAA6B;AACjE,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AAEhD,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAyB;AAClE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;AAmBtD,IAAA;AAjBA,IAAA,UAAU,CAAC,OAA4B,EAAA;AACtC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;IACpE;AAEA,IAAA,aAAa,CAAC,OAA4B,EAAA;AACzC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;IACpE;IAEA,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC;;IAGA,eAAe,CAAC,QAA+B,EAAE,UAA+B,EAAA;QAC/E,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AACjD,QAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,cAAc,CAAC;IAC7F;oHAvBY,mBAAmB,GAAA,CAAA,CAAA,CAAA,CAAA;uEAAnB,mBAAmB,EAAA,OAAA,EAAnB,mBAAmB,CAAA,IAAA,EAAA,UAAA,EAFnB,MAAM,EAAA,CAAA,CAAA;;iFAEN,mBAAmB,EAAA,CAAA;cAH/B,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACX,gBAAA,UAAU,EAAE;AACZ,aAAA;;;ICRW;AAAZ,CAAA,UAAY,yBAAyB,EAAA;AACnC,IAAA,yBAAA,CAAA,yBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,yBAAA,CAAA,yBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG;AACL,CAAC,EAHW,yBAAyB,KAAzB,yBAAyB,GAAA,EAAA,CAAA,CAAA;;;ICCnC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAC0H;;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAY;IAAA,EAAA,CAAA,YAAA,EAAO;;;IADhH,EAAA,CAAA,WAAA,CAAA,WAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,KAAA,MAAA,CAAA,iBAAA,CAA8D;IACzF,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,WAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,OAAA,CAAA,WAAA,EAAA,MAAA,CAAA,OAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAsG;IAAkB,EAAA,CAAA,SAAA,CAAA,CAAA,CAAY;IAAZ,EAAA,CAAA,iBAAA,CAAA,MAAA,CAAA,QAAA,CAAY;;;IAEpI,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAEM;;;;IADJ,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,OAAA,CAAA,KAAA,EAAA,MAAA,CAAA,OAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAAmE;;;IAErE,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CACgC;;;;IAD0B,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,OAAA,CAAA,WAAA,EAAA,MAAA,CAAA,OAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAC/B;;;IAL7B,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,SAAA,CAAyB;AAIvB,IAHA,iFACsE,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAG1C;IAC9B,EAAA,CAAA,YAAA,EAAU;;;IAL6B,EAAA,CAAA,SAAA,EAAmB;IAAnB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,OAAA,CAAA,KAAA,CAAmB;IAGzB,EAAA,CAAA,SAAA,EAAyB;IAAzB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,OAAA,CAAA,WAAA,CAAyB;;MCG/C,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;AAOW,QAAA,IAAA,CAAA,iBAAiB,GAAG,yBAAyB,CAAC,GAAG;QAEjD,IAAA,CAAA,QAAQ,GAAG,MAAM;AAE3B,IAAA;uHALY,sBAAsB,GAAA,CAAA,CAAA,CAAA,CAAA;oEAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,oBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,WAAA,EAAA,YAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,OAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,WAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YDVnC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAiD;AAG/C,YAFA,yEAC0H,CAAA,CAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,CACjG;YAO3B,EAAA,CAAA,YAAA,EAAM;;AAVD,YAAA,EAAA,CAAA,UAAA,CAAA,0DAA2C,CAAA;YAE4D,EAAA,CAAA,SAAA,EAAc;YAAd,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,QAAA,CAAc;YAC9G,EAAA,CAAA,SAAA,EAAa;YAAb,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,CAAa;;;iFCOZ,sBAAsB,EAAA,CAAA;cANlC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAGlB,KAAK,EAAA,QAAA,EAAA,4qBAAA,EAAA,MAAA,EAAA,CAAA,iiBAAA,CAAA,EAAA;gBAKV,QAAQ,EAAA,CAAA;kBAAhB;YACQ,OAAO,EAAA,CAAA;kBAAf;;kFAJU,sBAAsB,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,gDAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCUtB,mBAAmB,CAAA;oHAAnB,mBAAmB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAnB,mBAAmB,EAAA,CAAA,CAAA;uEAR5B,YAAY;YACZ,eAAe;YACf,gBAAgB,CAAA,EAAA,CAAA,CAAA;;iFAMP,mBAAmB,EAAA,CAAA;cAb/B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE;oBACZ;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP,YAAY;oBACZ,eAAe;oBACf;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD;AACF,aAAA;;wFACY,mBAAmB,EAAA,EAAA,YAAA,EAAA,CAX5B,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAGtB,YAAY;QACZ,eAAe;AACf,QAAA,gBAAgB,aAGhB,sBAAsB,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;ICjBd;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,iBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,iBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;;MCOhB,qBAAqB,CAAA;AAGhC,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;AAFpB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;IAEH;AAGvC,IAAA,OAAO,CAAC,MAAmB,EAAA;AAChC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;QACpE,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;sHAXW,qBAAqB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEAArB,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA,EAAA,YAAA,EAAA,SAAA,kCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;AAArB,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,8CAAA,CAAA,MAAA,EAAA,EAAA,OAAA,0BAAsB,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAD;;;iFAArB,qBAAqB,EAAA,CAAA;cALjC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;;AAEP,gBAAA,QAAQ,EAAE,gBAAgB;AAC1B,gBAAA,UAAU,EAAE;AACf,aAAA;2CAEW,YAAY,EAAA,CAAA;kBAArB;YAKM,OAAO,EAAA,CAAA;kBADb,YAAY;mBAAC,gBAAgB,EAAE,CAAC,eAAe,CAAC;;;MCKtC,kBAAkB,CAAA;mHAAlB,kBAAkB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAlB,kBAAkB,EAAA,CAAA,CAAA;uEAN3B,YAAY,CAAA,EAAA,CAAA,CAAA;;iFAMH,kBAAkB,EAAA,CAAA;cAX9B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE;oBACZ;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD;AACF,aAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,kBAAkB,EAAA,EAAA,YAAA,EAAA,CAT3B,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAGrB,YAAY,aAGZ,qBAAqB,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCPZ,oBAAoB,CAAA;AAE/B,IAAA,IAAI,QAAQ,GAAA,EAAK,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAA,CAAC;;;AAQxD,IAAA,UAAU,CAAC,GAAQ,EAAA;QACvD,GAAG,CAAC,cAAc,EAAE;QACpB,GAAG,CAAC,eAAe,EAAE;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ;IAC9B;;;AAI8C,IAAA,WAAW,CAAC,GAAQ,EAAA;QAChE,GAAG,CAAC,cAAc,EAAE;QACpB,GAAG,CAAC,eAAe,EAAE;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;IACrB;;;AAIyC,IAAA,MAAM,CAAC,GAAQ,EAAA;QACtD,GAAG,CAAC,cAAc,EAAE;QACpB,GAAG,CAAC,eAAe,EAAE;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;QACF;AACA,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK;AACpC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B;IACF;AAEA,IAAA,WAAA,CAA6B,OAAmB,EAAA;QAAnB,IAAA,CAAA,OAAO,GAAP,OAAO;;AAjC1B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAO;IAiCK;qHAvCzC,oBAAoB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEAApB,oBAAoB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;AAApB,YAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,SAAA,gDAAA,CAAA,MAAA,EAAA,EAAA,OAAA,sBAAkB,CAAA,CAAA,CAAA,CAAE,CAAA,WAAA,EAAA,SAAA,iDAAA,CAAA,MAAA,EAAA,EAAA,OAApB,uBAAmB,CAAA,CAAA,CAAA,CAAC,CAAA,MAAA,EAAA,SAAA,4CAAA,CAAA,MAAA,EAAA,EAAA,OAApB,kBAAc,CAAA,CAAA,CAAA,CAAM;;YAApB,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,GAAA,CAAA,MAAA,CAAoB;;;iFAApB,oBAAoB,EAAA,CAAA;cALhC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;;AAEP,gBAAA,QAAQ,EAAE,kBAAkB;AAC5B,gBAAA,UAAU,EAAE;AACf,aAAA;2CAKqC,MAAM,EAAA,CAAA;kBAAzC,WAAW;mBAAC,qBAAqB;YAExB,WAAW,EAAA,CAAA;kBAApB;YAIqC,UAAU,EAAA,CAAA;kBAA/C,YAAY;mBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;YAQU,WAAW,EAAA,CAAA;kBAAxD,YAAY;mBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;YAQI,MAAM,EAAA,CAAA;kBAA9C,YAAY;mBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC;;;MChBrB,iBAAiB,CAAA;kHAAjB,iBAAiB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAjB,iBAAiB,EAAA,CAAA,CAAA;uEAN1B,YAAY,CAAA,EAAA,CAAA,CAAA;;iFAMH,iBAAiB,EAAA,CAAA;cAX7B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE;oBACZ;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD;AACF,aAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,iBAAiB,EAAA,EAAA,YAAA,EAAA,CAT1B,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAGpB,YAAY,aAGZ,oBAAoB,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCCX,yBAAyB,CAAA;IAGpC,IAAa,OAAO,CAAC,KAAc,EAAA;AACjC,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC1B,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;YACrB,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;AAIA,IAAA,WAAA,CAAoB,SAAoB,EAC9B,gBAAkC,EAClC,QAAmB,EAAA;QAFT,IAAA,CAAA,SAAS,GAAT,SAAS;QACnB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAZV,IAAA,CAAA,QAAQ,GAAG,KAAK;IAYS;AAEjC,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,aAAa;IACjD;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;AAC/C,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI;YAC9B,IAAI,CAAC,aAAa,EAAE;YACpB;QACF;QACA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC;AAClD,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,KAAK;QAC/B,IAAI,CAAC,cAAc,EAAE;IACvB;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,kBAAkB,CAAC;AACxE,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK;YAClD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE;YACnC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,eAAe;YAC5C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC;QACtH;IACF;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACrB;IACF;0HA/CW,yBAAyB,EAAA,EAAA,CAAA,iBAAA,CAAAJ,IAAA,CAAA,SAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEAAzB,yBAAyB,EAAA,SAAA,EAAA,CAAA,CAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,EAAA,CAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,EAAA,CAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,EAAA,CAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,EAAA,CAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;iFAAzB,yBAAyB,EAAA,CAAA;cAXrC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;;AAEP,gBAAA,QAAQ,EAAE,CAAA;;;;;;AAMqB,kCAAA,CAAA;AAC/B,gBAAA,UAAU,EAAE;AACf,aAAA;mGAIc,OAAO,EAAA,CAAA;kBAAnB;;;MCLU,sBAAsB,CAAA;uHAAtB,sBAAsB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAtB,sBAAsB,EAAA,CAAA,CAAA;uEAJ/B,YAAY,CAAA,EAAA,CAAA,CAAA;;iFAIH,sBAAsB,EAAA,CAAA;cAPlC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACR,YAAY,EAAE,CAAC,yBAAyB,CAAC;AACzC,gBAAA,OAAO,EAAE;oBACP;AACD,iBAAA;gBACD,OAAO,EAAE,CAAC,yBAAyB;AACpC,aAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,sBAAsB,EAAA,EAAA,YAAA,EAAA,CANlB,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAEtC,YAAY,aAEJ,yBAAyB,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCHxB,kBAAkB,CAAA;mHAAlB,kBAAkB,GAAA,CAAA,CAAA,CAAA,CAAA;oEAAlB,kBAAkB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,UAAA,EAAA,KAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,2BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YCR/B,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAuE;YACrE,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAgE,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACA;YAClE,EAAA,CAAA,YAAA,EAAM;;;iFDIO,kBAAkB,EAAA,CAAA;cAN9B,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,qTAAA,EAAA,MAAA,EAAA,CAAA,wUAAA,CAAA,EAAA;;kFAER,kBAAkB,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MEGlB,eAAe,CAAA;gHAAf,eAAe,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAf,eAAe,EAAA,CAAA,CAAA;;;iFAAf,eAAe,EAAA,CAAA;cAR3B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,YAAY,EAAE;oBACV;AACH,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL;AACH;AACJ,aAAA;;wFACY,eAAe,EAAA,EAAA,YAAA,EAAA,CANpB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAGlB,kBAAkB,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCAb,uBAAuB,CAAA;AANpC,IAAA,WAAA,GAAA;QAQW,IAAA,CAAA,OAAO,GAAG,EAAE;QACZ,IAAA,CAAA,OAAO,GAAG,EAAE;AAEtB,IAAA;wHALY,uBAAuB,GAAA,CAAA,CAAA,CAAA,CAAA;oEAAvB,uBAAuB,EAAA,SAAA,EAAA,CAAA,CAAA,qBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,cAAA,EAAA,EAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,SAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,gCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ACPhC,YADJ,8BAA8C,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CACpB;YAClB,EAAA,CAAA,MAAA,CAAA,CAAA,CACJ;;YAAA,EAAA,CAAA,YAAA,EAAO;YACP,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAsB;YAClB,EAAA,CAAA,MAAA,CAAA,CAAA,CACJ;AACJ,YADI,iBAAO,EACL;;YALE,EAAA,CAAA,SAAA,CAAA,CAAA,CACJ;YADI,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,GAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CACJ;YAEI,EAAA,CAAA,SAAA,CAAA,CAAA,CACJ;YADI,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,GAAA,CAAA,OAAA,EAAA,GAAA,CACJ;;;iFDES,uBAAuB,EAAA,CAAA;cANnC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cAGnB,KAAK,EAAA,QAAA,EAAA,oNAAA,EAAA,MAAA,EAAA,CAAA,yTAAA,CAAA,EAAA;gBAIV,OAAO,EAAA,CAAA;kBAAf;YACQ,OAAO,EAAA,CAAA;kBAAf;;kFAHU,uBAAuB,EAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MEOvB,oBAAoB,CAAA;qHAApB,oBAAoB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAApB,oBAAoB,EAAA,CAAA,CAAA;uEAJ7B,YAAY,CAAA,EAAA,CAAA,CAAA;;iFAIH,oBAAoB,EAAA,CAAA;cAThC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE;oBACZ;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD,iBAAA;gBACD,OAAO,EAAE,CAAC,uBAAuB;AAClC,aAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,oBAAoB,EAAA,EAAA,YAAA,EAAA,CAP7B,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAGvB,YAAY,aAEJ,uBAAuB,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;;;;ICL3B,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA2F;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CAE9E;;IAAA,EAAA,CAAA,YAAA,EAAI;;;;IAF0E,EAAA,CAAA,SAAA,EAE9E;IAF8E,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,CAE9E;;;IACd,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAqF;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CACtE;;IAAA,EAAA,CAAA,YAAA,EAAI;;;;IADkE,EAAA,CAAA,SAAA,EACtE;IADsE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,CAAA,CACtE;;;IAChB,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA4E;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CACzE;;IAAA,EAAA,CAAA,YAAA,EAAI;;;IADoC,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAK,KAAA,EAAA,MAAA,CAAA,cAAA,CAAA,CAA+B;IAAE,EAAA,CAAA,SAAA,EACzE;IADyE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,CAAA,CACzE;;;IAPN,EAAA,CAAA,uBAAA,CAAA,CAAA,CAAgD;IAC9C,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA2F,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAGN,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAET;;;;IALtD,EAAA,CAAA,SAAA,EAAqB;IAArB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,eAAA,CAAqB;IAGrB,EAAA,CAAA,SAAA,EAAkB;IAAlB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAAkB;IAElB,EAAA,CAAA,SAAA,EAAoB;IAApB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,cAAA,CAAoB;;;IAK1C,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA8E;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CACjE;;IAAA,EAAA,CAAA,YAAA,EAAI;;;IAD2B,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,EAAA,MAAA,CAAA,eAAA,CAAA,CAAgC;IAAE,EAAA,CAAA,SAAA,EACjE;IADiE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,CACjE;;;IACd,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAwE;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CAAiC;;IAAA,EAAA,CAAA,YAAA,EAAI;;;IAApE,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,EAAA,MAAA,CAAA,YAAA,CAAA,CAA6B;IAAE,EAAA,CAAA,SAAA,EAAiC;IAAjC,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,CAAA,CAAiC;;;IAC1G,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA4E;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CACzE;;IAAA,EAAA,CAAA,YAAA,EAAI;;;IADoC,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,EAAA,MAAA,CAAA,cAAA,CAAA,CAA+B;IAAE,EAAA,CAAA,SAAA,EACzE;IADyE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,CAAA,CACzE;;;IAJJ,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA8E,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAEN,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CACI;;;IAHtD,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,eAAA,CAAqB;IAErB,EAAA,CAAA,SAAA,EAAkB;IAAlB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAAkB;IAClB,EAAA,CAAA,SAAA,EAAoB;IAApB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,cAAA,CAAoB;;MCZrC,eAAe,CAAA;AAY1B,IAAA,WAAA,GAAA;QATS,IAAA,CAAA,iBAAiB,GAAG,cAAc;QAClC,IAAA,CAAA,mBAAmB,GAAG,gBAAgB;AAEtC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,mBAAmB;AACvC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,iBAAiB;QACxC,IAAA,CAAA,cAAc,GAAG,sCAAsC;QAK9D,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IAC7C;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY;YACpD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe;QAC5D;IACF;gHArBW,eAAe,GAAA,CAAA,CAAA,CAAA,CAAA;oEAAf,eAAe,EAAA,SAAA,EAAA,CAAA,CAAA,YAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,aAAA,EAAA,EAAA,CAAA,EAAA,CAAA,UAAA,EAAA,KAAA,EAAA,CAAA,EAAA,QAAA,CAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,eAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,wBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YDT5B,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAsC,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAEf,CAAA,CAAA,EAAA,KAAA,CACd;YACH,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;YAAA,EAAA,CAAA,YAAA,EAAM;YACN,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAwB;AAWtB,YAVA,kFAAgD,CAAA,CAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAUtB;YAO5B,EAAA,CAAA,YAAA,EAAM,EACF,EACC;;;YAtBH,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;YADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAH,KAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA,EAAA,GAAA,CACF;YAEiB,EAAA,CAAA,SAAA,CAAA,CAAA,CAAe;AAAA,YAAf,kCAAe,CAAA,UAAA,EAAA,cAAA,CAAgB;;;iFCEvC,eAAe,EAAA,CAAA;cAP3B,SAAS;AAEI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cAGV,KAAK,EAAA,QAAA,EAAA,05CAAA,EAAA,MAAA,EAAA,CAAA,yPAAA,CAAA,EAAA;oBAQV,YAAY,EAAA,CAAA;kBAApB;YACQ,eAAe,EAAA,CAAA;kBAAvB;YACQ,cAAc,EAAA,CAAA;kBAAtB;YAEQ,OAAO,EAAA,CAAA;kBAAf;;kFAVU,eAAe,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCYf,YAAY,CAAA;6GAAZ,YAAY,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAZ,YAAY,EAAA,CAAA,CAAA;uEAPrB,YAAY;YACZ,gBAAgB;YAChB,eAAe;YACf,YAAY,CAAA,EAAA,CAAA,CAAA;;iFAIH,YAAY,EAAA,CAAA;cAZxB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE;oBACZ;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP,YAAY;oBACZ,gBAAgB;oBAChB,eAAe;oBACf;AACD,iBAAA;gBACD,OAAO,EAAE,CAAC,eAAe;AAC1B,aAAA;;wFACY,YAAY,EAAA,EAAA,YAAA,EAAA,CAVrB,eAAe,CAAA,EAAA,OAAA,EAAA,CAGf,YAAY;QACZ,gBAAgB;QAChB,eAAe;AACf,QAAA,YAAY,aAEJ,eAAe,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;ICnBf;AAAZ,CAAA,UAAY,uBAAuB,EAAA;AACjC,IAAA,uBAAA,CAAA,gCAAA,CAAA,GAAA,gCAAiE;AACjE,IAAA,uBAAA,CAAA,yCAAA,CAAA,GAAA,yCAAmF;AACnF,IAAA,uBAAA,CAAA,UAAA,CAAA,GAAA,sBAAiC;AACjC,IAAA,uBAAA,CAAA,YAAA,CAAA,GAAA,mBAAgC;AAClC,CAAC,EALW,uBAAuB,KAAvB,uBAAuB,GAAA,EAAA,CAAA,CAAA;;ICAvB;AAAZ,CAAA,UAAY,aAAa,EAAA;AACrB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,gBAAuB;AACvB,IAAA,aAAA,CAAA,KAAA,CAAA,GAAA,eAAsB;AACtB,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,iBAAyB;AACzB,IAAA,aAAA,CAAA,YAAA,CAAA,GAAA,sBAAmC;AACnC,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,iBAAyB;AACzB,IAAA,aAAA,CAAA,cAAA,CAAA,GAAA,wBAAuC;AACvC,IAAA,aAAA,CAAA,KAAA,CAAA,GAAA,eAAqB;AACrB,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,mBAA6B;AAC7B,IAAA,aAAA,CAAA,aAAA,CAAA,GAAA,uBAAqC;AACzC,CAAC,EAVW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;;ICAb;AAAZ,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,cAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACnB,CAAC,EANW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;;ICAd;AAAZ,CAAA,UAAY,SAAS,EAAA;AACjB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAY;AACZ,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,SAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,SAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC/B,CAAC,EAVW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;;ICAT;AAAZ,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACf,CAAC,EAjCW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;;ACAnB,MAAM,cAAc,GAAG,CAAA;;;;;;;;;CAS7B;;ACTM,MAAM,aAAa,GAAG,CAAA;;;;CAI5B;;ACJM,MAAM,iBAAiB,GAAG,CAAA;;;;CAIhC;;ACJM,MAAM,oBAAoB,GAAG,CAAA;;;;;;;;CAQnC;;ACRM,MAAM,aAAa,GAAG,CAAA;;;;;;;;;;CAU5B;;ACVM,MAAM,eAAe,GAAG,CAAA;;;;CAI9B;;ACJM,MAAM,sBAAsB,GAAG,CAAA;;;;CAIrC;;ACJM,MAAM,qBAAqB,GAAG,CAAA;;;;CAIpC;;ACJM,MAAM,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;CAoB9B;;;;;;;;;;;;;;;;ICLiB,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAA2D;IACzD,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAA+G;IAC/G,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAM;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAyB;AACjC,IADiC,iBAAO,EACnC;;;IAFO,EAAA,CAAA,SAAA,EAA8B;AAA9B,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,mCAA8B,CAAA;;IAClC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAyB;IAAzB,EAAA,CAAA,iBAAA,CAAA,YAAA,CAAA,SAAA,CAAyB;;;IAHnC,EAAA,CAAA,uBAAA,CAAA,CAAA,CAA0D;IACxD,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,qFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAA2D;;;;IAAtD,EAAA,CAAA,SAAA,EAAuB;IAAvB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,YAAA,CAAA,OAAA,CAAuB;;;IAFhC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,CAA8B;IAC5B,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,gFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAA0D;IAM5D,EAAA,CAAA,YAAA,EAAK;;;IANiC,EAAA,CAAA,SAAA,EAAoB;IAApB,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,CAAA,UAAA,CAAoB;;;IAF5D,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAsE;IACpE,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,iEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAA8B;IAQhC,EAAA,CAAA,YAAA,EAAM;;;IARC,EAAA,CAAA,SAAA,EAAuB;IAAvB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,SAAA,CAAA,UAAA,CAAuB;;;AALhC,IADF,8BAAkD,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CACrB;IACzB,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;IAAA,EAAA,CAAA,YAAA,EAAK;IACL,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAoB;IAClB,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,4DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAsE;AAW1E,IADE,iBAAM,EACF;;;IAdF,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,GAAA,WAAA,CAAA,QAAA,CAAA,EAAA,GAAA,CACF;IAE0B,EAAA,CAAA,SAAA,CAAA,CAAA,CAAmB;IAAnB,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,WAAA,CAAA,OAAA,CAAmB;;;IANjD,EAAA,CAAA,uBAAA,CAAA,CAAA,CAAuD;IACrD,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAkD;;;;IAA5C,EAAA,CAAA,SAAA,EAAyB;IAAzB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,WAAA,CAAA,UAAA,CAAyB;;ACAvC;;;AAGE;MAOW,wBAAwB,CAAA;IAgGnC,WAAA,CAA6C,IAAgB,EAAmB,WAAwB,EAAA;QAA3D,IAAA,CAAA,IAAI,GAAJ,IAAI;QAA+B,IAAA,CAAA,WAAW,GAAX,WAAW;AA9FlF,QAAA,IAAA,CAAA,MAAM,GAAW;AACxB,YAAA,QAAQ,EAAE;AACR,gBAAA;oBACE,QAAQ,EAAE,cAAc,CAAC,MAAM;AAC/B,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,UAAU,EACR;gCACE,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE;gCAC3D,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE;gCAC5D,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE;gCAC5D,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE;gCAC7D,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,UAAU,EAAE;gCAClE,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG;AACzD;AACJ,yBAAA;AACD,wBAAA;AACE,4BAAA,UAAU,EAAE;gCACV,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,YAAY,EAAE;gCACnE,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,YAAY,EAAE;gCACnE,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,YAAY,EAAE;gCACnE,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,YAAY,EAAE;gCACnE,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,YAAY,EAAE;gCACnE,EAAE,SAAS,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,YAAY,EAAE;gCACrE,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,YAAY;AAClE;AACF;AACF;AACF,iBAAA;AACD,gBAAA;oBACE,QAAQ,EAAE,cAAc,CAAC,OAAO;AAChC,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,UAAU,EACR;gCACE,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE;gCAC9D,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE;gCAC/D,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE;gCAC9D,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE;gCAC9D,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE;gCAC9D,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG;AACzD;AACJ;AACF;AACF,iBAAA;AACD,gBAAA;oBACE,QAAQ,EAAE,cAAc,CAAC,WAAW;AACpC,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,UAAU,EAAE;gCACV,EAAE,SAAS,EAAE,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,EAAE;gCACvE,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,EAAE;gCACrE,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,EAAE;gCAClE,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,EAAE;gCAClE,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,EAAE;gCAClE,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,EAAE;gCACnE,EAAE,SAAS,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW;AACnE;AACF;AACF;AACF,iBAAA;AACD,gBAAA;oBACE,QAAQ,EAAE,cAAc,CAAC,GAAG;AAC5B,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,UAAU,EACR;gCACE,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE;gCAC3D,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE;gCAC1D,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE;gCAC3D,EAAE,SAAS,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE;gCAC5D,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG;AACzD;AACJ;AACF;AACF,iBAAA;AACD,gBAAA;oBACE,QAAQ,EAAE,cAAc,CAAC,KAAK;AAC9B,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,UAAU,EAAE;gCACV,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE;gCAC5D,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE;gCAC5D,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,KAAK;AAC3D;AACF;AACF;AACF;AACF;SACF;QAED,IAAA,CAAA,UAAU,GAAa,EAAE;QACzB,IAAA,CAAA,qBAAqB,GAAa,EAAE;IAEwE;IAE5G,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAACI,OAAK,CAAC;QACrC,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,YAAY,GAAA;QACV,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,IAAG;YACtC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;gBAClC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;oBACpC,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;AACvD,oBAAA,IAAI,SAAS,IAAI,CAAC,EAAE;AAClB,wBAAA,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AAC/B,wBAAA,OAAO,CAAC,OAAO,GAAG,IAAI;AACtB,wBAAA,QAAQ,CAAC,UAAU,GAAG,IAAI;AAC1B,wBAAA,MAAM,CAAC,UAAU,GAAG,IAAI;oBAC1B;AACF,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,qBAAqB,GAAG,UAAU;IACzC;AAvHW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,SAAA,gCAAA,CAAA,iBAAA,EAAA,EAAA,OAAA,KAAA,iBAAA,IAAA,wBAAwB,uBAgGf,eAAe,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAC,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEAhGxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,sBAAA,CAAA,CAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,aAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,UAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,UAAA,EAAA,KAAA,CAAA,EAAA,CAAA,OAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,eAAA,EAAA,cAAA,CAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,CAAA,EAAA,SAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YDjBrC,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,CAAoE;YACpE,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAuC;YAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAuC;;YAAA,EAAA,CAAA,YAAA,EAAK;YACnF,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAuB;YAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA6C;;YAAA,EAAA,CAAA,YAAA,EAAI;AAGpE,YADJ,8BAAwB,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAC0D;YAC5E,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAuD;AAoB7D,YADI,iBAAM,EACJ;;YAzBiC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAuC;YAAvC,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,CAAA,CAAuC;YACvD,EAAA,CAAA,SAAA,CAAA,CAAA,CAA6C;YAA7C,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,CAAA,CAA6C;YAGnB,EAAA,CAAA,SAAA,CAAA,CAAA,CAAgC;YAAhC,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,cAAA,CAAgC;YACxC,EAAA,CAAA,SAAA,EAAkB;YAAlB,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,MAAA,CAAA,QAAA,CAAkB;;;iFCW9C,wBAAwB,EAAA,CAAA;cANpC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,KAAK,EAAA,QAAA,EAAA,41CAAA,EAAA,MAAA,EAAA,CAAA,2oBAAA,CAAA,EAAA;;sBAkGN,MAAM;uBAAC,eAAe;;kFAhGxB,wBAAwB,EAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,oDAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCTxB,sBAAsB,CAAA;AAGjC,IAAA,WAAA,CAA6B,MAAiB,EAAA;QAAjB,IAAA,CAAA,MAAM,GAAN,MAAM;IAAe;AAElD,IAAA,IAAI,CAAC,UAAoB,EAAA;AACvB,QAAA,MAAM,IAAI,GAAe,EAAE,UAAU,EAAE;AACvC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC;IACvF;uHARW,sBAAsB,EAAA,EAAA,CAAA,QAAA,CAAAP,IAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;uEAAtB,sBAAsB,EAAA,OAAA,EAAtB,sBAAsB,CAAA,IAAA,EAAA,UAAA,EAFrB,MAAM,EAAA,CAAA,CAAA;;iFAEP,sBAAsB,EAAA,CAAA;cAHlC,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE;AACb,aAAA;;;MCEY,4BAA4B,CAAA;AAGvC,IAAA,WAAA,CAA6B,OAA+B,EAAA;QAA/B,IAAA,CAAA,OAAO,GAAP,OAAO;QAF3B,IAAA,CAAA,UAAU,GAAa,EAAE;IAE8B;IAEhE,IAAI,GAAA;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IACpC;6HAPW,4BAA4B,EAAA,EAAA,CAAA,iBAAA,CAAAQ,sBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEAA5B,4BAA4B,EAAA,SAAA,EAAA,CAAA,CAAA,2BAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,qCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YCTzC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAgF;AAAjB,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,6DAAA,GAAA,EAAA,OAAS,UAAM,CAAA,CAAA,CAAA,CAAC;YAC3E,EAAA,CAAA,MAAA,CAAA,CAAA,CACJ;;YAAA,EAAA,CAAA,YAAA,EAAS;;YADL,EAAA,CAAA,SAAA,EACJ;YADI,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,CAAA,EAAA,IAAA,CACJ;;;iFDOa,4BAA4B,EAAA,CAAA;cANxC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,cAGzB,KAAK,EAAA,QAAA,EAAA,mJAAA,EAAA,MAAA,EAAA,CAAA,iDAAA,CAAA,EAAA;oDAGV,UAAU,EAAA,CAAA;kBAAlB;;kFADU,4BAA4B,EAAA,EAAA,SAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MEsB5B,qBAAqB,CAAA;sHAArB,qBAAqB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAArB,qBAAqB,EAAA,CAAA,CAAA;uEAZ9B,YAAY;YACZ,eAAe;YACf,eAAe;YACf,eAAe;YACf,gBAAgB;YAChB,aAAa;YACb,iBAAiB,CAAA,EAAA,CAAA,CAAA;;iFAMR,qBAAqB,EAAA,CAAA;cAlBjC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE;oBACZ,wBAAwB;oBACxB;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP,YAAY;oBACZ,eAAe;oBACf,eAAe;oBACf,eAAe;oBACf,gBAAgB;oBAChB,aAAa;oBACb;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD;AACF,aAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,qBAAqB,mBAhB9B,wBAAwB;AACxB,QAAA,4BAA4B,aAG5B,YAAY;QACZ,eAAe;QACf,eAAe;QACf,eAAe;QACf,gBAAgB;QAChB,aAAa;AACb,QAAA,iBAAiB,aAGjB,4BAA4B,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;AC5BzB,MAAM,gBAAgB,GAAG,+ZAA+Z;;;;;;;ICC7b,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,CAMmB;;;IAFjB,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,mBAAA,CAA6B;;;IAQ3B,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,CAAiC;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAkB;IAAA,EAAA,CAAA,YAAA,EAAW;;;IAA7B,EAAA,CAAA,SAAA,EAAkB;IAAlB,EAAA,CAAA,iBAAA,CAAA,MAAA,CAAA,cAAA,CAAkB;;;;IAJvD,EAAA,CAAA,uBAAA,CAAA,CAAA,CAA2D;IACzD,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,CAEC;AADC,IAD6C,EAAA,CAAA,UAAA,CAAA,aAAA,EAAA,SAAA,yEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAe,MAAA,CAAA,UAAA,CAAA,MAAA,CAAkB,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,OAAA,EAAA,SAAA,mEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,MAAA,YAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CACtE,oBAAiB,CAAA,CAAA,CAAA,CAAA,CAAC;IAE3B,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAAiC;IACjC,EAAA,CAAA,YAAA,CAAA,CAAA,CAAyB;IAC3B,EAAA,CAAA,YAAA,EAAS;;;;IALyE,EAAA,CAAA,SAAA,EAAqB;IAArB,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,QAAA,CAAqB;IAG1F,EAAA,CAAA,SAAA,CAAA,CAAA,CAAoB;IAApB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,cAAA,CAAoB;;;IAgB1B,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CACE;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAC2C;IAAA,EAAA,CAAA,YAAA,EAC7C;;;;;IAFE,EAAA,CAAA,SAAA,EAC2C;IAD3C,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,SAAA,EAAA,EAAA,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,GAAA,CAAA,KAAA,IAAA,GAAA,GAAA,GAAA,IAAA,CAC2C;;;IAG9C,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAqI;;;;IAApF,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAC,KAAA,EAAA,MAAA,CAAA,YAAA,CAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAA4E;;;;IAM7H,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAsE;AAArC,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,4EAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,iCAA0B,CAAA,CAAA,CAAA,CAAA,CAAC;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CAA2B;IAAA,EAAA,CAAA,YAAA,EAAI;;;IAA/B,EAAA,CAAA,SAAA,EAA2B;IAA3B,EAAA,CAAA,iBAAA,CAAA,MAAA,CAAA,uBAAA,CAA2B;;;;IArBvG,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAmH;AAA3E,IAAA,EAAA,CAAA,UAAA,CAAA,aAAA,EAAA,SAAA,qEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAe,yBAAkB,CAAA,CAAA,CAAA,CAAA,CAAC;IACxE,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAAgD;AAI9C,IADF,+BAAgC,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CACyC;AAA5B,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,6DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,MAAA,YAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,oBAAiB,CAAA,CAAA,CAAA,CAAA,CAAC;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CAAuB;IAAA,EAAA,CAAA,YAAA,EAAI;IAElG,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAA2E;IAE3E,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAA+B;IAC7B,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,IAAA,CAAC;AAKD,IALC,qFACE,CAAA,CAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAI2H;IAAO,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAA,CACvI;IAAA,EAAA,CAAA,YAAA,EAAI;IAEJ,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,CAAA,CAAiD;IAEjD,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,yDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAA+C;AAInD,IADE,iBAAM,EACF;;;IAxBqE,EAAA,CAAA,WAAA,CAAA,sBAAA,EAAA,MAAA,CAAA,QAAA,CAAuC;IAKvC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAuB;IAAvB,EAAA,CAAA,iBAAA,CAAA,MAAA,CAAA,iBAAA,CAAuB;IAEtD,EAAA,CAAA,SAAA,EAA2B;IAA3B,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,MAAA,CAAA,aAAA,EAAA,EAAA,CAAA,cAAA,CAA2B;IAGvC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAW;IAAX,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,MAAA,CAAW;IAK9B,EAAA,CAAA,SAAA,EAAwC;IAAxC,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,OAAA,IAAA,CAAA,MAAA,CAAA,sBAAA,CAAwC;IAKjD,EAAA,CAAA,SAAA,CAAA,CAAA,CAEC;IAFD,EAAA,CAAA,aAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,GAAA,MAAA,CAAA,uBAAA,GAAA,EAAA,GAAA,CAAA,CAAA,CAEC;;MC1BI,mBAAmB,CAAA;IAM9B,IAAa,MAAM,CAAC,GAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG;AAClB,QAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;IACnD;IACA,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,CAAA,CAAC;AAqBnC,IAAA,OAAO;AACP,IAAA,KAAK;AAEL,IAAA,WAAA,GAAA;AA/BU,QAAA,IAAA,CAAA,UAAU,GAAyB,IAAI,YAAY,EAAU;AAC7D,QAAA,IAAA,CAAA,UAAU,GAAkC,IAAI,YAAY,EAAmB;QACjF,IAAA,CAAA,OAAO,GAAa,EAAE;QAMrB,IAAA,CAAA,gBAAgB,GAAG,IAAI;QAGvB,IAAA,CAAA,QAAQ,GAAG,KAAK;QAQhB,IAAA,CAAA,uBAAuB,GAAW,CAAC;QACnC,IAAA,CAAA,sBAAsB,GAAY,KAAK;AAQhD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AAC3B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;QAGzB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAC,gBAAgB,EAAC,CAAC;IAC9C;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,eAAe,EAAE;IAC1B;IAEA,wBAAwB,GAAA;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAC,CAAC;IACrH;AAEA,IAAA,eAAe,CAAC,KAAY,EAAA;AAC1B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;AAC/C,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAiB;AACtC,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IACtB;;AAGA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IACtB;IAEQ,eAAe,GAAA;QACrB,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACvD;AAEQ,IAAA,IAAI,CAAC,KAAa,EAAA;QACxB,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B;IACF;AAEQ,IAAA,SAAS,CAAC,KAAsB,EAAA;AACtC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;AAEQ,IAAA,QAAQ,CAAC,KAAe,EAAA;;QAE9B,MAAM,UAAU,GAAW,EAAE;AAC7B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;gBACtC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,uBAAuB,CAAC,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC1I;YACF;;YAEA,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YAChE,IAAI,kBAAkB,EAAE;gBACtB,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;AAC/H,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACvB;AACK,iBAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;gBACjD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,uBAAuB,CAAC,QAAQ,EAAE,KAAK,EAAE,qCAAqC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAC;AAC3J,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACvB;iBACK;AACH,gBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACvB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QACrB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;IACzC;AAEQ,IAAA,qBAAqB,CAAC,QAAgB,EAAA;AAC5C,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE;AACzE,QAAA,IACE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AAClH,YAAA,OAAO,IAAI;QACb;aACK;YACH,OAAO,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,uBAAuB,CAAC,uCAAuC,GAAG,uBAAuB,CAAC,8BAA8B;QAChL;IACF;oHA5GW,mBAAmB,GAAA,CAAA,CAAA,CAAA,CAAA;oEAAnB,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,iBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,yBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;YDfhC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAA4F;YAC1F,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,CAKG,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAGwD,CAAA,CAAA,EAAA,0CAAA,EAAA,EAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAS/B;YA4B9B,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CASE;AADA,YAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,SAAA,oDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAU,2BAAuB,CAAA,CAAA,CAAA,CAAA,CAAC;AARpC,YAAA,EAAA,CAAA,YAAA,EASE,EAvD0F;;;YAA5B,EAAA,CAAA,WAAA,CAAA,UAAA,EAAA,GAAA,CAAA,QAAA,CAA2B;YAAlE,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,oBAAA,CAAsC;YAE1D,EAAA,CAAA,SAAA,EAAyB;YAAzB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,mBAAA,CAAyB;YAOb,EAAA,CAAA,SAAA,EAAwB;AAAA,YAAxB,2CAAwB,CAAA,UAAA,EAAA,gBAAA,CAAkB;YA0CzD,EAAA,CAAA,SAAA,CAAA,CAAA,CAA4B;YAA5B,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,GAAA,CAAA,iBAAA,CAA4B,CAAA,UAAA,EAAA,GAAA,CAAA,QAAA,CACP,CAAA,UAAA,EAAA,GAAA,CAAA,QAAA,CACA;;;iFCtCV,mBAAmB,EAAA,CAAA;cAN/B,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAGf,KAAK,EAAA,QAAA,EAAA,upEAAA,EAAA,MAAA,EAAA,CAAA,2uCAAA,CAAA,EAAA;oBAGK,SAAS,EAAA,CAAA;kBAAhC,SAAS;mBAAC,WAAW;YAEZ,UAAU,EAAA,CAAA;kBAAnB;YACS,UAAU,EAAA,CAAA;kBAAnB;YAEY,MAAM,EAAA,CAAA;kBAAlB;YAKQ,gBAAgB,EAAA,CAAA;kBAAxB;YAEQ,OAAO,EAAA,CAAA;kBAAf;YACQ,QAAQ,EAAA,CAAA;kBAAhB;YACQ,mBAAmB,EAAA,CAAA;kBAA3B;YACQ,UAAU,EAAA,CAAA;kBAAlB;YACQ,QAAQ,EAAA,CAAA;kBAAhB;YACQ,aAAa,EAAA,CAAA;kBAArB;YACQ,cAAc,EAAA,CAAA;kBAAtB;YACQ,iBAAiB,EAAA,CAAA;kBAAzB;YACQ,uBAAuB,EAAA,CAAA;kBAA/B;YACQ,uBAAuB,EAAA,CAAA;kBAA/B;YACQ,sBAAsB,EAAA,CAAA;kBAA9B;YAGQ,kBAAkB,EAAA,CAAA;kBAA1B;;kFA1BU,mBAAmB,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCanB,gBAAgB,CAAA;iHAAhB,gBAAgB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAhB,gBAAgB,EAAA,CAAA,CAAA;uEAbzB,YAAY;YACZ,oBAAoB;YACpB,gBAAgB;YAChB,eAAe;YACf,iBAAiB;YACjB,aAAa;YACb,qBAAqB;YACrB,eAAe,CAAA,EAAA,CAAA,CAAA;;iFAMN,gBAAgB,EAAA,CAAA;cAhB5B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;AACnC,gBAAA,OAAO,EAAE;oBACP,YAAY;oBACZ,oBAAoB;oBACpB,gBAAgB;oBAChB,eAAe;oBACf,iBAAiB;oBACjB,aAAa;oBACb,qBAAqB;oBACrB;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD;AACF,aAAA;;wFACY,gBAAgB,EAAA,EAAA,YAAA,EAAA,CAfZ,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAEhC,YAAY;QACZ,oBAAoB;QACpB,gBAAgB;QAChB,eAAe;QACf,iBAAiB;QACjB,aAAa;QACb,qBAAqB;AACrB,QAAA,eAAe,aAGf,mBAAmB,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;;;;;;;;IClBX,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAmE;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAmC;IAAA,EAAA,CAAA,YAAA,EAAO;;;IAA1C,EAAA,CAAA,SAAA,EAAmC;IAAnC,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,SAAA,CAAA,cAAA,IAAA,IAAA,GAAA,IAAA,GAAA,SAAA,CAAA,cAAA,CAAA,MAAA,EAAA,GAAA,CAAmC;;;;IAatG,EAAA,CAAA,uBAAA,CAAA,CAAA,CAAkD;IAChD,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,EAAA,CAAA,CAAwP;;AAArC,IAAxC,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,8EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,MAAA,CAAA,aAAA,CAAA,MAAA,EAAA,SAAA,CAA6B,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,SAAA,EAAA,SAAA,gFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAY,wBAAwB,CAAA,CAAA,CAAA,CAAA,CAAC;IAAvP,EAAA,CAAA,YAAA,EAAwP;;;;IAAlM,EAAA,CAAA,SAAA,EAA2C;IAA3C,EAAA,CAAA,WAAA,CAAA,QAAA,EAAA,SAAA,CAAA,MAAA,CAAA,MAAA,GAAA,EAAA,CAA2C;IAAa,EAAA,CAAA,UAAA,CAAA,aAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,SAAA,CAAA,MAAA,IAAA,IAAA,GAAA,IAAA,GAAA,SAAA,CAAA,MAAA,CAAA,WAAA,KAAA,EAAA,CAAA,CAA4D;;;IAMpK,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAoP;IAClP,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;IAAA,EAAA,CAAA,YAAA,EAAa;;;;IAFD,EAAA,CAAA,WAAA,CAAA,QAAA,EAAA,CAAA,SAAA,CAAA,MAAA,IAAA,IAAA,GAAA,IAAA,GAAA,SAAA,CAAA,MAAA,CAAA,cAAA,KAAA,QAAA,CAAA,UAAA,IAAA,CAAA,QAAA,CAAA,qBAAA,CAAkG;AAAsH,IAA/F,6MAA8F,CAAA,OAAA,EAAA,QAAA,CAAgB;IACjP,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,SAAA,CAAA,gBAAA,GAAA,QAAA,CAAA,GAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,QAAA,CAAA,GAAA,CAAA,EAAA,GAAA,CACF;;;IAJN,EAAA,CAAA,uBAAA,CAAA,CAAA,CAAqE;IACjE,EAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,4EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,EAAA,EAAA,UAAA,CAIC;;;;;IAJD,EAAA,CAAA,SAAA,EAIC;AAJD,IAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,SAAA,CAAA,MAAA,IAAA,IAAA,GAAA,IAAA,GAAA,SAAA,CAAA,MAAA,CAAA,cAAA,KAAA,SAAA,CAAA,MAAA,EAAsE,KAAK,CAAA,CAI1E;;;IAMG,EAAA,CAAA,uBAAA,CAAA,CAAA,CAAiE;IACjE,EAAA,CAAA,MAAA,CAAA,CAAA,CACA;;;;;;IADA,EAAA,CAAA,SAAA,EACA;IADA,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,QAAA,CAAA,GAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAC,KAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,QAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAA,GAAA,CACA;;;IAGE,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;;;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,QAAA,CAAA,GAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,EAAA,QAAA,CAAA,KAAA,CAAA,CAAA,EAAA,GAAA,CACF;;;IAPF,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAoP;AAKlP,IAJA,sIAAiE,CAAA,CAAA,EAAA,yFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAIvC;IAG5B,EAAA,CAAA,YAAA,EAAa;;;;;IARD,EAAA,CAAA,WAAA,CAAA,QAAA,EAAA,CAAA,SAAA,CAAA,MAAA,IAAA,IAAA,GAAA,IAAA,GAAA,SAAA,CAAA,MAAA,CAAA,cAAA,KAAA,QAAA,CAAA,UAAA,IAAA,CAAA,QAAA,CAAA,qBAAA,CAAkG;AAAsH,IAA/F,6MAA8F,CAAA,OAAA,EAAA,QAAA,CAAgB;IAClO,EAAA,CAAA,SAAA,EAAgC;AAAA,IAAhC,kDAAgC,CAAA,UAAA,EAAA,eAAA,CAAgB;;;IAFnE,EAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,2EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,EAAA,EAAA,UAAA,CAUC;;;;IAVD,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,SAAA,CAAA,MAAA,IAAA,IAAA,GAAA,IAAA,GAAA,SAAA,CAAA,MAAA,CAAA,cAAA,KAAA,SAAA,CAAA,MAAA,EAA8E,KAAK,EAAC,OAAO,CAAA,CAU1F;;;IApBP,EAAA,CAAA,uBAAA,CAAA,CAAA,CAA2C;AASzC,IARA,kHAAqE,CAAA,CAAA,EAAA,qEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAQhC;;;;;IARtB,EAAA,CAAA,SAAA,EAAyB;AAAA,IAAzB,2CAAyB,CAAA,UAAA,EAAA,0BAAA,CAA2B;;;;IArBzE,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAmJ;AAAxB,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,+DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,gBAAa,CAAA,CAAA,CAAA,CAAA,CAAC;AAE9I,IADF,+BAAsC,CAAA,CAAA,EAAA,MAAA,CAC9B;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA4B;;IAAA,EAAA,CAAA,YAAA,EAAO;IACzC,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAmE;IACnE,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,CAAU;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAoE;AAChF,IADgF,iBAAW,EACrF;IAEN,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,EAAA,CAAA,CAQC;IADC,EADA,CAAA,UAAA,CAAA,cAAA,EAAA,SAAA,0EAAA,CAAA,MAAA,EAAA,EAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,MAAA,CAAA,SAAA,CAAA,CAAA,MAAA,YAAA,GAAA,MAAA,CAAA,MAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,KAA2B,IAAI,GAAG,MAAA,CAAA,sBAAA,CAAA,SAAA,EAAA,YAAA,CAAiC,GAAG,MAAA,CAAA,sBAAA,CAAA,SAAA,EAAA,YAAA,CAAiC,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,iBAAA,EAAA,SAAA,6EAAA,CAAA,MAAA,EAAA,EAAA,MAAA,SAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CACrF,MAAA,CAAA,WAAA,CAAA,MAAA,EAAA,SAAA,CAA2B,CAAA,CAAA,CAAA,CAAA,CAAC;AAM/C,IAJA,oGAAkD,CAAA,EAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAIP;AAwB/C,IADE,iBAAa,EACN;;;;IA5CD,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,SAAA,CAAA,cAAA,IAAA,IAAA,GAAA,IAAA,GAAA,SAAA,CAAA,cAAA,CAAA,MAAA,CAAqD;IAEnD,EAAA,CAAA,SAAA,CAAA,CAAA,CAA4B;IAA5B,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,EAAA,EAAA,SAAA,CAAA,KAAA,CAAA,CAA4B;IAC3B,EAAA,CAAA,SAAA,CAAA,CAAA,CAAmC;IAAnC,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,SAAA,CAAA,cAAA,IAAA,IAAA,GAAA,IAAA,GAAA,SAAA,CAAA,cAAA,CAAA,MAAA,CAAmC;IAChC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAoE;IAApE,EAAA,CAAA,iBAAA,CAAA,SAAA,CAAA,SAAA,GAAA,mBAAA,GAAA,qBAAA,CAAoE;IAM9E,EAAA,CAAA,SAAA,EAA6B;IAA7B,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,cAAA,CAA6B,CAAA,YAAA,EAAA,CAAA,SAAA,IAAA,IAAA,GAAA,IAAA,GAAA,SAAA,CAAA,aAAA,KAAA,MAAA,CACiB,CAAA,iBAAA,EAAA,SAAA,CAAA,SAAA,CACV;IAIrB,EAAA,CAAA,SAAA,CAAA,CAAA,CAAiC;IAAjC,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,SAAA,IAAA,IAAA,GAAA,IAAA,GAAA,SAAA,CAAA,MAAA,IAAA,IAAA,GAAA,IAAA,GAAA,SAAA,CAAA,MAAA,CAAA,WAAA,CAAiC;IAIjC,EAAA,CAAA,SAAA,EAA0B;IAA1B,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,SAAA,CAAA,MAAA,CAAA,MAAA,CAA0B;;;;IA4BnD,EAAA,CAAA,uBAAA,CAAA,CAAA,CAAqC;AAEjC,IADF,+BAA2B,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CACsB;AAAvB,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,mBAAY,CAAA,CAAA,CAAA,CAAA,CAAC;IAC5C,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAsC;IACpC,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,gBAAA,CACF;AACF,IADE,iBAAO,EACA;IACT,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAgD;AAAxB,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,oBAAa,CAAA,CAAA,CAAA,CAAA,CAAC;IAC7C,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAsC;IACpC,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,iBAAA,CACF;IAAA,EAAA,CAAA,YAAA,EAAO,EACA,EACL;;;;AA/DR,IADF,8BAAiD,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAC8B;IAC3E,EAAA,CAAA,uBAAA,CAAA,CAAA,EAAA,CAAA,CAA4C;IAC1C,EAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAAC,YAAA,CA8CC;;IAEL,EAAA,CAAA,YAAA,EAAM;IACN,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAqC;IAcvC,EAAA,CAAA,YAAA,EAAM;;;IAjEsD,EAAA,CAAA,SAAA,EAAkB;IAAlB,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,MAAA,CAAA,IAAA,CAAkB;IAC5D,EAAA,CAAA,SAAA,CAAA,CAAA,CAA6B;IAA7B,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,MAAA,CAAA,eAAA,CAA6B;IACzC,EAAA,CAAA,SAAA,EA8CC;IA9CD,EAAA,CAAA,UAAA,CAAA,MAAA,CAAA,cAAA,CA8CC;IAGU,EAAA,CAAA,SAAA,CAAA,CAAA,CAAoB;IAApB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,cAAA,CAAoB;;MCpCxB,kBAAkB,CAAA;IAI7B,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,EAAE;IACtB;IAGA,IAAa,gBAAgB,CAAC,KAAc,EAAA;AAC1C,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;QAC1B,IAAI,CAAC,aAAa,EAAE;IACtB;;AAsBA,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK;IACnC;;IAEA,IAAI,gBAAgB,KAAK,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACxD,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;IACxB;AACA,IAAA,IAAI,uBAAuB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,uBAAuB;IAC/C;AACA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO;IAChI;;IAGA,IAAI,SAAS,CAAC,KAAK,EAAA;AACjB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QACvB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;QACpC,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,WAAA,CAAoB,KAAwB,EAAU,SAA2B,EAAA;QAA7D,IAAA,CAAA,KAAK,GAAL,KAAK;QAA6B,IAAA,CAAA,SAAS,GAAT,SAAS;AA1CrD,QAAA,IAAA,CAAA,eAAe,GAAuC,IAAI,YAAY,EAAwB;QAEhG,IAAA,CAAA,UAAU,GAAG,EAAE;AAId,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC;QACnC,IAAA,CAAA,IAAI,GAAG,IAAI,SAAS,CAAC;YAC5B,OAAO,EAAE,IAAI,CAAC;AACf,SAAA,CAAC;AAEF,QAAA,IAAA,CAAA,OAAO,GAAyB;AAC9B,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,OAAO,EAAE,EAAE;SACZ;QAED,IAAA,CAAA,cAAc,GAAG,KAAK;QACtB,IAAA,CAAA,iBAAiB,GAAG,CAAC;IAyBgE;IAErF,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,KAAI;AACvC,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;AACvE,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,2BAA2B,EAAE;AAElC,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC;IAC5B;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;IAC5B;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE;IAC5C;IAEA,sBAAsB,CAAC,MAAuB,EAAE,KAAa,EAAA;AAC3D,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,IAAI,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE;YAChE;QACF;QAEA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;AAE9E,QAAA,IAAI,MAAM,CAAC,aAAa,KAAK,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE;AAC5D,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAC5B;IACF;IAEA,sBAAsB,CAAC,MAAuB,EAAE,KAAa,EAAA;AAC3D,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE;YAC/B;QACF;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,aAAa;QAEpF,IAAI,KAAK,EAAE;AACT,YAAA,KAAK,CAAC,KAAK,GAAG,EAAE;QAClB;AAEA,QAAA,MAAM,CAAC,MAAM,CAAC,cAAc,GAAG,EAAE;AACjC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC;IAClC;IAEA,aAAa,CAAC,KAA2B,EAAE,MAAuB,EAAA;AAChE,QAAA,MAAM,MAAM,GAAG,KAAK,EAAE,MAA6B;QACnD,MAAM,CAAC,MAAO,CAAC,cAAc,GAAG,MAAM,EAAE,KAAK,IAAI,EAAE;QACnD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,KAAI;AACtC,YAAA,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE;AACtD,gBAAA,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;oBAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAChF,oBAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;oBACzF,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,aAAa,KAAK,aAAa,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC;AAClG,oBAAA,KAAK,CAAC,UAAU,GAAG,UAAU,IAAI,KAAK;AACtC,oBAAA,KAAK,CAAC,qBAAqB,GAAG,aAAa,IAAI,KAAK;oBACpD,OAAO,aAAa,IAAI,UAAU;AACpC,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,CAAC,KAAsB,EAAE,MAAuB,EAAA;QACzD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,CAAoB;AACnH,QAAA,aAAa,CAAC,cAAc,GAAG,KAAK,CAAC,KAAK;IAC5C;AAEA,IAAA,aAAa,CAAC,MAAuB,EAAA;;QAEnC,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAgB;QAC9E,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,WAAqB;YAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,CAAoB;AAC/G,YAAA,SAAS,CAAC,aAAa,GAAG,gBAAgB;YAC1C,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAA,EAAG,gBAAgB,IAAI;AACtD,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IACzC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,KAAK,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE;YACzE;QACF;AACA,QAAA,IAAI,CAAC,iBAAiB,IAAI,CAAC;IAC7B;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,CAAC,EAAE;YAChC;QACF;AACA,QAAA,IAAI,CAAC,iBAAiB,IAAI,CAAC;IAC7B;IAEA,YAAY,CAAC,GAAW,EAAE,EAAU,EAAA;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;QAE7C,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AAEA,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAW;AACpC,QAAA,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AACtB,QAAA,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC5B;IAEA,gBAAgB,GAAA;QACd,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,KAAI;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC;AAC/D,YAAA,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACxC;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE;YACrC,MAAM,cAAc,GAAG,GAAG;YAE1B,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;gBAClC,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW;;gBAGnE,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,cAAc;;AAGtE,gBAAA,IAAI,gBAAgB,IAAI,cAAc,EAAE;AACtC,oBAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC;AAC1B,oBAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,EAAE;AAClC,oBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;oBAC3B;gBACF;;gBAGA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,cAAc,CAAC;;AAGjE,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC;gBAE1E,IAAI,UAAU,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE;AAC3C,oBAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC;gBAC5B;;AAGA,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;;gBAGtE,MAAM,kBAAkB,GAAwB,EAAE;AAClD,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE;AAChE,oBAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;gBACxE;AAEA,gBAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,kBAAkB;AAClD,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;YAC5B;QACF;IACF;IAEQ,2BAA2B,GAAA;AACjC,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;YACnE,IAAI,CAAC,OAAO,GAAG;AACb,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,OAAO,EAAE;aACV;YAED,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;;AAE/C,gBAAA,MAAM,MAAM,GAA2B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAe,CAAC,SAAS,CAA0B;AAC1G,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,uBAAuB,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YAC1G;YACA,IAAI,CAAC,WAAW,EAAE;AACpB,QAAA,CAAC,CAAC;IACJ;mHA3OW,kBAAkB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEAAlB,kBAAkB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,wBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;AAAlB,YAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,SAAA,4CAAA,GAAA,EAAA,OAAA,cAAU,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,eAAA,CAAQ;;YDhB/B,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAiD;;YAAxB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,gBAAA,CAAsB;;;iFCgBlC,kBAAkB,EAAA,CAAA;cAP9B,SAAS;AAEI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,y6HAAA,EAAA,MAAA,EAAA,CAAA,uuDAAA,CAAA,EAAA;iFAGS,aAAa,EAAA,CAAA;kBAAxC,SAAS;mBAAC,eAAe;YACS,kBAAkB,EAAA,CAAA;kBAApD,YAAY;mBAAC,mBAAmB;YAEjC,QAAQ,EAAA,CAAA;kBADP,YAAY;AAAC,YAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE;YAKxB,QAAQ,EAAA,CAAA;kBAAhB;YACY,gBAAgB,EAAA,CAAA;kBAA5B;YAMS,eAAe,EAAA,CAAA;kBAAxB;;kFAfU,kBAAkB,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCsBlB,eAAe,CAAA;gHAAf,eAAe,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAf,eAAe,EAAA,CAAA,CAAA;uEAlBxB,YAAY;YACZ,eAAe;YACf,cAAc;YACd,kBAAkB;YAClB,gBAAgB;YAChB,eAAe;YACf,WAAW;YACX,gBAAgB;YAChB,eAAe;YACf,aAAa;YACb,mBAAmB;YACnB,gCAAgC;YAChC,wBAAwB,CAAA,EAAA,CAAA,CAAA;;iFAMf,eAAe,EAAA,CAAA;cAvB3B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE;oBACZ;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP,YAAY;oBACZ,eAAe;oBACf,cAAc;oBACd,kBAAkB;oBAClB,gBAAgB;oBAChB,eAAe;oBACf,WAAW;oBACX,gBAAgB;oBAChB,eAAe;oBACf,aAAa;oBACb,mBAAmB;oBACnB,gCAAgC;oBAChC;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD;AACF,aAAA;;wFACY,eAAe,EAAA,EAAA,YAAA,EAAA,CArBxB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAGlB,YAAY;QACZ,eAAe;QACf,cAAc;QACd,kBAAkB;QAClB,gBAAgB;QAChB,eAAe;QACf,WAAW;QACX,gBAAgB;QAChB,eAAe;QACf,aAAa;QACb,mBAAmB;QACnB,gCAAgC;AAChC,QAAA,wBAAwB,aAGxB,kBAAkB,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;ACnCf,MAAM,6BAA6B,GAAG;;ICAjC;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,CAAC,EAFW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;;;;ICOpB,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAIO;;;;IADL,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,MAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,WAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAA2D;;;IAE7D,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAIO;;;;IADL,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,MAAA,CAAA,WAAA,EAAA,MAAA,CAAA,MAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAAuE;;;IAEzE,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAIO;;;;IADL,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,MAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,MAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAAiF;;;IAnBrF,EAAA,CAAA,uBAAA,CAAA,CAAA,CAAoD;AAEhD,IADF,2BAAK,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CACmC;IACpC,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;AACF,IADE,iBAAO,EACH;IACN,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAIC,CAAA,CAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAKA,CAAA,CAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAKA;IACD,EAAA,CAAA,YAAA,CAAA,CAAA,CAAyB;;;;IAlBrB,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,MAAA,CAAA,IAAA,EAAA,GAAA,CACF;IAIC,EAAA,CAAA,SAAA,EAAkB;IAAlB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAkB;IAIlB,EAAA,CAAA,SAAA,EAAwB;IAAxB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,CAAA,WAAA,CAAwB;IAKxB,EAAA,CAAA,SAAA,EAA6B;IAA7B,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,CAAA,gBAAA,CAA6B;;;IAOhC,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAA0C;;MChBjC,sBAAsB,CAAA;uHAAtB,sBAAsB,GAAA,CAAA,CAAA,CAAA,CAAA;oEAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,oBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,kBAAA,EAAAT,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,SAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;YDTnC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAoC;AAwBlC,YAvBA,yFAAoD,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAuB9B;YAGxB,EAAA,CAAA,YAAA,EAAM;;;YA1BW,EAAA,CAAA,SAAA,EAAuB;AAAA,YAAvB,0CAAuB,CAAA,UAAA,EAAA,UAAA,CAAY;;;iFCQvC,sBAAsB,EAAA,CAAA;cANlC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAGlB,KAAK,EAAA,QAAA,EAAA,0+BAAA,EAAA,MAAA,EAAA,CAAA,kcAAA,CAAA,EAAA;gBAGQ,MAAM,EAAA,CAAA;kBAAhC,KAAK;mBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;kFADd,sBAAsB,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,gDAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;;;;;;;;ICC7B,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAMC;AADC,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,eAAQ,CAAA,CAAA,CAAA,CAAA,CAAC;IAElB,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAsC;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,gBAAA,CAAc;IAAA,EAAA,CAAA,YAAA,EAAO;IAC3D,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAM;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAiD;;AACzD,IADyD,iBAAO,EACvD;;IADD,EAAA,CAAA,SAAA,CAAA,CAAA,CAAiD;IAAjD,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,+BAAA,CAAA,CAAiD;;;;AAoBrD,IADF,+BAA2D,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CACR;AAAzB,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,0EAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,qBAAc,CAAA,CAAA,CAAA,CAAA,CAAC;IAC9C,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,CAAU;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,OAAA,CAAK;IAAA,EAAA,CAAA,YAAA,EAAW,EACnB,EACL;;;;AAdN,IANF,+BAKC,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAME;AADC,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,oEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,wBAAiB,CAAA,CAAA,CAAA,CAAA,CAAC;IAE3B,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAA6B;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,aAAA,CAAW;IAAA,EAAA,CAAA,YAAA,EAAO;IAC/C,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAM;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAwD;;AAChE,IADgE,iBAAO,EAC9D;IAET,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAA2D;IAK7D,EAAA,CAAA,YAAA,EAAM;;;IAdF,EAAA,CAAA,SAAA,EAAwC;IAAxC,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,MAAA,CAAA,gBAAA,CAAwC;IAMlC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAwD;IAAxD,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,sCAAA,CAAA,CAAwD;IAG1D,EAAA,CAAA,SAAA,CAAA,CAAA,CAAqB;IAArB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,eAAA,CAAqB;;;;IA0B7B,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAKC;IADC,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,6EAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,MAAA,aAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,aAAA,CAAA,KAAA,GAA4B,EAAE,wBAAE,MAAA,CAAA,MAAA,CAAO,EAAA,MAAA,EAAU,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA,CAAA,CAAA,CAAA,CAAC;IAElE,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,CAAU;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,OAAA,CAAK;AACjB,IADiB,iBAAW,EACnB;;;;AAnBT,IANF,+BAKC,CAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAII;;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,QAAA,CAAM;IAAA,EAAA,CAAA,YAAA,EACR;IACD,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,EAAA,CAAA,CAME;;AADA,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,mEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,qBAAc,CAAA,CAAA,CAAA,CAAA,CAAC;IAL1B,EAAA,CAAA,YAAA,EAME;IACF,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAKC;IAGH,EAAA,CAAA,YAAA,EAAM;;;;IAlBF,EAAA,CAAA,SAAA,EAAmE;IAAnE,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,MAAA,CAAA,iBAAA,GAAA,EAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAmE;IAInE,EAAA,CAAA,SAAA,CAAA,CAAA,CAAoD;AAGpD,IAHA,8JAAoD,CAAA,aAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAGb;IAItC,EAAA,CAAA,SAAA,CAAA,CAAA,CAA+C;IAA/C,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,qBAAA,IAAA,aAAA,CAAA,KAAA,CAA+C;;;;IAYtD,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,CAAA,CAMC;AADC,IAAA,EAAA,CAAA,UAAA,CAAA,iBAAA,EAAA,SAAA,iGAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAmB,6BAAsB,CAAA,CAAA,CAAA,CAAA,CAAC;IAE5C,EAAA,CAAA,YAAA,EAAiB;;;AAHf,IADA,0DAAqC,CAAA,UAAA,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,QAAA,CACF;;;;IAUnC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CACsK;;AAAjC,IAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,SAAA,kFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAQ,8BAAuB,CAAA,CAAA,CAAA,CAAA,CAAC;IACrK,EAAA,CAAA,YAAA,EAAgB;;;IAFD,EAAA,CAAA,UAAA,CAAA,cAAA,EAAA,CAAA,mBAAA,CAAA,YAAA,CAA8C,CAAA,sBAAA,EAAA,mBAAA,CAAA,oBAAA,CAA8D,CAAA,iBAAA,EAAA,mBAAA,CAAA,eAAA,IAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CACS;;;;;AAsB9H,IADF,8BAAwE,CAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAOrE;;AAHC,IAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,SAAA,2EAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAU,8BAAuB,CAAA,CAAA,CAAA,CAAA,CAAC;AAKtC,IADE,iBAAe,EACZ;;;IAPD,EAAA,CAAA,SAAA,EAA8D;AAI9D,IAJA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,mCAAA,CAAA,CAA8D,CAAA,UAAA,EAAA,MAAA,CAAA,MAAA,CAAA,WAAA,CAAA,kBAAA,CACX,qEAEG,CAAA,eAAA,EAAA,MAAA,CAAA,YAAA,CAAA,QAAA,EAAA,IAAA,CAAA,MAAA,CAAA,aAAA,EAAA,CACO;;;;IAU/D,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAcC;;AAFC,IADA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,yFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,MAAA,CAAA,eAAA,EAAwB,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,QAAA,EAAA,SAAA,0FAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CACxB,0CAA+B,CAAA,CAAA,CAAA,CAAA,CAAC;IAG5C,EAAA,CAAA,YAAA,EAAe;;;;IAdb,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,+BAAA,CAAA,CAA0D,CAAA,UAAA,EAAA,MAAA,CAAA,MAAA,CAAA,WAAA,CAAA,kBAAA,IAAA,MAAA,CAAA,gBAAA,CAAA,QAAA,CAAA,WAAA,CAAA,IAAA,MAAA,CAAA,uBAAA,CASzD,CAAA,SAAA,EAAA,MAAA,CAAA,YAAA,CAAA,UAAA,CAAA,WAAA,CAAA,CAG2C;;;IAnBhD,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAKC;IACC,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAcC;IAEH,EAAA,CAAA,YAAA,EAAK;;;;IAdA,EAAA,CAAA,SAAA,EAG8B;IAH9B,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,0BAAA,IAAA,MAAA,CAAA,UAAA,KAAA,WAAA,IAAA,MAAA,CAAA,YAAA,CAAA,UAAA,CAAA,WAAA,CAAA,CAG8B;;;IAarC,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAGM;;;;IACN,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAeC;IAZC,2cAIL,IAAI,CAAA,CAAA,CAAA,CAAA,CAAE,qQACY,MAAA,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAqB,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,YAAA,EAAA,SAAA,qEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CACrB,MAAA,CAAA,aAAA,EAAe,CAAA,CAAA,CAAA,CAAA,CAAC;IAM/B,EAAA,CAAA,YAAA,EAAK;;;;;IALJ,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,CAAA,MAAA,CAAA,MAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,MAAA,CAAA,gBAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,eAAA,IAAA,EAAA,MAAA,CAAA,MAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,MAAA,CAAA,eAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAEC,CAAA,iBAAA,EAAA,MAAA,CAAA,qBAAA,CAAA,SAAA,EAAA,OAAA,CAAA,CAC0D,CAAA,WAAA,EAAA,MAAA,CAAA,oBAAA,CAAA,SAAA,EAAA,OAAA,CAAA,CACR;;;AAY7C,IARN,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAwE,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CACjC,iBAMlC,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAC8B;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,WAAA,CAAS;AAG5C,IAH4C,EAAA,CAAA,YAAA,EAAO,EACtC,EACL,EACH;;;;IALC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAgC;IAAhC,EAAA,CAAA,UAAA,CAAA,mBAAA,EAAA,cAAA,CAAgC;;;IAMtC,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAKM;;;AAKJ,IAFF,0BAAkB,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAEC;IACf,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,oBAAA,EAAA,EAAA,CAAoE;AAExE,IADE,iBAAK,EACF;;;IAFmB,EAAA,CAAA,SAAA,CAAA,CAAA,CAA0B;IAA1B,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,eAAA,CAA0B;;;IAJpD,EAAA,CAAA,uBAAA,CAAA,CAAA,CAAsC;IACpC,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAkB;;;;;AAcpB,IADF,2BAAgD,CAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CACF;IAA9B,EAAA,CAAA,gBAAA,CAAA,eAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,MAAA,UAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,SAAA,CAAA,CAAA,EAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,KAAA,UAAA,CAAA,QAAA,GAAA,MAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAA6B;IACzC,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;AACF,IADE,iBAAe,EACX;;;IAHU,EAAA,CAAA,SAAA,EAA6B;IAA7B,EAAA,CAAA,gBAAA,CAAA,SAAA,EAAA,UAAA,CAAA,QAAA,CAA6B;IACzC,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,UAAA,CAAA,WAAA,CAAA,EAAA,GAAA,CACF;;MClLO,6BAA6B,CAAA;AAGxC,IAAA,WAAW;AACX,IAAA,IAAI,UAAU,GAAA;QACZ,QAAQ,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU;IACpD;IAMA,IAAa,SAAS,CAAC,KAAU,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC;IAClD;AAoCA,IAAA,IAAI,mBAAmB,GAAA,EAAK,OAAO,6BAA6B,CAAA,CAAC;AAoCjE,IAAA,IAAI,YAAY,GAAA,EAAK,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACzD,IAAA,IAAI,gBAAgB,GAAA,EAAK,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAEvE,IAAI,eAAe,GAAA,EAAK,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA,CAAC;IAMnH,WAAA,CAA6B,UAAsB,EAChC,gBAAkC,EAAA;QADxB,IAAA,CAAA,UAAU,GAAV,UAAU;QACpB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QA/F1B,IAAA,CAAA,YAAY,GAAG,IAAI,cAAc,CAAI,IAAI,EAAE,EAAE,CAAC;AAS9C,QAAA,IAAA,CAAA,SAAS,GAA4C,IAAI,CAAC,cAAc;;QAOxE,IAAA,CAAA,0BAA0B,GAAG,IAAI;QACjC,IAAA,CAAA,uBAAuB,GAAG,KAAK;;AAG9B,QAAA,IAAA,CAAA,eAAe,GAAuC,IAAI,YAAY,EAAwB;AAC9F,QAAA,IAAA,CAAA,eAAe,GAA4B,IAAI,YAAY,EAAa;AACxE,QAAA,IAAA,CAAA,QAAQ,GAAsB,IAAI,YAAY,EAAO;AACrD,QAAA,IAAA,CAAA,eAAe,GAAoB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK,EAAG,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;;QAqB7I,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAO;AACnB,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,MAAK,EAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,kEAAC;QAqBvE,IAAA,CAAA,aAAa,GAAG,eAAe;QAavB,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,MAAM,GAAG,CAAC;QACV,IAAA,CAAA,MAAM,GAAG,CAAC;QACV,IAAA,CAAA,UAAU,GAAG,CAAC;QACd,IAAA,CAAA,SAAS,GAAG,CAAC;QAQZ,IAAA,CAAA,eAAe,GAAG,OAAO;QACzB,IAAA,CAAA,sBAAsB,GAAG,cAAc;IAGS;;IAGzD,QAAQ,GAAA;QACN,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,yBAAyB,EAAE;QAChC,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ;AAClD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,IAAI,2BAA2B;AAC/F,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,IAAI,mBAAmB;AACnF,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU;AAC3D,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,qBAAqB,IAAI,IAAI;AACxF,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW;IACrE;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;IACzC;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QAChC,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;QAE1C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE;AACpC,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW;QAChE;IACF;;AAGA,IAAA,MAAM,CAAC,KAAoD,EAAA;AACzD,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,EAAE,KAAK;QACvD,IAAI,CAAC,MAAM,CAAC,MAAO,CAAC,QAAQ,CAAC,WAAW,GAAG,KAAK;AAChD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACzB;IAEA,oBAAoB,CAAC,OAAO,GAAG,KAAK,EAAA;AAClC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,GAAG,KAAK;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE;AAC1D,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;AAE/E,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QAChD;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YACtB;QACF;AAEA,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,EAAE;AACtD,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE;AAC9B,YAAA,iBAAiB,CAAC,OAAO,GAAG,EAAE;QAChC;AAEA,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;YAC5B,IAAI,OAAO,EAAE;AACX,gBAAA,MAAM,CAAC,QAAQ,GAAG,iBAAiB,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ;YAC/E;iBAAO;;gBAEL,iBAAiB,CAAC,OAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ;YAC3D;AAEA,YAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;gBACnB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACvC;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;QACvD;QAEA,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;QAC5C;IACF;IAEA,eAAe,GAAA;AACb,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,IAAI,EAAE;AACvD,QAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;AAC9B,YAAA,kBAAkB,CAAC,MAAM,GAAG,EAAE;QAChC;AAEA,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB;QAC9C,kBAAkB,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB;AACzD,QAAA,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC;IAC7C;AAEA,IAAA,cAAc,CAAC,OAA6B,EAAA;QAC1C,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAO,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,EAAE;QACpF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IACzC;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,KAAI;AACvD,YAAA,MAAM,CAAC,cAAc,GAAG,EAAE;AAC5B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;IACnC;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,UAAW,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC1D,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAA,CAAC,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE;YACnC,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;IAEA,oBAAoB,CAAC,EAAU,EAAE,OAAU,EAAA;QACzC,IAAI,SAAS,GAAG,KAAK;QACrB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;YACzD,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC;QACnG;AACA,QAAA,OAAO,SAAS;AACd,YAAA,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,gBAAgB,EAAE,kBAAkB,KAAK,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAClK;IAEA,qBAAqB,CAAC,EAAU,EAAE,OAAU,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC,gBAAgB,EAAE,kBAAkB,KAAK,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5K;;IAGA,aAAa,GAAA;QACX,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM;QAC5C,OAAO,WAAW,KAAK,OAAO;IAChC;IAEA,qBAAqB,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;;AAEhC,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CACxB,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAClG;gBACD;YACF;iBACK;AACH,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;gBACzB;YACF;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC;IAC1D;AAEA,IAAA,sBAAsB,CAAC,OAAU,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;IACnC;AAEA,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;YACpC;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU;AACxE,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS;QACvE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU;QAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS;;AAG5D,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;AAChC,YAAA,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC;QAC3C;IACF;AAEA,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;YACpC;QACF;QAEA,IAAI,CAAC,kBAAkB,EAAE;AAEzB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB;QACF;;AAGA,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;AAChC,YAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,MAAK;AAC/C,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBACvB;gBACF;AAEA,gBAAA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU;AACpE,gBAAA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS;;gBAGnE,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC;gBACnC,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC;;AAGnC,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK;AACtE,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK;AAEpE,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC5B,YAAA,CAAC,CAAC;QACJ;IACF;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;YACpC;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;AAGvB,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;AAChC,YAAA,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC;AACzC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC5B;IACF;AAEA,IAAA,eAAe,CAAC,MAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;IACnC;;IAGA,UAAU,CAAC,KAAa,EAAE,GAAM,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG;AACrB,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;IAC9B;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS;IAClC;AAEA,IAAA,cAAc,CAAC,EAAU,EAAA;AACvB,QAAA,OAAO,EAAE;IACX;IAEQ,kBAAkB,GAAA;;;;AAIxB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;aAClE,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,WAAW,CAAC;aACtH,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,KAAK,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;AAE1H,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,WAAW,EAAE;AAClG,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;YAC3B;iBAAO;AACL,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK;YAC5B;QACF;IACF;IAEQ,YAAY,GAAA;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE;YAChD;QACF;QAEA,IAAI,UAAU,GAAG,EAAE;AACnB,QAAA,IAAI,SAAwB;QAC5B,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM;YAC3C,KAAK,YAAY,CAAC,GAAG;AACrB,YAAA;AACE,gBAAA,SAAS,GAAG,YAAY,CAAC,GAAG;AAC5B,gBAAA,UAAU,GAAG,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC;gBAC5G;;AAEJ,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;QACjG,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA,EAAG,kBAAkB,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC;IAC3E;AAEQ,IAAA,kBAAkB,CAAC,QAA0C,EAAA;AACnE,QAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ;QACjC,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,QAAQ,EAAE;YAC3C,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9F;IACF;IACQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AAC/B,YAAA,IAAI;AACF,gBAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;gBAC7F,IAAI,kBAAkB,EAAE;oBACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;gBACzD;YACF;;AAEA,YAAA,MAAM;YACN;QACF;IACF;IAEQ,yBAAyB,GAAA;AAC/B,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,GAAG,KAAK;AAC1E,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;IACjC;IAEQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK;IAC1G;IAEQ,sBAAsB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;YAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;AAC5C,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,IAAI,IAAI,CAAC,aAAa;QAC/E;IACF;IAEQ,mBAAmB,GAAA;QACzB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;AAC/B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAC1B;IACF;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3D;IACF;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAC9B;QACF;QAEA,MAAM,yBAAyB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM;AAC/D,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI;;QAG5B,IAAI,yBAAyB,EAAE;AAC7B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,IAAI,CAAC,CAAC;QAC/D;IACF;AAEQ,IAAA,eAAe,CAAC,SAAiB,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS;QACtC;IACF;8HA1bW,6BAA6B,EAAA,EAAA,CAAA,iBAAA,CAAAU,UAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAX,EAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEAA7B,6BAA6B,EAAA,SAAA,EAAA,CAAA,CAAA,4BAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,4CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;wCA+B1B,YAAY,EAAA,CAAA,CAAA;wCAHT,eAAe,EAAA,CAAA,CAAA;wCACf,SAAS,EAAA,CAAA,CAAA;wCACT,YAAY,EAAA,CAAA,CAAA;;;;;;;;2BAGlB,QAAQ,EAAA,CAAA,CAAA;2BACR,OAAO,EAAA,CAAA,CAAA;;;2BAIP,YAAY,EAAA,CAAA,CAAA;AAIZ,YAAA,EAAA,CAAA,WAAA,CAAA,QAAQ,KAAU,UAAU,CAAA;;;;;;;;;;;;YDpEzC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAwE,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACE,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAQrE;AAYC,YAXA,oFAMC,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAUA;YAiBH,EAAA,CAAA,YAAA,EAAM;YAEN,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAKC;YAuBD,EAAA,CAAA,YAAA,CAAA,CAAA,CAAsD;YACxD,EAAA,CAAA,YAAA,EAAM;YAEN,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAMC;YAGD,EAAA,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,CAAiD;YAEjD,EAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAA+B;YAO/B,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAAA,CASC;AADC,YAHA,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,SAAA,gEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAa,GAAA,CAAA,WAAA,CAAA,MAAA,CAAmB,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,SAAA,EAAA,SAAA,8DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CACtB,GAAA,CAAA,SAAA,EAAW,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,YAAA,EAAA,SAAA,iEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CACT,GAAA,CAAA,SAAA,EAAW,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,WAAA,EAAA,SAAA,gEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CACb,uBAAmB,CAAA,CAAA,CAAA,CAAA,CAAC;YAEjC,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,EAAA,CAAA,CAKC;YACC,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,CAAA,CAAyB;YACzB,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,CAA+C;AAW7C,YAVA,+EAAwE,CAAA,EAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAevE;;AAuBH,YAJA,+EAGC,CAAA,EAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAgBA;YAED,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,CAAsD;AAapD,YAZA,+EAAwE,CAAA,EAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAiBvE;;YAEH,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAsC;YAQxC,EAAA,CAAA,YAAA,EAAQ,EACJ,EACF;AAGJ,YADF,0CAAgC,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CACqC;AAAnC,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,4DAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,wBAAwB,CAAA,CAAA,CAAA,CAAA,CAAC;YAChE,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAgD;AAO9C,YADF,gCAAgC,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAK7B;AADC,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,+DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,0BAAsB,CAAA,CAAA,CAAA,CAAA,CAAC;YAEhC,EAAA,CAAA,MAAA,CAAA,EAAA,CACF;;AAGN,YAHM,EAAA,CAAA,YAAA,EAAS,EACL,EACF,EACG;;YAzNN,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,QAAA,CAA0B;YActB,EAAA,CAAA,SAAA,CAAA,CAAA,CAAkB;YAAlB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,YAAA,CAAkB;YAQlB,EAAA,CAAA,SAAA,EAAsC;YAAtC,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,YAAA,IAAA,GAAA,CAAA,gBAAA,CAAsC;YAwBxC,EAAA,CAAA,SAAA,EAAgB;YAAhB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,UAAA,CAAgB;YA+BlB,EAAA,CAAA,SAAA,CAAA,CAAA,CAA4C;YAA5C,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,MAAA,CAAA,MAAA,IAAA,GAAA,CAAA,MAAA,CAAA,MAAA,CAAA,OAAA,CAA4C;YAU/C,EAAA,CAAA,SAAA,CAAA,CAAA,CAMC;YAND,EAAA,CAAA,aAAA,CAAA,CAAA,GAAA,CAAA,MAAA,CAAA,SAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,CAAA,MAAA,CAAA,SAAA,CAAA,OAAA,IAAA,CAAA,GAAA,CAAA,CAAA,CAMC;YAIC,EAAA,CAAA,SAAA,EAAkD;AAClD,YADA,0FAAkD,CAAA,gBAAA,EAAA,GAAA,CAAA,aAAA,IAAA,EAAA,GAAA,CAAA,MAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,CAAA,MAAA,CAAA,oBAAA,CAAA,CACqB;YASrE,EAAA,CAAA,SAAA,CAAA,CAAA,CAA0B;AAC1B,YADA,2CAA0B,CAAA,SAAA,EAAA,GAAA,CAAA,SAAA,CACL;YAGP,EAAA,CAAA,SAAA,CAAA,CAAA,CAAgC;YAAhC,EAAA,CAAA,UAAA,CAAA,cAAA,EAAA,GAAA,CAAA,eAAA,CAAgC;YAqC3C,EAAA,CAAA,SAAA,CAAA,CAAA,CAAiC;AAAA,YAAjC,oDAAiC,CAAA,uBAAA,EAAA,CAAA,GAAA,CAAA,MAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,CAAA,MAAA,CAAA,YAAA,KAAA,KAAA,CAAqC;YAI/B,EAAA,CAAA,SAAA,EAAuB;YAAvB,EAAA,CAAA,UAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,cAAA,CAAuB;YAenD,EAAA,CAAA,SAAA,EAAuC;YAAvC,EAAA,CAAA,UAAA,CAAA,cAAA,EAAA,GAAA,CAAA,sBAAA,CAAuC;YAoBtC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAqB;YAArB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,eAAA,CAAqB;YAcd,EAAA,CAAA,SAAA,CAAA,CAAA,CAAsB;YAAtB,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,mBAAA,CAAsB;YAY1C,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;YADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,2CAAA,CAAA,EAAA,GAAA,CACF;;;iFC5LO,6BAA6B,EAAA,CAAA;cAPzC,SAAS;AAEI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,cAG1B,KAAK,EAAA,QAAA,EAAA,sqPAAA,EAAA,MAAA,EAAA,CAAA,gvFAAA,CAAA,EAAA;uEAUV,MAAM,EAAA,CAAA;kBAAd;YACQ,mBAAmB,EAAA,CAAA;kBAA3B;YACQ,SAAS,EAAA,CAAA;kBAAjB;YACQ,wBAAwB,EAAA,CAAA;kBAAhC;YACY,SAAS,EAAA,CAAA;kBAArB;YAKQ,0BAA0B,EAAA,CAAA;kBAAlC;YACQ,uBAAuB,EAAA,CAAA;kBAA/B;YAGS,eAAe,EAAA,CAAA;kBAAxB;YACS,eAAe,EAAA,CAAA;kBAAxB;YACS,QAAQ,EAAA,CAAA;kBAAjB;YACS,eAAe,EAAA,CAAA;kBAAxB;YAIiC,aAAa,EAAA,CAAA;kBAA9C,eAAe;mBAAC,eAAe;YACmB,OAAO,EAAA,CAAA;kBAAzD,eAAe;AAAC,YAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;YAClB,UAAU,EAAA,CAAA;kBAAxC,eAAe;mBAAC,YAAY;YACD,SAAS,EAAA,CAAA;kBAApC,YAAY;mBAAC,YAAY;YAEa,KAAK,EAAA,CAAA;kBAA3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;YACjB,IAAI,EAAA,CAAA;kBAAvB,SAAS;mBAAC,OAAO;YAEW,cAAc,EAAA,CAAA;kBAA1C,SAAS;mBAAC,gBAAgB;YACH,SAAS,EAAA,CAAA;kBAAhC,SAAS;mBAAC,WAAW;YACG,SAAS,EAAA,CAAA;kBAAjC,SAAS;mBAAC,YAAY;YAIoB,eAAe,EAAA,CAAA;kBAAzD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;kFA1C9B,6BAA6B,EAAA,EAAA,SAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,gEAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCd7B,mBAAmB,CAAA;oHAAnB,mBAAmB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAnB,mBAAmB,EAAA,CAAA,CAAA;AAHpB,IAAA,SAAA,IAAA,CAAA,IAAA,iBAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,eAAe,EAAE,wBAAwB,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;;iFAGpE,mBAAmB,EAAA,CAAA;cAL/B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACR,YAAY,EAAE,CAAC,sBAAsB,CAAC;gBACtC,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,wBAAwB,EAAE,YAAY,CAAC;gBAChF,OAAO,EAAE,CAAC,sBAAsB;AACjC,aAAA;;wFACY,mBAAmB,EAAA,EAAA,YAAA,EAAA,CAJf,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAC3B,YAAY,EAAE,eAAe,EAAE,wBAAwB,EAAE,YAAY,CAAA,EAAA,OAAA,EAAA,CACrE,sBAAsB,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCwCrB,0BAA0B,CAAA;2HAA1B,0BAA0B,GAAA,CAAA,CAAA,CAAA,CAAA;mEAA1B,0BAA0B,EAAA,CAAA,CAAA;AAV3B,IAAA,SAAA,IAAA,CAAA,IAAA,iBAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,SAAA,EAAA;AACR,YAAA;AACE,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,QAAQ,EAAE;AACX;AACF,SAAA,EAAA,OAAA,EAAA,CArBC,YAAY;YACZ,cAAc;YACd,eAAe;YACf,eAAe;YACf,aAAa;YACb,iBAAiB;YACjB,WAAW;YACX,eAAe;YACf,gBAAgB;YAChB,aAAa;YACb,wBAAwB;YACxB,gBAAgB;YAChB,mBAAmB;YACnB,aAAa;YACb,kBAAkB,CAAA,EAAA,CAAA,CAAA;;iFAYT,0BAA0B,EAAA,CAAA;cA/BtC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE;oBACZ;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP,YAAY;oBACZ,cAAc;oBACd,eAAe;oBACf,eAAe;oBACf,aAAa;oBACb,iBAAiB;oBACjB,WAAW;oBACX,eAAe;oBACf,gBAAgB;oBAChB,aAAa;oBACb,wBAAwB;oBACxB,gBAAgB;oBAChB,mBAAmB;oBACnB,aAAa;oBACb;AACD,iBAAA;AACD,gBAAA,SAAS,EAAC;AACR,oBAAA;AACE,wBAAA,OAAO,EAAE,gBAAgB;AACzB,wBAAA,QAAQ,EAAE;AACX;AACF,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD;AACF,aAAA;;wFACY,0BAA0B,EAAA,EAAA,YAAA,EAAA,CA7BnC,6BAA6B,CAAA,EAAA,OAAA,EAAA,CAG7B,YAAY;QACZ,cAAc;QACd,eAAe;QACf,eAAe;QACf,aAAa;QACb,iBAAiB;QACjB,WAAW;QACX,eAAe;QACf,gBAAgB;QAChB,aAAa;QACb,wBAAwB;QACxB,gBAAgB;QAChB,mBAAmB;QACnB,aAAa;AACb,QAAA,kBAAkB,aASlB,6BAA6B,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;IC/CrB;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,YAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACX,IAAA,YAAA,CAAA,YAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACf,CAAC,EAHW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;;;ICKpB,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,CAA2C;IACzC,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;IAAA,EAAA,CAAA,YAAA,EAAK;;;IADH,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,YAAA,EAAA,GAAA,CACF;;;IAHF,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,CAAyB;IACvB,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAA2C;IAG7C,EAAA,CAAA,YAAA,EAAK;;;IAHuB,EAAA,CAAA,SAAA,EAAe;IAAf,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,IAAA,CAAA,OAAA,CAAe;;MCMhC,0BAA0B,CAAA;IAGrC,WAAA,CACS,SAAmD,EAC1B,IAAsB,EAAA;QAD/C,IAAA,CAAA,SAAS,GAAT,SAAS;QACgB,IAAA,CAAA,IAAI,GAAJ,IAAI;QAJtC,IAAA,CAAA,YAAY,GAAG,YAAY;IAM3B;AAPW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,SAAA,kCAAA,CAAA,iBAAA,EAAA,EAAA,OAAA,KAAA,iBAAA,IAAA,0BAA0B,gEAK3B,eAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEALd,0BAA0B,EAAA,SAAA,EAAA,CAAA,CAAA,wBAAA,CAAA,CAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,KAAA,CAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,CAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,mCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YDXvC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAqB;YAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA4B;;YAAA,EAAA,CAAA,YAAA,EAAK;AAEpD,YADF,8BAAwB,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CACc;YAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAmC;;YAAA,EAAA,CAAA,YAAA,EAAI;YAE3E,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAyB;YAK3B,EAAA,CAAA,YAAA,EAAM;AAEJ,YADF,6CAAgC,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CACiC;YAC7D,EAAA,CAAA,MAAA,CAAA,EAAA,CACF;;YAAA,EAAA,CAAA,YAAA,EAAS;YACT,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,CAAiF;YAC/E,EAAA,CAAA,MAAA,CAAA,EAAA,CACF;;AACF,YADE,iBAAS,EACU;;YAjBA,EAAA,CAAA,SAAA,EAA4B;YAA5B,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,GAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAA4B;YAEX,EAAA,CAAA,SAAA,CAAA,CAAA,CAAmC;YAAnC,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,GAAA,CAAA,IAAA,CAAA,YAAA,CAAA,CAAmC;YAElE,EAAA,CAAA,SAAA,CAAA,CAAA,CAAkB;YAAlB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,IAAA,CAAA,OAAA,CAAkB;YAOJ,EAAA,CAAA,SAAA,CAAA,CAAA,CAA2C;YAA3C,EAAA,CAAA,UAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,YAAA,CAAA,SAAA,CAA2C;YAC5D,EAAA,CAAA,SAAA,EACF;YADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,GAAA,CAAA,IAAA,CAAA,aAAA,CAAA,EAAA,GAAA,CACF;YACuC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAyC;YAAzC,EAAA,CAAA,UAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,YAAA,CAAA,OAAA,CAAyC;YAC9E,EAAA,CAAA,SAAA,EACF;YADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,GAAA,CAAA,IAAA,CAAA,gBAAA,CAAA,EAAA,GAAA,CACF;;;iFCLW,0BAA0B,EAAA,CAAA;cANtC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,cAGtB,KAAK,EAAA,QAAA,EAAA,4pBAAA,EAAA,MAAA,EAAA,CAAA,4FAAA,CAAA,EAAA;;sBAOhB,MAAM;uBAAC,eAAe;;kFALd,0BAA0B,EAAA,EAAA,SAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCC1B,uBAAuB,CAAA;wHAAvB,uBAAuB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAvB,uBAAuB,EAAA,CAAA,CAAA;AAHxB,IAAA,SAAA,IAAA,CAAA,IAAA,iBAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA;;iFAG9D,uBAAuB,EAAA,CAAA;cALnC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACR,YAAY,EAAE,CAAC,0BAA0B,CAAC;gBAC1C,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC;gBAC1E,OAAO,EAAE,CAAC,0BAA0B,CAAC;AACtC,aAAA;;wFACY,uBAAuB,EAAA,EAAA,YAAA,EAAA,CAJnB,0BAA0B,CAAA,EAAA,OAAA,EAAA,CAC/B,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,CAAA,EAAA,OAAA,EAAA,CAC/D,0BAA0B,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCAzB,mBAAmB,CAAA;AAE9B,IAAA,WAAA,CAA6B,MAAiB,EAAA;QAAjB,IAAA,CAAA,MAAM,GAAN,MAAM;IAAe;AAElD,IAAA,UAAU,CAAC,IAAsB,EAAA;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;AAC7D,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE;AACR,SAAA,CAAC;AAEF,QAAA,OAAO,SAAS,CAAC,WAAW,EAAE;IAChC;oHAXW,mBAAmB,EAAA,EAAA,CAAA,QAAA,CAAAD,IAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;uEAAnB,mBAAmB,EAAA,OAAA,EAAnB,mBAAmB,CAAA,IAAA,EAAA,UAAA,EAFlB,MAAM,EAAA,CAAA,CAAA;;iFAEP,mBAAmB,EAAA,CAAA;cAH/B,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE;AACb,aAAA;;;ACTM,MAAM,0BAA0B,GAAG;;;;ICctC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAgE;IAC9D,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;IAAA,EAAA,CAAA,YAAA,EAAO;;;IADL,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,KAAA,CAAA,IAAA,EAAA,GAAA,CACF;;;IAGE,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAkC;IAChC,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;IAAA,EAAA,CAAA,YAAA,EAAO;;;IADL,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,KAAA,CAAA,KAAA,EAAA,GAAA,CACF;;;IArBN,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAQC;;AAEG,IADF,+BAAmD,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAC4B;IAC3E,EAAA,CAAA,YAAA,CAAA,CAAA,CAAyB;IAC3B,EAAA,CAAA,YAAA,EAAO;AAMP,IAJA,oFAAgE,CAAA,CAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAI3C;AAMzB,IADE,iBAAO,EACA;;;;IArBP,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,QAAA,CAAqB,CAAA,eAAA,EAAA,IAAA,CACC,CAAA,eAAA,EAAA,0BAAA,CACsB;;IASnC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAgB;AAAA,IAAhB,sCAAgB,CAAA,UAAA,EAAA,SAAA,CAAW;;;IAWtC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAKgD;;IAC9C,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAA6B;IAC3B,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;AACF,IADE,iBAAO,EACA;;;IALP,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,QAAA,CAAqB;;IAGnB,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,QAAA,GAAA,MAAA,CAAA,KAAA,CAAA,IAAA,GAAA,MAAA,CAAA,KAAA,CAAA,KAAA,EAAA,GAAA,CACF;;MCtBW,wBAAwB,CAAA;IAQnC,IAAa,QAAQ,CAAC,KAAc,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC1D,IAAI,CAAC,KAAK,EAAE;QACd;AACA,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IACxB;IAEA,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;AAOxC,IAAA,WAAA,CAA6E,iBAAoC,EAAA;QAApC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAF9F,IAAA,CAAA,YAAY,GAAsB,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,mBAAmB,EAAE;IAEwB;IAErH,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,YAAY;IAC1D;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;IACtB;AA9BW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,SAAA,gCAAA,CAAA,iBAAA,EAAA,EAAA,OAAA,KAAA,iBAAA,IAAA,wBAAwB,uBAsBH,0BAA0B,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEAtB/C,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,uBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;2BAiBxB,SAAS,EAAA,CAAA,CAAA;;;;;;ADHtB,YAzBA,+EAQC,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAsB+C;;YA5B7C,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,MAAA,CAAa;YA0Bb,EAAA,CAAA,SAAA,EAAY;YAAZ,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,MAAA,CAAY;;;iFCjBF,wBAAwB,EAAA,CAAA;cANpC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cAGrB,KAAK,EAAA,QAAA,EAAA,khCAAA,EAAA,MAAA,EAAA,CAAA,kIAAA,CAAA,EAAA;;sBAwBN;;sBAAY,MAAM;uBAAC,0BAA0B;qBAnBjD,oBAAoB,EAAA,CAAA;kBAA5B;YACQ,QAAQ,EAAA,CAAA;kBAAhB;YACQ,MAAM,EAAA,CAAA;kBAAd;YACQ,aAAa,EAAA,CAAA;kBAArB;YAEY,QAAQ,EAAA,CAAA;kBAApB;YASqB,MAAM,EAAA,CAAA;kBAA3B,SAAS;mBAAC,SAAS;;kFAjBT,wBAAwB,EAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,sDAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCCxB,qBAAqB,CAAA;sHAArB,qBAAqB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAArB,qBAAqB,EAAA,CAAA,CAAA;AAHtB,IAAA,SAAA,IAAA,CAAA,IAAA,iBAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;;iFAG/D,qBAAqB,EAAA,CAAA;cALjC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACR,YAAY,EAAE,CAAC,wBAAwB,CAAC;gBACxC,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,CAAC;gBAC3E,OAAO,EAAE,CAAC,wBAAwB;AACnC,aAAA;;wFACY,qBAAqB,EAAA,EAAA,YAAA,EAAA,CAJjB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAC7B,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAChE,wBAAwB,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;ICVxB;AAAZ,CAAA,UAAY,yBAAyB,EAAA;AACnC,IAAA,yBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,yBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAHW,yBAAyB,KAAzB,yBAAyB,GAAA,EAAA,CAAA,CAAA;;ICAzB;AAAZ,CAAA,UAAY,0BAA0B,EAAA;AACpC,IAAA,0BAAA,CAAA,YAAA,CAAA,GAAA,WAAwB;AACxB,IAAA,0BAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EAHW,0BAA0B,KAA1B,0BAA0B,GAAA,EAAA,CAAA,CAAA;;ICA1B;AAAZ,CAAA,UAAY,0BAA0B,EAAA;AACpC,IAAA,0BAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,0BAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,0BAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,0BAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EALW,0BAA0B,KAA1B,0BAA0B,GAAA,EAAA,CAAA,CAAA;;ICA1B;AAAZ,CAAA,UAAY,4BAA4B,EAAA;AACtC,IAAA,4BAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,4BAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC;AAC3C,CAAC,EAHW,4BAA4B,KAA5B,4BAA4B,GAAA,EAAA,CAAA,CAAA;;ICC5B;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,kBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,kBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;;AAEf,IAAA,kBAAA,CAAA,YAAA,CAAA,GAAA,UAAuB;AACzB,CAAC,EARW,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;;ICDlB;AAAZ,CAAA,UAAY,6BAA6B,EAAA;AACvC,IAAA,6BAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,6BAAA,CAAA,mBAAA,CAAA,GAAA,kBAAsC;AACtC,IAAA,6BAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,6BAAA,CAAA,oBAAA,CAAA,GAAA,mBAAwC;AACxC,IAAA,6BAAA,CAAA,yBAAA,CAAA,GAAA,wBAAkD;AAClD,IAAA,6BAAA,CAAA,kBAAA,CAAA,GAAA,iBAAoC;AACpC,IAAA,6BAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,6BAAA,CAAA,kBAAA,CAAA,GAAA,iBAAoC;AACpC,IAAA,6BAAA,CAAA,iBAAA,CAAA,GAAA,gBAAkC;AAClC,IAAA,6BAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACnC,CAAC,EAXW,6BAA6B,KAA7B,6BAA6B,GAAA,EAAA,CAAA,CAAA;;ACOzC;;AAEG;MACU,kBAAkB,CAAA;;aAWtB,IAAA,CAAA,iBAAiB,GAAG,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,CAAC,UAAU,CAA/D,CAAiE;AAEzF,IAAA,OAAO,8BAA8B,CAAC,WAAyC,EAAE,UAA8B,EAAA;AAC7G,QAAA,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;AAC7B,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM;AAChD,iBAAC,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE;AAC9E,gBAAA,OAAO,GAAG;YACZ;QACF;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,yBAAyB,CAAC,WAAyC,EAAE,UAA8B,EAAA;QACxG,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,CAAC,GAAG,CAAC;AACT,QAAA,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;AAC7B,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM;AAChD,iBAAC,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE;AAC9E,gBAAA,OAAO,CAAC;YACV;YACA,CAAC,IAAI,CAAC;QACR;AACA,QAAA,OAAO,IAAI;IACb;AAeA;;AAEG;AACH,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe;IAC7B;IAMA,IAAI,iBAAiB,KAAK,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC1D;;AAEG;AACH,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,MAAgB;IACvE;AAEA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,MAAM;IAClC;AAEA;;AAEG;AACH,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI;IAC7D;AAEA;;AAEG;AACH,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,UAAU;IACxC;IAIA,IAAI,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAA,CAAC;AAErC;;AAEG;AACH,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,kBAAkB,CAAC,UAAU;IACvD;AAEA;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO;IAC1C;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,SAAS;IACrC;IAGA,IAAI,sBAAsB,KAAK,OAAO,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAGpE,IAAI,WAAW,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;;IAI9C,WAAA,CAAY,iBAA4C,EAAE,YAAiC,EAAA;;;QA9E3F,IAAA,CAAA,SAAS,GAGL,EAAE;;;;;QAOE,IAAA,CAAA,eAAe,GAAG,IAAI;AAqE5B,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,QAAA,IAAI,CAAC,cAAc,GAAG,iBAAiB;AACvC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IACnB;AAEA;;;AAGG;AACH,IAAA,MAAM,CAAC,UAAqC,EAAA;AAC1C,QAAA,IAAI,UAAU,EAAE,cAAc,EAAE;AAC9B,YAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc;QACjD;AAEA,QAAA,IAAI,UAAU,EAAE,YAAY,EAAE;AAC5B,YAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY;QAC7C;QAEE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,YAAY,EAAE,gBAAgB,KAAK,0BAA0B,CAAC,UAAU,GAAG,IAAI,GAAG,KAAK;AAE7H,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE;YAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;QACjD;AAEA,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;AACjH,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,KAAK,KAAK;QACtF,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,YAAY,EAAE;IACrB;AAEA;;;;;;AAMG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,YAAY;AACzE,gBAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE;AAClF,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;AAEA;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IACnB;AAGA;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IACnB;AAEA,IAAA,eAAe,CAAC,MAAyC,EAAA;QACvD,IAAI,CAAC,MAAM,EAAE;YACX;QACF;QAEA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO;QACrD,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO;IACrD;;IAGQ,oBAAoB,GAAA;QAC1B,IAAI,cAAc,GAAG,IAAI;AAEzB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU;AACpD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW;AACpD,QAAA,IAAI,YAAY,IAAI,aAAa,EAAE;AACjC,YAAA,cAAc,GAAG,YAAY,IAAI,aAAa;QAChD;AAEA,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;AACrC,QAAA,IAAI,CAAC,WAAW,GAAG,aAAa,IAAI,YAAY;QAChD,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,KAAK,kBAAkB,CAAC,KAAK,CAAC;IACrH;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,GAAG,0BAA0B,CAAC,UAAU;QACrD;AACK,aAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AAC1B,YAAA,IAAI,CAAC,MAAM,GAAG,0BAA0B,CAAC,IAAI;QAC/C;IACF;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,cAAc,GAAG,4BAA4B,CAAC,kBAAkB;QACvE;aACK,IAAI,IAAI,CAAC,cAAc,EAAE,UAAU,KAAK,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,cAAc,GAAG,4BAA4B,CAAC,UAAU;QAC/D;aACK;AACH,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC5B;IACF;;;MCnOW,4BAA4B,CAAA;AACvC,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAA,2BAAA,CAA6B;IACpF;IAEA,WAAA,CAA6B,MAAgC,EAAmB,IAAgB,EAAA;QAAnE,IAAA,CAAA,MAAM,GAAN,MAAM;QAA6C,IAAA,CAAA,IAAI,GAAJ,IAAI;IAAe;IAEnG,gBAAgB,CAAC,gBAA0B,EAAE,cAAsB,EAAA;QACjE,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,cAAc,EAAE,gBAAgB,EAAE;QACzD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAqB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,IAAI,CAC9D,GAAG,CAAC,CAAC,UAAU,KAAI;AACjB,YAAA,OAAO,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC;QACrD,CAAC,CAAC,CACH;IACH;IAEA,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CACvD,GAAG,CAAC,CAAC,WAAW,KAAI;YAClB,MAAM,SAAS,GAAyB,EAAE;AAC1C,YAAA,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;gBACjC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;AAC9D,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,SAAS;QAClB,CAAC,CAAC,CACH;IACH;AAEA,IAAA,WAAW,CAAC,MAAc,EAAE,cAAuB,EAAE,cAAuB,EAAA;AAC1E,QAAA,IAAI,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAA,aAAA,EAAgB,MAAM,KAAK;QACpF,IAAI,cAAc,EAAE;AAClB,YAAA,IAAI,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,cAAc,EAAE;QACpC;QACA,IAAI,cAAc,EAAE;AAClB,YAAA,IAAI,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,cAAc,EAAE;QACpC;AACA,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,2BAA2B,CAAC,UAA8B,EAAA;;AAEhE,QAAA,UAAU,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC;AACxE,QAAA,OAAO,IAAI,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC;IACjD;6HA3CW,4BAA4B,EAAA,EAAA,CAAA,QAAA,CAAAa,wBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAZ,IAAA,CAAA,UAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;uEAA5B,4BAA4B,EAAA,OAAA,EAA5B,4BAA4B,CAAA,IAAA,EAAA,UAAA,EAF3B,MAAM,EAAA,CAAA,CAAA;;iFAEP,4BAA4B,EAAA,CAAA;cAHxC,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA;;;MCEY,oBAAoB,CAAA;IAG/B,WAAA,CACmB,IAAgB,EAChB,MAAgC,EAAA;QADhC,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,MAAM,GAAN,MAAM;QAEvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,aAAuB;IACjE;IAEA,GAAG,CAAC,QAAgB,EAAE,MAAmC,EAAA;AACvD,QAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE;QAC3B,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,YAAY,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,gBAAgB,CAAC;QACxD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,EAAE;AAC/C,YAAA,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QAChF;QACA,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,KAAK,SAAS,EAAE;AAC9C,YAAA,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC9E;AACA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAuB,CAAA,EAAG,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAA,MAAA,CAAQ,EAAE,IAAI,CAAC;IACxF;AAEA,IAAA,MAAM,CAAC,QAAgB,EAAE,YAAoB,EAAE,MAAsC,EAAA;AACnF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,GAAG,IAAI,CAAC,OAAO,CAAA,CAAA,EAAI,QAAQ,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,MAAM,CAAC;IACzG;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA2B,CAAA,EAAG,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAA,MAAA,CAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;IACnM;IAEA,MAAM,CAAC,QAAgB,EAAE,YAAoB,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAuB,CAAA,EAAG,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAA,OAAA,EAAU,YAAY,CAAA,CAAE,CAAC;IACpG;IAEA,KAAK,CAAC,QAAgB,EAAE,WAAyC,EAAA;AAC/D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAA2B,CAAA,EAAG,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAA,YAAA,CAAc,EAAE,WAAW,CAAC;IACzG;IAEA,IAAI,CAAC,QAAgB,EAAE,YAAoB,EAAA;AACzC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAuB,GAAG,IAAI,CAAC,OAAO,CAAA,CAAA,EAAI,QAAQ,CAAA,OAAA,EAAU,YAAY,OAAO,EAAE,EAAE,CAAC;IAC3G;qHAzCW,oBAAoB,EAAA,EAAA,CAAA,QAAA,CAAAD,IAAA,CAAA,UAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAG,wBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;uEAApB,oBAAoB,EAAA,OAAA,EAApB,oBAAoB,CAAA,IAAA,EAAA,UAAA,EAFnB,MAAM,EAAA,CAAA,CAAA;;iFAEP,oBAAoB,EAAA,CAAA;cAHhC,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE;AACb,aAAA;;;MCAY,qBAAqB,CAAA;IAGhC,WAAA,CAA6B,MAAgC,EAAmB,aAAmC,EAAA;QAAtF,IAAA,CAAA,MAAM,GAAN,MAAM;QAA6C,IAAA,CAAA,aAAa,GAAb,aAAa;QAC3F,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,aAAuB;IACjE;IAEA,GAAG,CAAC,QAAgB,EAAE,UAA8B,EAAA;AAClD,QAAA,MAAM,MAAM,GAAqC;YAC/C,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,YAAuB,EAAE;SACjE;QAED,IAAI,UAAU,CAAC,SAAS,CAAC,aAAa,KAAK,SAAS,EAAE;AACpD,YAAA,MAAM,CAAC,MAAM,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE;QACjE;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;AACpD,YAAA,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK;QAC9B;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAC5B,YAAA,MAAM,MAAM,GAAgC;gBAC1C,YAAY,EAAE,UAAU,CAAC,MAAM;gBAC/B,gBAAgB,EAAE,UAAU,CAAC,MAAM;gBACnC,MAAM;aACP;AACD,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC,CAAC;QACzH;aAAO;AACL,YAAA,MAAM,MAAM,GAAmC;gBAC7C,MAAM;aACP;AACD,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC,CAAC;QACxJ;IACF;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC9C,GAAG,CAAC,CAAC,WAAW,KAAI;YAClB,MAAM,SAAS,GAAyB,EAAE;YAC1C,WAAW,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,UAAU,KAAI;gBACnD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;AAC9D,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,SAAS;QAClB,CAAC,CAAC,CACH;IACH;IAEA,MAAM,CAAC,QAAgB,EAAE,UAA8B,EAAA;AACrD,QAAA,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE;YACjC,OAAO,EAAE,EAAE;QACb;AAEA,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC,CAAC;IAChJ;IAEA,IAAI,CAAC,QAAgB,EAAE,UAA8B,EAAA;AACnD,QAAA,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE;YACjC,OAAO,EAAE,EAAE;QACb;QAEA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CACvE,GAAG,CAAC,CAAC,iBAAiB,KAAI;AACxB,YAAA,OAAO,iBAAiB,GAAG,IAAI,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,GAAG,UAAU;QAC7F,CAAC,CAAC,CACH;IACH;AAEQ,IAAA,2BAA2B,CAAC,UAAgC,EAAA;AAClE,QAAA,MAAM,qBAAqB,GAAiB;YAC1C,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,WAAW,EAAE,UAAU,CAAC,kBAAkB,EAAE,SAAS,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,IAAI;YAChH,IAAI,EAAE,UAAU,CAAC,IAAI;;YAErB,MAAM,EAAE,UAAU,CAAC,MAAa;YAChC,SAAS,EAAE,UAAU,CAAC,SAAS;AAC/B,YAAA,MAAM,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE;AACxC,YAAA,SAAS,EAAE,UAAU,CAAC,kBAAkB,CAAC,SAAS;YAClD,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;YAC7C,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B;AACD,QAAA,OAAO,IAAI,kBAAkB,CAAC,IAAI,EAAE,qBAAqB,CAAC;IAC5D;sHAlFW,qBAAqB,EAAA,EAAA,CAAA,QAAA,CAAAU,wBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,oBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;uEAArB,qBAAqB,EAAA,OAAA,EAArB,qBAAqB,CAAA,IAAA,EAAA,UAAA,EAFpB,MAAM,EAAA,CAAA,CAAA;;iFAEP,qBAAqB,EAAA,CAAA;cAHjC,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA;;;MCKY,kBAAkB,CAAA;AAO7B,IAAA,IAAI,eAAe,GAAA,EAAK,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAA,CAAC;AAC7D,IAAA,IAAI,oBAAoB,GAAA,EAAK,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAA,CAAC;AAI/E,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,QACE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM;AAC9B,YAAA,IAAI,CAAC,oBAAoB;AACzB,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB;IAEhD;AAEA,IAAA,WAAA,CACmB,MAAgC,EAChC,KAAmB,EACnB,iBAA+C,EAC/C,KAA4B,EAAA;QAH5B,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,KAAK,GAAL,KAAK;QAvBjB,IAAA,CAAA,OAAO,GAA8C,EAAE;AAEtD,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,OAAO,EAAW;QAC3C,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;AACjD,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,OAAO,EAA6C;QAKxE,IAAA,CAAA,iBAAiB,GAAG,uBAAuB;IAevD;IAEJ,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;IAC/C;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;IACnB;AAEA,IAAA,iBAAiB,CAAC,QAAgB,EAAA,EAAa,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,IAAI,GAAG,CAAC,CAAA,CAAC;IAEnG,sCAAsC,GAAA;AACpC,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE;IAClD;IAEA,SAAS,CACP,QAAgB,EAChB,SAAA,GAA6B,IAAI,EACjC,2BAA2B,GAAG,KAAK,EACnC,eAAe,GAAG,IAAI,EACtB,aAAa,GAAG,IAAI,EACpB,kBAAuC,EACvC,WAAqB,EAAA;QAErB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI;QAEnD,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,MAAM,SAAS,GAAsB;gBACnC,QAAQ,EAAE,kBAAkB,IAAI,IAAI;AACpC,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,cAAc,EAAE,KAAK;AACrB,gBAAA,iBAAiB,EAAE,KAAK;AACxB,gBAAA,uBAAuB,EAAE,KAAK;gBAC9B,WAAW,EAAE,IAAI,GAAuB;AACxC,gBAAA,oBAAoB,EAAE,aAAa;AACnC,gBAAA,sBAAsB,EAAE,eAAe;gBACvC,eAAe,EAAE,SAAS,IAAI,EAAE;AAChC,gBAAA,mBAAmB,EAAE,KAAK;gBAC1B,eAAe,EAAE,WAAW,IAAI,KAAK;AACrC,gBAAA,cAAc,EAAE;aACjB;AAED,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS;QACpC;aAAO;AACL,YAAA,YAAY,CAAC,eAAe,GAAG,WAAW,IAAI,KAAK;QACrD;QAEA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IACpE;AAEA,IAAA,qBAAqB,CAAC,QAAgB,EAAE,UAAqC,EAAE,2BAAoC,EAAA;AACjH,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC1B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAG,UAAU;QAC9C;QAEA,IAAI,2BAA2B,EAAE;AAC/B,YAAA,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC;QAC5C;AAEA,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;IACpC;IAEA,eAAe,CAAC,QAAgB,EAAE,2BAAqC,EAAA;;AAErE,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;AAE3B,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,uBAAuB,EAAE,IAAI,EAAE;AAErF,QAAA,IAAI,YAAkC;AACtC,QAAA,IAAI,aAAmC;QAEvC,MAAM,WAAW,GAAuC,EAAE;QAE1D,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,sBAAsB,EAAE;AACjD,YAAA,WAAW,CAAC,IAAI,CACd,IAAI,CAAC;AACF,iBAAA,iBAAiB;AACjB,iBAAA,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CACtD;QACH;QACA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,oBAAoB,EAAE;AAC/C,YAAA,WAAW,CAAC,IAAI,CACd,IAAI,CAAC;iBACF,OAAO,CAAC,QAAQ;AAChB,iBAAA,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CACvD;QACH;AACA,QAAA,QAAQ,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC;;YAE9B,IAAI,EAAE,MAAK;gBACT,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,cAAc,GAAG,KAAK;;gBAE7C,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,CAAC;gBAEzD,MAAM,MAAM,GAAG,EAAE;gBACjB,IAAI,aAAa,EAAE;AACjB,oBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;gBAC/B;gBACA,IAAI,YAAY,EAAE;AAChB,oBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;gBAC9B;AAEA,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC;gBACrC,IAAI,2BAA2B,EAAE;AAC/B,oBAAA,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC;gBAC5C;gBACA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,uBAAuB,GAAG,KAAK;AACtD,gBAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC;YACtC,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;gBACf,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,uBAAuB,GAAG,KAAK;;AAEtD,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YACtB,CAAC;AACF,SAAA,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;IAC1C;IAEA,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;IAC1C;AAEA,IAAA,gBAAgB,CAAC,QAAgB,EAAE,SAAA,GAA6B,IAAI,EAAE,2BAA2B,GAAG,KAAK,EAAE,eAAe,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,EAAA;QACrJ,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,2BAA2B,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC;IACrK;AAEA,IAAA,eAAe,CAAC,QAAgB,EAAA;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;AAE3B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC1B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,mBAAmB,GAAG,KAAK;YAClD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,eAAe,GAAG,KAAK;QAChD;IACF;IAEA,MAAM,CACJ,cAAsB,EACtB,cAAsB,EACtB,cAAsB,EACtB,QAAgB,EAChB,cAAc,GAAG,IAAI,EAAA;QAErB,OAAO,IAAI,CAAC;aACT,gBAAgB,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE,cAAc;AACjE,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,UAAU,KAAI;YACjB,IAAI,cAAc,EAAE;gBAClB,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAChC,UAAU,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,EACnC,cAAc,EACd,cAAc,CACf,EACD,QAAQ,CACT;YACH;AAEA,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC;AAEpD,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;QAChC,CAAC,CAAC,CACH;IACL;AAEA,IAAA,wBAAwB,CAAC,QAAgB,EAAA;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ;QACjD,IACE,QAAQ,EAAE,YAAY;AACtB,aAAC,QAAQ,CAAC,YAAY,CAAC,WAAW;gBAChC,QAAQ,CAAC,YAAY,CAAC,MAAM,KAAK,kBAAkB,CAAC,KAAK,CAAC,EAC5D;AACA,YAAA,OAAO,QAAQ,CAAC,YAAY,CAAC,EAAE;QACjC;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,iBAAiB,CACf,UAA8B,EAC9B,QAAgB,EAChB,QAAQ,GAAG,KAAK,EAAA;;AAGhB,QAAA,IAAI,UAAU,CAAC,QAAQ,EAAE,IAAI,QAAQ,EAAE;AACrC,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,IAAI,CAC9C,GAAG,CAAC,CAAC,iBAAiB,KAAI;AACxB,gBAAA,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC;YACtC,CAAC,CAAC,CACH;QACH;aAAO;AACL,YAAA,OAAO,EAAE,CAAC,UAAU,CAAC;QACvB;IACF;;IAGA,sBAAsB,CAAC,KAAU,EAAE,QAAgB,EAAA;AACjD,QAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAG,IAAI;IACxC;IAEA,IAAI,CACF,UAA8B,EAC9B,QAAgB,EAAA;AAEhB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,IAAI,CAC/C,GAAG,CAAC,CAAC,iBAAiB,KAAI;AACxB,YAAA,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACtC,CAAC,CAAC,CACH;IACH;IAEA,kBAAkB,CAAC,UAA8B,EAAE,QAAgB,EAAA;AACjE,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,IAAI,CACjD,GAAG,CAAC,CAAC,QAAQ,KAAI;AACf,YAAA,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC7B,CAAC,CAAC,CACH;IACH;AAEA,IAAA,qBAAqB,CAAC,UAA8B,EAAA;QAClD,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;AAC7C,YAAA,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC;AACvE,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,YAAY,CAAC,QAAgB,EAAA;QACnC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE;YAC1C,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,cAAc,GAAG,IAAI;QAC9C;IACF;AAEQ,IAAA,2BAA2B,CAAC,QAAgB,EAAA;;QAElD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;YACrF,IAAI,CAAC,sCAAsC,EAAE;YAC7C;QACF;QAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,QAAQ,CAAC;QAEpD,IAAI,CAAC,QAAQ,EAAE;YACb,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAG,IAAI;YACtC,IAAI,CAAC,sCAAsC,EAAE;YAC7C;QACF;AAEA,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAClE,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,QAAQ,CAAC;QACvF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAG,QAA8B;QAEhE,IAAI,CAAC,sCAAsC,EAAE;IAC/C;AAGQ,IAAA,aAAa,CAAC,YAAkC,EAAE,UAAgC,EAAE,QAAgB,EAAA;AAC1G,QAAA,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;YAC3D,MAAM,cAAc,GAAG,kBAAkB,CAAC,yBAAyB,CAAC,YAAY,EAAE,UAAU,CAAC;YAC7F,MAAM,YAAY,GAAG,kBAAkB,CAAC,yBAAyB,CAAC,UAAU,EAAE,UAAU,CAAC;YAEzF,IAAI,cAAc,KAAK,IAAI,IAAI,YAAY,KAAK,IAAI,EAAE;AACpD,gBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC;gBAEtD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,KAAK,UAAU,EAAE;oBACnD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAG,IAAI;oBACtC,IAAI,CAAC,sCAAsC,EAAE;gBAC/C;YACF;iBAAO;AACL,gBAAA,IAAI,cAAc,KAAK,IAAI,EAAE;AAC3B,oBAAA,MAAM,YAAY,GAAG,YAAY,CAAC,cAAc,CAAC;AACjD,oBAAA,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC;AAC/B,oBAAA,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;gBACxC;qBAAO;oBACL,UAAU,CAAC,WAAW,EAAE;gBAC1B;AAEA,gBAAA,IAAI,YAAY,KAAK,IAAI,EAAE;AACzB,oBAAA,MAAM,UAAU,GAAG,UAAU,CAAC,YAAY,CAAC;AAC3C,oBAAA,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;AAC7B,oBAAA,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;gBACpC;qBAAO;oBACL,UAAU,CAAC,QAAQ,EAAE;gBACvB;YACF;QACF;IACF;IAEQ,cAAc,CAAC,cAA4C,EAAE,QAAgB,EAAA;;AAEnF,QAAA,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE;;YAEvC,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,UAAU,CAAC,QAAQ,KAAK,kBAAkB,CAAC,KAAK,IAAI,UAAU,CAAC,QAAQ,KAAK,kBAAkB,CAAC,QAAQ,EAAE;gBACvI;YACF;AAEA,YAAA,IAAI,UAAU,CAAC,WAAW,EAAE;gBAC1B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,cAAc,GAAG,IAAI;YAC9C;AAEA,YAAA,MAAM,QAAQ,GAA8B,kBAAkB,CAAC,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC;YAE7I,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,MAAM,KAAK,0BAA0B,CAAC,UAAU,EAAE;gBAC5E,MAAM,yBAAyB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,oCAAoC;gBAE7F,IAAI,YAAY,GAAG,IAAI;gBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACtE,IACE,CAAC,UAAU,CAAC,cAAc,EAAE,SAAS,EAAE,IAAI,CACzC,CAAC,IAAI,KAAK,yBAAyB,GAAG,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CACvJ,EACD;wBACA,YAAY,GAAG,KAAK;wBACpB;oBACF;gBACF;gBAEA,IAAI,CAAC,YAAY,EAAE;oBACjB;gBACF;YACF;YAEA,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;YACpD;iBAAO;AACL,gBAAA,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;YAC7B;QACF;QAEA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC;QAEtF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IACvC;IAEQ,eAAe,CAAC,QAAgB,EAAE,OAAuB,EAAA;;QAE/D,IACE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,eAAe;AACvC,YAAA,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,WAAW;YACpC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,mBAAmB,EAC1C;AACA,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;YAC9B;QACF;;AAGA,QAAA,IACE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,eAAe;AACtC,aAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;iBACpB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,mBAAmB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,EAC/F;YACA,MAAM,SAAS,GACb,OAAO;AACP,iBAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACtB,sBAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;sBACvB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,cAAc,GAAG,UAAU,CAAC,MAAK;gBACtD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,cAAc,GAAG,IAAI;AAC5C,gBAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;YAChC,CAAC,EAAE,SAAS,CAAC;QACf;IACF;AAEQ,IAAA,2BAA2B,CAAC,QAAgB,EAAA;AAClD,QAAA,IAAI,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,EAAE;QAEhD,IAAI,CAAC,kBAAkB,EAAE;;YAEvB,kBAAkB,GAAG,EAAS;QAChC;AAEA,QAAA,kBAAkB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,GAAG,IAAI;AAE1H,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAClF;;IAGQ,gBAAgB,GAAA;QACtB,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAW;AACnE,QAAA,IAAI;AACF,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QACzB;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,IAAI;QACb;IACF;IAEQ,sCAAsC,GAAA;QAC5C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC/C;mHAhaW,kBAAkB,EAAA,EAAA,CAAA,QAAA,CAAAD,wBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAE,YAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,4BAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,qBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;uEAAlB,kBAAkB,EAAA,OAAA,EAAlB,kBAAkB,CAAA,IAAA,EAAA,UAAA,EAFjB,MAAM,EAAA,CAAA,CAAA;;iFAEP,kBAAkB,EAAA,CAAA;cAH9B,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA;;;;;;ICAS,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAuG;IACrG,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;IAAA,EAAA,CAAA,YAAA,EAAO;;;IAF2D,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,MAAA,CAAA,UAAA,CAAA,IAAA,IAAA,EAAA,CAAoC;IACpG,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CACF;;;IAEA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAiE;IAC/D,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;IAAA,EAAA,CAAA,YAAA,EAAO;;;IADL,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CACF;;;IAGF,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAwD;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA6C;;IAAA,EAAA,CAAA,YAAA,EAAO;;;IAApD,EAAA,CAAA,SAAA,EAA6C;IAA7C,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,eAAA,GAAA,SAAA,CAAA,CAA6C;;;IAKnG,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAA+D;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAW;IAAA,EAAA,CAAA,YAAA,EAAO;;;IAAlB,EAAA,CAAA,SAAA,EAAW;IAAX,EAAA,CAAA,iBAAA,CAAA,OAAA,CAAA,EAAA,CAAW;;;IAD5E,EAAA,CAAA,uBAAA,CAAA,CAAA,CAAuE;IACrE,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,sFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAA+D;;;;IAAxC,EAAA,CAAA,SAAA,EAAsC;IAAtC,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,UAAA,CAAA,cAAA,CAAA,SAAA,CAAsC;;;IAI7D,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAM;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAsB;IAAA,EAAA,CAAA,YAAA,EAAO;IACnC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAM;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAsB;IAAA,EAAA,CAAA,YAAA,EAAO;;;IAD7B,EAAA,CAAA,SAAA,EAAsB;IAAtB,EAAA,CAAA,iBAAA,CAAA,MAAA,CAAA,kBAAA,CAAsB;IACtB,EAAA,CAAA,SAAA,CAAA,CAAA,CAAsB;IAAtB,EAAA,CAAA,iBAAA,CAAA,MAAA,CAAA,kBAAA,CAAsB;;;IAPhC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAkE;AAKhE,IAJA,2HAAuE,CAAA,CAAA,EAAA,8EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAIxC;IAIjC,EAAA,CAAA,YAAA,EAAM;;;;IARW,EAAA,CAAA,SAAA,EAAiC;AAAA,IAAjC,uDAAiC,CAAA,UAAA,EAAA,mBAAA,CAAqB;;;IAUvE,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAyE;IACvE,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;IAAA,EAAA,CAAA,YAAA,EAAO;;;IADL,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,eAAA,GAAA,cAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAf,KAAA,EAAA,MAAA,CAAA,UAAA,CAAA,SAAA,CAAA,CAAA,EAAA,GAAA,CACF;;;IACA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAA2E;IACzE,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;;IAAA,EAAA,CAAA,YAAA,EAAO;;;IADL,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,eAAA,GAAA,cAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAG,KAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,UAAA,CAAA,WAAA,CAAA,CAAA,CAAA,EAAA,GAAA,CACF;;;IAMI,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAuF;IACrF,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;;IAAA,EAAA,CAAA,YAAA,EAAO;;;IADL,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,eAAA,GAAA,SAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,UAAA,CAAA,YAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,UAAA,CAAA,YAAA,CAAA,SAAA,CAAA,CAAA,EAAA,GAAA,CACF;;;AAJA,IADF,+BAAoJ,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAChF;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,SAAA,CAAM;IAAA,EAAA,CAAA,YAAA,EAAO;IAEhF,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,wEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAuF;IAGzF,EAAA,CAAA,YAAA,EAAM;;;IAHG,EAAA,CAAA,SAAA,CAAA,CAAA,CAA8E;IAA9E,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,UAAA,CAAA,YAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,UAAA,CAAA,YAAA,CAAA,SAAA,MAAA,MAAA,CAAA,iCAAA,CAA8E;;;IAKvF,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAsG;IACpG,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAyD;IACzD,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAM;IACJ,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;AACF,IADE,iBAAO,EACF;;;IAFH,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,sBAAA,GAAA,WAAA,CAAA,EAAA,GAAA,CACF;;;;IAGF,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAA0L;;IAAlH,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,4FAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAS,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,UAAA,CAAkB,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAE,MAAA,CAAA,eAAA,EAAwB,CAAA,CAAA,CAAA,CAAA,CAAC;AAE1H,IADF,gCAAiE,CAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CACxC;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,MAAA,CAAI;IAAA,EAAA,CAAA,YAAA,EAAW;IACtC,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;AACF,IADE,iBAAO,EACA;;;IALsH,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,sBAAA,GAAA,MAAA,CAAA,CAA0D;IAGrL,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,eAAA,GAAA,MAAA,CAAA,EAAA,GAAA,CACF;;;IAMJ,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAOC;;IACC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAAyD;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,MAAA,CAAI;AAC/D,IAD+D,iBAAW,EACtE;;;IALF,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,sBAAA,GAAA,MAAA,CAAA,CAA0D;;;;IAL9D,EAAA,CAAA,uBAAA,CAAA,CAAA,CAAyC;IACvC,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,8EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAOC;;;;IADE,EAAA,CAAA,SAAA,EAA+B;IAA/B,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,cAAA,CAA+B;;;;IA1ExC,EAAA,CAAA,uBAAA,CAAA,CAAA,CAAiC;AAE7B,IADF,8BAAiD,CAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,CAQ9C;;AADC,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,4FAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,wCAA0B,CAAA,CAAA,CAAA,CAAA,CAAC;AAGlC,IADF,8BAAiD,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACjB;AAK5B,IAJA,oGAAuG,CAAA,CAAA,EAAA,iEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAItC;IAGnE,EAAA,CAAA,YAAA,EAAM;IAEN,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,iEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAwD;IAC1D,EAAA,CAAA,YAAA,EAAM;IAEN,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,gEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAkE,CAAA,EAAA,EAAA,kEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAWO,CAAA,EAAA,EAAA,kEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAGE;IAI3E,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAqI;IACnI,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,iEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAoJ,CAAA,EAAA,EAAA,kEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAQ9C,CAAA,EAAA,EAAA,oEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAOoF;AAO9L,IADE,iBAAM,EACW;IAEnB,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,0EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAyC;IAY3C,EAAA,CAAA,YAAA,EAAM;;;;IA1EF,EAAA,CAAA,SAAA,CAAA,CAAA,CAA6E;IAA7E,EAAA,CAAA,WAAA,CAAA,uBAAA,EAAA,MAAA,CAAA,UAAA,CAAA,OAAA,IAAA,MAAA,CAAA,UAAA,KAAA,MAAA,CAAA,QAAA,CAA6E;AAE7E,IADA,qDAAgC,CAAA,YAAA,EAAA,MAAA,CAAA,UAAA,CAAA,cAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,EAAA,EAAA,MAAA,CAAA,sBAAA,GAAA,MAAA,CAAA,UAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CACgF;IAKrG,EAAA,CAAA,SAAA,CAAA,CAAA,CAAgC;IAAhC,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,UAAA,CAAA,cAAA,CAAgC;IAIhC,EAAA,CAAA,SAAA,EAA+B;IAA/B,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,cAAA,CAA+B;IAKjC,EAAA,CAAA,SAAA,EAAwB;IAAxB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,OAAA,CAAwB;IAG3B,EAAA,CAAA,SAAA,EAA6B;IAA7B,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,uBAAA,CAA6B;IAW5B,EAAA,CAAA,SAAA,EAA0B;IAA1B,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,SAAA,CAA0B;IAG1B,EAAA,CAAA,SAAA,EAA4B;IAA5B,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,WAAA,CAA4B;IAK3B,EAAA,CAAA,SAAA,CAAA,CAAA,CAA0E;IAA1E,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,QAAA,IAAA,MAAA,CAAA,UAAA,CAAA,QAAA,KAAA,MAAA,CAAA,qBAAA,CAA0E;IAQzE,EAAA,CAAA,SAAA,EAA4B;IAA5B,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,WAAA,CAA4B;IAO1B,EAAA,CAAA,SAAA,EAAkC;IAAlC,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,iBAAA,CAAkC;IAShC,EAAA,CAAA,SAAA,EAAwB;IAAxB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,kBAAA,CAAwB;;MCxD9B,kCAAkC,CAAA;AAgB7C,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC;IACnD;IAEA,WAAA,CAA8B,kBAAsC,EAAmB,qBAAmD,EAAA;QAA5G,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAAuC,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;AAVlG,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAsB;AAEtE,QAAA,IAAA,CAAA,qBAAqB,GAAG,kBAAkB,CAAC,KAAK;AAEhD,QAAA,IAAA,CAAA,iCAAiC,GAAG,6BAA6B,CAAC,eAAe;IAM4D;AAE7I,IAAA,cAAc,CAAC,UAA8B,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE;YACzC;QACF;AAEA,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;IAC3C;AAEA,IAAA,MAAM,CAAC,UAA8B,EAAA;AACnC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE;IACrE;AAEA,IAAA,WAAW,CAAC,UAA8B,EAAA;;AAExC,QAAA,IAAI,UAAU,CAAC,cAAc,EAAE,SAAS,IAAI,UAAU,CAAC,cAAc,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7F,YAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC7E;;QAGA,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,UAAU,CAAC,cAAe,CAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAG,IAAI,CAAC,kBAAkB,CAAC;IACjI;AAEQ,IAAA,oBAAoB,CAAC,UAA8B,EAAA;AACzD,QAAA,OAAO,UAAU,CAAC,MAAM,KAAK,IAAI,IAAI,UAAU,CAAC,WAAqB,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO;IAClG;mIA9CW,kCAAkC,EAAA,EAAA,CAAA,iBAAA,CAAAa,kBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAC,4BAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEAAlC,kCAAkC,EAAA,SAAA,EAAA,CAAA,CAAA,iCAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,KAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,eAAA,EAAA,eAAA,EAAA,CAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,+BAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,KAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,QAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,QAAA,CAAA,EAAA,CAAA,UAAA,EAAA,KAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,KAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,QAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,QAAA,CAAA,EAAA,CAAA,UAAA,EAAA,KAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,UAAA,EAAA,KAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,QAAA,CAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,CAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,CAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,CAAA,UAAA,EAAA,KAAA,EAAA,eAAA,EAAA,cAAA,EAAA,CAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,yBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,2CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YDX/C,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,0DAAA,EAAA,EAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,CAAiC;;YAAlB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,UAAA,CAAgB;;;iFCWlB,kCAAkC,EAAA,CAAA;cAN9C,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,cAG/B,KAAK,EAAA,QAAA,EAAA,o7HAAA,EAAA,MAAA,EAAA,CAAA,uMAAA,CAAA,EAAA;wFAGV,UAAU,EAAA,CAAA;kBAAlB;YACQ,QAAQ,EAAA,CAAA;kBAAhB;YACQ,eAAe,EAAA,CAAA;kBAAvB;YACQ,sBAAsB,EAAA,CAAA;kBAA9B;YACQ,kBAAkB,EAAA,CAAA;kBAA1B;YACQ,QAAQ,EAAA,CAAA;kBAAhB;YACQ,kBAAkB,EAAA,CAAA;kBAA1B;YACQ,kBAAkB,EAAA,CAAA;kBAA1B;YACQ,uBAAuB,EAAA,CAAA;kBAA/B;YACS,mBAAmB,EAAA,CAAA;kBAA5B;;kFAVU,kCAAkC,EAAA,EAAA,SAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,+IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;;;ICP7C,EAAA,CAAA,uBAAA,CAAA,CAAA,CAAwC;AAEpC,IADF,4BAA0C,CAAA,CAAA,EAAA,MAAA,CAClC;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAiD;;AACzD,IADyD,iBAAO,EAC5D;;;;IADI,EAAA,CAAA,SAAA,CAAA,CAAA,CAAiD;IAAjD,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,eAAA,GAAA,aAAA,CAAA,CAAiD;;;IAG3D,EAAA,CAAA,uBAAA,CAAA,CAAA,CAAyC;IACvC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAqD;IACnD,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;IAAA,EAAA,CAAA,YAAA,EAAI;IAEJ,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAG8C;;;;;;;IAN5C,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,eAAA,GAAA,wBAAA,CAAA,EAAA,GAAA,CACF;IAEG,EAAA,CAAA,SAAA,CAAA,CAAA,CAGD;IAHC,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,eAAA,GAAA,mBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAAjB,KAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,MAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,MAAA,CAAA,kBAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAGD;;;;IAaA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,iCAAA,EAAA,EAAA,CAaC;AADC,IAAA,EAAA,CAAA,UAAA,CAAA,qBAAA,EAAA,SAAA,wJAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAuB,6BAAsB,CAAA,CAAA,CAAA,CAAA,CAAC;IAC/C,EAAA,CAAA,YAAA,EAAkC;;;;AAFjC,IARA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,aAAA,CAAyB,CAAA,UAAA,EAAA,MAAA,CAAA,MAAA,CAAA,QAAA,CACG,uCACG,CAAA,iBAAA,EAAA,MAAA,CAAA,eAAA,CACI,CAAA,wBAAA,EAAA,MAAA,CAAA,sBAAA,CACc,CAAA,oBAAA,EAAA,MAAA,CAAA,kBAAA,CACR,CAAA,oBAAA,EAAA,MAAA,CAAA,MAAA,CAAA,kBAAA,CACO,wDACA,CAAA,yBAAA,EAAA,MAAA,CAAA,uBAAA,CACG;;;IAZvD,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAA+D;IAC7D,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,yFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iCAAA,EAAA,EAAA,CAaC;IACH,EAAA,CAAA,YAAA,EAAM;;;IAbD,EAAA,CAAA,SAAA,EAAuB;IAAvB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,aAAA,CAAA,MAAA,CAAuB;;;;AAV9B,IADF,8BAAgE,CAAA,CAAA,EAAA,iBAAA,CAC+B;;AAEzF,IADF,8BAAqE,CAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,CACkC;IAA/B,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,mFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,MAAA,CAAA,cAAA,CAAe,IAAI,CAAC,CAAA,CAAA,CAAA,CAAA,CAAC;IAClG,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAA+B;IAC7B,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;IAAA,EAAA,CAAA,YAAA,EAAO,EACU,EACf;IACN,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAA+D;AAiBnE,IADE,iBAAkB,EACd;;;IAzBa,EAAA,CAAA,SAAA,EAA2E;;IAEtE,EAAA,CAAA,SAAA,CAAA,CAAA,CAAmD;IAAnD,EAAA,CAAA,WAAA,CAAA,uBAAA,EAAA,CAAA,MAAA,CAAA,kBAAA,CAAmD;IAEjE,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,eAAA,GAAA,eAAA,CAAA,EAAA,GAAA,CACF;IAG2C,EAAA,CAAA,SAAA,CAAA,CAAA,CAAc;IAAd,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,WAAA,CAAc;;MCjBpD,kCAAkC,CAAA;AAY7C,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAY;IACnF;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,kBAA6B;IAC9D;AAEA,IAAA,IAAI,uBAAuB,GAAA;QACzB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,oCAAoC;IACrE;IAIA,WAAA,CACmB,kBAAsC,EACtC,MAAgC,EAAA;QADhC,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,MAAM,GAAN,MAAM;AAzBf,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAA6B;QAI7E,IAAA,CAAA,WAAW,GAAyB,EAAE;QAE7B,IAAA,CAAA,eAAe,GAAG,mBAAmB;QACrC,IAAA,CAAA,sBAAsB,GAAG,4BAA4B;AAc7C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAE;AAqChC,QAAA,IAAA,CAAA,uBAAuB,GAAG,CAAC,CAAqB,EAAE,CAAqB,KAAI;AACjF,YAAA,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE;AAC1B,YAAA,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE;YAE1B,OAAO,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;AAC5E,QAAA,CAAC;QApCC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAiB;IACzD;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;YACxF,MAAM,WAAW,GAAyB,EAAE;YAE5C,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE;gBAC3C,MAAM,MAAM,GAAG,CAAA,MAAA,EAAS,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAA,CAAA,CAAG;gBACzD,MAAM,MAAM,GAAG,CAAA,MAAA,EAAS,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAA,CAAA,CAAG;AAEzD,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;AAC7D,oBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,IAAI,UAAU,EAAE,YAAY,EAAE;AAC3J,wBAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;oBAC9B;AACF,gBAAA,CAAC,CAAC;gBAEF,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC;YACnE;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,cAAc,CAAC,UAAqC,EAAA;AAClD,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAgC,CAAC;IACjE;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IACzB;mIA3DW,kCAAkC,EAAA,EAAA,CAAA,iBAAA,CAAAgB,kBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAf,wBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEAAlC,kCAAkC,EAAA,SAAA,EAAA,CAAA,CAAA,iCAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,4BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,yBAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAAA,EAAA,yBAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,UAAA,EAAA,KAAA,EAAA,eAAA,EAAA,cAAA,EAAA,CAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,yBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,2CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YDZ/C,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAA2C,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CACM,CAAA,CAAA,EAAA,MAAA,CACvC;YAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA2C;;AACnD,YADmD,iBAAO,EACrD;AAML,YALA,qGAAwC,CAAA,CAAA,EAAA,0DAAA,EAAA,CAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,CAKC;YAU3C,EAAA,CAAA,YAAA,EAAS;YACT,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAgE;;YAlBtD,EAAA,CAAA,SAAA,CAAA,CAAA,CAA2C;YAA3C,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,GAAA,CAAA,eAAA,GAAA,OAAA,CAAA,CAA2C;YAEpC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAuB;YAAvB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,iBAAA,CAAuB;YAKvB,EAAA,CAAA,SAAA,EAAwB;YAAxB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,iBAAA,CAAwB;YAWnC,EAAA,CAAA,SAAA,EAAuB;YAAvB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,iBAAA,CAAuB;;;iFCRhB,kCAAkC,EAAA,CAAA;cAN9C,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,cAG/B,KAAK,EAAA,QAAA,EAAA,qtEAAA,EAAA,MAAA,EAAA,CAAA,mnDAAA,CAAA,EAAA;oFAGQ,MAAM,EAAA,CAAA;kBAAhC,KAAK;mBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;YAChB,kBAAkB,EAAA,CAAA;kBAA1B;YACS,mBAAmB,EAAA,CAAA;kBAA5B;;kFAHU,kCAAkC,EAAA,EAAA,SAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,mHAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;;;;ICHzC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,WAAA,CAA0D;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAyH;;IAAA,EAAA,CAAA,YAAA,EAAY;;;IAArI,EAAA,CAAA,SAAA,EAAyH;IAAzH,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,sDAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAE,KAAA,EAAA,MAAA,CAAA,SAAA,EAAA,MAAA,CAAA,SAAA,CAAA,CAAA,CAAyH;;MCI5K,0CAA0C,CAAA;AAcrD,IAAA,WAAA;;AAEmB,IAAA,SAA4B,EAC5B,MAAgC,EAChC,gBAAkC,EAClC,EAAe,EACA,IAAgC,EAAA;QAJ/C,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,EAAE,GAAF,EAAE;QACa,IAAA,CAAA,IAAI,GAAJ,IAAI;QAXtC,IAAA,CAAA,UAAU,GAAG,UAAU;QACvB,IAAA,CAAA,aAAa,GAAG,kBAAkB;IAW/B;IAEH,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACxB,YAAA,cAAc,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9I,SAAA,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,uBAAuB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,uBAAuB,EAAE;YACpG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,uBAAuB;YAC/D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,uBAAuB;QACjE;QAEA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,KAAI;YACjH,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5C,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;gBAC1B,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;YACxD;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;QACtD;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;IACjC;AAjDW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,SAAA,kDAAA,CAAA,iBAAA,EAAA,EAAA,OAAA,KAAA,iBAAA,IAAA,0CAA0C,mMAoB3C,eAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEApBd,0CAA0C,EAAA,SAAA,EAAA,CAAA,CAAA,0CAAA,CAAA,CAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,cAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,YAAA,EAAA,SAAA,EAAA,CAAA,EAAA,4BAAA,CAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,KAAA,EAAA,eAAA,EAAA,YAAA,EAAA,CAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,EAAA,OAAA,EAAA,UAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,mDAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YDbvD,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAqB;YAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAwD;;YAAA,EAAA,CAAA,YAAA,EAAK;YAClF,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,CAA4E;YAC5E,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAwB;YACtB,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAuI;;YACvI,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA+F;;YAC/F,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAyB,CAAA,EAAA,EAAA,gBAAA,EAAA,CAAA,CACiD,CAAA,EAAA,EAAA,WAAA,CAC3D;YAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAyE;;YAAA,EAAA,CAAA,YAAA,EAAY;YAChG,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,OAAA,EAAA,CAAA,CAA4E;AAA3B,YAAA,EAAA,CAAA,UAAA,CAAA,aAAA,EAAA,SAAA,iFAAA,GAAA,EAAA,OAAe,YAAQ,CAAA,CAAA,CAAA,CAAC;YAAzE,EAAA,CAAA,YAAA,EAA4E;YAC5E,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,gEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,CAA0D;YAC5D,EAAA,CAAA,YAAA,EAAiB,EACd,EACD;AAEJ,YADF,8CAA8F,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CACjC;YAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAyD;;YAAA,EAAA,CAAA,YAAA,EAAS;YAC7H,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAoG;AAA5E,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,4EAAA,GAAA,EAAA,OAAS,YAAQ,CAAA,CAAA,CAAA,CAAC;YAA0D,EAAA,CAAA,MAAA,CAAA,EAAA,CAAyD;;AAC/J,YAD+J,iBAAS,EACnJ;;YAhBA,EAAA,CAAA,SAAA,EAAwD;YAAxD,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,sCAAA,CAAA,CAAwD;YAG/C,EAAA,CAAA,SAAA,CAAA,CAAA,CAAsG;YAAtG,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,EAAA,EAAA,8CAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAAH,KAAA,EAAA,GAAA,CAAA,OAAA,EAAA,GAAA,CAAA,cAAA,CAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAAsG;YAChH,EAAA,CAAA,SAAA,CAAA,CAAA,CAAwE;YAAxE,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,EAAA,EAAA,8CAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAAwE;YACpF,EAAA,CAAA,SAAA,CAAA,CAAA,CAAkB;YAAlB,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,IAAA,CAAkB;YAET,EAAA,CAAA,SAAA,CAAA,CAAA,CAAyE;YAAzE,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,sDAAA,CAAA,EAAA,GAAA,CAAyE;YAExE,EAAA,CAAA,SAAA,CAAA,CAAA,CAA4C;YAA5C,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,IAAA,CAAA,QAAA,CAAA,gBAAA,CAAA,CAAA,MAAA,CAA4C;YAKD,EAAA,CAAA,SAAA,CAAA,CAAA,CAAyD;YAAzD,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,uCAAA,CAAA,CAAyD;YAC1C,EAAA,CAAA,SAAA,CAAA,CAAA,CAAyB;YAAzB,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,GAAA,CAAA,IAAA,CAAA,OAAA,CAAyB;YAAC,EAAA,CAAA,SAAA,EAAyD;YAAzD,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,uCAAA,CAAA,CAAyD;;;iFCFlJ,0CAA0C,EAAA,CAAA;cANtD,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0CAA0C,cAGxC,KAAK,EAAA,QAAA,EAAA,o7CAAA,EAAA,MAAA,EAAA,CAAA,2PAAA,CAAA,EAAA;;sBAsBhB,MAAM;uBAAC,eAAe;;kFApBd,0CAA0C,EAAA,EAAA,SAAA,EAAA,4CAAA,EAAA,QAAA,EAAA,mKAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;;;ICbvD,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAA+G;AAA3C,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,8EAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,eAAQ,CAAA,CAAA,CAAA,CAAA,CAAC;IACpF,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;IAAA,EAAA,CAAA,YAAA,EAAS;;IADP,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,yBAAA,CAAA,EAAA,IAAA,CACF;;MCWa,oCAAoC,CAAA;IAQ/C,IAAI,oBAAoB,GAAA,EAAK,OAAO,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;AAElF,IAAA,WAAA,CACmB,SAA2B,EAC3B,MAAiB,EACjB,kBAAsC,EAAA;QAFtC,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;AAT3B,QAAA,IAAA,CAAA,iBAAiB,GAAqC,IAAI,YAAY,EAAsB;QAErF,IAAA,CAAA,yBAAyB,GAAG,mBAAmB;IAQ5D;IAEJ,MAAM,GAAA;QACJ,MAAM,eAAe,GAAG,0CAA0C;AAClE,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,cAAc,KAAI;YAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE;AAC7E,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,IAAI,EAAE,EAAE,cAAc,EAAE,cAAc;AACvC,aAAA,CAAC;YACF,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,cAAc,IAAG;gBACjD,IAAI,CAAC,cAAc,EAAE;oBACnB;gBACF;AAEA,gBAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC;AAC7G,oBAAA,IAAI,EAAE,CAAC,UAAU,KAAI;AACnB,wBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;oBACzC,CAAC;AACD,oBAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,wBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;wBAClB,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,yBAAyB,EAAE;AAC3D,wBAAA,MAAM,KAAK;oBACb;AACD,iBAAA,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;qIAzCW,oCAAoC,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAD,IAAA,CAAA,SAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAmB,kBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEAApC,oCAAoC,EAAA,SAAA,EAAA,CAAA,CAAA,mCAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,6CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YDbjD,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAA+G;;YAAtG,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,oBAAA,CAA0B;;;iFCatB,oCAAoC,EAAA,CAAA;cANhD,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mCAAmC,cAGjC,KAAK,EAAA,QAAA,EAAA,6LAAA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA;yGAGV,kBAAkB,EAAA,CAAA;kBAA1B;YACQ,kBAAkB,EAAA,CAAA;kBAA1B;YAES,iBAAiB,EAAA,CAAA;kBAA1B;;kFAJU,oCAAoC,EAAA,EAAA,SAAA,EAAA,sCAAA,EAAA,QAAA,EAAA,uHAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;;;ICN3C,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAgJ;IAC9I,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;IAAA,EAAA,CAAA,YAAA,EAAI;;;;IADF,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,8CAAA,CAAA,EAAA,GAAA,CACF;;;IALF,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAqI;IACnI,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,mCAAA,EAAA,CAAA,CAA2J;IAE3J,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,8DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAgJ;IAGlJ,EAAA,CAAA,YAAA,EAAS;;;IAL4B,EAAA,CAAA,SAAA,EAAyC;AAAC,IAA1C,8DAAyC,CAAA,oBAAA,EAAA,MAAA,CAAA,kBAAA,CAA0C;IAElH,EAAA,CAAA,SAAA,EAAmC;IAAnC,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,6BAAA,CAAmC;;;;IAN3C,EAAA,CAAA,uBAAA,CAAA,CAAA,CAAuD;IACrD,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,iCAAA,EAAA,CAAA,CAA4I;AAA3G,IAAA,EAAA,CAAA,UAAA,CAAA,qBAAA,EAAA,SAAA,gHAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAuB,6BAAsB,CAAA,CAAA,CAAA,CAAA,CAAC;IAA6D,EAAA,CAAA,YAAA,EAAkC;IAE9K,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,0DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAqI;;;;IAFrD,EAAA,CAAA,SAAA,EAAiB;AAAC,IAAlB,sCAAiB,CAAA,oBAAA,EAAA,MAAA,CAAA,kBAAA,CAA0C;IAElI,EAAA,CAAA,SAAA,EAAwB;IAAxB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,kBAAA,CAAwB;;;IAa7B,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAqK;;;;IAArH,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,qBAAA,GAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAlB,KAAA,EAAA,MAAA,CAAA,SAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAAgH;;;IAG9J,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,CAAG;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA4D;;IAAA,EAAA,CAAA,YAAA,EAAI;;;IAAhE,EAAA,CAAA,SAAA,EAA4D;IAA5D,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,qBAAA,GAAA,kBAAA,CAAA,CAA4D;;;IAPrE,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAA0E,CAAA,CAAA,EAAA,KAAA,CACnE,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAC0B;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAiD;;IAAA,EAAA,CAAA,YAAA,EAAK;IACnF,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAkD;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAuD;;IAAA,EAAA,CAAA,YAAA,EAAI;AAG7G,IAFA,qFAAiK,CAAA,CAAA,EAAA,8DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAErI;AAIhC,IADE,iBAAM,EACE;;;;IARuB,EAAA,CAAA,SAAA,CAAA,CAAA,CAAiD;IAAjD,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,qBAAA,GAAA,OAAA,CAAA,CAAiD;IAC5B,EAAA,CAAA,SAAA,CAAA,CAAA,CAAuD;IAAvD,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,qBAAA,GAAA,aAAA,CAAA,CAAuD;IACrG,EAAA,CAAA,SAAA,CAAA,CAAA,CAAwB;AAAA,IAAxB,8CAAwB,CAAA,UAAA,EAAA,gBAAA,CAAkB;;MCNzC,yBAAyB,CAAA;IAMpC,IAAI,eAAe,GAAA,EAAK,OAAO,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAA,CAAC;AACvE,IAAA,IAAI,iBAAiB,GAAA,EAAK,OAAO,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA,CAAC;IACjG,IAAI,kBAAkB,GAAA,EAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAA,CAAC;IAC5E,IAAI,oBAAoB,GAAA,EAAK,OAAO,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAA,CAAC;AACjF,IAAA,IAAI,6BAA6B,GAAA,EAAK,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,6BAA6B,CAAA,CAAC;AAClG,IAAA,IAAI,SAAS,GAAA,EAAK,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAA,CAAC;AAC1D,IAAA,IAAI,aAAa,GAAA,EAAK,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAA,CAAC;AAElE,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,oBAAoB,MAAM,IAAI,CAAC,6BAA6B,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC;IACvK;IASA,WAAA,CAA6B,kBAAsC,EAAmB,MAAgC,EAAA;QAAzF,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAAuC,IAAA,CAAA,MAAM,GAAN,MAAM;AArBlF,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAA6B;QAmBpE,IAAA,CAAA,qBAAqB,GAAG,0BAA0B;IAE8D;IAIzH,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;QACpC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,2BAA2B,CAAC;IAC7I;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YACrD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;YACpC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,2BAA2B,CAAC;QAC7I;IACJ;AAEA,IAAA,cAAc,CAAC,UAAqC,EAAA;AAClD,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;IAC3C;AAEQ,IAAA,cAAc,CAAC,OAAe,EAAE,OAAe,EAAE,QAAgB,EAAE,2BAAoC,EAAA;AAC7G,QAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO;AACjC,QAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO;AAEjC,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE,2BAA2B,CAAC;QAE5H,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,6BAA6B,EAAE;AACxD,YAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,6BAA6B,CAAC,QAAQ,CAAC;QACrG;IACF;0HAtDW,yBAAyB,EAAA,EAAA,CAAA,iBAAA,CAAAgB,kBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAf,wBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEAAzB,yBAAyB,EAAA,SAAA,EAAA,CAAA,CAAA,uBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,WAAA,EAAA,EAAA,CAAA,EAAA,CAAA,eAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,6BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,KAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,KAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,4BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,QAAA,CAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,EAAA,WAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,kCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YDXtC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,SAAA,EAAA,CAAA,CAA6C;AAY3C,YAXA,4FAAuD,CAAA,CAAA,EAAA,gDAAA,EAAA,EAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAW/B;YAa1B,EAAA,CAAA,YAAA,EAAU;;;YAxBO,EAAA,CAAA,SAAA,EAAwB;AAAA,YAAxB,2CAAwB,CAAA,UAAA,EAAA,YAAA,CAAc;;;iFCU1C,yBAAyB,EAAA,CAAA;cANrC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cAGrB,KAAK,EAAA,QAAA,EAAA,upDAAA,EAAA,MAAA,EAAA,CAAA,wPAAA,CAAA,EAAA;oFAGQ,MAAM,EAAA,CAAA;kBAAhC,KAAK;mBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;YACE,2BAA2B,EAAA,CAAA;kBAArD,KAAK;mBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;YAChB,kBAAkB,EAAA,CAAA;kBAA1B;YACS,mBAAmB,EAAA,CAAA;kBAA5B;;kFAJU,yBAAyB,EAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,6EAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;ACX/B,MAAM,gBAAgB,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;ICoB5B,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAmH;;;;IAfrH,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,CAAA,CAWC;;AALC,IADA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,SAAA,uGAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAc,MAAA,CAAA,QAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,YAAA,EAAA,SAAA,uGAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CACX,kBAAW,CAAA,CAAA,CAAA,CAAA,CAAC;IAM1B,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAkC;IAChC,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;IAAA,EAAA,CAAA,YAAA,EAAO;IACP,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,yEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAqG;IACvG,EAAA,CAAA,YAAA,EAAwB;;;;;AANtB,IANA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,QAAA,CAAA,QAAA,CAA2B,CAAA,mBAAA,EAAA,OAAA,CAGD,kQAEyD,CAAA,UAAA,EAAA,MAAA,CAAA,QAAA,CAC9D;;IAGnB,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,MAAA,CAAA,QAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,QAAA,CAAA,YAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,QAAA,CAAA,YAAA,CAAA,IAAA,MAAA,MAAA,CAAA,QAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,QAAA,CAAA,cAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,QAAA,CAAA,cAAA,CAAA,IAAA,CAAA,IAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,gCAAA,CAAA,EAAA,GAAA,CACF;IACc,EAAA,CAAA,SAAA,CAAA,CAAA,CAA2B;IAA3B,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,QAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,QAAA,CAAA,WAAA,CAA2B;;;IAmBvC,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAmH;;;;IAfrH,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,CAAA,CAWC;;AALC,IADA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,SAAA,6FAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAc,MAAA,CAAA,QAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,YAAA,EAAA,SAAA,6FAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CACX,kBAAW,CAAA,CAAA,CAAA,CAAA,CAAC;IAM1B,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAkC;IAChC,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;IAAA,EAAA,CAAA,YAAA,EAAO;IACP,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,+DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAqG;IACvG,EAAA,CAAA,YAAA,EAAwB;IAExB,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAA6I;AAA3G,IAA1B,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,SAAA,8EAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAc,MAAA,CAAA,QAAA,EAAU,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,YAAA,EAAA,SAAA,8EAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAe,kBAAW,CAAA,CAAA,CAAA,CAAA,CAAC;IAC1D,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAAwF;IAC1F,EAAA,CAAA,YAAA,EAAS;;;;;AAVP,IANA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,QAAA,CAAA,QAAA,CAA2B,CAAA,mBAAA,EAAA,OAAA,CAGD,kQAEyD,CAAA,UAAA,EAAA,MAAA,CAAA,QAAA,CAC9D;;IAGnB,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,MAAA,CAAA,QAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,QAAA,CAAA,YAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,QAAA,CAAA,YAAA,CAAA,IAAA,MAAA,MAAA,CAAA,QAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,QAAA,CAAA,cAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,QAAA,CAAA,cAAA,CAAA,IAAA,CAAA,IAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,EAAA,EAAA,gCAAA,CAAA,EAAA,GAAA,CACF;IACc,EAAA,CAAA,SAAA,CAAA,CAAA,CAA2B;IAA3B,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,QAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,QAAA,CAAA,WAAA,CAA2B;IAGuE,EAAA,CAAA,SAAA,EAA0B;IAA1B,EAAA,CAAA,UAAA,CAAA,mBAAA,EAAA,OAAA,CAA0B;IACrG,EAAA,CAAA,SAAA,CAAA,CAAA,CAAuC;;;;AA1ChF,IADF,8BAA2O,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAC/L;IACxC,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;IAAA,EAAA,CAAA,YAAA,EAAO;AAoBP,IAlBA,iHAWC,CAAA,CAAA,EAAA,iDAAA,EAAA,EAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAO2B;IAuB9B,EAAA,CAAA,YAAA,EAAM;;;;IA9C4J,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,oCAAA,CAAsD;IAEpN,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,2BAAA,CAAA,EAAA,GAAA,CACF;IAGG,EAAA,CAAA,SAAA,CAAA,CAAA,CAA6B;AAAA,IAA7B,mDAA6B,CAAA,UAAA,EAAA,gBAAA,CAAkB;;MCQvC,oBAAoB,CAAA;AAkB/B,IAAA,IAAI,kCAAkC,GAAA;AACpC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,kCAAkC;IAClE;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;IACxE;AAEA,IAAA,WAAA,CAA6B,MAAgC,EAAmB,kBAAsC,EAAmB,WAAwB,EAAA;QAApI,IAAA,CAAA,MAAM,GAAN,MAAM;QAA6C,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAAuC,IAAA,CAAA,WAAW,GAAX,WAAW;QAtB3I,IAAA,CAAA,2BAA2B,GAAG,IAAI;QAClC,IAAA,CAAA,2BAA2B,GAAG,IAAI;QAClC,IAAA,CAAA,oBAAoB,GAAG,IAAI;AAC1B,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAA6B;AACnE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAW;QAE/C,IAAA,CAAA,gBAAgB,GAAG,KAAK;QACxB,IAAA,CAAA,YAAY,GAAG,KAAK;AAGX,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAE;QAExC,IAAA,CAAA,QAAQ,GAA8B,IAAI;IAU0H;AAEpK,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ;QACjF;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAACG,OAAK,CAAC;AAErC,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,gBAAgB,EAAE;QACzB;QAEA,IAAI,CAAC,kBAAkB,EAAE;IAC3B;AAEA,IAAA,cAAc,CAAC,UAAqC,EAAA;AAClD,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;QAE1B,IAAI,CAAC,UAAU,EAAE,YAAY,IAAI,UAAU,KAAK,IAAI,EAAE;YACpD,IAAI,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE;AAC7D,gBAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC;AAC1F,oBAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,wBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;oBACpC,CAAC;AACD,oBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,wBAAA,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;oBAC5E;AACF,iBAAA,CAAC;YACJ;QACF;aAAO;AACL,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;QAC3C;AAEA,QAAA,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,2BAA2B,CAAC;IACnH;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAE/B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AAExB,QAAA,IAAI,CAAC;AACF,aAAA,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;aACrC,SAAS,CAAC,MAAK;AACZ,YAAA,MAAM,2BAA2B,GAC/B,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW;AAE5E,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,KAAK,2BAA2B,EAAE;gBAC1F,IAAI,CAAC,WAAW,EAAE;YACpB;AACF,QAAA,CAAC,CACF;IACL;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AAEhC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAEzB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE;AAC9B,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;YAC5B;QACF;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;QACtC,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IACzB;IAEQ,WAAW,GAAA;QACjB,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC7D,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;IAC/B;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AAC7F,YAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;AAC5D,gBAAA,IAAI,UAAU,CAAC,YAAY,EAAE,EAAE,KAAK,IAAI,CAAC,oBAAoB,IAAI,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC,oBAAoB,EAAE;AAChH,oBAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAE1B,oBAAA,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC;AACtF,oBAAA,IAAI,CAAC,4BAA4B,EAAE,WAAW,EAAE;gBAClD;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEQ,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,kBAAkB,CAAC,sCAAsC;AAC3D,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;AAC5B,aAAA,SAAS,CAAC,CAAC,GAAG,KAAI;YACnB,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC7B,gBAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ;YACpD;AACF,QAAA,CAAC,CAAC;IACJ;qHAlIW,oBAAoB,EAAA,EAAA,CAAA,iBAAA,CAAAO,wBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAQ,kBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAC,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEAApB,oBAAoB,EAAA,SAAA,EAAA,CAAA,CAAA,iBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,eAAA,EAAA,EAAA,CAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,aAAA,EAAA,KAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,cAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,6BAAA,CAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,aAAA,EAAA,KAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,CAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,CAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,CAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,cAAA,EAAA,EAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,SAAA,EAAA,kBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,6BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;YDdjC,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,mCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAA2O;YAgD3O,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAsD;YACpD,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,CAAkD;YAClD,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAyG;AAArC,YAAnC,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,kDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,MAAA,CAAA,eAAA,EAAwB,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,SAAA,EAAA,SAAA,oDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAY,wBAAwB,CAAA,CAAA,CAAA,CAAA,CAAC;YACtG,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAoL;AAA7J,YAAA,EAAA,CAAA,UAAA,CAAA,qBAAA,EAAA,SAAA,kFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAuB,0BAAsB,CAAA,CAAA,CAAA,CAAA,CAAC;YAA+G,EAAA,CAAA,YAAA,EAAwB,EACxM,EACG;;YArDL,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,kCAAA,IAAA,GAAA,CAAA,kCAAA,IAAA,GAAA,CAAA,iBAAA,CAAsG;YAmDlC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAiB;YAAjB,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,GAAA,CAAA,MAAA,CAAiB,CAAA,oBAAA,EAAA,GAAA,CAAA,QAAA,CAAgC,CAAA,6BAAA,EAAA,GAAA,CAAA,2BAAA,CAA4D;;;iFCrC1K,oBAAoB,EAAA,CAAA;cANhC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAGf,KAAK,EAAA,QAAA,EAAA,g5FAAA,EAAA,MAAA,EAAA,CAAA,2UAAA,CAAA,EAAA;2GAGV,oBAAoB,EAAA,CAAA;kBAA5B;YAC0B,MAAM,EAAA,CAAA;kBAAhC,KAAK;mBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;YAChB,QAAQ,EAAA,CAAA;kBAAhB;YACQ,2BAA2B,EAAA,CAAA;kBAAnC;YACQ,2BAA2B,EAAA,CAAA;kBAAnC;YACQ,oBAAoB,EAAA,CAAA;kBAA5B;YACS,mBAAmB,EAAA,CAAA;kBAA5B;YACS,eAAe,EAAA,CAAA;kBAAxB;;kFARU,oBAAoB,EAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCiDpB,iBAAiB,CAAA;kHAAjB,iBAAiB,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAjB,iBAAiB,EAAA,CAAA,CAAA;AAFjB,IAAA,SAAA,IAAA,CAAA,IAAA,iBAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,SAAA,EAAA,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,CAAC,CAAC,YAlBtD,YAAY;YACZ,qBAAqB;YACrB,eAAe;YACf,gBAAgB;YAChB,WAAW;YACX,mBAAmB;YACnB,iBAAiB;YACjB,aAAa;YACb,eAAe;YACf,aAAa;YACb,wBAAwB;YACxB,aAAa;YACb,cAAc;YACd,eAAe;YACf,cAAc;YACd,gBAAgB;YAChB,uBAAuB,CAAA,EAAA,CAAA,CAAA;;iFAId,iBAAiB,EAAA,CAAA;cA/B7B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE;oBACZ,oBAAoB;oBACpB,yBAAyB;oBACzB,oCAAoC;oBACpC,0CAA0C;oBAC1C,kCAAkC;oBAClC,kCAAkC;AACnC,iBAAA;AACD,gBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,oCAAoC,CAAC;AACrE,gBAAA,OAAO,EAAE;oBACP,YAAY;oBACZ,qBAAqB;oBACrB,eAAe;oBACf,gBAAgB;oBAChB,WAAW;oBACX,mBAAmB;oBACnB,iBAAiB;oBACjB,aAAa;oBACb,eAAe;oBACf,aAAa;oBACb,wBAAwB;oBACxB,aAAa;oBACb,cAAc;oBACd,eAAe;oBACf,cAAc;oBACd,gBAAgB;oBAChB,uBAAuB;AACxB,iBAAA;AACD,gBAAA,SAAS,EAAE,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,CAAC,CAAC;AACzD,aAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,iBAAiB,mBA7B1B,oBAAoB;QACpB,yBAAyB;QACzB,oCAAoC;QACpC,0CAA0C;QAC1C,kCAAkC;AAClC,QAAA,kCAAkC,aAIlC,YAAY;QACZ,qBAAqB;QACrB,eAAe;QACf,gBAAgB;QAChB,WAAW;QACX,mBAAmB;QACnB,iBAAiB;QACjB,aAAa;QACb,eAAe;QACf,aAAa;QACb,wBAAwB;QACxB,aAAa;QACb,cAAc;QACd,eAAe;QACf,cAAc;QACd,gBAAgB;QAChB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAlBf,oBAAoB,EAAE,oCAAoC,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCjCzD,aAAa,CAAA;AACf,IAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;IAEnC,IAAI,CAAC,IAAY,EAAE,KAAY,EAAA;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CACnB,CAAA,8CAAA,EAAiD,KAAK,CAAC,KAAK,SAAS,IAAI,CAAA,CAAE,EAC3E,EAAE,YAAY,EAAE,MAAM,EAAE,CACzB;IACH;8GARW,aAAa,GAAA,CAAA,CAAA,CAAA,CAAA;uEAAb,aAAa,EAAA,OAAA,EAAb,aAAa,CAAA,IAAA,EAAA,UAAA,EAFZ,MAAM,EAAA,CAAA,CAAA;;iFAEP,aAAa,EAAA,CAAA;cAHzB,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA;;;;ICHK,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAwE;IACtE,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;IAAA,EAAA,CAAA,YAAA,EAAa;;;IAF2C,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,QAAA,CAAe;IACrE,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,QAAA,CAAA,SAAA,EAAA,GAAA,CACF;;;IAcE,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,CAA6B;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CAAwC;IAAA,EAAA,CAAA,YAAA,EAAW;;;IAAnD,EAAA,CAAA,SAAA,EAAwC;IAAxC,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,SAAA,GAAA,MAAA,GAAA,WAAA,EAAA,GAAA,CAAwC;;;IACtE,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAA6D;;IAA9B,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,EAAA,CAAe;;MCWzC,qBAAqB,CAAA;AAjBlC,IAAA,WAAA,GAAA;QAkBW,IAAA,CAAA,aAAa,GAAW,IAAI;AAiB5B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;AAmDhD,IAAA;AAxDC,IAAA,IAAI,WAAW,GAAA;QACb,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAwB;AAC1E,QAAA,OAAO,QAAQ,EAAE,YAAY,GAAG,QAAQ,EAAE,YAAY,GAAG,IAAI,GAAG,KAAK;IACvE;AAES,IAAA,cAAc;IAEvB,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAChC;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,IAAI,EAAE;YACX;QACF;AAEA,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AAErB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,IAAI;QAE3G,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC,YAAY,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,EAAE;AAC9F,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;YACtB;QACF;AAEA,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ;AACxB,aAAA,IAAI,CAAC,QAAQ,CAAC,MAAK,EAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA,CAAC,CAAC,CAAC;AAC/C,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;gBACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK;gBACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;gBACzC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC;AAChC,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAEjB,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AAErB,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAK;AACxB,oBAAA,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC7B,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACxB,gBAAA,CAAC;YACH,CAAC;AACF,SAAA,CAAC;IACN;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAClB,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC;AAC1B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACxB;IACF;sHApEW,qBAAqB,GAAA,CAAA,CAAA,CAAA,CAAA;oEAArB,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,oBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,CAAA,EAAA,CAAA,YAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,iCAAA,CAAA,EAAA,CAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,SAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YDhClC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAA+D,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,CACT,CAAA,CAAA,EAAA,WAAA,CACvC;YAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA8B;;YAAA,EAAA,CAAA,YAAA,EAAY;YACrD,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAiC;YAArB,EAAA,CAAA,gBAAA,CAAA,aAAA,EAAA,SAAA,gEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,QAAA,EAAA,MAAA,CAAA,KAAA,GAAA,CAAA,QAAA,GAAA,MAAA,CAAA,CAAA,CAAA,OAAA,MAAA,CAAA,CAAA,CAAA,CAAoB;YAC9B,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAwE;AAI5E,YADE,iBAAa,EACE;AAGf,YADF,8BAA6C,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAC4D;;YAA7F,EAAA,CAAA,gBAAA,CAAA,eAAA,EAAA,SAAA,gEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,GAAA,CAAA,IAAA,GAAA,MAAA,CAAA,CAAA,CAAA,OAAA,MAAA,CAAA,CAAA,CAAA,CAAkB;YAA2E,EAAA,CAAA,YAAA,EAAW;YAClH,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAA2E;YACzE,EAAA,CAAA,MAAA,CAAA,EAAA,CACF;AACF,YADE,iBAAM,EACF;AAGJ,YADF,+BAAoC,CAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAC4B;;YAC5D,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,CAAwI;;AAAvC,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uDAAA,GAAA,EAAA,OAAS,gBAAY,CAAA,CAAA,CAAA,CAAC;AAErH,YADA,mFAA6B,CAAA,EAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CACkB;AAIvD,YAHM,EAAA,CAAA,YAAA,EAAS,EACL,EACF,EACF;;YAzBD,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,QAAA,CAA0B;YAEhB,EAAA,CAAA,SAAA,CAAA,CAAA,CAA8B;YAA9B,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,CAA8B;YAC7B,EAAA,CAAA,SAAA,CAAA,CAAA,CAAoB;YAApB,EAAA,CAAA,gBAAA,CAAA,OAAA,EAAA,GAAA,CAAA,QAAA,CAAoB;YACA,EAAA,CAAA,SAAA,EAAW;YAAX,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,MAAA,CAAW;YAOjC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAkB;YAAlB,EAAA,CAAA,gBAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAkB;YAAiC,EAAA,CAAA,UAAA,CAAA,aAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,CAAyC;YACjG,EAAA,CAAA,SAAA,CAAA,CAAA,CAAmC;YAAnC,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,GAAA,CAAA,WAAA,CAAmC;YACtC,EAAA,CAAA,SAAA,EACF;YADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,CAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,CAAA,IAAA,CAAA,MAAA,KAAA,CAAA,EAAA,GAAA,EAAA,GAAA,CAAA,aAAA,EAAA,GAAA,CACF;YAIK,EAAA,CAAA,SAAA,CAAA,CAAA,CAAwD;YAAxD,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,CAAA,GAAA,CAAA,IAAA,GAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,cAAA,CAAA,GAAA,EAAA,CAAwD;YACnD,EAAA,CAAA,SAAA,CAAA,CAAA,CAAwD;AAAC,YAAzD,oFAAwD,CAAA,UAAA,EAAA,CAAA,GAAA,CAAA,IAAA,IAAA,GAAA,CAAA,SAAA,CAAgC;YACnF,EAAA,CAAA,SAAA,CAAA,CAAA,CAAgB;YAAhB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,SAAA,CAAgB;YACb,EAAA,CAAA,SAAA,EAAe;YAAf,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,SAAA,CAAe;ACH7B,QAAA,CAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,YAAY,2BACZ,aAAa;YACb,OAAO;AACP,YAAA,WAAW,iEACX,kBAAkB;AAClB,YAAA,gBAAgB,mBAChB,kBAAkB,EAAAC,EAAA,CAAA,YAAA,EAAAA,EAAA,CAAA,QAAA,EAClB,eAAe,EAAAC,EAAA,CAAA,SAAA,EAAAA,EAAA,CAAA,SAAA,EACf,gBAAgB,4BAChB,eAAe,EAAAC,EAAA,CAAA,aAAA,CAAA,EAAA,MAAA,EAAA,CAAA,y2CAAA,CAAA,EAAA,CAAA,CAAA;;iFAKV,qBAAqB,EAAA,CAAA;cAjBjC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EACrB;oBACL,YAAY;oBACZ,aAAa;oBACb,OAAO;oBACP,WAAW;oBACX,kBAAkB;oBAClB,gBAAgB;oBAChB,kBAAkB;oBAClB,eAAe;oBACf,gBAAgB;oBAChB;AACH,iBAAA,EAAA,QAAA,EAAA,uvCAAA,EAAA,MAAA,EAAA,CAAA,q/BAAA,CAAA,EAAA;gBAKM,aAAa,EAAA,CAAA;kBAArB;YACQ,MAAM,EAAA,CAAA;kBAAd;;kFAFU,qBAAqB,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,gDAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;IChCtB;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAHW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;;ACAtB;MAIa,eAAe,CAAA;AACxB;;;;AAIG;IACH,OAAO,YAAY,CAAC,MAAc,EAAA;AAC9B,QAAA,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE;AACnC,QAAA,MAAM,SAAS,GAAQ,UAAU,CAAC,MAAM;AACxC,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE;YACvB;QACJ;QAEA,MAAM,YAAY,GAAG,sCAAsC;QAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/C,QAAA,MAAM,CAAC,GAAG,GAAG,YAAY;AACzB,QAAA,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;AAC1C,QAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;;AAG5B,QAAA,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,KAAK,CAAC,GAAG,MAAW,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA,CAAC,CAAC,CAAC;IAC7I;AAEA;;;;;AAKG;AACH,IAAA,OAAO,WAAW,CAAC,EAAU,EAAE,UAAgB,EAAA;QAC3C,MAAM,SAAS,GAAQ,MAAM;AAC7B,QAAA,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE;YACvB;QACJ;QACA,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAClD;AACH;;MChCY,uBAAuB,CAAA;AAJpC,IAAA,WAAA,GAAA;QAKU,IAAA,CAAA,EAAE,GAAG,EAAE;;QAEP,IAAA,CAAA,UAAU,GAAQ,IAAI;AAsB/B,IAAA;;IApBC,IAAa,iBAAiB,CAAC,KAAiC,EAAA;QAC9D,IAAI,CAAC,KAAK,EAAE;YACV;QACF;AACA,QAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO;AAEvB,QAAA,IAAI,KAAK,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;YACpB,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1E;IAEF;IAEuB,OAAO,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;YAClB,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;QACvD;IACF;wHAtBW,uBAAuB,GAAA,CAAA,CAAA,CAAA,CAAA;oEAAvB,uBAAuB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA,EAAA,YAAA,EAAA,SAAA,oCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;AAAvB,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,gDAAA,GAAA,EAAA,OAAA,aAAS,CAAA,CAAA,CAAA,CAAc;;;iFAAvB,uBAAuB,EAAA,CAAA;cAJnC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,qBAAqB;AAC/B,gBAAA,UAAU,EAAE;AACf,aAAA;gBAMc,iBAAiB,EAAA,CAAA;kBAA7B;YAasB,OAAO,EAAA,CAAA;kBAA7B,YAAY;mBAAC,OAAO;;;MCTV,eAAe,CAAA;gHAAf,eAAe,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAf,eAAe,EAAA,CAAA,CAAA;uEANxB,YAAY,CAAA,EAAA,CAAA,CAAA;;iFAMH,eAAe,EAAA,CAAA;cAX3B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE;oBACZ;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP;AACD;AACF,aAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,eAAe,EAAA,EAAA,YAAA,EAAA,CATxB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAGvB,YAAY,aAGZ,uBAAuB,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;ACd3B,IAAY,eAIX;AAJD,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,eAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,eAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EAJW,eAAe,KAAf,eAAe,GAAA,EAAA,CAAA,CAAA;;MCGd,uBAAuB,GAAI,IAAI,cAAc,CAAmB,yBAAyB;;MCQzF,gBAAgB,CAAA;AAM3B,IAAA,WAAA,CAA6B,YAA0B,EAAA;QAA1B,IAAA,CAAA,YAAY,GAAZ,YAAY;AALhC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,uBAAuB,CAAC;QAClD,IAAA,CAAA,iBAAiB,GAAG,EAAE;QAEd,IAAA,CAAA,uBAAuB,GAAG,WAAW;IAGtD;AAEA;;AAEG;AACH,IAAA,iBAAiB,CAAC,QAAkB,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE;YACvC,OAAO,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QACrD;AAEA,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,IAAI,CAC3C,GAAG,CAAC,CAAC,QAAQ,KAAI;AACf,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,mBAAmB,CAAC;YAE1I,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC;YACjD;YAEA,OAAO,KAAK,CAAC,cAAc;AAC7B,QAAA,CAAC,CAAC,EAAE,UAAU,CAAC,MAAK;YAClB,OAAO,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC,CAAC,CACH;IACH;AAEA,IAAA,uBAAuB,CAAC,YAAoB,EAAA;QAC1C,OAAO;YACL,IAAI,EAAE,uBAAuB,CAAC,OAAO;AACrC,YAAA,IAAI,EAAE,wBAAwB;AAC9B,YAAA,kBAAkB,EAAE;AAClB,gBAAA,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa;AAClD,gBAAA,YAAY,EAAE;AACf,aAAA;SACF;IACH;IAEA,sBAAsB,GAAA;QACpB,OAAO;YACL,IAAI,EAAE,uBAAuB,CAAC,KAAK;AACnC,YAAA,IAAI,EAAE,gCAAgC;AACtC,YAAA,kBAAkB,EAAE;AAClB,gBAAA,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe;AACvD,aAAA;SACF;IACH;IAEA,sBAAsB,GAAA;QACpB,OAAO;YACL,IAAI,EAAE,uBAAuB,CAAC,KAAK;AACnC,YAAA,IAAI,EAAE,oBAAoB;AAC1B,YAAA,kBAAkB,EAAE;AAClB,gBAAA,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC;AACrC;SACF;IACH;AAEA,IAAA,wBAAwB,CAAC,MAAkB,EAAA;QACzC,OAAO;YACL,IAAI,EAAE,uBAAuB,CAAC,KAAK;YACnC,IAAI,EAAE,CAAA,WAAA,EAAc,MAAM,CAAA,gBAAA,CAAkB;AAC5C,YAAA,kBAAkB,EAAE;AAClB,gBAAA,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC;AACrC;SACF;IACH;AAEQ,IAAA,yBAAyB,CAAC,QAAkB,EAAA;QAClD,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC;AAC1E,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE;AAC9B,QAAA,IAAI,UAAU,GAAG;YACf,cAAc,EAAE,IAAI,CAAC,iBAAiB;AACtC,YAAA,UAAU,EAAE;SACb;QAED,IAAI,eAAe,EAAE;YACnB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;YAC7C,UAAU,GAAG,SAAS;YAEtB,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;;AAGpD,YAAA,IAAI,YAAY,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,OAAO,EAAE,IAAI,YAAY,CAAC,QAAQ,EAAE,KAAK,WAAW,CAAC,QAAQ,EAAE,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,EAAE;;AAEtK,gBAAA,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB;YACpD;YAEA,IAAI,QAAQ,EAAE;AACZ,gBAAA,UAAU,CAAC,cAAc,IAAI,CAAC;YAChC;QACF;AAEA,QAAA,UAAU,CAAC,UAAU,GAAG,WAAW;AAEnC,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAE9E,OAAO,UAAU,CAAC,cAAc;IAClC;iHAvGW,gBAAgB,EAAA,EAAA,CAAA,QAAA,CAAAzB,IAAA,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;uEAAhB,gBAAgB,EAAA,OAAA,EAAhB,gBAAgB,CAAA,IAAA,EAAA,UAAA,EAFf,MAAM,EAAA,CAAA,CAAA;;iFAEP,gBAAgB,EAAA,CAAA;cAH5B,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE;AACb,aAAA;;;;MCCY,oBAAoB,CAAA;AAa/B,IAAA,WAAA,CAA8B,SAAoB,EAAA;QAApB,IAAA,CAAA,SAAS,GAAT,SAAS;AAR7B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE;AAClC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAE;AAIvB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAE;IAEa;IAErD,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IACnD;IAEA,eAAe,GAAA;AACb,QAAA,SAAS,CAAgB,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CACjE,GAAG,CAAC,CAAC,KAAK,KAAI;YACZ,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AACtC,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;YACvB;AACF,QAAA,CAAC,CAAC,EACF,YAAY,CAAC,GAAG,CAAC,EACjB,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CACxB,CAAC,SAAS,CAAC,MAAK;YACf,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACrD,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;YAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE;QAClF;AAEA,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;YAC9B,IAAI,CAAC,eAAe,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QACnD;IACF;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAEA,IAAI,GAAA;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC/C,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;IACvB;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IAC3B;qHAvDW,oBAAoB,EAAA,EAAA,CAAA,iBAAA,CAAAA,IAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEAApB,oBAAoB,EAAA,SAAA,EAAA,CAAA,CAAA,kBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,0BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;YCXjC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAqD,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACjB,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAK/B;YACD,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,MAAA,CAAA;YAAA,EAAA,CAAA,YAAA,EAAW;AAGT,YADF,8BAAkC,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAC+E;;YAAC,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,aAAA,CAAU;YAAA,EAAA,CAAA,YAAA,EAAW;AAGnI,YADF,2BAAK,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,CACoJ;;AAAjG,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,sDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,aAAS,CAAA,CAAA,CAAA,CAAA,CAAC;YACvE,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,UAAA,EAAA,CAAA,CAA+C;YAAC,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,cAAA,CAAW;AAC7D,YAD6D,iBAAW,EAC/D;YAET,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,CAKC;;AADC,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,sDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,UAAM,CAAA,CAAA,CAAA,CAAA,CAAC;YAEhB,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,UAAA,EAAA,CAAA,CAAkD;YAAC,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,gBAAA,CAAa;YAAA,iBAAW,EACpE,EACL,EACF,EACF,EACF;;YA5BD,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,CAA2B;YAK1B,EAAA,CAAA,SAAA,CAAA,CAAA,CAA+B;YAA/B,EAAA,CAAA,UAAA,CAAA,aAAA,EAAA,GAAA,CAAA,eAAA,CAA+B;YAKrB,EAAA,CAAA,SAAA,CAAA,CAAA,CAAgD;YAAhD,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,CAAgD;YAGhD,EAAA,CAAA,SAAA,CAAA,CAAA,CAA6C;AAAqC,YAAlF,sEAA6C,CAAA,UAAA,EAAA,GAAA,CAAA,qBAAA,IAAA,CAAA,GAAA,CAAA,eAAA,CAAA,KAAA,CAAiG;YAMpJ,EAAA,CAAA,SAAA,CAAA,CAAA,CAA4D;AAC5D,YADA,kFAA4D,CAAA,YAAA,EAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,eAAA,CAAA,CAClB;;;iFDTvC,oBAAoB,EAAA,CAAA;cANhC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAGhB,KAAK,EAAA,QAAA,EAAA,2mCAAA,EAAA,MAAA,EAAA,CAAA,udAAA,CAAA,EAAA;4CAGI,QAAQ,EAAA,CAAA;kBAA9B,SAAS;mBAAC,UAAU;YACZ,IAAI,EAAA,CAAA;kBAAZ;YACQ,QAAQ,EAAA,CAAA;kBAAhB;YACQ,qBAAqB,EAAA,CAAA;kBAA7B;YACS,aAAa,EAAA,CAAA;kBAAtB;YACS,YAAY,EAAA,CAAA;kBAArB;YACS,SAAS,EAAA,CAAA;kBAAlB;;kFAPU,oBAAoB,EAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,uDAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;;;;IEP/B,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,8BAAA,EAAA,EAAA,CAA0H;AAAvC,IAAA,EAAA,CAAA,UAAA,CAAA,cAAA,EAAA,SAAA,4HAAA,GAAA,EAAA,MAAA,UAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAgB,+BAAqB,CAAA,CAAA,CAAA,CAAA,CAAC;IAAC,EAAA,CAAA,YAAA,EAA+B;;;IAA1F,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,UAAA,CAAmB;;;IAO5E,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAA8B;IAC5B,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;;IAAA,EAAA,CAAA,YAAA,EAAa;;;IAFD,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,UAAA,CAAiB;IAC3B,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,eAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,UAAA,CAAA,CAAA,EAAA,GAAA,CACF;;;;AANJ,IADF,0CAAgH,CAAA,CAAA,EAAA,WAAA,CACnG;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAuC;;IAAA,EAAA,CAAA,YAAA,EAAY;IAC9D,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAiE;IAA9B,EAAA,CAAA,gBAAA,CAAA,eAAA,EAAA,SAAA,6FAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,EAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,eAAA,EAAA,MAAA,CAAA,KAAA,MAAA,CAAA,eAAA,GAAA,MAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAA6B;IAC9D,EAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,+DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,EAAA,EAAA,EAAA,CAAA,sBAAA,CAKC;AAEL,IADE,iBAAa,EACE;;;IATJ,EAAA,CAAA,SAAA,CAAA,CAAA,CAAuC;IAAvC,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,CAAuC;IACtC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAsB;IAAtB,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,SAAA,CAAsB;IAAC,EAAA,CAAA,gBAAA,CAAA,SAAA,EAAA,MAAA,CAAA,eAAA,CAA6B;IAC9D,EAAA,CAAA,SAAA,EAKC;IALD,EAAA,CAAA,UAAA,CAAA,MAAA,CAAA,QAAA,CAKC;;;IASL,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAuL;;;;IAAlH,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,eAAA,GAAA,OAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAE,KAAA,EAAA,MAAA,CAAA,SAAA,EAAA,MAAA,CAAA,eAAA,CAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAA2G;;;;IAG9K,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAyF;AAAnB,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,0EAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,eAAQ,CAAA,CAAA,CAAA,CAAA,CAAC;IACtF,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;IAAA,EAAA,CAAA,YAAA,EAAS;;;IADP,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,eAAA,GAAA,QAAA,CAAA,EAAA,GAAA,CACF;;;IAGE,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAA4D;IAC1D,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;IAAA,EAAA,CAAA,YAAA,EAAS;;;IAFyB,EAAA,CAAA,UAAA,CAAA,kBAAA,EAAA,IAAA,CAAyB;IACzD,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,eAAA,GAAA,OAAA,CAAA,EAAA,GAAA,CACF;;;IASA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAwE;IACtE,EAAA,CAAA,MAAA,CAAA,CAAA,CAMF;;IAAA,EAAA,CAAA,YAAA,EAAO;;;IANL,EAAA,CAAA,SAAA,EAMF;IANE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,MAAA,CAAA,YAAA,GAAA,0BAAA,GAAA,8BAAA,CAAA,EAAA,GAAA,CAMF;;;IAGE,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;;;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,eAAA,GAAA,QAAA,CAAA,EAAA,GAAA,CACF;;;IACA,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAA2F;;IAA5D,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,EAAA,CAAe;;MClCvC,+BAA+B,CAAA;AAoC1C,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC;IAClE;AAEA,IAAA,WAAA,CACmB,UAAsB,EACtB,gBAAkC,EACT,IAAa,EAAA;QAFtC,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QACS,IAAA,CAAA,IAAI,GAAJ,IAAI;AAlChD,QAAA,IAAA,CAAA,oBAAoB,GAAG,eAAe,CAAC,OAAO;QAU9C,IAAA,CAAA,UAAU,GAAG,EAAE;QACf,IAAA,CAAA,kBAAkB,GAAG,EAAE;QAMf,IAAA,CAAA,gBAAgB,GAA+C,EAAE;QAEhE,IAAA,CAAA,UAAU,GAAG,UAAU;AACvB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;QACvD,IAAA,CAAA,QAAQ,GAA+C,EAAE;QAEhD,IAAA,CAAA,QAAQ,GAA0B,EAAE;QAE7C,IAAA,CAAA,WAAW,GAAG,KAAK;IAUf;IAEJ,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,EAAE;QACrB,IAAG,IAAI,CAAC,aAAa,KAAK,UAAU,CAAC,QAAQ,EAAE;AAC7C,YAAA,IAAI,CAAC,QAAQ,GAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAyB;YACxG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzC;aACK,IAAG,IAAI,CAAC,aAAa,KAAK,UAAU,CAAC,OAAO,EAAE;AACjD,YAAA,IAAI,CAAC,QAAQ,GAAI,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAwB;AACrG,YAAA,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,OAAO;QAClD;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,MAAM,IAAI,CAAC,aAAa,KAAK,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;IACjL;AAEA,IAAA,YAAY,CAAC,GAAwB,EAAA;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAEpG,QAAA,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;YACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAChC;IACF;AAEA,IAAA,uBAAuB,CAAC,KAAsB,EAAA;QAC5C,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,oBAAoB,EAAE;AAC7C,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AACrD,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,KAAK;QACzC;QAEA,MAAM,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,oBAAoB,CAAC;QAC3H,MAAM,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,oBAAoB,CAAC;QAE/G,IAAI,wBAAwB,EAAE;YAC5B,wBAAwB,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW;QAC7F;aAAO;AACL,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrI;QAEA,IAAI,CAAC,UAAU,GAAG,wBAAwB,EAAE,IAAI,IAAI,IAAI,CAAC,WAAW;AACpE,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;QAE5B,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QAErB,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,CAAC,QAAQ,EAAE;YAC9C,IAAI,CAAC,0BAA0B,EAAE;QACnC;aAAO;YACL,IAAI,CAAC,qBAAqB,EAAE;QAC9B;AAEA,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE;IACvC;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;IACjC;AAEA,IAAA,aAAa,CAAC,IAAY,EAAA;AACxB,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;QAEpB,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,kBAAkB,GAAA;AAChB,QAAA,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACnF;IAEA,qBAAqB,GAAA;AACnB,QAAA,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACtF;IAEQ,cAAc,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAChC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;YACrC,IAAI,CAAC,eAAe,GAAG,CAAA,IAAA,EAAO,IAAI,CAAC,aAAa,SAAS;YACzD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,eAAe;YAC7E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,aAAa;YAEzE,IAAI,CAAC,YAAY,EAAE;AACrB,QAAA,CAAC,CAAC;IACJ;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa;AAChC,QAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,UAAU,CAAC;QAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;AAEvI,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,KAAK,EAAE;AAC9B,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC;YAC9C;AAEA,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,WAAW,CAAC,MAAM,CAAC;YAC7F,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;YAC7C;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC;IAC9C;IAEQ,0BAA0B,GAAA;AAChC,QAAA,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC5G;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACtF;AAEQ,IAAA,YAAY,CAAC,QAAkB,EAAA;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,cAAc,KAAI;AAC7E,YAAA,IAAI,CAAC,SAAS,GAAG,cAAc;YAC/B,IAAI,CAAC,eAAe,EAAE;AACxB,QAAA,CAAC,CAAC;IACJ;IAEQ,eAAe,GAAA;QACrB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE;AAC7D,YAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI;QAC1C;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;YACtB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE;YACzE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAC9C;IACF;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,IAAI,GACN,IAAI,CAAC,kBAAkB,KAAK;cACxB,IAAI,CAAC;AACP,cAAE,IAAI,CAAC,WAAW;QAEtB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;YACpC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC;QAC9C;QAEA,MAAM,MAAM,GACV,IAAI,CAAC,aAAa,KAAK,UAAU,CAAC;AAChC,cAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,OAAO,EAAE,IAAI,CAAC,eAAqC,EAAE;cAC5J,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,eAAoC,EAAE,CAAC;AAEjI,QAAA,OAAO;AACJ,aAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;AAC7C,aAAA,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACzC;IAEQ,kBAAkB,GAAA;QACxB,OAAO;AACL,YAAA,IAAI,EAAE,CAAC,QAAgB,KAAI;gBACzB,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AAClD,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;gBAC1B;AAEA,gBAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;AAC1B,gBAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;gBAC5B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE;AACzE,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC;AAC3C,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAC7C,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBACvB,IAAI,CAAC,cAAc,EAAE;YACvB,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAwB,KAAI;gBAClC,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,OAAO,EAAE;AACxC,oBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,IAAI,CAAC,aAAa,CAAC;oBAC/F,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC;oBAC9C;gBACF;gBAEA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAC9C;SACD;IACH;AA/NW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,SAAA,uCAAA,CAAA,iBAAA,EAAA,EAAA,OAAA,KAAA,iBAAA,IAAA,+BAA+B,sGA2ChC,eAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEA3Cd,+BAA+B,EAAA,SAAA,EAAA,CAAA,CAAA,+BAAA,CAAA,CAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,aAAA,EAAA,EAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,iCAAA,EAAA,YAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,eAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,aAAA,CAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,OAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,SAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,UAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,wCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;YDpB5C,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAqB;YAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA2C;;YAAA,EAAA,CAAA,YAAA,EAAK;YACrE,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAwB;YACtB,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAiE;;AAIjE,YAFA,kIAA0H,CAAA,CAAA,EAAA,yDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,CAEV;YAchH,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,CAA8T;YAApH,kLAAiB,GAAA,CAAA,aAAA,CAAA,MAAA,CAAqB,CAAA,CAAA,CAAA,CAAA,CAAC,uJAAc,GAAA,CAAA,kBAAA,EAAoB,CAAA,CAAA,CAAA,CAAA,CAAC,CAAA,cAAA,EAAA,SAAA,iFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAiB,GAAA,CAAA,qBAAA,EAAuB,CAAA,CAAA,CAAA,CAAA,CAAC;AAC/T,YADgU,iBAAmB,EAC7U;YACN,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAoD;YAClD,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAiL;YAEjL,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAwE;AAKtE,YAJA,yFAAyF,CAAA,EAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAI/D;YAM1B,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAKC;AAFC,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,iEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,mBAAe,CAAA,CAAA,CAAA,CAAA,CAAC;YAGzB,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAwE,CAAA,EAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAS3C,CAAA,EAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAGgD;YAC/E,EAAA,CAAA,YAAA,EAAS,EACL,EACF;;;;YAzDe,EAAA,CAAA,SAAA,EAA2C;YAA3C,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,EAAA,EAAA,GAAA,CAAA,eAAA,GAAA,OAAA,CAAA,CAA2C;YAE3D,EAAA,CAAA,SAAA,CAAA,CAAA,CAAyD;YAAzD,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,EAAA,EAAA,GAAA,CAAA,eAAA,GAAA,aAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAAyD;YAEV,EAAA,CAAA,SAAA,CAAA,CAAA,CAAW;YAAX,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,QAAA,CAAW;YAE5C,EAAA,CAAA,SAAA,EAAiB;YAAjB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,WAAA,CAAiB;YAchB,EAAA,CAAA,SAAA,EAAwD;YAAxD,EAAA,CAAA,WAAA,CAAA,UAAA,EAAA,GAAA,CAAA,aAAA,KAAA,GAAA,CAAA,UAAA,CAAA,QAAA,CAAwD;YAAC,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,UAAA,KAAA,EAAA,GAAA,GAAA,CAAA,UAAA,GAAA,GAAA,CAAA,WAAA,CAAqD,CAAA,UAAA,EAAA,GAAA,CAAA,SAAA,IAAA,CAAA,GAAA,CAAA,SAAA,CAAqC,CAAA,uBAAA,EAAA,CAAA,GAAA,CAAA,QAAA,CAAoC;YAGnM,EAAA,CAAA,SAAA,CAAA,CAAA,CAAkC;YAAlC,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,4BAAA,CAAkC;YAEnC,EAAA,CAAA,SAAA,EAA8C;YAA9C,EAAA,CAAA,WAAA,CAAA,QAAA,EAAA,CAAA,GAAA,CAAA,4BAAA,CAA8C;YACxC,EAAA,CAAA,SAAA,EAAiB;AAAA,YAAjB,oCAAiB,CAAA,UAAA,EAAA,cAAA,CAAgB;YAcxC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAuB;YAAvB,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,GAAA,CAAA,UAAA,CAAuB;YAEhB,EAAA,CAAA,SAAA,EAA4C;AAAA,YAA5C,mEAA4C,CAAA,UAAA,EAAA,iBAAA,CAAmB;YAYxD,EAAA,CAAA,SAAA,CAAA,CAAA,CAAe;YAAf,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,SAAA,CAAe;;;iFClCtB,+BAA+B,EAAA,CAAA;cAN3C,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,cAG7B,KAAK,EAAA,QAAA,EAAA,ynFAAA,EAAA,MAAA,EAAA,CAAA,gqCAAA,CAAA,EAAA;;sBA6ChB,MAAM;uBAAC,eAAe;;kFA3Cd,+BAA+B,EAAA,EAAA,SAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,qFAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;ACpBrC,MAAM,SAAS,GAAG,CAAA;;;;;CAKxB;AACM,MAAM,QAAQ,GAAG,CAAA;;;;;;CAMvB;;;;;;;;MCDY,yBAAyB,CAAA;AANtC,IAAA,WAAA,GAAA;AAOE,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;AAC/B,IAAA;0HAFY,yBAAyB,GAAA,CAAA,CAAA,CAAA,CAAA;oEAAzB,yBAAyB,EAAA,SAAA,EAAA,CAAA,CAAA,wBAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,kCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YCXtC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAqB;YAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA4B;;YAAA,EAAA,CAAA,YAAA,EAAK;YACtD,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,oBAAA,CAAoB;YAClB,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAsE;;YACxE,EAAA,CAAA,YAAA,EAAqB;AAEnB,YADF,0CAAoB,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CACiC;YACjD,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;AACF,YADE,iBAAS,EACU;;YARA,EAAA,CAAA,SAAA,EAA4B;YAA5B,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,GAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAA4B;YAExB,EAAA,CAAA,SAAA,CAAA,CAAA,CAA0C;YAA1C,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,GAAA,CAAA,IAAA,CAAA,WAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAA0C;YAI/D,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;YADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,GAAA,CAAA,IAAA,CAAA,KAAA,CAAA,EAAA,GAAA,CACF;4BDAY,eAAe,EAAAF,IAAA,CAAA,cAAA,EAAAA,IAAA,CAAA,cAAA,EAAAA,IAAA,CAAA,gBAAA,EAAAA,IAAA,CAAA,gBAAA,EAAE,eAAe,EAAAC,IAAA,CAAA,SAAA,EAAE,aAAa,CAAA,EAAA,MAAA,EAAA,CAAA,kOAAA,CAAA,EAAA,CAAA,CAAA;;iFAIhD,yBAAyB,EAAA,CAAA;cANrC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,WACzB,CAAC,eAAe,EAAE,eAAe,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,4VAAA,EAAA,MAAA,EAAA,CAAA,8MAAA,CAAA,EAAA;;kFAIjD,yBAAyB,EAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MELzB,uBAAuB,CAAA;AAHpC,IAAA,WAAA,GAAA;AAIE,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAA+C,SAAS,mDAAC;QAEzE,IAAA,CAAA,KAAK,GAAuC,EAAE;AAwB/C,IAAA;AAtBC,IAAA,kBAAkB,CAAC,SAA2C,EAAA;QAC5D,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAClC;QACF;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB,IAAI,CAAC,eAAe,EAAE;QACxB;IACF;IAEA,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B;QACF;QAEA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;QACtC,IAAI,CAAC,WAAW,EAAE;YAChB;QACF;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QAC7B,WAAW,CAAC,iBAAiB,EAAE;IACjC;wHA1BW,uBAAuB,GAAA,CAAA,CAAA,CAAA,CAAA;uEAAvB,uBAAuB,EAAA,OAAA,EAAvB,uBAAuB,CAAA,IAAA,EAAA,UAAA,EAFtB,MAAM,EAAA,CAAA,CAAA;;iFAEP,uBAAuB,EAAA,CAAA;cAHnC,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA;;;MCSY,gCAAgC,CAAA;AAL7C,IAAA,WAAA,GAAA;QAWU,IAAA,CAAA,OAAO,GAAG,CAAC;QACX,IAAA,CAAA,QAAQ,GAAG,GAAG;AAGd,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AAC3B,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACjD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAE;AAGjC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,yDAAC;QAC7B,IAAA,CAAA,aAAa,GAAG,KAAK;AA+DrB,IAAA;AArES,IAAA,OAAO;AACP,IAAA,eAAe;AACf,IAAA,QAAQ;IAMjB,QAAQ,GAAA;QACP,UAAU,CAAC,MAAK;YACf,IAAI,CAAC,gBAAgB,EAAE;AACxB,QAAA,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC;IACjB;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IACzB;IAEA,iBAAiB,GAAA;AAChB,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,gBAAgB,CAAA,CAAE,CAAC;QACzE,IAAI,CAAC,aAAa,EAAE;YACnB;QACD;QAEA,IAAI,gBAAgB,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,0BAA0B,EAAE,UAAU,EAAE;AAClF,YAAA,aAAc,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAC;QACtE;QACA,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,YAAA,MAAM,YAAY,GAAG,aAAa,CAAC,qBAAqB,EAAE;YAC1D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE;AAC7D,gBAAA,IAAI,EAAE;oBACL,KAAK,EAAE,IAAI,CAAC,oBAAoB;oBAChC,WAAW,EAAE,IAAI,CAAC,0BAA0B;oBAC5C,KAAK,EAAE,IAAI,CAAC,oBAAoB;oBAChC,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;AACnD,iBAAA;AACD,gBAAA,QAAQ,EAAE;AACT,oBAAA,IAAI,EAAE,CAAA,EAAG,gBAAgB,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,0BAA0B,EAAE,IAAI,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAA,CAAE;AACtK,oBAAA,GAAG,EAAE,CAAA,EAAG,gBAAgB,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,0BAA0B,EAAE,GAAG,GAAG,IAAI,CAAC,0BAA0B,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,GAAG,EAAE,IAAI,IAAI,CAAA;AACrJ,iBAAA;AACD,gBAAA,QAAQ,EAAE,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,EAAA;AAC1B,aAAA,CAAC;YAEF,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAK;gBAC3C,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AAC3C,gBAAA,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE;AACvC,YAAA,CAAC,CAAC;;QAEH,CAAC,EAAE,gBAAgB,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,0BAA0B,EAAE,UAAU,GAAG,GAAG,GAAG,CAAC,CAAC;IAC5F;IAEQ,gBAAgB,GAAA;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC;AAEzG,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAC9C;IACD;IAEQ,cAAc,GAAA;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAChC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC;QAC1D;IACD;iIA9EY,gCAAgC,GAAA,CAAA,CAAA,CAAA,CAAA;oEAAhC,gCAAgC,EAAA,SAAA,EAAA,CAAA,CAAA,gCAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,yCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAH/B,YAAY,EAAE,eAAe,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;iFAG9B,gCAAgC,EAAA,CAAA;cAL5C,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,gCAAgC;AAC1C,gBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,CAAC;AACxC,gBAAA,QAAQ,EAAE;AACb,aAAA;gBAES,oBAAoB,EAAA,CAAA;kBAA5B;YACQ,0BAA0B,EAAA,CAAA;kBAAlC;YACQ,oBAAoB,EAAA,CAAA;kBAA5B;YACQ,gBAAgB,EAAA,CAAA;kBAAxB;YACQ,sBAAsB,EAAA,CAAA;kBAA9B;YACQ,OAAO,EAAA,CAAA;kBAAf;YACQ,QAAQ,EAAA,CAAA;kBAAhB;YACQ,0BAA0B,EAAA,CAAA;kBAAlC;;kFARW,gCAAgC,EAAA,EAAA,SAAA,EAAA,kCAAA,EAAA,QAAA,EAAA,2FAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCLhC,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;AASY,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAc;AAK1D,IAAA;IAHC,SAAS,GAAA;QACP,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;IAC9C;oHAPW,mBAAmB,GAAA,CAAA,CAAA,CAAA,CAAA;oEAAnB,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,iBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,4BAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,wBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,4BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;YCThC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAOC;AADA,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,oDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,eAAW,CAAA,CAAA,CAAA,CAAA,CAAC;YAErB,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAA6C;YAC7C,EAAA,CAAA,MAAA,CAAA,CAAA,CACD;;YAAA,EAAA,CAAA,YAAA,EAAS;YAET,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,CAAA,CAOkC;;;YAdjC,EAAA,CAAA,WAAA,CAAA,0BAAA,EAAA,mBAAA,IAAA,IAAA,GAAA,IAAA,GAAA,mBAAA,CAAA,aAAA,EAAA,CAAoE;YADpE,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,CAAA,GAAA,CAAA,kBAAA,CAAgC;YAItB,EAAA,CAAA,SAAA,EAAuB;YAAvB,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,WAAA,CAAuB;YACjC,EAAA,CAAA,SAAA,EACD;YADC,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,IAAA,CACD;YAIC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAwD;AAIxD,YAJA,sEAAwD,CAAA,4BAAA,EAAA,qCAAA,CACY,CAAA,sBAAA,EAAA,+BAAA,CACZ,mCACtB,CAAA,wBAAA,EAAA,SAAA,GAAA,GAAA,CAAA,yBAAA,CAC8B;;;iFDTpD,mBAAmB,EAAA,CAAA;cAN/B,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAGf,KAAK,EAAA,QAAA,EAAA,uvBAAA,EAAA,MAAA,EAAA,CAAA,+FAAA,CAAA,EAAA;gBAGV,kBAAkB,EAAA,CAAA;kBAA1B;YACQ,yBAAyB,EAAA,CAAA;kBAAjC;YACS,cAAc,EAAA,CAAA;kBAAvB;;kFAHU,mBAAmB,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MEAnB,oBAAoB,CAAA;AANjC,IAAA,WAAA,GAAA;AASY,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAc;AAK1D,IAAA;IAHC,SAAS,GAAA;QACP,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IAC/C;qHAPW,oBAAoB,GAAA,CAAA,CAAA,CAAA,CAAA;oEAApB,oBAAoB,EAAA,SAAA,EAAA,CAAA,CAAA,kBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,4BAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,UAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,6BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;YCTjC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAOC;AADA,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,qDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,eAAW,CAAA,CAAA,CAAA,CAAA,CAAC;YAErB,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAA4C;YAC5C,EAAA,CAAA,MAAA,CAAA,CAAA,CACD;;YAAA,EAAA,CAAA,YAAA,EAAS;YAET,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,CAAA,CAQkC;;;YAfjC,EAAA,CAAA,WAAA,CAAA,yBAAA,EAAA,kBAAA,IAAA,IAAA,GAAA,IAAA,GAAA,kBAAA,CAAA,aAAA,EAAA,CAAkE;YADlE,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,CAAA,GAAA,CAAA,2BAAA,CAAyC;YAI/B,EAAA,CAAA,SAAA,EAAsB;YAAtB,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,UAAA,CAAsB;YAChC,EAAA,CAAA,SAAA,EACD;YADC,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,EAAA,EAAA,cAAA,CAAA,EAAA,IAAA,CACD;YAIC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAyD;YAAzD,uEAAyD,CAAA,4BAAA,EAAA,sCAAA,CACY,CAAA,sBAAA,EAAA,gCAAA,CACZ,CAAA,kBAAA,EAAA,cAAA,CACtB,CAAA,wBAAA,EAAA,UAAA,GAAA,GAAA,CAAA,yBAAA,CAC8B,CAAA,UAAA,EAAA,GAAA,CACjD;;;iFDVJ,oBAAoB,EAAA,CAAA;cANhC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAGhB,KAAK,EAAA,QAAA,EAAA,2xBAAA,EAAA,MAAA,EAAA,CAAA,8FAAA,CAAA,EAAA;gBAGV,2BAA2B,EAAA,CAAA;kBAAnC;YACQ,yBAAyB,EAAA,CAAA;kBAAjC;YACS,cAAc,EAAA,CAAA;kBAAvB;;kFAHU,oBAAoB,EAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,2DAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;;;IERhC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAsJ;;IACrJ,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,CAA6J;AAAxC,IAAA,EAAA,CAAA,UAAA,CAAA,gBAAA,EAAA,SAAA,qEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAkB,2BAAoB,CAAA,CAAA,CAAA,CAAA,CAAC;AAC7J,IAD8J,iBAAkB,EAC1K;;;AAFoD,IAA9B,2CAA6B,CAAA,YAAA,EAAA,CAAA,MAAA,CAAA,kBAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,mCAAA,CAAA,GAAA,EAAA,CAA4F;IACnI,EAAA,CAAA,SAAA,CAAA,CAAA,CAA2C;AAAC,IAA5C,gEAA2C,CAAA,2BAAA,EAAA,MAAA,CAAA,yBAAA,CAAwD;;;;IAGrH,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAiK;;IAChK,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,CAIC;AADA,IAAA,EAAA,CAAA,UAAA,CAAA,gBAAA,EAAA,SAAA,sEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAkB,2BAAoB,CAAA,CAAA,CAAA,CAAA,CAAC;AAEzC,IADE,iBAAmB,EACf;;;AANqD,IAA9B,2CAA6B,CAAA,YAAA,EAAA,CAAA,MAAA,CAAA,2BAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,oCAAA,CAAA,GAAA,EAAA,CAAsG;IAE9J,EAAA,CAAA,SAAA,CAAA,CAAA,CAA6D;AAC7D,IADA,kFAA6D,CAAA,2BAAA,EAAA,MAAA,CAAA,yBAAA,CACN;;MCQ7C,YAAY,CAAA;AAgBvB,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,IAAI,CAAC,IAAI;IAClB;AAEA,IAAA,IAAI,2BAA2B,GAAA;AAC7B,QAAA,OAAO,CAAC,IAAI,CAAC,4BAA4B,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9K;AAEA,IAAA,WAAA,CACS,MAAiB,EACP,WAAwB,EACxB,eAAyC,EAAA;QAFnD,IAAA,CAAA,MAAM,GAAN,MAAM;QACI,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,eAAe,GAAf,eAAe;QAvBzB,IAAA,CAAA,cAAc,GAAG,IAAI;QACrB,IAAA,CAAA,eAAe,GAAG,IAAI;QACtB,IAAA,CAAA,kBAAkB,GAAG,KAAK;QAC1B,IAAA,CAAA,mBAAmB,GAAG,KAAK;AAK1B,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAQ;QAE5C,IAAA,CAAA,SAAS,GAAG,UAAU;AAe7B,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC;IACvC;AAEA,IAAA,YAAY,CAAC,MAAkB,EAAA;AAC7B,QAAA,IAAI,cAAkC;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC/C,cAAc,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QACtC;aAAO;AACL,YAAA,cAAc,GAAG,IAAI,CAAC,IAAI;QAC5B;AACA,QAAA,MAAM,IAAI,GAAY;AACpB,YAAA,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,IAAI,CAAC,QAAS;AACxB,YAAA,MAAM,EAAE,MAAM;YACd,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SACxC;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;AAChD,YAAA,UAAU,EAAE,mBAAmB;AAC/B,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,KAAK,EAAE,MAAM;YACb;AACD,SAAA,CAAC;IACJ;6GAvDW,YAAY,EAAA,EAAA,CAAA,iBAAA,CAAAD,IAAA,CAAA,SAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA0B,WAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAC,wBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;oEAAZ,YAAY,EAAA,SAAA,EAAA,CAAA,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,oBAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,2BAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,qBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YDhBzB,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAyB;AAKxB,YAJA,6DAAsJ,CAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAIW;YAOlK,EAAA,CAAA,YAAA,EAAM;;YAXC,EAAA,CAAA,SAAA,EAAoB;YAApB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAoB;YAIpB,EAAA,CAAA,SAAA,EAAqB;YAArB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,eAAA,CAAqB;;;iFCWf,YAAY,EAAA,CAAA;cANxB,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,cAGP,KAAK,EAAA,QAAA,EAAA,u0BAAA,EAAA,MAAA,EAAA,CAAA,sCAAA,CAAA,EAAA;uGAGV,IAAI,EAAA,CAAA;kBAAZ;YACQ,QAAQ,EAAA,CAAA;kBAAhB;YACQ,4BAA4B,EAAA,CAAA;kBAApC;YACQ,cAAc,EAAA,CAAA;kBAAtB;YACQ,eAAe,EAAA,CAAA;kBAAvB;YACQ,kBAAkB,EAAA,CAAA;kBAA1B;YACQ,mBAAmB,EAAA,CAAA;kBAA3B;YACQ,yBAAyB,EAAA,CAAA;kBAAjC;YACQ,gBAAgB,EAAA,CAAA;kBAAxB;YACQ,eAAe,EAAA,CAAA;kBAAvB;YAES,gBAAgB,EAAA,CAAA;kBAAzB;;kFAZU,YAAY,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MC8BZ,SAAS,CAAA;0GAAT,SAAS,GAAA,CAAA,CAAA,CAAA,CAAA;mEAAT,SAAS,EAAA,CAAA,CAAA;uEAjBlB,YAAY;YACZ,eAAe;YACf,aAAa;YACb,eAAe;YACf,eAAe;YACf,eAAe;YACf,WAAW;YACX,mBAAmB;YACnB,eAAe;YACf,yBAAyB;YACzB,gBAAgB;YAChB,gBAAgB;YAChB,wBAAwB;YACxB,gCAAgC,CAAA,EAAA,CAAA,CAAA;;iFAIvB,SAAS,EAAA,CAAA;cA1BrB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE;oBACZ,YAAY;oBACZ,oBAAoB;oBACpB,+BAA+B;oBAC/B,mBAAmB;oBACnB;AACD,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP,YAAY;oBACZ,eAAe;oBACf,aAAa;oBACb,eAAe;oBACf,eAAe;oBACf,eAAe;oBACf,WAAW;oBACX,mBAAmB;oBACnB,eAAe;oBACf,yBAAyB;oBACzB,gBAAgB;oBAChB,gBAAgB;oBAChB,wBAAwB;oBACxB;AACD,iBAAA;gBACD,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,aAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,SAAS,mBAxBlB,YAAY;QACZ,oBAAoB;QACpB,+BAA+B;QAC/B,mBAAmB;AACnB,QAAA,oBAAoB,aAGpB,YAAY;QACZ,eAAe;QACf,aAAa;QACb,eAAe;QACf,eAAe;QACf,eAAe;QACf,WAAW;QACX,mBAAmB;QACnB,eAAe;QACf,yBAAyB;QACzB,gBAAgB;QAChB,gBAAgB;QAChB,wBAAwB;AACxB,QAAA,gCAAgC,aAExB,YAAY,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCvCX,cAAc,CAAA;AAH3B,IAAA,WAAA,GAAA;QAIE,IAAA,CAAA,MAAM,GAAG,KAAK;AAef,IAAA;AAXC,IAAA,WAAW,CAAC,OAAyC,EAAA;AACnD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAElB,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO;IAChC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AAEnB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;IAC7B;+GAfW,cAAc,GAAA,CAAA,CAAA,CAAA,CAAA;uEAAd,cAAc,EAAA,OAAA,EAAd,cAAc,CAAA,IAAA,EAAA,UAAA,EAFb,MAAM,EAAA,CAAA,CAAA;;iFAEP,cAAc,EAAA,CAAA;cAH1B,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE;AACb,aAAA;;;MCMY,gBAAgB,CAAA;AAC3B,IAAA,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;AAExC,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM;IACpC;AAEA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe;IAC7C;iHATW,gBAAgB,GAAA,CAAA,CAAA,CAAA,CAAA;oEAAhB,gBAAgB,EAAA,SAAA,EAAA,CAAA,CAAA,aAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,yBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YCV7B,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,SAAA,EAAA,CAAA,CAA2D;YACzD,EAAA,CAAA,kBAAA,CAAA,CAAA,EAAA,CAAA,CAA2D;YAC7D,EAAA,CAAA,YAAA,EAAU;;YAFD,EAAA,CAAA,WAAA,CAAA,UAAA,EAAA,GAAA,CAAA,MAAA,CAAyB;YAClB,EAAA,CAAA,SAAA,EAA6B;YAA7B,EAAA,CAAA,UAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,QAAA,CAA6B;4BDK/B,YAAY,EAAA3B,IAAA,CAAA,gBAAA,CAAA,EAAA,MAAA,EAAA,CAAA,mYAAA,CAAA,EAAA,CAAA,CAAA;;iFAIb,gBAAgB,EAAA,CAAA;cAN5B,SAAS;2BACI,aAAa,EAAA,OAAA,EACd,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,sJAAA,EAAA,MAAA,EAAA,CAAA,4UAAA,CAAA,EAAA;;kFAId,gBAAgB,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MEHhB,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;QAIU,IAAA,CAAA,MAAM,GAAY,EAAE;AAE5B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAW;AA+BjC,IAAA;IA7BC,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;IACpC;;AAGA,IAAA,SAAS,CAAC,OAAe,EAAE,cAAuB,EAAE,kBAAwB,EAAA;QAC1E,MAAM,qBAAqB,GAAG,GAAG;AACjC,QAAA,MAAM,KAAK,GAAU;AACnB,YAAA,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;YACxB,OAAO;YACP;SACD;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAE9B,UAAU,CAAC,MAAK;AACd,YAAA,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;QAC7D,CAAC,EAAE,CAAC,cAAc,IAAI,IAAI,IAAI,qBAAqB,CAAC;QAEpD,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3B,QAAA,CAAC,EAAE,cAAc,IAAI,IAAI,CAAC;IAC5B;AAEA,IAAA,UAAU,CAAC,EAAU,EAAA;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAChC;6GAjCW,YAAY,GAAA,CAAA,CAAA,CAAA,CAAA;uEAAZ,YAAY,EAAA,OAAA,EAAZ,YAAY,CAAA,IAAA,EAAA,UAAA,EAFX,MAAM,EAAA,CAAA,CAAA;;iFAEP,YAAY,EAAA,CAAA;cAHxB,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA;;;;;;ACHG,IADF,8BAAmB,CAAA,CAAA,EAAA,MAAA,CACX;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA0D;;IAAA,EAAA,CAAA,YAAA,EAAO;IACvE,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAuD;AAA/B,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,qDAAA,GAAA,EAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,8BAAoB,CAAA,CAAA,CAAA,CAAA,CAAC;IACpD,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,CAAU;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,OAAA,CAAK;IAAA,EAAA,CAAA,YAAA,EAAW,EACnB,EACL;;;IAJE,EAAA,CAAA,SAAA,CAAA,CAAA,CAA0D;IAA1D,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,QAAA,CAAA,OAAA,EAAA,QAAA,IAAA,IAAA,GAAA,IAAA,GAAA,QAAA,CAAA,kBAAA,CAAA,CAA0D;;MCWvD,cAAc,CAAA;AAN3B,IAAA,WAAA,GAAA;QAOE,IAAA,CAAA,MAAM,GAAY,EAAE;AAEpB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;AAW9B,IAAA;AAXC,IAAA,MAAM;IAEN,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC;AAClC,YAAA,IAAI,EAAE,CAAC,MAAM,MAAM,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzC,SAAA,CAAC;IACJ;AAEA,IAAA,UAAU,CAAC,EAAU,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5B;+GAbW,cAAc,GAAA,CAAA,CAAA,CAAA,CAAA;oEAAd,cAAc,EAAA,SAAA,EAAA,CAAA,CAAA,WAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,uBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YDd3B,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAA6B;YAC3B,EAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAAW,YAAA,CAOC;YACH,EAAA,CAAA,YAAA,EAAM;;YARJ,EAAA,CAAA,SAAA,EAOC;YAPD,EAAA,CAAA,UAAA,CAAA,GAAA,CAAA,MAAA,CAOC;ACEW,QAAA,CAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAAX,EAAA,CAAA,OAAA,EAAE,eAAe,sBAAE,eAAe,EAAA4B,EAAA,CAAA,aAAA,CAAA,EAAA,MAAA,EAAA,CAAA,g4BAAA,CAAA,EAAA,CAAA,CAAA;;iFAI9D,cAAc,EAAA,CAAA;cAN1B,SAAS;2BACI,WAAW,EAAA,OAAA,EACZ,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,gVAAA,EAAA,MAAA,EAAA,CAAA,yuBAAA,CAAA,EAAA;;kFAI/D,cAAc,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;ICdf;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB,IAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB,IAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,aAA0B;AAC1B,IAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,cAA4B;AAC5B,IAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,eAA6B;AAC7B,IAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,eAA6B;AAC7B,IAAA,gBAAA,CAAA,cAAA,CAAA,GAAA,gBAA+B;AAC/B,IAAA,gBAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAChC,IAAA,gBAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAChC,IAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC;AAClC,IAAA,gBAAA,CAAA,iBAAA,CAAA,GAAA,kBAAoC;AACpC,IAAA,gBAAA,CAAA,oBAAA,CAAA,GAAA,sBAA2C;AAC3C,IAAA,gBAAA,CAAA,oBAAA,CAAA,GAAA,qBAA0C;AAC1C,IAAA,gBAAA,CAAA,yBAAA,CAAA,GAAA,2BAAqD;AACvD,CAAC,EAfW,gBAAgB,KAAhB,gBAAgB,GAAA,EAAA,CAAA,CAAA;;MCEf,gCAAgC,GAAG,IAAI,cAAc,CAAC,kCAAkC;;ACS/F,MAAO,0BAA2B,SAAQ,aAAa,CAAA;AAClD,IAAA,iBAAiB;AAQjB,IAAA,OAAO;AAEhB,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AAXA,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC5C,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAIb,IAAA,CAAA,OAAO,GAAG,UAAU;QACpB,IAAA,CAAA,KAAK,GAAG,OAAO;QAEvB,IAAA,CAAA,OAAO,GAAG,MAAM,CAAmC,gCAAgC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAIjH;AAES,IAAA,WAAW,CAAC,QAA6B,EAAA;AAChD,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;QACjC;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAEvC,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;QAClD,IAAI,KAAK,EAAE;AACT,YAAA,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B;QAEA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,KAAI;AACvH,YAAA,IAAI,eAAe,GAAW,CAAA,EAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACzF,YAAA,IAAI,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;AAC9B,gBAAA,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,gBAAgB,IAAI;sBAChD,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA,GAAA,EAAM,eAAe,CAAA;sBAC3C,GAAG,eAAe,CAAA,GAAA,EAAM,YAAY,CAAC,KAAK,CAAC,CAAA,CAAE;YACnD;AACF,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC;AACtC,QAAA,CAAC,CAAC;IACJ;2HApCW,0BAA0B,GAAA,CAAA,CAAA,CAAA,CAAA;uEAA1B,0BAA0B,EAAA,OAAA,EAA1B,0BAA0B,CAAA,IAAA,EAAA,UAAA,EAFzB,MAAM,EAAA,CAAA,CAAA;;iFAEP,0BAA0B,EAAA,CAAA;cAHtC,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE;AACb,aAAA;;;ACNM,MAAM,0BAA0B,GAAG,CAAC,oBAA+B,KAAgB;AACzF,IAAA,MAAM,wBAAwB,GAAe;AAC5C,QAAA;AACC,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,QAAQ,EAAE,0BAA0B;AACpC,SAAA;KACD;IAED,IAAI,oBAAoB,EAAE;AACzB,QAAA,wBAAwB,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACpD;AAEA,IAAA,OAAO,wBAAwB;AAChC;;MCVa,gCAAgC,CAAA;AAC3C,IAAA,WAAA,GAAA,EAAe;AAEf,IAAA,MAAM,CAAC,MAAuC,EAAA;AAC5C,QAAA,IAAI,MAAM,CAAC,iBAAiB,EAAE;;YAE5B,OAAQ,MAAM,CAAC,iBAAyB,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,GAAG;QACnE;QACA,OAAO,MAAM,CAAC,GAAG;IACnB;iIATW,gCAAgC,GAAA,CAAA,CAAA,CAAA,CAAA;uEAAhC,gCAAgC,EAAA,OAAA,EAAhC,gCAAgC,CAAA,IAAA,EAAA,UAAA,EAH/B,MAAM,EAAA,CAAA,CAAA;;iFAGP,gCAAgC,EAAA,CAAA;cAJ5C,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE;AACb,aAAA;;;;ACIO,IADF,qCAAqC,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CACP;IAC1B,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;AACF,IADE,iBAAO,EACI;;;IAJD,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,WAAA,CAAA,KAAA,CAAwB;IAEhC,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,WAAA,CAAA,WAAA,EAAA,GAAA,CACF;;ACHR;;;AAGE;MAeW,6BAA6B,CAAA;AAd1C,IAAA,WAAA,GAAA;AAeW,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACrC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC;AAG1C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW;AAa/C,IAAA;AAlBU,IAAA,KAAK;AACL,IAAA,UAAU;AACV,IAAA,UAAU;IAKnB,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS;IACvC;IAEA,IAAI,GAAA;QACF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAC9C;8HAfW,6BAA6B,GAAA,CAAA,CAAA,CAAA,CAAA;oEAA7B,6BAA6B,EAAA,SAAA,EAAA,CAAA,CAAA,sBAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,aAAA,CAAA,EAAA,CAAA,YAAA,EAAA,SAAA,EAAA,CAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,OAAA,EAAA,KAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,eAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,sCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YD1B1C,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAqB;YAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAyC;;YAAA,EAAA,CAAA,YAAA,EAAK;AAEjE,YADF,8BAAwB,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CACC;YAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA+C;;YAAA,EAAA,CAAA,YAAA,EAAI;AAGxE,YADF,yCAA8D,CAAA,CAAA,EAAA,WAAA,CACjD;YAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA+C;;YAAA,EAAA,CAAA,YAAA,EAAY;YACtE,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,YAAA,EAAA,CAAA,CAA2C;YAA/B,EAAA,CAAA,gBAAA,CAAA,eAAA,EAAA,SAAA,2EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,KAAA,GAAA,CAAA,gBAAA,GAAA,MAAA,CAAA,CAAA,CAAA,OAAA,MAAA,CAAA,CAAA,CAAA,CAA8B;YACxC,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAMC;;;YACH,EAAA,CAAA,YAAA,EAAa,EACE,EACb;AAGJ,YADF,8CAAgC,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,CAC6B;YACzD,EAAA,CAAA,MAAA,CAAA,EAAA,CACF;;YAAA,EAAA,CAAA,YAAA,EAAS;YACT,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,CAAwD;AAAjB,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,+DAAA,GAAA,EAAA,OAAS,UAAM,CAAA,CAAA,CAAA,CAAC;YACrD,EAAA,CAAA,MAAA,CAAA,EAAA,CACF;;AACF,YADE,iBAAS,EACU;;YAzBA,EAAA,CAAA,SAAA,EAAyC;YAAzC,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,CAAA,CAAyC;YAErC,EAAA,CAAA,SAAA,CAAA,CAAA,CAA+C;YAA/C,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,CAAA,CAA+C;YAGzD,EAAA,CAAA,SAAA,CAAA,CAAA,CAA+C;YAA/C,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,6BAAA,CAAA,CAA+C;YAC9C,EAAA,CAAA,SAAA,CAAA,CAAA,CAA8B;YAA9B,EAAA,CAAA,gBAAA,CAAA,SAAA,EAAA,GAAA,CAAA,gBAAA,CAA8B;YACxC,EAAA,CAAA,SAAA,EAMC;YAND,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA,CAMC;YAOH,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;YADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,wBAAA,CAAA,EAAA,GAAA,CACF;YAEE,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;YADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,GAAA,CACF;ACJM,QAAA,CAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,eAAe,0FACf,eAAe,EAAA3B,IAAA,CAAA,SAAA,EACf,eAAe,EAAA2B,EAAA,CAAA,YAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,CAAA,SAAA,EACf,WAAW,sCANX,oBAAoB;YACpB,SAAS;YACT,aAAa,CAAA,EAAA,MAAA,EAAA,CAAA,kJAAA,CAAA,EAAA,CAAA,CAAA;;iFAOR,6BAA6B,EAAA,CAAA;cAdzC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EAGvB;oBACL,oBAAoB;oBACpB,SAAS;oBACT,aAAa;oBACb,eAAe;oBACf,eAAe;oBACf,eAAe;oBACf;AACH,iBAAA,EAAA,QAAA,EAAA,iiCAAA,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA;;kFAEQ,6BAA6B,EAAA,EAAA,SAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,4FAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;;;ICtBzC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAA2E;AAAlB,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,qEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,cAAO,CAAA,CAAA,CAAA,CAAA,CAAC;IACzE,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,CAAU;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,OAAA,CAAK;AAChB,IADgB,iBAAW,EAClB;;;;IAIP,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAqG;AAAzB,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,6DAAA,GAAA,EAAA,MAAA,SAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,SAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,iBAAc,CAAA,CAAA,CAAA,CAAA,CAAC;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CAA8B;;IAAA,EAAA,CAAA,YAAA,EAAS;;;IAAvC,EAAA,CAAA,SAAA,EAA8B;IAA9B,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,SAAA,CAAA,KAAA,CAAA,CAA8B;;MCGzH,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;QAQW,IAAA,CAAA,eAAe,GAAG,IAAI;AAErB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAQ;AAKhD,IAAA;IAHC,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;IACxB;uHARW,sBAAsB,GAAA,CAAA,CAAA,CAAA,CAAA;oEAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,oBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YDbnC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAgC;YAC/B,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAsC;;YAEtC,EAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAuB;YAMtB,EAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,qCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAEA;YACF,EAAA,CAAA,YAAA,EAAM;;YAXF,EAAA,CAAA,SAAA,EAA8B;YAA9B,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,GAAA,CAAA,IAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAA8B;YAEjC,EAAA,CAAA,SAAA,CAAA,CAAA,CAIC;YAJD,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,eAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAIC;YAEA,EAAA,CAAA,SAAA,EAEA;YAFA,EAAA,CAAA,UAAA,CAAA,GAAA,CAAA,OAAA,CAEA;ACFY,QAAA,CAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,YAAY,EAAE,eAAe,EAAE,eAAe,sCAAE,aAAa,EAAA,EAAA,CAAA,OAAA,EAAAA,EAAA,CAAA,aAAA,CAAA,EAAA,MAAA,EAAA,CAAA,0SAAA,CAAA,EAAA,CAAA,CAAA;;iFAI9D,sBAAsB,EAAA,CAAA;cANlC,SAAS;2BACI,oBAAoB,EAAA,OAAA,EACrB,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,oeAAA,EAAA,MAAA,EAAA,CAAA,mPAAA,CAAA,EAAA;gBAKjE,IAAI,EAAA,CAAA;kBAAZ;YACQ,eAAe,EAAA,CAAA;kBAAvB;YACQ,OAAO,EAAA,CAAA;kBAAf;YACS,UAAU,EAAA,CAAA;kBAAnB;;kFAJU,sBAAsB,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,gDAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;ACbnC,IAAY,kBAKX;AALD,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,kBAAA,CAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,kBAAA,CAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,kBAAA,CAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACN,CAAC,EALW,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;;MCMjB,qBAAqB,CAAA;AAHlC,IAAA,WAAA,GAAA;QAIE,IAAA,CAAA,gBAAgB,GAAG,KAAK;AACzB,IAAA;sHAFY,qBAAqB,GAAA,CAAA,CAAA,CAAA,CAAA;uEAArB,qBAAqB,EAAA,OAAA,EAArB,qBAAqB,CAAA,IAAA,EAAA,UAAA,EAFpB,MAAM,EAAA,CAAA,CAAA;;iFAEP,qBAAqB,EAAA,CAAA;cAHjC,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE;AACb,aAAA;;;;;;;ICDG,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAwD;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA0C;;IAAA,EAAA,CAAA,YAAA,EAAK;IAEvG,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAmC,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACD,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CACV;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA2C;;AACjE,IADiE,iBAAO,EAClE;AAGJ,IADF,8BAA+B,CAAA,CAAA,EAAA,MAAA,CACvB;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAoB;IAAA,EAAA,CAAA,YAAA,EAAO,EAC7B,EACF;IAEN,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAmC,CAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CACD,CAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CACV;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAA4C;;AAClE,IADkE,iBAAO,EACnE;AAGJ,IADF,+BAA+B,CAAA,EAAA,EAAA,MAAA,CACvB;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAqB;IAAA,EAAA,CAAA,YAAA,EAAO,EAC9B,EACF;;yBAtBS,EAAA,CAAA,aAAA,EAAA,CAAA,KAAA,EAAO;IAEkC,EAAA,CAAA,SAAA,EAA0C;IAA1C,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,CAAA,CAA0C;IAI1E,EAAA,CAAA,SAAA,CAAA,CAAA,CAA2C;IAA3C,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,yBAAA,CAAA,CAA2C;IAIzD,EAAA,CAAA,SAAA,CAAA,CAAA,CAAoB;IAApB,EAAA,CAAA,iBAAA,CAAA,YAAA,CAAA,IAAA,CAAoB;IAMN,EAAA,CAAA,SAAA,CAAA,CAAA,CAA4C;IAA5C,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,CAAA,EAAA,0BAAA,CAAA,CAA4C;IAI1D,EAAA,CAAA,SAAA,CAAA,CAAA,CAAqB;IAArB,EAAA,CAAA,iBAAA,CAAA,YAAA,CAAA,KAAA,CAAqB;;;IAoBrB,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAM;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CAA+G;;;IAAA,EAAA,CAAA,YAAA,EAAO;;;;IAAtH,EAAA,CAAA,SAAA,EAA+G;IAA/G,EAAA,CAAA,kBAAA,CAAA,IAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,CAAA,OAAA,EAAA,aAAA,CAAA,CAAA,CAAA,EAAA,IAAA,CAA+G;;;IAIpH,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAM;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CAAyG;;;IAAA,EAAA,CAAA,YAAA,EAAO;;;;IAAhH,EAAA,CAAA,SAAA,EAAyG;IAAzG,EAAA,CAAA,kBAAA,CAAA,IAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,CAAA,OAAA,EAAA,aAAA,CAAA,CAAA,CAAA,EAAA,IAAA,CAAyG;;;IADlH,EAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,kEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAiC;;;;IAAjC,EAAA,CAAA,aAAA,CAAA,sBAAA,CAAA,OAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAEC;;;IAGH,EAAA,CAAA,MAAA,CAAA,CAAA,CACA;;;;;;IADA,EAAA,CAAA,kBAAA,CAAA,IAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,CAAA,OAAA,EAAA,aAAA,CAAA,CAAA,CAAA,EAAA,IAAA,CACA;;;IAQV,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAmC,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACD,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CACV;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA4D;;AAClF,IADkF,iBAAO,EACnF;IAEN,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAA+B;IAC7B,EAAA,CAAA,uBAAA,CAAA,CAAA,CAAc;IACZ,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAM;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAoD;;IAAA,EAAA,CAAA,YAAA,EAAO;;AAGrE,IADA,iBAAM,EACA;;;;IARgB,EAAA,CAAA,SAAA,CAAA,CAAA,CAA4D;IAA5D,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,0CAAA,CAAA,CAA4D;IAKxE,EAAA,CAAA,SAAA,CAAA,CAAA,CAAoD;IAApD,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,CAAA,OAAA,EAAA,YAAA,CAAA,CAAoD;;;IAgBpD,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAM;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CAAa;IAAA,EAAA,CAAA,YAAA,EAAO;;;IAApB,EAAA,CAAA,SAAA,EAAa;IAAb,EAAA,CAAA,kBAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAA,EAAA,GAAA,CAAa;;;IAFtB,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAM;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAa;IAAA,EAAA,CAAA,YAAA,EAAO;IAC1B,EAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,+EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAe;IAGf,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAM;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CAA4D;IAAA,EAAA,CAAA,YAAA,EAAO;;;;;;IAJpE,EAAA,CAAA,SAAA,EAAa;IAAb,EAAA,CAAA,iBAAA,CAAA,OAAA,CAAA,EAAA,CAAa;IACnB,EAAA,CAAA,SAAA,EAEC;IAFD,EAAA,CAAA,aAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAEC;IACM,EAAA,CAAA,SAAA,CAAA,CAAA,CAA4D;IAA5D,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,sBAAA,CAAA,MAAA,CAAA,MAAA,GAAA,CAAA,GAAA,aAAA,GAAA,GAAA,GAAA,EAAA,EAAA,GAAA,CAA4D;;;IAX3E,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAkD,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAChB,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CACV;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAkD;;AACxE,IADwE,iBAAO,EACzE;IAEN,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAA+B;IAC7B,EAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,iEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,CAMC;AAEL,IADE,iBAAM,EACF;;;;IAZkB,EAAA,CAAA,SAAA,CAAA,CAAA,CAAkD;IAAlD,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,gCAAA,CAAA,CAAkD;IAItE,EAAA,CAAA,SAAA,CAAA,CAAA,CAMC;IAND,EAAA,CAAA,UAAA,CAAA,sBAAA,CAAA,MAAA,CAMC;;;IAzDP,EAAA,CAAA,YAAA,CAAA,CAAA,CAA0C;IAE1C,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAkD,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAChB,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CACV;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA2D;;AACjF,IADiF,iBAAO,EAClF;IAEN,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAA+B;IAC7B,EAAA,CAAA,uBAAA,CAAA,CAAA,CAAc;IACZ,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAM;IACJ,EAAA,CAAA,MAAA,CAAA,CAAA,CAEA;IACE,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAgC,CAAA,EAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,CAGG,CAAA,EAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,CAKD;IAItC,EAAA,CAAA,YAAA,EAAO;;AAGb,IADE,iBAAM,EACF;IAEN,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,2DAAA,EAAA,EAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAiC;IAcjC,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAwC;;;;AA5CxC,IAAA,MAAA,sBAAA,GAAA,EAAA,CAAA,UAAA,CAA2B,qBAAc,CAAC;IAIlB,EAAA,CAAA,SAAA,CAAA,CAAA,CAA2D;IAA3D,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,yCAAA,CAAA,CAA2D;IAM3E,EAAA,CAAA,SAAA,CAAA,CAAA,CAEA;IAFA,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,sBAAA,CAAA,KAAA,GAAA,sBAAA,CAAA,KAAA,GAAA,sBAAA,CAAA,MAAA,EAAA,GAAA,CAEA;IAAA,EAAA,CAAA,SAAA,EAYC;IAZD,EAAA,CAAA,aAAA,CAAA,CAAA,OAAA,GAAA,MAAA,CAAA,iBAAA,EAAA,MAAA,MAAA,CAAA,kBAAA,CAAA,KAAA,GAAA,EAAA,GAAA,OAAA,KAAA,MAAA,CAAA,kBAAA,CAAA,MAAA,GAAA,EAAA,GAAA,OAAA,KAAA,MAAA,CAAA,kBAAA,CAAA,KAAA,GAAA,EAAA,GAAA,CAAA,CAAA,CAYC;IAMT,EAAA,CAAA,SAAA,CAAA,CAAA,CAYC;IAZD,EAAA,CAAA,aAAA,CAAA,sBAAA,CAAA,OAAA,GAAA,EAAA,GAAA,CAAA,CAAA,CAYC;IAED,EAAA,CAAA,SAAA,EAgBC;IAhBD,EAAA,CAAA,aAAA,CAAA,CAAA,sBAAA,CAAA,MAAA,IAAA,IAAA,GAAA,IAAA,GAAA,sBAAA,CAAA,MAAA,CAAA,MAAA,IAAA,EAAA,GAAA,CAAA,CAAA,CAgBC;;;IAOC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAwC;IACtC,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,EAAA,CAAwE;AAEtE,IADF,+BAAgC,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CACC;IAC7B,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;;IAAA,EAAA,CAAA,YAAA,EAAO,EACH,EACF;;;IANc,EAAA,CAAA,SAAA,EAAkC;IAAlC,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,eAAA,CAAA,WAAA,CAAkC;IAGhD,EAAA,CAAA,SAAA,CAAA,CAAA,CACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,QAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,eAAA,CAAA,SAAA,CAAA,QAAA,EAAA,CAAA,IAAA,eAAA,CAAA,WAAA,GAAA,YAAA,GAAA,EAAA,CAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,eAAA,CAAA,aAAA,EAAA,eAAA,CAAA,cAAA,EAAA,eAAA,CAAA,WAAA,CAAA,CAAA,EAAA,GAAA,CACF;;;IARN,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAwD;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAuC;;IAAA,EAAA,CAAA,YAAA,EAAK;IAEpG,EAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CASC;;;IAXuD,EAAA,CAAA,SAAA,EAAuC;IAAvC,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,CAAuC;IAE/F,EAAA,CAAA,SAAA,CAAA,CAAA,CASC;AATD,IAAA,EAAA,CAAA,UAAA,CAAA,sBAAe,CASd;;;;IAQC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAsJ;AAA1B,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,+DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,sBAAe,CAAA,CAAA,CAAA,CAAA,CAAC;IACnJ,EAAA,CAAA,MAAA,CAAA,CAAA,CACF;;IAAA,EAAA,CAAA,YAAA,EAAI;;IADF,EAAA,CAAA,SAAA,EACF;IADE,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,GAAA,CACF;;;;IAGA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAA+G;AAA7B,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,+DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,yBAAkB,CAAA,CAAA,CAAA,CAAA,CAAC;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CAAsC;;IAAA,EAAA,CAAA,YAAA,EAAI;;;;IAA1C,EAAA,CAAA,SAAA,EAAsC;IAAtC,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,CAAA,CAAsC;;MC3F5I,qBAAqB,CAAA;AAZlC,IAAA,WAAA,GAAA;AAaW,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,qBAAqB,CAAC;;AAGtD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAwB;;AAE9C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,uDAAgC;;AAE7D,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAA6B;QACnD,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAe;QACxC,IAAA,CAAA,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;QAC9B,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAqB;QAE9C,IAAA,CAAA,WAAW,GAAG,MAAM,EAAE;QACtB,IAAA,CAAA,cAAc,GAAG,MAAM,EAAE;AAEzB,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAA6B,MAAK;AACjE,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;AACjB,gBAAA,OAAO,EAAE;YACX;AAEA,YAAA,IAAI,QAAsB;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC7B,gBAAA,QAAQ,GAAG,KAAK,CAAC,KAAK;YACxB;iBACK;gBACH,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC7F;YAEA,MAAM,aAAa,GAA+B,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAG;AACrE,gBAAA,OAAO,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC;AAChD,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,aAAa;AACtB,QAAA,CAAC,yDAAC;QAEO,IAAA,CAAA,kBAAkB,GAAG,kBAAkB;AAEvC,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACzC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;YACxC,IAAI,CAAC,YAAY,EAAE;gBACjB,OAAO,kBAAkB,CAAC,IAAI;YAChC;AAEA,YAAA,IAAI,YAAY,CAAC,OAAO,EAAE;gBACxB,OAAO,kBAAkB,CAAC,KAAK;YACjC;AAGA,YAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,GAAG,EAAE;gBACjE,OAAO,kBAAkB,CAAC,MAAM;YAClC;iBAAO;gBACL,OAAO,kBAAkB,CAAC,KAAK;YACjC;AACF,QAAA,CAAC,6DAAC;AAqFH,IAAA;AA3IU,IAAA,sBAAsB;IAwD/B,QAAQ,GAAA;QACN,IAAI,CAAC,qBAAqB,EAAE;IAC9B;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;IACzB;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;IAC5B;IAEA,qBAAqB,GAAA;AACnB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE;QAClD,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;YACzD;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,EAAE;YACjD,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC3C,YAAA,EAAE,CAAC,MAAM,GAAG,MAAK;;gBAEf,MAAM,SAAS,GAAQ,MAAM;AAC7B,gBAAA,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;oBACvB,IAAI,EAAE,iBAAiB,CAAC;AACzB,iBAAA,CAAC;AACF,gBAAA,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE;AACnC,gBAAA,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,GAAG,IAAI;AACrD,YAAA,CAAC;YACD,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC;AAChD,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B;aAAO;;YAEL,MAAM,SAAS,GAAQ,MAAM;AAC7B,YAAA,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE;QACrC;IACF;AAEA,IAAA,2BAA2B,CAAC,KAAiB,EAAA;;QAE3C,MAAM,kBAAkB,GAAG,UAAU;QAErC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,cAAc;QACpD,IAAI,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE;AAChD,QAAA,IAAI,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE;AACnC,QAAA,MAAM,WAAW,GAAG,kBAAkB,IAAI,KAAK,CAAC,UAAU;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC;AAEpG,QAAA,QAAQ,KAAK,CAAC,SAAS;YACrB,KAAK,SAAS,CAAC,uBAAuB;YACtC,KAAK,SAAS,CAAC,uBAAuB;AACpC,gBAAA,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;AAC5D,gBAAA,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;gBAChD;YACF,KAAK,SAAS,CAAC,gBAAgB;gBAC7B,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;gBAC3D,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC9C;YACF,KAAK,SAAS,CAAC,YAAY;gBACzB;;QAGJ,OAAO;AACL,YAAA,GAAG,KAAK;YACR,cAAc;YACd,aAAa;YACb,WAAW;YACX;SACD;IACH;AAEA,IAAA,YAAY,CAAC,KAAa,EAAE,QAAQ,GAAG,CAAC,EAAA;QACtC,IAAI,CAAC,CAAC,KAAK;AAAE,YAAA,OAAO,SAAS;QAE7B,MAAM,CAAC,GAAG,IAAI;AACd,QAAA,MAAM,EAAE,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ;QACtC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QAEvE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEnD,OAAO,CAAA,EAAG,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA,CAAA,EAAI,KAAK,CAAC,CAAC,CAAC,CAAA,CAAE;IAC1E;sHA1IW,qBAAqB,GAAA,CAAA,CAAA,CAAA,CAAA;oEAArB,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,kBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,EAAA,cAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,EAAA,cAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,kBAAA,EAAA,GAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAAA,EAAA,4BAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,UAAA,EAAA,KAAA,EAAA,CAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,4BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;YDzBlC,EAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,EAAA,EAAA,EAAA,CAAa;YA2Bb,EAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,EAAA,EAAA,CAAA,CAAoB;YAgEpB,EAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,CAA4B;YAgB1B,EAAA,CAAA,YAAA,CAAA,CAAA,CAAyB;YAE3B,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAA0C;YACxC,EAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAyB;YAKzB,EAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAoB;YAGtB,EAAA,CAAA,YAAA,EAAM;;YAtHN,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,KAAA,EAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAyBC;YAED,EAAA,CAAA,SAAA,EA8DC;YA9DD,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,YAAA,EAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CA8DC;YAED,EAAA,CAAA,SAAA,EAaC;YAbD,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,aAAA,EAAA,CAAA,MAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAaC;YAMC,EAAA,CAAA,SAAA,CAAA,CAAA,CAIC;YAJD,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,iBAAA,EAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAIC;YACD,EAAA,CAAA,SAAA,EAEC;YAFD,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,YAAA,EAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAEC;ACnGK,QAAA,CAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,oBAAoB,uBACpB,YAAY;AACZ,YAAA,eAAe,kBAJf,aAAa;YACb,QAAQ,EAAAA,IAAA,CAAA,aAAA,CAAA,EAAA,MAAA,EAAA,CAAA,ytCAAA,CAAA,EAAA,CAAA,CAAA;;iFAQH,qBAAqB,EAAA,CAAA;cAZjC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EACnB;oBACL,aAAa;oBACb,QAAQ;oBACR,oBAAoB;oBACpB,YAAY;oBACZ;AACH,iBAAA,EAAA,QAAA,EAAA,2jJAAA,EAAA,MAAA,EAAA,CAAA,+5BAAA,CAAA,EAAA;;kFAIQ,qBAAqB,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;ICzBtB;AAAZ,CAAA,UAAY,sBAAsB,EAAA;AACjC,IAAA,sBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,sBAAA,CAAA,GAAA,CAAA,GAAA,SAAa;AACb,IAAA,sBAAA,CAAA,IAAA,CAAA,GAAA,QAAa;AACd,CAAC,EAJW,sBAAsB,KAAtB,sBAAsB,GAAA,EAAA,CAAA,CAAA;;ICAtB;AAAZ,CAAA,UAAY,sBAAsB,EAAA;AACjC,IAAA,sBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,sBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,sBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,sBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC9B,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,GAAA,EAAA,CAAA,CAAA;;MCKrB,iCAAiC,CAAA;AAH9C,IAAA,WAAA,GAAA;QAIS,IAAA,CAAA,aAAa,GAA0B,IAAI;QAC3C,IAAA,CAAA,gBAAgB,GAAyB,IAAI;QAC7C,IAAA,CAAA,gBAAgB,GAAyB,IAAI;AAoFrD,IAAA;AAlFA,IAAA,mBAAmB,CAAC,UAAmB,EAAA;QACtC,IAAI,UAAU,EAAE;YACf,IAAI,CAAC,YAAY,EAAE;QACpB;aAAO;YACN,IAAI,CAAC,eAAe,EAAE;QACvB;IACD;IAEQ,YAAY,GAAA;QACnB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QAClD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;AAE7C,QAAA,IAAI,WAAmB;;AAGvB,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,KAAU,KAAI;AACtC,YAAA,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;gBAChE,IAAI,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;oBAClD;gBACD;gBAEA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC;AAE1D,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;oBACxB,IAAI,CAAC,aAAc,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;oBAC1C;gBACD;gBAEA,IAAI,CAAC,aAAc,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;AAC3C,gBAAA,IAAI,CAAC,aAAc,CAAC,WAAW,GAAG,WAAW;AAE7C,gBAAA,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,aAAc,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,aAAc,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC;AAE/H,gBAAA,IAAI,CAAC,aAAc,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,KAAK,CAAC,KAAK,GAAG,EAAE,IAAI;gBACxD,IAAI,CAAC,aAAc,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,WAAW,CAAA,EAAA,CAAI;YACnD;AACD,QAAA,CAAC;QAED,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC;;AAG7D,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,KAAU,KAAI;AACtC,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACvB,gBAAA,IAAI,CAAC,aAAc,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,KAAK,CAAC,KAAK,GAAG,EAAE,IAAI;gBACxD,IAAI,CAAC,aAAc,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,WAAW,CAAA,EAAA,CAAI;YACnD;AACD,QAAA,CAAC;QAED,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC;IAC9D;IAEQ,eAAe,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;AAC7C,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QAC1B;AAEA,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC1B,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAChE,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC7B;AAEA,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC1B,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAChE,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC7B;IACD;AAEQ,IAAA,mBAAmB,CAAC,OAAgB,EAAA;QAC3C,IAAI,WAAW,GAAG,EAAE;;AAGpB,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,UAAiB,EAAE;YAC9C,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;AACtC,gBAAA,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE;gBACrC;YACD;QACD;AAEA,QAAA,OAAO,WAAW;IACnB;kIAtFY,iCAAiC,GAAA,CAAA,CAAA,CAAA,CAAA;uEAAjC,iCAAiC,EAAA,OAAA,EAAjC,iCAAiC,CAAA,IAAA,EAAA,UAAA,EAFjC,MAAM,EAAA,CAAA,CAAA;;iFAEN,iCAAiC,EAAA,CAAA;cAH7C,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACX,gBAAA,UAAU,EAAE,MAAM;AAClB,aAAA;;;MCCY,8BAA8B,CAAA;AAH3C,IAAA,WAAA,GAAA;QAMC,IAAA,CAAA,cAAc,GAAG,EAAE;QAEV,IAAA,CAAA,sBAAsB,GAAG,wBAAwB;QACjD,IAAA,CAAA,UAAU,GAAG,aAAa;QAC1B,IAAA,CAAA,kBAAkB,GAAG,qBAAqB;QAC1C,IAAA,CAAA,eAAe,GAAG,uBAAuB;QACzC,IAAA,CAAA,mBAAmB,GAAG,qBAAqB;QAC3C,IAAA,CAAA,iBAAiB,GAAG,GAAG;QACvB,IAAA,CAAA,iBAAiB,GAAG,GAAG;QACvB,IAAA,CAAA,cAAc,GAAG,GAAG;AA+F7B,IAAA;AA7FA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAE;QAE5C,IAAI,CAAC,UAAU,EAAE;YAChB,IAAI,CAAC,aAAa,EAAE;QACrB;aAAO;YACN,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;YAC1C,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;YACjD,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;YAClD,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;YACvD,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;YACvD,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;YAEpD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;YACnC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;YAChD,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAElD,YAAA,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB;AACnD,YAAA,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB;AACnD,YAAA,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc;AAE7C,YAAA,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACvE,YAAA,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACvE,YAAA,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAEjE,YAAA,YAAY,CAAC,WAAW,CAAC,cAAc,CAAC;AACxC,YAAA,YAAY,CAAC,WAAW,CAAC,cAAc,CAAC;AACxC,YAAA,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC;AAErC,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;AAE9B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAEtB,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACtE,YAAA,MAAM,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,cAAc;AAC5E,YAAA,IAAI,CAAC,cAAc,GAAG,MAAM;YAE5B,IAAI,CAAC,cAAc,EAAE;;AAGrB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAU,KAAI;gBAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC;gBACtD,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAA,EAAA,CAAI;gBACtD,YAAY,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,MAAM,IAAI;AACtC,gBAAA,MAAM,aAAa,GAAG,CAAA,gCAAA,EAAmC,MAAM,CAAA,QAAA,EAAW,MAAM,WAAW,MAAM,GAAG,IAAI,CAAC,cAAc,YACtH,MAAM,GAAG,IAAI,CAAC,cACf,0BAA0B;AAC1B,gBAAA,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,aAAa;AAC3C,YAAA,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC;QAClD;IACD;IAEA,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,cAAc,IAAI,EAAE;QACzB,IAAI,CAAC,cAAc,EAAE;IACtB;IAEA,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QAC5D,IAAI,CAAC,cAAc,EAAE;IACtB;IAEA,cAAc,GAAA;AACb,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,eAAe,CAAA,CAAE,CAAgB;AACtF,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,kBAAkB,CAAA,CAAE,CAAgB;AAExF,QAAA,IAAI,YAAY,IAAI,WAAW,EAAE;AAChC,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC;YAEtD,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAA,EAAA,CAAI;AACtD,YAAA,MAAM,aAAa,GAAG,CAAA,gCAAA,EAAmC,MAAM,CAAA,QAAA,EAAW,MAAM,WAAW,MAAM,GAAG,IAAI,CAAC,cAAc,YACtH,MAAM,GAAG,IAAI,CAAC,cACf,0BAA0B;AAC1B,YAAA,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,aAAa;QAC3C;AAEA,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACvF;IAEA,aAAa,GAAA;QACZ,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAE;AAC5C,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC;QAElE,IAAI,YAAY,EAAE;AACjB,YAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;YAC9B,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC;AACpD,YAAA,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1D,YAAA,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;QACvE;IACD;+HA1GY,8BAA8B,GAAA,CAAA,CAAA,CAAA,CAAA;uEAA9B,8BAA8B,EAAA,OAAA,EAA9B,8BAA8B,CAAA,IAAA,EAAA,UAAA,EAF9B,MAAM,EAAA,CAAA,CAAA;;iFAEN,8BAA8B,EAAA,CAAA;cAH1C,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACX,gBAAA,UAAU,EAAE,MAAM;AAClB,aAAA;;;MCMY,oBAAoB,CAAA;AAHjC,IAAA,WAAA,GAAA;QAIU,IAAA,CAAA,uBAAuB,GAAG,4BAA4B;QACtD,IAAA,CAAA,uBAAuB,GAAG,wBAAwB;QAClD,IAAA,CAAA,4BAA4B,GAAG,gBAAgB;QAC/C,IAAA,CAAA,yBAAyB,GAAG,aAAa;AAElD,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAW;AAC5C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAU;AAE9B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iCAAiC,CAAC;AAC1D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,8BAA8B,CAAC;AA0E7D,IAAA;AA3ES,IAAA,cAAc;AACd,IAAA,WAAW;IAEpB,gBAAgB,GAAA;AACf,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,EAAE;QACrD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC;QACrD,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,aAAa,CAAC;QACjD,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE,cAAc,CAAC;IACrE;IAEA,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;IACjC;IAEA,mBAAmB,GAAA;AAClB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,2BAA2B,EAAE;QACxD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC;QACrD,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,aAAa,CAAC;QACvD,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,cAAc,CAAC;IACxE;IAEA,2BAA2B,GAAA;AAC1B,QAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,IAAI,OAAO,CAAC;AAC/G,QAAA,OAAO,wBAAwB;IAChC;IAEA,wBAAwB,GAAA;AACvB,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,OAAO,CAAC;AACzG,QAAA,OAAO,qBAAqB;IAC7B;IAEA,2BAA2B,GAAA;AAC1B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,2BAA2B,EAAE;AACxD,QAAA,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,aAAa,CAAC;IACvD;IAEA,wBAAwB,GAAA;AACvB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,EAAE;AACrD,QAAA,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC;IACjD;AAEA,IAAA,YAAY,CAAC,QAAgB,EAAA;QAC5B,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC;IAC7D;IAEA,gBAAgB,GAAA;QACf,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC;AACxE,QAAA,OAAO,aAAuC,IAAI,sBAAsB,CAAC,IAAI;IAC9E;IAEA,gBAAgB,GAAA;QACf,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC;QAC1E,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,GAAG,CAAC;IAC1C;AAEA,IAAA,YAAY,CAAC,EAAU,EAAA;AACtB,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC;IAClE;AAEA,IAAA,WAAW,CAAC,UAAkB,EAAA;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC;AAEnD,QAAA,IAAI,UAAU,GAAG,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;QACpC;aAAO;AACN,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QACrC;AAEA,QAAA,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC;IACnE;AAEA,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAE,CAAC,SAAS,GAAG,QAAQ;IACrD;qHAnFY,oBAAoB,GAAA,CAAA,CAAA,CAAA,CAAA;uEAApB,oBAAoB,EAAA,OAAA,EAApB,oBAAoB,CAAA,IAAA,EAAA,UAAA,EAFpB,MAAM,EAAA,CAAA,CAAA;;iFAEN,oBAAoB,EAAA,CAAA;cAHhC,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACX,gBAAA,UAAU,EAAE,MAAM;AAClB,aAAA;;;;;;ICaE,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAoI;AAA5H,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,oEAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,kCAAwB,CAAA,CAAA,CAAA,CAAA,CAAC;IACzC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAA0C;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,YAAA,CAAU;AACrD,IADqD,iBAAW,EACvD;;;;IAFkC,EAAA,CAAA,UAAA,CAAA,WAAA,CAAkB;IAAC,EAAA,CAAA,WAAA,CAAA,QAAA,EAAA,WAAA,KAAA,MAAA,CAAA,eAAA,CAA6C;;;IAyB3G,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAA8C;IAC7C,EAAA,CAAA,MAAA,CAAA,CAAA,CACA;;IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,CAAU;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,mBAAA,CAAiB;AAC5B,IAD4B,iBAAW,EACnC;;;IAHD,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,UAAA,CAAA,IAAA,EAAA,EAAA,CAAA,aAAA,CAAqB;IACvB,EAAA,CAAA,SAAA,EACA;IADA,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,UAAA,CAAA,IAAA,CAAA,EAAA,GAAA,CACA;;MClCS,4BAA4B,CAAA;AANzC,IAAA,WAAA,GAAA;AAUC,QAAA,IAAA,CAAA,eAAe,GAAG,sBAAsB,CAAC,IAAI;AAEpC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAE7C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC;AAEjD,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAsB,eAAe,CAAC;QAE5D,IAAA,CAAA,cAAc,GAAmC,EAAE;AAoEnD,IAAA;AA1ES,IAAA,cAAc;IAQvB,QAAQ,GAAA;QACP,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE;QACnE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE;QAC7D,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,2BAA2B,EAAE;QAC/E,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE;QAEzE,IAAI,CAAC,iBAAiB,EAAE;IACzB;AAEA,IAAA,cAAc,CAAC,QAAgC,EAAA;AAC9C,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ;AAC/B,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC;AAC1C,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC;IAC1C;AAEA,IAAA,cAAc,CAAC,CAAoB,EAAA;AAClC,QAAA,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,KAAK;QACpC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC;IAC5D;IAEA,mBAAmB,GAAA;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE;QACzC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,2BAA2B,EAAE;IAChF;IAEA,gBAAgB,GAAA;AACf,QAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE;QACtC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE;IAC1E;IAEA,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;IACpC;IAEA,KAAK,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAChC,IAAI,CAAC,mBAAmB,EAAE;QAC3B;AAEA,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC7B,IAAI,CAAC,gBAAgB,EAAE;QACxB;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC;AAChD,QAAA,IAAI,CAAC,qBAAqB,GAAG,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC;IAC5D;IAEQ,iBAAiB,GAAA;QACxB,IAAI,CAAC,cAAc,GAAG;AACrB,YAAA;AACC,gBAAA,IAAI,EAAE,4BAA4B;AAClC,gBAAA,IAAI,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAA,SAAA,CAAW;AACrC,aAAA;AACD,YAAA;AACC,gBAAA,IAAI,EAAE,8BAA8B;AACpC,gBAAA,IAAI,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAA,sBAAA,CAAwB;AAClD,aAAA;AACD,YAAA;AACC,gBAAA,IAAI,EAAE,4BAA4B;AAClC,gBAAA,IAAI,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAA,uBAAA,CAAyB;AACnD;SACD;IACF;6HA/EY,4BAA4B,GAAA,CAAA,CAAA,CAAA,CAAA;oEAA5B,4BAA4B,EAAA,SAAA,EAAA,CAAA,CAAA,0BAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,mBAAA,EAAA,KAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,yBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,qCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YDfzC,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAuC;YAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAuC;;YAAA,EAAA,CAAA,YAAA,EAAK;YAEnF,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAwB,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACQ,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CACJ;YACzB,EAAA,CAAA,MAAA,CAAA,CAAA,CACD;;YAAA,EAAA,CAAA,YAAA,EAAI;YAEJ,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,eAAA,EAAA,CAAA,CAA4H;AAArE,YAAA,EAAA,CAAA,UAAA,CAAA,mBAAA,EAAA,SAAA,gFAAA,CAAA,MAAA,EAAA,EAAA,OAAqB,0BAAsB,CAAA,CAAA,CAAA,CAAC;YAClG,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,SAAA,EAAA,CAAA,CAAoC,CAAA,EAAA,EAAA,SAAA,EAAA,CAAA,CACA,CAAA,EAAA,EAAA,SAAA,EAAA,CAAA,CACA;AAEtC,YADC,iBAAgB,EACX;AAGL,YADD,+BAA8B,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,CACH;YACzB,EAAA,CAAA,MAAA,CAAA,EAAA,CACD;;YAAA,EAAA,CAAA,YAAA,EAAI;YAEJ,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAqC;YACpC,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,EAAA,CAAA,yBAAA,CAIC;AAEH,YADC,iBAAM,EACD;AAGL,YADD,+BAAkC,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,CACP;YACzB,EAAA,CAAA,MAAA,CAAA,EAAA,CACD;;YAAA,EAAA,CAAA,YAAA,EAAI;YAEJ,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAmG;AAAhC,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,8DAAA,GAAA,EAAA,OAAS,yBAAqB,CAAA,CAAA,CAAA,CAAC;YACjG,EAAA,CAAA,MAAA,CAAA,EAAA,CACD;;YAAA,EAAA,CAAA,YAAA,EAAS;YAET,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAqH;AAA7B,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,8DAAA,GAAA,EAAA,OAAS,sBAAkB,CAAA,CAAA,CAAA,CAAC;YACnH,EAAA,CAAA,MAAA,CAAA,EAAA,CACD;;AACD,YADC,iBAAS,EACJ;YAEN,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAA2B;YAE3B,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAmC;YAClC,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,EAAA,UAAA,CAKC;AAEH,YADC,iBAAM,EACD;AAGL,YADD,gCAAwB,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CACsB;AAAlB,YAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,8DAAA,GAAA,EAAA,OAAS,WAAO,CAAA,CAAA,CAAA,CAAC;YAAC,EAAA,CAAA,MAAA,CAAA,EAAA,CAAuC;;YAAA,EAAA,CAAA,YAAA,EAAS;YAC7F,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAyC;YAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAuC;;AACjF,YADiF,iBAAS,EACpF;;YA1DiC,EAAA,CAAA,SAAA,EAAuC;YAAvC,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,CAAuC;YAK3E,EAAA,CAAA,SAAA,CAAA,CAAA,CACD;YADC,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,EAAA,EAAA,+BAAA,CAAA,EAAA,GAAA,CACD;YAEe,EAAA,CAAA,SAAA,CAAA,CAAA,CAAuC;YAAvC,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,GAAA,CAAA,qBAAA,CAAuC;YAC5C,EAAA,CAAA,SAAA,EAAgB;YAAhB,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAgB;YAChB,EAAA,CAAA,SAAA,EAAgB;YAAhB,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAgB;YAChB,EAAA,CAAA,SAAA,EAAgB;YAAhB,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAgB;YAMzB,EAAA,CAAA,SAAA,CAAA,CAAA,CACD;YADC,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,8BAAA,CAAA,EAAA,GAAA,CACD;YAGC,EAAA,CAAA,SAAA,CAAA,CAAA,CAIC;YAJD,EAAA,CAAA,UAAA,CAAA,GAAA,CAAA,SAAA,CAIC;YAMD,EAAA,CAAA,SAAA,CAAA,CAAA,CACD;YADC,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,kCAAA,CAAA,EAAA,GAAA,CACD;YAE2B,EAAA,CAAA,SAAA,CAAA,CAAA,CAAuC;YAAvC,EAAA,CAAA,WAAA,CAAA,QAAA,EAAA,GAAA,CAAA,sBAAA,CAAuC;YACjE,EAAA,CAAA,SAAA,EACD;YADC,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,8BAAA,CAAA,EAAA,GAAA,CACD;YAEmD,EAAA,CAAA,SAAA,CAAA,CAAA,CAAoC;YAApC,EAAA,CAAA,WAAA,CAAA,QAAA,EAAA,GAAA,CAAA,mBAAA,CAAoC;YACtF,EAAA,CAAA,SAAA,EACD;YADC,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,2BAAA,CAAA,EAAA,GAAA,CACD;YAMA,EAAA,CAAA,SAAA,CAAA,CAAA,CAKC;YALD,EAAA,CAAA,UAAA,CAAA,GAAA,CAAA,cAAA,CAKC;YAK2C,EAAA,CAAA,SAAA,CAAA,CAAA,CAAuC;YAAvC,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,CAAuC;YAC3C,EAAA,CAAA,SAAA,CAAA,CAAA,CAAuC;YAAvC,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,CAAuC;AC9CtE,QAAA,CAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,eAAe,0FAAE,eAAe,EAAE,eAAe,EAAA3B,IAAA,CAAA,SAAA,EAAE,aAAa,iCAAE,aAAa,EAAAsB,EAAA,CAAA,OAAA,EAAAC,EAAA,CAAA,aAAA,CAAA,EAAA,MAAA,EAAA,CAAA,umFAAA,CAAA,EAAA,CAAA,CAAA;;iFAI7E,4BAA4B,EAAA,CAAA;cANxC,SAAS;2BACC,0BAA0B,EAAA,OAAA,EAC3B,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,svEAAA,EAAA,MAAA,EAAA,CAAA,siEAAA,CAAA,EAAA;;kFAI9E,4BAA4B,EAAA,EAAA,SAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;MCR5B,qBAAqB,CAAA;AACjC,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAA,CAAA,IAAI,GAAJ,IAAI;IAAe;;AAGvC,IAAA,cAAc,CAAC,IAAY,EAAA;AAC1B,QAAA,MAAM,4BAA4B,GAAG,CAAA,cAAA,EAAiB,IAAI,OAAO;AACjE,QAAA,MAAM,iBAAiB,GAAG,CAAA,wBAAA,EAA2B,IAAI,OAAO;QAEhE,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAACK,YAAU,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvG,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAACA,YAAU,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE7F,OAAO,QAAQ,CAAC,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAClEC,KAAG,CAAC,CAAC,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,KAAI;YACnD,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;QACjE,CAAC,CAAC,CACF;IACF;;IAGQ,SAAS,CAAC,MAAW,EAAE,MAAW,EAAA;AACzC,QAAA,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE;AAC5B,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACnD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;gBACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/B,oBAAA,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,EAAE;AACrB,wBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9C;yBAAO;AACN,wBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;oBACvD;gBACD;qBAAO;AACN,oBAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9C;AACD,YAAA,CAAC,CAAC;QACH;AACA,QAAA,OAAO,MAAM;IACd;;AAGQ,IAAA,QAAQ,CAAC,IAAS,EAAA;AACzB,QAAA,OAAO,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IAChE;sHAxCY,qBAAqB,EAAA,EAAA,CAAA,QAAA,CAAA9B,IAAA,CAAA,UAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,KAAA,iBAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,qBAAqB,WAArB,qBAAqB,CAAA,IAAA,EAAA,CAAA,CAAA;;iFAArB,qBAAqB,EAAA,CAAA;cADjC;;;ACND;AACO,MAAM,YAAY,GAA2B;AACnD,IAAA,EAAE,EAAE;AACH,QAAA,cAAc,EAAE;AACf,YAAA,WAAW,EACV,0KAA0K;AAC3K,YAAA,MAAM,EAAE,aAAa;AACrB,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,SAAS,EAAE,iBAAiB;AAC5B,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,OAAO,EAAE,qDAAqD;AAC9D,YAAA,gBAAgB,EAAE;AACjB,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,YAAY;AACtB,gBAAA,QAAQ,EAAE,mBAAmB;AAC7B,gBAAA,aAAa,EAAE,cAAc;AAC7B,gBAAA,qBAAqB,EAAE,4EAA4E;AACnG,gBAAA,kBAAkB,EAAE,wBAAwB;AAC5C,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,eAAe,EAAE,+EAA+E;AAChG,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,aAAa,EAAE,sEAAsE;AACrF,gBAAA,kBAAkB,EAAE,oCAAoC;AACxD,gBAAA,eAAe,EAAE,WAAW;AAC5B,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,cAAc,EAAE,uDAAuD;AACvE,gBAAA,eAAe,EAAE,mBAAmB;AACpC,gBAAA,cAAc,EAAE,QAAQ;AACxB,aAAA;AACD,SAAA;AACD,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,cAAc,EAAE;AACf,YAAA,WAAW,EACV,uJAAuJ;AACxJ,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,SAAS,EAAE,kBAAkB;AAC7B,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,OAAO,EAAE,yCAAyC;AAClD,YAAA,gBAAgB,EAAE;AACjB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,aAAa,EAAE,cAAc;AAC7B,gBAAA,qBAAqB,EAAE,+DAA+D;AACtF,gBAAA,kBAAkB,EAAE,oBAAoB;AACxC,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,eAAe,EAAE,4EAA4E;AAC7F,gBAAA,SAAS,EAAE,SAAS;AACpB,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,aAAa,EAAE,sDAAsD;AACrE,gBAAA,kBAAkB,EAAE,gCAAgC;AACpD,gBAAA,eAAe,EAAE,WAAW;AAC5B,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,cAAc,EAAE,wCAAwC;AACxD,gBAAA,eAAe,EAAE,iBAAiB;AAClC,gBAAA,cAAc,EAAE,QAAQ;AACxB,aAAA;AACD,SAAA;AACD,KAAA;CACD;;MC5DY,gBAAgB,CAAA;AAH7B,IAAA,WAAA,GAAA;AAIC,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,OAAO,EAAW;AAS7C,IAAA;IAPA,gBAAgB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;IAChD;AAEA,IAAA,kBAAkB,CAAC,QAAiB,EAAA;AACnC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzC;iHATY,gBAAgB,GAAA,CAAA,CAAA,CAAA,CAAA;uEAAhB,gBAAgB,EAAA,OAAA,EAAhB,gBAAgB,CAAA,IAAA,EAAA,UAAA,EAFhB,MAAM,EAAA,CAAA,CAAA;;iFAEN,gBAAgB,EAAA,CAAA;cAH5B,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACX,gBAAA,UAAU,EAAE,MAAM;AAClB,aAAA;;;;ICYG,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAAuB;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAA2B;IAAA,EAAA,CAAA,YAAA,EAAW;;IAAtC,EAAA,CAAA,SAAA,EAA2B;IAA3B,EAAA,CAAA,iBAAA,CAAA,qBAAA,CAA2B;;;IAElD,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAAuB;IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAyB;IAAA,EAAA,CAAA,YAAA,EAAW;;IAApC,EAAA,CAAA,SAAA,EAAyB;IAAzB,EAAA,CAAA,iBAAA,CAAA,mBAAA,CAAyB;;;;AAjBnD,IADD,kCAA0C,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACL;IACnC,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAqG;;AAGpG,IADD,8BAAoC,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CACQ;AAAnB,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,qEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,eAAQ,CAAA,CAAA,CAAA,CAAA,CAAC;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CAAyC;;IAAA,EAAA,CAAA,YAAA,EAAS;IAC7F,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAA+C;AAApB,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,qEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,gBAAS,CAAA,CAAA,CAAA,CAAA,CAAC;IAAC,EAAA,CAAA,MAAA,CAAA,CAAA,CAA0C;;AAC1F,IAD0F,iBAAS,EAC7F;AAGL,IADD,+BAAiC,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,CACkC;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAA0C;;IAAA,EAAA,CAAA,YAAA,EAAI;IAChH,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAA,CACA;IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,CAAuE;AAA1B,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,sEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,sBAAe,CAAA,CAAA,CAAA,CAAA,CAAC;IACrE,EAAA,CAAA,MAAA,CAAA,EAAA,CAEA;;AAEE,IAFF,6GAAwB,CAAA,EAAA,EAAA,4DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAEf;IAGV,EAAA,CAAA,YAAA,EAAS,EACJ,EACD;AAMF,IAJJ,gCAAgG,CAAA,EAAA,EAAA,OAAA,CACxF,CAAA,EAAA,EAAA,OAAA,CACC,UACF,CAAA,EAAA,EAAA,IAAA,CACC;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAwD;;IAAA,EAAA,CAAA,YAAA,EAAK;IACjE,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAA2D;;IAAA,EAAA,CAAA,YAAA,EAAK;IACpE,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAA4D;;IAAA,EAAA,CAAA,YAAA,EAAK;IACrE,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAA4D;;IAAA,EAAA,CAAA,YAAA,EAAK,EACjE,EACE;IACR,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,OAAA,CAAO,CAAA,EAAA,EAAA,IAAA,CACF,CAAA,EAAA,EAAA,IAAA,CACC;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAiE;;IAAA,EAAA,CAAA,YAAA,EAAK;IAC1E,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAyE;;IAAA,EAAA,CAAA,YAAA,EAAK;IAClF,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAsE;;IAAA,EAAA,CAAA,YAAA,EAAK;IAC/E,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAA4D;;AACjE,IADiE,iBAAK,EACjE;AAEJ,IADD,2BAAI,CAAA,EAAA,EAAA,IAAA,CACC;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAA2D;;IAAA,EAAA,CAAA,YAAA,EAAK;IACpE,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAmE;;IAAA,EAAA,CAAA,YAAA,EAAK;IAC5E,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAsE;;IAAA,EAAA,CAAA,YAAA,EAAK;IAC/E,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAA6D;;AAClE,IADkE,iBAAK,EAClE;AAEJ,IADD,2BAAI,CAAA,EAAA,EAAA,IAAA,CACC;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAyD;;IAAA,EAAA,CAAA,YAAA,EAAK;IAClE,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAiE;;IAAA,EAAA,CAAA,YAAA,EAAK;IAC1E,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAsE;;IAAA,EAAA,CAAA,YAAA,EAAK;IAC/E,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAmE;;AACxE,IADwE,iBAAK,EACxE;AAEJ,IADD,2BAAI,CAAA,EAAA,EAAA,IAAA,CACC;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAA0D;;IAAA,EAAA,CAAA,YAAA,EAAK;IACnE,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAkE;;IAAA,EAAA,CAAA,YAAA,EAAK;IAC3E,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAmE;;IAAA,EAAA,CAAA,YAAA,EAAK;IAC5E,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI;IAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAkE;;IAAA,iBAAK,EACvE,EACE,EACD,EACH,EACG;;;IA5DgC,EAAA,CAAA,SAAA,CAAA,CAAA,CAAsD;IAAtD,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,EAAA,EAAA,4BAAA,CAAA,EAAA,EAAA,CAAA,cAAA,CAAsD;IAGlD,EAAA,CAAA,SAAA,CAAA,CAAA,CAAyC;IAAzC,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,EAAA,EAAA,uBAAA,CAAA,CAAyC;IACrC,EAAA,CAAA,SAAA,CAAA,CAAA,CAA0C;IAA1C,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,wBAAA,CAAA,CAA0C;IAItF,EAAA,CAAA,SAAA,CAAA,CAAA,CAAyB;IAAzB,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,aAAA,CAAyB;IAAsC,EAAA,CAAA,SAAA,EAA0C;IAA1C,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,wBAAA,CAAA,CAA0C;IAG3G,EAAA,CAAA,SAAA,CAAA,CAAA,CAEA;IAFA,EAAA,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,wBAAA,CAAA,EAAA,GAAA,CAEA;IAAA,EAAA,CAAA,SAAA,CAAA,CAAA,CAIC;IAJD,EAAA,CAAA,aAAA,CAAA,MAAA,CAAA,gBAAA,GAAA,EAAA,GAAA,EAAA,CAIC;IAKiC,EAAA,CAAA,SAAA,CAAA,CAAA,CAA0D;IAA1D,EAAA,CAAA,WAAA,CAAA,gCAAA,EAAA,CAAA,MAAA,CAAA,gBAAA,CAA0D;IAIvF,EAAA,CAAA,SAAA,CAAA,CAAA,CAAwD;IAAxD,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,sCAAA,CAAA,CAAwD;IACxD,EAAA,CAAA,SAAA,CAAA,CAAA,CAA2D;IAA3D,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,yCAAA,CAAA,CAA2D;IAC3D,EAAA,CAAA,SAAA,CAAA,CAAA,CAA4D;IAA5D,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,0CAAA,CAAA,CAA4D;IAC5D,EAAA,CAAA,SAAA,CAAA,CAAA,CAA4D;IAA5D,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,0CAAA,CAAA,CAA4D;IAK5D,EAAA,CAAA,SAAA,CAAA,CAAA,CAAiE;IAAjE,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,+CAAA,CAAA,CAAiE;IACjE,EAAA,CAAA,SAAA,CAAA,CAAA,CAAyE;IAAzE,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,uDAAA,CAAA,CAAyE;IACzE,EAAA,CAAA,SAAA,CAAA,CAAA,CAAsE;IAAtE,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,oDAAA,CAAA,CAAsE;IACtE,EAAA,CAAA,SAAA,CAAA,CAAA,CAA4D;IAA5D,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,0CAAA,CAAA,CAA4D;IAG5D,EAAA,CAAA,SAAA,CAAA,CAAA,CAA2D;IAA3D,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,yCAAA,CAAA,CAA2D;IAC3D,EAAA,CAAA,SAAA,CAAA,CAAA,CAAmE;IAAnE,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,iDAAA,CAAA,CAAmE;IACnE,EAAA,CAAA,SAAA,CAAA,CAAA,CAAsE;IAAtE,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,oDAAA,CAAA,CAAsE;IACtE,EAAA,CAAA,SAAA,CAAA,CAAA,CAA6D;IAA7D,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,2CAAA,CAAA,CAA6D;IAG7D,EAAA,CAAA,SAAA,CAAA,CAAA,CAAyD;IAAzD,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,uCAAA,CAAA,CAAyD;IACzD,EAAA,CAAA,SAAA,CAAA,CAAA,CAAiE;IAAjE,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,+CAAA,CAAA,CAAiE;IACjE,EAAA,CAAA,SAAA,CAAA,CAAA,CAAsE;IAAtE,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,oDAAA,CAAA,CAAsE;IACtE,EAAA,CAAA,SAAA,CAAA,CAAA,CAAmE;IAAnE,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,iDAAA,CAAA,CAAmE;IAGnE,EAAA,CAAA,SAAA,CAAA,CAAA,CAA0D;IAA1D,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,wCAAA,CAAA,CAA0D;IAC1D,EAAA,CAAA,SAAA,CAAA,CAAA,CAAkE;IAAlE,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,gDAAA,CAAA,CAAkE;IAClE,EAAA,CAAA,SAAA,CAAA,CAAA,CAAmE;IAAnE,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,iDAAA,CAAA,CAAmE;IACnE,EAAA,CAAA,SAAA,CAAA,CAAA,CAAkE;IAAlE,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,gDAAA,CAAA,CAAkE;;MC5C9D,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;AAUU,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACrC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAE9C,IAAA,CAAA,QAAQ,GAAG,KAAK;QAChB,IAAA,CAAA,gBAAgB,GAAG,KAAK;QAEf,IAAA,CAAA,4BAA4B,GAAG,yBAAyB;QACxD,IAAA,CAAA,4BAA4B,GAAG,yBAAyB;AA6CjE,IAAA;AApDS,IAAA,UAAU;AACV,IAAA,UAAU;AAKV,IAAA,4BAA4B;AAC5B,IAAA,4BAA4B;IAErC,QAAQ,GAAA;QACL,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/C,QAAA,MAAM,CAAC,KAAK,GAAG,IAAI;AACnB,QAAA,MAAM,CAAC,KAAK,GAAG,IAAI;AACnB,QAAA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM;AAC9B,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAEnC,QAAA,IAAI,IAAI,CAAC,yBAAyB,EAAE,EAAE;AACrC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;YACpB;QACD;QAEA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;QAEpD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAC3F;IAEA,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB;IAC/C;IAEA,MAAM,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC;QACxC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,MAAM,CAAC;IAChE;IAEA,OAAO,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACpB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,MAAM,CAAC;IAChE;IAEQ,yBAAyB,GAAA;AAChC,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,KAAK,MAAM;AAErF,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,KAAK,MAAM;QAErF,IAAI,UAAU,EAAE;YACZ,IAAI,CAAC,MAAM,EAAE;QACjB;QAEA,OAAO,UAAU,IAAI,UAAU;IAChC;uHAvDY,sBAAsB,GAAA,CAAA,CAAA,CAAA,CAAA;oEAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,oBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,yBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YDdnC,EAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAA,CAAiB;;YAAjB,EAAA,CAAA,aAAA,CAAA,CAAA,GAAA,CAAA,QAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAiEC;ACvDU,QAAA,CAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,eAAe,EAAE,eAAe,EAAAA,IAAA,CAAA,SAAA,EAAE,aAAa,cAAE,iBAAiB,EAAA4B,EAAA,CAAA,aAAA,CAAA,EAAA,MAAA,EAAA,CAAA,mlEAAA,CAAA,EAAA,CAAA,CAAA;;iFAIhE,sBAAsB,EAAA,CAAA;cANlC,SAAS;2BACC,oBAAoB,EAAA,OAAA,EACrB,CAAC,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,guGAAA,EAAA,MAAA,EAAA,CAAA,qgDAAA,CAAA,EAAA;gBAKpE,MAAM,EAAA,CAAA;kBAAd;YACQ,gBAAgB,EAAA,CAAA;kBAAxB;;kFAFW,sBAAsB,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,UAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,GAAA;;ACdnC;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"tilde-nlp-ngx-common.mjs","sources":["../../../projects/ngx-common/src/lib/services/icon/icon.service.ts","../../../projects/ngx-common/src/lib/services/dom/dom.service.ts","../../../projects/ngx-common/src/lib/close-button/close-button.component.ts","../../../projects/ngx-common/src/lib/close-button/close-button.component.html","../../../projects/ngx-common/src/lib/close-button/close-button.module.ts","../../../projects/ngx-common/src/lib/notification-message/notification-message.component.html","../../../projects/ngx-common/src/lib/notification-message/notification-message.component.ts","../../../projects/ngx-common/src/lib/notification-message/notification-message.module.ts","../../../projects/ngx-common/src/lib/notification-message/enums/notification-message-type.enum.ts","../../../projects/ngx-common/src/lib/services/alert/injection-tokens/alert-configuration.token.ts","../../../projects/ngx-common/src/lib/services/alert/alert.service.ts","../../../projects/ngx-common/src/lib/helpers/missing-translation.helper.ts","../../../projects/ngx-common/src/lib/helpers/save-file.helper.ts","../../../projects/ngx-common/src/lib/helpers/html-element-parse.helper.ts","../../../projects/ngx-common/src/lib/helpers/auth-headers.helper.ts","../../../projects/ngx-common/src/lib/helpers/file-extension.helper.ts","../../../projects/ngx-common/src/lib/helpers/conversion.helper.ts","../../../projects/ngx-common/src/lib/helpers/sort.helper.ts","../../../projects/ngx-common/src/lib/helpers/html.helper.ts","../../../projects/ngx-common/src/lib/constants/screen-size.const.ts","../../../projects/ngx-common/src/lib/constants/last-used-system-local-storage-key.const.ts","../../../projects/ngx-common/src/lib/constants/error-codes.const.ts","../../../projects/ngx-common/src/lib/helpers/resolution.helper.ts","../../../projects/ngx-common/src/lib/pipes/file-size-label/enums/file-size-unit.enum.ts","../../../projects/ngx-common/src/lib/pipes/file-size-label/file-size-label.pipe.ts","../../../projects/ngx-common/src/lib/helpers/file-size-label.helper.ts","../../../projects/ngx-common/src/lib/helpers/custom-paginator-internatioinalization.helper.ts","../../../projects/ngx-common/src/lib/helpers/hash.helper.ts","../../../projects/ngx-common/src/lib/terminology/services/system-api-v2/models/engine-status.enum.ts","../../../projects/ngx-common/src/lib/terminology/services/system-api-v2/models/engine-sub-status.enum.ts","../../../projects/ngx-common/src/lib/terminology/services/system-api-v2/models/tilde-vendor.const.ts","../../../projects/ngx-common/src/lib/terminology/config/services/terminology-config/terminology-config.service.ts","../../../projects/ngx-common/src/lib/terminology/services/system-api-v2/system-api.service.ts","../../../projects/ngx-common/src/lib/services/system/system.service.ts","../../../projects/ngx-common/src/lib/pipes/filter-with-highlight/filter-with-highlight.pipe.ts","../../../projects/ngx-common/src/lib/pipes/filter-with-highlight/filter-with-highlight.module.ts","../../../projects/ngx-common/src/lib/pipes/sort-translations/sort-translations.pipe.ts","../../../projects/ngx-common/src/lib/pipes/sort-translations/sort-translations.module.ts","../../../projects/ngx-common/src/lib/pipes/sort-translations-by-property/sort-translations-by-property.pipe.ts","../../../projects/ngx-common/src/lib/pipes/sort-translations-by-property/sort-translations-by-property.module.ts","../../../projects/ngx-common/src/lib/pipes/language-translate/language-translate.pipe.ts","../../../projects/ngx-common/src/lib/pipes/language-translate/language-translate.module.ts","../../../projects/ngx-common/src/lib/pipes/date-ago/models/date-ago-settings.token.ts","../../../projects/ngx-common/src/lib/pipes/date-ago/date-ago.pipe.ts","../../../projects/ngx-common/src/lib/pipes/date-ago/date-ago.module.ts","../../../projects/ngx-common/src/lib/pipes/object-length/object-length.pipe.ts","../../../projects/ngx-common/src/lib/pipes/object-length/object-length.module.ts","../../../projects/ngx-common/src/lib/pipes/sort-by-number/sort-by-number.pipe.ts","../../../projects/ngx-common/src/lib/pipes/sort-alphabetically/sort-alphabetically.pipe.ts","../../../projects/ngx-common/src/lib/pipes/sort-alphabetically/sort-alphabetically.module.ts","../../../projects/ngx-common/src/lib/pipes/sort-language-list/sort-language-list.pipe.ts","../../../projects/ngx-common/src/lib/pipes/domain-translate/domain-translate.pipe.ts","../../../projects/ngx-common/src/lib/pipes/sort-domains/sort-domains.pipe.ts","../../../projects/ngx-common/src/lib/services/language-translate/language-translate.service.ts","../../../projects/ngx-common/src/lib/services/notification/models/operations.enum.ts","../../../projects/ngx-common/src/lib/services/notification/notification.service.ts","../../../projects/ngx-common/src/lib/inline-message/models/inline-message-icon-position.enum.ts","../../../projects/ngx-common/src/lib/inline-message/inline-message.component.html","../../../projects/ngx-common/src/lib/inline-message/inline-message.component.ts","../../../projects/ngx-common/src/lib/inline-message/inline-message.module.ts","../../../projects/ngx-common/src/lib/inline-message/models/inline-message-type.enum.ts","../../../projects/ngx-common/src/lib/directives/click-outside/click-outside.directive.ts","../../../projects/ngx-common/src/lib/directives/click-outside/click-outside.module.ts","../../../projects/ngx-common/src/lib/directives/drag-and-drop/drag-and-drop.directive.ts","../../../projects/ngx-common/src/lib/directives/drag-and-drop/drag-and-drop.module.ts","../../../projects/ngx-common/src/lib/directives/mat-button-loading/mat-button-loading.directive.ts","../../../projects/ngx-common/src/lib/directives/mat-button-loading/mat-button-loading.module.ts","../../../projects/ngx-common/src/lib/tld-loader/tld-loader.component.ts","../../../projects/ngx-common/src/lib/tld-loader/tld-loader.component.html","../../../projects/ngx-common/src/lib/tld-loader/tld-loader.module.ts","../../../projects/ngx-common/src/lib/company-product/company-product.component.ts","../../../projects/ngx-common/src/lib/company-product/company-product.component.html","../../../projects/ngx-common/src/lib/company-product/company-product.module.ts","../../../projects/ngx-common/src/lib/footer/footer.component.html","../../../projects/ngx-common/src/lib/footer/footer.component.ts","../../../projects/ngx-common/src/lib/footer/footer.module.ts","../../../projects/ngx-common/src/lib/file-upload/models/file-upload-error-type.enum.ts","../../../projects/ngx-common/src/lib/extension-dialog/models/enums/file-type-icons.enum.ts","../../../projects/ngx-common/src/lib/extension-dialog/models/enums/file-categories.enum.ts","../../../projects/ngx-common/src/lib/extension-dialog/models/enums/file-types.enum.ts","../../../projects/ngx-common/src/lib/extension-dialog/models/enums/file-extensions.enum.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/word.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/web.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/scanned.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/powerpoint.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/pdf.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/other.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/office-other.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/interchange.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/icons/file-types/excel.icon.ts","../../../projects/ngx-common/src/lib/extension-dialog/extension-dialog.component.html","../../../projects/ngx-common/src/lib/extension-dialog/extension-dialog.component.ts","../../../projects/ngx-common/src/lib/extension-dialog/services/extension-dialog.service.ts","../../../projects/ngx-common/src/lib/extension-dialog/components/open-extension-dialog/open-extension-dialog.component.ts","../../../projects/ngx-common/src/lib/extension-dialog/components/open-extension-dialog/open-extension-dialog.component.html","../../../projects/ngx-common/src/lib/extension-dialog/extension-dialog.module.ts","../../../projects/ngx-common/src/lib/file-upload/models/file-upload.icon.ts","../../../projects/ngx-common/src/lib/file-upload/file-upload.component.html","../../../projects/ngx-common/src/lib/file-upload/file-upload.component.ts","../../../projects/ngx-common/src/lib/file-upload/file-upload.module.ts","../../../projects/ngx-common/src/lib/filter-bar/filter-bar.component.html","../../../projects/ngx-common/src/lib/filter-bar/filter-bar.component.ts","../../../projects/ngx-common/src/lib/filter-bar/filter-bar.module.ts","../../../projects/ngx-common/src/lib/multi-functional-table/constants/disable-export-attribute-name.const.ts","../../../projects/ngx-common/src/lib/multi-functional-table/models/export-format.enum.ts","../../../projects/ngx-common/src/lib/status-display/status-display.component.html","../../../projects/ngx-common/src/lib/status-display/status-display.component.ts","../../../projects/ngx-common/src/lib/multi-functional-table/multi-functional-table.component.html","../../../projects/ngx-common/src/lib/multi-functional-table/multi-functional-table.component.ts","../../../projects/ngx-common/src/lib/status-display/status-display.module.ts","../../../projects/ngx-common/src/lib/multi-functional-table/multi-functional-table.module.ts","../../../projects/ngx-common/src/lib/confirmation-modal/models/confirmation.enum.ts","../../../projects/ngx-common/src/lib/confirmation-modal/confirmation-modal.component.html","../../../projects/ngx-common/src/lib/confirmation-modal/confirmation-modal.component.ts","../../../projects/ngx-common/src/lib/confirmation-modal/confirmation-modal.module.ts","../../../projects/ngx-common/src/lib/confirmation-modal/services/confirmation.service.ts","../../../projects/ngx-common/src/lib/open-close-button/injection-tokens/open-close-btn-icons.token.ts","../../../projects/ngx-common/src/lib/open-close-button/open-close-button.component.html","../../../projects/ngx-common/src/lib/open-close-button/open-close-button.component.ts","../../../projects/ngx-common/src/lib/open-close-button/open-close-button.module.ts","../../../projects/ngx-common/src/lib/terminology/enums/engine-term-collection-scope.enum.ts","../../../projects/ngx-common/src/lib/terminology/enums/engine-term-collection-source.enum.ts","../../../projects/ngx-common/src/lib/terminology/enums/engine-term-collection-status.enum.ts","../../../projects/ngx-common/src/lib/terminology/enums/combined-collection-tooltip-key.enum.ts","../../../projects/ngx-common/src/lib/terminology/enums/mt-collection-status.enum.ts","../../../projects/ngx-common/src/lib/terminology/enums/engine-term-collection-sub-status.enum.ts","../../../projects/ngx-common/src/lib/terminology/models/combined-collection.model.ts","../../../projects/ngx-common/src/lib/terminology/services/terminology-collection/terminology-collection.service.ts","../../../projects/ngx-common/src/lib/terminology/services/engine-term-api/engine-term-api.service.ts","../../../projects/ngx-common/src/lib/terminology/services/terminology-api/terminology-api.service.ts","../../../projects/ngx-common/src/lib/terminology/services/terminology/terminology.service.ts","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-collection-list/terminology-collection-card/terminology-collection-card.component.html","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-collection-list/terminology-collection-card/terminology-collection-card.component.ts","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-collection-list/terminology-collection-list.component.html","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-collection-list/terminology-collection-list.component.ts","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-create-collection/terminology-create-collection-dialog/terminology-create-collection-dialog.component.html","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-create-collection/terminology-create-collection-dialog/terminology-create-collection-dialog.component.ts","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-create-collection/terminology-create-collection.component.html","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-create-collection/terminology-create-collection.component.ts","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-panel.component.html","../../../projects/ngx-common/src/lib/terminology/components/terminology-panel/terminology-panel.component.ts","../../../projects/ngx-common/src/lib/terminology/icons/collections-menu.icon.ts","../../../projects/ngx-common/src/lib/terminology/terminology.component.html","../../../projects/ngx-common/src/lib/terminology/terminology.component.ts","../../../projects/ngx-common/src/lib/terminology/terminology.module.ts","../../../projects/ngx-common/src/lib/text-to-speech/services/tts-api.service.ts","../../../projects/ngx-common/src/lib/text-to-speech/text-to-speech.component.html","../../../projects/ngx-common/src/lib/text-to-speech/text-to-speech.component.ts","../../../projects/ngx-common/src/lib/llm/models/llm-actions.enum.ts","../../../projects/ngx-common/src/lib/analytics/plausible/plausible.helper.ts","../../../projects/ngx-common/src/lib/analytics/plausible/plausible-event.directive.ts","../../../projects/ngx-common/src/lib/analytics/plausible/plausible.module.ts","../../../projects/ngx-common/src/lib/llm/models/llm-writing-style.enum.ts","../../../projects/ngx-common/src/lib/llm/models/llm-configuration.token.ts","../../../projects/ngx-common/src/lib/llm/services/llm-helper.service.ts","../../../projects/ngx-common/src/lib/llm/shared/llm-textarea/llm-textarea.component.ts","../../../projects/ngx-common/src/lib/llm/shared/llm-textarea/llm-textarea.component.html","../../../projects/ngx-common/src/lib/llm/components/llm-textarea-with-actions/llm-textarea-with-actions.component.html","../../../projects/ngx-common/src/lib/llm/components/llm-textarea-with-actions/llm-textarea-with-actions.component.ts","../../../projects/ngx-common/src/lib/llm/icons/llm-menu.icon.ts","../../../projects/ngx-common/src/lib/new-feature-dialog/new-feature-dialog.component.ts","../../../projects/ngx-common/src/lib/new-feature-dialog/new-feature-dialog.component.html","../../../projects/ngx-common/src/lib/new-feature-dialog/new-feature-dialog-wrapper/new-feature-dialog.service.ts","../../../projects/ngx-common/src/lib/new-feature-dialog/new-feature-dialog-wrapper/new-feature-dialog-wrapper.component.ts","../../../projects/ngx-common/src/lib/llm/components/llm-summary/llm-summary.component.ts","../../../projects/ngx-common/src/lib/llm/components/llm-summary/llm-summary.component.html","../../../projects/ngx-common/src/lib/llm/components/llm-rephrase/llm-rephrase.component.ts","../../../projects/ngx-common/src/lib/llm/components/llm-rephrase/llm-rephrase.component.html","../../../projects/ngx-common/src/lib/llm/llm.component.html","../../../projects/ngx-common/src/lib/llm/llm.component.ts","../../../projects/ngx-common/src/lib/llm/llm.module.ts","../../../projects/ngx-common/src/lib/sidebar/services/sidebar.service.ts","../../../projects/ngx-common/src/lib/sidebar/sidebar.component.ts","../../../projects/ngx-common/src/lib/sidebar/sidebar.component.html","../../../projects/ngx-common/src/lib/toast/toast-service/toast-service.service.ts","../../../projects/ngx-common/src/lib/toast/toast.component.html","../../../projects/ngx-common/src/lib/toast/toast.component.ts","../../../projects/ngx-common/src/lib/core/auth/subscription-plan.enum.ts","../../../projects/ngx-common/src/lib/core/title-strategy/custom-title-strategy-configuration.token.ts","../../../projects/ngx-common/src/lib/core/title-strategy/custom-title-strategy.service.ts","../../../projects/ngx-common/src/lib/core/title-strategy/custom-title-strategy.provider.ts","../../../projects/ngx-common/src/lib/core/localization/missing-translation-handler.service.ts","../../../projects/ngx-common/src/lib/core/localization/select-language-dialog-component/select-language-dialog.component.html","../../../projects/ngx-common/src/lib/core/localization/select-language-dialog-component/select-language-dialog.component.ts","../../../projects/ngx-common/src/lib/global-message/global-message.component.html","../../../projects/ngx-common/src/lib/global-message/global-message.component.ts","../../../projects/ngx-common/src/lib/subscription/models/subscription-state.enum.ts","../../../projects/ngx-common/src/lib/subscription/chargebee-mount.service.ts","../../../projects/ngx-common/src/lib/subscription/subscription.component.html","../../../projects/ngx-common/src/lib/subscription/subscription.component.ts","../../../projects/ngx-common/src/lib/accessibility/models/accessibility-font-sizes.enum.ts","../../../projects/ngx-common/src/lib/accessibility/models/accessibility-contrasts.enum.ts","../../../projects/ngx-common/src/lib/accessibility/services/accessibility-text-magnifier.service.ts","../../../projects/ngx-common/src/lib/accessibility/services/accessibility-screen-mask.service.ts","../../../projects/ngx-common/src/lib/accessibility/services/accessibility.service.ts","../../../projects/ngx-common/src/lib/accessibility/accessibility-dialog.component.html","../../../projects/ngx-common/src/lib/accessibility/accessibility-dialog.component.ts","../../../projects/ngx-common/src/lib/custom-translate-loader/custom-translate-loader.service.ts","../../../projects/ngx-common/src/lib/analytics/cookie-consent/translations/cookie-consent.translations.ts","../../../projects/ngx-common/src/lib/analytics/services/providers/matomo.serivce.ts","../../../projects/ngx-common/src/lib/analytics/services/analytics.service.ts","../../../projects/ngx-common/src/lib/analytics/cookie-consent/cookie-consent.component.html","../../../projects/ngx-common/src/lib/analytics/cookie-consent/cookie-consent.component.ts","../../../projects/ngx-common/src/public-api.ts","../../../projects/ngx-common/src/tilde-nlp-ngx-common.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { MatIconRegistry } from '@angular/material/icon';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IconService {\r\n constructor(private readonly iconRegistry: MatIconRegistry,\r\n private readonly sanitizer: DomSanitizer) {\r\n }\r\n\r\n //https://material.angular.io/components/icon/examples\r\n /** Registers svg icons to mat icon registry. Icon SVG's should be under some key in object. Icon name can be used with property name in lowercase. */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n registerIcons(icons: any) {\r\n for (const key in icons) {\r\n this.iconRegistry.addSvgIconLiteral(key.toLowerCase(), this.sanitizer.bypassSecurityTrustHtml(icons[key]));\r\n }\r\n }\r\n\r\n registerIconFromUrl(name: string, url: string) {\r\n this.iconRegistry.addSvgIcon(name, this.sanitizer.bypassSecurityTrustResourceUrl(url));\r\n }\r\n\r\n addSvgIconSet(path: string, namespace?: string) {\r\n namespace ?\r\n this.iconRegistry.addSvgIconSetInNamespace(namespace, this.sanitizer.bypassSecurityTrustResourceUrl(path)) :\r\n this.iconRegistry.addSvgIconSet(this.sanitizer.bypassSecurityTrustResourceUrl(path));\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nconst _localStorage: Storage | null = typeof localStorage !== 'undefined' ? localStorage : null;\r\nconst _window: Window | null = typeof window !== 'undefined' ? window : null;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DOMService {\r\n get window(): Window | null {\r\n return _window;\r\n }\r\n\r\n get localStorage(): Storage | null {\r\n return _localStorage;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'tld-close-button',\r\n templateUrl: './close-button.component.html',\r\n standalone: false\r\n})\r\nexport class CloseButtonComponent {\r\n // any type because emitter doesn't really need a value\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() tldClick: EventEmitter<any> = new EventEmitter();\r\n @Input() ariaCode = \"CLOSE_BUTTON\";\r\n // This property is created so it is easier to access real button from outside component.\r\n @ViewChild(\"clearButton\") clearButton!: MatButton;\r\n @Input() disabled!: boolean;\r\n @Input() tooltip!: string;\r\n\r\n clicked() {\r\n this.tldClick.emit(null);\r\n }\r\n}\r\n","<button [matTooltip]=\"tooltip | translate\"\r\n#clearButton mat-icon-button (click)=\"clicked()\" [attr.aria-label]=\"'ARIA_LABELS.'+ariaCode | translate\"\r\n [disabled]=\"disabled\">\r\n <span class=\"material-icons\">\r\n close\r\n </span>\r\n</button>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CloseButtonComponent } from './close-button.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CloseButtonComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n TranslateModule,\r\n MatTooltipModule\r\n ],\r\n exports: [\r\n CloseButtonComponent\r\n ]\r\n})\r\nexport class CloseButtonModule { }\r\n","<div class=\"notification-message {{className}}\">\r\n <div class=\"notification-message-container tld-default-border\" [ngClass.lt-md]=\"'mobile'\" [class.inline]=\"inline\"\r\n fxLayout=\"row\" fxLayoutAlign=\"start start\" [attr.id]=\"message?.id\" aria-live=\"polite\" fxLayout=\"row\">\r\n <span class=\"material-icons-outlined message-icon\">\r\n {{iconNames[message.type]}}\r\n </span>\r\n <div class=\"items-container\" fxFlex>\r\n <div fxLayout=\"row\">\r\n <div class=\"text-container\" fxFlex>\r\n <p *ngIf=\"message.title\" class=\"message-title\"\r\n [innerHtml]=\"message.title | translate: message.localizationParams\"></p>\r\n <p *ngIf=\"message.body\" class=\"message-body\">\r\n <span [innerHtml]=\"message.body | translate: message.localizationParams\"></span>\r\n <span *ngIf=\"message.support\" [innerHtml]=\"message.support | translate: message.localizationParams\"></span>\r\n </p>\r\n </div>\r\n <button\r\n *ngIf=\"message.callbackButtonText\"\r\n color=\"accent\"\r\n mat-stroked-button\r\n class=\"callback-button\"\r\n (click)=\"message?.callbackButtonClick()\"\r\n >\r\n <mat-icon *ngIf=\"message.callbackButtonIcon\">{{message.callbackButtonIcon}}</mat-icon>\r\n {{ message.callbackButtonText | translate }}\r\n </button>\r\n <tld-close-button *ngIf=\"!message.hideClose && !message.callbackButtonText\" class=\"close-button\" [class.no-top-margin]=\"!message.title || !message.body\" (tldClick)=\"closeClick()\">\r\n </tld-close-button>\r\n </div>\r\n <div fxLayout=\"row\" fxLayoutGap=\"16px\" fxLayoutAlign=\"start center\"\r\n *ngIf=\"message.buttonText || message.linkHref || message.routerLink\">\r\n <button class=\"message-action-button\" color=\"accent\" mat-flat-button *ngIf=\"message.buttonText\"\r\n (click)=\"buttonClick()\">{{message.buttonText | translate}} </button>\r\n <a class=\"message-action-link\" *ngIf=\"message.linkHref && message.linkText\" (click)=\"linkClick()\"\r\n [attr.href]=\"message.linkHref\">{{message.linkText |\r\n translate}}</a>\r\n <a class=\"message-action-link\" *ngIf=\"message.routerLink && message.linkText\" (click)=\"linkClick()\"\r\n [routerLink]=\"[message.routerLink]\">{{message.linkText |\r\n translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NotificationMessageType } from './enums/notification-message-type.enum';\r\nimport { NotificationMessage } from './interfaces/notification-message.model';\r\n\r\n@Component({\r\n selector: 'lib-tld-notification-message',\r\n templateUrl: './notification-message.component.html',\r\n styleUrls: ['./notification-message.component.scss'],\r\n standalone: false\r\n})\r\nexport class NotificationMessageComponent implements OnInit {\r\n @Input() message!: NotificationMessage;\r\n\r\n @Output() buttonClicked = new EventEmitter();\r\n @Output() closeClicked = new EventEmitter();\r\n @Output() linkClicked = new EventEmitter();\r\n /** Adds additional class that makes message to take less space on screen. */\r\n @Input() inline!: boolean;\r\n\r\n readonly iconNames: { [key in NotificationMessageType]: string } = {\r\n \"BASIC\": \"info\",\r\n \"INFO\": \"info\",\r\n \"ERROR\": \"error\",\r\n \"SUCCESS\": \"check_circle\",\r\n \"WARNING\": \"info\",\r\n }\r\n className!: string;\r\n\r\n ngOnInit(): void {\r\n this.className = this.message.type.toLocaleLowerCase();\r\n }\r\n\r\n buttonClick() {\r\n this.buttonClicked.next(null)\r\n }\r\n\r\n closeClick() {\r\n this.closeClicked.next(null)\r\n }\r\n\r\n linkClick(){\r\n this.linkClicked.next(null)\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CloseButtonModule } from '../close-button/close-button.module';\r\nimport { NotificationMessageComponent } from './notification-message.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n NotificationMessageComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FlexLayoutModule,\r\n CloseButtonModule,\r\n MatButtonModule,\r\n TranslateModule,\r\n RouterModule,\r\n MatIconModule\r\n ],\r\n exports: [\r\n NotificationMessageComponent\r\n ]\r\n})\r\nexport class NotificationMessageModule { }\r\n","export enum NotificationMessageType{\r\n BASIC = \"BASIC\",\r\n INFO = \"INFO\",\r\n WARNING = \"WARNING\",\r\n SUCCESS = \"SUCCESS\",\r\n ERROR = \"ERROR\"\r\n}","export const ALERT_CONFIGURATION_TOKEN = 'ALERT_CONFIGURATION_TOKEN';","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { NotificationMessage, NotificationMessageType } from '../../notification-message';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { AlertConfiguration } from './models/alert-configuration.model';\r\nimport { ALERT_CONFIGURATION_TOKEN } from './injection-tokens/alert-configuration.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AlertService {\r\n constructor(@Optional() @Inject(ALERT_CONFIGURATION_TOKEN) private readonly config: AlertConfiguration) {}\r\n\r\n private messageSubject: Subject<NotificationMessage> = new Subject();\r\n\r\n get defaultParams() {\r\n return {\r\n email: this.config.supportEmail,\r\n registerLink: this.config.registerLink,\r\n };\r\n }\r\n\r\n private readonly defaultErrorKey = 'ERROR_DEFAULT';\r\n private readonly errorKey = 'ERRORS.';\r\n private readonly numericErrorKeyPrefix = 'E_';\r\n // if message key has key with this postfix, message should be with title\r\n private readonly titlePostFix = '_TITLE';\r\n // if message key has key with this postfix, message should be with support info, it is configured and turned on\r\n private readonly supportPostFix = '_SUPPORT';\r\n private readonly subscriptionPostFix = '_SUBSCRIPTION';\r\n\r\n defaultError(error?: any) {\r\n if (error) {\r\n console.error(error);\r\n }\r\n this.error(\r\n `${this.errorKey}${this.defaultErrorKey}`,\r\n error,\r\n this.defaultParams\r\n );\r\n }\r\n\r\n getMessages() {\r\n return this.messageSubject.asObservable();\r\n }\r\n\r\n basic(text: string, params?: any) {\r\n this.emit(NotificationMessageType.BASIC, text, null, params);\r\n }\r\n\r\n info(text: string, params?: any) {\r\n this.emit(NotificationMessageType.INFO, text, null, params);\r\n }\r\n\r\n success(text: string, params?: any) {\r\n this.emit(NotificationMessageType.SUCCESS, text, null, params);\r\n }\r\n\r\n error(text: string, error: any, params?: any) {\r\n console.error(error);\r\n this.emit(NotificationMessageType.ERROR, text, error, params);\r\n }\r\n\r\n warning(text: string, params?: any, hideClose?: boolean) {\r\n this.emit(NotificationMessageType.WARNING, text, null, params, undefined, hideClose);\r\n }\r\n\r\n deleteMessage(type: NotificationMessageType, text: string, params?: any, hideClose?: boolean): void {\r\n this.emit(type, text, null, params, true, hideClose);\r\n }\r\n\r\n unhandeledError(error: any, errorTranslationSubKeys: string[] = [], params?: any) {\r\n if (error) {\r\n const errorKey = this.findErrorKey(error, errorTranslationSubKeys);\r\n\r\n if (errorKey) {\r\n this.error(errorKey, error, params ?? this.defaultParams);\r\n return;\r\n }\r\n }\r\n this.defaultError(error);\r\n }\r\n\r\n findErrorTitleAndLocalizationKey(error: unknown, errorTranslationSubKeys: string[]): {\r\n title: string;\r\n description: string;\r\n } {\r\n const errorDescriptionKey = this.findErrorKey(error, errorTranslationSubKeys);\r\n let errorTitleKey = null;\r\n\r\n if (errorDescriptionKey) {\r\n errorTitleKey = this.findPostfix(errorDescriptionKey, this.titlePostFix);\r\n }\r\n\r\n return {\r\n description: errorDescriptionKey as string,\r\n title: errorTitleKey as string,\r\n };\r\n }\r\n\r\n private findErrorKey(error: any, errorTranslationSubKeys: string[]) {\r\n if (!error) {\r\n return null;\r\n }\r\n\r\n let errorKey = null;\r\n const errorTranslations = this.config.availableLanguages.en.ERRORS;\r\n if (\r\n error instanceof HttpErrorResponse &&\r\n errorTranslations[this.numericErrorKeyPrefix + error.status]\r\n ) {\r\n errorKey = this.numericErrorKeyPrefix + error.status;\r\n } else if (errorTranslations[error.ErrorCode]) {\r\n errorKey = error.ErrorCode;\r\n } else if (\r\n errorTranslations[this.numericErrorKeyPrefix + error.ErrorCode]\r\n ) {\r\n errorKey = this.numericErrorKeyPrefix + error.ErrorCode;\r\n } else if (errorTranslations[error.error?.ErrorCode]) {\r\n errorKey = error.error?.ErrorCode;\r\n } else if (errorTranslations[error.error]) {\r\n errorKey = error.error;\r\n } else if (\r\n errorTranslations[this.numericErrorKeyPrefix + error.error?.ErrorCode]\r\n ) {\r\n errorKey = this.numericErrorKeyPrefix + error.error?.ErrorCode;\r\n } else if (errorTranslations[this.numericErrorKeyPrefix + error.error?.error?.code]) {\r\n errorKey = this.numericErrorKeyPrefix + error.error?.error?.code\r\n }\r\n\r\n if (!errorKey) {\r\n for (let i = 0; i < errorTranslationSubKeys.length; i++) {\r\n const subKey = errorTranslationSubKeys[i];\r\n const element = errorTranslations[subKey];\r\n if (element[error.ErrorCode]) {\r\n errorKey = `${subKey}.${error.ErrorCode}`;\r\n break;\r\n }\r\n }\r\n }\r\n return this.errorKey + (errorKey ?? this.defaultErrorKey);\r\n }\r\n\r\n private emit(\r\n type: NotificationMessageType,\r\n text: string,\r\n error: any,\r\n params?: any,\r\n deleteMsg?: boolean,\r\n hideClose?: boolean\r\n ) {\r\n // if there is no title for this text, text will be shown as title\r\n const title = this.findPostfix(text, this.titlePostFix) ?? text;\r\n const message: NotificationMessage = {\r\n body: text === title ? undefined : text,\r\n title,\r\n type,\r\n localizationParams: { ...this.defaultParams, ...params },\r\n support: this.getSupportMessage(text) as string,\r\n delete: deleteMsg,\r\n hideClose: hideClose\r\n };\r\n if (error) {\r\n message.error = error;\r\n }\r\n this.messageSubject.next(message);\r\n }\r\n\r\n private getSupportMessage(text: string): string | null {\r\n const support = this.findPostfix(text, this.supportPostFix);\r\n const subscription = this.findPostfix(text, this.subscriptionPostFix);\r\n\r\n if (this.config.contactSupport && support !== null) {\r\n return support;\r\n } else if (\r\n this.config.subscriptionSupport && subscription !== null\r\n ) {\r\n return subscription;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private findPostfix(text: string, postfix: string) {\r\n const parts = text.split('.');\r\n let localizationObject = this.config.availableLanguages.en;\r\n for (let i = 0; i < parts.length; i++) {\r\n if (i > 0) {\r\n localizationObject = localizationObject[parts[i - 1]];\r\n }\r\n if (!localizationObject[parts[i]]) {\r\n return null;\r\n }\r\n }\r\n const keyWithTitle = parts[parts.length - 1] + postfix;\r\n return localizationObject[keyWithTitle] ? text + postfix : null;\r\n }\r\n}\r\n","import { MissingTranslationHandler, MissingTranslationHandlerParams } from \"@ngx-translate/core\";\r\n\r\nexport class MissingTranslationHelper implements MissingTranslationHandler {\r\n handle(params: MissingTranslationHandlerParams) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return (params.interpolateParams as any)?.default || params.key;\r\n }\r\n}\r\n","export class SaveFileHelper {\r\n static saveFile(content: string, fileName: string) {\r\n const blob = new Blob([content]);\r\n this.saveBlob(blob, fileName);\r\n }\r\n\r\n static saveBlob(blob: Blob, fileName: string) {\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(blob);\r\n link.download = fileName;\r\n link.click();\r\n link.remove();\r\n }\r\n}\r\n","export class HtmlElementParseHelper {\r\n static tableAsCsv(tableElement: HTMLElement, ignoreAttributeName?: string) {\r\n const csv_data = [];\r\n const rows = tableElement.querySelectorAll('tr');\r\n const columnSelector = ignoreAttributeName ? `td:not([${ignoreAttributeName}]),th:not([${ignoreAttributeName}])` : `td,th`;\r\n for (let i = 0; i < rows.length; i++) {\r\n const cols = rows[i].querySelectorAll(columnSelector);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const csvrow = Array.from(cols).map((element: any) => `\"${element.innerText}\"`);\r\n csv_data.push(csvrow.join(\",\"));\r\n }\r\n return csv_data.join('\\n');\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nexport class AuthHeadersHelper {\r\n static getAuthHeaders(clientId: string) {\r\n const authHeaders: any = {};\r\n\r\n if (clientId) {\r\n authHeaders['client-id'] = clientId;\r\n }\r\n\r\n authHeaders['Content-Type'] = 'application/json';\r\n\r\n return authHeaders;\r\n }\r\n\r\n static getAppIdAuthHeaders(appId: string): any {\r\n const authHeaders: any = {};\r\n if (appId) {\r\n authHeaders['X-App-Id'] = appId;\r\n }\r\n return authHeaders;\r\n }\r\n}\r\n","export class FileExtensionHelper {\r\n static getFileExtension(fileName: string) {\r\n return fileName.slice(fileName.lastIndexOf(\".\") + 1).toLowerCase();\r\n }\r\n}","export class ConversionHelper {\r\n static bytesToMb(bytes: number): number {\r\n return Math.round(bytes / 1048576);\r\n }\r\n\r\n static pascalCaseToEnum(property: string): string {\r\n return property\r\n .replace(new RegExp('([a-z])([A-Z])', 'g'), '$1_$2')\r\n .toUpperCase();\r\n }\r\n}\r\n","export class SortHelper {\r\n\t/**\r\n\t * Sorts an array of objects based on the order of values specified in another array.\r\n\t *\r\n\t * @param objectArr - The array of objects to be sorted.\r\n\t * @param sortByArray - The array that defines the preferred order of values.\r\n\t * @param fieldName - The name of the field in the objects used for sorting.\r\n\t *\r\n\t * Objects in `objectArr` will be sorted based on the position of their `fieldName` value in `sortByArray`.\r\n\t */\r\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\tstatic sortByArray(objectArr: any[], sortByArray: any[], fieldName: string) {\r\n\t\tobjectArr.sort((a, b) => {\r\n\t\t\tconst aPreferredIndex = sortByArray.indexOf(a[fieldName]);\r\n\t\t\tconst bPreferredIndex = sortByArray.indexOf(b[fieldName]);\r\n\t\t\treturn aPreferredIndex < bPreferredIndex && aPreferredIndex !== -1 ? -1 : 1;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Transforms the input array of objects by sorting them based on the specified sortingValueKey.\r\n\t * @param values - An array of objects to be sorted.\r\n\t * @param sortingValueKey - The key by which the provided values should be sorted, leave it empty if you want to sort string[].\r\n\t */\r\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\tstatic sortAlphabetically(values: any[], sortingValueKey?: string): any {\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\tvalues.sort((a: any, b: any) => {\r\n\t\t\tif (!sortingValueKey) {\r\n\t\t\t\treturn a.localeCompare(b);\r\n\t\t\t}\r\n\r\n\t\t\tconst aTranslated = a[sortingValueKey].toLowerCase();\r\n\t\t\tconst bTranslated = b[sortingValueKey].toLowerCase();\r\n\t\t\treturn aTranslated.localeCompare(bTranslated);\r\n\t\t});\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n\t/**\r\n\t * Sorts an array of values by a specified numeric property or by their numeric value if no property is specified.\r\n\t * @param values - The array of values to be sorted. Can be an array of objects or primitive numeric values.\r\n\t * @param sortingValueKey - The key of the numeric property in the objects to sort by.\r\n\t * @param desc - Flag indicating whether to sort in descending (true) or ascending (false) order.\r\n\t */\r\n\tstatic sortByNumber<T>(values: T[], sortingValueKey?: string, desc = true): T[] {\r\n\t\tconst getValueByKey = (obj: T, keyPath?: string): number => {\r\n\t\t\tif (!keyPath) return Number(obj ?? 0);\r\n\r\n\t\t\tconst keys = keyPath.split('.');\r\n\t\t\tlet value = obj;\r\n\t\t\tfor (const key of keys) {\r\n\t\t\t\tif (value && typeof value === 'object' && key in value) {\r\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\t\t\t\tvalue = (value as any)[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn Number(value ?? 0);\r\n\t\t};\r\n\r\n\t\tvalues.sort((a, b) => {\r\n\t\t\tconst numberA = getValueByKey(a, sortingValueKey);\r\n\t\t\tconst numberB = getValueByKey(b, sortingValueKey);\r\n\t\t\treturn desc ? numberB - numberA : numberA - numberB;\r\n\t\t});\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n\t/**\r\n\t * Sorts an array of values by a specified boolean property or by their boolean value if no property is specified.\r\n\t * @param values - The array of values to be sorted. Can be an array of objects or primitive boolean values.\r\n\t * @param sortingValueKey - The key of the boolean property in the objects to sort by.\r\n\t * @param desc - Flag indicating whether to sort in descending (true) or ascending (false) order.\r\n\t */\r\n\tstatic sortByBoolean<T>(values: T[], sortingValueKey?: string, desc = true): T[] {\r\n\t\tconst getValue = (item: T): boolean => {\r\n\t\t\tif (sortingValueKey) {\r\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\t\t\tconst value = (item as any)[sortingValueKey];\r\n\t\t\t\treturn Boolean(value);\r\n\t\t\t}\r\n\t\t\treturn Boolean(item);\r\n\t\t};\r\n\r\n\t\tvalues.sort((a, b) => {\r\n\t\t\tconst valA = getValue(a) ? 1 : 0;\r\n\t\t\tconst valB = getValue(b) ? 1 : 0;\r\n\t\t\treturn desc ? valB - valA : valA - valB;\r\n\t\t});\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n\t/**\r\n\t * This method is intended to be used with sorting methods like Array.sort(). It compares two strings, a and b, against a reference substring input.\r\n\t * @param a - The first string to be compared.\r\n\t * @param b - The second string to be compared.\r\n\t * @param input - The reference substring used to influence the sorting order.\r\n\t */\r\n\tstatic sortByStartingLetter(a: string, b: string, input: string) {\r\n\t\tconst startsWithInputA = a.toLowerCase().startsWith(input.toLowerCase());\r\n\t\tconst startsWithInputB = b.toLowerCase().startsWith(input.toLowerCase());\r\n\r\n\t\tif (startsWithInputA && !startsWithInputB) {\r\n\t\t\treturn -1;\r\n\t\t} else if (!startsWithInputA && startsWithInputB) {\r\n\t\t\treturn 1;\r\n\t\t} else {\r\n\t\t\treturn a.toLowerCase().indexOf(input.toLowerCase()) - b.toLowerCase().indexOf(input.toLowerCase());\r\n\t\t}\r\n\t}\r\n}\r\n","export class HtmlHelper {\r\n /**\r\n * Removes special characters so string is not interpretated as html.\r\n * @param text\r\n */\r\n static escapeHtmlString(text: string): string {\r\n // without creating regexp, it is not building library.\r\n // https://stackoverflow.com/questions/57292603/angular7-aot-expression-form-not-supported\r\n return text.replace(new RegExp(\"&\", \"g\"), \"&\")\r\n .replace(new RegExp(\"<\", \"g\"), \"<\")\r\n .replace(new RegExp(\">\", \"g\"), \">\")\r\n .replace(new RegExp(\"\\\"\", \"g\"), \""\")\r\n .replace(new RegExp(\"'\", \"g\"), \"'\");\r\n }\r\n\r\n static encodeHtmlString(text: string): string {\r\n return text.replace(new RegExp(\"&\", \"g\"), \"&\")\r\n .replace(new RegExp(\"<\", \"g\"), \"<\")\r\n .replace(new RegExp(\">\", \"g\"), \">\")\r\n .replace(new RegExp(\""\", \"g\"), \"\\\"\")\r\n .replace(new RegExp(\"'\", \"g\"), \"'\");\r\n }\r\n /**\r\n * Splits string into paragraphs.\r\n * @param text\r\n */\r\n static splitInParagraphs(text: string): string[] {\r\n return text.split(\"\\n\");\r\n }\r\n\r\n static joinParagraphs(text: string[]): string {\r\n return text.join(\"\\n\");\r\n }\r\n\r\n static toCamelCase(text: string, symbol = \"-\"): string {\r\n const arr = text.split(symbol);\r\n const capital = arr.map((item, index) => index ? item.charAt(0).toUpperCase() + item.slice(1).toLowerCase() : item.toLowerCase());\r\n // ^-- change here.\r\n return capital.join(\"\");\r\n }\r\n\r\n static isTextUrl(text: string): string | null {\r\n //eslint-disable-next-line\r\n const urlPattern = /\\b((?:https?:(?:\\/{1,3}|[a-z0-9%])|[a-z0-9.\\-]+[.](?:com|net|org|edu|gov|mil|aero|asia|biz|cat|coop|info|int|jobs|mobi|museum|name|post|pro|tel|travel|xxx|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|dd|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|Ja|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)\\/)(?:[^\\s()<>{}\\[\\]]+|\\([^\\s()]*?\\([^\\s()]+\\)[^\\s()]*?\\)|\\([^\\s]+?\\))+(?:\\([^\\s()]*?\\([^\\s()]+\\)[^\\s()]*?\\)|\\([^\\s]+?\\)|[^\\s`!() \\[\\]{};: '\".,<>?«»“”‘’])|(?:[a-z0-9]+(?:[.\\-][a-z0-9]+)*[.](?:com|net|org|edu|gov|mil|aero|asia|biz|cat|coop|info|int|jobs|mobi|museum|name|post|pro|tel|travel|xxx|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|dd|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|Ja|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)\\b\\/?(?!@)))/gi;\r\n const urlMatch = urlPattern.exec(text);\r\n if (urlMatch) {\r\n const url = urlMatch[0];\r\n if (url.length / text.trim().length > 0.8) { // most of the text is url\r\n return url;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n static getWordCount(text: string) {\r\n return text.match(/\\b(\\w+)\\b/g)?.length;\r\n }\r\n\r\n static getLocalizationKey(text: string): string {\r\n return text?.replace(/[^\\p{L}\\p{N} -]+/gu, \"\").split(/[ -]+/).join(\"_\").toUpperCase().replace(/_$/, \"\")\r\n }\r\n}","/** \r\n This properties are same defined as Angular material min-width breakpoints.\r\n https://material.angular.io/cdk/layout/overview\r\n*/\r\n\r\nexport const SCREEN_SIZE = {\r\n SMALL: 600,\r\n MEDIUM: 960,\r\n LARGE: 1280,\r\n XLARGE: 1920,\r\n};\r\n","/**\r\n * Local storage key which stores last used configuration of language direction in Machine Translation.\r\n * By overwriting this value with langugeId (sourceLanguage-targetLanguage-domain-vendor-engineId), this system is going to be preselected.\r\n */\r\nexport const LAST_USED_SYSTEM_LOCAL_STORAGE_KEY = 'lastUsedSystem';","export enum ERROR_CODES {\r\n TIMEOUT = 504\r\n}","import { SCREEN_SIZE } from '../constants';\r\n\r\nexport class ResolutionHelper {\r\n static isMobileRes(): boolean {\r\n return window.innerWidth < SCREEN_SIZE.SMALL;\r\n }\r\n}\r\n","export enum FILE_SIZE_UNIT{\r\n BYTES = \"B\",\r\n KILOBYTES = \"KB\",\r\n MEGABYTES = \"MB\",\r\n GIGABYTES = \"GB\"\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { getFileSizeLabel } from '../../helpers';\r\nimport { FILE_SIZE_UNIT } from './enums/file-size-unit.enum';\r\n\r\n@Pipe({\r\n name: 'fileSizeLabel',\r\n standalone: true,\r\n})\r\n/**\r\n * Pipe that converts Byte value into human-readable file size label e.g., KB, MB, GB.\r\n */\r\nexport class FileSizeLabelPipe implements PipeTransform {\r\n transform(value: number, decimalPlaces: number = 2, unit: FILE_SIZE_UNIT = FILE_SIZE_UNIT.BYTES): string {\r\n return getFileSizeLabel(value, decimalPlaces, unit);\r\n }\r\n}\r\n","import { FILE_SIZE_UNIT } from \"../pipes/file-size-label\";\r\n\r\nexport const getFileSizeLabel = (size: number, decimalPlaces: number = 2, unit: FILE_SIZE_UNIT = FILE_SIZE_UNIT.BYTES): string => {\r\n const multipliers = {\r\n [FILE_SIZE_UNIT.BYTES]: 1,\r\n [FILE_SIZE_UNIT.KILOBYTES]: 1024,\r\n [FILE_SIZE_UNIT.MEGABYTES]: 1024 ** 2,\r\n [FILE_SIZE_UNIT.GIGABYTES]: 1024 ** 3,\r\n };\r\n\r\n const GB = multipliers[FILE_SIZE_UNIT.GIGABYTES];\r\n const MB = multipliers[FILE_SIZE_UNIT.MEGABYTES];\r\n const KB = multipliers[FILE_SIZE_UNIT.KILOBYTES];\r\n\r\n const sizeInBytes = size * multipliers[unit]\r\n\r\n if (sizeInBytes >= GB) {\r\n const sizeInGB = sizeInBytes / GB;\r\n return `${sizeInGB.toFixed(decimalPlaces)} GB`;\r\n } else if (sizeInBytes >= MB) {\r\n const sizeInMB = sizeInBytes / MB;\r\n return `${sizeInMB.toFixed(decimalPlaces)} MB`;\r\n } else if (sizeInBytes >= KB) {\r\n const sizeInKB = sizeInBytes / KB;\r\n return `${sizeInKB.toFixed(decimalPlaces)} KB`;\r\n }\r\n\r\n return `${sizeInBytes} B`;\r\n};\r\n","// custom-paginator-intl.ts\r\nimport { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Injectable()\r\nexport class CustomPaginatorInernationalizationHelper extends MatPaginatorIntl {\r\n readonly #translate = inject(TranslateService);\r\n constructor() {\r\n super();\r\n this.#translate.onLangChange.subscribe(() => {\r\n this.getTranslations();\r\n });\r\n\r\n this.getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n length = Math.max(length, 0);\r\n const startIndex = page * pageSize;\r\n\r\n // If the start index exceeds the list length, do not try and fix the end index to attempt showing\r\n // fewer items.\r\n const endIndex =\r\n startIndex < length\r\n ? Math.min(startIndex + pageSize, length)\r\n : startIndex + pageSize;\r\n\r\n return this.#translate.instant('PAGINATOR.RANGE_LABEL', {startIndex: startIndex + 1, endIndex: endIndex, length: length});\r\n };\r\n\r\n this.getTranslations();\r\n }\r\n\r\n getTranslations() {\r\n this.itemsPerPageLabel = this.#translate.instant(\"PAGINATOR.ITEMS_PER_PAGE\");\r\n this.nextPageLabel = this.#translate.instant(\"PAGINATOR.NEXT_PAGE_LABEL\");\r\n this.previousPageLabel = this.#translate.instant(\"PAGINATOR.PREVIOUS_PAGE_LABEL\");\r\n this.firstPageLabel = this.#translate.instant(\"PAGINATOR.FIRST_PAGE_LABEL\");\r\n this.lastPageLabel = this.#translate.instant(\"PAGINATOR.LAST_PAGE_LABEL\");\r\n this.changes.next();\r\n // this.#translate.get('RANGE_LABEL', {startIndex:0, endIndex:0, length:0}).subscribe(res =>{\r\n // this.getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n // if (length === 0 || pageSize === 0) {\r\n // return `0 of ${length}`;\r\n // }\r\n\r\n // length = Math.max(length, 0);\r\n\r\n // const startIndex = page * pageSize;\r\n\r\n // // If the start index exceeds the list length, do not try and fix the end index to attempt showing\r\n // // fewer items.\r\n // const endIndex =\r\n // startIndex < length\r\n // ? Math.min(startIndex + pageSize, length)\r\n // : startIndex + pageSize;\r\n\r\n // return this.#translate.instant('RANGE_LABEL', {startIndex: startIndex + 1, endIndex: endIndex, length: length});\r\n // };\r\n // this.changes.next();\r\n // });\r\n }\r\n\r\n}\r\n","export class HashHelper {\r\n static hashString(username: string) {\r\n let hash = 0;\r\n if (username?.length > 0) {\r\n for (let i = 0; i < username.length; i++) {\r\n const char = username.charCodeAt(i);\r\n hash = (hash << 5) - hash + char;\r\n hash = hash & hash; // Convert to 32bit integer\r\n }\r\n }\r\n return hash.toString();\r\n }\r\n}\r\n","export enum EngineStatus {\r\n IMPORTING = \"Importing\",\r\n DELETING = \"Deleting\",\r\n ERROR = \"Error\",\r\n RUNNING = \"Running\",\r\n STARTING = \"Starting\",\r\n STAND_BY = \"StandBy\",\r\n OFF = \"Off\"\r\n}\r\n","export enum EngineSubStatus {\r\n Unspecified = \"Unspecified\",\r\n Importing = 'Importing',\r\n ImportingQueuing = 'ImportingQueuing',\r\n ImportingTerms = 'ImportingTerms',\r\n ImportingDeploying = 'ImportingDeploying',\r\n ImportingImported = \"ImportingImported\",\r\n Deleting = 'Deleting',\r\n DeletingQueuing = 'DeletingQueuing',\r\n DeletingTerms = 'DeletingTerms',\r\n ErrorGeneric = 'ErrorGeneric',\r\n ErrorImportingFailed = 'ErrorImportingFailed',\r\n ErrorImportingTermsFailed = 'ErrorImportingTermsFailed',\r\n ErrorDeletingFailed = 'ErrorDeletingFailed',\r\n ErrorDeletingTermsFailed = 'ErrorDeletingTermsFailed'\r\n}\r\n","export const TILDE_VENDOR = 'Tilde';\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TerminologyConfig } from \"../../models\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class TerminologyConfigService {\r\n private _termConfig: TerminologyConfig = {};\r\n\r\n get termConfig() {\r\n return this._termConfig;\r\n }\r\n\r\n private readonly defaultApiUrl = \"https://translate.tilde.ai/api/engine\";\r\n\r\n initConfigs(configuration?: TerminologyConfig): void {\r\n const config = configuration ?? {};\r\n \r\n this._termConfig.collectionNameMinLength = config?.collectionNameMinLength ?? 8;\r\n this._termConfig.collectionNameMaxLength = config?.collectionNameMaxLength ?? 300;\r\n this._termConfig.xApiKey = config?.xApiKey;\r\n this._termConfig.systemListUrl = config?.systemListUrl ?? this.defaultApiUrl;\r\n this._termConfig.engineTermUrl = config?.engineTermUrl ?? this.defaultApiUrl;\r\n this._termConfig.terminologyPortalUrl = config?.terminologyPortalUrl ?? \"https://term.tilde.com\";\r\n this._termConfig.isTermPortalSupported = config?.isTermPortalSupported ?? false;\r\n this._termConfig.refreshTimeoutMs = config?.refreshTimeoutMs ?? 10000;\r\n this._termConfig.refreshTimeoutMsWhenImporting = config?.refreshTimeoutMsWhenImporting ?? 5000;\r\n this._termConfig.allowedSystemStatuses = config?.allowedSystemStatuses ?? ['running', 'standby', 'queuingtransl'];\r\n this._termConfig.defaultVendor = config?.defaultVendor ?? \"Tilde\";\r\n this._termConfig.canCreateCollection = config?.canCreateCollection;\r\n this._termConfig.isAuth = config?.isAuth ?? false;\r\n this._termConfig.defaultGlossaryManagementLink = config?.defaultGlossaryManagementLink;\r\n this._termConfig.hideGlossaryMenuWithoutCollections = config?.hideGlossaryMenuWithoutCollections ?? false;\r\n this._termConfig.showGlossaryMenuAdvertisement = config?.showGlossaryMenuAdvertisement ?? false;\r\n this._termConfig.filterCollectionsByLanguageDirection = config?.filterCollectionsByLanguageDirection ?? false;\r\n this._termConfig.startTrialUrl = config?.startTrialUrl ?? 'https://tilde.ai/machine-translation/#price';\r\n this._termConfig.signInUrl = config?.signInUrl ?? 'https://translate.tilde.ai/';\r\n\r\n this._termConfig.isCollectionsActivated = config?.isCollectionsActivated;\r\n this._termConfig.maxRecentSystemCount = config?.maxRecentSystemCount ?? 4;\r\n this._termConfig.autoDomainDetection = config?.autoDomainDetection ?? false;\r\n this._termConfig.defaultDomains = config?.defaultDomains ?? [\"GEN\", \"general\"];\r\n this._termConfig.appId = config?.appId;\r\n this._termConfig.appName = config?.appName ?? \"Tilde MT\";\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { map, Observable } from \"rxjs\";\r\nimport { AuthHeadersHelper } from \"../../../helpers\";\r\nimport { TerminologyConfigService } from \"../../config/services\";\r\nimport { System } from \"../../models/system.model\";\r\nimport { Engine, EngineStatus, EngineSubStatus } from \"./models\";\r\nimport { EngineList } from \"./models/engine-list.model\";\r\nimport { TILDE_VENDOR } from \"./models/tilde-vendor.const\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class SystemApiService {\r\n constructor(private readonly http: HttpClient, private readonly config: TerminologyConfigService) {\r\n }\r\n // Note that this api call is duplicate from Website engine service. Might need some refactoring and using common engine service ?\r\n getSystemList(showDisabledEngines?: boolean): Observable<System[]> {\r\n const headers = AuthHeadersHelper.getAppIdAuthHeaders(this.config.termConfig.appId ?? '');\r\n return this.http.get<EngineList>(`${(this.config.termConfig.systemListUrl as string)}?apiVersion=v2`, { headers }).pipe(\r\n map((engineList) => {\r\n const convertedEngines: System[] = [];\r\n const unavailableStatuses: EngineStatus[] = [EngineStatus.IMPORTING];\r\n const unavailableSubStatuses: EngineSubStatus[] = [EngineSubStatus.ErrorImportingFailed, EngineSubStatus.ErrorDeletingFailed];\r\n\r\n if (!showDisabledEngines) {\r\n unavailableStatuses.push(EngineStatus.OFF);\r\n }\r\n\r\n const engineMap = {};\r\n\r\n engineList.engines.forEach((engine) => {\r\n engine.domain = engine.domain?.toLowerCase();\r\n \r\n if (unavailableStatuses.includes(engine.status) || unavailableSubStatuses.includes(engine.subStatus)) {\r\n return;\r\n }\r\n\r\n if (engine.domains && Object.keys(engine.domains).length) {\r\n convertedEngines.push(...this.generateSystemsFromDomains(engine, convertedEngines, engineMap));\r\n } else {\r\n convertedEngines.push(...this.generateSystemsFromLanguages(engine, convertedEngines, engineMap));\r\n }\r\n })\r\n return convertedEngines;\r\n })\r\n )\r\n }\r\n\r\n private generateSystemsFromLanguages(engine: Engine, convertedEngines: System[], engineMap: { [key: string]: boolean }): System[] {\r\n const systems: System[] = [];\r\n engine.sourceLanguages.forEach((sourceLanguage) => {\r\n engine.targetLanguages.forEach((targetLanguage) => {\r\n if (sourceLanguage !== targetLanguage) {\r\n const newSystem = this.createSystemObject(engine.id, sourceLanguage, targetLanguage, engine.domain, engine.vendor, engine.supportsTermCollections);\r\n\r\n if (this.isLanguageDirectionAdded(newSystem, convertedEngines, engineMap, engine.vendor)) {\r\n systems.push(newSystem);\r\n }\r\n }\r\n })\r\n })\r\n return systems;\r\n }\r\n\r\n private generateSystemsFromDomains(engine: Engine, convertedEngines: System[], engineMap: { [key: string]: boolean }): System[] { \r\n const domains = engine.domains;\r\n const systems: System[] = [];\r\n\r\n for (const domainKey in domains) {\r\n const domain = domains[domainKey];\r\n\r\n // Loop through each language property\r\n const languages = domain.languages;\r\n for (const sourceLanguage in languages) {\r\n const targetLanguages = languages[sourceLanguage];\r\n // Loop through each key within the language\r\n targetLanguages.forEach((targetLanguage) => {\r\n const newSystem = this.createSystemObject(engine.id, sourceLanguage, targetLanguage, domainKey, engine.vendor, engine.supportsTermCollections);\r\n \r\n if (sourceLanguage !== targetLanguage) {\r\n if (this.isLanguageDirectionAdded(newSystem, convertedEngines, engineMap, engine.vendor)) {\r\n systems.push(newSystem);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n return systems;\r\n }\r\n\r\n private isLanguageDirectionAdded(newSystem: System, convertedEngines: System[], engineMap: { [key: string]: boolean }, vendor: string): boolean {\r\n const languageDirectionKey = `${newSystem.sourceLanguage}${newSystem.targetLanguage}${newSystem.domain}`;\r\n \r\n if (engineMap[languageDirectionKey]) {\r\n if (vendor === TILDE_VENDOR) {\r\n const existingSystemIx = convertedEngines.findIndex((e) => e.sourceLanguage === newSystem.sourceLanguage && e.targetLanguage === newSystem.targetLanguage && e.domain === newSystem.domain);\r\n convertedEngines[existingSystemIx] = newSystem;\r\n }\r\n return false;\r\n }\r\n \r\n engineMap[languageDirectionKey] = true;\r\n \r\n return true;\r\n }\r\n\r\n private createSystemObject(id: string, sourceLanguage: string, targetLanguage: string, domain: string, vendor: string, includesTerminology: boolean) {\r\n const systemBase: System = {\r\n sourceLanguage,\r\n targetLanguage,\r\n domain: domain.toLowerCase(),\r\n languageId: `${sourceLanguage}-${targetLanguage}-${domain}-${vendor}-${id}`,\r\n id,\r\n vendor,\r\n includesTerminology\r\n };\r\n\r\n return systemBase;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { System } from '../../terminology/models/system.model';\r\nimport { SystemApiService } from '../../terminology/services/system-api-v2/system-api.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SystemService {\r\n constructor(\r\n private readonly api: SystemApiService\r\n ) { }\r\n\r\n getSystemList(showDisabledEngines = false): Observable<System[]> {\r\n return this.api.getSystemList(showDisabledEngines);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'filterWithHighlight',\r\n standalone: false\r\n})\r\nexport class FilterWithHighlightPipe implements PipeTransform {\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n transform(value: any[], filter: string, key?: string): any[] {\r\n if (!filter.length) {\r\n return [...value];\r\n }\r\n\r\n const regex = new RegExp(filter, 'gi');\r\n\r\n const filteredArr = value\r\n .map((element) => {\r\n const elementText: string = key ? element[key] : element;\r\n const match = elementText.match(regex);\r\n\r\n if (!match) {\r\n return null;\r\n }\r\n\r\n // Get the index of the match\r\n const indexOfMatch = elementText.toLowerCase().indexOf(filter.toLowerCase());\r\n\r\n const textWithHighlight = elementText.replace(regex, (matched) => `<span class=\"filter-highlight\">${matched}</span>`);\r\n\r\n return {\r\n transformed: key ? { ...element, [key]: textWithHighlight } : textWithHighlight,\r\n indexOfMatch: indexOfMatch\r\n };\r\n })\r\n .filter((item) => item !== null)\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .sort((a: any, b: any) => {\r\n // Sort based on the index of the match\r\n return a.indexOfMatch - b.indexOfMatch;\r\n })\r\n .map((item) => item?.transformed);\r\n return filteredArr;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FilterWithHighlightPipe } from './filter-with-highlight.pipe';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n FilterWithHighlightPipe\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n FilterWithHighlightPipe\r\n ]\r\n})\r\nexport class FilterWithHighlightModule { }\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Pipe({\r\n name: 'sortTranslations',\r\n standalone: false\r\n})\r\n/**\r\n * Pipe used to sort translated values.\r\n */\r\nexport class SortTranslationsPipe implements PipeTransform {\r\n\r\n constructor(private translate: TranslateService) { }\r\n\r\n /**\r\n *\r\n * @param objects array of objects to be sorted\r\n * @param localizationPrefix prefix for localization code. This is used to get necessary object translations.\r\n * @param key Which object property needs to be used for sorting.\r\n * @param currentLanguage This is necessary to update values if language is changed.\r\n * @returns \r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n transform(objects: Array<any>, localizationPrefix: string | null, key: string | null = null, currentLanguage: string, translationKey: string | null = null): Observable<Array<any>> {\r\n const arrayCopy = [...objects];\r\n if (localizationPrefix) {\r\n return new Observable<string[]>((subscriber) => {\r\n this.translate.get(localizationPrefix ?? \"\").subscribe((translations) => {\r\n const array = this.sortObjects(arrayCopy, key, translations);\r\n subscriber.next(array);\r\n subscriber.complete();\r\n })\r\n });\r\n }\r\n else {\r\n return of(this.sortObjects(arrayCopy, key));\r\n }\r\n }\r\n\r\n private sortObjects(array: any[], key?: string | null, translations?: any):any[] {\r\n return array.sort((a: any, b: any) => {\r\n const aValue = key ? a[key] : a;\r\n const aTranslation = translations ? translations[aValue.toUpperCase()] : aValue;\r\n\r\n const bValue = key ? b[key] : b;\r\n const bTranslation = translations ? translations[bValue.toUpperCase()] : bValue;\r\n\r\n if (aTranslation < bTranslation)\r\n return -1;\r\n else if (aTranslation > bTranslation)\r\n return 1;\r\n else\r\n return 0;\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SortTranslationsPipe } from './sort-translations.pipe';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [SortTranslationsPipe],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n SortTranslationsPipe\r\n ]\r\n})\r\nexport class SortTranslationsModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'sortTranslationsByProperty',\r\n standalone: false\r\n})\r\n/**\r\n * Pipe transforms an array of objects by sorting them based on a provided localization key in A-Z order.\r\n * Unlike the \"sortTranslations\" pipe, it does not require knowledge of the current language, and it does not require the use of the async pipe.\r\n */\r\nexport class SortTranslationsByPropertyPipe implements PipeTransform {\r\n constructor(private translate: TranslateService) {}\r\n\r\n /**\r\n * Transforms the input array of objects by sorting them based on the specified sortingValueKey.\r\n * @param values An array of objects to be sorted.\r\n * @param sortingValueKey The key by which the provided values should be sorted.\r\n * @param defaultValueKey For missing translations there is option to provide a default key to take value from.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n transform(values: any[], sortingValueKey: string, defaultValueKey?: string): any {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n values.sort((a: any, b: any) => {\r\n const aTranslationParams = defaultValueKey && a[defaultValueKey] ? { default: a[defaultValueKey] } : {};\r\n const bTranslationParams = defaultValueKey && b[defaultValueKey] ? { default: b[defaultValueKey] } : {};\r\n const aTranslated = this.translate.instant(a[sortingValueKey], aTranslationParams).toLowerCase();\r\n const bTranslated = this.translate.instant(b[sortingValueKey], bTranslationParams).toLowerCase();\r\n\r\n if (aTranslated < bTranslated) return -1;\r\n if (aTranslated > bTranslated) return 1;\r\n return 0;\r\n });\r\n\r\n return values;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SortTranslationsByPropertyPipe } from './sort-translations-by-property.pipe';\r\n\r\n@NgModule({\r\n declarations: [SortTranslationsByPropertyPipe],\r\n imports: [CommonModule],\r\n exports: [SortTranslationsByPropertyPipe],\r\n})\r\nexport class SortTranslationsByPropertyModule {}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'languageTranslate',\r\n pure: false,\r\n standalone: true\r\n})\r\n/**\r\n This pipe searches for a language code translation within our JSON files.\r\n If the translation for a given language code is not found there, it retrieves it from the browser's Intl object.\r\n*/\r\nexport class LanguageTranslatePipe implements PipeTransform {\r\n private readonly languagesLocalizationKey = 'LANGUAGES';\r\n\r\n private lastUiLanguage: string;\r\n\r\n private readonly translationCache = new Map<string, string>();\r\n\r\n // For languages where region is different code (but in reality the same), we should not show region.\r\n private readonly localeSameRegions: Record<string, string[]> = {\r\n \"nb\": [\"no\"],\r\n \"et\": [\"ee\"],\r\n \"sl\": [\"si\"],\r\n \"sv\": [\"se\"],\r\n \"uk\": [\"ua\"],\r\n \"en\": [\"gb\", \"us\"]\r\n };\r\n\r\n // Some locales ar not translated on all devices, so storing here as final backup.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private readonly translations: any = {\r\n \"en\": {\r\n \"mt\": \"Maltese\",\r\n },\r\n \"lv\": {\r\n \"mt\": \"Maltiešu\",\r\n },\r\n \"lt\": {\r\n \"mt\": \"Maltiečių\",\r\n },\r\n \"et\": {\r\n \"mt\": \"Malta\",\r\n }\r\n }\r\n\r\n constructor(private readonly translate: TranslateService) {\r\n this.translate.onLangChange.subscribe(() => {\r\n this.translationCache.clear();\r\n this.lastUiLanguage = this.translate.currentLang;\r\n });\r\n this.lastUiLanguage = this.translate.currentLang;\r\n }\r\n\r\n transform(fullLangCode: string, hideRegion = false): string {\r\n if (!fullLangCode) {\r\n return '';\r\n }\r\n\r\n if (this.lastUiLanguage !== this.translate.currentLang) {\r\n this.translationCache.clear();\r\n this.lastUiLanguage = this.translate.currentLang;\r\n }\r\n\r\n const cacheKey = `${fullLangCode}:${hideRegion}`;\r\n\r\n if (this.translationCache.has(cacheKey)) {\r\n return this.translationCache.get(cacheKey)!;\r\n }\r\n\r\n const langCodeWithoutRegion = this.getLanguageFromLanguageCode(fullLangCode);\r\n const isCodeAndRegionSame = this.isLanguageCodeSameAsRegion(fullLangCode);\r\n const langCodeForTranslation = isCodeAndRegionSame ? langCodeWithoutRegion : fullLangCode;\r\n\r\n const translation = this.getTranslation(langCodeForTranslation, hideRegion);\r\n\r\n this.translationCache.set(cacheKey, translation);\r\n\r\n return translation;\r\n }\r\n\r\n private getTranslation(langCode: string, hideRegion?: boolean): string {\r\n const languageTranslations = this.translate.instant(this.languagesLocalizationKey);\r\n let translation =\r\n /**\r\n e.g. In case we need to display \"en-GB\" language code as \"British\" we can do this\r\n by adding \"EN_GB\": \"British\" in localization files under \"LANGUAGES\" key.\r\n */\r\n languageTranslations[langCode.toUpperCase().replace('-', '_')] ??\r\n this.getLanguageTranslationFromLanguageCode(this.translate.currentLang, langCode);\r\n\r\n if (hideRegion) {\r\n translation = translation.split('(')[0].trim();\r\n }\r\n\r\n return translation;\r\n }\r\n\r\n private getLanguageTranslationFromLanguageCode(currentLang: string, code: string): string {\r\n const languageNamesInCurrentLang = new Intl.DisplayNames([currentLang], { type: 'language' });\r\n const regionNamesInCurrentLang = new Intl.DisplayNames([currentLang], { type: 'region' });\r\n\r\n let translation: string;\r\n const language = this.getLanguageFromLanguageCode(code);\r\n const region = this.getRegionFromLanguageCode(code);\r\n try {\r\n const languagetranslation = languageNamesInCurrentLang.of(language);\r\n const regionTranslation = regionNamesInCurrentLang.of(region);\r\n\r\n translation = `${languagetranslation} (${regionTranslation})`;\r\n } catch {\r\n try {\r\n translation = languageNamesInCurrentLang.of(code) as string;\r\n } catch {\r\n translation = this.translations[currentLang]?.[language] ?? code;\r\n return translation;\r\n }\r\n }\r\n\r\n return this.capitalizeFirstLetter(translation);\r\n }\r\n\r\n private isLanguageCodeSameAsRegion(fullLangCode: string): boolean {\r\n const [code, region, extra] = fullLangCode.split('-');\r\n return (code === region?.toLowerCase() || this.localeSameRegions[code]?.includes(region?.toLowerCase())) && !extra;\r\n }\r\n\r\n private getRegionFromLanguageCode(fullLangCode: string): string {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const [_code, region, extra] = fullLangCode.split('-');\r\n const regionCode = extra ? `${region}-${extra}` : `${region}`;\r\n return regionCode.toUpperCase();\r\n }\r\n\r\n private getLanguageFromLanguageCode(fullLangCode: string): string {\r\n return fullLangCode.split('-')[0].toLowerCase();\r\n }\r\n\r\n private capitalizeFirstLetter(text: string): string {\r\n return text.charAt(0).toUpperCase() + text.slice(1);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LanguageTranslatePipe } from './language-translate.pipe';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [LanguageTranslatePipe, CommonModule],\r\n exports: [LanguageTranslatePipe]\r\n})\r\nexport class LanguageTranslateModule { }\r\n","export const DateAgoSettingsToken = \"DATE_AGO_SETTINGS\";\r\n","import { Inject, Optional, Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { DateAgo, DateAgoSettings, DateAgoSettingsToken } from './models';\r\n\r\n@Pipe({\r\n name: 'dateAgo',\r\n pure: false,\r\n standalone: false\r\n})\r\n/**\r\n * Pipe that converts date to date ago and returns translated string.\r\n */\r\nexport class DateAgoPipe implements PipeTransform {\r\n\r\n readonly defaultSettings: DateAgoSettings = {\r\n intervals: [\r\n {\r\n key: \"YEAR\",\r\n interval: 31536000,\r\n min: 1\r\n },\r\n {\r\n key: \"MONTH\",\r\n interval: 2592000,\r\n min: 1\r\n },\r\n {\r\n key: \"WEEK\",\r\n interval: 604800,\r\n min: 2\r\n },\r\n {\r\n key: \"DAY\",\r\n interval: 86400,\r\n min: 1\r\n },\r\n {\r\n key: \"HOUR\",\r\n interval: 3600,\r\n min: 1\r\n },\r\n {\r\n key: \"MINUTE\",\r\n interval: 60,\r\n min: 1\r\n },\r\n {\r\n key: \"SECOND\",\r\n interval: 1,\r\n min: 10\r\n }\r\n ],\r\n localizationPrefix: \"DATE_AGO\",\r\n multiplePostfix: \"S\",\r\n justNowKey: \"JUST_NOW\",\r\n justNowSeconds: 29\r\n\r\n };\r\n\r\n get intervals() { return this.settings?.intervals ?? this.defaultSettings.intervals }\r\n get multiplePostfix() { return this.settings?.multiplePostfix ?? this.defaultSettings.multiplePostfix }\r\n get localizationPrefix() { return this.settings?.localizationPrefix ?? this.defaultSettings.localizationPrefix }\r\n get justNowKey() { return this.settings?.justNowKey ?? this.defaultSettings.justNowKey }\r\n get justNowSeconds() { return this.settings?.justNowSeconds ?? this.defaultSettings.justNowSeconds }\r\n\r\n constructor(\r\n private readonly translate: TranslateService,\r\n @Inject(DateAgoSettingsToken) @Optional() private readonly settings: DateAgoSettings) {\r\n\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n transform(value: Date, enableMultiplePostfix = true): string {\r\n if (!value) {\r\n return \"\";\r\n }\r\n\r\n const dateAgo = this.calculateDateAgo(value, enableMultiplePostfix);\r\n if (!dateAgo) {\r\n return \"\";\r\n }\r\n\r\n return this.translate.instant(`${this.localizationPrefix}.${dateAgo.key}`, { value: dateAgo.howMany });\r\n }\r\n\r\n calculateDateAgo(value: Date, enableMultiplePostfix: boolean): DateAgo | null {\r\n if (value) {\r\n const seconds = Math.floor((new Date().getTime() - new Date(value).getTime()) / 1000);\r\n\r\n if (seconds < this.justNowSeconds || Number.isNaN(seconds)) // less than 30 seconds ago will show as 'Just now'\r\n return { key: this.justNowKey };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\r\n let counter!: number;\r\n let type!: string;\r\n\r\n for (let i = 0; i < this.intervals.length; i++) {\r\n const interval = this.intervals[i];\r\n counter = Math.floor(seconds / interval.interval);\r\n if (counter >= interval.min) {\r\n type = interval.key;\r\n if (enableMultiplePostfix && counter > 1) {\r\n // add \"S\" in the end of localization key\r\n type += this.multiplePostfix;\r\n }\r\n break;\r\n }\r\n }\r\n return { key: type, howMany: counter };\r\n }\r\n return null;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DateAgoPipe } from './date-ago.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n DateAgoPipe\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n DateAgoPipe\r\n ],\r\n providers: []\r\n})\r\nexport class DateAgoModule { }\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'objectLength',\r\n standalone: false\r\n})\r\n/**\r\n * Pipe used to calculate the length of an object.\r\n */\r\nexport class ObjectLengthPipe implements PipeTransform {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n transform(value: any): number {\r\n\t\tif (!value || typeof value !== 'object') {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\treturn Object.keys(value).length;\r\n\t}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ObjectLengthPipe } from './object-length.pipe';\r\n\r\n@NgModule({\r\n declarations: [ObjectLengthPipe],\r\n imports: [CommonModule],\r\n exports: [ObjectLengthPipe]\r\n})\r\nexport class ObjectLengthModule {}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SortHelper } from '../../helpers';\r\n\r\n@Pipe({\r\n name: 'sortByNumber',\r\n standalone: true,\r\n pure: false\r\n})\r\n/**\r\n * Pipe sorts array in desc-asc order of objects by provided key or just a value without providing a specific key.\r\n */\r\nexport class SortByNumberPipe implements PipeTransform {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n transform(values: any[], sortingValueKey?: string, desc = true): any {\r\n return SortHelper.sortByNumber(values, sortingValueKey, desc);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SortHelper } from '../../helpers';\r\n\r\n@Pipe({\r\n name: 'sortAlphabetically',\r\n standalone: false\r\n})\r\n/**\r\n * Pipe sorts array in A-Z order of objects by provided key or a string values without providing a specific key.\r\n */\r\nexport class SortAlphabeticallyPipe implements PipeTransform {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n transform(values: any[], sortingValueKey?: string): any {\r\n return SortHelper.sortAlphabetically(values, sortingValueKey);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SortAlphabeticallyPipe } from './sort-alphabetically.pipe';\r\n\r\n@NgModule({\r\n declarations: [SortAlphabeticallyPipe],\r\n imports: [CommonModule],\r\n exports: [SortAlphabeticallyPipe],\r\n})\r\nexport class SortAlphabeticallyModule {}\r\n","import { Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable, map } from 'rxjs';\r\nimport { LanguageTranslateService } from '../../services/language-translate';\r\nimport { TranslatedLanguage } from './models/translated-language.model';\r\n\r\n@Pipe({\r\n name: 'sortLanguageList',\r\n standalone: true\r\n})\r\nexport class SortLanguageListPipe implements PipeTransform {\r\n readonly #translateService = inject(TranslateService);\r\n readonly #languageTranslationService = inject(LanguageTranslateService);\r\n\r\n transform<T>(list: T[], key?: string): Observable<TranslatedLanguage<T>[]> {\r\n const keyParts = key?.split(\".\");\r\n // do some random stream so method gets called first time when transform is executed\r\n return this.#translateService.stream(\"languages\").pipe(\r\n map(() => {\r\n if (!list) {\r\n return [];\r\n }\r\n\r\n const translatedLanguages: TranslatedLanguage<T>[] = list\r\n .map(language => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let languageCode: string;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let objValue: any = language;\r\n\r\n if (keyParts?.length) {\r\n for (const element of keyParts) {\r\n const keyPart = element;\r\n if (!objValue) {\r\n console.error(`Can't find value for sort language pipe ${key}`, language);\r\n break;\r\n }\r\n objValue = objValue[keyPart];\r\n }\r\n languageCode = objValue;\r\n }\r\n else {\r\n languageCode = language as string;\r\n }\r\n\r\n return {\r\n ...language, value: language, translation: this.#languageTranslationService.getLanguageCodeTranslation(languageCode, false)\r\n }\r\n })\r\n .sort((a, b) => {\r\n const translationA = a.translation.toLowerCase();\r\n const translationB = b.translation.toLowerCase();\r\n return translationA.localeCompare(translationB);\r\n });\r\n return translatedLanguages;\r\n })\r\n )\r\n }\r\n\r\n}\r\n","import { TitleCasePipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { HtmlHelper } from '../../helpers';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'domainTranslate',\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class DomainTranslatePipe implements PipeTransform {\r\n constructor(readonly translate: TranslateService) {}\r\n\r\n transform(value: string, isDomain: boolean): string {\r\n if (!isDomain) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n const titleCasePipe = new TitleCasePipe();\r\n const domainLocalizationKey = HtmlHelper.getLocalizationKey(value);\r\n\r\n const domains = this.translate.instant('DOMAINS');\r\n\r\n return domains[domainLocalizationKey] ?? titleCasePipe.transform(value);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { HtmlHelper } from '../../helpers';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n/**\r\n * This is a custom pipe for sorting domains.\r\n * It prioritizes the most important entries using a specific order:\r\n * \"General\" first, followed by LLM-related domains, and then the rest in alphabetical order.\r\n */\r\n@Pipe({\r\n\tname: 'sortDomains',\r\n\tstandalone: true,\r\n})\r\nexport class SortDomainsPipe implements PipeTransform {\r\n\tconstructor (readonly translate: TranslateService) {}\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\ttransform(value: any[], isDomainList: boolean, key: string): any[] {\r\n\t\tif (!isDomainList) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tconst llmDomainKeys = ['GENERAL_AI', 'PROFESSIONAL_AI', 'ACADEMIC_AI'];\r\n\r\n\t\treturn value.slice().sort((a, b) => {\r\n\t\t\tconst nameA = HtmlHelper.getLocalizationKey(a[key] ?? a);\r\n\t\t\tconst nameB = HtmlHelper.getLocalizationKey(b[key] ?? b);\r\n\r\n\t\t\tconst getPriority = (name: string): number => {\r\n\t\t\t\tif (name === 'GENERAL') return 0;\r\n\t\t\t\tif (llmDomainKeys.includes(name)) return 1;\r\n\t\t\t\treturn 2;\r\n\t\t\t};\r\n\r\n\t\t\tconst priorityA = getPriority(nameA);\r\n\t\t\tconst priorityB = getPriority(nameB);\r\n\r\n\t\t\t// First sort by custom priority\r\n\t\t\tif (priorityA !== priorityB) {\r\n\t\t\t\treturn priorityA - priorityB;\r\n\t\t\t}\r\n\r\n\t\t\tconst domains = this.translate.instant('DOMAINS');\r\n\r\n\t\t\t// If same priority, sort alphabetically\r\n\t\t\treturn (domains[nameA] ?? nameA).localeCompare(domains[nameB] ?? nameB);\r\n\t\t});\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { LanguageTranslatePipe } from '../../pipes';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LanguageTranslateService {\r\n constructor(private readonly translateService: TranslateService) {}\r\n\r\n getLanguageCodeTranslation(code: string, hideRegion = false): string {\r\n const languageTranslate = new LanguageTranslatePipe(this.translateService);\r\n return languageTranslate.transform(code, hideRegion);\r\n }\r\n\r\n removeRegionFromLanguageCode(code: string): string {\r\n return code.split('-')[0];\r\n }\r\n}\r\n","export enum Operations {\r\n\tCREATE = 'CREATE',\r\n\tDELETE = 'DELETE'\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { NotificationWithOperation } from './models/notification.model';\r\nimport { Operations } from './models/operations.enum';\r\nimport { NotificationMessage } from '../../notification-message';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class NotificationService {\r\n\tprivate messageSubject = new Subject<NotificationWithOperation>();\r\n\tnotificationMessage = this.messageSubject.asObservable();\r\n\r\n\tprivate clearMessageSubject = new Subject<NotificationMessage[]>();\r\n\tclearMessage = this.clearMessageSubject.asObservable();\r\n\r\n\taddMessage(message: NotificationMessage): void {\r\n\t\tthis.messageSubject.next({ message, operation: Operations.CREATE });\r\n\t}\r\n\r\n\tdeleteMessage(message: NotificationMessage): void {\r\n\t\tthis.messageSubject.next({ message, operation: Operations.DELETE });\r\n\t}\r\n\r\n\tclearMessages() {\r\n\t\tthis.clearMessageSubject.next([]);\r\n\t}\r\n\r\n\t// Returns True if the message is not found in the messages array, false otherwise.\r\n\tisMessageUnique(messages: NotificationMessage[], newMessage: NotificationMessage): boolean {\r\n\t\tconst newMessageJSON = JSON.stringify(newMessage);\r\n\t\treturn !messages.some(existingMessage => JSON.stringify(existingMessage) === newMessageJSON);\r\n\t}\r\n}\r\n","export enum InlineMessageIconPosition {\r\n START,\r\n END\r\n}\r\n","<div class=\"tld-inline-message {{message.type}}\">\r\n <span class=\"material-icons\" [class.order-end]=\"message.iconPosition === END_ICON_POSITION\"\r\n [matTooltip]=\"message.iconTooltip? (message.iconTooltip | translate: message.localizationParams) : ''\" *ngIf=\"iconName\">{{iconName}}</span>\r\n <section *ngIf=\"message\">\r\n <div class=\"text-s-semi-bold title\" *ngIf=\"message.title\"\r\n [innerHtml]=\"message.title | translate: message.localizationParams\">\r\n </div>\r\n <p class=\"text-s description\" *ngIf=\"message.description\" [innerHtml]=\"message.description | translate:\r\n message.localizationParams\"></p>\r\n </section>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { InlineMessageIconPosition } from './models/inline-message-icon-position.enum';\r\nimport { InlineMessage } from './models/inline-message.model';\r\n\r\n@Component({\r\n selector: 'lib-inline-message',\r\n templateUrl: './inline-message.component.html',\r\n styleUrls: ['./inline-message.component.scss'],\r\n standalone: false\r\n})\r\nexport class InlineMessageComponent {\r\n readonly END_ICON_POSITION = InlineMessageIconPosition.END;\r\n\r\n @Input() iconName = \"info\";\r\n @Input() message!: InlineMessage;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { InlineMessageComponent } from './inline-message.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n InlineMessageComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n MatTooltipModule\r\n ],\r\n exports: [\r\n InlineMessageComponent\r\n ]\r\n})\r\nexport class InlineMessageModule { }\r\n","export enum InlineMessageType {\r\n INFO = 'info',\r\n WARNING = 'warning',\r\n ERROR = 'error'\r\n}\r\n","import { Directive, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[clickOutside]',\r\n standalone: false\r\n})\r\nexport class ClickOutsideDirective {\r\n @Output() clickOutside = new EventEmitter<void>();\r\n\r\n constructor(private elementRef: ElementRef) { }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(target: HTMLElement) {\r\n const clickedInside = this.elementRef.nativeElement.contains(target);\r\n if (!clickedInside) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ClickOutsideDirective } from './click-outside.directive';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ClickOutsideDirective\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n ClickOutsideDirective\r\n ]\r\n})\r\nexport class ClickOutsideModule { }\r\n","import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\r\n\r\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[tldDragAndDrop]',\n standalone: false\n})\r\nexport class DragAndDropDirective {\r\n\r\n get disabled() { return this.element.nativeElement.classList.contains('disabled-upload-zone') }\r\n\r\n @HostBinding('class.tld-file-over') active!: boolean;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() fileDropped = new EventEmitter<any>();\r\n\r\n // Dragover listener\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @HostListener('dragover', ['$event']) onDragOver(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.active = !this.disabled;\r\n }\r\n\r\n // Dragleave listener\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @HostListener('dragleave', ['$event']) public onDragLeave(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.active = false;\r\n }\r\n\r\n // Drop listener\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @HostListener('drop', ['$event']) public ondrop(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.active = false;\r\n if (this.disabled) {\r\n return;\r\n }\r\n const files = evt.dataTransfer.files;\r\n if (files.length > 0) {\r\n this.fileDropped.emit(files);\r\n }\r\n }\r\n\r\n constructor(private readonly element: ElementRef) { }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DragAndDropDirective } from './drag-and-drop.directive';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n DragAndDropDirective\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n DragAndDropDirective\r\n ]\r\n})\r\nexport class DragAndDropModule { }\r\n","import { ComponentRef, Directive, Input, Renderer2, ViewContainerRef } from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: `button[mat-button][loading],\r\n button[mat-raised-button][loading],\r\n button[mat-icon-button][loading],\r\n button[mat-fab][loading],\r\n button[mat-mini-fab][loading],\r\n button[mat-stroked-button][loading],\r\n button[mat-flat-button][loading]`,\r\n standalone: false\r\n})\r\nexport class MatButtonLoadingDirective {\r\n\r\n private _loading = false;\r\n @Input() set loading(value: boolean) {\r\n if (value != this._loading) {\r\n this._loading = value;\r\n this.updateState();\r\n }\r\n }\r\n\r\n private spinner!: ComponentRef<MatProgressSpinner> | null;\r\n\r\n constructor(private matButton: MatButton,\r\n private viewContainerRef: ViewContainerRef,\r\n private renderer: Renderer2) { }\r\n\r\n get nativeElement(): HTMLElement {\r\n return this.matButton._elementRef.nativeElement;\r\n }\r\n\r\n updateState(): void {\r\n if (this._loading) {\r\n this.nativeElement.classList.add('mat-loading');\r\n this.matButton.disabled = true;\r\n this.createSpinner();\r\n return;\r\n }\r\n this.nativeElement.classList.remove('mat-loading');\r\n this.matButton.disabled = false;\r\n this.destroySpinner();\r\n }\r\n\r\n private createSpinner(): void {\r\n if (!this.spinner) {\r\n this.spinner = this.viewContainerRef.createComponent(MatProgressSpinner);\r\n this.spinner.instance.color = this.matButton.color;\r\n this.spinner.instance.diameter = 20;\r\n this.spinner.instance.mode = 'indeterminate';\r\n this.renderer.appendChild(this.matButton._elementRef.nativeElement, this.spinner.instance._elementRef.nativeElement);\r\n }\r\n }\r\n\r\n private destroySpinner(): void {\r\n if (this.spinner) {\r\n this.spinner.destroy();\r\n this.spinner = null;\r\n }\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonLoadingDirective } from './mat-button-loading.directive';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [MatButtonLoadingDirective],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [MatButtonLoadingDirective]\r\n})\r\nexport class MatButtonLoadingModule { }\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-tld-loader',\r\n templateUrl: './tld-loader.component.html',\r\n styleUrls: ['./tld-loader.component.scss'],\r\n standalone: false\r\n})\r\nexport class TldLoaderComponent {\r\n}\r\n","<div class=\"tld-loader accent-color\" fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n <div class=\"accent-bg-color tld-loader-element element-1\"></div>\r\n <div class=\"accent-bg-color tld-loader-element element-2\"></div>\r\n <div class=\"accent-bg-color tld-loader-element element-3\"></div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { TldLoaderComponent } from './tld-loader.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n TldLoaderComponent\r\n ],\r\n exports: [\r\n TldLoaderComponent\r\n ]\r\n})\r\nexport class TldLoaderModule { }\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-company-product',\r\n templateUrl: './company-product.component.html',\r\n styleUrls: ['./company-product.component.scss'],\r\n standalone: false\r\n})\r\nexport class CompanyProductComponent{\r\n\r\n @Input() company = \"\";\r\n @Input() product = \"\";\r\n\r\n}\r\n","<div fxHide.lt-md class=\"tilde-product-title\">\r\n <span class=\"company\">\r\n {{company | uppercase}}\r\n </span>\r\n <span class=\"product\">\r\n {{product}}\r\n </span>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CompanyProductComponent } from './company-product.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CompanyProductComponent\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [CompanyProductComponent]\r\n})\r\nexport class CompanyProductModule { }\r\n","<footer fxLayout=\"row\" class=\"text-m\">\r\n <div fxFlex fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutAlign.xs=\"center center\" fxLayout.xs=\"column\"\r\n fxLayoutGap=\"16px\">\r\n <div>\r\n {{ 'FOOTER.TITLE' | translate: {currentYear: currentYear} }}\r\n </div>\r\n <div fxLayoutGap=\"1rem\">\r\n <ng-container *ngIf=\"baseUrl; else localRoutes\">\r\n <a class=\"semi-bold\" *ngIf=\"termsOfUseRoute\" [attr.href]=\"termsOfUseRoute\" target=\"_blank\"> {{\r\n 'FOOTER.TERMS_OF_USE' |\r\n translate }}</a>\r\n <a class=\"semi-bold\" *ngIf=\"privacyRoute\" [attr.href]=\"privacyRoute\" target=\"_blank\"> {{ 'FOOTER.PRIVACY'\r\n | translate }}</a>\r\n <a class=\"semi-bold\" *ngIf=\"contactUsRoute\" [routerLink]=\"[contactUsRoute]\"> {{ 'FOOTER.CONTACT_US'| translate\r\n }}</a>\r\n\r\n </ng-container>\r\n <ng-template #localRoutes>\r\n <a class=\"semi-bold\" *ngIf=\"termsOfUseRoute\" [routerLink]=\"[termsOfUseRoute]\"> {{ 'FOOTER.TERMS_OF_USE' |\r\n translate }}</a>\r\n <a class=\"semi-bold\" *ngIf=\"privacyRoute\" [routerLink]=\"[privacyRoute]\"> {{ 'FOOTER.PRIVACY'| translate }}</a>\r\n <a class=\"semi-bold\" *ngIf=\"contactUsRoute\" [routerLink]=\"[contactUsRoute]\"> {{ 'FOOTER.CONTACT_US'| translate\r\n }}</a>\r\n </ng-template>\r\n </div>\r\n </div>\r\n</footer>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'tld-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.scss'],\r\n standalone: false\r\n})\r\nexport class FooterComponent implements OnInit {\r\n currentYear!: number;\r\n\r\n readonly defaultTermsRoute = \"terms-of-use\";\r\n readonly defaultPrivacyRoute = \"privacy-policy\"\r\n\r\n @Input() privacyRoute = this.defaultPrivacyRoute;\r\n @Input() termsOfUseRoute = this.defaultTermsRoute;\r\n @Input() contactUsRoute = \"https://tilde.com/about/get-in-touch\";\r\n\r\n @Input() baseUrl!: string;\r\n\r\n constructor() {\r\n this.currentYear = new Date().getFullYear();\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.baseUrl) {\r\n this.privacyRoute = this.baseUrl + this.privacyRoute;\r\n this.termsOfUseRoute = this.baseUrl + this.termsOfUseRoute;\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FooterComponent } from './footer.component';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n FooterComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FlexLayoutModule,\r\n TranslateModule,\r\n RouterModule\r\n ],\r\n exports: [FooterComponent]\r\n})\r\nexport class FooterModule { }\r\n","export enum FileUploadErrorTypeEnum{\r\n FILE_UPLOAD_UNSUPPORTED_FORMAT = \"FILE_UPLOAD_UNSUPPORTED_FORMAT\",\r\n FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER = \"FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER\",\r\n MAX_SIZE = \"FILE_UPLOAD_MAX_SIZE\",\r\n FILE_EMPTY = \"FILE_UPLOAD_EMPTY\"\r\n}\r\n","export enum FileTypeIcons{\r\n WORD = \"file_type_word\",\r\n WEB = \"file_type_web\",\r\n OTHER = \"file_type_other\",\r\n POWERPOINT = \"file_type_powerpoint\",\r\n EXCEL = \"file_type_excel\",\r\n OFFICE_OTHER = \"file_type_office_other\",\r\n PDF = \"file_type_pdf\",\r\n SCANNED = \"file_type_scanned\",\r\n INTERCHANGE = \"file_type_interchange\",\r\n}","export enum FileCategories {\r\n OFFICE = \"OFFICE\",\r\n SCANNED = \"SCANNED\",\r\n INTERCHANGE = \"INTERCHANGE\",\r\n WEB = \"WEB\",\r\n OTHER = \"OTHER\"\r\n}","export enum FileTypes{\r\n WORD = \"WORD\",\r\n WEB = \"WEB\",\r\n OTHER = \"OTHER\",\r\n POWERPOINT = \"POWERPOINT\",\r\n EXCEL = \"EXCEL\",\r\n OFFICE_OTHER = \"OFFICE_OTHER\",\r\n PDF = \"PDF\",\r\n SCANNED = \"SCANNED\",\r\n INTERCHANGE = \"INTERCHANGE\",\r\n}","export enum FileExtensions{\r\n DOC = \"doc\",\r\n DOCX = \"docx\",\r\n DOCM = 'docm',\r\n XLSX = \"xlsx\",\r\n PPTX = \"pptx\",\r\n ODT = \"odt\",\r\n ODP = \"odp\",\r\n ODS = \"ods\",\r\n TXT = \"txt\",\r\n RTF = \"rtf\",\r\n PAGES = \"pages\",\r\n SXW = \"sxw\",\r\n JPG = \"jpg\",\r\n JPEG = \"jpeg\",\r\n PNG = \"png\",\r\n BMP = \"bmp\",\r\n PDF = \"pdf\",\r\n SDLXLIFF = \"sdlxliff\",\r\n SDLXLF = \"sdlxlf\",\r\n TTX = \"ttx\",\r\n TMX = \"tmx\",\r\n XLF = \"xlf\",\r\n XLIF = \"xlif\",\r\n HTML = \"html\",\r\n HTM = \"htm\",\r\n JSON = \"json\",\r\n XHTML = \"xhtml\",\r\n XHT = \"xht\",\r\n XLIFF = \"xliff\",\r\n TEX = \"tex\",\r\n TTL = \"ttl\",\r\n SRT = \"srt\"\r\n}","export const FILE_TYPE_WORD = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M21.128 2.75H7.872C7.3905 2.75 7 3.10796 7 3.54933V6.87637H22V3.54933C22 3.10796 21.6095 2.75 21.128 2.75Z\" fill=\"#2D92D4\"/>\r\n<path d=\"M7 15.1499V18.4508C7 18.8922 7.3905 19.2502 7.8715 19.2502H21.128C21.6095 19.2502 22 18.8922 22 18.4508V15.1499H7Z\" fill=\"#2150A9\"/>\r\n<path d=\"M7 6.87646H22V11.0024H7V6.87646Z\" fill=\"#2D83D4\"/>\r\n<path d=\"M7 11.0024H22V15.1504H7V11.0024Z\" fill=\"#2E70C9\"/>\r\n<path d=\"M11.1595 15.5832H2.8405C2.3765 15.5832 2 15.238 2 14.8127V7.18696C2 6.76163 2.3765 6.4165 2.8405 6.4165H11.1595C11.6235 6.4165 12 6.76163 12 7.18696V14.8127C12 15.238 11.6235 15.5832 11.1595 15.5832Z\" fill=\"#00488D\"/>\r\n<path d=\"M9.20131 8.7085L8.42831 12.0378L7.57181 8.7085H6.47831L5.59481 12.141L4.79831 8.7085H3.82031L4.99231 13.2918H6.16831L7.02481 9.7677L7.88181 13.2918H9.00731L10.1793 8.7085H9.20131Z\" fill=\"white\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_WEB = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M8 15H16V17H8V15ZM8 11H16V13H8V11ZM14 1H6C4.9 1 4 1.9 4 3V19C4 20.1 4.89 21 5.99 21H18C19.1 21 20 20.1 20 19V7L14 1ZM18 19H6V3H13V8H18V19Z\" fill=\"#DF9BA4\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_SCANNED = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M8 15H16V17H8V15ZM8 11H16V13H8V11ZM14 1H6C4.9 1 4 1.9 4 3V19C4 20.1 4.89 21 5.99 21H18C19.1 21 20 20.1 20 19V7L14 1ZM18 19H6V3H13V8H18V19Z\" fill=\"#245A30\"/>\r\n</svg>\r\n`;\r\n","export const FILE_TYPE_POWERPOINT = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M4 11C4 15.5563 8.0295 19.25 13 19.25C17.9705 19.25 22 15.5563 22 11H13H4Z\" fill=\"#DC4C2C\"/>\r\n<path d=\"M13 2.75V11H22C22 6.44371 17.9705 2.75 13 2.75Z\" fill=\"#F7A278\"/>\r\n<path d=\"M13 2.75C8.0295 2.75 4 6.44371 4 11H13V2.75Z\" fill=\"#C06346\"/>\r\n<path d=\"M11.1595 15.5832H2.8405C2.3765 15.5832 2 15.238 2 14.8127V7.18696C2 6.76163 2.3765 6.4165 2.8405 6.4165H11.1595C11.6235 6.4165 12 6.76163 12 7.18696V14.8127C12 15.238 11.6235 15.5832 11.1595 15.5832Z\" fill=\"#9B341F\"/>\r\n<path d=\"M7.3365 8.71387H5V13.2972H6.012V11.6834H7.15C8.088 11.6834 8.8485 10.9863 8.8485 10.1265V10.0999C8.8485 9.33445 8.1715 8.71387 7.3365 8.71387ZM7.785 10.2475C7.785 10.6412 7.4365 10.9606 7.007 10.9606H6.012V9.43666H7.007C7.4365 9.43666 7.785 9.75612 7.785 10.1498V10.2475Z\" fill=\"white\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_PDF = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n<rect x=\"4\" y=\"1\" width=\"16.2822\" height=\"20\" fill=\"url(#pattern0)\"/>\r\n<defs>\r\n<pattern id=\"pattern0\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\r\n<use xlink:href=\"#image0_1791_18185\" transform=\"scale(0.000833333 0.000678426)\"/>\r\n</pattern>\r\n<image id=\"image0_1791_18185\" width=\"1200\" height=\"1474\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAAXCCAYAAAALvBSxAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJTUUH4gobEQc3sOgimQAAgABJREFUeNrs3Xd4HNXBxeFzZ3ZXstyLJHdLssHYxg2wMR1MtenNARIghBIggY9QEwgtdAihdzDFgOkQSuimmN6LMdUNg7uNq6wtM/f7Q0AgWtuSdiXNzP7e58kTAmh27rlX67snM7NGwBrY/l3aKuP2kW+7yZgusn5nWdNZxnSWtZ1l1FkynSUbl9T2xx9rJZniH4/QXpJDkgAAAGgGGcms+J8dbaJ2P2pqJLtUsjWSUy3jL5c1SVktkWMXyjoLZfy5ss5CWS2UzDylnAVmzpxqYgWAYDBEUNhsn/JKuf4AyVTIqlJShWQqJFspqTMJAQAAoICtkuy3kpklo5mSnSXfmSnX+1oxfWW+XLSCiACgeVBgFQjbr1M72dhgeRosR0NlNVjSYEntSAcAAABo1Kep7+XrSzn6StZ+JuljmcwnZvoPywgHAPL9lovIsZKjvuUD5dktZLSFpM0k9SMZAAAAoFnMkNHHkj6W7DtKFb1lvvtuCbEAQONRYEWAHTQooVXzN5Nxt5TV5jJ2c0kdSAYAAAAIxpZd0leS3pbR27J6XTMWfGokn2gAoH4osML6J2BlWbmknSWzm2R3ktSeVAAAAIDQWCHpbVn7glz7gqYt+sDUFl0AgCwosELCbqy4fijfWtbuIqsxMhpEKgAAAEBkzJfVi3LMk8rUPGO+XfYDkQDAf1FgBZiVHFWVbi7r7C/ZAySVkQoAAAAQeZ5kPpKxT8r4T5hpi94nEgCFjgIrYKzkqKLr1pI/Tkb7itIKAAAAKHRfyug++d59ZubiL4gDQCGiwAoIW9mlv+QcIem3krqRCAAAAIAsPpLVRBn3fjNj7iziAFAoKLBakK2oKJZTva+sOVKyWzMfAAAAAOr7cULS67L2VmWKHjDffbeaSABEGYVJS/xJU9F5Azmx38vawyV1IREAAAAAOVgm6X5J15sZCz4mDgBRRIHVTKxkVFU6Rr45SUajSQQAAABAE3hd0s1y291vvvkmSRwAooICq4nZQYMSql54gKRTJG1IIgAAAACawQIZ3aBY7Frz1ZxFxAEg7Ciwmojt16mdMvHD5NhTZNWDRAAAAAC0gKSkB+S7F5lZcz8nDgBhRYGVZ7Znz06KpU+WscdJakMiAAAAAALAl+yDcpzzzbT5U4gDQNhQYOWJHVTaRqv0JxnzV0kdSAQAAABAED+6SPYpGXuumb7oPeIAEBYUWLm++5eXt1Zr/zhZc4qkTiQCAAAAIAwfZSQ9LmPONNPnf0ocAIKOAqux7/bbKqZZpUdL5kxJZSQCAAAAIIR8SffIOmeZmfNmEgeAoKLAagRbVb69rL1C0mDSAAAAABABaUm3y9qzzcyF84gDQNBQYDWArSpdT9a5QLL7kwYAAACACFolo3/KL7nYzJxZQxwAgoICqx7soNI2Wm1OltVfJRWRCAAAAICIfwqaLZm/mxkL7iILAEFAgbWut+2K8t/I2KsklZMGAAAAgML6xGhfkuMeZ76Z9xlhAGjRtyMiyM726dJNxrlWRvuQBgAAAIAClpbMDarW6Wb+/FXEAaAlUGD9DysZVZYdLOkKSZ1IBAAAAAAkSdNldayZueBZogDQ3CiwfsH2K+urjG6W0WjSAAAAAICsHyMflKM/m2nzF5AFgObiEEHtVVe2ovR4eZpCeQUAAAAAa/0Etb98+7mtKv2D5aIIAM2k4N9sbEVpVxlzu6RdWA4AAAAA0KCPlK/I8Y8w0xZ+QxYAmlJBX4FlK8p2ljEfiPIKAAAAABrzqWob+eYTW1H+f1yNBaApFeQbjK2oKJZZfYlkjxNvsgAAAACQD88q4//BzF40hygA5FvBlTe2T7cBcr2HZDWQ6QcAAACAvFooq6PMzAWPEQWAfCqoAstWlu8h2bsktWfqAQAAAKDJPmo+KJs8ysxcupQsAORDQTwDy0qurSq/WLKPifIKAAAAAJr6U9j+MokPbFXXEWQBIB8ifwWW7dGjsxLpiZJ2ZLoBAAAAoFllZO3fzcyFlxAFgFxEusCyfbtsLN95RFJvphoAAAAAWuyj5wNy00eab5YsJwsAjXoXierAbEXZXjK6R1IJ0wwAAAAALe5rSfubGQs+JgoADRXJZ2DZivITZPSwKK8AAAAAICjWk/SmrSg9lCgANFSkrsCykqvK8iskexxTCwAAAACBdbM6LfizeV9pogBQH5EpsGx5eWuV2Hsl7cG0AgAAAEDgPS8v+Rvz7bIfiALAukSiwLKVZeWSeVKymzClAAAAABAaX8t39zSz5n5OFADWJvQFlu3TpZuM87yMBjGdAAAAABA6S2X9vczMRa8QBYA1CfVD3G1ltz4yzmTKKwAAAAAIrQ4yzrO2qvxAogCwJqEtsGxF5w0k7zUZ9WUaAQAAACDUimTt3baq/C9EASCbUBZYtrJsiIz7sqSeTCEAAAAAROTzqbX/spVlZxIFgLpvECFjq7psIuklSeVMHwAAAABEzj9sZdk/iAHAL4XqIe62qnywrH1JUmemDgAAAAAi7TIzY8GpxABAClGBZatK15M1r0rqyrQBAAAAQEH4l5mx4CRiABCKAstWde8tm3lVUh+mDAAAAAAK6lPrjZq+4FgjWcIAClfgn4Fle3buIZt5SZRXAAAAAFB4rI5WZdmNNqRfQgYgPwJ9BZbt17VUnveKZAYwVQAAAABQyOytmrHwj0byyQIoPIEtsGzPnq0UT70kaVOmKQCKi+V37yHbvads9x6ynTrLtu8odewo276DbPsOUtu2srF47b/ftp3kGHIDAABA81u5UvIyMiuWS6tXyyxfLrNsqbRsqcyypTI/LJFZMF9m/jyZhQtkFi8is7CwulczFxxiJI8wgMISyIbBSo6qyh6W1V5MUTNn36GD/PU3kF1/gPx+68tfr79sz16ynbsQDgAAAKIpnZZZtFBm3hw5386S+XamnG9nysz68T+rVpJRoD7F2vvUe+HB5mVlCAMooF/9IJ6UrSy/WrLHMT1NLB6XP2iw/KEbyRu2kfwhw2XL+ZJHAAAA4FcfmhYvkpk5Xc5XX8j5bIqcz6fImfaNlEkTTsvNygPqM/+3lFhAAf3WB+2EbFXZibK6nKlpAo4jf+CG8rbYWt4WW8sfNEQqKiIXAAAAoKGSydpCa+oUOVM/lfPZp3K+/lLyuLOtGT2kTgsOMu+LJhEoAIEqsGxV+W6y9jFJLlOTp0zbtJW3zWh524yWv/lWsh06EgoAAADQFB+uVq6Q8/67ct59S+67b8v5fIrk87zxJk79Kblt9zXffJMkCyDiv+1BORFb1WUTWecVSSVMS45Ztm4jb7sd5O28q7wttpYSCUIBAAAAmvvD1pLFcl97Re7kl+S8Pllm+TJCaZpPQE/Ibb8/JRYQ8ffUQLzd9OzZSfHUe5IqmZJGchx5m2+lzD7j5G2zPbcGAgAAAEGSSct983W5zz4l98Xnar8hEfn0jNKJfcx3360mCiCaWrzAspKjyrL/SNqZ6WhEft26K7P3/srsPU62W3cCAQAAAIIunZY7+WXFHrpP7uuv8Nys/H28fUUl/m7ms4V8bSQQxd/wlj4BW1V2iaxOZSoaxh++idKHHi5vux0ll0eGAQAAAKH8QDZvjmKPPKjYg/fKLFxAILl7VSV2V0osIILvly354raifE8Z+6gC+G2IgeQ48rbeTukjjpE/bGPyAAAAAKIinVbsmScVu/k6OTOmkUduXlPCH2u+XLSCKIDoaLHiyFZ26S8570hqxzSsg+PI23GMUsefJNuHx4QBAAAAkeX7cie/rPiNV8v59GPyaPQHTr2hWGaM+WYJDxsDIqJFCizbvXuJijPvymogU7AWrqvMmN2VPuZ4iisAAACg0D4OvDFZsVuvl/vOW4TROG/JpsaYmUuXEgUQfi1TYFWUXS+jY4h/zbxtRit90unyq/oSBgAAAFDA3LdeV/zyi+R8/hlhNPwT7wdKxncy33+/mDCAsP86NzPbp3SMHPOUeO5VVn5lX6VPPUPeVtsRBgAAAIAfP0hZuc/9R4krL5WZ/S15NMxHisd2NF/NWUQUQHg1a4lk+5aXybefSCon+v/Jpn17pY8/WZn9DpDcGIEAAAAAqCuZVPzeOxW75XqZ5cvIo/6fuD6X1Wgzc+E8sgDCqdkKLCsZVZY+LpndiP3XvLG7K/XXs2U7dSYMAAAAAOv+ILdsmeLXXK7YA/dIvk8g9UvtC2W87c3sRXPIAgjhb3BzvZCtKD1exlxF5L/IpKxcqdPPlbfDzoQBAAAAoMGcqVOU+McZcqZ8Qhj186XS3vbmu8XfEwUQLs1SYNnKLv0l5yNJxUReKzPuIKVPPl22pDVhAAAAAGg8L6PYPXcqfu0VMtWryGPdvpKb2d58s+Q7ogDCo8kLLCsZVZS9IKPRxC3Zjp2U+scl8rbbgTAAAAAA5O/D3fy5Slx4jtwXnyOMdZsp34w2s+bPIAogJO9xTf0CtqLsaBndQNSSt9mWSl3wT9kynmEPAAAAoGm4zz6lxD/OkFnGQ97X4Vu5Gm2+WTCNKIDga9ICy/bq0l0x5zNJHQr7T5CYUieepswhh0vGsOoAAAAANO0HvflzlTjrr3Jff5Uw1v6pdbYcjTbTFn5DFkDA39ea9K2gquxRWe1V0G+Hnbso+c9r5I8YxWoDAAAA0IwfRqxiD9yjxOUXSdXV5LFm8+Q525tv500lCiC4mqzAspWl4yRzfyGH6w8aouQV18t278FKAwAAANAyH/pmTlfRycfJ+YJ+Zi3my3W2N9/M+4wogIC+lzXFQW1Vx/ay8S8lFezDnjJ77afU2RdK8TirDAAAAEDLSiaVuPR8xe6/myzWjBILCLCmKbAqyy6XdGJhJmqU/tNflD76OFYXAAAAgEBxn31KibP+KrNqJWFkt1DSDmbGgk+IAgiWvBdYtl9ZX3n6TFJRwaUZjyt13qXK7LYXKwsAAABAMD8EzpqhouP/KGfa14SRPaEfZMzOZvq8d8kCCA4n70f07JUqwPLKtm6j5M0TKK8AAAAABPuzS59KJe99RN72OxFG9oQ6yvrP2YryTckCCI68XoFlq8q3l7UvFNzbW/v2St54p/zBQ1lRAAAAAELyQcYqfvU/Fb/lerLIbpl8jTGzFrxJFEDLy1uBZSVXlWUfShpcUO/5nTorecsE+f0HsJoAAAAAhE7ssYeUOPd0KZ0mjLpWyTq7mZnzXiYKoGXl7xbCytKjVWjlVXlXJe+8n/IKAAAAQGhl9tpPyWtukYqLCaOu1jL+E7aydGuiAFpWXq7AsuXlrVVip0kqL5TgbMdOSt5xv/y+/VhFAAAAAELPee9tFR97uFS9ijDqqpYxe5rp818gCqCF3qPycpRW/p9VSOVV23ZK3nQn5RUAAACAyPA32VQ1N4yXLWlNGHWVyNrHbWUZT74HWkjOV2DZQaVtVG2mSyothMBs6zZK3no3D2wHAAAAEEnOh++p6OjDZFatJIy6UpLZ38yY/zhRAM383pTzEVaZE1Ug5ZUSCaWuvZXyCgAAAEBk+cM3UfKmO2XbtCWMLJ8KJfugrSjbiyiA5pXTFVi2okMHmaLpku0Y/aSMUhderszue7NqAAAAAESeM3WKio46WGbpUsKoKy2jA8z0BY8QBdBM70k5/bSJn1wQ5ZWk9J/+QnkFAAAAoGD4AzdU8pa7ZTt0JIy64rJ6wFaV/ZYogObR6CuwbO/2HeUWzZIU+etKvbF7KHnJlZIxrBgAAAAABcX58nMVHfE7mR+WEEZdGRlziJk+fyJRAE38XtTon3SLj1EBlFf+0OFKnn8Z5RUAAACAguT3H6DknQ/IlpYRRl0xWTvBVpQeShRA02pUK2P79SuSt3yGpG5RDsd26qyaB5+QLe/GSgEAAABQ0JwZ01R0+G9lFswnjLp8GXukmb5wPFEATfQe1LhfzWUHKeLlldyYUpdfR3kFAAAAAJL8yr6qGX+vbHlXwsj22dqaW21l6Z+IAmiqX7LGsOb/oh5M+sTT5I3YlBUCAAAAAD99FKyoqi2xuvJ/9GdhJHONrSg9niiA/GtwgWX7lI6RNDTKoXibb6X0IYezOgAAAACgzmfCStXc9aBsr96EUZeRMVfaivITiALIr4ZfgeWYkyL9Ztyho1IX/JOHtgMAAADAmj43de+hmvETZXv1IYy6jIy9wlaWn0EUQP40qMCyvbsOlLR9lANJnXU+364BAAAAAOv6fNitu2puv1e2dwVhZE/ofFtV+ldyAPKjYVdgxbwjoxxGZv8D5e00llUBAAAAAPVgu3ZXze0T5VdUEUbWgMxFtqr8YoIAclfv++Rsv35F8pbPllQayfeVsnLVPP68bJu2rAoAAAAAaMgHy8WLVHT4b+V88xVhZA3IXGKmz+dqLCAH9b8Cy1+xryJaXklS6u/nUV4BAAAAQCPYzl2UHH+v/PX6E0bWgOxptrLsUoIAGq/+BZb1I3v7oDdmN3mjd2Q1AAAAAEAj2U6dlbzzfvmDhhBGdqfYyrLLiQFonHrdQmj7lfWVp6/VgFsOQ/Mm26Zt7a2DZeWsBgAAAADI9UPmiuUqOuoQOZ9+TBjZP4XfqOkLjjWSJQyg/up3BZavoxTB8kqS0iecQnkFAAAAAHli27ZT8ua75A8ZRhhZA9LRqiy70Tb0S9WAAues+3dLjqx+F8XB+1V9ldn/QFYBAAAAAOTRzyXWsI0II7ujVFl6EyUWUH/r/mWp6LKVpO5RHHz6tLMkN8YqAAAAAIA8s23aqubmCfJGjiKMrMwRqiibYCWXLIB1q0fb6/wmigP3thktb4utWQEAAAAA0FRKSpS8bry8kZuRRTZGB6mq9G67rbiyAliHtRZYVnJltE/kRu26Sp/4N2YfAAAAAJpaq1ZKXnebvE03J4usH7zNAZpVfg8lFrB2a78Cq6p8O0mRe8J5Zszu8vv2Y/YBAAAAoDm0aqXkDbfL23Z7ssjKjtOssol2Y8XJAshu7QWWteMiN2LXVebo45h5AAAAAGhOiYSSV9wgb7sdyCK7/bSk/FHbr18RUQB1rbHA+vHyxb2iNuDMbnvJr6hi5gEAAACgucXjSv7rennb70QW2T+J7yp/+aO2oqKYLIBfW/MVWLPLt5ZUGqnRujGl//hnZh0AAAAAWko8ruQ/r5W3wy5kkY3VGDnVj1BiAb+25gLLt2OiNlhvp11ke1cw6wAAAADQkuJxJS+/Vpnd9iKLbKzGyKx+xg4qbUMYQC1nrb8wEZP+3R+YcQAAAAAIAtdV6oJ/KrPHPmSR/UP5Nqo2T1FiAbWyFli2X6eeMhoUpYH6wzeRP3Q4Mw4AAAAAQeG6Sp13qTJ77UcW2W2tavO07d+lLVGg0GW/AsuLj43aQNOHcPUVAAAAAATOTyXWAQeTRXZbKuk8Y/t1akcUKGTZCywTredf2a7d5I3mWy4AAAAAIJCMUer0c5QZdxBZZM1Hm8uLT7I9e3YiDBSqOgWW3VhxWW0XpUFm9hknuS6zDQAAAACB/XTqKHXm+cr87jCyyMpurETqedujR2eyQEG+RdT5O0tKN5PUPkpvgpm99memAQAAACDojFHqtDOV4REw2VltpESaEgsFKcsthM6WURqgt9mWst17MNMAAAAAEAbGKHXqmUof9SeyyG64EqnJtqK0K1GgkNQtsKy2iNIAM/uMY5YBAAAAIGTSx5+s9BHHEkRWZoCM85Lt1aU7WaBQ/KrAspKRsaOiMjhb0lretjswywAAAAAQQukTTlH6L6cRRPZPvBso5kyyPTtzyxEKwq+vwOrXdaCkyHyrgTd6R6moiFkGAAAAgJBKH340Jdaa9Vfcfcn269STKBB1vy6wPBup2we9nXdlhgEAAAAg5NKHH630yacTRHbryYtNtn3KK4kCUfY/z8CKToFlS1rL23wrZhgAAAAAIiD9+yOVOuUMyRjCqKtCjn3Z9ivrSxSIqv99iPtmURmYt+323D4IAAAAABGSOfQIpU47kxIru97yNIkSC1H1c4Fl+3dpK6lfVAbmb7s9swsAAAAAEZP53WFKnX2h5DiEUVdveXrN9u46kCgQNf/9jc84QyRFo8Z2HHmjtmB2AQAAACCCMvsdoNQ5F1FiZddVrj/J9us6iCgQJf/9bbcaEpVB+QM2lO3UmdkFAAAAgIjK7DNOqYuvkNwYYdRVLs+fZKvKBxMFouK/BZavyCxsb8utmVkAAAAAiLjM2D2UvOhflFjZlcnaF21l2RCiQBT8t8Ay0bkCy9tsS2YWAAAAAAqAN3Z3Sqw1K5XMy7aq6wiiQNg5kmRrn30VjSuwEgn5g4cxswAAAABQILyxuyt52VVSLE4YddiOsv5ztqJ8U7JAmNVegdWnvEJSuygMyB+4oVRUxMwCAAAAQAHxdhqr5NU3SokEYdTVQcY+ayvKRxEFwurHWwj9DSLzpjV0I2YVAAAAAAqQt/VoJa+6iYsasmsvY5+1fcu2IAqEUW2B5ZrKqAzIH0aBBQAAAACFyttqWyWvvlkqLiaMutrJ17O2b/lookDY1BZYVhVRGZA/ZBizCgAAAAAFzNtiayWvuUVq1Yow6mot3z5hq8p3IAqEyU/fQhiJK7Bs+/ay5d2YVQAAAAAocN5mW6rmxjtkS1oTRl0lsvZxW1m2I1EgLH4ssKJxC6G//gbMKAAAAACg9jPixiOVvPF2SqzsWkl6wlaW70EUCIMfCyxbEYXB2PUHMKMAAAAAgJ/5G41Q8uY7ZVu3IYy6iiT7oK0o24soEHSO7d+lraTOkXhjWq8/MwoAAAAA+PVnxWEbK3n7vbLt2xNGXQkZ3W+ryvYhCgSZo7RbEZk3pX7rMaMAAAAAgLqfFwcOVvLmu2TbUWJlkZDVfbaydH+iQFA5sjYyTz23vfowowAAAACArPxBQ5Qcf69sh46EUVdcMhNtZdnBRIEgcmRMJG4fVHGxbKfOzCgAAAAAYI38DQYqedeDsqVlhFGXK+l2W1F6KFEgaBxZv0sk3oS6dpeMYUYBAAAAAGv//FjVt/ZKrLJywqjLlTHjbVXpH4gCQRKZK7Bsj57MJgAAAACgXvzKH0us8q6EUZcja261laV/IgoEaVFGo8Dq1p3ZBAAAAADUm19RpZrb7pEt70YYdRnJXGMrSo8nCgSBIxONWwhtl1JmEwAAAADQsM+SFVWqmfCgbM9ehFGXkTFX2oryE4gCLS06V2C151skAAAAAACN+DzZvYdqbr+Pb7bPzsjYK2xl+RlEgZbkSCYazU9HCiwAAAAAQOPYbt1Vc/u9sr0rCCN7QufbqtK/kgNaiiNrW0XiV6l9B2YTAAAAAND4z5Vdu6vmrgfk9+1HGFkDMhfZqvKLCQItwZFRIhK/Rx24AgsAAAAAkONnyy6lSo6fKL/veoSRNSB7GiUWWoIjqSgSI2ndhtkEAAAAAOTMdu6i5O0T5a/XnzCyBmRPs5VllxIEmpMjReQKrHiM2QQAAAAA5OczZqfOSo6/V/76GxBGdqfYyrLLiQHNxZFMNK7AiseZTQAAAABA3tiOnZS84z75Gw4hjOxOtFVlN1jJEAWamiPZSFyBpXiC2QQAAAAA5JVt117JWybIHzKMMLIGpKNVWXajrb3DC2gykbmFkCuwAAAAAABNwbZtp+TNd8kfOpwwsjtKlaU3UWKhKTmSItH82BjPwAIAAAAANNFnzjZta0us4ZsQRlbmCFWU30KJhabCwgIAAAAAoB5s6zaquelOeSM3I4xsjP2DqkrvsduKK0yQdxRYAAAAAADUV0mJktfdJm/UFmSRjTUHaFY5JRbyjgILAAAAAICGaNVKyWtvlbfZlmSRlR2nWWUT7cbiYdXIGwosAAAAAAAaqri49kqs7XYgi+z205LyR22/fkVEgXygwAIAAAAAoDESCSX/db287Xcii6zsrvKXP2orKorJArmiwAIAAAAAoLHicSX/ea28HXYhi2ysxshUP2p79mxFGMgFBRYAAAAAALmIx5W8/Fpldt2TLLLbRfH003ZQaRuiQGNRYAEAAAAAkCvXVerCy5XZfW+yyMpuo2rzFCUWGosCCwAAAACAfHBdpc6/TJk99yWL7LZWtXna9u/SlijQUBRYAAAAAADki+sqdd6lyuy1P1lkt6WSzjO2X6d2RIGGoMACAAAAACCvn7Qdpc67RJkDDyGLbIw2lxefZHv27EQYqPevFREAAAAAAJBnxih1+jnK/Pb3ZJGV3ViJ1PO2R4/OZIH6oMACAAAAAKApGKPUX89S5pA/kEU2VhspkX7Brt+9C2FgXSiwAAAAAABoKsYodeqZSh95LFlkN0zp9Ku2orQrUWBtKLAAAAAAAGhi6f87RemjjyOIrMwAGecl26tLd7LAmlBgAQAAAADQDNJ/PlHpY/+PILKyGyjmTLI9O/cgC2RDgQUAAAAAQDNJH3uC0n85jSCy66+4+5Lt16knUeB/UWABAAAAANCM0ocfrfRJfyOI7NaTF5ts+5RXEgV+iQILAAAAAIBmlj7sKKVPOYMgsquQY1+2/cr6EgV+QoEFAAAAAEALSB96hFJnni8ZQxh19ZZnX7J9S/sRBSQKLAAAAAAAWkzmN79V6qwLJIeP53WZXvLNZNu760CyAL8hAAAAAAC0oMz+Byp19oWUWNl1letPsv26DiKKwsZvBwAAAAAALSyz72+UOvciSqzsyuX5k2xV+WCiKFz8ZgAAAAAAEACZvccpefGVkhsjjLrKZO2LtrJsCFEUJgosAAAAAAACwhu7u5KXXEGJlV2pZF62VV1HEEXhocACAAAAACBAvF12U/Kyq6RYnDDqsB1l/edsRfmmZFFYKLAAAAAAAAgYb6exSl51o5RIEEZdHWTss7aifBRRFA4KLAAAAAAAAsjbZnRtiVVURBh1tZexL9iKrtsSRWGgwAIAAAAAIKC8rbZT8qqbpOJiwqirtYz/pO1bPpoooo8CCwAAAACAAPO23EbJq2+mxMqutXz7hK0q34Eooo0CCwAAAACAgPM230o1N94hlbQmjLpKZO3jtrJsR6KILgosAAAAAABCwN9kU9XceLssJVY2rSQ9YSvL9yCKaKLAAgAAAAAgJPyNRih50x2yrdsQRl1Fkn3QVpTtRRTRQ4EFAAAAAECI+MM3UfL2e2XbtyeMuhIyut9Wle1DFNFCgQUAAAAAQMj4Awcrecvdsh06EEZdCVk9YKvKfksU0UGBBQAAAABACPkDN1Ty1ntkO3QkjLpcWd1pK8sOJopooMACAAAAACCk/A0GKnnbPbIdOxFGXa6k221F6aFEEX4UWAAAAAAAhJjff4CSdz0gW1pGGHW5Mma8rSo9jCjCjQILAAAAAICQ8yv7Knn7RNmycsKoy5E1t9nK0j8RRZgnEQAAAAAAhJ5fUaWa8ffKlncjjLqMZK6xlaXHEUU4UWABAAAAABARtqJKNXc9INuzF2HUZSRzla0oP4EowocCCwAAAACACLE9eqpm/ETZXr0Joy4jY6+wleWnE0W4UGABAAAAABAxtnuP2hKrdwVhZE/oAltZdiY5hAcFFgAAAAAAEWS7dVfN7ffK9qkkjOz+YSvKziaGcKDAAgAAAAAgomx5N9Xc9YD8vusRRjZG59iq8osJIvgosAAAAAAAiDDbuYuS4++V3299wsgakD3NVpZdShDBRoEFAAAAAEDE/Vxirb8BYWR3iq0s+ycxBBcFFgAAAAAABcB26qzkHffJHzSEMLI7yVaV3WAlQxTBQ4EFAAAAAECBsO3aK3nrBPmDhxJG1oB0tCrLbrT0JYHDhAAAAAAAUEBs23ZK3jJB/tDhhJHdUaosvYkSK1iYDAAAAAAACoxt01bJm+6UP2wjwsjKHKGKsglWcskiGCiwAAAAAAAoQLZNW9XcPEHeyFGEkY3RQaoqvdtuqxhhtDwKLAAAAAAAClVJiZLXjZe36eZkkY01B2hW+T2UWC2PAgsAAAAAgELWqpWS194qb7MtySIrO06zyibajRUni5ZDgQUAAAAAQKFr1UrJ626Tt+32ZJHdflpS/qjt16+IKFoGBRYAAAAAAJASCSWvuEHe6B3JIiu7q/zlj9qKimKyaH4UWAAAAAAAoFY8ruTl18nbYWeyyMZqjEz1o7Znz1aE0bwosAAAAAAAwH/F40r+8xp5O44hi+x2UTz9tB1U2oYomg8FFgAAAAAA+LVYbYmV2W0vssjKbqNq8xQlVvOhwAIAAAAAAHW5rlIX/FOZPfYhi+y2VrV52vbv0pYomh4FFgAAAAAAyM51lTrvUmX22o8ssttSSecZ269TO6JoWhRYAAAAAABgzX4qsQ44mCyyMdpcXnyS7dmzE2E0HQosAAAAAACwdsYodca5yhx0KFlkZTdWIvW87dGjM1k0DQosAAAAAACwbsYo9bezlTn4MLLIxmojJdIv2PW7dyGM/KPAAgAAAAAA9WOMUqedpfQRx5JFdsOUTr9qK0q7EkV+UWABAAAAAIAGSZ9witJ//DNBZGUGyDgv2V5dupNF/lBgAQAAAACABksfd5LSxxxPEFnZDRRzJtmenXuQRX5QYAEAAAAAgEZJ/+kvSv/lNILIrr/i7ku2X6eeRJE7CiwAAAAAANBo6cOPVvrEvxJEduvJi022fcoriSI3FFgAAAAAACAn6T/8UemTTyeI7Crk2Jdtv7K+RNF4FFgAAAAAACBn6d8fqdSZ50nGEEZdveXZl2zf0n5E0TgUWAAAAAAAIC8yv/mdUmeeT4mVlekl30y2vbsOJIuGo8ACAAAAAAB5kxl3kFJnXyg5VA5ZdJXrT7L9ug4iioZhNQEAAAAAgLzK7HeAUudcRImVXbk8f5KtKh9MFPXHSgIAAAAAAHmX2WeckhdfIbkxwqirTNa+aCvLhhBF/VBgAQAAAACAJuGN3YMSa81KJfOyreo6gijWjQILAAAAAAA0GW/MbkpeeqUUixNGHbajrP+crSjflCzWjgILAAAAAAA0KW/nXZW86kYpkSCMujrI2GdtRfkoolgzCiwAAAAAANDkvG1GK3nlDVJREWHU1V7GvmArum5LFNlRYAEAAAAAgGbhbT1ayStvpMTKrrWM/6TtWz6aKOqiwAIAAAAAAM3G22pbJa++WSouJoy6Wsu3T9iq8h2I4tcosAAAAAAAQLPytthaNTfcLpW0Joy6SmTt47aybEei+C8KLAAAAAAA0Oz8EaNUc8N4WUqsbFpJesJWlu9BFLUosAAAAAAAQIvwNx6p5E13yLZuQxh1FUn2QVtRthdRUGABAAAAAIAW5A/fRMnx98i2a08YdSVkdL+tKtun0IOgwAIAAAAAAC3KHzREyVsnyLanxMoiIasHbFXZbws5BAosAAAAAADQ4vyBg5W89R7ZDh0Ioy5XVnfayrKDCzUACiwAAAAAABAI/oBBP5ZYHQmjLlfS7bai9NBCHDwFFgAAAAAACAx/g4FK3vWgbGkZYdTlypjxtqr0sEIbOAUWAAAAAAAIFL+qr5Lj75UtKyeMuhxZc5utLP1TYQ0aAAAAAAAgYPzKvqoZf69seVfCqMtI5hpbWXpcoQyYAgsAAAAAAASSrahSzV0PyvboSRh1GclcZSvKTyiEwVJgAQAAAACAwLI9eqrm9vtke/UmjLqMjL3CVpafHvWBUmABAAAAAIBAs917qGb8RNlefQgje0IX2MqyM6M8QgosAAAAAAAQeLZbd9Xcfq9s7wrCyO4ftqLs7KgOjgILAAAAAACEgu3aXTV3PSC/bz/CyMboHFtVfnEUh0aBBQAAAAAAQsN2KVVy/ET5/dYnjKwB2dNsZdmlURsWBRYAAAAAAAgV27mLkuPvlb9ef8LI7hRbWfbPKA2IAgsAAAAAAISO7dRZyTvvlz9oCGFkd5KtKrvBSiYKg6HAAgAAAAAAoWTbtVfy1gnyN6TEyh6QjlZl2Y02Av0PBRYAAAAAAAgt27adkrdMkD9kGGFkd5QqS28Ke4lFgQUAAAAAAELNtm2n5M13yR+2EWFkZY5QRdkEK7lhHQEFFgAAAAAACD3bpq1qbp4gb8SmhJGN0UGqKr3bbqtYGE+fAgsAAAAAAERDSYmS142XN3IzssjGmgM0q/yeMJZYFFgAAAAAACA6SkqUvO42eaO2IIus7DjNKptoN1Y8TGdNgQUAAAAAAKKlVSslrx8vb5vRZJHdflpS+ojt168oLCdMgQUAAAAAAKInkVDyyhvlbbcDWWRldlNmxSO2oqI4DGdLgQUAAAAAAKIpHlfyX9fL234nssjG2LHS6ofDUGJRYAEAAAAAgOiKx5W8/Fp5O+xCFtkYO1amOvDfTkiBBQAAAAAAoi1WW2Jldt2TLLLbV7PKJga5xKLAAgAAAAAA0ee6Sl14uTK7700W2e2nWWW32oB2RRRYAAAAAACgMLiuUudfpsye+5JFdoeqsuzqIJ4YBRYAAAAAACgcP5VYv/kdWWT3J1tZfnrQTooCCwAAAAAAFBZjlPr7P5Q58BCyyMqeb6tK/xCkM6LAAgAAAAAAhccYpU4/R5nfHUYWWdKRNTfbivLAPPWeAgsAAAAAABQmY5Q67UxlDvkDWdTlyti7bWXZkCCcDAUWAAAAAAAoXMYodeqZSh/1J7Koq42kx23f8rKWPhEKLAAAAAAAUPDSx5+s9NHHEURdfeTZR22/fkUteRIUWAAAAAAAAJLSfz5R6b+cRhD/y2hzectvaslToMACAAAAAAD4UfrwoymxsjvUVpWd2FIvToEFAAAAAADwC+nDj1b6pL8RxP+yutRWle/QEi9NgQUAAAAAAPA/0ocdpdQpZxDEr7my9h7bs3OP5n5hCiwAAAAAAIAsMoceodSZ50vGEMZ/lSnu3mu3Vaw5X5QCCwAAAAAAYA0yv/mtUmddIDlUKL+wtWaVntucL0j6AAAAAAAAa5HZ/0Clzr6QEutXzN9sZfkezfVqJA8AAAAAALAOmX1/o9TFV0iuSxi1jGRvt5Xd+jTHi1FgAQAAAAAA1ENm7B5KXnSF5MYIo1YnWa9ZnodFgQUAAAAAAFBP3tjdlbyEEutnRptrVvmpTf0yFFgAAAAAAAAN4O2ym5KXXSXF4oQhSbJn28qyIU35ChRYAAAAAAAADeTtNFbJq2+UEgnCkBKS7rKDBjVZGBRYAAAAAAAAjeBtPVrJq26SiooIQxqq1QvPaKqDG1tZZqOQUvU7U6SS1iwXAACiLJWS881Xcr76XObrr+QsmCczf77M4kXS6mqppua//2779rLxuGxpuWzXbrJdu8nvu55s/wHyKyp5bgUAAMgb97VXVHTC0b/eixSmjIyzuZk+7918H5gCCwAABJe1cj7+UO4bk+W+86acjz+Q0uncj1tUJH/DofJGjpI/YjN5wzeW4jzDAgAANJ7z7lsq/tMRUvWqQt/Afa500cbmu+9W5/OoFFgAACB4G8BpX8t97CHFnnlSZu6cpt9mtWsvb9vt5e04Rt6W21BmAQCAxu1h3ntbxcceToklXWZmLMjrNxNSYAEAgGCwVu6rLyk2Ybzct9+QbMtsUWynzsrsua8y+x0g26eSeQEAAA3ifPCuio4+TKawSyxfcjYzM+a9k68DUmABAIAW574xWfErL5UzdUpwTsoYeVtvp/SRx8oftjGTBAAA6s356H0V/fH3MqtWFnAK5j3NmD/KSF5ejkaBBQAAWmxbM2uGEuefJffN1wJ9nv6IUUodf5L84ZswaQAAoF6cqZ+q6MiDZZYtK+DNnv5kpi+4Pi+HosACAADNzssodu8EJa75p1RdHZ7T3ma0UqedKdu7gjkEAADr5EydoqKjDpZZurRQI1iujD/AzF6U80NNHZYTAABoTmb+PBX//kAlLvlHqMorSXJfmaRWe+6k+PVX5efbEAEAQKT5AzdU8tZ7ZDt0LNQI2inmXJiPA1FgAQCAZuO+86aK999NzofvhXcQ6bTi119ZO45PPmJSAQDAWvkbDFTyrgdlu5QWagQH26quI3I9CAUWAABoFrEnH1PRUYfKLFkcifE433yl4oP3U/z6KyXPY4IBAMAa+VV9lbx9omxZeSEO35H1r7KSye0gAAAATSx29+1KnH6SlInYbXeep/j1V6noyN/JLJjPRAMAgDXyK/sqOf5e2fKuhTj8zVRZun8uB6DAAgAATSp2zx1KXPwPyfcjO0b3nbdU/Js95Ez5hAkHAABr5FdUqWb8vbLl3Qpw9OZiO2hQorE/TYEFAACaTOyJR2vLq0LYki1coOJDx8n9z+NMPAAAWCPbp1I1t98rW1pWaEOvVPWCIxv7wxRYAACgSbiTX1bi76dI1hbOoJNJFZ12gmITbmcBAACANbK9K5S8ZYJsu/YFNnJzhu3evaQxP0mBBQAA8r81+f47Jf72l8J8uLm1SlzyD8Wvv4qFAAAA1sjvt75SV94oJRKFNOxuSmT+3JgfpMACAAD5tXq1io47Umbp0oKOIX79lYpfcznrAQAArJE3cpRS51xUWIM2Os1WdWzwpWcUWAAAIK8SV1wi56svCEJS/KZrFb/tRoIAAABrlNljH2UOPaKQhtxJNvGnhv4QBRYAAMgb56P3FbtvAkH8QvzKSxV7+H6CAAAAa5Q66W/yth5dQCO2/9fQZ2EZW1kWiSerVr8zRSppzaoHAKCl1NSo1T5jZL6d2Tzbnh495Y3YTP6AgbI9esm2by8ZI7NqlczcOXKmfy3nw/flfPap5Pstm43rKnn1zfK2Gc06AQAAWZlVK1V00D5ypn1dICO2x5kZC6+tdz4UWAAAIB/it92g+BWXNu2LJBK1l9nvf6D8QUPqt9n5YYnc555W7KGJcj7/rOW2aK3bKDnxMflVfVksAAAg+75l9rcqPnAvmaU/FMBo7Wx1WtjXvK90vbKhwAIAADlvtpYsVvGYbWVWrWyiFzDK7Lmv0iecKtultNGHcd59S4mrL5fz4Xsts02rqFLNxEdl27Zj0QAAgKzcN19T0dGHSV6mEIZ7iJmxoF7Pn+AZWAAAIGfxG69psvLKlndVcvxEpc6/LKfySpL8EaNUM+FBJa+8QbasvNlzMjOnK/G3EyVrWTQAACArb7Mtlf7LqYUy3D/X91+kwAIAADkxixcp9vB9TXJsf8Qo1Tz4pLwRm+Z3Y7jDLqp5/Hll9h7X7Hm5L7+o2P13s3AAAMAapQ89Qt7oHQthqCNtVZdN6vMvUmABAICcxO65Q0om835cb+vRqrnhdtlOnZvkvG2btkqdd4lSF18hlZQ0a2aJyy6Q8/WXLB4AAJCdMbVXn/foGf2x+u4x9fnXKLAAAEDjVVcr9sA9eT+st+32Sl59o1Rc3ORDyOy2l2rufEC2tKz5cksmlTjj5EJ5tgUAAGgE2669kpddI8Xi0R6osQfanj07retfo8ACAACNFnv2SZmlS/N6TH/DIUpeenWzbtb8AYNUc88jzfoNgc7UKYrdfQeLCAAArHmPMmSY0sf9JerDbKVY+pB17p1YDgAAoLFi/34kr8ezXUqVvO62Zr+lT5Js9x5K3vmA/L7rNdtrJq67UmbuHBYSAABYo/Rhf5S/yabRHqSxh67rX6HAAgAAjdtnfDdbzvvv5O+AjqPUxVfIdu7SYmOyHTspeds98iuqmucFq1cpcdE5LCYAALDWPVLy/MtkS1pHeZTDbL+ug9YaAysBAAA0hjvpecnavB0v89tD5Y3aosXHZbuUKnntLc12C6M76Xm5777NggIAAGven/TspfSJp0V7kJ53wNr+MQUWAABoFPel5/K3KevaTenjTgrOJrGiSpkDf9dsrxe//MK8loEAACB6Mr/5nbwtt4nwCM3BVjJr+qcUWAAAoOHbi1Ur5X7wft6OlzrtzMBdFp/+4/Gyrds0y2s5Uz6R+/zTLCwAALCWDZhR6pwLpejeSthHfcpGrXG/xAoAAAAN5XzykeRl8nIsf/BQeTvsErgx2g4d5O29f7O9Xvy6K7gKCwAArH1/0rW70sccH+FNpvZZ8z8CAABo6N7iw/fydqz0CadKxgRynOmDDpGc5tkuOdO+kfvaKywuAACw9v3JIX+Qv17/qA5v9zXulZh6AADQUM7HH+blOP7Q4fI23Tyw47S9K+SN3KzZXi92120sLgAAsHZuTKkzzg3s/wGYo/62qnS9rPtPZh4AADSI7+etwEr//sjAD9fbaWzz7UfffE3Ol5+zxgAAwNq3Y5tsKm/MbhEdnZN1YBRYAACgYVuKaV/LrFyR83Fsz17yRu8U+PF6O+wsuW6zvV5swu0sMgAAsE6pk8+QSkoiODI/622EFFgAAKBBnI8+yMtxMnvt36zFUGPZTp3lD92o2V4v9p9/yyxexEIDAABr36OUlSt9wMERHJjZwpaX1/mqRQosAADQIM5XX+ThII4ye+wTmjF7IzZtvhdLpRR77EEWGgAAWKfMH/4oW9I6asNKqMTWeUgqBRYAAGgQM3N6zsfwNtlUtnuP0IzZb8YHuUuS+58nWGgAAGCdbIeOyhwYyauwtvvfv0WBBQAAGsT5dmbOx/B2HhuqMXtDhkturPky/vJzOdOnsdgAAMA6ZQ6L4FVYxlJgAQCAHKRSMvPm5rghMfK23T5c427VSn5FRbO+pPv046w3AACwTrZDB2UOPCRqw9rE9u/S9pd/gwILAADUmzN7luR5OR3DHzxUtrxb+DaH/Qc26+vFuI0QAADUU+bgw6RYPEpDiintjvzVPpRpBgAA9WVmzsj5GN4WW4dy7H7/DZo361kz5Ez9lEUHAADWyXYplbfdDhEblT/il/+LAgsAANRbPp5/5Y/cPJxbqD6Vzf6a7tNPsugAAEC9ZPYZF60B+YYCCwAANI757tvcDlBcLG/IsFCO3fbo1eyv6b4xmUUHAADqxdtsC9n27SO08RS3EAIAgEbuIxYvym1jNXioVFQUyrHbns1fYDlffSGzZDELDwAArFssLm+b7aM0op62T5efH5xKgQUAAOrNLM6tTPE3HBrasdu27WTbtmvmF7Vy3nqDhQcAAOq31wrps0bXyHEG//yXTC8AAKivXK8G8gcPDXcAnbs0+0u671BgAQCA+vFGbhaxzac2/OkvKbAAAED95XgLYZivwJIk26lzs78mz8ECAAD13quUlsm2wBfPNBnfDPrpLymwAABA/aRSMqtWNn5D1aatbPce4d4UdurU7K9p5nwvM/tb1h8AAKgXb8Sm0RmMsVyBBQAAGrh/+GGxZG2jf95W9Q19BrZ9hxZ5XfedN1mAAACgXvwRo6I0nAE//QUFFgAAqJdcv4HQr+oX/hBat26Rl3WmfMwCBAAA9eIN3ShKw2lre/bsJFFgAQCAejI//JDTz9vKCFyBVdJCBdbUz1iAAACgfvuVHj1lW7eJzoDcZB+JAgsAANRX9aqcftzv1Tv8GbQqaZGXdb7+QsqkWYMAAGDdjJFdb/0ojYcCCwAANGDvkEzm9PO2a/fQZ2CLilrmhVMpOdO+YRECAIB68dfrH6VdKAUWAABogOrqnH487N9AWDuIlntp5/MprEEAAFAv0SqwLAUWAABogJrVjf/ZREK2cxcyzIHz+VRCAAAA9RKtAksUWAAAoP5yuYXQdu4iGUOIOXCmcgUWAACo596rd58IbUK5hRAAADREDldg2Q4dyS/XvdvXXxICAACo396rtFxKJKIymt4SBRYAAKgnszqHAqt9h4jsn1ruIVhm5QqZZctYiAAAYN0cR7Zbj6iMprOVHAosAABQP8maxv9sp04RCcG26Kub2bNYhwAAoF78Hj2jMhRHVR3bUmABAID6qWl8gWXbtotICC37HC8z+1vWIQAAqN/+q2evCI2mVXsKLAAA0PQbqOJWERmI36Iv73xPgQUAAOq5bSktj9BgMh0osAAAQNNrFY0CK5fngOXl9b+bzVoCAAD1YjtG6Ut0LAUWAACoJ5PD7XPFxdHIoHpVy04BtxACAIB6ita3QDsUWAAAoL4aX2DZoohcgVVd3bJbt+8osAAAQD116hyhwXAFFgAAaA4xNxrjaOkrsObNk3yf9QQAANYpWldgmSIKLAAA0Ax7DhONYbRwgSUvI7N8OesJAACsk+3YKUKDsS4FFgAAqJ9cSqiIFFhatarlp2HpEtYiAABYJ9uxY3T2YMbGKLAAAEA9Nw5E0OJXYEnSksVMBAAAWLdYXLZ1m2iMxTpcgQUAAOrJ0GAF4gqsJVyBBQAA6qljRJ6D5XALIQAAqK9YvPE/m0pHIgKzamXLn8MPFFgAAKB+bHGriAxEDgUWAACon+LiRv+oSaciEYEJwO17FFgAAKDeWkWkwJJdTYEFAADqt23IocBSMhn68ZtVKwMxDh7iDgAAmmX/FqiNmKopsAAAQP3kcgl6BAosBeXZU4t5iDsAAKgnE5Hax3e4AgsAANSPLcrhFsJUBK7ACsi3/5nV1SxGAABQv31DOh2RgXAFFgAAqK+iosb/7MoV4d83BaTAisTVbAAAAA1h/RQFFgAAqJ8cHgJqVlBg5e08UinWIgAAKDgUWAAAoF5sLldgLVsa+vGbHwJyBVbNahYjAAAoOBRYAACgfnK5AisStxAG5CHu3EIIAAAKEAUWAACon+KSRv+oWb4s/ONfvCgQp2EosAAAQAGiwAIAAPVi27Ru/A8H5eqlXDZN8+cF40SSNSxGAABQcCiwAABAvdh2HRr9s6Z6lVRdHerxm6AUWDUUWAAAoPBQYAEAgPrp0CGnHzcBuQWvUayVWRCMAotvIQQAAIWIAgsAANSLbd1GcmON/vkwF1hm6Q8Beni6ZTECAICCQ4EFAADqxxjZtm0b/+OLFoZ36PPmBuZcrAxrEQAAFBwKLAAAUH8dOjb6R0N9BVZQnn8lSQ7bNwAAUHjYAQEAgHqz7ds3+mfN4hBfgTU/OFdgUWABAIBCxA4IAADUm22XS4EV4iuwFswP0O6NWwgBAEDhocACAAD1llOBFaDnSDX43OfOCdDJsH0DAACFhx0QAACov1yegRXiAsv55uvgnIzrsg4BAEDBocACAAD1ZnMqsOaEc9CeJ2fGN8E5H8MthAAAoPBQYAEAgHqzpWWN/lmzbJlUvSp0YzazZ0mrVwdo98YVWAAAoPBQYAEAgHrLpcCSJGf+vPBtlr75KlgnFKPAAgAAhYcCCwAA1JstLc3p58P4HCznqy+DNQetSliIAACg4FBgAQCAerNdcrsCK1Df5lffzVLQrsBq3ZqFCAAACg4FFgAAqDfbuUtO34IXxge5m6+5AgsAAKClUWABAID6c13Zjp0a/eNmTsgKrGRSzrezgnVOXIEFAAAKEAUWAABokJy+ifD7b8O1UZr+jeRlgpV/CQUWAAAoPBRYAACgQXJ5Dpbz3exwbZSC9vwrSaLAAgAABYgCCwAANEgu30Ro5s+TUqnQjDVoz7+SJFvCM7AAAEDhocACAAANkssthPJ9OXO+C89G6esAXoHFQ9wBAEABosACAAANYrv1yOnnzezwPAfL+fqL4OXPQ9wBAEABosACAAANYnv2yunnzexZoRinWbG89pbHoGnTlkUIAAAKDgUWAABoEL9Hz9w2H9+H4xZC881XkrWBOy/bqTOLEAAAFBwKLAAA0CC2W3fJdRv982G5Asv56stg5t+xE4sQAAAUHAosAADQMLG4bFl5o3/cfBuSAmva14E8L9uhA2sQAAAUHAosAADQYLZH45+D5cyeJXle8DdJXwfzCix1KWUBAgCAgkOBBQAAGszvnsM3ESaTMnPnBH6MJoDfQKhYXLZ1GxYgAAAoOBRYAACgwXL9JkJnxrRAj8/MnyuzdGnwcu/YUTKGBQgAAAoOBRYAAGgw2z23byI0AS+wnCmfBjN3voEQAAAUKAosAADQYLk8A0uSnJnTg71B+nxKMHPnGwgBAECBosACAAAN5ud8C2HAC6ypnwXzxDpRYAEAgMJEgQUAABrMdu0mlZQ0+ufN9G+CvUGaGtBbCDtyCyEAAChMFFgAAKDhjJHfp7LxP754kczyZcEc2vx5MosWBvLcbNdurD0AAFCQKLAAAECj2Mq+Of28CehthM7UKYHN3C+nwAIAAIWJAgsAADSKX1GV2yYkoN9E6Hz+WWAzt127svAAAEBBosACAACNknOB9fWXwdwcffZJYDO33Xuw8AAAQEGiwAIAAI1iq3K8hfCrL4K5OQrqLYSuK1taxsIDAAAFiQILAAA0il9RJTmN30o4ASywzKKFMgsXBDJvW1omuTEWHgAAKEgUWAAAoHGKi2W7dW/0j5vFi2SWLA7WxuizTwMbt+3anTUHAAAKFgUWAABotKg9ByvI30Bou1NgAQCAwkWBBQAAGi3n52B9GazbCJ2pwb0Cyy/vxoIDAAAFiwILAAA0mt93/dw2IoG7AuuzwGZty7uy4AAAQMGiwAIAAI3mr79BbhuRr4NzBZZZslhm/tzAZm2792TBAQCAgkWBBQAAGs1ffwPJdRu/EfnmK8nzgrEp+uyTQGdt+1Sy4AAAQMGiwAIAAI1XXCy/d0Xjf76mRs63M4OxKfp8aoB3bI78nr1YbwAAoGBRYAEAgJzYDQbkthkJyDf/BfkKLNu1m1RUxGIDAAAFiwILAADkxO+fY4EVkOLI+SzA30CYy1VuAAAAEUCBBQAAcpJzgfVpyxdYZslimXkBfoB7nwoWGgAAKGgUWAAAICd+/4G5bUa++EzyMi27Ifrw/WBnzAPcAQBAgaPAAgAAObFl5bKdOjf+AKtXy5k+rWU3RB9/EOyMKbAAAECBo8ACAAA589ffILcNSQs/B8v9+MNA58sthAAAoNBRYAEAgJzl/BysKS34APVMWs7U4D7AXa4rv0cvFhkAAChoFFgAACBn/qAhuW1IWvAKLOfLz6XVqwObre3eQ4rHWWQAAKCgUWABAICc+YOH5rYh+eoLKZ1umc1QwG8f9HtXsMAAAEDBo8ACAAA5s716y3bu0vgDJJNyPv+sRc7d/SjgD3Dvtz4LDAAAFDwKLAAAkBf+hrndRuh+8G7LbIY+ej/Yua5HgQUAAECBBQAA8sIfMjy3Tcn77zT7OZuFC2TmfB/sXPv1Z3EBAICCR4EFAADywh8yLLdNyQfvSr7fvBuhj4N9+6AcR35VPxYXAAAoeBRYAAAgL/zBQyWn8VsLs2yZnBnTmncjFPTnX/XoJZWUsLgAAEDBo8ACAAB5Ydu0ld+nMreNyXvNexuhG/RvIFyf2wcBAAAkCiwAAJBHOd9G2JzPwcqk5Xw+Jdh58g2EAAAAtftEIgAAAPmSa4Hlvt9830ToTP1MqqkJdp48wB0AAKB270YEAAAgX3L9JkIzf67M9981zyYo4LcPSpLlFkIAAIDavRsRAACAfPHX30C2bbucjuG++VqznKsb9G8gjMXl965gUQEAAIgCCwAA5JPryt94RG6HeO3l5tkEffR+oKP0K6ukeJw1BQAAIAosAACQZ96IUbltTt58Xcqkm/Qczfx5MvPmBjpHf/0NWEwAAAA/7RGJAAAA5JO/ycicft6sWin3w6a9vc9tzm87bGyOgwazmAAAAH5EgQUAAPLK32BQzs/Bcia/1LQboHffCn6OAzdkMQEAAPy0fyMCAACQV64rf6NNcjvE5Jeb9hTffTvgOzRHdsAg1hIAAMBP2yMiAAAA+ebn+hysr7+UmTenSc7NLFwgM3N6sPPrXSHbug0LCQAA4Kf9IREAAIB880ZsmvMx3NcnN83mJ+hXX0my3D4IAADw6z0cEQAAgHzLx3Ow3Jeeb5Jzc98L/vOvPB7gDgAA8CsUWAAAIP9cV/7wHJ+D9dbrUvWq/G9+QnEFFgUWAADAr/ZwRAAAAJqCt/mWuR2gpkbu66/m9ZzMwgVyAv78Kxkjf8BAFhAAAMAvUGABAIAm4W21bc7HcF94Nq/n5L4xWbI20LnZPpWybdqygAAAAH6BAgsAADQJ26dStndFTsdwX5kkpdP52/i8MTnwufk8wB0AAKDuPo4IAABAU/G23CannzcrV8h9N08PXbdW7ttvBD4znwe4AwAA1EGBBQAAmkxebiN88bn8bHq+/Fxm0cLAZ+bzAHcAAIC6ezkiAAAATcUbMUpq1SqnY7gvPS/5fs7nku8HwjcJNyZvELcQAgAA/C8KLAAA0HSKi+VtsmlOhzAL5sv59OPcNz1heP5V/w2kktasGwAAgP/dyxEBAABoSt4WW+d8DHdSjrcRVq+S++F7gc/KH74JCwYAACALCiwAANCk8vEcrNgLz+b08+4bk6VUKvhZDR3OggEAAMiCAgsAADQp26dStk9lTscws2bImfZNo3/effWlUGTlD6HAAgAAyIYCCwAANLnM9jvlfIxG30ZordzXXgl8RrZzF9mevVgsAAAAWVBgAQCAJuftNDbnY7iNvI3Q+exTmQXzA5+Rv9EIFgoAAMCa9nREAAAAmpq/4RDZXr1z27RM/VRm7pwG/5z76qRwZDRsIxYKAADAmvaCRAAAAJpDZnSOtxFa26jbCN1XwvH8Kx7gDgAAsGYUWAAAoFl4O47J+Rjuiw0rsMyihXKmfhr8cBIJ+QM2ZJEAAACsAQUWAABoFv7Q4bLduud0DPf9d2SW/lD/f//VlyRrg5/NgEFSURGLBAAAYA0osAAAQPMwRt4OO+d2DM+T+0r9n2nlvhqO2wf9oTz/CgAAYG0osAAAQLPJ5OM2wvo+ByudlvPG5FDk4m2yKYsDAABgLSiwAABAs/GHbSxbVp7TMdzXX5Wqq9f97733tkz1quCHYoz8jUawOAAAANaCAgsAADTjzsORt9PY3I5RUyO3HldWuZNDcvvgev1lO3RgbQAAAKxtG0kEAACgOWXG7J7zMepzG6H7SkgKrJGbsSgAAADWgQILAAA0K3/ocNk+lTkdw33pBSmTXvMGZ+Z0mVkzQpGHt8lIFgUAAMA6UGABAIBml9ll15x+3qxYLvf9d9f4zxvyTYUtiudfAQAA1AsFFgAAaHbebnvlfAz3xTXfRui88mIocvD7rS/bqTMLAgAAYB0osAAAQLPzK/vKHzAop2O4Lz4rWVvn75tVK+V++H44chgxisUAAABQDxRYAACgRXi77pnTz5v58+R89mndzc1rr0jpdDgy4PlXAAAA9UKBBQAAWkRm7B6S6+Z0DPfFZ+v+vVfD8e2DMkb+xhRYAAAA9UGBBQAAWoQtK5e30SY5HaNOgeX7cl97JRTj96v6ynbuwkIAAACoBwosAADQYrxd98ptIzN9mpwZ0/77vz/9WGbxolCM3R+xGQsAAACgvvs+IgAAAC3F22mMFI/ndAx30n+/jdB97eXwjJ3nXwEAANQbBRYAAGgxtl17eVttm9Mx3Bd/UWC9/GI4Bm4M30AIAADQABRYAACgRWXG7pHbZubTj2Xmz5VZMF/OF1NDMWZ//Q14/hUAAEADxIgAAAC0JG+7HWXbtJVZuaJxB7BW7ksvSLG4ZG0oxuxvujkTDwAA0ABcgQUAAFpWUZG80TvmdAj3xefkvjopNEP2RlFgAQAANAQFFgAAaHHernvm9PPuu2/Lfev1cAzWjcnfmAe4AwAANAQFFgAAaHHeqM1zeyZUJi1VV4dirP7gIbKt2zDpAAAADUCBBQAAWp4bk7fLbgUxVI/nXwEAADQYBRYAAAiEzJjdC2Kc/qZbMNkAAAANRIEFAAACwR+2kWyfymgPsqhI3pBhTDYAAEADUWABAIDAyOyya6TH5w3fRCouZqIBAAAaiAILAAAEhrfbXpEenz+K518BAAA0BgUWAAAIDL+yr/wNBkZ2fN5ICiwAAIDGoMACAACB4u26ZyTHZdu0lT9oQyYYAACgESiwAABAoGR23VNyordF8UdsKrkxJhgAAKARKLAAAECg2LJy+RuPjNy4uH0QAACg8SiwAABA4GTG7hG5MfmbbcHEAgAANBIFFgAACBxv57FSIhGZ8dhOneX3XY+JBQAAaCQKLAAAEDi2XXt5W2wdmfH4ozaXjGFiAQAAGokCCwAABFJmbHS+jZDnXwEAAOSGAgsAAASSN3pH2dZtojGWTSmwAAAAckGBBQAAgqmoSN7oHUM/DNu9h2yv3swnAABADiiwAABAYHm7hv82Qm8U3z4IAACQKwosAAAQWN5mW8h27hLqMfgUWAAAADmjwAIAAMHlxuTtvGt4z98YeSNGMY8AAAA5osACAACBlhm7R2jP3a/qK1taxiQCAADkiAILAAAEmj9sI9neFeE891FbMoEAAAB5QIEFAAACL7NLOG8j9EZuxuQBAADkAQUWAAAIPG+3vcN30q4rf8SmTB4AAEAeUGABAIDA86v6yt9gYLjOecAg2XbtmTwAAIA8oMACAADh0LZdqE7X23Rz5gwAACBPKLAAAEDgme+/k/P+O6E6Z3/UFkwcAABAnlBgAQCAwIs99qDk++E54Xhc3tCNmDgAAIA8ocACAADBZq1iTz4WqlP2h20slZQwdwAAAHlCgQUAAALNfedNmdnfhuqcvZGbMXEAAAB5RIEFAAACzX3kgdCdszeKB7gDAADkEwUWAAAILLNqpWKTngvXSZe0lj94KJMHAACQRxRYAAAgsNz/PCGtXh2qc/Y2HinF4kweAABAHlFgAQCAwIo99mDoztnn9kEAAIC8o8ACAACBZGZOl/PJR6E7bx7gDgAAkH8UWAAAIJBijzwgWRuqc7YdOsjvP4DJAwAAyDMKLAAAEDxeRrEnHwvdafsjN5cctlcAAAD5xg4LAAAEjvv6qzIL5ofuvL1NuX0QAACgKVBgAQCAwIk9+lAoz9vblAe4AwAANAUKLAAAEChm6VK5r7wYuvO2ZeWyFVVMIAAAQBOgwAIAAIHiPvmolEqF7ry9UVsweQAAAE2EAgsAAARK7LFw3j7oU2ABAAA0GQosAAAQnI3J11/K+WJqKM+dB7gDAAA04T6RCAAAQFDEHr4/lOdtK6pky7sxgQAAAE2EAgsAAARDOi33qX+H8tT59kEAAICmRYEFAAACwX35BZkfloTy3Ll9EAAAoGlRYAEAgECIPRrOh7fLceSPpMACAABo0i0XEQAAgJZmFi+S+/qroTx3v/8A2Q4dmUQAAIAmRIEFAABaXOzfD0teJpTn7nH1FQAAQJOjwAIAAC3OfezB0J67P4oHuAMAADQ1CiwAANCym5GPP5QzfVo4T96Nyd9oBJMIAADQ1HtGIgAAAC0p9u+HQnvufkWlbOs2TCIAAEATo8ACAAAtp6ZG7tNPhncjNe1rue+8xTwCAAA09b6LCAAAQEuJvfiszIrloR5D/IIzpUyayQQAAGhCFFgAAKDFuI88EP7N1LRvFLvvbiYTAACgKfdcRAAAAFqCmT9X7ntvR2Is8Wv+JbNoIZMKAADQRCiwAABAi4g98qDkeZEYi1m1UvFrLmdSAQAAmggFFgAAaH7WKvb4I5EaUuzRB+V8+jFzCwAA0AQosAAAQLNz33tHZvasaA3K95U4/yzJ95lgAACAPKPAAgAAzc599IFIjsv57JPIXVkGAAAQiH0WEQAAgGZVvUqxF56N7PDi/7pYZuUK5hkAACCPKLAAAECzij3zlFS9KrLjM0sWK37D1Uw0AABAHlFgAQCAZhV79MHoj/HuO+R8/SWTDQAAkCcUWAAAoNmYWTPkfPR+9AfqZRS/+B9MOAAAQJ5QYAEAgGYTe/QhydqCGKv79htyX3iGSQcAAMgDCiwAANA8fF+xJx8tqCEnLv6HVF3N3AMAAOSIAgsAADQL943JMvPmFtSYzby5it9xM5MPAACQIwosAADQLGKPPVSQ446Pv0nmu9ksAAAAgBxQYAEAgCZnViyX+/ILhTn4mhol/nkhiwAAACAHFFgAAKDJuU/9W6qpCdU5e5tvJVtWnp/xv/CM3DdfYyEAAAA0EgUWAABocrFHw3f7oLfHPkoff3Lejhe/6Bwpk2YxAAAANAIFFgAAaNrNxjdfyfnsk3CddCwub+vtlNljH/mDhuQnh+nTFLvnThYEAABAY/ZSRAAAAJpS7NEHQ3fO3shRsu3aS46j1FnnSU5+tkzx666UWbiARQEAANBAFFgAAKDpZNJyn3g0dKftbb/Tz3/tDxqizH4H5OW4pnqV4ldcwroAAABoIAosAADQZNxXX5ZZsjhkuyNH3uidfvW30iecKtupc14OH3viUbnvvMniAAAAaMgWjQgAAEBTiT0WvtsH/SHDZUvLfvX3bLv2Sp/41/y8gLWKn3emlEqxQAAAAOqJAgsAADQJs2Sx3FdfDt15Z3Yam/3v77mvvBGb5mcDNmOa4uNvYpEAAADUd/9EBAAAoCm4TzwqZdLhOmlj5O24yxr/Wfrv50mxeF5eKn7ztXJmTmehAAAA1AMFFgAAaBJh/PZBf/BQ2W7d1/zP+66n9O9+n58XS6VqbyW0lsUCAACwDhRYAAAg/xuMTz+W881XoTtvbw23D/5S+tj/k+3RMy+v5779hmKPPMCCAQAAWNf+kggAAEC+xR6+L5Tnndl+53X/SyWtlTrvUsmYvLxm/NLzZebOYdEAAACsBQUWAADIr+pVcp9+MnSn7Q8aIturd73+XW/kZsrssU9eXtesWqnE30/hVkIAAIC1oMACAAB5FXv6SZlVK0N33t5OYxr076f/epZsWXleXptbCQEAANaOAgsAAORVaG8fXNO3D66BbdtOqdPOzNvrcyshAADAmlFgAQCA/G0svvlKzicfhe68/Q0GyvauaPDPeTvvKm+HXfJyDmbVSiXO+Ru3EgIAAGTbZxIBAADIl7BefVWfbx9ck9RZ58t27JSX83Bff1Wxh+5jIQEAAPwPCiwAAJAfqZTcJx4L5al7Ozb+KirbqbNS516ct3NJXHa+nJnTWU8AAAC/QIEFAADyIvbCMzJLfwjdefvrbyC/sm9Ox/BG7yhv7B75OaHqaiVOPUHKpFlUAAAAP6LAAgAAeeE+NDGU5+3tOCYvx0mdeZ5sebf8bNCmfqr4DVezqAAAAH7aHxEBAADIlZn9rdx33w7luefy/Ktfsm3bKXXW+Xk7r/gt18t59y0WFwAAgCiwAABAHsQeui+U357nV/WV37df3o7nbTNamb3H5enkfBWdearMqpUsMAAAUPAosAAAQG68jGJPPBLOUx+zR96Pmfrb2bJ9KvNyLPPdbMUvOJs1BgAACh4FFgAAyIn78iSZBfNDee6ZMbvl/6AlJUpecqUUi+flcLHHH5H7nydYaAAAoKBRYAEAgJzEHr4/lOftbzhEtqKqyY6dPurYvB0vcd7fZebOYbEBAICCRYEFAAAazcyfK/f1V0J57pmxezTp8dN//LP8YRvlJ+cVy1X0txMl32fRAQCAgkSBBQAAGi32yIOS54VwB+TI23nXpn0NN6bkxVfKtm6Tn1N+723FJ4xn0QEAgIJEgQUAABrH9xV77MFQnrq3yUjZ8q5N/jq2Zy+lTz8nb8eLX3WZnC+msvYAAEDBocACAACN4r71usz334Xy3Jvi2wfXJLPnvvLy9bD4VEqJ006QampYgAAAoKBQYAEAgEaJPXRfSE88Lm/HMc36kslzL87bA+OdaV8rceWlLEAAAFBQKLAAAECDmaU/yH35hVCeu7fVNrIdOjTvi5a0VvLSK6VEIi+Hi91zh9xXJ7EQAQBAwaDAAgAADRZ77CEplQrluWea8fbBX/IHDlbqL3/Nz8GsVeLvp8osXsRiBAAABYECCwAANJj78P3hPPGSEnnbbt9iL5/53e/lbb9TXo5llixW4uy/StayIAEAQORRYAEAgIZtHt5/R86MaaE898y2O0glJS13AsYodf5lsj175eVw7ssvKjbhdhYlAACI/h6UCAAAQEPEwnr1lSRv1z1b/Bxs23ZKXnaNFI/n5XiJf10s5+MPWZgAACDSKLAAAEC9meXLFHv+6VCeu23fXt7mWwXiXPzBQ5U+/uT8HCyTVtFfT5BZuYIFCgAAIosCCwAA1Jv72MPS6tWhPHdvp7F5u+opH9K/P1LeZlvm5Vhm9rdKnHM6CxQAAEQWBRYAAKgfaxV74J7Qnn5m7B7BOqGfnofVrn1eDuc+86Ri99/DOgUAAJFEgQUAAOrFfedNOTOnh/LcbVm5/I1GBO+8yrsqferf83a8xKXnyfn8MxYrAACIHAosAABQL7H77g7tuWfG7C65bjDPba/95O2wS34Olkyq6OTjZKpXsWABAECkUGABAIB1MgsXyH3phdCev7frHoE+v9TZF8h26pyfuZo1Q4lz/saiBQAAkUKBBQAA1in28P1SJh3Kc7cVVfIHDg72OXbspNTp5+TteO5/nlDs3w+zcAEAQGRQYAEAgLXzPMUeuT+0p5/Zfe9wxLzLbvLG7Ja34yUuOEvO9GmsXwAAEAkUWAAAYK3cVybJzPk+pDsdR5k99gnN6abOOE+2tCw/B6uuVuKkP0k1NSxiAAAQehRYAABgrWL3TQjtuXubbi7brXtoztd26KDUhZdLxuRno/f1l0pceh6LGAAAhB4FFgAAWCMze5bct14P7fl7e+0XvnPebEtlDj4sb8eLPXCvYk/9m8UMAABCjQILAACsUez+eyTfD+W529ZtlBm9UyjPPXXCafL7D8jb8RLnniFn5nQWNAAACC0KLAAAkF0qFepvsvPG7Ca1ahXOk08klLr0aqm4OD/Hq16lxKknSKkU6xoAAIQSBRYAAMgq9uxTMj8sCe35Z/bcN9T5+337KXXCqfnb9E39VIkrLmZhAwCAUKLAAgAAWcXuvzu05277VMoftnHo5yDz29/L22Z0/ub07jvkvvgcixsAAIQOBRYAAKi7QfjyczkffRDa88/suW/evsmvRRmj1LkXy3bqnJ/jWavEmafKfDebRQ4AAMK1PyUCAADwv2IP3BPi3Y2jzO57R2YubJdSpS64LG+FnFm+TEUnHislkyx0AAAQni0eEQAAgF8y1avkPvnv0J6/t8U2st26R2pOvK22U+aQw/O3AZw6RYmz/8piBwAAoUGBBQAAfsX998Myq1aG9vwz4w6K5Lyk/nKq/KHD83a82JOPKfbw/Sx4AAAQChRYAADgV2IP3Bvac7fl3eRtvW1EJyau5MVXyrZpm7dDJi48W85nn7DoAQBA4FFgAQCA/24M3n9Hztdfhvb8M/uOk9xYZOfH9uqt1LkX5e+AyaSKTjhGZukPLH4AABDsfSoRAACAn8TvD/HD211Xmb3HRX6OvJ13VWa/A/J2PDN3jhInHyd5Hr8AAAAgsCiwAACAJMks/UHuC8+E9vy9rbeL3MPb1yT1t3Pk9x+Qt+O5b72u+M3X8UsAAAACiwILAABIUu0DvVOp0J5/Zv8DC2eyioqUuvQqqVWrvB0yfsNVcl9/lV8EAAAQSBRYAABA8n3FHgzxw9u7dpO3xTaFNWV911Pq3IvzugYSpxwv891sfh8AAEDgUGABAAC5r78a6uIis/9BkusW3Lxlxu6R1+d+meXLVHTyn0N9JR4AAIgmCiwAAKDYfRPCe/JuTJm99ivYuUv9/R/yBwzK3+ZwyidKXHQOvxQAACBQKLAAAChwZu4cua+9Etrz90bvKFvetXAnsKhIycuvlW3TNm+HjD04UbHHHuSXAwAABAYFFgAABS72wD2S54X2/DPjDir4ObS9K5S68HLJmLwdM3HemXKmTuEXBAAABAIFFgAAhSydVuyRB0J7+rZXb3mbbs48qvZKtMzvfp+/AyaTKjrhaJmlSwkXAAC0OAosAAAKWOyZJ2UWLwrt+Wf2P0hy2M78JHXS3+QP3yRvxzNzvlfijJMk3ydcAADQotjxAQBQwGL33hnek4/HC/rh7dknNK7kZVfJduiYt0O6r0xS/LYbyRYAALQoCiwAAAp1E/DJR3I+/Ti05+/tuItsp85M5P+wXbsr9a/rJNfN2zHj11wu9/VXCRcAALTc3pUIAAAoTLF77gj1+Wf2/y2TuAbeyM2UPv6k/B3Q95U49XiZ2d8SLgAAaBEUWAAAFCCzZLFizz8d2vP3K/vK22QkE7kW6T8cLW/nXfO3ZpYtU9EJR0vV1YQLAACaHQUWAAAFKHb/PVIqFdrzz+x/kGQME7k2xih53iXy+66Xv43jl5+r6IyTJWvJFwAANCsKLAAACk0mrdhDE8N7/sXF8vbcl3msj5LWSl51o2ybtnk7pPv804rfcQvZAgCAZkWBBQBAgXGfe0Zm/rzQnn9mp7Gy7dszkfVkK6qUuuhfeb1iLX7FJXInv0y4AACg2VBgAQBQYOL33hnq88+MO4hJbCBvux2UPvyY/B3Q95U47QSZb2cSLgAAaBYUWAAAFNIf/J9/Juej90N7/v56/eUP25iJbIT08SfJ22Z03o5nli9T0Z+PkFm1knABAEDT72OJAACAwhG7545Qnz9XX+Wy63OUuuzq/D7Uffo0JXioOwAAaI6tDBEAAFAYzNIfFHv6ifAOoFUrebvtxUTmwP70UPe27fJ2TPeFZxW/9QbCBQAATYoCCwCAAhF7aKKUTIb2/DNj98hr8VKobEWVUv+6TnJjeTtm/JrL5b4yiXABAECTocACAKAQeJ5iD04M9RC4fTCPy2GzLZU+8bT8HdD3lTjleDnTviFcAADQJCiwAAAoAO6k52S+/y605+9vMFD+oCFMZB6lDz1CmX3G5e14pnqVEv/3R5mVKwgXAADkHQUWAAAFIDbxrlCff+aAg5nEJpA64x/yhw7P38Zy5nQe6g4AAJoEBRYAAFH/w37a13LffTu0529LWssbuzsT2RSKipS89lbZXn3ydkj3xecUv+FqsgUAAPnd0xIBAADRFpswPtRXxHh77CNb0pqJbCK2Y6faEiuPD8iP33CV3Of+Q7gAACBvKLAAAIgws2K5Yv95PNRjyOz7Gyayifl9+yl1+bX5+2ZCa5X4+6lypn1NuAAAIC8osAAAiLDYw/dL1dWhPX9/2EbyBwxiIpuBt/lWSp19Qd6OZ6pXqej/jpZZsZxwAQBAziiwAACIKt9X7P67Qz2EzP4HMY/Nmfc+45T+/ZF5O56ZOV2Jk/4seR7hAgCAnFBgAQAQUe4rk2Rmfxva87dt2ymz01gmspmlT/yrvB12yd86fGOy4tddQbAAACAnFFgAAERU7N47Q33+3t77Sa1aMZHNvjt0lLz4Cvkbj8zbIeO3XC/3mSfJFgAANH6LQgQAAESPmTVD7luvh3oMmX0PYCJbSnGxktfdKn+Dgfk5nrUqOuuvcr7+kmwBAECjUGABABBB8bvvkKwN7fn7I0bJ77seE9mCbJu2Sl4/XrZnr/wcsHqViv58hMzSHwgXAAA0GAUWAAARY6pXyX38kVCPIb3/gUxkANiyctXcMkG2c5f8rM3vv1Pi5ON4qDsAAGgwCiwAACLGfeQBmVUrQ3v+tkPHvD5EHDnOR68+St58l2zbdvlZn2+9rvhVlxEsAABoEAosAACixFrF77s71EPI7L2/lEgwlwHi9x+g1KVXSk5+to7x22+W+58nCBYAANQbBRYAABHivvqSzMzp4R2AMcrsx8Pbg8jbajul/++U/BzMWhWddaqcqZ8SLAAAqBcKLAAAIiR2562hPn9v1BayfSqZyIBKH360MmP3yM/BampUdMIxMj8sIVgAALBOFFgAAETlD/Wvv5T77luhHkNm3EFMZMClzrtU/uCheTmWmfO9Eif9WfIyBAsAANa+1yUCAACiIXbHLZK1oT1/26VU3nY7MJFBV1Sk5NU3y5Z3zcvh3HfeVOLyi8kVAACsFQUWAAARYJYsVuyZJ0M9hsy+v5FicSYzBGxpmZKXX5e3h+3H7rpNsUcfIFgAALBGFFgAAERA7J47pGQyxDsSR5l9fsNEhog/bCOlzrkob8dLnH+WnCmfECwAAMi+3yUCAABCrqZGsfvvCfUQvC22ke3Rk7kMmcwe+8j57NPaAjVXyaSKTjhaNQ88IdupM+FGiFmxvN63N9viVnm7sg8AEC0UWAAAhP0P8ycelVn6Q6jHkPnNb5nIkEqdeobMN1/JffuNnI9l5s1V0Yl/Us2tE7idtLl4nsyKFdLypTLLl9eWTcuW1v696lUyyaS0aqXMqlVSTY3M6ura/51MSqtWyaxaKfmelMlIq1bVHtP3ZVauyPGNLS5bUlL71+3bS5Jsq5LadVFSItu6tWzrNlLbtrJt2krt2tX+7zZtZVu3ke3YSbZLqWznLlKrVswzAERhz0sEAACEmLWKTbgt3EPo2k3eVtsyl2HlxpS6/DoVH7inzOxvcz6c897bSlxyvlJnnEu2DeV5Mkt/kPlhicySJdKiBTJLFtf+78WLaovuZb8sqpbVFlBBlEnLLF9W+9c//rdp7LFKSmQ7d6n9z0/FVnk32R495XfrLtu9p2x5ueTy0QgAgox3aQAAwtwdvPaKnOnTQj2GzL4HSK7LZIaY7dBByWtuUdFB+8hUr8p9gzrxLvkDBymz9zjClaRUSmbBfJkF82Tmz5dZuEDO/LnSwgUyC+fLLFlSW1L9sCTU30TaZKqrZaq/XXvB6rqyZeWy3XrI79lLtqqv/Ioq2ar15PfuzRWBABAAFFgAAIT5D/I7bw33ANyYMvtQUkSB3299pS76l4r+cozk+zkfL3HemfL7ri9/yLBoB5dKycz9Xs7cOTJzvpeZN0dm3lyZhQtr/3rRwtpiCk3L82TmzpGZO0fOB+/+zxttvLbU6ree/Iq+8gcMlD9wQ9lefcgNAJpz30sEAACEk/P1l3l57lCLfmbcdrRseVcmMyodwPY7KX3sCYpf+6/cD5ZKqegvx6jmvn/LlpaFN5TVq+XM+V5mzuzagmrO93Lm1v63+f47mUULuWoq6DJpOTOnSzOn65fXitq27eQPGCR/0GD5AzaUP3gIpRYANCEKLAAAwvqH+J23hf6Db2b/g5jIiEn/8c9yvvpC7nP/yflYZv48Ff3lWNXcPlGKB/QWrky69qqd77+T+W62zHez5Xz/7c9/zdVT0WVWLJf7zpty33nz579nS8vkbzJS3kYj5I8YJb/vepIxhAUA+XjftZVlkfi/fKrfmSKVtGZGAQCF8Qf44kVqteMWUioV2jHYXr21+qmXJMdhQqOmulrFB+8n58vP83K4zP4HKnX2hS33+7ZoYW0xNefHkmr2tzLff1tbWs2bK3kec47s73Pt28vfeKS8LbaWt9V2st17EAqAZlV8yLi6t0aH8g3VjuEKLAAAQig28a5Ql1eSlNnvAMqrqCopUfKaW1R8wJ4ySxbnvt4fnCh/wIbKjGuiK/ZSKZn58+R8/2M59d23cn4qqmZOz8uD6VGYzLJlcic9L3fS87Wfv3r1lrfN9vK23V7exiODe2UhAATxPZUrsAAACJmaGrXacYtw35oUj2v1C2/Idu7CfEaY8+5bKj7yECmTzsuaqRl/r/zhmzT8ZzNpmblzawuqn27zm/NTWcVtfmgZtk1bedvvJG/M7vI220JyubYAQP5xBRYAAGgxsSceDf0Hbm+HnSmvCoA/YpRSfztLifPOzP1g6bSKTjhGNQ88Llverc4/NsuXyXz3rczsH6+e+umvv58tM2eO5GWYEASKWblCsX8/rNi/H5Zt117eNqPl7byrvK22ocwCgGx7YCIAACBErFXs7vGhHwYPby8cmd/8Ts6Xnyv2wL25f+BfvEhF/3e0MmP3/PF5VD+WVHO+k1avJmyEllm+TLEnHlXsiUdle/RUZr8Dldl7f9kupYQDAD+9V3ILIQAA4eFOfllFxxwW6jHY3hVa/dQkvpmrkGTSKjryYLnvvk0WQL3f8F15W26jzMF/kLfp5rxnAmiUKN1CyJNTAQAIkdiE8F99lf7Nb/kgVnALN67U5dfxDWxAQ3ie3FcmqeiI36l4zx0V+/fD+XmeHACEFAUWAABh+UP7m6/kvvlauAeRSMjbYx8mswDZTp2VvOYWqaSEMICGvv9Pn6bEGSer1ZhtFZtwO7fMAijM90IiAAAgHGJ33ibZcN/5n9lprGzHTkxmIaqullatlDdiFFkAjWTmzlHikn+o1c5bKXbXbVKaK7IAFNBemAgAAAjBh5bFixT7z79DP47MOB7eXhCSSTlffi7ns0/kfPapnCmfyJkxTfI8sgmioiLZDh1//o86dPz5H9lYbO1XzSWKZIuL6/59a2VWLK/791evlvnf0mXFcplksvafrVgupX7x19YyP9n+TFiyWIlLz1d84l1K/d8p8nbelVuzAUQeBRYAAGH4A/v+u6VkMtRj8PutL3+jEUxm1GTScr76srak+qmw+uZrntXTom8YcdnOnWU7l8p2KZXt1Fm2vFy2Qyep449FVceOsh071xZWQb6tM5mUSdZIy5fL1KyWWTBfZtFCmYULZBYtkFm8SGb+fGnxIjkL5kvVqwpqqs3sb1V08nHyJ4xX6pS/yx+2EesfQHT/eCMCAAACLplU7L67Qz+MzP4HMpdh52XkTPumtqia8mntf3/1hZRKkU1ziMdly8ply7vJdu0mW1omv6xc6tyltqj6qazq1Dk6Yy4qki0qktq1l5Wkfuuv9V83K5bLzJwh59uZMjOn167Xzz+T+e7bSF/N5Xz8oYoP2V+Zcb9V+i+nyrZuw+8LgMihwAIAIOh/WD/xqMySxeEeRKtWPLw9bHxfzswZv74N8MupPDy6qRQVyXbtLltWLr9rN9myrrVXTXXrUfvfZV1lu5SS0zrYtu1kBw+VP3jor/6+WbVS5oupcj/+UM4H78r58D2ZZcsi9zsbu2+C3JdfUOqs8+VtPZoFASBae2IiAAAg4B9I7rw19MPI7LK7bNt2zGdgP/VbmW9nyvnsU7mffSrns09lpk6RKbDbsZpMq1byu3WXLS2vvXLqp4Lqp78u71p7Kx+abom3biO78Uj5G4+U/vBHyVo5X34u97WX5U5+Rc5HH0heJhJjNfPmqujYw5XZfW+lzzxPtqQ1CwBAJFBgAQAQYO7LL9Y+/DrkeHh7wD7gLloo55OPav/z6Udypk7J/sBt1Itt3Ua2R0/Znr1ke/SU373Xz39tu3WnvA3kL4GRv8FA+RsMVPqIY2WWLZP74rNyn31K7ltvRKLMij3xqNxPP1by8mvl9x/AnAMI//saEQAAEFzxO24J/Rj8AYPq3M6DZlRTI+fzKXI++Ujupx/L+fgDmblzyKUhiovl9+gp273Xz0WV371HbUnVvZdshw5kFHK2fXtl9hmnzD7jZH5YIvfxRxR75H45074J9bjMzOkq/u0+Sv31bGX2O4CJBhBqFFgAAASU89EHcj54N/TjyOzP1VfN9yncypk1479XV33yUe1D1vlGwHVHV95Nfp8+sr0rZHv0+rGw+vGqKp49VVhroWMnZQ49QplDj5Dz4XuK33mb3EnPSb4fzgHV1Chxzt/kfPaJUn//h+TyERBAOPHuBQBAQMXvuDn8HwRLWsvbbU8ms4mYpT/U3gL48+2AH8ssX0Ywa1JUJL/v+vL7rSdbUSW/T4Vsn0r5vSukkhLyQR3+8E2UHL6JzMzpit95q2KPPyIlk+H84PfgRJl585S8/BqJ52IBCOP7GBEAABA8ZtYMuZOeD/04vN334gHC+ZJOy/liqpxPPqy9HXDKJzKzZpDLOn+ZjNLHniBvp7HyKyq4+gSNYiuqlDr7QqX/9BfF7r5DsQfuCWVZ7E5+ScW/P1DJ62/jykIAocOf4AAABFD8zlvDe7vKL3D7YOOZOd/L+eh9uT9dYfX5Z1IqRTANZa3i42+UbdtWflVf8kBuy6lLqdInnKLMUccqdtN1ik+4LXS/l87UT1X8+wNUc/tE2dIyJhVAePZGtrLMRmEg1e9M4VJYAEA0/nBeslitdtpSqqkJ9Tj8ocNVc88jTGh9eJ6cmdPlfPCenA/elfvhezLfzSaXfK/J4ZsoecFlsr0rCAP5eb+eN0fxq/6p2BOPhu/3oaJKyTvu40osIOKKDxkXiWeqytoxXIEFAEDAxO69M/TllSRl9j+QyVzTh96VK+R8+L6cj2sf1O9O+USqriaYJuZ8+J6K99tN6dPOVGafcZIxhILcPk917a7URf+St9teSpxxssyiheH5fZg5XUVHHaLk+Il8kyaAcOyfuAILAIAAWb1arXbcXGbp0nB/qGvbTqsnvSW1asWcSjIL5st97205779Te5XVtK8jcYtok2nVSv4Gg+QP3FDuE482ybOGvK22Verci2XLyskb+fk9X7RQiVOPl/vOW6E6b3+jEaq57R4pHmcSgQjiCiwAANAkYo8+EPrySpK8Pfct6PLKzJ8r99235bz7ltz33uFh62vjuvL7rid/wyHyBw+TP3io/PXW//lh686e+6roqIPz/nvhTn5ZxXvtrPQZ5yqzK9+UiTx8tupSquQtdyt+w1WK33StZMNxnYDzwbtKnH+mUudezCQCCPY+mQgAAAgIz1N8wvhIDKXQbh80c+fIffctOe++Lfe9t2Vmz2I9r+lDfo+ePxdV3oZD5A/YUCopWeO/7w/cUMnxE1V0xO9klizO77wtX6bEaSfIff4Zpc6+QLZjJyYIuXFdpf98omz3nkqc87fQXGkZe/h++ev1V+Z3hzGHAIL7XkUEAAAE5HPP80/LzP429OPwNx4pv+96kZ4rs3KFnLdel/vma3LfmByJeWsKtkMH+RsOrb2q6sf/tp06N3xNrb+Bknc9oKKjDpGZ833+f/deeEbFH7yr1FkXyNthZyYOOcvsM05KJJQ442TJ80JxzonLLqwtl4cOZwIBBBIFFgAAARG/45ZofHAbd1D0Jsfz5Hz6sdw3Jst9Y7KcTz+WvAyL9peKi+UP2FD+4CHyNhwqf8Mhef22P7+iSjUTHlLRUYfUPkMsz8ySxSo64WhldttL6dPPkW3XnjlFbu+Fu+0lG4up6NT/C8eVWF5GRWecrNUPPsnzCwEEEgUWAAAB4L77tpwpn4R+HLZDR2V2HBOJOTFzvpf7+qu1hdVbr8usWM5C/XnBuvKr+v336qrBQ+Wv3//n51Y12foq76rkXQ+q6E9/kPPRB02zOX7yMbnvvqXU2RfI23o0c42ceLvspvTsbxW/6rJwvO/NnK7Evy5W6oxzmTwAgUOBBQBAEP5AHn9TJMaR2XNfKZEI6SfNjJwP35f76ktyX31JzjdfsTB/ZLv3+PVzqwZu2GLf/mzbt1fNzRNUdOKxcl97pWk+xM+fp6JjD1dm972V/uvZsu25GguNlz7iGDmffyb3uf+E48+j+ybI22msvBGbMnkAAsXYyjIbhYFUvzOlxTZSAADkwpn2tYr32jk031i1Rq6r1Y8/L9unMjwboR+WyH3tFbmvTpLz+mSZ5ctYkK1ayR80RN7Q4fKHbiR/6HDZzl2Cd56ZtBKnn6zYfx5v0pexXUqV+vs/5O2wC2sDOXxYWaXiA/dukttfm4Lff4BqHnhCcl3mDgi54kPGyfng3fAPxNoxXIEFAEALi42/KfzllaTM2D1CUV45076W+/KLct58Te67bxf8s6xsaZn8gRvK32iEvOEby99waDiuoovFlbrkStnSMsXvvLXJXsYsWqiiE46Rt81opc6+ULasnDctNFxJa6Uu+KeKD9o7FM/Dcr78XLFHH1RmvwOYOwDB+aOfCAAAaDlmwfwmv4KkucqE9DHHB/PcUim577wp96Xn5b78osz8eYW74IqKaq+uGjJM/rCNa6+uKi0L8S+QUfqUM6ROnRS/8rImLYLdVyapeJ8xSp1+rryxu/PmhQbzNxyizL6/UezBiaE43/g1l8sbu7ssd7kACMp2kwgAAGjBP4gnjJfS6dCPI7P3fnn9xrlcmeXLaq+wevlFuS+9ILNyRUGurzpXVw0aIhUVRW6c6cOPkd+7QkV/O1GqqWm6dbX0BxWdery8Jx5V6pwLZMu78SaGhq3VE06T++JzMksWB/5czeJFit13t9J/+CMTByAY70s8AwsAgBb6Q7h6lYq33zz8324Xj2v1k5Nke/Rs2Ty//07uG5PlvvyC3NcnS5l0YS0oNya//wD5G20if+CG8jYaIduzV0FF4Hz8oYqOO7JZygHbpq3SJ/2t9hYrY3hDQ/3fMm+/WfHLLwrFudqycq1+drIUjzNxQEjxDCwAAJCz2IMTw19eScr85nctU15ZK+ezT+VOek7uSy/I+frLglo/tryr/GEb1z5sfcjw2m8GDOs3QOaJP3S4au5+SMXH/EFm1owmfS2zcoUS554ud9JzSp11gWy37rypoX7vmfsfqNgNV8tUrwr8uZoF8xV76jFl9tqfiQPQ8u9JXIEFAEBLfIJJq9Uu28jMmxvucbRqpdVPvyLbpbR5Xq9Qn2flOPL7rid/k03lDd9E/kYby3alMFnjBnfpUhWdcLSc995unhcsaa3UcScpc9AhfGsb6iVx6fmK3XVbKM7VX38D1TzyNJMGhBRXYAEAgJzEnn4y/OWVpPSBhzR5eWWWLZM7+SW5k56X89orobhqIWfxuPwNh8rbaBP5G42QP3xj2Xbt+cWp7x63QwfV3DJBiQvPbp4HZlevUuKSfyj21GNKnXux/P4DmASs870zLAWW89UXcr6YKn+DgUwcgJbdPxMBAAAt8AfwnbeGfxAlrZU57KgmObSZ873c11+V+/ILct+YHIkH3a89yxL5/QfWFlabbSlv2MZScTG/KLmIx5U6+0L5AwcrccHZzfJMNGfKJyoet4cyBx6s1PEncXcA1sj26i2//wA5X34eivN1n/o3BRaAlt8/EwEAAM38QeD1V+V8MTX040j//gjZjp3y9+H/qy/kvvCM3BeelfPVF9H+8NqmrfxNRsobubn8TUbWXrHDrWdNIrP/gbK9+yhx4rEyy5Y1/Qt6GcXuvl3uS88rddpZ8kbvyCQg+1LZbofQFFixp/6t9Amn8j4FoGXfi4gAAIBm/sN3/E2hH4Pt0EGZQ4/I8SBWzicfyX3xWcWef0Zm9qzoTnpJSe2zq0ZuJm/kZrUPXOeDYPMVBZturpqJj6nouCPlTPumWV7TfP+dio4/St5W2yn1t7Nke1cwEfj1utxuB8VvvCYU52oWzJfz6cfyh23ExAFouT00EQAA0HycqVPkvv1G6MeROeyPsq3bNOITmyf3/XfkPv+M3EnPRfch7EVF8oYMkz9yc3mbbiZ/yDApxtfQtyTbu0LJex9V4vST5L74XLO9rjv5JbV65w2lf3+k0ocfzW2F+Jm/waDaW4VrakJxvu5br1NgAWhRFFgAADSj+B23hL8I6FKq9IGH1P8HUim5b70m9/ln5b70vMzSH6I3scbIX38DeVtsLX+LreUN3YhnWAVx7bZuo+SVNyo+/ibFr/6n5HnN88LJpOI3XavYQ/cpffRxyux/IIUmJNeVX9VPztQp4Tjdt15X+ujjmDcALYYCCwCAZmK+/07us/8J/TjSRxwjlZSs/V+qXiV38suKvfisnJcnRfKbA22HDvI330re5lvL22Jr2dIyFnkofhGN0ocfLX/wUCVOPk5myeLme+nFi5S44GzF7xqv1HEnyRuzm2TM/7N332FyVmUfgJ93ym4aZEMIIZSQhN6kNynSu0rHgoK0D1CaIiggCChNQXrvKAgiTYooSFG60gydFCAQUkgBkuzulPf7I4oKCQnJlndm7vu6uIAkO3PO85xpv5z3jJ40sOrSy9ZMgJV7/pmI6dPn/PwP0EkEWADQRYq/viqiUq7pOaSLDoryHt+c9YfzqVMj/9D9Mw9if+yvEW1t9dXAfD6qq64elY2+NHOn1cqrRuRyFnaNqqy7QbT+7g/R/IPvRe65Z7r0vpO334zmow+L6jWXRenIY6KywUYa0qDSYcvUzmBLpci99nJUV19L44BuIcACgK74wPrB1Cj8/uaan0fpoMMimpr+M68pkyP/yIORv+/umaFVqVRfHy77LxzVtdeLypc2j8qmW0S6YF+LuZ76O3BQtF57UxTPOyuKV17S5fefe2l4NB/wraiusXaU9jsoKptuoSmNtgZ719aZaLlXBVhA9xFgAUBXvODe9JuIGr+MLl1yqSjvtGskY96OwgP3Rf7Pf4zcC89GVKv106jm5qisuU5UN/pSVDb6UlSXXtbirXf5QpSOPCaqy68YTScdF8m0j7o+FHj279H8vf2jutoaUTro0KhsvJm+NIqePWtquLlXX9YzoPveTysBAHSytrYo/Oaamp9G2r9/9Pj6zpF7+cW6ak86eEhUvrTZzLOs1l6v5j5Q0jEq238lWlddLZqPPjxy/3y+e8KB55+N5oP3jerKX5gZZG26hTOy6lzaXFtf9pB77RVNA7qNAAsAOvvF9q7bI5k4oebn0dXnBHXeRHJR/cLqUdlsy6hsulVUl17GIiUiZu4ybL3+dzMvKbzm8m7bXZh78YVoPvSAqK6wUpQO/G5UttzWeWt1qtbiyWTsu5oGdN97aiUAgM78RJxG4drL1aG79egRldXXisqXtojKNttHushANWE2746LUfr+j6K60Zei6UdHRjJ+XLcNJffKS9H8/e9GuuTgKH1jnyjv9jU7BOtMMmF8bY134oSZX0aS9zES6IaXaCUAgM6Tf/D+yI0coRDdIG3pF5WNN43KpltEdeNNI+3VW1GYa5V1N4jW398TTcf9MPKP/KV7Q4O334qmM06O4mUXRPnr34ryN/aJtKVFk+pBre3OrVQimTgh0oGD9A7ocgIsAOhExWvsvupK1aWXjcqmW0Zl862iuupqLrtivqT9Foq2C6+IwnVXRtN5v4xoa+vW8SSTJ0XxonOjeM0VUd5tzyh9a79IBy2mUTUseX9i7Y15ggAL6B4CLADoJLnnn43cM08rRGfKF6Ky5lofh1bpkkupCR38aT2J8t77R3WjTaPp2B9E7sUXun9M06dF4bqronDD9VHedoco7zPzvCxq8HWiBr/VL5kxQ+OAbiHAAoBOUrz6MkXoDE1NUdlgo6hstV1UNtsq0r591YROV116mWi94fdRvOKSKF5yXkSp1P2DKpeicNftUbjr9qiss16U99o3KpttaedhjUg++jByb7xWewNvFWAB3UOABQCd8cHkzVGR/8ufFKKjNDdHZf0No7LNDjN3WvVZQE3oevlClP7ve1HZYuuZu7FeGp6doT39ZOSffjLSJZaM8u7fiPJuXxfuZlzuuWciKpXaG3g3X0oLNC4BFgB0guJ1V0ZUqwoxP3r1isrGm0V5y22j8qXNIhzCTkZUl1kuWn9zaxQvOS+KV1wy81vZMiIZ83YUf3VGFC69ICo77Ralb+4d6VJDNS2Dck89XpsDb2/XPKBbCLAAoKM/QE56Pwp3/F4h5kHau09UvrR5VLbeLiobbRrRo4eikE3FYpQO/UFUNt9q5m6sEW9k63lo+rQo3HBtFH57fVQ22jTK3943Kut9MSJJ9C4LKpUo3H1nbY69qah/QLcQYAFAR7+43nhdRGurQsyldMG+Udl0i6hsvX1UNtgoorlZUagZ1ZW/EK033xXFS8+fee5dFs7G+p8BViP/yF8i/8hfojpkWJT3+GZUdt4t0gUW1LxulH/i0UjGja3NwXuOBrrrPbYSAEAHmjFjZoDFZ0pbWqKy+dYzD2Jff8OIor/Rp4Y1N0fpsKOissNO0XTycZH7x1OZHGZu9MhoOvOUiPN/GeXtvhzlPb8Z1ZW/oH/d8SHsjltq9/lb+Al013OnEgBAB76w3v67SKZMUYhZfehZqH9Uttxm5k6rddaLyHsbQn2pLr1MtF7z2yjc/rso/vLUSKZOzeZAZ8yIwq03R+HWm6O6yhei/LW9orztl12y20Vyo0dG/r57a/e5fOFFNBHoFkk6dJG0HiYy/anhDncFoHtVKtFzx80jefsttfj3B52WfjPPs9p2x6istW5EPq8oNMab7MmToviLn0fhD7dFpNl/u50u2Hfmoe97fCPSIcM0sBM1H3Fw5O//Y20OPpeL6U+/5DJCqCE9vr1H5J55ug7eVKbb+atPAOgg+fv/KLyKf10euMU2M0Ordde304rGfBz0WyjaTz0rKjvtHk0nHxfKeY4SAABuTElEQVTJ6JGZHm/ywdQoXHdlFK6/KirrrBeVXb8W5S22sSurg+WeeybyD9xXu+t6scWFV0C38Y4SADpI8erLGvfD+oJ9Z55pte0OUVn/ixEFZ1pBRERl3fVjxq33RvGKi6N49aURM2Zk/MGcRv6pJyL/1BNRXGDBqOy4U5R33j2qK62imfOrVIqmU0+siR15s1Mdtqw+At1GgAUAHSD/9JORG/5CQ8057bNAVDbbMirb7BCVDTdxEDvMTlNTlA45PMq77hnFc86Mwl2310SIkXz4QRRuvC4KN14X1aWXicpXdo3yrntG2tJPT+dlGZxzZuReGl7Tc6iuuppGAt1GgAUAHfGCetWljTHRnj2jsu4GUf7KLlHZbKuIpibNh7mUDlw02k87O8rf3CeaTj85cs/9o2bGnhvxRuR+dUYUL/xVVDbbKsq7fz0q630xIkk0di7k//ZwFK67subnUV1jLc0Euu/9thIAwPx+sHs98n97qH4/dPfqHZVNt5h5ptWGmzj/BOY3BFjlC9F63c1R+MNtUTz3F5GMH1c7g29vj/x9d0f+vrsjXWLJKO/w1ah8eeeoOvh9tpLRI6Ppx9+v6UsHIyKiR4+ofGENDQW6jQALAOb3xfTqy2r/g8msPqis98WobLNDlLfcxjf9QkfL5aL81V2jvPX2Ubz60ihedWlEa2tNTSEZ83YUL70gipde8J9LDL+6a6QLD9Dff9do7LvR4//2jmTypJqfS2X9DSN69dJUoPvecysBAMyjUikKt98ShbvvqI/59OwZlU02j/I220dl480ievbUY+iCx13pkCOi/NXdouncX0T+j3dFVKs1N42PLzE876yofHHjqHx5pyhvtlVDP48k496LHvt+PZJ3xtTFfCpbbuvxCnTv82o6dJG6+Cvj6U8N97fDAHSNUikKt94cxSsuimTsu7X/oWSLraO87Zej8qXN/e06dLPcqy9H8dxfRv6Rv9T8XNJevaOy5TZR2XGnqKy3QUS+cf7uPDdyRDR/b/9I3hpdHxPq1TumP/Skz1tQg3p8e4/IPfN07U8kTbezAwsA5lZ7exRuvSmKV1wcyXtj62JK5S/vHO2nna23kBHV5VeMtouujNwzT0fTub+M3D+eqtm5JNOnReHOW6Nw562RtrREZbOto7L1tlFZf6O6/tbS/IP3R9OPjoxk2kd1M6fytjsIr4Duf12xAwsA5qC9PQq//20Ur7gkknFj62Za6cBFo/X2+yJdYEE9hozK//XBKJ77y8i98lL9PPf0WWDmF0NsvX19fTFEtRrFS86P4sXn1te5iEkSrbf/KapLL+MBCTXIDiwAaARtbVG45cYoXnVpJOPeq6+5JUm0n3S68AoyrrLxZlHZaNPI//HuaLrg7EjeHFX7Tz8ffRiFu26Pwl23R/TqHZUvbRblLbeNysab1uxfSOdGj4ymnxwTuWf/Xn9rcPOthFdAJgiwAOCTWlv/E1zV0tfbfw7l3b4WlY2+pNdQC5IkKtvtGDO23jYK9/whCpdfGLmRI+pjbtOnRf7euyJ/710RxWJUVl8zqht9KSpf3CSqK6wUkSSZH3/xqkujeM3lNfctknMln4/SYT/0GASy8XLoEkIA+JfW1ijcfEMUr740kgnj63aa6eJLROttf4zU6ybUpmo18g/cF8XLLozcyy/W73NV/4Wj8sWNZwZaG2wU6UL9M/ThY1oUfn9zFK+8OJKJE+q2B+U9vxntP/mZxxzUsHq6hFCABQAzZkThdzfM3HFVxx9EIiIil4u2K2+Iyjrr6TvU/pv5yP/toSheemHknvtH3T93VVdYKaqrrxXVVVeb+c9SQ7t8h1Zu5IjI3/67KPz+t5FMnVrfy2vAItF6559dag41zhlYAFAPZsyI4s2/icJVl0by/sSGmHL5G3sLr6BeJMnMM7I23izyTz0RhUvPj/yTj9XnXKvVyL00PHIvDf/PZ5kFFvxPmLXq6lFdedVIByzSsfdbqURu+AuRf/SRyD/0QORe+mfDrK32E34uvAIyRYAFQOOZPv0/wdWk9xtm2umQYdF+uLNMoB5V1l0/KuuuH7nhL0Txuisj/6d7I8qlup5z8uEHkX/sr5F/7K//eZ7rs0CkQ4dFdciwSJccHOkii0a6yCIz/927T0TfvjP/nc//53amT4v48INIPvwwknfGRPLO25F7683IvfjPyL36UsT06Q23nspf/3ZUNtvSAwvI1vO+SwgBaBjTp0Xxt7+OwtWXRTJ5UmPNPZ+P1mtvjurqa1oH0Ahv8seNjcIN10fhlhvq/lI3OlZ1zXWi9YpfRzQ1KQbUgXq6hDCnnQDUvenTo3D91dFz+82iePbpjRdeRURpnwOFV9BA0oGDonTk0THjwaei/dSzorr0sorCHFWXXibazr9ceAVkkksIAahbyfRpUbjh2ihcc0UkUyY37geSZZaL0nePsCCgETU1Rfkru0T5yztH/tFHonDdlZF//G8Raao2/I904KBou/TaSPv2VQwgkwRYANSdZNpHUfjNtVG47opIpkxp8Ff6YrSfepa/TYeGf2JMorLRl6Ky0ZcieWt0FH5/UxRuv6VhvsCCz5a29Iu2S6+JdNHFFAPI7ttaJQCgbj6fTfsoCr++ZmZw5cyXiIgoHXhIVFdaRSGAj6WDh0TpyGOidOj3I//g/VG45bczd2VVq4rTiOthyaWi9ZKrI11qqGIAmSbAAqDmJdOnReHG66Nw1SWCq/9SXW6FKB3wXYUAZvNJoBiVrbaLylbbRTLuvSjcdXsUbvp1JO++ozaN8jqx6mrRduGVkS7UXzGA7L9sKQEAtSr58IMoXH91FK6/KpIPP1CQ/5YvRPvPfhFRLKoFMEfpwEWjtN9BUdpn/8j/9eEo3HV75B+6P6K1VXHqVGXLbaLttF9F9OypGEBNEGABUHM+3nF15SWRfGDH1ayU9j/IpYPA55cvRGXTLaKy6RYRra2Rf/iBKNx5a+T/9khEpaw+9aC5OUqHHBGl7xwYkfOl9EDtEGABUDOSaR9F4be/jsIVF9tx9Rmqw5aO0oHfUwhg/vToEZVtdojKNjtEMmVK5P98bxTuvDVyz/3DtxjW6uvDsstH+5nnRnXZ5RUDqDkCLAAyL5kyJQrXXRGF31wbybSPFOSz5AvRfurZEc3NagF0mLSlJcq7fz3Ku389cqNHRv5P90b+/vsi9/JwYVYtaG6O0ncOjNJBh0YUXFoO1CYBFgCZlUyZEoUbronC9VfbcTWXSvscENVVvqAQQKepDhkW1QO/G6UDvxvJe+9G/q8PR/6h+yP/6F8jyiUFytQLaRKVrbeP9iOOjnTJweoB1DQBFgDZe789ZXIUrr48ijdeFzF9moLM7YfKoUtH6ZDDFQLoMumii328MyuZMiXyDz8Q+b/8KfKP/TVixgwF6s7XhLXWjfajjo3qqqspBlAXBFgAZEYyeVIUrr4sir/9teDq88rno/2UM106CHSbtKUlyl/dNcpf3TWirS3yzzwduUcfifxjf43ca68oUJe8kCZR2WCjKO+9f1Q23EQ9gLoiwAKg+99vT5kchRuujcK1Vzrjah6VvrVvVFdfUyGAbGhujsoGG0Vlg42iFBHJpPcj9/QTkX/i0cg/8mAk495To45ULEZ52x2jvO//OaAdqFsCLAC6TfL+xChcdWkUf3dDxPTpCjKP0iHDovS97ysEkN3nqYX6f/yNhlGtRu7VlyP396ci/+zfI/fs3yOZMF6R5kF1xZWjssNXo/yVXSJdqL+CAHVNgAVAl0smToji1ZdF4ebfdP8ZKUlS29+glctF28mnR/ToYWEBNfO8VV1x5aiuuHKUv/WdmU/Fb42O/LP/iNwzT0fu2b9HbtRI3244G+lSQ6O8/Zejsv1Xojp0aQUBGoYAC4Auk0wYH8WrL43CzTdEtLZ261iqa60blfU3jOJF59R0Tctf/3ZU11zH4gJqWjp4SJQHD4n46q4zXy+mTI7c8Bci9/KLkXtpeOReeTGSt99qzOL06BGVNdaO6gYbReWLG0d1hZUsGKAhCbAA6HTJ+HEzg6vf3dj9wdWa60Tpe0dGZY21o8eu29X03/Cniw6K0uFHWWBA3Ulb+kVloy9FZaMv/ee15IOpkXvlpZmB1kvDIxnxeuTeHNXtrysdrlevqC63YlTW/FdotcbadtkChAALgE6UjHsvilddGoVbboxoa+vWsVTXWDtK3z0iKutvGBERxYvPi9zIETVd3/bjT4m0V28LDWgI6YJ9o7LuBlFZd4P/enKvRjL23ci9OSqSkW9EbvSoSEaNmPn/48dFVKvZnlPfvpEus3xUV1o5qiutGtWVVonqkGER+byGA3yCAAuADpeMGxvFKy+Nwu9/2/3B1eprRemQw6PyxY0//rXc6JFRvPzCmq5xZdsdo7LpFhYb0NhyuUgXXyIqiy8R8V/P8xERUS5FMn58JO+9G8l7YyM3flwk742d+f8TxkcyZUrE1CmRfPhBRKXS8WNraoq0pd/MfxbqH+lii0c6eKmoLjE40iUHR7rkUpEu2FcPAeaSAAuADpO8924Ur7gkCrfeFNHe3q1jqa62RpQOOSIqG27yv7+RptF00nHdPr75kS7YN9p/dIIFB/CZn3SKM0OjxRaPiIjPiqiSaR9FTJkSyQdTZwZaba0ffztuUir95wtHWlsjkoho7jEzPOvTZ+av9+odUSxG2qt3pP0Wiujf3w5ZgI5+WlcCAOZX8t67Ubzmiij87obu33H1hdWjdOD3Zrs7qXDb7yL39BM1Xe/SUcdGuvAACw+gg6S9+0T07hPp4ksoBkBGCbAAmGeZCq6WXzFKB343KltvH5Eksx7vlMlRPPv0mq55de31orzz7hYfAAANRYAFwOeWTHo/CtdeEcVfX939wdVyK0Tp/773mcHVvzWd+tNIpkyu3cI3NUX7CT+f4zwBAKDeCLAAmGvJ5ElRuObyKP7mmm7/2vLPE1xFROQffSTy99xZ0/UvHXRYVIctbSECANBwBFgAzFGmgqtll4/SQYfOdXAVEREzZkTTz2r70PPqMstF6TsHWowAADQkARYAs5VMnhSFKy6O4s2/+c83MHWT6gorzfxWwc22/NyX0BUvOieSt9+s3UbkctF+0ukRxaJFCQBAQxJgAfBp06dF8cbro3D5RZF89GG3DqW6zHJROviwz7fj6r/kXnslitdfXdPtKH/921FdbQ3rEgCAhiXAAuA/Wluj+Nvro3DFRZFMmdKtQ6kut0KUDjk8KltsM++Hllcq0XTCMRHlUs22JF10UJQOP8raBACgoQmwAIgol6Jw2y1RvOS8SMa9161DqS69bJT3OyjKO+4UkcvN34vcDddFbvgLNd2a9mNPirRXb2sUAICGJsACaGRpGvk/3RNN550VyZujunUo1aWXifJ+B0d5h69G5PPzfXvJ+HFRvPBXNd2eylbbRWXzraxTAAAangALoEHl//pgFH91ZuRee6Vbx1Fdetn/nHE1nzuu/lvTKcd3+/ld8yPts0C0//hECxUAAEKABdBwci++EMWzTo/8U4936ziqw5aO8v6HdNiOq/+W//O9kX/w/pruU+nIoyNdZKAFCwAAIcACaBjJ229F0/m/jPy9d0WkabeNozps6SgddFhUtt2xQ3dcfTzPjz6MptNOquleVVdfM8q7f8OiBQCAfxFgAdS5ZOrUKFx1SRR/fXVEW1u3jSNdcnCU9j0oyrvs0eE7rv5b8Rc/j2T8uNptWL4Q7T/5WaeEewAAUKsEWAD1qlSKwm9/HcWLzonkww+6bRjpEktGab+Do7zL7hH5zn3ZyT/9ZBRuvbm227bf/0V1+RWtXwAA+C8CLIB68+9vFjz79EjeGdN9w+jC4CoiIlpbo+nEH3Xr5ZHzXbPBQ6J04PesYQAA+AQBFkAdyQ1/IZrOOCVyz/6928aQLr5ElPY/pOuCq38pXnB2JG+Nrun+tZ/ws4gePSxkAAD4BAEWQB1Ixr0XxUvOi8Lvb4qoVrtlDN0VXEVE5F55KYrXX13TPSzvtFtU1t/QYgYAgFkQYAHUsunTo3jVJVG89oqIGTO6ZQjpkoOj9H/fi/KXd+7y4CoiIsqlaDruqIhKuWbbmPZfOEpHHWc9AwDAbAiwAGpRmkbhD7dF8dxfRDLuve4ZwhJL/ie4KhS7rRTFqy6L3Ksv13Q72487KdKWFusaAABmQ4AFUGNyL/0zmk79aeSee6Zb7j8dOChKBx0a5Z1369bgKiIiN3JEFC85r6b7Wdl6+6hsvb2FDQAAn0GABVAjkg+mRvGic6Nw43URlUqX33/a0i/K3zkwSt/cJxsHjVfK0XTcDyLa22u2p2lLS7Qfd5LFDQAAcyDAAsi6ajUKd90exV/8PJLJk7r87tO+faP8zX2ivPf+kfbuk5myFK+6LHL/fL6mW1v68U8j7b+wNQ4AAHMgwALIsNzwF6Lp5yd0T1DTq1eUvv7tKO9/cKQLLJitutTDpYObbB7lHb5qkQMAwFwQYAFkUDJ5UhR/8fMo/OG2iDTt2jvv0SNKX/vWzOCqpV/2ilMpR9OPjoxoa6vZ/qZ9Foj2E39uoQMAwFwSYAFkyb+/XfDMn0UyZXIXvyIUo7zzblE6+PBIFxmY2RIVL7soci/9s6bbXDrm+EgHLmq9AwDA3H5cUQKAbEhGj4ymk4+P/FOPd+0d53JR2Wq7aD/ih5EuuVSma5R79eUoXnZBTfe5su4GUd5pdwseAAA+BwEWQHebMSOKl5wfxWuviCiXuvSuK1ttF6XDj4rqkGHZr1O5FE3HHRVRKtVur3v1jvZTzoxIEuseAAA+BwEWQDfK//XBaPr5iZGMebtL77e62hrRftSxUV1j7ZqpVfGS8yP3yks13e/27x8T6eJLWPgAAPA5CbAAukHywdQo/uqMKPzuxi6933TQYlE69AdR/vLONbULKPfiC1G84pKa7nll/Q2jvOdeFj8AAMwDARZAF8vfd3c0/eyESCZP6rL7TBfsG+X9DorSXt+JaG6urYJNnx7NxxzZ5ZdXdmj9+yzg0kEAAJgPAiyALpJMnBBNPzsh8vf/sQuf5f/1zYKHHRVpv4Vqsm5NZ54SyeiRNd370vEnRzpoMQ8CAACY1482SgDQydI0Cn+4LYpnnBzJ1Kldc59JEpWtt6+Jbxb8LPm/PRyF399U0+2vbL5VlHfcyeMAAADmgwALoBMl74yJpp8cHfmnHu+y+6yuvV60/+DHUV11tdqu3aT3Z37rYJrW7BzS/gtH+0mneyAAAMB8EmABdNYT7K03R/GMUyKZ9lGX3F+65FLRftSxUdli67qoX9OJP4rk/Yk1PYf2E0+t2Us3AQAgU5+vlACgYyXvT4ymk46N/F/+3DV32LNnlL5zYJT2O7j2Dmif3YvTLb+N/IP31/QcyjvtHpXNt/KAAACAjviMoAQAHSd/393RdMpPIpkyuUvur7LNDtH+w2MjXbR+DghP3hodTWf+rKbnkA5aLEo/+okHBAAAdBABFkAHSKZOjaafnxD5e+7skvurLr1slI47KSrrblBfhSyXovnowyOmT6vhxZBE+89/GWmfBTwwAACggwiwAOZT/ukno+lHR0Yybmyn31faZ4EoHXJ4lL/x7YhCse5qWTz/7MgNf6Gm51Dea5/6CxYBAKCbCbAA5lWlHMVLL4jipRdEVCqde19JEuUdd4rSD34c6cID6rKcuaefiOI1l9f0HKpLLxPthx/tsQEAAB1MgAUwD5J3xkTzj46M3LN/7/T7qq64crQf+9OorrF2/dZzyuRoPuaIzg8CO1NTU7SfeV5Ejx4eIAAA0MEEWACf94nzzluj+LMTIunkc5rSBftG6chjorzrnhG5XP0WNE2j6bijIhk/rqan0f79H0V1+RU9QAAAoDM+hykBwFyaPi2afnpsFLrgoPbKtjtG+49OqNvLBf/nheiGayP/8F9qeg6VjTeN8jf38RgBAIDO+tygBABzlhs1IpqOPCRyb7zWqfeTDlgk2o/9aVS22q4x6jri9Wj61Rk1PYe030LRfsqZEUnigQIAAJ1EgAUwpyfKP9wWTaccHzF9eufdSS4X5T33itIRP4y0d5/GKOyMGdH0/UMiWltrdw5JEu0//0VD7JQDAIBu/VymBACz0d4eTWefHoVfX92pd5MuNTTaTzw1Kuuu31Dlbfr5iZEb8UZNz6H89W9HZZPNPVYAAKCTCbAAZiF5+81o/v53I/fyi513J01NUdr/kCgdcEhEsdhYLz533hqF239X03OoLr1stH//Rx4sAADQFZ8hlADgf+UffSSafnhYJB9M7bT7qK6+VrSfdFpUl1624eqbjB4ZxZ+dUNuTaGqK9jPPjejRwwMGAAC6gAAL4L8Ur74siuecGVGpdM4d9Ood7UceHeU994rI5RqvwDNmRPPhB0UyfVpNT6P9yB9FdfkVPWAAAKCLCLAAIiLa2qLp5OOicMfvO+0uql9YPdpOPSvSIcMatswzz716vabnUPnS5lHeax+PGQAA6EICLKDhJePGRvPhB0Vu+Audcwf5QpT22T9Kh34/olBs2Drn77mz5s+9ShcdFO0/PysiSTxwAACgCwmwgIaWe+6ZaD7swEgmvd8pt19deploP+1XUV1plcau84g3ovmnP67xV8xitP3ygkhbWjxwAACgqz9TKAHQqPL33R099vtG54RXSRLlb+8brTf9oeHDq5g+PZq+f0jE9Ok1PY3S4UdFdfU1PXAAAKAb2IEFNOaT3/VXR9MvfhZRrXb4bacLD4j2U86IysabKXRENP3sJ7V/7tXGm0ZpnwM0EwAAuusznBIADaVSiabTTorCb6/vnJvfZodoP+Hnkfbtq9YRUbjh2ijceWtNzyEdOCjaTzvbuVcAANCdny2UAGgY06dF8/e/G/m/PdzhN5327hPtPz0tKtvtqM7/knv+2Wj6xc9rexL5QrSdeU6kLf00FAAAupEAC2gIyQdTo/mQfSP33DMdftvVYUtH+68uierSyyj0v+s9dWo0H31YRKlU0/Mofe/IqK61roYCAEA3c4g7UPeSce9F87d265TwqrzzHtF6813Cq/9WqUTTD74byTtjansaX9w4SvsdpJ8AAJABdmABdS0Z83b0OOBbkbz9ZsfecHNztP/4p1He7WuK/AnFC86O/BOP1vQc0kUHRfsZ50Tk/D0PAABkgQALqFu5N16L5gO/Hcn4cR16u+mQYdF29oVRXW4FRf6E/MN/ieKVl9T4K2Mx2n5xXqT9FtJQAADIyuc7JQDq8sntxRei+Vu7d3h4Vdl2x2i9+U7h1Swkb42Oph9/P6Jarel5tP/oJ1FdY20NBQCADLEDC6g7uZdfnLnz6sMPOu5G84UoHfYDZyLNzvRp0XzY/0XywdSankZl+69E+Wvf0k8AAMgYARZQV3Iv/TOa9/9WhwYp6UL9o+28y6K6+poKPMsCpdF87FGRe+O1mp5Gddnlo+2k0/UTAAAySIAF1I3cKy/N3HnVgeFVdello+3CKyNdYkkFno3iZRdG/v4/1vQc0l69o/3sCyN69tRQAADI4uc9JQDq4snstVeieb9vRDJlSofdZmXDTaLtN78XXn2G/CN/ieKFv6rtSSRJtJ96VlSHLq2hAACQ1c98SgDUumTM29H8f3tHMrXjdl6Vd/tatF14RaR9FlDg2dV99MhoOubImj+0vbTv/0Vly200FAAAMswlhEBNSya9Hz3+b+9IJozvmBvM56P9qOOi/K3vKO5n1X36tGg+/P869qD8blBZd/0oHfYDDQUAgIwTYAE1K5n2UTQftE8kb47qkNtLe/WO9l+eF5VNNlfcz1KtRtOPvx+5EW/U9DTSxRaP9rMujMh7KQQAgKzzrh2oTaVSNB16YOReGt4hN5cuOijaLroqqsutoLZzULzg7Mg/8KfankTPntF23mWR9ltIQwEAoAYIsICa1HTqiZF/6vEOua10ycHRetn1kS45WGHnIP+ne6J4+UW1PYkkibaTzojqCitpKAAA1AiHuAM1p3DdlVH43Y0dclvVlVaJ1t/cKryamxeMl4ZH83FHRaRpTc+jtP/BUdn+yxoKAAC19HlECYBakv/bw9F01mkdclvVtdeLtqtuiHSh/go7B8m496L5e/tHzJhR0/OobLJ5lA51aDsAANQalxACNSM3akQ0HXVoRKUy37dVWXeDaLvwyoiePRV2Tlpbo/mw/4tk/LiankZ1yLBoP/OciJy/uwEAgJr7PKgEQE1obY2mH3wvko8+nO+bqq61brRdcLnwam6kaTSfcEzkXnyhtqfRq3e0n3tppH0W0FMAAKhBdmABNaHpZz+J3GuvzPftVNZZL9ouulp4NZeKl5wf+XvurO1J5HLRftb5UV16GQ0FAIBafVuvBEDWFe68NQq33zLft1Ndfa1ou/Aq4dXc1v2eO6N40Tk1P4/SEUdHZePNNBQAAGqYAAvItGT0yCj+7IT5vp3qssvPPPOqVy9FnZsXh2eejqbjf1jz3zhY3mm3KO37fxoKAAC1/hlFCYDMqpSj+YeHRTJ92nzdTDp4SLRdfn2kffuq6VxIRo+M5sMOjGhvr+3ls8560X7iqRoKAAB1QIAFZFbxqssi9/KL83Ub6UL9o/XSayNdeICCzoVkyuTocch+kUyZUtPzSJcaGu3nXBpRLGoqAADUAQEWkM0np1EjonjJefN3I83N0XbepZEuOVhB50ZbWzQfemAkb42u6WmkfftG64VX2HEHAAD19BlRCYDMqVaj6YQfRbS1zfttJEm0n3R6VFdfSz3nRppG0wnHRO7Zv9f2PArFaD/7okiHDNNTAACoIwIsIHMKN/16voOU0oHfjfKOOynmXCqec2YU7r6j5ufRfuLPorLeFzUUAADqjAALyJTkww+ieOE583UblfW+GKVDjlDMuVS46ddRvPKSmp9Hab+DorzzHhoKAAB1SIAFZErxkvMjmTJ5nn8+XXRQtJ91QUQ+r5hzIX/f3dH08xNrfh6VLbeN0uE/1FAAAKhTAiwgM5I3R0Xhhmvn/Qby+Wj75fmRtvRTzLkp19NPRvOPvx9Rrdb0PKprrhNtp/8qIuclDQAA6pV3+0BmNJ1/dkSpNM8/X9r3/xzaPrdP/q+9Ek2HHhDR3l7T86guvUy0nX95RI8emgoAAPX8GUYJgCxI3n4z8n++d55/vrrCSs69mttajxsbzYfsG8lHH9b0PNJFBkbbxddE2revpgIAQJ0TYAGZULz8oohKZd5+OF+I9lPPiigWFXIOkilTovmAb0Xy3tiankfaZ4Fou+SaSBdbXFMBAKABCLCAbpeMGxuFP9w2zz9f3mufqC63gkLOqc7Tp0XzQXtHbuSI2p5IsRjtv7pIzwEAoIEIsIBuV/jNtfN89lW6yMAoffcIRZyT1tZo+u5+kRv+Qo2/auWi7dSzo7LBRnoKAAANRIAFdK9KOQp33jrPP1467KhIe/VWx89SLkXzD74b+aefrPmptB91bFS221FPAQCgwQiwgG6V/+vDkUycME8/Wx0yLMpf3lkRP7NI1Wg+9qjIP/yXmp9K6TsHRvnb++kpAAA0IAEW0K0Kt908zz9bOuSIiHxeEWcnTaPpZz+J/D131vxUyjvtFqXv/0hPAQCgQQmwgG6TfPRh5B9+cJ5+Nl1iyahsu4MifobiWadF4eYban4ele2/HO0nnxGRJJoKAAANSoAFdN8T0ON/iyjP2+Ht5T33ish5Cpud4nm/jOI1l9f8PCpf3DjafvZLvQYAgEb//KgEQHfJP/rIvP1gc3OUd95DAWejeP5ZUbzswpqfR2Wd9aLtvMsimpo0FQAAGpwAC+g28xpgVTbcJNKWFgWcheJF50Tx0gtqfh7VVb4Q7RdeGdGjh6YCAAACLKB7JG+/FcnYd+fpZytbbKOAs1C85PwoXnRuzc+jusxy0XbJtZH26q2pAABARAiwgO568nntlXn8wVxUvrSFAn5C8fKLonjB2TU/j3TwkGi7/Ho77AAAgP/9KKgEQLc8+bz68jz9XHXo0sKNTyheeUkUz/1Fzc8jHTwkWq++MdIBi2gqAADwPwpKAHSHed2BVV1tDcX7tzSNpl+eGoVrr6j9qSy+RLRefn2kAxfVVwAA4FMEWEC3SN55e55+rrrM8ooXEVGpRNPJx0Xh9zfV/FTSJZeK1mtujHTgIH0FAABmSYAFdItk8qR5+rl0kJAjKpVo+snRUbjz1pqfSrrY4tF6xa+FVwAAwGcSYAHdIvlg6jz9XMOfj9TaGs1HfS/yDz1Q81NJlxw888yrRRfzgAAAAD6TAAvoem1tEdOnz+OzVrFhy5ZMmRzN39s/cs89U/NzSZccHK1XCa8AAIC5/CioBECXq1a752drWPL2m9HjoO9E8uaomp9LOmRYtF5xvfAKAACYazklALpcc/M8/2gyfVrjPVH/8/no8c1d6yK8qi6/YrRee5PwCgAA+Hyfi5QA6Ppnntw8XwqYjHm7oUqVf+BP0WPfr0cy6f2an0t19TWj7eobI+2/sMcAAADw+T5GKgHQHdKePefp5+phF9JcqVajeOGvovmIgyJmzKj56VTW3zBaL7su0gX7WvwAAMDn5gwsoFukgxaL5MMPPvfP5Z95Okp1Xptk2kfRdOwPIv/An+piPpUvbR5tZ180X5eOAgAAjc0OLKBbpEsNnbcnreEvRPLB1Pp9Uh41Ipq/tlPdhFfl7b8SbedeIrwCAADm77OSEgDdoTqPAVZUKpH/8x/rryBpGoXfXBM99vhy5EaNqIsplff6TrSf/qt5Pu8MAADg3wRYQLdIl1t+nn+28Nvr66oWyXvvRvMB34qm006qi/OuIpeL9qOPj/YfnTDzwH4AAID5/ZihBEB3qKyzfkSSzNsT18svRv6px2u/CGkahdtviR47bxf5Jx6tj8b26BFtZ18Y5W/vZ5EDAAAdRoAFdIt0wCJRHTpsnn++eMYpEZVK7T75vvpy9Nh7z2g6/ofzdJh9Jnva0hKtl10XlS23tcABAICO/QylBEB3qa6/0bw/eb36chRu/k3NzTn58INoOu2k6LHHVyL3zNN108t0qaHResNtUV1zHQsbAADocAIsoNuUt95uvn6+6azTIvfGa7Ux2UolCr+/KXrsuEUUfnNNRKVcN32srr5WtP7m95EOHmJRAwAAnUKABXSb6lrrzl/o0doaTT/4biTTPsr0PPOP/y167L5jNJ34o0jen1hXPSzvske0XnVDpC39LGgAAKDTCLCA7pMkUd5pt/l7EhvxRjQd9n8RpVL2nmBHvB7NB+8bzQd8K3KvvVJfvSsUo/34k6P95DMimpqsZQAAoHM/XykB0J3KX901olicr9vIP/lYNB/7/cwc6p6MHhlNRx8ePXbeNvJ/fbDuepYuPCBar/pNlL/2LQsYAADoEgIsoFulAxeN8i57zvft5O+9K5qPOjSivb3b5pK8/VY0HX909PzqNlG4586IarXu+lVddbVovekOh7UDAABdSoAFdLvSgYd0yGVo+T/fG80H7RPJ1Kld+0T60vBo/uGh0XPHzaNw++/q6oD2/1beeY9oveamSAcOsmgBAICu/dylBEB3SwcOivLu3+iQ28o/9Xj02HW7yP3jqc4ddKUc+b/8OZr33yt67PHlyN97V2YuYezw/vTuE+2n/yraTzkjornZggUAALpcQQmALCgdfHjk7/1DJJPen+/bSt4bGz32/WaUv7ZXlA4+rEO/IS95+80o3Pa7KNx+SyTjx9V9X6pfWD3azjgn0iWXskgBAIBuI8ACMiFtaYn2H50QzUcf3jE3WClH4TfXRP7OW6P8zb2jvMuekS62+DzdVG7kiMjf/8fI3//HyL00vDEakstFad+DovS9IyIKRQsUAADoVkk6dJG0HiYy/anhEb166yjUuOZD9ov8I3/p+BvO5aKy9npRXX/DqKy5dqTDlol0of7/+2eq1UjeGxu5MW9F8torkX/2H5F75ulIJoxvqB6kAxeN9tN+FZV117cgAQCghvX49h6Re+bpOviQkm5nBxaQKe0nnBI9dnsmkilTOvaGq9XIP/V45J96PD7eT1QsRtp/4YhSKaJUiqR1Rrd+i2G3S5Iof3W3KP3wuEj79rUYAQCAzHCIO5Ap6aKLRftZF0bk851/Z6VSJO+NjeT9iZF8MLWhw6t0ycHRdtl10f6zM4VXAABA5giwgMyprPfFKB1yhEJ0hXwhynt9J2b8/t6obLCRegAAAJnkEkIgk0oHHBK54c9H/sH7FaOTVFdfK9pP+FlUl1tBMQAAgEyzAwvI6LNTLtp+cX5U11pXLTpYutji0X7qWdF6/e+EVwAAQG18RFQCILN69Ii2C6+I6oorq0UHSFtaonTkMTHjrr9E+Su7RCSJogAAADVBgAVkWtpngWi7+OpIl1xKMeZVjx5R2v+QaL3vr1Ha76CIpiY1AQAAaooAC8i8dOEB0XrtTVFdYSXF+Dx69ozyt/eNGfc8FKUjfhhp7z5qAgAA1CQBFlAT0kUGRut1N0dl480UY0616tV75jcL3vNQtB/9k0gXGagoAABATRNgAbWjV+9ou+CyKO/+dbWYhbSlJUqHHB6t9z8a7T86IdIBiygKAABQFwpKANSUfCHaTzw1qquuHsUzTolk2kcNX5Lq8itGec+9orzjThG9elkjAABA3RFgATWpvMseUdlgo2g6/oeRf/KxxitAsRiVzbeO8u5fj8r6G1oQAABAXRNgATUrHbRYtF3x6yj89vooXnB2JFOn1v+chwyL8s67RXnnPSJdqL9FAAAANAQBFlDbkiTKX/92lL+6axRvvD4Kl18UyUcf1tUU04GLRmWr7aK89XZRXWPtiCTRdwAAoKEIsID60Kt3lPY7KMq77hmFKy6Owu9urOnzsdJ+C0Vly22isv1Xo7LWOhE537kBAAA0LgEWUFfSln5ROurYKB36g8g/dH8UfnfjzDOy0jTbA8/no7r8SlHZYMOobrBRVNZZLyLvKRoAACBCgAXUq+bmqGyzQ1S22SGS0SOjcOetkf/bI5F75cWIarX7x5fPR3WZ5aK62hpRWe+LUd1go0gX7KtvAAAAsyDAAupeOmRYlA47KkqHHRXJlMmRe/zRyD/+18j/4+lI3n6z8wOtXC7SQYtFdcWVo/qFNaKy6mpRXfkLEb16aQ4AAMBcEGABDSVt6ReV7XaMynY7zvyFGTMiN+qNyL32aiQjXo/cyDcimTI5kknvR/L++xHTp835Rnv1irRvS6Qt/SLtt1CkgxaLdKmhUR08JNIhM/8dTU2KDwAAMI8EWEBj69kzqiutGtWVVp3177e1RTJlUkR76dO/11SMtG+/iB491BEAAKATCbAAPktzc6QDB6kDAABAN/K97AAAAABkmgALAAAAgEwTYAEAAACQaQIsAAAAADJNgAUAAABApgmwAAAAAMg0ARYAAAAAmSbAAgAAACDTBFgAAAAAZJoACwAAAIBME2ABAAAAkGkCLAAAAAAyTYAFAAAAQKYJsAAAAADINAEWAAAAAJkmwAIAAAAg0wRYAAAAAGSaAAsAAACATBNgAQAAAJBpAiwAAAAAMk2ABQAAAECmCbAAAAAAyDQBFgAAAACZJsACAAAAINMEWAAAAABkmgALAAAAgEwTYAEAAACQaQIsAAAAADJNgAUAAABApgmwAAAAAMg0ARYAAAAAmSbAAgAAACDTBFgAAAAAZJoACwAAAIBME2ABAAAAkGkCLAAAAAAyTYAFAAAAQKYJsAAAAADINAEWAAAAAJkmwAIAAAAg0wRYAAAAAGSaAAsAAACATBNgAQAAAJBpAiwAAAAAMk2ABQAAAECmCbAAAAAAyDQBFgAAAACZJsACAAAAINMEWAAAAABkmgALAAAAgEwTYAEAAACQaQIsAAAAADJNgAUAAABApgmwAAAAAMg0ARYAAAAAmSbAAgAAACDTBFgAAAAAZJoACwAAAIBME2ABAAAAkGkCLAAAAAAyTYAFAAAAQKYJsAAAAADINAEWAAAAAJkmwAIAAAAg0wRYAAAAAGSaAAsAAACATBNgAQAAAJBpAiwAAAAAMk2ABQAAAECmCbAAAAAAyDQBFgAAAACZJsACAAAAINMEWAAAAABkmgALAAAAgEwTYAEAAACQaQIsAAAAADJNgAUAAABApgmwAAAAAMg0ARYAAAAAmSbAAgAAACDTBFgAAAAAZJoACwAAAIBME2ABAAAAkGkCLAAAAAAyTYAFAAAAQKYJsAAAAADINAEWAAAAAJkmwAIAAAAg0wRYAAAAAGSaAAsAAACATBNgAQAAAJBpAiwAAAAAMk2ABQAAAECmCbAAAAAAyDQBFgAAAACZJsACAAAAINMEWAAAAABkmgALAAAAgEwTYAEAAACQaQIsAAAAADJNgAUAAABApgmwAAAAAMg0ARYAAAAAmSbAAgAAACDTBFgAAAAAZJoACwAAAIBME2ABAAAAkGkCLAAAAAAyTYAFAAAAQKYJsAAAAADINAEWAAAAAJkmwAIAAAAg0wRYAAAAAGSaAAsAAACATBNgAQAAAJBpAiwAAAAAMk2ABQAAAECmCbAAAAAAyDQBFgAAAACZJsACAAAAINMEWAAAAABkmgALAAAAgEwTYAEAAACQaQIsAAAAADJNgAUAAABApgmwAAAAAMg0ARYAAAAAmSbAAgAAACDTBFgAAAAAZJoACwAAAIBME2ABAAAAkGkCLAAAAAAyTYAFAAAAQKYJsAAAAADINAEWAAAAAJkmwAIAAAAg0wRYAAAAAGSaAAsAAACATBNgAQAAAJBpAiwAAAAAMk2ABQAAAECmCbAAAAAAyDQBFgAAAACZJsACAAAAINMEWAAAAABkWkEJALLl9NNPjzRNG2a+xWIxevTo8fF/9+rVK3r06BHFYjH69OkThUIhFlxwwVhwwQVjgQUWiAUWWCB69eploXSDp556Kh544IH6eiNUKETPnj0//u/evXtHREQ+n49evXpFnz59oqWlJRZYYIHo27dvLLjggtZfg5k+fXr88pe/VIgGs9dee8WwYcMUAiBL79uUACBb7rjjjqhWqwrxWS9e/wq1FlpooVhkkUWif//+MWDAgOjfv38MHDgwllhiiVhsscWiublZsTrQG2+8EbfffnvD16FYLMaCCy4Yffv2jQEDBsSgQYNiscUWi0UXXTQWW2yxWGyxxaJ///4WTJ1oa2uLu+++WyEazFZbbSXAAsjaZwAlAKDWlMvlmDRpUkyaNCneeOONWf6ZJEli4YUXjiWWWCKWWGKJGDZsWCy33HKxzDLLREtLiyIyz0qlUrz//vvx/vvvx8iRI2f5Z5qbm2PQoEExdOjQWG655WLZZZeN5ZZbLgYOHKiAAADzQIAFQF1K0zQmTJgQEyZMiGefffZ/fq9///6x7LLLxiqrrBKrrrpqrLrqqh9fOgYdoa2tLUaPHh2jR4+OBx988ONf79u3byy33HKx3HLLxfLLLx9rrbVWLLzwwgoGADAHAiwAGs6/d8888cQTERGRy+ViyJAhseaaa8Z6660Xa6+9tnOO6BRTp06Np59+Op5++umPf23xxRePddZZJ9Zdd91Ye+21o2/fvgoFAPAJAiwAGl61Wo2RI0fGyJEj45ZbbolisRirrrpqbLjhhrHlllvGoosuqkh0mnfeeSfeeeeduP322yOXy8Wyyy4ba6+9dmy22WaxyiqrRJIkigQANDwBFgB8QqlUimeeeSaeeeaZuOCCC2K11VaLrbbaKrbcckvnZ9GpqtVqvPrqq/Hqq6/Gb37zmxg4cGBsuummsfnmm8dqq60mzAIAGpYACwA+Q5qm8dxzz8Vzzz0X55xzTmy55Zbxne98J5ZaainFodONGzcubrrpprjpppti0KBBseWWW8Z2220XSy+9tOIAAA0lpwQAMHdKpVLce++98bWvfS2OPfbYePXVVxWFLjN27Ni4/vrr4xvf+Ebsvffecc8990SlUlEYAKAhCLAA4HOqVqvxwAMPxN577x0//elPY9KkSYpCl3rllVfipJNOiq985Stx+eWXx5QpUxQFAKhrAiwAmEdpmsa9994bu+++e9x4441RLpcVhS41ceLEuOKKK+IrX/lKnH766TF+/HhFAQDqkgALAObTRx99FOecc07sv//+8dZbbykIXa6trS1uu+222GWXXeK0006LyZMnKwoAUFcEWADQQV5++eXYe++94/bbb1cMukWpVIrbb789dtlll7jgggti+vTpigIA1AUBFgB0oOnTp8dpp50WJ554YrS1tSkI3bYOr7/++thjjz3i3nvvVRAAoOYJsACgE/zxj3+Mgw8+2KVcdKsJEybET3/60zj44INd3goA1DQBFgB0khdffDH23XffePPNNxWDbvXMM8/Et771rbj++uujWq0qCABQcwRYANCJ3n333TjggANi+PDhikG3am1tjQsuuCAOOOCAGDlypIIAADVFgAUAnWzq1Klx2GGHxUsvvaQYdLvhw4fHPvvs48sGAICaIsACgC4wbdq0OPTQQ+PVV19VDLpdW1tbnHbaafHTn/40WltbFQQAyDwBFgB0kY8++igOP/zwGD16tGKQCffee28ccMAB8fbbbysGAJBpAiwA6EKTJ0+OI444wrcTkhmvvfZa7L333vHII48oBgCQWQIsAOhiY8eOjWOOOSba29sVg0yYNm1aHH300XHDDTcoBgCQSQIsAOgGzz//fJx++ukKQWakaRrnnntuXHDBBYoBAGSOAAsAusndd98dN910k0KQKddff32cfPLJUalUFAMAyAwBFgB0o/POOy9eeuklhSBT7r777vjRj34UbW1tigEAZIIACwC6UblcjpNOOilaW1sVg0x55JFH4qijjnJWGwCQCQIsAOhmo0ePdu4QmfTUU0/FCSecENVqVTEAgG4lwAKADLjlllvi0UcfVQgy58EHH4xf/OIXCgEAdCsBFgBkQJqmccYZZ8T06dMVg8y59dZb46KLLlIIAKDbFJQAgDnZZZddYu211+7Q2yyVSv9z7tO0adOiWq3Ghx9+GB988MGn/j1x4sS6P1B63LhxcdVVV8X3vvc9i47Mufbaa6OlpSW+8Y1vKAYA0OUEWADM0YorrhhbbLFFt44hTdOYOHFijBkzJt59990YM2ZMjB49Op5//vl4//3366bWN954Y+ywww4xdOhQC28u9OrVK44//vgOua22trZob2//n/D0/fffjwkTJsT48ePrap3Nq/PPPz+GDh0aG2ywgcXXzfbdd99YccUVFaKTrLDCCooAkDECLABqQpIkMWDAgBgwYECsscYa//N7b731Vvzzn/+Mv//97/HXv/41Pvzww5qdZ7lcjjPPPDMuuuiiSJJE4+f0RqZQ6LJwtb29PUaPHh2jRo2KkSNHxmuvvRYvvvhiTJ06tWHqXa1W4yc/+Ulcc801scQSS1iA3WiVVVaJDTfcUCEAaJz3fUoAQK0bPHhwDB48OHbYYYcolUrxyCOPxHXXXRevvPJKTc7nmWeeiQcffDA233xzzc2QpqamWG655WK55Zb7n1//d4D65JNPxpNPPhlTpkyp6zp8+OGHccwxx8QVV1wRPXv2tDAAgC7hEHcA6kqxWIwtttgirr322jjttNNiwIABNTmPK664IqrVqobWgH+HpyeffHLce++9cdVVV8U3v/nNWHTRRet2zm+88Uaceuqpmg8AdBkBFgB1a/PNN4+bbroptt1225ob+4gRI+LBBx/UxFp7Y5XLxcorrxyHHXZY3H777XHZZZfFDjvsEM3NzXU31z/96U9xww03aDoA0DXvs5QAgHrWu3fvOOmkk+Koo46KXK62XvauvPJKu7BqWJIksdpqq8UJJ5wQd911Vxx22GE1uyNwdi6++OIYOXKkZgMAnU6ABUBD2H333ePUU0+NpqammhmzXVj1Y8EFF4xvfvObceutt8YxxxwTgwYNqot5tbe3x0knnRSVSkWTAYBOJcACoGFsttlmceaZZ0ahUDvfYfLb3/5W4+pIU1NT7LLLLnHLLbfEkUceGb179675Ob3yyitx7bXXai4A0KkEWAA0lA022CBOOOGEmrmc8IUXXogRI0ZoXJ0pFArxta99LW699dbYcccdI0mSmp7PVVddFa+//rrGAgCdRoAFQMPZZptt4oADDqiZ8d52222aVqdaWlriJz/5SVx88cWx5JJL1uw8SqVSnHTSSVEqlTQVAOgUAiwAGtJ3vvOd2GyzzWpirPfcc0/MmDFD0+rYGmusEdddd11svfXWNTuH119/PW688UbNBAA6hQALgIaUJEkcf/zxMXDgwMyPddq0afHAAw9oWp3r1atXnHLKKXHiiSdGjx49anIOV199dUycOFEzAYAOJ8ACoGH16dMnTjjhhJo4f+j+++/XsAax/fbbx0UXXRQLLbRQzY19+vTpcdlll2kiANDhBFgANLS11147dt1118yP8+9//3tMmzZNwxrEyiuvHNdee20st9xyNTf2P/zhD/HKK69oIgDQoQRYADS8Qw45JPr375/pMZZKpXj00Uc1q4EsssgicfHFF8cqq6xSU+OuVqtx7rnnaiAA0KEEWAA0vN69e8dBBx2U+XE+9NBDmtVg+vTpE+edd16suuqqNTXuZ555Jh5++GENBAA6jAALACJixx13jKWWWirTY3z88cejra1NsxpM796949xzz43ll1++psZ98cUXR7Va1UAAoEMIsAAgInK5XOy9996ZHuP06dPjpZde0qwG1Lt37zjvvPNi8ODBNTPmUaNGxSOPPKJ5AEDHvF9XAgCYaZtttolFF10002N87rnnNKpBtbS0xNlnnx19+/atmTFfc801GgcAdAgBFgD8S6FQiB133DHTY3zhhRc0qoEtueSSceqpp0Y+n6+J8b788svx5JNPahwAMN8EWADwX3bcccfI5bL78vj88887V6jBrb322nHIIYfUzHjtwgIAOoIACwD+y6BBg2L11VfP7PimTZsWI0aM0KgG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ySefzOz4nH8FAMwtARYAQJ16/vnn46OPPsrs+Jx/BQDMLQEWAECduu+++zI9vnXXXVeTAIC5IsACAKhDbW1tcf/992d2fEOHDo3BgwdrFAAwVwRYAAB16JFHHsn05YMbb7yxJgEAc02ABQBQh+65555Mj2+TTTbRJABgrgmwAADqzKRJkzL97YP9+vWLlVdeWaMAgLkmwAIAqDN//OMfo1KpZHZ8G2+8ceRy3oYCAHPPOwcAgDqSpmn84Q9/yPQYnX8FAHxeAiwAgDry1FNPxciRIzM7vt69e8d6662nUQDA5yLAAgCoIzfeeGOmx7fFFltEc3OzRgEAn4sACwCgTowaNSqeeOKJTI9xu+220ygA4HMTYAEA1Imrrroq0jTN7PgWXXTRWH311TUKAPjcBFgAAHXgrbfeigceeCDTY9x22219+yAAME+8gwAAqANXXnllVCqVTI/R5YMAwLwSYAEA1LjXX389/vSnP2V6jCuvvHIMGTJEswCAeSLAAgCoceeff35Uq9VMj3G33XbTKABgngmwAABq2OOPPx5PPvlkpsfYr1+/2HLLLTULAJhnAiwAgBpVKpXiV7/6VebHucsuu0RTU5OGAQDzTIAFAFCjrrvuunjzzTczPcZCoRA777yzZgEA80WABQBQg95666249tprMz/OzTffPAYMGKBhAMB8EWABANSYSqUSJ598crS1tWV+rHvssYeGAQDzTYAFAFBjrrrqqvjnP/+Z+XGutdZaseqqq2oYADDfBFgAADXkueeei6uvvromxnrggQdqGADQIQRYAAA1YuLEiXH88cdHpVLJ/FjXWWedWH311TUNAOgQAiwAgBrQ1tYWRx99dEyYMKEmxmv3FQDQkQRYAAAZV61W46STTooXX3yxJsa7wQYbxBe+8AWNAwA6jAALACDD0jSN0047LR544IGaGG+SJLH//vtrHADQoQRYAAAZlaZpnHPOOXHnnXfWzJi33nrrWGWVVTQPAOhQBSUAAMiearUap59+etxxxx01M+ZevXrFoYceqnkAQIcTYAEAZExbW1ucfPLJcf/999fUuPfbb78YMGCABgIAHU6ABQCQIRMmTIhjjjmmZg5s/7fBgwfHHnvsoYEAQKdwBhYAQEY899xzsc8++9RceBURcfTRR0dTU5MmAgCdwg4sAIBuVi6X44orrohrr702qtVqzY1/q622inXWWUcjAYBOI8ACAOhGr7/+epx22mk1uesqImLhhReOo446SiMBgE4lwAIA6AYzZsyIK6+8Mm644YaoVCo1O49jjz02WlpaNBQA6FQCLACALtTW1ha33XZbXHPNNTF58uSansvOO+8cG264oaYCAJ1OgAUA0AVaW1vj7rvvjmuvvTbGjRtX8/NZcskl47DDDtNYAKBLCLAAADrR2LFj4/e//33ccccd8cEHH9TFnHK5XJxwwgnRq1cvDQYAuoQACwCgg02bNi0efvjheOCBB+Kxxx6ryW8W/CyHHnpofOELX9BoAKDLCLAAADrAu+++G0899VT89a9/jaeffjra2trqcp5bb711fOMb39BwAKBLCbAAAD6n1tbWGDVqVAwfPjz++c9/xnPPPVcX51rNyfLLLx/HHXecBQAAdDkBFgDAJ0yfPj0+/PDDmDJlSowbNy7Gjh0b7733XrzzzjsxYsSIePfdd+vussA5aWlpiTPOOCN69OhhgQAAXU6ABQDUrGnTpsXee+89X7fx0UcfRZqmERHxwQcfxIwZM6JcLivuf8nn83HqqafGoEGDFAMA6BYCLACgZlUqlXjllVcUohMlSRI//vGPY6211lIMAKDb5JQAAIDZOeyww+LLX/6yQgAA3UqABQDALO23336+cRAAyAQBFgAAn7LbbrvFgQceqBAAQCYIsAAA+B/bbrtt/OAHP1AIACAzHOIOAMDHtt9++zj++OMjl/P3nABAdgiwAACIiIg999wzjjzyyEiSRDEAgEwRYAEAEN/61rfie9/7nkIAAJkkwAIAaGBJksQRRxwRX/va1xQDAMgsARYAQIPq1atXnHjiibHpppsqBgCQaQIsAIAGNHDgwPjFL34Ryy+/vGIAAJnn62UAABrM6quvHtdee63wCgCoGXZgAQA0kJ122il++MMfRqHgbSAAUDu8cwEAaAC9e/eOo48+OrbddlvFAABqjgALAKDOrbzyynHSSSfFkksuqRgAQE0SYAEA1Knm5ubYf//945vf/Gbk83kFAQBqlgALAKAOrbnmmvHjH/84Bg8erBgAQM0TYAEA1JFFFlkkDj744Nhuu+0iSRIFAQDqggALAKAOLLDAAvHtb3879txzz2hublYQAKCuCLAAAGpYr169Ytddd4199tkn+vTpoyAAQF0SYAEA1KBFF100dt9999h5552jd+/eCgIA1DUBFgBAjUiSJFZfffXYbbfdYrPNNvPNggBAwxBgAQBk3IABA2L77bePHXfc0bcKAgANSYAFAJBBffv2jS9+8YuxxRZbxBe/+EW7rQCAhibAAgDIgCRJYrnllosNNtggNtxww1hllVUil8spDABACLAAALrNkCFDYo011og111wz1lhjjRgwYICiAADMggALAKALLLLIIrH88svHiiuuGCuttFKsuOKK0dLSojAAAHNBgAUA0EGamppi8cUXj2HDhsViiy0WSyyxRAwZMiSWXXbZ6N27twIBAMwjARYAwCc0NzdHU1NTREQsuOCCkc/no2/fvtGvX7/o27dv9O/fP1paWqJfv37R0tIS/fv3j4UWWij69++veAAAnSBJhy6S1sNEpj81PKKXv9kEat8777yTuTH169cvevXqpTkNbtq0aTFlypS6m1exWIyePXtGRETv3r0dnM7/qFarMWHChMyNq6WlJZqbmzUIgM/U49t7RO6Zp2t/Imm6nR1YABmz+OKLKwKZ1Lt3b5fB0XByuVwMHDhQIQCgu1+TlQAAAACALBNgAQAAAJBpAiwAAAAAMk2ABQAAAECmCbAAAAAAyDQBFgAAAACZJsACAAAAINMEWAAAAABkmgALAAAAgEwTYAEAAACQaQIsAAAAADJNgAUAAABApgmwAAAAAMg0ARYAAAAAmSbAAgAAACDTBFgAAAAAZJoACwAAAIBME2ABAAAAkGkCLAAAAAAyTYAFAAAAQKYJsAAAAADINAEWAAAAAJkmwAIAAAAg0wRYAAAAAGSaAAsAAACATBNgAQAAAJBpAiwAAAAAMk2ABQAAAECmCbAAAAAAyDQBFgAAAACZJsACAAAAINMEWAAAAABkmgALAAAAgEwTYAEAAACQaQIsAAAAADJNgAUAAABApgmwAAAAAMg0ARYAAAAAmSbAAgAAACDTBFgAAAAAZJoACwAAAIBME2ABAAAAkGkCLAAAAAAyTYAFAAAAQKYJsAAAAADINAEWAAAAAJkmwAIAAAAg0wRYAAAAAGSaAAsAAACATBNgAQAAAJBpAiwAAAAAMk2ABQAAAECmCbAAAAAAyDQBFgAAAACZJsACAAAAINMEWAAAAABkmgALAAAAgEzLRUS1HiaSpKluAgAAAPxbtVof80iSai4iSnUxmVLZwgQAAAD4t/b2+phHWm3LRURbfTSlzcIEAAAA+Le6yUrybbmIqI84rlSyMAEAAAD+JSnXydVqabUtF0md7MAqtVuZAAAAAP9WLzuwivn2XKT1sQMraRdgAQAAAHysbs7AqtTRJYRTp1iYAAAAAP+S1E1WUqmfQ9wTARYAAABAREQk06fVz3nh1UJ7LiI+rIvGTJlidQIAAABEREyeXD9zmZ58lIuI9+thLsnUyRYnAAAAQNRVTjIjGTduWi7SZGJdTGfSJKsTAAAAIOrpSrV0YkRELpK0LnZg5SaMszoBAAAAIiJ5b2y9zOT9iIhcpPURYCXvvmN1AgAAAERE8u6YepnKv3dg5eriEsLknTFWJwAAAEDUU06S1tkOrIkTItrarFAAAACg4eXq5kq15F87sHJpfRzinqaRjHUZIQAAAEDdXEKYxL93YBXerpfm5N4cbYUCAAAAjW369EjGvVcfc0mTtyMicjFq7JiIKNXDnHKvv2KRAgAAAA0tN+L1iGq1PiaTxKiIiFwSUYmIuthXlnvtVasUAAAAaGi5N+ooH8mloyMichERkc5Ms2pd8podWAAAAEBjy73+Wr1MpRLNA/51CWFERJLWRYCVGz0qolSyUgEAAICGVUcbfN5JXnyxPeLfAVbkRtfFtMqlyL32spUKAAAANKY0jdzLw+tkMsnHG67+FWDNvJ6wHuSe/YfFCgAAADSk3MgRkUydWh+T+a8rBv91BlbyRr00Kv/Cs1YrAAAA0JByz9XRxp40Rn48r4iImBH/jIi6+H5FO7AAAACARlVXuUiavPDxvCIiknHjptXNNxGOfTeScWOtWAAAAKDh1NkOrP8NsP71Xy/Uy/zyTz9pxQIAAAANJZk4IXJvjqqX6XwYb44b/e//yf3Xb/yzXmaY+9vDVi0AAADQUPJ/ezgiTetjMmn8M4n4eDL/CbDS9J911bBq1coFAAAAGkb+sUfqZzKfuFLwPwFWktbNJYTJlMmRe+VFKxcAAABoDNVq5B5/tJ5m9D8brf4TYI2c+EZETK+XWeb/9ojFCwAAADSE3Iv/jGTypPqZUJoO/5/5/fs/kohqRPy9XuaZf+BPVi8AAADQEPL331dP0ylHr3jmv38h9z+/nSZ1s9cs9+ILkbz9phUMAAAA1L3Cn++to9mkzyYvTvjov3/lfwOsXOXR+mreH61gAAAAoK7lXhoeyVuj62dCSXwqn/rfAKtceixmXkpYF/L33WMVAwAAAHWt7vKPdA4BVvLW1MmRxsv1Mt/cS/+M5O23rGQAAACgPqVpFP5UZwFWNZ3DDqyIWW7Tqukm3vl7ixkAAACoS7l/PFVvZ4CPTN6cOPZT85zFH6yvc7Bu/V1EpWJFAwAAAHWncOvN9Talv83qF2cRYOUfrqdZJ+PGRv6xv1rRAAAAQF1JPvqwzr59MCIieWRWv/qpACsZNfbNiOSVepp6HaaRAAAAQIPL331nxIwZ9TWpXOlPs/zlWf7hNK2r+C7/4P2RjB9nZQMAAAB1o3DLjfU2pReSEZPentVvzDrASqK+9p+VS1G44TorGwAAAKgL+acej9zLL9bXpJJktnnUrAOs/IKPRMRH9VSDws2/iZg+zQoHAAAAal7hmivqb1LV5I+z+61ZBljJG2+0RaQP1VMNkg+mRuGO31vhAAAAQE3LjR4Z+b89VG/T+jB6939stnOe7Y99xratWlX89TUR1aqVDgAAANSswrVX1F++kcT9yYsvts/ut2cfYKX5uyMiratavDkq8n+8y0oHAAAAalLy3rv1eYVZmtz9Wb892wArGTX2zYh4ut7q0XThORGVshUPAAAA1Jzi5RdFtLfX27RK0V64/bP+QO4zfzyJm+qtIsmbo6Jwzx+seAAAAKCmJGPfjcKtN9fhxOL+5J133v+sP/LZAVaufHNE1N2hUcWLz7MLCwAAAKgpxUvOiyiV6m9i1XSOG6g+M8BK3pg0JiIer7e6JG+NjsJtt1j5AAAAQE1IRo+Mwh231uPU2qPafuec/lBujjeTpjfXY3WK5/0yko8+9AgAAAAAMq/pzJ9HlOtw91Wk9yVvTZ08pz+Vm4tbujkiKvVWnmTS+1G4/CKPAAAAACDT8k8+FvlH/lKfk0uSuTp/fY4BVjJ6wnuRpI/UY42K110ZyZujPBIAAACAbKpUonj6yfU6u+mRK8/VN+3l5urm0uSquixTqRRNvzrDgwEAAADIpMJNv47c66/W6/R+l7wx6YO5+YNzGWD1uiUiJtVjpfL33xf5B/7kEQEAAABkSjJhfBTPP7t+J5iLy+f+j85NwUaPbo1Ifl2v9Wr6+QmRfPiBRwYAAACQGfWdVySvxIjxj83tn87F3P/Jy+t1QSTjx0XxvLM8MgAAAIBMyN//x8jff1/9TjCJy5KIdO7/+OeQDl3k8YhYvy4Ll8tF67U3RXWNtT1KAAAAgG6TfPhB9Pjq1pGMH1evU2yPfG6J5I33JsztD+Q+XwXTut2FFdVqNB/7g0imfeSRAgAAAHSbplN+Us/hVUSkt32e8Cri8wZY03I3RSST67V8ydtvRfG0kz1SAAAAgG5R+MNtkb/nzvqeZDV/6ef9kc8VYCXjxk2LNC6t64Vy++8if+9dHjEAAABAl0reezeKp51U79N8Pt5876HP+0O5z303lcr5EdFez5Vs+tnxkYwb65EDAAAAdI1KOZqPPiKSD6bW9zyT5IzPc3j7v33uACt5e+K7kcQNdV3LqVOj+chDItrbPYAAAACATlc8+4zIPfN0vU9zTPQbd8u8/GBunu4uSc6KeUjLaknuheei6YxTPIIAAACATpV/4E9RvO7K+p9okpyd/CNK8/Kj8xRgJSPGDY+IP9V7XQs3/ToKt//OIwkAAADoFLnRI6Pp2B9EpGm9T/WDiPar5rlO83HHZzXCQmr62QmRe2m4RxQAAADQoZKPPoymQw+MZNpHDTDZ5OJk5OR5PuBrngOsZNT4P0ekdX9xZrS2RvN394tk7LseWQAAAEDHKJei6chDIjdqRCPMdkaUKufNzw3k5uvuq3FiI1Q5mTA+mg/aO5IPP/AAAwAAAOZb02knRf7xvzXKdC9O3p44XzuD5ivASt6ccG9EPNIIlc6NeCOaDv+/iFLJowwAAACYZ8XLLozCTb9plOlOi4gz5/dGcvM9jFxyUqNUPP/UE9H00x83wsFqAAAAQCco3PH7KJ5/VuNMOE3OS0aNHze/N5N0yFiGDfhLpMlmjVL78te/He3HneRRBwAAAMy1/P33RfMPvhdRKTfKlD+IUtPQZMyYSfN7Q7kOGU6S/KSRFlzhxuui6cxTPPIAAACAuZJ//G/RfPRhjRReRSTxq44IryI6KMBKRox/NCL+2EgLr3DdVVG85HyPQAAAAOAz5Z9+MpoPPSCivb2Rpj0povSrjrqxXIcNq5L7QUSUG6kTxQvOjuKvzvBIBAAAAGYp/9QT0fzd/SJaWxts5ulPk5GTp3bUrXVYgJW89d5LEXFZoy3E4pWXRNPPT3SwOwAAAPA/8g89EM0H7xMxfVqDzTx9ORaacElH3mKuQ8dXavpJRLzfaAuycON10XTSsRHVqkcnAAAAEPl77ozmIw6OaGtrvMmnyZHJP6LUkTfZoQFWMmbMpEiThjzdvHDLb6P56MMbc2ECAAAAHytcd1U0/+jIiHKpEad/ZzJ6/H0dfaNJR99gumkU4s1Fno2IVRqxS9XV1oi28y+PdKH+HrEAAADQSCqVaDrzZ1H4zTWNWoH2SKqrJiMnvtbRN5zr6BtMHopyJMmRjdqp3PPPRo9v7hK5USM8cAEAAKBRTJ8ezUcc1MjhVUTEuZ0RXkV0wg6sf0uHLXJrpLFzo3YsbWmJ9rMvisq6G3gQAwAAQB1L3n0nmo84KHIvDW/kMoyJfHnl5I1JH3TGjec6bdiV6ncjkskNu3inTInmA74VxYvOdbg7AAAA1Kn8009Gj6/v1OjhVUSafK+zwquITtyBFRGRDh14YER6aaMv5sqmW0T7aWdHusCCHtkAAABQD9I0ilddGsXzfhlRqTR4MZKbk1Hj9uzUe+jUXkYkMXSRP0fEFo2+rqtDl472X5wX1RVW8iAHAACAGpZMmRxNx/8w8g89oBgRU6NcXSl5e+K7nXknuU5taEQaSXpwRMxo9G7mRo2IHl/bySWFAAAAUMPyTzwaPXbdPoRX/5Kk3+/s8Cqik3dg/Vs6bMCPI01O1dWZKutuEO2nnRXpwEGKAQAAALWgvT2KF/4qildfZmPKx9KHYtSEzZOItLPvqWsCrE2jEG8OfDwiXVtz/1WTvn2j9MPjo/zVXSOSREEAAAAgo3LPPxtNJ/4ocm+8phj/8WHkY43kjfEjuuLOuiw5SZcesExUk2ciYgE9/o/q2utF+09PjeqQYYoBAAAAWTJjRhQvOS+K11zuoPZPStPvJKMnXNNVd9elW398K+Fs9OgRpYMPj9Le+0UUiuoBAAAA3Sz/4P3R9PMTInlvrGJ8Uhq3JqPH79qVd9nl166lQwfeHJHurtuzqM2QYdF+6Pejss0OigEAAADdIBk9Mpp+8fPIP/wXxZi1MVFqWi0ZM2ZSl/alq2eZDu7bL/JNz0ckS+r5rFXW+2KUfnRCVJddXjEAAACgCyQfTI3ClZdE8borI0olBZm1auSSrZIR47o83euW08PToYtsFRF/jIic3s9GvhDlXfeI0oHfjXTRxdQDAAAAOsP06VG86ddRuOKiSKZOVY/PkianJaPHHdsdd91tX3+XDht4eqTpMbo/B8VilHfaLUoHHRbpwEXVAwAAADpCe3sU7vh9FC86J5IJ49Vjzh6PhcZ/KflHdMv2tO4LsCJyMXSReyJiG2tgLjQ3R3mPb0TpW/tFutji6gEAAADzIJk+LfK33BTFqy8VXM29cVGqrJWMef+dbutbd84+XWKJhaLY/veIGGotzKVcLiqbbBal/Q+J6uprqgcAAADMhWTihCjcfEMUfnO1SwU/n3Kk1S2T0RMf7tb+dXcV0iEDVo8keSwieloTn091rXWj9M29o7LZVhHFooIAAADAJ+SeeyYKv70+Cn+8O6LscPbPLU2OTEaPO6e7h5FkohZDF/lWRFxnVcxj/RbsG5Vtto/y174V1eVXVBAAAAAaWvLB1Mjfd08Ufnt95F59WUHmuZDpb5ORE76eiaFkpSbp0AGXRyT7Wx3zp7r6WlHe4StR2Wq7SBceoCAAAAA0hhkzIv/IX6Jw712Rf/iBiJLdVvMneSWaKusmr078MBOjyUpZ0mWWaY7KB3+KiE0skg6Qy80Ms7beLirb7BDpgEXUBAAAgPrS1hb5Jx6N/H13R/7++yKZPk1NOsb4qCQbJG+NG5mVASVZqs6/DnV/LCKWt1Y6VnXpZaOy6RZR3WCjqKy1rjOzAAAAqEnJ22/NDK2eeDTyf30oQmjV0WZENbZI3hz/eKb6nrUqpUsNHBq59PGIGGjNdFKN+ywQ1fU2iMqa60R1tTWjuvKqAi0AAAAy+AE2jdzIEZF7/pnIPfN05J94NJL3xqpL56lGErsnI8ffmrWBJZlcn8MWXSfS6kMR0cva6QLNzVFd+QtR+cLqka6wUlSXWS6qSy8r1AIAAKDrVKuRvPN25F59JXJvvBa5F56L3PP/iGTqVLXpOkclo8aflcWBJVmtWDp04Jcj0tsiIm/9dIN8IapLLRXpsitEdYklI11siUgXWzzSxZeM6mKLR/TooUYAAAB8PpVyJO+9F7l334nk3TGRvPN2JO+MidyI1yM38o2I6dPVqPtcnowaf2BWB5dkuXLpsIFHRpqebQ1lsDe9ekf06xdpy0KRtrRE2rclonfviFw+0j59Zv6hHj0jmpoUCwAAoO4/JFYjPpz5ZXVJW1tEW2tEW1skU6fM/GfKlIgpk2b+myw28A8xasLOSUQlqyNMMl/CYYucFGmcYDEBAAAAdLA0/hLRa4dk9OjWLA8zqYlaDlvkjEjjaKsKAAAAoMM8Eb3SrZIXJ3yU9YHWRoAVkcSQRS6MJA62tgAAAADm2/NRato8GTNmUi0MNqmVqqYRSQwdcHlEsp81BgAAADDPXouITZJR48fVyoBztTLQJCKNpSYcFBG/t84AAAAA5kEaI6Jc3ayWwquIGtqB9Z86Rz6GLnJVRHzbqgMAAACYa69Gvrxl8sakMbU28FytDTiJqMSo8ftGpFdadwAAAABzIYmXolrdrBbDq4gaDLBm1jwqMWrCAZGk51iBAAAAAJ8l+Xu0FTdJ3pw4tlZnkKvZ0kekycgJR0YSJ1uIAAAAALP018iXtkjeeef9Wp5Erta7kIwcf2JEnGA9AgAAAPyPP0ZbYdvkjUkf1PpEcvXQjWTU+FMiSfeLiJK1CQAAADS8JK6JXgO+mrz77vT6mE4dSYcN3DLS9JaI6GulAgAAAA0ojSROjpHjT0oi0nqZVFJ3XVp64CpRTe+OiMHWLAAAANBA2iNi/2TU+OvrbWJJPXYrXWrhQZHL/yEiXcvaBQAAAOpfMjnSZJdk9HsP1ePscnXZsjcnjo2mymaRJvdYwAAAAECdGxlp+Yv1Gl5F1OkOrH9LI5IYMuDoSJJTo07DOgAAAKCBJXFvtDftlYwZM6m+p9kA0mEL7xBp/vqItJ+VDQAAANSBNJLkzBg57tgkolrvk00apqtLD1gmqsmtEbGqNQ4AAADUsA+iGvskb46/rVEm3DCX1SUjJrwRpab1IuJa6xwAAACoTckrUc2v30jhVUQD7cD6b+nQAYdGJGdGRA8LHwAAAKgN6ZUxPXd4Mm7ctEabedKwLV9q0IqRq9wQEat7AAAAAAAZNjWS5OBk5LgbG7UADfvNfMmbY1+O/ILrR5KcEQ1w2BkAAABQg5L0wciXV2nk8CqigXdg/bd02MAtI02vjYjFVAMAAADIgHIk8fMYOf6UJKLS6MUQYP1LusyiA6JSvTgidlUNAAAAoBsNj1x1n2TExH8oxUwCrE9Ihw78ckR6UUQsoRoAAABAFypFkpwduQVOTN54o005/kOANQvpsH59I206OSL9XjTwOWEAAABAF0njsajmDkjeeu8lxfg0AdZnrZ1hAzaKNHd5RLqCagAAAACdYFqk6SkxesIvEl8yN1sCrDlIl1iiZxTbjotIfhARPVQEAAAA6CC3RL58ZPLGpDFK8dkEWHMpXXqhJaNa+HlE7KVuAAAAwLxLX440OTIZPf4+tZg7gpjPu8SGLPylSHLnRMTqqgEAAAB8DpMiTU6O/2/n7l3rquM4jr+/Jw8qgWrTptfaQG7SItTQakaJoKiLqKiDVNBFh4JLUfFpEXEQpLMoiIMWRNQxVRxsEVGEQqQaDNg2ybUmISEJVMRg83C+DgbpVLR5ujd5v+D8A+9zlvPhx682/XbAsjn+Owesa5BQ0L3nKeA4ULGIJEmSJEm6ikWId8nLr0ft0iVz/H8OWKuQPTtvhJYXSJ4DdlhEkiRJkiRdoQQ+JvKNGJ05b45r54C1BrKzs53WhWMkz+OQJUmSJEnSdpeQn5O8FrWZs+ZYPQestfw6b71lN0vLL5J5DLjBIpIkSZIkbTtfUZSvxsjsoCnWjgPWOsjOXftoaX4F8hmgzSKSJEmSJG1pJXASijdjbOqMOdaeA9Y6ygPtO1hqeZoiXyLZZxFJkiRJkraUBeATlou34uLUsDnWjwPWBsje3lbmZ54geZmg1yKSJEmSJDW03yE+ZHHpeIzPTZhj/TlgbaCEoKfy4ModWfcBhVUkSZIkSWoQwTCZ7zBffBDT038aZCPTa1PkgfZOlpqeJOJZoMsikiRJkiTVpb8gBgjeY3T6VECaZOM5YG2yhIKeyr0kRyEfA5qtIkmSJEnSJguGKfMEi63vx8TEnEE2+3WoblxxKusI0GcRSZIkSZI21DjJZzSVH8XI7KA56ocDVp3K6s1VyEeIfBzot4gkSZIkSetiDviCiBOMTp8OKE1SfxywGkB27T1I0/IRkkeBw743SZIkSZJWZZxkAIpPqU1942hV/xxCGkzur+yhLO+GeBjiIcidVpEkSZIk6aqWIc4SeZIoBxiZ/cHL2BuLA1YDy3to5teOO8niAaK8H6IPL4GXJEmSJAngPMFpSr7kuvJU/DL7h0kalwPWFpKVShttZR8l/QR3QdHvCS1JkiRJ0jawRHCO5FvgO6L56xidvGiWrcMBawtLaKLacYigH7gDuB3iNqDNOpIkSZKkBrUyVuUQwY+UTd+zUJyJycl502xdDljbTEJBT8d+iMP8cyH8ITIOQlaB6y0kSZIkSaoTy8A4cA74icwhModouennuHDhsnm2Fwcs/Su7du+luegm6SajCmU3RBWoALtWnlZLSZIkSZJW+wsKzK08s0ANcgyKGgVjLFKjY/q3GGTRVAL4G1Akd1thsqX4AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE4LTEwLTI3VDE3OjA3OjU1KzAwOjAwl+D3rwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxOC0xMC0yN1QxNzowNzo1NSswMDowMOa9TxMAAAAASUVORK5CYII=\"/>\r\n</defs>\r\n</svg>\r\n`;","export const FILE_TYPE_OTHER = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M8 15H16V17H8V15ZM8 11H16V13H8V11ZM14 1H6C4.9 1 4 1.9 4 3V19C4 20.1 4.89 21 5.99 21H18C19.1 21 20 20.1 20 19V7L14 1ZM18 19H6V3H13V8H18V19Z\" fill=\"#4D7498\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_OFFICE_OTHER = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M8 15H16V17H8V15ZM8 11H16V13H8V11ZM14 1H6C4.9 1 4 1.9 4 3V19C4 20.1 4.89 21 5.99 21H18C19.1 21 20 20.1 20 19V7L14 1ZM18 19H6V3H13V8H18V19Z\" fill=\"#8E80DB\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_INTERCHANGE = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M8 15H16V17H8V15ZM8 11H16V13H8V11ZM14 1H6C4.9 1 4 1.9 4 3V19C4 20.1 4.89 21 5.99 21H18C19.1 21 20 20.1 20 19V7L14 1ZM18 19H6V3H13V8H18V19Z\" fill=\"#B85547\"/>\r\n</svg>\r\n`;","export const FILE_TYPE_EXCEL = `\r\n<svg width=\"24\" height=\"22\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M22 6.875H14V11H22V6.875Z\" fill=\"#21A366\"/>\r\n<path d=\"M22 11H6V18.3333C6 18.8398 6.4475 19.25 7 19.25H21C21.5525 19.25 22 18.8398 22 18.3333V11Z\" fill=\"#185C37\"/>\r\n<path d=\"M22 11H14V15.125H22V11Z\" fill=\"#107C42\"/>\r\n<path d=\"M14 6.875H6V11H14V6.875Z\" fill=\"#3FA071\"/>\r\n<path d=\"M21 2.75H14V6.875H22V3.66667C22 3.16021 21.5525 2.75 21 2.75Z\" fill=\"#33C481\"/>\r\n<path d=\"M7 2.75H14V6.875H6V3.66667C6 3.16021 6.4475 2.75 7 2.75Z\" fill=\"#21A366\"/>\r\n<path opacity=\"0.05\" d=\"M11.1595 5.9585H6V16.9585H11.1595C12.176 16.9585 13 16.2032 13 15.2714V7.64562C13 6.71383 12.176 5.9585 11.1595 5.9585Z\" fill=\"black\"/>\r\n<path opacity=\"0.07\" d=\"M11.1065 16.4999H6V6.11084H11.1065C11.9685 6.11084 12.667 6.75113 12.667 7.5413V15.0694C12.6665 15.8596 11.968 16.4999 11.1065 16.4999Z\" fill=\"black\"/>\r\n<path opacity=\"0.09\" d=\"M11.053 16.0418H6V6.26416H11.053C11.76 6.26416 12.333 6.78941 12.333 7.43749V14.8685C12.3335 15.5165 11.76 16.0418 11.053 16.0418Z\" fill=\"black\"/>\r\n<path d=\"M11 15.5832H3C2.4475 15.5832 2 15.173 2 14.6665V7.33317C2 6.82671 2.4475 6.4165 3 6.4165H11C11.5525 6.4165 12 6.82671 12 7.33317V14.6665C12 15.173 11.5525 15.5832 11 15.5832Z\" fill=\"url(#paint0_linear_1791_17641)\"/>\r\n<path d=\"M4.9032 8.7085H6.09619L7.06419 10.4291L8.08719 8.7085H9.20169L7.66619 11.0002L9.23669 13.2918H8.06119L7.00619 11.4906L5.95569 13.2918H4.7627L6.35919 10.9919L4.9032 8.7085Z\" fill=\"white\"/>\r\n<defs>\r\n<linearGradient id=\"paint0_linear_1791_17641\" x1=\"2.3625\" y1=\"6.7488\" x2=\"10.732\" y2=\"15.8792\" gradientUnits=\"userSpaceOnUse\">\r\n<stop stop-color=\"#18884F\"/>\r\n<stop offset=\"1\" stop-color=\"#0B6731\"/>\r\n</linearGradient>\r\n</defs>\r\n</svg>\r\n`;","<tld-close-button class=\"close\" mat-dialog-close></tld-close-button>\r\n<h1 mat-dialog-title class=\"text-2-xl\">{{'EXTENSION_POPUP.TITLE' | translate}}</h1>\r\n<p class=\"description\">{{'EXTENSION_POPUP.DESCRIPTION' | translate}}</p>\r\n\r\n<div mat-dialog-content>\r\n <div fxLayout=\"row\" fxLayout.lt-md=\"column\" [ngClass.lt-md]=\"'small-screen'\">\r\n <ng-container *ngFor=\"let category of config.elements\">\r\n <div *ngIf=\"category.anyVisible\" class=\"category\">\r\n <h2 class=\"category-title\">\r\n {{ 'EXTENSION_POPUP.' + category.category | translate }}\r\n </h2>\r\n <div fxLayout=\"row\">\r\n <div *ngFor=\"let column of category.columns\" class=\"extension-column\">\r\n <ul *ngIf=\"column.anyVisible\">\r\n <ng-container *ngFor=\"let extension of column.extensions\">\r\n <li *ngIf=\"extension.visible\" fxLayoutAlign=\"start center\">\r\n <mat-icon svgIcon=\"{{ extension.icon }}\" aria-hidden=\"false\"[attr.aria-label]=\"extension.extension\"></mat-icon>\r\n <span>{{ extension.extension }}</span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { FileCategories, FileExtensions, FileTypeIcons } from './models';\r\nimport { Config } from './models/interfaces/config';\r\nimport { DialogData } from './models/interfaces/dialog-data.model';\r\nimport { IconService } from '../services';\r\nimport * as icons from './icons'\r\n/** \r\n This is an extension dialog component. \r\n Use <lib-open-extension-dialog> to open this dialog, by proivding [extensions] to it you can specify what extensions should be displayed.\r\n*/\r\n@Component({\r\n selector: 'lib-extension-dialog',\r\n templateUrl: './extension-dialog.component.html',\r\n styleUrls: ['./extension-dialog.component.scss'],\r\n standalone: false\r\n})\r\nexport class ExtensionDialogComponent implements OnInit {\r\n\r\n readonly config: Config = {\r\n elements: [\r\n {\r\n category: FileCategories.OFFICE,\r\n columns: [\r\n {\r\n extensions:\r\n [\r\n { extension: FileExtensions.DOC, icon: FileTypeIcons.WORD },\r\n { extension: FileExtensions.DOCX, icon: FileTypeIcons.WORD },\r\n { extension: FileExtensions.DOCM, icon: FileTypeIcons.WORD },\r\n { extension: FileExtensions.XLSX, icon: FileTypeIcons.EXCEL },\r\n { extension: FileExtensions.PPTX, icon: FileTypeIcons.POWERPOINT },\r\n { extension: FileExtensions.PDF, icon: FileTypeIcons.PDF }\r\n ]\r\n },\r\n {\r\n extensions: [\r\n { extension: FileExtensions.ODT, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.ODP, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.ODS, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.TXT, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.RTF, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.PAGES, icon: FileTypeIcons.OFFICE_OTHER },\r\n { extension: FileExtensions.SXW, icon: FileTypeIcons.OFFICE_OTHER }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n category: FileCategories.SCANNED,\r\n columns: [\r\n {\r\n extensions:\r\n [\r\n { extension: FileExtensions.JPG, icon: FileTypeIcons.SCANNED },\r\n { extension: FileExtensions.JPEG, icon: FileTypeIcons.SCANNED },\r\n { extension: FileExtensions.PNG, icon: FileTypeIcons.SCANNED },\r\n { extension: FileExtensions.BMP, icon: FileTypeIcons.SCANNED },\r\n { extension: FileExtensions.BMP, icon: FileTypeIcons.SCANNED },\r\n { extension: FileExtensions.PDF, icon: FileTypeIcons.PDF }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n category: FileCategories.INTERCHANGE,\r\n columns: [\r\n {\r\n extensions: [\r\n { extension: FileExtensions.SDLXLIFF, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.SDLXLF, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.TTX, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.TMX, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.XLF, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.XLIF, icon: FileTypeIcons.INTERCHANGE },\r\n { extension: FileExtensions.XLIFF, icon: FileTypeIcons.INTERCHANGE }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n category: FileCategories.WEB,\r\n columns: [\r\n {\r\n extensions:\r\n [\r\n { extension: FileExtensions.HTML, icon: FileTypeIcons.WEB },\r\n { extension: FileExtensions.HTM, icon: FileTypeIcons.WEB },\r\n { extension: FileExtensions.JSON, icon: FileTypeIcons.WEB },\r\n { extension: FileExtensions.XHTML, icon: FileTypeIcons.WEB },\r\n { extension: FileExtensions.XHT, icon: FileTypeIcons.WEB }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n category: FileCategories.OTHER,\r\n columns: [\r\n {\r\n extensions: [\r\n { extension: FileExtensions.TEX, icon: FileTypeIcons.OTHER },\r\n { extension: FileExtensions.TTL, icon: FileTypeIcons.OTHER },\r\n { extension: FileExtensions.SRT, icon: FileTypeIcons.OTHER }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n };\r\n\r\n extensions: string[] = [];\r\n undescribedExtensions: string[] = [];\r\n\r\n constructor(@Inject(MAT_DIALOG_DATA) private data: DialogData, private readonly iconService: IconService) { }\r\n\r\n ngOnInit(): void {\r\n this.iconService.registerIcons(icons);\r\n this.updateConfig();\r\n }\r\n\r\n updateConfig() {\r\n const extensions = [...this.data.extensions];\r\n this.config.elements.forEach(category => {\r\n category.columns.forEach((column) => {\r\n column.extensions.forEach((element) => {\r\n const elementIx = extensions.indexOf(element.extension);\r\n if (elementIx >= 0) {\r\n extensions.splice(elementIx, 1);\r\n element.visible = true;\r\n category.anyVisible = true;\r\n column.anyVisible = true;\r\n }\r\n })\r\n })\r\n });\r\n this.undescribedExtensions = extensions;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ExtensionDialogComponent } from '../extension-dialog.component';\r\nimport { DialogData } from '../models/interfaces/dialog-data.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExtensionDialogService {\r\n\r\n\r\n constructor(private readonly dialog: MatDialog) { }\r\n\r\n open(extensions: string[]) {\r\n const data: DialogData = { extensions };\r\n this.dialog.open(ExtensionDialogComponent, { data, panelClass: 'responsive-dialog' });\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { ExtensionDialogService } from '../../services';\r\n\r\n@Component({\r\n selector: 'lib-open-extension-dialog',\r\n templateUrl: './open-extension-dialog.component.html',\r\n styleUrls: ['./open-extension-dialog.component.scss'],\r\n standalone: false\r\n})\r\nexport class OpenExtensionDialogComponent {\r\n @Input() extensions: string[] = [];\r\n\r\n constructor(private readonly service: ExtensionDialogService) { }\r\n\r\n open() {\r\n this.service.open(this.extensions);\r\n }\r\n\r\n}\r\n","<button type=\"button\" class=\"open-extension-popup btn-as-link\" (click)=\"open()\">\r\n {{'EXTENSION_POPUP.OPEN' | translate}}\r\n</button>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ExtensionDialogComponent } from './extension-dialog.component';\r\nimport { OpenExtensionDialogComponent } from './components/open-extension-dialog/open-extension-dialog.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { CloseButtonModule } from '../close-button';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ExtensionDialogComponent,\r\n OpenExtensionDialogComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n TranslateModule,\r\n MatDialogModule,\r\n FlexLayoutModule,\r\n MatIconModule,\r\n CloseButtonModule\r\n ],\r\n exports: [\r\n OpenExtensionDialogComponent\r\n ]\r\n})\r\nexport class ExtensionDialogModule { }\r\n","export const FILE_UPLOAD_ICON = `<svg width=\"23\" height=\"22\" viewBox=\"0 0 23 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M19.4999 15V19H3.49992V15H0.833252V19C0.833252 20.4666 2.03325 21.6666 3.49992 21.6666H19.4999C20.9666 21.6666 22.1666 20.4666 22.1666 19V15H19.4999ZM4.83325 6.99998L6.71325 8.87998L10.1666 5.43998V16.3333H12.8333V5.43998L16.2866 8.87998L18.1666 6.99998L11.4999 0.333313L4.83325 6.99998Z\" fill=\"black\"/></svg>`;\r\n","<div class=\"file-upload\" [ngClass.lt-sm]=\"'file-upload-mobile'\" [class.disabled]=\"disabled\">\r\n <mat-progress-bar \r\n *ngIf=\"filePreviewProgress\"\r\n color=\"primary\" \r\n class=\"tld-file-upload-progress\" \r\n [value]=\"filePreviewProgress\"\r\n >\r\n </mat-progress-bar>\r\n\r\n <ng-container *ngIf=\"useCompactUpload; else regularUpload\">\r\n <button tldDragAndDrop #inputButton mat-button (fileDropped)=\"onFileDrop($event)\" [disabled]=\"disabled\" type=\"button\"\r\n (click)=\"fileInput.click()\" class=\"upload-button text-l\"\r\n >\r\n <mat-icon *ngIf=\"uploadIconName\">{{uploadIconName}}</mat-icon>\r\n <ng-content></ng-content>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-template #regularUpload>\r\n <div class=\"upload-zone\" tldDragAndDrop (fileDropped)=\"onFileDrop($event)\" [class.disabled-upload-zone]=\"disabled\">\r\n <mat-icon svgIcon=\"file_upload_icon\"></mat-icon>\r\n\r\n \r\n <div class=\"upload-zone-labels\">\r\n <a color=\"accent\" class=\"file-upload--btn\" (click)=\"fileInput.click()\">{{ uploadButtonLabel }}</a>\r\n \r\n <span fxHide.lt-sm class=\"upload-label\" [innerHTML]=\"dragZoneLabel\"></span>\r\n \r\n <p class=\"upload-zone-formats\">\r\n (<span *ngFor=\"let format of accept; let i = index\"\r\n >{{ format\r\n }}{{ accept.length - 1 === i ? \".\" : \", \" }}</span\r\n >\r\n\r\n <span *ngIf=\"maxSize && !hideDefaultLimitsLabel\" [innerHTML]=\"'FILE_UPLOAD.LIMITS_MB' | translate: { maxSize: maxSizeLabel }\"></span>)\r\n </p>\r\n\r\n <ng-content select=\"[customLimits]\"></ng-content>\r\n \r\n @if (accept.length > minSupportedFormatCount) {\r\n <a class=\"supported-formats-btn\" (click)=\"openSupportedFormatModal()\">{{openExtensionPopupLabel}}</a>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<input \r\n #fileInput \r\n type=\"file\" \r\n name=\"files\" \r\n class=\"native-file-input\"\r\n [accept]=\"allowedExtensions\" \r\n [multiple]=\"multiple\" \r\n [disabled]=\"disabled\"\r\n (change)=\"handleFileInput($event)\" \r\n/>\r\n","import { Component, ElementRef, EventEmitter, inject, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { FileUploadErrorTypeEnum } from './models/file-upload-error-type.enum';\r\nimport { FileUploadError } from './models/file-upload-error.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ExtensionDialogComponent } from '../extension-dialog';\r\nimport { IconService } from '../services';\r\nimport { FILE_UPLOAD_ICON } from './models/file-upload.icon';\r\nimport { getFileSizeLabel } from '../helpers';\r\n\r\n@Component({\r\n selector: 'lib-file-upload',\r\n templateUrl: './file-upload.component.html',\r\n styleUrls: ['./file-upload.component.scss'],\r\n standalone: false\r\n})\r\nexport class FileUploadComponent implements OnInit {\r\n @ViewChild('fileInput') fileInput!: ElementRef;\r\n\r\n @Output() fileChange: EventEmitter<File[]> = new EventEmitter<File[]>();\r\n @Output() errorEvent: EventEmitter<FileUploadError> = new EventEmitter<FileUploadError>();\r\n private _accept: string[] = [];\r\n @Input() set accept(val: string[]) {\r\n this._accept = val;\r\n this.allowedExtensions = val ? val.join(\",\") : \"\";\r\n }\r\n get accept() { return this._accept }\r\n @Input() useCompactUpload = true;\r\n\r\n @Input() maxSize!: number;\r\n @Input() multiple = false;\r\n @Input() filePreviewProgress!: number;\r\n @Input() allowEmpty!: boolean;\r\n @Input() disabled!: boolean;\r\n @Input() dragZoneLabel!: string;\r\n @Input() uploadIconName!: string;\r\n @Input() uploadButtonLabel!: string;\r\n @Input() openExtensionPopupLabel!: string;\r\n @Input() minSupportedFormatCount: number = 9;\r\n @Input() hideDefaultLimitsLabel: boolean = false;\r\n\r\n /** same as accept but for registered users. It changes error message if extension is supported for registered users. */\r\n @Input() extendedAcceptList!: string[];\r\n\r\n maxSizeLabel!: string;\r\n allowedExtensions!: string;\r\n\r\n #dialog = inject(MatDialog);\r\n #icon = inject(IconService);\r\n\r\n constructor() {\r\n this.#icon.registerIcons({FILE_UPLOAD_ICON});\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setMaxSizeLabel();\r\n }\r\n\r\n openSupportedFormatModal(): void {\r\n this.#dialog.open(ExtensionDialogComponent, {data: { extensions: this.accept.map(item => item.replace('.', '')) }})\r\n }\r\n\r\n handleFileInput(event: Event) {\r\n const target = event.target as HTMLInputElement;\r\n const files = target.files as FileList;\r\n this.validate(files);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onFileDrop(files: any) {\r\n this.validate(files);\r\n }\r\n\r\n private setMaxSizeLabel(): void {\r\n this.maxSizeLabel = getFileSizeLabel(this.maxSize, 0);\r\n }\r\n\r\n private emit(files: File[]) {\r\n if (files && files.length > 0) {\r\n this.fileChange.emit(files);\r\n }\r\n }\r\n\r\n private emitError(error: FileUploadError) {\r\n this.errorEvent.emit(error);\r\n }\r\n\r\n private validate(files: FileList) {\r\n //let size = 0;\r\n const validFiles: File[] = [];\r\n for (let i = 0; i < files.length; i++) {\r\n const file = files[i];\r\n if (!this.allowEmpty && file.size == 0) {\r\n this.emitError({ code: FileUploadErrorTypeEnum.FILE_EMPTY, error: \"File is empty\", fileName: file.name, maxSizeLabel: this.maxSizeLabel });\r\n return;\r\n }\r\n //size += file.size;\r\n const extensionErrorCode = this.getExtensionErrorCode(file.name);\r\n if (extensionErrorCode) {\r\n const error = { code: extensionErrorCode, error: \"Not valid extension.\", fileName: file.name, maxSizeLabel: this.maxSizeLabel };\r\n this.emitError(error);\r\n }\r\n else if (this.maxSize && file.size > this.maxSize) {\r\n const error = { code: FileUploadErrorTypeEnum.MAX_SIZE, error: \"Maximum allowed file size exceeded.\", fileName: file.name, maxSizeLabel: this.maxSizeLabel};\r\n this.emitError(error);\r\n }\r\n else {\r\n validFiles.push(file);\r\n }\r\n }\r\n\r\n this.emit(validFiles);\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n\r\n private getExtensionErrorCode(fileName: string): FileUploadErrorTypeEnum | null {\r\n const extension = fileName.slice(fileName.lastIndexOf('.')).toLowerCase()\r\n if (\r\n this.accept.length == 0 || (this.accept.length == 1 && this.accept[0] == '*') || this.accept.includes(extension)) {\r\n return null;\r\n }\r\n else {\r\n return this.extendedAcceptList?.includes(extension) ? FileUploadErrorTypeEnum.FILE_UPLOAD_UNSUPPORTED_FORMAT_REGISTER : FileUploadErrorTypeEnum.FILE_UPLOAD_UNSUPPORTED_FORMAT;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FileUploadComponent } from './file-upload.component';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { DragAndDropModule } from '../directives/drag-and-drop/drag-and-drop.module';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { ExtensionDialogModule } from '../extension-dialog';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n\r\n@NgModule({\r\n declarations: [FileUploadComponent],\r\n imports: [\r\n CommonModule,\r\n MatProgressBarModule,\r\n FlexLayoutModule,\r\n MatButtonModule,\r\n DragAndDropModule,\r\n MatIconModule,\r\n ExtensionDialogModule,\r\n TranslateModule\r\n ],\r\n exports: [\r\n FileUploadComponent\r\n ]\r\n})\r\nexport class FileUploadModule { }\r\n","<div class=\"filter-row\" *ngIf=\"filterRowVisible\">\r\n <div fxLayout=\"row\" class=\"filter-wrapper\" #filterWrapper [formGroup]=\"form\">\r\n <ng-container [formGroup]=\"filterFormGroup\">\r\n @for (filter of currentFilters; track filter.fieldName; let i = $index) {\r\n <button [class.filter-active]=\"filter.selectedValues?.length\" class=\"select-trigger-btn\" mat-stroked-button color=\"accent\" (click)=\"select.open()\">\r\n <div class=\"select-trigger-btn-label\">\r\n <span>{{filter.title | translate}}</span>\r\n <span *ngIf=\"filter.selectedValues?.length\" class=\"selected-count\">({{filter.selectedValues?.length}})</span>\r\n <mat-icon>{{ select.panelOpen ? \"keyboard_arrow_up\" : \"keyboard_arrow_down\" }}</mat-icon>\r\n </div>\r\n\r\n <mat-select\r\n multiple \r\n #select\r\n [panelClass]=\"'filter-panel'\"\r\n [panelWidth]=\"filter?.maxPanelWidth ?? 'auto'\" \r\n [formControlName]=\"filter.fieldName\" \r\n (openedChange)=\"$event === true ? focusOptionSearchInput(filter, i) : clearOptionSearchInput(filter, i)\"\r\n (selectionChange)=\"selectEvent($event, filter)\" \r\n >\r\n <ng-container *ngIf=\"filter?.search?.placeholder\">\r\n <input #optionSearchInput class=\"option-search-input\" [class.hidden]=\"filter.values!.length < 10\" type=\"text\" [placeholder]=\"filter.search?.placeholder ?? '' | translate\" (keyup)=\"filterOptions($event, filter)\" (keydown)=\"$event.stopPropagation()\">\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"filter.values.length\">\r\n <ng-container *ngIf=\"filter.translated; else sortedValuesByProperty\">\r\n @for (value of (filter.search?.filteredValues ?? filter.values) | sortAlphabetically:'key'; track value.key) {\r\n <mat-option [class.hidden]=\"filter.search?.searchCriteria && value.isSelected && !value.matchesSearchCriteria\" class=\"filter-option\" [disabled]=\"filter.singleSelection?.selected && filter.singleSelection?.value !== value.value\" [value]=\"value\">\r\n {{ filter.disableTitleCase ? value.key : (value.key | titlecase) }}\r\n </mat-option>\r\n }\r\n </ng-container>\r\n \r\n <ng-template #sortedValuesByProperty>\r\n @for (value of (filter.search?.filteredValues ?? filter.values) | sortTranslationsByProperty:'key':'value'; track value.value) {\r\n <mat-option [class.hidden]=\"filter.search?.searchCriteria && value.isSelected && !value.matchesSearchCriteria\" class=\"filter-option\" [disabled]=\"filter.singleSelection?.selected && filter.singleSelection?.value !== value.value\" [value]=\"value\">\r\n <ng-container *ngIf=\"!filter.disableTitleCase; else defaultCase\">\r\n {{ value.key | translate : { default: value.value | titlecase } }}\r\n </ng-container>\r\n \r\n <ng-template #defaultCase>\r\n {{ value.key | translate : { default: value.value } }} \r\n </ng-template>\r\n </mat-option>\r\n }\r\n </ng-template>\r\n </ng-container>\r\n </mat-select>\r\n </button>\r\n }\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"filterOverflow\">\r\n <div class=\"filter-arrows\">\r\n <button mat-icon-button (click)=\"switchLeft()\">\r\n <span class=\"material-icons-outlined\">\r\n chevron_left\r\n </span>\r\n </button>\r\n <button mat-icon-button (click)=\"switchRight()\">\r\n <span class=\"material-icons-outlined\">\r\n chevron_right\r\n </span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n</div>\r\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, ViewChild, ViewChildren } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { FilterBarFilter, FilterBarFilterItem } from './models';\r\nimport { FilterBarChangeEvent } from './models/filter-bar-change-event.model';\r\nimport { FilterBarSettings } from './models/filter-bar-settings.model';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MatSelectChange } from '@angular/material/select';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'tld-filter-bar',\r\n templateUrl: './filter-bar.component.html',\r\n styleUrls: ['./filter-bar.component.scss'],\r\n standalone: false\r\n})\r\nexport class FilterBarComponent implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChild(\"filterWrapper\") filterWrapper!: ElementRef;\r\n @ViewChildren('optionSearchInput') optionSearchInputs!: ElementRef[];\r\n @HostListener('window:resize', [])\r\n onResize() {\r\n this.checkOverflow();\r\n }\r\n\r\n @Input() settings!: FilterBarSettings;\r\n @Input() set filterRowVisible(value: boolean) {\r\n this._filterRowVisible = value;\r\n this.cdref.detectChanges();\r\n this.checkOverflow();\r\n }\r\n\r\n @Output() filterBarChange: EventEmitter<FilterBarChangeEvent> = new EventEmitter<FilterBarChangeEvent>();\r\n\r\n private _inputText = \"\";\r\n private _filterRowVisible!: boolean;\r\n private formChangesSubscription!: Subscription;\r\n\r\n readonly filterFormGroup = new FormGroup({});\r\n readonly form = new FormGroup({\r\n filters: this.filterFormGroup\r\n });\r\n\r\n filters: FilterBarChangeEvent = {\r\n input: '',\r\n filters: {},\r\n };\r\n\r\n filterOverflow = false;\r\n activeFilterIndex = 0;\r\n\r\n // getter for cleaner template html\r\n get filterFormGroupValue(): { [key: string]: FilterBarFilterItem[] } {\r\n return this.filterFormGroup.value;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures\r\n get filterRowVisible() { return this._filterRowVisible; }\r\n get inputText() {\r\n return this._inputText;\r\n }\r\n get outputFilterKeyAndValue() {\r\n return this.settings?.outputFilterKeyAndValue;\r\n }\r\n get currentFilters() {\r\n return this.settings?.splittedFilters?.length ? this.settings.splittedFilters[this.activeFilterIndex] : this.settings?.filters;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures\r\n set inputText(value) {\r\n this._inputText = value;\r\n this.filters.input = this._inputText;\r\n this.emitFilters();\r\n }\r\n\r\n constructor(private cdref: ChangeDetectorRef, private translate: TranslateService) { }\r\n\r\n ngOnInit() {\r\n this.settings.filters?.forEach((field) => {\r\n this.filterFormGroup.addControl(field.fieldName, new FormControl([]));\r\n })\r\n\r\n this.subscribeToFormValueChanges();\r\n \r\n this.activeFilterIndex = 0;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.checkOverflow();\r\n this.cdref.detectChanges();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removeAllFilters();\r\n this.formChangesSubscription.unsubscribe();\r\n }\r\n\r\n focusOptionSearchInput(filter: FilterBarFilter, index: number): void {\r\n if (!filter.search?.placeholder || filter.selectedValues?.length) {\r\n return;\r\n }\r\n\r\n this.optionSearchInputs.find((_item, i) => i === index)?.nativeElement.focus();\r\n\r\n if (filter.maxPanelWidth === '' && filter.search.placeholder) {\r\n this.setPanelWidth(filter);\r\n }\r\n }\r\n\r\n clearOptionSearchInput(filter: FilterBarFilter, index: number): void {\r\n if (!filter.search?.placeholder) {\r\n return;\r\n }\r\n\r\n const input = this.optionSearchInputs.find((_item, i) => i === index)?.nativeElement;\r\n\r\n if (input) {\r\n input.value = '';\r\n }\r\n\r\n filter.search.searchCriteria = '';\r\n this.filterOptions(null, filter);\r\n }\r\n\r\n filterOptions(event: KeyboardEvent | null, filter: FilterBarFilter) {\r\n const target = event?.target as HTMLTextAreaElement;\r\n filter.search!.searchCriteria = target?.value ?? '';\r\n this.settings.filters?.forEach((item) => {\r\n if (item.fieldName === filter.fieldName && item.search) {\r\n item.search.filteredValues = filter.values.filter((value) => {\r\n const valueKey = item.translated ? value.key : this.translate.instant(value.key);\r\n const matchesSearch = valueKey.toLowerCase().includes(target?.value?.toLowerCase() ?? '');\r\n const isSelected = filter.selectedValues?.some((selectedValue) => selectedValue.key === value.key);\r\n value.isSelected = isSelected ?? false;\r\n value.matchesSearchCriteria = matchesSearch ?? false;\r\n return matchesSearch || isSelected;\r\n })\r\n }\r\n });\r\n }\r\n\r\n selectEvent(event: MatSelectChange, filter: FilterBarFilter) {\r\n const settingFilter = this.settings.filters?.find((item) => item.fieldName === filter.fieldName) as FilterBarFilter;\r\n settingFilter.selectedValues = event.value;\r\n }\r\n\r\n setPanelWidth(filter: FilterBarFilter): void {\r\n // We must save panel width, so filtering does not affect it`s size.\r\n const selectPanel = document.querySelector('.cdk-overlay-pane') as HTMLElement;\r\n setTimeout(() => {\r\n const selectPanelWidth = selectPanel.clientWidth as number;\r\n const filterObj = this.settings.filters?.find((item) => item.fieldName === filter.fieldName) as FilterBarFilter;\r\n filterObj.maxPanelWidth = selectPanelWidth;\r\n selectPanel.style.minWidth = `${selectPanelWidth}px`;\r\n });\r\n }\r\n\r\n emitFilters() {\r\n this.filterBarChange.next(this.filters);\r\n }\r\n\r\n switchRight() {\r\n if (this.settings?.splittedFilters?.length === this.activeFilterIndex + 1) {\r\n return;\r\n }\r\n this.activeFilterIndex += 1;\r\n }\r\n\r\n switchLeft() {\r\n if (this.activeFilterIndex === 0) {\r\n return;\r\n }\r\n this.activeFilterIndex -= 1;\r\n }\r\n\r\n removeFilter(key: string, ix: number) {\r\n const control = this.filterFormGroup.get(key);\r\n\r\n if (!control) {\r\n return;\r\n }\r\n\r\n const newArray = control.value as [];\r\n newArray.splice(ix, 1);\r\n control.setValue(newArray);\r\n }\r\n\r\n removeAllFilters() {\r\n this.settings.filters?.forEach((filter) => {\r\n const valuesArray = this.filterFormGroupValue[filter.fieldName];\r\n while (valuesArray.length > 0) {\r\n this.removeFilter(filter.fieldName, 0);\r\n }\r\n });\r\n }\r\n\r\n private checkOverflow() {\r\n if (this.filterWrapper?.nativeElement) {\r\n const minFilterWidth = 100;\r\n \r\n if (this.settings?.filters?.length) {\r\n const containerWidth = this.filterWrapper.nativeElement.clientWidth;\r\n \r\n // Calculate the total width needed for all filters\r\n const totalWidthNeeded = this.settings.filters.length * minFilterWidth;\r\n \r\n // If all filters can fit within the container, no need to split\r\n if (totalWidthNeeded <= containerWidth) {\r\n this.activeFilterIndex = 0;\r\n this.settings.splittedFilters = [];\r\n this.filterOverflow = false;\r\n return;\r\n }\r\n \r\n // Calculate how many filters can fit per row based on the container width\r\n const filtersPerRow = Math.floor(containerWidth / minFilterWidth);\r\n \r\n // Determine how many groups are needed\r\n const groupCount = Math.ceil(this.settings.filters.length / filtersPerRow);\r\n\r\n if (groupCount < this.activeFilterIndex + 1) {\r\n this.activeFilterIndex = 0;\r\n }\r\n \r\n // Calculate group size based on the number of groups\r\n const groupSize = Math.ceil(this.settings.filters.length / groupCount);\r\n \r\n // Split filters into the calculated number of groups\r\n const newSplittedFilters: FilterBarFilter[][] = [];\r\n for (let i = 0; i < this.settings.filters.length; i += groupSize) {\r\n newSplittedFilters.push(this.settings.filters.slice(i, i + groupSize));\r\n }\r\n \r\n this.settings.splittedFilters = newSplittedFilters;\r\n this.filterOverflow = true;\r\n }\r\n }\r\n }\r\n \r\n private subscribeToFormValueChanges() {\r\n this.formChangesSubscription = this.form.valueChanges.subscribe(() => {\r\n this.filters = {\r\n input: '',\r\n filters: {}\r\n };\r\n\r\n for (const filterKey in this.form.value.filters) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const filter: FilterBarFilterItem[] = (this.form.value.filters as any)[filterKey] as FilterBarFilterItem[];\r\n this.filters.filters[filterKey] = filter.map((item) => this.outputFilterKeyAndValue ? item : item.value)\r\n }\r\n this.emitFilters();\r\n })\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FilterBarComponent } from './filter-bar.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SortTranslationsByPropertyModule } from '../pipes/sort-translations-by-property';\r\nimport { SortAlphabeticallyModule } from '../pipes/sort-alphabetically';\r\n\r\n@NgModule({\r\n declarations: [\r\n FilterBarComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n FlexLayoutModule,\r\n MatSelectModule,\r\n FormsModule,\r\n MatTooltipModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n SortTranslationsByPropertyModule,\r\n SortAlphabeticallyModule\r\n ],\r\n exports: [\r\n FilterBarComponent\r\n ]\r\n})\r\nexport class FilterBarModule { }\r\n","export const DISABLE_EXPORT_ATTRIBUTE_NAME = \"disable-export\";\r\n","export enum ExportFormat {\r\n CSV = \"csv\"\r\n}\r\n","<div class=\"status-display-wrapper\">\r\n <ng-container *ngIf=\"!config.loading; else loading\">\r\n <div>\r\n <span class=\"material-icons-outlined\">\r\n {{ config.icon }}\r\n </span>\r\n </div>\r\n <div\r\n class=\"text-xl-semi-bold status-display-row-title\"\r\n *ngIf=\"config.title\"\r\n [innerHtml]=\"config.title | translate : config.titleParams\"\r\n ></div>\r\n <div\r\n *ngIf=\"config.description\"\r\n class=\"text-l status-display-row-description\"\r\n [innerHtml]=\"config.description | translate : config.descriptionParams\"\r\n ></div>\r\n <div\r\n *ngIf=\"config.extraDescription\"\r\n class=\"text-l status-display-row-extra\"\r\n [innerHtml]=\"config.extraDescription | translate : config.extraDescriptionParams\"\r\n ></div>\r\n <ng-content></ng-content>\r\n </ng-container>\r\n <ng-template #loading>\r\n <mat-spinner color=\"accent\"></mat-spinner>\r\n </ng-template>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { StatusDisplayConfig } from './models/status-display-config.model';\r\n\r\n@Component({\r\n selector: 'lib-status-display',\r\n templateUrl: './status-display.component.html',\r\n styleUrls: ['./status-display.component.scss'],\r\n standalone: false\r\n})\r\nexport class StatusDisplayComponent {\r\n @Input({ required: true }) config!: StatusDisplayConfig;\r\n}\r\n","<div [ngClass.lt-md]=\"'mobile'\" fxLayout=\"column\" fxLayoutGap=\"0.75rem\">\r\n <div fxLayout=\"row\" fxLayout.lt-md=\"column\" fxLayoutGap.lt-md=\"0.75rem\">\r\n <div\r\n fxFlex\r\n fxLayout.lt-md=\"column\"\r\n fxLayoutGap=\"0.75rem\"\r\n fxLayoutAlign=\"start center\"\r\n fxLayoutAlign.lt-md=\"start start\"\r\n class=\"action-row\"\r\n >\r\n <button\r\n class=\"export-data\"\r\n mat-stroked-button\r\n color=\"accent\"\r\n *ngIf=\"exportActive\"\r\n (click)=\"export()\"\r\n >\r\n <span class=\"material-icons-outlined\">cloud_download</span>\r\n <span>{{ \"MULTI_FUNCTIONAL_TABLE.EXPORT\" | translate }}</span>\r\n </button>\r\n\r\n <div\r\n *ngIf=\"filterActive && showFilterToggle\"\r\n fxFlex\r\n fxLayoutGap=\"0.5rem\"\r\n fxLayoutAlign=\"start center\"\r\n >\r\n <button\r\n [class.filter-active]=\"filterBarVisible\"\r\n mat-stroked-button\r\n color=\"accent\"\r\n (click)=\"toggleFilterBar()\"\r\n >\r\n <span class=\"material-icons\">filter_list</span>\r\n <span>{{ \"MULTI_FUNCTIONAL_TABLE.FILTER_TOGGLE\" | translate }}</span>\r\n </button>\r\n\r\n <div *ngIf=\"showFilterReset\" class=\"clear-filters-wrapper\">\r\n <button mat-icon-button (click)=\"clearFilters()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"showSearch\"\r\n fxLayout=\"row\"\r\n fxLayoutAlign=\"start center\"\r\n class=\"wild-search-wrapper\"\r\n >\r\n <mat-icon\r\n class=\"search-icon\"\r\n [matTooltip]=\"hideSearchTooltip ? '' : (searchTooltip | translate)\"\r\n >search</mat-icon\r\n >\r\n <input\r\n [value]=\"config.filter?.settings?.searchValue ?? ''\"\r\n #wildSearch\r\n type=\"text\"\r\n [placeholder]=\"searchTitle | translate\"\r\n (keyup)=\"search($event)\"\r\n />\r\n <button\r\n *ngIf=\"showSearchClearButton && wildSearch.value\"\r\n mat-icon-button\r\n class=\"wild-search-clear-btn\"\r\n (click)=\"wildSearch.value = ''; search({ target: { value: '' } })\"\r\n >\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <ng-content select=\"[additionalActions]\"></ng-content>\r\n </div>\r\n\r\n <tld-filter-bar\r\n *ngIf=\"config.filter && config.filter.enabled\"\r\n #filterBar\r\n [filterRowVisible]=\"filterBarVisible\"\r\n [settings]=\"config.filter.settings\"\r\n (filterBarChange)=\"filtersChanged($event)\"\r\n >\r\n </tld-filter-bar>\r\n\r\n <ng-content select=\"[batchActions]\"></ng-content>\r\n\r\n @if(config.paginator?.enabled){\r\n @let paginatorConfig = config.paginator!;\r\n\r\n <mat-paginator [hidePageSize]=\"!paginatorConfig.showPageSize\" [showFirstLastButtons]=\"paginatorConfig.showFirstLastButtons\"\r\n [attr.aria-label]=\"'MULTI_FUNCTIONAL_TABLE.PAGINATOR_LABEL' | translate\" [pageSizeOptions]=\"paginatorConfig.pageSizeOptions ?? [10]\" (page)=\"paginatorChange($event)\">\r\n </mat-paginator>\r\n }\r\n <div\r\n #tableContainer\r\n class=\"table-overflow\"\r\n [class.table-sticky-header]=\"config?.stickyHeader\"\r\n [class.table-dragable]=\"tableOverflow && !config?.disableMouseDragging\"\r\n (mousedown)=\"onMouseDown($event)\"\r\n (mouseup)=\"onMouseUp()\"\r\n (mouseleave)=\"onMouseUp()\"\r\n (mousemove)=\"onMouseMove($event)\"\r\n >\r\n <table\r\n #table\r\n mat-table\r\n [dataSource]=\"dataSource!\"\r\n [trackBy]=\"trackByFn\"\r\n >\r\n <ng-content></ng-content>\r\n <ng-container [matColumnDef]=\"batchColumnName\">\r\n <th class=\"row-select\" mat-header-cell *matHeaderCellDef disable-export>\r\n <mat-checkbox\r\n [matTooltip]=\"'MULTI_FUNCTIONAL_TABLE.SELECT_ALL' | translate\"\r\n [disabled]=\"config.batchConfig!.checkBoxesDisabled\"\r\n (change)=\"toggleAllRowSelection()\"\r\n [checked]=\"matSelection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"matSelection.hasValue() && !isAllSelected()\"\r\n >\r\n </mat-checkbox>\r\n </th>\r\n <td\r\n class=\"row-select\"\r\n mat-cell\r\n *matCellDef=\"let element\"\r\n disable-export\r\n >\r\n <mat-checkbox\r\n [matTooltip]=\"'MULTI_FUNCTIONAL_TABLE.SELECT' | translate\"\r\n *ngIf=\"\r\n isRowCheckboxAlwaysVisible ||\r\n hoveredRow === element ||\r\n matSelection.isSelected(element)\r\n \"\r\n [disabled]=\"\r\n config.batchConfig!.checkBoxesDisabled ||\r\n (preselectedItems.includes(element) && disablePreselectedItems)\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"toggleElementSelection(element)\"\r\n [checked]=\"matSelection.isSelected(element)\"\r\n >\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n <tr\r\n mat-header-row\r\n *matHeaderRowDef=\"displayColumns; sticky: config?.stickyHeader ?? false\"\r\n ></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; let index = index; columns: displayColumns\"\r\n (click)=\"\r\n config?.rowClickCallback && (!config.disableRowClick || !config?.disableRowClick(row))\r\n ? config?.rowClickCallback(row)\r\n : null\r\n \"\r\n (mouseover)=\"rowHovered(index,row)\"\r\n (mouseleave)=\"rowHoverLeave()\"\r\n [class.row-clickable]=\"\r\n config?.rowClickCallback && (!config.disableRowClick || !config?.disableRowClick(row))\r\n \"\r\n [class.highlight-error]=\"highlightErrorElement(index, row)\"\r\n [class.highlight]=\"isElementHighlighted(index,row)\"\r\n ></tr>\r\n\r\n <ng-container [matColumnDef]=\"columnSelectColumnName\">\r\n <th class=\"row-select\" mat-header-cell *matHeaderCellDef disable-export>\r\n <div class=\"column-selector-wrapper\">\r\n <button\r\n class=\"column-selector\"\r\n mat-icon-button\r\n color=\"accent\"\r\n [matMenuTriggerFor]=\"columnMenu\"\r\n >\r\n <span class=\"material-icons\">more_vert</span>\r\n </button>\r\n </div>\r\n </th>\r\n <td\r\n class=\"row-select\"\r\n mat-cell\r\n *matCellDef=\"let element\"\r\n disable-export\r\n ></td>\r\n </ng-container>\r\n <ng-container *ngIf=\"noDataRowActive\">\r\n <tr *matNoDataRow>\r\n <!-- add random number to make sure it takes full width -->\r\n <td colspan=\"99\">\r\n <lib-status-display [config]=\"noDataRowConfig\"></lib-status-display>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n</div>\r\n\r\n<mat-menu #columnMenu=\"matMenu\">\r\n <div class=\"column-select-menu\" (click)=\"$event.stopPropagation()\">\r\n <div *ngFor=\"let column of configurableColumns\">\r\n <mat-checkbox [(ngModel)]=\"column.selected\">\r\n {{ column.displayName | translate }}\r\n </mat-checkbox>\r\n </div>\r\n\r\n <div class=\"column-select-save\">\r\n <button\r\n mat-flat-button\r\n color=\"accent\"\r\n (click)=\"updateDisplayColumns()\"\r\n >\r\n {{ \"MULTI_FUNCTIONAL_TABLE.COLUMN_SELECT_SAVE\" | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n","import { SelectionModel } from '@angular/cdk/collections';\r\nimport { AfterContentInit, AfterViewInit, Component, ContentChild, ContentChildren, effect, ElementRef, EventEmitter, input, Input, OnInit, Output, QueryList, ViewChild } from '@angular/core';\r\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatColumnDef, MatHeaderRowDef, MatNoDataRow, MatRowDef, MatTable, MatTableDataSource } from '@angular/material/table';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { map, Observable, take } from 'rxjs';\r\nimport { FilterBarComponent } from '../filter-bar';\r\nimport { FilterBarChangeEvent } from '../filter-bar/models/filter-bar-change-event.model';\r\nimport { HtmlElementParseHelper } from '../helpers';\r\nimport { SaveFileHelper } from '../helpers/save-file.helper';\r\nimport { DOMService } from '../services';\r\nimport { StatusDisplayConfig } from '../status-display/models/status-display-config.model';\r\nimport { DISABLE_EXPORT_ATTRIBUTE_NAME } from './constants/disable-export-attribute-name.const';\r\nimport { ExportFormat } from './models';\r\nimport { ColumnConfig } from './models/column-config.model';\r\nimport { MultiFunctionalTableConfig } from './models/multi-functional-table-config.model';\r\nimport { SelectedColumnLocalStorageConfig } from './models/selected-column-local-storage-config.model';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'tld-multi-functional-table',\r\n templateUrl: './multi-functional-table.component.html',\r\n styleUrls: ['./multi-functional-table.component.scss'],\r\n standalone: false\r\n})\r\nexport class MultiFunctionalTableComponent<T> implements OnInit, AfterContentInit, AfterViewInit {\r\n readonly matSelection = new SelectionModel<T>(true, []);\r\n\r\n #dataSource: MatTableDataSource<T> | undefined;\r\n get dataSource(): MatTableDataSource<T> {\r\n return (this.#dataSource ?? this.config.dataSource)!;\r\n }\r\n\r\n @Input() config!: MultiFunctionalTableConfig<T>;\r\n @Input() highlightedElements!: T[];\r\n @Input() trackByFn: (ix: number, row: T) => string | number = this.defaultTrackBy;\r\n @Input() highlightedErrorElements!: T[];\r\n @Input() set selection(value: T[]) {\r\n this.matSelection.setSelection(...(value ?? []));\r\n }\r\n\r\n // Set this to false if you want to display checkboxes only on row hover.\r\n @Input() isRowCheckboxAlwaysVisible = true;\r\n @Input() disablePreselectedItems = false;\r\n\r\n //#region Output properties\r\n @Output() filterBarChange: EventEmitter<FilterBarChangeEvent> = new EventEmitter<FilterBarChangeEvent>();\r\n @Output() paginatorUpdate: EventEmitter<PageEvent> = new EventEmitter<PageEvent>();\r\n @Output() exported: EventEmitter<T[]> = new EventEmitter<T[]>();\r\n @Output() selectionChange: Observable<T[]> = this.matSelection.changed.asObservable().pipe(map(() => { return this.matSelection.selected; }));\r\n //#endregion\r\n\r\n // #region Properties for mat table wrapper\r\n @ContentChildren(MatHeaderRowDef) headerRowDefs!: QueryList<MatHeaderRowDef>;\r\n @ContentChildren(MatRowDef, { descendants: true }) rowDefs!: QueryList<MatRowDef<T>>;\r\n @ContentChildren(MatColumnDef) columnDefs!: QueryList<MatColumnDef>;\r\n @ContentChild(MatNoDataRow) noDataRow!: MatNoDataRow;\r\n\r\n @ViewChild(MatTable, { static: true }) table!: MatTable<T>;\r\n @ViewChild(MatSort) sort!: MatSort;\r\n\r\n @ViewChild('tableContainer') tableContainer!: ElementRef<HTMLElement>;\r\n @ViewChild('filterBar') filterBar!: FilterBarComponent;\r\n @ViewChild(MatPaginator) paginator!: MatPaginator;\r\n\r\n //#endregion\r\n\r\n @ViewChild(MatTable, { read: ElementRef }) tableElementRef!: ElementRef<HTMLElement>;\r\n\r\n /** This property will be taken into account only if config.DataSource not set. */\r\n data = input<T[]>();\r\n dataSourceUpdateEffect = effect(() => { this.updateDataSourceData(); })\r\n\r\n preselectedItems!: T[];\r\n\r\n get ignoreAttributeName() { return DISABLE_EXPORT_ATTRIBUTE_NAME }\r\n displayColumns!: string[];\r\n\r\n columnSelectActive!: boolean;\r\n exportActive!: boolean;\r\n noDataRowActive!: boolean;\r\n\r\n filters!: FilterBarChangeEvent;\r\n filterBarVisible!: boolean;\r\n\r\n hideSearchTooltip!: boolean;\r\n showSearch!: boolean;\r\n showSearchClearButton!: boolean;\r\n searchTitle!: string;\r\n searchTooltip!: string;\r\n\r\n noDataRowConfig!: StatusDisplayConfig;\r\n noDataRowIcon = \"manage_search\";\r\n\r\n configurableColumns!: ColumnConfig[];\r\n batchSelectedEnabled!: boolean;\r\n\r\n // is used in html to display batch checkbox on hovered row\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n hoveredRow: any;\r\n hoveredRowIndex: number | undefined;\r\n\r\n // properties for overflow scrolling with mouse click\r\n tableOverflow!: boolean;\r\n private scrollMovement!: number | null;\r\n private isDragging = false;\r\n private startX = 0;\r\n private startY = 0;\r\n private scrollLeft = 0;\r\n private scrollTop = 0;\r\n\r\n get filterActive() { return this.config.filter?.enabled; }\r\n get showFilterToggle() { return !this.config.filter?.hideFilterToggle; }\r\n\r\n get showFilterReset() { return this.config.filter?.settings.filters?.find(filter => filter.selectedValues?.length) }\r\n\r\n private localStorageValue!: SelectedColumnLocalStorageConfig;\r\n readonly batchColumnName = \"batch\";\r\n readonly columnSelectColumnName = \"columnSelect\";\r\n\r\n constructor(private readonly domService: DOMService,\r\n private readonly translateService: TranslateService) { }\r\n\r\n //#region Angular lifecycle hooks\r\n ngOnInit(): void {\r\n this.createDataSource();\r\n this.readFromLocalStorage();\r\n this.setFilterVisibility();\r\n this.setColumnSelectProperties();\r\n this.setExportProperties();\r\n this.setNoDataRowProperties();\r\n this.preselectedItems = this.matSelection.selected;\r\n this.searchTooltip = this.config.filter?.settings?.searchTooltip ?? 'FILTER_BAR.SEARCH_TOOLTIP';\r\n this.searchTitle = this.config.filter?.settings?.searchTitle ?? 'FILTER_BAR.SEARCH';\r\n this.showSearch = !this.config.filter?.settings?.hideSearch;\r\n this.showSearchClearButton = this.config.filter?.settings?.showSearchClearButton ?? true;\r\n this.hideSearchTooltip = !this.config.filter?.settings?.hideTooltip;\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.columnDefs.forEach(columnDef => this.table.addColumnDef(columnDef));\r\n this.rowDefs.forEach(rowDef => this.table.addRowDef(rowDef));\r\n this.headerRowDefs.forEach(headerRowDef => this.table.addHeaderRowDef(headerRowDef));\r\n this.headerRowDefs.forEach(headerRowDef => this.table.addHeaderRowDef(headerRowDef));\r\n this.table.setNoDataRow(this.noDataRow);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.dataSource.sort = this.sort;\r\n this.dataSource.paginator = this.paginator;\r\n\r\n if (this.config.paginator?.initialPage) {\r\n this.paginator.pageIndex = this.config.paginator.initialPage\r\n }\r\n }\r\n //#endregion\r\n\r\n search(event: { target: { value: string } } | KeyboardEvent): void {\r\n const input = (event.target as HTMLInputElement)?.value;\r\n this.config.filter!.settings.searchInput = input;\r\n this.filterBarChange.emit({ ...this.filters, input });\r\n this.updatePaginator(0);\r\n }\r\n\r\n updateDisplayColumns(initial = false) {\r\n this.batchSelectedEnabled = this.config.batchConfig?.enabled ? true : false;\r\n const allColumns = this.config.columnSelect?.columns ?? [];\r\n this.displayColumns = [];\r\n this.configurableColumns = allColumns.filter(column => !column.notConfigurable);\r\n\r\n if (this.batchSelectedEnabled) {\r\n this.displayColumns.push(this.batchColumnName);\r\n }\r\n\r\n if (!allColumns.length) {\r\n return;\r\n }\r\n\r\n const localStorageValue = this.localStorageValue ?? {};\r\n if (!localStorageValue.columns) {\r\n localStorageValue.columns = {};\r\n }\r\n\r\n allColumns.forEach((column) => {\r\n if (initial) {\r\n column.selected = localStorageValue.columns?.[column.name] ?? column.selected;\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n localStorageValue.columns![column.name] = column.selected;\r\n }\r\n\r\n if (column.selected) {\r\n this.displayColumns.push(column.name);\r\n }\r\n })\r\n\r\n if (this.columnSelectActive) {\r\n this.displayColumns.push(this.columnSelectColumnName);\r\n }\r\n\r\n if (!initial) {\r\n this.updateLocalStorage(localStorageValue);\r\n }\r\n }\r\n\r\n toggleFilterBar() {\r\n const localstorageObject = this.localStorageValue ?? {};\r\n if (!localstorageObject.filter) {\r\n localstorageObject.filter = {};\r\n }\r\n\r\n this.filterBarVisible = !this.filterBarVisible;\r\n localstorageObject.filter.visible = this.filterBarVisible;\r\n this.updateLocalStorage(localstorageObject);\r\n }\r\n\r\n filtersChanged(filters: FilterBarChangeEvent) {\r\n this.filters = { ...filters, input: this.config.filter!.settings.searchInput ?? '' };\r\n this.filterBarChange.emit(this.filters);\r\n }\r\n\r\n clearFilters() {\r\n this.config.filter?.settings.filters?.forEach((filter) => {\r\n filter.selectedValues = [];\r\n })\r\n\r\n this.filterBar.removeAllFilters();\r\n }\r\n\r\n export() {\r\n this.dataSource!.connect().pipe(take(1)).subscribe((data) => {\r\n this.exported.emit(data);\r\n })\r\n\r\n if (this.config.export?.fileOptions) {\r\n this.exportToFile()\r\n }\r\n }\r\n\r\n isElementHighlighted(ix: number, element: T) {\r\n let isHovered = false;\r\n if (this.hoveredRow && this.hoveredRowIndex !== undefined) {\r\n isHovered = this.trackByFn(this.hoveredRowIndex, this.hoveredRow) === this.trackByFn(ix, element);\r\n }\r\n return isHovered ||\r\n this.highlightedElements?.some((highlightElement, highlightElementIx) => this.trackByFn(highlightElementIx, highlightElement) === this.trackByFn(ix, element));\r\n }\r\n\r\n highlightErrorElement(ix: number, element: T) {\r\n return this.highlightedErrorElements?.some((highlightElement, highlightElementIx) => this.trackByFn(highlightElementIx, highlightElement) === this.trackByFn(ix, element));\r\n }\r\n\r\n //#region Methods for batch selection\r\n isAllSelected() {\r\n const numSelected = this.matSelection.selected.length;\r\n const numRows = this.dataSource?.data.length;\r\n return numSelected === numRows;\r\n }\r\n\r\n toggleAllRowSelection() {\r\n if (this.isAllSelected()) {\r\n if (this.disablePreselectedItems) {\r\n // deselect only those items which were not already preselected\r\n this.matSelection.deselect(\r\n ...this.matSelection.selected.filter(elm => !this.preselectedItems.map(elm => elm).includes(elm))\r\n );\r\n return;\r\n }\r\n else {\r\n this.matSelection.clear();\r\n return;\r\n }\r\n }\r\n\r\n this.matSelection.select(...this.dataSource?.data ?? []);\r\n }\r\n\r\n toggleElementSelection(element: T) {\r\n this.matSelection.toggle(element);\r\n }\r\n\r\n onMouseDown(event: MouseEvent) {\r\n if (this.config.disableMouseDragging) {\r\n return;\r\n }\r\n\r\n this.isDragging = true;\r\n this.startX = event.pageX - this.tableContainer.nativeElement.offsetLeft;\r\n this.startY = event.pageY - this.tableContainer.nativeElement.offsetTop;\r\n this.scrollLeft = this.tableContainer.nativeElement.scrollLeft;\r\n this.scrollTop = this.tableContainer.nativeElement.scrollTop;\r\n\r\n // canceling any previous animation frame\r\n if (this.scrollMovement !== null) {\r\n cancelAnimationFrame(this.scrollMovement);\r\n }\r\n }\r\n\r\n onMouseMove(event: MouseEvent) {\r\n if (this.config.disableMouseDragging) {\r\n return;\r\n }\r\n\r\n this.checkTableOverflow();\r\n\r\n if (!this.isDragging) {\r\n return;\r\n }\r\n\r\n // using requestAnimationFrame for smoother updates\r\n if (this.scrollMovement === null) {\r\n this.scrollMovement = requestAnimationFrame(() => {\r\n if (!this.tableOverflow) {\r\n return;\r\n }\r\n\r\n const x = event.pageX - this.tableContainer.nativeElement.offsetLeft;\r\n const y = event.pageY - this.tableContainer.nativeElement.offsetTop;\r\n\r\n // calculating the differences in movement\r\n const walkX = (x - this.startX) * 2;\r\n const walkY = (y - this.startY) * 2;\r\n\r\n // updating scroll positions\r\n this.tableContainer.nativeElement.scrollLeft = this.scrollLeft - walkX;\r\n this.tableContainer.nativeElement.scrollTop = this.scrollTop - walkY;\r\n\r\n this.scrollMovement = null;\r\n });\r\n }\r\n }\r\n\r\n onMouseUp() {\r\n if (this.config.disableMouseDragging) {\r\n return;\r\n }\r\n\r\n this.isDragging = false;\r\n\r\n // canceling any pending animation\r\n if (this.scrollMovement !== null) {\r\n cancelAnimationFrame(this.scrollMovement);\r\n this.scrollMovement = null;\r\n }\r\n }\r\n\r\n paginatorChange(change: PageEvent) {\r\n this.paginatorUpdate.emit(change);\r\n }\r\n //#endregion\r\n\r\n rowHovered(index: number, row: T) {\r\n this.hoveredRow = row;\r\n this.hoveredRowIndex = index;\r\n }\r\n\r\n rowHoverLeave() {\r\n this.hoveredRow = null;\r\n this.hoveredRowIndex = undefined;\r\n }\r\n\r\n defaultTrackBy(ix: number): number {\r\n return ix;\r\n }\r\n\r\n private checkTableOverflow(): void {\r\n // when data is available we should check once for table overflow\r\n // when there wasnt overflow, but width of the table became bigger, then we are reseting tableOverflow variable\r\n // same for when there was overflow, but size of the table is same as container, so overflow is gone and we reseting tableOverflow variable again\r\n if ((this.dataSource?.data.length && this.tableOverflow === undefined) ||\r\n (!this.tableOverflow && this.tableContainer.nativeElement.clientWidth < this.tableElementRef.nativeElement.clientWidth) ||\r\n (this.tableOverflow && this.tableContainer.nativeElement.clientWidth === this.tableElementRef.nativeElement.clientWidth)) {\r\n\r\n if (this.tableContainer.nativeElement.clientWidth < this.tableElementRef.nativeElement.clientWidth) {\r\n this.tableOverflow = true;\r\n } else {\r\n this.tableOverflow = false;\r\n }\r\n }\r\n }\r\n\r\n private exportToFile() {\r\n if (!this.config.export?.fileOptions?.saveToFile) {\r\n return;\r\n }\r\n\r\n let fileString = \"\";\r\n let extension!: ExportFormat;\r\n switch (this.config.export.fileOptions.format) {\r\n case ExportFormat.CSV:\r\n default:\r\n extension = ExportFormat.CSV;\r\n fileString = HtmlElementParseHelper.tableAsCsv(this.tableElementRef.nativeElement, this.ignoreAttributeName);\r\n break;\r\n }\r\n const translatedFileName = this.translateService.instant(this.config.export.fileOptions.fileName);\r\n SaveFileHelper.saveFile(fileString, `${translatedFileName}.${extension}`);\r\n }\r\n\r\n private updateLocalStorage(newValue: SelectedColumnLocalStorageConfig) {\r\n this.localStorageValue = newValue;\r\n if (this.config.localStorageKey && newValue) {\r\n this.domService.localStorage?.setItem(this.config.localStorageKey, JSON.stringify(newValue));\r\n }\r\n }\r\n private readFromLocalStorage() {\r\n if (this.config.localStorageKey) {\r\n try {\r\n const localStorageString = this.domService.localStorage?.getItem(this.config.localStorageKey);\r\n if (localStorageString) {\r\n this.localStorageValue = JSON.parse(localStorageString);\r\n }\r\n }\r\n // eslint-disable-next-line no-empty\r\n catch {\r\n }\r\n }\r\n }\r\n\r\n private setColumnSelectProperties() {\r\n this.columnSelectActive = this.config.columnSelect?.enabled ? true : false;\r\n this.updateDisplayColumns(true);\r\n }\r\n\r\n private setFilterVisibility() {\r\n this.filterBarVisible = this.localStorageValue?.filter?.visible ?? this.config?.filter?.visible ?? false;\r\n }\r\n\r\n private setNoDataRowProperties() {\r\n if (this.config.noDataRow) {\r\n this.noDataRowActive = true;\r\n this.noDataRowConfig = this.config.noDataRow;\r\n this.noDataRowConfig.icon = this.config.noDataRow?.icon ?? this.noDataRowIcon;\r\n }\r\n }\r\n\r\n private setExportProperties() {\r\n if (this.config.export?.enabled) {\r\n this.exportActive = true;\r\n }\r\n }\r\n\r\n private createDataSource() {\r\n if (!this.config.dataSource) {\r\n this.#dataSource = new MatTableDataSource<T>(this.data());\r\n }\r\n }\r\n\r\n private updateDataSourceData() {\r\n const data = this.data();\r\n if (!data || !this.#dataSource) {\r\n return;\r\n }\r\n\r\n const shouldInitializePaginator = !this.#dataSource.data.length;\r\n this.#dataSource.data = data;\r\n\r\n // if data is async loaded, page needs to be set on first load.\r\n if (shouldInitializePaginator) {\r\n this.updatePaginator(this.config.paginator?.initialPage ?? 0);\r\n }\r\n }\r\n\r\n private updatePaginator(pageIndex: number) {\r\n if (this.paginator) {\r\n this.paginator.pageIndex = pageIndex;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { StatusDisplayComponent } from './status-display.component';\r\n\r\n@NgModule({\r\n declarations: [StatusDisplayComponent],\r\n imports: [CommonModule, TranslateModule, MatProgressSpinnerModule, RouterModule],\r\n exports: [StatusDisplayComponent]\r\n})\r\nexport class StatusDisplayModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MultiFunctionalTableComponent } from './multi-functional-table.component';\r\nimport { FilterBarModule } from '../filter-bar';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { StatusDisplayModule } from '../status-display';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { CustomPaginatorInernationalizationHelper } from '../helpers/custom-paginator-internatioinalization.helper';\r\n\r\n@NgModule({\r\n declarations: [\r\n MultiFunctionalTableComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatTableModule,\r\n MatButtonModule,\r\n TranslateModule,\r\n MatMenuModule,\r\n MatCheckboxModule,\r\n FormsModule,\r\n FilterBarModule,\r\n FlexLayoutModule,\r\n MatSortModule,\r\n MatProgressSpinnerModule,\r\n MatTooltipModule,\r\n StatusDisplayModule,\r\n MatIconModule,\r\n MatPaginatorModule\r\n ],\r\n providers:[\r\n {\r\n provide: MatPaginatorIntl,\r\n useClass: CustomPaginatorInernationalizationHelper\r\n }\r\n ],\r\n exports: [\r\n MultiFunctionalTableComponent\r\n ]\r\n})\r\nexport class MultiFunctionalTableModule { }\r\n","export enum Confirmation {\r\n PRIMARY = 1,\r\n SECONDARY = 2,\r\n}\r\n","<h1 mat-dialog-title>{{ data.title | translate }}</h1>\r\n<div mat-dialog-content>\r\n <p class=\"confirmation-description\">{{ data.descriptioon | translate }}</p>\r\n \r\n <ul *ngIf=\"data.details\">\r\n <li *ngFor=\"let extraData of data.details\">\r\n {{ extraData }}\r\n </li>\r\n </ul>\r\n</div>\r\n<mat-dialog-actions align=\"end\">\r\n <button mat-button [mat-dialog-close]=\"confirmation.SECONDARY\">\r\n {{ data.rejectionText | translate }}\r\n </button>\r\n <button mat-flat-button color=\"accent\" [mat-dialog-close]=\"confirmation.PRIMARY\">\r\n {{ data.confirmationText | translate }}\r\n </button>\r\n</mat-dialog-actions>\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ConfirmationBody } from './models/confirmation-body.model';\r\nimport { Confirmation } from './models/confirmation.enum';\r\n\r\n@Component({\r\n selector: 'lib-confirmation-modal',\r\n templateUrl: './confirmation-modal.component.html',\r\n styleUrls: ['./confirmation-modal.component.scss'],\r\n standalone: false\r\n})\r\nexport class ConfirmationModalComponent {\r\n confirmation = Confirmation;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<ConfirmationModalComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: ConfirmationBody\r\n ) {\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ConfirmationModalComponent } from './confirmation-modal.component';\r\n\r\n@NgModule({\r\n declarations: [ConfirmationModalComponent],\r\n imports: [CommonModule, MatDialogModule, MatButtonModule, TranslateModule],\r\n exports: [ConfirmationModalComponent],\r\n})\r\nexport class ConfirmationModalModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\r\nimport { ConfirmationModalComponent } from '../confirmation-modal.component';\r\nimport { ConfirmationBody } from '../models/confirmation-body.model';\r\nimport { Confirmation } from '../models/confirmation.enum';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfirmationService {\r\n\r\n constructor(private readonly dialog: MatDialog) { }\r\n\r\n openDialog(data: ConfirmationBody): Observable<Confirmation> {\r\n const dialogRef = this.dialog.open(ConfirmationModalComponent, {\r\n data: data,\r\n width: '40rem'\r\n });\r\n\r\n return dialogRef.afterClosed();\r\n }\r\n}\r\n","export const OPEN_CLOSE_BTN_ICONS_TOKEN = 'OPEN_CLOSE_BTN_ICONS_TOKEN'","<button\r\n mat-button\r\n *ngIf=\"!isIcon\"\r\n [disabled]=\"disabled\"\r\n [disableRipple]=\"true\"\r\n [ngClass.lt-md]=\"'open-close-button-tablet'\"\r\n [attr.aria-label]=\"ariaLabelCode | translate\"\r\n [attr.aria-expanded]=\"isOpened\" \r\n>\r\n <span fxLayout=\"row\" fxLayoutAlign=\"center center\">\r\n <span class=\"open-close-button-content text-l\" fxLayoutAlign=\"center center\">\r\n <ng-content></ng-content>\r\n </span>\r\n\r\n <span *ngIf=\"isOpened; else closed\" class=\"material-icons spin\">\r\n {{ icons.open }}\r\n </span>\r\n\r\n <ng-template #closed>\r\n <span class=\"material-icons spin\">\r\n {{ icons.close }}\r\n </span>\r\n </ng-template>\r\n </span>\r\n</button>\r\n<button\r\n mat-icon-button\r\n fxLayoutAlign=\"center center\"\r\n *ngIf=\"isIcon\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-label]=\"ariaLabelCode | translate\">\r\n <span class=\"material-icons\">\r\n {{ isOpened ? icons.open : icons.close }}\r\n </span>\r\n</button>\r\n","import { Component, Inject, Input, OnInit, Optional, ViewChild } from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { OpenCloseBtnIcons } from './models';\r\nimport { OPEN_CLOSE_BTN_ICONS_TOKEN } from './injection-tokens';\r\n\r\n@Component({\r\n selector: 'lib-open-close-button',\r\n templateUrl: './open-close-button.component.html',\r\n styleUrl: './open-close-button.component.scss',\r\n standalone: false\r\n})\r\nexport class OpenCloseButtonComponent implements OnInit {\r\n private _isOpened!: boolean;\r\n\r\n @Input() disableFocusOnAction!: boolean;\r\n @Input() disabled!: boolean;\r\n @Input() isIcon!: boolean;\r\n @Input() ariaLabelCode!: string;\r\n \r\n @Input() set isOpened(value: boolean) {\r\n if (this._isOpened && !value && !this.disableFocusOnAction) {\r\n this.focus();\r\n }\r\n this._isOpened = value;\r\n }\r\n\r\n get isOpened() { return this._isOpened; }\r\n\r\n @ViewChild(MatButton) button!: MatButton;\r\n\r\n icons!: OpenCloseBtnIcons;\r\n defaultIcons: OpenCloseBtnIcons = { open: 'keyboard_arrow_down', close: 'keyboard_arrow_up' };\r\n\r\n constructor(@Optional() @Inject(OPEN_CLOSE_BTN_ICONS_TOKEN) private readonly openCloseBtnIcons: OpenCloseBtnIcons ) {}\r\n\r\n ngOnInit(): void {\r\n this.icons = this.openCloseBtnIcons ?? this.defaultIcons;\r\n }\r\n\r\n focus(): void {\r\n this.button?.focus();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { OpenCloseButtonComponent } from './open-close-button.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\n\r\n@NgModule({\r\n declarations: [OpenCloseButtonComponent],\r\n imports: [CommonModule, TranslateModule, MatButtonModule, FlexLayoutModule],\r\n exports: [OpenCloseButtonComponent]\r\n})\r\nexport class OpenCloseButtonModule { }\r\n","export enum EngineTermCollectionScope {\r\n GROUP = \"Group\",\r\n GLOBAL = \"Global\"\r\n}\r\n","export enum EngineTermCollectionSource {\r\n TILDE_TERM = \"TildeTerm\",\r\n FILE = \"File\"\r\n}\r\n","export enum EngineTermCollectionStatus {\r\n IMPORTING = \"Importing\",\r\n READY = \"Ready\",\r\n ERROR = \"Error\",\r\n DELETING = \"Deleting\"\r\n}\r\n","export enum CombinedCollectionTooltipKey {\r\n NO_ENTRIES = \"NO_ENTRIES\",\r\n DEFAULT_COLLECTION = \"DEFAULT_COLLECTION\"\r\n}\r\n","\r\nexport enum MtCollectionStatus {\r\n IMPORTING = \"Importing\",\r\n DELETING = \"Deleting\",\r\n READY = \"Ready\",\r\n PROCESSING = \"Processing\",\r\n ERROR = \"Error\",\r\n // basic status created in frontend\r\n NOT_IN_USE = \"NotInUse\"\r\n}\r\n","export enum EngineTermCollectionSubStatus {\r\n UNSPECIFIED = \"Unspecified\",\r\n IMPORTING_QUEUING = \"ImportingQueuing\",\r\n IMPORTING = \"Importing\",\r\n IMPORTING_FETCHING = \"ImportingFetching\",\r\n IMPORTING_PREPROCESSING = \"ImportingPreprocessing\",\r\n DELETING_QUEUING = \"DeletingQueuing\",\r\n DELETING = \"Deleting\",\r\n DELETING_DELETED = \"DeletingDeleted\",\r\n ERROR_IMPORTING = \"ErrorImporting\",\r\n ERROR_DELETING = \"ErrorDeleting \",\r\n}\r\n","import { EngineTermCollectionSource } from \"../enums\";\r\nimport { CombinedCollectionTooltipKey } from \"../enums/combined-collection-tooltip-key.enum\";\r\nimport { MtCollectionStatus } from \"../enums/mt-collection-status.enum\";\r\nimport { EngineTermCollectionAccess } from \"./engine-term-collection-access.model\";\r\nimport { MtCollection } from \"./mt-collection.model\";\r\nimport { ITldTermCollection } from \"./tld-term-collection.model\";\r\n\r\n/**\r\n * Class that joins collection from term api and its imported collection from MT api.\r\n */\r\nexport class CombinedCollection {\r\n mtCollection!: MtCollection | null;\r\n termCollection!: ITldTermCollection | null;\r\n termTooltipKey!: CombinedCollectionTooltipKey | null;\r\n source!: EngineTermCollectionSource;\r\n /**\r\n * Modified date from term api or last updated from mt api.\r\n */\r\n lastUpdated!: Date | undefined;\r\n\r\n //#region Static properties\r\n static importingStatuses = [MtCollectionStatus.IMPORTING, MtCollectionStatus.PROCESSING];\r\n\r\n static findExistingCollectionFromList(collections: Iterable<CombinedCollection>, collection: CombinedCollection) {\r\n for (const col of collections) {\r\n if ((col.termId && col.termId == collection.termId) ||\r\n (col.mtCollection?.id && col.mtCollection.id == collection.mtCollection?.id)) {\r\n return col;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n static findExistingIndexFromList(collections: Iterable<CombinedCollection>, collection: CombinedCollection): number | null {\r\n if (!collections) {\r\n return null;\r\n }\r\n\r\n let i = 0;\r\n for (const col of collections) {\r\n if ((col.termId && col.termId == collection.termId) ||\r\n (col.mtCollection?.id && col.mtCollection.id == collection.mtCollection?.id)) {\r\n return i;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n //#endregion\r\n\r\n //#region Editable MT fields\r\n editables: {\r\n globalDefault?: boolean;\r\n groupDefault?: boolean;\r\n } = {};\r\n // #endregion\r\n\r\n //#region Getters for common fields\r\n // It is possible to optimize getters, by setting some of the values in update method, but it is left this way, so that data is more consistent.\r\n // Otherwise it might be easy to miss some property updating and get wrong data in future.\r\n\r\n private _isSynchronized = true;\r\n /**\r\n * Weather collection is synchronized with term portal collection. If no term collection, value is set to true.\r\n */\r\n get isSynchronized() {\r\n return this._isSynchronized;\r\n }\r\n\r\n /**\r\n * Determines if collections is 'syncable'. Returns true if it is not synced or if synchronization has failed and status is error.\r\n */\r\n private _syncButtonVisible!: boolean;\r\n get syncButtonVisible() { return this._syncButtonVisible; }\r\n /**\r\n * Term collection id. Returns value from term collection or from mt, if term collection not existing.\r\n */\r\n get termId(): string {\r\n return this.termCollection?.id ?? this.mtCollection?.termId as string;\r\n }\r\n\r\n get mtStatus() {\r\n return this.mtCollection?.status;\r\n }\r\n\r\n /**\r\n * Collection name. If has term collection, takes from there. If not, then returns mt collection name.\r\n */\r\n get name() {\r\n return this.termCollection?.name ?? this.mtCollection?.name;\r\n }\r\n\r\n /**\r\n * Entry count from term api.\r\n */\r\n get termEntries() {\r\n return this.termCollection?.entryCount;\r\n }\r\n\r\n /** Checks if has set to default in any scope */\r\n private _default!: boolean;\r\n get default() { return this._default }\r\n\r\n /**\r\n * Status from mt api or custom \"NOT_IN_USE\" status if not imported in mt.s\r\n */\r\n get status() {\r\n return this.mtStatus ?? MtCollectionStatus.NOT_IN_USE;\r\n }\r\n\r\n /**\r\n * Scope can be edited only if has mt collcetion or term collection is being prepared for import.\r\n */\r\n get canEditScope() {\r\n return this.mtCollection || this.default;\r\n }\r\n\r\n get termCount() {\r\n return this.mtCollection?.termCount;\r\n }\r\n\r\n private _isTermPortalCollection!: boolean;\r\n get isTermPortalCollection() { return this._isTermPortalCollection; }\r\n\r\n private _isImporting!: boolean | null;\r\n get isImporting() { return this._isImporting; }\r\n\r\n //#endregion\r\n\r\n constructor(termApiCollection: ITldTermCollection | null, mtCollection: MtCollection | null) {\r\n this.mtCollection = mtCollection;\r\n this.termCollection = termApiCollection;\r\n this.update(null);\r\n }\r\n\r\n /**\r\n * Updates collection with values from new collection.\r\n * @param collection collection from which should be updated.\r\n */\r\n update(collection: CombinedCollection | null) {\r\n if (collection?.termCollection) {\r\n this.termCollection = collection.termCollection;\r\n }\r\n\r\n if (collection?.mtCollection) {\r\n this.mtCollection = collection.mtCollection;\r\n }\r\n\r\n this._isTermPortalCollection = this.mtCollection?.collectionSource === EngineTermCollectionSource.TILDE_TERM ? true : false;\r\n\r\n if (this.mtCollection?.access) {\r\n this.updateEditables(this.mtCollection?.access);\r\n }\r\n\r\n this._isImporting = this.mtCollection && CombinedCollection.importingStatuses.includes(this.mtCollection?.status);\r\n this._default = (this.editables.groupDefault || this.editables.globalDefault) ?? false;\r\n this.updateIsSynchronized();\r\n this.updateTooltipKey();\r\n this.updateSource();\r\n }\r\n\r\n /**\r\n * If some of editables are edited.\r\n *\r\n * if collection not imported and enabled not set, method will return true, because you cannot update collection if it is not imported or is not meant to be imported.\r\n *\r\n * @returns true if collection is edited, false if not.\r\n */\r\n isEdited() {\r\n if ((this.mtCollection?.access?.group?.default !== this.editables.groupDefault)\r\n || (this.mtCollection?.access?.global?.default !== this.editables.globalDefault)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Deletes term collection and its properties.\r\n */\r\n deleteTerms() {\r\n this.termCollection = null;\r\n this.update(null);\r\n }\r\n\r\n\r\n /**\r\n * Deletes mt collection and its properties.\r\n */\r\n deleteMT() {\r\n this.mtCollection = null;\r\n this.update(null);\r\n }\r\n\r\n updateEditables(access: EngineTermCollectionAccess | null) {\r\n if (!access) {\r\n return;\r\n }\r\n\r\n this.editables.globalDefault = access.global?.default;\r\n this.editables.groupDefault = access.group?.default;\r\n }\r\n\r\n //#region Private methods\r\n private updateIsSynchronized() {\r\n let isSynchronized = true;\r\n\r\n const termModified = this.termCollection?.modifyDate;\r\n const lastMtUpdated = this.mtCollection?.lastUpdated;\r\n if (termModified && lastMtUpdated) {\r\n isSynchronized = termModified <= lastMtUpdated;\r\n }\r\n\r\n this._isSynchronized = isSynchronized;\r\n this.lastUpdated = lastMtUpdated ?? termModified;\r\n this._syncButtonVisible = !this.isImporting && (!this.isSynchronized || this.mtStatus === MtCollectionStatus.ERROR);\r\n }\r\n\r\n private updateSource() {\r\n if (this.termCollection) {\r\n this.source = EngineTermCollectionSource.TILDE_TERM;\r\n }\r\n else if (this.mtCollection) {\r\n this.source = EngineTermCollectionSource.FILE;\r\n }\r\n }\r\n\r\n private updateTooltipKey() {\r\n if (this.default) {\r\n this.termTooltipKey = CombinedCollectionTooltipKey.DEFAULT_COLLECTION;\r\n }\r\n else if (this.termCollection?.entryCount === 0) {\r\n this.termTooltipKey = CombinedCollectionTooltipKey.NO_ENTRIES;\r\n }\r\n else {\r\n this.termTooltipKey = null;\r\n }\r\n }\r\n\r\n //#endregion\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TerminologyConfigService } from \"../../config/services\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { Observable, map } from \"rxjs\";\r\nimport { CombinedCollection, ITldTermCollection } from \"../../models\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class TerminologyCollectionService {\r\n get url() {\r\n return `${this.config.termConfig.terminologyPortalUrl}/api/termservice/collection`;\r\n }\r\n\r\n constructor(private readonly config: TerminologyConfigService, private readonly http: HttpClient) {}\r\n\r\n createCollection(defaultLanguages: string[], collectionName: string): Observable<CombinedCollection> {\r\n const params = { name: collectionName, defaultLanguages };\r\n return this.http.post<ITldTermCollection>(this.url, params).pipe(\r\n map((collection) => {\r\n return this.convertToCombinedCollection(collection);\r\n })\r\n );\r\n }\r\n\r\n getCollectionList(): Observable<CombinedCollection[]> {\r\n return this.http.get<ITldTermCollection[]>(this.url).pipe(\r\n map((collections) => {\r\n const converted: CombinedCollection[] = [];\r\n collections.forEach((collection) => {\r\n converted.push(this.convertToCombinedCollection(collection));\r\n });\r\n return converted;\r\n })\r\n );\r\n }\r\n\r\n getEditLink(termId: string, sourceLanguage?: string, targetLanguage?: string): string {\r\n let link = `${this.config.termConfig.terminologyPortalUrl}/collections/${termId}/mt`;\r\n if (sourceLanguage) {\r\n link = `${link}/${sourceLanguage}`;\r\n }\r\n if (targetLanguage) {\r\n link = `${link}/${targetLanguage}`;\r\n }\r\n return link;\r\n }\r\n\r\n private convertToCombinedCollection(collection: ITldTermCollection): CombinedCollection {\r\n // dirty approach, but term portal not returning timezone, but returns dates as UTC\r\n collection.modifyDate = new Date(collection.modifyDate.toString() + \"Z\");\r\n return new CombinedCollection(collection, null);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TerminologyConfigService } from '../../config/services';\r\nimport { AddEngineTermsRequestParams, DefaultCollectionOrderUpdate, EngineTermCollection, EngineTermCollectionList, UpdateEngineTermsRequestParams } from '../../models';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthHeadersHelper } from '../../../helpers';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EngineTermApiService {\r\n baseUrl!: string;\r\n\r\n constructor(\r\n private readonly http: HttpClient,\r\n private readonly config: TerminologyConfigService\r\n ) {\r\n this.baseUrl = this.config?.termConfig?.engineTermUrl as string;\r\n }\r\n\r\n add(engineId: string, params: AddEngineTermsRequestParams) {\r\n const data = new FormData();\r\n data.append(\"collectionId\", params.collectionId);\r\n data.append(\"collectionSource\", params.collectionSource);\r\n if (params.access.global?.default !== undefined) {\r\n data.append(\"access.Global.Default\", params.access.global?.default.toString());\r\n }\r\n if (params.access.group?.default !== undefined) {\r\n data.append(\"access.Group.Default\", params.access.group?.default.toString());\r\n }\r\n return this.http.post<EngineTermCollection>(`${this.baseUrl}/${engineId}/terms`, data);\r\n }\r\n\r\n update(engineId: string, collectionId: string, params: UpdateEngineTermsRequestParams) {\r\n return this.http.put<EngineTermCollection>(`${this.baseUrl}/${engineId}/terms/${collectionId}`, params);\r\n }\r\n\r\n getList(engineId: string): Observable<EngineTermCollectionList> {\r\n return this.http.get<EngineTermCollectionList>(`${this.baseUrl}/${engineId}/terms`, { params: { engineId }, headers: AuthHeadersHelper.getAppIdAuthHeaders(this.config.termConfig.appId ?? '') });\r\n }\r\n\r\n remove(engineId: string, collectionId: string) {\r\n return this.http.delete<EngineTermCollection>(`${this.baseUrl}/${engineId}/terms/${collectionId}`);\r\n }\r\n\r\n order(engineId: string, orderUpdate: DefaultCollectionOrderUpdate): Observable<EngineTermCollectionList> {\r\n return this.http.post<EngineTermCollectionList>(`${this.baseUrl}/${engineId}/terms/order`, orderUpdate);\r\n }\r\n\r\n sync(engineId: string, collectionId: string): Observable<EngineTermCollection> {\r\n return this.http.post<EngineTermCollection>(`${this.baseUrl}/${engineId}/terms/${collectionId}/sync`, {});\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Observable, map, of } from \"rxjs\";\r\nimport { TerminologyConfigService } from \"../../config/services\";\r\nimport { AddEngineTermsRequestParams, CombinedCollection, EngineTermCollection, EngineTermCollectionAccessUpdate, MtCollection, UpdateEngineTermsRequestParams } from \"../../models\";\r\nimport { EngineTermApiService } from \"../engine-term-api/engine-term-api.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class TerminologyApiService {\r\n baseUrl!: string;\r\n\r\n constructor(private readonly config: TerminologyConfigService, private readonly engineTermApi: EngineTermApiService) {\r\n this.baseUrl = this.config?.termConfig?.engineTermUrl as string;\r\n }\r\n\r\n add(engineId: string, collection: CombinedCollection): Observable<CombinedCollection> {\r\n const access: EngineTermCollectionAccessUpdate = {\r\n group: { default: collection.editables.groupDefault as boolean },\r\n };\r\n\r\n if (collection.editables.globalDefault !== undefined) {\r\n access.global = { default: collection.editables.globalDefault }\r\n }\r\n\r\n if (!access.group.default && !access.global?.default) {\r\n access.group.default = false;\r\n }\r\n\r\n if (!collection.mtCollection) {\r\n const params: AddEngineTermsRequestParams = {\r\n collectionId: collection.termId,\r\n collectionSource: collection.source,\r\n access,\r\n };\r\n return this.engineTermApi.add(engineId, params).pipe(map((collection) => this.convertToCombinedCollection(collection)));\r\n } else {\r\n const params: UpdateEngineTermsRequestParams = {\r\n access,\r\n };\r\n return this.engineTermApi.update(engineId, collection.mtCollection.id, params).pipe(map((collection) => this.convertToCombinedCollection(collection)));\r\n }\r\n }\r\n\r\n getList(engineId: string): Observable<CombinedCollection[]> {\r\n return this.engineTermApi.getList(engineId).pipe(\r\n map((collections) => {\r\n const converted: CombinedCollection[] = [];\r\n collections?.termCollections?.forEach((collection) => {\r\n converted.push(this.convertToCombinedCollection(collection));\r\n });\r\n return converted;\r\n })\r\n );\r\n }\r\n\r\n remove(engineId: string, collection: CombinedCollection): Observable<CombinedCollection> {\r\n if (!collection?.mtCollection?.id) {\r\n return of();\r\n }\r\n\r\n return this.engineTermApi.remove(engineId, collection.mtCollection.id).pipe(map((collection) => this.convertToCombinedCollection(collection)));\r\n }\r\n\r\n sync(engineId: string, collection: CombinedCollection): Observable<CombinedCollection> {\r\n if (!collection?.mtCollection?.id) {\r\n return of();\r\n }\r\n\r\n return this.engineTermApi.sync(engineId, collection.mtCollection.id).pipe(\r\n map((updatedCollection) => {\r\n return updatedCollection ? this.convertToCombinedCollection(updatedCollection) : collection;\r\n })\r\n );\r\n }\r\n\r\n private convertToCombinedCollection(collection: EngineTermCollection): CombinedCollection {\r\n const convertedMtCollection: MtCollection = {\r\n id: collection.id,\r\n lastUpdated: collection.externalCollection?.updatedAt ? new Date(collection.externalCollection.updatedAt) : null,\r\n name: collection.name,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n status: collection.status as any,\r\n subStatus: collection.subStatus,\r\n termId: collection.externalCollection.id,\r\n termCount: collection.externalCollection.termCount,\r\n progress: collection.progress,\r\n collectionSource: collection.collectionSource,\r\n access: collection.access,\r\n };\r\n return new CombinedCollection(null, convertedMtCollection);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subject, forkJoin, of, tap } from 'rxjs';\r\nimport { AlertService } from '../../../services';\r\nimport { TerminologyConfigService } from '../../config/services';\r\nimport { EngineTermCollectionSource, MtCollectionStatus } from '../../enums';\r\nimport { CombinedCollection } from '../../models';\r\nimport { TerminologyEngine } from '../../models/terminology-engine.model';\r\nimport { TerminologyApiService } from '../terminology-api/terminology-api.service';\r\nimport { TerminologyCollectionService } from '../terminology-collection/terminology-collection.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TerminologyService {\r\n public engines: { [engineId: string]: TerminologyEngine } = {};\r\n\r\n private retranslateSubject = new Subject<boolean>();\r\n private engineSubject = new BehaviorSubject(this.engines);\r\n private updatedEnginesSubject = new Subject<{ [engineId: string]: TerminologyEngine }>();\r\n\r\n get isAuthenticated() { return this.config.termConfig.isAuth }\r\n get canCreateCollections() { return this.config.termConfig.canCreateCollection }\r\n\r\n public readonly LOCAL_STORAGE_KEY = 'systemLastCollections';\r\n\r\n get hasEditPermissions() {\r\n return (\r\n this.config?.termConfig.isAuth &&\r\n this.canCreateCollections &&\r\n this.config.termConfig.isTermPortalSupported\r\n );\r\n }\r\n\r\n constructor(\r\n private readonly config: TerminologyConfigService,\r\n private readonly alert: AlertService,\r\n private readonly termCollectionApi: TerminologyCollectionService,\r\n private readonly mtApi: TerminologyApiService\r\n ) { }\r\n\r\n getRetranslateSignal(): Observable<boolean> {\r\n return this.retranslateSubject.asObservable();\r\n }\r\n\r\n resetEngines(): void {\r\n this.engines = {};\r\n }\r\n\r\n hasAnyCollections(systemId: string): boolean { return this.engines[systemId]?.collections.size > 0 }\r\n\r\n getEnginesWithSelectedCollectionChange(): Observable<{ [engineId: string]: TerminologyEngine }> {\r\n return this.updatedEnginesSubject.asObservable();\r\n }\r\n\r\n setEngine(\r\n engineId: string,\r\n languages: string[] | null = null,\r\n setSelectedFromLocalStorage = false,\r\n termCollections = true,\r\n mtCollections = true,\r\n selectedCollection?: CombinedCollection,\r\n autoRefresh?: boolean\r\n ) {\r\n const engineExists = this.engines[engineId] ?? null;\r\n\r\n if (!engineExists) {\r\n const newEngine: TerminologyEngine = {\r\n selected: selectedCollection || null,\r\n isImporting: false,\r\n isAnyImporting: false,\r\n hasAnyCollections: false,\r\n isRefreshingCollections: false,\r\n collections: new Set<CombinedCollection>,\r\n refreshMtCollections: mtCollections,\r\n refreshTermCollections: termCollections,\r\n engineLanguages: languages || [],\r\n isSoftAutoRefreshOn: false,\r\n hardAutoRefresh: autoRefresh ?? false,\r\n refreshTimeout: 0\r\n };\r\n\r\n this.engines[engineId] = newEngine;\r\n } else {\r\n engineExists.hardAutoRefresh = autoRefresh ?? false;\r\n }\r\n\r\n return this.loadCollections(engineId, setSelectedFromLocalStorage);\r\n }\r\n\r\n setSelectedCollection(engineId: string, collection: CombinedCollection | null, storeSelectedInLocalStorage: boolean): void {\r\n if (this.engines[engineId]) {\r\n this.engines[engineId].selected = collection;\r\n }\r\n\r\n if (storeSelectedInLocalStorage) {\r\n this.storeSelectedInLocalStorage(engineId);\r\n }\r\n\r\n this.retranslateSubject.next(true);\r\n }\r\n\r\n loadCollections(engineId: string, setSelectedFromLocalStorage?: boolean): Observable<{ [engineId: string]: TerminologyEngine; }> {\r\n // clear timeout since this refresh replaces scheduled\r\n this.clearTimeout(engineId);\r\n\r\n this.engines[engineId] = { ...this.engines[engineId], isRefreshingCollections: true }\r\n\r\n let termResponse: CombinedCollection[];\r\n let mtApiResponse: CombinedCollection[];\r\n\r\n const observables: Observable<CombinedCollection[]>[] = [];\r\n\r\n if (this.engines[engineId].refreshTermCollections) {\r\n observables.push(\r\n this.termCollectionApi\r\n .getCollectionList()\r\n .pipe(tap((response) => (termResponse = response)))\r\n );\r\n }\r\n if (this.engines[engineId].refreshMtCollections) {\r\n observables.push(\r\n this.mtApi\r\n .getList(engineId)\r\n .pipe(tap((response) => (mtApiResponse = response)))\r\n );\r\n }\r\n forkJoin(observables).subscribe({\r\n // do not need response becaue responses are saved in pipe methods\r\n next: () => {\r\n this.engines[engineId].isAnyImporting = false;\r\n // note that termResponse and mtapiresponse gets changed during remove method\r\n this.removeDeleted(termResponse, mtApiResponse, engineId);\r\n\r\n const joined = [];\r\n if (mtApiResponse) {\r\n joined.push(...mtApiResponse);\r\n }\r\n if (termResponse) {\r\n joined.push(...termResponse);\r\n }\r\n\r\n this.addCollections(joined, engineId);\r\n if (setSelectedFromLocalStorage) {\r\n this.setSelectedFromLocalStorage(engineId);\r\n }\r\n this.engines[engineId].isRefreshingCollections = false;\r\n this.scheduleRefresh(engineId, null);\r\n },\r\n error: (error) => {\r\n this.engines[engineId].isRefreshingCollections = false;\r\n // it is enough to show error only in console. No special thing is necessary.\r\n console.error(error);\r\n },\r\n });\r\n\r\n return this.engineSubject.asObservable();\r\n }\r\n\r\n getCollections(): Observable<{ [engineId: string]: TerminologyEngine }> {\r\n return this.engineSubject.asObservable();\r\n }\r\n\r\n startAutoRefresh(engineId: string, languages: string[] | null = null, setSelectedFromLocalStorage = false, termCollections = true, mtCollections = true) {\r\n return this.setEngine(engineId, languages ?? this.engines[engineId]?.engineLanguages, setSelectedFromLocalStorage, termCollections, mtCollections, undefined, true);\r\n }\r\n\r\n stopAutoRefresh(engineId: string) {\r\n this.clearTimeout(engineId);\r\n\r\n if (this.engines[engineId]) {\r\n this.engines[engineId].isSoftAutoRefreshOn = false;\r\n this.engines[engineId].hardAutoRefresh = false;\r\n }\r\n }\r\n\r\n create(\r\n sourceLanguage: string,\r\n targetLanguage: string,\r\n collectionName: string,\r\n engineId: string,\r\n redirectToEdit = true\r\n ) {\r\n return this.termCollectionApi\r\n .createCollection([sourceLanguage, targetLanguage], collectionName)\r\n .pipe(\r\n tap((collection) => {\r\n if (redirectToEdit) {\r\n window.open(\r\n this.termCollectionApi.getEditLink(\r\n collection.termCollection?.id ?? '',\r\n sourceLanguage,\r\n targetLanguage\r\n ),\r\n '_blank'\r\n );\r\n }\r\n\r\n this.engines[engineId]?.collections?.add(collection);\r\n\r\n this.loadCollections(engineId);\r\n })\r\n );\r\n }\r\n\r\n selectedIdForTranslation(engineId: string): string | null {\r\n const selected = this.engines[engineId]?.selected;\r\n if (\r\n selected?.mtCollection &&\r\n (selected.mtCollection.lastUpdated ||\r\n selected.mtCollection.status === MtCollectionStatus.READY)\r\n ) {\r\n return selected.mtCollection.id;\r\n }\r\n return null;\r\n }\r\n\r\n updateIfNecessary(\r\n collection: CombinedCollection,\r\n engineId: string,\r\n isEdited = false\r\n ): Observable<CombinedCollection> {\r\n // collection is not imported and should be attached to engine\r\n if (collection.isEdited() || isEdited) {\r\n return this.mtApi.add(engineId, collection).pipe(\r\n tap((updatedCollection) => {\r\n collection.update(updatedCollection);\r\n })\r\n );\r\n } else {\r\n return of(collection);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n handleAddToEngineError(error: any, engineId: string): void {\r\n this.alert.unhandeledError(error);\r\n this.engines[engineId].selected = null;\r\n }\r\n\r\n sync(\r\n collection: CombinedCollection,\r\n engineId: string\r\n ): Observable<CombinedCollection> {\r\n return this.mtApi.sync(engineId, collection).pipe(\r\n tap((updatedCollection) => {\r\n collection.update(updatedCollection);\r\n })\r\n );\r\n }\r\n\r\n removeMtCollection(collection: CombinedCollection, engineId: string) {\r\n return this.mtApi.remove(engineId, collection).pipe(\r\n tap((response) => {\r\n collection.update(response);\r\n })\r\n );\r\n }\r\n\r\n addToEngineValidation(collection: CombinedCollection): boolean {\r\n if (!collection || !collection.termCollection) {\r\n console.error(\"Trying to attach collection that has no tilde term id.\");\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private clearTimeout(engineId: string) {\r\n if (this.engines[engineId]?.refreshTimeout) {\r\n clearTimeout(this.engines[engineId].refreshTimeout);\r\n this.engines[engineId].refreshTimeout = null;\r\n }\r\n }\r\n\r\n private setSelectedFromLocalStorage(engineId: string) {\r\n // If no collections or selected is already set, it should not be changed from localstorage value. (Usually, localstorage should have the same value).\r\n if (this.engines[engineId].collections?.size === 0 || this.engines[engineId].selected) {\r\n this.updateSelectedCollectionOutsideService();\r\n return;\r\n }\r\n\r\n const storedId = this.readLocalStorage()?.[engineId];\r\n\r\n if (!storedId) {\r\n this.engines[engineId].selected = null;\r\n this.updateSelectedCollectionOutsideService();\r\n return;\r\n }\r\n\r\n const existing = Array.from(this.engines[engineId].collections).find(\r\n (item) => item.mtCollection?.id === storedId || item.termCollection?.id === storedId);\r\n this.engines[engineId].selected = existing as CombinedCollection;\r\n\r\n this.updateSelectedCollectionOutsideService();\r\n }\r\n\r\n\r\n private removeDeleted(termResponse: CombinedCollection[], mtResponse: CombinedCollection[], engineId: string): void {\r\n for (const collection of this.engines[engineId].collections) {\r\n const termExistingIx = CombinedCollection.findExistingIndexFromList(termResponse, collection);\r\n const mtExistingIx = CombinedCollection.findExistingIndexFromList(mtResponse, collection);\r\n\r\n if (termExistingIx === null && mtExistingIx === null) {\r\n this.engines[engineId]?.collections.delete(collection);\r\n\r\n if (this.engines[engineId]?.selected === collection) {\r\n this.engines[engineId].selected = null;\r\n this.updateSelectedCollectionOutsideService();\r\n }\r\n } else {\r\n if (termExistingIx !== null) {\r\n const existingTerm = termResponse[termExistingIx];\r\n collection.update(existingTerm);\r\n termResponse.splice(termExistingIx, 1);\r\n } else {\r\n collection.deleteTerms();\r\n }\r\n\r\n if (mtExistingIx !== null) {\r\n const existingMt = mtResponse[mtExistingIx];\r\n collection.update(existingMt);\r\n mtResponse.splice(mtExistingIx, 1);\r\n } else {\r\n collection.deleteMT();\r\n }\r\n }\r\n }\r\n }\r\n\r\n private addCollections(newCollections: Iterable<CombinedCollection>, engineId: string) {\r\n // sets collection list to this value at the end, so deleted collections are not in the list.\r\n for (const collection of newCollections) {\r\n // User shouldn't see failed collections if he can't retry to import them.\r\n if (!this.hasEditPermissions && collection.mtStatus === MtCollectionStatus.ERROR || collection.mtStatus === MtCollectionStatus.DELETING) {\r\n continue;\r\n }\r\n\r\n if (collection.isImporting) {\r\n this.engines[engineId].isAnyImporting = true;\r\n }\r\n\r\n const existing: CombinedCollection | null = CombinedCollection.findExistingCollectionFromList(this.engines[engineId].collections, collection);\r\n\r\n if (!existing && collection.source === EngineTermCollectionSource.TILDE_TERM) {\r\n const filterByLanguageDirection = this.config.termConfig.filterCollectionsByLanguageDirection;\r\n \r\n let hasLanguages = true;\r\n for (let i = 0; i < this.engines[engineId].engineLanguages.length; i++) {\r\n if (\r\n !collection.termCollection?.languages?.find(\r\n (lang) => filterByLanguageDirection ? lang.id === this.engines[engineId].engineLanguages[i] : this.engines[engineId].engineLanguages.includes(lang.id)\r\n )\r\n ) {\r\n hasLanguages = false;\r\n break;\r\n }\r\n }\r\n\r\n if (!hasLanguages) {\r\n continue;\r\n }\r\n }\r\n\r\n if (!existing) {\r\n this.engines[engineId].collections.add(collection);\r\n } else {\r\n existing.update(collection);\r\n }\r\n }\r\n\r\n this.engines[engineId].hasAnyCollections = this.engines[engineId].collections.size > 0;\r\n\r\n this.engineSubject.next(this.engines);\r\n }\r\n\r\n private scheduleRefresh(engineId: string, timeout?: number | null,) {\r\n // if menu is closed and selected collection is not importing anymore - auto refreshing should be cancelled.\r\n if (\r\n !this.engines[engineId].hardAutoRefresh &&\r\n !this.engines[engineId]?.isImporting &&\r\n this.engines[engineId].isSoftAutoRefreshOn\r\n ) {\r\n this.stopAutoRefresh(engineId);\r\n return;\r\n }\r\n\r\n // if hard auto refresho on, auto refresh should be on. If hard autoreferesh is off , refresh needs to be done only if selected is importing.\r\n if (\r\n this.engines[engineId].hardAutoRefresh ||\r\n (this.engines[engineId] &&\r\n (this.engines[engineId].isSoftAutoRefreshOn || this.engines[engineId].selected?.isImporting))\r\n ) {\r\n const timeoutMs =\r\n timeout ??\r\n (this.engines[engineId].isAnyImporting\r\n ? this.config.termConfig.refreshTimeoutMsWhenImporting\r\n : this.config.termConfig.refreshTimeoutMs);\r\n this.engines[engineId].refreshTimeout = setTimeout(() => {\r\n this.engines[engineId].refreshTimeout = null;\r\n this.loadCollections(engineId);\r\n }, timeoutMs);\r\n }\r\n }\r\n\r\n private storeSelectedInLocalStorage(engineId: string): void {\r\n let localStorageObject = this.readLocalStorage();\r\n\r\n if (!localStorageObject) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n localStorageObject = {} as any;\r\n }\r\n \r\n localStorageObject[engineId] = this.engines[engineId].selected ? this.engines[engineId]?.selected?.mtCollection?.id : null;\r\n \r\n localStorage.setItem(this.LOCAL_STORAGE_KEY, JSON.stringify(localStorageObject));\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private readLocalStorage(): any {\r\n const data = localStorage.getItem(this.LOCAL_STORAGE_KEY) as string;\r\n try {\r\n return JSON.parse(data);\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n private updateSelectedCollectionOutsideService(): void {\r\n this.updatedEnginesSubject.next(this.engines);\r\n }\r\n}\r\n","<ng-container *ngIf=\"collection\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <mat-radio-button\r\n fxFlex\r\n fxLayoutAlign=\"center center\"\r\n [class.mat-mdc-radio-checked]=\"collection.default || collection === selected\"\r\n [disabled]=\"isSelectionDisabled\"\r\n [matTooltip]=\"collection.termTooltipKey ? (tooltipLocalizationKey + collection.termTooltipKey | translate) : ''\"\r\n (click)=\"selectGlossary(collection)\"\r\n >\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\r\n <div class=\"collection-label\">\r\n <span *ngIf=\"!collection.termTooltipKey\" class=\"text-m-semi-bold\" [matTooltip]=\"collection.name ?? ''\">\r\n {{ collection.name }}\r\n </span>\r\n\r\n <span *ngIf=\"collection.termTooltipKey\" class=\"text-m-semi-bold\">\r\n {{ collection.name }}\r\n </span>\r\n </div>\r\n \r\n <span *ngIf=\"collection.default\" class=\"default-badge\" >{{ localizationKey + \"DEFAULT\" | translate }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"showCollectionLanguages\" class=\"collection-languages\">\r\n <ng-container *ngIf=\"collection.termCollection; else currentDirection\">\r\n <span *ngFor=\"let lang of collection.termCollection.languages\">{{lang.id}}</span>\r\n </ng-container>\r\n\r\n <ng-template #currentDirection>\r\n <span>{{sourceLanguageCode}}</span>\r\n <span>{{targetLanguageCode}}</span>\r\n </ng-template>\r\n </div>\r\n \r\n <span *ngIf=\"collection.termCount\" class=\"collection-label-block text-s\">\r\n {{ localizationKey + \"TERMS_IN_USE\" | translate : { termCount: collection.termCount } }}\r\n </span>\r\n <span *ngIf=\"collection.lastUpdated\" class=\"collection-label-block text-s\">\r\n {{ localizationKey + \"LAST_UPDATED\" | translate : { date: collection.lastUpdated | dateAgo } }}\r\n </span>\r\n \r\n <div class=\"collection-label-block collection-status-labels text-s\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"0.5rem\">\r\n <div *ngIf=\"collection.mtStatus && collection.mtStatus === collectionErrorStatus\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"0.25rem\">\r\n <span color=\"accent\" class=\"material-icons collection-list-error\"> error </span>\r\n \r\n <span *ngIf=\"collection.mtCollection?.subStatus === collectionImportingErrorSubStatus\">\r\n {{ localizationKey + \"ERRORS.\" + (collection.mtCollection?.subStatus | uppercase) | translate }}\r\n </span>\r\n </div>\r\n \r\n <span *ngIf=\"collection.isImporting\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"0.5rem\">\r\n <mat-spinner color=\"accent\" diameter=\"20\"> </mat-spinner>\r\n <span>\r\n {{ tooltipLocalizationKey + \"IMPORTING\" | translate }}\r\n </span>\r\n </span>\r\n \r\n <button *ngIf=\"collection.syncButtonVisible\" mat-button color=\"primary\" (click)=\"attach(collection); $event.stopPropagation()\" [matTooltip]=\"tooltipLocalizationKey + 'SYNC' | translate\">\r\n <span fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"text-s\">\r\n <mat-icon class=\"pt-1\">sync</mat-icon>\r\n {{ localizationKey + \"SYNC\" | translate }}\r\n </span>\r\n </button>\r\n </div>\r\n </mat-radio-button>\r\n\r\n <ng-container *ngIf=\"hasEditPermissions\">\r\n <a\r\n class=\"collection-list-edit\"\r\n mat-icon-button\r\n target=\"_blank\"\r\n [matTooltip]=\"tooltipLocalizationKey + 'EDIT' | translate\"\r\n [attr.href]=\"getEditLink(collection)\"\r\n *ngIf=\"collection.termCollection\"\r\n >\r\n <mat-icon class=\"material-icons material-icons-outlined\">edit</mat-icon>\r\n </a>\r\n </ng-container>\r\n </div>\r\n</ng-container>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CombinedCollection } from '../../../../models';\r\nimport { EngineTermCollectionSubStatus, MtCollectionStatus } from '../../../../enums';\r\nimport { TerminologyCollectionService, TerminologyService } from '../../../../services';\r\n\r\n@Component({\r\n selector: 'lib-terminology-collection-card',\r\n templateUrl: './terminology-collection-card.component.html',\r\n styleUrls: ['./terminology-collection-card.component.scss'],\r\n standalone: false\r\n})\r\nexport class TerminologyCollectionCardComponent {\r\n @Input() collection!: CombinedCollection;\r\n @Input() selected!: CombinedCollection | null;\r\n @Input() localizationKey!: string;\r\n @Input() tooltipLocalizationKey!: string;\r\n @Input() sourceLanguageCode!: string;\r\n @Input() engineId!: string;\r\n @Input() targetLanguageCode!: string;\r\n @Input() hasEditPermissions!: boolean;\r\n @Input() showCollectionLanguages!: boolean;\r\n @Output() glossarySelectEvent = new EventEmitter<CombinedCollection>();\r\n\r\n collectionErrorStatus = MtCollectionStatus.ERROR\r\n\r\n collectionImportingErrorSubStatus = EngineTermCollectionSubStatus.ERROR_IMPORTING;\r\n\r\n get isSelectionDisabled(): boolean {\r\n return this.isCollectionDisabled(this.collection);\r\n }\r\n \r\n constructor (private readonly terminologyService: TerminologyService, private readonly terminologyCollection: TerminologyCollectionService) {}\r\n\r\n selectGlossary(collection: CombinedCollection): void {\r\n if (this.isCollectionDisabled(collection)) {\r\n return;\r\n }\r\n\r\n this.glossarySelectEvent.emit(collection);\r\n }\r\n\r\n attach(collection: CombinedCollection): void {\r\n this.terminologyService.sync(collection, this.engineId).subscribe();\r\n }\r\n\r\n getEditLink(collection: CombinedCollection): string {\r\n // Collections with terms that shouldn't be translated.\r\n if (collection.termCollection?.languages && collection.termCollection?.languages.length === 1) {\r\n return this.terminologyCollection.getEditLink(collection.termCollection.id);\r\n }\r\n\r\n // Adds both source and target languages to the collection. \r\n return this.terminologyCollection.getEditLink(collection.termCollection!.id, this.sourceLanguageCode, this.targetLanguageCode);\r\n }\r\n\r\n private isCollectionDisabled(collection: CombinedCollection): boolean {\r\n return collection.termId !== null && collection.termEntries as number <= 0 || collection.default\r\n }\r\n}\r\n","<header class=\"tld-collection-list-header\">\r\n <h1 class=\"term-window-title text-l-semi-bold\">\r\n <span>{{ localizationKey + \"TITLE\" | translate }}</span>\r\n </h1>\r\n <ng-container *ngIf=\"hasAnyCollections\">\r\n <p class=\"term-window-description text-s\">\r\n <span>{{ localizationKey + \"DESCRIPTION\" | translate }}</span>\r\n </p>\r\n </ng-container>\r\n <ng-container *ngIf=\"!hasAnyCollections\">\r\n <p class=\"term-window-unavailable text-xl-semi-bold\">\r\n {{ localizationKey + \"UNAVAILABLE_GLOSSARIES\" | translate }}\r\n </p>\r\n\r\n <p [innerHtml]=\"localizationKey + 'DESCRIPTION_EMPTY' | translate : {\r\n srcLang: system.sourceLanguageCode | languageTranslate,\r\n trgLang: system.targetLanguageCode | languageTranslate\r\n }\" class=\"term-window-description text-m\"></p>\r\n </ng-container>\r\n</header>\r\n<div *ngIf=\"hasAnyCollections\" class=\"tld-collection-list-body\">\r\n <mat-radio-group [attr.aria-label]=\"localizationKey + 'ARIA_LABELS.RADIO_GROUP' | translate\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"none-option\">\r\n <mat-radio-button [class.mat-mdc-radio-checked]=\"!selectedCollection\" (click)=\"selectGlossary(null)\">\r\n <span class=\"text-m-semi-bold\">\r\n {{ localizationKey + \"SELECTED_NONE\" | translate }}\r\n </span>\r\n </mat-radio-button>\r\n </div>\r\n <div class=\"collection\" *ngFor=\"let collection of collections\">\r\n <lib-terminology-collection-card\r\n *ngIf=\"collection.status\"\r\n class=\"collection-card\"\r\n [collection]=\"collection\"\r\n [engineId]=\"system.systemId\"\r\n [selected]=\"selectedCollection\"\r\n [localizationKey]=\"localizationKey\"\r\n [tooltipLocalizationKey]=\"tooltipLocalizationKey\"\r\n [hasEditPermissions]=\"hasEditPermissions\"\r\n [sourceLanguageCode]=\"system.sourceLanguageCode\"\r\n [targetLanguageCode]=\"system.targetLanguageCode\"\r\n [showCollectionLanguages]=\"showCollectionLanguages\"\r\n (glossarySelectEvent)=\"selectGlossary($event)\"\r\n ></lib-terminology-collection-card>\r\n </div>\r\n </mat-radio-group>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\r\nimport { TerminologyService } from \"../../../services\";\r\nimport { CombinedCollection } from \"../../../models\";\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { TerminologyConfigService } from \"../../../config/services\";\r\n\r\n@Component({\r\n selector: \"lib-terminology-collection-list\",\r\n templateUrl: \"./terminology-collection-list.component.html\",\r\n styleUrls: [\"./terminology-collection-list.component.scss\"],\r\n standalone: false\r\n})\r\nexport class TerminologyCollectionListComponent implements OnInit, OnDestroy {\r\n @Input({ required: true }) system!: { systemId: string; sourceLanguageCode: string; targetLanguageCode: string };\r\n @Input() selectedCollection!: CombinedCollection | null;\r\n @Output() glossarySelectEvent = new EventEmitter<CombinedCollection | null>();\r\n\r\n appName!: string;\r\n\r\n collections: CombinedCollection[] = [];\r\n\r\n readonly localizationKey = \"TERM_COLLECTIONS.\";\r\n readonly tooltipLocalizationKey = \"TERM_COLLECTIONS.TOOLTIPS.\";\r\n\r\n get hasAnyCollections() {\r\n return this.terminologyService.hasAnyCollections(this.system.systemId) as boolean;\r\n }\r\n\r\n get hasEditPermissions() {\r\n return this.terminologyService.hasEditPermissions as boolean;\r\n }\r\n\r\n get showCollectionLanguages() {\r\n return !this.config.termConfig.filterCollectionsByLanguageDirection;\r\n }\r\n\r\n private readonly destroy = new Subject();\r\n\r\n constructor(\r\n private readonly terminologyService: TerminologyService,\r\n private readonly config: TerminologyConfigService\r\n ) {\r\n this.appName = this.config.termConfig.appName as string;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.terminologyService.getCollections().pipe(takeUntil(this.destroy)).subscribe((data) => {\r\n const collections: CombinedCollection[] = [];\r\n\r\n if (data[this.system.systemId]?.collections) {\r\n const srcKey = `\"id\":\"${this.system.sourceLanguageCode}\"`;\r\n const trgKey = `\"id\":\"${this.system.targetLanguageCode}\"`;\r\n\r\n data[this.system.systemId]?.collections.forEach((collection) => {\r\n if (JSON.stringify(collection.termCollection?.languages ?? []).includes(srcKey && trgKey) || !collection.isTermPortalCollection || collection?.mtCollection) {\r\n collections.push(collection);\r\n }\r\n })\r\n\r\n this.collections = collections.sort(this.collectionsSortFunction);\r\n }\r\n });\r\n }\r\n\r\n selectGlossary(collection: CombinedCollection | null): void {\r\n this.glossarySelectEvent.emit(collection as CombinedCollection);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy.next(null);\r\n this.destroy.complete();\r\n }\r\n\r\n private collectionsSortFunction = (a: CombinedCollection, b: CombinedCollection) => {\r\n const aName = a.name ?? \"\";\r\n const bName = b.name ?? \"\";\r\n\r\n return Number(a.default) - Number(b.default) || aName.localeCompare(bName);\r\n };\r\n}\r\n","<h1 mat-dialog-title>{{ \"TERM_COLLECTIONS.CREATE_DIALOG.TITLE\" | translate }}</h1>\r\n<tld-close-button class=\"close-button\" mat-dialog-close> </tld-close-button>\r\n<div mat-dialog-content>\r\n <p class=\"main-description\" [innerHtml]=\"'TERM_COLLECTIONS.CREATE_DIALOG.DESCRIPTION_1' | translate : { appName, termPortalName }\"></p>\r\n <p class=\"text-s\" [innerHtml]=\"'TERM_COLLECTIONS.CREATE_DIALOG.DESCRIPTION_2' | translate\"></p>\r\n <form [formGroup]=\"form\">\r\n <mat-form-field appearance=\"outline\" class=\"collection-name-form-field\">\r\n <mat-label>{{ \"TERM_COLLECTIONS.CREATE_DIALOG.COLLECTION_NAME_LABEL\" | translate }} </mat-label>\r\n <input matInput formControlName=\"collectionName\" (keyup.enter)=\"create()\" />\r\n <mat-error *ngIf=\"form.controls['collectionName'].errors\">{{ \"TERM_COLLECTIONS.CREATE_DIALOG.COLLECTION_NAME_ERROR\" | translate : { minLength: minLength, maxLength: maxLength } }}</mat-error>\r\n </mat-form-field>\r\n</form>\r\n</div>\r\n<mat-dialog-actions fxLayout=\"row\" fxLayoutAlign=\"end center\" class=\"glossary-create-actions\">\r\n <button mat-stroked-button mat-dialog-close color=\"accent\">{{ \"TERM_COLLECTIONS.CREATE_DIALOG.CANCEL\" | translate }}</button>\r\n <button mat-flat-button (click)=\"create()\" cdkFocusInitial color=\"accent\" [disabled]=\"form.invalid\">{{ \"TERM_COLLECTIONS.CREATE_DIALOG.CREATE\" | translate }}</button>\r\n</mat-dialog-actions>\r\n","import { Component, Inject, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from \"@angular/material/dialog\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { TerminologyConfigService } from \"../../../../config/services\";\r\n\r\n@Component({\r\n selector: \"lib-terminology-create-collection-dialog\",\r\n templateUrl: \"./terminology-create-collection-dialog.component.html\",\r\n styleUrls: [\"./terminology-create-collection-dialog.component.scss\"],\r\n standalone: false\r\n})\r\nexport class TerminologyCreateCollectionDialogComponent implements OnInit, OnDestroy {\r\n form!: FormGroup;\r\n\r\n collectionName!: string;\r\n minLength!: number;\r\n maxLength!: number;\r\n termPortalName!: string;\r\n appName!: string;\r\n\r\n appNameKey = \"APP_NAME\";\r\n termPortalKey = \"TERM_PORTAL_NAME\";\r\n\r\n private subscription!: Subscription;\r\n\r\n constructor(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private readonly dialogRef: MatDialogRef<any>,\r\n private readonly config: TerminologyConfigService,\r\n private readonly translateService: TranslateService,\r\n private readonly fb: FormBuilder,\r\n @Inject(MAT_DIALOG_DATA) public data: { collectionName: string }\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.form = this.fb.group({\r\n collectionName: [this.data.collectionName, [Validators.minLength(this.minLength), Validators.maxLength(this.maxLength), Validators.required]],\r\n });\r\n\r\n if (this.config.termConfig.collectionNameMinLength && this.config.termConfig.collectionNameMaxLength) {\r\n this.minLength = this.config.termConfig.collectionNameMinLength;\r\n this.maxLength = this.config.termConfig.collectionNameMaxLength;\r\n }\r\n\r\n this.subscription = this.translateService.stream([this.appNameKey, this.termPortalKey]).subscribe((translations) => {\r\n this.appName = translations[this.appNameKey];\r\n if (this.config.termConfig) {\r\n this.termPortalName = translations[this.termPortalKey];\r\n }\r\n });\r\n }\r\n\r\n create(): void {\r\n if (this.form.valid) {\r\n this.dialogRef.close(this.form.value.collectionName);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","<button *ngIf=\"canCreateCollections\" mat-flat-button color=\"accent\" (click)=\"create()\" class=\"term-create-btn\">\r\n {{ \"TERM_COLLECTIONS.CREATE\" | translate }}\r\n</button>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { TerminologyService } from '../../../services';\r\nimport { TerminologyCreateCollectionDialogComponent } from './terminology-create-collection-dialog/terminology-create-collection-dialog.component';\r\nimport { CombinedCollection } from '../../../models';\r\n\r\n@Component({\r\n selector: 'lib-terminology-create-collection',\r\n templateUrl: './terminology-create-collection.component.html',\r\n styleUrls: ['./terminology-create-collection.component.scss'],\r\n standalone: false\r\n})\r\nexport class TerminologyCreateCollectionComponent {\r\n @Input() sourceLanguageCode!: string;\r\n @Input() targetLanguageCode!: string;\r\n\r\n @Output() collectionCreated: EventEmitter<CombinedCollection> = new EventEmitter<CombinedCollection>();\r\n\r\n private readonly createCollectionErrorCode = \"COLLECTION_CREATE\";\r\n\r\n get canCreateCollections() { return this.terminologyService.canCreateCollections; }\r\n\r\n constructor(\r\n private readonly translate: TranslateService,\r\n private readonly dialog: MatDialog,\r\n private readonly terminologyService: TerminologyService\r\n ) { }\r\n\r\n create(): void {\r\n const localizationKey = \"TERM_COLLECTIONS.DEFAULT_COLLECTION_NAME\";\r\n this.translate.get(localizationKey).subscribe((collectionName) => {\r\n const dialogRef = this.dialog.open(TerminologyCreateCollectionDialogComponent, {\r\n minWidth: '300px',\r\n maxWidth: '700px',\r\n data: { collectionName: collectionName }\r\n });\r\n dialogRef.afterClosed().subscribe(collectionName => {\r\n if (!collectionName) {\r\n return;\r\n }\r\n \r\n this.terminologyService.create(this.sourceLanguageCode, this.targetLanguageCode, collectionName, '').subscribe({\r\n next: (collection) => {\r\n this.collectionCreated.emit(collection);\r\n },\r\n error: (err) => {\r\n console.error(err);\r\n const error = { ErrorCode: this.createCollectionErrorCode };\r\n throw error;\r\n }\r\n });\r\n });\r\n });\r\n }\r\n}\r\n","<section class=\"tld-collection-list-wrapper\">\r\n <ng-container *ngIf=\"showGlossaryList; else emptyView\">\r\n <lib-terminology-collection-list (glossarySelectEvent)=\"selectGlossary($event)\" [system]=\"system\" [selectedCollection]=\"selectedCollection\"></lib-terminology-collection-list>\r\n\r\n <footer *ngIf=\"hasEditPermissions\" class=\"tld-collection-list-footer\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"1rem\">\r\n <lib-terminology-create-collection [sourceLanguageCode]=\"sourceLanguageCode\" [targetLanguageCode]=\"targetLanguageCode\"></lib-terminology-create-collection>\r\n \r\n <a *ngIf=\"defaultGlossaryManagementLink\" [attr.href]=\"defaultGlossaryManagementLink\" class=\"default-glossary-management text-m\" target=\"_blank\">\r\n {{ \"TERM_COLLECTIONS.DEFAULT_GLOSSARY_MANAGEMENT\" | translate }}\r\n </a>\r\n </footer>\r\n </ng-container>\r\n <ng-template #emptyView>\r\n <section class=\"term-reader-wrapper\" fxLayout=\"column\" fxLayoutGap=\"16px\">\r\n <div>\r\n <h1 class=\"text-l-semi-bold\">{{ readerLocalizationKey + \"TITLE\" | translate }}</h1>\r\n <p class=\"text-xl-semi-bold glossary-unavailable\">{{ readerLocalizationKey + \"UNAVAILABLE\" | translate }}</p>\r\n <p *ngIf=\"!isAuthenticated; else authEmptyView\" [innerHtml]=\"readerLocalizationKey + 'TEXT' | translate: { signInUrl: signInUrl, startTrialUrl: startTrialUrl }\"></p>\r\n\r\n <ng-template #authEmptyView>\r\n <p>{{ readerLocalizationKey + \"AUTH_UNAVAILABLE\" | translate }}</p>\r\n </ng-template>\r\n </div>\r\n </section>\r\n </ng-template>\r\n</section>\r\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from \"@angular/core\";\r\nimport { TerminologyService } from \"../../services\";\r\nimport { TerminologyConfigService } from \"../../config/services\";\r\nimport { CombinedCollection } from \"../../models\";\r\n\r\n@Component({\r\n selector: \"lib-terminology-panel\",\r\n templateUrl: \"./terminology-panel.component.html\",\r\n styleUrls: [\"./terminology-panel.component.scss\"],\r\n standalone: false\r\n})\r\nexport class TerminologyPanelComponent implements OnInit, OnChanges {\r\n @Input({ required: true }) system!: { systemId: string, sourceLanguageCode: string, targetLanguageCode: string };\r\n @Input({ required: true }) setSelectedFromLocalStorage!: boolean;\r\n @Input() selectedCollection!: CombinedCollection | null;\r\n @Output() glossarySelectEvent = new EventEmitter<CombinedCollection | null>();\r\n \r\n get isAuthenticated() { return this.terminologyService.isAuthenticated }\r\n get hasAnyCollections() { return this.terminologyService.hasAnyCollections(this.system.systemId) }\r\n get hasEditPermissions(){ return this.terminologyService.hasEditPermissions }\r\n get canCreateCollections() { return this.terminologyService.canCreateCollections }\r\n get showGlossaryMenuAdvertisement() { return this.config.termConfig.showGlossaryMenuAdvertisement }\r\n get signInUrl() { return this.config.termConfig.signInUrl }\r\n get startTrialUrl() { return this.config.termConfig.startTrialUrl }\r\n \r\n get showGlossaryList() {\r\n return (this.hasAnyCollections || this.canCreateCollections) && (this.showGlossaryMenuAdvertisement && this.hasAnyCollections || !this.showGlossaryMenuAdvertisement)\r\n }\r\n\r\n sourceLanguageCode!: string;\r\n targetLanguageCode!: string;\r\n\r\n defaultGlossaryManagementLink!: string;\r\n\r\n readonly readerLocalizationKey = \"TERM_COLLECTIONS.READER.\";\r\n\r\n constructor(private readonly terminologyService: TerminologyService, private readonly config: TerminologyConfigService) {}\r\n\r\n private systemId!: string;\r\n\r\n ngOnInit(): void {\r\n this.systemId = this.system.systemId;\r\n this.initializeData(this.system.sourceLanguageCode, this.system.targetLanguageCode, this.system.systemId, this.setSelectedFromLocalStorage);\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes && this.systemId !== this.system.systemId) {\r\n this.systemId = this.system.systemId;\r\n this.initializeData(this.system.sourceLanguageCode, this.system.targetLanguageCode, this.system.systemId, this.setSelectedFromLocalStorage);\r\n }\r\n }\r\n\r\n selectGlossary(collection: CombinedCollection | null): void {\r\n this.glossarySelectEvent.emit(collection);\r\n }\r\n\r\n private initializeData(srcLang: string, trgLang: string, systemId: string, setSelectedFromLocalStorage: boolean): void {\r\n this.sourceLanguageCode = srcLang;\r\n this.targetLanguageCode = trgLang;\r\n \r\n this.terminologyService.setEngine(systemId, [this.sourceLanguageCode, this.targetLanguageCode], setSelectedFromLocalStorage);\r\n \r\n if (this.config.termConfig.defaultGlossaryManagementLink) {\r\n this.defaultGlossaryManagementLink = this.config.termConfig.defaultGlossaryManagementLink(systemId);\r\n }\r\n }\r\n}\r\n","export const COLLECTIONS_MENU = `\r\n<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\r\n\t viewBox=\"0 0 15.9 20.3\" style=\"enable-background:new 0 0 15.9 20.3;\" xml:space=\"preserve\">\r\n<g id=\"Layer_1_00000122707316528403919840000013038058684751510177_\">\r\n</g>\r\n<g id=\"Layer_2_00000016758538246796687430000000356337115434427298_\">\r\n\t<polygon class=\"st0\" points=\"6.4,5.1 7.6,5.1 7,2.9 \t\"/>\r\n\t<path class=\"st0\" d=\"M15.7,0H3C1.3,0,0,1.3,0,2.9v12.2c0.6-0.5,1.4-0.9,2.3-0.9h13.6v-14C15.9,0.1,15.8,0,15.7,0z M9.1,7.2\r\n\t\tC8.9,7.3,8.8,7.3,8.6,7.3S8.2,7.2,8.2,7.1l-0.3-1H6.2l-0.3,1c0,0.2-0.2,0.2-0.4,0.2c-0.2,0-0.4-0.1-0.6-0.2c-0.2,0-0.3-0.2-0.2-0.4\r\n\t\tl1.5-5C6.3,1.3,6.8,1.3,7,1.3s0.7,0,0.8,0.4l1.5,5C9.4,6.9,9.3,7.1,9.1,7.2z M13.2,13.1h-2.9c-0.6,0-0.9-0.6-0.6-1.1l2.1-3.3h-1.5\r\n\t\tC10,8.7,9.7,8.4,9.7,8c0-0.4,0.3-0.7,0.7-0.7h2.8c0.5,0,0.9,0.6,0.6,1.1l-2.1,3.3h1.6c0.4,0,0.7,0.3,0.7,0.7\r\n\t\tC13.9,12.8,13.6,13.1,13.2,13.1z\"/>\r\n</g>\r\n<path class=\"st0\" d=\"M2.3,15.4c-0.4,0-0.8,0.1-1.1,0.4c-0.7,0.4-1.2,1.1-1.2,2c0,1.1,0.8,2.1,1.9,2.2C2,20,2,20,2.1,20\r\n\tc0.1,0,0.1,0,0.2,0c0,0,0,0,0,0c0,0,0,0,0,0h13.4c0.1,0,0.2-0.1,0.2-0.2v-4.4H2.3z\"/>\r\n</svg>\r\n`;\r\n","<div *ngIf=\"!hideGlossaryMenuWithoutCollections || (hideGlossaryMenuWithoutCollections && hasAnyCollections)\" class=\"glossary-menu\" fxLayoutAlign=\"center center\" [ngClass.lt-sm]=\"'tld-term-collection-wrapper-mobile'\" fxLayoutGap=\"8px\">\r\n <span class=\"glossary-label\" fxHide.lt-md>\r\n {{ \"TERM_COLLECTIONS.GLOSSARY\" | translate }}\r\n </span>\r\n\r\n <lib-open-close-button\r\n *ngIf=\"!showMenuIconOnMobile; else defaultLayout\"\r\n class=\"tld-collection-menu-button\"\r\n #state=\"matMenuTrigger\"\r\n [isOpened]=\"state.menuOpen\"\r\n (menuOpened)=\"openMenu()\"\r\n (menuClosed)=\"closeMenu()\"\r\n [matMenuTriggerFor]=\"menu\"\r\n [attr.aria-label]=\"'TERM_COLLECTIONS.ARIA_LABELS.OTHER_COLLECTIONS' | translate\"\r\n [matTooltip]=\"selected?.mtCollection?.name ?? selected?.termCollection?.name ?? ''\"\r\n [disabled]=\"disabled\"\r\n >\r\n <span class=\"selected-collection\">\r\n {{ selected?.mtCollection?.name ?? selected?.termCollection?.name ?? (\"TERM_COLLECTIONS.SELECTED_NONE\" | translate) }}\r\n </span>\r\n <mat-spinner *ngIf=\"selected?.isImporting\" class=\"selected-col-spinner\" color=\"accent\" diameter=\"16\"></mat-spinner>\r\n </lib-open-close-button>\r\n\r\n <ng-template #defaultLayout>\r\n <lib-open-close-button\r\n fxHide.lt-sm\r\n class=\"tld-collection-menu-button\"\r\n #state=\"matMenuTrigger\"\r\n [isOpened]=\"state.menuOpen\"\r\n (menuOpened)=\"openMenu()\"\r\n (menuClosed)=\"closeMenu()\"\r\n [matMenuTriggerFor]=\"menu\"\r\n [attr.aria-label]=\"'TERM_COLLECTIONS.ARIA_LABELS.OTHER_COLLECTIONS' | translate\"\r\n [matTooltip]=\"selected?.mtCollection?.name ?? selected?.termCollection?.name ?? ''\"\r\n [disabled]=\"disabled\"\r\n >\r\n <span class=\"selected-collection\">\r\n {{ selected?.mtCollection?.name ?? selected?.termCollection?.name ?? (\"TERM_COLLECTIONS.SELECTED_NONE\" | translate) }}\r\n </span>\r\n <mat-spinner *ngIf=\"selected?.isImporting\" class=\"selected-col-spinner\" color=\"accent\" diameter=\"16\"></mat-spinner>\r\n </lib-open-close-button>\r\n\r\n <button (menuOpened)=\"openMenu()\" (menuClosed)=\"closeMenu()\" mat-icon-button fxHide.gt-xs #state=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\">\r\n <mat-icon svgIcon=\"collections_menu\" [attr.color]=\"selected ? 'accent' : ''\"></mat-icon>\r\n </button>\r\n </ng-template>\r\n</div>\r\n\r\n<mat-menu #menu=\"matMenu\" class=\"tld-collection-menu\">\r\n <tld-close-button fxHide.gt-xs></tld-close-button>\r\n <div class=\"tld-term-collection\" (click)=\"$event.stopPropagation()\" (keydown)=\"$event.stopPropagation()\">\r\n <lib-terminology-panel (glossarySelectEvent)=\"selectGlossary($event)\" [system]=\"system\" [selectedCollection]=\"selected\" [setSelectedFromLocalStorage]=\"setSelectedFromLocalStorage\"></lib-terminology-panel>\r\n </div>\r\n</mat-menu>\r\n","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { TerminologyService } from './services';\r\nimport { Subject, Subscription, takeUntil } from 'rxjs';\r\nimport { CombinedCollection } from './models';\r\nimport { IconService } from '../services';\r\nimport * as icons from './icons';\r\nimport { TerminologyConfigService } from './config/services';\r\n\r\n@Component({\r\n selector: 'lib-terminology',\r\n templateUrl: './terminology.component.html',\r\n styleUrls: ['./terminology.component.scss'],\r\n standalone: false\r\n})\r\nexport class TerminologyComponent implements OnInit, OnDestroy, OnChanges {\r\n @Input() selectedCollectionId!: string;\r\n @Input({ required: true }) system!: { systemId: string; sourceLanguageCode: string; targetLanguageCode: string };\r\n @Input() disabled!: boolean;\r\n @Input() storeSelectedInLocalStorage = true;\r\n @Input() setSelectedFromLocalStorage = true;\r\n @Input() showMenuIconOnMobile = true;\r\n @Output() glossarySelectEvent = new EventEmitter<CombinedCollection | null>();\r\n @Output() menuToggleEvent = new EventEmitter<boolean>();\r\n\r\n private isRefreshEnabled = false;\r\n private isMenuOpened = false;\r\n\r\n private presetCollectionSubscription!: Subscription;\r\n private readonly destroy = new Subject();\r\n\r\n selected: CombinedCollection | null = null;\r\n\r\n get hideGlossaryMenuWithoutCollections() {\r\n return this.config.termConfig.hideGlossaryMenuWithoutCollections;\r\n }\r\n\r\n get hasAnyCollections() {\r\n return this.terminologyService.hasAnyCollections(this.system.systemId);\r\n }\r\n\r\n constructor(private readonly config: TerminologyConfigService, private readonly terminologyService: TerminologyService, private readonly iconService: IconService) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes) {\r\n this.selected = this.terminologyService.engines[this.system.systemId]?.selected;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.iconService.registerIcons(icons);\r\n\r\n if (this.selectedCollectionId) {\r\n this.presetCollection();\r\n }\r\n\r\n this.watchSystemChanges();\r\n }\r\n\r\n selectGlossary(collection: CombinedCollection | null): void {\r\n this.selected = collection;\r\n\r\n if (!collection?.mtCollection && collection !== null) {\r\n if (this.terminologyService.addToEngineValidation(collection)) {\r\n this.terminologyService.updateIfNecessary(collection, this.system.systemId, true).subscribe({ \r\n next: (res) => {\r\n this.glossarySelectEvent.emit(res);\r\n },\r\n error: (error) => {\r\n this.terminologyService.handleAddToEngineError(error, this.system.systemId)\r\n }\r\n });\r\n }\r\n } else {\r\n this.glossarySelectEvent.emit(collection);\r\n }\r\n \r\n this.terminologyService.setSelectedCollection(this.system.systemId, collection, this.storeSelectedInLocalStorage);\r\n }\r\n\r\n openMenu(): void {\r\n this.menuToggleEvent.emit(true);\r\n\r\n this.isRefreshEnabled = true;\r\n this.isMenuOpened = true;\r\n\r\n this.terminologyService\r\n .startAutoRefresh(this.system.systemId)\r\n .subscribe(() => {\r\n const isBackgroundImportCompleted = \r\n this.isRefreshEnabled && !this.isMenuOpened && !this.selected?.isImporting;\r\n\r\n if ((!this.isRefreshEnabled && !this.selected?.isImporting) || isBackgroundImportCompleted) {\r\n this.stopRefresh();\r\n }\r\n },\r\n );\r\n }\r\n\r\n closeMenu(): void {\r\n this.menuToggleEvent.emit(false);\r\n\r\n this.isMenuOpened = false;\r\n\r\n if (this.selected?.isImporting) {\r\n this.isRefreshEnabled = true;\r\n return;\r\n }\r\n\r\n this.stopRefresh();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.terminologyService.resetEngines(); \r\n this.stopRefresh();\r\n this.destroy.next(null);\r\n this.destroy.complete();\r\n }\r\n\r\n private stopRefresh(): void {\r\n this.terminologyService.stopAutoRefresh(this.system.systemId);\r\n this.isRefreshEnabled = false;\r\n }\r\n\r\n private presetCollection(): void {\r\n this.presetCollectionSubscription = this.terminologyService.getCollections().subscribe((res) => {\r\n res[this.system.systemId]?.collections.forEach((collection) => {\r\n if (collection.mtCollection?.id === this.selectedCollectionId || collection.termId === this.selectedCollectionId) {\r\n this.selected = collection;\r\n\r\n this.terminologyService.setSelectedCollection(this.system.systemId, collection, false);\r\n this.presetCollectionSubscription?.unsubscribe();\r\n }\r\n });\r\n })\r\n }\r\n\r\n private watchSystemChanges(): void {\r\n this.terminologyService.getEnginesWithSelectedCollectionChange()\r\n .pipe(takeUntil(this.destroy))\r\n .subscribe((res) => {\r\n if (res[this.system.systemId]) {\r\n this.selected = res[this.system.systemId].selected;\r\n } \r\n })\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n provideHttpClient,\r\n withInterceptorsFromDi,\r\n} from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\n\r\nimport { CloseButtonModule } from '../close-button';\r\nimport { OpenCloseButtonModule } from '../open-close-button';\r\n\r\nimport { DateAgoModule, LanguageTranslateModule } from '../pipes';\r\n\r\nimport { TerminologyCollectionCardComponent } from './components/terminology-panel/terminology-collection-list/terminology-collection-card/terminology-collection-card.component';\r\nimport { TerminologyCollectionListComponent } from './components/terminology-panel/terminology-collection-list/terminology-collection-list.component';\r\nimport { TerminologyCreateCollectionDialogComponent } from './components/terminology-panel/terminology-create-collection/terminology-create-collection-dialog/terminology-create-collection-dialog.component';\r\nimport { TerminologyCreateCollectionComponent } from './components/terminology-panel/terminology-create-collection/terminology-create-collection.component';\r\nimport { TerminologyPanelComponent } from './components/terminology-panel/terminology-panel.component';\r\nimport { TerminologyComponent } from './terminology.component';\r\n\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n@NgModule({\r\n declarations: [\r\n TerminologyComponent,\r\n TerminologyPanelComponent,\r\n TerminologyCreateCollectionComponent,\r\n TerminologyCreateCollectionDialogComponent,\r\n TerminologyCollectionListComponent,\r\n TerminologyCollectionCardComponent,\r\n ],\r\n exports: [TerminologyComponent, TerminologyCreateCollectionComponent],\r\n imports: [\r\n CommonModule,\r\n OpenCloseButtonModule,\r\n TranslateModule,\r\n FlexLayoutModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n CloseButtonModule,\r\n DateAgoModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n MatMenuModule,\r\n MatRadioModule,\r\n MatDialogModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n LanguageTranslateModule,\r\n ],\r\n providers: [provideHttpClient(withInterceptorsFromDi())],\r\n})\r\nexport class TerminologyModule {}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Voice } from '../models/voice.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TTSApiService {\r\n readonly #http = inject(HttpClient);\r\n\r\n play(text: string, voice: Voice): Observable<Blob> {\r\n return this.#http.get(\r\n `https://services.tilde.com/service/tts?system=${voice.voice}&text=${text}`,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n}\r\n","<div [ngClass.lt-md]=\"'mobile'\" class=\"text-to-speech-wrapper\">\r\n <mat-form-field appearance=\"outline\" color=\"accent\">\r\n <mat-label>{{\"selectVoice\" | translate }}</mat-label>\r\n <mat-select [(value)]=\"selected\">\r\n <mat-option *ngFor=\"let voice of voices; let i = index\" [value]=\"voice\">\r\n {{voice.voiceName}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <div class=\"text-to-speech-textarea-wrapper\">\r\n <textarea [(ngModel)]=\"text\" class=\"text-to-speech-textarea\" [placeholder]=\"'placeholder' | translate\"></textarea>\r\n <div [class.text-overflow]=\"hasOverflow\" class=\"text-to-speech-characters\">\r\n {{text?.length ?? 0}}/{{maxCharLength}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-to-speech-actions\">\r\n <div [matTooltip]=\"!text ? ('playDisabled' | translate) : ''\">\r\n <button [matTooltip]=\"(isPlaying ? 'stop' : 'play') | translate\" [disabled]=\"!text || isLoading\" (click)=\"togglePlay()\" mat-icon-button>\r\n <mat-icon *ngIf=\"!isLoading\"> {{ isPlaying ? 'stop' : 'volume_up' }} </mat-icon>\r\n <mat-spinner *ngIf=\"isLoading\" [diameter]=\"15\"></mat-spinner>\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, inject, Input, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatIconButton } from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { TTSApiService } from './services/tts-api.service';\r\nimport { finalize } from 'rxjs';\r\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { Voice } from './models/voice.model';\r\n\r\n@Component({\r\n selector: 'lib-text-to-speech',\r\n imports: [\r\n CommonModule,\r\n MatIconButton,\r\n MatIcon,\r\n FormsModule,\r\n MatProgressSpinner,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatSelectModule,\r\n FlexLayoutModule,\r\n TranslateModule\r\n ],\r\n templateUrl: './text-to-speech.component.html',\r\n styleUrl: './text-to-speech.component.scss'\r\n})\r\nexport class TextToSpeechComponent implements OnInit {\r\n @Input() maxCharLength: number = 1000;\r\n @Input() voices!: Voice[];\r\n\r\n text!: string;\r\n previousText!: string;\r\n previousVoice!: string;\r\n audio!: HTMLAudioElement;\r\n isLoading!: boolean;\r\n isPlaying!: boolean;\r\n \r\n selected!: Voice;\r\n\r\n get hasOverflow() {\r\n const textarea = document.querySelector('textarea') as HTMLTextAreaElement;\r\n return textarea?.clientHeight < textarea?.scrollHeight ? true : false\r\n }\r\n\r\n readonly #TTSApiService = inject(TTSApiService);\r\n\r\n ngOnInit(): void {\r\n this.selected = this.voices[0];\r\n }\r\n\r\n togglePlay(): void {\r\n if (this.isPlaying) {\r\n this.stop();\r\n return;\r\n }\r\n\r\n this.isLoading = true;\r\n\r\n const text = this.text.length > this.maxCharLength ? this.text.substring(0, this.maxCharLength) : this.text;\r\n\r\n if ((this.audio && text === this.previousText) && (this.selected.voice === this.previousVoice)) {\r\n this.audio.play();\r\n this.isPlaying = true;\r\n this.isLoading = false;\r\n return;\r\n }\r\n\r\n this.#TTSApiService\r\n .play(text, this.selected)\r\n .pipe(finalize(() => { this.isLoading = false }))\r\n .subscribe({\r\n next: (res) => {\r\n this.previousText = text;\r\n this.previousVoice = this.selected.voice;\r\n const audioUrl = URL.createObjectURL(res);\r\n this.audio = new Audio(audioUrl);\r\n this.audio.play();\r\n\r\n this.isPlaying = true;\r\n\r\n this.audio.onended = () => {\r\n URL.revokeObjectURL(audioUrl);\r\n this.isPlaying = false;\r\n };\r\n },\r\n });\r\n }\r\n\r\n stop(): void {\r\n if (this.audio) {\r\n this.audio.pause();\r\n this.audio.currentTime = 0;\r\n this.isPlaying = false;\r\n }\r\n }\r\n}\r\n","export enum LLMActions {\r\n SUMMARY = 'SUMMARY',\r\n REPHRASE = 'REPHRASE'\r\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport { DOMService } from \"../../services\";\r\n\r\nexport class PlausibleHelper {\r\n /**\r\n * Adds plausible for selected domain and adds additional script for custom event (goal) triggering\r\n * @param domain domain that is registered in your plausible account\r\n * @returns\r\n */\r\n static addPlausible(domain: string) {\r\n const domService = new DOMService();\r\n const windowObj: any = domService.window;\r\n if (!windowObj || !domain) {\r\n return;\r\n }\r\n\r\n const plausibleSrc = \"https://plausible.io/js/plausible.js\";\r\n const script = document.createElement(\"script\");\r\n script.src = plausibleSrc;\r\n script.setAttribute(\"data-domain\", domain);\r\n document.head.append(script);\r\n\r\n // Add plausible custom event functionality https://plausible.io/docs/custom-event-goals#code-example-for-tracking-link-clicks\r\n windowObj.plausible = windowObj.plausible || ((...params: any) => { (windowObj.plausible.q = windowObj.plausible.q || []).push(params) })\r\n }\r\n\r\n /**\r\n * Emits custom plausible event\r\n * @param id plausible event id that should be the same as registered in plausible\r\n * @param properties an object with custom properties for the event\r\n * @returns\r\n */\r\n static customEvent(id: string, properties?: any) {\r\n const windowObj: any = window;\r\n if (!windowObj?.plausible) {\r\n return;\r\n }\r\n windowObj.plausible(id, { props: properties });\r\n }\r\n}\r\n","import { Directive, HostListener, Input } from '@angular/core';\r\nimport { PlausibleEvent } from './models';\r\nimport { PlausibleHelper } from './plausible.helper';\r\n\r\n@Directive({\r\n selector: '[libPlausibleEvent]',\r\n standalone: false\r\n})\r\nexport class PlausibleEventDirective {\r\n private id = \"\";\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private properties: any = null;\r\n /** Plausible event id. */\r\n @Input() set libPlausibleEvent(value: PlausibleEvent | undefined) {\r\n if (!value) {\r\n return;\r\n }\r\n this.id = value.eventId;\r\n\r\n if (value.properties) {\r\n this.properties = {}\r\n value.properties.forEach(item => this.properties[item.key] = item.value);\r\n }\r\n\r\n }\r\n\r\n @HostListener(\"click\") onClick() {\r\n if (this.id.length) {\r\n PlausibleHelper.customEvent(this.id, this.properties);\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PlausibleEventDirective } from './plausible-event.directive';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n PlausibleEventDirective\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n PlausibleEventDirective\r\n ]\r\n})\r\nexport class PlausibleModule { }\r\n","export enum LLMWritingStyle {\r\n GENERAL = 'General',\r\n PROFESSIONAL = 'Professional',\r\n ACADEMIC = 'Academic'\r\n}","import { InjectionToken } from \"@angular/core\";\r\nimport { LLMConfiguration } from \"./llm-configuration.model\";\r\n\r\nexport const LLM_CONFIGURATION_TOKEN = new InjectionToken<LLMConfiguration>('LLM_CONFIGURATION_TOKEN');\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { QuotaService, QuotaType } from '@tilde-nlp/ngx-services';\r\nimport { catchError, map, Observable, of } from 'rxjs';\r\nimport { NotificationMessageType } from '../../notification-message/enums/notification-message-type.enum';\r\nimport { NotificationMessage } from '../../notification-message/interfaces/notification-message.model';\r\nimport { LLM_CONFIGURATION_TOKEN } from '../models';\r\nimport { LLMActions } from '../models/llm-actions.enum';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LLMHelperService {\r\n readonly llmConfiguration = inject(LLM_CONFIGURATION_TOKEN);\r\n readonly trialRequestCount = 15;\r\n\r\n private readonly LLMQuotaLocalStorageKey = 'LLM_QUOTA';\r\n\r\n constructor(private readonly quotaService: QuotaService) {\r\n }\r\n\r\n /**\r\n * Returns remaining quota from API. If quota is missing, daily limit is being used from local storage.\r\n */\r\n getRemainingQuota(decrease?: boolean): Observable<number> {\r\n if (this.llmConfiguration.useLocalQuota) {\r\n return of(this.setQuotaLocalStorageUsage(decrease));\r\n }\r\n\r\n return this.quotaService.getQuotaUsage().pipe(\r\n map((response) => {\r\n const quota = response.usage.find((item) => item.quotaType === QuotaType.LLM_REQUESTS || item.quotaType === QuotaType.LEGACY_LLM_REQUESTS);\r\n\r\n if (!quota) {\r\n return this.setQuotaLocalStorageUsage(decrease);\r\n }\r\n\r\n return quota.quotaRemaining;\r\n }), catchError(() => {\r\n return of(this.setQuotaLocalStorageUsage(decrease))\r\n })\r\n )\r\n }\r\n\r\n getExceededLimitMessage(totalSymbols: number): NotificationMessage {\r\n return {\r\n type: NotificationMessageType.WARNING,\r\n body: 'ERRORS.MAX_CHAR_LENGTH',\r\n localizationParams: {\r\n maxCharLength: this.llmConfiguration.maxCharLength,\r\n totalSymbols: totalSymbols\r\n },\r\n };\r\n }\r\n\r\n getReachedQuotaMessage(): NotificationMessage {\r\n return {\r\n type: NotificationMessageType.ERROR,\r\n body: 'LLM.ERRORS.QUOTA_LIMIT_REACHED',\r\n localizationParams: {\r\n subscriptionUrl: this.llmConfiguration.subscriptionUrl,\r\n },\r\n };\r\n }\r\n\r\n getDefaultErrorMessage(): NotificationMessage {\r\n return {\r\n type: NotificationMessageType.ERROR,\r\n body: 'LLM.ERRORS.DEFAULT',\r\n localizationParams: {\r\n supportEmail: this.llmConfiguration.supportEmail\r\n }\r\n }\r\n }\r\n\r\n getRequestTimeoutMessage(action: LLMActions): NotificationMessage {\r\n return {\r\n type: NotificationMessageType.ERROR,\r\n body: `LLM.ERRORS.${action}_REQUEST_TIMEOUT`,\r\n localizationParams: {\r\n supportEmail: this.llmConfiguration.supportEmail\r\n }\r\n }\r\n }\r\n\r\n private setQuotaLocalStorageUsage(decrease?: boolean): number {\r\n const localStorageObj = localStorage.getItem(this.LLMQuotaLocalStorageKey);\r\n const currentDate = new Date();\r\n let trialQuota = {\r\n remainingQuota: this.trialRequestCount,\r\n lastUsedAt: currentDate\r\n };\r\n\r\n if (localStorageObj) {\r\n const parsedObj = JSON.parse(localStorageObj);\r\n trialQuota = parsedObj;\r\n\r\n const lastUsedDate = new Date(trialQuota.lastUsedAt);\r\n\r\n // Checking if the last used date is from a different day than today\r\n if (lastUsedDate.getDate() !== currentDate.getDate() || lastUsedDate.getMonth() !== currentDate.getMonth() || lastUsedDate.getFullYear() !== currentDate.getFullYear()) {\r\n // Reseting quota for the new day\r\n trialQuota.remainingQuota = this.trialRequestCount;\r\n }\r\n\r\n if (decrease) {\r\n trialQuota.remainingQuota -= 1;\r\n }\r\n }\r\n\r\n trialQuota.lastUsedAt = currentDate;\r\n\r\n localStorage.setItem(this.LLMQuotaLocalStorageKey, JSON.stringify(trialQuota));\r\n\r\n return trialQuota.remainingQuota;\r\n }\r\n}\r\n","import { Clipboard } from '@angular/cdk/clipboard';\r\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { debounceTime, fromEvent, Subject, takeUntil, tap } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-llm-textarea',\r\n templateUrl: './llm-textarea.component.html',\r\n styleUrls: ['./llm-textarea.component.scss'],\r\n standalone: false\r\n})\r\nexport class LLMTextareaComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit {\r\n @ViewChild('textarea') textarea!: ElementRef;\r\n @Input() text!: string;\r\n @Input() disabled!: boolean;\r\n @Input() actionButtonsDisabled!: boolean;\r\n @Output() textEditEvent = new EventEmitter();\r\n @Output() dislikeEvent = new EventEmitter();\r\n @Output() copyEvent = new EventEmitter();\r\n\r\n textareaControl!: FormControl;\r\n\r\n private readonly destroy = new Subject();\r\n\r\n constructor (private readonly clipboard: Clipboard) {}\r\n\r\n ngOnInit(): void {\r\n this.textareaControl = new FormControl(this.text);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n fromEvent<KeyboardEvent>(this.textarea.nativeElement, 'keyup').pipe(\r\n tap((event) => {\r\n if (event.ctrlKey && event.key === 'c') {\r\n this.copyEvent.emit();\r\n }\r\n }),\r\n debounceTime(300),\r\n takeUntil(this.destroy)\r\n ).subscribe(() => {\r\n this.textEditEvent.emit(this.textareaControl.value);\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes && changes['disabled']) {\r\n this.disabled ? this.textareaControl?.disable() : this.textareaControl?.enable();\r\n }\r\n\r\n if (changes && changes['text']) {\r\n this.textareaControl = new FormControl(this.text);\r\n }\r\n }\r\n\r\n dislike(): void {\r\n this.dislikeEvent.emit();\r\n }\r\n\r\n copy(): void {\r\n this.clipboard.copy(this.textareaControl.value);\r\n this.copyEvent.emit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy.next(null);\r\n this.destroy.complete();\r\n }\r\n}\r\n","<div [ngClass.gt-lg]=\"'desktop'\" class=\"llm-wrapper\">\r\n <div class=\"llm-textarea-wrapper\">\r\n <textarea\r\n #textarea\r\n class=\"llm-textarea\"\r\n [formControl]=\"textareaControl\"\r\n >\r\n </textarea>\r\n\r\n <div class=\"llm-textarea-actions\">\r\n <mat-icon [matTooltip]=\"'LLM.EU_DATA_TOOLTIP' | translate\" class=\"material-icons-outlined llm-eu-data-tooltip\"> gpp_maybe </mat-icon>\r\n\r\n <div>\r\n <button [matTooltip]=\"'TOOLTIPS.DISLIKE' | translate\" (click)=\"dislike()\" mat-icon-button [disabled]=\"actionButtonsDisabled || !textareaControl.value\">\r\n <mat-icon class=\"material-icons-outlined copy\"> thumb_down </mat-icon>\r\n </button>\r\n \r\n <button\r\n mat-icon-button\r\n [disabled]=\"actionButtonsDisabled || !textareaControl.value\"\r\n [matTooltip]=\"'TOOLTIPS.COPY' | translate\"\r\n (click)=\"copy()\"\r\n >\r\n <mat-icon class=\"material-icons-outlined dislike\"> content_copy </mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","<h1 mat-dialog-title>{{ localizationKey + \"TITLE\" | translate }}</h1>\r\n<div mat-dialog-content>\r\n <p [innerHTML]=\"localizationKey + 'DESCRIPTION' | translate\"></p>\r\n\r\n <lib-tld-notification-message *ngFor=\"let message of messages\" [message]=\"message\" (closeClicked)=\"closeMessage(message)\"></lib-tld-notification-message>\r\n\r\n <mat-form-field *ngIf=\"showUseCase\" color=\"accent\" class=\"w-full llm-writing-style-select\" appearance=\"outline\">\r\n <mat-label>{{ 'LLM.USE_CASES_LABEL' | translate }}</mat-label>\r\n <mat-select [disabled]=\"isLoading\" [(ngModel)]=\"selectedUseCase\">\r\n @for (useCase of useCases; track $index) {\r\n\r\n <mat-option [value]=\"useCase\">\r\n {{ 'LLM.USE_CASE.' + (useCase | uppercase) | translate }}\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n\r\n\r\n <lib-llm-textarea [class.rephrase]=\"llmActionType === llmActions.REPHRASE\" [text]=\"editedText !== '' ? editedText : initialText\" [disabled]=\"isLoading || !quotaLeft\" [actionButtonsDisabled]=\"!isEdited\" (textEditEvent)=\"textEditEvent($event)\" (copyEvent)=\"copyPlausibleEvent()\" (dislikeEvent)=\"dislikePlausibleEvent()\"></lib-llm-textarea>\r\n</div>\r\n<div class=\"llm-actions-wrapper\" mat-dialog-actions>\r\n <div *ngIf=\"remainingQuotaMessageVisible\" class=\"quota-left-message\" [innerHTML]=\"localizationKey + 'LIMIT' | translate: { limit: quotaLeft, subscriptionUrl: subscriptionUrl }\"></div>\r\n\r\n <div [class.w-full]=\"!remainingQuotaMessageVisible\" class=\"llm-actions\">\r\n <button *ngIf=\"isLoading; else closeButton\" mat-button color=\"accent\" (click)=\"cancel()\">\r\n {{ localizationKey + \"CANCEL\" | translate }}\r\n </button>\r\n\r\n <ng-template #closeButton>\r\n <button mat-button color=\"accent\" [mat-dialog-close]=\"null\">\r\n {{ localizationKey + \"CLOSE\" | translate }}\r\n </button>\r\n </ng-template>\r\n\r\n <button\r\n mat-flat-button\r\n color=\"accent\"\r\n (click)=\"getEditedText()\"\r\n [disabled]=\"isDisabled\"\r\n >\r\n <span *ngIf=\"llmActionType === llmActions.SUMMARY; else rephraseAction\">\r\n {{\r\n (!isSummarized\r\n ? \"LLM.SUMMARY_MODAL.ACTION\"\r\n : \"LLM.SUMMARY_MODAL.REGENERATE\"\r\n ) | translate\r\n }}\r\n </span>\r\n\r\n <ng-template #rephraseAction>\r\n {{ localizationKey + \"ACTION\" | translate }}\r\n </ng-template>\r\n <mat-spinner *ngIf=\"isLoading\" [diameter]=\"20\" color=\"primary-accent-darker\"></mat-spinner>\r\n </button>\r\n </div>\r\n</div>\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatSelectChange } from '@angular/material/select';\r\nimport { LLMRephraseUseCase, LLMService, LLMSummaryUseCase } from '@tilde-nlp/ngx-services';\r\nimport { Subscription, finalize } from 'rxjs';\r\nimport { ERROR_CODES } from '../../../constants';\r\nimport { NotificationMessage } from '../../../notification-message';\r\nimport { PlausibleHelper } from '../../../analytics/plausible';\r\nimport { LLMActions } from '../../models/llm-actions.enum';\r\nimport { LLMData } from '../../models/llm-data.model';\r\nimport { LLMWritingStyle } from '../../models/llm-writing-style.enum';\r\nimport { LLMHelperService } from '../../services/llm-helper.service';\r\n\r\n@Component({\r\n selector: 'lib-llm-textarea-with-actions',\r\n templateUrl: './llm-textarea-with-actions.component.html', \r\n styleUrls: ['./llm-textarea-with-actions.component.scss'],\r\n standalone: false\r\n})\r\nexport class LLMTextareaWithActionsComponent implements OnInit {\r\n isLoading!: boolean;\r\n isSummarized!: boolean;\r\n isEdited!: boolean;\r\n remainingQuotaMessageVisible!: boolean;\r\n quotaLeft!: number;\r\n maxCharLength!: number;\r\n subscriptionUrl!: string;\r\n previousWritingStyle!: LLMWritingStyle;\r\n selectedWritingStyle = LLMWritingStyle.GENERAL;\r\n\r\n reachedQuotaMessage!: NotificationMessage;\r\n exceededLimitMessage!: NotificationMessage;\r\n requestTimeoutMessage!: NotificationMessage;\r\n defaultErrorMessage!: NotificationMessage;\r\n\r\n subscription!: Subscription;\r\n\r\n initialText!: string;\r\n editedText = '';\r\n manuallyEditedText = '';\r\n\r\n localizationKey!: string;\r\n llmActionType!: LLMActions;\r\n selectedUseCase!: LLMSummaryUseCase | LLMRephraseUseCase;\r\n\r\n private savedRephrasings: { style: LLMWritingStyle, text: string }[] = [];\r\n\r\n readonly llmActions = LLMActions;\r\n readonly writingStyles = Object.values(LLMWritingStyle);\r\n useCases: LLMSummaryUseCase[] | LLMRephraseUseCase[] = [];\r\n\r\n readonly messages: NotificationMessage[] = [];\r\n\r\n showUseCase = false;\r\n\r\n get isDisabled() {\r\n return this.isLoading || !this.initialText || this.quotaLeft < 1;\r\n }\r\n\r\n constructor(\r\n private readonly llmService: LLMService,\r\n private readonly llmHelperService: LLMHelperService,\r\n @Inject(MAT_DIALOG_DATA) private readonly data: LLMData\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.setInitialText();\r\n if(this.llmActionType === LLMActions.REPHRASE) {\r\n this.useCases = this.data.rephraseUseCases ?? Object.values(LLMRephraseUseCase) as LLMRephraseUseCase[];\r\n this.selectedUseCase = this.useCases[0];\r\n }\r\n else if(this.llmActionType === LLMActions.SUMMARY) {\r\n this.useCases = this.data.summaryUseCases ?? Object.values(LLMSummaryUseCase) as LLMSummaryUseCase[];\r\n this.selectedUseCase = LLMSummaryUseCase.General;\r\n }\r\n\r\n this.showUseCase = (this.llmActionType=== LLMActions.REPHRASE && this.data.showUseCaseRephrase) || (this.llmActionType === LLMActions.SUMMARY && this.data.showUseCaseSummary);\r\n }\r\n\r\n closeMessage(msg: NotificationMessage): void {\r\n const index = this.messages?.findIndex((message) => JSON.stringify(message) === JSON.stringify(msg));\r\n\r\n if (index || index === 0) {\r\n this.messages.splice(index, 1);\r\n }\r\n }\r\n\r\n checkRephrasedTextSaves(event: MatSelectChange): void {\r\n if (event.value !== this.selectedWritingStyle) {\r\n this.previousWritingStyle = this.selectedWritingStyle;\r\n this.selectedWritingStyle = event.value;\r\n }\r\n\r\n const selectedWritingStyleSave = this.savedRephrasings.find((rephrasing) => rephrasing.style === this.selectedWritingStyle);\r\n const previousWritingStyleSave = this.savedRephrasings.find((save) => save.style === this.previousWritingStyle);\r\n\r\n if (previousWritingStyleSave) {\r\n previousWritingStyleSave.text = this.editedText !== '' ? this.editedText : this.initialText;\r\n } else {\r\n this.savedRephrasings.push({ style: this.previousWritingStyle, text: this.editedText !== '' ? this.editedText : this.initialText });\r\n }\r\n\r\n this.editedText = selectedWritingStyleSave?.text ?? this.initialText;\r\n this.manuallyEditedText = '';\r\n\r\n this.checkTextLimit();\r\n }\r\n\r\n getEditedText(): void {\r\n this.isLoading = true;\r\n\r\n if (this.llmActionType === LLMActions.REPHRASE) {\r\n this.writingStylePlausibleEvent();\r\n } else {\r\n this.summaryPlausibleEvent();\r\n }\r\n\r\n this.subscription = this.getRequest();\r\n }\r\n\r\n cancel(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n textEditEvent(text: string): void {\r\n this.manuallyEditedText = text;\r\n this.initialText = text;\r\n this.editedText = '';\r\n\r\n this.checkTextLimit();\r\n }\r\n\r\n copyPlausibleEvent(): void {\r\n PlausibleHelper.customEvent(this.llmActionType.toLowerCase(), { action: 'copy' });\r\n }\r\n\r\n dislikePlausibleEvent(): void {\r\n PlausibleHelper.customEvent(this.llmActionType.toLowerCase(), { action: 'dislike' });\r\n }\r\n\r\n private setInitialText() {\r\n this.data.text.subscribe((text) => {\r\n this.initialText = text;\r\n this.llmActionType = this.data.action;\r\n this.localizationKey = `LLM.${this.llmActionType}_MODAL.`\r\n this.subscriptionUrl = this.llmHelperService.llmConfiguration.subscriptionUrl;\r\n this.maxCharLength = this.llmHelperService.llmConfiguration.maxCharLength;\r\n\r\n this.refreshQuota();\r\n })\r\n }\r\n\r\n private checkTextLimit(): void {\r\n const limit = this.maxCharLength;\r\n const texts = [this.initialText, this.manuallyEditedText, this.editedText];\r\n const longestText = this.editedText && !this.manuallyEditedText ? this.editedText : texts.reduce((a, b) => a.length > b.length ? a : b);\r\n\r\n if (longestText.length > limit) {\r\n if (this.exceededLimitMessage) {\r\n this.closeMessage(this.exceededLimitMessage);\r\n }\r\n\r\n this.exceededLimitMessage = this.llmHelperService.getExceededLimitMessage(longestText.length);\r\n this.messages.push(this.exceededLimitMessage)\r\n return;\r\n }\r\n\r\n this.closeMessage(this.exceededLimitMessage);\r\n }\r\n\r\n private writingStylePlausibleEvent(): void {\r\n PlausibleHelper.customEvent(this.llmActionType.toLowerCase(), { writingStyle: this.selectedWritingStyle });\r\n }\r\n\r\n private summaryPlausibleEvent(): void {\r\n PlausibleHelper.customEvent(this.llmActionType.toLowerCase(), { action: 'summary' });\r\n }\r\n\r\n private refreshQuota(decrease?: boolean): void {\r\n this.llmHelperService.getRemainingQuota(decrease).subscribe((remainingQuota) => {\r\n this.quotaLeft = remainingQuota;\r\n this.setQuotaMessage();\r\n })\r\n }\r\n\r\n private setQuotaMessage(): void {\r\n if (this.quotaLeft <= this.llmHelperService.trialRequestCount) {\r\n this.remainingQuotaMessageVisible = true;\r\n }\r\n\r\n if (this.quotaLeft < 1) {\r\n this.reachedQuotaMessage = this.llmHelperService.getReachedQuotaMessage();\r\n this.messages.push(this.reachedQuotaMessage);\r\n }\r\n }\r\n\r\n private getRequest(): Subscription {\r\n let text =\r\n this.manuallyEditedText !== ''\r\n ? this.manuallyEditedText\r\n : this.initialText;\r\n\r\n if (text.length > this.maxCharLength) {\r\n text = text.substring(0, this.maxCharLength);\r\n }\r\n\r\n const method =\r\n this.llmActionType === LLMActions.REPHRASE\r\n ? this.llmService.rephrase({ text: text, language: this.data.language, style: this.selectedWritingStyle, useCase: this.selectedUseCase as LLMRephraseUseCase })\r\n : this.llmService.summarize({ text: text, language: this.data.language, useCase: this.selectedUseCase as LLMSummaryUseCase });\r\n\r\n return method\r\n .pipe(finalize(() => (this.isLoading = false)))\r\n .subscribe(this.getRequestCallback());\r\n }\r\n\r\n private getRequestCallback() {\r\n return {\r\n next: (response: string) => {\r\n if (this.llmActionType === this.llmActions.SUMMARY) {\r\n this.isSummarized = true;\r\n }\r\n\r\n this.editedText = response;\r\n this.manuallyEditedText = '';\r\n this.defaultErrorMessage = this.llmHelperService.getDefaultErrorMessage();\r\n this.closeMessage(this.defaultErrorMessage);\r\n this.closeMessage(this.requestTimeoutMessage);\r\n this.isEdited = true;\r\n this.refreshQuota(true);\r\n this.checkTextLimit();\r\n },\r\n error: (error: HttpErrorResponse) => {\r\n if (error.status === ERROR_CODES.TIMEOUT) {\r\n this.requestTimeoutMessage = this.llmHelperService.getRequestTimeoutMessage(this.llmActionType);\r\n this.messages.push(this.requestTimeoutMessage);\r\n return;\r\n }\r\n\r\n this.messages.push(this.defaultErrorMessage);\r\n }\r\n }\r\n }\r\n}\r\n","export const SUMMARIZE = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path d=\"M4 5H18.6286V6.82857H4V5ZM4 10.4857H18.6286V8.65714H4V10.4857ZM4 14.1429H10.4V12.3143H4V14.1429ZM4 17.8H10.4V15.9714H4V17.8Z\" fill=\"currentColor\"/>\r\n<path d=\"M17.4005 13.3093C17.0801 12.5922 16.0622 12.5922 15.7418 13.3093L15.1052 14.7341L13.6804 15.3707C12.9633 15.6911 12.9633 16.709 13.6804 17.0294L15.1052 17.666L15.7418 19.0908C16.0622 19.8079 17.0801 19.8079 17.4005 19.0908L18.0371 17.666L19.4619 17.0294C20.179 16.709 20.179 15.6911 19.4619 15.3707L18.0371 14.7341L17.4005 13.3093Z\" fill=\"currentColor\"/>\r\n<path d=\"M13.5612 12.0546C13.4438 11.7917 13.0705 11.7917 12.953 12.0546L12.7196 12.577L12.1972 12.8105C11.9343 12.9279 11.9343 13.3012 12.1972 13.4187L12.7196 13.6521L12.953 14.1745C13.0705 14.4374 13.4438 14.4374 13.5612 14.1745L13.7947 13.6521L14.3171 13.4187C14.58 13.3012 14.58 12.9279 14.3171 12.8105L13.7947 12.577L13.5612 12.0546Z\" fill=\"currentColor\"/>\r\n</svg>\r\n`;\r\nexport const REPHRASE = `<svg width=\"25\" height=\"25\" viewBox=\"0 0 25 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19.879 4.16166L21.229 5.51166C22.019 6.29166 22.019 7.56166 21.229 8.34166L7.99897 21.5717H3.81897V17.3917L14.219 6.98166L17.049 4.16166C17.829 3.38166 19.099 3.38166 19.879 4.16166ZM5.81897 19.5717L7.22897 19.6317L17.049 9.80166L15.639 8.39166L5.81897 18.2117V19.5717Z\" fill=\"currentColor\"/>\r\n<path d=\"M19.5181 19.798L18.8644 21.261C18.6793 21.6752 18.0913 21.6752 17.9062 21.261L17.2526 19.798C17.1471 19.5621 16.9584 19.3734 16.7225 19.268L15.2595 18.6143C14.8453 18.4292 14.8453 17.8412 15.2595 17.6561L16.7225 17.0024C16.9584 16.897 17.1471 16.7083 17.2526 16.4724L17.9062 15.0094C18.0913 14.5952 18.6793 14.5952 18.8644 15.0094L19.5181 16.4724C19.6235 16.7083 19.8122 16.897 20.0481 17.0024L21.5111 17.6561C21.9253 17.8412 21.9253 18.4292 21.5111 18.6143L20.0481 19.268C19.8122 19.3734 19.6235 19.5621 19.5181 19.798Z\" stroke=\"#474D53\"/>\r\n<path d=\"M9.88502 3.56437C9.75242 3.26761 9.33117 3.26761 9.19857 3.56437L8.93512 4.15399L8.3455 4.41744C8.04874 4.55003 8.04874 4.97129 8.3455 5.10389L8.93512 5.36733L9.19857 5.95696C9.33117 6.25372 9.75242 6.25372 9.88502 5.95696L10.1485 5.36733L10.7381 5.10389C11.0349 4.97129 11.0349 4.55003 10.7381 4.41744L10.1485 4.15399L9.88502 3.56437Z\" fill=\"currentColor\"/>\r\n<path d=\"M6.50947 5.80395C6.31057 5.35881 5.67869 5.35881 5.4798 5.80395L5.08462 6.68839L4.20019 7.08356C3.75505 7.28245 3.75505 7.91434 4.20019 8.11323L5.08462 8.5084L5.4798 9.39284C5.67869 9.83798 6.31057 9.83798 6.50947 9.39284L6.90464 8.5084L7.78907 8.11323C8.23421 7.91434 8.23421 7.28245 7.78907 7.08356L6.90464 6.68839L6.50947 5.80395Z\" fill=\"currentColor\"/>\r\n</svg>\r\n`;","import { Component, inject } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'lib-new-feature-dialog',\r\n imports: [MatDialogModule, MatButtonModule, TranslatePipe],\r\n templateUrl: './new-feature-dialog.component.html',\r\n styleUrl: './new-feature-dialog.component.scss'\r\n})\r\nexport class NewFeatureDialogComponent {\r\n data = inject(MAT_DIALOG_DATA);\r\n}\r\n","<h2 mat-dialog-title>{{ data.title | translate }}</h2>\r\n<mat-dialog-content>\r\n <p class=\"description\" [innerHTML]=\"data.description | translate\"></p>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-button mat-dialog-close color=\"accent\">\r\n {{ data.close | translate }}\r\n </button>\r\n</mat-dialog-actions>\r\n","import { Injectable, signal } from '@angular/core';\r\nimport { NewFeatureDialogWrapperComponent } from './new-feature-dialog-wrapper.component';\r\n \r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class NewFeatureDialogService {\r\n current = signal<NewFeatureDialogWrapperComponent | undefined>(undefined);\r\n \r\n queue: NewFeatureDialogWrapperComponent[] = [];\r\n \r\n requestOpenFeature(component: NewFeatureDialogWrapperComponent): void {\r\n if (this.queue.includes(component)) {\r\n return;\r\n }\r\n this.queue.push(component);\r\n if (!this.current()) {\r\n this.showNextFeature();\r\n }\r\n }\r\n \r\n showNextFeature(): void {\r\n if (this.queue.length === 0) {\r\n return;\r\n }\r\n \r\n const nextFeature = this.queue.shift();\r\n if (!nextFeature) {\r\n return\r\n }\r\n this.current.set(nextFeature);\r\n nextFeature.showFeatureDialog();\r\n }\r\n}\r\n \r\n ","import { Component, inject, Input, OnDestroy, OnInit, signal } from '@angular/core';\r\nimport { MatDialog, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NewFeatureDialogComponent } from '../new-feature-dialog.component';\r\nimport { ResolutionHelper } from '../../helpers';\r\nimport { NewFeatureDialogService } from './new-feature-dialog.service';\r\nimport { Subject } from 'rxjs';\r\nimport { MobileScreenCustomPosition } from '../models/mobile-screen-custom-position.model';\r\n\r\n@Component({\r\n selector: 'lib-new-feature-dialog-wrapper',\r\n imports: [CommonModule, MatDialogModule],\r\n template: ''\r\n})\r\nexport class NewFeatureDialogWrapperComponent implements OnInit, OnDestroy {\r\n\t@Input() titleLocalizationKey!: string;\r\n\t@Input() descriptionLocalizationKey!: string;\r\n\t@Input() closeLocalizationKey!: string;\r\n\t@Input() featureClassName!: string;\r\n\t@Input() featureLocalStorageKey!: string;\r\n\t@Input() timeout = 0;\r\n\t@Input() maxWidth = 320;\r\n\t@Input() mobileScreenCustomPosition?: MobileScreenCustomPosition;\r\n\r\n\treadonly #dialog = inject(MatDialog);\r\n\treadonly #featureService = inject(NewFeatureDialogService);\r\n\treadonly #destroy = new Subject();\r\n\r\n\tdialogRef: MatDialogRef<NewFeatureDialogComponent> | undefined;\r\n\tfeatureActive = signal(false);\r\n\tisFeatureSeen = false;\r\n\r\n\tngOnInit(): void {\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.setFeatureStatus();\r\n\t\t}, this.timeout);\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.#destroy.next(null);\r\n\t\tthis.#destroy.complete();\r\n\t}\r\n\r\n\tshowFeatureDialog(): void {\r\n\t\tconst targetElement = document.querySelector(`.${this.featureClassName}`);\r\n\t\tif (!targetElement) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (ResolutionHelper.isMobileRes() && this.mobileScreenCustomPosition?.autoScroll) {\r\n\t\t\ttargetElement!.scrollIntoView({ behavior: 'smooth', block: 'center'});\r\n\t\t}\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.featureActive.set(true);\r\n\t\t\tconst updatedRects = targetElement.getBoundingClientRect();\r\n\t\t\tthis.dialogRef = this.#dialog.open(NewFeatureDialogComponent, {\r\n\t\t\t\tdata: {\r\n\t\t\t\t\ttitle: this.titleLocalizationKey,\r\n\t\t\t\t\tdescription: this.descriptionLocalizationKey,\r\n\t\t\t\t\tclose: this.closeLocalizationKey,\r\n\t\t\t\t\tfeatureLocalStorageKey: this.featureLocalStorageKey,\r\n\t\t\t\t},\r\n\t\t\t\tposition: {\r\n\t\t\t\t\tleft: `${ResolutionHelper.isMobileRes() && this.mobileScreenCustomPosition?.left ? this.mobileScreenCustomPosition.left : (updatedRects.left - this.maxWidth) + 'px'}`,\r\n\t\t\t\t\ttop: `${ResolutionHelper.isMobileRes() && this.mobileScreenCustomPosition?.top ? this.mobileScreenCustomPosition.top : (updatedRects.top + 45) + 'px'}`\r\n\t\t\t\t},\r\n\t\t\t\tmaxWidth: `${this.maxWidth}px`\r\n\t\t\t});\r\n\r\n\t\t\tthis.dialogRef.afterClosed().subscribe(() => {\r\n\t\t\t\tthis.setFeatureSeen();\r\n\t\t\t\tthis.#featureService.current.set(undefined);\r\n\t\t\t\tthis.#featureService.showNextFeature();\r\n\t\t\t});\r\n\t\t\t// Wait until the element is visible in the viewport.\r\n\t\t}, ResolutionHelper.isMobileRes() && this.mobileScreenCustomPosition?.autoScroll ? 500 : 0);\r\n\t}\r\n\r\n\tprivate setFeatureStatus(): void {\r\n\t\tthis.isFeatureSeen = !!this.featureLocalStorageKey && !!localStorage.getItem(this.featureLocalStorageKey);\r\n\r\n\t\tif (!this.isFeatureSeen) {\r\n\t\t\tthis.#featureService.requestOpenFeature(this);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setFeatureSeen(): void {\r\n\t\tthis.featureActive.set(false);\r\n\t\tthis.isFeatureSeen = true;\r\n\t\tif (this.featureLocalStorageKey) {\r\n\t\t\tlocalStorage.setItem(this.featureLocalStorageKey, 'true');\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { LLMActions } from '../../models';\r\n\r\n@Component({\r\n selector: 'lib-llm-summary',\r\n templateUrl: './llm-summary.component.html',\r\n styleUrl: './llm-summary.component.scss',\r\n standalone: false\r\n})\r\nexport class LLMSummaryComponent {\r\n @Input() isTextSummarizable!: boolean;\r\n @Input() newFeatureLocalStorageKey!: string | undefined;\r\n @Output() openModalEvent = new EventEmitter<LLMActions>();\r\n\r\n openModal(): void {\r\n this.openModalEvent.emit(LLMActions.SUMMARY);\r\n }\r\n}\r\n","<button\r\n\tmat-stroked-button\r\n\tclass=\"llm-summary\"\r\n\tcolor=\"accent\"\r\n\t[disabled]=\"!isTextSummarizable\"\r\n\t[class.summarize-feature-active]=\"summarizeFeature?.featureActive()\"\r\n\t(click)=\"openModal()\"\r\n>\r\n\t<mat-icon [svgIcon]=\"'summarize'\"></mat-icon>\r\n\t{{ \"LLM.SUMMARY\" | translate }}\r\n</button>\r\n\r\n<lib-new-feature-dialog-wrapper\r\n\t#summarizeFeature\r\n\t[titleLocalizationKey]=\"'LLM.SUMMARY_NEW_FEATURE.TITLE'\"\r\n\t[descriptionLocalizationKey]=\"'LLM.SUMMARY_NEW_FEATURE.DESCRIPTION'\"\r\n\t[closeLocalizationKey]=\"'LLM.SUMMARY_NEW_FEATURE.CLOSE'\"\r\n\t[featureClassName]=\"'llm-summary'\"\r\n\t[featureLocalStorageKey]=\"'summary' + newFeatureLocalStorageKey\"\r\n></lib-new-feature-dialog-wrapper>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { LLMActions } from '../../models';\r\n\r\n@Component({\r\n selector: 'lib-llm-rephrase',\r\n templateUrl: './llm-rephrase.component.html',\r\n styleUrl: './llm-rephrase.component.scss',\r\n standalone: false\r\n})\r\nexport class LLMRephraseComponent {\r\n @Input() isTargetLanguageRephrasable!: boolean;\r\n @Input() newFeatureLocalStorageKey!: string | undefined;\r\n @Output() openModalEvent = new EventEmitter<LLMActions>();\r\n\r\n openModal(): void {\r\n this.openModalEvent.emit(LLMActions.REPHRASE);\r\n }\r\n}\r\n","<button\r\n\tmat-stroked-button\r\n\tclass=\"llm-rephrase\"\r\n\tcolor=\"accent\"\r\n\t[disabled]=\"!isTargetLanguageRephrasable\"\r\n\t[class.rephrase-feature-active]=\"rephraseFeature?.featureActive()\"\r\n\t(click)=\"openModal()\"\r\n>\r\n\t<mat-icon [svgIcon]=\"'rephrase'\"></mat-icon>\r\n\t{{ \"LLM.REPHRASE\" | translate }}\r\n</button>\r\n\r\n<lib-new-feature-dialog-wrapper\r\n\t#rephraseFeature\r\n\t[titleLocalizationKey]=\"'LLM.REPHRASE_NEW_FEATURE.TITLE'\"\r\n\t[descriptionLocalizationKey]=\"'LLM.REPHRASE_NEW_FEATURE.DESCRIPTION'\"\r\n\t[closeLocalizationKey]=\"'LLM.REPHRASE_NEW_FEATURE.CLOSE'\"\r\n\t[featureClassName]=\"'llm-rephrase'\"\r\n\t[featureLocalStorageKey]=\"'rephrase' + newFeatureLocalStorageKey\"\r\n\t[maxWidth]=\"400\"\r\n></lib-new-feature-dialog-wrapper>\r\n","<div class=\"llm-wrapper\">\r\n\t<div *ngIf=\"summaryEnabled\" [matTooltipPosition]=\"'left'\" [matTooltip]=\"!isTextSummarizable ? ('LLM.MENU_SUMMARY_DISABLED_TOOLTIP' | translate) : ''\">\r\n\t\t<lib-llm-summary [isTextSummarizable]=\"!!isTextSummarizable\" [newFeatureLocalStorageKey]=\"newFeatureLocalStorageKey\" (openModalEvent)=\"openLLMModal($event)\"></lib-llm-summary>\r\n\t</div>\r\n\r\n\t<div *ngIf=\"rephraseEnabled\" [matTooltipPosition]=\"'left'\" [matTooltip]=\"!isTargetLanguageRephrasable ? ('LLM.MENU_REPHRASE_DISABLED_TOOLTIP' | translate) : ''\">\r\n\t\t<lib-llm-rephrase\r\n\t\t\t[isTargetLanguageRephrasable]=\"!!isTargetLanguageRephrasable\"\r\n\t\t\t[newFeatureLocalStorageKey]=\"newFeatureLocalStorageKey\"\r\n\t\t\t(openModalEvent)=\"openLLMModal($event)\"\r\n\t\t></lib-llm-rephrase>\r\n\t</div>\r\n</div>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { LLMActions } from './models/llm-actions.enum';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { IconService, LanguageTranslateService } from '../services';\r\nimport { LLMTextareaWithActionsComponent } from './components/llm-textarea-with-actions/llm-textarea-with-actions.component';\r\nimport * as icons from './icons';\r\nimport { Observable, of } from 'rxjs';\r\nimport { LLMData } from './models/llm-data.model';\r\nimport { LLMRephraseUseCase, LLMSummaryUseCase } from '@tilde-nlp/ngx-services';\r\n\r\n@Component({\r\n selector: 'lib-llm',\r\n templateUrl: './llm.component.html',\r\n styleUrls: ['./llm.component.scss'],\r\n standalone: false\r\n})\r\nexport class LLMComponent {\r\n @Input() text: string | Observable<string> | undefined;\r\n @Input() language!: string | undefined;\r\n @Input() rephrasableLanguagesCodeList: string[] | undefined;\r\n @Input() summaryEnabled = true;\r\n @Input() rephraseEnabled = true;\r\n @Input() showUseCaseSummary = false;\r\n @Input() showUseCaseRephrase = false;\r\n @Input() newFeatureLocalStorageKey!: string | undefined;\r\n @Input() rephraseUseCases: LLMRephraseUseCase[] | undefined;\r\n @Input() summaryUseCases: LLMSummaryUseCase[] | undefined;\r\n\r\n @Output() menuTriggerClick = new EventEmitter<void>();\r\n\r\n readonly llmAction = LLMActions;\r\n\r\n get isTextSummarizable() {\r\n return this.text;\r\n }\r\n\r\n get isTargetLanguageRephrasable() {\r\n return !this.rephrasableLanguagesCodeList || (this.language && this.rephrasableLanguagesCodeList.includes(this.languageService.removeRegionFromLanguageCode(this.language)));\r\n }\r\n\r\n constructor(\r\n public dialog: MatDialog,\r\n private readonly iconService: IconService,\r\n private readonly languageService: LanguageTranslateService\r\n ) {\r\n this.iconService.registerIcons(icons);\r\n }\r\n\r\n openLLMModal(action: LLMActions): void {\r\n let textObservable: Observable<string>;\r\n if (!this.text || typeof this.text === \"string\") {\r\n textObservable = of(this.text ?? \"\");\r\n } else {\r\n textObservable = this.text;\r\n }\r\n const data: LLMData = {\r\n text: textObservable,\r\n language: this.language!,\r\n action: action,\r\n showUseCaseSummary: this.showUseCaseSummary,\r\n showUseCaseRephrase: this.showUseCaseRephrase,\r\n summaryUseCases: this.summaryUseCases,\r\n rephraseUseCases: this.rephraseUseCases,\r\n };\r\n\r\n this.dialog.open(LLMTextareaWithActionsComponent, {\r\n panelClass: 'responsive-dialog',\r\n maxWidth: '800px',\r\n width: '100%',\r\n data\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LLMComponent } from './llm.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { ClipboardModule } from '@angular/cdk/clipboard';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { LLMTextareaComponent } from './shared/llm-textarea/llm-textarea.component';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { NotificationMessageModule } from '../notification-message';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { FlexLayoutModule } from '@ngbracket/ngx-layout';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { LLMTextareaWithActionsComponent } from './components/llm-textarea-with-actions/llm-textarea-with-actions.component';\r\nimport { NewFeatureDialogWrapperComponent } from '../new-feature-dialog';\r\nimport { LLMRephraseComponent } from './components/llm-rephrase/llm-rephrase.component';\r\nimport { LLMSummaryComponent } from './components/llm-summary/llm-summary.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n LLMComponent,\r\n LLMTextareaComponent,\r\n LLMTextareaWithActionsComponent,\r\n LLMSummaryComponent,\r\n LLMRephraseComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n TranslateModule,\r\n MatDialogModule,\r\n ClipboardModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatSelectModule,\r\n NotificationMessageModule,\r\n MatTooltipModule,\r\n FlexLayoutModule,\r\n MatProgressSpinnerModule,\r\n NewFeatureDialogWrapperComponent\r\n ],\r\n exports: [LLMComponent],\r\n})\r\nexport class LLMModule {}\r\n","import { Injectable, TemplateRef } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SidebarService {\r\n isOpen = false;\r\n\r\n contentTemplate!: TemplateRef<HTMLTemplateElement> | null;\r\n\r\n showSidebar(content: TemplateRef<HTMLTemplateElement>): void {\r\n this.isOpen = true;\r\n \r\n this.contentTemplate = content;\r\n }\r\n\r\n hideSidebar(): void {\r\n this.isOpen = false;\r\n\r\n this.contentTemplate = null;\r\n }\r\n}\r\n","import { Component, inject } from '@angular/core';\r\nimport { SidebarService } from './services';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-sidebar',\r\n imports: [CommonModule],\r\n templateUrl: './sidebar.component.html',\r\n styleUrl: './sidebar.component.scss'\r\n})\r\nexport class SidebarComponent {\r\n #sidebarService = inject(SidebarService);\r\n\r\n get isOpen() {\r\n return this.#sidebarService.isOpen;\r\n }\r\n\r\n get template() {\r\n return this.#sidebarService.contentTemplate;\r\n }\r\n}\r\n","<section [class.expanded]=\"isOpen\" class=\"sidebar-wrapper\">\r\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\r\n</section>\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { Toast } from '../models/toast.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ToastService {\r\n private toasts: Toast[] = [];\r\n\r\n subject = new Subject<Toast[]>();\r\n\r\n watchToasts(): Observable<Toast[]> {\r\n return this.subject.asObservable();\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n showToast(message: string, appearanceTime?: number, localizationParams?: any): void {\r\n const animationDurationTime = 500;\r\n const toast: Toast = {\r\n id: new Date().getTime(),\r\n message,\r\n localizationParams\r\n };\r\n\r\n this.toasts.push(toast);\r\n this.subject.next(this.toasts);\r\n\r\n setTimeout(() => {\r\n document.querySelector('.toast')?.classList.add(\"fade-out\")\r\n }, (appearanceTime ?? 3000) - animationDurationTime)\r\n\r\n setTimeout(() => {\r\n this.closeToast(toast.id);\r\n }, appearanceTime ?? 3000);\r\n }\r\n\r\n closeToast(id: number): void {\r\n this.toasts = this.toasts.filter((toast) => toast.id !== id);\r\n this.subject.next(this.toasts);\r\n }\r\n}\r\n","<div class=\"toast-container\">\r\n @for (toast of toasts; track toast.id) {\r\n <div class=\"toast\">\r\n <span>{{ toast.message | translate: toast?.localizationParams }}</span>\r\n <button mat-icon-button (click)=\"closeToast(toast.id)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, inject, OnInit } from '@angular/core';\r\nimport { Toast } from './models/toast.model';\r\nimport { ToastService } from './toast-service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'lib-toast',\r\n imports: [CommonModule, MatIconModule, MatButtonModule, TranslateModule],\r\n templateUrl: './toast.component.html',\r\n styleUrl: './toast.component.scss'\r\n})\r\nexport class ToastComponent implements OnInit {\r\n toasts: Toast[] = [];\r\n\r\n #toast = inject(ToastService);\r\n\r\n ngOnInit(): void {\r\n this.#toast.watchToasts().subscribe({\r\n next: (toasts) => (this.toasts = toasts),\r\n });\r\n }\r\n\r\n closeToast(id: number) {\r\n this.#toast.closeToast(id);\r\n }\r\n}\r\n","export enum SubscriptionPlan {\r\n MTStarter = \"MT-Starter\",\r\n MTPremium = \"MT-Premium\",\r\n MTAdvanced = \"MT-Advanced\",\r\n MTUnlimited = \"MT-Unlimited\",\r\n MTWTStarter = \"MT-WT-Starter\",\r\n MTWTPremium = \"MT-WT-Premium\",\r\n MTWTAdvanced = \"MT-WT-Advanced\",\r\n SpeechStarter = \"Speech-Starter\",\r\n SpeechPremium = \"Speech-Premium\",\r\n SpeechAdvanced = \"Speech-Advanced\",\r\n SpeechUnlimited = \"Speech-Unlimited\",\r\n TildeTermFreelance = \"Tilde-Term-Freelance\",\r\n AnonymiseUnlimited = \"Anonymise-Unlimited\",\r\n EventAssistantUnlimited = \"Event-Assistant-Unlimited\"\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const CUSTOM_TITLE_CONFIGURATION_TOKEN = new InjectionToken('CUSTOM_TITLE_CONFIGURATION_TOKEN');\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { RouterStateSnapshot, TitleStrategy } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { CUSTOM_TITLE_CONFIGURATION_TOKEN } from './custom-title-strategy-configuration.token';\r\nimport { CustomTitleStrategyConfiguration } from './custom-title-strategy-configuration.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CustomTitleStrategyService extends TitleStrategy {\r\n readonly #translateService = inject(TranslateService);\r\n readonly title = inject(Title);\r\n\r\n private subscription!: Subscription;\r\n\r\n private readonly appName = \"APP_NAME\";\r\n private readonly owner = \"OWNER\";\r\n\r\n readonly #config = inject<CustomTitleStrategyConfiguration>(CUSTOM_TITLE_CONFIGURATION_TOKEN, { optional: true });\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n override updateTitle(snapshot: RouterStateSnapshot): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n const title = this.buildTitle(snapshot);\r\n\r\n const translationKeys = [this.appName, this.owner];\r\n if (title) {\r\n translationKeys.push(title);\r\n }\r\n\r\n this.subscription = this.#translateService.stream(translationKeys, { appName: this.appName }).subscribe((translations) => {\r\n let translatedTitle: string = `${translations[this.owner]} ${translations[this.appName]}`;\r\n if (title && translations[title]) {\r\n translatedTitle = this.#config?.isPageTitleFirst ?? false\r\n ? `${translations[title]} | ${translatedTitle}`\r\n : `${translatedTitle} | ${translations[title]}`;\r\n }\r\n this.title.setTitle(translatedTitle);\r\n })\r\n }\r\n}\r\n","import { Provider } from '@angular/core';\r\nimport { TitleStrategy } from '@angular/router';\r\nimport { CustomTitleStrategyService } from './custom-title-strategy.service';\r\n\r\nexport const provideCustomTitleStrategy = (customConfigProvider?: Provider): Provider[] => {\r\n\tconst TITLE_STRATEGY_PROVIDERS: Provider[] = [\r\n\t\t{\r\n\t\t\tprovide: TitleStrategy,\r\n\t\t\tuseClass: CustomTitleStrategyService,\r\n\t\t},\r\n\t];\r\n\r\n\tif (customConfigProvider) {\r\n\t\tTITLE_STRATEGY_PROVIDERS.push(customConfigProvider);\r\n\t}\r\n\r\n\treturn TITLE_STRATEGY_PROVIDERS;\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { MissingTranslationHandler, MissingTranslationHandlerParams } from '@ngx-translate/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class MissingTranslationHandlerService implements MissingTranslationHandler {\r\n constructor() {}\r\n\r\n handle(params: MissingTranslationHandlerParams) {\r\n if (params.interpolateParams) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return (params.interpolateParams as any)[\"default\"] || params.key;\r\n }\r\n return params.key;\r\n }\r\n}\r\n","<h1 mat-dialog-title>{{ \"SELECT_LANGUAGE.TITLE\" | translate }}</h1>\r\n<div mat-dialog-content>\r\n <p class=\"description\">{{ \"SELECT_LANGUAGE.DESCRIPTION\" | translate }}</p>\r\n\r\n <mat-form-field appearance=\"outline\" class=\"w-full mt-4 mb-9\">\r\n <mat-label>{{ \"SELECT_LANGUAGE.INPUT_LABEL\" | translate }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedLanguage\">\r\n @for (language of languages | sortLanguageList | async; track $index) {\r\n <mat-option [value]=\"language.value\">\r\n <span class=\"language-name\">\r\n {{language.translation}}\r\n </span>\r\n </mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n</div>\r\n\r\n<mat-dialog-actions align=\"end\">\r\n <button mat-stroked-button color=\"accent\" mat-dialog-close>\r\n {{ \"SELECT_LANGUAGE.CANCEL\" | translate }}\r\n </button>\r\n <button mat-flat-button color=\"accent\" (click)=\"save()\">\r\n {{ \"SELECT_LANGUAGE.SAVE\" | translate }}\r\n </button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { AsyncPipe } from '@angular/common';\r\nimport { Component, inject, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\r\nimport { SortLanguageListPipe } from '../../../pipes';\r\n/**\r\n This is an extension dialog component.\r\n Use <lib-open-extension-dialog> to open this dialog, by proivding [extensions] to it you can specify what extensions should be displayed.\r\n*/\r\n@Component({\r\n selector: 'lib-extension-dialog',\r\n templateUrl: './select-language-dialog.component.html',\r\n styleUrls: ['./select-language-dialog.component.scss'],\r\n imports: [\r\n SortLanguageListPipe,\r\n AsyncPipe,\r\n TranslatePipe,\r\n MatDialogModule,\r\n MatButtonModule,\r\n MatSelectModule,\r\n FormsModule\r\n ]\r\n})\r\nexport class SelectLanguageDialogComponent implements OnInit {\r\n readonly #data = inject(MAT_DIALOG_DATA);\r\n readonly #translate = inject(TranslateService);\r\n readonly #dialogRef = inject(MatDialogRef);\r\n\r\n languages!: string[];\r\n selectedLanguage = this.#translate.currentLang;\r\n\r\n ngOnInit(): void {\r\n this.languages = this.#data.languages;\r\n }\r\n\r\n save(){\r\n this.#translate.use(this.selectedLanguage);\r\n this.#dialogRef.close(this.selectedLanguage);\r\n }\r\n\r\n\r\n\r\n}\r\n","<div class=\"tld-global-message\">\r\n\t<p [innerHTML]=\"text | translate\"></p>\r\n\r\n\t@if (showCloseButton) {\r\n\t<button class=\"tld-global-message-close\" mat-icon-button (click)=\"close()\">\r\n\t\t<mat-icon>close</mat-icon>\r\n\t</button>\r\n\t} \r\n \r\n @for (action of actions; track $index) {\r\n\t <button class=\"tld-global-message-action\" mat-stroked-button color=\"accent\" (click)=\"action.click()\">{{ action.label | translate }}</button>\r\n\t}\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { GlobalMessageAction } from './models/global-message-action.model';\r\n\r\n@Component({\r\n selector: 'lib-global-message',\r\n imports: [CommonModule, TranslateModule, MatButtonModule, MatIconModule],\r\n templateUrl: './global-message.component.html',\r\n styleUrl: './global-message.component.scss',\r\n})\r\nexport class GlobalMessageComponent {\r\n @Input() text!: string;\r\n @Input() showCloseButton = true;\r\n @Input() actions?: GlobalMessageAction[];\r\n @Output() closeClick = new EventEmitter<void>();\r\n\r\n close(): void {\r\n this.closeClick.emit();\r\n }\r\n}\r\n","export enum SUBSCRIPTION_STATE {\r\n ACTIVE,\r\n TRIAL,\r\n ENDED,\r\n NONE\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ChargebeeMountService {\r\n chargebeeMounted = false;\r\n}\r\n","@if(token()){\r\n <!-- narrow type to non null property -->\r\n @let userToken = token()!;\r\n\r\n <h3 class=\"subscription-section-title text-l-semi-bold\">{{ \"SUBSCRIPTION.USER_INFO\" | translate }}</h3>\r\n\r\n <div class=\"subscription-data-row\">\r\n <div class=\"subscription-label\">\r\n <span class=\"label\">{{ \"SUBSCRIPTION.LABEL_NAME\" | translate }}</span>\r\n </div>\r\n\r\n <div class=\"subscription-data\">\r\n <span>{{ userToken.name }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"subscription-data-row\">\r\n <div class=\"subscription-label\">\r\n <span class=\"label\">{{ \"SUBSCRIPTION.LABEL_EMAIL\" | translate }}</span>\r\n </div>\r\n\r\n <div class=\"subscription-data\">\r\n <span>{{ userToken.email }}</span>\r\n </div>\r\n </div>\r\n}\r\n\r\n@if(subscription()){\r\n @let currentSubscription = subscription()!;\r\n\r\n <div fxLayout=\"row\" class=\"subscription-data-row\">\r\n <div class=\"subscription-label\">\r\n <span class=\"label\">{{ \"SUBSCRIPTION.LABEL_SUBSCRIPTION_PLAN_ID\" | translate }}</span>\r\n </div>\r\n\r\n <div class=\"subscription-data\">\r\n <ng-container>\r\n <span>\r\n {{ currentSubscription.Label ? currentSubscription.Label : currentSubscription.PlanId }}\r\n\r\n @switch (subscriptionState()) {\r\n @case(subscriptionStates.TRIAL){\r\n <span> ({{ \"SUBSCRIPTION.TRIAL_END_DATE\" | translate: { date: currentSubscription.EndDate | date: \"dd.MM.yyyy.\" } }}) </span>\r\n }\r\n @case (subscriptionStates.ACTIVE) {\r\n @if(currentSubscription.EndDate){\r\n <span> ({{ \"SUBSCRIPTION.END_DATE\" | translate: { date: currentSubscription.EndDate | date: \"dd.MM.yyyy.\" } }}) </span>\r\n }\r\n }\r\n @case (subscriptionStates.ENDED) {\r\n ({{ \"SUBSCRIPTION.END_DATE\" | translate: { date: currentSubscription.EndDate | date: \"dd.MM.yyyy.\" } }})\r\n }\r\n }\r\n </span>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n @if(currentSubscription.EndDate){\r\n <div class=\"subscription-data-row\">\r\n <div class=\"subscription-label\">\r\n <span class=\"label\">{{ \"SUBSCRIPTION.LABEL_SUBSCRIPTION_END_DATE\" | translate }}</span>\r\n </div>\r\n\r\n <div class=\"subscription-data\">\r\n <ng-container>\r\n <span>{{currentSubscription.EndDate | date: \"dd.MM.yyyy\"}}</span>\r\n </ng-container>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if(currentSubscription.Addons?.length){\r\n <div fxLayout=\"row\" class=\"subscription-data-row\">\r\n <div class=\"subscription-label\">\r\n <span class=\"label\">{{ \"SUBSCRIPTION.ADDITIONS_PLUGINS\" | translate }}</span>\r\n </div>\r\n\r\n <div class=\"subscription-data\">\r\n @for (item of currentSubscription.Addons; track $index; let i = $index) {\r\n <span>{{ item.id }}</span>\r\n @if(item.qt>1){\r\n <span> ({{item.qt}})</span>\r\n }\r\n <span> {{ currentSubscription.Addons!.length - 1 > i ? \",\" : \"\" }} </span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n}\r\n\r\n@if(visibleQuotas().length){\r\n <h3 class=\"subscription-section-title text-l-semi-bold\">{{ \"SUBSCRIPTION.LIMITS\" | translate }}</h3>\r\n\r\n @for (currentQuota of visibleQuotas(); track $index) {\r\n <div class=\"subscription-limit-wrapper\">\r\n <mat-progress-bar [value]=\"currentQuota.percentUsed\"></mat-progress-bar>\r\n <div class=\"subscription-limit\">\r\n <span class=\"text-l-semi-bold\">\r\n {{ (\"QUOTA.\" + (currentQuota.quotaType.toString() | uppercase) + (currentQuota.isUnlimited? \"_UNLIMITED\": \"\")) | translate: { used: currentQuota.convertedUsed, limit: currentQuota.convertedLimit, percent: currentQuota.percentUsed} }}\r\n </span>\r\n </div>\r\n </div>\r\n }\r\n}\r\n\r\n<!-- Add some extra info, such as disclaimer etc -->\r\n <ng-content></ng-content>\r\n\r\n<div class=\"subscription-actions-wrapper\">\r\n @if(chargebeeSettings()){\r\n <a mat-flat-button color=\"accent\" class=\"manage-sub-btn button-row-element\" href=\"javascript:void(0)\" data-cb-type=\"portal\" (click)=\"manageClicked()\">\r\n {{ \"SUBSCRIPTION.MANAGE\" | translate }}\r\n </a>\r\n }\r\n @if(contactUsUrl()){\r\n <a mat-stroked-button [attr.href]=\"contactUsUrl()\" target=\"_blank\" color=\"accent\" (click)=\"contactUsClicked()\">{{\"SUBSCRIPTION.CONTACT\" | translate}}</a>\r\n }\r\n</div>\r\n","import { CommonModule, DatePipe } from '@angular/common';\r\nimport { Component, computed, inject, input, OnInit, output } from '@angular/core';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\nimport { QuotaResponse, QuotaType, QuotaUsage } from '@tilde-nlp/ngx-services';\r\nimport { AuthSubscription } from '../core/auth/auth-subscription.model';\r\nimport { JwtToken } from '../core/auth/jwt-token.model';\r\nimport { SUBSCRIPTION_STATE } from './models/subscription-state.enum';\r\nimport { SubscriptionQuotaDisplay } from './models/subscription-quota-display.model';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { ChargebeeMountService } from './chargebee-mount.service';\r\nimport { ChargebeeSettings } from './models/chargebee-settings.model';\r\n\r\n@Component({\n selector: 'lib-subscription',\n imports: [\n TranslatePipe,\n DatePipe,\n MatProgressBarModule,\n CommonModule,\n MatButtonModule\n ],\n templateUrl: './subscription.component.html',\n styleUrl: './subscription.component.scss'\n})\r\nexport class SubscriptionComponent implements OnInit {\r\n readonly #chargebeeMountService = inject(ChargebeeMountService);\r\n\r\n /** Parsed user token to get user related info */\r\n readonly token = input.required<JwtToken | undefined>();\r\n /** Current user plan that app has selected */\r\n readonly subscription = input.required<AuthSubscription | undefined>();\r\n /** Quota usage */\r\n readonly quota = input.required<QuotaResponse | undefined>();\r\n readonly visibleQuotaTypes = input<QuotaType[]>();\r\n readonly contactUsUrl = input<string>();\r\n readonly chargebeeSettings = input<ChargebeeSettings>();\r\n\r\n readonly manageClick = output();\r\n readonly contactUsClick = output();\r\n\r\n readonly visibleQuotas = computed<SubscriptionQuotaDisplay[]>(() => {\r\n const quota = this.quota();\r\n if (!quota?.usage) {\r\n return [];\r\n }\r\n\r\n let filtered: QuotaUsage[];\r\n if (!this.visibleQuotaTypes()) {\r\n filtered = quota.usage;\r\n }\r\n else {\r\n filtered = quota.usage.filter(quota => this.visibleQuotaTypes()?.includes(quota.quotaType));\r\n }\r\n\r\n const visibleQuotas: SubscriptionQuotaDisplay[] = filtered.map(quota => {\r\n return this.#convertUsageToDisplayQuota(quota);\r\n });\r\n return visibleQuotas;\r\n })\r\n\r\n readonly subscriptionStates = SUBSCRIPTION_STATE;\r\n\r\n readonly subscriptionState = computed(() => {\r\n const subscription = this.subscription();\r\n if (!subscription) {\r\n return SUBSCRIPTION_STATE.NONE;\r\n }\r\n\r\n if (subscription.IsTrial) {\r\n return SUBSCRIPTION_STATE.TRIAL;\r\n }\r\n\r\n\r\n const now = new Date();\r\n if (!subscription.EndDate || new Date(subscription.EndDate) < now) {\r\n return SUBSCRIPTION_STATE.ACTIVE;\r\n } else {\r\n return SUBSCRIPTION_STATE.ENDED;\r\n }\r\n });\r\n\r\n ngOnInit(): void {\r\n this.#mountChargeBeeScript();\r\n }\r\n\r\n manageClicked(){\r\n this.manageClick.emit();\r\n }\r\n\r\n contactUsClicked(){\r\n this.contactUsClick.emit();\r\n }\r\n\r\n #mountChargeBeeScript() {\r\n const chargebeeSettings = this.chargebeeSettings();\r\n if (!chargebeeSettings?.site || !chargebeeSettings.script) {\r\n return;\r\n }\r\n\r\n if (!this.#chargebeeMountService.chargebeeMounted) {\r\n const el = document.createElement('script');\r\n el.onload = () => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const windowObj: any = window;\r\n windowObj.Chargebee.init({\r\n site: chargebeeSettings.site\r\n });\r\n windowObj.Chargebee.registerAgain();\r\n this.#chargebeeMountService.chargebeeMounted = true;\r\n };\r\n el.setAttribute('src', chargebeeSettings.script);\r\n document.head.appendChild(el);\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const windowObj: any = window;\r\n windowObj.Chargebee.registerAgain();\r\n }\r\n }\r\n\r\n #convertUsageToDisplayQuota(quota: QuotaUsage): SubscriptionQuotaDisplay {\r\n // int max in c#\r\n const unlimitedBenchmark = 2147483647;\r\n\r\n const used = quota.quotaLimit - quota.quotaRemaining;\r\n let convertedLimit = quota.quotaLimit.toString();\r\n let convertedUsed = used.toString();\r\n const isUnlimited = unlimitedBenchmark <= quota.quotaLimit;\r\n const percentUsed = Math.round(((quota.quotaLimit - quota.quotaRemaining) / quota.quotaLimit) * 100);\r\n\r\n switch (quota.quotaType) {\r\n case QuotaType.ASR_FILE_LENGTH_SECONDS:\r\n case QuotaType.ONLINE_ASR_USED_SECONDS:\r\n convertedLimit = Math.ceil(quota.quotaLimit / 60).toString();\r\n convertedUsed = Math.round(used / 60).toString();\r\n break;\r\n case QuotaType.ASR_FILE_SIZE_KB:\r\n convertedLimit = this.#formatBytes(quota.quotaLimit * 1024);\r\n convertedUsed = this.#formatBytes(used * 1024);\r\n break;\r\n case QuotaType.LLM_REQUESTS:\r\n break;\r\n }\r\n\r\n return {\r\n ...quota,\r\n convertedLimit,\r\n convertedUsed,\r\n isUnlimited,\r\n percentUsed\r\n };\r\n }\r\n\r\n #formatBytes(bytes: number, decimals = 0) {\r\n if (!+bytes) return '0 Bytes'\r\n\r\n const k = 1024\r\n const dm = decimals < 0 ? 0 : decimals\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\r\n\r\n const i = Math.floor(Math.log(bytes) / Math.log(k))\r\n\r\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`\r\n }\r\n\r\n}\r\n","export enum AccessibilityFontSizes {\r\n\tBASE = '1rem',\r\n\tL = '1.25rem',\r\n\tXL = '1.5rem',\r\n}\r\n","export enum AccessibilityContrasts {\r\n\tBASE = 'base',\r\n\tBLACK_WHITE = 'black-white',\r\n\tYELLOW_BLACK = 'yellow-black',\r\n\tBLACK_YELLOW = 'black-yellow',\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AccessibilityTextMagnifierService {\r\n\tprivate magnifiedText: HTMLDivElement | null = null;\r\n\tprivate mousemoveHandler: EventListener | null = null;\r\n\tprivate mouseoverHandler: EventListener | null = null;\r\n\r\n\ttoggleTextMagnifier(isDisabled: boolean): void {\r\n\t\tif (isDisabled) {\r\n\t\t\tthis.addMagnifier();\r\n\t\t} else {\r\n\t\t\tthis.removeMagnifier();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate addMagnifier(): void {\r\n\t\tthis.magnifiedText = document.createElement('div');\r\n\t\tthis.magnifiedText.classList.add('magnified-text');\r\n\t\tdocument.body.appendChild(this.magnifiedText);\r\n\r\n\t\tlet positionTop: number;\r\n\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\tthis.mouseoverHandler = (event: any) => {\r\n\t\t\tif (event.target && event.target.nodeType === Node.ELEMENT_NODE) {\r\n\t\t\t\tif (event.target?.classList?.contains('mat-icon')) {\r\n\t\t\t\t\treturn;\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tconst textContent = this.getFirstTextContent(event.target);\r\n\r\n\t\t\t\tif (!textContent.length) {\r\n\t\t\t\t\tthis.magnifiedText!.style.display = 'none';\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.magnifiedText!.style.display = 'block';\r\n\t\t\t\tthis.magnifiedText!.textContent = textContent;\r\n\r\n\t\t\t\tpositionTop = event.pageY - this.magnifiedText!.clientHeight - 25 > 0 ? event.pageY - this.magnifiedText!.clientHeight - 25 : 0;\r\n\r\n\t\t\t\tthis.magnifiedText!.style.left = `${event.pageX - 35}px`;\r\n\t\t\t\tthis.magnifiedText!.style.top = `${positionTop}px`;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdocument.addEventListener('mouseover', this.mouseoverHandler);\r\n\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\tthis.mousemoveHandler = (event: any) => {\r\n\t\t\tif (this.magnifiedText) {\r\n\t\t\t\tthis.magnifiedText!.style.left = `${event.pageX - 35}px`;\r\n\t\t\t\tthis.magnifiedText!.style.top = `${positionTop}px`;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdocument.addEventListener('mousemove', this.mousemoveHandler);\r\n\t}\r\n\r\n\tprivate removeMagnifier(): void {\r\n\t\tif (this.magnifiedText) {\r\n\t\t\tdocument.body.removeChild(this.magnifiedText);\r\n\t\t\tthis.magnifiedText = null;\r\n\t\t}\r\n\r\n\t\tif (this.mouseoverHandler) {\r\n\t\t\tdocument.removeEventListener('mouseover', this.mouseoverHandler);\r\n\t\t\tthis.mouseoverHandler = null;\r\n\t\t}\r\n\r\n\t\tif (this.mousemoveHandler) {\r\n\t\t\tdocument.removeEventListener('mousemove', this.mousemoveHandler);\r\n\t\t\tthis.mousemoveHandler = null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getFirstTextContent(element: Element): string {\r\n\t\tlet textContent = '';\r\n\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\tfor (const child of element.childNodes as any) {\r\n\t\t\tif (child.nodeType === Node.TEXT_NODE) {\r\n\t\t\t\ttextContent = child.textContent || '';\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn textContent;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AccessibilityScreenMaskService {\r\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\tlistener: any;\r\n\tfocusBarHeight = 60;\r\n\r\n\treadonly SCREEN_MASK_HEIGHT_KEY = 'SCREEN_MASK_HEIGHT_KEY';\r\n\treadonly MASK_CLASS = 'screen-mask';\r\n\treadonly MASK_OVERLAY_CLASS = 'screen-mask-overlay';\r\n\treadonly FOCUS_BAR_CLASS = 'screen-mask-focus-bar';\r\n\treadonly FOCUS_BAR_BTN_CLASS = 'screen-mask-bar-btn';\r\n\treadonly INCREASE_BTN_TEXT = '+';\r\n\treadonly DECREASE_BTN_TEXT = '-';\r\n\treadonly CLOSE_BTN_TEXT = 'x';\r\n\r\n\ttoggleScreenMask(isDisabled: boolean): void {\r\n\t\tconst body = document.querySelector('body')!;\r\n\r\n\t\tif (!isDisabled) {\r\n\t\t\tthis.closeFocusBar();\r\n\t\t} else {\r\n\t\t\tconst mask = document.createElement('div');\r\n\t\t\tconst maskOverlay = document.createElement('div');\r\n\t\t\tconst maskFocusBar = document.createElement('div');\r\n\t\t\tconst increaseButton = document.createElement('button');\r\n\t\t\tconst decreaseButton = document.createElement('button');\r\n\t\t\tconst closeButton = document.createElement('button');\r\n\r\n\t\t\tmask.classList.add(this.MASK_CLASS);\r\n\t\t\tmaskFocusBar.classList.add(this.FOCUS_BAR_CLASS);\r\n\t\t\tmaskOverlay.classList.add(this.MASK_OVERLAY_CLASS);\r\n\r\n\t\t\tincreaseButton.textContent = this.INCREASE_BTN_TEXT;\r\n\t\t\tdecreaseButton.textContent = this.DECREASE_BTN_TEXT;\r\n\t\t\tcloseButton.textContent = this.CLOSE_BTN_TEXT;\r\n\r\n\t\t\tincreaseButton.addEventListener('click', () => this.increaseFocusBar());\r\n\t\t\tdecreaseButton.addEventListener('click', () => this.decreaseFocusBar());\r\n\t\t\tcloseButton.addEventListener('click', () => this.closeFocusBar());\r\n\r\n\t\t\tmaskFocusBar.appendChild(increaseButton);\r\n\t\t\tmaskFocusBar.appendChild(decreaseButton);\r\n\t\t\tmaskFocusBar.appendChild(closeButton);\r\n\r\n\t\t\tmask.appendChild(maskOverlay);\r\n\t\t\tmask.appendChild(maskFocusBar);\r\n\r\n\t\t\tbody.appendChild(mask);\r\n\r\n\t\t\tconst storedHeight = localStorage.getItem(this.SCREEN_MASK_HEIGHT_KEY);\r\n\t\t\tconst height = storedHeight ? JSON.parse(storedHeight) : this.focusBarHeight;\r\n\t\t\tthis.focusBarHeight = height;\r\n\r\n\t\t\tthis.updateFocusBar();\r\n\r\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\t\tthis.listener = (event: any) => {\r\n\t\t\t\tconst mouseY = event.clientY - this.focusBarHeight / 2;\r\n\t\t\t\tmaskFocusBar.style.height = `${this.focusBarHeight}px`;\r\n\t\t\t\tmaskFocusBar.style.top = `${mouseY}px`;\r\n\t\t\t\tconst clipPathValue = `polygon(0px 0px, 100% 0px, 100% ${mouseY}px, 0px ${mouseY}px, 0px ${mouseY + this.focusBarHeight}px, 100% ${\r\n\t\t\t\t\tmouseY + this.focusBarHeight\r\n\t\t\t\t}px, 100% 100%, 0px 100%)`;\r\n\t\t\t\tmaskOverlay.style.clipPath = clipPathValue;\r\n\t\t\t};\r\n\r\n\t\t\tbody.addEventListener('mousemove', this.listener);\r\n\t\t}\r\n\t}\r\n\r\n\tincreaseFocusBar(): void {\r\n\t\tthis.focusBarHeight += 10;\r\n\t\tthis.updateFocusBar();\r\n\t}\r\n\r\n\tdecreaseFocusBar(): void {\r\n\t\tthis.focusBarHeight = Math.max(40, this.focusBarHeight - 10);\r\n\t\tthis.updateFocusBar();\r\n\t}\r\n\r\n\tupdateFocusBar(): void {\r\n\t\tconst maskFocusBar = document.querySelector(`.${this.FOCUS_BAR_CLASS}`) as HTMLElement;\r\n\t\tconst maskOverlay = document.querySelector(`.${this.MASK_OVERLAY_CLASS}`) as HTMLElement;\r\n\r\n\t\tif (maskFocusBar && maskOverlay) {\r\n\t\t\tconst mouseY = parseInt(maskFocusBar.style.top || '0');\r\n\r\n\t\t\tmaskFocusBar.style.height = `${this.focusBarHeight}px`;\r\n\t\t\tconst clipPathValue = `polygon(0px 0px, 100% 0px, 100% ${mouseY}px, 0px ${mouseY}px, 0px ${mouseY + this.focusBarHeight}px, 100% ${\r\n\t\t\t\tmouseY + this.focusBarHeight\r\n\t\t\t}px, 100% 100%, 0px 100%)`;\r\n\t\t\tmaskOverlay.style.clipPath = clipPathValue;\r\n\t\t}\r\n\r\n\t\tlocalStorage.setItem(this.SCREEN_MASK_HEIGHT_KEY, JSON.stringify(this.focusBarHeight));\r\n\t}\r\n\r\n\tcloseFocusBar(): void {\r\n\t\tconst body = document.querySelector('body')!;\r\n\t\tconst existingMask = document.querySelector(`.${this.MASK_CLASS}`);\r\n\r\n\t\tif (existingMask) {\r\n\t\t\tbody.removeChild(existingMask);\r\n\t\t\tbody.removeEventListener('mousemove', this.listener);\r\n\t\t\tlocalStorage.setItem('SCREEN_MASK', JSON.stringify(false));\r\n\t\t\tdocument.querySelector('.screen-mask-btn')?.classList.remove('active');\r\n\t\t}\r\n\t}\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { AccessibilityFontSizes } from '../models/accessibility-font-sizes.enum';\r\nimport { AccessibilityContrasts } from '../models/accessibility-contrasts.enum';\r\nimport { AccessibilityTextMagnifierService } from './accessibility-text-magnifier.service';\r\nimport { AccessibilityScreenMaskService } from './accessibility-screen-mask.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AccessibilityService {\r\n\treadonly fontSizeLocalStorageKey = 'ACCESSIBILITY_FONT_SIZE_IX';\r\n\treadonly contrastLocalStorageKey = 'ACCESSIBILITY_CONTRAST';\r\n\treadonly textMagnifierLocalStorageKey = 'TEXT_MAGNIFIER';\r\n\treadonly screenMaskLocalStorageKey = 'SCREEN_MASK';\r\n\r\n\tsizeIncreaseSubject = new Subject<boolean>();\r\n\tcontrastSubject = new Subject<string>();\r\n\r\n\treadonly #textMagnifier = inject(AccessibilityTextMagnifierService);\r\n\treadonly #screenMask = inject(AccessibilityScreenMaskService);\r\n\r\n\ttoggleScreenMask(): void {\r\n\t\tconst currnetStatus = this.getSavedScreenMaskStatus();\r\n\t\tconst oppositeStatus = JSON.stringify(!currnetStatus);\r\n\t\tthis.#screenMask.toggleScreenMask(!currnetStatus);\r\n\t\tlocalStorage.setItem(this.screenMaskLocalStorageKey, oppositeStatus);\r\n\t}\r\n\r\n\tcloseFocusBar(): void {\r\n\t\tthis.#screenMask.closeFocusBar();\r\n\t}\r\n\r\n\ttoggleTextMagnifier(): void {\r\n\t\tconst currnetStatus = this.getSavedTextMagnifierStatus();\r\n\t\tconst oppositeStatus = JSON.stringify(!currnetStatus);\r\n\t\tthis.#textMagnifier.toggleTextMagnifier(!currnetStatus);\r\n\t\tlocalStorage.setItem(this.textMagnifierLocalStorageKey, oppositeStatus);\r\n\t}\r\n\r\n\tgetSavedTextMagnifierStatus(): boolean {\r\n\t\tconst savedTextMagnifierStatus = JSON.parse(localStorage.getItem(this.textMagnifierLocalStorageKey) ?? 'false');\r\n\t\treturn savedTextMagnifierStatus;\r\n\t}\r\n\r\n\tgetSavedScreenMaskStatus(): boolean {\r\n\t\tconst savedScreenMaskStatus = JSON.parse(localStorage.getItem(this.screenMaskLocalStorageKey) ?? 'false');\r\n\t\treturn savedScreenMaskStatus;\r\n\t}\r\n\r\n\tsetSavedTextMagnifierStatus(): void {\r\n\t\tconst currnetStatus = this.getSavedTextMagnifierStatus();\r\n\t\tthis.#textMagnifier.toggleTextMagnifier(currnetStatus);\r\n\t}\r\n\r\n\tsetSavedScreenMaskStatus(): void {\r\n\t\tconst currnetStatus = this.getSavedScreenMaskStatus();\r\n\t\tthis.#screenMask.toggleScreenMask(currnetStatus);\r\n\t}\r\n\r\n\tsaveContrast(contrast: string): void {\r\n\t\tlocalStorage.setItem(this.contrastLocalStorageKey, contrast);\r\n\t}\r\n\r\n\tgetSavedContrast(): AccessibilityContrasts {\r\n\t\tconst savedContrast = localStorage.getItem(this.contrastLocalStorageKey);\r\n\t\treturn savedContrast as AccessibilityContrasts ?? AccessibilityContrasts.BASE;\r\n\t}\r\n\r\n\tgetSavedFontSize(): number {\r\n\t\tconst savedFontSizeIx = localStorage.getItem(this.fontSizeLocalStorageKey);\r\n\t\treturn JSON.parse(savedFontSizeIx ?? '0');\r\n\t}\r\n\r\n\tsaveFontSize(ix: number): void {\r\n\t\tlocalStorage.setItem(this.fontSizeLocalStorageKey, ix.toString());\r\n\t}\r\n\r\n\tsetFontSize(fontSizeIx: number): void {\r\n\t\tconst sizes = Object.values(AccessibilityFontSizes);\r\n\r\n\t\tif (fontSizeIx > 0) {\r\n\t\t\tthis.sizeIncreaseSubject.next(true);\r\n\t\t} else {\r\n\t\t\tthis.sizeIncreaseSubject.next(false);\r\n\t\t}\r\n\r\n\t\tdocument.querySelector('html')!.style.fontSize = sizes[fontSizeIx];\r\n\t}\r\n\r\n\tsetContrast(contrast: string): void {\r\n\t\tthis.contrastSubject.next(contrast);\r\n\t\tdocument.querySelector('html')!.className = contrast;\r\n\t}\r\n}\r\n","<h1 mat-dialog-title class=\"text-2-xl\">{{ \"ACCESSIBILITY.TITLE\" | translate }}</h1>\r\n\r\n<div mat-dialog-content>\r\n\t<div class=\"font-size-wrapper\">\r\n\t\t<p class=\"settings-title\">\r\n\t\t\t{{ \"ACCESSIBILITY.FONT_SIZE_LABEL\" | translate }}\r\n\t\t</p>\r\n\r\n\t\t<mat-tab-group [selectedIndex]=\"selectedFontSizeIndex\" (selectedTabChange)=\"changeFontSize($event)\" animationDuration=\"0ms\">\r\n\t\t\t<mat-tab [label]=\"'100%'\"></mat-tab>\r\n\t\t\t<mat-tab [label]=\"'150%'\"></mat-tab>\r\n\t\t\t<mat-tab [label]=\"'200%'\"></mat-tab>\r\n\t\t</mat-tab-group>\r\n\t</div>\r\n\r\n\t<div class=\"contrast-wrapper\">\r\n\t\t<p class=\"settings-title\">\r\n\t\t\t{{ \"ACCESSIBILITY.CONTRAST_LABEL\" | translate }}\r\n\t\t</p>\r\n\r\n\t\t<div class=\"contrast-option-wrapper\">\r\n\t\t\t@for (contrast of contrasts; track contrast) {\r\n\t\t\t<button (click)=\"changeContrast(contrast)\" [class]=\"contrast\" [class.active]=\"contrast === currentContrast\" class=\"contrast-option\">\r\n\t\t\t\t<mat-icon class=\"material-icons-outlined\">visibility</mat-icon>\r\n\t\t\t</button>\r\n\t\t\t}\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"visual-tools-wrapper\">\r\n\t\t<p class=\"settings-title\">\r\n\t\t\t{{ \"ACCESSIBILITY.VISUAL_TOOLS_LABEL\" | translate }}\r\n\t\t</p>\r\n\r\n\t\t<button mat-stroked-button [class.active]=\"isTextMagnifierEnabled\" (click)=\"toggleTextMagnifier()\">\r\n\t\t\t{{ \"ACCESSIBILITY.TEXT_MAGNIFIER\" | translate }}\r\n\t\t</button>\r\n\r\n\t\t<button class=\"screen-mask-btn\" mat-stroked-button [class.active]=\"isScreenMaskEnabled\" (click)=\"toggleScreenMask()\">\r\n\t\t\t{{ \"ACCESSIBILITY.SCREEN_MASK\" | translate }}\r\n\t\t</button>\r\n\t</div>\r\n\r\n\t<div class=\"divider\"></div>\r\n\r\n\t<div class=\"feature-links-wrapper\">\r\n\t\t@for (feature of featureSources; track feature.text) {\r\n\t\t\t<a [href]=\"feature.link\" class=\"feature-link\">\r\n\t\t\t\t{{ feature.text | translate }} \r\n\t\t\t\t<mat-icon>arrow_forward_ios</mat-icon>\r\n\t\t\t</a>\r\n\t\t}\r\n\t</div>\r\n</div>\r\n\r\n<div mat-dialog-actions>\r\n\t<button mat-stroked-button (click)=\"reset()\">{{ \"ACCESSIBILITY.RESET\" | translate }}</button>\r\n\t<button mat-flat-button mat-dialog-close>{{ \"ACCESSIBILITY.CLOSE\" | translate }}</button>\r\n</div>\r\n","import { Component, inject, OnInit } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MatTabChangeEvent, MatTabsModule } from '@angular/material/tabs';\r\nimport { AccessibilityService } from './services/accessibility.service';\r\nimport { AccessibilityContrasts } from './models/accessibility-contrasts.enum';\r\n\r\n@Component({\r\n\tselector: 'lib-accessibility-dialog',\r\n\timports: [MatDialogModule, TranslateModule, MatButtonModule, MatTabsModule, MatIconModule],\r\n\ttemplateUrl: './accessibility-dialog.component.html',\r\n\tstyleUrl: './accessibility-dialog.component.scss',\r\n})\r\nexport class AccessibilityDialogComponent implements OnInit {\r\n\tisTextMagnifierEnabled!: boolean;\r\n\tisScreenMaskEnabled!: boolean;\r\n\tselectedFontSizeIndex!: number;\r\n\tcurrentContrast = AccessibilityContrasts.BASE;\r\n\r\n\treadonly #accessibility = inject(AccessibilityService);\r\n\r\n\treadonly contrasts = Object.values(AccessibilityContrasts);\r\n\r\n\treadonly data = inject<{ baseUrl: string }>(MAT_DIALOG_DATA);\r\n\r\n\tfeatureSources: {text: string, link: string}[] = [];\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.selectedFontSizeIndex = this.#accessibility.getSavedFontSize();\r\n\t\tthis.currentContrast = this.#accessibility.getSavedContrast();\r\n\t\tthis.isTextMagnifierEnabled = this.#accessibility.getSavedTextMagnifierStatus();\r\n\t\tthis.isScreenMaskEnabled = this.#accessibility.getSavedScreenMaskStatus();\r\n\r\n\t\tthis.setFeatureSources();\r\n\t}\r\n\r\n\tchangeContrast(contrast: AccessibilityContrasts): void {\r\n\t\tthis.currentContrast = contrast;\r\n\t\tthis.#accessibility.saveContrast(contrast);\r\n\t\tthis.#accessibility.setContrast(contrast);\r\n\t}\r\n\r\n\tchangeFontSize(e: MatTabChangeEvent): void {\r\n\t\tthis.selectedFontSizeIndex = e.index;\r\n\t\tthis.#accessibility.saveFontSize(this.selectedFontSizeIndex);\r\n\t\tthis.#accessibility.setFontSize(this.selectedFontSizeIndex);\r\n\t}\r\n\r\n\ttoggleTextMagnifier(): void {\r\n\t\tthis.#accessibility.toggleTextMagnifier();\r\n\t\tthis.isTextMagnifierEnabled = this.#accessibility.getSavedTextMagnifierStatus();\r\n\t}\r\n\r\n\ttoggleScreenMask(): void {\r\n\t\tthis.#accessibility.toggleScreenMask();\r\n\t\tthis.isScreenMaskEnabled = this.#accessibility.getSavedScreenMaskStatus();\r\n\t}\r\n\r\n\tcloseFocusBar(): void {\r\n\t\tthis.#accessibility.closeFocusBar();\r\n\t}\r\n\r\n\treset(): void {\r\n\t\tif (this.isTextMagnifierEnabled) {\r\n\t\t\tthis.toggleTextMagnifier();\r\n\t\t}\r\n\r\n\t\tif (this.isScreenMaskEnabled) {\r\n\t\t\tthis.toggleScreenMask();\r\n\t\t}\r\n\t\t\r\n\t\tthis.changeContrast(AccessibilityContrasts.BASE);\r\n\t\tthis.selectedFontSizeIndex = 0;\r\n\t\tthis.#accessibility.saveFontSize(this.selectedFontSizeIndex);\r\n\t\tthis.#accessibility.setFontSize(this.selectedFontSizeIndex);\r\n\t}\r\n\r\n\tprivate setFeatureSources(): void {\r\n\t\tthis.featureSources = [\r\n\t\t\t{\r\n\t\t\t\ttext: 'ACCESSIBILITY.EASY_TO_READ',\r\n\t\t\t\tlink: `${this.data.baseUrl}easy-read`,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttext: 'ACCESSIBILITY.OTHER_SETTINGS',\r\n\t\t\t\tlink: `${this.data.baseUrl}accessibility-features`,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttext: 'ACCESSIBILITY.NOTIFICATION',\r\n\t\t\t\tlink: `${this.data.baseUrl}accessibility-statement`,\r\n\t\t\t}\r\n\t\t]\r\n\t}\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslateLoader } from '@ngx-translate/core';\r\nimport { Observable, forkJoin, of } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class CustomTranslateLoader implements TranslateLoader {\r\n\tconstructor(private http: HttpClient) {}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\tgetTranslation(lang: string): Observable<any> {\r\n\t\tconst defaultTranslationsDirectory = `./assets/i18n/${lang}.json`;\r\n\t\tconst overrideDirectory = `./assets/i18n/overrides/${lang}.json`;\r\n\r\n\t\tconst defaultTranslations$ = this.http.get(defaultTranslationsDirectory).pipe(catchError(() => of({})));\r\n\t\tconst overrideTranslations$ = this.http.get(overrideDirectory).pipe(catchError(() => of({})));\r\n\r\n\t\treturn forkJoin([defaultTranslations$, overrideTranslations$]).pipe(\r\n\t\t\tmap(([defaultTranslations, overrideTranslations]) => {\r\n\t\t\t\treturn this.mergeDeep(defaultTranslations, overrideTranslations);\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\tprivate mergeDeep(target: any, source: any): any {\r\n\t\tconst output = { ...target };\r\n\t\tif (this.isObject(target) && this.isObject(source)) {\r\n\t\t\tObject.keys(source).forEach((key) => {\r\n\t\t\t\tif (this.isObject(source[key])) {\r\n\t\t\t\t\tif (!(key in target)) {\r\n\t\t\t\t\t\tObject.assign(output, { [key]: source[key] });\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\toutput[key] = this.mergeDeep(target[key], source[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tObject.assign(output, { [key]: source[key] });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn output;\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\tprivate isObject(item: any): boolean {\r\n\t\treturn item && typeof item === 'object' && !Array.isArray(item);\r\n\t}\r\n}\r\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport const translations: { [key: string]: any } = {\r\n\tlv: {\r\n\t\tCOOKIE_CONSENT: {\r\n\t\t\tDESCRIPTION:\r\n\t\t\t\t'Ar Jūsu piekrīšanu šajā vietnē izmantotas funkcionālās un analītiski statistiskās sīkdatnes. <br/> Ja piekrītat šo sīkdatņu izmantošanai, lūdzu, atzimējiet savu izvēli.',\r\n\t\t\tACCEPT: 'Apstiptināt',\r\n\t\t\tDECLINE: 'Noraidīt',\r\n\t\t\tCONFIGURE: 'Pielāgot izvēli',\r\n\t\t\tPRIVACY: 'Privātums',\r\n\t\t\tDETAILS: 'Detalizētāka informācija par izmantojamām sīkdatnēm',\r\n\t\t\tMORE_INFORMATION: {\r\n\t\t\t\tNAME: 'Nosaukums',\r\n\t\t\t\tPURPOSE: 'Mērķis',\r\n\t\t\t\tCATEGORY: 'Kategorija',\r\n\t\t\t\tDURATION: 'Apstrādes termiņš',\r\n\t\t\t\tALLOW_COOKIES: 'allowCookies',\r\n\t\t\t\tALLOW_COOKIES_PURPOSE: 'Saglabā lietotāja piekrišanu sīkdatņu izmantošanai un statistikas ieguvei.',\r\n\t\t\t\tFUNCTIONAL_COOKIES: 'Funkcionālās sīkdatnes',\r\n\t\t\t\tONE_YEAR: '1 gads',\r\n\t\t\t\tCULTURE: 'culture',\r\n\t\t\t\tCULTURE_PURPOSE: 'Saglabā lietotāja izvēlēto valodu, lai lietotājam katru reizi nav jāpārslēdz.',\r\n\t\t\t\tONE_MONTH: '1 mēnesis',\r\n\t\t\t\tPK_ID: '_pk_id',\r\n\t\t\t\tPK_ID_PURPOSE: 'Apmeklējuma uzskaites sīkdatne, kas pieglabā unikāla apmeklētāja ID.',\r\n\t\t\t\tANALYTICAL_COOKIES: 'Analītiskās statistiskās sīkdatnes',\r\n\t\t\t\tTHIRTEEN_MONTHS: '13 mēneši',\r\n\t\t\t\tPK_SES: '_pk_ses',\r\n\t\t\t\tPK_SES_PURPOSE: 'Sesijas sīkdatne, kas pieglabā datus par apmeklējumu.',\r\n\t\t\t\tSESSION_COOKIES: 'Sesijas sīkdatnes',\r\n\t\t\t\tTHIRTY_MINUTES: '30 min',\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\ten: {\r\n\t\tCOOKIE_CONSENT: {\r\n\t\t\tDESCRIPTION:\r\n\t\t\t\t'By your consent, functional and analytical cookies are used on this site. <br/> If you agree to the use of these cookies, please confirm your choice.',\r\n\t\t\tACCEPT: 'Accept',\r\n\t\t\tDECLINE: 'Decline',\r\n\t\t\tCONFIGURE: 'Configure choice',\r\n\t\t\tPRIVACY: 'Privacy',\r\n\t\t\tDETAILS: 'More information about the cookies used',\r\n\t\t\tMORE_INFORMATION: {\r\n\t\t\t\tNAME: 'Name',\r\n\t\t\t\tPURPOSE: 'Purpose',\r\n\t\t\t\tCATEGORY: 'Category',\r\n\t\t\t\tDURATION: 'Duration',\r\n\t\t\t\tALLOW_COOKIES: 'allowCookies',\r\n\t\t\t\tALLOW_COOKIES_PURPOSE: 'Saves user consent for cookie usage and statistics gathering.',\r\n\t\t\t\tFUNCTIONAL_COOKIES: 'Functional cookies',\r\n\t\t\t\tONE_YEAR: '1 year',\r\n\t\t\t\tCULTURE: 'culture',\r\n\t\t\t\tCULTURE_PURPOSE: \"Saves user selected language so it doesn't need to be switched every time.\",\r\n\t\t\t\tONE_MONTH: '1 month',\r\n\t\t\t\tPK_ID: '_pk_id',\r\n\t\t\t\tPK_ID_PURPOSE: 'Visit tracking cookie that stores unique visitor ID.',\r\n\t\t\t\tANALYTICAL_COOKIES: 'Analytical statistical cookies',\r\n\t\t\t\tTHIRTEEN_MONTHS: '13 months',\r\n\t\t\t\tPK_SES: '_pk_ses',\r\n\t\t\t\tPK_SES_PURPOSE: 'Session cookie that stores visit data.',\r\n\t\t\t\tSESSION_COOKIES: 'Session cookies',\r\n\t\t\t\tTHIRTY_MINUTES: '30 min',\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n};\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class MatomoService {\r\n\tsetCookies(): void {\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\t(window as any)['_paq'].push(['setCookieConsentGiven']);\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\t(window as any)['_paq'].push(['rememberCookieConsentGiven']);\r\n\t}\r\n}","import { inject, Injectable } from '@angular/core';\r\nimport { MatomoService } from './providers';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class AnalyticsService {\r\n\treadonly #matomo = inject(MatomoService);\r\n\r\n\tcookieConsentGiven(approved: boolean): void {\r\n\t\tif (approved) {\r\n\t\t\tthis.#matomo.setCookies();\r\n\t\t}\r\n\t}\r\n}\r\n","@if (!isClosed) {\r\n<section class=\"cookie-consent-container\">\r\n\t<div class=\"cookie-consent-content\">\r\n\t\t<div class=\"cookie-consent-description\" [innerHTML]=\"'COOKIE_CONSENT.DESCRIPTION' | translate\"></div>\r\n\r\n\t\t<div class=\"cookie-consent-actions\">\r\n\t\t\t<button mat-flat-button (click)=\"accept()\">{{ \"COOKIE_CONSENT.ACCEPT\" | translate }}</button>\r\n\t\t\t<button mat-stroked-button (click)=\"decline()\">{{ \"COOKIE_CONSENT.DECLINE\" | translate }}</button>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"cookie-consent-info\">\r\n\t\t\t<a [href]=\"privacyPolicyUrl\" class=\"cookie-consent-info--privacy\">{{ \"COOKIE_CONSENT.PRIVACY\" | translate }}</a>\r\n\t\t\t|\r\n\t\t\t<button class=\"cookie-consent-info--details\" (click)=\"toggleDetails()\">\r\n\t\t\t\t{{ \"COOKIE_CONSENT.DETAILS\" | translate }}\r\n\r\n\t\t\t\t@if (isDetailsVisible) {\r\n\t\t\t\t<mat-icon class=\"spin\">{{ \"keyboard_arrow_down\" }}</mat-icon>\r\n\t\t\t\t} @else {\r\n\t\t\t\t<mat-icon class=\"spin\">{{ \"keyboard_arrow_up\" }}</mat-icon>\r\n\t\t\t\t}\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"cookie-consent--details\" [class.cookie-consent--details-hidden]=\"!isDetailsVisible\">\r\n\t\t<table>\r\n\t\t\t<thead>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<th>{{ \"COOKIE_CONSENT.MORE_INFORMATION.NAME\" | translate }}</th>\r\n\t\t\t\t\t<th>{{ \"COOKIE_CONSENT.MORE_INFORMATION.PURPOSE\" | translate }}</th>\r\n\t\t\t\t\t<th>{{ \"COOKIE_CONSENT.MORE_INFORMATION.CATEGORY\" | translate }}</th>\r\n\t\t\t\t\t<th>{{ \"COOKIE_CONSENT.MORE_INFORMATION.DURATION\" | translate }}</th>\r\n\t\t\t\t</tr>\r\n\t\t\t</thead>\r\n\t\t\t<tbody>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.ALLOW_COOKIES\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.ALLOW_COOKIES_PURPOSE\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.FUNCTIONAL_COOKIES\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.ONE_YEAR\" | translate }}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.CULTURE\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.CULTURE_PURPOSE\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.FUNCTIONAL_COOKIES\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.ONE_MONTH\" | translate }}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.PK_ID\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.PK_ID_PURPOSE\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.ANALYTICAL_COOKIES\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.THIRTEEN_MONTHS\" | translate }}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.PK_SES\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.PK_SES_PURPOSE\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.SESSION_COOKIES\" | translate }}</td>\r\n\t\t\t\t\t<td>{{ \"COOKIE_CONSENT.MORE_INFORMATION.THIRTY_MINUTES\" | translate }}</td>\r\n\t\t\t\t</tr>\r\n\t\t\t</tbody>\r\n\t\t</table>\r\n\t</div>\r\n</section>\r\n\r\n}\r\n","import { Component, inject, Input, OnInit } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { translations } from './translations/cookie-consent.translations';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { AnalyticsService } from '../services';\r\n\r\n@Component({\r\n\tselector: 'lib-cookie-consent',\r\n\timports: [TranslateModule, MatButtonModule, MatIconModule, MatCheckboxModule],\r\n\ttemplateUrl: './cookie-consent.component.html',\r\n\tstyleUrl: './cookie-consent.component.scss',\r\n})\r\nexport class CookieConsentComponent implements OnInit {\r\n\t@Input() script!: string;\r\n\t@Input() privacyPolicyUrl!: string;\r\n\r\n\treadonly #analytics = inject(AnalyticsService);\r\n\treadonly #translate = inject(TranslateService);\r\n\r\n\tisClosed = false;\r\n\tisDetailsVisible = false;\r\n\r\n\treadonly #COOKIE_CONSENT_ACCEPTED_KEY = 'cookie-consent-accepted';\r\n\treadonly #COOKIE_CONSENT_DECLINED_KEY = 'cookie-consent-declined';\r\n\r\n\tngOnInit(): void {\r\n const script = document.createElement('script');\r\n script.async = true;\r\n script.defer = true;\r\n script.innerHTML = this.script;\r\n document.body.appendChild(script);\r\n \r\n\t\tif (this.isCookieConsentConfigured()) {\r\n\t\t\tthis.isClosed = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst currentLang = this.#translate.getCurrentLang();\r\n\r\n\t\tthis.#translate.setTranslation(currentLang, translations[currentLang.split('-')[0]], true);\r\n\t}\r\n\r\n\ttoggleDetails(): void {\r\n\t\tthis.isDetailsVisible = !this.isDetailsVisible;\r\n\t}\r\n\r\n\taccept(): void {\r\n\t\tthis.isClosed = true;\r\n\t\tthis.#analytics.cookieConsentGiven(true);\r\n\t\tlocalStorage.setItem(this.#COOKIE_CONSENT_ACCEPTED_KEY, 'true');\r\n\t}\r\n\r\n\tdecline(): void {\r\n\t\tthis.isClosed = true;\r\n\t\tlocalStorage.setItem(this.#COOKIE_CONSENT_DECLINED_KEY, 'true');\r\n\t}\r\n\r\n\tprivate isCookieConsentConfigured(): boolean {\r\n\t\tconst isAccepted = localStorage.getItem(this.#COOKIE_CONSENT_ACCEPTED_KEY) === 'true';\r\n\r\n\t\tconst isDeclined = localStorage.getItem(this.#COOKIE_CONSENT_DECLINED_KEY) === 'true';\r\n\r\n\t\tif (isAccepted) {\r\n this.accept();\r\n\t\t}\r\n\r\n\t\treturn isAccepted || isDeclined;\r\n\t}\r\n}\r\n","/*\r\n * Public API Surface of ngx-common\r\n */\r\n\r\nexport * from './lib/services';\r\nexport * from './lib/inline-message';\r\nexport * from './lib/pipes';\r\nexport * from './lib/directives';\r\nexport * from './lib/close-button';\r\nexport * from './lib/notification-message';\r\nexport * from './lib/tld-loader'\r\nexport * from './lib/helpers';\r\nexport * from './lib/company-product';\r\nexport * from './lib/footer';\r\nexport * from './lib/file-upload';\r\nexport * from './lib/filter-bar';\r\nexport * from './lib/multi-functional-table';\r\nexport * from './lib/confirmation-modal';\r\nexport * from './lib/terminology';\r\nexport * from './lib/open-close-button';\r\nexport * from './lib/constants';\r\nexport * from './lib/extension-dialog';\r\nexport * from './lib/status-display';\r\nexport * from './lib/text-to-speech';\r\nexport * from './lib/llm';\r\nexport * from './lib/sidebar';\r\nexport * from './lib/toast';\r\nexport * from './lib/core';\r\nexport * from './lib/global-message';\r\nexport * from './lib/subscription';\r\nexport * from './lib/new-feature-dialog';\r\nexport * from './lib/accessibility';\r\nexport * from './lib/custom-translate-loader';\r\nexport * from './lib/analytics';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","_c0","i2.TerminologyConfigService","i1.SystemApiService","_c1","icons","i1.IconService","i1.ExtensionDialogService","_c3","_c2","_forTrack0","i1.DOMService","i1.TerminologyConfigService","i2.EngineTermApiService","i2.AlertService","i3.TerminologyCollectionService","i4.TerminologyApiService","i1.TerminologyService","i1.TerminologyCollectionService","i3.TerminologyService","i2.TerminologyService","i3.IconService","i4","i5","i7","i2.IconService","i2.LanguageTranslateService","i3","catchError","map"],"mappings":"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"}
|