blob: 723d8769608e2c57a972beb6b61f222f69828204 [file] [log] [blame]
{"version":3,"file":"covalent-core.js.map","sources":["ng://@covalent/core/paging/paging-bar.component.ts","ng://@covalent/core/paging/paging.module.ts","ng://@covalent/core/virtual-scroll/virtual-scroll-row.directive.ts","ng://@covalent/core/virtual-scroll/virtual-scroll-container.component.ts","ng://@covalent/core/virtual-scroll/virtual-scroll.module.ts","ng://@covalent/core/notifications/notification-count.component.ts","ng://@covalent/core/notifications/notifications.module.ts","ng://@covalent/core/common/forms/auto-trim/auto-trim.directive.ts","ng://@covalent/core/common/directives/fullscreen/fullscreen.directive.ts","ng://@covalent/core/common/pipes/time-ago/time-ago.pipe.ts","ng://@covalent/core/common/pipes/time-difference/time-difference.pipe.ts","ng://@covalent/core/common/pipes/time-until/time-until.pipe.ts","ng://@covalent/core/common/pipes/bytes/bytes.pipe.ts","ng://@covalent/core/common/pipes/decimal-bytes/decimal-bytes.pipe.ts","ng://@covalent/core/common/pipes/digits/digits.pipe.ts","ng://@covalent/core/common/pipes/truncate/truncate.pipe.ts","ng://@covalent/core/common/services/router-path.service.ts","ng://@covalent/core/common/services/icon.service.ts","ng://@covalent/core/common/common.module.ts","ng://@covalent/core/common/animations/rotate/rotate.animation.ts","ng://@covalent/core/common/animations/collapse/collapse.animation.ts","ng://@covalent/core/common/animations/fade/fadeInOut.animation.ts","ng://@covalent/core/common/animations/bounce/bounce.animation.ts","ng://@covalent/core/common/animations/flash/flash.animation.ts","ng://@covalent/core/common/animations/headshake/headshake.animation.ts","ng://@covalent/core/common/animations/jello/jello.animation.ts","ng://@covalent/core/common/animations/pulse/pulse.animation.ts","ng://@covalent/core/common/behaviors/control-value-accesor.mixin.ts","ng://@covalent/core/common/behaviors/disabled.mixin.ts","ng://@covalent/core/common/behaviors/disable-ripple.mixin.ts","ng://@covalent/core/common/forms/validators/validators.ts","ng://@covalent/core/message/message.component.ts","ng://@covalent/core/message/message.module.ts","ng://@covalent/core/chips/chips.component.ts","ng://@covalent/core/chips/chips.module.ts","ng://@covalent/core/data-table/data-table-row/data-table-row.component.ts","ng://@covalent/core/data-table/directives/data-table-template.directive.ts","ng://@covalent/core/data-table/data-table.component.ts","ng://@covalent/core/data-table/data-table-column/data-table-column.component.ts","ng://@covalent/core/data-table/data-table-cell/data-table-cell.component.ts","ng://@covalent/core/data-table/data-table-table/data-table-table.component.ts","ng://@covalent/core/data-table/services/data-table.service.ts","ng://@covalent/core/data-table/data-table.module.ts","ng://@covalent/core/dialogs/dialog.component.ts","ng://@covalent/core/dialogs/alert-dialog/alert-dialog.component.ts","ng://@covalent/core/dialogs/confirm-dialog/confirm-dialog.component.ts","ng://@covalent/core/dialogs/prompt-dialog/prompt-dialog.component.ts","ng://@covalent/core/dialogs/services/dialog.service.ts","ng://@covalent/core/dialogs/dialogs.module.ts","ng://@covalent/core/expansion-panel/expansion-panel.component.ts","ng://@covalent/core/expansion-panel/expansion-panel-group.component.ts","ng://@covalent/core/expansion-panel/expansion-panel.module.ts","ng://@covalent/core/file/directives/file-select.directive.ts","ng://@covalent/core/file/directives/file-drop.directive.ts","ng://@covalent/core/file/file-input/file-input.component.ts","ng://@covalent/core/file/file-upload/file-upload.component.ts","ng://@covalent/core/file/services/file.service.ts","ng://@covalent/core/file/file.module.ts","ng://@covalent/core/json-formatter/json-formatter.component.ts","ng://@covalent/core/json-formatter/json-formatter.module.ts","ng://@covalent/core/layout/layout.component.ts","ng://@covalent/core/layout/layout-toggle.class.ts","ng://@covalent/core/layout/layout.directives.ts","ng://@covalent/core/layout/layout-nav/layout-nav.component.ts","ng://@covalent/core/layout/layout-nav-list/layout-nav-list.component.ts","ng://@covalent/core/layout/layout-nav-list/layout-nav-list.directives.ts","ng://@covalent/core/layout/layout-card-over/layout-card-over.component.ts","ng://@covalent/core/layout/layout-manage-list/layout-manage-list.component.ts","ng://@covalent/core/layout/layout-manage-list/layout-manage-list.directives.ts","ng://@covalent/core/layout/layout-footer/layout-footer.component.ts","ng://@covalent/core/layout/navigation-drawer/navigation-drawer.component.ts","ng://@covalent/core/layout/layout.module.ts","ng://@covalent/core/loading/loading.component.ts","ng://@covalent/core/loading/services/loading.factory.ts","ng://@covalent/core/loading/services/loading.service.ts","ng://@covalent/core/loading/directives/loading.directive.ts","ng://@covalent/core/loading/loading.module.ts","ng://@covalent/core/media/services/media.service.ts","ng://@covalent/core/media/directives/media-toggle.directive.ts","ng://@covalent/core/media/media.module.ts","ng://@covalent/core/menu/menu.component.ts","ng://@covalent/core/menu/menu.module.ts","ng://@covalent/core/search/search-input/search-input.component.ts","ng://@covalent/core/search/search-box/search-box.component.ts","ng://@covalent/core/search/search.module.ts","ng://@covalent/core/breadcrumbs/breadcrumb/breadcrumb.component.ts","ng://@covalent/core/breadcrumbs/breadcrumbs.component.ts","ng://@covalent/core/breadcrumbs/breadcrumbs.module.ts","ng://@covalent/core/steps/step.component.ts","ng://@covalent/core/steps/steps.component.ts","ng://@covalent/core/steps/step-header/step-header.component.ts","ng://@covalent/core/steps/step-body/step-body.component.ts","ng://@covalent/core/steps/nav/nav-step-link/nav-step-link.component.ts","ng://@covalent/core/steps/nav/nav-steps-horizontal/nav-steps-horizontal.component.ts","ng://@covalent/core/steps/nav/nav-steps-vertical/nav-steps-vertical.component.ts","ng://@covalent/core/steps/steps.module.ts","ng://@covalent/core/tab-select/tab-option.component.ts","ng://@covalent/core/tab-select/tab-select.component.ts","ng://@covalent/core/tab-select/tab-select.module.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, Optional, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Dir } from '@angular/cdk/bidi';\n\nexport interface IPageChangeEvent {\n page: number;\n maxPage: number;\n pageSize: number;\n total: number;\n fromRow: number;\n toRow: number;\n}\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'td-paging-bar',\n templateUrl: './paging-bar.component.html',\n styleUrls: ['./paging-bar.component.scss' ],\n})\nexport class TdPagingBarComponent implements OnInit {\n\n private _pageSize: number = 50;\n private _total: number = 0;\n private _page: number = 1;\n private _fromRow: number = 1;\n private _toRow: number = 1;\n private _initialized: boolean = false;\n private _pageLinks: number[] = [];\n private _pageLinkCount: number = 0;\n // special case when 2 pageLinks, detect when hit end of pages so can lead in correct direction\n private _hitEnd: boolean = false;\n // special case when 2 pageLinks, detect when hit start of pages so can lead in correct direction\n private _hitStart: boolean = false;\n\n /**\n * firstLast?: boolean\n * Shows or hides the first and last page buttons of the paging bar. Defaults to 'false'\n */\n @Input('firstLast') firstLast: boolean = true;\n\n /**\n * initialPage?: number\n * Sets starting page for the paging bar. Defaults to '1'\n */\n @Input('initialPage') initialPage: number = 1;\n\n /**\n * pageLinkCount?: number\n * Amount of page navigation links for the paging bar. Defaults to '0'\n */\n @Input('pageLinkCount')\n set pageLinkCount(pageLinkCount: number) {\n this._pageLinkCount = coerceNumberProperty(pageLinkCount);\n this._calculatePageLinks();\n this._changeDetectorRef.markForCheck();\n }\n get pageLinkCount(): number {\n return this._pageLinkCount;\n }\n\n /**\n * pageSize?: number\n * Selected page size for the pagination. Defaults 50.\n */\n @Input('pageSize')\n set pageSize(pageSize: number) {\n this._pageSize = coerceNumberProperty(pageSize);\n this._page = 1;\n if (this._initialized) {\n this._handleOnChange();\n }\n this._changeDetectorRef.markForCheck();\n }\n get pageSize(): number {\n return this._pageSize;\n }\n\n /**\n * total: number\n * Total rows for the pagination.\n */\n @Input('total')\n set total(total: number) {\n this._total = coerceNumberProperty(total);\n this._calculateRows();\n this._calculatePageLinks();\n this._changeDetectorRef.markForCheck();\n }\n get total(): number {\n return this._total;\n }\n\n /**\n * pageLinks: number[]\n * Returns the pageLinks in an array\n */\n get pageLinks(): number[] {\n return this._pageLinks;\n }\n\n /**\n * range: string\n * Returns the range of the rows.\n */\n get range(): string {\n return `${!this._toRow ? 0 : this._fromRow}-${this._toRow}`;\n }\n\n /**\n * page: number\n * Returns the current page.\n */\n get page(): number {\n return this._page;\n }\n\n /**\n * page: number\n * Returns the max page for the current pageSize and total.\n */\n get maxPage(): number {\n return Math.ceil(this._total / this._pageSize);\n }\n\n /**\n * change?: function\n * Method to be executed when page size changes or any button is clicked in the paging bar.\n * Emits an [IPageChangeEvent] implemented object.\n */\n @Output('change') onChange: EventEmitter<IPageChangeEvent> = new EventEmitter<IPageChangeEvent>();\n\n get isRTL(): boolean {\n if (this._dir) {\n return this._dir.dir === 'rtl';\n }\n return false;\n }\n\n constructor(@Optional() private _dir: Dir,\n private _changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this._page = coerceNumberProperty(this.initialPage);\n this._calculateRows();\n this._calculatePageLinks();\n this._initialized = true;\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * navigateToPage?: function\n * Navigates to a specific valid page. Returns 'true' if page is valid, else 'false'.\n */\n navigateToPage(page: number): boolean {\n if (page === 1 || (page >= 1 && page <= this.maxPage)) {\n this._page = coerceNumberProperty(Math.floor(page));\n this._handleOnChange();\n return true;\n }\n return false;\n }\n\n /**\n * firstPage?: function\n * Navigates to the first page. Returns 'true' if page is valid, else 'false'.\n */\n firstPage(): boolean {\n return this.navigateToPage(1);\n }\n\n /**\n * prevPage?: function\n * Navigates to the previous page. Returns 'true' if page is valid, else 'false'.\n */\n prevPage(): boolean {\n return this.navigateToPage(this._page - 1);\n }\n\n /**\n * nextPage?: function\n * Navigates to the next page. Returns 'true' if page is valid, else 'false'.\n */\n nextPage(): boolean {\n return this.navigateToPage(this._page + 1);\n }\n\n /**\n * lastPage?: function\n * Navigates to the last page. Returns 'true' if page is valid, else 'false'.\n */\n lastPage(): boolean {\n return this.navigateToPage(this.maxPage);\n }\n\n isMinPage(): boolean {\n return this._page <= 1;\n }\n\n isMaxPage(): boolean {\n return this._page >= this.maxPage;\n }\n\n private _calculateRows(): void {\n let top: number = (this._pageSize * this._page);\n this._fromRow = (this._pageSize * (this._page - 1)) + 1;\n this._toRow = this._total > top ? top : this._total;\n }\n\n /**\n * _calculatePageLinks?: function\n * Calculates the page links that should be shown to the user based on the current state of the paginator\n */\n private _calculatePageLinks(): void {\n // special case when 2 pageLinks, detect when hit end of pages so can lead in correct direction\n if (this.isMaxPage()) {\n this._hitEnd = true;\n this._hitStart = false;\n }\n // special case when 2 pageLinks, detect when hit start of pages so can lead in correct direction\n if (this.isMinPage()) {\n this._hitEnd = false;\n this._hitStart = true;\n }\n // If the pageLinkCount goes above max possible pages based on perpage setting then reset it to maxPage\n let actualPageLinkCount: number = this.pageLinkCount;\n if (this.pageLinkCount > this.maxPage) {\n actualPageLinkCount = this.maxPage;\n }\n // reset the pageLinks array\n this._pageLinks = [];\n // fill in the array with the pageLinks based on the current selected page\n let middlePageLinks: number = Math.floor(actualPageLinkCount / 2);\n for (let x: number = 0; x < actualPageLinkCount; x++) {\n // don't go past the maxPage in the pageLinks\n // have to handle even and odd pageLinkCounts differently so can still lead to the next numbers\n if ((actualPageLinkCount % 2 === 0 && (this.page + middlePageLinks > this.maxPage)) ||\n (actualPageLinkCount % 2 !== 0 && (this.page + middlePageLinks >= this.maxPage))) {\n this._pageLinks[x] = this.maxPage - (actualPageLinkCount - (x + 1));\n // if the selected page is after the middle then set that page as middle and get the correct balance on left and right\n // special handling when there are only 2 pageLinks to just drop to next if block so can lead to next numbers when moving to right\n // when moving to the left then go into this block\n } else if ((actualPageLinkCount > 2 || actualPageLinkCount <= 2 && this._hitEnd) && (this.page - middlePageLinks) > 0) {\n this._pageLinks[x] = (this.page - middlePageLinks) + x;\n // if the selected page is before the middle then set the pages based on the x index leading up to and after selected page\n } else if ((this.page - middlePageLinks) <= 0) {\n this._pageLinks[x] = x + 1;\n // other wise just set the array in order starting from the selected page\n } else {\n this._pageLinks[x] = this.page + x;\n }\n }\n }\n\n private _handleOnChange(): void {\n this._calculateRows();\n this._calculatePageLinks();\n let event: IPageChangeEvent = {\n page: this._page,\n maxPage: this.maxPage,\n pageSize: this._pageSize,\n total: this._total,\n fromRow: this._fromRow,\n toRow: this._toRow,\n };\n this._changeDetectorRef.markForCheck();\n this.onChange.emit(event);\n }\n\n}\n","import { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { TdPagingBarComponent } from './paging-bar.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n ],\n declarations: [\n TdPagingBarComponent,\n ],\n exports: [\n TdPagingBarComponent,\n ],\n})\nexport class CovalentPagingModule {\n\n}\n","import { Directive, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\n\n@Directive({selector: '[tdVirtualScrollRow]'})\nexport class TdVirtualScrollRowDirective extends TemplatePortalDirective {\n\n constructor(templateRef: TemplateRef<any>,\n viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n \n}\n","import { Component, Directive, Input, Output, EventEmitter, ContentChild, AfterViewInit, ViewChild,\n ChangeDetectionStrategy, ChangeDetectorRef, QueryList, ViewChildren, ElementRef, HostListener,\n Renderer2, AfterViewChecked, OnDestroy, TrackByFunction } from '@angular/core';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\n\nimport { Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { TdVirtualScrollRowDirective } from './virtual-scroll-row.directive';\n\nconst TD_VIRTUAL_OFFSET: number = 2;\nconst SCROLL_DEBOUNCE: number = 200;\n\nexport interface ITdVirtualScrollBottomEvent {\n lastRow: any;\n lastIndex: number;\n}\n\n@Component({\n selector: 'td-virtual-scroll-container',\n styleUrls: ['./virtual-scroll-container.component.scss' ],\n templateUrl: './virtual-scroll-container.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdVirtualScrollContainerComponent implements AfterViewInit, AfterViewChecked, OnDestroy {\n\n private _subs: Subscription[] = [];\n private _bottom: Subject<any> = new Subject();\n private _initialized: boolean = false;\n\n private _totalHeight: number = 0;\n private _hostHeight: number = 0;\n private _scrollVerticalOffset: number = 0;\n private _offsetTransform: SafeStyle;\n\n private _fromRow: number = 0;\n private _toRow: number = 0;\n\n private _data: any[];\n private _virtualData: any[];\n\n /**\n * data: any[]\n * List of items to virtually iterate on.\n */\n @Input('data')\n set data(data: any[]) {\n this._data = data;\n if (this._initialized) {\n this._calculateVirtualRows();\n }\n this._changeDetectorRef.markForCheck();\n }\n get data(): any[] {\n return this._data;\n }\n\n get virtualData(): any[] {\n return this._virtualData;\n }\n\n /**\n * bottom: function\n * Method to be executed when user scrolled to the last item of the list.\n * An [ITdVirtualScrollBottomEvent] event is emitted\n */\n @Output() bottom: EventEmitter<ITdVirtualScrollBottomEvent> = new EventEmitter<ITdVirtualScrollBottomEvent>();\n\n @ViewChildren('rowElement') _rows: QueryList<ElementRef>;\n\n @ContentChild(TdVirtualScrollRowDirective) _rowTemplate: TdVirtualScrollRowDirective;\n\n get rowHeight(): number {\n if (this._rows && this._rows.toArray()[0]) {\n return this._rows.toArray()[0].nativeElement.getBoundingClientRect().height;\n }\n return 0;\n }\n\n get totalHeight(): number {\n return this._totalHeight;\n }\n\n get fromRow(): number {\n return this._fromRow;\n }\n\n get toRow(): number {\n return this._toRow;\n }\n\n get offsetTransform(): SafeStyle {\n return this._offsetTransform;\n }\n\n constructor(private _elementRef: ElementRef,\n private _domSanitizer: DomSanitizer,\n private _renderer: Renderer2,\n private _changeDetectorRef: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n this._subs.push(this._rows.changes.subscribe(() => {\n this._calculateVirtualRows();\n }));\n this._initialized = true;\n this._calculateVirtualRows();\n\n this._subs.push(this._bottom.pipe(\n debounceTime(SCROLL_DEBOUNCE),\n ).subscribe(() => {\n this.bottom.emit({\n lastRow: this._data[this._data.length - 1],\n lastIndex: this.toRow,\n });\n }));\n }\n\n ngAfterViewChecked(): void {\n let newHostHeight: number = this._elementRef.nativeElement.getBoundingClientRect().height;\n if (this._hostHeight !== newHostHeight) {\n this._hostHeight = newHostHeight;\n if (this._initialized) {\n this._calculateVirtualRows();\n }\n }\n }\n\n ngOnDestroy(): void {\n if (this._subs) {\n this._subs.forEach((sub: Subscription) => {\n sub.unsubscribe();\n });\n }\n }\n\n /**\n * trackBy?: TrackByFunction\n * This accepts the same trackBy function [ngFor] does.\n * https://angular.io/api/core/TrackByFunction\n */\n @Input('trackBy') trackBy: TrackByFunction<any> = (index: number, item: any) => {\n return item;\n }\n\n @HostListener('scroll', ['$event'])\n handleScroll(event: Event): void {\n let element: HTMLElement = (<HTMLElement>event.target);\n if (element) {\n let verticalScroll: number = element.scrollTop;\n if (this._scrollVerticalOffset !== verticalScroll) {\n this._scrollVerticalOffset = verticalScroll;\n if (this._initialized) {\n this._calculateVirtualRows();\n }\n }\n if (this._initialized) {\n // check to see if bottom was hit to throw the bottom event\n if ((this._data.length * this.rowHeight) - (verticalScroll + this._hostHeight) === 0) {\n this._bottom.next();\n }\n }\n }\n }\n\n /**\n * Method to refresh and recalculate the virtual rows\n * e.g. after changing the [data] content\n */\n refresh(): void {\n this._calculateVirtualRows();\n }\n\n /**\n * Method to scroll to a specific row of the list.\n */\n scrollTo(row: number): void {\n this._elementRef.nativeElement.scrollTop = row * this.rowHeight;\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Method to scroll to the start of the list.\n */\n scrollToStart(): void {\n this.scrollTo(0);\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Method to scroll to the end of the list.\n */\n scrollToEnd(): void {\n this.scrollTo(this.totalHeight / this.rowHeight);\n this._changeDetectorRef.markForCheck();\n }\n\n private _calculateVirtualRows(): void {\n if (this._data) {\n this._totalHeight = this._data.length * this.rowHeight;\n let fromRow: number = Math.floor((this._scrollVerticalOffset / this.rowHeight)) - TD_VIRTUAL_OFFSET;\n this._fromRow = fromRow > 0 ? fromRow : 0;\n let range: number = Math.floor((this._hostHeight / this.rowHeight)) + (TD_VIRTUAL_OFFSET * 2);\n let toRow: number = range + this.fromRow;\n if (isFinite(toRow) && toRow > this._data.length) {\n toRow = this._data.length;\n } else if (!isFinite(toRow)) {\n toRow = TD_VIRTUAL_OFFSET;\n }\n this._toRow = toRow;\n } else {\n this._totalHeight = 0;\n this._fromRow = 0;\n this._toRow = 0;\n }\n\n let offset: number = 0;\n if (this._scrollVerticalOffset > (TD_VIRTUAL_OFFSET * this.rowHeight)) {\n offset = this.fromRow * this.rowHeight;\n }\n\n this._offsetTransform = this._domSanitizer.bypassSecurityTrustStyle('translateY(' + (offset - this.totalHeight) + 'px)');\n if (this._data) {\n this._virtualData = this.data.slice(this.fromRow, this.toRow);\n }\n\n // mark for check at the end of the queue so we are sure\n // that the changes will be marked\n Promise.resolve().then(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TdVirtualScrollRowDirective } from './virtual-scroll-row.directive';\nimport { TdVirtualScrollContainerComponent } from './virtual-scroll-container.component';\n\nconst TD_VIRTUAL_SCROLL: Type<any>[] = [\n TdVirtualScrollRowDirective,\n TdVirtualScrollContainerComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n ],\n declarations: [\n TD_VIRTUAL_SCROLL,\n ],\n exports: [\n TD_VIRTUAL_SCROLL,\n ],\n})\nexport class CovalentVirtualScrollModule {\n\n}\n","import { Component, Input, HostBinding, ChangeDetectionStrategy,\n ViewChild, ElementRef, AfterContentInit } from '@angular/core';\n\nexport enum TdNotificationCountPositionY {\n Top = 'top',\n Bottom = 'bottom',\n Center = 'center',\n}\n\nexport enum TdNotificationCountPositionX {\n Before = 'before',\n After = 'after',\n Center = 'center',\n}\n\nexport const DEFAULT_NOTIFICATION_LIMIT: number = 99;\n\n@Component({\n selector: 'td-notification-count',\n styleUrls: ['./notification-count.component.scss' ],\n templateUrl: './notification-count.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdNotificationCountComponent implements AfterContentInit {\n\n private _notifications: number | boolean = 0;\n private _positionY: TdNotificationCountPositionY;\n private _positionX: TdNotificationCountPositionX;\n private _limit: number = DEFAULT_NOTIFICATION_LIMIT;\n\n /**\n * Div content wrapper of `ng-content`.\n */\n @ViewChild('content') content: ElementRef;\n\n /**\n * color?: \"primary\" | \"accent\" | \"warn\"\n * Sets the theme color of the notification tip. Defaults to \"warn\"\n */\n @Input() color: 'primary' | 'accent' | 'warn' = 'warn';\n\n /**\n * positionX?: TdNotificationCountPositionX or \"before\" | \"after\" | \"center\"\n * Sets the X position of the notification tip.\n * Defaults to \"after\" if it has content, else 'center'.\n */\n @Input()\n set positionX(positionX: TdNotificationCountPositionX) {\n this._positionX = positionX;\n }\n get positionX(): TdNotificationCountPositionX {\n return this._positionX;\n }\n\n /**\n * positionY?: TdNotificationCountPositionY or \"top\" | \"bottom\" | \"center\"\n * Sets the Y position of the notification tip.\n * Defaults to \"top\" if it has content, else 'center'.\n */\n @Input()\n set positionY(positionY: TdNotificationCountPositionY) {\n this._positionY = positionY;\n }\n get positionY(): TdNotificationCountPositionY {\n return this._positionY;\n }\n\n /**\n * notifications?: number | boolean\n * Number for the notification count. Shows component only if the input is a positive number or 'true'\n */\n @Input()\n set notifications(notifications: number | boolean) {\n this._notifications = notifications;\n }\n\n /**\n * limit?: number\n * Limit for notification count. If the number of notifications is greater than limit, then + will be added. Defaults to 99.\n */\n @Input()\n set limit(limit: number) {\n this._limit = limit;\n }\n\n @HostBinding('class.td-notification-hidden')\n get hideHost(): boolean {\n return !this.show && !this._hasContent();\n }\n\n /**\n * Sets the component in its 'noCount' state if [notifications] is a boolean 'true'.\n * Makes the notification tip show without a count.\n */\n get noCount(): string | boolean {\n return this._notifications === true;\n }\n\n /**\n * Notification display string when a count is available.\n * Anything over 99 gets set as 99+\n */\n get notificationsDisplay(): string {\n if (this._notifications > this._limit) {\n return `${this._limit}+`;\n }\n return this._notifications.toString();\n }\n\n /**\n * Shows notification tip only when [notifications] is true or a positive integer.\n */\n get show(): boolean {\n return this._notifications === true || (!isNaN(<any>this._notifications) && this._notifications > 0);\n }\n\n /**\n * Check if [positionX] and [positionY] have been set as inputs, else use defaults depending on component content.\n */\n ngAfterContentInit(): void {\n if (!this._positionX) {\n this.positionX = this._hasContent() ? TdNotificationCountPositionX.After : TdNotificationCountPositionX.Center;\n }\n if (!this._positionY) {\n this.positionY = this._hasContent() ? TdNotificationCountPositionY.Top : TdNotificationCountPositionY.Center;\n }\n }\n\n /**\n * Method to check if element has any kind of content (elements or text)\n */\n private _hasContent(): boolean {\n if (this.content) {\n let contentElement: HTMLElement = this.content.nativeElement;\n return contentElement && (contentElement.children.length > 0 || !!contentElement.textContent.trim());\n }\n return false;\n }\n\n}\n","import { Type } from '@angular/core';\nimport { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\n\nimport { TdNotificationCountComponent } from './notification-count.component';\n\nconst TD_NOTIFICATIONS: Type<any>[] = [\n TdNotificationCountComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n ],\n declarations: [\n TD_NOTIFICATIONS,\n ],\n exports: [\n TD_NOTIFICATIONS,\n ],\n})\nexport class CovalentNotificationsModule {\n\n}\n","import { Directive } from '@angular/core';\nimport { HostListener, Host, Optional } from '@angular/core';\nimport { NgModel } from '@angular/forms';\n\n@Directive({\n selector: '[tdAutoTrim]',\n})\nexport class TdAutoTrimDirective {\n\n constructor(@Optional() @Host() private _model: NgModel) {}\n\n /**\n * Listens to host's (blur) event and trims value.\n */\n @HostListener('blur', ['$event'])\n onBlur(event: Event): void {\n if (this._model && this._model.value && typeof(this._model.value) === 'string') {\n this._model.update.emit(this._model.value.trim());\n }\n }\n}\n","import { Directive, HostListener, ElementRef, Inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\ninterface IFsDocument extends HTMLDocument {\n fullscreenElement: Element;\n webkitFullscreenElement: Element;\n mozFullscreenElement: Element;\n msFullscreenElement: Element;\n webkitExitFullscreen: () => void;\n mozCancelFullScreen: () => void;\n msExitFullscreen: () => void;\n}\n\n@Directive({\n selector: '[tdFullScreen]',\n exportAs: 'tdFullScreen',\n})\nexport class TdFullscreenDirective {\n fullScreenIsActive: boolean = false;\n constructor(@Inject(DOCUMENT) private _document: IFsDocument, private _el: ElementRef) {}\n\n @HostListener('document:fullscreenchange', ['$event'])\n @HostListener('document:webkitfullscreenchange', ['$event'])\n @HostListener('document:mozfullscreenchange', ['$event'])\n @HostListener('document:msfullscreenchange', ['$event'])\n public fsChangeHandler(event: Event): void {\n this.fullScreenIsActive = event.srcElement === this._getFullScreenElement();\n }\n\n public toggleFullScreen(): void {\n this._getFullScreenElement() === this._el.nativeElement ? this.exitFullScreen() : this.enterFullScreen();\n }\n\n public enterFullScreen(): void {\n const { _el: { nativeElement } }: TdFullscreenDirective = this;\n const enterFullScreenMap: object = {\n requestFullscreen: () => nativeElement.requestFullscreen(), // Chrome\n webkitRequestFullscreen: () => nativeElement.webkitRequestFullscreen(), // Safari \n mozRequestFullScreen: () => nativeElement.mozRequestFullScreen(), // Firefox\n msRequestFullscreen: () => nativeElement.msRequestFullscreen(), // IE\n };\n\n for (const handler of Object.keys(enterFullScreenMap)) {\n if (nativeElement[handler]) {\n enterFullScreenMap[handler]();\n }\n }\n }\n\n public exitFullScreen(): void {\n const { _document, _el: { nativeElement } }: TdFullscreenDirective = this;\n const exitFullScreenMap: object = {\n exitFullscreen: () => _document.exitFullscreen(), // Chrome\n webkitExitFullscreen: () => _document.webkitExitFullscreen(), // Safari\n mozCancelFullScreen: () => _document.mozCancelFullScreen(), // Firefox\n msExitFullscreen: () => _document.msExitFullscreen(), // IE\n };\n\n for (const handler of Object.keys(exitFullScreenMap)) {\n if (_document[handler] && this._getFullScreenElement() === nativeElement) {\n exitFullScreenMap[handler]();\n }\n }\n }\n\n private _getFullScreenElement(): Element {\n const { _document }: TdFullscreenDirective = this;\n const tdFullScreenElementMap: object = {\n fullscreenElement: () => _document.fullscreenElement, // Chrome, Opera\n webkitFullscreenElement: () => _document.webkitFullscreenElement, // Safari\n mozFullscreenElement: () => _document.mozFullscreenElement, // Firefox\n msFullscreenElement: () => _document.msFullscreenElement, // IE, Edge\n };\n for (const props of Object.keys(tdFullScreenElementMap)) {\n if (_document[props]) {\n return _document[props];\n }\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'timeAgo',\n})\nexport class TdTimeAgoPipe implements PipeTransform {\n transform(time: any, reference?: any): string {\n // Convert time to date object if not already\n time = new Date(time);\n let ref: Date = new Date(reference);\n\n // If not a valid timestamp, return 'Invalid Date'\n if (!time.getTime()) {\n return 'Invalid Date';\n }\n\n // For unit testing, we need to be able to declare a static start time\n // for calculations, or else speed of tests can bork.\n let startTime: number = isNaN(ref.getTime()) ? Date.now() : ref.getTime();\n let diff: number = Math.floor((startTime - time.getTime()) / 1000);\n\n if (diff < 2) {\n return '1 second ago';\n }\n if (diff < 60) {\n return Math.floor(diff) + ' seconds ago';\n }\n // Minutes\n diff = diff / 60;\n if (diff < 2) {\n return '1 minute ago';\n }\n if (diff < 60) {\n return Math.floor(diff) + ' minutes ago';\n }\n // Hours\n diff = diff / 60;\n if (diff < 2) {\n return '1 hour ago';\n }\n if (diff < 24) {\n return Math.floor(diff) + ' hours ago';\n }\n // Days\n diff = diff / 24;\n if (diff < 2) {\n return '1 day ago';\n }\n if (diff < 30) {\n return Math.floor(diff) + ' days ago';\n }\n // Months\n diff = diff / 30;\n if (diff < 2) {\n return '1 month ago';\n }\n if (diff < 12) {\n return Math.floor(diff) + ' months ago';\n }\n // Years\n diff = diff / 12;\n if (diff < 2) {\n return '1 year ago';\n } else {\n return Math.floor(diff) + ' years ago';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'timeDifference',\n})\n\nexport class TdTimeDifferencePipe implements PipeTransform {\n transform(start: any, end?: any): string {\n let startTime: Date = new Date(start);\n let endTime: Date;\n\n if (end !== undefined) {\n endTime = new Date(end);\n } else {\n endTime = new Date();\n }\n\n if (!startTime.getTime() || !endTime.getTime()) {\n return 'Invalid Date';\n }\n\n let diff: number = Math.floor((endTime.getTime() - startTime.getTime()) / 1000);\n\n let days: number = Math.floor(diff / (60 * 60 * 24));\n diff = diff - (days * (60 * 60 * 24));\n\n let hours: number = Math.floor(diff / (60 * 60));\n diff = diff - (hours * (60 * 60));\n\n let minutes: number = Math.floor(diff / (60));\n diff -= minutes * (60);\n\n let seconds: number = diff;\n\n let pad: string = '00';\n\n let daysFormatted: string = '';\n\n if (days > 0 && days < 2) {\n daysFormatted = ' day - ';\n } else if (days > 1) {\n daysFormatted = ' days - ' ;\n }\n\n return (days > 0 ? days + daysFormatted : daysFormatted) +\n pad.substring(0, pad.length - (hours + '').length) + hours + ':' +\n pad.substring(0, pad.length - (minutes + '').length) + minutes + ':' +\n pad.substring(0, pad.length - (seconds + '').length) + seconds;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'timeUntil',\n})\nexport class TdTimeUntilPipe implements PipeTransform {\n transform(time: any, reference?: any): string {\n // Convert time to date object if not already\n time = new Date(time);\n let ref: Date = new Date(reference);\n\n // If not a valid timestamp, return 'Invalid Date'\n if (!time.getTime()) {\n return 'Invalid Date';\n }\n\n // For unit testing, we need to be able to declare a static start time\n // for calculations, or else speed of tests can bork.\n let startTime: number = isNaN(ref.getTime()) ? Date.now() : ref.getTime();\n let diff: number = Math.floor((time.getTime() - startTime) / 1000);\n\n if (diff < 2) {\n return 'in 1 second';\n }\n if (diff < 60) {\n return 'in ' + Math.floor(diff) + ' seconds';\n }\n // Minutes\n diff = diff / 60;\n if (diff < 2) {\n return 'in 1 minute';\n }\n if (diff < 60) {\n return 'in ' + Math.floor(diff) + ' minutes';\n }\n // Hours\n diff = diff / 60;\n if (diff < 2) {\n return 'in 1 hour';\n }\n if (diff < 24) {\n return 'in ' + Math.floor(diff) + ' hours';\n }\n // Days\n diff = diff / 24;\n if (diff < 2) {\n return 'in 1 day';\n }\n if (diff < 30) {\n return 'in ' + Math.floor(diff) + ' days';\n }\n // Months\n diff = diff / 30;\n if (diff < 2) {\n return 'in 1 month';\n }\n if (diff < 12) {\n return 'in ' + Math.floor(diff) + ' months';\n }\n // Years\n diff = diff / 12;\n if (diff < 2) {\n return 'in 1 year';\n } else {\n return 'in ' + Math.floor(diff) + ' years';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'bytes',\n})\n\nexport class TdBytesPipe implements PipeTransform {\n /* `bytes` needs to be `any` or TypeScript complains\n Tried both `number` and `number | string` */\n transform(bytes: any, precision: number = 2): string {\n if (bytes === 0) {\n return '0 B';\n } else if (isNaN(parseInt(bytes, 10))) {\n /* If not a valid number, return 'Invalid Number' */\n return 'Invalid Number';\n }\n let k: number = 1024;\n let sizes: string[] = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];\n let i: number = Math.floor(Math.log(bytes) / Math.log(k));\n // if less than 1\n if (i < 0) {\n return 'Invalid Number';\n }\n return parseFloat((bytes / Math.pow(k, i)).toFixed(precision)) + ' ' + sizes[i];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'decimalBytes',\n})\n\nexport class TdDecimalBytesPipe implements PipeTransform {\n /* `bytes` needs to be `any` or TypeScript complains\n Tried both `number` and `number | string` */\n transform(bytes: any, precision: number = 2): string {\n if (bytes === 0) {\n return '0 B';\n } else if (isNaN(parseInt(bytes, 10))) {\n /* If not a valid number, return 'Invalid Number' */\n return 'Invalid Number';\n }\n let k: number = 1000;\n let sizes: string[] = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n let i: number = Math.floor(Math.log(bytes) / Math.log(k));\n // if less than 1\n if (i < 0) {\n return 'Invalid Number';\n }\n return parseFloat((bytes / Math.pow(k, i)).toFixed(precision)) + ' ' + sizes[i];\n }\n}\n","import { Pipe, PipeTransform, Inject, LOCALE_ID } from '@angular/core';\nimport { DecimalPipe } from '@angular/common';\n\n@Pipe({\n name: 'digits',\n})\n\nexport class TdDigitsPipe implements PipeTransform {\n\n private _decimalPipe: DecimalPipe;\n\n constructor(@Inject(LOCALE_ID) private _locale: string = 'en') {\n this._decimalPipe = new DecimalPipe(this._locale);\n }\n\n /* `digits` needs to be type `digits: any` or TypeScript complains */\n transform(digits: any, precision: number = 1): string {\n if (digits === 0) {\n return '0';\n } else if (isNaN(parseInt(digits, 10))) {\n /* If not a valid number, return the value */\n return digits;\n } else if (digits < 1) {\n return this._decimalPipe.transform(digits.toFixed(precision));\n }\n let k: number = 1000;\n let sizes: string[] = ['', 'K', 'M', 'B', 'T', 'Q'];\n let i: number = Math.floor(Math.log(digits) / Math.log(k));\n let size: string = sizes[i];\n return this._decimalPipe.transform(parseFloat((digits / Math.pow(k, i)).toFixed(precision))) + (size ? ' ' + size : '');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'truncate',\n})\n\nexport class TdTruncatePipe implements PipeTransform {\n transform(text: any, length: number): string {\n if (typeof text !== 'string') {\n return '';\n }\n\n // Truncate\n let truncated: string = text.substr(0, length);\n\n if (text.length > length) {\n if (truncated.lastIndexOf(' ') > 0) {\n truncated = truncated.trim();\n }\n\n truncated += '…';\n }\n\n return truncated;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router, RoutesRecognized } from '@angular/router';\n\nimport { filter, pairwise } from 'rxjs/operators';\n\n@Injectable()\nexport class RouterPathService {\nprivate static _previousRoute: string = '/';\n constructor(private _router: Router) {\n this._router.events.pipe(\n filter((e: any) => e instanceof RoutesRecognized),\n pairwise(),\n ).subscribe((e: any[]) => {\n RouterPathService._previousRoute = e[0].urlAfterRedirects;\n });\n }\n\n /*\n * Utility function to get the route the user previously went to\n * good for use in a \"back button\"\n */\n getPreviousRoute(): string {\n return RouterPathService._previousRoute;\n }\n}\n","/*\n * Copyright (C) 2016-2017 by Teradata Corporation. All rights reserved.\n * TERADATA CORPORATION CONFIDENTIAL AND TRADE SECRET\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class IconService {\n\n private _icons: string[] = [\n 'access_alarm',\n 'access_alarms',\n 'access_time',\n 'accessibility',\n 'account_balance',\n 'account_balance_wallet',\n 'account_box',\n 'account_circle',\n 'add',\n 'add_alarm',\n 'add_box',\n 'add_circle',\n 'add_circle_outline',\n 'add_shopping_cart',\n 'add_to_photos',\n 'adjust',\n 'alarm',\n 'alarm_add',\n 'alarm_off',\n 'alarm_on',\n 'album',\n 'android',\n 'announcement',\n 'apps',\n 'archive',\n 'arrow_back',\n 'arrow_drop_down',\n 'arrow_drop_down_circle',\n 'arrow_drop_up',\n 'arrow_forward',\n 'aspect_ratio',\n 'assessment',\n 'assignment',\n 'assignment_ind',\n 'assignment_late',\n 'assignment_return',\n 'assignment_returned',\n 'assignment_turned_in',\n 'assistant_photo',\n 'attach_file',\n 'attach_money',\n 'attachment',\n 'audiotrack',\n 'autorenew',\n 'av_timer',\n 'backspace',\n 'backup',\n 'battery_alert',\n 'battery_charging_full',\n 'battery_full',\n 'battery_std',\n 'battery_unknown',\n 'beenhere',\n 'block',\n 'bluetooth',\n 'bluetooth_audio',\n 'bluetooth_connected',\n 'bluetooth_disabled',\n 'bluetooth_searching',\n 'blur_circular',\n 'blur_linear',\n 'blur_off',\n 'blur_on',\n 'book',\n 'bookmark',\n 'bookmark_border',\n 'border_all',\n 'border_bottom',\n 'border_clear',\n 'border_color',\n 'border_horizontal',\n 'border_inner',\n 'border_left',\n 'border_outer',\n 'border_right',\n 'border_style',\n 'border_top',\n 'border_vertical',\n 'brightness_1',\n 'brightness_2',\n 'brightness_3',\n 'brightness_4',\n 'brightness_5',\n 'brightness_6',\n 'brightness_7',\n 'brightness_auto',\n 'brightness_high',\n 'brightness_low',\n 'brightness_medium',\n 'broken_image',\n 'brush',\n 'bug_report',\n 'build',\n 'business',\n 'cached',\n 'cake',\n 'call',\n 'call_end',\n 'call_made',\n 'call_merge',\n 'call_missed',\n 'call_received',\n 'call_split',\n 'camera',\n 'camera_alt',\n 'camera_front',\n 'camera_rear',\n 'camera_roll',\n 'cancel',\n 'cast',\n 'cast_connected',\n 'center_focus_strong',\n 'center_focus_weak',\n 'chat',\n 'check',\n 'check_box',\n 'check_box_outline_blank',\n 'check_circle',\n 'chevron_left',\n 'chevron_right',\n 'class',\n 'clear',\n 'clear_all',\n 'close',\n 'closed_caption',\n 'cloud',\n 'cloud_circle',\n 'cloud_done',\n 'cloud_download',\n 'cloud_off',\n 'cloud_queue',\n 'cloud_upload',\n 'collections',\n 'collections_bookmark',\n 'color_lens',\n 'colorize',\n 'comment',\n 'compare',\n 'computer',\n 'confirmation_number',\n 'contact_phone',\n 'contacts',\n 'content_copy',\n 'content_cut',\n 'content_paste',\n 'control_point',\n 'control_point_duplicate',\n 'create',\n 'credit_card',\n 'crop',\n 'crop_16_9',\n 'crop_3_2',\n 'crop_5_4',\n 'crop_7_5',\n 'crop_din',\n 'crop_free',\n 'crop_landscape',\n 'crop_original',\n 'crop_portrait',\n 'crop_square',\n 'dashboard',\n 'data_usage',\n 'dehaze',\n 'delete',\n 'description',\n 'desktop_mac',\n 'desktop_windows',\n 'details',\n 'developer_board',\n 'developer_mode',\n 'device_hub',\n 'devices',\n 'dialer_sip',\n 'dialpad',\n 'directions',\n 'directions_bike',\n 'directions_boat',\n 'directions_bus',\n 'directions_car',\n 'directions_railway',\n 'directions_run',\n 'directions_subway',\n 'directions_transit',\n 'directions_walk',\n 'disc_full',\n 'dns',\n 'do_not_disturb',\n 'do_not_disturb_alt',\n 'dock',\n 'domain',\n 'done',\n 'done_all',\n 'drafts',\n 'drive_eta',\n 'dvr',\n 'edit',\n 'eject',\n 'email',\n 'equalizer',\n 'error',\n 'error_outline',\n 'event',\n 'event_available',\n 'event_busy',\n 'event_note',\n 'event_seat',\n 'exit_to_app',\n 'expand_less',\n 'expand_more',\n 'explicit',\n 'explore',\n 'exposure',\n 'exposure_neg_1',\n 'exposure_neg_2',\n 'exposure_plus_1',\n 'exposure_plus_2',\n 'exposure_zero',\n 'extension',\n 'face',\n 'fast_forward',\n 'fast_rewind',\n 'favorite',\n 'favorite_border',\n 'feedback',\n 'file_download',\n 'file_upload',\n 'filter',\n 'filter_1',\n 'filter_2',\n 'filter_3',\n 'filter_4',\n 'filter_5',\n 'filter_6',\n 'filter_7',\n 'filter_8',\n 'filter_9',\n 'filter_9_plus',\n 'filter_b_and_w',\n 'filter_center_focus',\n 'filter_drama',\n 'filter_frames',\n 'filter_hdr',\n 'filter_list',\n 'filter_none',\n 'filter_tilt_shift',\n 'filter_vintage',\n 'find_in_page',\n 'find_replace',\n 'flag',\n 'flare',\n 'flash_auto',\n 'flash_off',\n 'flash_on',\n 'flight',\n 'flight_land',\n 'flight_takeoff',\n 'flip',\n 'flip_to_back',\n 'flip_to_front',\n 'folder',\n 'folder_open',\n 'folder_shared',\n 'folder_special',\n 'font_download',\n 'format_align_center',\n 'format_align_justify',\n 'format_align_left',\n 'format_align_right',\n 'format_bold',\n 'format_clear',\n 'format_color_fill',\n 'format_color_reset',\n 'format_color_text',\n 'format_indent_decrease',\n 'format_indent_increase',\n 'format_italic',\n 'format_line_spacing',\n 'format_list_bulleted',\n 'format_list_numbered',\n 'format_paint',\n 'format_quote',\n 'format_size',\n 'format_strikethrough',\n 'format_textdirection_l_to_r',\n 'format_textdirection_r_to_l',\n 'format_underlined',\n 'forum',\n 'forward',\n 'forward_10',\n 'forward_30',\n 'forward_5',\n 'fullscreen',\n 'fullscreen_exit',\n 'functions',\n 'gamepad',\n 'games',\n 'gesture',\n 'get_app',\n 'gif',\n 'gps_fixed',\n 'gps_not_fixed',\n 'gps_off',\n 'grade',\n 'gradient',\n 'grain',\n 'graphic_eq',\n 'grid_off',\n 'grid_on',\n 'group',\n 'group_add',\n 'group_work',\n 'hd',\n 'hdr_off',\n 'hdr_on',\n 'hdr_strong',\n 'hdr_weak',\n 'headset',\n 'headset_mic',\n 'healing',\n 'hearing',\n 'help',\n 'help_outline',\n 'high_quality',\n 'highlight_off',\n 'history',\n 'home',\n 'hotel',\n 'hourglass_empty',\n 'hourglass_full',\n 'http',\n 'https',\n 'image',\n 'image_aspect_ratio',\n 'import_export',\n 'inbox',\n 'indeterminate_check_box',\n 'info',\n 'info_outline',\n 'input',\n 'insert_chart',\n 'insert_comment',\n 'insert_drive_file',\n 'insert_emoticon',\n 'insert_invitation',\n 'insert_link',\n 'insert_photo',\n 'invert_colors',\n 'invert_colors_off',\n 'iso',\n 'keyboard',\n 'keyboard_arrow_down',\n 'keyboard_arrow_left',\n 'keyboard_arrow_right',\n 'keyboard_arrow_up',\n 'keyboard_backspace',\n 'keyboard_capslock',\n 'keyboard_hide',\n 'keyboard_return',\n 'keyboard_tab',\n 'keyboard_voice',\n 'label',\n 'label_outline',\n 'landscape',\n 'language',\n 'laptop',\n 'laptop_chromebook',\n 'laptop_mac',\n 'laptop_windows',\n 'launch',\n 'layers',\n 'layers_clear',\n 'leak_add',\n 'leak_remove',\n 'lens',\n 'library_add',\n 'library_books',\n 'library_music',\n 'link',\n 'list',\n 'live_help',\n 'live_tv',\n 'local_activity',\n 'local_airport',\n 'local_atm',\n 'local_bar',\n 'local_cafe',\n 'local_car_wash',\n 'local_convenience_store',\n 'local_dining',\n 'local_drink',\n 'local_florist',\n 'local_gas_station',\n 'local_grocery_store',\n 'local_hospital',\n 'local_hotel',\n 'local_laundry_service',\n 'local_library',\n 'local_mall',\n 'local_movies',\n 'local_offer',\n 'local_parking',\n 'local_pharmacy',\n 'local_phone',\n 'local_pizza',\n 'local_play',\n 'local_post_office',\n 'local_printshop',\n 'local_see',\n 'local_shipping',\n 'local_taxi',\n 'location_city',\n 'location_disabled',\n 'location_off',\n 'location_on',\n 'location_searching',\n 'lock',\n 'lock_open',\n 'lock_outline',\n 'looks',\n 'looks_3',\n 'looks_4',\n 'looks_5',\n 'looks_6',\n 'looks_one',\n 'looks_two',\n 'loop',\n 'loupe',\n 'loyalty',\n 'mail',\n 'map',\n 'markunread',\n 'markunread_mailbox',\n 'memory',\n 'menu',\n 'merge_type',\n 'message',\n 'mic',\n 'mic_none',\n 'mic_off',\n 'mms',\n 'mode_comment',\n 'mode_edit',\n 'money_off',\n 'monochrome_photos',\n 'mood',\n 'mood_bad',\n 'more',\n 'more_horiz',\n 'more_vert',\n 'mouse',\n 'movie',\n 'movie_creation',\n 'music_note',\n 'my_library_add',\n 'my_library_books',\n 'my_library_music',\n 'my_location',\n 'nature',\n 'nature_people',\n 'navigate_before',\n 'navigate_next',\n 'navigation',\n 'network_cell',\n 'network_locked',\n 'network_wifi',\n 'new_releases',\n 'nfc',\n 'no_sim',\n 'not_interested',\n 'note_add',\n 'notifications',\n 'notifications_active',\n 'notifications_none',\n 'notifications_off',\n 'notifications_paused',\n 'offline_pin',\n 'ondemand_video',\n 'open_in_browser',\n 'open_in_new',\n 'open_with',\n 'pages',\n 'pageview',\n 'palette',\n 'panorama',\n 'panorama_fish_eye',\n 'panorama_horizontal',\n 'panorama_vertical',\n 'panorama_wide_angle',\n 'party_mode',\n 'pause',\n 'pause_circle_filled',\n 'pause_circle_outline',\n 'payment',\n 'people',\n 'people_outline',\n 'perm_camera_mic',\n 'perm_contact_calendar',\n 'perm_data_setting',\n 'perm_device_information',\n 'perm_identity',\n 'perm_media',\n 'perm_phone_msg',\n 'perm_scan_wifi',\n 'person',\n 'person_add',\n 'person_outline',\n 'person_pin',\n 'personal_video',\n 'phone',\n 'phone_android',\n 'phone_bluetooth_speaker',\n 'phone_forwarded',\n 'phone_in_talk',\n 'phone_iphone',\n 'phone_locked',\n 'phone_missed',\n 'phone_paused',\n 'phonelink',\n 'phonelink_erase',\n 'phonelink_lock',\n 'phonelink_off',\n 'phonelink_ring',\n 'phonelink_setup',\n 'photo',\n 'photo_album',\n 'photo_camera',\n 'photo_library',\n 'photo_size_select_actual',\n 'photo_size_select_large',\n 'photo_size_select_small',\n 'picture_as_pdf',\n 'picture_in_picture',\n 'pin_drop',\n 'place',\n 'play_arrow',\n 'play_circle_filled',\n 'play_circle_outline',\n 'play_for_work',\n 'play_shopping_bag',\n 'playlist_add',\n 'plus_one',\n 'poll',\n 'polymer',\n 'portable_wifi_off',\n 'portrait',\n 'power',\n 'power_input',\n 'power_settings_new',\n 'present_to_all',\n 'print',\n 'public',\n 'publish',\n 'query_builder',\n 'question_answer',\n 'queue',\n 'queue_music',\n 'radio',\n 'radio_button_checked',\n 'radio_button_unchecked',\n 'rate_review',\n 'receipt',\n 'recent_actors',\n 'redeem',\n 'redo',\n 'refresh',\n 'remove',\n 'remove_circle',\n 'remove_circle_outline',\n 'remove_red_eye',\n 'reorder',\n 'repeat',\n 'repeat_one',\n 'replay',\n 'replay_10',\n 'replay_30',\n 'replay_5',\n 'reply',\n 'reply_all',\n 'report',\n 'report_problem',\n 'restaurant_menu',\n 'restore',\n 'ring_volume',\n 'room',\n 'rotate_90_degrees_ccw',\n 'rotate_left',\n 'rotate_right',\n 'router',\n 'satellite',\n 'save',\n 'scanner',\n 'schedule',\n 'school',\n 'screen_lock_landscape',\n 'screen_lock_portrait',\n 'screen_lock_rotation',\n 'screen_rotation',\n 'sd_card',\n 'sd_storage',\n 'search',\n 'security',\n 'select_all',\n 'send',\n 'settings',\n 'settings_applications',\n 'settings_backup_restore',\n 'settings_bluetooth',\n 'settings_brightness',\n 'settings_cell',\n 'settings_ethernet',\n 'settings_input_antenna',\n 'settings_input_component',\n 'settings_input_composite',\n 'settings_input_hdmi',\n 'settings_input_svideo',\n 'settings_overscan',\n 'settings_phone',\n 'settings_power',\n 'settings_remote',\n 'settings_system_daydream',\n 'settings_voice',\n 'share',\n 'shop',\n 'shop_two',\n 'shopping_basket',\n 'shopping_cart',\n 'shuffle',\n 'signal_cellular_4_bar',\n 'signal_cellular_connected_no_internet_4_bar',\n 'signal_cellular_no_sim',\n 'signal_cellular_null',\n 'signal_cellular_off',\n 'signal_wifi_4_bar',\n 'signal_wifi_4_bar_lock',\n 'signal_wifi_off',\n 'sim_card',\n 'sim_card_alert',\n 'skip_next',\n 'skip_previous',\n 'slideshow',\n 'smartphone',\n 'sms',\n 'sms_failed',\n 'snooze',\n 'sort',\n 'sort_by_alpha',\n 'space_bar',\n 'speaker',\n 'speaker_group',\n 'speaker_notes',\n 'speaker_phone',\n 'spellcheck',\n 'star',\n 'star_border',\n 'star_half',\n 'stars',\n 'stay_current_landscape',\n 'stay_current_portrait',\n 'stay_primary_landscape',\n 'stay_primary_portrait',\n 'stop',\n 'storage',\n 'store',\n 'store_mall_directory',\n 'straighten',\n 'strikethrough_s',\n 'style',\n 'subject',\n 'subtitles',\n 'supervisor_account',\n 'surround_sound',\n 'swap_calls',\n 'swap_horiz',\n 'swap_vert',\n 'swap_vertical_circle',\n 'switch_camera',\n 'switch_video',\n 'sync',\n 'sync_disabled',\n 'sync_problem',\n 'system_update',\n 'system_update_alt',\n 'tab',\n 'tab_unselected',\n 'tablet',\n 'tablet_android',\n 'tablet_mac',\n 'tag_faces',\n 'tap_and_play',\n 'terrain',\n 'text_format',\n 'textsms',\n 'texture',\n 'theaters',\n 'thumb_down',\n 'thumb_up',\n 'thumbs_up_down',\n 'time_to_leave',\n 'timelapse',\n 'timer',\n 'timer_10',\n 'timer_3',\n 'timer_off',\n 'toc',\n 'today',\n 'toll',\n 'tonality',\n 'toys',\n 'track_changes',\n 'traffic',\n 'transform',\n 'translate',\n 'trending_down',\n 'trending_flat',\n 'trending_up',\n 'tune',\n 'turned_in',\n 'turned_in_not',\n 'tv',\n 'undo',\n 'unfold_less',\n 'unfold_more',\n 'usb',\n 'verified_user',\n 'vertical_align_bottom',\n 'vertical_align_center',\n 'vertical_align_top',\n 'vibration',\n 'video_library',\n 'videocam',\n 'videocam_off',\n 'view_agenda',\n 'view_array',\n 'view_carousel',\n 'view_column',\n 'view_comfy',\n 'view_compact',\n 'view_day',\n 'view_headline',\n 'view_list',\n 'view_module',\n 'view_quilt',\n 'view_stream',\n 'view_week',\n 'vignette',\n 'visibility',\n 'visibility_off',\n 'voice_chat',\n 'voicemail',\n 'volume_down',\n 'volume_mute',\n 'volume_off',\n 'volume_up',\n 'vpn_key',\n 'vpn_lock',\n 'wallpaper',\n 'warning',\n 'watch',\n 'wb_auto',\n 'wb_cloudy',\n 'wb_incandescent',\n 'wb_iridescent',\n 'wb_sunny',\n 'wc',\n 'web',\n 'whatshot',\n 'widgets',\n 'wifi',\n 'wifi_lock',\n 'wifi_tethering',\n 'work',\n 'wrap_text',\n 'youtube_searched_for',\n 'zoom_in',\n 'zoom_out',\n ];\n\n get icons(): string[] {\n return this._icons;\n }\n\n filter(query: string): string[] {\n return this.icons.filter((el: string) => {\n return el.toLowerCase().indexOf(query ? query.toLowerCase() : '') > -1;\n });\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\n/**\n * Directives\n */\nimport { TdAutoTrimDirective } from './forms/auto-trim/auto-trim.directive';\nimport { TdFullscreenDirective } from './directives/fullscreen/fullscreen.directive';\n\nconst TD_DIRECTIVES: Type<any>[] = [TdAutoTrimDirective, TdFullscreenDirective];\n\n// Validators\nconst TD_VALIDATORS: Type<any>[] = [];\n\n/**\n * PIPES\n */\nimport { TdTimeAgoPipe } from './pipes/time-ago/time-ago.pipe';\nimport { TdTimeDifferencePipe } from './pipes/time-difference/time-difference.pipe';\nimport { TdTimeUntilPipe } from './pipes/time-until/time-until.pipe';\nimport { TdBytesPipe } from './pipes/bytes/bytes.pipe';\nimport { TdDecimalBytesPipe } from './pipes/decimal-bytes/decimal-bytes.pipe';\nimport { TdDigitsPipe } from './pipes/digits/digits.pipe';\nimport { TdTruncatePipe } from './pipes/truncate/truncate.pipe';\n\nconst TD_PIPES: Type<any>[] = [\n TdTimeAgoPipe,\n TdTimeDifferencePipe,\n TdTimeUntilPipe,\n TdBytesPipe,\n TdDecimalBytesPipe,\n TdDigitsPipe,\n TdTruncatePipe,\n];\n\n/**\n * Services\n */\n\nimport { RouterPathService } from './services/router-path.service';\nimport { IconService } from './services/icon.service';\n\n@NgModule({\n imports: [FormsModule, CommonModule],\n declarations: [TD_DIRECTIVES, TD_PIPES, TD_VALIDATORS],\n exports: [FormsModule, CommonModule, TD_DIRECTIVES, TD_PIPES, TD_VALIDATORS],\n providers: [RouterPathService, IconService],\n})\nexport class CovalentCommonModule {}\n","import {\n trigger, state, style, transition, animate, AnimationTriggerMetadata,\n query, animateChild, group,\n} from '@angular/animations';\n\nimport { IAnimationOptions } from '../common/interfaces';\n\nexport interface IRotateAnimation extends IAnimationOptions {\n degrees?: number;\n ease?: string;\n}\n\n/**\n * const tdRotateAnimation\n *\n * Parameter Options:\n * * degressStart: Degrees of rotation that the dom object will end up in during the \"false\" state\n * * degreesEnd: Degrees of rotation that the dom object will end up in during the \"true\" state\n * * duration: Duration the animation will run in milliseconds. Defaults to 150 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerates and decelerates. Defaults to ease-in.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a rotation animation.\n *\n * usage: [@tdRotate]=\"{ value: true | false, params: { degreesEnd: 90 }}\"\n */\n\nexport const tdRotateAnimation: AnimationTriggerMetadata = trigger('tdRotate', [\n state('0', style({\n transform: 'rotate({{ degressStart }}deg)',\n }), { params: { degressStart: 0 }}),\n state('1', style({\n transform: 'rotate({{ degreesEnd }}deg)',\n }), { params: { degreesEnd: 180 }}),\n transition('0 <=> 1', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ ease }}'),\n ]),\n ], { params: { duration: 250, delay: '0', ease: 'ease-in' }}),\n]);\n","import { trigger, state, style, transition, animate,\n AnimationTriggerMetadata, AUTO_STYLE, query, animateChild, group } from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\nexport interface ICollapseAnimation extends IAnimationOptions {\n easeOnClose?: string;\n easeOnOpen?: string;\n}\n\n/**\n * const tdCollapseAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 150 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * easeOnClose: Animation accelerates and decelerates when closing. Defaults to ease-in.\n * * easeOnOpen: Animation accelerates and decelerates when opening. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a collapse/expand animation.\n *\n * usage: [@tdCollapse]=\"{ value: true | false, params: { duration: 500 }}\"\n */\nexport const tdCollapseAnimation: AnimationTriggerMetadata = trigger('tdCollapse', [\n state('1', style({\n height: '0',\n overflow: 'hidden',\n })),\n state('0', style({\n height: AUTO_STYLE,\n overflow: AUTO_STYLE,\n })),\n transition('0 => 1', [\n style({\n overflow: 'hidden',\n height: AUTO_STYLE,\n }),\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ ease }}', style({\n height: '0',\n overflow: 'hidden',\n })),\n ]),\n ], { params: { duration: 150, delay: '0', ease: 'ease-in' }}),\n transition('1 => 0', [\n style({\n height: '0',\n overflow: 'hidden',\n }),\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ ease }}', style({\n overflow: 'hidden',\n height: AUTO_STYLE,\n })),\n ]),\n ], { params: { duration: 150, delay: '0', ease: 'ease-out' }}),\n]);\n","import { trigger, state, style, transition, animate,\n AnimationTriggerMetadata, AUTO_STYLE, query, animateChild, group } from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\nexport interface IFadeInOutAnimation extends IAnimationOptions {\n easeOnIn?: string;\n easeOnOut?: string;\n}\n\n/**\n * const tdFadeInOutAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 150 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * easeOnIn: Animation accelerates and decelerates when fading in. Defaults to ease-in.\n * * easeOnOut: Animation accelerates and decelerates when fading out. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a fade animation.\n *\n * usage: [@tdFadeInOut]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdFadeInOutAnimation: AnimationTriggerMetadata = trigger('tdFadeInOut', [\n state('0', style({\n opacity: '0',\n visibility: 'hidden',\n })),\n state('1', style({\n opacity: AUTO_STYLE,\n visibility: AUTO_STYLE,\n })),\n transition('0 => 1', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ easeOnIn }}'),\n ]),\n ], { params: { duration: 150, delay: '0', easeOnIn: 'ease-in' }}),\n transition('1 => 0', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ easeOnOut }}'),\n ]),\n ], { params: { duration: 150, delay: '0', easeOnOut: 'ease-out' }}),\n]);\n","\nimport { trigger, state, style, keyframes, transition, animate,\n AnimationTriggerMetadata, query, animateChild, group } from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\n/**\n * const tdBounceAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerate and decelerate style. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a bounce animation.\n *\n * usage: [@tdBounce]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdBounceAnimation: AnimationTriggerMetadata = trigger('tdBounce', [\n state('0', style({\n transform: 'translate3d(0, 0, 0)',\n })),\n state('1', style({\n transform: 'translate3d(0, 0, 0)',\n })),\n transition('0 <=> 1', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ ease }}',\n keyframes([\n style({animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)', transform: 'translate3d(0, 0, 0)', offset: 0}),\n style({animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)', transform: 'translate3d(0, 0, 0)', offset: 0.2}),\n style({animationTimingFunction: 'cubic-bezier(0.755, 0.050, 0.855, 0.060)', transform: 'translate3d(0, -30px, 0)', offset: 0.4}),\n style({animationTimingFunction: 'cubic-bezier(0.755, 0.050, 0.855, 0.060)', transform: 'translate3d(0, -30px, 0)', offset: 0.43}),\n style({animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)', transform: 'translate3d(0, 0, 0)', offset: 0.53}),\n style({animationTimingFunction: 'cubic-bezier(0.755, 0.050, 0.855, 0.060)', transform: 'translate3d(0, -15px, 0)', offset: .7}),\n style({animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)', transform: 'translate3d(0, 0, 0)', offset: 0.8}),\n style({transform: 'translate3d(0, -4px, 0)', offset: .9}),\n style({animationTimingFunction: 'cubic-bezier(0.215, 0.610, 0.355, 1.000)', transform: 'translate3d(0, 0, 0)', offset: 1.0}),\n ])),\n ]),\n ], { params: { duration: 500, delay: '0', ease: 'ease-out' }}),\n]);\n","\nimport { trigger, state, style, keyframes, transition, animate,\n AnimationTriggerMetadata, AUTO_STYLE, query, animateChild, group } from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\n/**\n * const tdFlashAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerate and decelerate style. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a flash animation.\n *\n * usage: [@tdFlash]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdFlashAnimation: AnimationTriggerMetadata = trigger('tdFlash', [\n state('0', style({\n opacity: 1,\n })),\n state('1', style({\n opacity: 1,\n })),\n transition('0 <=> 1', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ ease }}',\n keyframes([\n style({opacity: 1, offset: 0}),\n style({opacity: 0, offset: 0.25}),\n style({opacity: 1, offset: 0.5}),\n style({opacity: 0, offset: 0.75}),\n style({opacity: 1, offset: 1.0}),\n ])),\n ]),\n ], { params: { duration: 500, delay: '0', ease: 'ease-out' }}),\n]);\n","\nimport { trigger, state, style, keyframes, transition, animate,\n AnimationTriggerMetadata, AUTO_STYLE, query, animateChild, group } from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\n/**\n * const tdHeadshakeAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerate and decelerate style. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a headshake animation.\n *\n * usage: [@tdHeadshake]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdHeadshakeAnimation: AnimationTriggerMetadata = trigger('tdHeadshake', [\n state('0', style({\n transform: 'translateX(0)',\n })),\n state('1', style({\n transform: 'translateX(0)',\n })),\n transition('0 <=> 1', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ ease }}',\n keyframes([\n style({transform: 'translateX(0)', offset: 0}),\n style({transform: 'translateX(-6px) rotateY(-9deg)', offset: 0.065}),\n style({transform: 'translateX(5px) rotateY(7deg)', offset: 0.185}),\n style({transform: 'translateX(-3px) rotateY(-5deg)', offset: 0.315}),\n style({transform: 'translateX(2px) rotateY(3deg)', offset: 0.435}),\n style({transform: 'translateX(0)', offset: 0.50}),\n ])),\n ]),\n ], { params: { duration: 500, delay: '0', ease: 'ease-out' }}),\n]);\n","\nimport { trigger, state, style, keyframes, transition, animate,\n AnimationTriggerMetadata, AUTO_STYLE, query, animateChild, group } from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\n/**\n * const tdJelloAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerate and decelerate style. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a jello animation.\n *\n * usage: [@tdJello]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdJelloAnimation: AnimationTriggerMetadata = trigger('tdJello', [\n state('0', style({\n transform: 'none',\n })),\n state('1', style({\n transform: 'none',\n })),\n transition('0 <=> 1', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ ease }}',\n keyframes([\n style({transform: 'none', offset: 0}),\n style({transform: 'none', offset: 0.011}),\n style({transform: 'skewX(-12.5deg) skewY(-12.5deg)', offset: 0.222}),\n style({transform: 'skewX(6.25deg) skewY(6.25deg)', offset: 0.333}),\n style({transform: 'skewX(-3.125deg) skewY(-3.125deg)', offset: 0.444}),\n style({transform: 'skewX(1.5625deg) skewY(1.5625deg)', offset: 0.555}),\n style({transform: 'skewX(-0.78125deg) skewY(-0.78125deg)', offset: 0.666}),\n style({transform: 'skewX(0.390625deg) skewY(0.390625deg)', offset: 0.777}),\n style({transform: 'skewX(-0.1953125deg) skewY(-0.1953125deg)', offset: 0.888}),\n ])),\n ]),\n ], { params: { duration: 500, delay: '0', ease: 'ease-out' }}),\n]);\n","\nimport { trigger, state, style, keyframes, transition, animate,\n AnimationTriggerMetadata, AUTO_STYLE, query, animateChild, group } from '@angular/animations';\nimport { IAnimationOptions } from '../common/interfaces';\n\n/**\n * const tdPulseAnimation\n *\n * Parameter Options:\n * * duration: Duration the animation will run in milliseconds. Defaults to 500 ms.\n * * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\n * * ease: Animation accelerate and decelerate style. Defaults to ease-out.\n *\n * Returns an [AnimationTriggerMetadata] object with boolean states for a pulse animation.\n *\n * usage: [@tdPulse]=\"{ value: true | false, params: { duration: 200 }}\"\n */\nexport const tdPulseAnimation: AnimationTriggerMetadata = trigger('tdPulse', [\n state('0', style({\n transform: 'scale3d(1, 1, 1)',\n })),\n state('1', style({\n transform: 'scale3d(1, 1, 1)',\n })),\n transition('0 <=> 1', [\n group([\n query('@*', animateChild(), { optional: true }),\n animate('{{ duration }}ms {{ delay }}ms {{ ease }}',\n keyframes([\n style({ transform: 'scale3d(1, 1, 1)', offset: 0 }),\n style({ transform: 'scale3d(1.05, 1.05, 1.05)', offset: 0.5 }),\n style({ transform: 'scale3d(1, 1, 1)', offset: 1.0 }),\n ]),\n ),\n ]),\n ], { params: { duration: 500, delay: '0', ease: 'ease-out' }}),\n]);\n","import { ChangeDetectorRef } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\nimport { Observable, Subject } from 'rxjs';\n\ntype Constructor<T> = new (...args: any[]) => T;\n\nconst noop: any = () => {\n // empty method\n};\n\nexport interface IControlValueAccessor extends ControlValueAccessor {\n value: any;\n valueChanges: Observable<any>;\n onChange: (_: any) => any;\n onTouched: () => any;\n}\n\nexport interface IHasChangeDetectorRef {\n _changeDetectorRef: ChangeDetectorRef;\n}\n\n/** Mixin to augment a component with ngModel support. */\nexport function mixinControlValueAccessor<T extends Constructor<IHasChangeDetectorRef>>\n (base: T, initialValue?: any): Constructor<IControlValueAccessor> & T {\n return class extends base {\n private _value: any = initialValue instanceof Array ? Object.assign([], initialValue) : initialValue;\n private _subjectValueChanges: Subject<any>;\n valueChanges: Observable<any>;\n\n constructor(...args: any[]) {\n super(...args); \n this._subjectValueChanges = new Subject<any>();\n this.valueChanges = this._subjectValueChanges.asObservable();\n }\n\n set value(v: any) {\n if (v !== this._value) {\n this._value = v;\n this.onChange(v);\n this._changeDetectorRef.markForCheck();\n this._subjectValueChanges.next(v);\n }\n }\n get value(): any {\n return this._value;\n }\n\n writeValue(value: any): void {\n this.value = value;\n this._changeDetectorRef.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n onChange = (_: any) => noop;\n onTouched = () => noop;\n\n };\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\n\ntype Constructor<T> = new (...args: any[]) => T;\n\n/** Interface to implement when applying the disabled mixin */\nexport interface ICanDisable {\n disabled: boolean;\n onDisabledChange(v: boolean): void;\n}\n\n/** Mixin to augment a component or directive with a `disabled` property. */\nexport function mixinDisabled<T extends Constructor<{}>>(base: T): Constructor<ICanDisable> & T {\n return class extends base {\n private _disabled: boolean = false;\n\n constructor(...args: any[]) {\n super(...args);\n }\n\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n let newValue: boolean = coerceBooleanProperty(value);\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this.onDisabledChange(this._disabled);\n }\n }\n\n onDisabledChange(v: boolean): void {\n /** NOT IMPLEMENTED, this needs to be overriden by subclasses if needed */\n }\n };\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\n\ntype Constructor<T> = new (...args: any[]) => T;\n\n/** Interface to implement when applying the disabled mixin */\nexport interface ICanDisableRipple {\n disableRipple: boolean;\n onDisableRippleChange(v: boolean): void;\n}\n\n/** Mixin to augment a component or directive with a `disabled` property. */\nexport function mixinDisableRipple<T extends Constructor<{}>>(base: T): Constructor<ICanDisableRipple> & T {\n return class extends base {\n private _disableRipple: boolean = false;\n\n constructor(...args: any[]) {\n super(...args);\n }\n\n get disableRipple(): boolean {\n return this._disableRipple;\n }\n set disableRipple(value: boolean) {\n let newValue: boolean = coerceBooleanProperty(value);\n if (this._disableRipple !== newValue) {\n this._disableRipple = newValue;\n this.onDisableRippleChange(this._disableRipple);\n }\n }\n\n onDisableRippleChange(v: boolean): void {\n /** NOT IMPLEMENTED, this needs to be overriden by subclasses if needed */\n }\n };\n}\n","import { Validators, AbstractControl, ValidatorFn } from '@angular/forms';\n\nexport class CovalentValidators {\n static min(minValue: any): ValidatorFn {\n let func: ValidatorFn = (c: AbstractControl): {[key: string]: any} => {\n if (!!Validators.required(c) || (!minValue && minValue !== 0)) {\n return undefined;\n }\n let v: number = c.value;\n return v < minValue ?\n { min: {minValue: minValue, actualValue: v} } :\n undefined;\n };\n return func;\n }\n\n static max(maxValue: any): ValidatorFn {\n let func: ValidatorFn = (c: AbstractControl): {[key: string]: any} => {\n if (!!Validators.required(c) || (!maxValue && maxValue !== 0)) {\n return undefined;\n }\n let v: number = c.value;\n return v > maxValue ?\n { max: {maxValue: maxValue, actualValue: v} } :\n undefined;\n };\n return func;\n }\n\n static numberRequired(c: AbstractControl): {[key: string]: any} {\n return (Number.isNaN(c.value)) ?\n { required: true } :\n undefined;\n }\n\n}\n","import { Component, Directive, Input, Renderer2, ElementRef, AfterViewInit, ViewContainerRef, TemplateRef, ViewChild,\n HostBinding, HostListener, ChangeDetectorRef } from '@angular/core';\n\nimport { tdCollapseAnimation } from '@covalent/core/common';\n\n@Directive({\n selector: '[tdMessageContainer]',\n})\nexport class TdMessageContainerDirective {\n constructor(public viewContainer: ViewContainerRef) { }\n}\n\n@Component({\n selector: 'td-message',\n templateUrl: './message.component.html',\n styleUrls: ['./message.component.scss'],\n animations: [\n tdCollapseAnimation,\n ],\n})\nexport class TdMessageComponent implements AfterViewInit {\n\n private _color: string;\n private _opened: boolean = true;\n private _hidden: boolean = false;\n private _animating: boolean = false;\n private _initialized: boolean = false;\n\n @ViewChild(TdMessageContainerDirective) _childElement: TdMessageContainerDirective;\n @ViewChild(TemplateRef) _template: TemplateRef<any>;\n\n /**\n * Binding host to tdCollapse animation\n */\n @HostBinding('@tdCollapse')\n get collapsedAnimation(): any {\n return { value: !this._opened, duration: 100 };\n }\n\n /**\n * Binding host to display style when hidden\n */\n @HostBinding('style.display')\n get hidden(): string {\n return this._hidden ? 'none' : undefined;\n }\n\n /**\n * label: string\n *\n * Sets the label of the message.\n */\n @Input('label') label: string;\n\n /**\n * sublabel?: string\n *\n * Sets the sublabel of the message.\n */\n @Input('sublabel') sublabel: string;\n\n /**\n * icon?: string\n *\n * The icon to be displayed before the title.\n * Defaults to `info_outline` icon\n */\n @Input('icon') icon: string = 'info_outline';\n\n /**\n * color?: primary | accent | warn\n *\n * Sets the color of the message.\n * Can also use any material color: purple | light-blue, etc.\n */\n @Input('color')\n set color(color: string) {\n this._renderer.removeClass(this._elementRef.nativeElement, 'mat-' + this._color);\n this._renderer.removeClass(this._elementRef.nativeElement, 'bgc-' + this._color + '-100');\n this._renderer.removeClass(this._elementRef.nativeElement, 'tc-' + this._color + '-700');\n if (color === 'primary' || color === 'accent' || color === 'warn') {\n this._renderer.addClass(this._elementRef.nativeElement, 'mat-' + color);\n } else {\n this._renderer.addClass(this._elementRef.nativeElement, 'bgc-' + color + '-100');\n this._renderer.addClass(this._elementRef.nativeElement, 'tc-' + color + '-700');\n }\n this._color = color;\n this._changeDetectorRef.markForCheck();\n }\n get color(): string {\n return this._color;\n }\n\n /**\n * opened?: boolean\n *\n * Shows or hiddes the message depending on its value.\n * Defaults to 'true'.\n */\n @Input('opened')\n set opened(opened: boolean) {\n if (this._initialized) {\n if (opened) {\n this.open();\n } else {\n this.close();\n }\n } else {\n this._opened = opened;\n }\n }\n get opened(): boolean {\n return this._opened;\n }\n\n constructor(private _renderer: Renderer2,\n private _changeDetectorRef: ChangeDetectorRef,\n private _elementRef: ElementRef) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-message');\n }\n\n /**\n * Detach element when close animation is finished to set animating state to false\n * hidden state to true and detach element from DOM\n */\n @HostListener('@tdCollapse.done')\n animationDoneListener(): void {\n if (!this._opened) {\n this._hidden = true;\n this._detach();\n }\n this._animating = false;\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Initializes the component and attaches the content.\n */\n ngAfterViewInit(): void {\n Promise.resolve(undefined).then(() => {\n if (this._opened) {\n this._attach();\n }\n this._initialized = true;\n });\n }\n\n /**\n * Renders the message on screen\n * Validates if there is an animation currently and if its already opened\n */\n open(): void {\n if (!this._opened && !this._animating) {\n this._opened = true;\n this._attach();\n this._startAnimationState();\n }\n }\n\n /**\n * Removes the message content from screen.\n * Validates if there is an animation currently and if its already closed\n */\n close(): void {\n if (this._opened && !this._animating) {\n this._opened = false;\n this._startAnimationState();\n }\n }\n\n /**\n * Toggles between open and close depending on state.\n */\n toggle(): void {\n if (this._opened) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * Method to set the state before starting an animation\n */\n private _startAnimationState(): void {\n this._animating = true;\n this._hidden = false;\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Method to attach template to DOM\n */\n private _attach(): void {\n this._childElement.viewContainer.createEmbeddedView(this._template);\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Method to detach template from DOM\n */\n private _detach(): void {\n this._childElement.viewContainer.clear();\n this._changeDetectorRef.markForCheck();\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { TdMessageComponent, TdMessageContainerDirective } from './message.component';\n\nconst TD_MESSAGE: Type<any>[] = [\n TdMessageComponent,\n TdMessageContainerDirective,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n ],\n declarations: [\n TD_MESSAGE,\n ],\n exports: [\n TD_MESSAGE,\n ],\n})\nexport class CovalentMessageModule {\n\n}\n","import { Component, Input, Output, forwardRef, DoCheck, ViewChild, ViewChildren, QueryList, OnInit, HostListener,\n ElementRef, Optional, Inject, Directive, TemplateRef, ViewContainerRef, ContentChild, ChangeDetectionStrategy,\n ChangeDetectorRef, AfterViewInit, OnDestroy, HostBinding, Renderer2 } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { EventEmitter } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor, FormControl } from '@angular/forms';\n\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { UP_ARROW, DOWN_ARROW, ESCAPE, LEFT_ARROW, RIGHT_ARROW, DELETE, BACKSPACE, ENTER, SPACE, TAB, HOME } from '@angular/cdk/keycodes';\nimport { MatChip } from '@angular/material/chips';\nimport { MatInput } from '@angular/material/input';\nimport { MatOption } from '@angular/material/core';\nimport { MatAutocompleteTrigger } from '@angular/material/autocomplete';\n\nimport { Observable, Subscription, timer, merge, fromEvent } from 'rxjs';\nimport { filter, debounceTime } from 'rxjs/operators';\n\nimport { ICanDisable, mixinDisabled, IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\n\n@Directive({\n selector: '[td-chip]ng-template',\n})\nexport class TdChipDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Directive({\n selector: '[td-autocomplete-option]ng-template',\n})\nexport class TdAutocompleteOptionDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\nexport class TdChipsBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdChipsMixinBase = mixinControlValueAccessor(mixinDisabled(TdChipsBase), []);\n\n@Component({\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdChipsComponent),\n multi: true,\n }],\n selector: 'td-chips',\n inputs: ['disabled', 'value'],\n styleUrls: ['./chips.component.scss' ],\n templateUrl: './chips.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdChipsComponent extends _TdChipsMixinBase implements IControlValueAccessor, DoCheck, OnInit, AfterViewInit, OnDestroy, ICanDisable {\n\n private _outsideClickSubs: Subscription = Subscription.EMPTY;\n private _inputValueChangesSubs: Subscription = Subscription.EMPTY;\n private _isMousedown: boolean = false;\n\n private _items: any[];\n private _length: number = 0;\n private _stacked: boolean = false;\n private _requireMatch: boolean = false;\n private _color: 'primary' | 'accent' | 'warn' = 'primary';\n private _inputPosition: 'before' | 'after' = 'after';\n private _chipAddition: boolean = true;\n private _chipRemoval: boolean = true;\n private _focused: boolean = false;\n private _required: boolean = false;\n private _tabIndex: number = 0;\n private _touchendDebounce: number = 100;\n\n _internalClick: boolean = false;\n _internalActivateOption: boolean = false;\n\n @ViewChild('input') _nativeInput: ElementRef;\n @ViewChild(MatInput) _inputChild: MatInput;\n @ViewChild(MatAutocompleteTrigger) _autocompleteTrigger: MatAutocompleteTrigger;\n @ViewChildren(MatChip) _chipsChildren: QueryList<MatChip>;\n\n @ContentChild(TdChipDirective) _chipTemplate: TdChipDirective;\n @ContentChild(TdAutocompleteOptionDirective) _autocompleteOptionTemplate: TdAutocompleteOptionDirective;\n\n @ViewChildren(MatOption) _options: QueryList<MatOption>;\n\n /**\n * Flag that is true when autocomplete is focused.\n */\n get focused(): boolean {\n return this._focused;\n }\n\n /**\n * FormControl for the matInput element.\n */\n inputControl: FormControl = new FormControl();\n\n /**\n * items?: any[]\n * Renders the `mat-autocomplete` with the provided list to display as options.\n */\n @Input('items')\n set items(items: any[]) {\n this._items = items;\n this._setFirstOptionActive();\n this._changeDetectorRef.markForCheck();\n }\n get items(): any[] {\n return this._items;\n }\n\n /**\n * stacked?: boolean\n * Set stacked or horizontal chips depending on value.\n * Defaults to false.\n */\n @Input('stacked')\n set stacked(stacked: boolean) {\n this._stacked = coerceBooleanProperty(stacked);\n }\n get stacked(): boolean {\n return this._stacked;\n }\n\n /**\n * inputPosition?: 'before' | 'after'\n * Set input position before or after the chips.\n * Defaults to 'after'.\n */\n @Input('inputPosition')\n set inputPosition(inputPosition: 'before' | 'after') {\n this._inputPosition = inputPosition;\n }\n get inputPosition(): 'before' | 'after' {\n return this._inputPosition;\n }\n\n /**\n * requireMatch?: boolean\n * Blocks custom inputs and only allows selections from the autocomplete list.\n */\n @Input('requireMatch')\n set requireMatch(requireMatch: boolean) {\n this._requireMatch = coerceBooleanProperty(requireMatch);\n }\n get requireMatch(): boolean {\n return this._requireMatch;\n }\n\n /**\n * required?: boolean\n * Value is set to true if at least one chip is needed\n * Defaults to false\n */\n @Input('required')\n set required(required: boolean) {\n this._required = coerceBooleanProperty(required);\n }\n get required(): boolean {\n return this._required;\n }\n\n /**\n * chipAddition?: boolean\n * Disables the ability to add chips. When setting disabled as true, this will be overriden.\n * Defaults to true.\n */\n @Input('chipAddition')\n set chipAddition(chipAddition: boolean) {\n this._chipAddition = chipAddition;\n this._toggleInput();\n }\n get chipAddition(): boolean {\n return this._chipAddition;\n }\n\n /**\n * Checks if not in disabled state and if chipAddition is set to 'true'\n * States if a chip can be added and if the input is available\n */\n get canAddChip(): boolean {\n return this.chipAddition && !this.disabled;\n }\n\n /**\n * chipRemoval?: boolean\n * Disables the ability to remove chips. If it doesn't exist chip remmoval defaults to true.\n * When setting disabled as true, this will be overriden to false.\n */\n @Input('chipRemoval')\n set chipRemoval(chipRemoval: boolean) {\n this._chipRemoval = chipRemoval;\n }\n get chipRemoval(): boolean {\n return this._chipRemoval;\n }\n\n /**\n * Checks if not in disabled state and if chipRemoval is set to 'true'\n * States if a chip can be removed\n */\n get canRemoveChip(): boolean {\n return this.chipRemoval && !this.disabled;\n }\n\n /**\n * returns the display placeholder\n */\n get displayPlaceHolder(): string {\n if (!this.canAddChip) {\n return '';\n }\n return (this._required) ? `${this.placeholder} *` : this.placeholder;\n }\n\n /**\n * placeholder?: string\n * Placeholder for the autocomplete input.\n */\n @Input('placeholder') placeholder: string;\n\n /**\n * debounce?: number\n * Debounce timeout between keypresses. Defaults to 200.\n */\n @Input('debounce') debounce: number = 200;\n\n /**\n * color?: 'primary' | 'accent' | 'warn'\n * Sets the color for the input and focus/selected state of the chips.\n * Defaults to 'primary'\n */\n @Input('color')\n set color(color: 'primary' | 'accent' | 'warn') {\n if (color) {\n this._renderer.removeClass(this._elementRef.nativeElement, 'mat-' + this._color);\n this._color = color;\n this._renderer.addClass(this._elementRef.nativeElement, 'mat-' + this._color);\n }\n }\n get color(): 'primary' | 'accent' | 'warn' {\n return this._color;\n }\n\n /**\n * add?: function\n * Method to be executed when a chip is added.\n * Sends chip value as event.\n */\n @Output('add') onAdd: EventEmitter<any> = new EventEmitter<any>();\n\n /**\n * remove?: function\n * Method to be executed when a chip is removed.\n * Sends chip value as event.\n */\n @Output('remove') onRemove: EventEmitter<any> = new EventEmitter<any>();\n\n /**\n * inputChange?: function\n * Method to be executed when the value in the autocomplete input changes.\n * Sends string value as event.\n */\n @Output('inputChange') onInputChange: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * chipFocus?: function\n * Method to be executed when a chip is focused.\n * Sends chip value as event.\n */\n @Output('chipFocus') onChipFocus: EventEmitter<any> = new EventEmitter<any>();\n\n /**\n * blur?: function\n * Method to be executed when a chip is blurred.\n * Sends chip value as event.\n */\n @Output('chipBlur') onChipBlur: EventEmitter<any> = new EventEmitter<any>();\n\n /**\n * Hostbinding to set the a11y of the TdChipsComponent depending on its state\n */\n @HostBinding('attr.tabindex')\n get tabIndex(): number {\n return this.disabled ? -1 : this._tabIndex;\n }\n\n constructor(private _elementRef: ElementRef,\n private _renderer: Renderer2,\n @Optional() @Inject(DOCUMENT) private _document: any,\n _changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n this._renderer.addClass(this._elementRef.nativeElement, 'mat-' + this._color);\n }\n\n /**\n * compareWith? function\n * Function used to check whether a chip value already exists.\n * Defaults to strict equality comparison ===\n */\n @Input('compareWith') compareWith: (o1: any, o2: any) => boolean = (o1: any, o2: any) => {\n return o1 === o2;\n }\n\n /**\n * Listens to host focus event to act on it\n */\n @HostListener('focus', ['$event'])\n focusListener(event: FocusEvent): void {\n // should only focus if its not via mousedown to prevent clashing with autocomplete\n if (!this._isMousedown) {\n this.focus();\n }\n event.preventDefault();\n }\n\n /**\n * Listens to host mousedown event to act on it\n */\n @HostListener('mousedown', ['$event'])\n mousedownListener(event: FocusEvent): void {\n // sets a flag to know if there was a mousedown and then it returns it back to false\n this._isMousedown = true;\n timer().toPromise().then(() => {\n this._isMousedown = false;\n });\n }\n\n /**\n * If clicking on :host or `td-chips-wrapper`, then we stop the click propagation so the autocomplete\n * doesnt close automatically.\n */\n @HostListener('click', ['$event'])\n clickListener(event: Event): void {\n const clickTarget: HTMLElement = <HTMLElement>event.target;\n if (clickTarget === this._elementRef.nativeElement ||\n clickTarget.className.indexOf('td-chips-wrapper') > -1) {\n this.focus();\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n /**\n * Listens to host keydown event to act on it depending on the keypress\n */\n @HostListener('keydown', ['$event'])\n keydownListener(event: KeyboardEvent): void {\n switch (event.keyCode) {\n case TAB:\n // if tabing out, then unfocus the component\n timer().toPromise().then(() => {\n this.removeFocusedState();\n });\n break;\n case ESCAPE:\n if (this._inputChild.focused) {\n this._nativeInput.nativeElement.blur();\n this.removeFocusedState();\n this._closeAutocomplete();\n } else {\n this.focus();\n }\n break;\n default:\n // default\n }\n }\n\n ngOnInit(): void {\n this._inputValueChangesSubs = this.inputControl.valueChanges.pipe(\n debounceTime(this.debounce),\n ).subscribe((value: string) => {\n this.onInputChange.emit(value ? value : '');\n });\n this._changeDetectorRef.markForCheck();\n }\n\n ngAfterViewInit(): void {\n this._watchOutsideClick();\n this._changeDetectorRef.markForCheck();\n }\n\n ngDoCheck(): void {\n // Throw onChange event only if array changes size.\n if (this.value && this.value.length !== this._length) {\n this._length = this.value.length;\n this.onChange(this.value);\n }\n }\n\n ngOnDestroy(): void {\n this._outsideClickSubs.unsubscribe();\n this._inputValueChangesSubs.unsubscribe();\n }\n\n _setInternalClick(): void {\n this._internalClick = true;\n }\n\n /** Method executed when the disabled value changes */\n onDisabledChange(v: boolean): void {\n this._toggleInput();\n }\n\n /**\n * Method that is executed when trying to create a new chip from the autocomplete.\n * It check if [requireMatch] is enabled, and tries to add the first active option\n * else if just adds the value thats on the input\n * returns 'true' if successful, 'false' if it fails.\n */\n _handleAddChip(): boolean {\n let value: any;\n if (this.requireMatch) {\n let selectedOptions: MatOption[] = this._options.toArray().filter((option: MatOption) => {\n return option.active;\n });\n if (selectedOptions.length > 0) {\n value = selectedOptions[0].value;\n selectedOptions[0].setInactiveStyles();\n }\n if (!value) {\n return false;\n }\n } else {\n // if there is a selection, then use that\n // else use the input value as chip\n if (this._autocompleteTrigger.activeOption) {\n value = this._autocompleteTrigger.activeOption.value;\n this._autocompleteTrigger.activeOption.setInactiveStyles();\n } else {\n value = this._inputChild.value;\n if (value.trim() === '') {\n return false;\n }\n }\n }\n return this.addChip(value);\n }\n\n /**\n * Method thats exectuted when trying to add a value as chip\n * returns 'true' if successful, 'false' if it fails.\n */\n addChip(value: any): boolean {\n /**\n * add a debounce ms delay when reopening the autocomplete to give it time\n * to rerender the next list and at the correct spot\n */\n\n this._closeAutocomplete();\n timer(this.debounce).toPromise().then(() => {\n this.setFocusedState();\n this._setFirstOptionActive();\n this._openAutocomplete();\n });\n\n this.inputControl.setValue('');\n // check if value is already part of the model\n if (this.value.findIndex((item: any) => this.compareWith(item, value)) > -1) {\n return false;\n }\n\n this.value.push(value);\n this.onAdd.emit(value);\n this.onChange(this.value);\n this._changeDetectorRef.markForCheck();\n return true;\n }\n\n /**\n * Method that is executed when trying to remove a chip.\n * returns 'true' if successful, 'false' if it fails.\n */\n removeChip(index: number): boolean {\n let removedValues: any[] = this.value.splice(index, 1);\n if (removedValues.length === 0) {\n return false;\n }\n\n /**\n * Checks if deleting last single chip, to focus input afterwards\n * Else check if its not the last chip of the list to focus the next one.\n */\n if (index === (this._totalChips - 1) && index === 0) {\n this._inputChild.focus();\n } else if (index < (this._totalChips - 1)) {\n this._focusChip(index + 1);\n } else if (index > 0) {\n this._focusChip(index - 1);\n }\n\n this.onRemove.emit(removedValues[0]);\n this.onChange(this.value);\n this.inputControl.setValue('');\n this._changeDetectorRef.markForCheck();\n return true;\n }\n\n /**\n * Sets blur of chip and sends out event\n */\n _handleChipBlur(event: FocusEvent, value: any): void {\n this.onChipBlur.emit(value);\n }\n\n /**\n * Sets focus of chip and sends out event\n */\n _handleChipFocus(event: FocusEvent, value: any): void {\n this.setFocusedState();\n this.onChipFocus.emit(value);\n }\n\n _handleFocus(): boolean {\n this.setFocusedState();\n this._setFirstOptionActive();\n return true;\n }\n\n /**\n * Sets focus state of the component\n */\n setFocusedState(): void {\n if (!this.disabled) {\n this._focused = true;\n this._tabIndex = -1;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Removes focus state of the component\n */\n removeFocusedState(): void {\n this._focused = false;\n this._tabIndex = 0;\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Programmatically focus the input or first chip. Since its the component entry point\n * depending if a user can add or remove chips\n */\n focus(): void {\n if (this.canAddChip) {\n this._inputChild.focus();\n } else if (!this.disabled) {\n this._focusFirstChip();\n }\n }\n\n /**\n * Passes relevant input key presses.\n */\n _inputKeydown(event: KeyboardEvent): void {\n switch (event.keyCode) {\n case UP_ARROW:\n /**\n * Since the first item is highlighted on [requireMatch], we need to inactivate it\n * when pressing the up key\n */\n if (this.requireMatch) {\n let length: number = this._options.length;\n if (length > 1 && this._options.toArray()[0].active && this._internalActivateOption) {\n this._options.toArray()[0].setInactiveStyles();\n this._internalActivateOption = false;\n // prevent default window scrolling\n event.preventDefault();\n }\n }\n break;\n case LEFT_ARROW:\n case DELETE:\n case BACKSPACE:\n this._closeAutocomplete();\n /** Check to see if input is empty when pressing left arrow to move to the last chip */\n if (!this._inputChild.value) {\n this._focusLastChip();\n // prevent default window scrolling\n event.preventDefault();\n }\n break;\n case RIGHT_ARROW:\n this._closeAutocomplete();\n /** Check to see if input is empty when pressing right arrow to move to the first chip */\n if (!this._inputChild.value) {\n this._focusFirstChip();\n // prevent default window scrolling\n event.preventDefault();\n }\n break;\n default:\n // default\n }\n }\n\n /**\n * Passes relevant chip key presses.\n */\n _chipKeydown(event: KeyboardEvent, index: number): void {\n switch (event.keyCode) {\n case DELETE:\n case BACKSPACE:\n /** Check to see if we can delete a chip */\n if (this.canRemoveChip) {\n this.removeChip(index);\n }\n break;\n case UP_ARROW:\n case LEFT_ARROW:\n /**\n * Check to see if left/down arrow was pressed while focusing the first chip to focus input next\n * Also check if input should be focused\n */\n if (index === 0) {\n // only try to target input if pressing left\n if (this.canAddChip && event.keyCode === LEFT_ARROW) {\n this._inputChild.focus();\n } else {\n this._focusLastChip();\n }\n } else if (index > 0) {\n this._focusChip(index - 1);\n }\n // prevent default window scrolling\n event.preventDefault();\n break;\n case DOWN_ARROW:\n case RIGHT_ARROW:\n /**\n * Check to see if right/up arrow was pressed while focusing the last chip to focus input next\n * Also check if input should be focused\n */\n if (index === (this._totalChips - 1)) {\n // only try to target input if pressing right\n if (this.canAddChip && event.keyCode === RIGHT_ARROW) {\n this._inputChild.focus();\n } else {\n this._focusFirstChip();\n }\n } else if (index < (this._totalChips - 1)) {\n this._focusChip(index + 1);\n }\n // prevent default window scrolling\n event.preventDefault();\n break;\n default:\n // default\n }\n }\n\n /**\n * Method to remove from display the value added from the autocomplete since it goes directly as chip.\n */\n _removeInputDisplay(): string {\n return '';\n }\n\n /**\n * Method to open the autocomplete manually if its not already opened\n */\n _openAutocomplete(): void {\n if (!this._autocompleteTrigger.panelOpen) {\n this._autocompleteTrigger.openPanel();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Method to close the autocomplete manually if its not already closed\n */\n _closeAutocomplete(): void {\n if (this._autocompleteTrigger.panelOpen) {\n this._autocompleteTrigger.closePanel();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Get total of chips\n */\n get _totalChips(): number {\n let chips: MatChip[] = this._chipsChildren.toArray();\n return chips.length;\n }\n\n /**\n * Method to focus a desired chip by index\n */\n private _focusChip(index: number): void {\n /** check to see if index exists in the array before focusing */\n if (index > -1 && this._totalChips > index) {\n this._chipsChildren.toArray()[index].focus();\n }\n }\n\n /** Method to focus first chip */\n private _focusFirstChip(): void {\n this._focusChip(0);\n }\n\n /** Method to focus last chip */\n private _focusLastChip(): void {\n this._focusChip(this._totalChips - 1);\n }\n\n /**\n * Method to toggle the disable state of input\n * Checks if not in disabled state and if chipAddition is set to 'true'\n */\n private _toggleInput(): void {\n if (this.canAddChip) {\n this.inputControl.enable();\n } else {\n this.inputControl.disable();\n }\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Sets first option as active to let the user know which one will be added when pressing enter\n * Only if [requireMatch] has been set\n */\n private _setFirstOptionActive(): void {\n if (this.requireMatch) {\n // need to use a timer here to wait until the autocomplete has been opened (end of queue)\n timer().toPromise().then(() => {\n if (this.focused && this._options && this._options.length > 0) {\n // clean up of previously active options\n this._options.toArray().forEach((option: MatOption) => {\n option.setInactiveStyles();\n });\n // set the first one as active\n this._options.toArray()[0].setActiveStyles();\n this._internalActivateOption = true;\n this._changeDetectorRef.markForCheck();\n }\n });\n }\n }\n\n /**\n * Watches clicks outside of the component to remove the focus\n * The autocomplete panel is considered inside the component so we\n * need to use a flag to find out when its clicked.\n */\n private _watchOutsideClick(): void {\n if (this._document) {\n this._outsideClickSubs = merge(\n fromEvent(this._document, 'click'),\n fromEvent(this._document, 'touchend'),\n ).pipe(\n debounceTime(this._touchendDebounce),\n filter(\n (event: MouseEvent) => {\n const clickTarget: HTMLElement = <HTMLElement>event.target;\n setTimeout(() => {\n this._internalClick = false;\n });\n return this.focused &&\n (clickTarget !== this._elementRef.nativeElement) &&\n !this._elementRef.nativeElement.contains(clickTarget) && !this._internalClick;\n },\n ),\n ).subscribe(() => {\n if (this.focused) {\n this._autocompleteTrigger.closePanel();\n this.removeFocusedState();\n this.onTouched();\n this._changeDetectorRef.markForCheck();\n }\n });\n }\n return undefined;\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatChipsModule } from '@angular/material/chips';\n\nimport { TdChipsComponent, TdChipDirective, TdAutocompleteOptionDirective } from './chips.component';\n\n@NgModule({\n imports: [\n ReactiveFormsModule,\n CommonModule,\n MatInputModule,\n MatIconModule,\n MatChipsModule,\n MatAutocompleteModule,\n ],\n declarations: [\n TdChipsComponent,\n TdChipDirective,\n TdAutocompleteOptionDirective,\n ],\n exports: [\n TdChipsComponent,\n TdChipDirective,\n TdAutocompleteOptionDirective,\n ],\n})\nexport class CovalentChipsModule {\n\n}\n","import { Component, Input, Output, Renderer2, ElementRef, ContentChildren, QueryList, HostListener } from '@angular/core';\n\nimport { TdDataTableCellComponent } from '../data-table-cell/data-table-cell.component';\nimport { TdDataTableColumnComponent } from '../data-table-column/data-table-column.component';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'tr[td-data-table-column-row]',\n styleUrls: ['./data-table-row.component.scss' ],\n templateUrl: './data-table-row.component.html',\n})\nexport class TdDataTableColumnRowComponent {\n\n constructor(protected _elementRef: ElementRef, protected _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-column-row');\n }\n\n}\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'tr[td-data-table-row]',\n styleUrls: ['./data-table-row.component.scss' ],\n templateUrl: './data-table-row.component.html',\n})\nexport class TdDataTableRowComponent {\n\n private _selected: boolean = false;\n\n @Input('selected')\n set selected(selected: boolean) {\n if (selected) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-selected');\n } else {\n this._renderer.removeClass(this._elementRef.nativeElement, 'td-selected');\n }\n this._selected = selected;\n }\n get selected(): boolean {\n return this._selected;\n }\n\n get height(): number {\n let height: number = 48;\n if (this._elementRef.nativeElement) {\n height = (<HTMLElement>this._elementRef.nativeElement).getBoundingClientRect().height;\n }\n return height;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-row');\n }\n\n /**\n * Listening to click event to explicitly focus the row element.\n */\n @HostListener('click')\n clickListener(): void {\n this.focus();\n }\n\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n}\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\n\n@Directive({selector: '[tdDataTableTemplate]ng-template'})\nexport class TdDataTableTemplateDirective extends TemplatePortalDirective {\n\n @Input() tdDataTableTemplate: string;\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n","import { Component, Input, Output, EventEmitter, forwardRef, ChangeDetectionStrategy,\n ChangeDetectorRef, ViewChild, OnDestroy, AfterViewInit,\n ContentChildren, TemplateRef, AfterContentInit, QueryList, Inject,\n Optional, ViewChildren, ElementRef, OnInit, AfterContentChecked } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ENTER, SPACE, UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';\n\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { TdDataTableRowComponent } from './data-table-row/data-table-row.component';\nimport { ITdDataTableSortChangeEvent, TdDataTableColumnComponent } from './data-table-column/data-table-column.component';\nimport { TdDataTableTemplateDirective } from './directives/data-table-template.directive';\n\nimport { IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\n\nexport enum TdDataTableSortingOrder {\n Ascending = 'ASC',\n Descending = 'DESC',\n}\n\nexport interface ITdDataTableColumnWidth {\n min?: number;\n max?: number;\n}\n\nexport interface ITdDataTableColumn {\n name: string;\n label: string;\n tooltip?: string;\n numeric?: boolean;\n format?: (value: any) => any;\n nested?: boolean;\n sortable?: boolean;\n hidden?: boolean;\n filter?: boolean;\n width?: ITdDataTableColumnWidth | number;\n}\n\nexport interface ITdDataTableSelectEvent {\n row: any;\n selected: boolean;\n index: number;\n}\n\nexport interface ITdDataTableSelectAllEvent {\n rows: any[];\n selected: boolean;\n}\n\nexport interface ITdDataTableRowClickEvent {\n row: any;\n index: number;\n}\n\nexport interface IInternalColumnWidth {\n value: number;\n limit: boolean;\n index: number;\n min?: boolean;\n max?: boolean;\n}\n\n/**\n * Constant to set the rows offset before and after the viewport\n */\nconst TD_VIRTUAL_OFFSET: number = 2;\n\n/**\n * Constant to set default row height if none is provided\n */\nconst TD_VIRTUAL_DEFAULT_ROW_HEIGHT: number = 48;\n\nexport class TdDataTableBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdDataTableMixinBase = mixinControlValueAccessor(TdDataTableBase, []);\n\n@Component({\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdDataTableComponent),\n multi: true,\n }],\n selector: 'td-data-table',\n styleUrls: ['./data-table.component.scss' ],\n templateUrl: './data-table.component.html',\n inputs: ['value'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdDataTableComponent extends _TdDataTableMixinBase implements IControlValueAccessor, OnInit,\n AfterContentInit, AfterContentChecked, AfterViewInit, OnDestroy {\n\n /** responsive width calculations */\n private _resizeSubs: Subscription;\n private _rowsChangedSubs: Subscription;\n private _hostWidth: number = 0;\n\n /** manually resizable columns */\n private _resizableColumns: boolean = false;\n private _columnClientX: number = 0;\n private _columnResizeSubs: Subscription;\n private _resizingColumn: number;\n private _onColumnResize: Subject<number> = new Subject<number>();\n\n get resizingColumn(): number {\n return this._resizingColumn;\n }\n\n get hostWidth(): number {\n // if the checkboxes are rendered, we need to remove their width\n // from the total width to calculate properly\n if (this.selectable) {\n return this._hostWidth - 42;\n }\n return this._hostWidth;\n }\n\n private _widths: IInternalColumnWidth[] = [];\n private _onResize: Subject<void> = new Subject<void>();\n\n /** column header reposition and viewpoort */\n private _verticalScrollSubs: Subscription;\n private _horizontalScrollSubs: Subscription;\n private _scrollHorizontalOffset: number = 0;\n\n private _onHorizontalScroll: Subject<number> = new Subject<number>();\n private _onVerticalScroll: Subject<number> = new Subject<number>();\n\n // Array of cached row heights to allow dynamic row heights\n private _rowHeightCache: number[] = [];\n // Total pseudo height of all the elements\n private _totalHeight: number = 0;\n // Total host height for the viewport\n private _hostHeight: number = 0;\n // Scrolled vertical pixels\n private _scrollVerticalOffset: number = 0;\n // Style to move the content a certain offset depending on scrolled offset\n private _offsetTransform: SafeStyle;\n\n // Variables that set from and to which rows will be rendered\n private _fromRow: number = 0;\n private _toRow: number = 0;\n\n /**\n * Returns the offset style with a proper calculation on how much it should move\n * over the y axis of the total height\n */\n get offsetTransform(): SafeStyle {\n return this._offsetTransform;\n }\n\n /**\n * Returns the assumed total height of the rows\n */\n get totalHeight(): number {\n return this._totalHeight;\n }\n\n /**\n * Returns the initial row to render in the viewport\n */\n get fromRow(): number {\n return this._fromRow;\n }\n\n /**\n * Returns the last row to render in the viewport\n */\n get toRow(): number {\n return this._toRow;\n }\n\n private _valueChangesSubs: Subscription;\n /** internal attributes */\n private _data: any[];\n // data virtually iterated by component\n private _virtualData: any[];\n private _columns: ITdDataTableColumn[];\n private _selectable: boolean = false;\n private _clickable: boolean = false;\n private _multiple: boolean = true;\n private _allSelected: boolean = false;\n private _indeterminate: boolean = false;\n\n /** sorting */\n private _sortable: boolean = false;\n private _sortBy: ITdDataTableColumn;\n private _sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending;\n\n /** shift select */\n private _shiftPreviouslyPressed: boolean = false;\n private _lastSelectedIndex: number = -1;\n private _firstSelectedIndex: number = -1;\n private _firstCheckboxValue: boolean = false;\n\n /** template fetching support */\n private _templateMap: Map<string, TemplateRef<any>> = new Map<string, TemplateRef<any>>();\n @ContentChildren(TdDataTableTemplateDirective) _templates: QueryList<TdDataTableTemplateDirective>;\n\n @ViewChild('scrollableDiv') _scrollableDiv: ElementRef;\n\n @ViewChildren('columnElement') _colElements: QueryList<TdDataTableColumnComponent>;\n\n @ViewChildren(TdDataTableRowComponent) _rows: QueryList<TdDataTableRowComponent>;\n\n /**\n * Returns scroll position to reposition column headers\n */\n get columnsLeftScroll(): number {\n return this._scrollHorizontalOffset * -1;\n }\n\n /**\n * Returns true if all values are selected.\n */\n get allSelected(): boolean {\n return this._allSelected;\n }\n\n /**\n * Returns true if all values are not deselected\n * and at least one is.\n */\n get indeterminate(): boolean {\n return this._indeterminate;\n }\n\n /**\n * data?: {[key: string]: any}[]\n * Sets the data to be rendered as rows.\n */\n @Input('data')\n set data(data: any[]) {\n this._data = data;\n this._rowHeightCache = [];\n Promise.resolve().then(() => {\n this.refresh();\n // scroll back to the top if the data has changed\n this._scrollableDiv.nativeElement.scrollTop = 0;\n });\n }\n get data(): any[] {\n return this._data;\n }\n\n get virtualData(): any[] {\n return this._virtualData;\n }\n\n /**\n * columns?: ITdDataTableColumn[]\n * Sets additional column configuration. [ITdDataTableColumn.name] has to exist in [data] as key.\n * Defaults to [data] keys.\n */\n @Input('columns')\n set columns(cols: ITdDataTableColumn[]) {\n this._columns = cols;\n }\n get columns(): ITdDataTableColumn[] {\n if (this._columns) {\n return this._columns;\n }\n\n if (this.hasData) {\n this._columns = [];\n // if columns is undefined, use key in [data] rows as name and label for column headers.\n let row: any = this._data[0];\n Object.keys(row).forEach((k: string) => {\n if (!this._columns.find((c: any) => c.name === k)) {\n this._columns.push({ name: k, label: k });\n }\n });\n return this._columns;\n } else {\n return [];\n }\n }\n\n /**\n * resizableColumns?: boolean\n * Enables manual column resize.\n * Defaults to 'false'\n */\n @Input('resizableColumns')\n set resizableColumns(resizableColumns: boolean) {\n this._resizableColumns = coerceBooleanProperty(resizableColumns);\n }\n get resizableColumns(): boolean {\n return this._resizableColumns;\n }\n\n /**\n * selectable?: boolean\n * Enables row selection events, hover and selected row states.\n * Defaults to 'false'\n */\n @Input('selectable')\n set selectable(selectable: boolean) {\n this._selectable = coerceBooleanProperty(selectable);\n }\n get selectable(): boolean {\n return this._selectable;\n }\n\n /**\n * clickable?: boolean\n * Enables row click events, hover.\n * Defaults to 'false'\n */\n @Input('clickable')\n set clickable(clickable: boolean) {\n this._clickable = coerceBooleanProperty(clickable);\n }\n get clickable(): boolean {\n return this._clickable;\n }\n\n /**\n * multiple?: boolean\n * Enables multiple row selection. [selectable] needs to be enabled.\n * Defaults to 'false'\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * sortable?: boolean\n * Enables sorting events, sort icons and active column states.\n * Defaults to 'false'\n */\n @Input('sortable')\n set sortable(sortable: boolean) {\n this._sortable = coerceBooleanProperty(sortable);\n }\n get sortable(): boolean {\n return this._sortable;\n }\n\n /**\n * sortBy?: string\n * Sets the active sort column. [sortable] needs to be enabled.\n */\n @Input('sortBy')\n set sortBy(columnName: string) {\n if (!columnName) {\n return;\n }\n const column: ITdDataTableColumn = this.columns.find((c: any) => c.name === columnName);\n if (!column) {\n throw new Error('[sortBy] must be a valid column name');\n }\n\n this._sortBy = column;\n }\n get sortByColumn(): ITdDataTableColumn {\n return this._sortBy;\n }\n\n /**\n * sortOrder?: ['ASC' | 'DESC'] or TdDataTableSortingOrder\n * Sets the sort order of the [sortBy] column. [sortable] needs to be enabled.\n * Defaults to 'ASC' or TdDataTableSortingOrder.Ascending\n */\n @Input('sortOrder')\n set sortOrder(order: 'ASC' | 'DESC') {\n let sortOrder: string = order ? order.toUpperCase() : 'ASC';\n if (sortOrder !== 'DESC' && sortOrder !== 'ASC') {\n throw new Error('[sortOrder] must be empty, ASC or DESC');\n }\n\n this._sortOrder = sortOrder === 'ASC' ?\n TdDataTableSortingOrder.Ascending : TdDataTableSortingOrder.Descending;\n }\n get sortOrderEnum(): TdDataTableSortingOrder {\n return this._sortOrder;\n }\n\n get hasData(): boolean {\n return this._data && this._data.length > 0;\n }\n\n /**\n * sortChange?: function\n * Event emitted when the column headers are clicked. [sortable] needs to be enabled.\n * Emits an [ITdDataTableSortChangeEvent] implemented object.\n */\n @Output('sortChange') onSortChange: EventEmitter<ITdDataTableSortChangeEvent> =\n new EventEmitter<ITdDataTableSortChangeEvent>();\n\n /**\n * rowSelect?: function\n * Event emitted when a row is selected/deselected. [selectable] needs to be enabled.\n * Emits an [ITdDataTableSelectEvent] implemented object.\n */\n @Output('rowSelect') onRowSelect: EventEmitter<ITdDataTableSelectEvent> = new EventEmitter<ITdDataTableSelectEvent>();\n\n /**\n * rowClick?: function\n * Event emitted when a row is clicked.\n * Emits an [ITdDataTableRowClickEvent] implemented object.\n */\n @Output('rowClick') onRowClick: EventEmitter<ITdDataTableRowClickEvent> = new EventEmitter<ITdDataTableRowClickEvent>();\n\n /**\n * selectAll?: function\n * Event emitted when all rows are selected/deselected by the all checkbox. [selectable] needs to be enabled.\n * Emits an [ITdDataTableSelectAllEvent] implemented object.\n */\n @Output('selectAll') onSelectAll: EventEmitter<ITdDataTableSelectAllEvent> =\n new EventEmitter<ITdDataTableSelectAllEvent>();\n\n constructor(@Optional() @Inject(DOCUMENT) private _document: any,\n private _elementRef: ElementRef,\n private _domSanitizer: DomSanitizer,\n _changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n }\n\n /**\n * compareWith?: function(row, model): boolean\n * Allows custom comparison between row and model to see if row is selected or not\n * Default comparation is by reference\n */\n @Input('compareWith') compareWith: (row: any, model: any) => boolean = (row: any, model: any) => {\n return row === model;\n }\n\n /**\n * Initialize observable for resize and scroll events\n */\n ngOnInit(): void {\n // initialize observable for resize calculations\n this._resizeSubs = this._onResize.asObservable().subscribe(() => {\n if (this._rows) {\n this._rows.toArray().forEach((row: TdDataTableRowComponent, index: number) => {\n this._rowHeightCache[this.fromRow + index] = row.height + 1;\n });\n }\n this._calculateWidths();\n this._calculateVirtualRows();\n });\n\n // initialize observable for column resize calculations\n this._columnResizeSubs = this._onColumnResize.asObservable().pipe(\n debounceTime(0),\n ).subscribe((clientX: number) => {\n this._columnClientX = clientX;\n this._calculateWidths();\n this._changeDetectorRef.markForCheck();\n });\n // initialize observable for scroll column header reposition\n this._horizontalScrollSubs = this._onHorizontalScroll.asObservable()\n .subscribe((horizontalScroll: number) => {\n this._scrollHorizontalOffset = horizontalScroll;\n this._changeDetectorRef.markForCheck();\n });\n // initialize observable for virtual scroll rendering\n this._verticalScrollSubs = this._onVerticalScroll.asObservable()\n .subscribe((verticalScroll: number) => {\n this._scrollVerticalOffset = verticalScroll;\n this._calculateVirtualRows();\n this._changeDetectorRef.markForCheck();\n });\n this._valueChangesSubs = this.valueChanges.subscribe((value: any) => {\n this.refresh();\n });\n }\n\n /**\n * Loads templates and sets them in a map for faster access.\n */\n ngAfterContentInit(): void {\n for (let i: number = 0; i < this._templates.toArray().length; i++) {\n this._templateMap.set(\n this._templates.toArray()[i].tdDataTableTemplate,\n this._templates.toArray()[i].templateRef,\n );\n }\n }\n\n /**\n * Checks hosts native elements widths to see if it has changed (resize check)\n */\n ngAfterContentChecked(): void {\n // check if the scroll has been reset when element is hidden\n if (this._scrollVerticalOffset - this._scrollableDiv.nativeElement.scrollTop > 5) {\n // scroll back to the top if element has been reset\n this._onVerticalScroll.next(0);\n }\n if (this._elementRef.nativeElement) {\n let newHostWidth: number = this._elementRef.nativeElement.getBoundingClientRect().width;\n // if the width has changed then we throw a resize event.\n if (this._hostWidth !== newHostWidth) {\n setTimeout(() => {\n this._hostWidth = newHostWidth;\n this._onResize.next();\n }, 0);\n }\n }\n if (this._scrollableDiv.nativeElement) {\n let newHostHeight: number = this._scrollableDiv.nativeElement.getBoundingClientRect().height;\n // if the height of the viewport has changed, then we mark for check\n if (this._hostHeight !== newHostHeight) {\n this._hostHeight = newHostHeight;\n this._calculateVirtualRows();\n this._changeDetectorRef.markForCheck();\n }\n }\n }\n\n /**\n * Registers to an observable that checks if all rows have been rendered\n * so we can start calculating the widths\n */\n ngAfterViewInit(): void {\n this._rowsChangedSubs = this._rows.changes.pipe(\n debounceTime(0),\n ).subscribe(() => {\n this._onResize.next();\n });\n this._calculateVirtualRows();\n }\n\n /**\n * Unsubscribes observables when data table is destroyed\n */\n ngOnDestroy(): void {\n if (this._resizeSubs) {\n this._resizeSubs.unsubscribe();\n }\n if (this._columnResizeSubs) {\n this._columnResizeSubs.unsubscribe();\n }\n if (this._horizontalScrollSubs) {\n this._horizontalScrollSubs.unsubscribe();\n }\n if (this._verticalScrollSubs) {\n this._verticalScrollSubs.unsubscribe();\n }\n if (this._rowsChangedSubs) {\n this._rowsChangedSubs.unsubscribe();\n }\n if (this._valueChangesSubs) {\n this._valueChangesSubs.unsubscribe();\n }\n }\n\n /**\n * Method that gets executed every time there is a scroll event\n * Calls the scroll observable\n */\n handleScroll(event: Event): void {\n let element: HTMLElement = (<HTMLElement>event.target);\n if (element) {\n let horizontalScroll: number = element.scrollLeft;\n if (this._scrollHorizontalOffset !== horizontalScroll) {\n this._onHorizontalScroll.next(horizontalScroll);\n }\n let verticalScroll: number = element.scrollTop;\n if (this._scrollVerticalOffset !== verticalScroll) {\n this._onVerticalScroll.next(verticalScroll);\n }\n }\n }\n\n /**\n * Returns the width needed for the columns via index\n */\n getColumnWidth(index: number): number {\n if (this._widths[index]) {\n return this._widths[index].value;\n }\n return undefined;\n }\n\n getCellValue(column: ITdDataTableColumn, value: any): string {\n if (column.nested === undefined || column.nested) {\n return this._getNestedValue(column.name, value);\n }\n return value[column.name];\n }\n\n /**\n * Getter method for template references\n */\n getTemplateRef(name: string): TemplateRef<any> {\n return this._templateMap.get(name);\n }\n\n /**\n * Clears model (ngModel) of component by removing all values in array.\n */\n clearModel(): void {\n this.value.splice(0, this.value.length);\n }\n\n /**\n * Refreshes data table and rerenders [data] and [columns]\n */\n refresh(): void {\n this._calculateVirtualRows();\n this._calculateWidths();\n this._calculateCheckboxState();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Selects or clears all rows depending on 'checked' value.\n */\n selectAll(checked: boolean): void {\n let toggledRows: any[] = [];\n if (checked) {\n this._data.forEach((row: any) => {\n // skiping already selected rows\n if (!this.isRowSelected(row)) {\n this.value.push(row);\n // checking which ones are being toggled\n toggledRows.push(row);\n }\n });\n this._allSelected = true;\n this._indeterminate = true;\n } else {\n this._data.forEach((row: any) => {\n // checking which ones are being toggled\n if (this.isRowSelected(row)) {\n toggledRows.push(row);\n let modelRow: any = this.value.filter((val: any) => {\n return this.compareWith(row, val);\n })[0];\n let index: number = this.value.indexOf(modelRow);\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n });\n this._allSelected = false;\n this._indeterminate = false;\n }\n this.onSelectAll.emit({rows: toggledRows, selected: checked});\n this.onChange(this.value);\n }\n\n /**\n * Checks if row is selected\n */\n isRowSelected(row: any): boolean {\n // compare items by [compareWith] function\n return this.value ? this.value.filter((val: any) => {\n return this.compareWith(row, val);\n }).length > 0 : false;\n }\n\n /**\n * Selects or clears a row depending on 'checked' value if the row 'isSelectable'\n * handles cntrl clicks and shift clicks for multi-select\n */\n select(row: any, event: Event, currentSelected: number): void {\n if (this.selectable) {\n this.blockEvent(event);\n // Check to see if Shift key is selected and need to select everything in between\n let mouseEvent: MouseEvent = event as MouseEvent;\n if (this.multiple && mouseEvent && mouseEvent.shiftKey && this._lastSelectedIndex > -1) {\n let firstIndex: number = currentSelected;\n let lastIndex: number = this._lastSelectedIndex;\n if (currentSelected > this._lastSelectedIndex) {\n firstIndex = this._lastSelectedIndex;\n lastIndex = currentSelected;\n }\n // if clicking a checkbox behind the initial check, then toggle all selections expect the initial checkbox\n // else the checkboxes clicked are all after the initial one\n if ((this._firstSelectedIndex >= currentSelected && this._lastSelectedIndex > this._firstSelectedIndex) ||\n (this._firstSelectedIndex <= currentSelected && this._lastSelectedIndex < this._firstSelectedIndex)) {\n for (let i: number = firstIndex; i <= lastIndex; i++) {\n if (this._firstSelectedIndex !== i) {\n this._doSelection(this._data[i], i);\n }\n }\n } else if ((this._firstSelectedIndex > currentSelected) || (this._firstSelectedIndex < currentSelected)) {\n // change indexes depending on where the next checkbox is selected (before or after)\n if (this._firstSelectedIndex > currentSelected) {\n lastIndex--;\n } else if (this._firstSelectedIndex < currentSelected) {\n firstIndex++;\n }\n for (let i: number = firstIndex; i <= lastIndex; i++) {\n let rowSelected: boolean = this.isRowSelected(this._data[i]);\n // if row is selected and first checkbox was selected\n // or if row was unselected and first checkbox was unselected\n // we ignore the toggle\n if ((this._firstCheckboxValue && !rowSelected) ||\n (!this._firstCheckboxValue && rowSelected)) {\n this._doSelection(this._data[i], i);\n } else if (this._shiftPreviouslyPressed) {\n // else if the checkbox selected was in the middle of the last selection and the first selection\n // then we undo the selections\n if ((currentSelected >= this._firstSelectedIndex && currentSelected <= this._lastSelectedIndex) ||\n (currentSelected <= this._firstSelectedIndex && currentSelected >= this._lastSelectedIndex)) {\n this._doSelection(this._data[i], i);\n }\n }\n }\n }\n this._shiftPreviouslyPressed = true;\n // if shift wasnt pressed, then we take the element checked as the first row\n // incase the next click uses shift\n } else if (mouseEvent && !mouseEvent.shiftKey) {\n this._firstCheckboxValue = this._doSelection(row, currentSelected);\n this._shiftPreviouslyPressed = false;\n this._firstSelectedIndex = currentSelected;\n }\n this._lastSelectedIndex = currentSelected;\n }\n }\n\n /**\n * Overrides the onselectstart method of the document so other text on the page\n * doesn't get selected when doing shift selections.\n */\n disableTextSelection(): void {\n if (this._document) {\n this._document.onselectstart = function(): boolean {\n return false;\n };\n }\n }\n\n /**\n * Resets the original onselectstart method.\n */\n enableTextSelection(): void {\n if (this._document) {\n this._document.onselectstart = undefined;\n }\n }\n\n /**\n * emits the onRowClickEvent when a row is clicked\n * if clickable is true and selectable is false then select the row\n */\n handleRowClick(row: any, index: number, event: Event): void {\n if (this.clickable) {\n // ignoring linting rules here because attribute it actually null or not there\n // can't check for undefined\n const srcElement: any = event.srcElement || event.currentTarget;\n let element: HTMLElement = event.target as HTMLElement;\n /* tslint:disable-next-line */\n if (srcElement.getAttribute('stopRowClick') === null && element.tagName.toLowerCase() !== 'mat-pseudo-checkbox') {\n this.onRowClick.emit({\n row: row,\n index: index,\n });\n }\n }\n }\n\n /**\n * Method handle for sort click event in column headers.\n */\n handleSort(column: ITdDataTableColumn): void {\n if (this._sortBy === column) {\n this._sortOrder = this._sortOrder === TdDataTableSortingOrder.Ascending ?\n TdDataTableSortingOrder.Descending : TdDataTableSortingOrder.Ascending;\n } else {\n this._sortBy = column;\n this._sortOrder = TdDataTableSortingOrder.Ascending;\n }\n this.onSortChange.next({ name: this._sortBy.name, order: this._sortOrder });\n }\n\n /**\n * Handle all keyup events when focusing a data table row\n */\n _rowKeyup(event: KeyboardEvent, row: any, index: number): void {\n switch (event.keyCode) {\n case ENTER:\n case SPACE:\n /** if user presses enter or space, the row should be selected */\n if (this.selectable) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n case UP_ARROW:\n /**\n * if users presses the up arrow, we focus the prev row\n * unless its the first row\n */\n if (index > 0) {\n this._rows.toArray()[index - 1].focus();\n }\n this.blockEvent(event);\n if (this.selectable && this.multiple && event.shiftKey && this.fromRow + index >= 0) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n case DOWN_ARROW:\n /**\n * if users presses the down arrow, we focus the next row\n * unless its the last row\n */\n if (index < (this._rows.toArray().length - 1)) {\n this._rows.toArray()[index + 1].focus();\n }\n this.blockEvent(event);\n if (this.selectable && this.multiple && event.shiftKey && this.fromRow + index < this._data.length) {\n this._doSelection(this._data[this.fromRow + index], this.fromRow + index);\n }\n break;\n default:\n // default\n }\n }\n\n /**\n * Sets column index of the dragged column and initial clientX of column\n */\n _handleStartColumnDrag(index: number, event: MouseEvent): void {\n this._columnClientX = event.clientX;\n this._resizingColumn = index;\n }\n\n /**\n * Calculates new width depending on new clientX of dragger column\n */\n _handleColumnDrag(event: MouseEvent | DragEvent): void {\n // check if there was been a separator clicked for resize\n if (this._resizingColumn !== undefined && event.clientX > 0) {\n let xPosition: number = event.clientX;\n // checks if the separator is being moved to try and resize the column, else dont do anything\n if (xPosition > 0 && this._columnClientX > 0 && (xPosition - this._columnClientX) !== 0) {\n // calculate the new width depending if making the column bigger or smaller\n let proposedManualWidth: number = this._widths[this._resizingColumn].value + (xPosition - this._columnClientX);\n // if the proposed new width is less than the projected min width of the column, use projected min width\n if (proposedManualWidth < this._colElements.toArray()[this._resizingColumn].projectedWidth) {\n proposedManualWidth = this._colElements.toArray()[this._resizingColumn].projectedWidth;\n }\n this.columns[this._resizingColumn].width = proposedManualWidth;\n // update new x position for the resized column\n this._onColumnResize.next(xPosition);\n }\n }\n }\n\n /**\n * Ends dragged flags\n */\n _handleEndColumnDrag(): void {\n this._columnClientX = undefined;\n this._resizingColumn = undefined;\n }\n\n /**\n * Method to prevent the default events\n */\n blockEvent(event: Event): void {\n event.preventDefault();\n }\n\n private _getNestedValue(name: string, value: any): string {\n if (!(value instanceof Object) || !name) {\n return value;\n }\n if (name.indexOf('.') > -1) {\n let splitName: string[] = name.split(/\\.(.+)/, 2);\n return this._getNestedValue(splitName[1], value[splitName[0]]);\n } else {\n return value[name];\n }\n }\n\n /**\n * Does the actual Row Selection\n */\n private _doSelection(row: any, rowIndex: number): boolean {\n let wasSelected: boolean = this.isRowSelected(row);\n if (!wasSelected) {\n if (!this._multiple) {\n this.clearModel();\n }\n this.value.push(row);\n } else {\n // compare items by [compareWith] function\n row = this.value.filter((val: any) => {\n return this.compareWith(row, val);\n })[0];\n let index: number = this.value.indexOf(row);\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n this._calculateCheckboxState();\n this.onRowSelect.emit({row: row, index: rowIndex, selected: !wasSelected});\n this.onChange(this.value);\n return !wasSelected;\n }\n\n /**\n * Calculate all the state of all checkboxes\n */\n private _calculateCheckboxState(): void {\n if (this._data) {\n this._allSelected = typeof this._data.find((d: any) => !this.isRowSelected(d)) === 'undefined';\n this._indeterminate = false;\n for (let row of this._data) {\n if (!this.isRowSelected(row)) {\n continue;\n }\n this._indeterminate = true;\n break;\n }\n }\n }\n\n /**\n * Calculates the widths for columns and cells depending on content\n */\n private _calculateWidths(): void {\n if (this._colElements && this._colElements.length) {\n this._widths = [];\n this._colElements.forEach((col: TdDataTableColumnComponent, index: number) => {\n this._adjustColumnWidth(index, this._calculateWidth());\n });\n this._adjustColumnWidhts();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Adjusts columns after calculation to see if they need to be recalculated.\n */\n private _adjustColumnWidhts(): void {\n let fixedTotalWidth: number = 0;\n // get the number of total columns that have flexible widths (not fixed or hidden)\n let flexibleWidths: number = this._widths.filter((width: IInternalColumnWidth, index: number) => {\n if (this.columns[index].hidden) {\n return false;\n }\n if (width.limit || width.max || width.min) {\n fixedTotalWidth += width.value;\n }\n return !width.limit && !width.max && !width.min;\n }).length;\n // calculate how much pixes are left that could be spread across\n // the flexible columns\n let recalculateHostWidth: number = 0;\n if (fixedTotalWidth < this.hostWidth) {\n recalculateHostWidth = this.hostWidth - fixedTotalWidth;\n }\n // if we have flexible columns and pixels to spare on them\n // we try and spread the pixels across them\n if (flexibleWidths && recalculateHostWidth) {\n let newValue: number = Math.floor(recalculateHostWidth / flexibleWidths);\n let adjustedNumber: number = 0;\n // adjust the column widths with the spread pixels\n this._widths.forEach((colWidth: IInternalColumnWidth) => {\n if (this._widths[colWidth.index].max && this._widths[colWidth.index].value > newValue ||\n this._widths[colWidth.index].min && this._widths[colWidth.index].value < newValue ||\n !this._widths[colWidth.index].limit) {\n this._adjustColumnWidth(colWidth.index, newValue);\n adjustedNumber++;\n }\n });\n // if there are still columns that need to be recalculated, we start over\n let newFlexibleWidths: number = this._widths.filter((width: IInternalColumnWidth) => {\n return !width.limit && !width.max;\n }).length;\n if (newFlexibleWidths !== adjustedNumber && newFlexibleWidths !== flexibleWidths) {\n this._adjustColumnWidhts();\n }\n }\n }\n\n /**\n * Adjusts a single column to see if it can be recalculated\n */\n private _adjustColumnWidth(index: number, value: number): void {\n this._widths[index] = {\n value: value,\n index: index,\n limit: false,\n min: false,\n max: false,\n };\n // flag to see if we need to skip the min width projection\n // depending if a width or min width has been provided\n let skipMinWidthProjection: boolean = false;\n if (this.columns[index]) {\n // if the provided width has min/max, then we check to see if we need to set it\n if (typeof this.columns[index].width === 'object') {\n let widthOpts: ITdDataTableColumnWidth = <ITdDataTableColumnWidth>this.columns[index].width;\n // if the column width is less than the configured min, we override it\n skipMinWidthProjection = (widthOpts && !!widthOpts.min);\n if (widthOpts && widthOpts.min >= this._widths[index].value) {\n this._widths[index].value = widthOpts.min;\n this._widths[index].min = true;\n // if the column width is more than the configured max, we override it\n } else if (widthOpts && widthOpts.max <= this._widths[index].value) {\n this._widths[index].value = widthOpts.max;\n this._widths[index].max = true;\n }\n // if it has a fixed width, then we just set it\n } else if (typeof this.columns[index].width === 'number') {\n this._widths[index].value = <number>this.columns[index].width;\n skipMinWidthProjection = this._widths[index].limit = true;\n }\n }\n // if there wasn't any width or min width provided, we set a min to what the column width min should be\n if (!skipMinWidthProjection &&\n this._widths[index].value < this._colElements.toArray()[index].projectedWidth) {\n this._widths[index].value = this._colElements.toArray()[index].projectedWidth;\n this._widths[index].min = true;\n this._widths[index].limit = false;\n }\n }\n\n /**\n * Generic method to calculate column width\n */\n private _calculateWidth(): number {\n let renderedColumns: ITdDataTableColumn[] = this.columns.filter((col: ITdDataTableColumn) => !col.hidden);\n return Math.floor(this.hostWidth / renderedColumns.length);\n }\n\n /**\n * Method to calculate the rows to be rendered in the viewport\n */\n private _calculateVirtualRows(): void {\n let scrolledRows: number = 0;\n if (this._data) {\n this._totalHeight = 0;\n let rowHeightSum: number = 0;\n // loop through all rows to see if we have their height cached\n // and sum them all to calculate the total height\n this._data.forEach((d: any, i: number) => {\n // iterate through all rows at first and assume all\n // rows are the same height as the first one\n if (!this._rowHeightCache[i]) {\n this._rowHeightCache[i] = this._rowHeightCache[0] || TD_VIRTUAL_DEFAULT_ROW_HEIGHT;\n }\n rowHeightSum += this._rowHeightCache[i];\n // check how many rows have been scrolled\n if (this._scrollVerticalOffset - rowHeightSum > 0) {\n scrolledRows++;\n }\n });\n this._totalHeight = rowHeightSum;\n // set the initial row to be rendered taking into account the row offset\n let fromRow: number = scrolledRows - TD_VIRTUAL_OFFSET;\n this._fromRow = fromRow > 0 ? fromRow : 0;\n\n let hostHeight: number = this._hostHeight;\n let index: number = 0;\n // calculate how many rows can fit in the viewport\n while (hostHeight > 0) {\n hostHeight -= this._rowHeightCache[this.fromRow + index];\n index++;\n }\n // set the last row to be rendered taking into account the row offset\n let range: number = (index - 1) + (TD_VIRTUAL_OFFSET * 2);\n let toRow: number = range + this.fromRow;\n // if last row is greater than the total length, then we use the total length\n if (isFinite(toRow) && toRow > this._data.length) {\n toRow = this._data.length;\n } else if (!isFinite(toRow)) {\n toRow = TD_VIRTUAL_OFFSET;\n }\n this._toRow = toRow;\n } else {\n this._totalHeight = 0;\n this._fromRow = 0;\n this._toRow = 0;\n }\n\n let offset: number = 0;\n // calculate the proper offset depending on how many rows have been scrolled\n if (scrolledRows > TD_VIRTUAL_OFFSET) {\n for (let index: number = 0; index < this.fromRow; index++) {\n offset += this._rowHeightCache[index];\n }\n }\n\n this._offsetTransform = this._domSanitizer.bypassSecurityTrustStyle('translateY(' + (offset - this.totalHeight) + 'px)');\n if (this._data) {\n this._virtualData = this.data.slice(this.fromRow, this.toRow);\n }\n // mark for check at the end of the queue so we are sure\n // that the changes will be marked\n Promise.resolve().then(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n","import { Component, Input, Output, EventEmitter, Renderer2, ElementRef, HostBinding, HostListener, ViewChild } from '@angular/core';\n\nimport { TdDataTableSortingOrder } from '../data-table.component';\n\nexport interface ITdDataTableSortChangeEvent {\n order: TdDataTableSortingOrder;\n name: string;\n}\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'th[td-data-table-column]',\n styleUrls: ['./data-table-column.component.scss' ],\n templateUrl: './data-table-column.component.html',\n})\nexport class TdDataTableColumnComponent {\n\n private _sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending;\n\n @ViewChild('columnContent', {read: ElementRef}) _columnContent: ElementRef;\n\n get projectedWidth(): number {\n if (this._columnContent && this._columnContent.nativeElement) {\n return (<HTMLElement>this._columnContent.nativeElement).getBoundingClientRect().width;\n }\n return 100;\n }\n\n /**\n * name?: string\n * Sets unique column [name] for [sortable] events.\n */\n @Input('name') name: string = '';\n\n /**\n * sortable?: boolean\n * Enables sorting events, sort icons and active column states.\n * Defaults to 'false'\n */\n @Input('sortable') sortable: boolean = false;\n\n /**\n * active?: boolean\n * Sets column to active state when 'true'.\n * Defaults to 'false'\n */\n @Input('active') active: boolean = false;\n\n /**\n * numeric?: boolean\n * Makes column follow the numeric data-table specs and sort icon.\n * Defaults to 'false'\n */\n @Input('numeric') numeric: boolean = false;\n\n /**\n * sortOrder?: ['ASC' | 'DESC'] or TdDataTableSortingOrder\n * Sets the sort order of column.\n * Defaults to 'ASC' or TdDataTableSortingOrder.Ascending\n */\n @Input('sortOrder')\n set sortOrder(order: 'ASC' | 'DESC') {\n let sortOrder: string = order ? order.toUpperCase() : 'ASC';\n if (sortOrder !== 'DESC' && sortOrder !== 'ASC') {\n throw new Error('[sortOrder] must be empty, ASC or DESC');\n }\n\n this._sortOrder = sortOrder === 'ASC' ?\n TdDataTableSortingOrder.Ascending : TdDataTableSortingOrder.Descending;\n }\n\n /**\n * sortChange?: function\n * Event emitted when the column headers are clicked. [sortable] needs to be enabled.\n * Emits an [ITdDataTableSortChangeEvent] implemented object.\n */\n @Output('sortChange') onSortChange: EventEmitter<ITdDataTableSortChangeEvent> =\n new EventEmitter<ITdDataTableSortChangeEvent>();\n\n @HostBinding('class.mat-clickable')\n get bindClickable(): boolean {\n return this.sortable;\n }\n\n @HostBinding('class.mat-sortable')\n get bingSortable(): boolean {\n return this.sortable;\n }\n\n @HostBinding('class.mat-active')\n get bindActive(): boolean {\n return this.active;\n }\n\n @HostBinding('class.mat-numeric')\n get bindNumeric(): boolean {\n return this.numeric;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-column');\n }\n\n /**\n * Listening to click event on host to throw a sort event\n */\n @HostListener('click')\n handleClick(): void {\n if (this.sortable) {\n this.onSortChange.emit({name: this.name, order: this._sortOrder});\n }\n }\n\n isAscending(): boolean {\n return this._sortOrder === TdDataTableSortingOrder.Ascending;\n }\n\n isDescending(): boolean {\n return this._sortOrder === TdDataTableSortingOrder.Descending;\n }\n\n}\n","import { Component, Input, Renderer2, ElementRef, HostBinding } from '@angular/core';\n\nexport type TdDataTableCellAlign = 'start' | 'center' | 'end';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'td[td-data-table-cell]',\n styleUrls: ['./data-table-cell.component.scss' ],\n templateUrl: './data-table-cell.component.html',\n})\nexport class TdDataTableCellComponent {\n\n private _align: TdDataTableCellAlign;\n\n /**\n * numeric?: boolean\n * Makes cell follow the numeric data-table specs.\n * Defaults to 'false'\n */\n @Input('numeric') numeric: boolean = false;\n\n /**\n * align?: 'start' | 'center' | 'end'\n * Makes cell content align on demand\n * Defaults to 'left', overrides numeric\n */\n @Input() \n set align(align: TdDataTableCellAlign) {\n this._align = align;\n }\n get align(): TdDataTableCellAlign {\n return this._align; \n }\n\n @HostBinding('class.mat-numeric')\n get bindNumeric(): boolean {\n return this.numeric;\n }\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table-cell');\n }\n\n}\n","import { Component, Renderer2, ElementRef } from '@angular/core';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'table[td-data-table]',\n styleUrls: ['./data-table-table.component.scss' ],\n templateUrl: './data-table-table.component.html',\n})\nexport class TdDataTableTableComponent {\n\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-data-table');\n }\n\n}\n","import { Injectable, Provider, SkipSelf, Optional } from '@angular/core';\n\nimport { TdDataTableSortingOrder, ITdDataTableColumn } from '../data-table.component';\n\n@Injectable()\nexport class TdDataTableService {\n\n /**\n * params:\n * - data: any[]\n * - searchTerm: string\n * - ignoreCase: boolean = false\n * - excludedColumns: string[] = []\n *\n * Searches [data] parameter for [searchTerm] matches and returns a new array with them.\n */\n filterData(data: any[], searchTerm: string, ignoreCase: boolean = false, excludedColumns?: string[]): any[] {\n let filter: string = searchTerm ? (ignoreCase ? searchTerm.toLowerCase() : searchTerm) : '';\n if (filter) {\n data = data.filter((item: any) => {\n const res: any = Object.keys(item).find((key: string) => {\n if (!excludedColumns || excludedColumns.indexOf(key) === -1) {\n const preItemValue: string = ('' + item[key]);\n const itemValue: string = ignoreCase ? preItemValue.toLowerCase() : preItemValue;\n return itemValue.indexOf(filter) > -1;\n }\n });\n return !(typeof res === 'undefined');\n });\n }\n return data;\n }\n\n /**\n * params:\n * - data: any[]\n * - sortBy: string\n * - sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending\n *\n * Sorts [data] parameter by [sortBy] and [sortOrder] and returns the sorted data.\n */\n sortData(data: any[], sortBy: string, sortOrder: TdDataTableSortingOrder = TdDataTableSortingOrder.Ascending): any[] {\n if (sortBy) {\n data = Array.from(data); // Change the array reference to trigger OnPush and not mutate original array\n data.sort((a: any, b: any) => {\n let compA: any = a[sortBy];\n let compB: any = b[sortBy];\n let direction: number = 0;\n if (!Number.isNaN(Number.parseFloat(compA)) && !Number.isNaN(Number.parseFloat(compB))) {\n direction = Number.parseFloat(compA) - Number.parseFloat(compB);\n } else {\n if (compA < compB) {\n direction = -1;\n } else if (compA > compB) {\n direction = 1;\n }\n }\n return direction * (sortOrder === TdDataTableSortingOrder.Descending ? -1 : 1);\n });\n }\n return data;\n }\n\n /**\n * params:\n * - data: any[]\n * - fromRow: number\n * - toRow: : number\n *\n * Returns a section of the [data] parameter starting from [fromRow] and ending in [toRow].\n */\n pageData(data: any[], fromRow: number, toRow: number): any[] {\n if (fromRow >= 1) {\n data = data.slice(fromRow - 1, toRow);\n }\n return data;\n }\n}\n\nexport function DATA_TABLE_PROVIDER_FACTORY(\n parent: TdDataTableService): TdDataTableService {\n return parent || new TdDataTableService();\n}\n\nexport const DATA_TABLE_PROVIDER: Provider = {\n // If there is already a service available, use that. Otherwise, provide a new one.\n provide: TdDataTableService,\n deps: [[new Optional(), new SkipSelf(), TdDataTableService]],\n useFactory: DATA_TABLE_PROVIDER_FACTORY,\n};\n","import { NgModule, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatPseudoCheckboxModule } from '@angular/material/core';\n\nimport { TdDataTableComponent } from './data-table.component';\nimport { TdDataTableColumnComponent } from './data-table-column/data-table-column.component';\nimport { TdDataTableCellComponent } from './data-table-cell/data-table-cell.component';\nimport { TdDataTableRowComponent, TdDataTableColumnRowComponent } from './data-table-row/data-table-row.component';\nimport { TdDataTableTableComponent } from './data-table-table/data-table-table.component';\nimport { TdDataTableTemplateDirective } from './directives/data-table-template.directive';\n\nimport { DATA_TABLE_PROVIDER } from './services/data-table.service';\n\nconst TD_DATA_TABLE: Type<any>[] = [\n TdDataTableComponent,\n TdDataTableTemplateDirective,\n\n TdDataTableColumnComponent,\n TdDataTableCellComponent,\n TdDataTableRowComponent,\n TdDataTableColumnRowComponent,\n TdDataTableTableComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n MatCheckboxModule,\n MatTooltipModule,\n MatIconModule,\n MatPseudoCheckboxModule,\n ],\n declarations: [\n TD_DATA_TABLE,\n ],\n exports: [\n TD_DATA_TABLE,\n ],\n providers: [\n DATA_TABLE_PROVIDER,\n ],\n})\nexport class CovalentDataTableModule {\n\n}\n","import { Component, Directive, ContentChildren, QueryList, AfterContentInit } from '@angular/core';\n\n@Directive({selector: 'td-dialog-title'})\nexport class TdDialogTitleDirective {}\n\n@Directive({selector: 'td-dialog-content'})\nexport class TdDialogContentDirective {}\n\n@Directive({selector: 'td-dialog-actions'})\nexport class TdDialogActionsDirective {}\n\n@Component({\n selector: 'td-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss' ],\n})\nexport class TdDialogComponent implements AfterContentInit {\n\n @ContentChildren(TdDialogTitleDirective) dialogTitle: QueryList<TdDialogTitleDirective>;\n @ContentChildren(TdDialogContentDirective) dialogContent: QueryList<TdDialogContentDirective>;\n @ContentChildren(TdDialogActionsDirective) dialogActions: QueryList<TdDialogActionsDirective>;\n\n ngAfterContentInit(): void {\n if (this.dialogTitle.length > 1) {\n throw new Error('Duplicate td-dialog-title component at in td-dialog.');\n }\n if (this.dialogContent.length > 1) {\n throw new Error('Duplicate td-dialog-content component at in td-dialog.');\n }\n if (this.dialogActions.length > 1) {\n throw new Error('Duplicate td-dialog-actions component at in td-dialog.');\n }\n }\n\n}\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-alert-dialog',\n templateUrl: './alert-dialog.component.html',\n styleUrls: ['./alert-dialog.component.scss' ],\n})\nexport class TdAlertDialogComponent {\n title: string;\n message: string;\n closeButton: string = 'CLOSE';\n\n constructor(private _dialogRef: MatDialogRef<TdAlertDialogComponent>) {}\n\n close(): void {\n this._dialogRef.close();\n }\n}\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-confirm-dialog',\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss' ],\n})\nexport class TdConfirmDialogComponent {\n title: string;\n message: string;\n cancelButton: string = 'CANCEL';\n acceptButton: string = 'ACCEPT';\n\n constructor(private _dialogRef: MatDialogRef<TdConfirmDialogComponent>) {}\n\n cancel(): void {\n this._dialogRef.close(false);\n }\n\n accept(): void {\n this._dialogRef.close(true);\n }\n}\n","import { Component, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'td-prompt-dialog',\n templateUrl: './prompt-dialog.component.html',\n styleUrls: ['./prompt-dialog.component.scss' ],\n})\nexport class TdPromptDialogComponent implements AfterViewInit {\n title: string;\n message: string;\n value: string;\n cancelButton: string = 'CANCEL';\n acceptButton: string = 'ACCEPT';\n\n @ViewChild('input') _input: ElementRef;\n\n constructor(private _dialogRef: MatDialogRef<TdPromptDialogComponent>) {}\n\n ngAfterViewInit(): void {\n // focus input once everything is rendered and good to go\n Promise.resolve().then(() => {\n (<HTMLInputElement>this._input.nativeElement).focus();\n });\n }\n\n /**\n * Method executed when input is focused\n * Selects all text\n */\n handleInputFocus(): void {\n (<HTMLInputElement>this._input.nativeElement).select();\n }\n\n cancel(): void {\n this._dialogRef.close(undefined);\n }\n\n accept(): void {\n this._dialogRef.close(this.value);\n }\n}\n","import { Injectable, ViewContainerRef, Provider, SkipSelf, Optional } from '@angular/core';\nimport { MatDialog, MatDialogRef, MatDialogConfig } from '@angular/material/dialog';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { TdAlertDialogComponent } from '../alert-dialog/alert-dialog.component';\nimport { TdConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component';\nimport { TdPromptDialogComponent } from '../prompt-dialog/prompt-dialog.component';\n\nexport interface IDialogConfig extends MatDialogConfig {\n title?: string;\n message: string;\n}\n\nexport interface IAlertConfig extends IDialogConfig {\n closeButton?: string;\n}\n\nexport interface IConfirmConfig extends IDialogConfig {\n acceptButton?: string;\n cancelButton?: string;\n}\n\nexport interface IPromptConfig extends IConfirmConfig {\n value?: string;\n}\n\n@Injectable()\nexport class TdDialogService {\n\n constructor(private _dialogService: MatDialog) {}\n\n /**\n * params:\n * - component: ComponentType<T>\n * - config: MatDialogConfig\n * Wrapper function over the open() method in MatDialog.\n * Opens a modal dialog containing the given component.\n */\n public open<T>(component: ComponentType<T>, config?: MatDialogConfig): MatDialogRef<T> {\n return this._dialogService.open(component, config);\n }\n\n /**\n * Wrapper function over the closeAll() method in MatDialog.\n * Closes all of the currently-open dialogs.\n */\n public closeAll(): void {\n this._dialogService.closeAll();\n }\n\n /**\n * params:\n * - config: IAlertConfig {\n * message: string;\n * title?: string;\n * viewContainerRef?: ViewContainerRef;\n * closeButton?: string;\n * }\n *\n * Opens an alert dialog with the provided config.\n * Returns an MatDialogRef<TdAlertDialogComponent> object.\n */\n public openAlert(config: IAlertConfig): MatDialogRef<TdAlertDialogComponent> {\n let dialogConfig: MatDialogConfig = this._createConfig(config);\n let dialogRef: MatDialogRef<TdAlertDialogComponent> =\n this._dialogService.open(TdAlertDialogComponent, dialogConfig);\n let alertDialogComponent: TdAlertDialogComponent = dialogRef.componentInstance;\n alertDialogComponent.title = config.title;\n alertDialogComponent.message = config.message;\n if (config.closeButton) {\n alertDialogComponent.closeButton = config.closeButton;\n }\n return dialogRef;\n }\n\n /**\n * params:\n * - config: IConfirmConfig {\n * message: string;\n * title?: string;\n * viewContainerRef?: ViewContainerRef;\n * acceptButton?: string;\n * cancelButton?: string;\n * }\n *\n * Opens a confirm dialog with the provided config.\n * Returns an MatDialogRef<TdConfirmDialogComponent> object.\n */\n public openConfirm(config: IConfirmConfig): MatDialogRef<TdConfirmDialogComponent> {\n let dialogConfig: MatDialogConfig = this._createConfig(config);\n let dialogRef: MatDialogRef<TdConfirmDialogComponent> =\n this._dialogService.open(TdConfirmDialogComponent, dialogConfig);\n let confirmDialogComponent: TdConfirmDialogComponent = dialogRef.componentInstance;\n confirmDialogComponent.title = config.title;\n confirmDialogComponent.message = config.message;\n if (config.acceptButton) {\n confirmDialogComponent.acceptButton = config.acceptButton;\n }\n if (config.cancelButton) {\n confirmDialogComponent.cancelButton = config.cancelButton;\n }\n return dialogRef;\n }\n\n /**\n * params:\n * - config: IPromptConfig {\n * message: string;\n * title?: string;\n * value?: string;\n * viewContainerRef?: ViewContainerRef;\n * acceptButton?: string;\n * cancelButton?: string;\n * }\n *\n * Opens a prompt dialog with the provided config.\n * Returns an MatDialogRef<TdPromptDialogComponent> object.\n */\n public openPrompt(config: IPromptConfig): MatDialogRef<TdPromptDialogComponent> {\n let dialogConfig: MatDialogConfig = this._createConfig(config);\n let dialogRef: MatDialogRef<TdPromptDialogComponent> =\n this._dialogService.open(TdPromptDialogComponent, dialogConfig);\n let promptDialogComponent: TdPromptDialogComponent = dialogRef.componentInstance;\n promptDialogComponent.title = config.title;\n promptDialogComponent.message = config.message;\n promptDialogComponent.value = config.value;\n if (config.acceptButton) {\n promptDialogComponent.acceptButton = config.acceptButton;\n }\n if (config.cancelButton) {\n promptDialogComponent.cancelButton = config.cancelButton;\n }\n return dialogRef;\n }\n\n private _createConfig(config: IDialogConfig): MatDialogConfig {\n let dialogConfig: MatDialogConfig = new MatDialogConfig();\n dialogConfig.width = '400px';\n Object.assign(dialogConfig, config);\n return dialogConfig;\n }\n\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { TdDialogComponent, TdDialogTitleDirective,\n TdDialogActionsDirective, TdDialogContentDirective } from './dialog.component';\nimport { TdAlertDialogComponent } from './alert-dialog/alert-dialog.component';\nimport { TdConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\nimport { TdPromptDialogComponent } from './prompt-dialog/prompt-dialog.component';\nimport { TdDialogService } from './services/dialog.service';\n\nconst TD_DIALOGS: Type<any>[] = [\n TdAlertDialogComponent,\n TdConfirmDialogComponent,\n TdPromptDialogComponent,\n TdDialogComponent,\n TdDialogTitleDirective,\n TdDialogActionsDirective,\n TdDialogContentDirective,\n];\n\nconst TD_DIALOGS_ENTRY_COMPONENTS: Type<any>[] = [\n TdAlertDialogComponent,\n TdConfirmDialogComponent,\n TdPromptDialogComponent,\n];\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n MatDialogModule,\n MatInputModule,\n MatButtonModule,\n ],\n declarations: [\n TD_DIALOGS,\n ],\n exports: [\n TD_DIALOGS,\n ],\n providers: [\n TdDialogService,\n ],\n entryComponents: [\n TD_DIALOGS_ENTRY_COMPONENTS,\n ],\n})\nexport class CovalentDialogsModule {\n\n}\n","import { Component, Directive, Input, Output, TemplateRef, ViewContainerRef, ContentChild,\n ElementRef, Renderer2 } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nimport {\n tdCollapseAnimation,\n ICanDisable,\n mixinDisabled,\n ICanDisableRipple,\n mixinDisableRipple,\n tdRotateAnimation,\n} from '@covalent/core/common';\n\n@Directive({\n selector: '[td-expansion-panel-header]ng-template',\n})\nexport class TdExpansionPanelHeaderDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Directive({\n selector: '[td-expansion-panel-label]ng-template',\n})\nexport class TdExpansionPanelLabelDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Directive({\n selector: '[td-expansion-panel-sublabel]ng-template',\n})\nexport class TdExpansionPanelSublabelDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Component({\n selector: 'td-expansion-summary',\n template: '<ng-content></ng-content>',\n})\nexport class TdExpansionPanelSummaryComponent {}\n\nexport class TdExpansionPanelBase {}\n\n/* tslint:disable-next-line */\nexport const _TdExpansionPanelMixinBase = mixinDisableRipple(mixinDisabled(TdExpansionPanelBase));\n\n@Component({\n selector: 'td-expansion-panel',\n styleUrls: ['./expansion-panel.component.scss' ],\n templateUrl: './expansion-panel.component.html',\n inputs: ['disabled', 'disableRipple'],\n animations: [\n tdCollapseAnimation,\n tdRotateAnimation,\n ],\n})\nexport class TdExpansionPanelComponent extends _TdExpansionPanelMixinBase implements ICanDisable, ICanDisableRipple {\n\n private _expand: boolean = false;\n\n @ContentChild(TdExpansionPanelHeaderDirective) expansionPanelHeader: TdExpansionPanelHeaderDirective;\n @ContentChild(TdExpansionPanelLabelDirective) expansionPanelLabel: TdExpansionPanelLabelDirective;\n @ContentChild(TdExpansionPanelSublabelDirective) expansionPanelSublabel: TdExpansionPanelSublabelDirective;\n\n /**\n * label?: string\n * Sets label of [TdExpansionPanelComponent] header.\n * Defaults to 'Click to expand'\n */\n @Input() label: string;\n\n /**\n * sublabel?: string\n * Sets sublabel of [TdExpansionPanelComponent] header.\n */\n @Input() sublabel: string;\n\n /**\n * expand?: boolean\n * Toggles [TdExpansionPanelComponent] between expand/collapse.\n */\n @Input('expand')\n set expand(expand: boolean) {\n this._setExpand(coerceBooleanProperty(expand));\n }\n get expand(): boolean {\n return this._expand;\n }\n\n /**\n * expanded?: function\n * Event emitted when [TdExpansionPanelComponent] is expanded.\n */\n @Output() expanded: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * collapsed?: function\n * Event emitted when [TdExpansionPanelComponent] is collapsed.\n */\n @Output() collapsed: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(private _renderer: Renderer2,\n private _elementRef: ElementRef) {\n super();\n this._renderer.addClass(this._elementRef.nativeElement, 'td-expansion-panel');\n }\n\n /**\n * Method executed when [TdExpansionPanelComponent] is clicked.\n */\n clickEvent(): void {\n this._setExpand(!this._expand);\n }\n\n /**\n * Toggle expand state of [TdExpansionPanelComponent]\n * retuns 'true' if successful, else 'false'.\n */\n toggle(): boolean {\n return this._setExpand(!this._expand);\n }\n\n /**\n * Opens [TdExpansionPanelComponent]\n * retuns 'true' if successful, else 'false'.\n */\n open(): boolean {\n return this._setExpand(true);\n }\n\n /**\n * Closes [TdExpansionPanelComponent]\n * retuns 'true' if successful, else 'false'.\n */\n close(): boolean {\n return this._setExpand(false);\n }\n\n /** Method executed when the disabled value changes */\n onDisabledChange(v: boolean): void {\n if (v && this._expand) {\n this._expand = false;\n this._onCollapsed();\n }\n }\n\n /**\n * Method to change expand state internally and emit the [onExpanded] event if 'true' or [onCollapsed]\n * event if 'false'. (Blocked if [disabled] is 'true')\n */\n private _setExpand(newExpand: boolean): boolean {\n if (this.disabled) {\n return false;\n }\n if (this._expand !== newExpand) {\n this._expand = newExpand;\n if (newExpand) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-expanded');\n this._onExpanded();\n } else {\n this._renderer.removeClass(this._elementRef.nativeElement, 'td-expanded');\n this._onCollapsed();\n }\n return true;\n }\n return false;\n }\n\n private _onExpanded(): void {\n this.expanded.emit(undefined);\n }\n\n private _onCollapsed(): void {\n this.collapsed.emit(undefined);\n }\n}\n","import {\n Component,\n Renderer2,\n ElementRef,\n QueryList,\n ContentChildren,\n AfterContentInit,\n Input,\n OnDestroy,\n} from '@angular/core';\nimport { TdExpansionPanelComponent } from './expansion-panel.component';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'td-expansion-panel-group',\n styleUrls: ['./expansion-panel-group.component.scss'],\n templateUrl: './expansion-panel-group.component.html',\n})\nexport class TdExpansionPanelGroupComponent\n implements AfterContentInit, OnDestroy {\n private _multi: boolean = false;\n\n private _lastOpenedPanels: TdExpansionPanelComponent[] = [];\n\n private _destroyed: Subject<boolean> = new Subject<boolean>();\n private _stopWatchingPanels: Subject<boolean> = new Subject<boolean>();\n\n /**\n * multi?: boolean\n * Sets whether multiple panels can be opened at a given time.\n * Set to false for accordion mode.\n * Defaults to false.\n */\n @Input('multi')\n set multi(multi: boolean) {\n this._multi = coerceBooleanProperty(multi);\n if (this._multi === false && this._lastOpenedPanels.length > 0) {\n this._closeAllExcept(\n this._lastOpenedPanels[this._lastOpenedPanels.length - 1],\n );\n }\n }\n\n @ContentChildren(TdExpansionPanelComponent) expansionPanels: QueryList<\n TdExpansionPanelComponent\n >;\n\n constructor(private _renderer: Renderer2, private _elementRef: ElementRef) {\n this._renderer.addClass(\n this._elementRef.nativeElement,\n 'td-expansion-panel-group',\n );\n }\n\n ngOnDestroy(): void {\n this._destroyed.next(true);\n this._destroyed.unsubscribe();\n this._stopWatchingPanels.next(true);\n this._stopWatchingPanels.unsubscribe();\n }\n\n public ngAfterContentInit(): void {\n if (!this._multi) {\n const openedPanels: TdExpansionPanelComponent[] = this.expansionPanels.filter(\n (expansionPanel: TdExpansionPanelComponent) => expansionPanel.expand,\n );\n const numOpenedPanels: number = openedPanels.length;\n if (numOpenedPanels > 1) {\n this._closeAllExcept(openedPanels[numOpenedPanels - 1]);\n }\n }\n\n this._attachListeners(this.expansionPanels);\n\n this.expansionPanels.changes\n .pipe(takeUntil(this._destroyed))\n .subscribe((expansionPanels: QueryList<TdExpansionPanelComponent>) => {\n this._stopWatchingPanels.next(true);\n this._stopWatchingPanels.unsubscribe();\n this._stopWatchingPanels = new Subject<boolean>();\n this._attachListeners(expansionPanels);\n });\n }\n\n /**\n * Opens all expansion panels, only if multi set set to true.\n */\n public openAll(): void {\n if (this._multi) {\n this.expansionPanels.forEach(\n (expansionPanel: TdExpansionPanelComponent) => {\n expansionPanel.open();\n },\n );\n }\n }\n\n /**\n * Closes all expansion panels\n */\n public closeAll(): void {\n this.expansionPanels.forEach(\n (expansionPanel: TdExpansionPanelComponent) => {\n expansionPanel.close();\n },\n );\n }\n\n private _attachListeners(\n expansionPanels: QueryList<TdExpansionPanelComponent>,\n ): void {\n this._lastOpenedPanels = [];\n expansionPanels.forEach((expansionPanel: TdExpansionPanelComponent) => {\n expansionPanel.expanded\n .pipe(takeUntil(this._stopWatchingPanels))\n .subscribe(() => {\n const indexOfPanel: number = this._lastOpenedPanels.indexOf(\n expansionPanel,\n );\n if (indexOfPanel !== -1) {\n this._lastOpenedPanels.splice(indexOfPanel, 1);\n }\n this._lastOpenedPanels.push(expansionPanel);\n\n if (!this._multi) {\n this._closeAllExcept(expansionPanel);\n }\n });\n\n expansionPanel.collapsed\n .pipe(takeUntil(this._stopWatchingPanels))\n .subscribe(() => {\n const indexOfPanel: number = this._lastOpenedPanels.indexOf(\n expansionPanel,\n );\n if (indexOfPanel !== -1) {\n this._lastOpenedPanels.splice(indexOfPanel, 1);\n }\n });\n });\n }\n\n private _closeAllExcept(expansionPanel: TdExpansionPanelComponent): void {\n this.expansionPanels.forEach((panel: TdExpansionPanelComponent) => {\n if (panel !== expansionPanel) {\n panel.close();\n }\n });\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { TdExpansionPanelComponent, TdExpansionPanelHeaderDirective, TdExpansionPanelLabelDirective,\n TdExpansionPanelSublabelDirective, TdExpansionPanelSummaryComponent } from './expansion-panel.component';\nimport { TdExpansionPanelGroupComponent } from './expansion-panel-group.component';\n\nconst TD_EXPANSION_PANEL: Type<any>[] = [\n TdExpansionPanelGroupComponent,\n TdExpansionPanelComponent,\n TdExpansionPanelHeaderDirective,\n TdExpansionPanelLabelDirective,\n TdExpansionPanelSublabelDirective,\n TdExpansionPanelSummaryComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n MatRippleModule,\n MatIconModule,\n PortalModule,\n ],\n declarations: [\n TD_EXPANSION_PANEL,\n ],\n exports: [\n TD_EXPANSION_PANEL,\n ],\n})\nexport class CovalentExpansionPanelModule {\n\n}\n","import { Directive, Input, Output, EventEmitter } from '@angular/core';\nimport { HostListener, HostBinding, Host, Optional } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgModel } from '@angular/forms';\n\n@Directive({\n selector: '[tdFileSelect]',\n})\nexport class TdFileSelectDirective {\n\n private _multiple: boolean = false;\n\n /**\n * multiple?: boolean\n * Sets whether multiple files can be selected at once in host element, or just a single file.\n * Can also be 'multiple' native attribute.\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n\n /**\n * fileSelect?: function\n * Event emitted when a file or files are selected in host [HTMLInputElement].\n * Emits a [FileList | File] object.\n * Alternative to not use [(ngModel)].\n */\n @Output('fileSelect') onFileSelect: EventEmitter<FileList | File> = new EventEmitter<FileList | File>();\n\n /**\n * Binds native 'multiple' attribute if [multiple] property is 'true'.\n */\n @HostBinding('attr.multiple')\n get multipleBinding(): string {\n return this._multiple ? '' : undefined;\n }\n\n constructor(@Optional() @Host() private model: NgModel) {\n }\n\n /**\n * Listens to 'change' host event to get [HTMLInputElement] files.\n * Emits the 'onFileSelect' event with a [FileList] or [File] depending if 'multiple' attr exists in host.\n * Uses [(ngModel)] if declared, instead of emitting 'onFileSelect' event.\n */\n @HostListener('change', ['$event'])\n onChange(event: Event): void {\n if (event.target instanceof HTMLInputElement) {\n let fileInputEl: HTMLInputElement = (<HTMLInputElement>event.target);\n let files: FileList = fileInputEl.files;\n if (files.length) {\n let value: FileList | File = this._multiple ? (files.length > 1 ? files : files[0]) : files[0];\n this.model ? this.model.update.emit(value) : this.onFileSelect.emit(value);\n }\n }\n }\n}\n","import { Directive, Input, Output, EventEmitter } from '@angular/core';\nimport { HostListener, HostBinding, ElementRef, Renderer2 } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nimport { ICanDisable, mixinDisabled } from '@covalent/core/common';\n\nexport class TdFileDropBase {}\n\n/* tslint:disable-next-line */\nexport const _TdFileDropMixinBase = mixinDisabled(TdFileDropBase);\n\n@Directive({\n selector: '[tdFileDrop]',\n inputs: ['disabled'],\n})\nexport class TdFileDropDirective extends _TdFileDropMixinBase implements ICanDisable {\n\n private _multiple: boolean = false;\n\n /**\n * multiple?: boolean\n * Sets whether multiple files can be dropped at once in host element, or just a single file.\n * Can also be 'multiple' native attribute.\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n\n /**\n * fileDrop?: function\n * Event emitted when a file or files are dropped in host element after being validated.\n * Emits a [FileList | File] object.\n */\n @Output('fileDrop') onFileDrop: EventEmitter<FileList | File> = new EventEmitter<FileList | File>();\n\n /**\n * Binds native 'multiple' attribute if [multiple] property is 'true'.\n */\n @HostBinding('attr.multiple')\n get multipleBinding(): string {\n return this._multiple ? '' : undefined;\n }\n\n /**\n * Binds native 'disabled' attribute if [disabled] property is 'true'.\n */\n @HostBinding('attr.disabled')\n get disabledBinding(): string {\n return this.disabled ? '' : undefined;\n }\n\n constructor(private _renderer: Renderer2, private _element: ElementRef) {\n super();\n }\n\n /**\n * Listens to 'drop' host event to get validated transfer items.\n * Emits the 'onFileDrop' event with a [FileList] or [File] depending if 'multiple' attr exists in host.\n * Stops event propagation and default action from browser for 'drop' event.\n */\n @HostListener('drop', ['$event'])\n onDrop(event: Event): void {\n if (!this.disabled) {\n let transfer: DataTransfer = (<DragEvent>event).dataTransfer;\n let files: FileList = transfer.files;\n if (files.length) {\n let value: FileList | File = this._multiple ? (files.length > 1 ? files : files[0]) : files[0];\n this.onFileDrop.emit(value);\n }\n }\n this._renderer.removeClass(this._element.nativeElement, 'drop-zone');\n this._stopEvent(event);\n }\n\n /**\n * Listens to 'dragover' host event to validate transfer items.\n * Checks if 'multiple' attr exists in host to allow multiple file drops.\n * Stops event propagation and default action from browser for 'dragover' event.\n */\n @HostListener('dragover', ['$event'])\n onDragOver(event: Event): void {\n let transfer: DataTransfer = (<DragEvent>event).dataTransfer;\n transfer.dropEffect = this._typeCheck(transfer.types);\n if (this.disabled || (!this._multiple &&\n ((transfer.items && transfer.items.length > 1) || (<any>transfer).mozItemCount > 1))) {\n transfer.dropEffect = 'none';\n } else {\n transfer.dropEffect = 'copy';\n }\n this._stopEvent(event);\n }\n\n /**\n * Listens to 'dragenter' host event to add animation class 'drop-zone' which can be overriden in host.\n * Stops event propagation and default action from browser for 'dragenter' event.\n */\n @HostListener('dragenter', ['$event'])\n onDragEnter(event: Event): void {\n if (!this.disabled) {\n this._renderer.addClass(this._element.nativeElement, 'drop-zone');\n }\n this._stopEvent(event);\n }\n\n /**\n * Listens to 'dragleave' host event to remove animation class 'drop-zone'.\n * Stops event propagation and default action from browser for 'dragleave' event.\n */\n @HostListener('dragleave', ['$event'])\n onDragLeave(event: Event): void {\n this._renderer.removeClass(this._element.nativeElement, 'drop-zone');\n this._stopEvent(event);\n }\n\n /**\n * Validates if the transfer item types are 'Files'.\n */\n private _typeCheck(types: ReadonlyArray<string> | DOMStringList): string {\n let dropEffect: string = 'none';\n if (types) {\n if (((<any>types).contains && (<any>types).contains('Files'))\n || ((<any>types).indexOf && (<any>types).indexOf('Files') !== -1)) {\n dropEffect = 'copy';\n }\n }\n return dropEffect;\n }\n\n private _stopEvent(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import { Component, Directive, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewChild,\n ElementRef, Renderer2, TemplateRef, ViewContainerRef, ChangeDetectorRef, forwardRef } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nimport { ICanDisable, mixinDisabled, IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\n\n@Directive({\n selector: '[td-file-input-label]ng-template',\n})\nexport class TdFileInputLabelDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\nexport class TdFileInputBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdFileInputMixinBase = mixinControlValueAccessor(mixinDisabled(TdFileInputBase));\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdFileInputComponent),\n multi: true,\n }],\n selector: 'td-file-input',\n inputs: ['disabled', 'value'],\n styleUrls: ['./file-input.component.scss'],\n templateUrl: './file-input.component.html',\n})\nexport class TdFileInputComponent extends _TdFileInputMixinBase implements IControlValueAccessor, ICanDisable {\n\n private _multiple: boolean = false;\n\n /** The native `<input type=\"file\"> element */\n @ViewChild('fileInput') _inputElement: ElementRef;\n get inputElement(): HTMLInputElement {\n return this._inputElement.nativeElement;\n }\n\n /**\n * color?: string\n * Sets button color. Uses same color palette accepted as [MatButton].\n */\n @Input('color') color: string;\n\n /**\n * multiple?: boolean\n * Sets if multiple files can be dropped/selected at once in [TdFileInputComponent].\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * accept?: string\n * Sets files accepted when opening the file browser dialog.\n * Same as 'accept' attribute in <input/> element.\n */\n @Input('accept') accept: string;\n\n /**\n * select?: function\n * Event emitted a file is selected\n * Emits a [File | FileList] object.\n */\n @Output('select') onSelect: EventEmitter<File | FileList> = new EventEmitter<File | FileList>();\n\n constructor(private _renderer: Renderer2, _changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n }\n\n /**\n * Method executed when a file is selected.\n */\n handleSelect(files: File | FileList): void {\n this.writeValue(files);\n this.onSelect.emit(files);\n }\n\n /**\n * Used to clear the selected files from the [TdFileInputComponent].\n */\n clear(): void {\n this.writeValue(undefined);\n this._renderer.setProperty(this.inputElement, 'value', '');\n }\n\n /** Method executed when the disabled value changes */\n onDisabledChange(v: boolean): void {\n if (v) {\n this.clear();\n }\n }\n /**\n * Sets disable to the component. Implemented as part of ControlValueAccessor.\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewChild, ContentChild, ChangeDetectorRef,\n forwardRef } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ICanDisable, mixinDisabled, IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\nimport { TdFileInputComponent, TdFileInputLabelDirective } from '../file-input/file-input.component';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nexport class TdFileUploadBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdFileUploadMixinBase = mixinControlValueAccessor(mixinDisabled(TdFileUploadBase));\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdFileUploadComponent),\n multi: true,\n }],\n selector: 'td-file-upload',\n inputs: ['disabled', 'value'],\n styleUrls: ['./file-upload.component.scss'],\n templateUrl: './file-upload.component.html',\n})\nexport class TdFileUploadComponent extends _TdFileUploadMixinBase implements IControlValueAccessor, ICanDisable {\n\n private _multiple: boolean = false;\n private _required: boolean = false;\n\n @ViewChild(TdFileInputComponent) fileInput: TdFileInputComponent;\n\n @ContentChild(TdFileInputLabelDirective) inputLabel: TdFileInputLabelDirective;\n\n /**\n * defaultColor?: string\n * Sets browse button color. Uses same color palette accepted as [MatButton] and defaults to 'primary'.\n */\n @Input('defaultColor') defaultColor: string = 'primary';\n\n /**\n * activeColor?: string\n * Sets upload button color. Uses same color palette accepted as [MatButton] and defaults to 'accent'.\n */\n @Input('activeColor') activeColor: string = 'accent';\n\n /**\n * cancelColor?: string\n * Sets cancel button color. Uses same color palette accepted as [MatButton] and defaults to 'warn'.\n */\n @Input('cancelColor') cancelColor: string = 'warn';\n\n /**\n * multiple?: boolean\n * Sets if multiple files can be dropped/selected at once in [TdFileUploadComponent].\n */\n @Input('multiple')\n set multiple(multiple: boolean) {\n this._multiple = coerceBooleanProperty(multiple);\n }\n get multiple(): boolean {\n return this._multiple;\n }\n\n /**\n * required?: boolean\n * Forces at least one file upload.\n * Defaults to 'false'\n */\n @Input('required')\n set required(required: boolean) {\n this._required = coerceBooleanProperty(required);\n }\n get required(): boolean {\n return this._required;\n }\n\n /**\n * accept?: string\n * Sets files accepted when opening the file browser dialog.\n * Same as 'accept' attribute in <input/> element.\n */\n @Input('accept') accept: string;\n\n /**\n * select?: function\n * Event emitted when a file is selected.\n * Emits a [File | FileList] object.\n */\n @Output('select') onSelect: EventEmitter<File | FileList> = new EventEmitter<File | FileList>();\n\n /**\n * upload?: function\n * Event emitted when upload button is clicked.\n * Emits a [File | FileList] object.\n */\n @Output('upload') onUpload: EventEmitter<File | FileList> = new EventEmitter<File | FileList>();\n\n /**\n * cancel?: function\n * Event emitted when cancel button is clicked.\n */\n @Output('cancel') onCancel: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(_changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n }\n\n /**\n * Method executed when upload button is clicked.\n */\n uploadPressed(): void {\n if (this.value) {\n this.onUpload.emit(this.value);\n }\n }\n\n /**\n * Method executed when a file is selected.\n */\n handleSelect(value: File | FileList): void {\n this.value = value;\n this.onSelect.emit(value);\n }\n\n /**\n * Methods executed when cancel button is clicked.\n * Clears files.\n */\n cancel(): void {\n this.value = undefined;\n this.onCancel.emit(undefined);\n // check if the file input is rendered before clearing it\n if (this.fileInput) {\n this.fileInput.clear();\n }\n }\n\n /** Method executed when the disabled value changes */\n onDisabledChange(v: boolean): void {\n if (v) {\n this.cancel();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscriber } from 'rxjs';\n\nexport interface IUploadOptions {\n url: string;\n method: 'post' | 'put';\n file?: File;\n headers?: {[key: string]: string};\n formData?: FormData;\n}\n\n@Injectable()\nexport class TdFileService {\n\n private _progressSubject: Subject<number> = new Subject<number>();\n private _progressObservable: Observable<number>;\n\n /**\n * Gets progress observable to keep track of the files being uploaded.\n * Needs to be supported by backend.\n */\n get progress(): Observable<number> {\n return this._progressObservable;\n }\n\n constructor() {\n this._progressObservable = this._progressSubject.asObservable();\n }\n\n /**\n * params:\n * - options: IUploadOptions {\n * url: string,\n * method: 'post' | 'put',\n * file?: File,\n * headers?: {[key: string]: string},\n * formData?: FormData\n * }\n *\n * Uses underlying [XMLHttpRequest] to upload a file to a url.\n * Will be depricated when Angular fixes [Http] to allow [FormData] as body.\n */\n upload(options: IUploadOptions): Observable<any> {\n return new Observable<any>((subscriber: Subscriber<any>) => {\n let xhr: XMLHttpRequest = new XMLHttpRequest();\n let formData: FormData = new FormData();\n\n if (options.file !== undefined) {\n formData.append('file', options.file);\n } else if (options.formData !== undefined) {\n formData = options.formData;\n } else {\n return subscriber.error('For [IUploadOptions] you have to set either the [file] or the [formData] property.');\n }\n\n xhr.upload.onprogress = (event: ProgressEvent) => {\n let progress: number = 0;\n if (event.lengthComputable) {\n progress = Math.round(event.loaded / event.total * 100);\n }\n this._progressSubject.next(progress);\n };\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status >= 200 && xhr.status < 300) {\n subscriber.next(xhr.response);\n subscriber.complete();\n } else {\n subscriber.error(xhr.response);\n }\n }\n };\n\n xhr.open(options.method, options.url, true);\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n if (options.headers) {\n for (let key in options.headers) {\n xhr.setRequestHeader(key, options.headers[key]);\n }\n }\n\n xhr.send(formData);\n });\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { TdFileSelectDirective } from './directives/file-select.directive';\nimport { TdFileDropDirective } from './directives/file-drop.directive';\nimport { TdFileUploadComponent } from './file-upload/file-upload.component';\nimport { TdFileInputComponent, TdFileInputLabelDirective } from './file-input/file-input.component';\nimport { TdFileService } from './services/file.service';\n\nconst TD_FILE: Type<any>[] = [\n TdFileSelectDirective,\n TdFileDropDirective,\n TdFileUploadComponent,\n TdFileInputComponent,\n TdFileInputLabelDirective,\n];\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n MatIconModule,\n MatButtonModule,\n PortalModule,\n ],\n declarations: [\n TD_FILE,\n ],\n exports: [\n TD_FILE,\n ],\n providers: [\n TdFileService,\n ],\n})\nexport class CovalentFileModule {\n\n}\n","import { Component, Input, ChangeDetectionStrategy, ChangeDetectorRef, Optional } from '@angular/core';\nimport { Dir } from '@angular/cdk/bidi';\nimport { tdCollapseAnimation } from '@covalent/core/common';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'td-json-formatter',\n styleUrls: ['./json-formatter.component.scss' ],\n templateUrl: './json-formatter.component.html',\n animations: [\n tdCollapseAnimation,\n ],\n})\nexport class TdJsonFormatterComponent {\n\n /**\n * Max length for property names. Any names bigger than this get trunctated.\n */\n private static KEY_MAX_LENGTH: number = 30;\n\n /**\n * Max length for preview string. Any names bigger than this get trunctated.\n */\n private static PREVIEW_STRING_MAX_LENGTH: number = 80;\n\n /**\n * Max tooltip preview elements.\n */\n private static PREVIEW_LIMIT: number = 5;\n\n private _key: string;\n private _data: any;\n private _children: string[];\n private _open: boolean = false;\n private _levelsOpen: number = 0;\n\n /**\n * levelsOpen?: number\n * Levels opened by default when JS object is formatted and rendered.\n */\n @Input('levelsOpen')\n set levelsOpen(levelsOpen: number) {\n if (!Number.isInteger(levelsOpen)) {\n throw new Error('[levelsOpen] needs to be an integer.');\n }\n this._levelsOpen = levelsOpen;\n this._open = levelsOpen > 0;\n }\n get levelsOpen(): number {\n return this._levelsOpen;\n }\n\n get open(): boolean {\n return this._open;\n }\n\n /**\n * key?: string\n * Tag to be displayed next to formatted object.\n */\n @Input('key')\n set key(key: string) {\n this._key = key;\n }\n get key(): string {\n let elipsis: string = this._key && this._key.length > TdJsonFormatterComponent.KEY_MAX_LENGTH ? '…' : '';\n return this._key ? this._key.substring(0, TdJsonFormatterComponent.KEY_MAX_LENGTH) + elipsis : this._key;\n }\n\n /**\n * data: any\n * JS object to be formatted.\n */\n @Input('data')\n set data(data: any) {\n this._data = data;\n this.parseChildren();\n }\n get data(): any {\n return this._data;\n }\n\n get children(): string[] {\n return this._children;\n }\n\n get isRTL(): boolean {\n if (this._dir) {\n return this._dir.dir === 'rtl';\n }\n return false;\n }\n\n constructor(private _changeDetectorRef: ChangeDetectorRef,\n @Optional() private _dir: Dir) {\n }\n\n /**\n * Refreshes json-formatter and rerenders [data]\n */\n refresh(): void {\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Toggles collapse/expanded state of component.\n */\n toggle(): void {\n this._open = !this._open;\n }\n\n isObject(): boolean {\n return this.getType(this._data) === 'object';\n }\n\n isArray(): boolean {\n return Array.isArray(this._data);\n }\n\n hasChildren(): boolean {\n return this._children && this._children.length > 0;\n }\n\n /**\n * Gets parsed value depending on value type.\n */\n getValue(value: any): string {\n let type: string = this.getType(value);\n if (type === 'undefined' || (type === 'null')) {\n return type;\n } else if (type === 'date') {\n value = new Date(value).toString();\n } else if (type === 'string') {\n value = '\"' + value + '\"';\n } else if (type === 'function') {\n // Remove content of the function\n return value.toString()\n .replace(/[\\r\\n]/g, '')\n .replace(/\\{.*\\}/, '') + '{…}';\n } else if (Array.isArray(value)) {\n return this.getObjectName() + ' [' + value.length + ']';\n }\n return value;\n }\n\n /**\n * Gets type of object.\n * returns 'null' if object is null and 'date' if value is object and can be parsed to a date.\n */\n getType(object: any): string {\n if (typeof object === 'object') {\n if (!object) {\n return 'null';\n }\n if (Array.isArray(object)) {\n return 'object';\n }\n let date: Date = new Date(object);\n if (Object.prototype.toString.call(date) === '[object Date]') {\n if (!Number.isNaN(date.getTime())) {\n return 'date';\n }\n }\n }\n return typeof object;\n }\n\n /**\n * Generates string representation depending if its an object or function.\n * see: http://stackoverflow.com/a/332429\n */\n getObjectName(): string {\n let object: any = this._data;\n if (this.isObject() && !object.constructor) {\n return 'Object';\n }\n let funcNameRegex: RegExp = /function (.{1,})\\(/;\n let results: RegExpExecArray = (funcNameRegex).exec((object).constructor.toString());\n if (results && results.length > 1) {\n return results[1];\n } else {\n return '';\n }\n }\n\n /**\n * Creates preview of nodes children to render in tooltip depending if its an array or an object.\n */\n getPreview(): string {\n let previewData: string[];\n let startChar: string = '{ ';\n let endChar: string = ' }';\n if (this.isArray()) {\n let previewArray: any[] = this._data.slice(0, TdJsonFormatterComponent.PREVIEW_LIMIT);\n previewData = previewArray.map((obj: any) => {\n return this.getValue(obj);\n });\n startChar = '[';\n endChar = ']';\n } else {\n let previewKeys: string[] = this._children.slice(0, TdJsonFormatterComponent.PREVIEW_LIMIT);\n previewData = previewKeys.map((key: string) => {\n return key + ': ' + this.getValue(this._data[key]);\n });\n }\n let previewString: string = previewData.join(', ');\n let ellipsis: string = previewData.length >= TdJsonFormatterComponent.PREVIEW_LIMIT ||\n previewString.length > TdJsonFormatterComponent.PREVIEW_STRING_MAX_LENGTH ? '…' : '';\n return startChar + previewString.substring(0, TdJsonFormatterComponent.PREVIEW_STRING_MAX_LENGTH) +\n ellipsis + endChar;\n }\n\n private parseChildren(): void {\n if (this.isObject()) {\n this._children = [];\n for (let key in this._data) {\n this._children.push(key);\n }\n }\n }\n\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { TdJsonFormatterComponent } from './json-formatter.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatTooltipModule,\n MatIconModule,\n ],\n declarations: [\n TdJsonFormatterComponent,\n ],\n exports: [\n TdJsonFormatterComponent,\n ],\n})\nexport class CovalentJsonFormatterModule {\n\n}\n","import { Component, Input, ViewChild } from '@angular/core';\n\nimport { MatSidenav, MatDrawerToggleResult } from '@angular/material/sidenav';\n\nimport { ILayoutTogglable } from './layout-toggle.class';\n\n@Component({\n selector: 'td-layout',\n styleUrls: ['./layout.component.scss' ],\n templateUrl: './layout.component.html',\n})\nexport class TdLayoutComponent implements ILayoutTogglable {\n\n @ViewChild(MatSidenav) sidenav: MatSidenav;\n\n /**\n * mode?: 'side', 'push' or 'over'\n *\n * The mode or styling of the sidenav.\n * Defaults to \"over\".\n * See \"MatSidenav\" documentation for more info.\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('mode') mode: 'side' | 'push' | 'over' = 'over';\n\n /**\n * opened?: boolean\n *\n * Whether or not the sidenav is opened. Use this binding to open/close the sidenav.\n * Defaults to \"false\".\n *\n * See \"MatSidenav\" documentation for more info.\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('opened') opened: boolean = false;\n\n /**\n * sidenavWidth?: string\n *\n * Sets the \"width\" of the sidenav in either \"px\" or \"%\"\n * Defaults to \"320px\".\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('sidenavWidth') sidenavWidth: string = '320px';\n\n /**\n * containerAutosize?: boolean\n *\n * Sets \"autosize\" of the sidenav-container.\n * Defaults to \"false\".\n *\n * See documentation for more info and potential performance risks.\n * \n * https://github.com/angular/material2/blob/master/src/lib/sidenav/sidenav.md#resizing-an-open-sidenav\n */\n @Input('containerAutosize') containerAutosize: boolean = false;\n\n /**\n * Checks if `ESC` should close the sidenav\n * Should only close it for `push` and `over` modes\n */\n get disableClose(): boolean {\n return this.mode === 'side';\n }\n\n /**\n * Proxy toggle method to access sidenav from outside (from td-layout template).\n */\n public toggle(): Promise<MatDrawerToggleResult> {\n return this.sidenav.toggle(!this.sidenav.opened);\n }\n\n /**\n * Proxy open method to access sidenav from outside (from td-layout template).\n */\n public open(): Promise<MatDrawerToggleResult> {\n return this.sidenav.open();\n }\n\n /**\n * Proxy close method to access sidenav from outside (from td-layout template).\n */\n public close(): Promise<MatDrawerToggleResult> {\n return this.sidenav.close();\n }\n\n}\n","import { Input, HostBinding, HostListener, Renderer2, ElementRef, AfterViewInit, OnDestroy } from '@angular/core';\n\nimport { MatSidenav, MatDrawerToggleResult } from '@angular/material/sidenav';\n\nimport { ICanDisable, mixinDisabled } from '@covalent/core/common';\n\nimport { Subscription } from 'rxjs';\n\nexport interface ILayoutTogglable {\n opened: boolean;\n sidenav: MatSidenav;\n toggle(): Promise<MatDrawerToggleResult>;\n open(): Promise<MatDrawerToggleResult>;\n close(): Promise<MatDrawerToggleResult>;\n}\n\nexport class LayoutToggleBase { }\n\n/* tslint:disable-next-line */\nexport const _TdLayoutToggleMixinBase = mixinDisabled(LayoutToggleBase);\n\nexport abstract class LayoutToggle extends _TdLayoutToggleMixinBase implements AfterViewInit, OnDestroy, ICanDisable {\n\n private _toggleSubs: Subscription;\n\n private _initialized: boolean = false;\n private _hideWhenOpened: boolean = false;\n\n /**\n * hideWhenOpened?: boolean\n * When this is set to true, the host will be hidden when\n * the sidenav is opened.\n */\n @Input('hideWhenOpened')\n set hideWhenOpened(hideWhenOpened: boolean) {\n this._hideWhenOpened = hideWhenOpened;\n if (this._initialized) {\n this._toggleVisibility();\n }\n }\n\n constructor(protected _layout: ILayoutTogglable,\n private _renderer: Renderer2,\n private _elementRef: ElementRef) {\n super();\n // if layout has not been provided\n // show warn message\n if (!this._layout) {\n this._noLayoutMessage();\n }\n this._renderer.addClass(this._elementRef.nativeElement, 'td-layout-menu-button');\n }\n\n ngAfterViewInit(): void {\n this._initialized = true;\n if (this._layout && this._layout.sidenav) {\n this._toggleSubs = this._layout.sidenav._animationStarted.subscribe(() => {\n this._toggleVisibility();\n });\n }\n // execute toggleVisibility since the onOpenStart and onCloseStart\n // methods might not be executed always when the element is rendered\n this._toggleVisibility();\n }\n\n ngOnDestroy(): void {\n if (this._toggleSubs) {\n this._toggleSubs.unsubscribe();\n this._toggleSubs = undefined;\n }\n }\n\n /**\n * Listens to host click event to trigger the layout toggle\n */\n @HostListener('click', ['$event'])\n clickListener(event: Event): void {\n event.preventDefault();\n if (!this.disabled) {\n // if layout has been provided, try triggering the click on it\n // else show warn message\n if (this._layout && this._layout.open) {\n this.onClick();\n } else {\n this._noLayoutMessage();\n }\n }\n }\n\n abstract onClick(): void;\n\n private _toggleVisibility(): void {\n if (this._layout) {\n if (this._layout.sidenav.opened && this._hideWhenOpened) {\n this._renderer.setStyle(this._elementRef.nativeElement, 'display', 'none');\n } else {\n this._renderer.setStyle(this._elementRef.nativeElement, 'display', '');\n }\n }\n }\n\n private _noLayoutMessage(): void {\n /* tslint:disable-next-line */\n console.warn('Covalent: Parent layout not found for layout toggle directive');\n }\n\n}\n","import { Optional, Directive, Input, Renderer2, ElementRef, Inject, forwardRef } from '@angular/core';\nimport { TdLayoutComponent } from './layout.component';\nimport { LayoutToggle } from './layout-toggle.class';\n\n@Directive({\n selector: '[tdLayoutToggle]',\n})\nexport class TdLayoutToggleDirective extends LayoutToggle {\n\n @Input('tdLayoutToggle') \n set tdLayoutToggle(tdLayoutToggle: boolean) {\n this.disabled = !(<any>tdLayoutToggle === '' || tdLayoutToggle);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutComponent)) layout: TdLayoutComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.toggle();\n }\n}\n\n@Directive({\n selector: '[tdLayoutClose]',\n})\nexport class TdLayoutCloseDirective extends LayoutToggle {\n \n @Input('tdLayoutClose') \n set tdLayoutClose(tdLayoutClose: boolean) {\n this.disabled = !(<any>tdLayoutClose === '' || tdLayoutClose);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutComponent)) layout: TdLayoutComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.close();\n }\n}\n\n@Directive({\n selector: '[tdLayoutOpen]',\n})\nexport class TdLayoutOpenDirective extends LayoutToggle {\n\n @Input('tdLayoutOpen') \n set tdLayoutClose(tdLayoutOpen: boolean) {\n this.disabled = !(<any>tdLayoutOpen === '' || tdLayoutOpen);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutComponent)) layout: TdLayoutComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.open();\n }\n}\n","import { Component, Input, forwardRef, Optional, Inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TdLayoutComponent } from '../layout.component';\n\n@Component({\n selector: 'td-layout-nav',\n styleUrls: ['./layout-nav.component.scss' ],\n templateUrl: './layout-nav.component.html',\n})\nexport class TdLayoutNavComponent {\n\n /**\n * toolbarTitle?: string\n *\n * Title set in toolbar.\n */\n @Input('toolbarTitle') toolbarTitle: string;\n\n /**\n * icon?: string\n *\n * icon name to be displayed before the title\n */\n @Input('icon') icon: string;\n\n /**\n * logo?: string\n *\n * logo icon name to be displayed before the title.\n * If [icon] is set, then this will not be shown.\n */\n @Input('logo') logo: string;\n\n /**\n * color?: string\n *\n * toolbar color option: primary | accent | warn.\n * If [color] is not set, primary is used.\n */\n @Input('color') color: string = 'primary';\n\n /**\n * navigationRoute?: string\n *\n * option to set the combined route for the icon, logo, and toolbarTitle.\n */\n @Input('navigationRoute') navigationRoute: string;\n\n /**\n * Checks if router was injected.\n */\n get routerEnabled(): boolean {\n return !!this._router && !!this.navigationRoute;\n }\n\n constructor(@Optional() private _router: Router) {}\n\n handleNavigationClick(): void {\n if (this.routerEnabled) {\n this._router.navigateByUrl(this.navigationRoute);\n }\n }\n}\n","import { Component, Input, ViewChild, Optional } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { MatSidenav, MatDrawerToggleResult } from '@angular/material/sidenav';\n\nimport { ILayoutTogglable } from '../layout-toggle.class';\n\n@Component({\n selector: 'td-layout-nav-list',\n styleUrls: ['./layout-nav-list.component.scss' ],\n templateUrl: './layout-nav-list.component.html',\n})\nexport class TdLayoutNavListComponent implements ILayoutTogglable {\n\n @ViewChild(MatSidenav) sidenav: MatSidenav;\n\n /**\n * toolbarTitle?: string\n *\n * Title set in toolbar.\n */\n @Input('toolbarTitle') toolbarTitle: string;\n\n /**\n * icon?: string\n * icon name to be displayed before the title\n */\n @Input('icon') icon: string;\n\n /**\n * logo?: string\n *\n * logo icon name to be displayed before the title.\n * If [icon] is set, then this will not be shown.\n */\n @Input('logo') logo: string;\n\n /**\n * color?: string\n *\n * toolbar color option: primary | accent | warn.\n * If [color] is not set, primary is used.\n */\n @Input('color') color: string = 'primary';\n\n /**\n * mode?: 'side', 'push' or 'over'\n *\n * The mode or styling of the sidenav.\n * Defaults to \"side\".\n * See \"MatSidenav\" documentation for more info.\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('mode') mode: 'side' | 'push' | 'over' = 'side';\n\n /**\n * opened?: boolean\n * Whether or not the sidenav is opened. Use this binding to open/close the sidenav.\n * Defaults to \"true\".\n *\n * See \"MatSidenav\" documentation for more info.\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('opened') opened: boolean = true;\n\n /**\n * sidenavWidth?: string\n *\n * Sets the \"width\" of the sidenav in either \"px\" or \"%\"\n * Defaults to \"350px\".\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('sidenavWidth') sidenavWidth: string = '350px';\n\n /**\n * containerAutosize?: boolean\n *\n * Sets \"autosize\" of the sidenav-container.\n * Defaults to \"false\".\n *\n * See documentation for more info and potential performance risks.\n * \n * https://github.com/angular/material2/blob/master/src/lib/sidenav/sidenav.md#resizing-an-open-sidenav\n */\n @Input('containerAutosize') containerAutosize: boolean = false;\n \n /**\n * navigationRoute?: string\n *\n * option to set the combined route for the icon, logo, and toolbarTitle.\n */\n @Input('navigationRoute') navigationRoute: string;\n\n /**\n * Checks if `ESC` should close the sidenav\n * Should only close it for `push` and `over` modes\n */\n get disableClose(): boolean {\n return this.mode === 'side';\n }\n\n /**\n * Checks if router was injected.\n */\n get routerEnabled(): boolean {\n return !!this._router && !!this.navigationRoute;\n }\n\n constructor(@Optional() private _router: Router) {}\n\n handleNavigationClick(): void {\n if (this.routerEnabled) {\n this._router.navigateByUrl(this.navigationRoute);\n }\n }\n\n /**\n * Proxy toggle method to access sidenav from outside (from td-layout template).\n */\n public toggle(): Promise<MatDrawerToggleResult> {\n return this.sidenav.toggle(!this.sidenav.opened);\n }\n\n /**\n * Proxy open method to access sidenav from outside (from td-layout template).\n */\n public open(): Promise<MatDrawerToggleResult> {\n return this.sidenav.open();\n }\n\n /**\n * Proxy close method to access sidenav from outside (from td-layout template).\n */\n public close(): Promise<MatDrawerToggleResult> {\n return this.sidenav.close();\n }\n\n}\n","import { Optional, Directive, Input, Renderer2, ElementRef, Inject, forwardRef } from '@angular/core';\nimport { TdLayoutNavListComponent } from './layout-nav-list.component';\nimport { LayoutToggle } from '../layout-toggle.class';\n\n@Directive({\n selector: '[tdLayoutNavListToggle]',\n})\nexport class TdLayoutNavListToggleDirective extends LayoutToggle {\n\n @Input('tdLayoutNavListToggle') \n set tdLayoutNavListToggle(tdLayoutNavListToggle: boolean) {\n this.disabled = !(<any>tdLayoutNavListToggle === '' || tdLayoutNavListToggle);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutNavListComponent)) layout: TdLayoutNavListComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.toggle();\n }\n}\n\n@Directive({\n selector: '[tdLayoutNavListClose]',\n})\nexport class TdLayoutNavListCloseDirective extends LayoutToggle {\n \n @Input('tdLayoutNavListClose') \n set tdLayoutNavListClose(tdLayoutNavListClose: boolean) {\n this.disabled = !(<any>tdLayoutNavListClose === '' || tdLayoutNavListClose);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutNavListComponent)) layout: TdLayoutNavListComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.close();\n }\n}\n\n@Directive({\n selector: '[tdLayoutNavListOpen]',\n})\nexport class TdLayoutNavListOpenDirective extends LayoutToggle {\n\n @Input('tdLayoutNavListOpen') \n set tdLayoutNavListOpen(tdLayoutNavListOpen: boolean) {\n this.disabled = !(<any>tdLayoutNavListOpen === '' || tdLayoutNavListOpen);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutNavListComponent)) layout: TdLayoutNavListComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.open();\n }\n}\n","import { Component } from '@angular/core';\nimport { Input } from '@angular/core';\n\n@Component({\n selector: 'td-layout-card-over',\n styleUrls: ['./layout-card-over.component.scss' ],\n templateUrl: './layout-card-over.component.html',\n})\nexport class TdLayoutCardOverComponent {\n\n /**\n * cardTitle?: string\n *\n * Title set in card.\n */\n @Input('cardTitle') cardTitle: string;\n\n /**\n * cardSubtitle?: string\n *\n * Subtitle set in card.\n */\n @Input('cardSubtitle') cardSubtitle: string;\n\n /**\n * cardWidth?: string\n *\n * Card flex width in %.\n * Defaults to 70%.\n */\n @Input('cardWidth') cardWidth: number = 70;\n\n /**\n * color?: string\n *\n * toolbar color option: primary | accent | warn.\n * If [color] is not set, primary is used.\n */\n @Input('color') color: string = 'primary';\n\n}\n","import { Component, Directive, Input, ViewChild } from '@angular/core';\n\nimport { MatSidenav, MatDrawerToggleResult } from '@angular/material/sidenav';\n\nimport { ILayoutTogglable } from '../layout-toggle.class';\n\n@Component({\n selector: 'td-layout-manage-list',\n styleUrls: ['./layout-manage-list.component.scss' ],\n templateUrl: './layout-manage-list.component.html',\n})\nexport class TdLayoutManageListComponent implements ILayoutTogglable {\n\n @ViewChild(MatSidenav) sidenav: MatSidenav;\n\n /**\n * mode?: 'side', 'push' or 'over'\n *\n * The mode or styling of the sidenav.\n * Defaults to \"side\".\n * See \"MatSidenav\" documentation for more info.\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('mode') mode: 'side' | 'push' | 'over' = 'side';\n\n /**\n * opened?: boolean\n *\n * Whether or not the sidenav is opened. Use this binding to open/close the sidenav.\n * Defaults to \"true\".\n *\n * See \"MatSidenav\" documentation for more info.\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('opened') opened: boolean = true;\n\n /**\n * sidenavWidth?: string\n *\n * Sets the \"width\" of the sidenav in either \"px\" or \"%\"\n * Defaults to \"257px\".\n *\n * https://github.com/angular/material2/tree/master/src/lib/sidenav\n */\n @Input('sidenavWidth') sidenavWidth: string = '257px';\n\n /**\n * containerAutosize?: boolean\n *\n * Sets \"autosize\" of the sidenav-container.\n * Defaults to \"false\".\n *\n * See documentation for more info and potential performance risks.\n * \n * https://github.com/angular/material2/blob/master/src/lib/sidenav/sidenav.md#resizing-an-open-sidenav\n */\n @Input('containerAutosize') containerAutosize: boolean = false;\n\n /**\n * Checks if `ESC` should close the sidenav\n * Should only close it for `push` and `over` modes\n */\n get disableClose(): boolean {\n return this.mode === 'side';\n }\n\n /**\n * Proxy toggle method to access sidenav from outside (from td-layout template).\n */\n public toggle(): Promise<MatDrawerToggleResult> {\n return this.sidenav.toggle(!this.sidenav.opened);\n }\n\n /**\n * Proxy open method to access sidenav from outside (from td-layout template).\n */\n public open(): Promise<MatDrawerToggleResult> {\n return this.sidenav.open();\n }\n\n /**\n * Proxy close method to access sidenav from outside (from td-layout template).\n */\n public close(): Promise<MatDrawerToggleResult> {\n return this.sidenav.close();\n }\n\n}\n","import { Optional, Directive, Input, Renderer2, ElementRef, Inject, forwardRef } from '@angular/core';\nimport { TdLayoutManageListComponent } from './layout-manage-list.component';\nimport { LayoutToggle } from '../layout-toggle.class';\n\n@Directive({\n selector: '[tdLayoutManageListToggle]',\n})\nexport class TdLayoutManageListToggleDirective extends LayoutToggle {\n\n @Input('tdLayoutManageListToggle') \n set tdLayoutManageListToggle(tdLayoutManageListToggle: boolean) {\n this.disabled = !(<any>tdLayoutManageListToggle === '' || tdLayoutManageListToggle);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutManageListComponent)) layout: TdLayoutManageListComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.toggle();\n }\n}\n\n@Directive({\n selector: '[tdLayoutManageListClose]',\n})\nexport class TdLayoutManageListCloseDirective extends LayoutToggle {\n \n @Input('tdLayoutManageListClose') \n set tdLayoutManageListClose(tdLayoutManageListClose: boolean) {\n this.disabled = !(<any>tdLayoutManageListClose === '' || tdLayoutManageListClose);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutManageListComponent)) layout: TdLayoutManageListComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.close();\n }\n}\n\n@Directive({\n selector: '[tdLayoutManageListOpen]',\n})\nexport class TdLayoutManageListOpenDirective extends LayoutToggle {\n\n @Input('tdLayoutManageListOpen') \n set tdLayoutManageListOpen(tdLayoutManageListOpen: boolean) {\n this.disabled = !(<any>tdLayoutManageListOpen === '' || tdLayoutManageListOpen);\n }\n\n constructor(@Optional() @Inject(forwardRef(() => TdLayoutManageListComponent)) layout: TdLayoutManageListComponent,\n renderer: Renderer2,\n elementRef: ElementRef) {\n super(layout, renderer, elementRef);\n }\n\n onClick(): void {\n this._layout.open();\n }\n}\n","import { Component, Input, Renderer2, ElementRef } from '@angular/core';\n\n@Component({\n /* tslint:disable-next-line */\n selector: 'td-layout-footer,td-layout-footer-inner',\n styleUrls: ['./layout-footer.component.scss' ],\n templateUrl: './layout-footer.component.html',\n})\nexport class TdLayoutFooterComponent {\n\n private _color: 'primary' | 'accent' | 'warn';\n\n /**\n * color?: string\n *\n * Optional color option: primary | accent | warn.\n */\n @Input('color')\n set color(color: 'primary' | 'accent' | 'warn') {\n if (color) {\n this._renderer.removeClass(this._elementRef.nativeElement, 'mat-' + this._color);\n this._color = color;\n this._renderer.addClass(this._elementRef.nativeElement, 'mat-' + this._color);\n }\n }\n get color(): 'primary' | 'accent' | 'warn' {\n return this._color;\n }\n\n constructor(private _renderer: Renderer2,\n private _elementRef: ElementRef) {\n this._renderer.addClass(this._elementRef.nativeElement, 'td-layout-footer');\n }\n\n}\n","import { Component, Directive, Input, ContentChildren, OnInit, OnDestroy, forwardRef, Inject,\n QueryList, SecurityContext, Optional } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { SafeResourceUrl, SafeStyle, DomSanitizer } from '@angular/platform-browser';\nimport { MatDrawerToggleResult } from '@angular/material/sidenav';\n\nimport { Subscription } from 'rxjs';\n\nimport { TdLayoutComponent } from '../layout.component';\n\nimport { tdCollapseAnimation } from '@covalent/core/common';\n\n@Directive({\n selector: '[td-navigation-drawer-menu]',\n})\nexport class TdNavigationDrawerMenuDirective {\n\n}\n\n@Directive({\n selector: '[td-navigation-drawer-toolbar]',\n})\nexport class TdNavigationDrawerToolbarDirective {\n\n}\n\n@Component({\n selector: 'td-navigation-drawer',\n styleUrls: ['./navigation-drawer.component.scss' ],\n templateUrl: './navigation-drawer.component.html',\n animations: [ tdCollapseAnimation ],\n})\nexport class TdNavigationDrawerComponent implements OnInit, OnDestroy {\n\n private _closeSubscription: Subscription;\n private _menuToggled: boolean = false;\n private _backgroundImage: SafeStyle;\n\n get menuToggled(): boolean {\n return this._menuToggled;\n }\n\n @ContentChildren(TdNavigationDrawerMenuDirective) _drawerMenu: QueryList<TdNavigationDrawerMenuDirective>;\n\n @ContentChildren(TdNavigationDrawerToolbarDirective) _toolbar: QueryList<TdNavigationDrawerToolbarDirective>;\n\n /**\n * Checks if there is a [TdNavigationDrawerMenuDirective] has content.\n */\n get isMenuAvailable(): boolean {\n return this._drawerMenu ? this._drawerMenu.length > 0 : false;\n }\n\n /**\n * Checks if there is a [TdNavigationDrawerToolbarDirective] has content.\n */\n get isCustomToolbar(): boolean {\n return this._toolbar ? this._toolbar.length > 0 : false;\n }\n\n /**\n * Checks if there is a background image for the toolbar.\n */\n get isBackgroundAvailable(): boolean {\n return !!this._backgroundImage;\n }\n\n /**\n * sidenavTitle?: string\n * Title set in sideNav.\n */\n @Input('sidenavTitle') sidenavTitle: string;\n\n /**\n * icon?: string\n *\n * icon name to be displayed before the title\n */\n @Input('icon') icon: string;\n\n /**\n * logo?: string\n *\n * logo icon name to be displayed before the title.\n * If [icon] is set, then this will not be shown.\n */\n @Input('logo') logo: string;\n\n /**\n * avatar?: string\n *\n * avatar url to be displayed before the title\n * If [icon] or [logo] are set, then this will not be shown.\n */\n @Input('avatar') avatar: string;\n\n /**\n * color?: string\n *\n * toolbar color option: primary | accent | warn.\n * If [color] is not set, default is used.\n */\n @Input('color') color: string;\n\n /**\n * navigationRoute?: string\n *\n * option to set the combined route for the icon, logo, and sidenavTitle.\n */\n @Input('navigationRoute') navigationRoute: string;\n\n /**\n * backgroundUrl?: SafeResourceUrl\n *\n * image to be displayed as the background of the toolbar.\n * URL used will be sanitized, but it should be always from a trusted source to avoid XSS.\n */\n @Input('backgroundUrl')\n // TODO Angular complains with warnings if this is type [SafeResourceUrl].. so we will make it <any> until its fixed.\n // https://github.com/webpack/webpack/issues/2977\n set backgroundUrl(backgroundUrl: any) {\n if (backgroundUrl) {\n let sanitizedUrl: string = this._sanitize.sanitize(SecurityContext.RESOURCE_URL, backgroundUrl);\n this._backgroundImage = this._sanitize.sanitize(SecurityContext.STYLE, 'url(' + sanitizedUrl + ')');\n }\n }\n get backgroundImage(): SafeStyle {\n return this._backgroundImage;\n }\n\n /**\n * name?: string\n *\n * string to be displayed as part of the navigation drawer sublabel.\n * if [email] is not set, then [name] will be the toggle menu text.\n */\n @Input('name') name: string;\n\n /**\n * email?: string\n *\n * string to be displayed as part of the navigation drawer sublabel in the [toggle] menu text.\n * if [email] and [name] are not set, then the toggle menu is not rendered.\n */\n @Input('email') email: string;\n\n /**\n * Checks if router was injected.\n */\n get routerEnabled(): boolean {\n return !!this._router && !!this.navigationRoute;\n }\n\n constructor(@Inject(forwardRef(() => TdLayoutComponent)) private _layout: TdLayoutComponent,\n @Optional() private _router: Router,\n private _sanitize: DomSanitizer) {}\n\n ngOnInit(): void {\n this._closeSubscription = this._layout.sidenav.openedChange.subscribe((opened: boolean) => {\n if (!opened) {\n this._menuToggled = false;\n }\n });\n }\n\n ngOnDestroy(): void {\n if (this._closeSubscription) {\n this._closeSubscription.unsubscribe();\n this._closeSubscription = undefined;\n }\n }\n\n toggleMenu(): void {\n if (this.isMenuAvailable) {\n this._menuToggled = !this._menuToggled;\n }\n }\n\n handleNavigationClick(): void {\n if (this.routerEnabled) {\n this._router.navigateByUrl(this.navigationRoute);\n this.close();\n }\n }\n\n /**\n * Proxy toggle method to access sidenav from outside (from td-layout template).\n */\n public toggle(): Promise<MatDrawerToggleResult> {\n return this._layout.toggle();\n }\n\n /**\n * Proxy open method to access sidenav from outside (from td-layout template).\n */\n public open(): Promise<MatDrawerToggleResult> {\n return this._layout.open();\n }\n\n /**\n * Proxy close method to access sidenav from outside (from td-layout template).\n */\n public close(): Promise<MatDrawerToggleResult> {\n return this._layout.close();\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { ScrollDispatchModule } from '@angular/cdk/scrolling';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDividerModule } from '@angular/material/divider';\n\nimport { TdLayoutComponent } from './layout.component';\nimport { TdLayoutToggleDirective, TdLayoutCloseDirective, TdLayoutOpenDirective } from './layout.directives';\nimport { TdLayoutNavComponent } from './layout-nav/layout-nav.component';\nimport { TdLayoutNavListComponent } from './layout-nav-list/layout-nav-list.component';\nimport {\n TdLayoutNavListToggleDirective, TdLayoutNavListCloseDirective, TdLayoutNavListOpenDirective,\n} from './layout-nav-list/layout-nav-list.directives';\nimport { TdLayoutCardOverComponent } from './layout-card-over/layout-card-over.component';\nimport { TdLayoutManageListComponent } from './layout-manage-list/layout-manage-list.component';\nimport {\n TdLayoutManageListToggleDirective, TdLayoutManageListCloseDirective, TdLayoutManageListOpenDirective,\n} from './layout-manage-list/layout-manage-list.directives';\nimport { TdLayoutFooterComponent } from './layout-footer/layout-footer.component';\n\nimport {\n TdNavigationDrawerComponent, TdNavigationDrawerMenuDirective, TdNavigationDrawerToolbarDirective,\n} from './navigation-drawer/navigation-drawer.component';\n\nconst TD_LAYOUTS: Type<any>[] = [\n TdLayoutComponent,\n TdLayoutToggleDirective,\n TdLayoutCloseDirective,\n TdLayoutOpenDirective,\n\n TdLayoutNavComponent,\n\n TdLayoutNavListComponent,\n TdLayoutNavListToggleDirective,\n TdLayoutNavListCloseDirective,\n TdLayoutNavListOpenDirective,\n\n TdLayoutCardOverComponent,\n\n TdLayoutManageListComponent,\n TdLayoutManageListToggleDirective,\n TdLayoutManageListCloseDirective,\n TdLayoutManageListOpenDirective,\n\n TdLayoutFooterComponent,\n\n TdNavigationDrawerComponent,\n TdNavigationDrawerMenuDirective,\n TdNavigationDrawerToolbarDirective,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n ScrollDispatchModule,\n MatSidenavModule,\n MatToolbarModule,\n MatButtonModule,\n MatIconModule,\n MatCardModule,\n MatDividerModule,\n ],\n declarations: [\n TD_LAYOUTS,\n ],\n exports: [\n TD_LAYOUTS,\n ],\n})\nexport class CovalentLayoutModule {\n\n}\n","import { Component, ViewChild, TemplateRef, ChangeDetectorRef, ChangeDetectionStrategy, ElementRef, DoCheck } from '@angular/core';\nimport { AnimationEvent } from '@angular/animations';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Observable, Subject } from 'rxjs';\n\nexport enum LoadingType {\n Circular = 'circular',\n Linear = 'linear',\n}\n\nexport enum LoadingMode {\n Determinate = 'determinate',\n Indeterminate = 'indeterminate',\n}\n\nexport enum LoadingStrategy {\n Overlay = 'overlay',\n Replace = 'replace',\n}\n\nexport enum LoadingStyle {\n FullScreen = 'fullscreen',\n Overlay = 'overlay',\n None = 'none',\n}\n\nimport { tdFadeInOutAnimation } from '@covalent/core/common';\n\nexport const TD_CIRCLE_DIAMETER: number = 100;\n\n@Component({\n selector: 'td-loading',\n styleUrls: ['./loading.component.scss' ],\n templateUrl: './loading.component.html',\n animations: [\n tdFadeInOutAnimation,\n ],\n})\nexport class TdLoadingComponent implements DoCheck {\n\n private _animationIn: Subject<any> = new Subject<any>();\n private _animationOut: Subject<any> = new Subject<any>();\n private _mode: LoadingMode = LoadingMode.Indeterminate;\n private _defaultMode: LoadingMode = LoadingMode.Indeterminate;\n private _value: number = 0;\n private _circleDiameter: number = TD_CIRCLE_DIAMETER;\n\n /**\n * Flag for animation\n */\n animation: boolean = false;\n\n /**\n * Content injected into loading component.\n */\n content: TemplatePortal<any>;\n\n /**\n * Sets mode of [TdLoadingComponent] to LoadingMode.Determinate or LoadingMode.Indeterminate\n */\n set mode(mode: LoadingMode) {\n this._defaultMode = mode;\n }\n get mode(): LoadingMode {\n return this._mode;\n }\n\n /**\n * Sets value of [TdLoadingComponent] if mode is 'LoadingMode.Determinate'\n */\n set value(value: number) {\n this._value = value;\n // Check for changes for `OnPush` change detection\n this._changeDetectorRef.markForCheck();\n }\n get value(): number {\n return this._value;\n }\n\n style: LoadingStyle = LoadingStyle.None;\n\n /**\n * height: number\n * Sets height of [TdLoadingComponent].\n */\n height: number;\n\n /**\n * type: LoadingType\n * Sets type of [TdLoadingComponent] rendered.\n */\n type: LoadingType = LoadingType.Circular;\n\n /**\n * color: primary' | 'accent' | 'warn'\n * Sets theme color of [TdLoadingComponent] rendered.\n */\n color: 'primary' | 'accent' | 'warn' = 'primary';\n\n constructor(private _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef) {}\n\n ngDoCheck(): void {\n // When overlay is used and the host width has a value greater than 1px\n // set the circle diameter when possible incase the loading component was rendered in a hidden state\n if (this.isOverlay() && this._hostHeight() > 1) {\n if (this.animation) {\n this._setCircleDiameter();\n this._changeDetectorRef.markForCheck();\n }\n }\n }\n\n getHeight(): string {\n // Ignore height if style is `overlay` or `fullscreen`.\n // Add height if child elements have a height and style is `none`, else return default height.\n if (this.isOverlay() || this.isFullScreen()) {\n return undefined;\n } else {\n return this.height ? `${this.height}px` : '150px';\n }\n }\n\n getCircleDiameter(): number {\n return this._circleDiameter;\n }\n\n getCircleStrokeWidth(): number {\n // we calculate the stroke width by setting it as 10% of its diameter\n let strokeWidth: number = this.getCircleDiameter() / 10;\n return Math.abs(strokeWidth);\n }\n\n isCircular(): boolean {\n return this.type === LoadingType.Circular;\n }\n\n isLinear(): boolean {\n return this.type === LoadingType.Linear;\n }\n\n isFullScreen(): boolean {\n return this.style === LoadingStyle.FullScreen;\n }\n\n isOverlay(): boolean {\n return this.style === LoadingStyle.Overlay;\n }\n\n animationComplete(event: AnimationEvent): void {\n // Check to see if its \"in\" or \"out\" animation to execute the proper callback\n if (!event.fromState) {\n this.inAnimationCompleted();\n } else {\n this.outAnimationCompleted();\n }\n }\n\n inAnimationCompleted(): void {\n this._animationIn.next(undefined);\n }\n\n outAnimationCompleted(): void {\n /* little hack to reset the loader value and animation before removing it from DOM\n * else, the loader will appear with prev value when its registered again\n * and will do an animation going prev value to 0.\n */\n this.value = 0;\n // Check for changes for `OnPush` change detection\n this._changeDetectorRef.markForCheck();\n this._animationOut.next(undefined);\n }\n\n /**\n * Starts in animation and returns an observable for completition event.\n */\n startInAnimation(): Observable<any> {\n /* need to switch back to the selected mode, so we have saved it in another variable\n * and then recover it. (issue with protractor)\n */\n this._mode = this._defaultMode;\n // Set values before the animations starts\n this._setCircleDiameter();\n // Check for changes for `OnPush` change detection\n this.animation = true;\n this._changeDetectorRef.markForCheck();\n return this._animationIn.asObservable();\n }\n\n /**\n * Starts out animation and returns an observable for completition event.\n */\n startOutAnimation(): Observable<any> {\n this.animation = false;\n /* need to switch back and forth from determinate/indeterminate so the setInterval()\n * inside mat-progress-spinner stops and protractor doesnt timeout waiting to sync.\n */\n this._mode = LoadingMode.Determinate;\n // Check for changes for `OnPush` change detection\n this._changeDetectorRef.markForCheck();\n return this._animationOut.asObservable();\n }\n\n /**\n * Calculate the proper diameter for the circle and set it\n */\n private _setCircleDiameter(): void {\n // we set a default diameter of 100 since this is the default in material\n let diameter: number = TD_CIRCLE_DIAMETER;\n // if height is provided, then we take that as diameter\n if (this.height) {\n diameter = this.height;\n // else if its not provided, then we take the host height\n } else if (this.height === undefined) {\n diameter = this._hostHeight();\n }\n // if the diameter is over TD_CIRCLE_DIAMETER, we set TD_CIRCLE_DIAMETER\n if (!!diameter && diameter <= TD_CIRCLE_DIAMETER) {\n this._circleDiameter = Math.floor(diameter);\n } else {\n this._circleDiameter = TD_CIRCLE_DIAMETER;\n }\n }\n\n /**\n * Returns the host height of the loading component\n */\n private _hostHeight(): number {\n if (<HTMLElement>this._elementRef.nativeElement) {\n return (<HTMLElement>this._elementRef.nativeElement).getBoundingClientRect().height;\n }\n return 0;\n }\n}\n","import { Injectable, ComponentFactoryResolver, ChangeDetectorRef, Provider, SkipSelf, Optional, EmbeddedViewRef } from '@angular/core';\nimport { Injector, ComponentRef, ViewContainerRef, TemplateRef } from '@angular/core';\nimport { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\n\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport { TdLoadingContext } from '../directives/loading.directive';\nimport { TdLoadingComponent, LoadingStyle } from '../loading.component';\nimport { ITdLoadingConfig } from './loading.service';\n\nexport interface IInternalLoadingOptions extends ITdLoadingConfig {\n height?: number;\n style?: LoadingStyle;\n}\n\nexport interface ILoadingRef {\n observable: Observable<any>;\n componentRef: ComponentRef<any>;\n subject?: Subject<any>;\n times?: number;\n}\n\n/**\n * NOTE: @internal usage only.\n */\n@Injectable()\nexport class TdLoadingFactory {\n\n constructor(private _componentFactoryResolver: ComponentFactoryResolver,\n private _overlay: Overlay,\n private _injector: Injector) {\n }\n\n /**\n * Uses material `Overlay` services to create a DOM element and attach the loading component\n * into it. Leveraging the state and configuration from it.\n *\n * Saves a reference in context to be called when registering/resolving the loading element.\n */\n public createFullScreenComponent(options: ITdLoadingConfig): ILoadingRef {\n (<IInternalLoadingOptions>options).height = undefined;\n (<IInternalLoadingOptions>options).style = LoadingStyle.FullScreen;\n let loadingRef: ILoadingRef = this._initializeContext();\n let loading: boolean = false;\n let overlayRef: OverlayRef;\n loadingRef.observable.pipe(\n distinctUntilChanged(),\n ).subscribe((registered: number) => {\n if (registered > 0 && !loading) {\n loading = true;\n overlayRef = this._createOverlay();\n loadingRef.componentRef = overlayRef.attach(new ComponentPortal(TdLoadingComponent));\n this._mapOptions(options, loadingRef.componentRef.instance);\n loadingRef.componentRef.instance.startInAnimation();\n loadingRef.componentRef.changeDetectorRef.detectChanges();\n } else if (registered <= 0 && loading) {\n loading = false;\n let subs: Subscription = loadingRef.componentRef.instance.startOutAnimation().subscribe(() => {\n subs.unsubscribe();\n loadingRef.componentRef.destroy();\n overlayRef.detach();\n overlayRef.dispose();\n });\n }\n });\n return loadingRef;\n }\n\n /**\n * Creates a loading component dynamically and attaches it into the given viewContainerRef.\n * Leverages TemplatePortals from material to inject the template inside of it so it fits\n * perfectly when overlaying it.\n *\n * Saves a reference in context to be called when registering/resolving the loading element.\n */\n public createOverlayComponent(options: ITdLoadingConfig, viewContainerRef: ViewContainerRef,\n templateRef: TemplateRef<Object>): ILoadingRef {\n (<IInternalLoadingOptions>options).height = undefined;\n (<IInternalLoadingOptions>options).style = LoadingStyle.Overlay;\n let loadingRef: ILoadingRef = this._createComponent(options);\n let loading: boolean = false;\n loadingRef.componentRef.instance.content = new TemplatePortal(templateRef, viewContainerRef);\n viewContainerRef.clear();\n viewContainerRef.insert(loadingRef.componentRef.hostView, 0);\n loadingRef.observable.pipe(\n distinctUntilChanged(),\n ).subscribe((registered: number) => {\n if (registered > 0 && !loading) {\n loading = true;\n loadingRef.componentRef.instance.startInAnimation();\n } else if (registered <= 0 && loading) {\n loading = false;\n loadingRef.componentRef.instance.startOutAnimation();\n }\n });\n return loadingRef;\n }\n\n /**\n * Creates a loading component dynamically and attaches it into the given viewContainerRef.\n * Replaces the template with the loading component depending if it was registered or resolved.\n *\n * Saves a reference in context to be called when registering/resolving the loading element.\n */\n public createReplaceComponent(options: ITdLoadingConfig, viewContainerRef: ViewContainerRef,\n templateRef: TemplateRef<Object>, context: TdLoadingContext): ILoadingRef {\n let nativeElement: HTMLElement = <HTMLElement>templateRef.elementRef.nativeElement;\n (<IInternalLoadingOptions>options).height = nativeElement.nextElementSibling ?\n nativeElement.nextElementSibling.scrollHeight : undefined;\n (<IInternalLoadingOptions>options).style = LoadingStyle.None;\n let loadingRef: ILoadingRef = this._createComponent(options);\n let loading: boolean = false;\n // passing context so when the template is attached, we can keep the reference of the variables\n let contentRef: EmbeddedViewRef<Object> = viewContainerRef.createEmbeddedView(templateRef, context);\n loadingRef.observable.pipe(\n distinctUntilChanged(),\n ).subscribe((registered: number) => {\n if (registered > 0 && !loading) {\n loading = true;\n // detach the content and attach the loader if loader is there\n let index: number = viewContainerRef.indexOf(loadingRef.componentRef.hostView);\n if (index < 0) {\n viewContainerRef.detach(viewContainerRef.indexOf(contentRef));\n viewContainerRef.insert(loadingRef.componentRef.hostView, 0);\n }\n loadingRef.componentRef.instance.startInAnimation();\n } else if (registered <= 0 && loading) {\n loading = false;\n let subs: Subscription = loadingRef.componentRef.instance.startOutAnimation().subscribe(() => {\n subs.unsubscribe();\n // detach loader and attach the content if content is there\n let index: number = viewContainerRef.indexOf(contentRef);\n if (index < 0) {\n viewContainerRef.detach(viewContainerRef.indexOf(loadingRef.componentRef.hostView));\n viewContainerRef.insert(contentRef, 0);\n }\n /**\n * Need to call \"markForCheck\" and \"detectChanges\" on attached template, so its detected by parent component when attached\n * with \"OnPush\" change detection\n */\n contentRef.detectChanges();\n contentRef.markForCheck();\n });\n }\n });\n return loadingRef;\n }\n\n /**\n * Creates a fullscreen overlay for the loading usage.\n */\n private _createOverlay(): OverlayRef {\n let state: OverlayConfig = new OverlayConfig();\n state.hasBackdrop = false;\n state.positionStrategy = this._overlay.position().global().centerHorizontally().centerVertically();\n return this._overlay.create(state);\n }\n\n /**\n * Creates a generic component dynamically waiting to be attached to a viewContainerRef.\n */\n private _createComponent(options: IInternalLoadingOptions): ILoadingRef {\n let compRef: ILoadingRef = this._initializeContext();\n compRef.componentRef = this._componentFactoryResolver\n .resolveComponentFactory(TdLoadingComponent).create(this._injector);\n this._mapOptions(options, compRef.componentRef.instance);\n return compRef;\n }\n\n /**\n * Initialize context for loading component.\n */\n private _initializeContext(): ILoadingRef {\n let subject: Subject<any> = new Subject<any>();\n return {\n observable: subject.asObservable(),\n subject: subject,\n componentRef: undefined,\n times: 0,\n };\n }\n\n /**\n * Maps configuration to the loading component instance.\n */\n private _mapOptions(options: IInternalLoadingOptions, instance: TdLoadingComponent): void {\n instance.style = options.style;\n if (options.type !== undefined) {\n instance.type = options.type;\n }\n if (options.height !== undefined) {\n instance.height = options.height;\n }\n if (options.mode !== undefined) {\n instance.mode = options.mode;\n }\n if (options.color !== undefined) {\n instance.color = options.color;\n }\n }\n}\n\nexport function LOADING_FACTORY_PROVIDER_FACTORY(\n parent: TdLoadingFactory, componentFactoryResolver: ComponentFactoryResolver, overlay: Overlay, injector: Injector): TdLoadingFactory {\n return parent || new TdLoadingFactory(componentFactoryResolver, overlay, injector);\n}\n\nexport const LOADING_FACTORY_PROVIDER: Provider = {\n // If there is already a service available, use that. Otherwise, provide a new one.\n provide: TdLoadingFactory,\n deps: [[new Optional(), new SkipSelf(), TdLoadingFactory], ComponentFactoryResolver, Overlay, Injector],\n useFactory: LOADING_FACTORY_PROVIDER_FACTORY,\n};\n","import { Injectable, Provider, SkipSelf, Optional } from '@angular/core';\nimport { ViewContainerRef, TemplateRef } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\n\nimport { TdLoadingContext } from '../directives/loading.directive';\nimport { TdLoadingComponent, LoadingMode, LoadingStrategy, LoadingType } from '../loading.component';\nimport { TdLoadingFactory, ILoadingRef } from './loading.factory';\n\nexport interface ITdLoadingConfig {\n name: string;\n type?: LoadingType;\n mode?: LoadingMode;\n color?: 'primary' | 'accent' | 'warn';\n}\n\nexport class TdLoadingConfig implements ITdLoadingConfig {\n name: string;\n type?: LoadingType;\n mode?: LoadingMode;\n color?: 'primary' | 'accent' | 'warn';\n\n constructor(config: ITdLoadingConfig) {\n this.name = config.name;\n if (!this.name) {\n throw Error('Name is required for [TdLoading] configuration.');\n }\n this.mode = config.mode ? config.mode : LoadingMode.Indeterminate;\n this.type = config.type ? config.type : LoadingType.Circular;\n this.color = config.color ? config.color : 'primary';\n }\n}\n\nexport interface ITdLoadingDirectiveConfig extends ITdLoadingConfig {\n strategy?: LoadingStrategy;\n}\n\nexport class TdLoadingDirectiveConfig extends TdLoadingConfig implements ITdLoadingDirectiveConfig {\n name: string;\n type: LoadingType;\n mode: LoadingMode;\n strategy: LoadingStrategy;\n\n constructor(config: ITdLoadingDirectiveConfig) {\n super(config);\n this.strategy = config.strategy ? config.strategy : LoadingStrategy.Replace;\n }\n}\n\n@Injectable()\nexport class TdLoadingService {\n\n private _context: {[key: string]: ILoadingRef} = {};\n private _timeouts: {[key: string]: any} = {};\n\n constructor(private _loadingFactory: TdLoadingFactory) {\n this.create({\n name: 'td-loading-main',\n });\n }\n\n /**\n * params:\n * - config: ILoadingDirectiveConfig\n * - viewContainerRef: ViewContainerRef\n * - templateRef: TemplateRef<Object>\n *\n * Creates an replace loading mask and attaches it to the viewContainerRef.\n * Replaces the templateRef with the mask when a request is registered on it.\n *\n * NOTE: @internal usage only.\n */\n createComponent(config: ITdLoadingDirectiveConfig, viewContainerRef: ViewContainerRef,\n templateRef: TemplateRef<Object>, context: TdLoadingContext): ILoadingRef {\n let directiveConfig: TdLoadingDirectiveConfig = new TdLoadingDirectiveConfig(config);\n if (this._context[directiveConfig.name]) {\n throw Error(`Name duplication: [TdLoading] directive has a name conflict with ${directiveConfig.name}.`);\n }\n if (directiveConfig.strategy === LoadingStrategy.Overlay) {\n this._context[directiveConfig.name] = this._loadingFactory.createOverlayComponent(directiveConfig, viewContainerRef, templateRef);\n } else {\n this._context[directiveConfig.name] = this._loadingFactory.createReplaceComponent(directiveConfig, viewContainerRef, templateRef, context);\n }\n return this._context[directiveConfig.name];\n }\n\n /**\n * params:\n * - config: ITdLoadingConfig\n *\n * Creates a fullscreen loading mask and attaches it to the DOM with the given configuration.\n * Only displayed when the mask has a request registered on it.\n */\n public create(config: ITdLoadingConfig): void {\n let fullscreenConfig: TdLoadingConfig = new TdLoadingConfig(config);\n this.removeComponent(fullscreenConfig.name);\n this._context[fullscreenConfig.name] = this._loadingFactory.createFullScreenComponent(fullscreenConfig);\n }\n\n /**\n * params:\n * - name: string\n *\n * Removes `loading` component from service context.\n */\n public removeComponent(name: string): void {\n if (this._context[name]) {\n this._context[name].subject.unsubscribe();\n if (this._context[name].componentRef) {\n this._context[name].componentRef.destroy();\n }\n this._context[name] = undefined;\n delete this._context[name];\n }\n }\n\n /**\n * params:\n * - name: string\n * - registers?: number\n * returns: true if successful\n *\n * Resolves a request for the loading mask referenced by the name parameter.\n * Can optionally pass registers argument to set a number of register calls.\n *\n * If no paramemeters are used, then default main mask will be used.\n *\n * e.g. loadingService.register()\n */\n public register(name: string = 'td-loading-main', registers: number = 1): boolean {\n // try registering into the service if the loading component has been instanciated or if it exists.\n if (this._context[name]) {\n registers = registers < 1 ? 1 : registers;\n this._context[name].times += registers;\n this._context[name].subject.next(this._context[name].times);\n return true;\n } else {\n // if it doesnt exist, set a timeout so its registered after change detection happens\n // this in case \"register\" occured on the `ngOnInit` lifehook cycle.\n if (!this._timeouts[name]) {\n this._timeouts[name] = setTimeout(() => {\n this.register(name, registers);\n });\n } else {\n // if it timeout occured and still doesnt exist, it means the tiemout wasnt needed so we clear it.\n this._clearTimeout(name);\n }\n }\n return false;\n }\n\n /**\n * params:\n * - name: string\n * - resolves?: number\n * returns: true if successful\n *\n * Resolves a request for the loading mask referenced by the name parameter.\n * Can optionally pass resolves argument to set a number of resolve calls.\n *\n * If no paramemeters are used, then default main mask will be used.\n *\n * e.g. loadingService.resolve()\n */\n public resolve(name: string = 'td-loading-main', resolves: number = 1): boolean {\n // clear timeout if the loading component is \"resolved\" before its \"registered\"\n this._clearTimeout(name);\n if (this._context[name]) {\n resolves = resolves < 1 ? 1 : resolves;\n if (this._context[name].times > 0) {\n let times: number = this._context[name].times;\n times -= resolves;\n this._context[name].times = times < 0 ? 0 : times;\n }\n this._context[name].subject.next(this._context[name].times);\n return true;\n }\n return false;\n }\n\n /**\n * params:\n * - name: string\n * returns: true if successful\n *\n * Resolves all request for the loading mask referenced by the name parameter.\n *\n * If no paramemeters are used, then default main mask will be used.\n *\n * e.g. loadingService.resolveAll()\n */\n public resolveAll(name: string = 'td-loading-main'): boolean {\n // clear timeout if the loading component is \"resolved\" before its \"registered\"\n this._clearTimeout(name);\n if (this._context[name]) {\n this._context[name].times = 0;\n this._context[name].subject.next(this._context[name].times);\n return true;\n }\n return false;\n }\n\n /**\n * params:\n * - name: string\n * - value: number\n * returns: true if successful\n *\n * Set value on a loading mask referenced by the name parameter.\n * Usage only available if its mode is 'determinate' and if loading is showing.\n */\n public setValue(name: string, value: number): boolean {\n if (this._context[name]) {\n let instance: TdLoadingComponent = this._context[name].componentRef.instance;\n if (instance.mode === LoadingMode.Determinate && instance.animation) {\n instance.value = value;\n return true;\n }\n }\n return false;\n }\n\n /**\n * Clears timeout linked to the name.\n * @param name Name of the loading component to be cleared\n */\n private _clearTimeout(name: string): void {\n clearTimeout(this._timeouts[name]);\n delete this._timeouts[name];\n }\n}\n\nexport function LOADING_PROVIDER_FACTORY(\n parent: TdLoadingService, loadingFactory: TdLoadingFactory): TdLoadingService {\n return parent || new TdLoadingService(loadingFactory);\n}\n\nexport const LOADING_PROVIDER: Provider = {\n // If there is already a service available, use that. Otherwise, provide a new one.\n provide: TdLoadingService,\n deps: [[new Optional(), new SkipSelf(), TdLoadingService], TdLoadingFactory],\n useFactory: LOADING_PROVIDER_FACTORY,\n};\n","import { Directive, Input, OnInit, OnDestroy } from '@angular/core';\nimport { ViewContainerRef, TemplateRef } from '@angular/core';\n\nimport { LoadingType, LoadingMode, LoadingStrategy, TdLoadingComponent } from '../loading.component';\nimport { TdLoadingService } from '../services/loading.service';\nimport { ILoadingRef } from '../services/loading.factory';\n\n/**\n * Context class for variable reference\n */\nexport class TdLoadingContext {\n public $implicit: any = undefined;\n public tdLoading: any = undefined;\n}\n\n// Constant for generation of the id for the next component\nlet TD_LOADING_NEXT_ID: number = 0;\n\n@Directive({\n selector: '[tdLoading]',\n})\nexport class TdLoadingDirective implements OnInit, OnDestroy {\n\n private _context: TdLoadingContext = new TdLoadingContext();\n private _type: LoadingType;\n private _mode: LoadingMode;\n private _strategy: LoadingStrategy;\n private _name: string;\n private _loadingRef: ILoadingRef;\n\n /**\n * tdLoading: string\n * Name reference of the loading mask, used to register/resolve requests to the mask.\n */\n @Input('tdLoading')\n set name(name: string) {\n if (!this._name) {\n if (name) {\n this._name = name;\n }\n }\n }\n\n /**\n * tdLoadingUntil?: any\n * If its null, undefined or false it will be used to register requests to the mask.\n * Else if its any value that can be resolved as true, it will resolve the mask.\n * [name] is optional when using [until], but can still be used to register/resolve it manually.\n */\n @Input('tdLoadingUntil')\n set until(until: any) {\n if (!this._name) {\n this._name = 'td-loading-until-' + TD_LOADING_NEXT_ID++;\n }\n this._context.$implicit = this._context.tdLoading = until;\n if (!until) {\n this._loadingService.register(this._name);\n } else {\n this._loadingService.resolveAll(this._name);\n }\n }\n\n /**\n * tdLoadingType?: LoadingType or ['linear' | 'circular']\n * Sets the type of loading mask depending on value.\n * Defaults to [LoadingType.Circular | 'circular'].\n */\n @Input('tdLoadingType')\n set type(type: LoadingType) {\n switch (type) {\n case LoadingType.Linear:\n this._type = LoadingType.Linear;\n break;\n default:\n this._type = LoadingType.Circular;\n break;\n }\n }\n\n /**\n * tdLoadingMode?: LoadingMode or ['determinate' | 'indeterminate']\n * Sets the mode of loading mask depending on value.\n * Defaults to [LoadingMode.Indeterminate | 'indeterminate'].\n */\n @Input('tdLoadingMode')\n set mode(mode: LoadingMode) {\n switch (mode) {\n case LoadingMode.Determinate:\n this._mode = LoadingMode.Determinate;\n break;\n default:\n this._mode = LoadingMode.Indeterminate;\n break;\n }\n }\n\n /**\n * tdLoadingStrategy?: LoadingStrategy or ['replace' | 'overlay']\n * Sets the strategy of loading mask depending on value.\n * Defaults to [LoadingMode.Replace | 'replace'].\n */\n @Input('tdLoadingStrategy')\n set strategy(stategy: LoadingStrategy) {\n switch (stategy) {\n case LoadingStrategy.Overlay:\n this._strategy = LoadingStrategy.Overlay;\n break;\n default:\n this._strategy = LoadingStrategy.Replace;\n break;\n }\n }\n\n /**\n * tdLoadingColor?: \"primary\" | \"accent\" | \"warn\"\n * Sets the theme color of the loading component. Defaults to \"primary\"\n */\n @Input('tdLoadingColor') color: 'primary' | 'accent' | 'warn' = 'primary';\n\n constructor(private _viewContainerRef: ViewContainerRef,\n private _templateRef: TemplateRef<TdLoadingContext>,\n private _loadingService: TdLoadingService) {}\n\n /**\n * Registers component in the DOM, so it will be available when calling resolve/register.\n */\n ngOnInit(): void {\n this._registerComponent();\n }\n\n /**\n * Remove component when directive is destroyed.\n */\n ngOnDestroy(): void {\n this._loadingService.removeComponent(this._name);\n this._loadingRef = undefined;\n }\n\n /**\n * Creates [TdLoadingComponent] and attaches it to this directive's [ViewContainerRef].\n * Passes this directive's [TemplateRef] to modify DOM depending on loading `strategy`.\n */\n private _registerComponent(): void {\n if (!this._name) {\n throw new Error('Name is needed to register loading directive');\n }\n // Check if `TdLoadingComponent` has been created before trying to add one again.\n // There is a weird edge case when using `[routerLinkActive]` that calls the `ngOnInit` twice in a row\n if (!this._loadingRef) {\n this._loadingRef = this._loadingService.createComponent({\n name: this._name,\n type: this._type,\n mode: this._mode,\n color: this.color,\n strategy: this._strategy,\n }, this._viewContainerRef, this._templateRef, this._context);\n }\n }\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { TdLoadingService, LOADING_PROVIDER } from './services/loading.service';\nimport { TdLoadingFactory, LOADING_FACTORY_PROVIDER } from './services/loading.factory';\nimport { TdLoadingDirective } from './directives/loading.directive';\nimport { TdLoadingComponent } from './loading.component';\n\nconst TD_LOADING: Type<any>[] = [\n TdLoadingComponent,\n TdLoadingDirective,\n];\n\nconst TD_LOADING_ENTRY_COMPONENTS: Type<any>[] = [\n TdLoadingComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n OverlayModule,\n PortalModule,\n ],\n declarations: [\n TD_LOADING,\n ],\n exports: [\n TD_LOADING,\n ],\n providers: [\n LOADING_FACTORY_PROVIDER,\n LOADING_PROVIDER,\n ],\n entryComponents: [\n TD_LOADING_ENTRY_COMPONENTS,\n ],\n})\nexport class CovalentLoadingModule {\n\n}\n","import { Injectable, NgZone, SkipSelf, Optional, Provider } from '@angular/core';\nimport { Observable, BehaviorSubject, Subscription, fromEvent } from 'rxjs';\n\n@Injectable()\nexport class TdMediaService {\n\n private _resizing: boolean = false;\n private _globalSubscription: Subscription;\n private _queryMap: Map<string, string> = new Map<string, string>();\n private _querySources: { [key: string]: BehaviorSubject<boolean>} = {};\n private _queryObservables: {[key: string]: Observable<boolean>} = {};\n\n constructor(private _ngZone: NgZone) {\n this._queryMap.set('xs', '(max-width: 599px)');\n this._queryMap.set('gt-xs', '(min-width: 600px)');\n this._queryMap.set('sm', '(min-width: 600px) and (max-width: 959px)');\n this._queryMap.set('gt-sm', '(min-width: 960px)');\n this._queryMap.set('md', '(min-width: 960px) and (max-width: 1279px)');\n this._queryMap.set('gt-md', '(min-width: 1280px)');\n this._queryMap.set('lg', '(min-width: 1280px) and (max-width: 1919px)');\n this._queryMap.set('gt-lg', '(min-width: 1920px)');\n this._queryMap.set('xl', '(min-width: 1920px)');\n this._queryMap.set('landscape', '(orientation: landscape)');\n this._queryMap.set('portrait', '(orientation: portrait)');\n this._queryMap.set('print', 'print');\n\n this._resizing = false;\n // we make sure that the resize checking happend outside of Angular since it happens often\n this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n return fromEvent(window, 'resize').subscribe(() => {\n // way to prevent the resize event from triggering the match media if there is already one event running already.\n if (!this._resizing) {\n this._resizing = true;\n setTimeout(() => {\n this._onResize();\n this._resizing = false;\n }, 100);\n }\n });\n });\n }\n\n /**\n * Deregisters a query so its stops being notified or used.\n */\n deregisterQuery(query: string): void {\n if (this._queryMap.get(query.toLowerCase())) {\n query = this._queryMap.get(query.toLowerCase());\n }\n this._querySources[query].unsubscribe();\n delete this._querySources[query];\n delete this._queryObservables[query];\n }\n\n /**\n * Used to evaluate whether a given media query is true or false given the current device's screen / window size.\n */\n public query(query: string): boolean {\n if (this._queryMap.get(query.toLowerCase())) {\n query = this._queryMap.get(query.toLowerCase());\n }\n return this._ngZone.run(() => {\n return matchMedia(query).matches;\n });\n }\n\n /**\n * Registers a media query and returns an [Observable] that will re-evaluate and\n * return if the given media query matches on window resize.\n * Note: don't forget to unsubscribe from [Observable] when finished watching.\n */\n public registerQuery(query: string): Observable<boolean> {\n if (this._queryMap.get(query.toLowerCase())) {\n query = this._queryMap.get(query.toLowerCase());\n }\n if (!this._querySources[query]) {\n this._querySources[query] = new BehaviorSubject<boolean>(matchMedia(query).matches);\n this._queryObservables[query] = this._querySources[query].asObservable();\n }\n return this._queryObservables[query];\n }\n\n /**\n * Trigger a match media event on all subscribed observables.\n */\n public broadcast(): void {\n this._onResize();\n }\n\n private _onResize(): void {\n for (let query in this._querySources) {\n this._ngZone.run(() => {\n this._matchMediaTrigger(query);\n });\n }\n }\n\n private _matchMediaTrigger(query: string): void {\n this._querySources[query].next(matchMedia(query).matches);\n }\n}\n\nexport function MEDIA_PROVIDER_FACTORY(\n parent: TdMediaService, ngZone: NgZone): TdMediaService {\n return parent || new TdMediaService(ngZone);\n}\n\nexport const MEDIA_PROVIDER: Provider = {\n // If there is already a service available, use that. Otherwise, provide a new one.\n provide: TdMediaService,\n deps: [[new Optional(), new SkipSelf(), TdMediaService], NgZone],\n useFactory: MEDIA_PROVIDER_FACTORY,\n};\n","import { Directive, ElementRef, Input, OnInit, OnDestroy } from '@angular/core';\nimport { Renderer2 } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { TdMediaService } from '../services/media.service';\n\n@Directive({\n selector: '[tdMediaToggle]',\n})\nexport class TdMediaToggleDirective implements OnInit, OnDestroy {\n\n private _subscription: Subscription;\n\n private _query: string;\n private _matches: boolean = false;\n private _attributes: {[key: string]: string} = {};\n private _styles: {[key: string]: string} = {};\n private _classes: string[] = [];\n\n /**\n * tdMediaToggle: string\n * Media query used to evaluate screen/window size.\n * Toggles attributes, classes and styles if media query is matched.\n */\n @Input('tdMediaToggle')\n set query(query: string) {\n if (!query) {\n throw new Error('Query needed for [tdMediaToggle] directive.');\n }\n this._query = query;\n }\n\n /**\n * mediaAttributes: {[key: string]: string}\n * Attributes to be toggled when media query matches.\n */\n @Input('mediaAttributes')\n set attributes(attributes: any) {\n this._attributes = attributes;\n }\n\n /**\n * mediaClasses: string[]\n * CSS Classes to be toggled when media query matches.\n */\n @Input('mediaClasses')\n set classes(classes: string[]) {\n this._classes = classes;\n }\n\n /**\n * mediaStyles: {[key: string]: string}\n * CSS Styles to be toggled when media query matches.\n */\n @Input('mediaStyles')\n set styles(styles: any) {\n this._styles = styles;\n }\n\n constructor(private _renderer: Renderer2, private _elementRef: ElementRef, private _mediaService: TdMediaService) { }\n\n ngOnInit(): void {\n this._mediaChange(this._mediaService.query(this._query));\n this._subscription = this._mediaService.registerQuery(this._query).subscribe((matches: boolean) => {\n this._mediaChange(matches);\n });\n }\n\n ngOnDestroy(): void {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n }\n\n private _mediaChange(matches: boolean): void {\n this._matches = matches;\n this._changeAttributes();\n this._changeClasses();\n this._changeStyles();\n }\n\n private _changeAttributes(): void {\n for (let attr in this._attributes) {\n if (this._matches) {\n this._renderer.setAttribute(this._elementRef.nativeElement, attr, this._attributes[attr]);\n } else {\n this._renderer.removeAttribute(this._elementRef.nativeElement, attr);\n }\n }\n }\n\n private _changeClasses(): void {\n this._classes.forEach((className: string) => {\n if (this._matches) {\n this._renderer.addClass(this._elementRef.nativeElement, className);\n } else {\n this._renderer.removeClass(this._elementRef.nativeElement, className);\n }\n });\n }\n\n private _changeStyles(): void {\n for (let style in this._styles) {\n if (this._matches) {\n this._renderer.setStyle(this._elementRef.nativeElement, style, this._styles[style]);\n } else {\n this._renderer.removeStyle(this._elementRef.nativeElement, style);\n }\n }\n }\n\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\n\nimport { MEDIA_PROVIDER } from './services/media.service';\nimport { TdMediaToggleDirective } from './directives/media-toggle.directive';\n\nconst TD_MEDIA: Type<any>[] = [\n TdMediaToggleDirective,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n ],\n declarations: [\n TD_MEDIA,\n ],\n exports: [\n TD_MEDIA,\n ],\n providers: [\n MEDIA_PROVIDER,\n ],\n})\nexport class CovalentMediaModule {\n\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'td-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.scss'],\n})\nexport class TdMenuComponent {\n\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDividerModule } from '@angular/material/divider';\n\nimport { TdMenuComponent } from './menu.component';\n\nconst TD_MENU: Type<any>[] = [\n TdMenuComponent,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n MatMenuModule,\n MatDividerModule,\n ],\n declarations: [\n TD_MENU,\n ],\n exports: [\n TD_MENU,\n ],\n})\nexport class CovalentMenuModule {\n\n}\n","import { Component, ViewChild, OnInit, Input, Output, EventEmitter, Optional,\n ChangeDetectionStrategy, ChangeDetectorRef, forwardRef } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Dir } from '@angular/cdk/bidi';\nimport { MatInput } from '@angular/material/input';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { debounceTime, skip } from 'rxjs/operators';\n\nimport { IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\n\nexport class TdSearchInputBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) { }\n}\n\n/* tslint:disable-next-line */\nexport const _TdSearchInputMixinBase = mixinControlValueAccessor(TdSearchInputBase);\n\n@Component({\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdSearchInputComponent),\n multi: true,\n }],\n selector: 'td-search-input',\n templateUrl: './search-input.component.html',\n styleUrls: ['./search-input.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['value'],\n animations: [\n trigger('searchState', [\n state('hide-left', style({\n transform: 'translateX(-150%)',\n display: 'none',\n })),\n state('hide-right', style({\n transform: 'translateX(150%)',\n display: 'none',\n })),\n state('show', style({\n transform: 'translateX(0%)',\n display: 'block',\n })),\n transition('* => show', animate('200ms ease-in')),\n transition('show => *', animate('200ms ease-out')),\n ]),\n ],\n})\nexport class TdSearchInputComponent extends _TdSearchInputMixinBase implements IControlValueAccessor, OnInit {\n\n @ViewChild(MatInput) _input: MatInput;\n\n /**\n * appearance?: MatFormFieldAppearance\n * Appearance style for the underlying input component.\n */\n @Input('appearance') appearance: MatFormFieldAppearance;\n\n /**\n * showUnderline?: boolean\n * Sets if the input underline should be visible. Defaults to 'false'.\n */\n @Input('showUnderline') showUnderline: boolean = false;\n\n /**\n * debounce?: number\n * Debounce timeout between keypresses. Defaults to 400.\n */\n @Input('debounce') debounce: number = 400;\n\n /**\n * placeholder?: string\n * Placeholder for the underlying input component.\n */\n @Input('placeholder') placeholder: string;\n\n /**\n * clearIcon?: string\n * The icon used to clear the search input.\n * Defaults to 'cancel' icon.\n */\n @Input('clearIcon') clearIcon: string = 'cancel';\n\n /**\n * searchDebounce: function($event)\n * Event emitted after the [debounce] timeout.\n */\n @Output('searchDebounce') onSearchDebounce: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * search: function($event)\n * Event emitted after the key enter has been pressed.\n */\n @Output('search') onSearch: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * clear: function()\n * Event emitted after the clear icon has been clicked.\n */\n @Output('clear') onClear: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * blur: function()\n * Event emitted after the blur event has been called in underlying input.\n */\n @Output('blur') onBlur: EventEmitter<void> = new EventEmitter<void>();\n\n get isRTL(): boolean {\n if (this._dir) {\n return this._dir.dir === 'rtl';\n }\n return false;\n }\n\n constructor(@Optional() private _dir: Dir,\n _changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n }\n\n ngOnInit(): void {\n this._input.ngControl.valueChanges.pipe(\n debounceTime(this.debounce),\n skip(1), // skip first change when value is set to undefined\n ).subscribe((value: string) => {\n this._searchTermChanged(value);\n });\n }\n\n /**\n * Method to focus to underlying input.\n */\n focus(): void {\n this._input.focus();\n }\n\n handleBlur(): void {\n this.onBlur.emit(undefined);\n }\n\n stopPropagation(event: Event): void {\n event.stopPropagation();\n }\n\n handleSearch(event: Event): void {\n this.stopPropagation(event);\n this.onSearch.emit(this.value);\n }\n\n /**\n * Method to clear the underlying input.\n */\n clearSearch(): void {\n this.value = '';\n this._changeDetectorRef.markForCheck();\n this.onClear.emit(undefined);\n }\n\n private _searchTermChanged(value: string): void {\n this.onSearchDebounce.emit(value);\n }\n\n}\n","import { Component, ViewChild, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { trigger, state, style, transition, animate, AUTO_STYLE } from '@angular/animations';\n\nimport { TdSearchInputComponent } from '../search-input/search-input.component';\nimport { IControlValueAccessor, mixinControlValueAccessor } from '@covalent/core/common';\n\nexport class TdSearchBoxBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) { }\n}\n\n/* tslint:disable-next-line */\nexport const _TdSearchBoxMixinBase = mixinControlValueAccessor(TdSearchBoxBase);\n\n@Component({\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdSearchBoxComponent),\n multi: true,\n }],\n selector: 'td-search-box',\n templateUrl: './search-box.component.html',\n styleUrls: ['./search-box.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['value'],\n animations: [\n trigger('inputState', [\n state('0', style({\n width: '0%',\n margin: '0px',\n })),\n state('1', style({\n width: '100%',\n margin: AUTO_STYLE,\n })),\n transition('0 => 1', animate('200ms ease-in')),\n transition('1 => 0', animate('200ms ease-out')),\n ]),\n ],\n})\nexport class TdSearchBoxComponent extends _TdSearchBoxMixinBase implements IControlValueAccessor {\n\n private _searchVisible: boolean = false;\n @ViewChild(TdSearchInputComponent) _searchInput: TdSearchInputComponent;\n\n get searchVisible(): boolean {\n return this._searchVisible;\n }\n\n /**\n * backIcon?: string\n * The icon used to close the search toggle, only shown when [alwaysVisible] is false.\n * Defaults to 'search' icon.\n */\n @Input('backIcon') backIcon: string = 'search';\n\n /**\n * searchIcon?: string\n * The icon used to open/focus the search toggle.\n * Defaults to 'search' icon.\n */\n @Input('searchIcon') searchIcon: string = 'search';\n\n /**\n * clearIcon?: string\n * The icon used to clear the search input.\n * Defaults to 'cancel' icon.\n */\n @Input('clearIcon') clearIcon: string = 'cancel';\n\n /**\n * showUnderline?: boolean\n * Sets if the input underline should be visible. Defaults to 'false'.\n */\n @Input('showUnderline') showUnderline: boolean = false;\n\n /**\n * debounce?: number\n * Debounce timeout between keypresses. Defaults to 400.\n */\n @Input('debounce') debounce: number = 400;\n\n /**\n * alwaysVisible?: boolean\n * Sets if the input should always be visible. Defaults to 'false'.\n */\n @Input('alwaysVisible') alwaysVisible: boolean = false;\n\n /**\n * placeholder?: string\n * Placeholder for the underlying input component.\n */\n @Input('placeholder') placeholder: string;\n\n /**\n * searchDebounce: function($event)\n * Event emitted after the [debounce] timeout.\n */\n @Output('searchDebounce') onSearchDebounce: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * search: function($event)\n * Event emitted after the key enter has been pressed.\n */\n @Output('search') onSearch: EventEmitter<string> = new EventEmitter<string>();\n\n /**\n * clear: function()\n * Event emitted after the clear icon has been clicked.\n */\n @Output('clear') onClear: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * blur: function()\n * Event emitted after the blur event has been called in underlying input.\n */\n @Output('blur') onBlur: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(_changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n }\n\n /**\n * Method executed when the search icon is clicked.\n */\n searchClicked(): void {\n if (!this.alwaysVisible && this._searchVisible) {\n this.value = '';\n this.handleClear();\n } else if (this.alwaysVisible || !this._searchVisible) {\n this._searchInput.focus();\n }\n this.toggleVisibility();\n }\n\n toggleVisibility(): void {\n this._searchVisible = !this._searchVisible;\n this._changeDetectorRef.markForCheck();\n }\n\n handleSearchDebounce(value: string): void {\n this.onSearchDebounce.emit(value);\n }\n\n handleSearch(value: string): void {\n this.onSearch.emit(value);\n }\n\n handleClear(): void {\n this.onClear.emit(undefined);\n }\n\n handleBlur(): void {\n this.onBlur.emit(undefined);\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { TdSearchInputComponent } from './search-input/search-input.component';\nimport { TdSearchBoxComponent } from './search-box/search-box.component';\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n ],\n declarations: [\n TdSearchInputComponent,\n TdSearchBoxComponent,\n ],\n exports: [\n TdSearchInputComponent,\n TdSearchBoxComponent,\n ],\n})\nexport class CovalentSearchModule {\n\n}\n","import {\n Component,\n ElementRef,\n HostBinding,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n} from '@angular/core';\n\n@Component({\n selector: 'td-breadcrumb, a[td-breadcrumb]',\n styleUrls: ['./breadcrumb.component.scss'],\n templateUrl: './breadcrumb.component.html',\n /* tslint:disable-next-line */\n host: {\n class: 'mat-button td-breadcrumb',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdBreadcrumbComponent implements AfterViewInit {\n\n private _displayCrumb: boolean = true;\n private _width: number = 0;\n // Sets the icon url shown between breadcrumbs. Defaults to 'chevron_right'\n separatorIcon: string = 'chevron_right';\n // Should show the right chevron or not before the label\n _displayIcon: boolean = true;\n\n get displayCrumb(): boolean {\n return this._displayCrumb;\n }\n\n /**\n * Whether to display the crumb or not\n */\n set displayCrumb(shouldDisplay: boolean) {\n this._displayCrumb = shouldDisplay;\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Width of the DOM element of the crumb\n */\n get width(): number {\n return this._width;\n }\n\n /**\n * Gets the display style of the crumb\n */\n @HostBinding('style.display')\n get displayBinding(): string {\n // Set the display to none on the component, just in case the end user is hiding\n // and showing them instead of the component doing itself for reasons like responsive\n return this._displayCrumb ? undefined : 'none';\n }\n\n constructor(private _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef) {\n }\n\n ngAfterViewInit(): void {\n // set the width from the actual rendered DOM element\n setTimeout(() => {\n this._width = (<HTMLElement>this._elementRef.nativeElement).getBoundingClientRect().width;\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * Stop click propagation when clicking on icon\n */\n _handleIconClick(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n}\n","import {\n Component,\n ContentChildren,\n QueryList,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n AfterContentInit,\n DoCheck,\n ChangeDetectorRef,\n ElementRef,\n Input,\n} from '@angular/core';\n\nimport {\n Subscription,\n Subject,\n fromEvent,\n merge,\n} from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n} from 'rxjs/operators';\n\nimport { TdBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\n\n@Component({\n selector: 'td-breadcrumbs',\n styleUrls: ['./breadcrumbs.component.scss'],\n templateUrl: './breadcrumbs.component.html',\n /* tslint:disable-next-line */\n host: {\n class: 'td-breadcrumbs',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdBreadcrumbsComponent implements OnInit, DoCheck, AfterContentInit, OnDestroy {\n\n private _resizeSubscription: Subscription = Subscription.EMPTY;\n private _widthSubject: Subject<number> = new Subject<number>();\n private _resizing: boolean = false;\n\n // all the sub components, which are the individual breadcrumbs\n @ContentChildren(TdBreadcrumbComponent) _breadcrumbs: QueryList<TdBreadcrumbComponent>;\n // the list of hidden breadcrumbs not shown right now (responsive)\n hiddenBreadcrumbs: TdBreadcrumbComponent[] = [];\n\n /**\n * Sets the icon url shown between breadcrumbs. Defaults to 'chevron_right'.\n */\n @Input('separatorIcon') separatorIcon: string = 'chevron_right';\n\n constructor(private _elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef) {\n }\n\n ngOnInit(): void {\n this._resizeSubscription = merge(\n fromEvent(window, 'resize').pipe(\n debounceTime(10),\n ),\n this._widthSubject.asObservable().pipe(\n distinctUntilChanged(),\n ),\n ).subscribe(() => {\n if (!this._resizing) {\n this._resizing = true;\n setTimeout(() => {\n this._calculateVisibility();\n this._resizing = false;\n this._changeDetectorRef.markForCheck();\n }, 100);\n }\n });\n }\n\n ngDoCheck(): void {\n if (this._elementRef && this._elementRef.nativeElement) {\n this._widthSubject.next(this.nativeElementWidth);\n }\n }\n\n ngAfterContentInit(): void {\n this.setCrumbIcons();\n this._changeDetectorRef.markForCheck();\n }\n\n ngOnDestroy(): void {\n this._resizeSubscription.unsubscribe();\n }\n\n /*\n * Current width of the element container\n */\n get nativeElementWidth(): number {\n let element: HTMLElement = (<HTMLElement>this._elementRef.nativeElement);\n // Need to take into account border, margin and padding that might be around all the crumbs\n let style: CSSStyleDeclaration = window.getComputedStyle(element);\n let borderLeft: number = parseInt(style.borderLeft, 10);\n let borderRight: number = parseInt(style.borderRight, 10);\n let marginLeft: number = parseInt(style.marginLeft, 10);\n let marginRight: number = parseInt(style.marginRight, 10);\n let paddingLeft: number = parseInt(style.paddingLeft, 10);\n let paddingRight: number = parseInt(style.paddingRight, 10);\n\n return element.getBoundingClientRect().width - borderLeft - borderRight - marginLeft - marginRight - paddingLeft - paddingRight;\n }\n\n /**\n * The total count of individual breadcrumbs\n */\n get count(): number {\n return this._breadcrumbs ? this._breadcrumbs.length : 0;\n }\n\n /**\n * Set the crumb icon separators\n */\n private setCrumbIcons(): void {\n let breadcrumbArray: TdBreadcrumbComponent[] = this._breadcrumbs.toArray();\n if (breadcrumbArray.length > 0) {\n // don't show the icon on the last breadcrumb\n breadcrumbArray[breadcrumbArray.length - 1]._displayIcon = false;\n }\n breadcrumbArray.forEach((breadcrumb: TdBreadcrumbComponent) => {\n breadcrumb.separatorIcon = this.separatorIcon;\n });\n }\n\n private _calculateVisibility(): void {\n let crumbsArray: TdBreadcrumbComponent[] = this._breadcrumbs.toArray();\n let crumbWidthSum: number = 0;\n let hiddenCrumbs: TdBreadcrumbComponent[] = [];\n // loop through crumbs in reverse order to calculate which ones should be removed\n for (let i: number = crumbsArray.length - 1; i >= 0; i--) {\n let breadcrumb: TdBreadcrumbComponent = crumbsArray[i];\n // if crumb exceeds width, then we skip it from the sum and add it into the hiddencrumbs array\n // and hide it\n if ((crumbWidthSum + breadcrumb.width) > this.nativeElementWidth) {\n breadcrumb.displayCrumb = false;\n hiddenCrumbs.push(breadcrumb);\n } else {\n // else we show it\n breadcrumb.displayCrumb = true;\n }\n crumbWidthSum += breadcrumb.width;\n }\n this.hiddenBreadcrumbs = hiddenCrumbs;\n this._changeDetectorRef.markForCheck();\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { TdBreadcrumbsComponent } from './breadcrumbs.component';\nimport { TdBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n ],\n declarations: [\n TdBreadcrumbsComponent,\n TdBreadcrumbComponent,\n ],\n exports: [\n TdBreadcrumbsComponent,\n TdBreadcrumbComponent,\n ],\n})\nexport class CovalentBreadcrumbsModule {\n\n}\n","import { Component, Directive, Input, Output, TemplateRef, ViewChild,\n ViewContainerRef, ContentChild, OnInit } from '@angular/core';\nimport { EventEmitter } from '@angular/core';\nimport { TemplatePortalDirective, TemplatePortal } from '@angular/cdk/portal';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nimport { ICanDisable, mixinDisabled, ICanDisableRipple, mixinDisableRipple } from '@covalent/core/common';\n\nexport enum StepState {\n None = 'none',\n Required = 'required',\n Complete = 'complete',\n}\n\n@Directive({\n selector: '[td-step-label]ng-template',\n})\nexport class TdStepLabelDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Directive({\n selector: '[td-step-actions]ng-template',\n})\nexport class TdStepActionsDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\n@Directive({\n selector: '[td-step-summary]ng-template',\n})\nexport class TdStepSummaryDirective extends TemplatePortalDirective {\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\n\nexport class TdStepBase {}\n\n/* tslint:disable-next-line */\nexport const _TdStepMixinBase = mixinDisableRipple(mixinDisabled(TdStepBase));\n\n@Component({\n selector: 'td-step',\n inputs: ['disabled', 'disableRipple'],\n templateUrl: './step.component.html',\n})\nexport class TdStepComponent extends _TdStepMixinBase implements OnInit, ICanDisable, ICanDisableRipple {\n\n private _active: boolean = false;\n private _state: StepState = StepState.None;\n\n private _contentPortal: TemplatePortal<any>;\n get stepContent(): TemplatePortal<any> {\n return this._contentPortal;\n }\n\n @ViewChild(TemplateRef) _content: TemplateRef<any>;\n @ContentChild(TdStepLabelDirective) stepLabel: TdStepLabelDirective;\n @ContentChild(TdStepActionsDirective) stepActions: TdStepActionsDirective;\n @ContentChild(TdStepSummaryDirective) stepSummary: TdStepSummaryDirective;\n\n /**\n * label?: string\n * Sets label of [TdStepComponent] header.\n * Defaults to 'Step #'\n */\n @Input('label') label: string;\n\n /**\n * sublabel?: string\n * Sets sublabel of [TdStepComponent] header.\n */\n @Input('sublabel') sublabel: string;\n\n /**\n * active?: boolean\n * Toggles [TdStepComponent] between active/deactive.\n */\n @Input('active')\n set active(active: boolean) {\n this._setActive(coerceBooleanProperty(active));\n }\n get active(): boolean {\n return this._active;\n }\n\n /**\n * state?: StepState or ['none' | 'required' | 'complete']\n * Sets state of [TdStepComponent] depending on value.\n * Defaults to [StepState.None | 'none'].\n */\n @Input('state')\n set state(state: StepState) {\n switch (state) {\n case StepState.Complete:\n this._state = StepState.Complete;\n break;\n case StepState.Required:\n this._state = StepState.Required;\n break;\n default:\n this._state = StepState.None;\n break;\n }\n }\n get state(): StepState {\n return this._state;\n }\n\n /**\n * activated?: function\n * Event emitted when [TdStepComponent] is activated.\n */\n @Output('activated') onActivated: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * deactivated?: function\n * Event emitted when [TdStepComponent] is deactivated.\n */\n @Output('deactivated') onDeactivated: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(private _viewContainerRef: ViewContainerRef) {\n super();\n }\n\n ngOnInit(): void {\n this._contentPortal = new TemplatePortal(this._content, this._viewContainerRef);\n }\n\n /**\n * Toggle active state of [TdStepComponent]\n * retuns 'true' if successful, else 'false'.\n */\n toggle(): boolean {\n return this._setActive(!this._active);\n }\n\n /**\n * Opens [TdStepComponent]\n * retuns 'true' if successful, else 'false'.\n */\n open(): boolean {\n return this._setActive(true);\n }\n\n /**\n * Closes [TdStepComponent]\n * retuns 'true' if successful, else 'false'.\n */\n close(): boolean {\n return this._setActive(false);\n }\n\n /**\n * Returns 'true' if [state] equals to [StepState.Complete | 'complete'], else 'false'.\n */\n isComplete(): boolean {\n return this._state === StepState.Complete;\n }\n\n /** Method executed when the disabled value changes */\n onDisabledChange(v: boolean): void {\n if (v && this._active) {\n this._active = false;\n this._onDeactivated();\n }\n }\n\n /**\n * Method to change active state internally and emit the [onActivated] event if 'true' or [onDeactivated]\n * event if 'false'. (Blocked if [disabled] is 'true')\n * returns true if successfully changed state\n */\n private _setActive(newActive: boolean): boolean {\n if (this.disabled) {\n return false;\n }\n if (this._active !== newActive) {\n this._active = newActive;\n if (newActive) {\n this._onActivated();\n } else {\n this._onDeactivated();\n }\n return true;\n }\n return false;\n }\n\n private _onActivated(): void {\n this.onActivated.emit(undefined);\n }\n\n private _onDeactivated(): void {\n this.onDeactivated.emit(undefined);\n }\n}\n","import { Component, Input, Output } from '@angular/core';\nimport { OnDestroy, AfterContentInit } from '@angular/core';\nimport { EventEmitter, ContentChildren, QueryList } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { TdStepComponent } from './step.component';\n\nexport interface IStepChangeEvent {\n newStep: TdStepComponent;\n prevStep: TdStepComponent;\n}\n\nexport enum StepMode {\n Vertical = 'vertical',\n Horizontal = 'horizontal',\n}\n\n@Component({\n selector: 'td-steps',\n styleUrls: ['./steps.component.scss' ],\n templateUrl: './steps.component.html',\n /* tslint:disable-next-line */\n host: {\n class: 'td-steps',\n },\n})\nexport class TdStepsComponent implements OnDestroy, AfterContentInit {\n\n private _subcriptions: Subscription[];\n private _mode: StepMode = StepMode.Vertical;\n private _steps: QueryList<TdStepComponent>;\n\n @ContentChildren(TdStepComponent)\n set stepsContent(steps: QueryList<TdStepComponent>) {\n if (steps) {\n this._steps = steps;\n this._registerSteps();\n }\n }\n\n get steps(): TdStepComponent[] {\n return this._steps.toArray();\n }\n prevStep: TdStepComponent;\n\n /**\n * mode?: StepMode or [\"vertical\" | \"horizontal\"]\n * Defines if the mode of the [TdStepsComponent]. Defaults to [StepMode.Vertical | \"vertical\"]\n */\n @Input('mode')\n set mode(mode: StepMode) {\n switch (mode) {\n case StepMode.Horizontal:\n this._mode = StepMode.Horizontal;\n break;\n default:\n this._mode = StepMode.Vertical;\n }\n }\n get mode(): StepMode {\n return this._mode;\n }\n\n /**\n * stepChange?: function\n * Method to be executed when [onStepChange] event is emitted.\n * Emits an [IStepChangeEvent] implemented object.\n */\n @Output('stepChange') onStepChange: EventEmitter<IStepChangeEvent> = new EventEmitter<IStepChangeEvent>();\n\n /**\n * Executed after content is initialized, loops through any [TdStepComponent] children elements,\n * assigns them a number and subscribes as an observer to their [onActivated] event.\n */\n ngAfterContentInit(): void {\n this._registerSteps();\n }\n\n /**\n * Unsubscribes from [TdStepComponent] children elements when component is destroyed.\n */\n ngOnDestroy(): void {\n this._deregisterSteps();\n }\n\n /**\n * Returns 'true' if [mode] equals to [StepMode.Horizontal | 'horizontal'], else 'false'.\n */\n isHorizontal(): boolean {\n return this._mode === StepMode.Horizontal;\n }\n\n /**\n * Returns 'true' if [mode] equals to [StepMode.Vertical | 'vertical'], else 'false'.\n */\n isVertical(): boolean {\n return this._mode === StepMode.Vertical;\n }\n\n areStepsActive(): boolean {\n return this._steps.filter((step: TdStepComponent) => {\n return step.active;\n }).length > 0;\n }\n\n /**\n * Wraps previous and new [TdStepComponent] numbers in an object that implements [IStepChangeEvent]\n * and emits [onStepChange] event.\n */\n private _onStepSelection(step: TdStepComponent): void {\n if (this.prevStep !== step) {\n let prevStep: TdStepComponent = this.prevStep;\n this.prevStep = step;\n let event: IStepChangeEvent = {\n newStep: step,\n prevStep: prevStep,\n };\n this._deactivateAllBut(step);\n this.onStepChange.emit(event);\n }\n }\n\n /**\n * Loops through [TdStepComponent] children elements and deactivates them ignoring the one passed as an argument.\n */\n private _deactivateAllBut(activeStep: TdStepComponent): void {\n this._steps.filter((step: TdStepComponent) => step !== activeStep)\n .forEach((step: TdStepComponent) => {\n step.active = false;\n });\n }\n\n private _registerSteps(): void {\n this._subcriptions = [];\n this._steps.toArray().forEach((step: TdStepComponent) => {\n let subscription: Subscription = step.onActivated.asObservable().subscribe(() => {\n this._onStepSelection(step);\n });\n this._subcriptions.push(subscription);\n });\n }\n\n private _deregisterSteps(): void {\n if (this._subcriptions) {\n this._subcriptions.forEach((subs: Subscription) => {\n subs.unsubscribe();\n });\n this._subcriptions = undefined;\n }\n }\n}\n","import { Component, Input } from '@angular/core';\n\nimport { ICanDisable, mixinDisabled, ICanDisableRipple, mixinDisableRipple } from '@covalent/core/common';\n\nimport { StepState } from '../step.component';\n\nexport class TdStepHeaderBase {}\n\n/* tslint:disable-next-line */\nexport const _TdStepHeaderMixinBase = mixinDisableRipple(mixinDisabled(TdStepHeaderBase));\n\n@Component({\n selector: 'td-step-header',\n inputs: ['disabled', 'disableRipple'],\n styleUrls: ['./step-header.component.scss' ],\n templateUrl: './step-header.component.html',\n})\nexport class TdStepHeaderComponent extends _TdStepHeaderMixinBase implements ICanDisable, ICanDisableRipple {\n\n /**\n * Number assigned to [TdStepHeaderComponent].\n */\n @Input('number') number: number;\n\n /**\n * active?: boolean\n * Sets for active/inactive states on header.\n */\n @Input('active') active: boolean;\n\n /**\n * state?: StepState or ['none' | 'required' | 'complete']\n * Sets styles for state of header.\n * Defaults to [StepState.None | 'none'].\n */\n @Input('state') state: StepState = StepState.None;\n\n /**\n * tabIndex?: number\n * tabIndex of the step header for a11y\n */\n @Input('tabIndex') tabIndex: number;\n\n /**\n * Returns 'true' if [state] equals to [StepState.Complete | 'complete'], else 'false'.\n */\n isComplete(): boolean {\n return this.state === StepState.Complete;\n }\n\n /**\n * Returns 'true' if [state] equals to [StepState.Required | 'required'], else 'false'.\n */\n isRequired(): boolean {\n return this.state === StepState.Required;\n }\n}\n","import { Component, Input, ViewChild, ElementRef } from '@angular/core';\n\nimport { StepState } from '../step.component';\n\nimport { tdCollapseAnimation } from '@covalent/core/common';\n\n@Component({\n selector: 'td-step-body',\n styleUrls: ['./step-body.component.scss' ],\n templateUrl: './step-body.component.html',\n animations: [\n tdCollapseAnimation,\n ],\n})\nexport class TdStepBodyComponent {\n\n @ViewChild('contentRef', { read: ElementRef }) contentRef: ElementRef;\n\n get hasContent(): boolean {\n return this.contentRef &&\n (this.contentRef.nativeElement.children.length > 0 || !!this.contentRef.nativeElement.textContent.trim());\n }\n\n @ViewChild('actionsRef', { read: ElementRef }) actionsRef: ElementRef;\n\n get hasActions(): boolean {\n return this.actionsRef &&\n (this.actionsRef.nativeElement.children.length > 0 || !!this.actionsRef.nativeElement.textContent.trim());\n }\n\n @ViewChild('summaryRef', { read: ElementRef }) summaryRef: ElementRef;\n\n get hasSummary(): boolean {\n return this.summaryRef &&\n (this.summaryRef.nativeElement.children.length > 0 || !!this.summaryRef.nativeElement.textContent.trim());\n }\n\n /**\n * active?: boolean\n * Sets for active/inactive states on body.\n */\n @Input('active') active: boolean;\n\n /**\n * state?: StepState or ['none' | 'required' | 'complete']\n * Sets styles for state of body.\n * Defaults to [StepState.None | 'none'].\n */\n @Input('state') state: StepState = StepState.None;\n\n /**\n * Returns 'true' if [state] equals to [StepState.Complete | 'complete'], else 'false'.\n */\n isComplete(): boolean {\n return this.state === StepState.Complete;\n }\n}\n","import { Component, ChangeDetectionStrategy, ChangeDetectorRef, Input, ElementRef } from '@angular/core';\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nimport { ICanDisable, ICanDisableRipple } from '@covalent/core/common';\nimport { _TdStepMixinBase, StepState } from '../../step.component';\n\n@Component({\n selector: '[td-step-link],[tdStepLink]',\n styleUrls: ['./nav-step-link.component.scss'],\n templateUrl: './nav-step-link.component.html',\n inputs: ['disabled', 'disableRipple'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n /* tslint:disable-next-line */\n host: {\n '[class.td-step-link]': 'true',\n '[attr.tabindex]': 'disabled ? -1 : (tabIndex || 0)',\n '[attr.disabled]': 'disabled || null',\n '[class.mat-disabled]': 'disabled || null',\n '(click)': '_handleClick($event)',\n },\n})\nexport class TdNavStepLinkComponent extends _TdStepMixinBase implements ICanDisable, ICanDisableRipple {\n\n private _active: boolean = false;\n private _state: StepState = StepState.None;\n\n // Number to display in step header\n number: number;\n\n /**\n * state?: StepState or ['none' | 'required' | 'complete']\n * Sets state of component depending on value.\n * Defaults to [StepState.None | 'none'].\n */\n @Input('state')\n set state(state: StepState) {\n switch (state) {\n case StepState.Complete:\n this._state = StepState.Complete;\n break;\n case StepState.Required:\n this._state = StepState.Required;\n break;\n default:\n this._state = StepState.None;\n break;\n }\n }\n get state(): StepState {\n return this._state;\n }\n\n /**\n * label?: string\n * Label to display in step header\n * Defaults to empty\n */\n @Input('label') label: string;\n\n /**\n * sublabel?: string\n * Sublabel to display in step header\n * Defaults to empty\n */\n @Input('sublabel') sublabel: string;\n\n /**\n * active?: boolean\n * Toggles component between active/deactive.\n */\n @Input('active')\n set active(active: boolean) {\n this._active = coerceBooleanProperty(active);\n this._changeDetectorRef.markForCheck();\n }\n get active(): boolean {\n return this._active;\n }\n\n /**\n * tabIndex?: number\n * tabIndex for component\n */\n @Input('tabIndex') tabIndex: number;\n\n constructor(private _changeDetectorRef: ChangeDetectorRef,\n public elementRef: ElementRef) {\n super();\n }\n\n _handleClick(click: Event): void {\n if (this.disabled) {\n click.preventDefault();\n click.stopImmediatePropagation();\n }\n }\n\n}\n","import { Component, Optional, ContentChildren, ViewChild, QueryList, OnDestroy, ChangeDetectionStrategy, \n AfterContentInit, AfterContentChecked, ChangeDetectorRef, ElementRef, Renderer2 } from '@angular/core';\n\nimport { Subject, merge, of } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { RIGHT_ARROW, LEFT_ARROW } from '@angular/cdk/keycodes';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\n\nimport { TdNavStepLinkComponent } from '../nav-step-link/nav-step-link.component';\n\n/**\n * The directions that scrolling can go in when the header's tabs exceed the header width. 'After'\n * will scroll the header towards the end of the tabs list and 'before' will scroll towards the\n * beginning of the list.\n */\nexport type ScrollDirection = 'after' | 'before';\n\n@Component({\n selector: 'nav[td-steps][horizontal]',\n styleUrls: ['./nav-steps-horizontal.component.scss'],\n templateUrl: './nav-steps-horizontal.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n /* tslint:disable-next-line */\n host: {\n class: 'td-steps td-steps-horizontal',\n '[class.td-step-header-pagination-controls-enabled]': '_showPaginationControls',\n '[class.td-step-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n },\n})\nexport class TdNavStepsHorizontalComponent implements AfterContentChecked, AfterContentInit, OnDestroy {\n\n private _separators: HTMLElement[] = [];\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed: Subject<void> = new Subject<void>();\n\n private _widthSubject: Subject<number> = new Subject<number>();\n\n private _scrollDistance: number = 0;\n private _scrollDistanceChanged: boolean = false;\n\n /** Whether the controls for pagination should be displayed */\n _showPaginationControls: boolean = false;\n\n /** Whether the step list can be scrolled more towards the end. */\n _disableScrollAfter: boolean = true;\n\n /** Whether the step list can be scrolled more towards the beginning. */\n _disableScrollBefore: boolean = true;\n\n // all the sub components, which are the individual steps\n @ContentChildren(TdNavStepLinkComponent) _steps: QueryList<TdNavStepLinkComponent>;\n\n @ViewChild('stepListContainer') _stepListContainer: ElementRef;\n @ViewChild('stepList') _stepList: ElementRef;\n\n /*\n * Current width of the element container\n */\n get nativeElementWidth(): number {\n let element: HTMLElement = (<HTMLElement>this._elementRef.nativeElement);\n\n // Need to take into account border, margin and padding that might be around all the crumbs\n let style: CSSStyleDeclaration = window.getComputedStyle(element);\n let borderLeft: number = parseInt(style.borderLeft, 10);\n let borderRight: number = parseInt(style.borderRight, 10);\n let marginLeft: number = parseInt(style.marginLeft, 10);\n let marginRight: number = parseInt(style.marginRight, 10);\n let paddingLeft: number = parseInt(style.paddingLeft, 10);\n let paddingRight: number = parseInt(style.paddingRight, 10);\n\n return element.getBoundingClientRect().width - borderLeft - borderRight - marginLeft - marginRight - paddingLeft - paddingRight;\n }\n\n constructor(private _elementRef: ElementRef,\n private _viewportRuler: ViewportRuler,\n @Optional() private _dir: Directionality,\n private _renderer: Renderer2,\n private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngAfterContentInit(): void {\n merge(\n this._widthSubject.asObservable().pipe(\n distinctUntilChanged(),\n ),\n this._viewportRuler.change(150),\n this._dir ? this._dir.change : of(undefined),\n this._steps.changes,\n ).pipe(\n takeUntil(this._destroyed),\n ).subscribe(() => {\n this._configureSteps();\n this.updatePagination();\n this._changeDetectorRef.markForCheck();\n });\n this._configureSteps();\n this._changeDetectorRef.markForCheck();\n }\n\n ngAfterContentChecked(): void {\n if (this._elementRef && this._elementRef.nativeElement) {\n this._widthSubject.next(this.nativeElementWidth);\n }\n if (this._scrollDistanceChanged) {\n this._updateStepScrollPosition();\n this._scrollDistanceChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /**\n * Listen to right and left key events to move the the viewport.\n */\n _handleKeydown(event: KeyboardEvent): void {\n switch (event.keyCode) {\n case LEFT_ARROW:\n this._scrollHeader('before');\n event.preventDefault();\n break;\n case RIGHT_ARROW:\n this._scrollHeader('after');\n event.preventDefault();\n break;\n default:\n // do something\n }\n }\n\n /**\n * Updates the view whether pagination should be enabled or not.\n */\n updatePagination(): void {\n this._checkPaginationEnabled();\n this._checkScrollingControls();\n this._updateStepScrollPosition();\n }\n\n /** The layout direction of the containing app. */\n _getLayoutDirection(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n\n /** Performs the CSS transformation on the step list that will cause the list to scroll. */\n _updateStepScrollPosition(): void {\n const translateX: number = this._getLayoutDirection() === 'ltr' ? -this.scrollDistance : this.scrollDistance;\n // Move step list the amount of pixels scrolled\n this._stepList.nativeElement.style.transform = `translateX(${Math.round(translateX)}px)`;\n\n // Setting the `transform` on IE will change the scroll offset of the parent, causing the\n // position to be thrown off in some cases. We have to reset it ourselves to ensure that\n // it doesn't get thrown off.\n if (this._getLayoutDirection() === 'ltr') {\n this._stepListContainer.nativeElement.scrollLeft = 0;\n } else {\n this._stepListContainer.nativeElement.scrollLeft = this._getMaxScrollDistance();\n }\n }\n\n /** Sets the distance in pixels that the step header should be transformed in the X-axis. */\n get scrollDistance(): number { return this._scrollDistance; }\n set scrollDistance(v: number) {\n this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), v));\n\n // Mark that the scroll distance has changed so that after the view is checked, the CSS\n // transformation can move the header.\n this._scrollDistanceChanged = true;\n this._checkScrollingControls();\n }\n\n /**\n * Moves the step list in the 'before' or 'after' direction (towards the beginning of the list or\n * the end of the list, respectively).\n */\n _scrollHeader(scrollDir: ScrollDirection): void {\n // Move the scroll distance one-half the length of the step list's viewport.\n this.scrollDistance += (scrollDir === 'before' ? -1 : 1) * this._stepListContainer.nativeElement.offsetWidth / 2;\n }\n\n /**\n * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n * step list is wider than the size of the header container, then the pagination controls should\n * be shown.\n */\n _checkPaginationEnabled(): void {\n const isEnabled: boolean =\n this._stepList.nativeElement.scrollWidth > this._elementRef.nativeElement.offsetWidth;\n\n if (!isEnabled) {\n this.scrollDistance = 0;\n }\n\n if (isEnabled !== this._showPaginationControls) {\n this._changeDetectorRef.markForCheck();\n }\n\n this._showPaginationControls = isEnabled;\n }\n\n /**\n * Evaluate whether the before and after controls should be enabled or disabled.\n * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n * before button. If the header is at the end of the list (scroll distance is equal to the\n * maximum distance we can scroll), then disable the after button.\n */\n _checkScrollingControls(): void {\n // Check if the pagination arrows should be activated.\n this._disableScrollBefore = this.scrollDistance === 0;\n this._disableScrollAfter = this.scrollDistance === this._getMaxScrollDistance();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n * is equal to the difference in width between the step list container and step header container.\n */\n _getMaxScrollDistance(): number {\n return (this._stepList.nativeElement.scrollWidth - this._stepListContainer.nativeElement.offsetWidth) || 0;\n }\n\n /**\n * Set the step line separators and display numbers\n */\n private _configureSteps(): void {\n this._separators.forEach((separator: HTMLElement) => {\n this._renderer.removeChild(this._stepList.nativeElement, separator);\n });\n let stepsArray: TdNavStepLinkComponent[] = this._steps.toArray();\n // set the index number of the step so can display that number in circle\n stepsArray.forEach((step: TdNavStepLinkComponent, index: number) => {\n if (index > 0 && index < stepsArray.length) {\n let separator: any = this._renderer.createElement('div');\n this._renderer.addClass(separator, 'td-horizontal-line');\n this._separators.push(separator);\n this._renderer.insertBefore(this._stepList.nativeElement, separator, step.elementRef.nativeElement);\n }\n step.number = index + 1;\n });\n \n }\n\n}\n","import { Component, ContentChildren, ViewChild, QueryList, OnDestroy, ChangeDetectionStrategy, \n AfterContentInit, Renderer2, ChangeDetectorRef, ElementRef } from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { TdNavStepLinkComponent } from '../nav-step-link/nav-step-link.component';\n\n/**\n * The directions that scrolling can go in when the header's tabs exceed the header width. 'After'\n * will scroll the header towards the end of the tabs list and 'before' will scroll towards the\n * beginning of the list.\n */\nexport type ScrollDirection = 'after' | 'before';\n\n@Component({\n selector: 'nav[td-steps][vertical]',\n styleUrls: ['./nav-steps-vertical.component.scss'],\n templateUrl: './nav-steps-vertical.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n /* tslint:disable-next-line */\n host: {\n class: 'td-steps td-steps-vertical',\n },\n})\nexport class TdNavStepsVerticalComponent implements AfterContentInit, OnDestroy {\n\n private _separators: HTMLElement[] = [];\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed: Subject<void> = new Subject<void>();\n\n // all the sub components, which are the individual steps\n @ContentChildren(TdNavStepLinkComponent) _steps: QueryList<TdNavStepLinkComponent>;\n\n @ViewChild('stepList') _stepList: ElementRef;\n\n constructor(private _renderer: Renderer2,\n private _changeDetectorRef: ChangeDetectorRef) { }\n\n ngAfterContentInit(): void {\n this._steps.changes.pipe(\n takeUntil(this._destroyed),\n ).subscribe(() => {\n this._configureSteps();\n this._changeDetectorRef.markForCheck();\n });\n this._configureSteps();\n this._changeDetectorRef.markForCheck();\n }\n\n ngOnDestroy(): void {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /**\n * Set the step line separators and display numbers\n */\n private _configureSteps(): void {\n this._separators.forEach((separator: HTMLElement) => {\n this._renderer.removeChild(this._stepList.nativeElement, separator);\n });\n let stepsArray: TdNavStepLinkComponent[] = this._steps.toArray();\n // set the index number of the step so can display that number in circle\n stepsArray.forEach((step: TdNavStepLinkComponent, index: number) => {\n if (index > 0 && index < stepsArray.length) {\n let separator: any = this._renderer.createElement('div');\n this._renderer.addClass(separator, 'td-vertical-line-wrapper');\n let separatorChild: any = this._renderer.createElement('div');\n this._renderer.addClass(separatorChild, 'td-vertical-line');\n this._renderer.appendChild(separator, separatorChild);\n this._separators.push(separator);\n this._renderer.insertBefore(this._stepList.nativeElement, separator, step.elementRef.nativeElement);\n }\n step.number = index + 1;\n });\n \n }\n\n}\n","import { Type } from '@angular/core';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { ScrollDispatchModule } from '@angular/cdk/scrolling';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatRippleModule } from '@angular/material/core';\n\nimport { CovalentCommonModule } from '@covalent/core/common';\n\n// Steps\nimport { TdStepsComponent } from './steps.component';\nimport { TdStepHeaderComponent } from './step-header/step-header.component';\nimport { TdStepBodyComponent } from './step-body/step-body.component';\nimport { TdStepComponent, TdStepLabelDirective, TdStepActionsDirective,\n TdStepSummaryDirective } from './step.component';\n\n// Nav Steps\nimport { TdNavStepsHorizontalComponent } from './nav/nav-steps-horizontal/nav-steps-horizontal.component';\nimport { TdNavStepsVerticalComponent } from './nav/nav-steps-vertical/nav-steps-vertical.component';\nimport { TdNavStepLinkComponent } from './nav/nav-step-link/nav-step-link.component';\n\nconst TD_STEPS: Type<any>[] = [\n TdStepsComponent,\n TdStepComponent,\n TdStepHeaderComponent,\n TdStepBodyComponent,\n TdStepLabelDirective,\n TdStepActionsDirective,\n TdStepSummaryDirective,\n TdNavStepsHorizontalComponent,\n TdNavStepsVerticalComponent,\n TdNavStepLinkComponent,\n\n];\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n MatRippleModule,\n PortalModule,\n ScrollDispatchModule,\n CovalentCommonModule,\n ],\n declarations: [\n TD_STEPS,\n ],\n exports: [\n TD_STEPS,\n ],\n})\nexport class CovalentStepsModule {\n\n}\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ViewChild,\n TemplateRef,\n OnInit,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { mixinDisabled, ICanDisable } from '@covalent/core/common';\n\nexport class TdTabOptionBase {\n constructor(public _viewContainerRef: ViewContainerRef,\n public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdTabOptionMixinBase = mixinDisabled(TdTabOptionBase);\n\n@Component({\n selector: 'td-tab-option',\n templateUrl: './tab-option.component.html',\n styleUrls: ['./tab-option.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n /* tslint:disable-next-line */\n inputs: ['disabled'],\n})\nexport class TdTabOptionComponent extends _TdTabOptionMixinBase implements ICanDisable, OnInit {\n\n private _contentPortal: TemplatePortal<any>;\n get content(): TemplatePortal<any> {\n return this._contentPortal;\n }\n\n @ViewChild(TemplateRef) _content: TemplateRef<any>;\n\n /**\n * Value to which the option will be binded to.\n */\n @Input('value') value: any;\n\n constructor(_viewContainerRef: ViewContainerRef,\n _changeDetectorRef: ChangeDetectorRef) {\n super(_viewContainerRef, _changeDetectorRef);\n }\n\n ngOnInit(): void {\n this._contentPortal = new TemplatePortal(this._content, this._viewContainerRef);\n }\n\n}\n","import {\n Component,\n Input,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ContentChildren,\n QueryList,\n OnInit,\n AfterContentInit,\n forwardRef,\n Output,\n EventEmitter,\n OnDestroy,\n} from '@angular/core';\nimport {\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\n\nimport { ThemePalette } from '@angular/material/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nimport { ICanDisable,\n mixinDisabled,\n IControlValueAccessor,\n mixinControlValueAccessor,\n ICanDisableRipple,\n mixinDisableRipple,\n} from '@covalent/core/common';\n\nimport { Subscription } from 'rxjs';\n\nimport { TdTabOptionComponent } from './tab-option.component';\n\nexport class TdTabSelectBase {\n constructor(public _changeDetectorRef: ChangeDetectorRef) {}\n}\n\n/* tslint:disable-next-line */\nexport const _TdTabSelectMixinBase = mixinControlValueAccessor(mixinDisabled(mixinDisableRipple(TdTabSelectBase)));\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TdTabSelectComponent),\n multi: true,\n }],\n selector: 'td-tab-select',\n templateUrl: './tab-select.component.html',\n styleUrls: ['./tab-select.component.scss'],\n /* tslint:disable-next-line */\n inputs: ['value', 'disabled', 'disableRipple'],\n})\nexport class TdTabSelectComponent extends _TdTabSelectMixinBase\n implements IControlValueAccessor, ICanDisable, ICanDisableRipple, OnInit, AfterContentInit, OnDestroy {\n\n private _subs: Subscription[] = [];\n\n private _values: any[] = [];\n private _selectedIndex: number = 0;\n private _stretchTabs: boolean = false;\n\n get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n /**\n * Gets all tab option children\n */\n @ContentChildren(TdTabOptionComponent) readonly _tabOptions: QueryList<TdTabOptionComponent>;\n\n get tabOptions(): TdTabOptionComponent[] {\n return this._tabOptions ? this._tabOptions.toArray() : undefined;\n }\n\n /**\n * Makes the tabs stretch to fit the parent container.\n */\n @Input('stretchTabs')\n set stretchTabs(stretchTabs: boolean) {\n this._stretchTabs = coerceBooleanProperty(stretchTabs);\n }\n get stretchTabs(): boolean {\n return this._stretchTabs;\n }\n\n /**\n * Color of the tab group.\n */\n @Input('color') color: ThemePalette;\n\n /**\n * Background color of the tab group.\n */\n @Input('backgroundColor') backgroundColor: ThemePalette;\n\n /**\n * Event that emits whenever the raw value of the select changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n */\n @Output() readonly valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n constructor(_changeDetectorRef: ChangeDetectorRef) {\n super(_changeDetectorRef);\n }\n\n ngOnInit(): void {\n // subscribe to check if value changes and update the selectedIndex internally.\n this._subs.push(\n this.valueChanges.subscribe((value: any) => {\n this._setValue(value);\n }),\n );\n }\n\n ngAfterContentInit(): void {\n // subscribe to listen to any tab changes.\n this._refreshValues();\n this._subs.push(\n this._tabOptions.changes.subscribe(() => {\n this._refreshValues();\n }),\n );\n // initialize value\n Promise.resolve().then(() => {\n this._setValue(this.value);\n });\n }\n\n ngOnDestroy(): void {\n if (this._subs && this._subs.length) {\n this._subs.forEach((sub: Subscription) => {\n sub.unsubscribe();\n });\n }\n }\n\n /**\n * Method executed when user selects a different tab\n * This updates the new selectedIndex and infers what value should be mapped to.\n */\n selectedIndexChange(selectedIndex: number): void {\n this._selectedIndex = selectedIndex;\n let value: any = this._values[selectedIndex];\n this.value = value;\n this.valueChange.emit(value);\n this.onChange(value);\n }\n\n /**\n * Refresh the values array whenever the number of tabs gets updated\n */\n private _refreshValues(): void {\n this._values = this.tabOptions.map((tabOption: TdTabOptionComponent) => {\n return tabOption.value;\n });\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Try to set value depending if its part of our options\n * else set the value of the first tab.\n */\n private _setValue(value: any): void {\n let index: number = this._values.indexOf(value);\n if (index > -1) {\n this._selectedIndex = index;\n } else {\n this.value = this._values.length ? this._values[0] : undefined;\n this._selectedIndex = 0;\n }\n this._changeDetectorRef.markForCheck();\n }\n\n}\n","import { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatTabsModule } from '@angular/material/tabs';\n\nimport { TdTabSelectComponent } from './tab-select.component';\nimport { TdTabOptionComponent } from './tab-option.component';\n\n@NgModule({\n declarations: [\n TdTabSelectComponent,\n TdTabOptionComponent,\n ], // directives, components, and pipes owned by this NgModule\n imports: [\n /** Angular Modules */\n CommonModule,\n FormsModule,\n /** Material Modules */\n PortalModule,\n MatTabsModule,\n ], // modules needed to run this module\n exports: [\n TdTabSelectComponent,\n TdTabOptionComponent,\n ],\n})\nexport class CovalentTabSelectModule {}\n"],"names":["tslib_1.__extends","tslib_1.__values","query","tdRotateAnimation","tdCollapseAnimation","tdFadeInOutAnimation","mixinControlValueAccessor","mixinDisabled","mixinDisableRipple","TD_VIRTUAL_OFFSET","filter","state","style"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;IA0IE,8BAAgC,IAAS,EACrB,kBAAqC;QADzB,SAAI,GAAJ,IAAI,CAAK;QACrB,uBAAkB,GAAlB,kBAAkB,CAAmB;QAtHjD,cAAS,GAAW,EAAE,CAAC;QACvB,WAAM,GAAW,CAAC,CAAC;QACnB,UAAK,GAAW,CAAC,CAAC;QAClB,aAAQ,GAAW,CAAC,CAAC;QACrB,WAAM,GAAW,CAAC,CAAC;QACnB,iBAAY,GAAY,KAAK,CAAC;QAC9B,eAAU,GAAa,EAAE,CAAC;QAC1B,mBAAc,GAAW,CAAC,CAAC;;QAE3B,YAAO,GAAY,KAAK,CAAC;;QAEzB,cAAS,GAAY,KAAK,CAAC;;;;;QAMf,cAAS,GAAY,IAAI,CAAC;;;;;QAMxB,gBAAW,GAAW,CAAC,CAAC;;;;;;QAqF5B,aAAQ,GAAmC,IAAI,YAAY,EAAoB,CAAC;KAUrC;IAzF7D,sBACI,+CAAa;;;;QAKjB;YACE,OAAO,IAAI,CAAC,cAAc,CAAC;SAC5B;;;;;;;;;;;QARD,UACkB,aAAqB;YACrC,IAAI,CAAC,cAAc,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;YAC1D,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;;;OAAA;IASD,sBACI,0CAAQ;;;;QAQZ;YACE,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;;;;;;;;QAXD,UACa,QAAgB;YAC3B,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACf,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,eAAe,EAAE,CAAC;aACxB;YACD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;;;OAAA;IASD,sBACI,uCAAK;;;;QAMT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;;;;;;;;;QATD,UACU,KAAa;YACrB,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;;;OAAA;IASD,sBAAI,2CAAS;;;;;;;;;;QAAb;YACE,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;;;OAAA;IAMD,sBAAI,uCAAK;;;;;;;;;;QAAT;YACE,OAAO,CAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,UAAI,IAAI,CAAC,MAAQ,CAAC;SAC7D;;;OAAA;IAMD,sBAAI,sCAAI;;;;;;;;;;QAAR;YACE,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;;;OAAA;IAMD,sBAAI,yCAAO;;;;;;;;;;QAAX;YACE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;SAChD;;;OAAA;IASD,sBAAI,uCAAK;;;;QAAT;YACE,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC;aAChC;YACD,OAAO,KAAK,CAAC;SACd;;;OAAA;;;;IAKD,uCAAQ;;;IAAR;QACE,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;;;;;;;;IAMD,6CAAc;;;;;;IAAd,UAAe,IAAY;QACzB,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE;YACrD,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;KACd;;;;;;;;;;IAMD,wCAAS;;;;;IAAT;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;KAC/B;;;;;;;;;;IAMD,uCAAQ;;;;;IAAR;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KAC5C;;;;;;;;;;IAMD,uCAAQ;;;;;IAAR;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KAC5C;;;;;;;;;;IAMD,uCAAQ;;;;;IAAR;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC1C;;;;IAED,wCAAS;;;IAAT;QACE,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;KACxB;;;;IAED,wCAAS;;;IAAT;QACE,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC;KACnC;;;;IAEO,6CAAc;;;IAAtB;;YACM,GAAG,IAAY,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAC/C,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;KACrD;;;;;;;;;;IAMO,kDAAmB;;;;;IAA3B;;QAEE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACxB;;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;;;YAEG,mBAAmB,GAAW,IAAI,CAAC,aAAa;QACpD,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE;YACrC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC;SACpC;;QAED,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;;;YAEjB,eAAe,GAAW,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC;QACjE,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,mBAAmB,EAAE,CAAC,EAAE,EAAE;;;YAGpD,IAAI,CAAC,mBAAmB,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;iBAC7E,mBAAmB,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE;gBACpF,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,mBAAmB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;;;aAIrE;iBAAM,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,mBAAmB,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,eAAe,IAAI,CAAC,EAAE;gBACrH,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,eAAe,IAAI,CAAC,CAAC;;aAExD;iBAAM,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,eAAe,KAAK,CAAC,EAAE;gBAC7C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;aAE5B;iBAAM;gBACL,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;aACpC;SACF;KACF;;;;IAEO,8CAAe;;;IAAvB;QACE,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,mBAAmB,EAAE,CAAC;;YACvB,KAAK,GAAqB;YAC5B,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,KAAK,EAAE,IAAI,CAAC,MAAM;SACnB;QACD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;;gBA7PF,SAAS,SAAC;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,QAAQ,EAAE,eAAe;oBACzB,i3CAA0C;;iBAE3C;;;;gBAhBQ,GAAG,uBAwIG,QAAQ;gBA1I4C,iBAAiB;;;4BAsCjF,KAAK,SAAC,WAAW;8BAMjB,KAAK,SAAC,aAAa;gCAMnB,KAAK,SAAC,eAAe;2BAcrB,KAAK,SAAC,UAAU;wBAiBhB,KAAK,SAAC,OAAO;2BAgDb,MAAM,SAAC,QAAQ;;IA2IlB,2BAAC;CA/PD;;;;;;ACbA;IASA;KAeC;;gBAfA,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,eAAe;qBAChB;oBACD,YAAY,EAAE;wBACZ,oBAAoB;qBACrB;oBACD,OAAO,EAAE;wBACP,oBAAoB;qBACrB;iBACF;;IAGD,2BAAC;CAfD;;;;;;;;;;;;;;;;;ICLiDA,+CAAuB;IAEtE,qCAAY,WAA6B,EAC7B,gBAAkC;eAC5C,kBAAM,WAAW,EAAE,gBAAgB,CAAC;KACrC;;gBANF,SAAS,SAAC,EAAC,QAAQ,EAAE,sBAAsB,EAAC;;;;gBAHzB,WAAW;gBAAE,gBAAgB;;IAWjD,kCAAC;CAAA,CAPgD,uBAAuB;;;;;;ACJxE;IAUM,iBAAiB,GAAW,CAAC;;IAC7B,eAAe,GAAW,GAAG;;IAoFjC,2CAAoB,WAAuB,EACvB,aAA2B,EAC3B,SAAoB,EACpB,kBAAqC;QAHrC,gBAAW,GAAX,WAAW,CAAY;QACvB,kBAAa,GAAb,aAAa,CAAc;QAC3B,cAAS,GAAT,SAAS,CAAW;QACpB,uBAAkB,GAAlB,kBAAkB,CAAmB;QAxEjD,UAAK,GAAmB,EAAE,CAAC;QAC3B,YAAO,GAAiB,IAAI,OAAO,EAAE,CAAC;QACtC,iBAAY,GAAY,KAAK,CAAC;QAE9B,iBAAY,GAAW,CAAC,CAAC;QACzB,gBAAW,GAAW,CAAC,CAAC;QACxB,0BAAqB,GAAW,CAAC,CAAC;QAGlC,aAAQ,GAAW,CAAC,CAAC;QACrB,WAAM,GAAW,CAAC,CAAC;;;;;;QA8BjB,WAAM,GAA8C,IAAI,YAAY,EAA+B,CAAC;;;;;;QA0E5F,YAAO,GAA0B,UAAC,KAAa,EAAE,IAAS;YAC1E,OAAO,IAAI,CAAC;SACb,CAAA;KA5C4D;IArD7D,sBACI,mDAAI;;;;QAOR;YACE,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;;;;;;;;;;;QAVD,UACS,IAAW;YAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;aAC9B;YACD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;;;OAAA;IAKD,sBAAI,0DAAW;;;;QAAf;YACE,OAAO,IAAI,CAAC,YAAY,CAAC;SAC1B;;;OAAA;IAaD,sBAAI,wDAAS;;;;QAAb;YACE,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;gBACzC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;aAC7E;YACD,OAAO,CAAC,CAAC;SACV;;;OAAA;IAED,sBAAI,0DAAW;;;;QAAf;YACE,OAAO,IAAI,CAAC,YAAY,CAAC;SAC1B;;;OAAA;IAED,sBAAI,sDAAO;;;;QAAX;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;;;OAAA;IAED,sBAAI,oDAAK;;;;QAAT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;OAAA;IAED,sBAAI,8DAAe;;;;QAAnB;YACE,OAAO,IAAI,CAAC,gBAAgB,CAAC;SAC9B;;;OAAA;;;;IAOD,2DAAe;;;IAAf;QAAA,iBAeC;QAdC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YAC3C,KAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAC/B,YAAY,CAAC,eAAe,CAAC,CAC9B,CAAC,SAAS,CAAC;YACV,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,KAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC1C,SAAS,EAAE,KAAI,CAAC,KAAK;aACtB,CAAC,CAAC;SACJ,CAAC,CAAC,CAAC;KACL;;;;IAED,8DAAkB;;;IAAlB;;YACM,aAAa,GAAW,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM;QACzF,IAAI,IAAI,CAAC,WAAW,KAAK,aAAa,EAAE;YACtC,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;YACjC,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;aAC9B;SACF;KACF;;;;IAED,uDAAW;;;IAAX;QACE,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,GAAiB;gBACnC,GAAG,CAAC,WAAW,EAAE,CAAC;aACnB,CAAC,CAAC;SACJ;KACF;;;;;IAYD,wDAAY;;;;IADZ,UACa,KAAY;;YACnB,OAAO,uBAA8B,KAAK,CAAC,MAAM,GAAC;QACtD,IAAI,OAAO,EAAE;;gBACP,cAAc,GAAW,OAAO,CAAC,SAAS;YAC9C,IAAI,IAAI,CAAC,qBAAqB,KAAK,cAAc,EAAE;gBACjD,IAAI,CAAC,qBAAqB,GAAG,cAAc,CAAC;gBAC5C,IAAI,IAAI,CAAC,YAAY,EAAE;oBACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;iBAC9B;aACF;YACD,IAAI,IAAI,CAAC,YAAY,EAAE;;gBAErB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,KAAK,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;oBACpF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;iBACrB;aACF;SACF;KACF;;;;;;;;;;IAMD,mDAAO;;;;;IAAP;QACE,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;;;;;;;;;IAKD,oDAAQ;;;;;IAAR,UAAS,GAAW;QAClB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QAChE,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;;;;;IAKD,yDAAa;;;;IAAb;QACE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;;;;;IAKD,uDAAW;;;;IAAX;QACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;IAEO,iEAAqB;;;IAA7B;QAAA,iBAkCC;QAjCC,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;;gBACnD,OAAO,GAAW,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,iBAAiB;YACnG,IAAI,CAAC,QAAQ,GAAG,OAAO,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;;gBACtC,KAAK,GAAW,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,iBAAiB,GAAG,CAAC,CAAC;;gBACzF,KAAK,GAAW,KAAK,GAAG,IAAI,CAAC,OAAO;YACxC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBAChD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;aAC3B;iBAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAC3B,KAAK,GAAG,iBAAiB,CAAC;aAC3B;YACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;aAAM;YACL,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;;YAEG,MAAM,GAAW,CAAC;QACtB,IAAI,IAAI,CAAC,qBAAqB,IAAI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE;YACrE,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;SACxC;QAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,aAAa,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,CAAC;QACzH,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/D;;;QAID,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;YACrB,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CAAC;KACJ;;gBApNF,SAAS,SAAC;oBACT,QAAQ,EAAE,6BAA6B;oBAEvC,q/BAAwD;oBACxD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;iBAChD;;;;gBAtB6E,UAAU;gBAE/E,YAAY;gBADZ,SAAS;gBADgB,iBAAiB;;;uBA4ChD,KAAK,SAAC,MAAM;yBAqBZ,MAAM;wBAEN,YAAY,SAAC,YAAY;+BAEzB,YAAY,SAAC,2BAA2B;0BAsExC,KAAK,SAAC,SAAS;+BAIf,YAAY,SAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;IAuFpC,wCAAC;CArND;;;;;;AClBA;IAMM,iBAAiB,GAAgB;IACrC,2BAA2B;IAC3B,iCAAiC;CAClC;AAED;IAAA;KAaC;;gBAbA,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,YAAY;qBACb;oBACD,YAAY,EAAE;wBACZ,iBAAiB;qBAClB;oBACD,OAAO,EAAE;wBACP,iBAAiB;qBAClB;iBACF;;IAGD,kCAAC;CAbD;;;;;;;;;;;;;;;;ACXA;;IAIE,KAAM,KAAK;IACX,QAAS,QAAQ;IACjB,QAAS,QAAQ;;;;IAIjB,QAAS,QAAQ;IACjB,OAAQ,OAAO;IACf,QAAS,QAAQ;;;AAGnB,IAAa,0BAA0B,GAAW,EAAE;AAEpD;IAAA;QAQU,mBAAc,GAAqB,CAAC,CAAC;QAGrC,WAAM,GAAW,0BAA0B,CAAC;;;;;QAW3C,UAAK,GAAkC,MAAM,CAAC;KAoGxD;IA7FC,sBACI,mDAAS;;;;QAGb;YACE,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;;;;;;;;;;;;;QAND,UACc,SAAuC;YACnD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;SAC7B;;;OAAA;IAUD,sBACI,mDAAS;;;;QAGb;YACE,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;;;;;;;;;;;;;QAND,UACc,SAAuC;YACnD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;SAC7B;;;OAAA;IASD,sBACI,uDAAa;;;;;;;;;;;QADjB,UACkB,aAA+B;YAC/C,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;SACrC;;;OAAA;IAMD,sBACI,+CAAK;;;;;;;;;;;QADT,UACU,KAAa;YACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;;;OAAA;IAED,sBACI,kDAAQ;;;;QADZ;YAEE,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SAC1C;;;OAAA;IAMD,sBAAI,iDAAO;;;;;;;;;;QAAX;YACE,OAAO,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC;SACrC;;;OAAA;IAMD,sBAAI,8DAAoB;;;;;;;;;;QAAxB;YACE,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE;gBACrC,OAAU,IAAI,CAAC,MAAM,MAAG,CAAC;aAC1B;YACD,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;SACvC;;;OAAA;IAKD,sBAAI,8CAAI;;;;;;;;QAAR;YACE,OAAO,IAAI,CAAC,cAAc,KAAK,IAAI,KAAK,CAAC,KAAK,oBAAM,IAAI,CAAC,cAAc,GAAC,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;SACtG;;;OAAA;;;;;;;;IAKD,yDAAkB;;;;IAAlB;QACE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,4BAA4B,CAAC,KAAK,GAAG,4BAA4B,CAAC,MAAM,CAAC;SAChH;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,4BAA4B,CAAC,GAAG,GAAG,4BAA4B,CAAC,MAAM,CAAC;SAC9G;KACF;;;;;;;;IAKO,kDAAW;;;;IAAnB;QACE,IAAI,IAAI,CAAC,OAAO,EAAE;;gBACZ,cAAc,GAAgB,IAAI,CAAC,OAAO,CAAC,aAAa;YAC5D,OAAO,cAAc,KAAK,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;SACtG;QACD,OAAO,KAAK,CAAC;KACd;;gBAxHF,SAAS,SAAC;oBACT,QAAQ,EAAE,uBAAuB;oBAEjC,6oBAAkD;oBAClD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;iBAChD;;;0BAWE,SAAS,SAAC,SAAS;wBAMnB,KAAK;4BAOL,KAAK;4BAaL,KAAK;gCAYL,KAAK;wBASL,KAAK;2BAKL,WAAW,SAAC,8BAA8B;;IAsD7C,mCAAC;CA1HD;;;;;;AChBA;IAMM,gBAAgB,GAAgB;IACpC,4BAA4B;CAC7B;AAED;IAAA;KAaC;;gBAbA,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,YAAY;qBACb;oBACD,YAAY,EAAE;wBACZ,gBAAgB;qBACjB;oBACD,OAAO,EAAE;wBACP,gBAAgB;qBACjB;iBACF;;IAGD,kCAAC;CAbD;;;;;;;;;;;;;;;;ACXA;IASE,6BAAwC,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;KAAI;;;;;;;;;IAM3D,oCAAM;;;;;IADN,UACO,KAAY;QACjB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,QAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;YAC9E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;SACnD;KACF;;gBAfF,SAAS,SAAC;oBACT,QAAQ,EAAE,cAAc;iBACzB;;;;gBAJQ,OAAO,uBAOD,QAAQ,YAAI,IAAI;;;yBAK5B,YAAY,SAAC,MAAM,EAAE,CAAC,QAAQ,CAAC;;IAMlC,0BAAC;CAhBD;;;;;;;ICeE,+BAAsC,SAAsB,EAAU,GAAe;QAA/C,cAAS,GAAT,SAAS,CAAa;QAAU,QAAG,GAAH,GAAG,CAAY;QADrF,uBAAkB,GAAY,KAAK,CAAC;KACqD;;;;;IAMlF,+CAAe;;;;IAJtB,UAIuB,KAAY;QACjC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC7E;;;;IAEM,gDAAgB;;;IAAvB;QACE,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1G;;;;IAEM,+CAAe;;;IAAtB;;QACiB,IAAA,sCAAa;;YACtB,kBAAkB,GAAW;YACjC,iBAAiB,EAAE,cAAM,OAAA,aAAa,CAAC,iBAAiB,EAAE,GAAA;;YAC1D,uBAAuB,EAAE,cAAM,OAAA,aAAa,CAAC,uBAAuB,EAAE,GAAA;;YACtE,oBAAoB,EAAE,cAAM,OAAA,aAAa,CAAC,oBAAoB,EAAE,GAAA;;YAChE,mBAAmB,EAAE,cAAM,OAAA,aAAa,CAAC,mBAAmB,EAAE,GAAA;SAC/D;;YAED,KAAsB,IAAA,KAAAC,SAAA,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA,gBAAA,4BAAE;gBAAlD,IAAM,OAAO,WAAA;gBAChB,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE;oBAC1B,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;iBAC/B;aACF;;;;;;;;;KACF;;;;IAEM,8CAAc;;;IAArB;;QACQ,IAAA,SAAmE,EAAjE,wBAAS,EAAS,oCAA+C;;YACnE,iBAAiB,GAAW;YAChC,cAAc,EAAE,cAAM,OAAA,SAAS,CAAC,cAAc,EAAE,GAAA;;YAChD,oBAAoB,EAAE,cAAM,OAAA,SAAS,CAAC,oBAAoB,EAAE,GAAA;;YAC5D,mBAAmB,EAAE,cAAM,OAAA,SAAS,CAAC,mBAAmB,EAAE,GAAA;;YAC1D,gBAAgB,EAAE,cAAM,OAAA,SAAS,CAAC,gBAAgB,EAAE,GAAA;SACrD;;YAED,KAAsB,IAAA,KAAAA,SAAA,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA,gBAAA,4BAAE;gBAAjD,IAAM,OAAO,WAAA;gBAChB,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE,KAAK,aAAa,EAAE;oBACxE,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;iBAC9B;aACF;;;;;;;;;KACF;;;;IAEO,qDAAqB;;;IAA7B;;QACU,IAAA,0BAAS;;YACX,sBAAsB,GAAW;YACrC,iBAAiB,EAAE,cAAM,OAAA,SAAS,CAAC,iBAAiB,GAAA;;YACpD,uBAAuB,EAAE,cAAM,OAAA,SAAS,CAAC,uBAAuB,GAAA;;YAChE,oBAAoB,EAAE,cAAM,OAAA,SAAS,CAAC,oBAAoB,GAAA;;YAC1D,mBAAmB,EAAE,cAAM,OAAA,SAAS,CAAC,mBAAmB,GAAA;SACzD;;YACD,KAAoB,IAAA,KAAAA,SAAA,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA,gBAAA,4BAAE;gBAApD,IAAM,KAAK,WAAA;gBACd,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;oBACpB,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;iBACzB;aACF;;;;;;;;;KACF;;gBAjEF,SAAS,SAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,cAAc;iBACzB;;;;gDAGc,MAAM,SAAC,QAAQ;gBAnBI,UAAU;;;kCAqBzC,YAAY,SAAC,2BAA2B,EAAE,CAAC,QAAQ,CAAC,cACpD,YAAY,SAAC,iCAAiC,EAAE,CAAC,QAAQ,CAAC,cAC1D,YAAY,SAAC,8BAA8B,EAAE,CAAC,QAAQ,CAAC,cACvD,YAAY,SAAC,6BAA6B,EAAE,CAAC,QAAQ,CAAC;;IAuDzD,4BAAC;CAlED;;;;;;ACbA;IAEA;KAiEC;;;;;;IA7DC,iCAAS;;;;;IAAT,UAAU,IAAS,EAAE,SAAe;;QAElC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;;YAClB,GAAG,GAAS,IAAI,IAAI,CAAC,SAAS,CAAC;;QAGnC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB,OAAO,cAAc,CAAC;SACvB;;;;YAIG,SAAS,GAAW,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE;;YACrE,IAAI,GAAW,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC;QAElE,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,OAAO,cAAc,CAAC;SACvB;QACD,IAAI,IAAI,GAAG,EAAE,EAAE;YACb,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC;SAC1C;;QAED,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,OAAO,cAAc,CAAC;SACvB;QACD,IAAI,IAAI,GAAG,EAAE,EAAE;YACb,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC;SAC1C;;QAED,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,OAAO,YAAY,CAAC;SACrB;QACD,IAAI,IAAI,GAAG,EAAE,EAAE;YACb,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;SACxC;;QAED,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,OAAO,WAAW,CAAC;SACpB;QACD,IAAI,IAAI,GAAG,EAAE,EAAE;YACb,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;SACvC;;QAED,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,OAAO,aAAa,CAAC;SACtB;QACD,IAAI,IAAI,GAAG,EAAE,EAAE;YACb,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;SACzC;;QAED,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,OAAO,YAAY,CAAC;SACrB;aAAM;YACL,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;SACxC;KACF;;gBAhEF,IAAI,SAAC;oBACJ,IAAI,EAAE,SAAS;iBAChB;;IA+DD,oBAAC;CAjED;;;;;;ACFA;IAEA;KA+CC;;;;;;IA1CC,wCAAS;;;;;IAAT,UAAU,KAAU,EAAE,GAAS;;YACzB,SAAS,GAAS,IAAI,IAAI,CAAC,KAAK,CAAC;;YACjC,OAAa;QAEjB,IAAI,GAAG,KAAK,SAAS,EAAE;YACrB,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;SACzB;aAAM;YACL,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;SACtB;QAED,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;YAC9C,OAAO,cAAc,CAAC;SACvB;;YAEG,IAAI,GAAW,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC;;YAE3E,IAAI,GAAW,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACpD,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;;YAElC,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAChD,IAAI,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;;YAE9B,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC;;YAEnB,OAAO,GAAW,IAAI;;YAEtB,GAAG,GAAW,IAAI;;YAElB,aAAa,GAAW,EAAE;QAE9B,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE;YACxB,aAAa,GAAG,SAAS,CAAC;SAC3B;aAAM,IAAI,IAAI,GAAG,CAAC,EAAE;YACnB,aAAa,GAAG,UAAU,CAAE;SAC7B;QAED,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,aAAa,GAAG,aAAa;YACtD,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,MAAM,CAAC,GAAG,KAAK,GAAG,GAAG;YAChE,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,OAAO,GAAG,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,GAAG,GAAG;YACpE,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,OAAO,GAAG,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;KACjE;;gBA9CF,IAAI,SAAC;oBACJ,IAAI,EAAE,gBAAgB;iBACvB;;IA6CD,2BAAC;CA/CD;;;;;;ACFA;IAEA;KAiEC;;;;;;IA7DC,mCAAS;;;;;IAAT,UAAU,IAAS,EAAE,SAAe;;QAElC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;;YAClB,GAAG,GAAS,IAAI,IAAI,CAAC,SAAS,CAAC;;QAGnC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB,OAAO,cAAc,CAAC;SACvB;;;;YAIG,SAAS,GAAW,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE;;YACrE,IAAI,GAAW,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,IAAI,IAAI,CAAC;QAElE,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,OAAO,aAAa,CAAC;SACtB;QACD,IAAI,IAAI,GAAG,EAAE,EAAE;YACb,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;SAC9C;;QAED,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,OAAO,aAAa,CAAC;SACtB;QACD,IAAI,IAAI,GAAG,EAAE,EAAE;YACb,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;SAC9C;;QAED,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,OAAO,WAAW,CAAC;SACpB;QACD,IAAI,IAAI,GAAG,EAAE,EAAE;YACb,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;SAC5C;;QAED,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,OAAO,UAAU,CAAC;SACnB;QACD,IAAI,IAAI,GAAG,EAAE,EAAE;YACb,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;SAC3C;;QAED,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,OAAO,YAAY,CAAC;SACrB;QACD,IAAI,IAAI,GAAG,EAAE,EAAE;YACb,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;SAC7C;;QAED,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,OAAO,WAAW,CAAC;SACpB;aAAM;YACL,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;SAC5C;KACF;;gBAhEF,IAAI,SAAC;oBACJ,IAAI,EAAE,WAAW;iBAClB;;IA+DD,sBAAC;CAjED;;;;;;ACFA;IAEA;KAuBC;;;;;;;;;;IAhBC,+BAAS;;;;;;;IAAT,UAAU,KAAU,EAAE,SAAqB;QAArB,0BAAA,EAAA,aAAqB;QACzC,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,OAAO,KAAK,CAAC;SACd;aAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE;;YAErC,OAAO,gBAAgB,CAAC;SACzB;;YACG,CAAC,GAAW,IAAI;;YAChB,KAAK,GAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;;YAC/E,CAAC,GAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;QAEzD,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,OAAO,gBAAgB,CAAC;SACzB;QACD,OAAO,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;KACjF;;gBAtBF,IAAI,SAAC;oBACJ,IAAI,EAAE,OAAO;iBACd;;IAqBD,kBAAC;CAvBD;;;;;;ACFA;IAEA;KAuBC;;;;;;;;;;IAhBC,sCAAS;;;;;;;IAAT,UAAU,KAAU,EAAE,SAAqB;QAArB,0BAAA,EAAA,aAAqB;QACzC,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,OAAO,KAAK,CAAC;SACd;aAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE;;YAErC,OAAO,gBAAgB,CAAC;SACzB;;YACG,CAAC,GAAW,IAAI;;YAChB,KAAK,GAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;;YACvE,CAAC,GAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;QAEzD,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,OAAO,gBAAgB,CAAC;SACzB;QACD,OAAO,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;KACjF;;gBAtBF,IAAI,SAAC;oBACJ,IAAI,EAAE,cAAc;iBACrB;;IAqBD,yBAAC;CAvBD;;;;;;ACFA;IAWE,sBAAuC,OAAsB;QAAtB,wBAAA,EAAA,cAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;QAC3D,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACnD;;;;;;;;IAGD,gCAAS;;;;;;IAAT,UAAU,MAAW,EAAE,SAAqB;QAArB,0BAAA,EAAA,aAAqB;QAC1C,IAAI,MAAM,KAAK,CAAC,EAAE;YAChB,OAAO,GAAG,CAAC;SACZ;aAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE;;YAEtC,OAAO,MAAM,CAAC;SACf;aAAM,IAAI,MAAM,GAAG,CAAC,EAAE;YACrB,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;SAC/D;;YACG,CAAC,GAAW,IAAI;;YAChB,KAAK,GAAa,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;;YAC/C,CAAC,GAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;YACtD,IAAI,GAAW,KAAK,CAAC,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;KACzH;;gBA3BF,IAAI,SAAC;oBACJ,IAAI,EAAE,QAAQ;iBACf;;;;6CAMc,MAAM,SAAC,SAAS;;IAoB/B,mBAAC;CA5BD;;;;;;ACHA;IAEA;KAuBC;;;;;;IAlBC,kCAAS;;;;;IAAT,UAAU,IAAS,EAAE,MAAc;QACjC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO,EAAE,CAAC;SACX;;;YAGG,SAAS,GAAW,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC;QAE9C,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE;YACxB,IAAI,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAClC,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;aAC9B;YAED,SAAS,IAAI,GAAG,CAAC;SAClB;QAED,OAAO,SAAS,CAAC;KAClB;;gBAtBF,IAAI,SAAC;oBACJ,IAAI,EAAE,UAAU;iBACjB;;IAqBD,qBAAC;CAvBD;;;;;;ACFA;IAQE,2BAAoB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;QACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CACtB,MAAM,CAAC,UAAC,CAAM,IAAK,OAAA,CAAC,YAAY,gBAAgB,GAAA,CAAC,EACjD,QAAQ,EAAE,CACX,CAAC,SAAS,CAAC,UAAC,CAAQ;YACnB,iBAAiB,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;SAC3D,CAAC,CAAC;KACJ;;;;;;;;;;;;IAMD,4CAAgB;;;;;;;IAAhB;QACE,OAAO,iBAAiB,CAAC,cAAc,CAAC;KACzC;IAhBY,gCAAc,GAAW,GAAG,CAAC;;gBAF3C,UAAU;;;;gBAJF,MAAM;;IAuBf,wBAAC;CAnBD;;;;;;;ICEA;QAGU,WAAM,GAAa;YACzB,cAAc;YACd,eAAe;YACf,aAAa;YACb,eAAe;YACf,iBAAiB;YACjB,wBAAwB;YACxB,aAAa;YACb,gBAAgB;YAChB,KAAK;YACL,WAAW;YACX,SAAS;YACT,YAAY;YACZ,oBAAoB;YACpB,mBAAmB;YACnB,eAAe;YACf,QAAQ;YACR,OAAO;YACP,WAAW;YACX,WAAW;YACX,UAAU;YACV,OAAO;YACP,SAAS;YACT,cAAc;YACd,MAAM;YACN,SAAS;YACT,YAAY;YACZ,iBAAiB;YACjB,wBAAwB;YACxB,eAAe;YACf,eAAe;YACf,cAAc;YACd,YAAY;YACZ,YAAY;YACZ,gBAAgB;YAChB,iBAAiB;YACjB,mBAAmB;YACnB,qBAAqB;YACrB,sBAAsB;YACtB,iBAAiB;YACjB,aAAa;YACb,cAAc;YACd,YAAY;YACZ,YAAY;YACZ,WAAW;YACX,UAAU;YACV,WAAW;YACX,QAAQ;YACR,eAAe;YACf,uBAAuB;YACvB,cAAc;YACd,aAAa;YACb,iBAAiB;YACjB,UAAU;YACV,OAAO;YACP,WAAW;YACX,iBAAiB;YACjB,qBAAqB;YACrB,oBAAoB;YACpB,qBAAqB;YACrB,eAAe;YACf,aAAa;YACb,UAAU;YACV,SAAS;YACT,MAAM;YACN,UAAU;YACV,iBAAiB;YACjB,YAAY;YACZ,eAAe;YACf,cAAc;YACd,cAAc;YACd,mBAAmB;YACnB,cAAc;YACd,aAAa;YACb,cAAc;YACd,cAAc;YACd,cAAc;YACd,YAAY;YACZ,iBAAiB;YACjB,cAAc;YACd,cAAc;YACd,cAAc;YACd,cAAc;YACd,cAAc;YACd,cAAc;YACd,cAAc;YACd,iBAAiB;YACjB,iBAAiB;YACjB,gBAAgB;YAChB,mBAAmB;YACnB,cAAc;YACd,OAAO;YACP,YAAY;YACZ,OAAO;YACP,UAAU;YACV,QAAQ;YACR,MAAM;YACN,MAAM;YACN,UAAU;YACV,WAAW;YACX,YAAY;YACZ,aAAa;YACb,eAAe;YACf,YAAY;YACZ,QAAQ;YACR,YAAY;YACZ,cAAc;YACd,aAAa;YACb,aAAa;YACb,QAAQ;YACR,MAAM;YACN,gBAAgB;YAChB,qBAAqB;YACrB,mBAAmB;YACnB,MAAM;YACN,OAAO;YACP,WAAW;YACX,yBAAyB;YACzB,cAAc;YACd,cAAc;YACd,eAAe;YACf,OAAO;YACP,OAAO;YACP,WAAW;YACX,OAAO;YACP,gBAAgB;YAChB,OAAO;YACP,cAAc;YACd,YAAY;YACZ,gBAAgB;YAChB,WAAW;YACX,aAAa;YACb,cAAc;YACd,aAAa;YACb,sBAAsB;YACtB,YAAY;YACZ,UAAU;YACV,SAAS;YACT,SAAS;YACT,UAAU;YACV,qBAAqB;YACrB,eAAe;YACf,UAAU;YACV,cAAc;YACd,aAAa;YACb,eAAe;YACf,eAAe;YACf,yBAAyB;YACzB,QAAQ;YACR,aAAa;YACb,MAAM;YACN,WAAW;YACX,UAAU;YACV,UAAU;YACV,UAAU;YACV,UAAU;YACV,WAAW;YACX,gBAAgB;YAChB,eAAe;YACf,eAAe;YACf,aAAa;YACb,WAAW;YACX,YAAY;YACZ,QAAQ;YACR,QAAQ;YACR,aAAa;YACb,aAAa;YACb,iBAAiB;YACjB,SAAS;YACT,iBAAiB;YACjB,gBAAgB;YAChB,YAAY;YACZ,SAAS;YACT,YAAY;YACZ,SAAS;YACT,YAAY;YACZ,iBAAiB;YACjB,iBAAiB;YACjB,gBAAgB;YAChB,gBAAgB;YAChB,oBAAoB;YACpB,gBAAgB;YAChB,mBAAmB;YACnB,oBAAoB;YACpB,iBAAiB;YACjB,WAAW;YACX,KAAK;YACL,gBAAgB;YAChB,oBAAoB;YACpB,MAAM;YACN,QAAQ;YACR,MAAM;YACN,UAAU;YACV,QAAQ;YACR,WAAW;YACX,KAAK;YACL,MAAM;YACN,OAAO;YACP,OAAO;YACP,WAAW;YACX,OAAO;YACP,eAAe;YACf,OAAO;YACP,iBAAiB;YACjB,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,aAAa;YACb,aAAa;YACb,aAAa;YACb,UAAU;YACV,SAAS;YACT,UAAU;YACV,gBAAgB;YAChB,gBAAgB;YAChB,iBAAiB;YACjB,iBAAiB;YACjB,eAAe;YACf,WAAW;YACX,MAAM;YACN,cAAc;YACd,aAAa;YACb,UAAU;YACV,iBAAiB;YACjB,UAAU;YACV,eAAe;YACf,aAAa;YACb,QAAQ;YACR,UAAU;YACV,UAAU;YACV,UAAU;YACV,UAAU;YACV,UAAU;YACV,UAAU;YACV,UAAU;YACV,UAAU;YACV,UAAU;YACV,eAAe;YACf,gBAAgB;YAChB,qBAAqB;YACrB,cAAc;YACd,eAAe;YACf,YAAY;YACZ,aAAa;YACb,aAAa;YACb,mBAAmB;YACnB,gBAAgB;YAChB,cAAc;YACd,cAAc;YACd,MAAM;YACN,OAAO;YACP,YAAY;YACZ,WAAW;YACX,UAAU;YACV,QAAQ;YACR,aAAa;YACb,gBAAgB;YAChB,MAAM;YACN,cAAc;YACd,eAAe;YACf,QAAQ;YACR,aAAa;YACb,eAAe;YACf,gBAAgB;YAChB,eAAe;YACf,qBAAqB;YACrB,sBAAsB;YACtB,mBAAmB;YACnB,oBAAoB;YACpB,aAAa;YACb,cAAc;YACd,mBAAmB;YACnB,oBAAoB;YACpB,mBAAmB;YACnB,wBAAwB;YACxB,wBAAwB;YACxB,eAAe;YACf,qBAAqB;YACrB,sBAAsB;YACtB,sBAAsB;YACtB,cAAc;YACd,cAAc;YACd,aAAa;YACb,sBAAsB;YACtB,6BAA6B;YAC7B,6BAA6B;YAC7B,mBAAmB;YACnB,OAAO;YACP,SAAS;YACT,YAAY;YACZ,YAAY;YACZ,WAAW;YACX,YAAY;YACZ,iBAAiB;YACjB,WAAW;YACX,SAAS;YACT,OAAO;YACP,SAAS;YACT,SAAS;YACT,KAAK;YACL,WAAW;YACX,eAAe;YACf,SAAS;YACT,OAAO;YACP,UAAU;YACV,OAAO;YACP,YAAY;YACZ,UAAU;YACV,SAAS;YACT,OAAO;YACP,WAAW;YACX,YAAY;YACZ,IAAI;YACJ,SAAS;YACT,QAAQ;YACR,YAAY;YACZ,UAAU;YACV,SAAS;YACT,aAAa;YACb,SAAS;YACT,SAAS;YACT,MAAM;YACN,cAAc;YACd,cAAc;YACd,eAAe;YACf,SAAS;YACT,MAAM;YACN,OAAO;YACP,iBAAiB;YACjB,gBAAgB;YAChB,MAAM;YACN,OAAO;YACP,OAAO;YACP,oBAAoB;YACpB,eAAe;YACf,OAAO;YACP,yBAAyB;YACzB,MAAM;YACN,cAAc;YACd,OAAO;YACP,cAAc;YACd,gBAAgB;YAChB,mBAAmB;YACnB,iBAAiB;YACjB,mBAAmB;YACnB,aAAa;YACb,cAAc;YACd,eAAe;YACf,mBAAmB;YACnB,KAAK;YACL,UAAU;YACV,qBAAqB;YACrB,qBAAqB;YACrB,sBAAsB;YACtB,mBAAmB;YACnB,oBAAoB;YACpB,mBAAmB;YACnB,eAAe;YACf,iBAAiB;YACjB,cAAc;YACd,gBAAgB;YAChB,OAAO;YACP,eAAe;YACf,WAAW;YACX,UAAU;YACV,QAAQ;YACR,mBAAmB;YACnB,YAAY;YACZ,gBAAgB;YAChB,QAAQ;YACR,QAAQ;YACR,cAAc;YACd,UAAU;YACV,aAAa;YACb,MAAM;YACN,aAAa;YACb,eAAe;YACf,eAAe;YACf,MAAM;YACN,MAAM;YACN,WAAW;YACX,SAAS;YACT,gBAAgB;YAChB,eAAe;YACf,WAAW;YACX,WAAW;YACX,YAAY;YACZ,gBAAgB;YAChB,yBAAyB;YACzB,cAAc;YACd,aAAa;YACb,eAAe;YACf,mBAAmB;YACnB,qBAAqB;YACrB,gBAAgB;YAChB,aAAa;YACb,uBAAuB;YACvB,eAAe;YACf,YAAY;YACZ,cAAc;YACd,aAAa;YACb,eAAe;YACf,gBAAgB;YAChB,aAAa;YACb,aAAa;YACb,YAAY;YACZ,mBAAmB;YACnB,iBAAiB;YACjB,WAAW;YACX,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,mBAAmB;YACnB,cAAc;YACd,aAAa;YACb,oBAAoB;YACpB,MAAM;YACN,WAAW;YACX,cAAc;YACd,OAAO;YACP,SAAS;YACT,SAAS;YACT,SAAS;YACT,SAAS;YACT,WAAW;YACX,WAAW;YACX,MAAM;YACN,OAAO;YACP,SAAS;YACT,MAAM;YACN,KAAK;YACL,YAAY;YACZ,oBAAoB;YACpB,QAAQ;YACR,MAAM;YACN,YAAY;YACZ,SAAS;YACT,KAAK;YACL,UAAU;YACV,SAAS;YACT,KAAK;YACL,cAAc;YACd,WAAW;YACX,WAAW;YACX,mBAAmB;YACnB,MAAM;YACN,UAAU;YACV,MAAM;YACN,YAAY;YACZ,WAAW;YACX,OAAO;YACP,OAAO;YACP,gBAAgB;YAChB,YAAY;YACZ,gBAAgB;YAChB,kBAAkB;YAClB,kBAAkB;YAClB,aAAa;YACb,QAAQ;YACR,eAAe;YACf,iBAAiB;YACjB,eAAe;YACf,YAAY;YACZ,cAAc;YACd,gBAAgB;YAChB,cAAc;YACd,cAAc;YACd,KAAK;YACL,QAAQ;YACR,gBAAgB;YAChB,UAAU;YACV,eAAe;YACf,sBAAsB;YACtB,oBAAoB;YACpB,mBAAmB;YACnB,sBAAsB;YACtB,aAAa;YACb,gBAAgB;YAChB,iBAAiB;YACjB,aAAa;YACb,WAAW;YACX,OAAO;YACP,UAAU;YACV,SAAS;YACT,UAAU;YACV,mBAAmB;YACnB,qBAAqB;YACrB,mBAAmB;YACnB,qBAAqB;YACrB,YAAY;YACZ,OAAO;YACP,qBAAqB;YACrB,sBAAsB;YACtB,SAAS;YACT,QAAQ;YACR,gBAAgB;YAChB,iBAAiB;YACjB,uBAAuB;YACvB,mBAAmB;YACnB,yBAAyB;YACzB,eAAe;YACf,YAAY;YACZ,gBAAgB;YAChB,gBAAgB;YAChB,QAAQ;YACR,YAAY;YACZ,gBAAgB;YAChB,YAAY;YACZ,gBAAgB;YAChB,OAAO;YACP,eAAe;YACf,yBAAyB;YACzB,iBAAiB;YACjB,eAAe;YACf,cAAc;YACd,cAAc;YACd,cAAc;YACd,cAAc;YACd,WAAW;YACX,iBAAiB;YACjB,gBAAgB;YAChB,eAAe;YACf,gBAAgB;YAChB,iBAAiB;YACjB,OAAO;YACP,aAAa;YACb,cAAc;YACd,eAAe;YACf,0BAA0B;YAC1B,yBAAyB;YACzB,yBAAyB;YACzB,gBAAgB;YAChB,oBAAoB;YACpB,UAAU;YACV,OAAO;YACP,YAAY;YACZ,oBAAoB;YACpB,qBAAqB;YACrB,eAAe;YACf,mBAAmB;YACnB,cAAc;YACd,UAAU;YACV,MAAM;YACN,SAAS;YACT,mBAAmB;YACnB,UAAU;YACV,OAAO;YACP,aAAa;YACb,oBAAoB;YACpB,gBAAgB;YAChB,OAAO;YACP,QAAQ;YACR,SAAS;YACT,eAAe;YACf,iBAAiB;YACjB,OAAO;YACP,aAAa;YACb,OAAO;YACP,sBAAsB;YACtB,wBAAwB;YACxB,aAAa;YACb,SAAS;YACT,eAAe;YACf,QAAQ;YACR,MAAM;YACN,SAAS;YACT,QAAQ;YACR,eAAe;YACf,uBAAuB;YACvB,gBAAgB;YAChB,SAAS;YACT,QAAQ;YACR,YAAY;YACZ,QAAQ;YACR,WAAW;YACX,WAAW;YACX,UAAU;YACV,OAAO;YACP,WAAW;YACX,QAAQ;YACR,gBAAgB;YAChB,iBAAiB;YACjB,SAAS;YACT,aAAa;YACb,MAAM;YACN,uBAAuB;YACvB,aAAa;YACb,cAAc;YACd,QAAQ;YACR,WAAW;YACX,MAAM;YACN,SAAS;YACT,UAAU;YACV,QAAQ;YACR,uBAAuB;YACvB,sBAAsB;YACtB,sBAAsB;YACtB,iBAAiB;YACjB,SAAS;YACT,YAAY;YACZ,QAAQ;YACR,UAAU;YACV,YAAY;YACZ,MAAM;YACN,UAAU;YACV,uBAAuB;YACvB,yBAAyB;YACzB,oBAAoB;YACpB,qBAAqB;YACrB,eAAe;YACf,mBAAmB;YACnB,wBAAwB;YACxB,0BAA0B;YAC1B,0BAA0B;YAC1B,qBAAqB;YACrB,uBAAuB;YACvB,mBAAmB;YACnB,gBAAgB;YAChB,gBAAgB;YAChB,iBAAiB;YACjB,0BAA0B;YAC1B,gBAAgB;YAChB,OAAO;YACP,MAAM;YACN,UAAU;YACV,iBAAiB;YACjB,eAAe;YACf,SAAS;YACT,uBAAuB;YACvB,6CAA6C;YAC7C,wBAAwB;YACxB,sBAAsB;YACtB,qBAAqB;YACrB,mBAAmB;YACnB,wBAAwB;YACxB,iBAAiB;YACjB,UAAU;YACV,gBAAgB;YAChB,WAAW;YACX,eAAe;YACf,WAAW;YACX,YAAY;YACZ,KAAK;YACL,YAAY;YACZ,QAAQ;YACR,MAAM;YACN,eAAe;YACf,WAAW;YACX,SAAS;YACT,eAAe;YACf,eAAe;YACf,eAAe;YACf,YAAY;YACZ,MAAM;YACN,aAAa;YACb,WAAW;YACX,OAAO;YACP,wBAAwB;YACxB,uBAAuB;YACvB,wBAAwB;YACxB,uBAAuB;YACvB,MAAM;YACN,SAAS;YACT,OAAO;YACP,sBAAsB;YACtB,YAAY;YACZ,iBAAiB;YACjB,OAAO;YACP,SAAS;YACT,WAAW;YACX,oBAAoB;YACpB,gBAAgB;YAChB,YAAY;YACZ,YAAY;YACZ,WAAW;YACX,sBAAsB;YACtB,eAAe;YACf,cAAc;YACd,MAAM;YACN,eAAe;YACf,cAAc;YACd,eAAe;YACf,mBAAmB;YACnB,KAAK;YACL,gBAAgB;YAChB,QAAQ;YACR,gBAAgB;YAChB,YAAY;YACZ,WAAW;YACX,cAAc;YACd,SAAS;YACT,aAAa;YACb,SAAS;YACT,SAAS;YACT,UAAU;YACV,YAAY;YACZ,UAAU;YACV,gBAAgB;YAChB,eAAe;YACf,WAAW;YACX,OAAO;YACP,UAAU;YACV,SAAS;YACT,WAAW;YACX,KAAK;YACL,OAAO;YACP,MAAM;YACN,UAAU;YACV,MAAM;YACN,eAAe;YACf,SAAS;YACT,WAAW;YACX,WAAW;YACX,eAAe;YACf,eAAe;YACf,aAAa;YACb,MAAM;YACN,WAAW;YACX,eAAe;YACf,IAAI;YACJ,MAAM;YACN,aAAa;YACb,aAAa;YACb,KAAK;YACL,eAAe;YACf,uBAAuB;YACvB,uBAAuB;YACvB,oBAAoB;YACpB,WAAW;YACX,eAAe;YACf,UAAU;YACV,cAAc;YACd,aAAa;YACb,YAAY;YACZ,eAAe;YACf,aAAa;YACb,YAAY;YACZ,cAAc;YACd,UAAU;YACV,eAAe;YACf,WAAW;YACX,aAAa;YACb,YAAY;YACZ,aAAa;YACb,WAAW;YACX,UAAU;YACV,YAAY;YACZ,gBAAgB;YAChB,YAAY;YACZ,WAAW;YACX,aAAa;YACb,aAAa;YACb,YAAY;YACZ,WAAW;YACX,SAAS;YACT,UAAU;YACV,WAAW;YACX,SAAS;YACT,OAAO;YACP,SAAS;YACT,WAAW;YACX,iBAAiB;YACjB,eAAe;YACf,UAAU;YACV,IAAI;YACJ,KAAK;YACL,UAAU;YACV,SAAS;YACT,MAAM;YACN,WAAW;YACX,gBAAgB;YAChB,MAAM;YACN,WAAW;YACX,sBAAsB;YACtB,SAAS;YACT,UAAU;SACX,CAAC;KAWH;IATC,sBAAI,8BAAK;;;;QAAT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;OAAA;;;;;IAED,4BAAM;;;;IAAN,UAAOC,QAAa;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAC,EAAU;YAClC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAACA,QAAK,GAAGA,QAAK,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACxE,CAAC,CAAC;KACJ;;gBArxBF,UAAU;;IAsxBX,kBAAC;CAtxBD;;;;;;ACNA;IAWM,aAAa,GAAgB,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;;;IAGzE,aAAa,GAAgB,EAAE;;IAa/B,QAAQ,GAAgB;IAC5B,aAAa;IACb,oBAAoB;IACpB,eAAe;IACf,WAAW;IACX,kBAAkB;IAClB,YAAY;IACZ,cAAc;CACf;;IASD;KAMoC;;gBANnC,QAAQ,SAAC;oBACR,OAAO,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;oBACpC,YAAY,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,aAAa,CAAC;oBACtD,OAAO,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,CAAC;oBAC5E,SAAS,EAAE,CAAC,iBAAiB,EAAE,WAAW,CAAC;iBAC5C;;IACkC,8BAAC;CANpC;;;;;;AC7CA;;;;;;;;;;;;;;;AA2BA,IAAaC,mBAAiB,GAA6B,OAAO,CAAC,UAAU,EAAE;IAC7E,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;QACf,SAAS,EAAE,+BAA+B;KAC3C,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,EAAC,CAAC;IACnC,KAAK,CAAC,GAAG,EAAG,KAAK,CAAC;QAChB,SAAS,EAAE,6BAA6B;KACzC,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAC,CAAC;IACnC,UAAU,CAAC,SAAS,EAAE;QACpB,KAAK,CAAC;YACJ,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC/C,OAAO,CAAC,2CAA2C,CAAC;SACrD,CAAC;KACH,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAC,CAAC;CAC9D,CAAC;;;;;;ACxCF;;;;;;;;;;;;;;AAsBA,IAAaC,qBAAmB,GAA6B,OAAO,CAAC,YAAY,EAAE;IACjF,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;QACf,MAAM,EAAE,GAAG;QACX,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAC;IACH,KAAK,CAAC,GAAG,EAAG,KAAK,CAAC;QAChB,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,UAAU;KACrB,CAAC,CAAC;IACH,UAAU,CAAC,QAAQ,EAAE;QACnB,KAAK,CAAC;YACJ,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,UAAU;SACnB,CAAC;QACF,KAAK,CAAC;YACJ,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC/C,OAAO,CAAC,2CAA2C,EAAE,KAAK,CAAC;gBACzD,MAAM,EAAE,GAAG;gBACX,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC;SACJ,CAAC;KACH,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAC,CAAC;IAC7D,UAAU,CAAC,QAAQ,EAAE;QACnB,KAAK,CAAC;YACJ,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,QAAQ;SACnB,CAAC;QACF,KAAK,CAAC;YACJ,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC/C,OAAO,CAAC,2CAA2C,EAAE,KAAK,CAAC;gBACzD,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;SACJ,CAAC;KACH,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAC,CAAC;CAC/D,CAAC;;;;;;ACzDF;;;;;;;;;;;;;;AAsBA,IAAaC,sBAAoB,GAA6B,OAAO,CAAC,aAAa,EAAE;IACjF,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;QACf,OAAO,EAAE,GAAG;QACZ,UAAU,EAAE,QAAQ;KACrB,CAAC,CAAC;IACH,KAAK,CAAC,GAAG,EAAG,KAAK,CAAC;QAChB,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,UAAU;KACvB,CAAC,CAAC;IACH,UAAU,CAAC,QAAQ,EAAE;QACnB,KAAK,CAAC;YACJ,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC/C,OAAO,CAAC,+CAA+C,CAAC;SACzD,CAAC;KACH,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAC,CAAC;IACjE,UAAU,CAAC,QAAQ,EAAE;QACnB,KAAK,CAAC;YACJ,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC/C,OAAO,CAAC,gDAAgD,CAAC;SAC5D,CAAC;KACH,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,EAAC,CAAC;CACpE,CAAC;;;;;;AC1CF;;;;;;;;;;;;;AAgBA,IAAa,iBAAiB,GAA6B,OAAO,CAAC,UAAU,EAAE;IAC7E,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;QACf,SAAS,EAAE,sBAAsB;KAClC,CAAC,CAAC;IACH,KAAK,CAAC,GAAG,EAAG,KAAK,CAAC;QAChB,SAAS,EAAE,sBAAsB;KAClC,CAAC,CAAC;IACH,UAAU,CAAC,SAAS,EAAE;QACpB,KAAK,CAAC;YACJ,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC/C,OAAO,CAAC,2CAA2C,EACnD,SAAS,CAAC;gBACR,KAAK,CAAC,EAAC,uBAAuB,EAAE,0CAA0C,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC;gBAC1H,KAAK,CAAC,EAAC,uBAAuB,EAAE,0CAA0C,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,EAAE,GAAG,EAAC,CAAC;gBAC5H,KAAK,CAAC,EAAC,uBAAuB,EAAE,0CAA0C,EAAE,SAAS,EAAE,0BAA0B,EAAE,MAAM,EAAE,GAAG,EAAC,CAAC;gBAChI,KAAK,CAAC,EAAC,uBAAuB,EAAE,0CAA0C,EAAE,SAAS,EAAE,0BAA0B,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;gBACjI,KAAK,CAAC,EAAC,uBAAuB,EAAE,0CAA0C,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;gBAC7H,KAAK,CAAC,EAAC,uBAAuB,EAAE,0CAA0C,EAAE,SAAS,EAAE,0BAA0B,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC;gBAC/H,KAAK,CAAC,EAAC,uBAAuB,EAAE,0CAA0C,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,EAAE,GAAG,EAAC,CAAC;gBAC5H,KAAK,CAAC,EAAC,SAAS,EAAE,yBAAyB,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC;gBACzD,KAAK,CAAC,EAAC,uBAAuB,EAAE,0CAA0C,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,EAAE,GAAG,EAAC,CAAC;aAC7H,CAAC,CAAC;SACJ,CAAC;KACH,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAC,CAAC;CAC/D,CAAC;;;;;;ACxCF;;;;;;;;;;;;;AAgBA,IAAa,gBAAgB,GAA6B,OAAO,CAAC,SAAS,EAAE;IAC3E,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;QACf,OAAO,EAAE,CAAC;KACX,CAAC,CAAC;IACH,KAAK,CAAC,GAAG,EAAG,KAAK,CAAC;QAChB,OAAO,EAAE,CAAC;KACX,CAAC,CAAC;IACH,UAAU,CAAC,SAAS,EAAE;QACpB,KAAK,CAAC;YACJ,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC/C,OAAO,CAAC,2CAA2C,EACnD,SAAS,CAAC;gBACR,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC;gBAC9B,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;gBACjC,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAC,CAAC;gBAChC,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;gBACjC,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAC,CAAC;aACjC,CAAC,CAAC;SACJ,CAAC;KACH,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAC,CAAC;CAC/D,CAAC;;;;;;ACpCF;;;;;;;;;;;;;AAgBA,IAAa,oBAAoB,GAA6B,OAAO,CAAC,aAAa,EAAE;IACnF,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;QACf,SAAS,EAAE,eAAe;KAC3B,CAAC,CAAC;IACH,KAAK,CAAC,GAAG,EAAG,KAAK,CAAC;QAChB,SAAS,EAAE,eAAe;KAC3B,CAAC,CAAC;IACH,UAAU,CAAC,SAAS,EAAE;QACpB,KAAK,CAAC;YACJ,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC/C,OAAO,CAAC,2CAA2C,EACnD,SAAS,CAAC;gBACR,KAAK,CAAC,EAAC,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC;gBAC9C,KAAK,CAAC,EAAC,SAAS,EAAE,iCAAiC,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;gBACpE,KAAK,CAAC,EAAC,SAAS,EAAE,+BAA+B,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;gBAClE,KAAK,CAAC,EAAC,SAAS,EAAE,iCAAiC,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;gBACpE,KAAK,CAAC,EAAC,SAAS,EAAE,+BAA+B,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;gBAClE,KAAK,CAAC,EAAC,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;aAClD,CAAC,CAAC;SACJ,CAAC;KACH,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAC,CAAC;CAC/D,CAAC;;;;;;ACrCF;;;;;;;;;;;;;AAgBA,IAAa,gBAAgB,GAA6B,OAAO,CAAC,SAAS,EAAE;IAC3E,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;QACf,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;IACH,KAAK,CAAC,GAAG,EAAG,KAAK,CAAC;QAChB,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;IACH,UAAU,CAAC,SAAS,EAAE;QACpB,KAAK,CAAC;YACJ,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC/C,OAAO,CAAC,2CAA2C,EACnD,SAAS,CAAC;gBACR,KAAK,CAAC,EAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAC,CAAC;gBACrC,KAAK,CAAC,EAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;gBACzC,KAAK,CAAC,EAAC,SAAS,EAAE,iCAAiC,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;gBACpE,KAAK,CAAC,EAAC,SAAS,EAAE,+BAA+B,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;gBAClE,KAAK,CAAC,EAAC,SAAS,EAAE,mCAAmC,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;gBACtE,KAAK,CAAC,EAAC,SAAS,EAAE,mCAAmC,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;gBACtE,KAAK,CAAC,EAAC,SAAS,EAAE,uCAAuC,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;gBAC1E,KAAK,CAAC,EAAC,SAAS,EAAE,uCAAuC,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;gBAC1E,KAAK,CAAC,EAAC,SAAS,EAAE,2CAA2C,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;aAC/E,CAAC,CAAC;SACJ,CAAC;KACH,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAC,CAAC;CAC/D,CAAC;;;;;;ACxCF;;;;;;;;;;;;;AAgBA,IAAa,gBAAgB,GAA6B,OAAO,CAAC,SAAS,EAAE;IAC3E,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;QACf,SAAS,EAAE,kBAAkB;KAC9B,CAAC,CAAC;IACH,KAAK,CAAC,GAAG,EAAG,KAAK,CAAC;QAChB,SAAS,EAAE,kBAAkB;KAC9B,CAAC,CAAC;IACH,UAAU,CAAC,SAAS,EAAE;QACpB,KAAK,CAAC;YACJ,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC/C,OAAO,CAAC,2CAA2C,EACnD,SAAS,CAAC;gBACN,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBACnD,KAAK,CAAC,EAAE,SAAS,EAAE,2BAA2B,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;gBAC9D,KAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;aACtD,CAAC,CACH;SACF,CAAC;KACH,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAC,CAAC;CAC/D,CAAC;;;;;;;IC7BI,IAAI,GAAQ;;CAEjB;;;;;;;;AAcD,SAAgBC,2BAAyB,CACxB,IAAO,EAAE,YAAkB;IAC1C;QAAqBN,2BAAI;QAKvB;YAAY,cAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,yBAAc;;YAA1B,wCACW,IAAI,WAGd;YARO,YAAM,GAAQ,YAAY,YAAY,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,GAAG,YAAY,CAAC;YAmCrG,cAAQ,GAAG,UAAC,CAAM,IAAK,OAAA,IAAI,GAAA,CAAC;YAC5B,eAAS,GAAG,cAAM,OAAA,IAAI,GAAA,CAAC;YA9BrB,KAAI,CAAC,oBAAoB,GAAG,IAAI,OAAO,EAAO,CAAC;YAC/C,KAAI,CAAC,YAAY,GAAG,KAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;;SAC9D;QAED,sBAAI,0BAAK;;;;YAQT;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC;aACpB;;;;;YAVD,UAAU,CAAM;gBACd,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;oBACrB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;oBAChB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACjB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;oBACvC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACnC;aACF;;;WAAA;;;;;QAKD,4BAAU;;;;QAAV,UAAW,KAAU;YACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;;;;;QAED,kCAAgB;;;;QAAhB,UAAiB,EAAO;YACtB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACpB;;;;;QAED,mCAAiB;;;;QAAjB,UAAkB,EAAO;YACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACrB;QAKH,cAAC;KAvCM,CAAc,IAAI,GAuCvB;CACH;;;;;;;;;;;;ACtDD,SAAgBO,eAAa,CAA4B,IAAO;IAC9D;QAAqBP,2BAAI;QAGvB;YAAY,cAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,yBAAc;;YAA1B,wCACW,IAAI,WACd;YAJO,eAAS,GAAY,KAAK,CAAC;;SAIlC;QAED,sBAAI,6BAAQ;;;;YAAZ;gBACE,OAAO,IAAI,CAAC,SAAS,CAAC;aACvB;;;;;YACD,UAAa,KAAc;;oBACrB,QAAQ,GAAY,qBAAqB,CAAC,KAAK,CAAC;gBACpD,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;oBAC/B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;oBAC1B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACvC;aACF;;;WAPA;;;;;QASD,kCAAgB;;;;QAAhB,UAAiB,CAAU;;SAE1B;QACH,cAAC;KArBM,CAAc,IAAI,GAqBvB;CACH;;;;;;;;;;;;ACvBD,SAAgBQ,oBAAkB,CAA4B,IAAO;IACnE;QAAqBR,2BAAI;QAGvB;YAAY,cAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,yBAAc;;YAA1B,wCACW,IAAI,WACd;YAJO,oBAAc,GAAY,KAAK,CAAC;;SAIvC;QAED,sBAAI,kCAAa;;;;YAAjB;gBACE,OAAO,IAAI,CAAC,cAAc,CAAC;aAC5B;;;;;YACD,UAAkB,KAAc;;oBAC1B,QAAQ,GAAY,qBAAqB,CAAC,KAAK,CAAC;gBACpD,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;oBACpC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;oBAC/B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;iBACjD;aACF;;;WAPA;;;;;QASD,uCAAqB;;;;QAArB,UAAsB,CAAU;;SAE/B;QACH,cAAC;KArBM,CAAc,IAAI,GAqBvB;CACH;;;;;;AClCD;IAEA;KAiCC;;;;;IAhCQ,sBAAG;;;;IAAV,UAAW,QAAa;;YAClB,IAAI,GAAgB,UAAC,CAAkB;YACzC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;gBAC7D,OAAO,SAAS,CAAC;aAClB;;gBACG,CAAC,GAAW,CAAC,CAAC,KAAK;YACvB,OAAO,CAAC,GAAG,QAAQ;gBACjB,EAAE,GAAG,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,EAAC,EAAE;gBAC7C,SAAS,CAAC;SACb;QACD,OAAO,IAAI,CAAC;KACb;;;;;IAEM,sBAAG;;;;IAAV,UAAW,QAAa;;YAClB,IAAI,GAAgB,UAAC,CAAkB;YACzC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;gBAC7D,OAAO,SAAS,CAAC;aAClB;;gBACG,CAAC,GAAW,CAAC,CAAC,KAAK;YACvB,OAAO,CAAC,GAAG,QAAQ;gBACjB,EAAE,GAAG,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,EAAC,EAAE;gBAC7C,SAAS,CAAC;SACb;QACD,OAAO,IAAI,CAAC;KACb;;;;;IAEM,iCAAc;;;;IAArB,UAAsB,CAAkB;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YACzB,EAAE,QAAQ,EAAE,IAAI,EAAE;YAClB,SAAS,CAAC;KACf;IAEH,yBAAC;CAAA;;;;;;;;;;;;;;;;ACnCD;IASE,qCAAmB,aAA+B;QAA/B,kBAAa,GAAb,aAAa,CAAkB;KAAK;;gBAJxD,SAAS,SAAC;oBACT,QAAQ,EAAE,sBAAsB;iBACjC;;;;gBAP2E,gBAAgB;;IAU5F,kCAAC;CALD,IAKC;;IAyGC,4BAAoB,SAAoB,EACpB,kBAAqC,EACrC,WAAuB;QAFvB,cAAS,GAAT,SAAS,CAAW;QACpB,uBAAkB,GAAlB,kBAAkB,CAAmB;QACrC,gBAAW,GAAX,WAAW,CAAY;QA9FnC,YAAO,GAAY,IAAI,CAAC;QACxB,YAAO,GAAY,KAAK,CAAC;QACzB,eAAU,GAAY,KAAK,CAAC;QAC5B,iBAAY,GAAY,KAAK,CAAC;;;;;;;QAyCvB,SAAI,GAAW,cAAc,CAAC;QAmD3C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;KACvE;IArFD,sBACI,kDAAkB;;;;;;;;QADtB;YAEE,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;SAChD;;;OAAA;IAKD,sBACI,sCAAM;;;;;;;;QADV;YAEE,OAAO,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;SAC1C;;;OAAA;IA8BD,sBACI,qCAAK;;;;QAaT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;;;;;;;;;;;;;QAhBD,UACU,KAAa;YACrB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YACjF,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;YAC1F,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;YACzF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM,EAAE;gBACjE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;aACzE;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;gBACjF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;aACjF;YACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;;;OAAA;IAWD,sBACI,sCAAM;;;;QAWV;YACE,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;;;;;;;;;;;;;;;QAdD,UACW,MAAe;YACxB,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,IAAI,EAAE,CAAC;iBACb;qBAAM;oBACL,IAAI,CAAC,KAAK,EAAE,CAAC;iBACd;aACF;iBAAM;gBACL,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;aACvB;SACF;;;OAAA;;;;;;;;;;IAgBD,kDAAqB;;;;;IADrB;QAEE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;;;;;IAKD,4CAAe;;;;IAAf;QAAA,iBAOC;QANC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;YAC9B,IAAI,KAAI,CAAC,OAAO,EAAE;gBAChB,KAAI,CAAC,OAAO,EAAE,CAAC;aAChB;YACD,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC1B,CAAC,CAAC;KACJ;;;;;;;;;;IAMD,iCAAI;;;;;IAAJ;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;KACF;;;;;;;;;;IAMD,kCAAK;;;;;IAAL;QACE,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;KACF;;;;;;;;IAKD,mCAAM;;;;IAAN;QACE,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;aAAM;YACL,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;KACF;;;;;;;;IAKO,iDAAoB;;;;IAA5B;QACE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;;;;;IAKO,oCAAO;;;;IAAf;QACE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;;;;;IAKO,oCAAO;;;;IAAf;QACE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;gBAhMF,SAAS,SAAC;oBACT,QAAQ,EAAE,YAAY;oBACtB,+bAAuC;oBAEvC,UAAU,EAAE;wBACV,mBAAmB;qBACpB;;iBACF;;;;gBAnBqC,SAAS;gBACX,iBAAiB;gBADJ,UAAU;;;gCA4BxD,SAAS,SAAC,2BAA2B;4BACrC,SAAS,SAAC,WAAW;qCAKrB,WAAW,SAAC,aAAa;yBAQzB,WAAW,SAAC,eAAe;wBAU3B,KAAK,SAAC,OAAO;2BAOb,KAAK,SAAC,UAAU;uBAQhB,KAAK,SAAC,MAAM;wBAQZ,KAAK,SAAC,OAAO;yBAwBb,KAAK,SAAC,QAAQ;wCA0Bd,YAAY,SAAC,kBAAkB;;IAgFlC,yBAAC;CAjMD;;;;;;ACXA;IAOM,UAAU,GAAgB;IAC9B,kBAAkB;IAClB,2BAA2B;CAC5B;AAED;IAAA;KAcC;;gBAdA,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;qBACd;oBACD,YAAY,EAAE;wBACZ,UAAU;qBACX;oBACD,OAAO,EAAE;wBACP,UAAU;qBACX;iBACF;;IAGD,4BAAC;CAdD;;;;;;;;;;;;;;;;;ICUqCA,mCAAuB;IAC1D,yBAAY,WAA6B,EAAE,gBAAkC;eAC3E,kBAAM,WAAW,EAAE,gBAAgB,CAAC;KACrC;;gBANF,SAAS,SAAC;oBACT,QAAQ,EAAE,sBAAsB;iBACjC;;;;gBArB0C,WAAW;gBAAE,gBAAgB;;IA0BxE,sBAAC;CAAA,CAJoC,uBAAuB,GAI3D;;IAKkDA,iDAAuB;IACxE,uCAAY,WAA6B,EAAE,gBAAkC;eAC3E,kBAAM,WAAW,EAAE,gBAAgB,CAAC;KACrC;;gBANF,SAAS,SAAC;oBACT,QAAQ,EAAE,qCAAqC;iBAChD;;;;gBA9B0C,WAAW;gBAAE,gBAAgB;;IAmCxE,oCAAC;CAAA,CAJkD,uBAAuB,GAIzE;;IAGC,qBAAmB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;KAAI;IAC9D,kBAAC;CAAA,IAAA;;;AAGD,IAAa,iBAAiB,GAAG,yBAAyB,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;AAE1F;IAYsCA,oCAAiB;IA0OrD,0BAAoB,WAAuB,EACvB,SAAoB,EACU,SAAc,EACpD,kBAAqC;QAHjD,YAIE,kBAAM,kBAAkB,CAAC,SAE1B;QANmB,iBAAW,GAAX,WAAW,CAAY;QACvB,eAAS,GAAT,SAAS,CAAW;QACU,eAAS,GAAT,SAAS,CAAK;QA1OxD,uBAAiB,GAAiB,YAAY,CAAC,KAAK,CAAC;QACrD,4BAAsB,GAAiB,YAAY,CAAC,KAAK,CAAC;QAC1D,kBAAY,GAAY,KAAK,CAAC;QAG9B,aAAO,GAAW,CAAC,CAAC;QACpB,cAAQ,GAAY,KAAK,CAAC;QAC1B,mBAAa,GAAY,KAAK,CAAC;QAC/B,YAAM,GAAkC,SAAS,CAAC;QAClD,oBAAc,GAAuB,OAAO,CAAC;QAC7C,mBAAa,GAAY,IAAI,CAAC;QAC9B,kBAAY,GAAY,IAAI,CAAC;QAC7B,cAAQ,GAAY,KAAK,CAAC;QAC1B,eAAS,GAAY,KAAK,CAAC;QAC3B,eAAS,GAAW,CAAC,CAAC;QACtB,uBAAiB,GAAW,GAAG,CAAC;QAExC,oBAAc,GAAY,KAAK,CAAC;QAChC,6BAAuB,GAAY,KAAK,CAAC;;;;QAsBzC,kBAAY,GAAgB,IAAI,WAAW,EAAE,CAAC;;;;;QAkI3B,cAAQ,GAAW,GAAG,CAAC;;;;;;QAwB3B,WAAK,GAAsB,IAAI,YAAY,EAAO,CAAC;;;;;;QAOhD,cAAQ,GAAsB,IAAI,YAAY,EAAO,CAAC;;;;;;QAOjD,mBAAa,GAAyB,IAAI,YAAY,EAAU,CAAC;;;;;;QAOnE,iBAAW,GAAsB,IAAI,YAAY,EAAO,CAAC;;;;;;QAO1D,gBAAU,GAAsB,IAAI,YAAY,EAAO,CAAC;;;;;;QAuBtD,iBAAW,GAAkC,UAAC,EAAO,EAAE,EAAO;YAClF,OAAO,EAAE,KAAK,EAAE,CAAC;SAClB,CAAA;QAVC,KAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,KAAI,CAAC,MAAM,CAAC,CAAC;;KAC/E;IA7MD,sBAAI,qCAAO;;;;;;;;QAAX;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;;;OAAA;IAWD,sBACI,mCAAK;;;;QAKT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;;;;;;;;;QARD,UACU,KAAY;YACpB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;;;OAAA;IAUD,sBACI,qCAAO;;;;QAGX;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;;;;;;;;;;;;;QAND,UACY,OAAgB;YAC1B,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;SAChD;;;OAAA;IAUD,sBACI,2CAAa;;;;QAGjB;YACE,OAAO,IAAI,CAAC,cAAc,CAAC;SAC5B;;;;;;;;;;;;;QAND,UACkB,aAAiC;YACjD,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;SACrC;;;OAAA;IASD,sBACI,0CAAY;;;;QAGhB;YACE,OAAO,IAAI,CAAC,aAAa,CAAC;SAC3B;;;;;;;;;;;QAND,UACiB,YAAqB;YACpC,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;SAC1D;;;OAAA;IAUD,sBACI,sCAAQ;;;;QAGZ;YACE,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;;;;;;;;;;QAND,UACa,QAAiB;YAC5B,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;SAClD;;;OAAA;IAUD,sBACI,0CAAY;;;;QAIhB;YACE,OAAO,IAAI,CAAC,aAAa,CAAC;SAC3B;;;;;;;;;;;;;QAPD,UACiB,YAAqB;YACpC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;YAClC,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;;;OAAA;IASD,sBAAI,wCAAU;;;;;;;;;;QAAd;YACE,OAAO,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;SAC5C;;;OAAA;IAOD,sBACI,yCAAW;;;;QAGf;YACE,OAAO,IAAI,CAAC,YAAY,CAAC;SAC1B;;;;;;;;;;;;;QAND,UACgB,WAAoB;YAClC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;SACjC;;;OAAA;IASD,sBAAI,2CAAa;;;;;;;;;;QAAjB;YACE,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;SAC3C;;;OAAA;IAKD,sBAAI,gDAAkB;;;;;;;;QAAtB;YACE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,OAAO,EAAE,CAAC;aACX;YACD,OAAO,CAAC,IAAI,CAAC,SAAS,IAAO,IAAI,CAAC,WAAW,OAAI,GAAI,IAAI,CAAC,WAAW,CAAC;SACvE;;;OAAA;IAmBD,sBACI,mCAAK;;;;QAOT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;;;;;;;;;;;QAVD,UACU,KAAoC;YAC5C,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;aAC/E;SACF;;;OAAA;IA2CD,sBACI,sCAAQ;;;;;;;;QADZ;YAEE,OAAO,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;SAC5C;;;OAAA;;;;;;;;;IAuBD,wCAAa;;;;;IADb,UACc,KAAiB;;QAE7B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;QACD,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;;;;;;;;;IAMD,4CAAiB;;;;;IADjB,UACkB,KAAiB;QADnC,iBAOC;;QAJC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC;YACvB,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3B,CAAC,CAAC;KACJ;;;;;;;;;;;IAOD,wCAAa;;;;;;IADb,UACc,KAAY;;YAClB,WAAW,sBAA6B,KAAK,CAAC,MAAM,EAAA;QAC1D,IAAI,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa;YAC9C,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE;YAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;KACF;;;;;;;;;IAMD,0CAAe;;;;;IADf,UACgB,KAAoB;QADpC,iBAqBC;QAnBC,QAAQ,KAAK,CAAC,OAAO;YACnB,KAAK,GAAG;;gBAEN,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC;oBACvB,KAAI,CAAC,kBAAkB,EAAE,CAAC;iBAC3B,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;oBAC5B,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;oBACvC,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC1B,IAAI,CAAC,kBAAkB,EAAE,CAAC;iBAC3B;qBAAM;oBACL,IAAI,CAAC,KAAK,EAAE,CAAC;iBACd;gBACD,MAAM;YACR,QAAQ;;SAET;KACF;;;;IAED,mCAAQ;;;IAAR;QAAA,iBAOC;QANC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAC/D,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC5B,CAAC,SAAS,CAAC,UAAC,KAAa;YACxB,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC;SAC7C,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;IAED,0CAAe;;;IAAf;QACE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;IAED,oCAAS;;;IAAT;;QAEE,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE;YACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B;KACF;;;;IAED,sCAAW;;;IAAX;QACI,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;KAC7C;;;;IAED,4CAAiB;;;IAAjB;QACE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC5B;;;;;;;IAGD,2CAAgB;;;;;IAAhB,UAAiB,CAAU;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;;;;;;;;;;;;;;IAQD,yCAAc;;;;;;;IAAd;;YACM,KAAU;QACd,IAAI,IAAI,CAAC,YAAY,EAAE;;gBACjB,eAAe,GAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,UAAC,MAAiB;gBAClF,OAAO,MAAM,CAAC,MAAM,CAAC;aACtB,CAAC;YACF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9B,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACjC,eAAe,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;aACxC;YACD,IAAI,CAAC,KAAK,EAAE;gBACV,OAAO,KAAK,CAAC;aACd;SACF;aAAM;;;YAGL,IAAI,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;gBAC1C,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,KAAK,CAAC;gBACrD,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;aAC5D;iBAAM;gBACL,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAC/B,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACvB,OAAO,KAAK,CAAC;iBACd;aACF;SACF;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC5B;;;;;;;;;;;IAMD,kCAAO;;;;;;IAAP,UAAQ,KAAU;;;;;QAAlB,iBAwBC;QAlBC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC;YACpC,KAAI,CAAC,eAAe,EAAE,CAAC;YACvB,KAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,KAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;;QAE/B,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAC,IAAS,IAAK,OAAA,KAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,GAAA,CAAC,GAAG,CAAC,CAAC,EAAE;YAC3E,OAAO,KAAK,CAAC;SACd;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;KACb;;;;;;;;;;;IAMD,qCAAU;;;;;;IAAV,UAAW,KAAa;;YAClB,aAAa,GAAU,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACtD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,OAAO,KAAK,CAAC;SACd;;;;;QAMD,IAAI,KAAK,MAAM,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;YACnD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;SAC1B;aAAM,IAAI,KAAK,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;YACzC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;SAC5B;aAAM,IAAI,KAAK,GAAG,CAAC,EAAE;YACpB,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;SAC5B;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;KACb;;;;;;;;;;IAKD,0CAAe;;;;;;IAAf,UAAgB,KAAiB,EAAE,KAAU;QAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;;;;;;;;;;IAKD,2CAAgB;;;;;;IAAhB,UAAiB,KAAiB,EAAE,KAAU;QAC5C,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;;;;IAED,uCAAY;;;IAAZ;QACE,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;KACb;;;;;;;;IAKD,0CAAe;;;;IAAf;QACE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;KACF;;;;;;;;IAKD,6CAAkB;;;;IAAlB;QACE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;;;;;;;IAMD,gCAAK;;;;;IAAL;QACE,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;SAC1B;aAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACzB,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;KACF;;;;;;;;;IAKD,wCAAa;;;;;IAAb,UAAc,KAAoB;QAChC,QAAQ,KAAK,CAAC,OAAO;YACnB,KAAK,QAAQ;;;;;gBAKX,IAAI,IAAI,CAAC,YAAY,EAAE;;wBACjB,QAAM,GAAW,IAAI,CAAC,QAAQ,CAAC,MAAM;oBACzC,IAAI,QAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,uBAAuB,EAAE;wBACnF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;wBAC/C,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;;wBAErC,KAAK,CAAC,cAAc,EAAE,CAAC;qBACxB;iBACF;gBACD,MAAM;YACR,KAAK,UAAU,CAAC;YAChB,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS;gBACZ,IAAI,CAAC,kBAAkB,EAAE,CAAC;;gBAE1B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;oBAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;;oBAEtB,KAAK,CAAC,cAAc,EAAE,CAAC;iBACxB;gBACD,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,kBAAkB,EAAE,CAAC;;gBAE1B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;oBAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;;oBAEvB,KAAK,CAAC,cAAc,EAAE,CAAC;iBACxB;gBACD,MAAM;YACR,QAAQ;;SAET;KACF;;;;;;;;;;IAKD,uCAAY;;;;;;IAAZ,UAAa,KAAoB,EAAE,KAAa;QAC9C,QAAQ,KAAK,CAAC,OAAO;YACnB,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS;;gBAEZ,IAAI,IAAI,CAAC,aAAa,EAAE;oBACvB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;iBACvB;gBACD,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,UAAU;;;;;gBAKb,IAAI,KAAK,KAAK,CAAC,EAAE;;oBAEf,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;wBACnD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;qBAC1B;yBAAM;wBACL,IAAI,CAAC,cAAc,EAAE,CAAC;qBACvB;iBACF;qBAAM,IAAI,KAAK,GAAG,CAAC,EAAE;oBACpB,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;iBAC5B;;gBAED,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;YACR,KAAK,UAAU,CAAC;YAChB,KAAK,WAAW;;;;;gBAKd,IAAI,KAAK,MAAM,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;;oBAEpC,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,KAAK,WAAW,EAAE;wBACpD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;qBAC1B;yBAAM;wBACL,IAAI,CAAC,eAAe,EAAE,CAAC;qBACxB;iBACF;qBAAM,IAAI,KAAK,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;oBACzC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;iBAC5B;;gBAED,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;YACR,QAAQ;;SAET;KACF;;;;;;;;IAKD,8CAAmB;;;;IAAnB;QACE,OAAO,EAAE,CAAC;KACX;;;;;;;;IAKD,4CAAiB;;;;IAAjB;QACE,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE;YACxC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;KACF;;;;;;;;IAKD,6CAAkB;;;;IAAlB;QACE,IAAI,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE;YACvC,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,CAAC;YACvC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;KACF;IAKD,sBAAI,yCAAW;;;;;;;;QAAf;;gBACM,KAAK,GAAc,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YACpD,OAAO,KAAK,CAAC,MAAM,CAAC;SACrB;;;OAAA;;;;;;;;;IAKO,qCAAU;;;;;IAAlB,UAAmB,KAAa;;QAE9B,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE;YAC1C,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;SAC9C;KACF;;;;;;IAGO,0CAAe;;;;IAAvB;QACE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACpB;;;;;;IAGO,yCAAc;;;;IAAtB;QACE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;KACvC;;;;;;;;;;IAMO,uCAAY;;;;;IAApB;QACE,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;SAC5B;aAAM;YACL,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;SAC7B;QACD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;;;;;;;IAMO,gDAAqB;;;;;IAA7B;QAAA,iBAgBC;QAfC,IAAI,IAAI,CAAC,YAAY,EAAE;;YAErB,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC;gBACvB,IAAI,KAAI,CAAC,OAAO,IAAI,KAAI,CAAC,QAAQ,IAAI,KAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;;oBAE7D,KAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,UAAC,MAAiB;wBAChD,MAAM,CAAC,iBAAiB,EAAE,CAAC;qBAC5B,CAAC,CAAC;;oBAEH,KAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;oBAC7C,KAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;oBACpC,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;iBACxC;aACF,CAAC,CAAC;SACJ;KACF;;;;;;;;;;;;IAOO,6CAAkB;;;;;;IAA1B;QAAA,iBA4BC;QA3BC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAC5B,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAClC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CACtC,CAAC,IAAI,CACJ,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,EACpC,MAAM,CACJ,UAAC,KAAiB;;oBACV,WAAW,sBAA6B,KAAK,CAAC,MAAM,EAAA;gBAC1D,UAAU,CAAC;oBACT,KAAI,CAAC,cAAc,GAAG,KAAK,CAAC;iBAC7B,CAAC,CAAC;gBACH,OAAO,KAAI,CAAC,OAAO;qBACZ,WAAW,KAAK,KAAI,CAAC,WAAW,CAAC,aAAa,CAAC;oBAChD,CAAC,KAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAI,CAAC,cAAc,CAAC;aACrF,CACF,CACF,CAAC,SAAS,CAAC;gBACV,IAAI,KAAI,CAAC,OAAO,EAAE;oBAChB,KAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,CAAC;oBACvC,KAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC1B,KAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;iBACxC;aACF,CAAC,CAAC;SACJ;QACD,OAAO,SAAS,CAAC;KAClB;;gBA9tBF,SAAS,SAAC;oBACT,SAAS,EAAE,CAAC;4BACV,OAAO,EAAE,iBAAiB;4BAC1B,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,gBAAgB,GAAA,CAAC;4BAC/C,KAAK,EAAE,IAAI;yBACZ,CAAC;oBACF,QAAQ,EAAE,UAAU;oBACpB,MAAM,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;oBAE7B,2yFAAqC;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;;iBAChD;;;;gBAvDC,UAAU;gBACgD,SAAS;gDAmStD,QAAQ,YAAI,MAAM,SAAC,QAAQ;gBAnSxC,iBAAiB;;;+BA6EhB,SAAS,SAAC,OAAO;8BACjB,SAAS,SAAC,QAAQ;uCAClB,SAAS,SAAC,sBAAsB;iCAChC,YAAY,SAAC,OAAO;gCAEpB,YAAY,SAAC,eAAe;8CAC5B,YAAY,SAAC,6BAA6B;2BAE1C,YAAY,SAAC,SAAS;wBAkBtB,KAAK,SAAC,OAAO;0BAeb,KAAK,SAAC,SAAS;gCAaf,KAAK,SAAC,eAAe;+BAYrB,KAAK,SAAC,cAAc;2BAapB,KAAK,SAAC,UAAU;+BAahB,KAAK,SAAC,cAAc;8BAsBpB,KAAK,SAAC,aAAa;8BA8BnB,KAAK,SAAC,aAAa;2BAMnB,KAAK,SAAC,UAAU;wBAOhB,KAAK,SAAC,OAAO;wBAiBb,MAAM,SAAC,KAAK;2BAOZ,MAAM,SAAC,QAAQ;gCAOf,MAAM,SAAC,aAAa;8BAOpB,MAAM,SAAC,WAAW;6BAOlB,MAAM,SAAC,UAAU;2BAKjB,WAAW,SAAC,eAAe;8BAkB3B,KAAK,SAAC,aAAa;gCAOnB,YAAY,SAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;oCAYhC,YAAY,SAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;gCAapC,YAAY,SAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;kCAchC,YAAY,SAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;IA8arC,uBAAC;CAAA,CAntBqC,iBAAiB;;;;;;ACzDvD;IAYA;KAsBC;;gBAtBA,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,mBAAmB;wBACnB,YAAY;wBACZ,cAAc;wBACd,aAAa;wBACb,cAAc;wBACd,qBAAqB;qBACtB;oBACD,YAAY,EAAE;wBACZ,gBAAgB;wBAChB,eAAe;wBACf,6BAA6B;qBAC9B;oBACD,OAAO,EAAE;wBACP,gBAAgB;wBAChB,eAAe;wBACf,6BAA6B;qBAC9B;iBACF;;IAGD,0BAAC;CAtBD;;;;;;;;;;;;;;;;ACZA;IAaE,uCAAsB,WAAuB,EAAY,SAAoB;QAAvD,gBAAW,GAAX,WAAW,CAAY;QAAY,cAAS,GAAT,SAAS,CAAW;QAC3E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,0BAA0B,CAAC,CAAC;KACrF;;gBAVF,SAAS,SAAC;;oBAET,QAAQ,EAAE,8BAA8B;oBAExC,qCAA8C;;iBAC/C;;;;gBAV6C,UAAU;gBAArB,SAAS;;IAiB5C,oCAAC;CAZD,IAYC;;IAiCC,iCAAoB,WAAuB,EAAU,SAAoB;QAArD,gBAAW,GAAX,WAAW,CAAY;QAAU,cAAS,GAAT,SAAS,CAAW;QAvBjE,cAAS,GAAY,KAAK,CAAC;QAwBjC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;KAC9E;IAvBD,sBACI,6CAAQ;;;;QAQZ;YACE,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;;QAXD,UACa,QAAiB;YAC5B,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;aACxE;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;aAC3E;YACD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;SAC3B;;;OAAA;IAKD,sBAAI,2CAAM;;;;QAAV;;gBACM,MAAM,GAAW,EAAE;YACvB,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;gBAClC,MAAM,GAAG,oBAAc,IAAI,CAAC,WAAW,CAAC,aAAa,IAAE,qBAAqB,EAAE,CAAC,MAAM,CAAC;aACvF;YACD,OAAO,MAAM,CAAC;SACf;;;OAAA;;;;;;;;IAUD,+CAAa;;;;IADb;QAEE,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;;;;IAED,uCAAK;;;IAAL;QACE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KACxC;;gBA7CF,SAAS,SAAC;;oBAET,QAAQ,EAAE,uBAAuB;oBAEjC,qCAA8C;;iBAC/C;;;;gBAxB6C,UAAU;gBAArB,SAAS;;;2BA6BzC,KAAK,SAAC,UAAU;gCA4BhB,YAAY,SAAC,OAAO;;IASvB,8BAAC;CA/CD;;;;;;;ICfkDA,gDAAuB;IAGvE,sCAAY,WAA6B,EAAE,gBAAkC;eAC3E,kBAAM,WAAW,EAAE,gBAAgB,CAAC;KACrC;;gBANF,SAAS,SAAC,EAAC,QAAQ,EAAE,kCAAkC,EAAC;;;;gBAH9B,WAAW;gBAAE,gBAAgB;;;sCAMrD,KAAK;;IAIR,mCAAC;CAAA,CANiD,uBAAuB;;;;;;;;ICiBvE,WAAY,KAAK;IACjB,YAAa,MAAM;;;;;;IAgDfS,mBAAiB,GAAW,CAAC;;;;;IAK7B,6BAA6B,GAAW,EAAE;AAEhD;IACE,yBAAmB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;KAAI;IAC9D,sBAAC;CAAA,IAAA;;;AAGD,IAAa,qBAAqB,GAAG,yBAAyB,CAAC,eAAe,EAAE,EAAE,CAAC;AAEnF;IAY0CT,wCAAqB;IAuU7D,8BAAkD,SAAc,EAC5C,WAAuB,EACvB,aAA2B,EACnC,kBAAqC;QAHjD,YAIE,kBAAM,kBAAkB,CAAC,SAC1B;QALiD,eAAS,GAAT,SAAS,CAAK;QAC5C,iBAAW,GAAX,WAAW,CAAY;QACvB,mBAAa,GAAb,aAAa,CAAc;QAnUvC,gBAAU,GAAW,CAAC,CAAC;;;;QAGvB,uBAAiB,GAAY,KAAK,CAAC;QACnC,oBAAc,GAAW,CAAC,CAAC;QAG3B,qBAAe,GAAoB,IAAI,OAAO,EAAU,CAAC;QAezD,aAAO,GAA2B,EAAE,CAAC;QACrC,eAAS,GAAkB,IAAI,OAAO,EAAQ,CAAC;QAK/C,6BAAuB,GAAW,CAAC,CAAC;QAEpC,yBAAmB,GAAoB,IAAI,OAAO,EAAU,CAAC;QAC7D,uBAAiB,GAAoB,IAAI,OAAO,EAAU,CAAC;;QAG3D,qBAAe,GAAa,EAAE,CAAC;;QAE/B,kBAAY,GAAW,CAAC,CAAC;;QAEzB,iBAAW,GAAW,CAAC,CAAC;;QAExB,2BAAqB,GAAW,CAAC,CAAC;;QAKlC,cAAQ,GAAW,CAAC,CAAC;QACrB,YAAM,GAAW,CAAC,CAAC;QAqCnB,iBAAW,GAAY,KAAK,CAAC;QAC7B,gBAAU,GAAY,KAAK,CAAC;QAC5B,eAAS,GAAY,IAAI,CAAC;QAC1B,kBAAY,GAAY,KAAK,CAAC;QAC9B,oBAAc,GAAY,KAAK,CAAC;;;;QAGhC,eAAS,GAAY,KAAK,CAAC;QAE3B,gBAAU,GAA4B,uBAAuB,CAAC,SAAS,CAAC;;;;QAGxE,6BAAuB,GAAY,KAAK,CAAC;QACzC,wBAAkB,GAAW,CAAC,CAAC,CAAC;QAChC,yBAAmB,GAAW,CAAC,CAAC,CAAC;QACjC,yBAAmB,GAAY,KAAK,CAAC;;;;QAGrC,kBAAY,GAAkC,IAAI,GAAG,EAA4B,CAAC;;;;;;QAmMpE,kBAAY,GACE,IAAI,YAAY,EAA+B,CAAC;;;;;;QAO/D,iBAAW,GAA0C,IAAI,YAAY,EAA2B,CAAC;;;;;;QAOlG,gBAAU,GAA4C,IAAI,YAAY,EAA6B,CAAC;;;;;;QAOnG,iBAAW,GACE,IAAI,YAAY,EAA8B,CAAC;;;;;;QAc3D,iBAAW,GAAsC,UAAC,GAAQ,EAAE,KAAU;YAC1F,OAAO,GAAG,KAAK,KAAK,CAAC;SACtB,CAAA;;KATA;IA7TD,sBAAI,gDAAc;;;;QAAlB;YACE,OAAO,IAAI,CAAC,eAAe,CAAC;SAC7B;;;OAAA;IAED,sBAAI,2CAAS;;;;QAAb;;;YAGE,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,OAAO,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;aAC7B;YACD,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;;;OAAA;IAgCD,sBAAI,iDAAe;;;;;;;;;;QAAnB;YACE,OAAO,IAAI,CAAC,gBAAgB,CAAC;SAC9B;;;OAAA;IAKD,sBAAI,6CAAW;;;;;;;;QAAf;YACE,OAAO,IAAI,CAAC,YAAY,CAAC;SAC1B;;;OAAA;IAKD,sBAAI,yCAAO;;;;;;;;QAAX;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;;;OAAA;IAKD,sBAAI,uCAAK;;;;;;;;QAAT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;OAAA;IAsCD,sBAAI,mDAAiB;;;;;;;;QAArB;YACE,OAAO,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC;SAC1C;;;OAAA;IAKD,sBAAI,6CAAW;;;;;;;;QAAf;YACE,OAAO,IAAI,CAAC,YAAY,CAAC;SAC1B;;;OAAA;IAMD,sBAAI,+CAAa;;;;;;;;;;QAAjB;YACE,OAAO,IAAI,CAAC,cAAc,CAAC;SAC5B;;;OAAA;IAMD,sBACI,sCAAI;;;;QASR;YACE,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;;;;;;;;;;;QAZD,UACS,IAAW;YADpB,iBASC;YAPC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;YAC1B,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;gBACrB,KAAI,CAAC,OAAO,EAAE,CAAC;;gBAEf,KAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;aACjD,CAAC,CAAC;SACJ;;;OAAA;IAKD,sBAAI,6CAAW;;;;QAAf;YACE,OAAO,IAAI,CAAC,YAAY,CAAC;SAC1B;;;OAAA;IAOD,sBACI,yCAAO;;;;QAGX;YAAA,iBAkBC;YAjBC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;aACtB;YAED,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;;;oBAEf,GAAG,GAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAC,CAAS;oBACjC,IAAI,CAAC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,CAAC,GAAA,CAAC,EAAE;wBACjD,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;qBAC3C;iBACF,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC,QAAQ,CAAC;aACtB;iBAAM;gBACL,OAAO,EAAE,CAAC;aACX;SACF;;;;;;;;;;;;;QAtBD,UACY,IAA0B;YACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;;;OAAA;IA0BD,sBACI,kDAAgB;;;;QAGpB;YACE,OAAO,IAAI,CAAC,iBAAiB,CAAC;SAC/B;;;;;;;;;;;;;QAND,UACqB,gBAAyB;YAC5C,IAAI,CAAC,iBAAiB,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;SAClE;;;OAAA;IAUD,sBACI,4CAAU;;;;QAGd;YACE,OAAO,IAAI,CAAC,WAAW,CAAC;SACzB;;;;;;;;;;;;;QAND,UACe,UAAmB;YAChC,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;SACtD;;;OAAA;IAUD,sBACI,2CAAS;;;;QAGb;YACE,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;;;;;;;;;;;;;QAND,UACc,SAAkB;YAC9B,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;SACpD;;;OAAA;IAUD,sBACI,0CAAQ;;;;QAGZ;YACE,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;;;;;;;;;;QAND,UACa,QAAiB;YAC5B,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;SAClD;;;OAAA;IAUD,sBACI,0CAAQ;;;;QAGZ;YACE,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;;;;;;;;;;QAND,UACa,QAAiB;YAC5B,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;SAClD;;;OAAA;IASD,sBACI,wCAAM;;;;;;;;;;;QADV,UACW,UAAkB;YAC3B,IAAI,CAAC,UAAU,EAAE;gBACf,OAAO;aACR;;gBACK,MAAM,GAAuB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,UAAU,GAAA,CAAC;YACvF,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;aACzD;YAED,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;SACvB;;;OAAA;IACD,sBAAI,8CAAY;;;;QAAhB;YACE,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;;;OAAA;IAOD,sBACI,2CAAS;;;;;;;;;;;;;QADb,UACc,KAAqB;;gBAC7B,SAAS,GAAW,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK;YAC3D,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,EAAE;gBAC/C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;aAC3D;YAED,IAAI,CAAC,UAAU,GAAG,SAAS,KAAK,KAAK;gBACnC,uBAAuB,CAAC,SAAS,GAAG,uBAAuB,CAAC,UAAU,CAAC;SAC1E;;;OAAA;IACD,sBAAI,+CAAa;;;;QAAjB;YACE,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;;;OAAA;IAED,sBAAI,yCAAO;;;;QAAX;YACE,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;SAC5C;;;OAAA;;;;;;;;IAmDD,uCAAQ;;;;IAAR;QAAA,iBAoCC;;QAlCC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC;YACzD,IAAI,KAAI,CAAC,KAAK,EAAE;gBACd,KAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,UAAC,GAA4B,EAAE,KAAa;oBACvE,KAAI,CAAC,eAAe,CAAC,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;iBAC7D,CAAC,CAAC;aACJ;YACD,KAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,KAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B,CAAC,CAAC;;QAGH,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,IAAI,CAC/D,YAAY,CAAC,CAAC,CAAC,CAChB,CAAC,SAAS,CAAC,UAAC,OAAe;YAC1B,KAAI,CAAC,cAAc,GAAG,OAAO,CAAC;YAC9B,KAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CAAC;;QAEH,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;aACjE,SAAS,CAAC,UAAC,gBAAwB;YACpC,KAAI,CAAC,uBAAuB,GAAG,gBAAgB,CAAC;YAChD,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CAAC;;QAEH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;aAC7D,SAAS,CAAC,UAAC,cAAsB;YAClC,KAAI,CAAC,qBAAqB,GAAG,cAAc,CAAC;YAC5C,KAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,KAAU;YAC9D,KAAI,CAAC,OAAO,EAAE,CAAC;SAChB,CAAC,CAAC;KACJ;;;;;;;;IAKD,iDAAkB;;;;IAAlB;QACE,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjE,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAChD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CACzC,CAAC;SACH;KACF;;;;;;;;IAKD,oDAAqB;;;;IAArB;QAAA,iBAyBC;;QAvBC,IAAI,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,EAAE;;YAEhF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAChC;QACD,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;;gBAC9B,cAAY,GAAW,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;;YAEvF,IAAI,IAAI,CAAC,UAAU,KAAK,cAAY,EAAE;gBACpC,UAAU,CAAC;oBACT,KAAI,CAAC,UAAU,GAAG,cAAY,CAAC;oBAC/B,KAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;iBACvB,EAAE,CAAC,CAAC,CAAC;aACP;SACF;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;;gBACjC,aAAa,GAAW,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM;;YAE5F,IAAI,IAAI,CAAC,WAAW,KAAK,aAAa,EAAE;gBACtC,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;gBACjC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC7B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;aACxC;SACF;KACF;;;;;;;;;;IAMD,8CAAe;;;;;IAAf;QAAA,iBAOC;QANC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAC7C,YAAY,CAAC,CAAC,CAAC,CAChB,CAAC,SAAS,CAAC;YACV,KAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;;;;;;;;IAKD,0CAAW;;;;IAAX;QACE,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;SAChC;QACD,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;SAC1C;QACD,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;SACxC;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;SACrC;QACD,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;SACtC;KACF;;;;;;;;;;;IAMD,2CAAY;;;;;;IAAZ,UAAa,KAAY;;YACnB,OAAO,uBAA8B,KAAK,CAAC,MAAM,GAAC;QACtD,IAAI,OAAO,EAAE;;gBACP,gBAAgB,GAAW,OAAO,CAAC,UAAU;YACjD,IAAI,IAAI,CAAC,uBAAuB,KAAK,gBAAgB,EAAE;gBACrD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACjD;;gBACG,cAAc,GAAW,OAAO,CAAC,SAAS;YAC9C,IAAI,IAAI,CAAC,qBAAqB,KAAK,cAAc,EAAE;gBACjD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC7C;SACF;KACF;;;;;;;;;IAKD,6CAAc;;;;;IAAd,UAAe,KAAa;QAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;SAClC;QACD,OAAO,SAAS,CAAC;KAClB;;;;;;IAED,2CAAY;;;;;IAAZ,UAAa,MAA0B,EAAE,KAAU;QACjD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE;YAChD,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACjD;QACD,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC3B;;;;;;;;;IAKA,6CAAc;;;;;IAAd,UAAe,IAAY;QACzB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACpC;;;;;;;;IAKF,yCAAU;;;;IAAV;QACE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KACzC;;;;;;;;IAKD,sCAAO;;;;IAAP;QACE,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;;;;;;IAKD,wCAAS;;;;;IAAT,UAAU,OAAgB;QAA1B,iBAgCC;;YA/BK,WAAW,GAAU,EAAE;QAC3B,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,GAAQ;;gBAE1B,IAAI,CAAC,KAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;oBAC5B,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;oBAErB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACvB;aACF,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC5B;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,GAAQ;;gBAE1B,IAAI,KAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;oBAC3B,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;wBAClB,QAAQ,GAAQ,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAC,GAAQ;wBAC7C,OAAO,KAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;qBACnC,CAAC,CAAC,CAAC,CAAC;;wBACD,KAAK,GAAW,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;oBAChD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;wBACd,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;qBAC7B;iBACF;aACF,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;SAC7B;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;;;;;;;;;IAKD,4CAAa;;;;;IAAb,UAAc,GAAQ;QAAtB,iBAKC;;QAHC,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAC,GAAQ;YAC7C,OAAO,KAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACnC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;KACvB;;;;;;;;;;;;;IAMD,qCAAM;;;;;;;;IAAN,UAAO,GAAQ,EAAE,KAAY,EAAE,eAAuB;QACpD,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;;;gBAEnB,UAAU,sBAAe,KAAK,EAAc;YAChD,IAAI,IAAI,CAAC,QAAQ,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,EAAE;;oBAClF,UAAU,GAAW,eAAe;;oBACpC,SAAS,GAAW,IAAI,CAAC,kBAAkB;gBAC/C,IAAI,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE;oBAC7C,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC;oBACrC,SAAS,GAAG,eAAe,CAAC;iBAC7B;;;gBAGD,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,eAAe,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB;qBAClG,IAAI,CAAC,mBAAmB,IAAI,eAAe,IAAI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE;oBACtG,KAAK,IAAI,CAAC,GAAW,UAAU,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE;wBACpD,IAAI,IAAI,CAAC,mBAAmB,KAAK,CAAC,EAAE;4BAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;yBACrC;qBACF;iBACF;qBAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,GAAG,eAAe,MAAM,IAAI,CAAC,mBAAmB,GAAG,eAAe,CAAC,EAAE;;oBAEvG,IAAI,IAAI,CAAC,mBAAmB,GAAG,eAAe,EAAE;wBAC9C,SAAS,EAAE,CAAC;qBACb;yBAAM,IAAI,IAAI,CAAC,mBAAmB,GAAG,eAAe,EAAE;wBACrD,UAAU,EAAE,CAAC;qBACd;oBACD,KAAK,IAAI,CAAC,GAAW,UAAU,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE;;4BAChD,WAAW,GAAY,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;;;wBAI5D,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,WAAW;6BACxC,CAAC,IAAI,CAAC,mBAAmB,IAAI,WAAW,CAAC,EAAE;4BAC9C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;yBACrC;6BAAM,IAAI,IAAI,CAAC,uBAAuB,EAAE;;;4BAGvC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,mBAAmB,IAAI,eAAe,IAAI,IAAI,CAAC,kBAAkB;iCACzF,eAAe,IAAI,IAAI,CAAC,mBAAmB,IAAI,eAAe,IAAI,IAAI,CAAC,kBAAkB,CAAC,EAAE;gCAC/F,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;6BACrC;yBACF;qBACF;iBACF;gBACD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;;;aAGrC;iBAAM,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;gBAC7C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;gBACnE,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;gBACrC,IAAI,CAAC,mBAAmB,GAAG,eAAe,CAAC;aAC5C;YACD,IAAI,CAAC,kBAAkB,GAAG,eAAe,CAAC;SAC3C;KACF;;;;;;;;;;IAMD,mDAAoB;;;;;IAApB;QACE,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG;gBAC7B,OAAO,KAAK,CAAC;aACd,CAAC;SACH;KACF;;;;;;;;IAKD,kDAAmB;;;;IAAnB;QACE,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC;SAC1C;KACF;;;;;;;;;;;;;IAMD,6CAAc;;;;;;;;IAAd,UAAe,GAAQ,EAAE,KAAa,EAAE,KAAY;QAClD,IAAI,IAAI,CAAC,SAAS,EAAE;;;;gBAGZ,UAAU,GAAQ,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,aAAa;;gBAC3D,OAAO,sBAAgB,KAAK,CAAC,MAAM,EAAe;;YAEtD,IAAI,UAAU,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,qBAAqB,EAAE;gBAC/G,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBACnB,GAAG,EAAE,GAAG;oBACR,KAAK,EAAE,KAAK;iBACb,CAAC,CAAC;aACJ;SACF;KACF;;;;;;;;;IAKD,yCAAU;;;;;IAAV,UAAW,MAA0B;QACnC,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE;YAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,KAAK,uBAAuB,CAAC,SAAS;gBACrE,uBAAuB,CAAC,UAAU,GAAG,uBAAuB,CAAC,SAAS,CAAC;SAC1E;aAAM;YACL,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,uBAAuB,CAAC,SAAS,CAAC;SACrD;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;KAC7E;;;;;;;;;;;IAKD,wCAAS;;;;;;;IAAT,UAAU,KAAoB,EAAE,GAAQ,EAAE,KAAa;QACrD,QAAQ,KAAK,CAAC,OAAO;YACnB,KAAK,KAAK,CAAC;YACX,KAAK,KAAK;;gBAER,IAAI,IAAI,CAAC,UAAU,EAAE;oBACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;iBAC3E;gBACD,MAAM;YACR,KAAK,QAAQ;;;;;gBAKX,IAAI,KAAK,GAAG,CAAC,EAAE;oBACb,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBACzC;gBACD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACvB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,IAAI,CAAC,EAAE;oBACnF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;iBAC3E;gBACD,MAAM;YACR,KAAK,UAAU;;;;;gBAKb,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;oBAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBACzC;gBACD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACvB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBAClG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;iBAC3E;gBACD,MAAM;YACR,QAAQ;;SAET;KACF;;;;;;;;;;IAKD,qDAAsB;;;;;;IAAtB,UAAuB,KAAa,EAAE,KAAiB;QACrD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAC9B;;;;;;;;;IAKD,gDAAiB;;;;;IAAjB,UAAkB,KAA6B;;QAE7C,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE;;gBACvD,SAAS,GAAW,KAAK,CAAC,OAAO;;YAErC,IAAI,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,MAAM,CAAC,EAAE;;;oBAEnF,mBAAmB,GAAW,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;;gBAE9G,IAAI,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,cAAc,EAAE;oBAC1F,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,cAAc,CAAC;iBACxF;gBACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,GAAG,mBAAmB,CAAC;;gBAE/D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACtC;SACF;KACF;;;;;;;;IAKD,mDAAoB;;;;IAApB;QACE,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;KAClC;;;;;;;;;IAKD,yCAAU;;;;;IAAV,UAAW,KAAY;QACrB,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;;;;;;IAEO,8CAAe;;;;;IAAvB,UAAwB,IAAY,EAAE,KAAU;QAC9C,IAAI,EAAE,KAAK,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;YACvC,OAAO,KAAK,CAAC;SACd;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;;gBACtB,SAAS,GAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAChE;aAAM;YACL,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;SACpB;KACF;;;;;;;;;;IAKO,2CAAY;;;;;;IAApB,UAAqB,GAAQ,EAAE,QAAgB;QAA/C,iBAqBC;;YApBK,WAAW,GAAY,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;QAClD,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,IAAI,CAAC,UAAU,EAAE,CAAC;aACnB;YACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACtB;aAAM;;YAEL,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAC,GAAQ;gBAC/B,OAAO,KAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;aACnC,CAAC,CAAC,CAAC,CAAC,CAAC;;gBACF,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAC3C,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC7B;SACF;QACD,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,CAAC,WAAW,CAAC;KACrB;;;;;;;;IAKO,sDAAuB;;;;IAA/B;QAAA,iBAYC;;QAXC,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,YAAY,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,CAAM,IAAK,OAAA,CAAC,KAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAA,CAAC,KAAK,WAAW,CAAC;YAC/F,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;;gBAC5B,KAAgB,IAAA,KAAAC,SAAA,IAAI,CAAC,KAAK,CAAA,gBAAA,4BAAE;oBAAvB,IAAI,GAAG,WAAA;oBACV,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;wBAC5B,SAAS;qBACV;oBACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;oBAC3B,MAAM;iBACP;;;;;;;;;SACF;KACF;;;;;;;;IAKO,+CAAgB;;;;IAAxB;QAAA,iBASC;QARC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YACjD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAC,GAA+B,EAAE,KAAa;gBACvE,KAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAI,CAAC,eAAe,EAAE,CAAC,CAAC;aACxD,CAAC,CAAC;YACH,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;KACF;;;;;;;;IAKO,kDAAmB;;;;IAA3B;QAAA,iBAwCC;;YAvCK,eAAe,GAAW,CAAC;;;YAE3B,cAAc,GAAW,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAC,KAA2B,EAAE,KAAa;YAC1F,IAAI,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;gBAC9B,OAAO,KAAK,CAAC;aACd;YACD,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE;gBACzC,eAAe,IAAI,KAAK,CAAC,KAAK,CAAC;aAChC;YACD,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;SACjD,CAAC,CAAC,MAAM;;;;YAGL,oBAAoB,GAAW,CAAC;QACpC,IAAI,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE;YACpC,oBAAoB,GAAG,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC;SACzD;;;QAGD,IAAI,cAAc,IAAI,oBAAoB,EAAE;;gBACtC,UAAQ,GAAW,IAAI,CAAC,KAAK,CAAC,oBAAoB,GAAG,cAAc,CAAC;;gBACpE,gBAAc,GAAW,CAAC;;YAE9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,QAA8B;gBAClD,IAAI,KAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,UAAQ;oBACjF,KAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,KAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,UAAQ;oBACjF,CAAC,KAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;oBACvC,KAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAQ,CAAC,CAAC;oBAClD,gBAAc,EAAE,CAAC;iBAClB;aACF,CAAC,CAAC;;;gBAEC,iBAAiB,GAAW,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAC,KAA2B;gBAC9E,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aACnC,CAAC,CAAC,MAAM;YACT,IAAI,iBAAiB,KAAK,gBAAc,IAAI,iBAAiB,KAAK,cAAc,EAAE;gBAChF,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC5B;SACF;KACF;;;;;;;;;;IAKO,iDAAkB;;;;;;IAA1B,UAA2B,KAAa,EAAE,KAAa;QACrD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG;YACpB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK;YACZ,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;SACX,CAAC;;;;YAGE,sBAAsB,GAAY,KAAK;QAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;YAEvB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE;;oBAC7C,SAAS,sBAAqD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAA;;gBAE3F,sBAAsB,IAAI,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACxD,IAAI,SAAS,IAAI,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;oBAC3D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC;oBAC1C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;;iBAEhC;qBAAM,IAAI,SAAS,IAAI,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;oBAClE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC;oBAC1C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;iBAChC;;aAEF;iBAAM,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE;gBACxD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,sBAAW,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAA,CAAC;gBAC9D,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;aAC3D;SACF;;QAED,IAAI,CAAC,sBAAsB;YACvB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE;YACjF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC;YAC9E,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;SACnC;KACF;;;;;;;;IAKO,8CAAe;;;;IAAvB;;YACM,eAAe,GAAyB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAC,GAAuB,IAAK,OAAA,CAAC,GAAG,CAAC,MAAM,GAAA,CAAC;QACzG,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;KAC5D;;;;;;;;IAKO,oDAAqB;;;;IAA7B;QAAA,iBAgEC;;YA/DK,YAAY,GAAW,CAAC;QAC5B,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;;gBAClB,cAAY,GAAW,CAAC;;;YAG5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,CAAM,EAAE,CAAS;;;gBAGnC,IAAI,CAAC,KAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;oBAC5B,KAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,KAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,6BAA6B,CAAC;iBACpF;gBACD,cAAY,IAAI,KAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;;gBAExC,IAAI,KAAI,CAAC,qBAAqB,GAAG,cAAY,GAAG,CAAC,EAAE;oBACjD,YAAY,EAAE,CAAC;iBAChB;aACF,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,GAAG,cAAY,CAAC;;;gBAE7B,OAAO,GAAW,YAAY,GAAGQ,mBAAiB;YACtD,IAAI,CAAC,QAAQ,GAAG,OAAO,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;;gBAEtC,UAAU,GAAW,IAAI,CAAC,WAAW;;gBACrC,KAAK,GAAW,CAAC;;YAErB,OAAO,UAAU,GAAG,CAAC,EAAE;gBACrB,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;gBACzD,KAAK,EAAE,CAAC;aACT;;;gBAEG,KAAK,GAAW,CAAC,KAAK,GAAG,CAAC,KAAKA,mBAAiB,GAAG,CAAC,CAAC;;gBACrD,KAAK,GAAW,KAAK,GAAG,IAAI,CAAC,OAAO;;YAExC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBAChD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;aAC3B;iBAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBAC3B,KAAK,GAAGA,mBAAiB,CAAC;aAC3B;YACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;aAAM;YACL,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;;YAEG,MAAM,GAAW,CAAC;;QAEtB,IAAI,YAAY,GAAGA,mBAAiB,EAAE;YACpC,KAAK,IAAI,KAAK,GAAW,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;gBACzD,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;aACvC;SACF;QAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,aAAa,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,CAAC;QACzH,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/D;;;QAGD,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;YACrB,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CAAC;KACJ;;gBA1/BF,SAAS,SAAC;oBACT,SAAS,EAAE,CAAC;4BACV,OAAO,EAAE,iBAAiB;4BAC1B,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,oBAAoB,GAAA,CAAC;4BACnD,KAAK,EAAE,IAAI;yBACZ,CAAC;oBACF,QAAQ,EAAE,eAAe;oBAEzB,6yIAA0C;oBAC1C,MAAM,EAAE,CAAC,OAAO,CAAC;oBACjB,eAAe,EAAE,uBAAuB,CAAC,MAAM;;iBAChD;;;;gDAwUc,QAAQ,YAAI,MAAM,SAAC,QAAQ;gBApaT,UAAU;gBAElC,YAAY;gBAJZ,iBAAiB;;;6BA2MvB,eAAe,SAAC,4BAA4B;iCAE5C,SAAS,SAAC,eAAe;+BAEzB,YAAY,SAAC,eAAe;wBAE5B,YAAY,SAAC,uBAAuB;uBA4BpC,KAAK,SAAC,MAAM;0BAuBZ,KAAK,SAAC,SAAS;mCA6Bf,KAAK,SAAC,kBAAkB;6BAaxB,KAAK,SAAC,YAAY;4BAalB,KAAK,SAAC,WAAW;2BAajB,KAAK,SAAC,UAAU;2BAahB,KAAK,SAAC,UAAU;yBAYhB,KAAK,SAAC,QAAQ;4BAqBd,KAAK,SAAC,WAAW;+BAuBjB,MAAM,SAAC,YAAY;8BAQnB,MAAM,SAAC,WAAW;6BAOlB,MAAM,SAAC,UAAU;8BAOjB,MAAM,SAAC,WAAW;8BAelB,KAAK,SAAC,aAAa;;IA4pBtB,2BAAC;CAAA,CA/+ByC,qBAAqB;;;;;;AChG/D;IAmGE,oCAAoB,WAAuB,EAAU,SAAoB;QAArD,gBAAW,GAAX,WAAW,CAAY;QAAU,cAAS,GAAT,SAAS,CAAW;QAlFjE,eAAU,GAA4B,uBAAuB,CAAC,SAAS,CAAC;;;;;QAejE,SAAI,GAAW,EAAE,CAAC;;;;;;QAOd,aAAQ,GAAY,KAAK,CAAC;;;;;;QAO5B,WAAM,GAAY,KAAK,CAAC;;;;;;QAOvB,YAAO,GAAY,KAAK,CAAC;;;;;;QAuBrB,iBAAY,GACZ,IAAI,YAAY,EAA+B,CAAC;QAuBpE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;KACjF;IAhFD,sBAAI,sDAAc;;;;QAAlB;YACE,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;gBAC5D,OAAO,oBAAc,IAAI,CAAC,cAAc,CAAC,aAAa,IAAE,qBAAqB,EAAE,CAAC,KAAK,CAAC;aACvF;YACD,OAAO,GAAG,CAAC;SACZ;;;OAAA;IAkCD,sBACI,iDAAS;;;;;;;;;;;;;QADb,UACc,KAAqB;;gBAC7B,SAAS,GAAW,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK;YAC3D,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,EAAE;gBAC/C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;aAC3D;YAED,IAAI,CAAC,UAAU,GAAG,SAAS,KAAK,KAAK;gBACnC,uBAAuB,CAAC,SAAS,GAAG,uBAAuB,CAAC,UAAU,CAAC;SAC1E;;;OAAA;IAUD,sBACI,qDAAa;;;;QADjB;YAEE,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;;;OAAA;IAED,sBACI,oDAAY;;;;QADhB;YAEE,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;;;OAAA;IAED,sBACI,kDAAU;;;;QADd;YAEE,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;OAAA;IAED,sBACI,mDAAW;;;;QADf;YAEE,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;;;OAAA;;;;;;;;IAUD,gDAAW;;;;IADX;QAEE,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAC,CAAC,CAAC;SACnE;KACF;;;;IAED,gDAAW;;;IAAX;QACE,OAAO,IAAI,CAAC,UAAU,KAAK,uBAAuB,CAAC,SAAS,CAAC;KAC9D;;;;IAED,iDAAY;;;IAAZ;QACE,OAAO,IAAI,CAAC,UAAU,KAAK,uBAAuB,CAAC,UAAU,CAAC;KAC/D;;gBA9GF,SAAS,SAAC;;oBAET,QAAQ,EAAE,0BAA0B;oBAEpC,ilBAAiD;;iBAClD;;;;gBAd2D,UAAU;gBAArB,SAAS;;;iCAmBvD,SAAS,SAAC,eAAe,EAAE,EAAC,IAAI,EAAE,UAAU,EAAC;uBAa7C,KAAK,SAAC,MAAM;2BAOZ,KAAK,SAAC,UAAU;yBAOhB,KAAK,SAAC,QAAQ;0BAOd,KAAK,SAAC,SAAS;4BAOf,KAAK,SAAC,WAAW;+BAgBjB,MAAM,SAAC,YAAY;gCAGnB,WAAW,SAAC,qBAAqB;+BAKjC,WAAW,SAAC,oBAAoB;6BAKhC,WAAW,SAAC,kBAAkB;8BAK9B,WAAW,SAAC,mBAAmB;8BAY/B,YAAY,SAAC,OAAO;;IAevB,iCAAC;CAhHD;;;;;;ACTA;IAuCE,kCAAoB,WAAuB,EAAU,SAAoB;QAArD,gBAAW,GAAX,WAAW,CAAY;QAAU,cAAS,GAAT,SAAS,CAAW;;;;;;QApBvD,YAAO,GAAY,KAAK,CAAC;QAqBzC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC;KAC/E;IAfD,sBACI,2CAAK;;;;QAGT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;;;;;;;;;;;QAND,UACU,KAA2B;YACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;;;OAAA;IAKD,sBACI,iDAAW;;;;QADf;YAEE,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;;;OAAA;;gBAjCF,SAAS,SAAC;;oBAET,QAAQ,EAAE,wBAAwB;oBAElC,sWAA+C;;iBAChD;;;;gBATqC,UAAU;gBAArB,SAAS;;;0BAmBjC,KAAK,SAAC,SAAS;wBAOf,KAAK;8BAQL,WAAW,SAAC,mBAAmB;;IASlC,+BAAC;CAvCD;;;;;;ACJA;IAUE,mCAAoB,WAAuB,EAAU,SAAoB;QAArD,gBAAW,GAAX,WAAW,CAAY;QAAU,cAAS,GAAT,SAAS,CAAW;QACvE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;KAC1E;;gBAVF,SAAS,SAAC;;oBAET,QAAQ,EAAE,sBAAsB;oBAEhC,qCAAgD;;iBACjD;;;;gBAP8B,UAAU;gBAArB,SAAS;;IAc7B,gCAAC;CAZD;;;;;;ACFA;IAIA;KAyEC;;;;;;;;;;;;;;;;;;;;;;;;IA7DC,uCAAU;;;;;;;;;;;;;;IAAV,UAAW,IAAW,EAAE,UAAkB,EAAE,UAA2B,EAAE,eAA0B;QAAvD,2BAAA,EAAA,kBAA2B;;YACjEC,SAAM,GAAW,UAAU,IAAI,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,GAAG,UAAU,IAAI,EAAE;QAC3F,IAAIA,SAAM,EAAE;YACV,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,IAAS;;oBACrB,GAAG,GAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAC,GAAW;oBAClD,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;;4BACrD,YAAY,IAAY,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;;4BACvC,SAAS,GAAW,UAAU,GAAG,YAAY,CAAC,WAAW,EAAE,GAAG,YAAY;wBAChF,OAAO,SAAS,CAAC,OAAO,CAACA,SAAM,CAAC,GAAG,CAAC,CAAC,CAAC;qBACvC;iBACF,CAAC;gBACF,OAAO,EAAE,OAAO,GAAG,KAAK,WAAW,CAAC,CAAC;aACtC,CAAC,CAAC;SACJ;QACD,OAAO,IAAI,CAAC;KACb;;;;;;;;;;;;;;;;;;;;;IAUD,qCAAQ;;;;;;;;;;;;IAAR,UAAS,IAAW,EAAE,MAAc,EAAE,SAAsE;QAAtE,0BAAA,EAAA,YAAqC,uBAAuB,CAAC,SAAS;QAC1G,IAAI,MAAM,EAAE;YACV,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,UAAC,CAAM,EAAE,CAAM;;oBACnB,KAAK,GAAQ,CAAC,CAAC,MAAM,CAAC;;oBACtB,KAAK,GAAQ,CAAC,CAAC,MAAM,CAAC;;oBACtB,SAAS,GAAW,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;oBACtF,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;iBACjE;qBAAM;oBACL,IAAI,KAAK,GAAG,KAAK,EAAE;wBACjB,SAAS,GAAG,CAAC,CAAC,CAAC;qBAChB;yBAAM,IAAI,KAAK,GAAG,KAAK,EAAE;wBACxB,SAAS,GAAG,CAAC,CAAC;qBACf;iBACF;gBACD,OAAO,SAAS,IAAI,SAAS,KAAK,uBAAuB,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;aAChF,CAAC,CAAC;SACJ;QACD,OAAO,IAAI,CAAC;KACb;;;;;;;;;;;;;;;;;;;;;IAUD,qCAAQ;;;;;;;;;;;;IAAR,UAAS,IAAW,EAAE,OAAe,EAAE,KAAa;QAClD,IAAI,OAAO,IAAI,CAAC,EAAE;YAChB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;SACvC;QACD,OAAO,IAAI,CAAC;KACb;;gBAxEF,UAAU;;IAyEX,yBAAC;CAzED,IAyEC;;;;;AAED,SAAgB,2BAA2B,CACvC,MAA0B;IAC5B,OAAO,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;CAC3C;;AAED,IAAa,mBAAmB,GAAa;;IAE3C,OAAO,EAAE,kBAAkB;IAC3B,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAC5D,UAAU,EAAE,2BAA2B;CACxC;;;;;;ACzFD;IAgBM,aAAa,GAAgB;IACjC,oBAAoB;IACpB,4BAA4B;IAE5B,0BAA0B;IAC1B,wBAAwB;IACxB,uBAAuB;IACvB,6BAA6B;IAC7B,yBAAyB;CAC1B;AAED;IAAA;KAoBC;;gBApBA,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,YAAY;wBACZ,iBAAiB;wBACjB,gBAAgB;wBAChB,aAAa;wBACb,uBAAuB;qBACxB;oBACD,YAAY,EAAE;wBACZ,aAAa;qBACd;oBACD,OAAO,EAAE;wBACP,aAAa;qBACd;oBACD,SAAS,EAAE;wBACT,mBAAmB;qBACpB;iBACF;;IAGD,8BAAC;CApBD;;;;;;;;;;;;;;;;AC3BA;IAEA;KACsC;;gBADrC,SAAS,SAAC,EAAC,QAAQ,EAAE,iBAAiB,EAAC;;IACH,6BAAC;CADtC,IACsC;;IAEtC;KACwC;;gBADvC,SAAS,SAAC,EAAC,QAAQ,EAAE,mBAAmB,EAAC;;IACH,+BAAC;CADxC,IACwC;;IAExC;KACwC;;gBADvC,SAAS,SAAC,EAAC,QAAQ,EAAE,mBAAmB,EAAC;;IACH,+BAAC;CADxC,IACwC;;IAExC;KAuBC;;;;IAZC,8CAAkB;;;IAAlB;QACE,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;SACzE;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;SAC3E;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;SAC3E;KACF;;gBArBF,SAAS,SAAC;oBACT,QAAQ,EAAE,WAAW;oBACrB,qgBAAsC;;iBAEvC;;;8BAGE,eAAe,SAAC,sBAAsB;gCACtC,eAAe,SAAC,wBAAwB;gCACxC,eAAe,SAAC,wBAAwB;;IAc3C,wBAAC;CAvBD;;;;;;ACXA;IAaE,gCAAoB,UAAgD;QAAhD,eAAU,GAAV,UAAU,CAAsC;QAFpE,gBAAW,GAAW,OAAO,CAAC;KAE0C;;;;IAExE,sCAAK;;;IAAL;QACE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KACzB;;gBAdF,SAAS,SAAC;oBACT,QAAQ,EAAE,iBAAiB;oBAC3B,6VAA4C;;iBAE7C;;;;gBANQ,YAAY;;IAiBrB,6BAAC;CAfD;;;;;;ACHA;IAcE,kCAAoB,UAAkD;QAAlD,eAAU,GAAV,UAAU,CAAwC;QAHtE,iBAAY,GAAW,QAAQ,CAAC;QAChC,iBAAY,GAAW,QAAQ,CAAC;KAE0C;;;;IAE1E,yCAAM;;;IAAN;QACE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC9B;;;;IAED,yCAAM;;;IAAN;QACE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAC7B;;gBAnBF,SAAS,SAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,2mBAA8C;;iBAE/C;;;;gBANQ,YAAY;;IAsBrB,+BAAC;CApBD;;;;;;ACHA;IAiBE,iCAAoB,UAAiD;QAAjD,eAAU,GAAV,UAAU,CAAuC;QALrE,iBAAY,GAAW,QAAQ,CAAC;QAChC,iBAAY,GAAW,QAAQ,CAAC;KAIyC;;;;IAEzE,iDAAe;;;IAAf;QAAA,iBAKC;;QAHC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;YACrB,oBAAmB,KAAI,CAAC,MAAM,CAAC,aAAa,IAAE,KAAK,EAAE,CAAC;SACvD,CAAC,CAAC;KACJ;;;;;;;;;;IAMD,kDAAgB;;;;;IAAhB;QACE,oBAAmB,IAAI,CAAC,MAAM,CAAC,aAAa,IAAE,MAAM,EAAE,CAAC;KACxD;;;;IAED,wCAAM;;;IAAN;QACE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;KAClC;;;;IAED,wCAAM;;;IAAN;QACE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;;gBArCF,SAAS,SAAC;oBACT,QAAQ,EAAE,kBAAkB;oBAC5B,+mCAA6C;;iBAE9C;;;;gBANQ,YAAY;;;yBAclB,SAAS,SAAC,OAAO;;IA0BpB,8BAAC;CAtCD;;;;;;ACHA;IA6BE,yBAAoB,cAAyB;QAAzB,mBAAc,GAAd,cAAc,CAAW;KAAI;;;;;;;;;;;;;;;;;;;IAS1C,8BAAI;;;;;;;;;;;IAAX,UAAe,SAA2B,EAAE,MAAwB;QAClE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;KACpD;;;;;;;;;;IAMM,kCAAQ;;;;;IAAf;QACE,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;KAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;IAcM,mCAAS;;;;;;;;;;;;;;IAAhB,UAAiB,MAAoB;;YAC/B,YAAY,GAAoB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;;YAC1D,SAAS,GACX,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,EAAE,YAAY,CAAC;;YAC5D,oBAAoB,GAA2B,SAAS,CAAC,iBAAiB;QAC9E,oBAAoB,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1C,oBAAoB,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9C,IAAI,MAAM,CAAC,WAAW,EAAE;YACtB,oBAAoB,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;SACvD;QACD,OAAO,SAAS,CAAC;KAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAeM,qCAAW;;;;;;;;;;;;;;;IAAlB,UAAmB,MAAsB;;YACnC,YAAY,GAAoB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;;YAC1D,SAAS,GACX,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,YAAY,CAAC;;YAC9D,sBAAsB,GAA6B,SAAS,CAAC,iBAAiB;QAClF,sBAAsB,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC5C,sBAAsB,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAChD,IAAI,MAAM,CAAC,YAAY,EAAE;YACvB,sBAAsB,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;SAC3D;QACD,IAAI,MAAM,CAAC,YAAY,EAAE;YACvB,sBAAsB,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;SAC3D;QACD,OAAO,SAAS,CAAC;KAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgBM,oCAAU;;;;;;;;;;;;;;;;IAAjB,UAAkB,MAAqB;;YACjC,YAAY,GAAoB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;;YAC1D,SAAS,GACX,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC;;YAC7D,qBAAqB,GAA4B,SAAS,CAAC,iBAAiB;QAChF,qBAAqB,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3C,qBAAqB,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/C,qBAAqB,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3C,IAAI,MAAM,CAAC,YAAY,EAAE;YACvB,qBAAqB,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;SAC1D;QACD,IAAI,MAAM,CAAC,YAAY,EAAE;YACvB,qBAAqB,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;SAC1D;QACD,OAAO,SAAS,CAAC;KAClB;;;;;IAEO,uCAAa;;;;IAArB,UAAsB,MAAqB;;YACrC,YAAY,GAAoB,IAAI,eAAe,EAAE;QACzD,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,YAAY,CAAC;KACrB;;gBAlHF,UAAU;;;;gBAzBF,SAAS;;IA6IlB,sBAAC;CApHD;;;;;;ACzBA;IAeM,UAAU,GAAgB;IAC9B,sBAAsB;IACtB,wBAAwB;IACxB,uBAAuB;IACvB,iBAAiB;IACjB,sBAAsB;IACtB,wBAAwB;IACxB,wBAAwB;CACzB;;IAEK,2BAA2B,GAAgB;IAC/C,sBAAsB;IACtB,wBAAwB;IACxB,uBAAuB;CACxB;AAED;IAAA;KAuBC;;gBAvBA,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,WAAW;wBACX,YAAY;wBACZ,eAAe;wBACf,cAAc;wBACd,eAAe;qBAChB;oBACD,YAAY,EAAE;wBACZ,UAAU;qBACX;oBACD,OAAO,EAAE;wBACP,UAAU;qBACX;oBACD,SAAS,EAAE;wBACT,eAAe;qBAChB;oBACD,eAAe,EAAE;wBACf,2BAA2B;qBAC5B;iBACF;;IAGD,4BAAC;CAvBD;;;;;;;;;;;;;;;;;ICdqDV,mDAAuB;IAC1E,yCAAY,WAA6B,EAAE,gBAAkC;eAC3E,kBAAM,WAAW,EAAE,gBAAgB,CAAC;KACrC;;gBANF,SAAS,SAAC;oBACT,QAAQ,EAAE,wCAAwC;iBACnD;;;;gBAjB6C,WAAW;gBAAE,gBAAgB;;IAsB3E,sCAAC;CAAA,CAJoD,uBAAuB,GAI3E;;IAKmDA,kDAAuB;IACzE,wCAAY,WAA6B,EAAE,gBAAkC;eAC3E,kBAAM,WAAW,EAAE,gBAAgB,CAAC;KACrC;;gBANF,SAAS,SAAC;oBACT,QAAQ,EAAE,uCAAuC;iBAClD;;;;gBA1B6C,WAAW;gBAAE,gBAAgB;;IA+B3E,qCAAC;CAAA,CAJmD,uBAAuB,GAI1E;;IAKsDA,qDAAuB;IAC5E,2CAAY,WAA6B,EAAE,gBAAkC;eAC3E,kBAAM,WAAW,EAAE,gBAAgB,CAAC;KACrC;;gBANF,SAAS,SAAC;oBACT,QAAQ,EAAE,0CAA0C;iBACrD;;;;gBAnC6C,WAAW;gBAAE,gBAAgB;;IAwC3E,wCAAC;CAAA,CAJsD,uBAAuB,GAI7E;;IAED;KAIgD;;gBAJ/C,SAAS,SAAC;oBACT,QAAQ,EAAE,sBAAsB;oBAChC,QAAQ,EAAE,2BAA2B;iBACtC;;IAC8C,uCAAC;CAJhD,IAIgD;;IAEhD;KAAoC;IAAD,2BAAC;CAAA,IAAA;;;AAGpC,IAAa,0BAA0B,GAAG,kBAAkB,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAEjG;IAU+CA,6CAA0B;IA6CvE,mCAAoB,SAAoB,EACpB,WAAuB;QAD3C,YAEE,iBAAO,SAER;QAJmB,eAAS,GAAT,SAAS,CAAW;QACpB,iBAAW,GAAX,WAAW,CAAY;QA5CnC,aAAO,GAAY,KAAK,CAAC;;;;;QAmCvB,cAAQ,GAAuB,IAAI,YAAY,EAAQ,CAAC;;;;;QAMxD,eAAS,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAKjE,KAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAI,CAAC,WAAW,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC;;KAC/E;IAxBD,sBACI,6CAAM;;;;QAGV;YACE,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;;;;;;;;;;;QAND,UACW,MAAe;YACxB,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;SAChD;;;OAAA;;;;;;;;IA0BD,8CAAU;;;;IAAV;QACE,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAChC;;;;;;;;;;IAMD,0CAAM;;;;;IAAN;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvC;;;;;;;;;;IAMD,wCAAI;;;;;IAAJ;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAC9B;;;;;;;;;;IAMD,yCAAK;;;;;IAAL;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KAC/B;;;;;;;IAGD,oDAAgB;;;;;IAAhB,UAAiB,CAAU;QACzB,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;KACF;;;;;;;;;;;IAMO,8CAAU;;;;;;IAAlB,UAAmB,SAAkB;QACnC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,KAAK,CAAC;SACd;QACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;YAC9B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;YACzB,IAAI,SAAS,EAAE;gBACb,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;gBACvE,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;gBAC1E,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB;YACD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;KACd;;;;IAEO,+CAAW;;;IAAnB;QACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC/B;;;;IAEO,gDAAY;;;IAApB;QACE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAChC;;gBAhIF,SAAS,SAAC;oBACT,QAAQ,EAAE,oBAAoB;oBAE9B,i2CAA+C;oBAC/C,MAAM,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC;oBACrC,UAAU,EAAE;wBACV,mBAAmB;wBACnB,iBAAiB;qBAClB;;iBACF;;;;gBA7DoB,SAAS;gBAArB,UAAU;;;uCAkEhB,YAAY,SAAC,+BAA+B;sCAC5C,YAAY,SAAC,8BAA8B;yCAC3C,YAAY,SAAC,iCAAiC;wBAO9C,KAAK;2BAML,KAAK;yBAML,KAAK,SAAC,QAAQ;2BAYd,MAAM;4BAMN,MAAM;;IA4ET,gCAAC;CAAA,CAvH8C,0BAA0B;;;;;;AC/DzE;IAiDE,wCAAoB,SAAoB,EAAU,WAAuB;QAArD,cAAS,GAAT,SAAS,CAAW;QAAU,gBAAW,GAAX,WAAW,CAAY;QA3BjE,WAAM,GAAY,KAAK,CAAC;QAExB,sBAAiB,GAAgC,EAAE,CAAC;QAEpD,eAAU,GAAqB,IAAI,OAAO,EAAW,CAAC;QACtD,wBAAmB,GAAqB,IAAI,OAAO,EAAW,CAAC;QAuBrE,IAAI,CAAC,SAAS,CAAC,QAAQ,CACrB,IAAI,CAAC,WAAW,CAAC,aAAa,EAC9B,0BAA0B,CAC3B,CAAC;KACH;IAnBD,sBACI,iDAAK;;;;;;;;;;;;;;;QADT,UACU,KAAc;YACtB,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9D,IAAI,CAAC,eAAe,CAClB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAC1D,CAAC;aACH;SACF;;;OAAA;;;;IAaD,oDAAW;;;IAAX;QACE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;KACxC;;;;IAEM,2DAAkB;;;IAAzB;QAAA,iBAqBC;QApBC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;;gBACV,YAAY,GAAgC,IAAI,CAAC,eAAe,CAAC,MAAM,CAC3E,UAAC,cAAyC,IAAK,OAAA,cAAc,CAAC,MAAM,GAAA,CACrE;;gBACK,eAAe,GAAW,YAAY,CAAC,MAAM;YACnD,IAAI,eAAe,GAAG,CAAC,EAAE;gBACvB,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC;aACzD;SACF;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE5C,IAAI,CAAC,eAAe,CAAC,OAAO;aACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC,UAAC,eAAqD;YAC/D,KAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,KAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;YACvC,KAAI,CAAC,mBAAmB,GAAG,IAAI,OAAO,EAAW,CAAC;YAClD,KAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;SACxC,CAAC,CAAC;KACN;;;;;;;;IAKM,gDAAO;;;;IAAd;QACE,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,eAAe,CAAC,OAAO,CAC1B,UAAC,cAAyC;gBACxC,cAAc,CAAC,IAAI,EAAE,CAAC;aACvB,CACF,CAAC;SACH;KACF;;;;;;;;IAKM,iDAAQ;;;;IAAf;QACE,IAAI,CAAC,eAAe,CAAC,OAAO,CAC1B,UAAC,cAAyC;YACxC,cAAc,CAAC,KAAK,EAAE,CAAC;SACxB,CACF,CAAC;KACH;;;;;IAEO,yDAAgB;;;;IAAxB,UACE,eAAqD;QADvD,iBAgCC;QA7BC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,eAAe,CAAC,OAAO,CAAC,UAAC,cAAyC;YAChE,cAAc,CAAC,QAAQ;iBACpB,IAAI,CAAC,SAAS,CAAC,KAAI,CAAC,mBAAmB,CAAC,CAAC;iBACzC,SAAS,CAAC;;oBACH,YAAY,GAAW,KAAI,CAAC,iBAAiB,CAAC,OAAO,CACzD,cAAc,CACf;gBACD,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;oBACvB,KAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;iBAChD;gBACD,KAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAE5C,IAAI,CAAC,KAAI,CAAC,MAAM,EAAE;oBAChB,KAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;iBACtC;aACF,CAAC,CAAC;YAEL,cAAc,CAAC,SAAS;iBACrB,IAAI,CAAC,SAAS,CAAC,KAAI,CAAC,mBAAmB,CAAC,CAAC;iBACzC,SAAS,CAAC;;oBACH,YAAY,GAAW,KAAI,CAAC,iBAAiB,CAAC,OAAO,CACzD,cAAc,CACf;gBACD,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;oBACvB,KAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;iBAChD;aACF,CAAC,CAAC;SACN,CAAC,CAAC;KACJ;;;;;IAEO,wDAAe;;;;IAAvB,UAAwB,cAAyC;QAC/D,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAC,KAAgC;YAC5D,IAAI,KAAK,KAAK,cAAc,EAAE;gBAC5B,KAAK,CAAC,KAAK,EAAE,CAAC;aACf;SACF,CAAC,CAAC;KACJ;;gBAvIF,SAAS,SAAC;oBACT,QAAQ,EAAE,0BAA0B;oBAEpC,qCAAqD;;iBACtD;;;;gBAjBC,SAAS;gBACT,UAAU;;;wBAgCT,KAAK,SAAC,OAAO;kCAUb,eAAe,SAAC,yBAAyB;;IA0G5C,qCAAC;CAxID;;;;;;ACdA;IAWM,kBAAkB,GAAgB;IACtC,8BAA8B;IAC9B,yBAAyB;IACzB,+BAA+B;IAC/B,8BAA8B;IAC9B,iCAAiC;IACjC,gCAAgC;CACjC;AAED;IAAA;KAgBC;;gBAhBA,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,YAAY;qBACb;oBACD,YAAY,EAAE;wBACZ,kBAAkB;qBACnB;oBACD,OAAO,EAAE;wBACP,kBAAkB;qBACnB;iBACF;;IAGD,mCAAC;CAhBD;;;;;;;;;;;;;;;;ACrBA;IAsCE,+BAAwC,KAAc;QAAd,UAAK,GAAL,KAAK,CAAS;QA5B9C,cAAS,GAAY,KAAK,CAAC;;;;;;;QAkBb,iBAAY,GAAkC,IAAI,YAAY,EAAmB,CAAC;KAWvG;IAtBD,sBACI,2CAAQ;;;;;;;;;;;;;QADZ,UACa,QAAiB;YAC5B,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;SAClD;;;OAAA;IAaD,sBACI,kDAAe;;;;;;;;QADnB;YAEE,OAAO,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,SAAS,CAAC;SACxC;;;OAAA;;;;;;;;;;;;;IAWD,wCAAQ;;;;;;;IADR,UACS,KAAY;QACnB,IAAI,KAAK,CAAC,MAAM,YAAY,gBAAgB,EAAE;;gBACxC,WAAW,uBAAwC,KAAK,CAAC,MAAM,GAAC;;gBAChE,KAAK,GAAa,WAAW,CAAC,KAAK;YACvC,IAAI,KAAK,CAAC,MAAM,EAAE;;oBACZ,KAAK,GAAoB,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;gBAC9F,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC5E;SACF;KACF;;gBAnDF,SAAS,SAAC;oBACT,QAAQ,EAAE,gBAAgB;iBAC3B;;;;gBAJQ,OAAO,uBAmCD,QAAQ,YAAI,IAAI;;;2BArB5B,KAAK,SAAC,UAAU;+BAWhB,MAAM,SAAC,YAAY;kCAKnB,WAAW,SAAC,eAAe;2BAa3B,YAAY,SAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;IAWpC,4BAAC;CApDD;;;;;;;ICCA;KAA8B;IAAD,qBAAC;CAAA,IAAA;;;AAG9B,IAAa,oBAAoB,GAAG,aAAa,CAAC,cAAc,CAAC;AAEjE;IAIyCA,uCAAoB;IAqC3D,6BAAoB,SAAoB,EAAU,QAAoB;QAAtE,YACE,iBAAO,SACR;QAFmB,eAAS,GAAT,SAAS,CAAW;QAAU,cAAQ,GAAR,QAAQ,CAAY;QAnC9D,eAAS,GAAY,KAAK,CAAC;;;;;;QAiBf,gBAAU,GAAkC,IAAI,YAAY,EAAmB,CAAC;;KAoBnG;IA9BD,sBACI,yCAAQ;;;;;;;;;;;;;QADZ,UACa,QAAiB;YAC5B,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;SAClD;;;OAAA;IAYD,sBACI,gDAAe;;;;;;;;QADnB;YAEE,OAAO,IAAI,CAAC,SAAS,GAAG,EAAE,GAAG,SAAS,CAAC;SACxC;;;OAAA;IAKD,sBACI,gDAAe;;;;;;;;QADnB;YAEE,OAAO,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,SAAS,CAAC;SACvC;;;OAAA;;;;;;;;;;;;;IAYD,oCAAM;;;;;;;IADN,UACO,KAAY;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;;gBACd,QAAQ,GAAiB,oBAAY,KAAK,IAAE,YAAY;;gBACxD,KAAK,GAAa,QAAQ,CAAC,KAAK;YACpC,IAAI,KAAK,CAAC,MAAM,EAAE;;oBACZ,KAAK,GAAoB,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;gBAC9F,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC7B;SACF;QACD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACxB;;;;;;;;;;;;;IAQD,wCAAU;;;;;;;IADV,UACW,KAAY;;YACjB,QAAQ,GAAiB,oBAAY,KAAK,IAAE,YAAY;QAC5D,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,SAAS;aAClC,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,oBAAM,QAAQ,IAAE,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE;YACtF,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC;SAC9B;aAAM;YACL,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC;SAC9B;QACD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACxB;;;;;;;;;;;IAOD,yCAAW;;;;;;IADX,UACY,KAAY;QACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;SACnE;QACD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACxB;;;;;;;;;;;IAOD,yCAAW;;;;;;IADX,UACY,KAAY;QACtB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACxB;;;;;;;;;IAKO,wCAAU;;;;;IAAlB,UAAmB,KAA4C;;YACzD,UAAU,GAAW,MAAM;QAC/B,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,oBAAM,KAAK,IAAE,QAAQ,IAAI,oBAAM,KAAK,IAAE,QAAQ,CAAC,OAAO,CAAC;oBACxD,oBAAM,KAAK,IAAE,OAAO,IAAI,oBAAM,KAAK,IAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBACjE,UAAU,GAAG,MAAM,CAAC;aACrB;SACF;QACD,OAAO,UAAU,CAAC;KACnB;;;;;IAEO,wCAAU;;;;IAAlB,UAAmB,KAAY;QAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;;gBAzHF,SAAS,SAAC;oBACT,QAAQ,EAAE,cAAc;oBACxB,MAAM,EAAE,CAAC,UAAU,CAAC;iBACrB;;;;gBAb+C,SAAS;gBAArB,UAAU;;;2BAuB3C,KAAK,SAAC,UAAU;6BAUhB,MAAM,SAAC,UAAU;kCAKjB,WAAW,SAAC,eAAe;kCAQ3B,WAAW,SAAC,eAAe;yBAc3B,YAAY,SAAC,MAAM,EAAE,CAAC,QAAQ,CAAC;6BAmB/B,YAAY,SAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;8BAiBnC,YAAY,SAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;8BAYpC,YAAY,SAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;IAwBvC,0BAAC;CAAA,CAtHwC,oBAAoB;;;;;;;ICJdA,6CAAuB;IACpE,mCAAY,WAA6B,EAAE,gBAAkC;eAC3E,kBAAM,WAAW,EAAE,gBAAgB,CAAC;KACrC;;gBANF,SAAS,SAAC;oBACT,QAAQ,EAAE,kCAAkC;iBAC7C;;;;gBAT+B,WAAW;gBAAE,gBAAgB;;IAc7D,gCAAC;CAAA,CAJ8C,uBAAuB,GAIrE;;IAGC,yBAAmB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;KAAI;IAC9D,sBAAC;CAAA,IAAA;;;AAGD,IAAa,qBAAqB,GAAG,yBAAyB,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AAE9F;IAY0CA,wCAAqB;IA0C7D,8BAAoB,SAAoB,EAAE,kBAAqC;QAA/E,YACE,kBAAM,kBAAkB,CAAC,SAC1B;QAFmB,eAAS,GAAT,SAAS,CAAW;QAxChC,eAAS,GAAY,KAAK,CAAC;;;;;;QAsCjB,cAAQ,GAAkC,IAAI,YAAY,EAAmB,CAAC;;KAI/F;IAtCD,sBAAI,8CAAY;;;;QAAhB;YACE,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;SACzC;;;OAAA;IAYD,sBACI,0CAAQ;;;;QAGZ;YACE,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;;;;;;;;QAND,UACa,QAAiB;YAC5B,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;SAClD;;;OAAA;;;;;;;;;IA0BD,2CAAY;;;;;IAAZ,UAAa,KAAsB;QACjC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;;;;;;;;IAKD,oCAAK;;;;IAAL;QACE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;KAC5D;;;;;;;IAGD,+CAAgB;;;;;IAAhB,UAAiB,CAAU;QACzB,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;KACF;;;;;;;;;IAID,+CAAgB;;;;;IAAhB,UAAiB,UAAmB;QAClC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;KAC5B;;gBArFF,SAAS,SAAC;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,SAAS,EAAE,CAAC;4BACV,OAAO,EAAE,iBAAiB;4BAC1B,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,oBAAoB,GAAA,CAAC;4BACnD,KAAK,EAAE,IAAI;yBACZ,CAAC;oBACF,QAAQ,EAAE,eAAe;oBACzB,MAAM,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;oBAE7B,ksBAA0C;;iBAC3C;;;;gBAlCoB,SAAS;gBAAiC,iBAAiB;;;gCAwC7E,SAAS,SAAC,WAAW;wBASrB,KAAK,SAAC,OAAO;2BAMb,KAAK,SAAC,UAAU;yBAahB,KAAK,SAAC,QAAQ;2BAOd,MAAM,SAAC,QAAQ;;IAkClB,2BAAC;CAAA,CA1EyC,qBAAqB;;;;;;;IC5B7D,0BAAmB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;KAAI;IAC9D,uBAAC;CAAA,IAAA;;;AAGD,IAAa,sBAAsB,GAAG,yBAAyB,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAEhG;IAY2CA,yCAAsB;IA+E/D,+BAAY,kBAAqC;QAAjD,YACE,kBAAM,kBAAkB,CAAC,SAC1B;QA/EO,eAAS,GAAY,KAAK,CAAC;QAC3B,eAAS,GAAY,KAAK,CAAC;;;;;QAUZ,kBAAY,GAAW,SAAS,CAAC;;;;;QAMlC,iBAAW,GAAW,QAAQ,CAAC;;;;;QAM/B,iBAAW,GAAW,MAAM,CAAC;;;;;;QAuCjC,cAAQ,GAAkC,IAAI,YAAY,EAAmB,CAAC;;;;;;QAO9E,cAAQ,GAAkC,IAAI,YAAY,EAAmB,CAAC;;;;;QAM9E,cAAQ,GAAuB,IAAI,YAAY,EAAQ,CAAC;;KAIzE;IAlDD,sBACI,2CAAQ;;;;QAGZ;YACE,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;;;;;;;;QAND,UACa,QAAiB;YAC5B,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;SAClD;;;OAAA;IAUD,sBACI,2CAAQ;;;;QAGZ;YACE,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;;;;;;;;;;QAND,UACa,QAAiB;YAC5B,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;SAClD;;;OAAA;;;;;;;;IAuCD,6CAAa;;;;IAAb;QACE,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAChC;KACF;;;;;;;;;IAKD,4CAAY;;;;;IAAZ,UAAa,KAAsB;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;;;;;;;;;;IAMD,sCAAM;;;;;IAAN;QACE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;QAE9B,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;SACxB;KACF;;;;;;;IAGD,gDAAgB;;;;;IAAhB,UAAiB,CAAU;QACzB,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;KACF;;gBAlIF,SAAS,SAAC;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,SAAS,EAAE,CAAC;4BACV,OAAO,EAAE,iBAAiB;4BAC1B,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,qBAAqB,GAAA,CAAC;4BACpD,KAAK,EAAE,IAAI;yBACZ,CAAC;oBACF,QAAQ,EAAE,gBAAgB;oBAC1B,MAAM,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;oBAE7B,o+BAA2C;;iBAC5C;;;;gBAzBkG,iBAAiB;;;4BA+BjH,SAAS,SAAC,oBAAoB;6BAE9B,YAAY,SAAC,yBAAyB;+BAMtC,KAAK,SAAC,cAAc;8BAMpB,KAAK,SAAC,aAAa;8BAMnB,KAAK,SAAC,aAAa;2BAMnB,KAAK,SAAC,UAAU;2BAahB,KAAK,SAAC,UAAU;yBAahB,KAAK,SAAC,QAAQ;2BAOd,MAAM,SAAC,QAAQ;2BAOf,MAAM,SAAC,QAAQ;2BAMf,MAAM,SAAC,QAAQ;;IA0ClB,4BAAC;CAAA,CAvH0C,sBAAsB;;;;;;AC1BjE;IAyBE;QAXQ,qBAAgB,GAAoB,IAAI,OAAO,EAAU,CAAC;QAYhE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KACjE;IAND,sBAAI,mCAAQ;;;;;;;;;;QAAZ;YACE,OAAO,IAAI,CAAC,mBAAmB,CAAC;SACjC;;;OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmBD,8BAAM;;;;;;;;;;;;;;;IAAN,UAAO,OAAuB;QAA9B,iBA0CC;QAzCC,OAAO,IAAI,UAAU,CAAM,UAAC,UAA2B;;gBACjD,GAAG,GAAmB,IAAI,cAAc,EAAE;;gBAC1C,QAAQ,GAAa,IAAI,QAAQ,EAAE;YAEvC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;gBAC9B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;aACvC;iBAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE;gBACzC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;aAC7B;iBAAM;gBACL,OAAO,UAAU,CAAC,KAAK,CAAC,oFAAoF,CAAC,CAAC;aAC/G;YAED,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,UAAC,KAAoB;;oBACvC,QAAQ,GAAW,CAAC;gBACxB,IAAI,KAAK,CAAC,gBAAgB,EAAE;oBAC1B,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;iBACzD;gBACD,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACtC,CAAC;YAEF,GAAG,CAAC,kBAAkB,GAAG;gBACvB,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,EAAE;oBACxB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;wBACzC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAC9B,UAAU,CAAC,QAAQ,EAAE,CAAC;qBACvB;yBAAM;wBACL,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;qBAChC;iBACF;aACF,CAAC;YAEF,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC5C,GAAG,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;YAC3D,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,KAAK,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE;oBAC/B,GAAG,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;iBACjD;aACF;YAED,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACpB,CAAC,CAAC;KACJ;;gBAzEF,UAAU;;;;IA0EX,oBAAC;CA1ED;;;;;;ACVA;IAeM,OAAO,GAAgB;IAC3B,qBAAqB;IACrB,mBAAmB;IACnB,qBAAqB;IACrB,oBAAoB;IACpB,yBAAyB;CAC1B;AAED;IAAA;KAoBC;;gBApBA,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,WAAW;wBACX,YAAY;wBACZ,aAAa;wBACb,eAAe;wBACf,YAAY;qBACb;oBACD,YAAY,EAAE;wBACZ,OAAO;qBACR;oBACD,OAAO,EAAE;wBACP,OAAO;qBACR;oBACD,SAAS,EAAE;wBACT,aAAa;qBACd;iBACF;;IAGD,yBAAC;CApBD;;;;;;;;;;;;;;;;ACxBA;IA6FE,kCAAoB,kBAAqC,EACzB,IAAS;QADrB,uBAAkB,GAAlB,kBAAkB,CAAmB;QACzB,SAAI,GAAJ,IAAI,CAAK;QA7DjC,UAAK,GAAY,KAAK,CAAC;QACvB,gBAAW,GAAW,CAAC,CAAC;KA6D/B;IAvDD,sBACI,gDAAU;;;;QAOd;YACE,OAAO,IAAI,CAAC,WAAW,CAAC;SACzB;;;;;;;;;;;QAVD,UACe,UAAkB;YAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;gBACjC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;aACzD;YACD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC;SAC7B;;;OAAA;IAKD,sBAAI,0CAAI;;;;QAAR;YACE,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;;;OAAA;IAMD,sBACI,yCAAG;;;;QAGP;;gBACM,OAAO,GAAW,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,wBAAwB,CAAC,cAAc,GAAG,GAAG,GAAG,EAAE;YACxG,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,wBAAwB,CAAC,cAAc,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;SAC1G;;;;;;;;;;;QAPD,UACQ,GAAW;YACjB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;SACjB;;;OAAA;IAUD,sBACI,0CAAI;;;;QAIR;YACE,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;;;;;;;;;;;QAPD,UACS,IAAS;YAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;;;OAAA;IAKD,sBAAI,8CAAQ;;;;QAAZ;YACE,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;OAAA;IAED,sBAAI,2CAAK;;;;QAAT;YACE,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC;aAChC;YACD,OAAO,KAAK,CAAC;SACd;;;OAAA;;;;;;;;IASD,0CAAO;;;;IAAP;QACE,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;;;;;IAKD,yCAAM;;;;IAAN;QACE,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;KAC1B;;;;IAED,2CAAQ;;;IAAR;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC;KAC9C;;;;IAED,0CAAO;;;IAAP;QACE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC;;;;IAED,8CAAW;;;IAAX;QACE,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;KACpD;;;;;;;;;IAKD,2CAAQ;;;;;IAAR,UAAS,KAAU;;YACb,IAAI,GAAW,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACtC,IAAI,IAAI,KAAK,WAAW,KAAK,IAAI,KAAK,MAAM,CAAC,EAAE;YAC7C,OAAO,IAAI,CAAC;SACb;aAAM,IAAI,IAAI,KAAK,MAAM,EAAE;YAC1B,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;SACpC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;YAC5B,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC;SAC3B;aAAM,IAAI,IAAI,KAAK,UAAU,EAAE;;YAE9B,OAAO,KAAK,CAAC,QAAQ,EAAE;iBAClB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;iBACtB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;SACpC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC/B,OAAO,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;SACzD;QACD,OAAO,KAAK,CAAC;KACd;;;;;;;;;;;IAMD,0CAAO;;;;;;IAAP,UAAQ,MAAW;QACjB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO,MAAM,CAAC;aACf;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACzB,OAAO,QAAQ,CAAC;aACjB;;gBACG,IAAI,GAAS,IAAI,IAAI,CAAC,MAAM,CAAC;YACjC,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,eAAe,EAAE;gBAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;oBACjC,OAAO,MAAM,CAAC;iBACf;aACF;SACF;QACD,OAAO,OAAO,MAAM,CAAC;KACtB;;;;;;;;;;IAMD,gDAAa;;;;;IAAb;;YACM,MAAM,GAAQ,IAAI,CAAC,KAAK;QAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YACxC,OAAO,QAAQ,CAAC;SACnB;;YACG,aAAa,GAAW,oBAAoB;;YAC5C,OAAO,GAAoB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;QACpF,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;SACnB;aAAM;YACL,OAAO,EAAE,CAAC;SACX;KACF;;;;;;;;IAKD,6CAAU;;;;IAAV;QAAA,iBAsBC;;YArBK,WAAqB;;YACrB,SAAS,GAAW,IAAI;;YACxB,OAAO,GAAW,IAAI;QAC1B,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;;gBACd,YAAY,GAAU,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,aAAa,CAAC;YACrF,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,UAAC,GAAQ;gBACtC,OAAO,KAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aAC3B,CAAC,CAAC;YACH,SAAS,GAAG,GAAG,CAAC;YAChB,OAAO,GAAG,GAAG,CAAC;SACf;aAAM;;gBACD,WAAW,GAAa,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,aAAa,CAAC;YAC3F,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,UAAC,GAAW;gBACxC,OAAO,GAAG,GAAG,IAAI,GAAG,KAAI,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;aACpD,CAAC,CAAC;SACJ;;YACG,aAAa,GAAY,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;YAC/C,QAAQ,GAAW,WAAW,CAAC,MAAM,IAAI,wBAAwB,CAAC,aAAa;YAC5D,aAAa,CAAC,MAAM,GAAG,wBAAwB,CAAC,yBAAyB,GAAG,GAAG,GAAG,EAAE;QAC3G,OAAO,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,wBAAwB,CAAC,yBAAyB,CAAC;YAC1F,QAAQ,GAAG,OAAO,CAAC;KAC3B;;;;IAEO,gDAAa;;;IAArB;QACE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;gBAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC1B;SACF;KACF;;;;IAzMc,uCAAc,GAAW,EAAE,CAAC;;;;IAK5B,kDAAyB,GAAW,EAAE,CAAC;;;;IAKvC,sCAAa,GAAW,CAAC,CAAC;;gBAxB1C,SAAS,SAAC;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,QAAQ,EAAE,mBAAmB;oBAE7B,0rCAA8C;oBAC9C,UAAU,EAAE;wBACV,mBAAmB;qBACpB;;iBACF;;;;gBAZmD,iBAAiB;gBAC5D,GAAG,uBA6FG,QAAQ;;;6BAtDpB,KAAK,SAAC,YAAY;sBAoBlB,KAAK,SAAC,KAAK;uBAaX,KAAK,SAAC,MAAM;;IAoJf,+BAAC;CAzND;;;;;;ACJA;IAQA;KAeC;;gBAfA,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,aAAa;qBACd;oBACD,YAAY,EAAE;wBACZ,wBAAwB;qBACzB;oBACD,OAAO,EAAE;wBACP,wBAAwB;qBACzB;iBACF;;IAGD,kCAAC;CAfD;;;;;;;;;;;;;;;;ACRA;IAMA;;;;;;;;;;QAkBiB,SAAI,GAA6B,MAAM,CAAC;;;;;;;;;;;QAYtC,WAAM,GAAY,KAAK,CAAC;;;;;;;;;QAUlB,iBAAY,GAAW,OAAO,CAAC;;;;;;;;;;;QAY1B,sBAAiB,GAAY,KAAK,CAAC;KA+BhE;IAzBC,sBAAI,2CAAY;;;;;;;;;;QAAhB;YACE,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;SAC7B;;;OAAA;;;;;;;;IAKM,kCAAM;;;;IAAb;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KAClD;;;;;;;;IAKM,gCAAI;;;;IAAX;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KAC5B;;;;;;;;IAKM,iCAAK;;;;IAAZ;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KAC7B;;gBAjFF,SAAS,SAAC;oBACT,QAAQ,EAAE,WAAW;oBAErB,kjBAAsC;;iBACvC;;;0BAGE,SAAS,SAAC,UAAU;uBAWpB,KAAK,SAAC,MAAM;yBAYZ,KAAK,SAAC,QAAQ;+BAUd,KAAK,SAAC,cAAc;oCAYpB,KAAK,SAAC,mBAAmB;;IA+B5B,wBAAC;CAnFD;;;;;;;ICUA;KAAiC;IAAD,uBAAC;CAAA,IAAA;;;AAGjC,IAAa,wBAAwB,GAAG,aAAa,CAAC,gBAAgB,CAAC;;;;AAEvE;IAA2CA,gCAAwB;IAoBjE,sBAAsB,OAAyB,EAC3B,SAAoB,EACpB,WAAuB;QAF3C,YAGE,iBAAO,SAOR;QAVqB,aAAO,GAAP,OAAO,CAAkB;QAC3B,eAAS,GAAT,SAAS,CAAW;QACpB,iBAAW,GAAX,WAAW,CAAY;QAlBnC,kBAAY,GAAY,KAAK,CAAC;QAC9B,qBAAe,GAAY,KAAK,CAAC;;;QAqBvC,IAAI,CAAC,KAAI,CAAC,OAAO,EAAE;YACjB,KAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;QACD,KAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAI,CAAC,WAAW,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;;KAClF;IAlBD,sBACI,wCAAc;;;;;;;;;;;;;QADlB,UACmB,cAAuB;YACxC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;YACtC,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B;SACF;;;OAAA;;;;IAcD,sCAAe;;;IAAf;QAAA,iBAUC;QATC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBAClE,KAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B,CAAC,CAAC;SACJ;;;QAGD,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;;;;IAED,kCAAW;;;IAAX;QACE,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;SAC9B;KACF;;;;;;;;;IAMD,oCAAa;;;;;IADb,UACc,KAAY;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;;;YAGlB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBACrC,IAAI,CAAC,OAAO,EAAE,CAAC;aAChB;iBAAM;gBACL,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACzB;SACF;KACF;;;;IAIO,wCAAiB;;;IAAzB;QACE,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE;gBACvD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;aAC5E;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;aACxE;SACF;KACF;;;;IAEO,uCAAgB;;;IAAxB;;QAEE,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;KAC/E;;iCAvEA,KAAK,SAAC,gBAAgB;gCA0CtB,YAAY,SAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;IA+BnC,mBAAC;CAAA,CArF0C,wBAAwB;;;;;;;ICdtBA,2CAAY;IAOvD,iCAAqE,MAAyB,EAClF,QAAmB,EACnB,UAAsB;eAChC,kBAAM,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC;KACpC;IATD,sBACI,mDAAc;;;;;QADlB,UACmB,cAAuB;YACxC,IAAI,CAAC,QAAQ,GAAG,EAAE,mBAAK,cAAc,OAAK,EAAE,IAAI,cAAc,CAAC,CAAC;SACjE;;;OAAA;;;;IAQD,yCAAO;;;IAAP;QACE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;KACvB;;gBAlBF,SAAS,SAAC;oBACT,QAAQ,EAAE,kBAAkB;iBAC7B;;;;gBALQ,iBAAiB,uBAaX,QAAQ,YAAI,MAAM,SAAC,UAAU,CAAC,cAAM,OAAA,iBAAiB,GAAA,CAAC;gBAdhC,SAAS;gBAAE,UAAU;;;iCASvD,KAAK,SAAC,gBAAgB;;IAczB,8BAAC;CAAA,CAhB4C,YAAY,GAgBxD;;IAK2CA,0CAAY;IAOtD,gCAAqE,MAAyB,EAClF,QAAmB,EACnB,UAAsB;eAChC,kBAAM,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC;KACpC;IATD,sBACI,iDAAa;;;;;QADjB,UACkB,aAAsB;YACtC,IAAI,CAAC,QAAQ,GAAG,EAAE,mBAAK,aAAa,OAAK,EAAE,IAAI,aAAa,CAAC,CAAC;SAC/D;;;OAAA;;;;IAQD,wCAAO;;;IAAP;QACE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACtB;;gBAlBF,SAAS,SAAC;oBACT,QAAQ,EAAE,iBAAiB;iBAC5B;;;;gBA1BQ,iBAAiB,uBAkCX,QAAQ,YAAI,MAAM,SAAC,UAAU,CAAC,cAAM,OAAA,iBAAiB,GAAA,CAAC;gBAnChC,SAAS;gBAAE,UAAU;;;gCA8BvD,KAAK,SAAC,eAAe;;IAcxB,6BAAC;CAAA,CAhB2C,YAAY,GAgBvD;;IAK0CA,yCAAY;IAOrD,+BAAqE,MAAyB,EAClF,QAAmB,EACnB,UAAsB;eAChC,kBAAM,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC;KACpC;IATD,sBACI,gDAAa;;;;;QADjB,UACkB,YAAqB;YACrC,IAAI,CAAC,QAAQ,GAAG,EAAE,mBAAK,YAAY,OAAK,EAAE,IAAI,YAAY,CAAC,CAAC;SAC7D;;;OAAA;;;;IAQD,uCAAO;;;IAAP;QACE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACrB;;gBAlBF,SAAS,SAAC;oBACT,QAAQ,EAAE,gBAAgB;iBAC3B;;;;gBA/CQ,iBAAiB,uBAuDX,QAAQ,YAAI,MAAM,SAAC,UAAU,CAAC,cAAM,OAAA,iBAAiB,GAAA,CAAC;gBAxDhC,SAAS;gBAAE,UAAU;;;gCAmDvD,KAAK,SAAC,cAAc;;IAcvB,4BAAC;CAAA,CAhB0C,YAAY;;;;;;ACjDvD;IAuDE,8BAAgC,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;;;;;;;QAhB/B,UAAK,GAAW,SAAS,CAAC;KAgBS;IAJnD,sBAAI,+CAAa;;;;;;;;QAAjB;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;SACjD;;;OAAA;;;;IAID,oDAAqB;;;IAArB;QACE,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAClD;KACF;;gBAzDF,SAAS,SAAC;oBACT,QAAQ,EAAE,eAAe;oBAEzB,yyBAA0C;;iBAC3C;;;;gBAPQ,MAAM,uBAsDA,QAAQ;;;+BAvCpB,KAAK,SAAC,cAAc;uBAOpB,KAAK,SAAC,MAAM;uBAQZ,KAAK,SAAC,MAAM;wBAQZ,KAAK,SAAC,OAAO;kCAOb,KAAK,SAAC,iBAAiB;;IAgB1B,2BAAC;CA1DD;;;;;;ACJA;IA+GE,kCAAgC,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;;;;;;;QApE/B,UAAK,GAAW,SAAS,CAAC;;;;;;;;;;QAW3B,SAAI,GAA6B,MAAM,CAAC;;;;;;;;;;QAWtC,WAAM,GAAY,IAAI,CAAC;;;;;;;;;QAUjB,iBAAY,GAAW,OAAO,CAAC;;;;;;;;;;;QAY1B,sBAAiB,GAAY,KAAK,CAAC;KAwBZ;IAXnD,sBAAI,kDAAY;;;;;;;;;;QAAhB;YACE,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;SAC7B;;;OAAA;IAKD,sBAAI,mDAAa;;;;;;;;QAAjB;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;SACjD;;;OAAA;;;;IAID,wDAAqB;;;IAArB;QACE,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAClD;KACF;;;;;;;;IAKM,yCAAM;;;;IAAb;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KAClD;;;;;;;;IAKM,uCAAI;;;;IAAX;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KAC5B;;;;;;;;IAKM,wCAAK;;;;IAAZ;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KAC7B;;gBAnIF,SAAS,SAAC;oBACT,QAAQ,EAAE,oBAAoB;oBAE9B,wrDAA+C;;iBAChD;;;;gBAVQ,MAAM,uBA8GA,QAAQ;;;0BAjGpB,SAAS,SAAC,UAAU;+BAOpB,KAAK,SAAC,cAAc;uBAMpB,KAAK,SAAC,MAAM;uBAQZ,KAAK,SAAC,MAAM;wBAQZ,KAAK,SAAC,OAAO;uBAWb,KAAK,SAAC,MAAM;yBAWZ,KAAK,SAAC,QAAQ;+BAUd,KAAK,SAAC,cAAc;oCAYpB,KAAK,SAAC,mBAAmB;kCAOzB,KAAK,SAAC,iBAAiB;;IA8C1B,+BAAC;CArID;;;;;;;ICAoDA,kDAAY;IAO9D,wCAA4E,MAAgC,EAChG,QAAmB,EACnB,UAAsB;eAChC,kBAAM,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC;KACpC;IATD,sBACI,iEAAqB;;;;;QADzB,UAC0B,qBAA8B;YACtD,IAAI,CAAC,QAAQ,GAAG,EAAE,mBAAK,qBAAqB,OAAK,EAAE,IAAI,qBAAqB,CAAC,CAAC;SAC/E;;;OAAA;;;;IAQD,gDAAO;;;IAAP;QACE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;KACvB;;gBAlBF,SAAS,SAAC;oBACT,QAAQ,EAAE,yBAAyB;iBACpC;;;;gBALQ,wBAAwB,uBAalB,QAAQ,YAAI,MAAM,SAAC,UAAU,CAAC,cAAM,OAAA,wBAAwB,GAAA,CAAC;gBAdvC,SAAS;gBAAE,UAAU;;;wCASvD,KAAK,SAAC,uBAAuB;;IAchC,qCAAC;CAAA,CAhBmD,YAAY,GAgB/D;;IAKkDA,iDAAY;IAO7D,uCAA4E,MAAgC,EAChG,QAAmB,EACnB,UAAsB;eAChC,kBAAM,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC;KACpC;IATD,sBACI,+DAAoB;;;;;QADxB,UACyB,oBAA6B;YACpD,IAAI,CAAC,QAAQ,GAAG,EAAE,mBAAK,oBAAoB,OAAK,EAAE,IAAI,oBAAoB,CAAC,CAAC;SAC7E;;;OAAA;;;;IAQD,+CAAO;;;IAAP;QACE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACtB;;gBAlBF,SAAS,SAAC;oBACT,QAAQ,EAAE,wBAAwB;iBACnC;;;;gBA1BQ,wBAAwB,uBAkClB,QAAQ,YAAI,MAAM,SAAC,UAAU,CAAC,cAAM,OAAA,wBAAwB,GAAA,CAAC;gBAnCvC,SAAS;gBAAE,UAAU;;;uCA8BvD,KAAK,SAAC,sBAAsB;;IAc/B,oCAAC;CAAA,CAhBkD,YAAY,GAgB9D;;IAKiDA,gDAAY;IAO5D,sCAA4E,MAAgC,EAChG,QAAmB,EACnB,UAAsB;eAChC,kBAAM,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC;KACpC;IATD,sBACI,6DAAmB;;;;;QADvB,UACwB,mBAA4B;YAClD,IAAI,CAAC,QAAQ,GAAG,EAAE,mBAAK,mBAAmB,OAAK,EAAE,IAAI,mBAAmB,CAAC,CAAC;SAC3E;;;OAAA;;;;IAQD,8CAAO;;;IAAP;QACE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACrB;;gBAlBF,SAAS,SAAC;oBACT,QAAQ,EAAE,uBAAuB;iBAClC;;;;gBA/CQ,wBAAwB,uBAuDlB,QAAQ,YAAI,MAAM,SAAC,UAAU,CAAC,cAAM,OAAA,wBAAwB,GAAA,CAAC;gBAxDvC,SAAS;gBAAE,UAAU;;;sCAmDvD,KAAK,SAAC,qBAAqB;;IAc9B,mCAAC;CAAA,CAhBiD,YAAY;;;;;;ACjD9D;IAGA;;;;;;;QA2BsB,cAAS,GAAW,EAAE,CAAC;;;;;;;QAQ3B,UAAK,GAAW,SAAS,CAAC;KAE3C;;gBArCA,SAAS,SAAC;oBACT,QAAQ,EAAE,qBAAqB;oBAE/B,msBAAgD;;iBACjD;;;4BAQE,KAAK,SAAC,WAAW;+BAOjB,KAAK,SAAC,cAAc;4BAQpB,KAAK,SAAC,WAAW;wBAQjB,KAAK,SAAC,OAAO;;IAEhB,gCAAC;CArCD;;;;;;ACHA;IAMA;;;;;;;;;;QAkBiB,SAAI,GAA6B,MAAM,CAAC;;;;;;;;;;;QAYtC,WAAM,GAAY,IAAI,CAAC;;;;;;;;;QAUjB,iBAAY,GAAW,OAAO,CAAC;;;;;;;;;;;QAY1B,sBAAiB,GAAY,KAAK,CAAC;KA+BhE;IAzBC,sBAAI,qDAAY;;;;;;;;;;QAAhB;YACE,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;SAC7B;;;OAAA;;;;;;;;IAKM,4CAAM;;;;IAAb;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KAClD;;;;;;;;IAKM,0CAAI;;;;IAAX;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KAC5B;;;;;;;;IAKM,2CAAK;;;;IAAZ;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KAC7B;;gBAjFF,SAAS,SAAC;oBACT,QAAQ,EAAE,uBAAuB;oBAEjC,m6BAAkD;;iBACnD;;;0BAGE,SAAS,SAAC,UAAU;uBAWpB,KAAK,SAAC,MAAM;yBAYZ,KAAK,SAAC,QAAQ;+BAUd,KAAK,SAAC,cAAc;oCAYpB,KAAK,SAAC,mBAAmB;;IA+B5B,kCAAC;CAnFD;;;;;;;ICCuDA,qDAAY;IAOjE,2CAA+E,MAAmC,EACtG,QAAmB,EACnB,UAAsB;eAChC,kBAAM,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC;KACpC;IATD,sBACI,uEAAwB;;;;;QAD5B,UAC6B,wBAAiC;YAC5D,IAAI,CAAC,QAAQ,GAAG,EAAE,mBAAK,wBAAwB,OAAK,EAAE,IAAI,wBAAwB,CAAC,CAAC;SACrF;;;OAAA;;;;IAQD,mDAAO;;;IAAP;QACE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;KACvB;;gBAlBF,SAAS,SAAC;oBACT,QAAQ,EAAE,4BAA4B;iBACvC;;;;gBALQ,2BAA2B,uBAarB,QAAQ,YAAI,MAAM,SAAC,UAAU,CAAC,cAAM,OAAA,2BAA2B,GAAA,CAAC;gBAd1C,SAAS;gBAAE,UAAU;;;2CASvD,KAAK,SAAC,0BAA0B;;IAcnC,wCAAC;CAAA,CAhBsD,YAAY,GAgBlE;;IAKqDA,oDAAY;IAOhE,0CAA+E,MAAmC,EACtG,QAAmB,EACnB,UAAsB;eAChC,kBAAM,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC;KACpC;IATD,sBACI,qEAAuB;;;;;QAD3B,UAC4B,uBAAgC;YAC1D,IAAI,CAAC,QAAQ,GAAG,EAAE,mBAAK,uBAAuB,OAAK,EAAE,IAAI,uBAAuB,CAAC,CAAC;SACnF;;;OAAA;;;;IAQD,kDAAO;;;IAAP;QACE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACtB;;gBAlBF,SAAS,SAAC;oBACT,QAAQ,EAAE,2BAA2B;iBACtC;;;;gBA1BQ,2BAA2B,uBAkCrB,QAAQ,YAAI,MAAM,SAAC,UAAU,CAAC,cAAM,OAAA,2BAA2B,GAAA,CAAC;gBAnC1C,SAAS;gBAAE,UAAU;;;0CA8BvD,KAAK,SAAC,yBAAyB;;IAclC,uCAAC;CAAA,CAhBqD,YAAY,GAgBjE;;IAKoDA,mDAAY;IAO/D,yCAA+E,MAAmC,EACtG,QAAmB,EACnB,UAAsB;eAChC,kBAAM,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC;KACpC;IATD,sBACI,mEAAsB;;;;;QAD1B,UAC2B,sBAA+B;YACxD,IAAI,CAAC,QAAQ,GAAG,EAAE,mBAAK,sBAAsB,OAAK,EAAE,IAAI,sBAAsB,CAAC,CAAC;SACjF;;;OAAA;;;;IAQD,iDAAO;;;IAAP;QACE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACrB;;gBAlBF,SAAS,SAAC;oBACT,QAAQ,EAAE,0BAA0B;iBACrC;;;;gBA/CQ,2BAA2B,uBAuDrB,QAAQ,YAAI,MAAM,SAAC,UAAU,CAAC,cAAM,OAAA,2BAA2B,GAAA,CAAC;gBAxD1C,SAAS;gBAAE,UAAU;;;yCAmDvD,KAAK,SAAC,wBAAwB;;IAcjC,sCAAC;CAAA,CAhBoD,YAAY;;;;;;ACjDjE;IA6BE,iCAAoB,SAAoB,EACpB,WAAuB;QADvB,cAAS,GAAT,SAAS,CAAW;QACpB,gBAAW,GAAX,WAAW,CAAY;QACzC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;KAC7E;IAfD,sBACI,0CAAK;;;;QAOT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;;;;;;;;;;;QAVD,UACU,KAAoC;YAC5C,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;aAC/E;SACF;;;OAAA;;gBAtBF,SAAS,SAAC;;oBAET,QAAQ,EAAE,yCAAyC;oBAEnD,uCAA6C;;iBAC9C;;;;gBAP0B,SAAS;gBAAE,UAAU;;;wBAiB7C,KAAK,SAAC,OAAO;;IAiBhB,8BAAC;CAhCD;;;;;;ACFA;IAYA;KAKC;;gBALA,SAAS,SAAC;oBACT,QAAQ,EAAE,6BAA6B;iBACxC;;IAGD,sCAAC;CALD,IAKC;;IAED;KAKC;;gBALA,SAAS,SAAC;oBACT,QAAQ,EAAE,gCAAgC;iBAC3C;;IAGD,yCAAC;CALD,IAKC;;IAiIC,qCAAiE,OAA0B,EAC3D,OAAe,EAC3B,SAAuB;QAFsB,YAAO,GAAP,OAAO,CAAmB;QAC3D,YAAO,GAAP,OAAO,CAAQ;QAC3B,cAAS,GAAT,SAAS,CAAc;QAxHnC,iBAAY,GAAY,KAAK,CAAC;KAwHS;IArH/C,sBAAI,oDAAW;;;;QAAf;YACE,OAAO,IAAI,CAAC,YAAY,CAAC;SAC1B;;;OAAA;IASD,sBAAI,wDAAe;;;;;;;;QAAnB;YACE,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;SAC/D;;;OAAA;IAKD,sBAAI,wDAAe;;;;;;;;QAAnB;YACE,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;SACzD;;;OAAA;IAKD,sBAAI,8DAAqB;;;;;;;;QAAzB;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;SAChC;;;OAAA;IAoDD,sBAGI,sDAAa;;;;;;;;;;;;;;;QAHjB,UAGkB,aAAkB;YAClC,IAAI,aAAa,EAAE;;oBACb,YAAY,GAAW,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,aAAa,CAAC;gBAC/F,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,GAAG,CAAC,CAAC;aACrG;SACF;;;OAAA;IACD,sBAAI,wDAAe;;;;QAAnB;YACE,OAAO,IAAI,CAAC,gBAAgB,CAAC;SAC9B;;;OAAA;IAqBD,sBAAI,sDAAa;;;;;;;;QAAjB;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;SACjD;;;OAAA;;;;IAMD,8CAAQ;;;IAAR;QAAA,iBAMC;QALC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,MAAe;YACpF,IAAI,CAAC,MAAM,EAAE;gBACX,KAAI,CAAC,YAAY,GAAG,KAAK,CAAC;aAC3B;SACF,CAAC,CAAC;KACJ;;;;IAED,iDAAW;;;IAAX;QACE,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;YACtC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;SACrC;KACF;;;;IAED,gDAAU;;;IAAV;QACE,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;SACxC;KACF;;;;IAED,2DAAqB;;;IAArB;QACE,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACjD,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;KACF;;;;;;;;IAKM,4CAAM;;;;IAAb;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;KAC9B;;;;;;;;IAKM,0CAAI;;;;IAAX;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KAC5B;;;;;;;;IAKM,2CAAK;;;;IAAZ;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KAC7B;;gBAlLF,SAAS,SAAC;oBACT,QAAQ,EAAE,sBAAsB;oBAEhC,2wDAAiD;oBACjD,UAAU,EAAE,CAAE,mBAAmB,CAAE;;iBACpC;;;;gBAvBQ,iBAAiB,uBAiJX,MAAM,SAAC,UAAU,CAAC,cAAM,OAAA,iBAAiB,GAAA,CAAC;gBAvJhD,MAAM,uBAwJA,QAAQ;gBAvJc,YAAY;;;8BAuC9C,eAAe,SAAC,+BAA+B;2BAE/C,eAAe,SAAC,kCAAkC;+BA2BlD,KAAK,SAAC,cAAc;uBAOpB,KAAK,SAAC,MAAM;uBAQZ,KAAK,SAAC,MAAM;yBAQZ,KAAK,SAAC,QAAQ;wBAQd,KAAK,SAAC,OAAO;kCAOb,KAAK,SAAC,iBAAiB;gCAQvB,KAAK,SAAC,eAAe;uBAmBrB,KAAK,SAAC,MAAM;wBAQZ,KAAK,SAAC,OAAO;;IA6DhB,kCAAC;CAnLD;;;;;;ACzBA;IA6BM,UAAU,GAAgB;IAC9B,iBAAiB;IACjB,uBAAuB;IACvB,sBAAsB;IACtB,qBAAqB;IAErB,oBAAoB;IAEpB,wBAAwB;IACxB,8BAA8B;IAC9B,6BAA6B;IAC7B,4BAA4B;IAE5B,yBAAyB;IAEzB,2BAA2B;IAC3B,iCAAiC;IACjC,gCAAgC;IAChC,+BAA+B;IAE/B,uBAAuB;IAEvB,2BAA2B;IAC3B,+BAA+B;IAC/B,kCAAkC;CACnC;AAED;IAAA;KAoBC;;gBApBA,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,YAAY;wBACZ,oBAAoB;wBACpB,gBAAgB;wBAChB,gBAAgB;wBAChB,eAAe;wBACf,aAAa;wBACb,aAAa;wBACb,gBAAgB;qBACjB;oBACD,YAAY,EAAE;wBACZ,UAAU;qBACX;oBACD,OAAO,EAAE;wBACP,UAAU;qBACX;iBACF;;IAGD,2BAAC;CApBD;;;;;;;;;;;;;;;;ACzDA;;IAME,UAAW,UAAU;IACrB,QAAS,QAAQ;;;;IAIjB,aAAc,aAAa;IAC3B,eAAgB,eAAe;;;;IAI/B,SAAU,SAAS;IACnB,SAAU,SAAS;;;;IAInB,YAAa,YAAY;IACzB,SAAU,SAAS;IACnB,MAAO,MAAM;;;AAKf,IAAa,kBAAkB,GAAW,GAAG;AAE7C;IAqEE,4BAAoB,WAAuB,EACvB,kBAAqC;QADrC,gBAAW,GAAX,WAAW,CAAY;QACvB,uBAAkB,GAAlB,kBAAkB,CAAmB;QA5DjD,iBAAY,GAAiB,IAAI,OAAO,EAAO,CAAC;QAChD,kBAAa,GAAiB,IAAI,OAAO,EAAO,CAAC;QACjD,UAAK,GAAgB,WAAW,CAAC,aAAa,CAAC;QAC/C,iBAAY,GAAgB,WAAW,CAAC,aAAa,CAAC;QACtD,WAAM,GAAW,CAAC,CAAC;QACnB,oBAAe,GAAW,kBAAkB,CAAC;;;;QAKrD,cAAS,GAAY,KAAK,CAAC;QA6B3B,UAAK,GAAiB,YAAY,CAAC,IAAI,CAAC;;;;;QAYxC,SAAI,GAAgB,WAAW,CAAC,QAAQ,CAAC;;;;;QAMzC,UAAK,GAAkC,SAAS,CAAC;KAGY;IAxC7D,sBAAI,oCAAI;;;;QAGR;YACE,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;;;;;;;;;QALD,UAAS,IAAiB;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC1B;;;OAAA;IAQD,sBAAI,qCAAK;;;;QAKT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;;;;;;;QAPD,UAAU,KAAa;YACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;;YAEpB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;;;OAAA;;;;IA4BD,sCAAS;;;IAAT;;;QAGE,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE;YAC9C,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;aACxC;SACF;KACF;;;;IAED,sCAAS;;;IAAT;;;QAGE,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YAC3C,OAAO,SAAS,CAAC;SAClB;aAAM;YACL,OAAO,IAAI,CAAC,MAAM,GAAM,IAAI,CAAC,MAAM,OAAI,GAAG,OAAO,CAAC;SACnD;KACF;;;;IAED,8CAAiB;;;IAAjB;QACE,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;;;;IAED,iDAAoB;;;IAApB;;;YAEM,WAAW,GAAW,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACvD,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KAC9B;;;;IAED,uCAAU;;;IAAV;QACE,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,QAAQ,CAAC;KAC3C;;;;IAED,qCAAQ;;;IAAR;QACE,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,CAAC;KACzC;;;;IAED,yCAAY;;;IAAZ;QACE,OAAO,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,UAAU,CAAC;KAC/C;;;;IAED,sCAAS;;;IAAT;QACE,OAAO,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,OAAO,CAAC;KAC5C;;;;;IAED,8CAAiB;;;;IAAjB,UAAkB,KAAqB;;QAErC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;KACF;;;;IAED,iDAAoB;;;IAApB;QACE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACnC;;;;IAED,kDAAqB;;;IAArB;;;;;QAKE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;;QAEf,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACpC;;;;;;;;IAKD,6CAAgB;;;;IAAhB;;;;QAIE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;;QAE/B,IAAI,CAAC,kBAAkB,EAAE,CAAC;;QAE1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;KACzC;;;;;;;;IAKD,8CAAiB;;;;IAAjB;QACE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;;;;QAIvB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC;;QAErC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC1C;;;;;;;;IAKO,+CAAkB;;;;IAA1B;;;YAEM,QAAQ,GAAW,kBAAkB;;QAEzC,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;;SAExB;aAAM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YACpC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;SAC/B;;QAED,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,IAAI,kBAAkB,EAAE;YAChD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SAC7C;aAAM;YACL,IAAI,CAAC,eAAe,GAAG,kBAAkB,CAAC;SAC3C;KACF;;;;;;;;IAKO,wCAAW;;;;IAAnB;QACE,uBAAiB,IAAI,CAAC,WAAW,CAAC,aAAa,IAAE;YAC/C,OAAO,oBAAc,IAAI,CAAC,WAAW,CAAC,aAAa,IAAE,qBAAqB,EAAE,CAAC,MAAM,CAAC;SACrF;QACD,OAAO,CAAC,CAAC;KACV;;gBA1MF,SAAS,SAAC;oBACT,QAAQ,EAAE,YAAY;oBAEtB,ihCAAuC;oBACvC,UAAU,EAAE;wBACV,oBAAoB;qBACrB;;iBACF;;;;gBArCuF,UAAU;gBAAtD,iBAAiB;;IAyO7D,yBAAC;CA3MD;;;;;;AC9BA;;;AA2BA;IAGE,0BAAoB,yBAAmD,EACnD,QAAiB,EACjB,SAAmB;QAFnB,8BAAyB,GAAzB,yBAAyB,CAA0B;QACnD,aAAQ,GAAR,QAAQ,CAAS;QACjB,cAAS,GAAT,SAAS,CAAU;KACtC;;;;;;;;;;;;;;;IAQM,oDAAyB;;;;;;;;IAAhC,UAAiC,OAAyB;QAA1D,iBA2BC;QA1BC,oBAA0B,OAAO,IAAE,MAAM,GAAG,SAAS,CAAC;QACtD,oBAA0B,OAAO,IAAE,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC;;YAC/D,UAAU,GAAgB,IAAI,CAAC,kBAAkB,EAAE;;YACnD,OAAO,GAAY,KAAK;;YACxB,UAAsB;QAC1B,UAAU,CAAC,UAAU,CAAC,IAAI,CACxB,oBAAoB,EAAE,CACvB,CAAC,SAAS,CAAC,UAAC,UAAkB;YAC7B,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;gBAC9B,OAAO,GAAG,IAAI,CAAC;gBACf,UAAU,GAAG,KAAI,CAAC,cAAc,EAAE,CAAC;gBACnC,UAAU,CAAC,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBACrF,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAC5D,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBACpD,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;aAC3D;iBAAM,IAAI,UAAU,IAAI,CAAC,IAAI,OAAO,EAAE;gBACrC,OAAO,GAAG,KAAK,CAAC;;oBACZ,MAAI,GAAiB,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC;oBACtF,MAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAClC,UAAU,CAAC,MAAM,EAAE,CAAC;oBACpB,UAAU,CAAC,OAAO,EAAE,CAAC;iBACtB,CAAC;aACH;SACF,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;KACnB;;;;;;;;;;;;;;;;;;;IASM,iDAAsB;;;;;;;;;;;IAA7B,UAA8B,OAAyB,EAAE,gBAAkC,EAC7D,WAAgC;QAC5D,oBAA0B,OAAO,IAAE,MAAM,GAAG,SAAS,CAAC;QACtD,oBAA0B,OAAO,IAAE,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC;;YAC5D,UAAU,GAAgB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;;YACxD,OAAO,GAAY,KAAK;QAC5B,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAC7F,gBAAgB,CAAC,KAAK,EAAE,CAAC;QACzB,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC7D,UAAU,CAAC,UAAU,CAAC,IAAI,CACxB,oBAAoB,EAAE,CACvB,CAAC,SAAS,CAAC,UAAC,UAAkB;YAC7B,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;gBAC9B,OAAO,GAAG,IAAI,CAAC;gBACf,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;aACrD;iBAAM,IAAI,UAAU,IAAI,CAAC,IAAI,OAAO,EAAE;gBACrC,OAAO,GAAG,KAAK,CAAC;gBAChB,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;aACtD;SACF,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;KACnB;;;;;;;;;;;;;;;;;;IAQM,iDAAsB;;;;;;;;;;;IAA7B,UAA8B,OAAyB,EAAE,gBAAkC,EAC7D,WAAgC,EAAE,OAAyB;;YACnF,aAAa,sBAA6B,WAAW,CAAC,UAAU,CAAC,aAAa,EAAA;QAClF,oBAA0B,OAAO,IAAE,MAAM,GAAG,aAAa,CAAC,kBAAkB;YAC1E,aAAa,CAAC,kBAAkB,CAAC,YAAY,GAAG,SAAS,CAAC;QAC5D,oBAA0B,OAAO,IAAE,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC;;YACzD,UAAU,GAAgB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;;YACxD,OAAO,GAAY,KAAK;;;YAExB,UAAU,GAA4B,gBAAgB,CAAC,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC;QACnG,UAAU,CAAC,UAAU,CAAC,IAAI,CACxB,oBAAoB,EAAE,CACvB,CAAC,SAAS,CAAC,UAAC,UAAkB;YAC7B,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;gBAC9B,OAAO,GAAG,IAAI,CAAC;;;oBAEX,KAAK,GAAW,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;gBAC9E,IAAI,KAAK,GAAG,CAAC,EAAE;oBACb,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;oBAC9D,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;iBAC9D;gBACD,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;aACrD;iBAAM,IAAI,UAAU,IAAI,CAAC,IAAI,OAAO,EAAE;gBACrC,OAAO,GAAG,KAAK,CAAC;;oBACZ,MAAI,GAAiB,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC;oBACtF,MAAI,CAAC,WAAW,EAAE,CAAC;;;wBAEf,KAAK,GAAW,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC;oBACxD,IAAI,KAAK,GAAG,CAAC,EAAE;wBACb,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;wBACpF,gBAAgB,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;qBACxC;;;;;oBAKD,UAAU,CAAC,aAAa,EAAE,CAAC;oBAC3B,UAAU,CAAC,YAAY,EAAE,CAAC;iBAC3B,CAAC;aACH;SACF,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;KACnB;;;;;;;;IAKO,yCAAc;;;;IAAtB;;YACMW,QAAK,GAAkB,IAAI,aAAa,EAAE;QAC9CA,QAAK,CAAC,WAAW,GAAG,KAAK,CAAC;QAC1BA,QAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,kBAAkB,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACnG,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAACA,QAAK,CAAC,CAAC;KACpC;;;;;;;;;IAKO,2CAAgB;;;;;IAAxB,UAAyB,OAAgC;;YACnD,OAAO,GAAgB,IAAI,CAAC,kBAAkB,EAAE;QACpD,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,yBAAyB;aACpD,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzD,OAAO,OAAO,CAAC;KAChB;;;;;;;;IAKO,6CAAkB;;;;IAA1B;;YACM,OAAO,GAAiB,IAAI,OAAO,EAAO;QAC9C,OAAO;YACL,UAAU,EAAE,OAAO,CAAC,YAAY,EAAE;YAClC,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,SAAS;YACvB,KAAK,EAAE,CAAC;SACT,CAAC;KACH;;;;;;;;;;IAKO,sCAAW;;;;;;IAAnB,UAAoB,OAAgC,EAAE,QAA4B;QAChF,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;YAC9B,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;SAC9B;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE;YAChC,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;SAClC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;YAC9B,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;SAC9B;QACD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE;YAC/B,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;SAChC;KACF;;gBA9KF,UAAU;;;;gBA3BU,wBAAwB;gBAGpC,OAAO;gBAFP,QAAQ;;IAyMjB,uBAAC;CA/KD,IA+KC;;;;;;;;AAED,SAAgB,gCAAgC,CAC5C,MAAwB,EAAE,wBAAkD,EAAE,OAAgB,EAAE,QAAkB;IACpH,OAAO,MAAM,IAAI,IAAI,gBAAgB,CAAC,wBAAwB,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;CACpF;;AAED,IAAa,wBAAwB,GAAa;;IAEhD,OAAO,EAAE,gBAAgB;IACzB,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,gBAAgB,CAAC,EAAE,wBAAwB,EAAE,OAAO,EAAE,QAAQ,CAAC;IACvG,UAAU,EAAE,gCAAgC;CAC7C;;;;;;;ICjMC,yBAAY,MAAwB;QAClC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,MAAM,KAAK,CAAC,iDAAiD,CAAC,CAAC;SAChE;QACD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,aAAa,CAAC;QAClE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC;QAC7D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;KACtD;IACH,sBAAC;CAAA,IAAA;;IAM6CX,4CAAe;IAM3D,kCAAY,MAAiC;QAA7C,YACE,kBAAM,MAAM,CAAC,SAEd;QADC,KAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC;;KAC7E;IACH,+BAAC;CAVD,CAA8C,eAAe,GAU5D;;IAQC,0BAAoB,eAAiC;QAAjC,oBAAe,GAAf,eAAe,CAAkB;QAH7C,aAAQ,GAAiC,EAAE,CAAC;QAC5C,cAAS,GAAyB,EAAE,CAAC;QAG3C,IAAI,CAAC,MAAM,CAAC;YACV,IAAI,EAAE,iBAAiB;SACxB,CAAC,CAAC;KACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAaD,0CAAe;;;;;;;;;;;;;;;;IAAf,UAAgB,MAAiC,EAAE,gBAAkC,EACrE,WAAgC,EAAE,OAAyB;;YACrE,eAAe,GAA6B,IAAI,wBAAwB,CAAC,MAAM,CAAC;QACpF,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;YACvC,MAAM,KAAK,CAAC,sEAAoE,eAAe,CAAC,IAAI,MAAG,CAAC,CAAC;SAC1G;QACD,IAAI,eAAe,CAAC,QAAQ,KAAK,eAAe,CAAC,OAAO,EAAE;YACxD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,eAAe,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;SACnI;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;SAC5I;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;KAC5C;;;;;;;;;;;;;;;;;IASM,iCAAM;;;;;;;;;IAAb,UAAc,MAAwB;;YAChC,gBAAgB,GAAoB,IAAI,eAAe,CAAC,MAAM,CAAC;QACnE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;KACzG;;;;;;;;;;;;;;;IAQM,0CAAe;;;;;;;;IAAtB,UAAuB,IAAY;QACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE;gBACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;aAC5C;YACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;YAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC5B;KACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAeM,mCAAQ;;;;;;;;;;;;;;;;IAAf,UAAgB,IAAgC,EAAE,SAAqB;QAAvE,iBAoBC;QApBe,qBAAA,EAAA,wBAAgC;QAAE,0BAAA,EAAA,aAAqB;;QAErE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACvB,SAAS,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;YACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;SACb;aAAM;;;YAGL,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;oBAChC,KAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;iBAChC,CAAC,CAAC;aACJ;iBAAM;;gBAEL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;aAC1B;SACF;QACD,OAAO,KAAK,CAAC;KACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAeM,kCAAO;;;;;;;;;;;;;;;;IAAd,UAAe,IAAgC,EAAE,QAAoB;QAAtD,qBAAA,EAAA,wBAAgC;QAAE,yBAAA,EAAA,YAAoB;;QAEnE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACvB,QAAQ,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;YACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE;;oBAC7B,KAAK,GAAW,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK;gBAC7C,KAAK,IAAI,QAAQ,CAAC;gBAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACnD;YACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;KACd;;;;;;;;;;;;;;;;;;;;;;;;;IAaM,qCAAU;;;;;;;;;;;;;IAAjB,UAAkB,IAAgC;QAAhC,qBAAA,EAAA,wBAAgC;;QAEhD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;KACd;;;;;;;;;;;;;;;;;;;;;;IAWM,mCAAQ;;;;;;;;;;;;IAAf,UAAgB,IAAY,EAAE,KAAa;QACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;;gBACnB,QAAQ,GAAuB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ;YAC5E,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC,WAAW,IAAI,QAAQ,CAAC,SAAS,EAAE;gBACnE,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;gBACvB,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;KACd;;;;;;;;;;IAMO,wCAAa;;;;;IAArB,UAAsB,IAAY;QAChC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAC7B;;gBApLF,UAAU;;;;gBA1CF,gBAAgB;;IA+NzB,uBAAC;CArLD,IAqLC;;;;;;AAED,SAAgB,wBAAwB,CACpC,MAAwB,EAAE,cAAgC;IAC5D,OAAO,MAAM,IAAI,IAAI,gBAAgB,CAAC,cAAc,CAAC,CAAC;CACvD;;AAED,IAAa,gBAAgB,GAAa;;IAExC,OAAO,EAAE,gBAAgB;IACzB,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAC5E,UAAU,EAAE,wBAAwB;CACrC;;;;;;ACjPD;;;AAUA;;;;IAAA;QACS,cAAS,GAAQ,SAAS,CAAC;QAC3B,cAAS,GAAQ,SAAS,CAAC;KACnC;IAAD,uBAAC;CAAA,IAAA;;;IAGG,kBAAkB,GAAW,CAAC;AAElC;IAqGE,4BAAoB,iBAAmC,EACnC,YAA2C,EAC3C,eAAiC;QAFjC,sBAAiB,GAAjB,iBAAiB,CAAkB;QACnC,iBAAY,GAAZ,YAAY,CAA+B;QAC3C,oBAAe,GAAf,eAAe,CAAkB;QAlG7C,aAAQ,GAAqB,IAAI,gBAAgB,EAAE,CAAC;;;;;QA8FnC,UAAK,GAAkC,SAAS,CAAC;KAIjB;IAvFzD,sBACI,oCAAI;;;;;;;;;;;QADR,UACS,IAAY;YACnB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACf,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;iBACnB;aACF;SACF;;;OAAA;IAQD,sBACI,qCAAK;;;;;;;;;;;;;;;QADT,UACU,KAAU;YAClB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACf,IAAI,CAAC,KAAK,GAAG,mBAAmB,GAAG,kBAAkB,EAAE,CAAC;aACzD;YACD,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;YAC1D,IAAI,CAAC,KAAK,EAAE;gBACV,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC3C;iBAAM;gBACL,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC7C;SACF;;;OAAA;IAOD,sBACI,oCAAI;;;;;;;;;;;;;QADR,UACS,IAAiB;YACxB,QAAQ,IAAI;gBACV,KAAK,WAAW,CAAC,MAAM;oBACrB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;oBAChC,MAAM;gBACR;oBACE,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC;oBAClC,MAAM;aACT;SACF;;;OAAA;IAOD,sBACI,oCAAI;;;;;;;;;;;;;QADR,UACS,IAAiB;YACxB,QAAQ,IAAI;gBACV,KAAK,WAAW,CAAC,WAAW;oBAC1B,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC;oBACrC,MAAM;gBACR;oBACE,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC;oBACvC,MAAM;aACT;SACF;;;OAAA;IAOD,sBACI,wCAAQ;;;;;;;;;;;;;QADZ,UACa,OAAwB;YACnC,QAAQ,OAAO;gBACb,KAAK,eAAe,CAAC,OAAO;oBAC1B,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC;oBACzC,MAAM;gBACR;oBACE,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC;oBACzC,MAAM;aACT;SACF;;;OAAA;;;;;;;;IAeD,qCAAQ;;;;IAAR;QACE,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;;;;;;;;IAKD,wCAAW;;;;IAAX;QACE,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;KAC9B;;;;;;;;;;IAMO,+CAAkB;;;;;IAA1B;QACE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;SACjE;;;QAGD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;gBACtD,IAAI,EAAE,IAAI,CAAC,KAAK;gBAChB,IAAI,EAAE,IAAI,CAAC,KAAK;gBAChB,IAAI,EAAE,IAAI,CAAC,KAAK;gBAChB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,SAAS;aACzB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC9D;KACF;;gBA3IF,SAAS,SAAC;oBACT,QAAQ,EAAE,aAAa;iBACxB;;;;gBAnBQ,gBAAgB;gBAAE,WAAW;gBAG7B,gBAAgB;;;uBA8BtB,KAAK,SAAC,WAAW;wBAejB,KAAK,SAAC,gBAAgB;uBAkBtB,KAAK,SAAC,eAAe;uBAiBrB,KAAK,SAAC,eAAe;2BAiBrB,KAAK,SAAC,mBAAmB;wBAgBzB,KAAK,SAAC,gBAAgB;;IAyCzB,yBAAC;CA5ID;;;;;;ACjBA;IAaM,UAAU,GAAgB;IAC9B,kBAAkB;IAClB,kBAAkB;CACnB;;IAEK,2BAA2B,GAAgB;IAC/C,kBAAkB;CACnB;AAED;IAAA;KAwBC;;gBAxBA,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,YAAY;wBACZ,oBAAoB;wBACpB,wBAAwB;wBACxB,aAAa;wBACb,YAAY;qBACb;oBACD,YAAY,EAAE;wBACZ,UAAU;qBACX;oBACD,OAAO,EAAE;wBACP,UAAU;qBACX;oBACD,SAAS,EAAE;wBACT,wBAAwB;wBACxB,gBAAgB;qBACjB;oBACD,eAAe,EAAE;wBACf,2BAA2B;qBAC5B;iBACF;;IAGD,4BAAC;CAxBD;;;;;;;;;;;;;;;;ACvBA;IAYE,wBAAoB,OAAe;QAAnC,iBA4BC;QA5BmB,YAAO,GAAP,OAAO,CAAQ;QAN3B,cAAS,GAAY,KAAK,CAAC;QAE3B,cAAS,GAAwB,IAAI,GAAG,EAAkB,CAAC;QAC3D,kBAAa,GAA+C,EAAE,CAAC;QAC/D,sBAAiB,GAAyC,EAAE,CAAC;QAGnE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,2CAA2C,CAAC,CAAC;QACtE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,4CAA4C,CAAC,CAAC;QACvE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,6CAA6C,CAAC,CAAC;QACxE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,yBAAyB,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAErC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;;QAEvB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;YACxD,OAAO,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC;;gBAE3C,IAAI,CAAC,KAAI,CAAC,SAAS,EAAE;oBACnB,KAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,UAAU,CAAC;wBACT,KAAI,CAAC,SAAS,EAAE,CAAC;wBACjB,KAAI,CAAC,SAAS,GAAG,KAAK,CAAC;qBACxB,EAAE,GAAG,CAAC,CAAC;iBACT;aACF,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ;;;;;;;;;IAKD,wCAAe;;;;;IAAf,UAAgBE,QAAa;QAC3B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAACA,QAAK,CAAC,WAAW,EAAE,CAAC,EAAE;YAC3CA,QAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAACA,QAAK,CAAC,WAAW,EAAE,CAAC,CAAC;SACjD;QACD,IAAI,CAAC,aAAa,CAACA,QAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,aAAa,CAACA,QAAK,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,iBAAiB,CAACA,QAAK,CAAC,CAAC;KACtC;;;;;;;;;IAKM,8BAAK;;;;;IAAZ,UAAaA,QAAa;QACxB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAACA,QAAK,CAAC,WAAW,EAAE,CAAC,EAAE;YAC3CA,QAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAACA,QAAK,CAAC,WAAW,EAAE,CAAC,CAAC;SACjD;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YACtB,OAAO,UAAU,CAACA,QAAK,CAAC,CAAC,OAAO,CAAC;SAClC,CAAC,CAAC;KACJ;;;;;;;;;;;;;IAOM,sCAAa;;;;;;;IAApB,UAAqBA,QAAa;QAChC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAACA,QAAK,CAAC,WAAW,EAAE,CAAC,EAAE;YAC3CA,QAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAACA,QAAK,CAAC,WAAW,EAAE,CAAC,CAAC;SACjD;QACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAACA,QAAK,CAAC,EAAE;YAC9B,IAAI,CAAC,aAAa,CAACA,QAAK,CAAC,GAAG,IAAI,eAAe,CAAU,UAAU,CAACA,QAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YACpF,IAAI,CAAC,iBAAiB,CAACA,QAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAACA,QAAK,CAAC,CAAC,YAAY,EAAE,CAAC;SAC1E;QACD,OAAO,IAAI,CAAC,iBAAiB,CAACA,QAAK,CAAC,CAAC;KACtC;;;;;;;;IAKM,kCAAS;;;;IAAhB;QACE,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;;;;IAEO,kCAAS;;;IAAjB;QAAA,iBAMC;gCALUA,QAAK;YACZ,OAAK,OAAO,CAAC,GAAG,CAAC;gBACf,KAAI,CAAC,kBAAkB,CAACA,QAAK,CAAC,CAAC;aAChC,CAAC,CAAC;SACJ;;QAJD,KAAK,IAAIA,QAAK,IAAI,IAAI,CAAC,aAAa;oBAA3BA,QAAK;SAIb;KACF;;;;;IAEO,2CAAkB;;;;IAA1B,UAA2BA,QAAa;QACtC,IAAI,CAAC,aAAa,CAACA,QAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAACA,QAAK,CAAC,CAAC,OAAO,CAAC,CAAC;KAC3D;;gBAhGF,UAAU;;;;gBAHU,MAAM;;IAoG3B,qBAAC;CAjGD,IAiGC;;;;;;AAED,SAAgB,sBAAsB,CAClC,MAAsB,EAAE,MAAc;IACxC,OAAO,MAAM,IAAI,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;CAC7C;;AAED,IAAa,cAAc,GAAa;;IAEtC,OAAO,EAAE,cAAc;IACvB,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAChE,UAAU,EAAE,sBAAsB;CACnC;;;;;;AChHD;IA2DE,gCAAoB,SAAoB,EAAU,WAAuB,EAAU,aAA6B;QAA5F,cAAS,GAAT,SAAS,CAAW;QAAU,gBAAW,GAAX,WAAW,CAAY;QAAU,kBAAa,GAAb,aAAa,CAAgB;QA7CxG,aAAQ,GAAY,KAAK,CAAC;QAC1B,gBAAW,GAA4B,EAAE,CAAC;QAC1C,YAAO,GAA4B,EAAE,CAAC;QACtC,aAAQ,GAAa,EAAE,CAAC;KA0CqF;IAnCrH,sBACI,yCAAK;;;;;;;;;;;;;QADT,UACUA,QAAa;YACrB,IAAI,CAACA,QAAK,EAAE;gBACV,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;aAChE;YACD,IAAI,CAAC,MAAM,GAAGA,QAAK,CAAC;SACrB;;;OAAA;IAMD,sBACI,8CAAU;;;;;;;;;;;QADd,UACe,UAAe;YAC5B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;SAC/B;;;OAAA;IAMD,sBACI,2CAAO;;;;;;;;;;;QADX,UACY,OAAiB;YAC3B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;OAAA;IAMD,sBACI,0CAAM;;;;;;;;;;;QADV,UACW,MAAW;YACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;SACvB;;;OAAA;;;;IAID,yCAAQ;;;IAAR;QAAA,iBAKC;QAJC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAC,OAAgB;YAC5F,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;SAC5B,CAAC,CAAC;KACJ;;;;IAED,4CAAW;;;IAAX;QACE,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;SAClC;KACF;;;;;IAEO,6CAAY;;;;IAApB,UAAqB,OAAgB;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;;;;IAEO,kDAAiB;;;IAAzB;QACE,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;YACjC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;aAC3F;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;aACtE;SACF;KACF;;;;IAEO,+CAAc;;;IAAtB;QAAA,iBAQC;QAPC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,SAAiB;YACtC,IAAI,KAAI,CAAC,QAAQ,EAAE;gBACjB,KAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAI,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;aACpE;iBAAM;gBACL,KAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAI,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;aACvE;SACF,CAAC,CAAC;KACJ;;;;IAEO,8CAAa;;;IAArB;QACE,KAAK,IAAIU,QAAK,IAAI,IAAI,CAAC,OAAO,EAAE;YAC9B,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAEA,QAAK,EAAE,IAAI,CAAC,OAAO,CAACA,QAAK,CAAC,CAAC,CAAC;aACrF;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAEA,QAAK,CAAC,CAAC;aACnE;SACF;KACF;;gBAvGF,SAAS,SAAC;oBACT,QAAQ,EAAE,iBAAiB;iBAC5B;;;;gBAPQ,SAAS;gBADE,UAAU;gBAIrB,cAAc;;;wBAoBpB,KAAK,SAAC,eAAe;6BAYrB,KAAK,SAAC,iBAAiB;0BASvB,KAAK,SAAC,cAAc;yBASpB,KAAK,SAAC,aAAa;;IAyDtB,6BAAC;CAzGD;;;;;;ACLA;IAOM,QAAQ,GAAgB;IAC5B,sBAAsB;CACvB;AAED;IAAA;KAgBC;;gBAhBA,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,YAAY;qBACb;oBACD,YAAY,EAAE;wBACZ,QAAQ;qBACT;oBACD,OAAO,EAAE;wBACP,QAAQ;qBACT;oBACD,SAAS,EAAE;wBACT,cAAc;qBACf;iBACF;;IAGD,0BAAC;CAhBD;;;;;;;;;;;;;;;;ACZA;IAEA;KAOC;;gBAPA,SAAS,SAAC;oBACT,QAAQ,EAAE,SAAS;oBACnB,wPAAoC;;iBAErC;;IAGD,sBAAC;CAPD;;;;;;ACDA;IAQM,OAAO,GAAgB;IAC3B,eAAe;CAChB;AAED;IAAA;KAeC;;gBAfA,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,gBAAgB;qBACjB;oBACD,YAAY,EAAE;wBACZ,OAAO;qBACR;oBACD,OAAO,EAAE;wBACP,OAAO;qBACR;iBACF;;IAGD,yBAAC;CAfD;;;;;;;;;;;;;;;;;ICAE,2BAAmB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;KAAK;IAC/D,wBAAC;CAAA,IAAA;;;AAGD,IAAa,uBAAuB,GAAG,yBAAyB,CAAC,iBAAiB,CAAC;AAEnF;IA8B4CZ,0CAAuB;IAkEjE,gCAAgC,IAAS,EAC7B,kBAAqC;QADjD,YAEE,kBAAM,kBAAkB,CAAC,SAC1B;QAH+B,UAAI,GAAJ,IAAI,CAAK;;;;;QApDjB,mBAAa,GAAY,KAAK,CAAC;;;;;QAMpC,cAAQ,GAAW,GAAG,CAAC;;;;;;QAatB,eAAS,GAAW,QAAQ,CAAC;;;;;QAMvB,sBAAgB,GAAyB,IAAI,YAAY,EAAU,CAAC;;;;;QAM5E,cAAQ,GAAyB,IAAI,YAAY,EAAU,CAAC;;;;;QAM7D,aAAO,GAAuB,IAAI,YAAY,EAAQ,CAAC;;;;;QAMxD,YAAM,GAAuB,IAAI,YAAY,EAAQ,CAAC;;KAYrE;IAVD,sBAAI,yCAAK;;;;QAAT;YACE,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC;aAChC;YACD,OAAO,KAAK,CAAC;SACd;;;OAAA;;;;IAOD,yCAAQ;;;IAAR;QAAA,iBAOC;QANC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CACrC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC3B,IAAI,CAAC,CAAC,CAAC,CACR,CAAC,SAAS,CAAC,UAAC,KAAa;YACxB,KAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;SAChC,CAAC,CAAC;KACJ;;;;;;;;IAKD,sCAAK;;;;IAAL;QACE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;KACrB;;;;IAED,2CAAU;;;IAAV;QACE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC7B;;;;;IAED,gDAAe;;;;IAAf,UAAgB,KAAY;QAC1B,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;;;;;IAED,6CAAY;;;;IAAZ,UAAa,KAAY;QACvB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;;;;;;;;IAKD,4CAAW;;;;IAAX;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC9B;;;;;IAEO,mDAAkB;;;;IAA1B,UAA2B,KAAa;QACtC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;;gBA7IF,SAAS,SAAC;oBACT,SAAS,EAAE,CAAC;4BACV,OAAO,EAAE,iBAAiB;4BAC1B,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,sBAAsB,GAAA,CAAC;4BACrD,KAAK,EAAE,IAAI;yBACZ,CAAC;oBACF,QAAQ,EAAE,iBAAiB;oBAC3B,guCAA4C;oBAE5C,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,MAAM,EAAE,CAAC,OAAO,CAAC;oBACjB,UAAU,EAAE;wBACV,OAAO,CAAC,aAAa,EAAE;4BACrB,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC;gCACvB,SAAS,EAAE,mBAAmB;gCAC9B,OAAO,EAAE,MAAM;6BAChB,CAAC,CAAC;4BACH,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC;gCACxB,SAAS,EAAE,kBAAkB;gCAC7B,OAAO,EAAE,MAAM;6BAChB,CAAC,CAAC;4BACH,KAAK,CAAC,MAAM,EAAG,KAAK,CAAC;gCACnB,SAAS,EAAE,gBAAgB;gCAC3B,OAAO,EAAE,OAAO;6BACjB,CAAC,CAAC;4BACH,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;4BACjD,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;yBACnD,CAAC;qBACH;;iBACF;;;;gBA5CQ,GAAG,uBA+GG,QAAQ;gBAlHW,iBAAiB;;;yBAkDhD,SAAS,SAAC,QAAQ;6BAMlB,KAAK,SAAC,YAAY;gCAMlB,KAAK,SAAC,eAAe;2BAMrB,KAAK,SAAC,UAAU;8BAMhB,KAAK,SAAC,aAAa;4BAOnB,KAAK,SAAC,WAAW;mCAMjB,MAAM,SAAC,gBAAgB;2BAMvB,MAAM,SAAC,QAAQ;0BAMf,MAAM,SAAC,OAAO;yBAMd,MAAM,SAAC,MAAM;;IAwDhB,6BAAC;CAAA,CAjH2C,uBAAuB;;;;;;;ICzCjE,yBAAmB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;KAAK;IAC/D,sBAAC;CAAA,IAAA;;;AAGD,IAAa,qBAAqB,GAAG,yBAAyB,CAAC,eAAe,CAAC;AAE/E;IA0B0CA,wCAAqB;IA8E7D,8BAAY,kBAAqC;QAAjD,YACE,kBAAM,kBAAkB,CAAC,SAC1B;QA9EO,oBAAc,GAAY,KAAK,CAAC;;;;;;QAYrB,cAAQ,GAAW,QAAQ,CAAC;;;;;;QAO1B,gBAAU,GAAW,QAAQ,CAAC;;;;;;QAO/B,eAAS,GAAW,QAAQ,CAAC;;;;;QAMzB,mBAAa,GAAY,KAAK,CAAC;;;;;QAMpC,cAAQ,GAAW,GAAG,CAAC;;;;;QAMlB,mBAAa,GAAY,KAAK,CAAC;;;;;QAY7B,sBAAgB,GAAyB,IAAI,YAAY,EAAU,CAAC;;;;;QAM5E,cAAQ,GAAyB,IAAI,YAAY,EAAU,CAAC;;;;;QAM7D,aAAO,GAAuB,IAAI,YAAY,EAAQ,CAAC;;;;;QAMxD,YAAM,GAAuB,IAAI,YAAY,EAAQ,CAAC;;KAIrE;IA3ED,sBAAI,+CAAa;;;;QAAjB;YACE,OAAO,IAAI,CAAC,cAAc,CAAC;SAC5B;;;OAAA;;;;;;;;IA8ED,4CAAa;;;;IAAb;QACE,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE;YAC9C,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;aAAM,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACrD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;SAC3B;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;;;;IAED,+CAAgB;;;IAAhB;QACE,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;QAC3C,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;;IAED,mDAAoB;;;;IAApB,UAAqB,KAAa;QAChC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;;;;;IAED,2CAAY;;;;IAAZ,UAAa,KAAa;QACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;;;;IAED,0CAAW;;;IAAX;QACE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC9B;;;;IAED,yCAAU;;;IAAV;QACE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC7B;;gBA5IF,SAAS,SAAC;oBACT,SAAS,EAAE,CAAC;4BACV,OAAO,EAAE,iBAAiB;4BAC1B,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,oBAAoB,GAAA,CAAC;4BACnD,KAAK,EAAE,IAAI;yBACZ,CAAC;oBACF,QAAQ,EAAE,eAAe;oBACzB,w5BAA0C;oBAE1C,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,MAAM,EAAE,CAAC,OAAO,CAAC;oBACjB,UAAU,EAAE;wBACV,OAAO,CAAC,YAAY,EAAE;4BACpB,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;gCACf,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,KAAK;6BACd,CAAC,CAAC;4BACH,KAAK,CAAC,GAAG,EAAG,KAAK,CAAC;gCAChB,KAAK,EAAE,MAAM;gCACb,MAAM,EAAE,UAAU;6BACnB,CAAC,CAAC;4BACH,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;4BAC9C,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;yBAChD,CAAC;qBACH;;iBACF;;;;gBAvCoF,iBAAiB;;;+BA2CnG,SAAS,SAAC,sBAAsB;2BAWhC,KAAK,SAAC,UAAU;6BAOhB,KAAK,SAAC,YAAY;4BAOlB,KAAK,SAAC,WAAW;gCAMjB,KAAK,SAAC,eAAe;2BAMrB,KAAK,SAAC,UAAU;gCAMhB,KAAK,SAAC,eAAe;8BAMrB,KAAK,SAAC,aAAa;mCAMnB,MAAM,SAAC,gBAAgB;2BAMvB,MAAM,SAAC,QAAQ;0BAMf,MAAM,SAAC,OAAO;yBAMd,MAAM,SAAC,MAAM;;IAuChB,2BAAC;CAAA,CAnHyC,qBAAqB;;;;;;ACxC/D;IAYA;KAmBC;;gBAnBA,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,WAAW;wBACX,YAAY;wBACZ,cAAc;wBACd,aAAa;wBACb,eAAe;qBAChB;oBACD,YAAY,EAAE;wBACZ,sBAAsB;wBACtB,oBAAoB;qBACrB;oBACD,OAAO,EAAE;wBACP,sBAAsB;wBACtB,oBAAoB;qBACrB;iBACF;;IAGD,2BAAC;CAnBD;;;;;;;;;;;;;;;;ACZA;IAyDE,+BAAoB,WAAuB,EACvB,kBAAqC;QADrC,gBAAW,GAAX,WAAW,CAAY;QACvB,uBAAkB,GAAlB,kBAAkB,CAAmB;QArCjD,kBAAa,GAAY,IAAI,CAAC;QAC9B,WAAM,GAAW,CAAC,CAAC;;QAE3B,kBAAa,GAAW,eAAe,CAAC;;QAExC,iBAAY,GAAY,IAAI,CAAC;KAiC5B;IA/BD,sBAAI,+CAAY;;;;QAAhB;YACE,OAAO,IAAI,CAAC,aAAa,CAAC;SAC3B;;;;;;;;;QAKD,UAAiB,aAAsB;YACrC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;YACnC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;;;OARA;IAaD,sBAAI,wCAAK;;;;;;;;QAAT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;OAAA;IAKD,sBACI,iDAAc;;;;;;;;QADlB;;;YAIE,OAAO,IAAI,CAAC,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC;SAChD;;;OAAA;;;;IAMD,+CAAe;;;IAAf;QAAA,iBAMC;;QAJC,UAAU,CAAC;YACT,KAAI,CAAC,MAAM,GAAG,oBAAc,KAAI,CAAC,WAAW,CAAC,aAAa,IAAE,qBAAqB,EAAE,CAAC,KAAK,CAAC;YAC1F,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CAAC;KACJ;;;;;;;;;IAKD,gDAAgB;;;;;IAAhB,UAAiB,KAAY;QAC3B,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;;gBAlEF,SAAS,SAAC;oBACT,QAAQ,EAAE,iCAAiC;oBAE3C,sPAA0C;;oBAE1C,IAAI,EAAE;wBACJ,KAAK,EAAE,0BAA0B;qBAClC;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;iBAChD;;;;gBAhBC,UAAU;gBAIV,iBAAiB;;;iCA4ChB,WAAW,SAAC,eAAe;;IA2B9B,4BAAC;CApED;;;;;;ACTA;IAqDE,gCAAoB,WAAuB,EACvB,kBAAqC;QADrC,gBAAW,GAAX,WAAW,CAAY;QACvB,uBAAkB,GAAlB,kBAAkB,CAAmB;QAfjD,wBAAmB,GAAiB,YAAY,CAAC,KAAK,CAAC;QACvD,kBAAa,GAAoB,IAAI,OAAO,EAAU,CAAC;QACvD,cAAS,GAAY,KAAK,CAAC;;QAKnC,sBAAiB,GAA4B,EAAE,CAAC;;;;QAKxB,kBAAa,GAAW,eAAe,CAAC;KAI/D;;;;IAED,yCAAQ;;;IAAR;QAAA,iBAkBC;QAjBC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAC9B,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC9B,YAAY,CAAC,EAAE,CAAC,CACjB,EACD,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CACpC,oBAAoB,EAAE,CACvB,CACF,CAAC,SAAS,CAAC;YACV,IAAI,CAAC,KAAI,CAAC,SAAS,EAAE;gBACnB,KAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,UAAU,CAAC;oBACT,KAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC5B,KAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBACvB,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;iBACxC,EAAE,GAAG,CAAC,CAAC;aACT;SACF,CAAC,CAAC;KACJ;;;;IAED,0CAAS;;;IAAT;QACE,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;YACtD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SAClD;KACF;;;;IAED,mDAAkB;;;IAAlB;QACE,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;IAED,4CAAW;;;IAAX;QACE,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;KACxC;IAKD,sBAAI,sDAAkB;;;;;;;;;;QAAtB;;gBACM,OAAO,uBAA8B,IAAI,CAAC,WAAW,CAAC,aAAa,GAAC;;;gBAEpEY,QAAK,GAAwB,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;;gBAC7D,UAAU,GAAW,QAAQ,CAACA,QAAK,CAAC,UAAU,EAAE,EAAE,CAAC;;gBACnD,WAAW,GAAW,QAAQ,CAACA,QAAK,CAAC,WAAW,EAAE,EAAE,CAAC;;gBACrD,UAAU,GAAW,QAAQ,CAACA,QAAK,CAAC,UAAU,EAAE,EAAE,CAAC;;gBACnD,WAAW,GAAW,QAAQ,CAACA,QAAK,CAAC,WAAW,EAAE,EAAE,CAAC;;gBACrD,WAAW,GAAW,QAAQ,CAACA,QAAK,CAAC,WAAW,EAAE,EAAE,CAAC;;gBACrD,YAAY,GAAW,QAAQ,CAACA,QAAK,CAAC,YAAY,EAAE,EAAE,CAAC;YAE3D,OAAO,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC;SACjI;;;OAAA;IAKD,sBAAI,yCAAK;;;;;;;;QAAT;YACE,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;SACzD;;;OAAA;;;;;;;;IAKO,8CAAa;;;;IAArB;QAAA,iBASC;;YARK,eAAe,GAA4B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QAC1E,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;;YAE9B,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC;SAClE;QACD,eAAe,CAAC,OAAO,CAAC,UAAC,UAAiC;YACxD,UAAU,CAAC,aAAa,GAAG,KAAI,CAAC,aAAa,CAAC;SAC/C,CAAC,CAAC;KACJ;;;;IAEO,qDAAoB;;;IAA5B;;YACM,WAAW,GAA4B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;;YAClE,aAAa,GAAW,CAAC;;YACzB,YAAY,GAA4B,EAAE;;QAE9C,KAAK,IAAI,CAAC,GAAW,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;;gBACpD,UAAU,GAA0B,WAAW,CAAC,CAAC,CAAC;;;YAGtD,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAChE,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC;gBAChC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC/B;iBAAM;;gBAEL,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;aAChC;YACD,aAAa,IAAI,UAAU,CAAC,KAAK,CAAC;SACnC;QACD,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC;QACtC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;gBA3HF,SAAS,SAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAE1B,uCAA2C;;oBAE3C,IAAI,EAAE;wBACJ,KAAK,EAAE,gBAAgB;qBACxB;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;iBAChD;;;;gBA1BC,UAAU;gBADV,iBAAiB;;;+BAmChB,eAAe,SAAC,qBAAqB;gCAOrC,KAAK,SAAC,eAAe;;IAqGxB,6BAAC;CA7HD;;;;;;AC3BA;IAOA;KAgBC;;gBAhBA,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;qBACd;oBACD,YAAY,EAAE;wBACZ,sBAAsB;wBACtB,qBAAqB;qBACtB;oBACD,OAAO,EAAE;wBACP,sBAAsB;wBACtB,qBAAqB;qBACtB;iBACF;;IAGD,gCAAC;CAhBD;;;;;;;;;;;;;;;;;;ICEE,MAAO,MAAM;IACb,UAAW,UAAU;IACrB,UAAW,UAAU;;;IAMmBZ,wCAAuB;IAC/D,8BAAY,WAA6B,EAAE,gBAAkC;eAC3E,kBAAM,WAAW,EAAE,gBAAgB,CAAC;KACrC;;gBANF,SAAS,SAAC;oBACT,QAAQ,EAAE,4BAA4B;iBACvC;;;;gBAhB6C,WAAW;gBAChD,gBAAgB;;IAoBzB,2BAAC;CAAA,CAJyC,uBAAuB,GAIhE;;IAK2CA,0CAAuB;IACjE,gCAAY,WAA6B,EAAE,gBAAkC;eAC3E,kBAAM,WAAW,EAAE,gBAAgB,CAAC;KACrC;;gBANF,SAAS,SAAC;oBACT,QAAQ,EAAE,8BAA8B;iBACzC;;;;gBAzB6C,WAAW;gBAChD,gBAAgB;;IA6BzB,6BAAC;CAAA,CAJ2C,uBAAuB,GAIlE;;IAK2CA,0CAAuB;IACjE,gCAAY,WAA6B,EAAE,gBAAkC;eAC3E,kBAAM,WAAW,EAAE,gBAAgB,CAAC;KACrC;;gBANF,SAAS,SAAC;oBACT,QAAQ,EAAE,8BAA8B;iBACzC;;;;gBAlC6C,WAAW;gBAChD,gBAAgB;;IAsCzB,6BAAC;CAAA,CAJ2C,uBAAuB,GAIlE;;IAED;KAA0B;IAAD,iBAAC;CAAA,IAAA;;;AAG1B,IAAa,gBAAgB,GAAG,kBAAkB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAE7E;IAKqCA,mCAAgB;IA2EnD,yBAAoB,iBAAmC;QAAvD,YACE,iBAAO,SACR;QAFmB,uBAAiB,GAAjB,iBAAiB,CAAkB;QAzE/C,aAAO,GAAY,KAAK,CAAC;QACzB,YAAM,GAAc,SAAS,CAAC,IAAI,CAAC;;;;;QAgEtB,iBAAW,GAAuB,IAAI,YAAY,EAAQ,CAAC;;;;;QAMzD,mBAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;;KAInF;IAvED,sBAAI,wCAAW;;;;QAAf;YACE,OAAO,IAAI,CAAC,cAAc,CAAC;SAC5B;;;OAAA;IAwBD,sBACI,mCAAM;;;;QAGV;YACE,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;;;;;;;;;;;QAND,UACW,MAAe;YACxB,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;SAChD;;;OAAA;IAUD,sBACI,kCAAK;;;;QAaT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;;;;;;;;;;;QAhBD,UACUW,QAAgB;YACxB,QAAQA,QAAK;gBACX,KAAK,SAAS,CAAC,QAAQ;oBACrB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC;oBACjC,MAAM;gBACR,KAAK,SAAS,CAAC,QAAQ;oBACrB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC;oBACjC,MAAM;gBACR;oBACE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;oBAC7B,MAAM;aACT;SACF;;;OAAA;;;;IAqBD,kCAAQ;;;IAAR;QACE,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;KACjF;;;;;;;;;;IAMD,gCAAM;;;;;IAAN;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvC;;;;;;;;;;IAMD,8BAAI;;;;;IAAJ;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAC9B;;;;;;;;;;IAMD,+BAAK;;;;;IAAL;QACE,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KAC/B;;;;;;;;IAKD,oCAAU;;;;IAAV;QACE,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,QAAQ,CAAC;KAC3C;;;;;;;IAGD,0CAAgB;;;;;IAAhB,UAAiB,CAAU;QACzB,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;KACF;;;;;;;;;;;;;IAOO,oCAAU;;;;;;;IAAlB,UAAmB,SAAkB;QACnC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,KAAK,CAAC;SACd;QACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;YAC9B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;YACzB,IAAI,SAAS,EAAE;gBACb,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB;iBAAM;gBACL,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;YACD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;KACd;;;;IAEO,sCAAY;;;IAApB;QACE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAClC;;;;IAEO,wCAAc;;;IAAtB;QACE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACpC;;gBA1JF,SAAS,SAAC;oBACT,QAAQ,EAAE,SAAS;oBACnB,MAAM,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC;oBACrC,sEAAoC;iBACrC;;;;gBAjDQ,gBAAgB;;;2BA4DtB,SAAS,SAAC,WAAW;4BACrB,YAAY,SAAC,oBAAoB;8BACjC,YAAY,SAAC,sBAAsB;8BACnC,YAAY,SAAC,sBAAsB;wBAOnC,KAAK,SAAC,OAAO;2BAMb,KAAK,SAAC,UAAU;yBAMhB,KAAK,SAAC,QAAQ;wBAad,KAAK,SAAC,OAAO;8BAsBb,MAAM,SAAC,WAAW;gCAMlB,MAAM,SAAC,aAAa;;IA6EvB,sBAAC;CAAA,CAtJoC,gBAAgB;;;;;;ACnDrD;;IAaE,UAAW,UAAU;IACrB,YAAa,YAAY;;;IAG3B;QAYU,UAAK,GAAa,QAAQ,CAAC,QAAQ,CAAC;;;;;;QAuCtB,iBAAY,GAAmC,IAAI,YAAY,EAAoB,CAAC;KAkF3G;IAtHC,sBACI,0CAAY;;;;;QADhB,UACiB,KAAiC;YAChD,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;SACF;;;OAAA;IAED,sBAAI,mCAAK;;;;QAAT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;SAC9B;;;OAAA;IAOD,sBACI,kCAAI;;;;QASR;YACE,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;;;;;;;;;;;QAZD,UACS,IAAc;YACrB,QAAQ,IAAI;gBACV,KAAK,QAAQ,CAAC,UAAU;oBACtB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC;oBACjC,MAAM;gBACR;oBACE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;aAClC;SACF;;;OAAA;;;;;;;;;;IAgBD,6CAAkB;;;;;IAAlB;QACE,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;;;;;;;;IAKD,sCAAW;;;;IAAX;QACE,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;;;;;;;;IAKD,uCAAY;;;;IAAZ;QACE,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,UAAU,CAAC;KAC3C;;;;;;;;IAKD,qCAAU;;;;IAAV;QACE,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,QAAQ,CAAC;KACzC;;;;IAED,yCAAc;;;IAAd;QACE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAC,IAAqB;YAC9C,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KACf;;;;;;;;;;;IAMO,2CAAgB;;;;;;IAAxB,UAAyB,IAAqB;QAC5C,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;;gBACtB,QAAQ,GAAoB,IAAI,CAAC,QAAQ;YAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;;gBACjB,OAAK,GAAqB;gBAC5B,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,QAAQ;aACnB;YACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAK,CAAC,CAAC;SAC/B;KACF;;;;;;;;;IAKO,4CAAiB;;;;;IAAzB,UAA0B,UAA2B;QACnD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAC,IAAqB,IAAK,OAAA,IAAI,KAAK,UAAU,GAAA,CAAC;aACjE,OAAO,CAAC,UAAC,IAAqB;YAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB,CAAC,CAAC;KACJ;;;;IAEO,yCAAc;;;IAAtB;QAAA,iBAQC;QAPC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,UAAC,IAAqB;;gBAC9C,YAAY,GAAiB,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC;gBACzE,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;aAC7B,CAAC;YACF,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACvC,CAAC,CAAC;KACJ;;;;IAEO,2CAAgB;;;IAAxB;QACE,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAC,IAAkB;gBAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB,CAAC,CAAC;YACH,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;SAChC;KACF;;gBApIF,SAAS,SAAC;oBACT,QAAQ,EAAE,UAAU;oBAEpB,03EAAqC;;oBAErC,IAAI,EAAE;wBACJ,KAAK,EAAE,UAAU;qBAClB;;iBACF;;;+BAOE,eAAe,SAAC,eAAe;uBAiB/B,KAAK,SAAC,MAAM;+BAmBZ,MAAM,SAAC,YAAY;;IAkFtB,uBAAC;CArID;;;;;;;ICXA;KAAgC;IAAD,uBAAC;CAAA,IAAA;;;AAGhC,IAAa,sBAAsB,GAAG,kBAAkB,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAEzF;IAM2CX,yCAAsB;IANjE;QAAA,qEA6CC;;;;;;QArBiB,WAAK,GAAc,SAAS,CAAC,IAAI,CAAC;;KAqBnD;;;;;;;;IAVC,0CAAU;;;;IAAV;QACE,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,QAAQ,CAAC;KAC1C;;;;;;;;IAKD,0CAAU;;;;IAAV;QACE,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,QAAQ,CAAC;KAC1C;;gBA5CF,SAAS,SAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,MAAM,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC;oBAErC,20CAA2C;;iBAC5C;;;yBAME,KAAK,SAAC,QAAQ;yBAMd,KAAK,SAAC,QAAQ;wBAOd,KAAK,SAAC,OAAO;2BAMb,KAAK,SAAC,UAAU;;IAenB,4BAAC;CAAA,CAvC0C,sBAAsB;;;;;;ACjBjE;IAMA;;;;;;QA0CkB,UAAK,GAAc,SAAS,CAAC,IAAI,CAAC;KAQnD;IAtCC,sBAAI,2CAAU;;;;QAAd;YACE,OAAO,IAAI,CAAC,UAAU;iBACf,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;SACjH;;;OAAA;IAID,sBAAI,2CAAU;;;;QAAd;YACE,OAAO,IAAI,CAAC,UAAU;iBACf,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;SACjH;;;OAAA;IAID,sBAAI,2CAAU;;;;QAAd;YACE,OAAO,IAAI,CAAC,UAAU;iBACf,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;SACjH;;;OAAA;;;;;;;;IAkBD,wCAAU;;;;IAAV;QACE,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,QAAQ,CAAC;KAC1C;;gBAjDF,SAAS,SAAC;oBACT,QAAQ,EAAE,cAAc;oBAExB,qpBAAyC;oBACzC,UAAU,EAAE;wBACV,mBAAmB;qBACpB;;iBACF;;;6BAGE,SAAS,SAAC,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;6BAO5C,SAAS,SAAC,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;6BAO5C,SAAS,SAAC,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;yBAW5C,KAAK,SAAC,QAAQ;wBAOd,KAAK,SAAC,OAAO;;IAQhB,0BAAC;CAlDD;;;;;;;ICgB4CA,0CAAgB;IAgE1D,gCAAoB,kBAAqC,EACtC,UAAsB;QADzC,YAEE,iBAAO,SACR;QAHmB,wBAAkB,GAAlB,kBAAkB,CAAmB;QACtC,gBAAU,GAAV,UAAU,CAAY;QA/DjC,aAAO,GAAY,KAAK,CAAC;QACzB,YAAM,GAAc,SAAS,CAAC,IAAI,CAAC;;KAgE1C;IAtDD,sBACI,yCAAK;;;;QAaT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;;;;;;;;;;;QAhBD,UACUW,QAAgB;YACxB,QAAQA,QAAK;gBACX,KAAK,SAAS,CAAC,QAAQ;oBACrB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC;oBACjC,MAAM;gBACR,KAAK,SAAS,CAAC,QAAQ;oBACrB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC;oBACjC,MAAM;gBACR;oBACE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;oBAC7B,MAAM;aACT;SACF;;;OAAA;IAuBD,sBACI,0CAAM;;;;QAIV;YACE,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;;;;;;;;;;;QAPD,UACW,MAAe;YACxB,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;;;OAAA;;;;;IAgBD,6CAAY;;;;IAAZ,UAAa,KAAY;QACvB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;SAClC;KACF;;gBAzFF,SAAS,SAAC;oBACT,QAAQ,EAAE,6BAA6B;oBAEvC,ohBAA6C;oBAC7C,MAAM,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;;oBAE/C,IAAI,EAAE;wBACJ,sBAAsB,EAAE,MAAM;wBAC9B,iBAAiB,EAAE,iCAAiC;wBACpD,iBAAiB,EAAE,kBAAkB;wBACrC,sBAAsB,EAAE,kBAAkB;wBAC1C,SAAS,EAAE,sBAAsB;qBAClC;;iBACF;;;;gBArB4C,iBAAiB;gBAAS,UAAU;;;wBAmC9E,KAAK,SAAC,OAAO;wBAuBb,KAAK,SAAC,OAAO;2BAOb,KAAK,SAAC,UAAU;yBAMhB,KAAK,SAAC,QAAQ;2BAad,KAAK,SAAC,UAAU;;IAcnB,6BAAC;CAAA,CA5E2C,gBAAgB;;;;;;ACtB5D;IA4EE,uCAAoB,WAAuB,EACvB,cAA6B,EACjB,IAAoB,EAChC,SAAoB,EACpB,kBAAqC;QAJrC,gBAAW,GAAX,WAAW,CAAY;QACvB,mBAAc,GAAd,cAAc,CAAe;QACjB,SAAI,GAAJ,IAAI,CAAgB;QAChC,cAAS,GAAT,SAAS,CAAW;QACpB,uBAAkB,GAAlB,kBAAkB,CAAmB;QA/CjD,gBAAW,GAAkB,EAAE,CAAC;;;;QAGvB,eAAU,GAAkB,IAAI,OAAO,EAAQ,CAAC;QAEzD,kBAAa,GAAoB,IAAI,OAAO,EAAU,CAAC;QAEvD,oBAAe,GAAW,CAAC,CAAC;QAC5B,2BAAsB,GAAY,KAAK,CAAC;;;;QAGhD,4BAAuB,GAAY,KAAK,CAAC;;;;QAGzC,wBAAmB,GAAY,IAAI,CAAC;;;;QAGpC,yBAAoB,GAAY,IAAI,CAAC;KA8ByB;IAnB9D,sBAAI,6DAAkB;;;;;;;;;;QAAtB;;gBACM,OAAO,uBAA8B,IAAI,CAAC,WAAW,CAAC,aAAa,GAAC;;;gBAGpEC,QAAK,GAAwB,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;;gBAC7D,UAAU,GAAW,QAAQ,CAACA,QAAK,CAAC,UAAU,EAAE,EAAE,CAAC;;gBACnD,WAAW,GAAW,QAAQ,CAACA,QAAK,CAAC,WAAW,EAAE,EAAE,CAAC;;gBACrD,UAAU,GAAW,QAAQ,CAACA,QAAK,CAAC,UAAU,EAAE,EAAE,CAAC;;gBACnD,WAAW,GAAW,QAAQ,CAACA,QAAK,CAAC,WAAW,EAAE,EAAE,CAAC;;gBACrD,WAAW,GAAW,QAAQ,CAACA,QAAK,CAAC,WAAW,EAAE,EAAE,CAAC;;gBACrD,YAAY,GAAW,QAAQ,CAACA,QAAK,CAAC,YAAY,EAAE,EAAE,CAAC;YAE3D,OAAO,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC;SACjI;;;OAAA;;;;IAQD,0DAAkB;;;IAAlB;QAAA,iBAiBC;QAhBC,KAAK,CACH,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CACpC,oBAAoB,EAAE,CACvB,EACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,EAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,CACpB,CAAC,IAAI,CACJ,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC,SAAS,CAAC;YACV,KAAI,CAAC,eAAe,EAAE,CAAC;YACvB,KAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;IAED,6DAAqB;;;IAArB;QACE,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;YACtD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SAClD;QACD,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC/B,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;KACF;;;;IAED,mDAAW;;;IAAX;QACE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;;;;;;;;;IAKD,sDAAc;;;;;IAAd,UAAe,KAAoB;QACjC,QAAQ,KAAK,CAAC,OAAO;YACnB,KAAK,UAAU;gBACb,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC5B,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;YACR,QAAQ;;SAET;KACF;;;;;;;;IAKD,wDAAgB;;;;IAAhB;QACE,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAClC;;;;;;IAGD,2DAAmB;;;;IAAnB;QACE,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;KAC/D;;;;;;IAGD,iEAAyB;;;;IAAzB;;YACQ,UAAU,GAAW,IAAI,CAAC,mBAAmB,EAAE,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;;QAE5G,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,gBAAc,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAK,CAAC;;;;QAKzF,IAAI,IAAI,CAAC,mBAAmB,EAAE,KAAK,KAAK,EAAE;YACxC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC;SACtD;aAAM;YACL,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;SACjF;KACF;IAGD,sBAAI,yDAAc;;;;;;QAAlB,cAA+B,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE;;;;;QAC7D,UAAmB,CAAS;YAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;;;YAI9E,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;;;OAR4D;;;;;;;;;;;IAc7D,qDAAa;;;;;;IAAb,UAAc,SAA0B;;QAEtC,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,KAAK,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC;KAClH;;;;;;;;;;;;IAOD,+DAAuB;;;;;;IAAvB;;YACQ,SAAS,GACX,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW;QAEzF,IAAI,CAAC,SAAS,EAAE;YACd,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;SACzB;QAED,IAAI,SAAS,KAAK,IAAI,CAAC,uBAAuB,EAAE;YAC9C,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;QAED,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;KAC1C;;;;;;;;;;;;;;IAQD,+DAAuB;;;;;;;IAAvB;;QAEE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAChF,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;;;;;;;IAMD,6DAAqB;;;;;IAArB;QACE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,WAAW,KAAK,CAAC,CAAC;KAC5G;;;;;;;;IAKO,uDAAe;;;;IAAvB;QAAA,iBAgBC;QAfC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAC,SAAsB;YAC9C,KAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAI,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;SACrE,CAAC,CAAC;;YACC,UAAU,GAA6B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;;QAEhE,UAAU,CAAC,OAAO,CAAC,UAAC,IAA4B,EAAE,KAAa;YAC7D,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE;;oBACtC,SAAS,GAAQ,KAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC;gBACxD,KAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;gBACzD,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACjC,KAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAI,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;aACrG;YACD,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;SACzB,CAAC,CAAC;KAEJ;;gBAlOF,SAAS,SAAC;oBACT,QAAQ,EAAE,2BAA2B;oBAErC,+/BAAoD;oBACpD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;oBAE/C,IAAI,EAAE;wBACJ,KAAK,EAAE,8BAA8B;wBACrC,oDAAoD,EAAE,yBAAyB;wBAC/E,4BAA4B,EAAE,gCAAgC;qBAC/D;;iBACF;;;;gBA7BkE,UAAU;gBAOpE,aAAa;gBAFF,cAAc,uBAwEnB,QAAQ;gBA7EwD,SAAS;gBAAxC,iBAAiB;;;yBAoD9D,eAAe,SAAC,sBAAsB;qCAEtC,SAAS,SAAC,mBAAmB;4BAC7B,SAAS,SAAC,UAAU;;IA+LvB,oCAAC;CApOD;;;;;;ACnBA;IAqCE,qCAAoB,SAAoB,EACpB,kBAAqC;QADrC,cAAS,GAAT,SAAS,CAAW;QACpB,uBAAkB,GAAlB,kBAAkB,CAAmB;QAXjD,gBAAW,GAAkB,EAAE,CAAC;;;;QAGvB,eAAU,GAAkB,IAAI,OAAO,EAAQ,CAAC;KAQH;;;;IAE9D,wDAAkB;;;IAAlB;QAAA,iBASC;QARC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CACtB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC,SAAS,CAAC;YACV,KAAI,CAAC,eAAe,EAAE,CAAC;YACvB,KAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;IAED,iDAAW;;;IAAX;QACE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;;;;;;;;IAKO,qDAAe;;;;IAAvB;QAAA,iBAmBC;QAlBC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAC,SAAsB;YAC9C,KAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAI,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;SACrE,CAAC,CAAC;;YACC,UAAU,GAA6B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;;QAEhE,UAAU,CAAC,OAAO,CAAC,UAAC,IAA4B,EAAE,KAAa;YAC7D,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE;;oBACtC,SAAS,GAAQ,KAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC;gBACxD,KAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;;oBAC3D,cAAc,GAAQ,KAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC;gBAC7D,KAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBAC5D,KAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;gBACtD,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACjC,KAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAI,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;aACrG;YACD,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;SACzB,CAAC,CAAC;KAEJ;;gBA/DF,SAAS,SAAC;oBACT,QAAQ,EAAE,yBAAyB;oBAEnC,+MAAkD;oBAClD,eAAe,EAAE,uBAAuB,CAAC,MAAM;;oBAE/C,IAAI,EAAE;wBACJ,KAAK,EAAE,4BAA4B;qBACpC;;iBACF;;;;gBAvB0B,SAAS;gBAAE,iBAAiB;;;yBAgCpD,eAAe,SAAC,sBAAsB;4BAEtC,SAAS,SAAC,UAAU;;IA6CvB,kCAAC;CAjED;;;;;;ACdA;IAuBM,QAAQ,GAAgB;IAC5B,gBAAgB;IAChB,eAAe;IACf,qBAAqB;IACrB,mBAAmB;IACnB,oBAAoB;IACpB,sBAAsB;IACtB,sBAAsB;IACtB,6BAA6B;IAC7B,2BAA2B;IAC3B,sBAAsB;CAEvB;AAED;IAAA;KAkBC;;gBAlBA,QAAQ,SAAC;oBACR,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,eAAe;wBACf,YAAY;wBACZ,oBAAoB;wBACpB,oBAAoB;qBACrB;oBACD,YAAY,EAAE;wBACZ,QAAQ;qBACT;oBACD,OAAO,EAAE;wBACP,QAAQ;qBACT;iBACF;;IAGD,0BAAC;CAlBD;;;;;;;;;;;;;;;;;ICvBE,yBAAmB,iBAAmC,EACnC,kBAAqC;QADrC,sBAAiB,GAAjB,iBAAiB,CAAkB;QACnC,uBAAkB,GAAlB,kBAAkB,CAAmB;KAAI;IAC9D,sBAAC;CAAA,IAAA;;;AAGD,IAAa,qBAAqB,GAAG,aAAa,CAAC,eAAe,CAAC;AAEnE;IAQ0CZ,wCAAqB;IAc7D,8BAAY,iBAAmC,EACnC,kBAAqC;eAC/C,kBAAM,iBAAiB,EAAE,kBAAkB,CAAC;KAC7C;IAdD,sBAAI,yCAAO;;;;QAAX;YACE,OAAO,IAAI,CAAC,cAAc,CAAC;SAC5B;;;OAAA;;;;IAcD,uCAAQ;;;IAAR;QACE,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;KACjF;;gBA7BF,SAAS,SAAC;oBACT,QAAQ,EAAE,eAAe;oBACzB,wEAA0C;oBAE1C,eAAe,EAAE,uBAAuB,CAAC,MAAM;;oBAE/C,MAAM,EAAE,CAAC,UAAU,CAAC;;iBACrB;;;;gBArBC,gBAAgB;gBAJhB,iBAAiB;;;2BAiChB,SAAS,SAAC,WAAW;wBAKrB,KAAK,SAAC,OAAO;;IAWhB,2BAAC;CAAA,CAvByC,qBAAqB;;;;;;;ICI7D,yBAAmB,kBAAqC;QAArC,uBAAkB,GAAlB,kBAAkB,CAAmB;KAAI;IAC9D,sBAAC;CAAA,IAAA;;;AAGD,IAAa,qBAAqB,GAAG,yBAAyB,CAAC,aAAa,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC;AAElH;IAa0CA,wCAAqB;IAiD7D,8BAAY,kBAAqC;QAAjD,YACE,kBAAM,kBAAkB,CAAC,SAC1B;QAhDO,WAAK,GAAmB,EAAE,CAAC;QAE3B,aAAO,GAAU,EAAE,CAAC;QACpB,oBAAc,GAAW,CAAC,CAAC;QAC3B,kBAAY,GAAY,KAAK,CAAC;;;;;QAwCnB,iBAAW,GAAsB,IAAI,YAAY,EAAO,CAAC;;KAI3E;IA1CD,sBAAI,+CAAa;;;;QAAjB;YACE,OAAO,IAAI,CAAC,cAAc,CAAC;SAC5B;;;OAAA;IAOD,sBAAI,4CAAU;;;;QAAd;YACE,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC;SAClE;;;OAAA;IAKD,sBACI,6CAAW;;;;QAGf;YACE,OAAO,IAAI,CAAC,YAAY,CAAC;SAC1B;;;;;;;;;QAND,UACgB,WAAoB;YAClC,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;SACxD;;;OAAA;;;;IAyBD,uCAAQ;;;IAAR;QAAA,iBAOC;;QALC,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAC,KAAU;YACrC,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACvB,CAAC,CACH,CAAC;KACH;;;;IAED,iDAAkB;;;IAAlB;QAAA,iBAYC;;QAVC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;YACjC,KAAI,CAAC,cAAc,EAAE,CAAC;SACvB,CAAC,CACH,CAAC;;QAEF,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;YACrB,KAAI,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;SAC5B,CAAC,CAAC;KACJ;;;;IAED,0CAAW;;;IAAX;QACE,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,GAAiB;gBACnC,GAAG,CAAC,WAAW,EAAE,CAAC;aACnB,CAAC,CAAC;SACJ;KACF;;;;;;;;;;;IAMD,kDAAmB;;;;;;IAAnB,UAAoB,aAAqB;QACvC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;;YAChC,KAAK,GAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QAC5C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACtB;;;;;;;;IAKO,6CAAc;;;;IAAtB;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAC,SAA+B;YACjE,OAAO,SAAS,CAAC,KAAK,CAAC;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;;;;;;;;;;IAMO,wCAAS;;;;;;IAAjB,UAAkB,KAAU;;YACtB,KAAK,GAAW,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/C,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;YAC/D,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;SACzB;QACD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;;gBApIF,SAAS,SAAC;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,SAAS,EAAE,CAAC;4BACV,OAAO,EAAE,iBAAiB;4BAC1B,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,oBAAoB,GAAA,CAAC;4BACnD,KAAK,EAAE,IAAI;yBACZ,CAAC;oBACF,QAAQ,EAAE,eAAe;oBACzB,0tBAA0C;;oBAG1C,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC;;iBAC/C;;;;gBAhDC,iBAAiB;;;8BAiEhB,eAAe,SAAC,oBAAoB;8BASpC,KAAK,SAAC,aAAa;wBAWnB,KAAK,SAAC,OAAO;kCAKb,KAAK,SAAC,iBAAiB;8BAMvB,MAAM;;IA0ET,2BAAC;CAAA,CAzHyC,qBAAqB;;;;;;ACrD/D;IAWA;KAkBuC;;gBAlBtC,QAAQ,SAAC;oBACR,YAAY,EAAE;wBACZ,oBAAoB;wBACpB,oBAAoB;qBACrB;;oBACD,OAAO,EAAE;;wBAEP,YAAY;wBACZ,WAAW;;wBAEX,YAAY;wBACZ,aAAa;qBACd;;oBACD,OAAO,EAAE;wBACP,oBAAoB;wBACpB,oBAAoB;qBACrB;iBACF;;IACqC,8BAAC;CAlBvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}