{"version":3,"file":"progress-telerik-angular-native-report-viewer.mjs","sources":["../../src/lib/localization/messages.ts","../../src/lib/reporting-angular-viewer.service.ts","../../src/lib/parameters/parameters-section.component.ts","../../src/lib/toolbar-tools/pager.component.ts","../../src/lib/directives/after-filter-changed.directive.ts","../../src/lib/search/search-window.component.ts","../../src/lib/models/zoom-level.interface.ts","../../src/lib/toolbar-tools/zoom.component.ts","../../src/lib/reporting-angular-viewer.component.ts","../../src/lib/reporting-angular-viewer.module.ts","../../src/index.ts","../../src/progress-telerik-angular-native-report-viewer.ts"],"sourcesContent":["import { LocalizationMessageType } from '@progress/telerik-common-report-viewer';\n\nexport const messages: LocalizationMessageType = {\n    ReportViewer_SendEmailDialogToLabel: 'To:',\n    ReportViewer_SendEmailDialogTitle: 'Send Email',\n    ReportViewer_SearchDialogCaptionText: 'Find',\n    ReportViewer_SearchDialogMatchWholeWordTitle: 'Match Whole Word',\n    ReportViewer_SearchDialogUseRegexTitle: 'Use Regex',\n    ReportViewer_SearchDialogMatchCaseTitle: 'Match Case',\n    ReportViewer_SearchDialogNavigateUpTitle: 'Navigate Up',\n    ReportViewer_SearchDialogNavigateDownTitle: 'Navigate Down',\n    ReportViewer_SearchDialogPageText: 'page',\n    ReportViewer_SearchDialogComboBoxPlaceholderText: 'Search...',\n    ReportViewer_SendEmailDialogClose: 'Close',\n    ReportViewer_SearchDialogTitle: 'Search in report',\n    ReportViewer_SearchDialogClearTitle: 'Clear',\n    ReportViewer_SearchDialogNoResultsLabel: 'No results',\n    ReportViewer_ToolbarNavigateBackwardTitle: 'Navigate Backward',\n    ReportViewer_ToolbarNavigateForwardTitle: 'Navigate Forward',\n    ReportViewer_ToolbarSearchTitle: 'Toggle Search',\n    ReportViewer_ToolbarExportTitle: 'Export',\n    ReportViewer_ToolbarToggleDocumentMapTitle: 'Toggle Document Map',\n    ReportViewer_ToolbarFirstPageTitle: 'First Page',\n    ReportViewer_ToolbarLastPageTitle: 'Last Page',\n    ReportViewer_ToolbarNextPageTitle: 'Next Page',\n    ReportViewer_ToolbarPreviousPageTitle: 'Previous Page',\n    ReportViewer_ToolbarToggleParametersAreaTitle: 'Toggle Parameters Area',\n    ReportViewer_ToolbarPrintPreviewTitle: 'Print Preview',\n    ReportViewer_ToolbarPrintReportTitle: 'Print',\n    ReportViewer_ToolbarInteractiveViewTitle: 'Interactive View',\n    ReportViewer_ToolbarRefreshTitle: 'Refresh',\n    ReportViewer_ToolbarStopRenderingTitle: 'Stop Rendering',\n    ReportViewer_ToolbarZoomInTitle: 'Zoom In',\n    ReportViewer_ToolbarZoomOutTitle: 'Zoom Out',\n    ReportViewer_ToolbarZoomComboBoxPlaceholderText: 'Choose zoom level',\n    ReportViewer_NoPageToDisplay: 'No page to display.',\n    ReportViewer_LoadingReport: 'Loading report...',\n    ReportViewer_LoadingReportPagesInProgress: '{0} pages loaded so far...',\n    ReportViewer_LoadedReportPagesComplete: 'Done. Total {0} pages loaded.',\n    ReportViewer_RenderingCancelled: 'Report processing was canceled.',\n    ReportViewer_PreparingPrint: 'Preparing document to print. Please wait...',\n    ReportViewer_PreparingDownload: 'Preparing document to download. Please wait...',\n    ReportViewer_MissingOrInvalidParameter: 'Error creating report document. Missing or invalid parameter value. Please input valid data for the following parameters:',\n    ReportViewer_ErrorSendingDocument: 'Error sending document.',\n    ReportViewer_UnableToGetReportParameters: 'Unable to get report parameters.',\n    ReportViewer_InvalidParameter: 'Invalid parameter',\n    ReportViewer_ErrorCreatingReportDocument: 'Error creating report document.',\n    ReportViewer_ErrorServiceUrl: \"Cannot access the Reporting REST service. (serviceUrl = '{0}'). Make sure the service address is correct and enable CORS if needed. (https://enable-cors.org)\",\n    ReportViewer_NoReport: 'No report.',\n    ReportViewer_AutoRunDisabled: 'Please validate the report parameter values and press Preview to generate the report.',\n};\n","import { EventEmitter, Injectable } from '@angular/core';\nimport {\n    ContentArea,\n    DocumentInfo,\n    ReportController,\n    ReportControllerOptions,\n    ReportSourceOptions,\n    ScaleMode,\n    ServiceType,\n    ViewMode,\n    ServiceClient,\n    SearchManager,\n    ServiceClientOptions,\n    ServiceClientLoginInfo,\n    ParameterInfo,\n    reportSourcesAreEqual\n} from '@progress/telerik-common-report-viewer';\nimport { messages } from './localization/messages';\nimport { HistoryItem } from './models/history-item.interface';\n\n\nconst zoomStep = 0.25;\nconst minScale = 0.25;\nconst maxScale = 4;\n\n@Injectable()\nexport class ReportingAngularViewerService {\n    public options: any = {\n        contentTabIndex: 1000,\n        authenticationToken: '',\n        reportSource: {\n            parameters: {},\n            report: null,\n        },\n        scale: 1,\n        scaleMode: 2,\n        serviceType: 0,\n        serviceUrl: null,\n        viewMode: 0,\n        keepClientAlive: true,\n        messages: messages,\n        pageMode: 0,\n        printMode: 0,\n        reportServer: null,\n    };\n\n    public documentInfo: DocumentInfo = {\n        documentReady: false,\n        documentMapAvailable: false,\n        containsFrozenContent: false,\n        pageCount: 1,\n        documentMapNodes: [],\n        bookmarkNodes: [],\n        renderingExtensions: [],\n    };\n\n    public onZoomChange: EventEmitter<number> = new EventEmitter<number>();\n\n    public parameters: ParameterInfo[] = [];\n    public isSearchWindowOpen: boolean = false;\n    public currentHistoryIndex = -1;\n    public history: any[] = [];\n    public currentPageIndex: number = 0;\n    public renderingInProgress: boolean = false;\n    public isBackwardsNavigationInProgress: boolean = false;\n    public isParametersSectionAvailable: boolean = false;\n\n    public reportWidth: number;\n    public windowWidth: number = 310;\n    public windowHeight: number = 390;\n    public totalPages: number = 1;\n    public skip: number = 0;\n\n    public controller!: ReportController;\n    public serviceClient!: ServiceClient;\n    public searchManager!: SearchManager;\n    public contentArea!: ContentArea;\n\n    public getServiceClientOptions(): ServiceClientOptions {\n        if (this.options.serviceType === ServiceType.ReportServer && this.options.reportServer !== null) {\n            let serverOptions = this.options.reportServer;\n            let serviceUrl = serverOptions.url + '/api/reports';\n            let tokenUrl = serverOptions.url + '/Token';\n            let loginInfo = new ServiceClientLoginInfo(tokenUrl, serverOptions.username, serverOptions.password);\n\n            return new ServiceClientOptions(serviceUrl, loginInfo);\n        }\n\n        return new ServiceClientOptions(this.options.serviceUrl);\n    }\n\n    public getControllerOptions(): ReportControllerOptions {\n        return new ReportControllerOptions(\n            this.options.keepClientAlive,\n            this.options.authenticationToken,\n            this.options.reportSource,\n            this.options.printMode,\n            this.options.pageMode,\n            this.options.viewMode,\n            this.options.scaleMode,\n            this.options.scale,\n            this.options.messages\n        );\n    }\n\n    public setOptions(options: any) {\n        this.options = options;\n        this.controller.setOptions(this.getControllerOptions());\n        this.controller.refreshReport(true, '');\n    }\n\n    public applyHistory(reportSource: ReportSourceOptions, \n        page: number, \n        reportDocumentId: string, \n        scale: number, \n        scaleMode: number, \n        viewMode: number) {\n        this.controller.setReportSource(reportSource);\n        this.controller.setReportDocumentId(reportDocumentId);\n\n        if (this.controller.getScale() !== scale) {\n            this.setScale(scale);\n        }\n\n        if (this.controller.getScaleMode() !== scaleMode) {\n            this.setScaleMode(scaleMode);\n        }\n\n        if (this.controller.getViewMode() !== viewMode) {\n            this.setViewMode(viewMode);\n        }\n\n        this.controller.refreshReport(false /* ignoreCache */, reportDocumentId, true /* alwaysRespectAutoRun */);\n        this.controller.navigateToPage(page, undefined);\n    }\n\n    public applyParameter(id: string, value: any) {\n        this.isSearchWindowOpen = false;\n        this.controller.setParameter(id, value);\n        this.controller.previewReport();\n    }\n\n    public setScale(scale: number) {\n        this.options.scale = scale;\n        this.controller.setScale(scale);\n        this.onZoomChange.emit(scale);\n    }\n\n    public setScaleMode(scaleMode: ScaleMode) {\n        this.options.scaleMode = scaleMode;\n        this.controller.setScaleMode(scaleMode);\n    }\n\n    public setViewMode(mode?: ViewMode): void {\n        if (mode) {\n            this.options.viewMode = mode;\n        } else {\n            this.options.viewMode ? this.options.viewMode = 0 : this.options.viewMode = 1;\n        }\n\n        this.controller.setViewMode(this.options.viewMode);\n        this.controller.refreshReportCore(false, this.controller.getReportDocumentId());\n    }\n\n    public zoomIn(): void {\n        if (this.options.scale < maxScale) {\n            this.options.scale += zoomStep;\n            this.setScale(this.options.scale);\n        }\n    }\n\n    public zoomOut(): void {\n        if (this.options.scale > minScale) {\n            this.options.scale -= zoomStep;\n            this.setScale(this.options.scale);\n        }\n    }\n\n    public navigateBackwards(): void {\n        this.renderingInProgress = true;\n        this.isSearchWindowOpen = false;\n        this.isBackwardsNavigationInProgress = true;\n\n        this.currentHistoryIndex--;\n\n        if (this.history.length >= 0) {\n            const currentHistoryItem = this.history[this.currentHistoryIndex];\n            this.applyHistory(currentHistoryItem.reportSource, currentHistoryItem.page, currentHistoryItem.documentId, currentHistoryItem.scale, currentHistoryItem.scaleMode, currentHistoryItem.viewMode);\n        }\n    }\n\n    public navigateForward(): void {\n        this.renderingInProgress = true;\n        this.isSearchWindowOpen = false;\n\n        this.currentHistoryIndex++;\n\n        if (this.currentHistoryIndex < this.history.length) {\n            const currentHistoryItem = this.history[this.currentHistoryIndex];\n            this.applyHistory(currentHistoryItem.reportSource, currentHistoryItem.page, currentHistoryItem.documentId, currentHistoryItem.scale, currentHistoryItem.scaleMode, currentHistoryItem.viewMode);\n        }\n    }\n\n    public addHistoryItem(temp: boolean = false): HistoryItem {\n        this.removeTempHistoryItems();\n\n        const historyItem: HistoryItem = {\n            reportSource: { report: this.controller.getReportSource()?.report, parameters: this.options.reportSource.parameters },\n            documentId: this.controller.getReportDocumentId(),\n            page: this.getPageNumber(),\n            scale: this.controller.getScale(),\n            scaleMode: this.controller.getScaleMode(),\n            viewMode: this.controller.getViewMode(),\n            temp: temp\n        };\n\n        const controllerReportSource = this.controller.getReportSource();\n        if (!this.history.some(item => reportSourcesAreEqual({ firstReportSource: item.reportSource, secondReportSource: controllerReportSource }))) {\n            this.currentHistoryIndex++;\n\n            let deleteCount: number = this.isBackwardsNavigationInProgress ? 0 : this.history.length - this.currentHistoryIndex;\n            this.history.splice(this.currentHistoryIndex, deleteCount, historyItem);\n        }\n\n        this.isBackwardsNavigationInProgress = false\n\n        return historyItem;\n    }\n\n    public removeTempHistoryItems(): void {\n        var lastIndex = this.history.length - 1;\n\n        while (lastIndex >= 0 && this.history[lastIndex].temp) {\n            this.history.splice(lastIndex, 1);\n\n            if (this.currentHistoryIndex >= lastIndex) {\n                this.currentHistoryIndex--;\n            }\n            lastIndex--;\n        }\n    }\n\n    public clearReport(): void {\n        this.isSearchWindowOpen = this.renderingInProgress = false;\n        this.currentPageIndex = 0;\n        this.totalPages = 0;\n        this.documentInfo = new DocumentInfo();\n    }\n\n    public getPageNumber(): number {\n        return this.currentPageIndex + 1;\n    }\n}\n","import { AfterViewInit, Component, Input, ViewChild, ChangeDetectorRef } from '@angular/core';\nimport { ReportingAngularViewerService } from '../reporting-angular-viewer.service';\nimport { DatePickerComponent } from '@progress/kendo-angular-dateinputs';\nimport { debounceTime } from 'rxjs';\nimport { ParameterInfo, ParameterValue } from '@progress/telerik-common-report-viewer';\n\nconst SystemBooleanType = 'System.Boolean';\nconst SystemDateTimeType = 'System.DateTime';\n\n@Component({\n    selector: 'parameters-section',\n    template: `\n        <div *ngIf=\"parameter.isVisible\" class=\"k-card trv-parameter-container\">\n            <div class=\"k-card-header trv-parameter-header\">\n                <div class=\"k-card-title trv-parameter-title\" [title]=\"parameter.text\">{{parameter.text}}</div>\n            </div>\n            <div class=\"k-card-body trv-parameter-value\">\n                <div *ngIf=\"isInvalidInput(parameter)\" class=\"k-notification k-notification-error trv-parameter-error\">\n                    <div class=\"k-notification-wrap\">\n                        <span class=\"k-icon k-i-warning\"></span>\n                        <span class=\"k-notification-content trv-parameter-error-message\">{{' ' + service.options.messages.ReportViewer_InvalidParameter}}</span>\n                    </div>\n                </div>\n                <div class=\"trv-parameter-editor-available-values\">\n                    <kendo-multiselect\n                        *ngIf=\"parameter.multivalue && parameter.availableValues\"\n                        [data]=\"parameter.availableValues\"\n                        [valuePrimitive]=\"true\"\n                        textField=\"name\"\n                        valueField=\"value\"\n                        [value]=\"parameter.value\"\n                        (valueChange)=\"onValueChange(parameter, $event)\"\n                        [disabled]=\"loading\"\n                        [kendoDropDownFilter]=\"{caseSensitive: false, operator: 'contains'}\"\n                        >\n                    </kendo-multiselect>\n                    <kendo-combobox\n                        *ngIf=\"!parameter.multivalue && parameter.availableValues\"\n                        [data]=\"parameter.availableValues\"\n                        [valuePrimitive]=\"true\"\n                        textField=\"name\"\n                        valueField=\"value\"\n                        [value]=\"parameter.value\"\n                        (valueChange)=\"onValueChange(parameter, $event)\"\n                        [disabled]=\"loading\"\n                        >\n                    </kendo-combobox>\n                    <div *ngIf=\"parameter.availableValues\" class=\"k-actions k-actions-end trv-parameter-actions\">\n                        <button kendoButton *ngIf=\"parameter.multivalue\" fillMode=\"outline\" class=\"trv-select-all\" (click)=\"onSelectAllClick(parameter)\">Select all</button>\n                    </div>\n\n                    <kendo-datepicker *ngIf=\"parameter.type === 'System.DateTime' && !parameter.availableValues\"\n                        [value]=\"datepickerValue\"\n                        [disabled]=\"loading\"\n                        >\n                    </kendo-datepicker>\n\n                    <kendo-numerictextbox *ngIf=\"(parameter.type === 'System.Int64' || parameter.type ==='System.Double') && !parameter.availableValues\"\n                        [value]=\"parameter.value\"\n                        (valueChange)=\"onValueChange(parameter, $event)\"\n                        [disabled]=\"loading\"\n                        >\n                    </kendo-numerictextbox>\n\n                    <kendo-textbox *ngIf=\"parameter.type === 'System.String' && !parameter.availableValues\"\n                        [value]=\"parameter.value\"\n                        (valueChange)=\"onValueChange(parameter, $event)\"\n                        [disabled]=\"loading\"\n                        >\n                    </kendo-textbox>\n\n                    <input *ngIf=\"parameter.type === 'System.Boolean' && !parameter.availableValues\"\n                        type=\"checkbox\"\n                        kendoCheckBox\n                        [id]=\"parameter.id\"\n                        [checked]=\"(parameter.value && parameter.value !== 'False') || parameter.value === 'True'\"\n                        (change)=\"onValueChange(parameter, $event)\"\n                        [disabled]=\"loading\"\n                        />\n                </div>\n            </div>\n        </div>\n    `\n})\nexport class ParametersSectionComponent implements AfterViewInit {\n    @ViewChild(DatePickerComponent) public datePicker: DatePickerComponent;\n\n    @Input() public loading = true;\n    @Input() public parameter: ParameterInfo = {\n        name: '',\n        type: '',\n        text: '',\n        multivalue: false,\n        allowNull: false, \n        allowBlank: false,\n        isVisible: false, \n        autoRefresh: false,\n        hasChildParameters: false,\n        childParameters: [],\n        availableValues: [],\n        value: '',\n        id: '',\n        label: ''\n    };\n\n    public datepickerValue: Date = new Date();\n    isInvalidInput = ParametersSectionComponent.isInvalidInput\n\n    public static isInvalidInput(parameter: ParameterInfo): boolean {\n        if (parameter.allowNull) {\n            return false;\n        }\n\n        if (parameter.multivalue) {\n            return parameter.value == null || parameter.value.length === 0;\n        }\n\n        return parameter.value == null;\n    }\n\n    public constructor(public service: ReportingAngularViewerService,  private cdr: ChangeDetectorRef) {}\n\n    public ngAfterViewInit(): void {\n        this.datePicker?.valueChange.asObservable().pipe(debounceTime(this.parameter.autoRefresh ? 2000 : 0)).subscribe(value => {\n            this.onValueChange(this.parameter, adjustTimezone(value));\n        });\n            \n        const reportDateParam: ParameterInfo = <ParameterInfo>this.service.parameters.find(p => p.type === SystemDateTimeType && p.id === this.parameter.id);\n        this.datepickerValue = new Date(<string>reportDateParam?.value);\n    }\n\n    public onClearSelectionClick(param: ParameterInfo): void {\n        param.value = '';\n    }\n\n    public onSelectAllClick(parameter: ParameterInfo): void {\n        parameter.value = parameter.availableValues.map((val: ParameterValue) => val.value);\n\n        this.service.options.reportSource.parameters = JSON.parse(JSON.stringify(this.service.options.reportSource.parameters));\n        this.service.options.reportSource.parameters[parameter.id] = parameter.value;\n\n        if (!parameter.autoRefresh || !this.service.controller.autoRunEnabled) return;\n\n        this.service.applyParameter(parameter.id, parameter.value);\n    }\n\n    public onValueChange(parameter: ParameterInfo, value: any): void {\n        //TODO: should be removed once the common viewer accepts lower case true/false values\n        if (parameter.type === SystemBooleanType) {\n            value = value.target.checked ? 'True' : 'False';\n        }\n\n        parameter.value = value;\n        this.service.options.reportSource.parameters = JSON.parse(JSON.stringify(this.service.options.reportSource.parameters));\n\n        // Can't check for all falsy values because 0 is falsy, won't work with integer parameters\n        if (value === undefined || value === null || value.length === 0){\n            parameter.value = value = null;\n\n            if(!parameter.allowNull) return;\n        } \n\n        if (parameter.childParameters?.length > 0) {\n            parameter.childParameters.forEach((param: ParameterInfo) => {\n                delete this.service.options.reportSource.parameters[param.toString()];\n            });\n\n            this.service.options.reportSource.parameters[parameter.id] = parameter.value;\n\n            if (!parameter.autoRefresh || !this.service.controller.autoRunEnabled) return;\n\n            this.service.controller.setParameters(this.service.options.reportSource.parameters);\n            this.service.controller.refreshReport(true, '');\n        } else {\n            this.service.options.reportSource.parameters[parameter.id] = value;\n\n            if (!parameter.autoRefresh || !this.service.controller.autoRunEnabled) return;\n\n            this.service.applyParameter(parameter.id, value);\n\n            this.cdr.detectChanges();\n        }\n    }\n}\n\n// TODO: This method is taken from HTML viewer\nexport function adjustTimezone(date: Date) {\n    let result = new Date(\n        Date.UTC(\n            date.getFullYear(),\n            date.getMonth(),\n            date.getDate(),\n            date.getHours(),\n            date.getMinutes(),\n            date.getSeconds(),\n            date.getMilliseconds()\n        )\n    );\n    return result;\n}\n","import {\n    Component,\n    Input,\n    TemplateRef,\n    ViewChild,\n    ElementRef,\n    forwardRef,\n    ViewChildren,\n    QueryList,\n} from '@angular/core';\nimport { ToolBarToolComponent } from '@progress/kendo-angular-toolbar';\nimport { ReportingAngularViewerService } from '../reporting-angular-viewer.service';\nimport { PageChangeEvent, PagerComponent } from '@progress/kendo-angular-pager';\nimport {\n    SVGIcon,\n    caretAltLeftIcon,\n    caretAltRightIcon,\n    caretAltToLeftIcon,\n    caretAltToRightIcon\n} from '@progress/kendo-svg-icons';\nimport { isDocumentAvailable } from '@progress/kendo-angular-common';\n\n@Component({\n    providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => CustomPagerToolComponent) }],\n    selector: 'custom-pager-tool',\n    template: `\n        <ng-template #toolbarTemplate>\n            <span #toolbarElement>\n                <kendo-datapager #pager\n                    fillMode=\"flat\"\n                    [class]=\"{'k-disabled' : this.disabled}\"\n                    [tabindex]=\"tabindex\"\n                    [pageSize]=\"1\"\n                    [skip]=\"service.currentPageIndex\"\n                    [total]=\"service.totalPages\"\n                    [pageSizeValues]=\"false\"\n                    [info]=\"false\"\n                    [previousNext]=\"true\"\n                    type=\"input\"\n                    (pageChange)=\"onPageChange($event)\"\n                    >\n                </kendo-datapager>\n            </span>\n        </ng-template>\n        <ng-template #popupTemplate>\n            <button\n                #navButton\n                kendoButton\n                class=\"toolbar-nav-btn\"\n                icon=\"arrow-end-left\"\n                [svgIcon]=\"caretAltToLeftIcon\"\n                [tabindex]=\"tabindex\"\n                [disabled]=\"service.totalPages <= 1 || service.currentPageIndex === 0\"\n                [title]=\"getLocaleMessage('FirstPage')\"\n                (click)=\"overflowNavButton(0)\"\n                fillMode=\"flat\"> {{ getLocaleMessage('FirstPage') }}\n            </button>\n            <button\n                #navButton\n                kendoButton\n                class=\"toolbar-nav-btn\"\n                icon=\"arrow-60-left\"\n                [svgIcon]=\"caretAltLeftIcon\"\n                [tabindex]=\"tabindex\"\n                [disabled]=\"service.totalPages <= 1 || service.currentPageIndex === 0\"\n                [title]=\"getLocaleMessage('PreviousPage')\"\n                (click)=\"overflowNavButton(service.currentPageIndex - 1)\"\n                fillMode=\"flat\"> {{ getLocaleMessage('PreviousPage') }}\n            </button>\n            <button\n                #navButton\n                kendoButton\n                class=\"toolbar-nav-btn\"\n                icon=\"arrow-60-right\"\n                [svgIcon]=\"caretAltRightIcon\"\n                [tabindex]=\"tabindex\"\n                [disabled]=\"service.totalPages <= 1 || service.currentPageIndex === service.totalPages - 1\"\n                [title]=\"getLocaleMessage('NextPage')\"\n                (click)=\"overflowNavButton(service.currentPageIndex + 1)\"\n                fillMode=\"flat\"> {{ getLocaleMessage('NextPage') }}\n            </button>\n            <button\n                #navButton\n                kendoButton\n                class=\"toolbar-nav-btn\"\n                icon=\"arrow-end-right\"\n                [svgIcon]=\"caretAltToRightIcon\"\n                [tabindex]=\"tabindex\"\n                [disabled]=\"service.totalPages <= 1 || service.currentPageIndex === service.totalPages - 1\"\n                [title]=\"getLocaleMessage('LastPage')\"\n                (click)=\"overflowNavButton(service.totalPages - 1)\"\n                fillMode=\"flat\"> {{ getLocaleMessage('LastPage') }}\n            </button>\n        </ng-template>\n    `,\n    styles: [`\n        .toolbar-nav-btn {\n            width: 100%;\n            justify-content: start;\n        }\n    `]\n})\nexport class CustomPagerToolComponent extends ToolBarToolComponent {\n    @Input() public totalPages: number = 1;\n    @Input() public disabled: boolean = false;\n\n    @ViewChild('toolbarTemplate', { static: true }) public override toolbarTemplate!: TemplateRef<unknown>;\n    @ViewChild('popupTemplate', { static: true }) public override popupTemplate!: TemplateRef<unknown>;\n    @ViewChild('toolbarElement') public toolbarElement?: ElementRef;\n    @ViewChild('popupElement') public popupElement?: ElementRef;\n    @ViewChild('pager', { read: PagerComponent, static: false }) public pager?: PagerComponent;\n    @ViewChildren('navButton') public navButtons!: QueryList<ElementRef>\n\n    public tabindex: number = -1;\n    public prevKey: number = 38\n    public nextKey: number = 40;\n    public focusedIndex: any = -1;\n    public caretAltToLeftIcon: SVGIcon = caretAltToLeftIcon;\n    public caretAltLeftIcon: SVGIcon = caretAltLeftIcon;\n    public caretAltRightIcon: SVGIcon = caretAltRightIcon;\n    public caretAltToRightIcon: SVGIcon = caretAltToRightIcon;\n\n    constructor(public service: ReportingAngularViewerService) {\n        super();\n    }\n\n    public override canFocus(): boolean {\n        return true;\n    }\n\n    public override focus(ev: any): void {\n        this.tabindex = 0;\n\n        if (this.overflows) {\n            if (!isDocumentAvailable()) return;\n\n            if (ev) {\n                this.focusedIndex = this.getIndexOfFocused(this.prevKey, this.nextKey, this.buttonElements)(ev);\n                this.focusButton(this.focusedIndex, ev);\n            }\n        } else {\n            this.pager?.['element'].nativeElement.focus();\n        }\n    }\n\n    public override handleKey(ev: any): boolean {\n        if (this.overflows && isDocumentAvailable()) {\n\n            const peekAtIndex = this.makePeeker(this.buttonElements);\n            const isUnmodified = this.areEqual(this.focusedIndex);\n\n            this.focusedIndex = this.seekFocusedIndex(this.prevKey, this.nextKey, peekAtIndex)(this.focusedIndex, ev);\n            this.focusButton(this.focusedIndex, ev);\n\n            return !isUnmodified(this.focusedIndex);\n        }\n        this.tabindex = -1;\n\n        return false;\n    }\n\n    public overflowNavButton(pageIndex: number) {\n        this.service.currentPageIndex = pageIndex;\n        this.service.controller?.navigateToPage(this.service.getPageNumber(), undefined);\n    }\n\n    public getLocaleMessage(message: string): string {\n        return this.service.options.messages[`ReportViewer_Toolbar${message}Title`];\n    }\n\n    public onPageChange(e: PageChangeEvent): void {\n        this.service.currentPageIndex = e.skip;\n        this.service.controller?.navigateToPage(this.service.getPageNumber(), undefined);\n    }\n\n    private get buttonElements(): HTMLElement[] {\n        return [...this.navButtons.toArray().filter(el => !el.nativeElement.classList.contains('k-disabled'))].map(el => el.nativeElement);\n    }\n\n    private focusButton(index: number, ev: Partial<Event>): void {\n        // Guard against focusing twice on mousedown.\n        if (!ev.type || ev.type === 'focus' || ev.type === 'keydown') {\n            this.buttonElements[index]?.focus();\n        }\n    }\n\n    private getIndexOfFocused = (prevKeyCode: number, nextKeyCode: number, collection: HTMLElement[]): any => (ev: any): any => {\n        switch (ev.type) {\n            case 'keydown':\n                if (ev.keyCode === prevKeyCode) {\n                    return collection.length - 1;\n                }\n    \n                if (ev.keyCode === nextKeyCode) {\n                    return 0;\n                }\n    \n                break;\n    \n            case 'click':\n                return collection.findIndex(be => be === ev.target || be.contains(ev.target as Node));\n    \n            case 'focus':\n                return 0;\n    \n            default:\n                return 0;\n        }\n    };\n\n    private seekFocusedIndex = (prevKeyCode: number, nextKeyCode: number, seeker: (i: number) => boolean) => (\n        startIndex: number,\n        ev: any\n    ): number => {\n        switch (ev.keyCode) {\n            case prevKeyCode:\n                return seeker(startIndex - 1) ? startIndex - 1 : startIndex;\n            case nextKeyCode:\n                return seeker(startIndex + 1) ? startIndex + 1 : startIndex;\n            default:\n                return startIndex;\n        }\n    };\n\n    private isPresent: Function = (value: any): boolean => value !== null && value !== undefined;\n    private makePeeker = (collection: any[]) => (index: number): boolean => this.isPresent(collection[index]);\n    private areEqual = (first: number) => (second: number): boolean => first === second;\n}","import { Directive, Input, HostListener, OnDestroy, Output, EventEmitter } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Directive({\n  selector: '[afterFilterChanged]'\n})\nexport class afterFilterChangedDirective implements OnDestroy {\n  @Output()\n  public afterFilterChanged: EventEmitter<number> = new EventEmitter<number>();\n\n  @Input()\n  public filterChangeDelay = 600;\n\n  private stream: Subject<number> = new Subject<number>();\n  private subscription: Subscription;\n\n  constructor() {\n    this.subscription = this.stream\n      .pipe(debounceTime(this.filterChangeDelay))\n      .subscribe((value: number) => this.afterFilterChanged.next(value));\n  }\n\n  ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  @HostListener('filterChange', [ '$event' ])\n  public onFilterChange(value: number): void {\n    this.stream.next(value);\n  }\n}\n","import { AfterViewInit, Component, Input, NgZone, OnDestroy, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { ReportingAngularViewerService } from '../reporting-angular-viewer.service';\nimport { SearchInfo, SearchResult } from '@progress/telerik-common-report-viewer';\nimport { ListBoxComponent, ListBoxSelectionEvent } from '@progress/kendo-angular-listbox';\nimport {\n    SVGIcon,\n    chevronDownIcon,\n    chevronUpIcon,\n    convertLowercaseIcon,\n    regularExpressionIcon,\n    wholeWordIcon\n} from '@progress/kendo-svg-icons';\nimport { ComboBoxComponent } from '@progress/kendo-angular-dropdowns';\nimport { Subscription, take } from 'rxjs';\n\n@Component({\n    selector: 'search-window',\n    template: `\n        <kendo-window\n            (close)=\"toggle(false)\"\n            class=\"trv-search trv-search-dialog\"\n            [height]=\"390\"\n            [(top)]=\"windowTop\"\n            [(left)]=\"windowLeft\"\n            (widthChange)=\"onWidthChange($event)\"\n            (heightChange)=\"onHeightChange($event)\"\n            [width]=\"windowWidth\"\n            [height]=\"windowHeight\"\n            [minHeight]=\"390\"\n            [minWidth]=\"330\"\n        >\n            <kendo-window-titlebar>\n                <span class=\"k-window-title\"> {{ getLocaleMessage('Title') }} </span>\n                <button kendoWindowMinimizeAction></button>\n                <button kendoWindowRestoreAction></button>\n                <button kendoWindowCloseAction></button>\n            </kendo-window-titlebar>\n            <div class=\"trv-search-window trv-window k-window-content\">\n                <div class=\"search-dialog-wrapper\">\n                    <kendo-combobox\n                        #comboBox\n                        [data]=\"searchTerms\"\n                        [value]=\"searchText\"\n                        [allowCustom]=\"true\"\n                        [filterable]=\"true\"\n                        [placeholder]=\"getLocaleMessage('ComboBoxPlaceholderText')\"\n                        (afterFilterChanged)=\"handleFilter($event)\"\n                        (click)=\"open($event, comboBox)\"\n                        (close)=\"onClose()\"\n                        (blur)=\"onBlur()\"\n                        (valueChange)=\"search($event)\"\n                        (open)=\"$event.preventDefault()\"\n                    ></kendo-combobox>\n\n                    <div class=\"k-hstack k-gap-2 k-ml-2\">\n                        <button \n                            kendoButton\n                            fillMode=\"flat\"\n                            icon=\"convert-lowercase\"\n                            [svgIcon]=\"convertToLowerCaseIcon\"\n                            [title]=\"getLocaleMessage('MatchCaseTitle')\"\n                            [selected]=\"searchInfo.matchCase\"\n                            (click)=\"onSearchFilter('matchCase')\">\n                        </button>\n                        <button\n                            kendoButton\n                            fillMode=\"flat\"\n                            icon=\"whole-word\"\n                            [svgIcon]=\"wholeWordIcon\"\n                            [title]=\"getLocaleMessage('MatchWholeWordTitle')\"\n                            [selected]=\"searchInfo.matchWholeWord\"\n                            (click)=\"onSearchFilter('matchWholeWord')\">\n                        </button>\n                        <button\n                            kendoButton\n                            fillMode=\"flat\"\n                            icon=\"regular-expression\"\n                            [svgIcon]=\"regularExpressionIcon\"\n                            [title]=\"getLocaleMessage('UseRegexTitle')\"\n                            [selected]=\"searchInfo.useRegularExpressions\"\n                            (click)=\"onSearchFilter('useRegularExpressions')\">\n                        </button>\n                    </div>\n                </div>\n\n                <div class=\"trv-search-dialog-results k-hstack k-gap-3 k-align-items-center k-mt-3 k-mb-2\">\n                    <span *ngIf=\"searchResults.length > 0\" class=\"trv-search-dialog-results-label\">\n                        Result {{ listBox.selectedIndex + 1}} of {{searchResults.length }}\n                    </span>\n                    <span *ngIf=\"searchResults.length === 0\" class=\"trv-search-dialog-results-label\">\n                        {{ getLocaleMessage('NoResultsLabel') }}\n                    </span>\n                    <kendo-buttongroup>\n                        <button\n                            kendoButton\n                            fillMode=\"flat\"\n                            icon=\"chevron-up\"\n                            [svgIcon]=\"chevronUpIcon\"\n                            [title]=\"getLocaleMessage('NavigateUpTitle')\"\n                            (click)=\"onNavigateButtons('up')\"\n                            [disabled]=\"selectedIndex <= 0\">\n                    </button>\n                    <button\n                        kendoButton\n                        fillMode=\"flat\"\n                        icon=\"chevron-down\"\n                        [svgIcon]=\"chevronDownIcon\"\n                        [title]=\"getLocaleMessage('NavigateDownTitle')\"\n                        (click)=\"onNavigateButtons('down');\"\n                        [disabled]=\"selectedIndex + 1 >= searchResults.length\">\n                    </button>\n                    </kendo-buttongroup>\n                </div>\n\n                <kendo-listbox\n                    #listBox\n                    [style.width.%]=\"100\"\n                    [data]=\"searchResults\"\n                    [toolbar]=\"false\"\n                    (selectionChange)=\"onSelectionChange($event)\"\n                >\n                    <ng-template kendoListBoxItemTemplate let-dataItem>\n                        <div\n                            [attr.data-uid]=\"dataItem.id\"\n                            class=\"trv-search-dialog-results-row k-listview-item k-selected\"\n                            role=\"option\"\n                        >\n                            <span class=\"k-search-dialog-result-desc\">{{dataItem.description}}</span>\n                            <span class=\"trv-search-dialog-results-pageSpan\">page {{dataItem.page}}</span>\n                        </div>\n                    </ng-template>\n                </kendo-listbox>\n            </div>\n        </kendo-window>\n    `,\n    styles: [`\n         .k-window-content .k-listbox {\n            overflow: hidden;\n            position: relative;\n            flex-grow: 1;\n            height: auto;\n        }\n\n        .k-window-content .k-list {\n            max-height: 100%;\n        }\n\n        .trv-search {\n            max-height: 700px;\n        }\n\n        .k-listview-item .k-search-dialog-result-desc {\n            flex: 1;\n            margin-right: 1em;\n        }\n\n        .k-listview-item.trv-search-dialog-results-row {\n            width: 100%;\n            display: flex;\n            justify-content: space-between;\n        }\n    `],\n    encapsulation: ViewEncapsulation.None\n})\nexport class SearchComponent implements OnInit, AfterViewInit, OnDestroy {\n    @Input() searchTerms: string[];\n\n    @ViewChild('listBox') public listbox!: ListBoxComponent;\n    @ViewChild('comboBox') public comboBox!: ComboBoxComponent;\n\n    public chevronUpIcon: SVGIcon = chevronUpIcon;\n    public wholeWordIcon: SVGIcon = wholeWordIcon;\n    public chevronDownIcon: SVGIcon = chevronDownIcon;\n    public convertToLowerCaseIcon: SVGIcon = convertLowercaseIcon;\n    public regularExpressionIcon: SVGIcon = regularExpressionIcon;\n\n    public windowTop: number = 30;\n    public windowLeft!: number;\n    public windowWidth!: number;\n    public windowHeight!: number;\n\n    public searchResults: SearchResult[] = [];\n    public isComboboxOpen: boolean = false;\n    public searchText: string = '';\n    public opened = true;\n    public selectedIndex: number = 0;\n\n    public searchInfo: SearchInfo = {\n        searchToken: '',\n        matchCase: false,\n        matchWholeWord: false,\n        useRegularExpressions: false\n    }\n\n    private subs: Subscription = new Subscription();\n\n    public constructor(\n        private ngZone: NgZone,\n        public service: ReportingAngularViewerService) {}\n\n    public ngOnInit(): void {\n        const reportElemWidth = this.service.reportWidth;\n\n        this.windowHeight = this.service.windowHeight;\n        this.windowWidth = this.service.windowWidth;\n        this.windowLeft = reportElemWidth - (this.windowWidth + 40);\n    }\n\n    public ngAfterViewInit(): void {\n        this.service.searchManager?.on('searchComplete', (results: SearchResult[]) => this.onSearchComplete(results));\n\n        this.ngZone.onStable.pipe(take(1)).subscribe(_ => this.comboBox?.focus());\n\n        const combobox = this.comboBox?.wrapper?.nativeElement;\n        this.subs.add(combobox.addEventListener('keydown', (event: any) => this.onArrowEvent(event), true));\n    }\n\n    public ngOnDestroy(): void {\n        this.subs.unsubscribe();\n    }\n\n    public toggle(isOpened: boolean): void {\n        this.service.isSearchWindowOpen = isOpened;\n        this.searchResults = [];\n        this.service.searchManager.closeSearch();\n    }\n\n    public handleFilter(value: any) {\n         if(value === \"\") {\n             return;\n         }\n\n        this.searchText = value;\n        this.search(value, true);\n    }\n\n    public onWidthChange(width: number): void {\n        this.service.windowWidth = width;\n    }\n\n    public onHeightChange(height: number): void {\n        this.service.windowHeight = height;\n    }\n\n    public onBlur() {\n        this.searchText = this.comboBox.text = this.comboBox?.searchbar.value;\n    }\n\n    public search(text: string, isTextFilter: boolean = false): void {\n        if (typeof text !== 'string' && !isTextFilter) return;\n\n        if (text && this.searchTerms.indexOf(text) === -1) {\n            this.searchTerms.push(text);\n        }\n\n        if (this.searchInfo.searchToken !== text) {\n            this.selectedIndex = 0;\n        }\n\n        this.comboBox.value = text;\n        this.comboBox.searchBarChange(text);\n        this.searchInfo.searchToken = text;\n\n        this.service.searchManager?.search(this.searchInfo);\n\n        this.ngZone.onStable.pipe(take(1)).subscribe(_ => this.comboBox?.focus());\n    }\n\n    public onSearchFilter(filterName: 'matchCase' | 'matchWholeWord' | 'useRegularExpressions'): void {\n        this.selectedIndex = 0;\n        this.searchInfo[filterName] = !this.searchInfo[filterName];\n\n        this.search(this.searchInfo.searchToken);\n    }\n\n    public onSelectionChange(item: ListBoxSelectionEvent): void {\n        const searchResultItem: SearchResult = this.searchResults[item.index];\n        this.service.searchManager?.highlightSearchItem(searchResultItem);\n    }\n\n    public open(event: any, comboBox: ComboBoxComponent): void {\n        if (event.target.closest('button') && !this.isComboboxOpen) {\n            this.isComboboxOpen = true;\n            comboBox.toggle(true);\n        }\n    }\n\n    public onClose(): void {\n        setTimeout(() => this.isComboboxOpen = false )\n    }\n\n    public onNavigateButtons(direction: 'up' | 'down', sourceTarget: 'comboboxNav' | 'listboxNav' = 'listboxNav'): void {\n        const topReached = direction === 'up' && this.selectedIndex <= 0;\n        const bottomReached = direction === 'down' && this.selectedIndex >= this.searchResults.length - 1;\n\n        if (topReached || bottomReached) {\n            return;\n        }\n\n        this.selectedIndex = this.selectedIndex + (direction === 'up' ? -1 : 1);\n\n        this.listbox?.selectionService.select(this.selectedIndex);\n    }\n\n    public getLocaleMessage(message: string): string {\n        return this.service.options.messages[`ReportViewer_SearchDialog${message}`];\n    }\n\n    private onArrowEvent(event: any): void {\n        event.stopImmediatePropagation();\n        const searchResultItems = this.searchResults.length;\n\n        if (searchResultItems > 0) {\n            const isArrowUp = event.key === 'ArrowUp';\n            const isArrowDown = event.key === 'ArrowDown'\n\n            if (isArrowUp || isArrowDown) {\n                event.preventDefault();\n\n                const dir: 'up' | 'down' = isArrowUp ? 'up' : 'down';\n                this.onNavigateButtons(dir, 'comboboxNav');\n            }\n\n            const currentListboxItem = this.listbox.listboxItems.toArray()[this.selectedIndex].nativeElement;\n            currentListboxItem?.focus();\n\n            this.ngZone.onStable.pipe(take(1)).subscribe(() => this.comboBox?.focus());\n        }\n    }\n\n    private onSearchComplete(results: SearchResult[]): void {\n        let totalCount = results.length;\n\n        if (totalCount > 250) {\n            results = results.slice(0, 250);\n        }\n\n        this.searchResults = results;\n\n        if (results) {\n            this.listbox?.selectItem(0);\n        }\n        \n        if (totalCount > 0) {\n            this.service.searchManager?.navigateToPage(results[0]);\n        }\n    }\n}\n","export interface ZoomLevel {\n    id?: number;\n    text?: string;\n    displayValue?: string;\n    type?: string;\n    value?: number;\n}\n\nexport const zoomOptionsData = [{\n    id: 1,\n    text: 'Fit to width',\n    type: 'fitPageWidth',\n    displayValue: '',\n    value: 0\n}, {\n    id: 2,\n    text: 'Fit to page',\n    type: 'fitPage',\n    displayValue: '',\n    value: 10\n}, {\n    id: 3,\n    text: '25%',\n    type: 'specific',\n    displayValue: '25%',\n    value: 0.25\n}, {\n    id: 4,\n    text: '50%',\n    type: 'specific',\n    displayValue: '50%',\n    value: 0.5\n}, {\n    id: 5,\n    text: '75%',\n    type: 'specific',\n    displayValue: '75%',\n    value: 0.75\n}, {\n    id: 6,\n    text: '100%',\n    type: 'specific',\n    displayValue: '100%',\n    value: 1\n}, {\n    id: 7,\n    text: '125%',\n    type: 'specific',\n    displayValue: '125%',\n    value: 1.25\n}, {\n    id: 8,\n    text: '150%',\n    type: 'specific',\n    displayValue: '150%',\n    value: 1.5\n}, {\n    id: 9,\n    text: '175%',\n    type: 'specific',\n    displayValue: '175%',\n    value: 1.75\n}, {\n    id: 10,\n    text: '200%',\n    type: 'specific',\n    displayValue: '200%',\n    value: 2\n}, {\n    id: 11,\n    text: '225%',\n    type: 'specific',\n    displayValue: '225%',\n    value: 2.25\n}, {\n    id: 12,\n    text: '250%',\n    type: 'specific',\n    displayValue: '250%',\n    value: 2.5\n}, {\n    id: 13,\n    text: '275%',\n    type: 'specific',\n    displayValue: '275%',\n    value: 2.75\n}, {\n    id: 14,\n    text: '300%',\n    type: 'specific',\n    displayValue: '300%',\n    value: 3\n}, {\n    id: 15,\n    text: '325%',\n    type: 'specific',\n    displayValue: '325%',\n    value: 3.25\n}, {\n    id: 16,\n    text: '350%',\n    type: 'specific',\n    displayValue: '350%',\n    value: 3.5\n}, {\n    id: 17,\n    text: '375%',\n    type: 'specific',\n    displayValue: '375%',\n    value: 3.75\n}, {\n    id: 18,\n    text: '400%',\n    type: 'specific',\n    displayValue: '400%',\n    value: 4\n}];\n\n","import {\n    Component,\n    TemplateRef,\n    ViewChild,\n    ElementRef,\n    forwardRef,\n    AfterViewInit,\n    ViewEncapsulation,\n    OnDestroy,\n} from '@angular/core';\nimport { ToolBarToolComponent } from '@progress/kendo-angular-toolbar';\nimport { ReportingAngularViewerService } from '../reporting-angular-viewer.service';\nimport { ScaleMode } from '../models/types';\nimport { ComboBoxComponent } from '@progress/kendo-angular-dropdowns';\nimport { ZoomLevel, zoomOptionsData } from '../models/zoom-level.interface';\nimport { SVGIcon, windowRestoreIcon } from '@progress/kendo-svg-icons';\nimport { isDocumentAvailable } from '@progress/kendo-angular-common';\nimport { Subscription } from 'rxjs';\n\n@Component({\n    providers: [\n        { provide: ToolBarToolComponent, useExisting: forwardRef(() => CustomZoomComponent) }\n    ],\n    selector: 'custom-zoom-tool',\n    template: `\n        <ng-template #toolbarTemplate>\n            <span #toolbarElement>\n                <kendo-combobox\n                    #combobox\n                    textField=\"text\"\n                    valueField=\"value\"\n                    [tabindex]=\"tabindex\"\n                    [placeholder]=\"localeMessage\"\n                    [data]=\"zoomOptionsData\"\n                    [valuePrimitive]=\"false\"\n                    [value]=\"currentZoom\"\n                    (valueChange)=\"zoomLevelChange($event)\">\n                    [title]=\"localeMessage\"\n                </kendo-combobox>\n            </span>\n        </ng-template>\n        <ng-template #popupTemplate>\n            <span #popupElement>\n                <button\n                    #zoomButton\n                    kendoButton\n                    class=\"zoom-level-btn\"\n                    fillMode=\"flat\"\n                    [tabindex]=\"tabindex\"\n                    (click)=\"openDialog = true\"\n                >\n                    <div class=\"zoom-level-btn-content\">\n                        <span> {{ localeMessage }} </span>\n                        <kendo-svgicon name=\"window-restore\" [icon]=\"windowRestoreIcon\"></kendo-svgicon>\n                    </div>\n                </button>\n            </span>\n\n            <kendo-dialog\n                [width]=\"300\"\n                [height]=\"120\"\n                [title]=\"localeMessage\"\n                *ngIf=\"openDialog\"\n                (close)=\"openDialog = false\"\n            >\n                <kendo-dropdownlist\n                    textField=\"text\"\n                    valueField=\"value\"\n                    [tabindex]=\"tabindex\"\n                    [valuePrimitive]=\"false\"\n                    [data]=\"zoomOptionsData\"\n                    [value]=\"currentZoom\"\n                    [title]=\"localeMessage\"\n                    (valueChange)=\"zoomLevelChange($event)\"\n                >\n                </kendo-dropdownlist>\n            </kendo-dialog>\n        </ng-template>\n    `,\n    styles: [`\n        .zoom-level-btn {\n            width: 100%;\n        }\n\n        .zoom-level-btn .k-button-text {\n            width: inherit;\n        }\n\n        .zoom-level-btn .zoom-level-btn-content {\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n        }\n    `],\n    encapsulation: ViewEncapsulation.None\n})\nexport class CustomZoomComponent extends ToolBarToolComponent implements AfterViewInit, OnDestroy {\n\n\n    @ViewChild('toolbarTemplate', { static: true }) public override toolbarTemplate!: TemplateRef<unknown>;\n    @ViewChild('popupTemplate', { static: true }) public override popupTemplate!: TemplateRef<unknown>;\n    @ViewChild('toolbarElement') public toolbarElement?: ElementRef;\n    @ViewChild('popupElement') public popupElement?: ElementRef;\n    @ViewChild('zoomButton') public zoomButton?: ElementRef;\n    @ViewChild('combobox', { read: ComboBoxComponent, static: false }) public combobox?: ComboBoxComponent;\n\n    public openDialog: boolean = false;\n    public tabindex: number = -1;\n    public zoomOptionsData: ZoomLevel[] = zoomOptionsData;\n    public currentZoom: ZoomLevel = zoomOptionsData[5];\n    public windowRestoreIcon: SVGIcon = windowRestoreIcon;\n\n    private subs: Subscription = new Subscription();\n\n    constructor(public service: ReportingAngularViewerService) {\n        super();\n    }\n\n    public override canFocus(): boolean {\n        return true; // marks the tools as focusable\n    }\n\n    public override focus(): void {\n        if (!isDocumentAvailable()) return;\n\n        this.tabindex = 0;\n\n        if (this.overflows) {\n            this.zoomButton?.nativeElement.focus();\n        } else {\n            this.combobox?.focus();\n            this.combobox?.wrapper.nativeElement.focus();\n        }\n    }\n\n    public override handleKey(): boolean {\n        this.tabindex = -1;\n        return false;\n    }\n\n    public ngAfterViewInit(): void {\n        this.subs.add(this.service.onZoomChange.subscribe(zoomLevel => {\n            this.currentZoom = zoomOptionsData?.find(zoomData => zoomData.value === zoomLevel) as ZoomLevel;\n        }));\n    }\n\n    public ngOnDestroy(): void {\n        this.subs.unsubscribe();\n    }\n\n    public zoomLevelChange(zoomLevel: ZoomLevel): void {\n        if (!isDocumentAvailable()) return;\n\n        const defaultZoom = zoomOptionsData.filter(zoom => zoom.value === 1)[0];\n\n        if (!zoomLevel && this.currentZoom === defaultZoom) { \n            this.currentZoom = defaultZoom; \n            return;\n        }\n\n        if (!zoomLevel && this.currentZoom !== defaultZoom) {\n            this.currentZoom = defaultZoom;\n        }\n\n        if (zoomLevel) this.currentZoom = zoomLevel;\n\n        this.service.setScaleMode(this.getScaleModeAsNumber(this.currentZoom.type as ScaleMode));\n\n        if (this.currentZoom.type === 'specific') {\n            this.service.setScale(<number>this.currentZoom.value);\n        }\n    }\n\n    public get localeMessage(): string {\n        return this.service.options.messages[`ReportViewer_ToolbarZoomComboBoxPlaceholderText`];\n    }\n\n    private getScaleModeAsNumber(scaleMode: ScaleMode): number {\n        return scaleMode === 'fitPage' ? 0 : scaleMode === 'fitPageWidth' ? 1 : 2;\n    }\n}","import { ReportingAngularViewerService } from './reporting-angular-viewer.service';\nimport { Observable, Subscription, fromEvent, of } from 'rxjs';\nimport { reportSourcesAreEqual } from '@progress/telerik-common-report-viewer';\n\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    NgZone,\n    OnDestroy,\n    Output,\n    Renderer2,\n    SimpleChanges,\n    ViewEncapsulation,\n    ChangeDetectorRef,\n    OnInit\n} from '@angular/core';\n\nimport {\n    ContentArea,\n    DocumentInfo,\n    PageInfo,\n    ReportController,\n    ServiceClient,\n    ReportSourceOptions,\n    SearchManager,\n    ReportServerSettings,\n    ParameterInfo\n} from '@progress/telerik-common-report-viewer';\n\nimport {\n    SVGIcon,\n    alignLeftIcon,\n    arrowRotateCwIcon,\n    caretAltToLeftIcon,\n    caretAltToRightIcon,\n    downloadIcon,\n    fileTxtIcon,\n    forwardIcon,\n    positionLeftIcon,\n    positionRightIcon,\n    printIcon,\n    redoIcon,\n    rewindIcon,\n    searchIcon,\n    undoIcon,\n    xCircleIcon,\n    zoomInIcon,\n    zoomOutIcon\n} from '@progress/kendo-svg-icons';\nimport { PageMode, PrintMode, ScaleMode, ServiceType, ViewMode } from './models/types';\nimport { isDocumentAvailable } from '@progress/kendo-angular-common';\nimport { CurrentPageOptions } from './models/current-page.interface';\nimport { ParametersSectionComponent } from './parameters/parameters-section.component';\nimport { HistoryItem } from './models/history-item.interface';\n\nlet reportingIndex: number = 0;\n\n@Component({\n    providers: [ReportingAngularViewerService],\n    selector: 'reporting-angular-viewer',\n    template: `\n        <ng-template #tooltipTemplate let-anchor>\n            <div> {{ anchor.nativeElement.getAttribute('data-tooltip-title') }} </div>\n            <div> {{ anchor.nativeElement.getAttribute('data-tooltip-text') }} </div>\n        </ng-template>\n\n        <div\n            class=\"trv-report-viewer\"\n            kendoTooltip\n            [tooltipTemplate]=\"tooltipTemplate\"\n            [filter]=\"tooltipSelector\">\n            <div class=\"trv-report-viewer-wrapper\">\n                <div class=\"trv-toolbar\">\n                    <kendo-toolbar>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"overflow\"\n                            icon=\"undo\"\n                            [svgIcon]=\"undoIcon\"\n                            [text]=\"getToolbarButtonTitle('NavigateBackward')\"\n                            [disabled]=\"isRenderingInProgress || service.currentHistoryIndex <= 0\"\n                            (click)=\"executeCommand('navigateBackward')\"\n                            [title]=\"getToolbarButtonTitle('NavigateBackward')\">\n                        </kendo-toolbar-button>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"overflow\"\n                            icon=\"redo\"\n                            [svgIcon]=\"redoIcon\"\n                            [text]=\"getToolbarButtonTitle('NavigateForward')\"\n                            [disabled]=\"isRenderingInProgress || service.currentHistoryIndex + 1 >= service.history.length\"\n                            (click)=\"executeCommand('navigateForward')\"\n                            [title]=\"getToolbarButtonTitle('NavigateForward')\">\n                        </kendo-toolbar-button>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"overflow\"\n                            icon=\"close-circle\"\n                            [svgIcon]=\"xCircleIcon\"\n                            [text]=\"getToolbarButtonTitle('StopRendering')\"\n                            [disabled]=\"!isRenderingInProgress\"\n                            (click)=\"executeCommand('stopRendering')\"\n                            [title]=\"getToolbarButtonTitle('StopRendering')\">\n                        </kendo-toolbar-button>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"overflow\"\n                            icon=\"rotate\"\n                            [svgIcon]=\"arrowRotateCwIcon\"\n                            [text]=\"getToolbarButtonTitle('Refresh')\"\n                            [disabled]=\"false\"\n                            (click)=\"executeCommand('refreshReport')\"\n                            [title]=\"getToolbarButtonTitle('Refresh')\">\n                        </kendo-toolbar-button>\n                        <custom-pager-tool [totalPages]=\"totalPages\"></custom-pager-tool>\n                        <kendo-toolbar-buttongroup selection=\"single\">\n                            <kendo-toolbar-button\n                                [toggleable]=\"false\"\n                                fillMode=\"flat\"\n                                showText=\"overflow\"\n                                icon=\"align-left\"\n                                [svgIcon]=\"alignLeftIcon\"\n                                [text]=\"getToolbarButtonTitle('InteractiveView')\"\n                                [selected]=\"!isInPrintViewMode\"\n                                [disabled]=\"isRenderingInProgress || !isInPrintViewMode\"\n                                (click)=\"executeCommand('setViewMode')\"\n                                [title]=\"getToolbarButtonTitle('InteractiveView')\"\n                                >\n                            </kendo-toolbar-button>\n                            <kendo-toolbar-button\n                                [toggleable]=\"false\"\n                                fillMode=\"flat\"\n                                showText=\"overflow\"\n                                icon=\"file-txt\"\n                                [svgIcon]=\"fileTxtIcon\"\n                                [text]=\"getToolbarButtonTitle('PrintPreview')\"\n                                [selected]=\"isInPrintViewMode\"\n                                [disabled]=\"isRenderingInProgress || isInPrintViewMode\"\n                                (click)=\"executeCommand('setViewMode')\"\n                                [title]=\"getToolbarButtonTitle('PrintPreview')\">\n                            </kendo-toolbar-button>\n                        </kendo-toolbar-buttongroup>\n                        <kendo-toolbar-separator></kendo-toolbar-separator>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"overflow\"\n                            icon=\"print\"\n                            [svgIcon]=\"printIcon\"\n                            [text]=\"getToolbarButtonTitle('PrintReport')\"\n                            [disabled]=\"isRenderingInProgress\"\n                            (click)=\"executeCommand('printReport')\"\n                            [title]=\"getToolbarButtonTitle('PrintReport')\">\n                        </kendo-toolbar-button>\n                        <kendo-toolbar-splitbutton\n                            #splitButton\n                            showText=\"overflow\"\n                            icon=\"download\"\n                            [svgIcon]=\"downloadIcon\"\n                            [text]=\"getToolbarButtonTitle('Export')\"\n                            [data]=\"getRenderingExtensions\"\n                            textField=\"localizedName\"\n                            (buttonClick)=\"splitButton['toolbarSplitButton'].toggle()\"\n                            (itemClick)=\"executeCommand('exportReport', $event.name)\"\n                            [title]=\"getToolbarButtonTitle('Export')\"\n                            >\n                        </kendo-toolbar-splitbutton>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"overflow\"\n                            icon=\"zoom-in\"\n                            [svgIcon]=\"zoomInIcon\"\n                            [text]=\"getToolbarButtonTitle('ZoomIn')\"\n                            [disabled]=\"isRenderingInProgress || service.options.scaleMode !== 2\"\n                            (click)=\"executeCommand('zoomIn')\"\n                            [title]=\"getToolbarButtonTitle('ZoomIn')\">\n                        </kendo-toolbar-button>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"overflow\"\n                            icon=\"zoom-out\"\n                            [svgIcon]=\"zoomOutIcon\"\n                            [disabled]=\"isRenderingInProgress || service.options.scaleMode !== 2\"\n                            [text]=\"getToolbarButtonTitle('ZoomOut')\"\n                            (click)=\"executeCommand('zoomOut')\"\n                            [title]=\"getToolbarButtonTitle('ZoomOut')\">\n                        </kendo-toolbar-button>\n                        <custom-zoom-tool></custom-zoom-tool>\n                        <kendo-toolbar-separator></kendo-toolbar-separator>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"overflow\"\n                            icon=\"search\"\n                            [svgIcon]=\"searchIcon\"\n                            [disabled]=\"isRenderingInProgress\"\n                            [text]=\"getToolbarButtonTitle('Search')\"\n                            (click)=\"executeCommand('toggleSearchWindow')\"\n                            [selected]=\"isSearchWindowOpen\"\n                            [title]=\"getToolbarButtonTitle('Search')\">\n                        </kendo-toolbar-button>\n                        <kendo-toolbar-separator></kendo-toolbar-separator>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"overflow\"\n                            icon=\"position-left\"\n                            [svgIcon]=\"positionLeftIcon\"\n                            [text]=\"getToolbarButtonTitle('ToggleDocumentMap')\"\n                            [disabled]=\"isRenderingInProgress || !isDocumentMapAvailable\"\n                            [selected]=\"isDocumentMapAvailable && documentMapVisible\"\n                            (click)=\"executeCommand('toggleDocumentMap')\"\n                            [title]=\"getToolbarButtonTitle('ToggleDocumentMap')\">\n                        </kendo-toolbar-button>\n                        <kendo-toolbar-button\n                            fillMode=\"flat\"\n                            showText=\"overflow\"\n                            icon=\"position-right\"\n                            [svgIcon]=\"positionRightIcon\"\n                            [text]=\"getToolbarButtonTitle('ToggleParametersArea')\"\n                            [disabled]=\"isRenderingInProgress || !isParametersSectionAvailable\"\n                            [selected]=\"isParametersSectionAvailable && parametersAreaVisible\"\n                            (click)=\"executeCommand('toggleParametersSection')\"\n                            [title]=\"getToolbarButtonTitle('ToggleParametersArea')\">\n                        </kendo-toolbar-button>\n                    </kendo-toolbar>\n                </div>\n                <kendo-splitter [class]=\"splitterWrapperClasses\">\n                    <kendo-splitter-pane\n                        class=\"trv-document-map-pane\"\n                        size=\"300px\"\n                        [collapsed]=\"!documentMapVisible\"\n                        [collapsible]=\"true\"\n                        (collapsedChange)=\"documentMapVisible = !documentMapVisible\">\n                        <div class=\"trv-document-map-container\">\n                            <div class=\"trv-document-map-wrapper\">\n                                <kendo-treeview\n                                    [nodes]=\"getDocumentMapNodes\"\n                                    kendoTreeViewExpandable\n                                    kendoTreeViewSelectable\n                                    textField=\"text\"\n                                    [children]=\"children\"\n                                    [hasChildren]=\"hasChildren\"\n                                    (selectionChange)=\"navigateToPage($event)\"\n                                ></kendo-treeview>\n                            </div>\n                        </div>\n                    </kendo-splitter-pane>\n                    <kendo-splitter-pane class=\"trv-pages-pane\">\n                        <div class=\"content-area-wrapper\">\n                            <kendo-loader\n                                *ngIf=\"isRenderingInProgress\"\n                                type=\"pulsing\"\n                                themeColor=\"primary\"\n                                size=\"large\">\n                            </kendo-loader>\n                            <div class=\"trv-page-container\">\n                                <div class=\"trv-page-wrapper\"></div>\n                            </div>\n                        </div>\n                        <div class=\"k-notification k-hidden trv-notification\">\n                            <div class=\"k-notification-wrap\">\n                                <span class=\"k-icon k-i-warning\"></span>\n                                <div class=\"k-notification-content trv-error-message\"></div>\n                            </div>\n                        </div>\n                    </kendo-splitter-pane>\n                    <kendo-splitter-pane\n                        [collapsed]=\"!parametersAreaVisible\"\n                        class=\"trv-parameters-pane\"\n                        [collapsible]=\"true\"\n                        size=\"300px\"\n                        (collapsedChange)=\"parametersAreaVisible = !parametersAreaVisible\">\n                        <div class=\"trv-parameters-container\">\n                            <div class=\"trv-parameters-wrapper\">\n                                <parameters-section\n                                    *ngFor=\"let parameter of service.parameters\"\n                                    [parameter]=\"parameter\"\n                                    [loading]=\"isRenderingInProgress\"\n                                    >\n                                </parameters-section>\n                                <div *ngIf=\"hasLazyParameters || !autoRunEnabled\" class=\"trv-parameters-area-footer k-actions\">\n                                    <button kendoButton\n                                        title=\"Preview the report\"\n                                        class=\"trv-parameters-area-preview-button\"\n                                        [disabled]=\"service.controller.hasInvalidParameter(service.parameters)\"\n                                        (click)=\"onApplyButtonClick()\"\n                                        ariaLabel=\"preview\">Preview\n                                    </button>\n                                </div>\n                            </div>\n                        </div>\n                    </kendo-splitter-pane>\n                </kendo-splitter>\n            </div>\n        </div>\n\n        <search-window *ngIf=\"isSearchWindowOpen\" [searchTerms]=\"searchTerms\"></search-window>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./reporting-angular-viewer.scss']\n})\nexport class ReportingAngularViewerComponent implements OnInit, AfterViewInit, OnDestroy {\n    @HostBinding('class.k-reporting-viewer')\n    public hostClass: boolean = true;\n\n    private readonly historySessionKey = \"history\";\n    private readonly currentHistoryIndexSessionKey = \"currentHistoryIndex\";\n    private readonly currentHistoryItemSessionKey = \"currentHistoryItem\";\n\n    @Input() public scale: number = 1;\n    @Input() public serviceUrl?: string;\n    @Input() public width: string = '100%';\n    @Input() public height: string = '700px';\n    @Input() public authenticationToken?: string;\n    @Input() public contentTabIndex: number = 1000;\n    @Input() public scaleMode: ScaleMode = 'specific';\n    @Input() public enableSendEmail: boolean = false;\n    @Input() public keepClientAlive: boolean = false;\n    @Input() public serviceType: ServiceType = 'REST';\n    @Input() public viewMode: ViewMode = 'interactive';\n    @Input() public documentMapVisible: boolean = true;\n    @Input() public reportSource?: ReportSourceOptions;\n    @Input() public printMode: PrintMode = 'autoSelect';\n    @Input() public parametersAreaVisible: boolean = true;\n    @Input() public pageMode: PageMode = 'continuousScroll';\n    @Input() public reportServer?: ReportServerSettings | null;\n    @Input() public persistSession: boolean = false;\n\n    @Output() public updateUI: EventEmitter<any> = new EventEmitter<any>();\n    @Output() public error: EventEmitter<string> = new EventEmitter<string>();\n    @Output() public printStarted: EventEmitter<any> = new EventEmitter<any>();\n    @Output() public exportStarted: EventEmitter<any> = new EventEmitter<any>();\n    @Output() public beginLoadReport: EventEmitter<any> = new EventEmitter<any>();\n    @Output() public beforeLoadReport: EventEmitter<any> = new EventEmitter<any>();\n    @Output() public renderingStopped: EventEmitter<any> = new EventEmitter<any>();\n    @Output() public loadedReportChange: EventEmitter<any> = new EventEmitter<any>();\n    @Output() public printDocumentReady: EventEmitter<any> = new EventEmitter<any>();\n    @Output() public pageReady: EventEmitter<PageInfo> = new EventEmitter<PageInfo>();\n    @Output() public exportDocumentReady: EventEmitter<any> = new EventEmitter<any>();\n    @Output() public interactiveActionExecuting: EventEmitter<any> = new EventEmitter<any>();\n    @Output() public reportVersionMismatch: EventEmitter<string> = new EventEmitter<string>();\n    @Output() public reportLoadProgress: EventEmitter<DocumentInfo> = new EventEmitter<DocumentInfo>();\n    @Output() public reportLoadComplete: EventEmitter<DocumentInfo> = new EventEmitter<DocumentInfo>();\n    @Output() public reportAutoRunOff: EventEmitter<any> = new EventEmitter<any>();\n    @Output() public currentPageChanged: EventEmitter<CurrentPageOptions> = new EventEmitter<CurrentPageOptions>();\n    @Output() public navigateToReport: EventEmitter<ReportSourceOptions> = new EventEmitter<ReportSourceOptions>();\n    @Output() public parametersLoaded: EventEmitter<ParameterInfo[]> = new EventEmitter<ParameterInfo[]>();\n\n    public redoIcon: SVGIcon = redoIcon;\n    public undoIcon: SVGIcon = undoIcon;\n    public printIcon: SVGIcon = printIcon;\n    public rewindIcon: SVGIcon = rewindIcon;\n    public zoomInIcon: SVGIcon = zoomInIcon;\n    public searchIcon: SVGIcon = searchIcon;\n    public xCircleIcon: SVGIcon = xCircleIcon;\n    public forwardIcon: SVGIcon = forwardIcon;\n    public zoomOutIcon: SVGIcon = zoomOutIcon;\n    public fileTxtIcon: SVGIcon = fileTxtIcon;\n    public downloadIcon: SVGIcon = downloadIcon;\n    public alignLeftIcon: SVGIcon = alignLeftIcon;\n    public positionLeftIcon: SVGIcon = positionLeftIcon;\n    public positionRightIcon: SVGIcon = positionRightIcon;\n    public arrowRotateCwIcon: SVGIcon = arrowRotateCwIcon;\n    public caretAltToLeftIcon: SVGIcon = caretAltToLeftIcon;\n    public caretAltToRightIcon: SVGIcon = caretAltToRightIcon;\n\n    public subs: Subscription = new Subscription();\n    public resizeObservable: Observable<Event>;\n\n    public tooltipSelector: string = '';\n    public searchTerms: string[] = [];\n\n    constructor(\n        private ngZone: NgZone,\n        private renderer: Renderer2,\n        private cdr: ChangeDetectorRef,\n        public hostEl: ElementRef,\n        public service: ReportingAngularViewerService) {\n        reportingIndex++;\n        this.tooltipSelector = `[data-id=\\\"report-viewer-${reportingIndex}\\\"] [data-tooltip-title],[data-id=\\\"report-viewer-${reportingIndex}\\\"] [data-tooltip-text]`;\n    }\n\n    public ngOnInit() {\n        this.service.serviceClient = new ServiceClient(this.service.getServiceClientOptions());\n        this.service.controller = new ReportController(this.service.serviceClient, this.service.getControllerOptions());\n    }\n\n    public ngAfterViewInit(): void {\n        if (!isDocumentAvailable()) {\n            return;\n        }\n\n        const elem = this.hostEl.nativeElement;\n        const service = this.service;\n\n        service.reportWidth = elem.getBoundingClientRect().width;\n\n        this.resizeObservable = fromEvent(window, 'resize');\n        this.subs.add(this.resizeObservable.subscribe(_ => {\n            service.reportWidth = elem.getBoundingClientRect().width;\n        }));\n\n        this.renderer.setStyle(elem, 'width', this.width);\n        this.renderer.setStyle(elem, 'height', this.height);\n        this.renderer.setAttribute(elem, 'data-id', `report-viewer-${reportingIndex}`);\n\n        service.searchManager = new SearchManager(elem, service.controller);\n        service.contentArea = new ContentArea(elem, service.controller, service.options.messages);\n\n        this.ngZone.runOutsideAngular(() => this.initReportingSubs());\n\n        if (service.options.authenticationToken) {\n            service.controller.setAuthenticationToken(service.options.authenticationToken);\n        }\n\n        service.controller.init();\n\n        this.restoreSession();\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        const options: any = this.service.options;\n\n        for (const property in changes) {\n            options[property] = changes[property].currentValue;\n        }\n\n        changes['printMode'] && (options.printMode = this.getPrintModeAsNumber());\n        changes['pageMode'] && (options.pageMode = this.getPageModeAsNumber());\n        changes['viewMode'] && (options.viewMode = this.getViewModeAsNumber());\n        changes['scaleMode'] && (options.scaleMode = this.getScaleModeAsNumber());\n        changes['serviceType'] && (options.serviceType = this.getServiceTypeAsNumber());\n    }\n\n    public ngOnDestroy(): void {\n        this.subs.unsubscribe();\n\n        if (this.service.controller) {\n            this.service.controller.destroy();\n        }\n\n        if (this.service.contentArea) {\n            this.service.contentArea.destroy();\n        }\n    }\n\n    public get getDocumentMapNodes(): any {\n        return this.service.documentInfo.documentMapNodes;\n    }\n\n    public get getRenderingExtensions(): any[] {\n        return this.service.documentInfo.renderingExtensions;\n    }\n\n    public onApplyButtonClick(): void {\n        const parameters = this.service.parameters;\n\n        let invalidParameters: ParameterInfo[] = [];\n        let hasError = false;\n        for (let key in parameters) {\n            if (ParametersSectionComponent.isInvalidInput(parameters[key])) {\n                hasError = true;\n                invalidParameters.push(parameters[key]);\n            }\n        }\n\n        if (hasError) {\n            this.service.controller.missingOrInvalidParameters(invalidParameters);\n        } else {\n            this.service.options.reportSource.parameters = JSON.parse(JSON.stringify(this.service.options.reportSource.parameters));\n            this.service.controller.setParameters(this.service.options.reportSource.parameters);\n            this.service.controller.previewReport();\n        }\n    }\n\n    public children = (dataItem: any): Observable<any[]> => of(dataItem.items);\n    public hasChildren = (dataItem: any): boolean => !!dataItem.items;\n\n    public navigateToPage(ev: any) {\n        const node = ev.dataItem;\n        const nodePage = node.page;\n        const target = { id: node.id, type: 'bookmark' };\n\n        this.service.controller.navigateToPage(nodePage, target);\n    }\n\n    public getToolbarButtonTitle(buttonName: string): string {\n        return this.service.options.messages[`ReportViewer_Toolbar${buttonName}Title`];\n    }\n\n    public get splitterWrapperClasses(): string {\n        const documentMapClass = this.isDocumentMapAvailable ? '' : \"trv-document-map-pane-hidden\";\n        const parametersAreaClass = (this.isParametersSectionAvailable || !this.autoRunEnabled) ? '' : \"trv-parameters-pane-hidden\";\n\n        return `trv-content ${documentMapClass} ${parametersAreaClass}`;\n    }\n\n    public get hasLazyParameters(): boolean {\n        return this.service.parameters.some(param => param.isVisible && !param.autoRefresh);\n    }\n\n    public get autoRunEnabled(): boolean {\n        return this.service.controller.autoRunEnabled;\n    }\n\n    public get displayParameterArea(): boolean {\n        return !this.isRenderingInProgress && this.isParametersSectionAvailable;\n    }\n\n    public get displayDocumentMap(): boolean {\n        return !this.isRenderingInProgress && this.isDocumentMapAvailable;\n    }\n\n    public get isRenderingInProgress(): boolean {\n        return this.service.renderingInProgress;\n    }\n\n    public get isParametersSectionAvailable(): boolean {\n        return this.service.isParametersSectionAvailable;\n    }\n\n    public get isDocumentMapAvailable(): boolean {\n        return this.service.documentInfo.documentMapAvailable;\n    }\n\n    public get isSearchWindowOpen(): boolean {\n        return this.service.isSearchWindowOpen;\n    }\n\n    public get totalPages(): number {\n        return this.service.totalPages;\n    }\n\n    public executeCommand(commandName: string, commandValue?: any): void {\n        this.executeCommandInternal(commandName, commandValue);\n    }\n\n    public get isInPrintViewMode(): boolean {\n        return this.service.options.viewMode === 1;\n    }\n\n    private executeCommandInternal(commandName: string, commandValue: any): void {\n        const service = this.service;\n\n        switch (commandName) {\n            case 'setScaleMode':\n                this.scale = commandValue.scale;\n                this.scaleMode = commandValue.scaleMode;\n\n                const scaleModeAsNumber = this.getScaleModeAsNumber();\n                service.setScaleMode(scaleModeAsNumber);\n\n                if (commandValue.scaleMode.toLowerCase() === 'specific') {\n                    this.service.setScale(this.scale);\n                }\n\n                break;\n\n            case 'setReportSource':\n\n                service.controller.setReportSource(commandValue);\n                service.controller.refreshReport(true, '');\n                break;\n\n            case 'setAuthenticationToken':\n                service.controller.setAuthenticationToken(commandValue);\n                break;\n            case 'exportReport':\n                if (!commandValue) {\n                    commandValue = 'pdf';\n                }\n                service.controller.exportReport(commandValue);\n\n                break;\n            case 'printReport':\n                service.controller.printReport();\n\n                break\n            case 'navigateBackward':\n                if (!this.isRenderingInProgress || service.currentHistoryIndex > 0) {\n                    service.navigateBackwards();\n                }\n\n                break;\n            case 'navigateForward':\n                if (!this.isRenderingInProgress || service.currentHistoryIndex + 1 < service.history.length) {\n                    service.navigateForward();\n                }\n\n                break;\n            case 'stopRendering':\n                if (this.isRenderingInProgress) {\n                    service.clearReport();\n                    service.controller.stopRendering();\n                }\n\n                break;\n            case 'refreshReport':\n                closeSearchWindow();\n\n                service.controller.refreshReport(true, '');\n\n                break;\n            case 'navigateToFirstPage':\n                service.controller.navigateToPage(1, undefined);\n\n                break;\n            case 'navigateToPrevPage':\n                if (service.currentPageIndex > 0) {\n                    service.controller.navigateToPage(service.getPageNumber() - 1, undefined);\n                }\n\n                break;\n            case 'navigateToNextPage':\n                if (service.currentPageIndex < this.totalPages - 1) {\n                    service.controller.navigateToPage(service.getPageNumber() + 1, undefined);\n                }\n\n                break;\n            case 'navigateToLastPage':\n                service.controller.navigateToPage(this.totalPages, undefined);\n\n                break;\n            case 'toggleDocumentMap':\n                if (!this.isRenderingInProgress || this.isDocumentMapAvailable) {\n                    this.documentMapVisible = !this.documentMapVisible;\n                }\n\n                break;\n            case 'toggleParametersSection':\n                if (!this.isRenderingInProgress || this.isParametersSectionAvailable) {\n                    this.parametersAreaVisible = !this.parametersAreaVisible;\n                }\n\n                break;\n            case 'setViewMode':\n                closeSearchWindow();\n\n                if (!this.isRenderingInProgress) {\n                    service.setViewMode();\n                }\n\n                break;\n            case 'zoomIn':\n                if (!this.isRenderingInProgress) {\n                    service.zoomIn();\n                }\n\n                break;\n            case 'zoomOut':\n                if (!this.isRenderingInProgress) {\n                    service.zoomOut();\n                }\n\n                break;\n            case 'toggleSearchWindow':\n                if (!this.isRenderingInProgress) {\n                    service.isSearchWindowOpen = !service.isSearchWindowOpen;\n                }\n\n                break;\n        }\n\n        function closeSearchWindow() {\n            if (service.isSearchWindowOpen) {\n                service.isSearchWindowOpen = false;\n            }\n        }\n    }\n\n    private getPrintModeAsNumber(): number {\n        return this.printMode === 'autoSelect' ? 0 : this.printMode === 'forcePDFFile' ? 1 : 2;\n    }\n\n    private getScaleModeAsNumber(): number {\n        return this.scaleMode === 'fitPage' ? 0 : this.scaleMode === 'fitPageWidth' ? 1 : 2;\n    }\n\n    private getPageModeAsNumber(): number {\n        return this.pageMode === 'continuousScroll' ? 0 : 1;\n    }\n\n    private getViewModeAsNumber(): number {\n        return this.viewMode === 'interactive' ? 0 : 1;\n    }\n\n\n    private getServiceTypeAsNumber(): number {\n        return this.serviceType === 'REST' ? 0 : 1;\n    }\n\n    private getErrorMessage(reportVersion: string, restVersion: string) {\n        return `The version of the Report Viewer ${reportVersion} does not match the version of the Reporting REST Service ${restVersion}. Please make sure both are running same version.`;\n    }\n\n    private initReportingSubs(): void {\n        const service: ReportingAngularViewerService = this.service;\n        const controller: ReportController = service.controller;\n\n        controller\n            .on('updateUI', () => this.updateUI.emit())\n            .on('printStarted', () => this.printStarted.emit())\n            .on('exportStarted', () => this.exportStarted.emit())\n            .onAsync('beforeLoadReport', () => this.onBeforeLoadReport())\n            .on('error', (message: string) => this.onError(message))\n            .on('renderingStopped', () => this.onRenderingStopped())\n            .on('beginLoadReport', () => this.beginLoadReport.emit())\n            .on('loadedReportChange', () => this.onLoadedReportChange())\n            .on('printDocumentReady', () => this.printDocumentReady.emit())\n            .on('exportDocumentReady', () => this.exportDocumentReady.emit())\n            .on('pageReady', (pageInfo: PageInfo) => this.pageReady.emit(pageInfo))\n            .on('navigateToReport', (report: any) => this.onNavigateToReport(report))\n            .on('currentPageChanged', (page: number) => this.onCurrentPageChanged(page))\n            .on('interactiveActionExecuting', () => this.interactiveActionExecuting.emit())\n            .on('reportLoadProgress', (info: DocumentInfo) => this.onReportLoadProgress(info))\n            .onAsync('reportLoadComplete', (info: DocumentInfo) => this.onReportLoadComplete(info))\n            .on('reportAutoRunOff', () => this.onReportAutoRunOff())\n            .on('reportVersionMismatch', (restVersion: string) => this.onReportVersionMismatch(restVersion))\n            .on('parametersLoaded', (parameters: ParameterInfo[]) => this.onParametersLoaded(parameters))\n            .on('scaleChanged', this.onScaleChanged.bind(this))\n            .on('scaleModeChanged', this.onScaleModeChanged.bind(this))\n            .on('viewModeChanged', this.onViewModeChanged.bind(this))\n            .on('missingOrInvalidParameters', () => this.onMissingOrInvalidParameters());\n    }\n\n    private onBeforeLoadReport(): void {\n        this.beforeLoadReport.emit();\n\n        this.service.renderingInProgress = true;\n    }\n\n    private onReportVersionMismatch(restVersion: string): void {\n        this.service.controller.getServiceVersion().then((reportVersion: string) => {\n            const errorMessage = this.getErrorMessage(reportVersion, restVersion);\n\n            this.reportVersionMismatch.emit(errorMessage);\n            throw new Error(errorMessage);\n        });\n    }\n\n    private onReportLoadProgress(info: DocumentInfo): void {\n        this.reportLoadProgress.emit(info);\n        this.service.documentInfo = info;\n        this.service.totalPages = info.pageCount;\n    }\n\n    private onLoadedReportChange(): void {\n        this.loadedReportChange.emit();\n        this.service.addHistoryItem(true /* temp */);\n    }\n\n    private onReportLoadComplete(info: DocumentInfo): void {\n        this.reportLoadComplete.emit(info);\n        \n        this.service.renderingInProgress = false;\n        this.service.documentInfo = info;\n        this.service.totalPages = this.service.controller.getPageCount();\n        this.service.isParametersSectionAvailable = this.service.parameters.some(p => p.isVisible);\n\n        const historyItem = this.service.addHistoryItem();       \n        this.saveSession(this.service, historyItem);\n    }\n\n    private onReportAutoRunOff(): void {\n        this.reportAutoRunOff.emit();\n    }\n\n    private saveSession(service: ReportingAngularViewerService, historyItem: { reportSource: { report: string | undefined; parameters: any; }; documentId: string; page: number; }) {\n        if (this.persistSession) {\n            const storage = window.sessionStorage;\n            storage.setItem(this.historySessionKey, JSON.stringify(service.history));\n            storage.setItem(this.currentHistoryIndexSessionKey, service.currentHistoryIndex.toString());\n            storage.setItem(this.currentHistoryItemSessionKey, JSON.stringify(historyItem));\n        }\n    }\n\n    private restoreSession() {\n        if (this.persistSession) {\n            const storage = window.sessionStorage;\n\n            const historyJson = storage.getItem(this.historySessionKey);\n            if (historyJson) {\n                let history = JSON.parse(historyJson);\n                this.service.history = history;\n            }\n\n            let currentHistoryIndex = storage.getItem(this.currentHistoryIndexSessionKey);\n            if (currentHistoryIndex) {\n                this.service.currentHistoryIndex = Number(currentHistoryIndex);\n            }\n\n            const historyItemJson = storage.getItem(this.currentHistoryItemSessionKey);\n            if (historyItemJson) {\n                let historyItem = JSON.parse(historyItemJson);\n                this.service.applyHistory(historyItem.reportSource, historyItem.page, historyItem.documentId, historyItem.scale, historyItem.scaleMode, historyItem.viewMode);\n            }\n\n            this.cdr.detectChanges();\n        }\n    }\n\n    private onRenderingStopped(): void {\n        this.service.clearReport();\n        this.renderingStopped.emit();\n    }\n\n    private onError(message: string): void {\n        this.service.clearReport();\n        this.error.emit(message);\n    }\n\n    private onParametersLoaded(parameters: ParameterInfo[]): void {\n        this.parametersLoaded.emit(parameters);\n\n        const paramsObj: any = {};\n\n        parameters.forEach((p) => paramsObj[p.id] = p.value);\n\n        this.service.options.reportSource.parameters = paramsObj;\n        this.service.parameters = parameters;\n    }\n\n    private onCurrentPageChanged(page: number): void {\n        this.service.currentPageIndex = page - 1;\n\n        this.currentPageChanged.emit({\n            page: page,\n            reportDocumentId: this.service.controller.getReportDocumentId()\n        });\n        \n        this.updateCurrentHistoryItemPageNumber(page);\n    }\n\n    private updateCurrentHistoryItemPageNumber(page: number) {\n        let historyItem = this.service.history[this.service.currentHistoryIndex];\n        if (historyItem && historyItem.page !== page) {\n            historyItem.page = page;\n            \n            window.sessionStorage.setItem(this.currentHistoryItemSessionKey, JSON.stringify(historyItem));\n            window.sessionStorage.setItem(this.historySessionKey, JSON.stringify(this.service.history));\n        }\n    }\n\n    private onNavigateToReport(report: any): void {\n        this.service.clearReport();\n        this.navigateToReport.emit(report);\n\n        //TODO: should be removed once the common viewer accepts upper case Report/Parameters\n        const lowerCaseReport = { report: report.Report, parameters: report.Parameters };\n\n        this.service.controller.setReportSource(lowerCaseReport as any);\n        this.service.controller.refreshReport(true, '');\n    }\n\n    private onScaleModeChanged() {\n        this.updateScaleModeHistory();\n    }\n\n    private onScaleChanged() {\n        this.updateScaleHistory();\n    }\n\n    private onViewModeChanged() {      \n        this.updateViewModeHistory();\n    }\n\n    private updateScaleModeHistory() {\n        let historyItem = this.service.history[this.service.currentHistoryIndex];\n        const scaleMode = this.service.controller.getScaleMode();\n        if (historyItem.scaleMode !== scaleMode) {\n            historyItem.scaleMode = scaleMode;\n            this.saveSession(this.service, historyItem);\n        }\n    }\n\n    private updateScaleHistory() {\n        let historyItem = this.service.history[this.service.currentHistoryIndex];\n        const scale = this.service.controller.getScale();\n        if (historyItem.scale !== scale) {\n            historyItem.scale = scale;\n            this.saveSession(this.service, historyItem);\n        }\n    }\n\n    private updateViewModeHistory() {\n        let historyItem = this.service.history[this.service.currentHistoryIndex];\n        const viewMode = this.service.controller.getViewMode();\n        if (historyItem.viewMode !== viewMode) {\n            historyItem.viewMode = viewMode;\n            this.saveSession(this.service, historyItem);\n        }\n    }\n\n    private onMissingOrInvalidParameters() {\n        this.service.isParametersSectionAvailable = this.service.parameters.some(p => p.isVisible);\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { ReportingAngularViewerComponent } from './reporting-angular-viewer.component';\nimport { SplitterModule } from '@progress/kendo-angular-layout';\nimport { ReportingAngularViewerService } from './reporting-angular-viewer.service';\nimport { ToolBarModule } from '@progress/kendo-angular-toolbar';\nimport { LoaderModule } from '@progress/kendo-angular-indicators';\nimport { CommonModule } from '@angular/common';\nimport { PagerModule } from '@progress/kendo-angular-pager';\nimport { CheckBoxModule, NumericTextBoxModule, TextBoxModule } from '@progress/kendo-angular-inputs';\nimport { CustomPagerToolComponent } from './toolbar-tools/pager.component';\nimport { TreeViewModule } from '@progress/kendo-angular-treeview';\nimport { WindowModule, DialogModule } from '@progress/kendo-angular-dialog';\nimport { SearchComponent } from './search/search-window.component';\nimport { ComboBoxModule, MultiSelectModule, DropDownListModule } from '@progress/kendo-angular-dropdowns';\nimport { DatePickerModule } from '@progress/kendo-angular-dateinputs';\nimport { LabelModule } from '@progress/kendo-angular-label';\nimport { ListBoxModule } from \"@progress/kendo-angular-listbox\";\nimport { ButtonsModule } from '@progress/kendo-angular-buttons';\nimport { ParametersSectionComponent } from './parameters/parameters-section.component';\nimport { TooltipModule } from '@progress/kendo-angular-tooltip';\nimport { CustomZoomComponent } from './toolbar-tools/zoom.component';\nimport { IconsModule } from '@progress/kendo-angular-icons';\nimport { afterFilterChangedDirective } from './directives/after-filter-changed.directive';\n\n@NgModule({\n  declarations: [\n    ReportingAngularViewerComponent,\n    CustomPagerToolComponent,\n    SearchComponent,\n    ParametersSectionComponent,\n    CustomZoomComponent,\n    afterFilterChangedDirective\n  ],\n  imports: [\n    CommonModule,\n    SplitterModule,\n    ToolBarModule,\n    LoaderModule,\n    DropDownListModule,\n    TreeViewModule,\n    PagerModule,\n    TooltipModule,\n    NumericTextBoxModule,\n    WindowModule,\n    DialogModule,\n    IconsModule,\n    ComboBoxModule,\n    MultiSelectModule,\n    LabelModule,\n    ListBoxModule,\n    ButtonsModule,\n    DatePickerModule,\n    TextBoxModule,\n    CheckBoxModule\n  ],\n  exports: [\n    ReportingAngularViewerComponent\n  ],\n  providers: [ReportingAngularViewerService]\n})\nexport class ReportingAngularViewerModule { }\n","/*\n * Public API Surface of reporting-angular-viewer\n */\n\nexport * from './lib/reporting-angular-viewer.component';\nexport * from './lib/reporting-angular-viewer.module';\nexport * from './lib/models/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ReportingAngularViewerService","i5","i6","i2","i3","debounceTime","i4","i7.afterFilterChangedDirective","i8","i9.CustomPagerToolComponent","i10.SearchComponent","i11.ParametersSectionComponent","i12.CustomZoomComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,MAAM,QAAQ,GAA4B;AAC7C,IAAA,mCAAmC,EAAE,KAAK;AAC1C,IAAA,iCAAiC,EAAE,YAAY;AAC/C,IAAA,oCAAoC,EAAE,MAAM;AAC5C,IAAA,4CAA4C,EAAE,kBAAkB;AAChE,IAAA,sCAAsC,EAAE,WAAW;AACnD,IAAA,uCAAuC,EAAE,YAAY;AACrD,IAAA,wCAAwC,EAAE,aAAa;AACvD,IAAA,0CAA0C,EAAE,eAAe;AAC3D,IAAA,iCAAiC,EAAE,MAAM;AACzC,IAAA,gDAAgD,EAAE,WAAW;AAC7D,IAAA,iCAAiC,EAAE,OAAO;AAC1C,IAAA,8BAA8B,EAAE,kBAAkB;AAClD,IAAA,mCAAmC,EAAE,OAAO;AAC5C,IAAA,uCAAuC,EAAE,YAAY;AACrD,IAAA,yCAAyC,EAAE,mBAAmB;AAC9D,IAAA,wCAAwC,EAAE,kBAAkB;AAC5D,IAAA,+BAA+B,EAAE,eAAe;AAChD,IAAA,+BAA+B,EAAE,QAAQ;AACzC,IAAA,0CAA0C,EAAE,qBAAqB;AACjE,IAAA,kCAAkC,EAAE,YAAY;AAChD,IAAA,iCAAiC,EAAE,WAAW;AAC9C,IAAA,iCAAiC,EAAE,WAAW;AAC9C,IAAA,qCAAqC,EAAE,eAAe;AACtD,IAAA,6CAA6C,EAAE,wBAAwB;AACvE,IAAA,qCAAqC,EAAE,eAAe;AACtD,IAAA,oCAAoC,EAAE,OAAO;AAC7C,IAAA,wCAAwC,EAAE,kBAAkB;AAC5D,IAAA,gCAAgC,EAAE,SAAS;AAC3C,IAAA,sCAAsC,EAAE,gBAAgB;AACxD,IAAA,+BAA+B,EAAE,SAAS;AAC1C,IAAA,gCAAgC,EAAE,UAAU;AAC5C,IAAA,+CAA+C,EAAE,mBAAmB;AACpE,IAAA,4BAA4B,EAAE,qBAAqB;AACnD,IAAA,0BAA0B,EAAE,mBAAmB;AAC/C,IAAA,yCAAyC,EAAE,4BAA4B;AACvE,IAAA,sCAAsC,EAAE,+BAA+B;AACvE,IAAA,+BAA+B,EAAE,iCAAiC;AAClE,IAAA,2BAA2B,EAAE,6CAA6C;AAC1E,IAAA,8BAA8B,EAAE,gDAAgD;AAChF,IAAA,sCAAsC,EAAE,2HAA2H;AACnK,IAAA,iCAAiC,EAAE,yBAAyB;AAC5D,IAAA,wCAAwC,EAAE,kCAAkC;AAC5E,IAAA,6BAA6B,EAAE,mBAAmB;AAClD,IAAA,wCAAwC,EAAE,iCAAiC;AAC3E,IAAA,4BAA4B,EAAE,+JAA+J;AAC7L,IAAA,qBAAqB,EAAE,YAAY;AACnC,IAAA,4BAA4B,EAAE,uFAAuF;CACxH;;AC7BD,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,QAAQ,GAAG,CAAC,CAAC;MAGN,6BAA6B,CAAA;AAD1C,IAAA,WAAA,GAAA;AAEW,QAAA,IAAA,CAAA,OAAO,GAAQ;AAClB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,mBAAmB,EAAE,EAAE;AACvB,YAAA,YAAY,EAAE;AACV,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,MAAM,EAAE,IAAI;AACf,aAAA;AACD,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,YAAY,EAAE,IAAI;SACrB,CAAC;AAEK,QAAA,IAAA,CAAA,YAAY,GAAiB;AAChC,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,oBAAoB,EAAE,KAAK;AAC3B,YAAA,qBAAqB,EAAE,KAAK;AAC5B,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,gBAAgB,EAAE,EAAE;AACpB,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,mBAAmB,EAAE,EAAE;SAC1B,CAAC;AAEK,QAAA,IAAA,CAAA,YAAY,GAAyB,IAAI,YAAY,EAAU,CAAC;QAEhE,IAAU,CAAA,UAAA,GAAoB,EAAE,CAAC;QACjC,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;QACpC,IAAmB,CAAA,mBAAA,GAAG,CAAC,CAAC,CAAC;QACzB,IAAO,CAAA,OAAA,GAAU,EAAE,CAAC;QACpB,IAAgB,CAAA,gBAAA,GAAW,CAAC,CAAC;QAC7B,IAAmB,CAAA,mBAAA,GAAY,KAAK,CAAC;QACrC,IAA+B,CAAA,+BAAA,GAAY,KAAK,CAAC;QACjD,IAA4B,CAAA,4BAAA,GAAY,KAAK,CAAC;QAG9C,IAAW,CAAA,WAAA,GAAW,GAAG,CAAC;QAC1B,IAAY,CAAA,YAAA,GAAW,GAAG,CAAC;QAC3B,IAAU,CAAA,UAAA,GAAW,CAAC,CAAC;QACvB,IAAI,CAAA,IAAA,GAAW,CAAC,CAAC;AAqL3B,KAAA;IA9KU,uBAAuB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,WAAW,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE;AAC7F,YAAA,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;AAC9C,YAAA,IAAI,UAAU,GAAG,aAAa,CAAC,GAAG,GAAG,cAAc,CAAC;AACpD,YAAA,IAAI,QAAQ,GAAG,aAAa,CAAC,GAAG,GAAG,QAAQ,CAAC;AAC5C,YAAA,IAAI,SAAS,GAAG,IAAI,sBAAsB,CAAC,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;AAErG,YAAA,OAAO,IAAI,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAC1D,SAAA;QAED,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;KAC5D;IAEM,oBAAoB,GAAA;QACvB,OAAO,IAAI,uBAAuB,CAC9B,IAAI,CAAC,OAAO,CAAC,eAAe,EAC5B,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAChC,IAAI,CAAC,OAAO,CAAC,YAAY,EACzB,IAAI,CAAC,OAAO,CAAC,SAAS,EACtB,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,IAAI,CAAC,OAAO,CAAC,SAAS,EACtB,IAAI,CAAC,OAAO,CAAC,KAAK,EAClB,IAAI,CAAC,OAAO,CAAC,QAAQ,CACxB,CAAC;KACL;AAEM,IAAA,UAAU,CAAC,OAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;KAC3C;IAEM,YAAY,CAAC,YAAiC,EACjD,IAAY,EACZ,gBAAwB,EACxB,KAAa,EACb,SAAiB,EACjB,QAAgB,EAAA;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;AACtC,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,SAAA;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,KAAK,SAAS,EAAE;AAC9C,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAChC,SAAA;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;AAC5C,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC9B,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,oBAAoB,gBAAgB,EAAE,IAAI,4BAA4B,CAAC;QAC1G,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KACnD;IAEM,cAAc,CAAC,EAAU,EAAE,KAAU,EAAA;AACxC,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;KACnC;AAEM,IAAA,QAAQ,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACjC;AAEM,IAAA,YAAY,CAAC,SAAoB,EAAA;AACpC,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;KAC3C;AAEM,IAAA,WAAW,CAAC,IAAe,EAAA;AAC9B,QAAA,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AAChC,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACjF,SAAA;QAED,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;KACnF;IAEM,MAAM,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,QAAQ,EAAE;AAC/B,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrC,SAAA;KACJ;IAEM,OAAO,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,QAAQ,EAAE;AAC/B,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrC,SAAA;KACJ;IAEM,iBAAiB,GAAA;AACpB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC;QAE5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAE3B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YAC1B,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClE,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,YAAY,EAAE,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACnM,SAAA;KACJ;IAEM,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAEhC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAChD,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClE,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,YAAY,EAAE,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACnM,SAAA;KACJ;IAEM,cAAc,CAAC,OAAgB,KAAK,EAAA;QACvC,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,QAAA,MAAM,WAAW,GAAgB;YAC7B,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE;AACrH,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE;AACjD,YAAA,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE;AAC1B,YAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AACjC,YAAA,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AACzC,YAAA,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AACvC,YAAA,IAAI,EAAE,IAAI;SACb,CAAC;QAEF,MAAM,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;QACjE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,qBAAqB,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,CAAC,CAAC,EAAE;YACzI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAE3B,IAAI,WAAW,GAAW,IAAI,CAAC,+BAA+B,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACpH,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AAC3E,SAAA;AAED,QAAA,IAAI,CAAC,+BAA+B,GAAG,KAAK,CAAA;AAE5C,QAAA,OAAO,WAAW,CAAC;KACtB;IAEM,sBAAsB,GAAA;QACzB,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAExC,QAAA,OAAO,SAAS,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;YACnD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAElC,YAAA,IAAI,IAAI,CAAC,mBAAmB,IAAI,SAAS,EAAE;gBACvC,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC9B,aAAA;AACD,YAAA,SAAS,EAAE,CAAC;AACf,SAAA;KACJ;IAEM,WAAW,GAAA;QACd,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AAC3D,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;KAC1C;IAEM,aAAa,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;KACpC;+GAjOQ,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAA7B,6BAA6B,EAAA,CAAA,CAAA,EAAA;;4FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC,UAAU;;;ACnBX,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAC3C,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;MA6EhC,0BAA0B,CAAA;IAwB5B,OAAO,cAAc,CAAC,SAAwB,EAAA;QACjD,IAAI,SAAS,CAAC,SAAS,EAAE;AACrB,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QAED,IAAI,SAAS,CAAC,UAAU,EAAE;AACtB,YAAA,OAAO,SAAS,CAAC,KAAK,IAAI,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AAClE,SAAA;AAED,QAAA,OAAO,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC;KAClC;IAED,WAA0B,CAAA,OAAsC,EAAW,GAAsB,EAAA;QAAvE,IAAO,CAAA,OAAA,GAAP,OAAO,CAA+B;QAAW,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAjCjF,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;AACf,QAAA,IAAA,CAAA,SAAS,GAAkB;AACvC,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,KAAK,EAAE,EAAE;SACZ,CAAC;AAEK,QAAA,IAAA,CAAA,eAAe,GAAS,IAAI,IAAI,EAAE,CAAC;AAC1C,QAAA,IAAA,CAAA,cAAc,GAAG,0BAA0B,CAAC,cAAc,CAAA;KAc2C;IAE9F,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AACpH,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,eAAe,GAAiC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACrJ,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,CAAS,eAAe,EAAE,KAAK,CAAC,CAAC;KACnE;AAEM,IAAA,qBAAqB,CAAC,KAAoB,EAAA;AAC7C,QAAA,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;KACpB;AAEM,IAAA,gBAAgB,CAAC,SAAwB,EAAA;AAC5C,QAAA,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAmB,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AAEpF,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;AACxH,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;AAE7E,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc;YAAE,OAAO;AAE9E,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;KAC9D;IAEM,aAAa,CAAC,SAAwB,EAAE,KAAU,EAAA;;AAErD,QAAA,IAAI,SAAS,CAAC,IAAI,KAAK,iBAAiB,EAAE;AACtC,YAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AACnD,SAAA;AAED,QAAA,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;;AAGxH,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAC;AAC5D,YAAA,SAAS,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;YAE/B,IAAG,CAAC,SAAS,CAAC,SAAS;gBAAE,OAAO;AACnC,SAAA;AAED,QAAA,IAAI,SAAS,CAAC,eAAe,EAAE,MAAM,GAAG,CAAC,EAAE;YACvC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,KAAoB,KAAI;AACvD,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1E,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;AAE7E,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc;gBAAE,OAAO;AAE9E,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACpF,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACnD,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;AAEnE,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc;gBAAE,OAAO;YAE9E,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAEjD,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC5B,SAAA;KACJ;+GAlGQ,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,6BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA1B,0BAA0B,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACxB,mBAAmB,EA1EpB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuET,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,qBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,KAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,eAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,cAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,eAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,0BAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAEQ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBA3EtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuET,IAAA,CAAA;AACJ,iBAAA,CAAA;iJAE0C,UAAU,EAAA,CAAA;sBAAhD,SAAS;uBAAC,mBAAmB,CAAA;gBAEd,OAAO,EAAA,CAAA;sBAAtB,KAAK;gBACU,SAAS,EAAA,CAAA;sBAAxB,KAAK;;AAiGV;AACM,SAAU,cAAc,CAAC,IAAU,EAAA;IACrC,IAAI,MAAM,GAAG,IAAI,IAAI,CACjB,IAAI,CAAC,GAAG,CACJ,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,EACd,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,eAAe,EAAE,CACzB,CACJ,CAAC;AACF,IAAA,OAAO,MAAM,CAAC;AAClB;;ACjGM,MAAO,wBAAyB,SAAQ,oBAAoB,CAAA;AAoB9D,IAAA,WAAA,CAAmB,OAAsC,EAAA;AACrD,QAAA,KAAK,EAAE,CAAC;QADO,IAAO,CAAA,OAAA,GAAP,OAAO,CAA+B;QAnBzC,IAAU,CAAA,UAAA,GAAW,CAAC,CAAC;QACvB,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;QASnC,IAAQ,CAAA,QAAA,GAAW,CAAC,CAAC,CAAC;QACtB,IAAO,CAAA,OAAA,GAAW,EAAE,CAAA;QACpB,IAAO,CAAA,OAAA,GAAW,EAAE,CAAC;QACrB,IAAY,CAAA,YAAA,GAAQ,CAAC,CAAC,CAAC;QACvB,IAAkB,CAAA,kBAAA,GAAY,kBAAkB,CAAC;QACjD,IAAgB,CAAA,gBAAA,GAAY,gBAAgB,CAAC;QAC7C,IAAiB,CAAA,iBAAA,GAAY,iBAAiB,CAAC;QAC/C,IAAmB,CAAA,mBAAA,GAAY,mBAAmB,CAAC;AAkElD,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,WAAmB,EAAE,WAAmB,EAAE,UAAyB,KAAU,CAAC,EAAO,KAAS;YACvH,QAAQ,EAAE,CAAC,IAAI;AACX,gBAAA,KAAK,SAAS;AACV,oBAAA,IAAI,EAAE,CAAC,OAAO,KAAK,WAAW,EAAE;AAC5B,wBAAA,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AAChC,qBAAA;AAED,oBAAA,IAAI,EAAE,CAAC,OAAO,KAAK,WAAW,EAAE;AAC5B,wBAAA,OAAO,CAAC,CAAC;AACZ,qBAAA;oBAED,MAAM;AAEV,gBAAA,KAAK,OAAO;oBACR,OAAO,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAc,CAAC,CAAC,CAAC;AAE1F,gBAAA,KAAK,OAAO;AACR,oBAAA,OAAO,CAAC,CAAC;AAEb,gBAAA;AACI,oBAAA,OAAO,CAAC,CAAC;AAChB,aAAA;AACL,SAAC,CAAC;AAEM,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,WAAmB,EAAE,WAAmB,EAAE,MAA8B,KAAK,CACrG,UAAkB,EAClB,EAAO,KACC;YACR,QAAQ,EAAE,CAAC,OAAO;AACd,gBAAA,KAAK,WAAW;AACZ,oBAAA,OAAO,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC;AAChE,gBAAA,KAAK,WAAW;AACZ,oBAAA,OAAO,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC;AAChE,gBAAA;AACI,oBAAA,OAAO,UAAU,CAAC;AACzB,aAAA;AACL,SAAC,CAAC;AAEM,QAAA,IAAA,CAAA,SAAS,GAAa,CAAC,KAAU,KAAc,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;QACrF,IAAU,CAAA,UAAA,GAAG,CAAC,UAAiB,KAAK,CAAC,KAAa,KAAc,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAClG,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAa,KAAK,CAAC,MAAc,KAAc,KAAK,KAAK,MAAM,CAAC;KAtGnF;IAEe,QAAQ,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC;KACf;AAEe,IAAA,KAAK,CAAC,EAAO,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAElB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,mBAAmB,EAAE;gBAAE,OAAO;AAEnC,YAAA,IAAI,EAAE,EAAE;gBACJ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC3C,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACjD,SAAA;KACJ;AAEe,IAAA,SAAS,CAAC,EAAO,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,mBAAmB,EAAE,EAAE;YAEzC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACzD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEtD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAC1G,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAExC,YAAA,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3C,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AAEnB,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,iBAAiB,CAAC,SAAiB,EAAA;AACtC,QAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,SAAS,CAAC,CAAC;KACpF;AAEM,IAAA,gBAAgB,CAAC,OAAe,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAuB,oBAAA,EAAA,OAAO,CAAO,KAAA,CAAA,CAAC,CAAC;KAC/E;AAEM,IAAA,YAAY,CAAC,CAAkB,EAAA;QAClC,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC;AACvC,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,SAAS,CAAC,CAAC;KACpF;AAED,IAAA,IAAY,cAAc,GAAA;AACtB,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC;KACtI;IAEO,WAAW,CAAC,KAAa,EAAE,EAAkB,EAAA;;AAEjD,QAAA,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,EAAE;YAC1D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;AACvC,SAAA;KACJ;+GAlFQ,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAxB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EA/EtB,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC,EAAE,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAuF3E,cAAc,EArFhC,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqET,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAQQ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAhFpC,SAAS;AACK,YAAA,IAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,CAAC,MAA8B,wBAAA,CAAC,EAAE,CAAC,EAAA,QAAA,EAC7F,mBAAmB,EACnB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqET,IAAA,CAAA,EAAA,MAAA,EAAA,CAAA,sDAAA,CAAA,EAAA,CAAA;iHASe,UAAU,EAAA,CAAA;sBAAzB,KAAK;gBACU,QAAQ,EAAA,CAAA;sBAAvB,KAAK;gBAE0D,eAAe,EAAA,CAAA;sBAA9E,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBACgB,aAAa,EAAA,CAAA;sBAA1E,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBACR,cAAc,EAAA,CAAA;sBAAjD,SAAS;uBAAC,gBAAgB,CAAA;gBACO,YAAY,EAAA,CAAA;sBAA7C,SAAS;uBAAC,cAAc,CAAA;gBAC2C,KAAK,EAAA,CAAA;sBAAxE,SAAS;uBAAC,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBACzB,UAAU,EAAA,CAAA;sBAA3C,YAAY;uBAAC,WAAW,CAAA;;;MCxGhB,2BAA2B,CAAA;AAUtC,IAAA,WAAA,GAAA;AARO,QAAA,IAAA,CAAA,kBAAkB,GAAyB,IAAI,YAAY,EAAU,CAAC;QAGtE,IAAiB,CAAA,iBAAA,GAAG,GAAG,CAAC;AAEvB,QAAA,IAAA,CAAA,MAAM,GAAoB,IAAI,OAAO,EAAU,CAAC;AAItD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM;AAC5B,aAAA,IAAI,CAACC,cAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC1C,aAAA,SAAS,CAAC,CAAC,KAAa,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KACtE;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;AAGM,IAAA,cAAc,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzB;+GAvBU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA3B,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA,CAAA;0EAGQ,kBAAkB,EAAA,CAAA;sBADxB,MAAM;gBAIA,iBAAiB,EAAA,CAAA;sBADvB,KAAK;gBAiBC,cAAc,EAAA,CAAA;sBADpB,YAAY;uBAAC,cAAc,EAAE,CAAE,QAAQ,CAAE,CAAA;;;MCyI/B,eAAe,CAAA;IAgCxB,WACY,CAAA,MAAc,EACf,OAAsC,EAAA;QADrC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACf,IAAO,CAAA,OAAA,GAAP,OAAO,CAA+B;QA5B1C,IAAa,CAAA,aAAA,GAAY,aAAa,CAAC;QACvC,IAAa,CAAA,aAAA,GAAY,aAAa,CAAC;QACvC,IAAe,CAAA,eAAA,GAAY,eAAe,CAAC;QAC3C,IAAsB,CAAA,sBAAA,GAAY,oBAAoB,CAAC;QACvD,IAAqB,CAAA,qBAAA,GAAY,qBAAqB,CAAC;QAEvD,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;QAKvB,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QACnC,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;QAChC,IAAU,CAAA,UAAA,GAAW,EAAE,CAAC;QACxB,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;QACd,IAAa,CAAA,aAAA,GAAW,CAAC,CAAC;AAE1B,QAAA,IAAA,CAAA,UAAU,GAAe;AAC5B,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,cAAc,EAAE,KAAK;AACrB,YAAA,qBAAqB,EAAE,KAAK;SAC/B,CAAA;AAEO,QAAA,IAAA,CAAA,IAAI,GAAiB,IAAI,YAAY,EAAE,CAAC;KAIK;IAE9C,QAAQ,GAAA;AACX,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAEjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QAC9C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;AAC5C,QAAA,IAAI,CAAC,UAAU,GAAG,eAAe,IAAI,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;KAC/D;IAEM,eAAe,GAAA;QAClB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,gBAAgB,EAAE,CAAC,OAAuB,KAAK,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;QAE9G,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAE1E,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAU,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;KACvG;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;KAC3B;AAEM,IAAA,MAAM,CAAC,QAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,QAAQ,CAAC;AAC3C,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;KAC5C;AAEM,IAAA,YAAY,CAAC,KAAU,EAAA;QACzB,IAAG,KAAK,KAAK,EAAE,EAAE;YACb,OAAO;AACV,SAAA;AAEF,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAC5B;AAEM,IAAA,aAAa,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;KACpC;AAEM,IAAA,cAAc,CAAC,MAAc,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC;KACtC;IAEM,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC;KACzE;AAEM,IAAA,MAAM,CAAC,IAAY,EAAE,YAAA,GAAwB,KAAK,EAAA;AACrD,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,YAAY;YAAE,OAAO;AAEtD,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,KAAK,IAAI,EAAE;AACtC,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC1B,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;QAEnC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;KAC7E;AAEM,IAAA,cAAc,CAAC,UAAoE,EAAA;AACtF,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAE3D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;KAC5C;AAEM,IAAA,iBAAiB,CAAC,IAA2B,EAAA;QAChD,MAAM,gBAAgB,GAAiB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;KACrE;IAEM,IAAI,CAAC,KAAU,EAAE,QAA2B,EAAA;AAC/C,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxD,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,YAAA,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,SAAA;KACJ;IAEM,OAAO,GAAA;QACV,UAAU,CAAC,MAAM,IAAI,CAAC,cAAc,GAAG,KAAK,CAAE,CAAA;KACjD;AAEM,IAAA,iBAAiB,CAAC,SAAwB,EAAE,YAAA,GAA6C,YAAY,EAAA;QACxG,MAAM,UAAU,GAAG,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;AACjE,QAAA,MAAM,aAAa,GAAG,SAAS,KAAK,MAAM,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QAElG,IAAI,UAAU,IAAI,aAAa,EAAE;YAC7B,OAAO;AACV,SAAA;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,SAAS,KAAK,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAExE,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KAC7D;AAEM,IAAA,gBAAgB,CAAC,OAAe,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAA4B,yBAAA,EAAA,OAAO,CAAE,CAAA,CAAC,CAAC;KAC/E;AAEO,IAAA,YAAY,CAAC,KAAU,EAAA;QAC3B,KAAK,CAAC,wBAAwB,EAAE,CAAC;AACjC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAEpD,IAAI,iBAAiB,GAAG,CAAC,EAAE;AACvB,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC;AAC1C,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,KAAK,WAAW,CAAA;YAE7C,IAAI,SAAS,IAAI,WAAW,EAAE;gBAC1B,KAAK,CAAC,cAAc,EAAE,CAAC;gBAEvB,MAAM,GAAG,GAAkB,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC;AACrD,gBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AAC9C,aAAA;AAED,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC;YACjG,kBAAkB,EAAE,KAAK,EAAE,CAAC;YAE5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9E,SAAA;KACJ;AAEO,IAAA,gBAAgB,CAAC,OAAuB,EAAA;AAC5C,QAAA,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;QAEhC,IAAI,UAAU,GAAG,GAAG,EAAE;YAClB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnC,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;AAE7B,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAA;QAED,IAAI,UAAU,GAAG,CAAC,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,SAAA;KACJ;+GAtLQ,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAnJd,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqHT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6UAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,EAAA,cAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FA8BQ,eAAe,EAAA,UAAA,EAAA,CAAA;kBArJ3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EACf,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqHT,EA4Bc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,6UAAA,CAAA,EAAA,CAAA;sIAG5B,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEuB,OAAO,EAAA,CAAA;sBAAnC,SAAS;uBAAC,SAAS,CAAA;gBACU,QAAQ,EAAA,CAAA;sBAArC,SAAS;uBAAC,UAAU,CAAA;;;AChKlB,MAAM,eAAe,GAAG,CAAC;AAC5B,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,YAAY,EAAE,EAAE;AAChB,QAAA,KAAK,EAAE,CAAC;KACX,EAAE;AACC,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,YAAY,EAAE,EAAE;AAChB,QAAA,KAAK,EAAE,EAAE;KACZ,EAAE;AACC,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,KAAK,EAAE,IAAI;KACd,EAAE;AACC,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,KAAK,EAAE,GAAG;KACb,EAAE;AACC,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,KAAK,EAAE,IAAI;KACd,EAAE;AACC,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,KAAK,EAAE,CAAC;KACX,EAAE;AACC,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,KAAK,EAAE,IAAI;KACd,EAAE;AACC,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,KAAK,EAAE,GAAG;KACb,EAAE;AACC,QAAA,EAAE,EAAE,CAAC;AACL,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,KAAK,EAAE,IAAI;KACd,EAAE;AACC,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,KAAK,EAAE,CAAC;KACX,EAAE;AACC,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,KAAK,EAAE,IAAI;KACd,EAAE;AACC,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,KAAK,EAAE,GAAG;KACb,EAAE;AACC,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,KAAK,EAAE,IAAI;KACd,EAAE;AACC,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,KAAK,EAAE,CAAC;KACX,EAAE;AACC,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,KAAK,EAAE,IAAI;KACd,EAAE;AACC,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,KAAK,EAAE,GAAG;KACb,EAAE;AACC,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,KAAK,EAAE,IAAI;KACd,EAAE;AACC,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,YAAY,EAAE,MAAM;AACpB,QAAA,KAAK,EAAE,CAAC;AACX,KAAA;;ACpBK,MAAO,mBAAoB,SAAQ,oBAAoB,CAAA;AAkBzD,IAAA,WAAA,CAAmB,OAAsC,EAAA;AACrD,QAAA,KAAK,EAAE,CAAC;QADO,IAAO,CAAA,OAAA,GAAP,OAAO,CAA+B;QARlD,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAC5B,IAAQ,CAAA,QAAA,GAAW,CAAC,CAAC,CAAC;QACtB,IAAe,CAAA,eAAA,GAAgB,eAAe,CAAC;AAC/C,QAAA,IAAA,CAAA,WAAW,GAAc,eAAe,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAiB,CAAA,iBAAA,GAAY,iBAAiB,CAAC;AAE9C,QAAA,IAAA,CAAA,IAAI,GAAiB,IAAI,YAAY,EAAE,CAAC;KAI/C;IAEe,QAAQ,GAAA;QACpB,OAAO,IAAI,CAAC;KACf;IAEe,KAAK,GAAA;QACjB,IAAI,CAAC,mBAAmB,EAAE;YAAE,OAAO;AAEnC,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAElB,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1C,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAChD,SAAA;KACJ;IAEe,SAAS,GAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AACnB,QAAA,OAAO,KAAK,CAAC;KAChB;IAEM,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,IAAG;AAC1D,YAAA,IAAI,CAAC,WAAW,GAAG,eAAe,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAc,CAAC;SACnG,CAAC,CAAC,CAAC;KACP;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;KAC3B;AAEM,IAAA,eAAe,CAAC,SAAoB,EAAA;QACvC,IAAI,CAAC,mBAAmB,EAAE;YAAE,OAAO;AAEnC,QAAA,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAExE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;AAChD,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YAC/B,OAAO;AACV,SAAA;QAED,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;AAChD,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAClC,SAAA;AAED,QAAA,IAAI,SAAS;AAAE,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AAE5C,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAiB,CAAC,CAAC,CAAC;AAEzF,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU,EAAE;YACtC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAS,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACzD,SAAA;KACJ;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAiD,+CAAA,CAAA,CAAC,CAAC;KAC3F;AAEO,IAAA,oBAAoB,CAAC,SAAoB,EAAA;QAC7C,OAAO,SAAS,KAAK,SAAS,GAAG,CAAC,GAAG,SAAS,KAAK,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC;KAC7E;+GAnFQ,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EA5EjB,QAAA,EAAA,kBAAA,EAAA,SAAA,EAAA;AACP,YAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC,EAAE;AACxF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAkF8B,iBAAiB,EAhFtC,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,YAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAkBQ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA7E/B,SAAS;AACK,YAAA,IAAA,EAAA,CAAA,EAAA,SAAA,EAAA;AACP,wBAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAyB,mBAAA,CAAC,EAAE;AACxF,qBAAA,EAAA,QAAA,EACS,kBAAkB,EAClB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsDT,EAgBc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,kLAAA,CAAA,EAAA,CAAA;iHAK2B,eAAe,EAAA,CAAA;sBAA9E,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBACgB,aAAa,EAAA,CAAA;sBAA1E,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBACR,cAAc,EAAA,CAAA;sBAAjD,SAAS;uBAAC,gBAAgB,CAAA;gBACO,YAAY,EAAA,CAAA;sBAA7C,SAAS;uBAAC,cAAc,CAAA;gBACO,UAAU,EAAA,CAAA;sBAAzC,SAAS;uBAAC,YAAY,CAAA;gBACmD,QAAQ,EAAA,CAAA;sBAAjF,SAAS;uBAAC,UAAU,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;AC7CrE,IAAI,cAAc,GAAW,CAAC,CAAC;MAoPlB,+BAA+B,CAAA;IAuExC,WACY,CAAA,MAAc,EACd,QAAmB,EACnB,GAAsB,EACvB,MAAkB,EAClB,OAAsC,EAAA;QAJrC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QACvB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;QAClB,IAAO,CAAA,OAAA,GAAP,OAAO,CAA+B;QA1E1C,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;QAEhB,IAAiB,CAAA,iBAAA,GAAG,SAAS,CAAC;QAC9B,IAA6B,CAAA,6BAAA,GAAG,qBAAqB,CAAC;QACtD,IAA4B,CAAA,4BAAA,GAAG,oBAAoB,CAAC;QAErD,IAAK,CAAA,KAAA,GAAW,CAAC,CAAC;QAElB,IAAK,CAAA,KAAA,GAAW,MAAM,CAAC;QACvB,IAAM,CAAA,MAAA,GAAW,OAAO,CAAC;QAEzB,IAAe,CAAA,eAAA,GAAW,IAAI,CAAC;QAC/B,IAAS,CAAA,SAAA,GAAc,UAAU,CAAC;QAClC,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;QACjC,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;QACjC,IAAW,CAAA,WAAA,GAAgB,MAAM,CAAC;QAClC,IAAQ,CAAA,QAAA,GAAa,aAAa,CAAC;QACnC,IAAkB,CAAA,kBAAA,GAAY,IAAI,CAAC;QAEnC,IAAS,CAAA,SAAA,GAAc,YAAY,CAAC;QACpC,IAAqB,CAAA,qBAAA,GAAY,IAAI,CAAC;QACtC,IAAQ,CAAA,QAAA,GAAa,kBAAkB,CAAC;QAExC,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;AAE/B,QAAA,IAAA,CAAA,QAAQ,GAAsB,IAAI,YAAY,EAAO,CAAC;AACtD,QAAA,IAAA,CAAA,KAAK,GAAyB,IAAI,YAAY,EAAU,CAAC;AACzD,QAAA,IAAA,CAAA,YAAY,GAAsB,IAAI,YAAY,EAAO,CAAC;AAC1D,QAAA,IAAA,CAAA,aAAa,GAAsB,IAAI,YAAY,EAAO,CAAC;AAC3D,QAAA,IAAA,CAAA,eAAe,GAAsB,IAAI,YAAY,EAAO,CAAC;AAC7D,QAAA,IAAA,CAAA,gBAAgB,GAAsB,IAAI,YAAY,EAAO,CAAC;AAC9D,QAAA,IAAA,CAAA,gBAAgB,GAAsB,IAAI,YAAY,EAAO,CAAC;AAC9D,QAAA,IAAA,CAAA,kBAAkB,GAAsB,IAAI,YAAY,EAAO,CAAC;AAChE,QAAA,IAAA,CAAA,kBAAkB,GAAsB,IAAI,YAAY,EAAO,CAAC;AAChE,QAAA,IAAA,CAAA,SAAS,GAA2B,IAAI,YAAY,EAAY,CAAC;AACjE,QAAA,IAAA,CAAA,mBAAmB,GAAsB,IAAI,YAAY,EAAO,CAAC;AACjE,QAAA,IAAA,CAAA,0BAA0B,GAAsB,IAAI,YAAY,EAAO,CAAC;AACxE,QAAA,IAAA,CAAA,qBAAqB,GAAyB,IAAI,YAAY,EAAU,CAAC;AACzE,QAAA,IAAA,CAAA,kBAAkB,GAA+B,IAAI,YAAY,EAAgB,CAAC;AAClF,QAAA,IAAA,CAAA,kBAAkB,GAA+B,IAAI,YAAY,EAAgB,CAAC;AAClF,QAAA,IAAA,CAAA,gBAAgB,GAAsB,IAAI,YAAY,EAAO,CAAC;AAC9D,QAAA,IAAA,CAAA,kBAAkB,GAAqC,IAAI,YAAY,EAAsB,CAAC;AAC9F,QAAA,IAAA,CAAA,gBAAgB,GAAsC,IAAI,YAAY,EAAuB,CAAC;AAC9F,QAAA,IAAA,CAAA,gBAAgB,GAAkC,IAAI,YAAY,EAAmB,CAAC;QAEhG,IAAQ,CAAA,QAAA,GAAY,QAAQ,CAAC;QAC7B,IAAQ,CAAA,QAAA,GAAY,QAAQ,CAAC;QAC7B,IAAS,CAAA,SAAA,GAAY,SAAS,CAAC;QAC/B,IAAU,CAAA,UAAA,GAAY,UAAU,CAAC;QACjC,IAAU,CAAA,UAAA,GAAY,UAAU,CAAC;QACjC,IAAU,CAAA,UAAA,GAAY,UAAU,CAAC;QACjC,IAAW,CAAA,WAAA,GAAY,WAAW,CAAC;QACnC,IAAW,CAAA,WAAA,GAAY,WAAW,CAAC;QACnC,IAAW,CAAA,WAAA,GAAY,WAAW,CAAC;QACnC,IAAW,CAAA,WAAA,GAAY,WAAW,CAAC;QACnC,IAAY,CAAA,YAAA,GAAY,YAAY,CAAC;QACrC,IAAa,CAAA,aAAA,GAAY,aAAa,CAAC;QACvC,IAAgB,CAAA,gBAAA,GAAY,gBAAgB,CAAC;QAC7C,IAAiB,CAAA,iBAAA,GAAY,iBAAiB,CAAC;QAC/C,IAAiB,CAAA,iBAAA,GAAY,iBAAiB,CAAC;QAC/C,IAAkB,CAAA,kBAAA,GAAY,kBAAkB,CAAC;QACjD,IAAmB,CAAA,mBAAA,GAAY,mBAAmB,CAAC;AAEnD,QAAA,IAAA,CAAA,IAAI,GAAiB,IAAI,YAAY,EAAE,CAAC;QAGxC,IAAe,CAAA,eAAA,GAAW,EAAE,CAAC;QAC7B,IAAW,CAAA,WAAA,GAAa,EAAE,CAAC;AAyG3B,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,QAAa,KAAwB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpE,IAAW,CAAA,WAAA,GAAG,CAAC,QAAa,KAAc,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AAlG9D,QAAA,cAAc,EAAE,CAAC;QACjB,IAAI,CAAC,eAAe,GAAG,CAAA,yBAAA,EAA4B,cAAc,CAAqD,kDAAA,EAAA,cAAc,yBAAyB,CAAC;KACjK;IAEM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACnH;IAEM,eAAe,GAAA;QAClB,IAAI,CAAC,mBAAmB,EAAE,EAAE;YACxB,OAAO;AACV,SAAA;AAED,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;AACvC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE7B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;QAEzD,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,IAAG;YAC9C,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;SAC5D,CAAC,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,CAAA,cAAA,EAAiB,cAAc,CAAA,CAAE,CAAC,CAAC;AAE/E,QAAA,OAAO,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AACpE,QAAA,OAAO,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE1F,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAE9D,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACrC,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAClF,SAAA;AAED,QAAA,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAE1B,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,MAAM,OAAO,GAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAE1C,QAAA,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE;YAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;AACtD,SAAA;AAED,QAAA,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC1E,QAAA,OAAO,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACvE,QAAA,OAAO,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACvE,QAAA,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC1E,QAAA,OAAO,CAAC,aAAa,CAAC,KAAK,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;KACnF;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAExB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACzB,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AACrC,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AACtC,SAAA;KACJ;AAED,IAAA,IAAW,mBAAmB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC;KACrD;AAED,IAAA,IAAW,sBAAsB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC;KACxD;IAEM,kBAAkB,GAAA;AACrB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QAE3C,IAAI,iBAAiB,GAAoB,EAAE,CAAC;QAC5C,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,QAAA,KAAK,IAAI,GAAG,IAAI,UAAU,EAAE;YACxB,IAAI,0BAA0B,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC5D,QAAQ,GAAG,IAAI,CAAC;gBAChB,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;AACzE,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;AACxH,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AACpF,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;AAC3C,SAAA;KACJ;AAKM,IAAA,cAAc,CAAC,EAAO,EAAA;AACzB,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC;AACzB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;AAC3B,QAAA,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAEjD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;KAC5D;AAEM,IAAA,qBAAqB,CAAC,UAAkB,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAuB,oBAAA,EAAA,UAAU,CAAO,KAAA,CAAA,CAAC,CAAC;KAClF;AAED,IAAA,IAAW,sBAAsB,GAAA;AAC7B,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,GAAG,EAAE,GAAG,8BAA8B,CAAC;QAC3F,MAAM,mBAAmB,GAAG,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,GAAG,4BAA4B,CAAC;AAE5H,QAAA,OAAO,CAAe,YAAA,EAAA,gBAAgB,CAAI,CAAA,EAAA,mBAAmB,EAAE,CAAC;KACnE;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;KACvF;AAED,IAAA,IAAW,cAAc,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;KACjD;AAED,IAAA,IAAW,oBAAoB,GAAA;QAC3B,OAAO,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,4BAA4B,CAAC;KAC3E;AAED,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,sBAAsB,CAAC;KACrE;AAED,IAAA,IAAW,qBAAqB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;KAC3C;AAED,IAAA,IAAW,4BAA4B,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC;KACpD;AAED,IAAA,IAAW,sBAAsB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC;KACzD;AAED,IAAA,IAAW,kBAAkB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;KAC1C;AAED,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;KAClC;IAEM,cAAc,CAAC,WAAmB,EAAE,YAAkB,EAAA;AACzD,QAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;KAC1D;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,CAAC,CAAC;KAC9C;IAEO,sBAAsB,CAAC,WAAmB,EAAE,YAAiB,EAAA;AACjE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAE7B,QAAA,QAAQ,WAAW;AACf,YAAA,KAAK,cAAc;AACf,gBAAA,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;AAChC,gBAAA,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;AAExC,gBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACtD,gBAAA,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;gBAExC,IAAI,YAAY,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,UAAU,EAAE;oBACrD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,iBAAA;gBAED,MAAM;AAEV,YAAA,KAAK,iBAAiB;AAElB,gBAAA,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;gBACjD,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC3C,MAAM;AAEV,YAAA,KAAK,wBAAwB;AACzB,gBAAA,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;gBACxD,MAAM;AACV,YAAA,KAAK,cAAc;gBACf,IAAI,CAAC,YAAY,EAAE;oBACf,YAAY,GAAG,KAAK,CAAC;AACxB,iBAAA;AACD,gBAAA,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;gBAE9C,MAAM;AACV,YAAA,KAAK,aAAa;AACd,gBAAA,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBAEjC,MAAK;AACT,YAAA,KAAK,kBAAkB;gBACnB,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,GAAG,CAAC,EAAE;oBAChE,OAAO,CAAC,iBAAiB,EAAE,CAAC;AAC/B,iBAAA;gBAED,MAAM;AACV,YAAA,KAAK,iBAAiB;AAClB,gBAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;oBACzF,OAAO,CAAC,eAAe,EAAE,CAAC;AAC7B,iBAAA;gBAED,MAAM;AACV,YAAA,KAAK,eAAe;gBAChB,IAAI,IAAI,CAAC,qBAAqB,EAAE;oBAC5B,OAAO,CAAC,WAAW,EAAE,CAAC;AACtB,oBAAA,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;AACtC,iBAAA;gBAED,MAAM;AACV,YAAA,KAAK,eAAe;AAChB,gBAAA,iBAAiB,EAAE,CAAC;gBAEpB,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAE3C,MAAM;AACV,YAAA,KAAK,qBAAqB;gBACtB,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;gBAEhD,MAAM;AACV,YAAA,KAAK,oBAAoB;AACrB,gBAAA,IAAI,OAAO,CAAC,gBAAgB,GAAG,CAAC,EAAE;AAC9B,oBAAA,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;AAC7E,iBAAA;gBAED,MAAM;AACV,YAAA,KAAK,oBAAoB;gBACrB,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;AAChD,oBAAA,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;AAC7E,iBAAA;gBAED,MAAM;AACV,YAAA,KAAK,oBAAoB;gBACrB,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;gBAE9D,MAAM;AACV,YAAA,KAAK,mBAAmB;gBACpB,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC5D,oBAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACtD,iBAAA;gBAED,MAAM;AACV,YAAA,KAAK,yBAAyB;gBAC1B,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,4BAA4B,EAAE;AAClE,oBAAA,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAC5D,iBAAA;gBAED,MAAM;AACV,YAAA,KAAK,aAAa;AACd,gBAAA,iBAAiB,EAAE,CAAC;AAEpB,gBAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;oBAC7B,OAAO,CAAC,WAAW,EAAE,CAAC;AACzB,iBAAA;gBAED,MAAM;AACV,YAAA,KAAK,QAAQ;AACT,gBAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;oBAC7B,OAAO,CAAC,MAAM,EAAE,CAAC;AACpB,iBAAA;gBAED,MAAM;AACV,YAAA,KAAK,SAAS;AACV,gBAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;oBAC7B,OAAO,CAAC,OAAO,EAAE,CAAC;AACrB,iBAAA;gBAED,MAAM;AACV,YAAA,KAAK,oBAAoB;AACrB,gBAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC7B,oBAAA,OAAO,CAAC,kBAAkB,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC;AAC5D,iBAAA;gBAED,MAAM;AACb,SAAA;AAED,QAAA,SAAS,iBAAiB,GAAA;YACtB,IAAI,OAAO,CAAC,kBAAkB,EAAE;AAC5B,gBAAA,OAAO,CAAC,kBAAkB,GAAG,KAAK,CAAC;AACtC,aAAA;SACJ;KACJ;IAEO,oBAAoB,GAAA;QACxB,OAAO,IAAI,CAAC,SAAS,KAAK,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC;KAC1F;IAEO,oBAAoB,GAAA;QACxB,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC;KACvF;IAEO,mBAAmB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,kBAAkB,GAAG,CAAC,GAAG,CAAC,CAAC;KACvD;IAEO,mBAAmB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC;KAClD;IAGO,sBAAsB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,WAAW,KAAK,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;KAC9C;IAEO,eAAe,CAAC,aAAqB,EAAE,WAAmB,EAAA;AAC9D,QAAA,OAAO,CAAoC,iCAAA,EAAA,aAAa,CAA6D,0DAAA,EAAA,WAAW,mDAAmD,CAAC;KACvL;IAEO,iBAAiB,GAAA;AACrB,QAAA,MAAM,OAAO,GAAkC,IAAI,CAAC,OAAO,CAAC;AAC5D,QAAA,MAAM,UAAU,GAAqB,OAAO,CAAC,UAAU,CAAC;QAExD,UAAU;AACL,aAAA,EAAE,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC1C,aAAA,EAAE,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAClD,aAAA,EAAE,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;aACpD,OAAO,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC5D,aAAA,EAAE,CAAC,OAAO,EAAE,CAAC,OAAe,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;aACvD,EAAE,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACvD,aAAA,EAAE,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;aACxD,EAAE,CAAC,oBAAoB,EAAE,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC3D,aAAA,EAAE,CAAC,oBAAoB,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;AAC9D,aAAA,EAAE,CAAC,qBAAqB,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;AAChE,aAAA,EAAE,CAAC,WAAW,EAAE,CAAC,QAAkB,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACtE,aAAA,EAAE,CAAC,kBAAkB,EAAE,CAAC,MAAW,KAAK,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACxE,aAAA,EAAE,CAAC,oBAAoB,EAAE,CAAC,IAAY,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC3E,aAAA,EAAE,CAAC,4BAA4B,EAAE,MAAM,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC;AAC9E,aAAA,EAAE,CAAC,oBAAoB,EAAE,CAAC,IAAkB,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACjF,aAAA,OAAO,CAAC,oBAAoB,EAAE,CAAC,IAAkB,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;aACtF,EAAE,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACvD,aAAA,EAAE,CAAC,uBAAuB,EAAE,CAAC,WAAmB,KAAK,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;AAC/F,aAAA,EAAE,CAAC,kBAAkB,EAAE,CAAC,UAA2B,KAAK,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;aAC5F,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClD,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC1D,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACxD,EAAE,CAAC,4BAA4B,EAAE,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;KACpF;IAEO,kBAAkB,GAAA;AACtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAE7B,QAAA,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;KAC3C;AAEO,IAAA,uBAAuB,CAAC,WAAmB,EAAA;AAC/C,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC,aAAqB,KAAI;YACvE,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AAEtE,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,YAAA,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAClC,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,oBAAoB,CAAC,IAAkB,EAAA;AAC3C,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;KAC5C;IAEO,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,YAAY,CAAC;KAChD;AAEO,IAAA,oBAAoB,CAAC,IAAkB,EAAA;AAC3C,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEnC,QAAA,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACzC,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QACjE,IAAI,CAAC,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;QAE3F,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;KAC/C;IAEO,kBAAkB,GAAA;AACtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;KAChC;IAEO,WAAW,CAAC,OAAsC,EAAE,WAAkH,EAAA;QAC1K,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,YAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AACzE,YAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5F,YAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;AACnF,SAAA;KACJ;IAEO,cAAc,GAAA;QAClB,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;YAEtC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC5D,YAAA,IAAI,WAAW,EAAE;gBACb,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACtC,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;AAClC,aAAA;YAED,IAAI,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;AAC9E,YAAA,IAAI,mBAAmB,EAAE;gBACrB,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAClE,aAAA;YAED,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AAC3E,YAAA,IAAI,eAAe,EAAE;gBACjB,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AAC9C,gBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACjK,aAAA;AAED,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC5B,SAAA;KACJ;IAEO,kBAAkB,GAAA;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;KAChC;AAEO,IAAA,OAAO,CAAC,OAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC5B;AAEO,IAAA,kBAAkB,CAAC,UAA2B,EAAA;AAClD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEvC,MAAM,SAAS,GAAQ,EAAE,CAAC;AAE1B,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAErD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,GAAG,SAAS,CAAC;AACzD,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;KACxC;AAEO,IAAA,oBAAoB,CAAC,IAAY,EAAA;QACrC,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACzB,YAAA,IAAI,EAAE,IAAI;YACV,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE;AAClE,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,CAAC;KACjD;AAEO,IAAA,kCAAkC,CAAC,IAAY,EAAA;AACnD,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACzE,QAAA,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,EAAE;AAC1C,YAAA,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;AAExB,YAAA,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;YAC9F,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/F,SAAA;KACJ;AAEO,IAAA,kBAAkB,CAAC,MAAW,EAAA;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAGnC,QAAA,MAAM,eAAe,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;QAEjF,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,eAAsB,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;KACnD;IAEO,kBAAkB,GAAA;QACtB,IAAI,CAAC,sBAAsB,EAAE,CAAC;KACjC;IAEO,cAAc,GAAA;QAClB,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;IAEO,iBAAiB,GAAA;QACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC;IAEO,sBAAsB,GAAA;AAC1B,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;AACzD,QAAA,IAAI,WAAW,CAAC,SAAS,KAAK,SAAS,EAAE;AACrC,YAAA,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAC/C,SAAA;KACJ;IAEO,kBAAkB,GAAA;AACtB,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;AACjD,QAAA,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,EAAE;AAC7B,YAAA,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAC/C,SAAA;KACJ;IAEO,qBAAqB,GAAA;AACzB,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AACvD,QAAA,IAAI,WAAW,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACnC,YAAA,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAC/C,SAAA;KACJ;IAEO,4BAA4B,GAAA;QAChC,IAAI,CAAC,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;KAC9F;+GAllBQ,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,EAjP7B,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,6BAA6B,CAAC,EAEhC,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2OT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ghKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,KAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,cAAA,EAAA,YAAA,EAAA,QAAA,EAAA,MAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAIQ,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAlP3C,SAAS;AACK,YAAA,IAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAC,6BAA6B,CAAC,EAChC,QAAA,EAAA,0BAA0B,EAC1B,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2OT,EACc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,ghKAAA,CAAA,EAAA,CAAA;uNAK9B,SAAS,EAAA,CAAA;sBADf,WAAW;uBAAC,0BAA0B,CAAA;gBAOvB,KAAK,EAAA,CAAA;sBAApB,KAAK;gBACU,UAAU,EAAA,CAAA;sBAAzB,KAAK;gBACU,KAAK,EAAA,CAAA;sBAApB,KAAK;gBACU,MAAM,EAAA,CAAA;sBAArB,KAAK;gBACU,mBAAmB,EAAA,CAAA;sBAAlC,KAAK;gBACU,eAAe,EAAA,CAAA;sBAA9B,KAAK;gBACU,SAAS,EAAA,CAAA;sBAAxB,KAAK;gBACU,eAAe,EAAA,CAAA;sBAA9B,KAAK;gBACU,eAAe,EAAA,CAAA;sBAA9B,KAAK;gBACU,WAAW,EAAA,CAAA;sBAA1B,KAAK;gBACU,QAAQ,EAAA,CAAA;sBAAvB,KAAK;gBACU,kBAAkB,EAAA,CAAA;sBAAjC,KAAK;gBACU,YAAY,EAAA,CAAA;sBAA3B,KAAK;gBACU,SAAS,EAAA,CAAA;sBAAxB,KAAK;gBACU,qBAAqB,EAAA,CAAA;sBAApC,KAAK;gBACU,QAAQ,EAAA,CAAA;sBAAvB,KAAK;gBACU,YAAY,EAAA,CAAA;sBAA3B,KAAK;gBACU,cAAc,EAAA,CAAA;sBAA7B,KAAK;gBAEW,QAAQ,EAAA,CAAA;sBAAxB,MAAM;gBACU,KAAK,EAAA,CAAA;sBAArB,MAAM;gBACU,YAAY,EAAA,CAAA;sBAA5B,MAAM;gBACU,aAAa,EAAA,CAAA;sBAA7B,MAAM;gBACU,eAAe,EAAA,CAAA;sBAA/B,MAAM;gBACU,gBAAgB,EAAA,CAAA;sBAAhC,MAAM;gBACU,gBAAgB,EAAA,CAAA;sBAAhC,MAAM;gBACU,kBAAkB,EAAA,CAAA;sBAAlC,MAAM;gBACU,kBAAkB,EAAA,CAAA;sBAAlC,MAAM;gBACU,SAAS,EAAA,CAAA;sBAAzB,MAAM;gBACU,mBAAmB,EAAA,CAAA;sBAAnC,MAAM;gBACU,0BAA0B,EAAA,CAAA;sBAA1C,MAAM;gBACU,qBAAqB,EAAA,CAAA;sBAArC,MAAM;gBACU,kBAAkB,EAAA,CAAA;sBAAlC,MAAM;gBACU,kBAAkB,EAAA,CAAA;sBAAlC,MAAM;gBACU,gBAAgB,EAAA,CAAA;sBAAhC,MAAM;gBACU,kBAAkB,EAAA,CAAA;sBAAlC,MAAM;gBACU,gBAAgB,EAAA,CAAA;sBAAhC,MAAM;gBACU,gBAAgB,EAAA,CAAA;sBAAhC,MAAM;;;MChSE,4BAA4B,CAAA;+GAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,iBAlCrC,+BAA+B;YAC/B,wBAAwB;YACxB,eAAe;YACf,0BAA0B;YAC1B,mBAAmB;AACnB,YAAA,2BAA2B,aAG3B,YAAY;YACZ,cAAc;YACd,aAAa;YACb,YAAY;YACZ,kBAAkB;YAClB,cAAc;YACd,WAAW;YACX,aAAa;YACb,oBAAoB;YACpB,YAAY;YACZ,YAAY;YACZ,WAAW;YACX,cAAc;YACd,iBAAiB;YACjB,WAAW;YACX,aAAa;YACb,aAAa;YACb,gBAAgB;YAChB,aAAa;AACb,YAAA,cAAc,aAGd,+BAA+B,CAAA,EAAA,CAAA,CAAA,EAAA;AAItB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,EAF5B,SAAA,EAAA,CAAC,6BAA6B,CAAC,YAxBxC,YAAY;YACZ,cAAc;YACd,aAAa;YACb,YAAY;YACZ,kBAAkB;YAClB,cAAc;YACd,WAAW;YACX,aAAa;YACb,oBAAoB;YACpB,YAAY;YACZ,YAAY;YACZ,WAAW;YACX,cAAc;YACd,iBAAiB;YACjB,WAAW;YACX,aAAa;YACb,aAAa;YACb,gBAAgB;YAChB,aAAa;YACb,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAOL,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBApCxC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,+BAA+B;wBAC/B,wBAAwB;wBACxB,eAAe;wBACf,0BAA0B;wBAC1B,mBAAmB;wBACnB,2BAA2B;AAC5B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,cAAc;wBACd,aAAa;wBACb,YAAY;wBACZ,kBAAkB;wBAClB,cAAc;wBACd,WAAW;wBACX,aAAa;wBACb,oBAAoB;wBACpB,YAAY;wBACZ,YAAY;wBACZ,WAAW;wBACX,cAAc;wBACd,iBAAiB;wBACjB,WAAW;wBACX,aAAa;wBACb,aAAa;wBACb,gBAAgB;wBAChB,aAAa;wBACb,cAAc;AACf,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,+BAA+B;AAChC,qBAAA;oBACD,SAAS,EAAE,CAAC,6BAA6B,CAAC;AAC3C,iBAAA,CAAA;;;AC3DD;;AAEG;;ACFH;;AAEG;;;;"}