UNPKG

@alyle/ui

Version:

Minimal Design, a set of components for Angular

1 lines 58.8 kB
{"version":3,"file":"alyle-ui-tabs.mjs","sources":["../../../lib/tabs/tab-content.directive.ts","../../../lib/tabs/tabs.ts","../../../lib/tabs/tabs.html","../../../lib/tabs/tab.html","../../../lib/tabs/tab-label.html","../../../lib/tabs/tabs.module.ts","../../../lib/tabs/alyle-ui-tabs.ts"],"sourcesContent":["import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({selector: '[ly-tab-content]',\n  standalone: false\n})\nexport class LyTabContent {\n  constructor(public template: TemplateRef<any>) { }\n}\n","import {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostListener,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  Renderer2,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n  Optional,\n  ViewChildren,\n  ViewContainerRef\n  } from '@angular/core';\nimport {\n  LyTheme2,\n  mixinBg,\n  mixinColor,\n  mixinDisabled,\n  mixinDisableRipple,\n  mixinElevation,\n  mixinOutlined,\n  mixinRaised,\n  mixinShadowColor,\n  mixinStyleUpdater,\n  ThemeVariables,\n  AlignAlias,\n  YPosition,\n  XPosition,\n  Dir,\n  LyRippleService,\n  scrollWithAnimation,\n  st2c,\n  LY_COMMON_STYLES,\n  ThemeRef,\n  StyleCollection,\n  LyClasses,\n  StyleTemplate,\n  StyleRenderer,\n  Style } from '@alyle/ui';\nimport { LyButton } from '@alyle/ui/button';\nimport { LyTabContent } from './tab-content.directive';\nimport { Subscription, Subject } from 'rxjs';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { Platform } from '@angular/cdk/platform';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { takeUntil, take, switchMapTo } from 'rxjs/operators';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport interface LyTabTheme {\n  /** Styles for Tab Component */\n  root?: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)>\n    | ((classes: LyClasses<typeof STYLES>) => StyleTemplate);\n}\n\nexport interface LyTabVariables {\n  tab?: LyTabTheme;\n}\n\nconst DEFAULT_DISABLE_RIPPLE = false;\nconst STYLE_PRIORITY = -2;\nconst DEFAULT_BG = 'primary';\nconst DEFAULT_INDICATOR_COLOR = 'accent';\nconst DEFAULT_ELEVATION = 4;\nconst DEFAULT_HEADER_PLACEMENT = 'above';\nexport type AlignTabs = 'start' | 'center' | 'end' | 'stretch' | 'baseline';\nexport type LyTabsHeaderPlacement = 'before' | 'after' | 'above' | 'below';\n\nexport const STYLES = (theme: ThemeVariables & LyTabVariables, ref: ThemeRef) => {\n  const __ = ref.selectorsOf(STYLES);\n  return {\n    $name: LyTabs.и,\n    $priority: STYLE_PRIORITY,\n    root: () => (_className: string) => `${_className}{display:flex;}${st2c((\n          (theme.tab\n            && theme.tab.root\n            && (theme.tab.root instanceof StyleCollection\n              ? theme.tab.root.setTransformer(fn => fn(__)).css\n              : theme.tab.root(__))\n          )), `${_className}`)}`,\n    tab: (_className: string) => `${_className}{position:relative;display:inline-flex;}`,\n    /** Tab container */\n    contentContainer: (_className: string) => `${_className}{display:flex;overflow:hidden;flex-grow:1;width:100%;position:relative;}`,\n    /** Tab header */\n    labels: (_className: string) => `${_className}{display:flex;position:relative;height:100%;}`,\n    labelsContainer: () => (_className: string) => `${_className}{overflow:hidden;flex-shrink:0;}@media (hover: none){${__.scrollable} ${_className}{overflow:auto;}}`,\n    label: (_className: string) => `${_className}{-webkit-tap-highlight-color:transparent;-webkit-appearance:none;background-color:transparent;user-select:none;border:0;min-width:72px;padding:0 24px;cursor:pointer;height:48px;display:inline-flex;justify-content:center;align-items:center;position:relative;overflow:hidden;font-family:${theme.typography.fontFamily};font-size:${theme.pxToRem(theme.typography.fontSize)};letter-spacing:0.02857em;color:currentColor;outline:none;width:100%;font-weight:500;opacity:.7;}@media ${theme.breakpoints['XSmall']}{${_className}{padding:0 12px;}}`,\n    labelActive: (_className: string) => `${_className}{opacity:1;}`,\n    contents: (_className: string) => `${_className}{display:flex;width:100%;}`,\n    content: (_className: string) => `${st2c((LY_COMMON_STYLES.fill), `${_className}`)}${_className}{width:100%;height:100%;position:absolute;overflow:auto;}`,\n    contentActive: (_className: string) => `${_className}{position:relative;z-index:1;}`,\n    contentInner: null,\n    indicator: (_className: string) => `${_className}{position:absolute;height:2px;transition:450ms cubic-bezier(.1,1,0.5,1);background:currentColor;}`,\n    indicatorForServer: (_className: string) => `${_className}{position:absolute;background:currentColor;}`,\n    rippleContainer: (_className: string) => `${st2c((LY_COMMON_STYLES.fill), `${_className}`)}${_className}{overflow:hidden;}`,\n    scrollable: null,\n    hiddenContent: () => (_className: string) => `${_className}{visibility:hidden;}`,\n    column: null,\n    row: null\n  };\n};\n\n/** @docs-private */\nexport class LyTabsBase {\n  constructor(\n    public _theme: LyTheme2\n  ) { }\n}\n\n/** @docs-private */\nexport const LyTabsMixinBase = mixinStyleUpdater(mixinBg(mixinElevation(mixinShadowColor(LyTabsBase))));\n\n/** @docs-private */\nexport class LyTabLabelBase {\n  constructor(\n    public _theme: LyTheme2,\n    public _ngZone: NgZone,\n    public _platform: Platform\n  ) { }\n}\n\n/** @docs-private */\nexport const LyTabLabelMixinBase = mixinStyleUpdater(\nmixinBg(\n  mixinColor(\n    mixinRaised(\n      mixinDisabled(\n        mixinOutlined(\n          mixinElevation(\n            mixinShadowColor(\n              mixinDisableRipple(LyTabLabelBase)))))))));\n\n/**\n * @dynamic\n */\n@Component({\n  selector: 'ly-tabs',\n  templateUrl: './tabs.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  exportAs: 'lyTabs',\n  inputs: [\n    'bg', 'elevation', 'shadowColor'\n  ],\n  providers: [\n    StyleRenderer\n  ],\n  standalone: false\n})\nexport class LyTabs extends LyTabsMixinBase implements OnChanges, OnInit, AfterViewInit, AfterContentInit, OnDestroy {\n  /** @docs-private */\n  static и = 'LyTabs';\n  /** @docs-private */\n  $priority = STYLE_PRIORITY;\n  /** @docs-private */\n  readonly classes = this.sRenderer.renderSheet(STYLES, true);\n  _selectedIndex: number;\n  _selectedBeforeIndex: number;\n  _selectedTab: LyTab | null;\n  _selectedBeforeTab: LyTab | null;\n  _isViewInitLoaded: boolean;\n  private _tabsSubscription = Subscription.EMPTY;\n  private _headerPlacement: LyTabsHeaderPlacement;\n  private _headerPlacementClass: string;\n  private _alignTabs: AlignTabs;\n  private _alignTabsClass: string;\n  private _textColor: string;\n  private _textColorClass: string;\n  private _tabResizeSub: Subscription;\n  private _scrollable: boolean;\n  private _timeoutIds: { [index: number]: number } = {};\n  /** Emits whenever the component is destroyed. */\n  private readonly _destroy = new Subject<void>();\n\n  @ViewChild('tabs', { static: true }) tabsRef: ElementRef;\n  @ViewChild('tabContents', { static: true }) tabContents: ElementRef<HTMLDivElement>;\n  @ViewChild('tabsIndicator', { static: true, read: ElementRef }) tabsIndicator?: ElementRef;\n  @Input() selectedIndexOnChange: 'auto' | number = 'auto';\n  /**\n   * Keep the content.\n   * By default, when changing a tab, the previous one is created and deleted.\n   * With this, the content will only be hidden instead of deleting it.\n   */\n  @Input()\n  set keepContent(val: BooleanInput) {\n    const newVal = coerceBooleanProperty(val);\n    this._keepContent = newVal;\n  }\n  get keepContent() {\n    return this._keepContent;\n  }\n  private _keepContent: boolean;\n\n  /** Animation duration in milliseconds */\n  @Input()\n  set animationDuration(val: number) {\n    this._animationDuration = val;\n    Promise.resolve().then(() => {\n      this.tabContents.nativeElement.style.transitionDuration = `${val}ms`;\n    });\n  }\n  get animationDuration() {\n    return this._animationDuration;\n  }\n  private _animationDuration: number;\n\n  /**\n   * Whether the tab group should grow to the size of the active tab.\n   */\n  @Input()\n  set dynamicHeight(val: BooleanInput) {\n    const newVal = coerceBooleanProperty(val);\n    this._dynamicHeight = newVal;\n  }\n  get dynamicHeight() {\n    return this._dynamicHeight;\n  }\n  private _dynamicHeight: boolean;\n\n  @Input()\n  set scrollable(val: BooleanInput) {\n    const newVal = coerceBooleanProperty(val);\n    if (newVal) {\n      this.renderer.addClass(this.el.nativeElement, this.classes.scrollable);\n    } else if (this._scrollable != null) {\n      this.renderer.removeClass(this.el.nativeElement, this.classes.scrollable);\n    }\n    this._scrollable = newVal;\n  }\n  get scrollable() {\n    return this._scrollable;\n  }\n\n  @Input()\n  @Style<string | null>(\n    val => (theme, ref: ThemeRef) => {\n      const __ = ref.selectorsOf(STYLES);\n      return (_className: string) => `${_className} ${__.indicator}{color:${theme.colorOf(val)};}`;\n    }\n  ) indicatorColor: string;\n\n  @Input()\n  set headerPlacement(val: LyTabsHeaderPlacement) {\n    if (val !== this.headerPlacement) {\n      this._headerPlacement = val;\n      this.sRenderer.toggleClass(this.classes.column, val === 'above' || val === 'below');\n      this.sRenderer.toggleClass(this.classes.row, val === 'before' || val === 'after');\n      this._headerPlacementClass = this.theme.addStyle(`lyTabs.headerPlacement:${val}`,\n      () => {\n        let flexDirectionContainer: string;\n        let flexDirection = this._getFlexDirection(val);\n        let position: string;\n        let height: string | null = null;\n        let width: string | null = null;\n        let heightServer: string | null = null;\n        let widthServer: string | null = null;\n        switch (val) {\n          case YPosition.above:\n            flexDirectionContainer = 'column';\n            position = YPosition.below;\n            height = '2px';\n            widthServer = '100%';\n            break;\n          case YPosition.below:\n            flexDirectionContainer = 'column-reverse';\n            position = YPosition.above;\n            height = '2px';\n            widthServer = '100%';\n            break;\n          case XPosition.before:\n            flexDirectionContainer = 'row';\n            position = XPosition.after;\n            width = '2px';\n            heightServer = '100%';\n            break;\n          case XPosition.after:\n            flexDirectionContainer = 'row-reverse';\n            position = XPosition.before;\n            width = '2px';\n            heightServer = '100%';\n            break;\n\n          default:\n            throw new Error(`LyTabs: value:${val} do not is valid for \\`headerPlacement\\``);\n        }\n        if (val === YPosition.above || val === YPosition.below) {\n          flexDirection = 'row';\n        } else {\n          flexDirection = 'column';\n        }\n        return {\n          [`&`]: {\n            flexDirection: flexDirectionContainer\n          },\n          [`& .${this.classes.indicator},& .${this.classes.indicatorForServer}`]: {\n            [position]: 0,\n            height,\n            width\n          },\n          [`.${this.classes.indicatorForServer}`]: {\n            width: widthServer,\n            height: heightServer\n          },\n          [`& .${this.classes.labels},& .${this.classes.contents}`]: { flexDirection },\n          [`.${this.classes.contents}`]: { flexDirection }\n        };\n      },\n      this.el.nativeElement,\n      this._headerPlacementClass,\n      STYLE_PRIORITY);\n    }\n  }\n  get headerPlacement() {\n    return this._headerPlacement;\n  }\n\n  @Input()\n  set alignTabs(val: AlignTabs) {\n    this._alignTabs = val;\n    this._alignTabsClass = this.theme.addStyle(`lyAlignTabs: ${val}`,\n    (\n      val === 'stretch' ? {\n        [`& .${this.classes.labels} .${this.classes.tab}`]: {\n          flexBasis: 0,\n          flexGrow: 1\n        }\n      } : {\n        [`& .${this.classes.labels}`]: {\n          justifyContent: val in AlignAlias ? AlignAlias[val] : val\n        }\n      }\n    ),\n    this.el.nativeElement,\n    this._alignTabsClass,\n    STYLE_PRIORITY);\n  }\n  get alignTabs() {\n    return this._alignTabs;\n  }\n\n  @Input()\n  set textColor(val: string) {\n    this._textColor = val;\n    this._textColorClass = this.theme.addStyle(`lyTabs.textColor:${val}`,\n    (theme: ThemeVariables) => ({\n      [`& .${this.classes.labelActive}`]: {\n        color: theme.colorOf(val)\n      }\n    }),\n    this.el.nativeElement,\n    this._textColorClass,\n    STYLE_PRIORITY);\n  }\n  get textColor() {\n    return this._textColor;\n  }\n\n  @Input()\n  set selectedIndex(val: number) {\n    if (val !== this.selectedIndex) {\n      this._selectedBeforeIndex = this._selectedIndex as number;\n      this._selectedIndex = this._findIndex(val, 'auto');\n      this._selectedBeforeTab = this._selectedTab!;\n      if (this._isViewInitLoaded) {\n        this._updateTabs();\n      } else {\n        Promise.resolve(null).then(() => this._updateTabs());\n      }\n      this.selectedIndexChange.emit(this._selectedIndex);\n      this._markForCheck();\n    }\n  }\n  get selectedIndex() {\n    return this._selectedIndex;\n  }\n\n  @Output() selectedIndexChange: EventEmitter<any> = new EventEmitter();\n  @ContentChildren(forwardRef(() => LyTab)) tabsList: QueryList<LyTab>;\n  @ViewChildren('tabContent') tabContentList: QueryList<ElementRef<HTMLDivElement>>;\n\n  constructor(\n    private theme: LyTheme2,\n    private renderer: Renderer2,\n    private el: ElementRef,\n    private cd: ChangeDetectorRef,\n    private _viewportRuler: ViewportRuler,\n    readonly sRenderer: StyleRenderer,\n    private _platform: Platform,\n    private _ngZone: NgZone\n  ) {\n    super(theme);\n    this.setAutoContrast();\n    this.animationDuration = 500;\n  }\n\n  ngOnChanges() {\n    if (this._isViewInitLoaded) {\n      this.updateStyle(this.tabsRef.nativeElement);\n    }\n  }\n\n  ngOnInit() {\n    if (this.selectedIndex == null) {\n      this.selectedIndex = 0;\n    }\n    this.renderer.addClass(this.el.nativeElement, this.classes.root);\n    const tabsIndicatorEl = this.tabsIndicator!.nativeElement;\n    this.renderer.addClass(tabsIndicatorEl, this.classes.indicator);\n    /** Set default Color */\n    if (!this.indicatorColor && !this.bg && !this.textColor && !this.elevation) {\n      this.indicatorColor = DEFAULT_INDICATOR_COLOR;\n      this.bg = DEFAULT_BG;\n      this.elevation = DEFAULT_ELEVATION;\n    }\n    if (!this.headerPlacement) {\n      this.headerPlacement = DEFAULT_HEADER_PLACEMENT;\n    }\n  }\n\n  ngAfterContentInit() {\n    this._tabsSubscription = this.tabsList.changes.subscribe(() => {\n      if (this._selectedIndex !== this.selectedIndexOnChange) {\n        this.selectedIndex = this._findIndex(this.selectedIndex, this.selectedIndexOnChange);\n      }\n      this.cd.markForCheck();\n    });\n  }\n\n  ngAfterViewInit() {\n    this._isViewInitLoaded = true;\n    this.tabsList.changes\n      .pipe(\n        switchMapTo(this._ngZone.onStable.asObservable().pipe(take(1))),\n        takeUntil(this._destroy)\n      )\n      .subscribe(() => {\n        this._updateTabs();\n      });\n    this._updateTabs();\n\n    this.updateStyle(this.tabsRef.nativeElement);\n    if (this._platform.isBrowser) {\n      this._tabResizeSub = this._viewportRuler.change().subscribe(() => {\n        if (this._selectedTab) {\n          this._updateIndicator(this._selectedTab);\n          this._selectedTab._tabLabel._updateTabScroll();\n        }\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    this._destroy.next();\n    this._destroy.complete();\n    this._tabsSubscription.unsubscribe();\n    if (this._tabResizeSub) {\n      this._tabResizeSub.unsubscribe();\n    }\n    this._clearTimeouts();\n  }\n\n  private _findIndex(selectedIndex: number, index: string | number) {\n    if (!this.tabsList) {\n      return selectedIndex;\n    }\n    const indexOfLastTab = this.tabsList.length - 1;\n    const currentIndex = typeof index === 'number' ? index : selectedIndex;\n    return currentIndex < 0 ? 0 : currentIndex > indexOfLastTab ? indexOfLastTab : currentIndex;\n  }\n\n  _updateIndicator(currentTab: LyTab, beforeTab?: LyTab): void {\n    if (currentTab) {\n      if (beforeTab) {\n        beforeTab._renderer.removeAttribute(beforeTab._tabIndicator.nativeElement, 'class');\n      }\n      const el = currentTab._el.nativeElement as HTMLElement;\n      const rects = el.getBoundingClientRect();\n\n      if (this.headerPlacement === XPosition.after || this.headerPlacement === XPosition.before) {\n        this.renderer.setStyle(this.tabsIndicator!.nativeElement, 'height', `${rects.height}px`);\n        this.renderer.setStyle(this.tabsIndicator!.nativeElement, 'top', `${el.offsetTop}px`);\n        this.renderer.removeStyle(this.tabsIndicator!.nativeElement, 'width');\n        this.renderer.removeStyle(this.tabsIndicator!.nativeElement, 'left');\n      } else {\n        this.renderer.setStyle(this.tabsIndicator!.nativeElement, 'width', `${rects.width}px`);\n        this.renderer.setStyle(this.tabsIndicator!.nativeElement, 'left', `${el.offsetLeft}px`);\n        this.renderer.removeStyle(this.tabsIndicator!.nativeElement, 'height');\n        this.renderer.removeStyle(this.tabsIndicator!.nativeElement, 'top');\n      }\n    }\n  }\n\n  _markForCheck() {\n    this.cd.markForCheck();\n  }\n\n  private _updateTabs() {\n    if (!this._isViewInitLoaded) {\n      return;\n    }\n    const tabsContents = this.tabContentList.toArray();\n    const tabsForUpdate: [LyTab, HTMLDivElement, number][] = [];\n    this.tabsList.forEach((tab, index) => {\n      const tabContent = tabsContents[index].nativeElement;\n      if (this.selectedIndex === index || this._selectedBeforeIndex === index) {\n        tab._activeContent = true;\n        tabsForUpdate.push([tab, tabContent, index]);\n      } else {\n        if (this.keepContent) {\n          this.renderer.addClass(tabContent, this.classes.hiddenContent);\n        }\n      }\n    });\n    this._ngZone.run(() => {\n      this._markForCheck();\n    });\n    this._ngZone.onStable.asObservable()\n      .pipe(\n        take(1),\n        takeUntil(this._destroy)\n      )\n      .subscribe(() =>\n        tabsForUpdate.forEach(parms =>\n          this._updateContentStyle(...parms)));\n  }\n\n\n  loadTemplate(tab: LyTab, index: number): TemplatePortal<any> | null {\n    tab.index = index;\n    if (this.selectedIndex === tab.index) {\n      // set 0 if is null\n      this._selectedTab = tab;\n      Promise.resolve(null).then(() => {\n        // this._updateDynamicHeight(tabContent, index);\n        if (this._platform.isBrowser) {\n          this._updateIndicator(tab);\n        } else {\n          // for server\n          const selectedBeforeTab = this._selectedBeforeTab;\n          if (selectedBeforeTab) {\n            this.renderer.removeClass(selectedBeforeTab._tabIndicator.nativeElement, this.classes.indicatorForServer);\n          }\n          this.renderer.addClass(this._selectedTab!._tabIndicator.nativeElement, this.classes.indicatorForServer);\n        }\n      });\n    } else if (this._selectedBeforeIndex === index) {\n      // Promise.resolve(null).then(() => this._updateDynamicHeight(tabContent, index));\n    }\n    tab._tabLabel._updateTabState();\n    if (this.keepContent) {\n      return tab.content;\n    }\n    if (tab._activeContent) {\n      return tab.content;\n    }\n    return null;\n  }\n\n  private _getFlexDirection(val: LyTabsHeaderPlacement) {\n    let flexDirection: string;\n    if (val === YPosition.above || val === YPosition.below) {\n      flexDirection = 'row';\n    } else {\n      flexDirection = 'column';\n    }\n    return flexDirection;\n  }\n\n  private _updateContentStyle(tab: LyTab, tabContent: HTMLDivElement, index: number) {\n    if (this.selectedIndex === index || this._selectedBeforeIndex === index) {\n      const prevIndex = this._selectedBeforeIndex;\n      const currentIndex = this.selectedIndex;\n      const dynamicHeight = this.dynamicHeight && this._platform.isBrowser && prevIndex != null;\n      const contentInner = tabContent.firstElementChild as HTMLDivElement;\n      const contentHeight = dynamicHeight ? contentInner.getBoundingClientRect().height : null;\n      const contentHeightPrev = dynamicHeight\n        ? this.tabContentList.toArray()[prevIndex].nativeElement.firstElementChild!.getBoundingClientRect().height\n        : null;\n      if (currentIndex === index) {\n        this.renderer.addClass(tabContent, this.classes.contentActive);\n        if (this.keepContent) {\n          this.renderer.removeClass(tabContent, this.classes.hiddenContent);\n        }\n      } else {\n        this.renderer.removeClass(tabContent, this.classes.contentActive);\n      }\n\n      if (prevIndex == null || !this._platform.isBrowser || prevIndex === currentIndex) {\n        return;\n      }\n\n      this._clearTimeouts(index);\n      const { before } = this._theme.variables;\n      const isDirRow = this.headerPlacement === XPosition.after\n        || this.headerPlacement === XPosition.before;\n      const x = before === 'left'\n        ? 100\n        : isDirRow\n          ? 100\n          : -100;\n      if (currentIndex === index) {\n        const sign = prevIndex < index ? 1 : -1;\n        const pos = isDirRow ? `0,${x * sign}%` : `${x * sign}%, 0`;\n        tabContent.style.overflow = 'hidden';\n        if (dynamicHeight) {\n          tabContent.style.height = `${contentHeightPrev}px`;\n        }\n        tabContent.style.transform = `translate3d(${pos}, 0)`;\n        enforceStyleRecalculation(tabContent);\n        tabContent.style.transition = `${this.animationDuration}ms cubic-bezier(0.35, 0, 0.25, 1)`;\n        tabContent.style.transform = `translate3d(0%, 0, 0)`;\n        if (dynamicHeight) {\n          tabContent.style.height = `${contentHeight}px`;\n        }\n      } else {\n        const sign = currentIndex < index ? 1 : -1;\n        const pos = isDirRow ? `0,${x * sign}%` : `${x * sign}%, 0`;\n        tabContent.style.overflow = 'hidden';\n        tabContent.style.transform = `translate3d(0%, 0, 0)`;\n        enforceStyleRecalculation(tabContent);\n        tabContent.style.transition = `${this.animationDuration}ms cubic-bezier(0.35, 0, 0.25, 1)`;\n        tabContent.style.transform = `translate3d(${pos}, 0)`;\n      }\n      this._runTimeoutOutsideZone(index, () => {\n        tabContent.style.transform = ``;\n        tabContent.style.transition = ``;\n        tabContent.style.overflow = ``;\n        if (dynamicHeight) {\n          tabContent.style.height = ``;\n        }\n        if (currentIndex !== index) {\n          if (this.keepContent) {\n            this.renderer.addClass(tabContent, this.classes.hiddenContent);\n          }\n          tab._activeContent = false;\n          this._ngZone.run(() => this._markForCheck());\n        }\n      }, this.animationDuration);\n    }\n  }\n\n  /** Runs a timeout outside of the Angular zone to avoid triggering the change detection. */\n  private _runTimeoutOutsideZone(index: number, fn: () => void, delay = 0) {\n    this._ngZone.runOutsideAngular(() => this._timeoutIds[`_${index}`] = window.setTimeout(fn, delay));\n  }\n\n  private _clearTimeouts(tabIndex?: number) {\n    if (tabIndex != null) {\n      const key = `_${tabIndex}`;\n      if (this._timeoutIds[key] != null) {\n        window.clearTimeout(this._timeoutIds[key]);\n        delete this._timeoutIds[key];\n      }\n    } else {\n      Object.keys(this._timeoutIds)\n        .forEach(key => window.clearTimeout(this._timeoutIds[`_${key}`]));\n    }\n  }\n}\n\n@Component({\n  selector: 'ly-tab',\n  templateUrl: './tab.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    StyleRenderer\n  ],\n  standalone: false\n})\nexport class LyTab implements OnInit {\n  /** Current tab index */\n  index: number;\n  _isBrowser = this._platform.isBrowser;\n  @ContentChild(LyTabContent, { read: TemplateRef, static: true }) _templateRefLazy: TemplateRef<LyTabContent>;\n  @ViewChild('_templateNgContent', { static: true }) _templateRef: TemplateRef<any>;\n  @ViewChild('tabIndicator') _tabIndicator: ElementRef;\n  @ContentChild(forwardRef(() => LyTabLabel), { static: true }) _tabLabel: LyTabLabel & { };\n\n  /** Portal that will be the hosted content of the tab */\n  private _contentPortal: TemplatePortal | null = null;\n\n  /** @docs-private */\n  get content(): TemplatePortal | null {\n    return this._contentPortal;\n  }\n\n  _activeContent: boolean;\n\n  constructor(\n    private _tabs: LyTabs,\n    public _renderer: Renderer2,\n    public _el: ElementRef,\n    readonly sRenderer: StyleRenderer,\n    private _platform: Platform,\n    private _viewContainerRef: ViewContainerRef,\n  ) { }\n\n  ngOnInit() {\n    this._renderer.addClass(this._el.nativeElement, this._tabs.classes.tab);\n    this._contentPortal = new TemplatePortal(\n      this._templateRefLazy || this._templateRef,\n      this._viewContainerRef\n    );\n  }\n}\n\n@Component({\n  selector: 'button[ly-tab-label], a[ly-tab-label]',\n  templateUrl: 'tab-label.html',\n  inputs: [\n    'bg',\n    'color',\n    'raised',\n    'disabled',\n    'outlined',\n    'elevation',\n    'shadowColor',\n    'disableRipple'\n  ],\n  providers: [\n    StyleRenderer\n  ],\n  standalone: false\n})\nexport class LyTabLabel extends LyButton implements OnInit, AfterViewInit {\n  private _activeTabStyle: boolean;\n  private _active: boolean;\n  _isBrowser: boolean;\n  disableRipple: boolean;\n  disabled: boolean;\n\n  @Input()\n  get active() {\n    return this._active;\n  }\n  set active(val: BooleanInput) {\n    const newVal = coerceBooleanProperty(val);\n    if (newVal && val !== this.active) {\n      Promise.resolve(null).then(() => this._tabs.selectedIndex = this._tab.index);\n    }\n  }\n\n  @ViewChild('rippleContainer') _rippleContainer: ElementRef;\n  @HostListener('click') _onClickTab() {\n    if (!this.disabled) {\n      this._tabs.selectedIndex = this._tab.index;\n    }\n  }\n\n  constructor(\n    _el: ElementRef,\n    _renderer: Renderer2,\n    _theme: LyTheme2,\n    _ngZone: NgZone,\n    _rippleService: LyRippleService,\n    _focusMonitor: FocusMonitor,\n    readonly sRenderer: StyleRenderer,\n    @Optional() private _tab: LyTab,\n    @Optional() private _tabs: LyTabs,\n    platform: Platform\n  ) {\n    super(_el, _renderer, _theme, _ngZone, _rippleService, _focusMonitor, sRenderer, platform, null as any);\n    this._isBrowser = platform.isBrowser;\n  }\n\n  ngOnInit() {\n    this._renderer.addClass(this._el.nativeElement, this._tabs.classes.label);\n    // set default disable ripple\n    if (this.disableRipple == null) {\n      this.disableRipple = DEFAULT_DISABLE_RIPPLE;\n    }\n  }\n\n  _updateTabState() {\n    // update styles for active tab\n    if (this._tabs._selectedIndex === this._tab.index) {\n      if (!this._activeTabStyle) {\n        this._activeTabStyle = true;\n        this._renderer.addClass(this._el.nativeElement, this._tabs.classes.labelActive);\n        this._updateTabScroll();\n      }\n    } else if (this._activeTabStyle) {\n      this._activeTabStyle = false;\n      this._renderer.removeClass(this._el.nativeElement, this._tabs.classes.labelActive);\n    }\n  }\n\n  _updateTabScroll() {\n    if (this._isBrowser && this._tabs.scrollable) {\n      const tab = this._tab._el.nativeElement as HTMLElement;\n      const tabContainer = this._tabs.tabsRef.nativeElement as HTMLElement;\n      if (tabContainer.scrollWidth !== tabContainer.offsetWidth) {\n        const dir = (this as any)._theme.variables.direction;\n        const max = tabContainer.scrollWidth - tabContainer.offsetWidth;\n        const offsetBefore = dir === Dir.rtl\n        ? max + tab.offsetLeft\n        : tab.offsetLeft;\n        const l = offsetBefore + tab.offsetWidth / 2 - tabContainer.offsetWidth / 2;\n        const newVal = l >= max ? max : l <= 0 ? 0 : l;\n        scrollWithAnimation(this._tabs.tabsRef.nativeElement, newVal, 350, 'x');\n      }\n    }\n  }\n\n  ngAfterViewInit() { }\n}\n\n/** Enforces a style recalculation of a DOM element by computing its styles. */\nfunction enforceStyleRecalculation(element: HTMLElement) {\n  window.getComputedStyle(element).getPropertyValue('opacity');\n}\n","<div #tabs [className]=\"classes.labelsContainer\">\n  <div [className]=\"classes.labels\">\n    <ng-content></ng-content>\n    <span #tabsIndicator></span>\n  </div>\n</div>\n<div [className]=\"classes.contentContainer\">\n  <div [className]=\"classes.contents\" #tabContents>\n    <div #tabContent *ngFor=\"let item of tabsList; index as x\" [className]=\"classes.content\">\n      <div [className]=\"classes.contentInner\">\n        <ng-template\n          [cdkPortalOutlet]=\"loadTemplate(item, x)\"\n        ></ng-template>\n      </div>\n    </div>\n  </div>\n</div>\n","<ng-content select=\"ly-tab-label\"></ng-content>\n<ng-content select=\"[ly-tab-label]\"></ng-content>\n<ng-content select=\"[ly-tab-label-native]\"></ng-content>\n<div></div>\n<span *ngIf=\"!_isBrowser\" #tabIndicator></span>\n<ng-template #_templateNgContent>\n  <ng-content></ng-content>\n</ng-template>","<span [className]=\"classes.content\">\n  <ng-content></ng-content>\n</span>\n<div *ngIf=\"_isBrowser\" #rippleContainer [className]=\"_rippleService.classes.container\"></div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgTranscludeModule, LyCommonModule, LyThemeModule } from '@alyle/ui';\nimport { LyTabs, LyTabLabel, LyTab } from './tabs';\nimport { LyTabContent } from './tab-content.directive';\nimport { PortalModule } from '@angular/cdk/portal';\n\n@NgModule({\n  imports: [\n    LyThemeModule,\n    CommonModule,\n    LyCommonModule,\n    NgTranscludeModule,\n    PortalModule\n  ],\n  exports: [LyCommonModule, LyTabs, LyTab, LyTabLabel, LyTabContent],\n  declarations: [LyTabs, LyTab, LyTabLabel, LyTabContent]\n})\nexport class LyTabsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;MAKa,YAAY,CAAA;AACvB,IAAA,WAAA,CAAmB,QAA0B,EAAA;QAA1B,IAAQ,CAAA,QAAA,GAAR,QAAQ;;+GADhB,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,SAAS;mBAAC,EAAC,QAAQ,EAAE,kBAAkB;AACtC,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACqED,MAAM,sBAAsB,GAAG,KAAK;AACpC,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,UAAU,GAAG,SAAS;AAC5B,MAAM,uBAAuB,GAAG,QAAQ;AACxC,MAAM,iBAAiB,GAAG,CAAC;AAC3B,MAAM,wBAAwB,GAAG,OAAO;MAI3B,MAAM,GAAG,CAAC,KAAsC,EAAE,GAAa,KAAI;IAC9E,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;IAClC,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,CAAC;AACf,QAAA,SAAS,EAAE,cAAc;AACzB,QAAA,IAAI,EAAE,MAAM,CAAC,UAAkB,KAAK,CAAG,EAAA,UAAU,kBAAkB,IAAI,GAChE,KAAK,CAAC;eACF,KAAK,CAAC,GAAG,CAAC;AACV,gBAAC,KAAK,CAAC,GAAG,CAAC,IAAI,YAAY;AAC5B,kBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,kBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IACrB,GAAG,UAAU,CAAA,CAAE,CAAC,CAAE,CAAA;QAC5B,GAAG,EAAE,CAAC,UAAkB,KAAK,CAAA,EAAG,UAAU,CAA0C,wCAAA,CAAA;;QAEpF,gBAAgB,EAAE,CAAC,UAAkB,KAAK,CAAA,EAAG,UAAU,CAA0E,wEAAA,CAAA;;QAEjI,MAAM,EAAE,CAAC,UAAkB,KAAK,CAAA,EAAG,UAAU,CAA+C,6CAAA,CAAA;AAC5F,QAAA,eAAe,EAAE,MAAM,CAAC,UAAkB,KAAK,CAAA,EAAG,UAAU,CAAwD,qDAAA,EAAA,EAAE,CAAC,UAAU,CAAA,CAAA,EAAI,UAAU,CAAmB,iBAAA,CAAA;AAClK,QAAA,KAAK,EAAE,CAAC,UAAkB,KAAK,CAAA,EAAG,UAAU,CAAA,6RAAA,EAAgS,KAAK,CAAC,UAAU,CAAC,UAAU,cAAc,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA,wGAAA,EAA2G,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA,CAAA,EAAI,UAAU,CAAoB,kBAAA,CAAA;QACrkB,WAAW,EAAE,CAAC,UAAkB,KAAK,CAAA,EAAG,UAAU,CAAc,YAAA,CAAA;QAChE,QAAQ,EAAE,CAAC,UAAkB,KAAK,CAAA,EAAG,UAAU,CAA4B,0BAAA,CAAA;QAC3E,OAAO,EAAE,CAAC,UAAkB,KAAK,CAAA,EAAG,IAAI,EAAE,gBAAgB,CAAC,IAAI,GAAG,CAAA,EAAG,UAAU,CAAE,CAAA,CAAC,CAAG,EAAA,UAAU,CAA2D,yDAAA,CAAA;QAC1J,aAAa,EAAE,CAAC,UAAkB,KAAK,CAAA,EAAG,UAAU,CAAgC,8BAAA,CAAA;AACpF,QAAA,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,CAAC,UAAkB,KAAK,CAAA,EAAG,UAAU,CAAmG,iGAAA,CAAA;QACnJ,kBAAkB,EAAE,CAAC,UAAkB,KAAK,CAAA,EAAG,UAAU,CAA8C,4CAAA,CAAA;QACvG,eAAe,EAAE,CAAC,UAAkB,KAAK,CAAA,EAAG,IAAI,EAAE,gBAAgB,CAAC,IAAI,GAAG,CAAA,EAAG,UAAU,CAAE,CAAA,CAAC,CAAG,EAAA,UAAU,CAAoB,kBAAA,CAAA;AAC3H,QAAA,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,MAAM,CAAC,UAAkB,KAAK,CAAG,EAAA,UAAU,CAAsB,oBAAA,CAAA;AAChF,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,GAAG,EAAE;KACN;AACH;AAEA;MACa,UAAU,CAAA;AACrB,IAAA,WAAA,CACS,MAAgB,EAAA;QAAhB,IAAM,CAAA,MAAA,GAAN,MAAM;;AAEhB;AAED;AACa,MAAA,eAAe,GAAG,iBAAiB,CAAC,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;AAEtG;MACa,cAAc,CAAA;AACzB,IAAA,WAAA,CACS,MAAgB,EAChB,OAAe,EACf,SAAmB,EAAA;QAFnB,IAAM,CAAA,MAAA,GAAN,MAAM;QACN,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAS,CAAA,SAAA,GAAT,SAAS;;AAEnB;AAED;AACO,MAAM,mBAAmB,GAAG,iBAAiB,CACpD,OAAO,CACL,UAAU,CACR,WAAW,CACT,aAAa,CACX,aAAa,CACX,cAAc,CACZ,gBAAgB,CACd,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvD;;AAEG;AAeG,MAAO,MAAO,SAAQ,eAAe,CAAA;;aAElC,IAAC,CAAA,CAAA,GAAG,QAAH,CAAY;AA2BpB;;;;AAIG;IACH,IACI,WAAW,CAAC,GAAiB,EAAA;AAC/B,QAAA,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC;AACzC,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM;;AAE5B,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;;IAK1B,IACI,iBAAiB,CAAC,GAAW,EAAA;AAC/B,QAAA,IAAI,CAAC,kBAAkB,GAAG,GAAG;AAC7B,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AAC1B,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAA,EAAG,GAAG,CAAA,EAAA,CAAI;AACtE,SAAC,CAAC;;AAEJ,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,kBAAkB;;AAIhC;;AAEG;IACH,IACI,aAAa,CAAC,GAAiB,EAAA;AACjC,QAAA,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC;AACzC,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM;;AAE9B,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc;;IAI5B,IACI,UAAU,CAAC,GAAiB,EAAA;AAC9B,QAAA,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC;QACzC,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;;AACjE,aAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;AACnC,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;;AAE3E,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM;;AAE3B,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW;;IAWzB,IACI,eAAe,CAAC,GAA0B,EAAA;AAC5C,QAAA,IAAI,GAAG,KAAK,IAAI,CAAC,eAAe,EAAE;AAChC,YAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG;AAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO,CAAC;AACnF,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,OAAO,CAAC;AACjF,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAA0B,uBAAA,EAAA,GAAG,CAAE,CAAA,EAChF,MAAK;AACH,gBAAA,IAAI,sBAA8B;gBAClC,IAAI,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;AAC/C,gBAAA,IAAI,QAAgB;gBACpB,IAAI,MAAM,GAAkB,IAAI;gBAChC,IAAI,KAAK,GAAkB,IAAI;gBAC/B,IAAI,YAAY,GAAkB,IAAI;gBACtC,IAAI,WAAW,GAAkB,IAAI;gBACrC,QAAQ,GAAG;oBACT,KAAK,SAAS,CAAC,KAAK;wBAClB,sBAAsB,GAAG,QAAQ;AACjC,wBAAA,QAAQ,GAAG,SAAS,CAAC,KAAK;wBAC1B,MAAM,GAAG,KAAK;wBACd,WAAW,GAAG,MAAM;wBACpB;oBACF,KAAK,SAAS,CAAC,KAAK;wBAClB,sBAAsB,GAAG,gBAAgB;AACzC,wBAAA,QAAQ,GAAG,SAAS,CAAC,KAAK;wBAC1B,MAAM,GAAG,KAAK;wBACd,WAAW,GAAG,MAAM;wBACpB;oBACF,KAAK,SAAS,CAAC,MAAM;wBACnB,sBAAsB,GAAG,KAAK;AAC9B,wBAAA,QAAQ,GAAG,SAAS,CAAC,KAAK;wBAC1B,KAAK,GAAG,KAAK;wBACb,YAAY,GAAG,MAAM;wBACrB;oBACF,KAAK,SAAS,CAAC,KAAK;wBAClB,sBAAsB,GAAG,aAAa;AACtC,wBAAA,QAAQ,GAAG,SAAS,CAAC,MAAM;wBAC3B,KAAK,GAAG,KAAK;wBACb,YAAY,GAAG,MAAM;wBACrB;AAEF,oBAAA;AACE,wBAAA,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAA,wCAAA,CAA0C,CAAC;;AAEnF,gBAAA,IAAI,GAAG,KAAK,SAAS,CAAC,KAAK,IAAI,GAAG,KAAK,SAAS,CAAC,KAAK,EAAE;oBACtD,aAAa,GAAG,KAAK;;qBAChB;oBACL,aAAa,GAAG,QAAQ;;gBAE1B,OAAO;oBACL,CAAC,CAAA,CAAA,CAAG,GAAG;AACL,wBAAA,aAAa,EAAE;AAChB,qBAAA;AACD,oBAAA,CAAC,CAAM,GAAA,EAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAA,IAAA,EAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAA,CAAE,GAAG;wBACtE,CAAC,QAAQ,GAAG,CAAC;wBACb,MAAM;wBACN;AACD,qBAAA;oBACD,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAA,CAAE,GAAG;AACvC,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,MAAM,EAAE;AACT,qBAAA;AACD,oBAAA,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAO,IAAA,EAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA,CAAE,GAAG,EAAE,aAAa,EAAE;oBAC5E,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA,CAAE,GAAG,EAAE,aAAa;iBAC/C;AACH,aAAC,EACD,IAAI,CAAC,EAAE,CAAC,aAAa,EACrB,IAAI,CAAC,qBAAqB,EAC1B,cAAc,CAAC;;;AAGnB,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB;;IAG9B,IACI,SAAS,CAAC,GAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG;AACrB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,GAAG,CAAA,CAAE,GAE9D,GAAG,KAAK,SAAS,GAAG;AAClB,YAAA,CAAC,CAAM,GAAA,EAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA,EAAA,EAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAA,CAAE,GAAG;AAClD,gBAAA,SAAS,EAAE,CAAC;AACZ,gBAAA,QAAQ,EAAE;AACX;AACF,SAAA,GAAG;YACF,CAAC,CAAA,GAAA,EAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA,CAAE,GAAG;AAC7B,gBAAA,cAAc,EAAE,GAAG,IAAI,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG;AACvD;AACF,SAAA,GAEH,IAAI,CAAC,EAAE,CAAC,aAAa,EACrB,IAAI,CAAC,eAAe,EACpB,cAAc,CAAC;;AAEjB,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;;IAGxB,IACI,SAAS,CAAC,GAAW,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG;AACrB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAoB,iBAAA,EAAA,GAAG,EAAE,EACpE,CAAC,KAAqB,MAAM;YAC1B,CAAC,CAAA,GAAA,EAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAA,CAAE,GAAG;AAClC,gBAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG;AACzB;AACF,SAAA,CAAC,EACF,IAAI,CAAC,EAAE,CAAC,aAAa,EACrB,IAAI,CAAC,eAAe,EACpB,cAAc,CAAC;;AAEjB,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU;;IAGxB,IACI,aAAa,CAAC,GAAW,EAAA;AAC3B,QAAA,IAAI,GAAG,KAAK,IAAI,CAAC,aAAa,EAAE;AAC9B,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAwB;YACzD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;AAClD,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAa;AAC5C,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,WAAW,EAAE;;iBACb;AACL,gBAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;;YAEtD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YAClD,IAAI,CAAC,aAAa,EAAE;;;AAGxB,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc;;AAO5B,IAAA,WAAA,CACU,KAAe,EACf,QAAmB,EACnB,EAAc,EACd,EAAqB,EACrB,cAA6B,EAC5B,SAAwB,EACzB,SAAmB,EACnB,OAAe,EAAA;QAEvB,KAAK,CAAC,KAAK,CAAC;QATJ,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAE,CAAA,EAAA,GAAF,EAAE;QACF,IAAc,CAAA,cAAA,GAAd,cAAc;QACb,IAAS,CAAA,SAAA,GAAT,SAAS;QACV,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAO,CAAA,OAAA,GAAP,OAAO;;QA3OjB,IAAS,CAAA,SAAA,GAAG,cAAc;;QAEjB,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;AAMnD,QAAA,IAAA,CAAA,iBAAiB,GAAG,YAAY,CAAC,KAAK;QAStC,IAAW,CAAA,WAAA,GAAgC,EAAE;;AAEpC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;QAKtC,IAAqB,CAAA,qBAAA,GAAoB,MAAM;AAuM9C,QAAA,IAAA,CAAA,mBAAmB,GAAsB,IAAI,YAAY,EAAE;QAenE,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG;;IAG9B,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;;;IAIhD,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AAC9B,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC;;AAExB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAChE,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,aAAc,CAAC,aAAa;AACzD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;;QAE/D,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC1E,YAAA,IAAI,CAAC,cAAc,GAAG,uBAAuB;AAC7C,YAAA,IAAI,CAAC,EAAE,GAAG,UAAU;AACpB,YAAA,IAAI,CAAC,SAAS,GAAG,iBAAiB;;AAEpC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,GAAG,wBAAwB;;;IAInD,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;YAC5D,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,qBAAqB,EAAE;AACtD,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC;;AAEtF,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;AACxB,SAAC,CAAC;;IAGJ,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC7B,IAAI,CAAC,QAAQ,CAAC;aACX,IAAI,CACH,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAC/D,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,WAAW,EAAE;AACpB,SAAC,CAAC;QACJ,IAAI,CAAC,WAAW,EAAE;QAElB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AAC5C,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,MAAK;AAC/D,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC;AACxC,oBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,gBAAgB,EAAE;;AAElD,aAAC,CAAC;;;IAIN,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACxB,QAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;AACpC,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;;QAElC,IAAI,CAAC,cAAc,EAAE;;IAGf,UAAU,CAAC,aAAqB,EAAE,KAAsB,EAAA;AAC9D,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,OAAO,aAAa;;QAEtB,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AAC/C,QAAA,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,aAAa;QACtE,OAAO,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,GAAG,cAAc,GAAG,cAAc,GAAG,YAAY;;IAG7F,gBAAgB,CAAC,UAAiB,EAAE,SAAiB,EAAA;QACnD,IAAI,UAAU,EAAE;YACd,IAAI,SAAS,EAAE;AACb,gBAAA,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,aAAa,EAAE,OAAO,CAAC;;AAErF,YAAA,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,aAA4B;AACtD,YAAA,MAAM,KAAK,GAAG,EAAE,CAAC,qBAAqB,EAAE;AAExC,YAAA,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,MAAM,EAAE;AACzF,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAc,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAG,EAAA,KAAK,CAAC,MAAM,CAAA,EAAA,CAAI,CAAC;AACxF,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAc,CAAC,aAAa,EAAE,KAAK,EAAE,CAAG,EAAA,EAAE,CAAC,SAAS,CAAA,EAAA,CAAI,CAAC;AACrF,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAc,CAAC,aAAa,EAAE,OAAO,CAAC;AACrE,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAc,CAAC,aAAa,EAAE,MAAM,CAAC;;iBAC/D;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAc,CAAC,aAAa,EAAE,OAAO,EAAE,CAAG,EAAA,KAAK,CAAC,KAAK,CAAA,EAAA,CAAI,CAAC;AACtF,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAc,CAAC,aAAa,EAAE,MAAM,EAAE,CAAG,EAAA,EAAE,CAAC,UAAU,CAAA,EAAA,CAAI,CAAC;AACvF,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAc,CAAC,aAAa,EAAE,QAAQ,CAAC;AACtE,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAc,CAAC,aAAa,EAAE,KAAK,CAAC;;;;IAKzE,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;IAGhB,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B;;QAEF,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QAClD,MAAM,aAAa,GAAsC,EAAE;QAC3D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;YACnC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa;AACpD,YAAA,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,IAAI,IAAI,CAAC,oBAAoB,KAAK,KAAK,EAAE;AACvE,gBAAA,GAAG,CAAC,cAAc,GAAG,IAAI;gBACzB,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;;iBACvC;AACL,gBAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,oBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;;;AAGpE,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAK;YACpB,IAAI,CAAC,aAAa,EAAE;AACtB,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY;AAC/B,aAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aAEzB,SAAS,CAAC,MACT,aAAa,CAAC,OAAO,CAAC,KAAK,IACzB,IAAI,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;;IAI5C,YAAY,CAAC,GAAU,EAAE,KAAa,EAAA;AACpC,QAAA,GAAG,CAAC,KAAK,GAAG,KAAK;QACjB,IAAI,IAAI,CAAC,aAAa,KAAK,GAAG,CAAC,KAAK,EAAE;;AAEpC,YAAA,IAAI,CAAC,YAAY,GAAG,GAAG;YACvB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAK;;AAE9B,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;AAC5B,oBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;;qBACrB;;AAEL,oBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB;oBACjD,IAAI,iBAAiB,EAAE;AACrB,wBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;;AAE3G,oBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAa,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;;AAE3G,aAAC,CAAC;;AACG,aAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,KAAK,EAAE;;;AAGhD,QAAA,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE;AAC/B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,GAAG,CAAC,OAAO;;AAEpB,QAAA,IAAI,GAAG,CAAC,cAAc,EAAE;YACtB,OAAO,GAAG,CAAC,OAAO;;AAEpB,QAAA,OAAO,IAAI;;AAGL,IAAA,iBAAiB,CAAC,GAA0B,EAAA;AAClD,QAAA,IAAI,aAAqB;AACzB,QAAA,IAAI,GAAG,KAAK,SAAS,CAAC,KAAK,IAAI,GAAG,KAAK,SAAS,CAAC,KAAK,EAAE;YACtD,aAAa,GAAG,KAAK;;aAChB;YACL,aAAa,GAAG,QAAQ;;AAE1B,QAAA,OAAO,aAAa;;AAGd,IAAA,mBAAmB,CAAC,GAAU,EAAE,UAA0B,EAAE,KAAa,EAAA;AAC/E,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,IAAI,IAAI,CAAC,oBAAoB,KAAK,KAAK,EAAE;AACvE,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB;AAC3C,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa;AACvC,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,IAAI,IAAI;AACzF,YAAA,MAAM,YAAY,GAAG,UAAU,CAAC,iBAAmC;AACnE,YAAA,MAAM,aAAa,GAAG,aAAa,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,IAAI;YACxF,MAAM,iBAAiB,GAAG;AACxB,kBAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,iBAAkB,CAAC,qBAAqB,EAAE,CAAC;kBAClG,IAAI;AACR,YAAA,IAAI,YAAY,KAAK,KAAK,EAAE;AAC1B,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AAC9D,gBAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,oBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;;;iBAE9D;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;;AAGnE,YAAA,IAAI,SAAS,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,KAAK,YAAY,EAAE;gBAChF;;AAGF,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;YAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;YACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC;AAC/C,mBAAA,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,MAAM;AAC9C,YAAA,MAAM,CAAC,GAAG,MAAM,KAAK;AACnB,kBAAE;AACF,kBAAE;AACA,sBAAE;sBACA,CAAC,GAAG;AACV,YAAA,IAAI,YAAY,KAAK,KAAK,EAAE;AAC1B,gBAAA,MAAM,IAAI,GAAG,SAAS,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;AACvC,gBAAA,MAAM,GAAG,GAAG,QAAQ,GAAG,KAAK,CAAC,GAAG,IAAI,CAAG,CAAA,CAAA,GAAG,CAAA,EAAG,CAAC,GAAG,IAAI,MAAM;AAC3D,gBAAA,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;gBACpC,IAAI,aAAa,EAAE;oBACjB,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAG,EAAA,iBAAiB,IAAI;;gBAEpD,UAAU,CAAC,KAAK,CAAC,SAAS,GAAG,CAAe,YAAA,EAAA,GAAG,MAAM;gBACrD,yBAAyB,CAAC,UAAU,CAAC;gBACrC,UAAU,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAA,iCAAA,CAAmC;AAC1F,gBAAA,UAAU,CAAC,KAAK,CAAC,SAAS,GAAG,uBAAuB;gBACpD,IAAI,aAAa,EAAE;oBACjB,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAG,EAAA,aAAa,IAAI;;;iBAE3C;AACL,gBAAA,MAAM,IAAI,GAAG,YAAY,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1C,gBAAA,MAAM,GAAG,GAAG,QAAQ,GAAG,KAAK,CAAC,GAAG,IAAI,CAAG,CAAA,CAAA,GAAG,CAAA,EAAG,CAAC,GAAG,IAAI,MAAM;AAC3D,gBAAA,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;AACpC,gBAAA,UAAU,CAAC,KAAK,CAAC,SAAS,GAAG,uBAAuB;gBACpD,yBAAyB,CAAC,UAAU,CAAC;gBACrC,UAAU,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAA,iCAAA,CAAmC;gBAC1F,UAAU,CAAC,KAAK,CAAC,SAAS,GAAG,CAAe,YAAA,EAAA,GAAG,MAAM;;AAEvD,YAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAK;AACtC,gBAAA,UAAU,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE;AAC/B,gBAAA,UAAU,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE;AAChC,gBAAA,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;gBAC9B,IAAI,aAAa,EAAE;AACjB,oBAAA,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;;AAE9B,gBAAA,IAAI,YAAY,KAAK,KAAK,EAAE;AAC1B,oBAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,wBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;;AAEhE,oBAAA,GAAG,CAAC,cAAc,GAAG,KAAK;AAC1B,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;;AAEhD,aAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC;;;;AAKtB,IAAA,sBAAsB,CAAC,KAAa,EAAE,EAAc,EAAE,KAAK,GAAG,CAAC,EAAA;QACrE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,CAAA,CAAA,EAAI,KAAK,CAAE,CAAA,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;;AAG5F,IAAA,cAAc,CAAC,QAAiB,EAAA;AACtC,QAAA,IAAI,QAAQ,IAAI,IAAI,EAAE;AACpB,YAAA,MAAM,GAAG,GAAG,CAAI,CAAA,EAAA,QAAQ,EAAE;YAC1B,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;gBACjC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1C,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;;;aAEzB;AACL,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;AACzB,iBAAA,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAI,CAAA,EAAA,GAAG,EAAE,CAAC,CAAC,CAAC;;;+GA1f5D,MAAM,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAM,EALN,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,SAAA,EAAA;YACT;AACD,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAuOiC,KAAK,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAzMW,UAAU,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9L9D,gkBAiBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AD4OI,UAAA,CAAA;IALD,KAAK,CACJ,GAAG,IAAI,CAAC,KAAK,EAAE,GAAa,KAAI;QAC9B,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;AAClC,QAAA,OAAO,CAAC,UAAkB,KAAK,CAAA,EAAG,UAAU,CAAI,CAAA,EAAA,EAAE,CAAC,SAAS,CAAA,OAAA,EAAU,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI;AAC9F,KAAC;AACsB,CAAA,EAAA,MAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA;4FA1Fd,MAAM,EAAA,UAAA,EAAA,CAAA;kBAdlB,SAAS;+BACE,SAAS,EAAA,eAAA,EAEF,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAC3B,QAAA,EAAA,QAAQ,EACV,MAAA,EAAA;wBACN,IAAI,EAAE,WAAW,EAAE;qBACpB,EACU,SAAA,EAAA;wBACT;AACD,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,gkBAAA,EAAA;kQA2BoB,OAAO,EAAA,CAAA;sBAA3C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACS,WAAW,EAAA,CAAA;sBAAtD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACsB,aAAa,EAAA,CAAA;sBAA5E,SAAS;uBAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;gBACrD,qBAAqB,EAAA,CAAA;sBAA7B;gBAOG,WAAW,EAAA,CAAA;sBADd;gBAYG,iBAAiB,EAAA,CAAA;sBADpB;gBAgBG,aAAa,EAAA,CAAA;sBADhB;gBAWG,UAAU,EAAA,CAAA;sBADb;gBAoBC,cAAc,EAAA,CAAA;sBANf;gBASG,eAAe,EAAA,CAAA;sBADlB;gBA4EG,SAAS,EAAA,CAAA;sBADZ;gBAyBG,SAAS,EAAA,CAAA;sBADZ;gBAkBG,aAAa,EAAA,CAAA;sBADhB;gBAmBS,mBAAmB,EAAA,CAAA;sBAA5B;gBACyC,QAAQ,EAAA,CAAA;sBAAjD,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,KAAK,CAAC;gBACZ,cAAc,EAAA,CAAA;sBAAzC,YAAY;uBAAC,YAAY;;MAoSf,KAAK,CAAA;;AAahB,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,cAAc;;IAK5B,WACU,CAAA,KAAa,EACd,SAAoB,EACpB,GAAe,EACb,SAAwB,EACzB,SAAmB,EACnB,iBAAmC,EAAA;QALnC,IAAK,CAAA,KAAA,GAAL,KAAK;QACN,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAG,CAAA,GAAA,GAAH,GAAG;QACD,IAAS,CAAA,SAAA,GAAT,SAAS;QACV,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;AAtB3B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS;;QAO7B,IAAc,CAAA,cAAA,GAA0B,IAAI;;IAkBpD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AACvE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CACtC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY,EAC1C,IAAI,CAAC,iBAAiB,CACvB;;+GAjCQ,KAAK,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAL,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,KAAK,EALL,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA;YACT;AACD,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAOa,YAAY,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EAGhB,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,UAAU,iSEnrB3C,oTAOc,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FFqqBD,KAAK,EAAA,UAAA,EAAA,CAAA;kBAVjB,SAAS;+BACE,QAAQ,EAAA,eAAA,EAED,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA;wBACT;AACD,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,oTAAA,EAAA;2MAMgD,gBAAgB,EAAA,CAAA;sBAAhF,YAAY;uBAAC,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE;gBACZ,YAAY,EAAA,CAAA;sBAA9D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACtB,aAAa,EAAA,CAAA;sBAAvC,SAAS;uBAAC,cAAc;gBACqC,SAAS,EAAA,CAAA;sBAAtE,YAAY;uBAAC,UAAU,CAAC,MAAM,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;AAgDxD,MAAO,UAAW,SAAQ,QAAQ,CAAA;AAOtC,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;;IAErB,IAAI,MAAM,CAAC,GAAiB,EAAA;AAC1B,QAAA,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC;QACzC,IAAI,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE;YACjC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;;IAKzD,WAAW,GAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;;;AAI9C,IAAA,WAAA,CACE,GAAe,EACf,SAAoB,EACpB,MAAgB,EAChB,OAAe,EACf,cAA+B,EAC/B,aAA2B,EAClB,SAAwB,EACb,IAAW,EACX,KAAa,EACjC,QAAkB,EAAA;AAElB,QAAA,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAW,CAAC;QAL9F,IAAS,CAAA,SAAA,GAAT,SAAS;QACE,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAK,CAAA,KAAA,GAAL,KAAK;AAIzB,QAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,SAAS;;IAGtC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;;AAEzE,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AAC9B,YAAA,IAAI,CAAC,aAAa,GAAG,sBAAsB;;;IAI/C,eAAe,GAAA;;AAEb,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACjD,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;gBAC/E,IAAI,CAAC,gBAAgB,EAAE;;;AAEpB,aAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AAC/B,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;;;IAItF,gBAAgB,GAAA;QACd,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAA4B;YACtD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAA4B;YACpE,IAAI,YAAY,CAAC,WAAW,KAAK,YAAY,CAAC,WAAW,EAAE;gBACzD,MAAM,GAAG,GAAI,IAAY,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS;gBACpD,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC,WAAW;AAC/D,gBAAA,MAAM,YAAY,GAAG,GAAG,KAAK,GAAG,CAAC;AACjC,sBAAE,GAAG,GAAG,GAAG,CAAC;AACZ,sBAAE,GAAG,CAAC,UAAU;AAChB,gBAAA,MAAM,CAAC,GAAG,YAAY,GAAG,GAAG,CAAC,WAAW,GAAG,CAAC,GAAG,YAAY,CAAC,WAAW,GAAG,CAAC;gBAC3E,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC9C,gBAAA,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;;;;AAK7E,IAAA,eAAe;+GAhFJ,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,UAAU,EALV,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAAA;YACT;AACD,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EGhuBH,oLAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FH+tBa,UAAU,EAAA,UAAA,EAAA,CAAA;kBAlBtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uCAAuC,EAEzC,MAAA,EAAA;wBACN,IAAI;wBACJ,OAAO;wBACP,QAAQ;wBACR,UAAU;wBACV,UAAU;wBACV,WAAW;wBACX,aAAa;wBACb;qBACD,EACU,SAAA,EAAA;wBACT;AACD,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,oLAAA,EAAA;;0BAmCd;;0BACA;gEA1BC,MAAM,EAAA,CAAA;sBADT;gBAW6B,gBAAgB,EAAA,CAAA;sBAA7C,SAAS;uBAAC,iBAAiB;gBACL,WAAW,EAAA,CAAA;sBAAjC,YAAY;uBAAC,OAAO;;AAgEvB;AACA,SAAS,yBAAyB,CAAC,OAAoB,EAAA;IACrD,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAC9D;;MIvyBa,YAAY,CAAA;+GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAZ,YAAY,EAAA,YAAA,EAAA,CAFR,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,CAAA,EAAA,OAAA,EAAA,CAPpD,aAAa;YACb,YAAY;YACZ,cAAc;YACd,kBAAkB;YAClB,YAAY,CAAA,EAAA,OAAA,EAAA,CAEJ,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;AAGtD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YATrB,aAAa;YACb,YAAY;YACZ,cAAc;YACd,kBAAkB;AAClB,YAAA,YAAY,EAEJ,cAAc,CAAA,EAAA,CAAA,CAAA;;4FAGb,YAAY,EAAA,UAAA,EAAA,CAAA;kBAXxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,aAAa;wBACb,YAAY;wBACZ,cAAc;wBACd,kBAAkB;wBAClB;AACD,qBAAA;oBACD,OAAO,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,CAAC;oBAClE,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY;AACvD,iBAAA;;;ACjBD;;AAEG;;;;"}