{"version":3,"file":"ncstate-sat-popover.mjs","sources":["../../../src/lib/popover/popover.animations.ts","../../../src/lib/popover/types.ts","../../../src/lib/popover/popover.errors.ts","../../../src/lib/popover/popover-anchoring.service.ts","../../../src/lib/popover/tokens.ts","../../../src/lib/popover/popover.component.html","../../../src/lib/popover/popover.component.ts","../../../src/lib/popover/popover-hover.directive.ts","../../../src/lib/popover/popover.module.ts","../../../src/lib/ncstate-sat-popover.ts"],"sourcesContent":["import { trigger, state, style, animate, transition, AnimationTriggerMetadata } from '@angular/animations';\n\nexport const transformPopover: AnimationTriggerMetadata = trigger('transformPopover', [\n  state('enter', style({ opacity: 1, transform: 'scale(1)' }), { params: { startAtScale: 0.3 } }),\n  state('void, exit', style({ opacity: 0, transform: 'scale({{endAtScale}})' }), { params: { endAtScale: 0.5 } }),\n  transition('* => enter', [\n    style({ opacity: 0, transform: 'scale({{endAtScale}})' }),\n    animate('{{openTransition}}', style({ opacity: 1, transform: 'scale(1)' }))\n  ]),\n  transition('* => void, * => exit', [\n    animate('{{closeTransition}}', style({ opacity: 0, transform: 'scale({{endAtScale}})' }))\n  ])\n]);\n","export type SatPopoverScrollStrategy = 'noop' | 'block' | 'reposition' | 'close';\nexport const VALID_SCROLL: SatPopoverScrollStrategy[] = ['noop', 'block', 'reposition', 'close'];\n\nexport type SatPopoverHorizontalAlign = 'before' | 'start' | 'center' | 'end' | 'after';\nexport const VALID_HORIZ_ALIGN: SatPopoverHorizontalAlign[] = ['before', 'start', 'center', 'end', 'after'];\n\nexport type SatPopoverVerticalAlign = 'above' | 'start' | 'center' | 'end' | 'below';\nexport const VALID_VERT_ALIGN: SatPopoverVerticalAlign[] = ['above', 'start', 'center', 'end', 'below'];\n\nexport interface SatPopoverOpenOptions {\n  /**\n   * Whether the popover should return focus to the previously focused element after\n   * closing. Defaults to true.\n   */\n  restoreFocus?: boolean;\n\n  /** Whether the first focusable element should be focused on open. Defaults to true. */\n  autoFocus?: boolean;\n}\n","import { VALID_HORIZ_ALIGN, VALID_VERT_ALIGN, VALID_SCROLL } from './types';\n\nexport function getUnanchoredPopoverError(): Error {\n  return Error('SatPopover does not have an anchor.');\n}\n\nexport function getInvalidPopoverAnchorError(): Error {\n  return Error('SatPopover#anchor must be an instance of SatPopoverAnchor, ElementRef, or HTMLElement.');\n}\n\nexport function getInvalidPopoverError(): Error {\n  return Error('SatPopoverAnchor#satPopoverAnchor must be an instance of SatPopover.');\n}\n\nexport function getInvalidSatPopoverAnchorError(): Error {\n  return Error(\n    `SatPopoverAnchor must be associated with a ` +\n      `SatPopover component. ` +\n      `Examples: <sat-popover [anchor]=\"satPopoverAnchorTemplateRef\"> or ` +\n      `<button satPopoverAnchor [satPopoverAnchor]=\"satPopoverTemplateRef\">`\n  );\n}\n\nexport function getInvalidHorizontalAlignError(alignment): Error {\n  return Error(generateGenericError('horizontalAlign/xAlign', alignment, VALID_HORIZ_ALIGN));\n}\n\nexport function getInvalidVerticalAlignError(alignment): Error {\n  return Error(generateGenericError('verticalAlign/yAlign', alignment, VALID_VERT_ALIGN));\n}\n\nexport function getInvalidScrollStrategyError(strategy): Error {\n  return Error(generateGenericError('scrollStrategy', strategy, VALID_SCROLL));\n}\n\nfunction generateGenericError(apiName: string, invalid: any, valid: string[]): string {\n  return `Invalid ${apiName}: '${invalid}'. Valid options are ${valid.map((v) => `'${v}'`).join(', ')}.`;\n}\n","import { ElementRef, Injectable, NgZone, OnDestroy, Optional, ViewContainerRef } from '@angular/core';\nimport {\n  ConnectionPositionPair,\n  FlexibleConnectedPositionStrategy,\n  HorizontalConnectionPos,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  ScrollStrategy,\n  VerticalConnectionPos\n} from '@angular/cdk/overlay';\nimport { Directionality, Direction } from '@angular/cdk/bidi';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subscription, Subject } from 'rxjs';\nimport { takeUntil, take, filter, tap } from 'rxjs/operators';\n\nimport { SatPopover } from './popover.component';\nimport {\n  SatPopoverHorizontalAlign,\n  SatPopoverVerticalAlign,\n  SatPopoverScrollStrategy,\n  SatPopoverOpenOptions\n} from './types';\n\n/**\n * Configuration provided by the popover for the anchoring service\n * to build the correct overlay config.\n */\ninterface PopoverConfig {\n  horizontalAlign: SatPopoverHorizontalAlign;\n  verticalAlign: SatPopoverVerticalAlign;\n  hasBackdrop: boolean;\n  backdropClass: string;\n  scrollStrategy: SatPopoverScrollStrategy;\n  forceAlignment: boolean;\n  lockAlignment: boolean;\n  panelClass: string | string[];\n}\n\n@Injectable()\nexport class SatPopoverAnchoringService implements OnDestroy {\n  /** Emits when the popover is opened. */\n  popoverOpened = new Subject<void>();\n\n  /** Emits when the popover is closed. */\n  popoverClosed = new Subject<void>();\n\n  /** Reference to the overlay containing the popover component. */\n  _overlayRef: OverlayRef;\n\n  /** Reference to the target popover. */\n  private _popover: SatPopover;\n\n  /** Reference to the view container for the popover template. */\n  private _viewContainerRef: ViewContainerRef;\n\n  /** Reference to the anchor element. */\n  private _anchor: HTMLElement;\n\n  /** Reference to a template portal where the overlay will be attached. */\n  private _portal: TemplatePortal<any>;\n\n  /** Single subscription to notifications service events. */\n  private _notificationsSubscription: Subscription;\n\n  /** Single subscription to position changes. */\n  private _positionChangeSubscription: Subscription;\n\n  /** Whether the popover is presently open. */\n  private _popoverOpen = false;\n\n  /** Emits when the service is destroyed. */\n  private _onDestroy = new Subject<void>();\n\n  constructor(private _overlay: Overlay, private _ngZone: NgZone, @Optional() private _dir: Directionality) {}\n\n  ngOnDestroy() {\n    // Destroy popover before terminating subscriptions so that any resulting\n    // detachments update 'closed state'\n    this._destroyPopover();\n\n    // Terminate subscriptions\n    if (this._notificationsSubscription) {\n      this._notificationsSubscription.unsubscribe();\n    }\n    if (this._positionChangeSubscription) {\n      this._positionChangeSubscription.unsubscribe();\n    }\n    this._onDestroy.next();\n    this._onDestroy.complete();\n\n    this.popoverOpened.complete();\n    this.popoverClosed.complete();\n  }\n\n  /** Anchor a popover instance to a view and connection element. */\n  anchor(popover: SatPopover, viewContainerRef: ViewContainerRef, anchor: ElementRef | HTMLElement): void {\n    // If we're just changing the anchor element and the overlayRef already exists,\n    // simply update the existing _overlayRef's anchor.\n    if (this._popover === popover && this._viewContainerRef === viewContainerRef && this._overlayRef) {\n      this._anchor = anchor instanceof ElementRef ? anchor.nativeElement : anchor;\n      const config = this._overlayRef.getConfig();\n      const strategy = config.positionStrategy as FlexibleConnectedPositionStrategy;\n      strategy.setOrigin(this._anchor);\n      this._overlayRef.updatePosition();\n      return;\n    }\n\n    // Destroy any previous popovers\n    this._destroyPopover();\n\n    // Assign local refs\n    this._popover = popover;\n    this._viewContainerRef = viewContainerRef;\n    this._anchor = anchor instanceof ElementRef ? anchor.nativeElement : anchor;\n  }\n\n  /** Gets whether the popover is presently open. */\n  isPopoverOpen(): boolean {\n    return this._popoverOpen;\n  }\n\n  /** Toggles the popover between the open and closed states. */\n  togglePopover(): void {\n    return this._popoverOpen ? this.closePopover() : this.openPopover();\n  }\n\n  /** Opens the popover. */\n  openPopover(options: SatPopoverOpenOptions = {}): void {\n    if (!this._popoverOpen) {\n      this._applyOpenOptions(options);\n      this._createOverlay();\n      this._subscribeToBackdrop();\n      this._subscribeToEscape();\n      this._subscribeToDetachments();\n      this._saveOpenedState();\n    }\n  }\n\n  /** Closes the popover. */\n  closePopover(value?: any): void {\n    if (this._overlayRef) {\n      this._saveClosedState(value);\n      this._overlayRef.detach();\n    }\n  }\n\n  /** TODO: implement when the overlay's position can be dynamically changed */\n  repositionPopover(): void {\n    this.updatePopoverConfig();\n  }\n\n  /** TODO: when the overlay's position can be dynamically changed, do not destroy */\n  updatePopoverConfig(): void {\n    this._destroyPopoverOnceClosed();\n  }\n\n  /** Realign the popover to the anchor. */\n  realignPopoverToAnchor(): void {\n    if (this._overlayRef) {\n      const config = this._overlayRef.getConfig();\n      const strategy = config.positionStrategy as FlexibleConnectedPositionStrategy;\n      strategy.reapplyLastPosition();\n    }\n  }\n\n  /** Get a reference to the anchor element. */\n  getAnchorElement(): HTMLElement {\n    return this._anchor;\n  }\n\n  /** Apply behavior properties on the popover based on the open options. */\n  private _applyOpenOptions(options: SatPopoverOpenOptions): void {\n    // Only override restoreFocus as `false` if the option is explicitly `false`\n    const restoreFocus = options.restoreFocus !== false;\n    this._popover._restoreFocusOverride = restoreFocus;\n\n    // Only override autoFocus as `false` if the option is explicitly `false`\n    const autoFocus = options.autoFocus !== false;\n    this._popover._autoFocusOverride = autoFocus;\n  }\n\n  /** Create an overlay to be attached to the portal. */\n  private _createOverlay(): OverlayRef {\n    // Create overlay if it doesn't yet exist\n    if (!this._overlayRef) {\n      this._portal = new TemplatePortal(this._popover._templateRef, this._viewContainerRef);\n\n      const popoverConfig: PopoverConfig = {\n        horizontalAlign: this._popover.horizontalAlign,\n        verticalAlign: this._popover.verticalAlign,\n        hasBackdrop: coerceBooleanProperty(this._popover.hasBackdrop),\n        backdropClass: this._popover.backdropClass,\n        scrollStrategy: this._popover.scrollStrategy,\n        forceAlignment: coerceBooleanProperty(this._popover.forceAlignment),\n        lockAlignment: coerceBooleanProperty(this._popover.lockAlignment),\n        panelClass: this._popover.panelClass\n      };\n\n      const overlayConfig = this._getOverlayConfig(popoverConfig, this._anchor);\n\n      this._subscribeToPositionChanges(overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy);\n\n      this._overlayRef = this._overlay.create(overlayConfig);\n    }\n\n    // Actually open the popover\n    this._overlayRef.attach(this._portal);\n    return this._overlayRef;\n  }\n\n  /** Removes the popover from the DOM. Does NOT update open state. */\n  private _destroyPopover(): void {\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n      this._overlayRef = null;\n    }\n  }\n\n  /**\n   * Destroys the popover immediately if it is closed, or waits until it\n   * has been closed to destroy it.\n   */\n  private _destroyPopoverOnceClosed(): void {\n    if (this.isPopoverOpen() && this._overlayRef) {\n      this._overlayRef\n        .detachments()\n        .pipe(take(1), takeUntil(this._onDestroy))\n        .subscribe(() => this._destroyPopover());\n    } else {\n      this._destroyPopover();\n    }\n  }\n\n  /** Close popover when backdrop is clicked. */\n  private _subscribeToBackdrop(): void {\n    this._overlayRef\n      .backdropClick()\n      .pipe(\n        tap(() => this._popover.backdropClicked.emit()),\n        filter(() => this._popover.interactiveClose),\n        takeUntil(this.popoverClosed),\n        takeUntil(this._onDestroy)\n      )\n      .subscribe(() => this.closePopover());\n  }\n\n  /** Close popover when escape keydown event occurs. */\n  private _subscribeToEscape(): void {\n    this._overlayRef\n      .keydownEvents()\n      .pipe(\n        tap((event) => this._popover.overlayKeydown.emit(event)),\n        filter((event) => event.keyCode === ESCAPE),\n        filter(() => this._popover.interactiveClose),\n        takeUntil(this.popoverClosed),\n        takeUntil(this._onDestroy)\n      )\n      .subscribe(() => this.closePopover());\n  }\n\n  /** Set state back to closed when detached. */\n  private _subscribeToDetachments(): void {\n    this._overlayRef\n      .detachments()\n      .pipe(takeUntil(this._onDestroy))\n      .subscribe(() => this._saveClosedState());\n  }\n\n  /** Save the opened state of the popover and emit. */\n  private _saveOpenedState(): void {\n    if (!this._popoverOpen) {\n      this._popover._state = 'enter';\n      this._popover._open = this._popoverOpen = true;\n\n      this.popoverOpened.next();\n      this._popover.opened.emit();\n    }\n  }\n\n  /** Save the closed state of the popover and emit. */\n  private _saveClosedState(value?: any): void {\n    if (this._popoverOpen) {\n      this._popover._open = this._popoverOpen = false;\n\n      this._popover._startExitAnimation();\n      this.popoverClosed.next(value);\n      this._popover.closed.emit(value);\n    }\n  }\n\n  /** Gets the text direction of the containing app. */\n  private _getDirection(): Direction {\n    return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n  }\n\n  /** Create and return a config for creating the overlay. */\n  private _getOverlayConfig(config: PopoverConfig, anchor: HTMLElement): OverlayConfig {\n    return new OverlayConfig({\n      positionStrategy: this._getPositionStrategy(\n        config.horizontalAlign,\n        config.verticalAlign,\n        config.forceAlignment,\n        config.lockAlignment,\n        anchor\n      ),\n      hasBackdrop: config.hasBackdrop,\n      backdropClass: config.backdropClass || 'cdk-overlay-transparent-backdrop',\n      scrollStrategy: this._getScrollStrategyInstance(config.scrollStrategy),\n      direction: this._getDirection(),\n      panelClass: config.panelClass\n    });\n  }\n\n  /**\n   * Listen to changes in the position of the overlay and set the correct alignment classes,\n   * ensuring that the animation origin is correct, even with a fallback position.\n   */\n  private _subscribeToPositionChanges(position: FlexibleConnectedPositionStrategy): void {\n    if (this._positionChangeSubscription) {\n      this._positionChangeSubscription.unsubscribe();\n    }\n\n    this._positionChangeSubscription = position.positionChanges.pipe(takeUntil(this._onDestroy)).subscribe((change) => {\n      // Position changes may occur outside the Angular zone\n      this._ngZone.run(() => {\n        this._popover._setAlignmentClasses(\n          getHorizontalPopoverAlignment(change.connectionPair.overlayX),\n          getVerticalPopoverAlignment(change.connectionPair.overlayY)\n        );\n      });\n    });\n  }\n\n  /** Map a scroll strategy string type to an instance of a scroll strategy. */\n  private _getScrollStrategyInstance(strategy: SatPopoverScrollStrategy): ScrollStrategy {\n    switch (strategy) {\n      case 'block':\n        return this._overlay.scrollStrategies.block();\n      case 'reposition':\n        return this._overlay.scrollStrategies.reposition();\n      case 'close':\n        return this._overlay.scrollStrategies.close();\n      case 'noop':\n      default:\n        return this._overlay.scrollStrategies.noop();\n    }\n  }\n\n  /** Create and return a position strategy based on config provided to the component instance. */\n  private _getPositionStrategy(\n    horizontalTarget: SatPopoverHorizontalAlign,\n    verticalTarget: SatPopoverVerticalAlign,\n    forceAlignment: boolean,\n    lockAlignment: boolean,\n    anchor: HTMLElement\n  ): FlexibleConnectedPositionStrategy {\n    // Attach the overlay at the preferred position\n    const targetPosition = getPosition(horizontalTarget, verticalTarget);\n    const positions = [targetPosition];\n\n    const strategy = this._overlay\n      .position()\n      .flexibleConnectedTo(anchor)\n      .withFlexibleDimensions(false)\n      .withPush(false)\n      .withViewportMargin(0)\n      .withLockedPosition(lockAlignment);\n\n    // Unless the alignment is forced, add fallbacks based on the preferred positions\n    if (!forceAlignment) {\n      const fallbacks = this._getFallbacks(horizontalTarget, verticalTarget);\n      positions.push(...fallbacks);\n    }\n\n    return strategy.withPositions(positions);\n  }\n\n  /** Get fallback positions based around target alignments. */\n  private _getFallbacks(\n    hTarget: SatPopoverHorizontalAlign,\n    vTarget: SatPopoverVerticalAlign\n  ): ConnectionPositionPair[] {\n    // Determine if the target alignments overlap the anchor\n    const horizontalOverlapAllowed = hTarget !== 'before' && hTarget !== 'after';\n    const verticalOverlapAllowed = vTarget !== 'above' && vTarget !== 'below';\n\n    // If a target alignment doesn't cover the anchor, don't let any of the fallback alignments\n    // cover the anchor\n    const possibleHorizontalAlignments: SatPopoverHorizontalAlign[] = horizontalOverlapAllowed\n      ? ['before', 'start', 'center', 'end', 'after']\n      : ['before', 'after'];\n    const possibleVerticalAlignments: SatPopoverVerticalAlign[] = verticalOverlapAllowed\n      ? ['above', 'start', 'center', 'end', 'below']\n      : ['above', 'below'];\n\n    // Create fallbacks for each allowed prioritized fallback alignment combo\n    const fallbacks: ConnectionPositionPair[] = [];\n    prioritizeAroundTarget(hTarget, possibleHorizontalAlignments).forEach((h) => {\n      prioritizeAroundTarget(vTarget, possibleVerticalAlignments).forEach((v) => {\n        fallbacks.push(getPosition(h, v));\n      });\n    });\n\n    // Remove the first item since it will be the target alignment and isn't considered a fallback\n    return fallbacks.slice(1, fallbacks.length);\n  }\n}\n\n/** Helper function to get a cdk position pair from SatPopover alignments. */\nfunction getPosition(h: SatPopoverHorizontalAlign, v: SatPopoverVerticalAlign): ConnectionPositionPair {\n  const { originX, overlayX } = getHorizontalConnectionPosPair(h);\n  const { originY, overlayY } = getVerticalConnectionPosPair(v);\n  return new ConnectionPositionPair({ originX, originY }, { overlayX, overlayY });\n}\n\n/** Helper function to convert an overlay connection position to equivalent popover alignment. */\nfunction getHorizontalPopoverAlignment(h: HorizontalConnectionPos): SatPopoverHorizontalAlign {\n  if (h === 'start') {\n    return 'after';\n  }\n\n  if (h === 'end') {\n    return 'before';\n  }\n\n  return 'center';\n}\n\n/** Helper function to convert an overlay connection position to equivalent popover alignment. */\nfunction getVerticalPopoverAlignment(v: VerticalConnectionPos): SatPopoverVerticalAlign {\n  if (v === 'top') {\n    return 'below';\n  }\n\n  if (v === 'bottom') {\n    return 'above';\n  }\n\n  return 'center';\n}\n\n/** Helper function to convert alignment to origin/overlay position pair. */\nfunction getHorizontalConnectionPosPair(h: SatPopoverHorizontalAlign): {\n  originX: HorizontalConnectionPos;\n  overlayX: HorizontalConnectionPos;\n} {\n  switch (h) {\n    case 'before':\n      return { originX: 'start', overlayX: 'end' };\n    case 'start':\n      return { originX: 'start', overlayX: 'start' };\n    case 'end':\n      return { originX: 'end', overlayX: 'end' };\n    case 'after':\n      return { originX: 'end', overlayX: 'start' };\n    default:\n      return { originX: 'center', overlayX: 'center' };\n  }\n}\n\n/** Helper function to convert alignment to origin/overlay position pair. */\nfunction getVerticalConnectionPosPair(v: SatPopoverVerticalAlign): {\n  originY: VerticalConnectionPos;\n  overlayY: VerticalConnectionPos;\n} {\n  switch (v) {\n    case 'above':\n      return { originY: 'top', overlayY: 'bottom' };\n    case 'start':\n      return { originY: 'top', overlayY: 'top' };\n    case 'end':\n      return { originY: 'bottom', overlayY: 'bottom' };\n    case 'below':\n      return { originY: 'bottom', overlayY: 'top' };\n    default:\n      return { originY: 'center', overlayY: 'center' };\n  }\n}\n\n/**\n * Helper function that takes an ordered array options and returns a reorderded\n * array around the target item. e.g.:\n *\n * target: 3; options: [1, 2, 3, 4, 5, 6, 7];\n *\n * return: [3, 4, 2, 5, 1, 6, 7]\n */\nfunction prioritizeAroundTarget<T>(target: T, options: T[]): T[] {\n  const targetIndex = options.indexOf(target);\n\n  // Set the first item to be the target\n  const reordered = [target];\n\n  // Make left and right stacks where the highest priority item is last\n  const left = options.slice(0, targetIndex);\n  const right = options.slice(targetIndex + 1, options.length).reverse();\n\n  // Alternate between stacks until one is empty\n  while (left.length && right.length) {\n    reordered.push(right.pop());\n    reordered.push(left.pop());\n  }\n\n  // Flush out right side\n  while (right.length) {\n    reordered.push(right.pop());\n  }\n\n  // Flush out left side\n  while (left.length) {\n    reordered.push(left.pop());\n  }\n\n  return reordered;\n}\n","import { InjectionToken } from '@angular/core';\n\n// See http://cubic-bezier.com/#.25,.8,.25,1 for reference.\n// const DEFAULT_TRANSITION = '200ms cubic-bezier(0.25, 0.8, 0.25, 1)';\nexport const DEFAULT_TRANSITION = new InjectionToken('DefaultTransition');\n","<ng-template>\n  <div\n    class=\"sat-popover-container\"\n    #focusTrapElement\n    [ngClass]=\"_classList\"\n    [@transformPopover]=\"{ value: state, params: params }\"\n    (@transformPopover.done)=\"_onAnimationDone($event)\"\n  >\n    <ng-content></ng-content>\n  </div>\n</ng-template>\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  ViewChild,\n  ViewEncapsulation,\n  TemplateRef,\n  OnInit,\n  Optional,\n  Output,\n  Directive,\n  ViewContainerRef,\n  AfterViewInit\n} from '@angular/core';\nimport { AnimationEvent } from '@angular/animations';\nimport { DOCUMENT } from '@angular/common';\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory, FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty, coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\n\nimport { transformPopover } from './popover.animations';\nimport {\n  getUnanchoredPopoverError,\n  getInvalidHorizontalAlignError,\n  getInvalidVerticalAlignError,\n  getInvalidScrollStrategyError,\n  getInvalidPopoverAnchorError,\n  getInvalidSatPopoverAnchorError,\n  getInvalidPopoverError\n} from './popover.errors';\nimport {\n  SatPopoverScrollStrategy,\n  SatPopoverHorizontalAlign,\n  SatPopoverVerticalAlign,\n  VALID_SCROLL,\n  VALID_HORIZ_ALIGN,\n  VALID_VERT_ALIGN,\n  SatPopoverOpenOptions\n} from './types';\nimport { SatPopoverAnchoringService } from './popover-anchoring.service';\nimport { DEFAULT_TRANSITION } from './tokens';\n\nconst DEFAULT_OPEN_ANIMATION_START_SCALE = 0.3;\nconst DEFAULT_CLOSE_ANIMATION_END_SCALE = 0.5;\n\n@Directive({\n  selector: '[satPopoverAnchor]',\n  exportAs: 'satPopoverAnchor'\n})\nexport class SatPopoverAnchor implements AfterViewInit {\n  @Input('satPopoverAnchor')\n  get popover() {\n    return this._popover;\n  }\n  set popover(val: SatPopover) {\n    // console.log(val instanceof SatPopover, val);\n    // if (val === undefined) {\n    //   return;\n    // }\n    if (val instanceof SatPopover) {\n      val.anchor = this;\n    } else {\n      // when a directive is added with no arguments,\n      // angular assigns `''` as the argument\n      if (val !== '') {\n        throw getInvalidPopoverError();\n      }\n    }\n  }\n\n  /** @internal */\n  _popover: SatPopover;\n\n  constructor(public elementRef: ElementRef, public viewContainerRef: ViewContainerRef) {}\n\n  ngAfterViewInit() {\n    if (!this.popover) {\n      throw getInvalidSatPopoverAnchorError();\n    }\n  }\n}\n\n@Component({\n  selector: 'sat-popover',\n  encapsulation: ViewEncapsulation.None,\n  animations: [transformPopover],\n  styleUrls: ['./popover.component.scss'],\n  templateUrl: './popover.component.html',\n  providers: [SatPopoverAnchoringService]\n})\nexport class SatPopover implements OnInit {\n  /** Anchor element. */\n  @Input()\n  get anchor() {\n    return this._anchor;\n  }\n  set anchor(val: SatPopoverAnchor | ElementRef<HTMLElement> | HTMLElement) {\n    if (val instanceof SatPopoverAnchor) {\n      val._popover = this;\n      this._anchoringService.anchor(this, val.viewContainerRef, val.elementRef);\n      this._anchor = val;\n    } else if (val instanceof ElementRef || val instanceof HTMLElement) {\n      this._anchoringService.anchor(this, this._viewContainerRef, val);\n      this._anchor = val;\n    } else if (val) {\n      throw getInvalidPopoverAnchorError();\n    }\n  }\n  private _anchor: SatPopoverAnchor | ElementRef<HTMLElement> | HTMLElement;\n\n  /** Alignment of the popover on the horizontal axis. */\n  @Input()\n  get horizontalAlign() {\n    return this._horizontalAlign;\n  }\n  set horizontalAlign(val: SatPopoverHorizontalAlign) {\n    this._validateHorizontalAlign(val);\n    if (this._horizontalAlign !== val) {\n      this._horizontalAlign = val;\n      this._anchoringService.repositionPopover();\n    }\n  }\n  private _horizontalAlign: SatPopoverHorizontalAlign = 'center';\n\n  /** Alignment of the popover on the x axis. Alias for `horizontalAlign`. */\n  @Input()\n  get xAlign() {\n    return this.horizontalAlign;\n  }\n  set xAlign(val: SatPopoverHorizontalAlign) {\n    this.horizontalAlign = val;\n  }\n\n  /** Alignment of the popover on the vertical axis. */\n  @Input()\n  get verticalAlign() {\n    return this._verticalAlign;\n  }\n  set verticalAlign(val: SatPopoverVerticalAlign) {\n    this._validateVerticalAlign(val);\n    if (this._verticalAlign !== val) {\n      this._verticalAlign = val;\n      this._anchoringService.repositionPopover();\n    }\n  }\n  private _verticalAlign: SatPopoverVerticalAlign = 'center';\n\n  /** Alignment of the popover on the y axis. Alias for `verticalAlign`. */\n  @Input()\n  get yAlign() {\n    return this.verticalAlign;\n  }\n  set yAlign(val: SatPopoverVerticalAlign) {\n    this.verticalAlign = val;\n  }\n\n  /** Whether the popover always opens with the specified alignment. */\n  @Input()\n  get forceAlignment() {\n    return this._forceAlignment;\n  }\n  set forceAlignment(val: BooleanInput) {\n    const coercedVal = coerceBooleanProperty(val);\n    if (this._forceAlignment !== coercedVal) {\n      this._forceAlignment = coercedVal;\n      this._anchoringService.repositionPopover();\n    }\n  }\n  private _forceAlignment = false;\n\n  /**\n   * Whether the popover's alignment is locked after opening. This prevents the popover\n   * from changing its alignement when scrolling or changing the size of the viewport.\n   */\n  @Input()\n  get lockAlignment() {\n    return this._lockAlignment;\n  }\n  set lockAlignment(val: BooleanInput) {\n    const coercedVal = coerceBooleanProperty(val);\n    if (this._lockAlignment !== coercedVal) {\n      this._lockAlignment = coerceBooleanProperty(val);\n      this._anchoringService.repositionPopover();\n    }\n  }\n  private _lockAlignment = false;\n\n  /** Whether the first focusable element should be focused on open. */\n  @Input()\n  get autoFocus() {\n    return this._autoFocus && this._autoFocusOverride;\n  }\n  set autoFocus(val: BooleanInput) {\n    this._autoFocus = coerceBooleanProperty(val);\n  }\n  private _autoFocus = true;\n  _autoFocusOverride = true;\n\n  /** Whether the popover should return focus to the previously focused element after closing. */\n  @Input()\n  get restoreFocus() {\n    return this._restoreFocus && this._restoreFocusOverride;\n  }\n  set restoreFocus(val: BooleanInput) {\n    this._restoreFocus = coerceBooleanProperty(val);\n  }\n  private _restoreFocus = true;\n  _restoreFocusOverride = true;\n\n  /** How the popover should handle scrolling. */\n  @Input()\n  get scrollStrategy() {\n    return this._scrollStrategy;\n  }\n  set scrollStrategy(val: SatPopoverScrollStrategy) {\n    this._validateScrollStrategy(val);\n    if (this._scrollStrategy !== val) {\n      this._scrollStrategy = val;\n      this._anchoringService.updatePopoverConfig();\n    }\n  }\n  private _scrollStrategy: SatPopoverScrollStrategy = 'reposition';\n\n  /** Whether the popover should have a backdrop (includes closing on click). */\n  @Input()\n  get hasBackdrop() {\n    return this._hasBackdrop;\n  }\n  set hasBackdrop(val: BooleanInput) {\n    this._hasBackdrop = coerceBooleanProperty(val);\n  }\n  private _hasBackdrop = false;\n\n  /** Whether the popover should close when the user clicks the backdrop or presses ESC. */\n  @Input()\n  get interactiveClose(): boolean {\n    return this._interactiveClose;\n  }\n  set interactiveClose(val: BooleanInput) {\n    this._interactiveClose = coerceBooleanProperty(val);\n  }\n  private _interactiveClose = true;\n\n  /** Custom transition to use while opening. */\n  @Input()\n  get openTransition() {\n    return this._openTransition;\n  }\n  set openTransition(val: string) {\n    if (val) {\n      this._openTransition = val;\n    }\n  }\n  private _openTransition = this._defaultTransition;\n\n  /** Custom transition to use while closing. */\n  @Input()\n  get closeTransition() {\n    return this._closeTransition;\n  }\n  set closeTransition(val: string) {\n    if (val) {\n      this._closeTransition = val;\n    }\n  }\n  private _closeTransition = this._defaultTransition;\n\n  /** Scale value at the start of the :enter animation. */\n  @Input()\n  get openAnimationStartAtScale() {\n    return this._openAnimationStartAtScale;\n  }\n  set openAnimationStartAtScale(val: NumberInput) {\n    const coercedVal = coerceNumberProperty(val);\n    if (!isNaN(coercedVal)) {\n      this._openAnimationStartAtScale = coercedVal;\n    }\n  }\n  private _openAnimationStartAtScale = DEFAULT_OPEN_ANIMATION_START_SCALE;\n\n  /** Scale value at the end of the :leave animation */\n  @Input()\n  get closeAnimationEndAtScale() {\n    return this._closeAnimationEndAtScale;\n  }\n  set closeAnimationEndAtScale(val: NumberInput) {\n    const coercedVal = coerceNumberProperty(val);\n    if (!isNaN(coercedVal)) {\n      this._closeAnimationEndAtScale = coercedVal;\n    }\n  }\n  private _closeAnimationEndAtScale = DEFAULT_CLOSE_ANIMATION_END_SCALE;\n\n  /** Optional backdrop class. */\n  @Input() backdropClass = '';\n\n  /** Optional custom class to add to the overlay pane. */\n  @Input() panelClass: string | string[] = '';\n\n  /** Emits when the popover is opened. */\n  @Output() opened = new EventEmitter<void>();\n\n  /** Emits when the popover is closed. */\n  @Output() closed = new EventEmitter<any>();\n\n  /** Emits when the popover has finished opening. */\n  @Output() afterOpen = new EventEmitter<void>();\n\n  /** Emits when the popover has finished closing. */\n  @Output() afterClose = new EventEmitter<void>();\n\n  /** Emits when the backdrop is clicked. */\n  @Output() backdropClicked = new EventEmitter<void>();\n\n  /** Emits when a keydown event is targeted to this popover's overlay. */\n  @Output() overlayKeydown = new EventEmitter<KeyboardEvent>();\n\n  /** Reference to template so it can be placed within a portal. */\n  @ViewChild(TemplateRef, { static: true }) _templateRef: TemplateRef<any>;\n\n  /** Classes to be added to the popover for setting the correct transform origin. */\n  _classList: any = {};\n\n  /** Whether the popover is presently open. */\n  _open = false;\n\n  _state: 'enter' | 'void' | 'exit' = 'enter';\n\n  /** @internal */\n  _anchoringService: SatPopoverAnchoringService;\n\n  /** Reference to the element to build a focus trap around. */\n  @ViewChild('focusTrapElement')\n  private _focusTrapElement: ElementRef;\n\n  /** Reference to the element that was focused before opening. */\n  private _previouslyFocusedElement: HTMLElement;\n\n  /** Reference to a focus trap around the popover. */\n  private _focusTrap: ConfigurableFocusTrap;\n\n  constructor(\n    private _focusTrapFactory: ConfigurableFocusTrapFactory,\n    _anchoringService: SatPopoverAnchoringService,\n    private _viewContainerRef: ViewContainerRef,\n    @Inject(DEFAULT_TRANSITION) private _defaultTransition: string,\n    @Optional() @Inject(DOCUMENT) private _document: any\n  ) {\n    // `@internal` stripping doesn't seem to work if the property is\n    // declared inside the constructor\n    this._anchoringService = _anchoringService;\n    console.log('DEFAULT_TRANSITION');\n    console.log(DEFAULT_TRANSITION);\n    console.log(this._defaultTransition);\n  }\n\n  ngOnInit() {\n    this._setAlignmentClasses();\n  }\n\n  /** Open this popover. */\n  open(options: SatPopoverOpenOptions = {}): void {\n    if (this._anchor) {\n      this._anchoringService.openPopover(options);\n      return;\n    }\n\n    throw getUnanchoredPopoverError();\n  }\n\n  /** Close this popover. */\n  close(value?: any): void {\n    this._anchoringService.closePopover(value);\n  }\n\n  /** Toggle this popover open or closed. */\n  toggle(): void {\n    this._anchoringService.togglePopover();\n  }\n\n  /** Realign the popover to the anchor. */\n  realign(): void {\n    this._anchoringService.realignPopoverToAnchor();\n  }\n\n  /** Gets whether the popover is presently open. */\n  isOpen(): boolean {\n    return this._open;\n  }\n\n  /** Allows programmatically setting a custom anchor. */\n  setCustomAnchor(viewContainer: ViewContainerRef, el: ElementRef<HTMLElement> | HTMLElement): void {\n    this._anchor = el;\n    this._anchoringService.anchor(this, viewContainer, el);\n  }\n\n  /** Gets an animation config with customized (or default) transition values. */\n  get state() {\n    return this._state;\n  }\n  get params() {\n    return {\n      openTransition: this.openTransition,\n      closeTransition: this.closeTransition,\n      startAtScale: this.openAnimationStartAtScale,\n      endAtScale: this.closeAnimationEndAtScale\n    };\n  }\n\n  /** Callback for when the popover is finished animating in or out. */\n  _onAnimationDone({ toState }: AnimationEvent) {\n    if (toState === 'enter') {\n      this._trapFocus();\n      this.afterOpen.emit();\n    } else if (toState === 'exit' || toState === 'void') {\n      this._restoreFocusAndDestroyTrap();\n      this.afterClose.emit();\n    }\n  }\n\n  /** Starts the dialog exit animation. */\n  _startExitAnimation(): void {\n    this._state = 'exit';\n  }\n  /** Apply alignment classes based on alignment inputs. */\n  _setAlignmentClasses(horizAlign = this.horizontalAlign, vertAlign = this.verticalAlign) {\n    this._classList['sat-popover-before'] = horizAlign === 'before' || horizAlign === 'end';\n    this._classList['sat-popover-after'] = horizAlign === 'after' || horizAlign === 'start';\n\n    this._classList['sat-popover-above'] = vertAlign === 'above' || vertAlign === 'end';\n    this._classList['sat-popover-below'] = vertAlign === 'below' || vertAlign === 'start';\n\n    this._classList['sat-popover-center'] = horizAlign === 'center' || vertAlign === 'center';\n  }\n\n  /** Move the focus inside the focus trap and remember where to return later. */\n  private _trapFocus(): void {\n    this._savePreviouslyFocusedElement();\n\n    // There won't be a focus trap element if the close animation starts before open finishes\n    if (!this._focusTrapElement) {\n      return;\n    }\n\n    if (!this._focusTrap && this._focusTrapElement) {\n      this._focusTrap = this._focusTrapFactory.create(this._focusTrapElement.nativeElement);\n    }\n\n    if (this.autoFocus) {\n      this._focusTrap.focusInitialElementWhenReady();\n    }\n  }\n\n  /** Restore focus to the element focused before the popover opened. Also destroy trap. */\n  private _restoreFocusAndDestroyTrap(): void {\n    const toFocus = this._previouslyFocusedElement;\n\n    // Must check active element is focusable for IE sake\n    if (toFocus && 'focus' in toFocus && this.restoreFocus) {\n      this._previouslyFocusedElement.focus();\n    }\n\n    this._previouslyFocusedElement = null;\n\n    if (this._focusTrap) {\n      this._focusTrap.destroy();\n      this._focusTrap = undefined;\n    }\n  }\n\n  /** Save a reference to the element focused before the popover was opened. */\n  private _savePreviouslyFocusedElement(): void {\n    if (this._document) {\n      this._previouslyFocusedElement = this._document.activeElement as HTMLElement;\n    }\n  }\n\n  /** Throws an error if the alignment is not a valid horizontalAlign. */\n  private _validateHorizontalAlign(pos: SatPopoverHorizontalAlign): void {\n    if (VALID_HORIZ_ALIGN.indexOf(pos) === -1) {\n      throw getInvalidHorizontalAlignError(pos);\n    }\n  }\n\n  /** Throws an error if the alignment is not a valid verticalAlign. */\n  private _validateVerticalAlign(pos: SatPopoverVerticalAlign): void {\n    if (VALID_VERT_ALIGN.indexOf(pos) === -1) {\n      throw getInvalidVerticalAlignError(pos);\n    }\n  }\n\n  /** Throws an error if the scroll strategy is not a valid strategy. */\n  private _validateScrollStrategy(strategy: SatPopoverScrollStrategy): void {\n    if (VALID_SCROLL.indexOf(strategy) === -1) {\n      throw getInvalidScrollStrategyError(strategy);\n    }\n  }\n}\n","import { AfterViewInit, Directive, HostListener, Input, OnDestroy } from '@angular/core';\nimport { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { of, Subject } from 'rxjs';\nimport { delay, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { SatPopoverAnchor } from './popover.component';\n\n@Directive({\n  selector: '[satPopoverHover]'\n})\nexport class SatPopoverHoverDirective implements AfterViewInit, OnDestroy {\n  /**\n   * Amount of time to delay (ms) after hovering starts before\n   * the popover opens. Defaults to 0ms.\n   */\n  @Input()\n  get satPopoverHover() {\n    return this._satPopoverHover;\n  }\n  set satPopoverHover(val: NumberInput) {\n    this._satPopoverHover = coerceNumberProperty(val);\n  }\n  private _satPopoverHover = 0;\n\n  /** Emits when the directive is destroyed. */\n  private _onDestroy = new Subject<void>();\n\n  /** Emits when the user's mouse enters the element. */\n  private _onMouseEnter = new Subject<void>();\n\n  /** Emits when the user's mouse leaves the element. */\n  private _onMouseLeave = new Subject<void>();\n\n  constructor(public anchor: SatPopoverAnchor) {}\n\n  ngAfterViewInit() {\n    // Whenever the user hovers this host element, delay the configured\n    // amount of time and open the popover. Terminate if the mouse leaves\n    // the host element before the delay is complete.\n    this._onMouseEnter\n      .pipe(\n        switchMap(() => {\n          return of(null).pipe(delay(this._satPopoverHover || 0), takeUntil(this._onMouseLeave));\n        }),\n        takeUntil(this._onDestroy)\n      )\n      .subscribe(() => this.anchor.popover.open());\n  }\n\n  ngOnDestroy() {\n    this._onDestroy.next();\n    this._onDestroy.complete();\n  }\n\n  @HostListener('mouseenter')\n  showPopover() {\n    this._onMouseEnter.next();\n  }\n\n  @HostListener('mouseleave')\n  closePopover() {\n    this._onMouseLeave.next();\n    this.anchor.popover.close();\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { BidiModule } from '@angular/cdk/bidi';\n\nimport { SatPopover, SatPopoverAnchor } from './popover.component';\nimport { SatPopoverHoverDirective } from './popover-hover.directive';\nimport { DEFAULT_TRANSITION } from './tokens';\n\n@NgModule({\n  imports: [CommonModule, OverlayModule, A11yModule, BidiModule],\n  declarations: [SatPopover, SatPopoverAnchor, SatPopoverHoverDirective],\n  providers: [\n    // See http://cubic-bezier.com/#.25,.8,.25,1 for reference.\n    { provide: DEFAULT_TRANSITION, useValue: '200ms cubic-bezier(0.25, 0.8, 0.25, 1)' }\n  ],\n  exports: [SatPopover, SatPopoverAnchor, SatPopoverHoverDirective, BidiModule]\n})\nexport class SatPopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2.SatPopoverAnchoringService","i1.SatPopoverAnchor"],"mappings":";;;;;;;;;;;;;;;;;AAEO,MAAM,gBAAgB,GAA6B,OAAO,CAAC,kBAAkB,EAAE;IACpF,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,CAAC;IAC/F,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC;IAC/G,UAAU,CAAC,YAAY,EAAE;QACvB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC;AACzD,QAAA,OAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;KAC5E,CAAC;IACF,UAAU,CAAC,sBAAsB,EAAE;AACjC,QAAA,OAAO,CAAC,qBAAqB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC,CAAC;KAC1F,CAAC;AACH,CAAA,CAAC;;ACXK,MAAM,YAAY,GAA+B,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AAG1F,MAAM,iBAAiB,GAAgC,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAGrG,MAAM,gBAAgB,GAA8B,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC;;SCLvF,yBAAyB,GAAA;AACvC,IAAA,OAAO,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACtD,CAAC;SAEe,4BAA4B,GAAA;AAC1C,IAAA,OAAO,KAAK,CAAC,wFAAwF,CAAC,CAAC;AACzG,CAAC;SAEe,sBAAsB,GAAA;AACpC,IAAA,OAAO,KAAK,CAAC,sEAAsE,CAAC,CAAC;AACvF,CAAC;SAEe,+BAA+B,GAAA;IAC7C,OAAO,KAAK,CACV,CAA6C,2CAAA,CAAA;QAC3C,CAAwB,sBAAA,CAAA;QACxB,CAAoE,kEAAA,CAAA;AACpE,QAAA,CAAA,oEAAA,CAAsE,CACzE,CAAC;AACJ,CAAC;AAEK,SAAU,8BAA8B,CAAC,SAAS,EAAA;IACtD,OAAO,KAAK,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAC7F,CAAC;AAEK,SAAU,4BAA4B,CAAC,SAAS,EAAA;IACpD,OAAO,KAAK,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC1F,CAAC;AAEK,SAAU,6BAA6B,CAAC,QAAQ,EAAA;IACpD,OAAO,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe,EAAE,OAAY,EAAE,KAAe,EAAA;IAC1E,OAAO,CAAA,QAAA,EAAW,OAAO,CAAA,GAAA,EAAM,OAAO,CAAA,qBAAA,EAAwB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,CAAC;AACzG;;ACIA,MACa,0BAA0B,CAAA;AAkCjB,IAAA,QAAA,CAAA;AAA2B,IAAA,OAAA,CAAA;AAAqC,IAAA,IAAA,CAAA;;AAhCpF,IAAA,aAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;;AAGpC,IAAA,aAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;;AAGpC,IAAA,WAAW,CAAa;;AAGhB,IAAA,QAAQ,CAAa;;AAGrB,IAAA,iBAAiB,CAAmB;;AAGpC,IAAA,OAAO,CAAc;;AAGrB,IAAA,OAAO,CAAsB;;AAG7B,IAAA,0BAA0B,CAAe;;AAGzC,IAAA,2BAA2B,CAAe;;IAG1C,YAAY,GAAG,KAAK,CAAC;;AAGrB,IAAA,UAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;AAEzC,IAAA,WAAA,CAAoB,QAAiB,EAAU,OAAe,EAAsB,IAAoB,EAAA;QAApF,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QAAU,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;QAAsB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAgB;KAAI;IAE5G,WAAW,GAAA;;;QAGT,IAAI,CAAC,eAAe,EAAE,CAAC;;QAGvB,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,YAAA,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC;AAC/C,SAAA;QACD,IAAI,IAAI,CAAC,2BAA2B,EAAE;AACpC,YAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;AAChD,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;AAE3B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KAC/B;;AAGD,IAAA,MAAM,CAAC,OAAmB,EAAE,gBAAkC,EAAE,MAAgC,EAAA;;;AAG9F,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,iBAAiB,KAAK,gBAAgB,IAAI,IAAI,CAAC,WAAW,EAAE;AAChG,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,YAAY,UAAU,GAAG,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC;YAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;AAC5C,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAqD,CAAC;AAC9E,YAAA,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;YAClC,OAAO;AACR,SAAA;;QAGD,IAAI,CAAC,eAAe,EAAE,CAAC;;AAGvB,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AACxB,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,YAAY,UAAU,GAAG,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC;KAC7E;;IAGD,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;;IAGD,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;KACrE;;IAGD,WAAW,CAAC,UAAiC,EAAE,EAAA;AAC7C,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAChC,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,SAAA;KACF;;AAGD,IAAA,YAAY,CAAC,KAAW,EAAA;QACtB,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;AAC3B,SAAA;KACF;;IAGD,iBAAiB,GAAA;QACf,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;;IAGD,mBAAmB,GAAA;QACjB,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAClC;;IAGD,sBAAsB,GAAA;QACpB,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;AAC5C,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAqD,CAAC;YAC9E,QAAQ,CAAC,mBAAmB,EAAE,CAAC;AAChC,SAAA;KACF;;IAGD,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;;AAGO,IAAA,iBAAiB,CAAC,OAA8B,EAAA;;AAEtD,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,KAAK,KAAK,CAAC;AACpD,QAAA,IAAI,CAAC,QAAQ,CAAC,qBAAqB,GAAG,YAAY,CAAC;;AAGnD,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC;AAC9C,QAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,SAAS,CAAC;KAC9C;;IAGO,cAAc,GAAA;;AAEpB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAEtF,YAAA,MAAM,aAAa,GAAkB;AACnC,gBAAA,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe;AAC9C,gBAAA,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa;gBAC1C,WAAW,EAAE,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC7D,gBAAA,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa;AAC1C,gBAAA,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc;gBAC5C,cAAc,EAAE,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;gBACnE,aAAa,EAAE,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;AACjE,gBAAA,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;aACrC,CAAC;AAEF,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAE1E,YAAA,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,gBAAqD,CAAC,CAAC;YAEtG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACxD,SAAA;;QAGD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;;IAGO,eAAe,GAAA;QACrB,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACzB,SAAA;KACF;AAED;;;AAGG;IACK,yBAAyB,GAAA;QAC/B,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE;AAC5C,YAAA,IAAI,CAAC,WAAW;AACb,iBAAA,WAAW,EAAE;AACb,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACzC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAC5C,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,SAAA;KACF;;IAGO,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,WAAW;AACb,aAAA,aAAa,EAAE;AACf,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EAC/C,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAC5C,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;aACA,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;KACzC;;IAGO,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,WAAW;AACb,aAAA,aAAa,EAAE;aACf,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EACxD,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,EAC3C,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAC5C,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;aACA,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;KACzC;;IAGO,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,WAAW;AACb,aAAA,WAAW,EAAE;AACb,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;KAC7C;;IAGO,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAE/C,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAC7B,SAAA;KACF;;AAGO,IAAA,gBAAgB,CAAC,KAAW,EAAA;QAClC,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAEhD,YAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,SAAA;KACF;;IAGO,aAAa,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;KAC/D;;IAGO,iBAAiB,CAAC,MAAqB,EAAE,MAAmB,EAAA;QAClE,OAAO,IAAI,aAAa,CAAC;YACvB,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,CACzC,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,aAAa,EACpB,MAAM,CACP;YACD,WAAW,EAAE,MAAM,CAAC,WAAW;AAC/B,YAAA,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,kCAAkC;YACzE,cAAc,EAAE,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,cAAc,CAAC;AACtE,YAAA,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE;YAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;AAC9B,SAAA,CAAC,CAAC;KACJ;AAED;;;AAGG;AACK,IAAA,2BAA2B,CAAC,QAA2C,EAAA;QAC7E,IAAI,IAAI,CAAC,2BAA2B,EAAE;AACpC,YAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;AAChD,SAAA;QAED,IAAI,CAAC,2BAA2B,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;;AAEhH,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAK;gBACpB,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAChC,6BAA6B,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAC7D,2BAA2B,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAC5D,CAAC;AACJ,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;AAGO,IAAA,0BAA0B,CAAC,QAAkC,EAAA;AACnE,QAAA,QAAQ,QAAQ;AACd,YAAA,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAChD,YAAA,KAAK,YAAY;gBACf,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;AACrD,YAAA,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAChD,YAAA,KAAK,MAAM,CAAC;AACZ,YAAA;gBACE,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAChD,SAAA;KACF;;IAGO,oBAAoB,CAC1B,gBAA2C,EAC3C,cAAuC,EACvC,cAAuB,EACvB,aAAsB,EACtB,MAAmB,EAAA;;QAGnB,MAAM,cAAc,GAAG,WAAW,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;AACrE,QAAA,MAAM,SAAS,GAAG,CAAC,cAAc,CAAC,CAAC;AAEnC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC3B,aAAA,QAAQ,EAAE;aACV,mBAAmB,CAAC,MAAM,CAAC;aAC3B,sBAAsB,CAAC,KAAK,CAAC;aAC7B,QAAQ,CAAC,KAAK,CAAC;aACf,kBAAkB,CAAC,CAAC,CAAC;aACrB,kBAAkB,CAAC,aAAa,CAAC,CAAC;;QAGrC,IAAI,CAAC,cAAc,EAAE;YACnB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;AACvE,YAAA,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AAC9B,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;KAC1C;;IAGO,aAAa,CACnB,OAAkC,EAClC,OAAgC,EAAA;;QAGhC,MAAM,wBAAwB,GAAG,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,OAAO,CAAC;QAC7E,MAAM,sBAAsB,GAAG,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,OAAO,CAAC;;;QAI1E,MAAM,4BAA4B,GAAgC,wBAAwB;cACtF,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC;AAC/C,cAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACxB,MAAM,0BAA0B,GAA8B,sBAAsB;cAChF,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC;AAC9C,cAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;QAGvB,MAAM,SAAS,GAA6B,EAAE,CAAC;QAC/C,sBAAsB,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YAC1E,sBAAsB,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;gBACxE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpC,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;;QAGH,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;KAC7C;oFA9WU,0BAA0B,EAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,cAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,KAAA,iBAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,0BAA0B,WAA1B,0BAA0B,CAAA,IAAA,EAAA,CAAA,CAAA;;uFAA1B,0BAA0B,EAAA,CAAA;cADtC,UAAU;;sBAmCwD,QAAQ;;AA+U3E;AACA,SAAS,WAAW,CAAC,CAA4B,EAAE,CAA0B,EAAA;IAC3E,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,8BAA8B,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,4BAA4B,CAAC,CAAC,CAAC,CAAC;AAC9D,IAAA,OAAO,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AAClF,CAAC;AAED;AACA,SAAS,6BAA6B,CAAC,CAA0B,EAAA;IAC/D,IAAI,CAAC,KAAK,OAAO,EAAE;AACjB,QAAA,OAAO,OAAO,CAAC;AAChB,KAAA;IAED,IAAI,CAAC,KAAK,KAAK,EAAE;AACf,QAAA,OAAO,QAAQ,CAAC;AACjB,KAAA;AAED,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;AACA,SAAS,2BAA2B,CAAC,CAAwB,EAAA;IAC3D,IAAI,CAAC,KAAK,KAAK,EAAE;AACf,QAAA,OAAO,OAAO,CAAC;AAChB,KAAA;IAED,IAAI,CAAC,KAAK,QAAQ,EAAE;AAClB,QAAA,OAAO,OAAO,CAAC;AAChB,KAAA;AAED,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;AACA,SAAS,8BAA8B,CAAC,CAA4B,EAAA;AAIlE,IAAA,QAAQ,CAAC;AACP,QAAA,KAAK,QAAQ;YACX,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC/C,QAAA,KAAK,OAAO;YACV,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACjD,QAAA,KAAK,KAAK;YACR,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC7C,QAAA,KAAK,OAAO;YACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/C,QAAA;YACE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACpD,KAAA;AACH,CAAC;AAED;AACA,SAAS,4BAA4B,CAAC,CAA0B,EAAA;AAI9D,IAAA,QAAQ,CAAC;AACP,QAAA,KAAK,OAAO;YACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChD,QAAA,KAAK,OAAO;YACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC7C,QAAA,KAAK,KAAK;YACR,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACnD,QAAA,KAAK,OAAO;YACV,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAChD,QAAA;YACE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACpD,KAAA;AACH,CAAC;AAED;;;;;;;AAOG;AACH,SAAS,sBAAsB,CAAI,MAAS,EAAE,OAAY,EAAA;IACxD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;;AAG5C,IAAA,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC;;IAG3B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAC3C,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;;AAGvE,IAAA,OAAO,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;QAClC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5B,KAAA;;IAGD,OAAO,KAAK,CAAC,MAAM,EAAE;QACnB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7B,KAAA;;IAGD,OAAO,IAAI,CAAC,MAAM,EAAE;QAClB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5B,KAAA;AAED,IAAA,OAAO,SAAS,CAAC;AACnB;;ACngBA;AACA;MACa,kBAAkB,GAAG,IAAI,cAAc,CAAC,mBAAmB;;;;;;ICHtE,EAMC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IADC,EAA0B,CAAA,UAAA,CAAA,wBAAA,EAAA,SAAA,gFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAwB,CAAA,gBAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAEnD,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;IAC3B,EAAM,CAAA,YAAA,EAAA,CAAA;;;AALJ,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,UAAA,CAAsB,CAAA,mBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,MAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,CAAA,CAAA;;;ACuC1B,MAAM,kCAAkC,GAAG,GAAG,CAAC;AAC/C,MAAM,iCAAiC,GAAG,GAAG,CAAC;AAE9C,MAIa,gBAAgB,CAAA;AAwBR,IAAA,UAAA,CAAA;AAA+B,IAAA,gBAAA,CAAA;AAvBlD,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,GAAe,EAAA;;;;;QAKzB,IAAI,GAAG,YAAY,UAAU,EAAE;AAC7B,YAAA,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,SAAA;AAAM,aAAA;;;YAGL,IAAI,GAAG,KAAK,EAAE,EAAE;gBACd,MAAM,sBAAsB,EAAE,CAAC;AAChC,aAAA;AACF,SAAA;KACF;;AAGD,IAAA,QAAQ,CAAa;IAErB,WAAmB,CAAA,UAAsB,EAAS,gBAAkC,EAAA;QAAjE,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAAS,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;KAAI;IAExF,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,+BAA+B,EAAE,CAAC;AACzC,SAAA;KACF;0EA9BU,gBAAgB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;6DAAhB,gBAAgB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,CAAA;;uFAAhB,gBAAgB,EAAA,CAAA;cAJ5B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACT,gBAAA,QAAQ,EAAE,oBAAoB;AAC9B,gBAAA,QAAQ,EAAE,kBAAkB;AAC7B,aAAA,CAAA;4FAGK,OAAO,EAAA,CAAA;kBADV,KAAK;mBAAC,kBAAkB,CAAA;;AAgC3B,MAQa,UAAU,CAAA;AA4PX,IAAA,iBAAA,CAAA;AAEA,IAAA,iBAAA,CAAA;AAC4B,IAAA,kBAAA,CAAA;AACE,IAAA,SAAA,CAAA;;AA9PxC,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IACD,IAAI,MAAM,CAAC,GAA6D,EAAA;QACtE,IAAI,GAAG,YAAY,gBAAgB,EAAE;AACnC,YAAA,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;AAC1E,YAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACpB,SAAA;AAAM,aAAA,IAAI,GAAG,YAAY,UAAU,IAAI,GAAG,YAAY,WAAW,EAAE;AAClE,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;AACjE,YAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACpB,SAAA;AAAM,aAAA,IAAI,GAAG,EAAE;YACd,MAAM,4BAA4B,EAAE,CAAC;AACtC,SAAA;KACF;AACO,IAAA,OAAO,CAA2D;;AAG1E,IAAA,IACI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;IACD,IAAI,eAAe,CAAC,GAA8B,EAAA;AAChD,QAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;AACnC,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,GAAG,EAAE;AACjC,YAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC;AAC5B,YAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;AAC5C,SAAA;KACF;IACO,gBAAgB,GAA8B,QAAQ,CAAC;;AAG/D,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IACD,IAAI,MAAM,CAAC,GAA8B,EAAA;AACvC,QAAA,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;KAC5B;;AAGD,IAAA,IACI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;IACD,IAAI,aAAa,CAAC,GAA4B,EAAA;AAC5C,QAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;AACjC,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,GAAG,EAAE;AAC/B,YAAA,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;AAC1B,YAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;AAC5C,SAAA;KACF;IACO,cAAc,GAA4B,QAAQ,CAAC;;AAG3D,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IACD,IAAI,MAAM,CAAC,GAA4B,EAAA;AACrC,QAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;KAC1B;;AAGD,IAAA,IACI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IACD,IAAI,cAAc,CAAC,GAAiB,EAAA;AAClC,QAAA,MAAM,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;AAC9C,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,UAAU,EAAE;AACvC,YAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;AAClC,YAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;AAC5C,SAAA;KACF;IACO,eAAe,GAAG,KAAK,CAAC;AAEhC;;;AAGG;AACH,IAAA,IACI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;IACD,IAAI,aAAa,CAAC,GAAiB,EAAA;AACjC,QAAA,MAAM,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;AAC9C,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,UAAU,EAAE;AACtC,YAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;AAC5C,SAAA;KACF;IACO,cAAc,GAAG,KAAK,CAAC;;AAG/B,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB,CAAC;KACnD;IACD,IAAI,SAAS,CAAC,GAAiB,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;KAC9C;IACO,UAAU,GAAG,IAAI,CAAC;IAC1B,kBAAkB,GAAG,IAAI,CAAC;;AAG1B,IAAA,IACI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,qBAAqB,CAAC;KACzD;IACD,IAAI,YAAY,CAAC,GAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;KACjD;IACO,aAAa,GAAG,IAAI,CAAC;IAC7B,qBAAqB,GAAG,IAAI,CAAC;;AAG7B,IAAA,IACI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IACD,IAAI,cAAc,CAAC,GAA6B,EAAA;AAC9C,QAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;AAClC,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,GAAG,EAAE;AAChC,YAAA,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;AAC3B,YAAA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;AAC9C,SAAA;KACF;IACO,eAAe,GAA6B,YAAY,CAAC;;AAGjE,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IACD,IAAI,WAAW,CAAC,GAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;KAChD;IACO,YAAY,GAAG,KAAK,CAAC;;AAG7B,IAAA,IACI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;IACD,IAAI,gBAAgB,CAAC,GAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,iBAAiB,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;KACrD;IACO,iBAAiB,GAAG,IAAI,CAAC;;AAGjC,IAAA,IACI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IACD,IAAI,cAAc,CAAC,GAAW,EAAA;AAC5B,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;AAC5B,SAAA;KACF;AACO,IAAA,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC;;AAGlD,IAAA,IACI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;IACD,IAAI,eAAe,CAAC,GAAW,EAAA;AAC7B,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC;AAC7B,SAAA;KACF;AACO,IAAA,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC;;AAGnD,IAAA,IACI,yBAAyB,GAAA;QAC3B,OAAO,IAAI,CAAC,0BAA0B,CAAC;KACxC;IACD,IAAI,yBAAyB,CAAC,GAAgB,EAAA;AAC5C,QAAA,MAAM,UAAU,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,0BAA0B,GAAG,UAAU,CAAC;AAC9C,SAAA;KACF;IACO,0BAA0B,GAAG,kCAAkC,CAAC;;AAGxE,IAAA,IACI,wBAAwB,GAAA;QAC1B,OAAO,IAAI,CAAC,yBAAyB,CAAC;KACvC;IACD,IAAI,wBAAwB,CAAC,GAAgB,EAAA;AAC3C,QAAA,MAAM,UAAU,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,yBAAyB,GAAG,UAAU,CAAC;AAC7C,SAAA;KACF;IACO,yBAAyB,GAAG,iCAAiC,CAAC;;IAG7D,aAAa,GAAG,EAAE,CAAC;;IAGnB,UAAU,GAAsB,EAAE,CAAC;;AAGlC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAQ,CAAC;;AAGlC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAO,CAAC;;AAGjC,IAAA,SAAS,GAAG,IAAI,YAAY,EAAQ,CAAC;;AAGrC,IAAA,UAAU,GAAG,IAAI,YAAY,EAAQ,CAAC;;AAGtC,IAAA,eAAe,GAAG,IAAI,YAAY,EAAQ,CAAC;;AAG3C,IAAA,cAAc,GAAG,IAAI,YAAY,EAAiB,CAAC;;AAGnB,IAAA,YAAY,CAAmB;;IAGzE,UAAU,GAAQ,EAAE,CAAC;;IAGrB,KAAK,GAAG,KAAK,CAAC;IAEd,MAAM,GAA8B,OAAO,CAAC;;AAG5C,IAAA,iBAAiB,CAA6B;;AAItC,IAAA,iBAAiB,CAAa;;AAG9B,IAAA,yBAAyB,CAAc;;AAGvC,IAAA,UAAU,CAAwB;IAE1C,WACU,CAAA,iBAA+C,EACvD,iBAA6C,EACrC,iBAAmC,EACP,kBAA0B,EACxB,SAAc,EAAA;QAJ5C,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAA8B;QAE/C,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAkB;QACP,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAQ;QACxB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAK;;;AAIpD,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;AAC3C,QAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAClC,QAAA,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAChC,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KACtC;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;;IAGD,IAAI,CAAC,UAAiC,EAAE,EAAA;QACtC,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC5C,OAAO;AACR,SAAA;QAED,MAAM,yBAAyB,EAAE,CAAC;KACnC;;AAGD,IAAA,KAAK,CAAC,KAAW,EAAA;AACf,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KAC5C;;IAGD,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;KACxC;;IAGD,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;KACjD;;IAGD,MAAM,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;;IAGD,eAAe,CAAC,aAA+B,EAAE,EAAyC,EAAA;AACxF,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;KACxD;;AAGD,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AACD,IAAA,IAAI,MAAM,GAAA;QACR,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,YAAY,EAAE,IAAI,CAAC,yBAAyB;YAC5C,UAAU,EAAE,IAAI,CAAC,wBAAwB;SAC1C,CAAC;KACH;;IAGD,gBAAgB,CAAC,EAAE,OAAO,EAAkB,EAAA;QAC1C,IAAI,OAAO,KAAK,OAAO,EAAE;YACvB,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACvB,SAAA;AAAM,aAAA,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,EAAE;YACnD,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACxB,SAAA;KACF;;IAGD,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACtB;;IAED,oBAAoB,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,aAAa,EAAA;AACpF,QAAA,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,GAAG,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,KAAK,CAAC;AACxF,QAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,OAAO,CAAC;AAExF,QAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,KAAK,CAAC;AACpF,QAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,OAAO,CAAC;AAEtF,QAAA,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,GAAG,UAAU,KAAK,QAAQ,IAAI,SAAS,KAAK,QAAQ,CAAC;KAC3F;;IAGO,UAAU,GAAA;QAChB,IAAI,CAAC,6BAA6B,EAAE,CAAC;;AAGrC,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,OAAO;AACR,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC9C,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;AACvF,SAAA;QAED,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,CAAC,4BAA4B,EAAE,CAAC;AAChD,SAAA;KACF;;IAGO,2BAA2B,GAAA;AACjC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,yBAAyB,CAAC;;QAG/C,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE;AACtD,YAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;AACxC,SAAA;AAED,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QAEtC,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC7B,SAAA;KACF;;IAGO,6BAA6B,GAAA;QACnC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,aAA4B,CAAC;AAC9E,SAAA;KACF;;AAGO,IAAA,wBAAwB,CAAC,GAA8B,EAAA;QAC7D,IAAI,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACzC,YAAA,MAAM,8BAA8B,CAAC,GAAG,CAAC,CAAC;AAC3C,SAAA;KACF;;AAGO,IAAA,sBAAsB,CAAC,GAA4B,EAAA;QACzD,IAAI,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACxC,YAAA,MAAM,4BAA4B,CAAC,GAAG,CAAC,CAAC;AACzC,SAAA;KACF;;AAGO,IAAA,uBAAuB,CAAC,QAAkC,EAAA;QAChE,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AACzC,YAAA,MAAM,6BAA6B,CAAC,QAAQ,CAAC,CAAC;AAC/C,SAAA;KACF;oEAtZU,UAAU,EAAA,EAAA,CAAA,iBAAA,CAAAA,IAAA,CAAA,4BAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAC,0BAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CA+PX,kBAAkB,CAAA,EAAA,EAAA,CAAA,iBAAA,CACN,QAAQ,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;6DAhQnB,UAAU,EAAA,SAAA,EAAA,CAAA,CAAA,aAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,gBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;2BAoOV,WAAW,EAAA,CAAA,CAAA,CAAA;;;;;;AAtOX,SAAA,EAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA,CAAC,0BAA0B,CAAC,CAAA,CAAA,EAAA,kBAAA,EAAA,GAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,mBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;YDzFzC,EAUc,CAAA,UAAA,CAAA,CAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,CAAA,CAAA;AC4EA,SAAA,EAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,OAAA,CAAA,EAAA,MAAA,EAAA,CAAA,igFAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,CAAC,gBAAgB,CAAC,EAAA,EAAA,CAAA,CAAA;;uFAKnB,UAAU,EAAA,CAAA;cARtB,SAAS;2BACE,aAAa,EAAA,aAAA,EACR,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,CAAC,gBAAgB,CAAC,EAAA,SAAA,EAGnB,CAAC,0BAA0B,CAAC,EAAA,QAAA,EAAA,0SAAA,EAAA,MAAA,EAAA,CAAA,igFAAA,CAAA,EAAA,CAAA;;sBAiQpC,MAAM;uBAAC,kBAAkB,CAAA;;sBACzB,QAAQ;;sBAAI,MAAM;uBAAC,QAAQ,CAAA;wBA7P1B,MAAM,EAAA,CAAA;kBADT,KAAK;YAoBF,eAAe,EAAA,CAAA;kBADlB,KAAK;YAeF,MAAM,EAAA,CAAA;kBADT,KAAK;YAUF,aAAa,EAAA,CAAA;kBADhB,KAAK;YAeF,MAAM,EAAA,CAAA;kBADT,KAAK;YAUF,cAAc,EAAA,CAAA;kBADjB,KAAK;YAkBF,aAAa,EAAA,CAAA;kBADhB,KAAK;YAeF,SAAS,EAAA,CAAA;kBADZ,KAAK;YAYF,YAAY,EAAA,CAAA;kBADf,KAAK;YAYF,cAAc,EAAA,CAAA;kBADjB,KAAK;YAeF,WAAW,EAAA,CAAA;kBADd,KAAK;YAWF,gBAAgB,EAAA,CAAA;kBADnB,KAAK;YAWF,cAAc,EAAA,CAAA;kBADjB,KAAK;YAaF,eAAe,EAAA,CAAA;kBADlB,KAAK;YAaF,yBAAyB,EAAA,CAAA;kBAD5B,KAAK;YAcF,wBAAwB,EAAA,CAAA;kBAD3B,KAAK;YAaG,aAAa,EAAA,CAAA;kBAArB,KAAK;YAGG,UAAU,EAAA,CAAA;kBAAlB,KAAK;YAGI,MAAM,EAAA,CAAA;kBAAf,MAAM;YAGG,MAAM,EAAA,CAAA;kBAAf,MAAM;YAGG,SAAS,EAAA,CAAA;kBAAlB,MAAM;YAGG,UAAU,EAAA,CAAA;kBAAnB,MAAM;YAGG,eAAe,EAAA,CAAA;kBAAxB,MAAM;YAGG,cAAc,EAAA,CAAA;kBAAvB,MAAM;YAGmC,YAAY,EAAA,CAAA;kBAArD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAehC,iBAAiB,EAAA,CAAA;kBADxB,SAAS;mBAAC,kBAAkB,CAAA;;;ACtU/B,MAGa,wBAAwB,CAAA;AAuBhB,IAAA,MAAA,CAAA;AAtBnB;;;AAGG;AACH,IAAA,IACI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;IACD,IAAI,eAAe,CAAC,GAAgB,EAAA;AAClC,QAAA,IAAI,CAAC,gBAAgB,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;KACnD;IACO,gBAAgB,GAAG,CAAC,CAAC;;AAGrB,IAAA,UAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;;AAGjC,IAAA,aAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;;AAGpC,IAAA,aAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;AAE5C,IAAA,WAAA,CAAmB,MAAwB,EAAA;QAAxB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;KAAI;IAE/C,eAAe,GAAA;;;;AAIb,QAAA,IAAI,CAAC,aAAa;AACf,aAAA,IAAI,CACH,SAAS,CAAC,MAAK;YACb,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;SACxF,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B;AACA,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;KAChD;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;IAGD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC3B;IAGD,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KAC7B;kFArDU,wBAAwB,EAAA,EAAA,CAAA,iBAAA,CAAAC,gBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;6DAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA,EAAA,YAAA,EAAA,SAAA,qCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;AAAxB,YAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,SAAA,sDAAA,GAAA,EAAA,OAAA,GAAA,CAAA,WAAA,EAAa,8FAAb,GAAc,CAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;;uFAAd,wBAAwB,EAAA,CAAA;cAHpC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACT,gBAAA,QAAQ,EAAE,mBAAmB;AAC9B,aAAA,CAAA;gEAOK,eAAe,EAAA,CAAA;kBADlB,KAAK;YAwCN,WAAW,EAAA,CAAA;kBADV,YAAY;mBAAC,YAAY,CAAA;YAM1B,YAAY,EAAA,CAAA;kBADX,YAAY;mBAAC,YAAY,CAAA;;;ACjD5B,MASa,gBAAgB,CAAA;0EAAhB,gBAAgB,GAAA,CAAA,EAAA,CAAA;4DAAhB,gBAAgB,EAAA,CAAA,CAAA;AANhB,IAAA,OAAA,IAAA,iBAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,SAAA,EAAA;;AAET,YAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,wCAAwC,EAAE;SACpF,EALS,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAMK,UAAU,CAAA,EAAA,CAAA,CAAA;;uFAEjE,gBAAgB,EAAA,CAAA;cAT5B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACR,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC;AAC9D,gBAAA,YAAY,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,CAAC;AACtE,gBAAA,SAAS,EAAE;;AAET,oBAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,wCAAwC,EAAE;AACpF,iBAAA;gBACD,OAAO,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,UAAU,CAAC;AAC9E,aAAA,CAAA;;wFACY,gBAAgB,EAAA,EAAA,YAAA,EAAA,CAPZ,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAD3D,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,CAMnD,EAAA,OAAA,EAAA,CAAA,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,UAAU,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACjB9E;;AAEG;;;;"}