{"version":3,"file":"ng-zorro-antd-resizable.mjs","sources":["../../components/resizable/resizable-utils.ts","../../components/resizable/resizable.service.ts","../../components/resizable/resizable.directive.ts","../../components/resizable/resize-handle.component.ts","../../components/resizable/resize-handles.component.ts","../../components/resizable/resizable.module.ts","../../components/resizable/public-api.ts","../../components/resizable/ng-zorro-antd-resizable.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { isTouchEvent } from 'ng-zorro-antd/core/util';\n\nexport function getEventWithPoint(event: MouseEvent | TouchEvent): MouseEvent | Touch {\n  return isTouchEvent(event) ? event.touches[0] || event.changedTouches[0] : (event as MouseEvent);\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, NgZone, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { isTouchEvent } from 'ng-zorro-antd/core/util';\n\nimport { NzResizeHandleMouseDownEvent } from './resize-handle.component';\n\n@Injectable()\nexport class NzResizableService implements OnDestroy {\n  private document: Document;\n  private listeners = new Map<string, (event: MouseEvent | TouchEvent) => void>();\n\n  /**\n   * The `OutsideAngular` prefix means that the subject will emit events outside of the Angular zone,\n   * so that becomes a bit more descriptive for those who'll maintain the code in the future:\n   * ```ts\n   * nzResizableService.handleMouseDownOutsideAngular$.subscribe(event => {\n   *   console.log(Zone.current); // <root>\n   *   console.log(NgZone.isInAngularZone()); // false\n   * });\n   * ```\n   */\n  handleMouseDownOutsideAngular$ = new Subject<NzResizeHandleMouseDownEvent>();\n  documentMouseUpOutsideAngular$ = new Subject<MouseEvent | TouchEvent>();\n  documentMouseMoveOutsideAngular$ = new Subject<MouseEvent | TouchEvent>();\n  mouseEnteredOutsideAngular$ = new Subject<boolean>();\n\n  constructor(private ngZone: NgZone, @Inject(DOCUMENT) document: NzSafeAny) {\n    this.document = document;\n  }\n\n  startResizing(event: MouseEvent | TouchEvent): void {\n    const _isTouchEvent = isTouchEvent(event);\n    this.clearListeners();\n    const moveEvent = _isTouchEvent ? 'touchmove' : 'mousemove';\n    const upEvent = _isTouchEvent ? 'touchend' : 'mouseup';\n    const moveEventHandler = (e: MouseEvent | TouchEvent): void => {\n      this.documentMouseMoveOutsideAngular$.next(e);\n    };\n    const upEventHandler = (e: MouseEvent | TouchEvent): void => {\n      this.documentMouseUpOutsideAngular$.next(e);\n      this.clearListeners();\n    };\n\n    this.listeners.set(moveEvent, moveEventHandler);\n    this.listeners.set(upEvent, upEventHandler);\n\n    this.ngZone.runOutsideAngular(() => {\n      this.listeners.forEach((handler, name) => {\n        this.document.addEventListener(name, handler as EventListener);\n      });\n    });\n  }\n\n  private clearListeners(): void {\n    this.listeners.forEach((handler, name) => {\n      this.document.removeEventListener(name, handler as EventListener);\n    });\n    this.listeners.clear();\n  }\n\n  ngOnDestroy(): void {\n    this.handleMouseDownOutsideAngular$.complete();\n    this.documentMouseUpOutsideAngular$.complete();\n    this.documentMouseMoveOutsideAngular$.complete();\n    this.mouseEnteredOutsideAngular$.complete();\n    this.clearListeners();\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Platform } from '@angular/cdk/platform';\nimport {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  Renderer2\n} from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NzDestroyService } from 'ng-zorro-antd/core/services';\nimport { BooleanInput } from 'ng-zorro-antd/core/types';\nimport { ensureInBounds, InputBoolean } from 'ng-zorro-antd/core/util';\n\nimport { getEventWithPoint } from './resizable-utils';\nimport { NzResizableService } from './resizable.service';\nimport { NzResizeHandleMouseDownEvent } from './resize-handle.component';\n\nexport interface NzResizeEvent {\n  width?: number;\n  height?: number;\n  col?: number;\n  mouseEvent?: MouseEvent | TouchEvent;\n}\n\n@Directive({\n  selector: '[nz-resizable]',\n  exportAs: 'nzResizable',\n  providers: [NzResizableService, NzDestroyService],\n  host: {\n    class: 'nz-resizable',\n    '[class.nz-resizable-resizing]': 'resizing',\n    '[class.nz-resizable-disabled]': 'nzDisabled'\n  }\n})\nexport class NzResizableDirective implements AfterViewInit, OnDestroy {\n  static ngAcceptInputType_nzLockAspectRatio: BooleanInput;\n  static ngAcceptInputType_nzPreview: BooleanInput;\n  static ngAcceptInputType_nzDisabled: BooleanInput;\n\n  @Input() nzBounds: 'window' | 'parent' | ElementRef<HTMLElement> = 'parent';\n  @Input() nzMaxHeight?: number;\n  @Input() nzMaxWidth?: number;\n  @Input() nzMinHeight: number = 40;\n  @Input() nzMinWidth: number = 40;\n  @Input() nzGridColumnCount: number = -1;\n  @Input() nzMaxColumn: number = -1;\n  @Input() nzMinColumn: number = -1;\n  @Input() @InputBoolean() nzLockAspectRatio: boolean = false;\n  @Input() @InputBoolean() nzPreview: boolean = false;\n  @Input() @InputBoolean() nzDisabled: boolean = false;\n  @Output() readonly nzResize = new EventEmitter<NzResizeEvent>();\n  @Output() readonly nzResizeEnd = new EventEmitter<NzResizeEvent>();\n  @Output() readonly nzResizeStart = new EventEmitter<NzResizeEvent>();\n\n  resizing = false;\n  private elRect!: ClientRect | DOMRect;\n  private currentHandleEvent: NzResizeHandleMouseDownEvent | null = null;\n  private ghostElement: HTMLDivElement | null = null;\n  private el!: HTMLElement;\n  private sizeCache: NzResizeEvent | null = null;\n\n  constructor(\n    private elementRef: ElementRef<HTMLElement>,\n    private renderer: Renderer2,\n    private nzResizableService: NzResizableService,\n    private platform: Platform,\n    private ngZone: NgZone,\n    private destroy$: NzDestroyService\n  ) {\n    this.nzResizableService.handleMouseDownOutsideAngular$.pipe(takeUntil(this.destroy$)).subscribe(event => {\n      if (this.nzDisabled) {\n        return;\n      }\n      this.resizing = true;\n      this.nzResizableService.startResizing(event.mouseEvent);\n      this.currentHandleEvent = event;\n      this.setCursor();\n      if (this.nzResizeStart.observers.length) {\n        this.ngZone.run(() => this.nzResizeStart.emit({ mouseEvent: event.mouseEvent }));\n      }\n      this.elRect = this.el.getBoundingClientRect();\n    });\n\n    this.nzResizableService.documentMouseUpOutsideAngular$.pipe(takeUntil(this.destroy$)).subscribe(event => {\n      if (this.resizing) {\n        this.resizing = false;\n        this.nzResizableService.documentMouseUpOutsideAngular$.next();\n        this.endResize(event);\n      }\n    });\n\n    this.nzResizableService.documentMouseMoveOutsideAngular$.pipe(takeUntil(this.destroy$)).subscribe(event => {\n      if (this.resizing) {\n        this.resize(event);\n      }\n    });\n  }\n\n  setPosition(): void {\n    const position = getComputedStyle(this.el).position;\n    if (position === 'static' || !position) {\n      this.renderer.setStyle(this.el, 'position', 'relative');\n    }\n  }\n\n  calcSize(width: number, height: number, ratio: number): NzResizeEvent {\n    let newWidth: number;\n    let newHeight: number;\n    let maxWidth: number;\n    let maxHeight: number;\n    let col = 0;\n    let spanWidth = 0;\n    let minWidth = this.nzMinWidth;\n    let boundWidth = Infinity;\n    let boundHeight = Infinity;\n    if (this.nzBounds === 'parent') {\n      const parent = this.renderer.parentNode(this.el);\n      if (parent instanceof HTMLElement) {\n        const parentRect = parent.getBoundingClientRect();\n        boundWidth = parentRect.width;\n        boundHeight = parentRect.height;\n      }\n    } else if (this.nzBounds === 'window') {\n      if (typeof window !== 'undefined') {\n        boundWidth = window.innerWidth;\n        boundHeight = window.innerHeight;\n      }\n    } else if (this.nzBounds && this.nzBounds.nativeElement && this.nzBounds.nativeElement instanceof HTMLElement) {\n      const boundsRect = this.nzBounds.nativeElement.getBoundingClientRect();\n      boundWidth = boundsRect.width;\n      boundHeight = boundsRect.height;\n    }\n\n    maxWidth = ensureInBounds(this.nzMaxWidth!, boundWidth);\n    maxHeight = ensureInBounds(this.nzMaxHeight!, boundHeight);\n\n    if (this.nzGridColumnCount !== -1) {\n      spanWidth = maxWidth / this.nzGridColumnCount;\n      minWidth = this.nzMinColumn !== -1 ? spanWidth * this.nzMinColumn : minWidth;\n      maxWidth = this.nzMaxColumn !== -1 ? spanWidth * this.nzMaxColumn : maxWidth;\n    }\n\n    if (ratio !== -1) {\n      if (/(left|right)/i.test(this.currentHandleEvent!.direction)) {\n        newWidth = Math.min(Math.max(width, minWidth), maxWidth);\n        newHeight = Math.min(Math.max(newWidth / ratio, this.nzMinHeight), maxHeight);\n        if (newHeight >= maxHeight || newHeight <= this.nzMinHeight) {\n          newWidth = Math.min(Math.max(newHeight * ratio, minWidth), maxWidth);\n        }\n      } else {\n        newHeight = Math.min(Math.max(height, this.nzMinHeight), maxHeight);\n        newWidth = Math.min(Math.max(newHeight * ratio, minWidth), maxWidth);\n        if (newWidth >= maxWidth || newWidth <= minWidth) {\n          newHeight = Math.min(Math.max(newWidth / ratio, this.nzMinHeight), maxHeight);\n        }\n      }\n    } else {\n      newWidth = Math.min(Math.max(width, minWidth), maxWidth);\n      newHeight = Math.min(Math.max(height, this.nzMinHeight), maxHeight);\n    }\n\n    if (this.nzGridColumnCount !== -1) {\n      col = Math.round(newWidth / spanWidth);\n      newWidth = col * spanWidth;\n    }\n\n    return {\n      col,\n      width: newWidth,\n      height: newHeight\n    };\n  }\n\n  setCursor(): void {\n    switch (this.currentHandleEvent!.direction) {\n      case 'left':\n      case 'right':\n        this.renderer.setStyle(document.body, 'cursor', 'ew-resize');\n        break;\n      case 'top':\n      case 'bottom':\n        this.renderer.setStyle(document.body, 'cursor', 'ns-resize');\n        break;\n      case 'topLeft':\n      case 'bottomRight':\n        this.renderer.setStyle(document.body, 'cursor', 'nwse-resize');\n        break;\n      case 'topRight':\n      case 'bottomLeft':\n        this.renderer.setStyle(document.body, 'cursor', 'nesw-resize');\n        break;\n    }\n    this.renderer.setStyle(document.body, 'user-select', 'none');\n  }\n\n  resize(event: MouseEvent | TouchEvent): void {\n    const elRect = this.elRect;\n    const resizeEvent = getEventWithPoint(event);\n    const handleEvent = getEventWithPoint(this.currentHandleEvent!.mouseEvent);\n    let width = elRect.width;\n    let height = elRect.height;\n    const ratio = this.nzLockAspectRatio ? width / height : -1;\n    switch (this.currentHandleEvent!.direction) {\n      case 'bottomRight':\n        width = resizeEvent.clientX - elRect.left;\n        height = resizeEvent.clientY - elRect.top;\n        break;\n      case 'bottomLeft':\n        width = elRect.width + handleEvent.clientX - resizeEvent.clientX;\n        height = resizeEvent.clientY - elRect.top;\n        break;\n      case 'topRight':\n        width = resizeEvent.clientX - elRect.left;\n        height = elRect.height + handleEvent.clientY - resizeEvent.clientY;\n        break;\n      case 'topLeft':\n        width = elRect.width + handleEvent.clientX - resizeEvent.clientX;\n        height = elRect.height + handleEvent.clientY - resizeEvent.clientY;\n        break;\n      case 'top':\n        height = elRect.height + handleEvent.clientY - resizeEvent.clientY;\n        break;\n      case 'right':\n        width = resizeEvent.clientX - elRect.left;\n        break;\n      case 'bottom':\n        height = resizeEvent.clientY - elRect.top;\n        break;\n      case 'left':\n        width = elRect.width + handleEvent.clientX - resizeEvent.clientX;\n    }\n    const size = this.calcSize(width, height, ratio);\n    this.sizeCache = { ...size };\n    // Re-enter the Angular zone and run the change detection only if there're any `nzResize` listeners,\n    // e.g.: `<div nz-resizable (nzResize)=\"...\"></div>`.\n    if (this.nzResize.observers.length) {\n      this.ngZone.run(() => {\n        this.nzResize.emit({\n          ...size,\n          mouseEvent: event\n        });\n      });\n    }\n    if (this.nzPreview) {\n      this.previewResize(size);\n    }\n  }\n\n  endResize(event: MouseEvent | TouchEvent): void {\n    this.renderer.setStyle(document.body, 'cursor', '');\n    this.renderer.setStyle(document.body, 'user-select', '');\n    this.removeGhostElement();\n    const size = this.sizeCache\n      ? { ...this.sizeCache }\n      : {\n          width: this.elRect.width,\n          height: this.elRect.height\n        };\n    // Re-enter the Angular zone and run the change detection only if there're any `nzResizeEnd` listeners,\n    // e.g.: `<div nz-resizable (nzResizeEnd)=\"...\"></div>`.\n    if (this.nzResizeEnd.observers.length) {\n      this.ngZone.run(() => {\n        this.nzResizeEnd.emit({\n          ...size,\n          mouseEvent: event\n        });\n      });\n    }\n    this.sizeCache = null;\n    this.currentHandleEvent = null;\n  }\n\n  previewResize({ width, height }: NzResizeEvent): void {\n    this.createGhostElement();\n    this.renderer.setStyle(this.ghostElement, 'width', `${width}px`);\n    this.renderer.setStyle(this.ghostElement, 'height', `${height}px`);\n  }\n\n  createGhostElement(): void {\n    if (!this.ghostElement) {\n      this.ghostElement = this.renderer.createElement('div');\n      this.renderer.setAttribute(this.ghostElement, 'class', 'nz-resizable-preview');\n    }\n    this.renderer.appendChild(this.el, this.ghostElement);\n  }\n\n  removeGhostElement(): void {\n    if (this.ghostElement) {\n      this.renderer.removeChild(this.el, this.ghostElement);\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (!this.platform.isBrowser) {\n      return;\n    }\n\n    this.el = this.elementRef.nativeElement;\n    this.setPosition();\n\n    this.ngZone.runOutsideAngular(() => {\n      fromEvent(this.el, 'mouseenter')\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(() => {\n          this.nzResizableService.mouseEnteredOutsideAngular$.next(true);\n        });\n\n      fromEvent(this.el, 'mouseleave')\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(() => {\n          this.nzResizableService.mouseEnteredOutsideAngular$.next(false);\n        });\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.ghostElement = null;\n    this.sizeCache = null;\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnInit,\n  Output,\n  Renderer2\n} from '@angular/core';\nimport { fromEvent, merge } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NzDestroyService } from 'ng-zorro-antd/core/services';\n\nimport { NzResizableService } from './resizable.service';\n\nexport type NzResizeDirection =\n  | 'top'\n  | 'right'\n  | 'bottom'\n  | 'left'\n  | 'topRight'\n  | 'bottomRight'\n  | 'bottomLeft'\n  | 'topLeft';\n\nexport class NzResizeHandleMouseDownEvent {\n  constructor(public direction: NzResizeDirection, public mouseEvent: MouseEvent | TouchEvent) {}\n}\n\n@Component({\n  selector: 'nz-resize-handle, [nz-resize-handle]',\n  exportAs: 'nzResizeHandle',\n  template: ` <ng-content></ng-content> `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'nz-resizable-handle',\n    '[class.nz-resizable-handle-top]': `nzDirection === 'top'`,\n    '[class.nz-resizable-handle-right]': `nzDirection === 'right'`,\n    '[class.nz-resizable-handle-bottom]': `nzDirection === 'bottom'`,\n    '[class.nz-resizable-handle-left]': `nzDirection === 'left'`,\n    '[class.nz-resizable-handle-topRight]': `nzDirection === 'topRight'`,\n    '[class.nz-resizable-handle-bottomRight]': `nzDirection === 'bottomRight'`,\n    '[class.nz-resizable-handle-bottomLeft]': `nzDirection === 'bottomLeft'`,\n    '[class.nz-resizable-handle-topLeft]': `nzDirection === 'topLeft'`\n  },\n  providers: [NzDestroyService]\n})\nexport class NzResizeHandleComponent implements OnInit {\n  @Input() nzDirection: NzResizeDirection = 'bottomRight';\n  @Output() readonly nzMouseDown = new EventEmitter<NzResizeHandleMouseDownEvent>();\n\n  constructor(\n    private ngZone: NgZone,\n    private nzResizableService: NzResizableService,\n    private renderer: Renderer2,\n    private host: ElementRef<HTMLElement>,\n    private destroy$: NzDestroyService\n  ) {}\n\n  ngOnInit(): void {\n    this.nzResizableService.mouseEnteredOutsideAngular$.pipe(takeUntil(this.destroy$)).subscribe(entered => {\n      if (entered) {\n        this.renderer.addClass(this.host.nativeElement, 'nz-resizable-handle-box-hover');\n      } else {\n        this.renderer.removeClass(this.host.nativeElement, 'nz-resizable-handle-box-hover');\n      }\n    });\n\n    this.ngZone.runOutsideAngular(() => {\n      merge(\n        fromEvent<MouseEvent>(this.host.nativeElement, 'mousedown'),\n        fromEvent<TouchEvent>(this.host.nativeElement, 'touchstart')\n      )\n        .pipe(takeUntil(this.destroy$))\n        .subscribe((event: MouseEvent | TouchEvent) => {\n          this.nzResizableService.handleMouseDownOutsideAngular$.next(\n            new NzResizeHandleMouseDownEvent(this.nzDirection, event)\n          );\n        });\n    });\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\n\nimport { NzResizeDirection } from './resize-handle.component';\n\nexport const DEFAULT_RESIZE_DIRECTION: NzResizeDirection[] = [\n  'bottomRight',\n  'topRight',\n  'bottomLeft',\n  'topLeft',\n  'bottom',\n  'right',\n  'top',\n  'left'\n];\n\n@Component({\n  selector: 'nz-resize-handles',\n  exportAs: 'nzResizeHandles',\n  template: ` <nz-resize-handle *ngFor=\"let dir of directions\" [nzDirection]=\"dir\"></nz-resize-handle> `,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NzResizeHandlesComponent implements OnChanges {\n  @Input() nzDirections: NzResizeDirection[] = DEFAULT_RESIZE_DIRECTION;\n  directions = new Set<NzResizeDirection>(this.nzDirections);\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.nzDirections) {\n      this.directions = new Set(changes.nzDirections.currentValue);\n    }\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzResizableDirective } from './resizable.directive';\nimport { NzResizeHandleComponent } from './resize-handle.component';\nimport { NzResizeHandlesComponent } from './resize-handles.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [NzResizableDirective, NzResizeHandleComponent, NzResizeHandlesComponent],\n  exports: [NzResizableDirective, NzResizeHandleComponent, NzResizeHandlesComponent]\n})\nexport class NzResizableModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './resizable.module';\nexport * from './resizable.directive';\nexport * from './resizable.service';\nexport * from './resize-handles.component';\nexport * from './resize-handle.component';\nexport * from './resizable-utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;SAOgB,iBAAiB,CAAC,KAA8B;IAC9D,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,GAAI,KAAoB,CAAC;AACnG;;ACTA;;;;MAea,kBAAkB;IAmB7B,YAAoB,MAAc,EAAoB,QAAmB;QAArD,WAAM,GAAN,MAAM,CAAQ;QAjB1B,cAAS,GAAG,IAAI,GAAG,EAAoD,CAAC;;;;;;;;;;;QAYhF,mCAA8B,GAAG,IAAI,OAAO,EAAgC,CAAC;QAC7E,mCAA8B,GAAG,IAAI,OAAO,EAA2B,CAAC;QACxE,qCAAgC,GAAG,IAAI,OAAO,EAA2B,CAAC;QAC1E,gCAA2B,GAAG,IAAI,OAAO,EAAW,CAAC;QAGnD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;IAED,aAAa,CAAC,KAA8B;QAC1C,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC;QAC5D,MAAM,OAAO,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;QACvD,MAAM,gBAAgB,GAAG,CAAC,CAA0B;YAClD,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC/C,CAAC;QACF,MAAM,cAAc,GAAG,CAAC,CAA0B;YAChD,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAE5C,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI;gBACnC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAwB,CAAC,CAAC;aAChE,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ;IAEO,cAAc;QACpB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI;YACnC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAwB,CAAC,CAAC;SACnE,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;KACxB;IAED,WAAW;QACT,IAAI,CAAC,8BAA8B,CAAC,QAAQ,EAAE,CAAC;QAC/C,IAAI,CAAC,8BAA8B,CAAC,QAAQ,EAAE,CAAC;QAC/C,IAAI,CAAC,gCAAgC,CAAC,QAAQ,EAAE,CAAC;QACjD,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,CAAC;QAC5C,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;;+GA3DU,kBAAkB,wCAmBe,QAAQ;mHAnBzC,kBAAkB;2FAAlB,kBAAkB;kBAD9B,UAAU;;;8BAoB4B,MAAM;+BAAC,QAAQ;;;;MCWzC,oBAAoB;IA2B/B,YACU,UAAmC,EACnC,QAAmB,EACnB,kBAAsC,EACtC,QAAkB,EAClB,MAAc,EACd,QAA0B;QAL1B,eAAU,GAAV,UAAU,CAAyB;QACnC,aAAQ,GAAR,QAAQ,CAAW;QACnB,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAkB;QA5B3B,aAAQ,GAAkD,QAAQ,CAAC;QAGnE,gBAAW,GAAW,EAAE,CAAC;QACzB,eAAU,GAAW,EAAE,CAAC;QACxB,sBAAiB,GAAW,CAAC,CAAC,CAAC;QAC/B,gBAAW,GAAW,CAAC,CAAC,CAAC;QACzB,gBAAW,GAAW,CAAC,CAAC,CAAC;QACT,sBAAiB,GAAY,KAAK,CAAC;QACnC,cAAS,GAAY,KAAK,CAAC;QAC3B,eAAU,GAAY,KAAK,CAAC;QAClC,aAAQ,GAAG,IAAI,YAAY,EAAiB,CAAC;QAC7C,gBAAW,GAAG,IAAI,YAAY,EAAiB,CAAC;QAChD,kBAAa,GAAG,IAAI,YAAY,EAAiB,CAAC;QAErE,aAAQ,GAAG,KAAK,CAAC;QAET,uBAAkB,GAAwC,IAAI,CAAC;QAC/D,iBAAY,GAA0B,IAAI,CAAC;QAE3C,cAAS,GAAyB,IAAI,CAAC;QAU7C,IAAI,CAAC,kBAAkB,CAAC,8BAA8B,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK;YACnG,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,OAAO;aACR;YACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE;gBACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;aAClF;YACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC;SAC/C,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,CAAC,8BAA8B,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK;YACnG,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,IAAI,CAAC,kBAAkB,CAAC,8BAA8B,CAAC,IAAI,EAAE,CAAC;gBAC9D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;aACvB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,CAAC,gCAAgC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK;YACrG,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACpB;SACF,CAAC,CAAC;KACJ;IAED,WAAW;QACT,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC;QACpD,IAAI,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACtC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;SACzD;KACF;IAED,QAAQ,CAAC,KAAa,EAAE,MAAc,EAAE,KAAa;QACnD,IAAI,QAAgB,CAAC;QACrB,IAAI,SAAiB,CAAC;QACtB,IAAI,QAAgB,CAAC;QACrB,IAAI,SAAiB,CAAC;QACtB,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/B,IAAI,UAAU,GAAG,QAAQ,CAAC;QAC1B,IAAI,WAAW,GAAG,QAAQ,CAAC;QAC3B,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjD,IAAI,MAAM,YAAY,WAAW,EAAE;gBACjC,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;gBAClD,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;gBAC9B,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC;aACjC;SACF;aAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;YACrC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;gBACjC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;gBAC/B,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;aAClC;SACF;aAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,YAAY,WAAW,EAAE;YAC7G,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YACvE,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;YAC9B,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC;SACjC;QAED,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,UAAW,EAAE,UAAU,CAAC,CAAC;QACxD,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,WAAY,EAAE,WAAW,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,iBAAiB,KAAK,CAAC,CAAC,EAAE;YACjC,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAC9C,QAAQ,GAAG,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;YAC7E,QAAQ,GAAG,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;SAC9E;QAED,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAmB,CAAC,SAAS,CAAC,EAAE;gBAC5D,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACzD,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC;gBAC9E,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE;oBAC3D,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;iBACtE;aACF;iBAAM;gBACL,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC;gBACpE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACrE,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,EAAE;oBAChD,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC;iBAC/E;aACF;SACF;aAAM;YACL,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;YACzD,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC;SACrE;QAED,IAAI,IAAI,CAAC,iBAAiB,KAAK,CAAC,CAAC,EAAE;YACjC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;YACvC,QAAQ,GAAG,GAAG,GAAG,SAAS,CAAC;SAC5B;QAED,OAAO;YACL,GAAG;YACH,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,SAAS;SAClB,CAAC;KACH;IAED,SAAS;QACP,QAAQ,IAAI,CAAC,kBAAmB,CAAC,SAAS;YACxC,KAAK,MAAM,CAAC;YACZ,KAAK,OAAO;gBACV,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAC7D,MAAM;YACR,KAAK,KAAK,CAAC;YACX,KAAK,QAAQ;gBACX,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAC7D,MAAM;YACR,KAAK,SAAS,CAAC;YACf,KAAK,aAAa;gBAChB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAC/D,MAAM;YACR,KAAK,UAAU,CAAC;YAChB,KAAK,YAAY;gBACf,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAC/D,MAAM;SACT;QACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;KAC9D;IAED,MAAM,CAAC,KAA8B;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,kBAAmB,CAAC,UAAU,CAAC,CAAC;QAC3E,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QACzB,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,GAAG,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3D,QAAQ,IAAI,CAAC,kBAAmB,CAAC,SAAS;YACxC,KAAK,aAAa;gBAChB,KAAK,GAAG,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;gBAC1C,MAAM,GAAG,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;gBAC1C,MAAM;YACR,KAAK,YAAY;gBACf,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;gBACjE,MAAM,GAAG,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;gBAC1C,MAAM;YACR,KAAK,UAAU;gBACb,KAAK,GAAG,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;gBAC1C,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;gBACnE,MAAM;YACR,KAAK,SAAS;gBACZ,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;gBACjE,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;gBACnE,MAAM;YACR,KAAK,KAAK;gBACR,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;gBACnE,MAAM;YACR,KAAK,OAAO;gBACV,KAAK,GAAG,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;gBAC1C,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,GAAG,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;gBAC1C,MAAM;YACR,KAAK,MAAM;gBACT,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;SACpE;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,qBAAQ,IAAI,CAAE,CAAC;;;QAG7B,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE;YAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;gBACd,IAAI,CAAC,QAAQ,CAAC,IAAI,iCACb,IAAI,KACP,UAAU,EAAE,KAAK,IACjB,CAAC;aACJ,CAAC,CAAC;SACJ;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;SAC1B;KACF;IAED,SAAS,CAAC,KAA8B;QACtC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS;gCAClB,IAAI,CAAC,SAAS,IACnB;YACE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;SAC3B,CAAC;;;QAGN,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE;YACrC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;gBACd,IAAI,CAAC,WAAW,CAAC,IAAI,iCAChB,IAAI,KACP,UAAU,EAAE,KAAK,IACjB,CAAC;aACJ,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;KAChC;IAED,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAiB;QAC5C,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC;KACpE;IAED,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC;SAChF;QACD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;KACvD;IAED,kBAAkB;QAChB,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SACvD;KACF;IAED,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC5B,OAAO;SACR;QAED,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;YAC5B,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC;iBAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC9B,SAAS,CAAC;gBACT,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChE,CAAC,CAAC;YAEL,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC;iBAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC9B,SAAS,CAAC;gBACT,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACjE,CAAC,CAAC;SACN,CAAC,CAAC;KACJ;IAED,WAAW;QACT,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACvB;;iHA5RU,oBAAoB;qGAApB,oBAAoB,kmBAPpB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;AAoBxB;IAAf,YAAY,EAAE;+DAAoC;AACnC;IAAf,YAAY,EAAE;uDAA4B;AAC3B;IAAf,YAAY,EAAE;wDAA6B;2FAf1C,oBAAoB;kBAVhC,SAAS;mBAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,aAAa;oBACvB,SAAS,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;oBACjD,IAAI,EAAE;wBACJ,KAAK,EAAE,cAAc;wBACrB,+BAA+B,EAAE,UAAU;wBAC3C,+BAA+B,EAAE,YAAY;qBAC9C;iBACF;kOAMU,QAAQ;sBAAhB,KAAK;gBACG,WAAW;sBAAnB,KAAK;gBACG,UAAU;sBAAlB,KAAK;gBACG,WAAW;sBAAnB,KAAK;gBACG,UAAU;sBAAlB,KAAK;gBACG,iBAAiB;sBAAzB,KAAK;gBACG,WAAW;sBAAnB,KAAK;gBACG,WAAW;sBAAnB,KAAK;gBACmB,iBAAiB;sBAAzC,KAAK;gBACmB,SAAS;sBAAjC,KAAK;gBACmB,UAAU;sBAAlC,KAAK;gBACa,QAAQ;sBAA1B,MAAM;gBACY,WAAW;sBAA7B,MAAM;gBACY,aAAa;sBAA/B,MAAM;;;AC/DT;;;;MAiCa,4BAA4B;IACvC,YAAmB,SAA4B,EAAS,UAAmC;QAAxE,cAAS,GAAT,SAAS,CAAmB;QAAS,eAAU,GAAV,UAAU,CAAyB;KAAI;CAChG;MAoBY,uBAAuB;IAIlC,YACU,MAAc,EACd,kBAAsC,EACtC,QAAmB,EACnB,IAA6B,EAC7B,QAA0B;QAJ1B,WAAM,GAAN,MAAM,CAAQ;QACd,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,aAAQ,GAAR,QAAQ,CAAW;QACnB,SAAI,GAAJ,IAAI,CAAyB;QAC7B,aAAQ,GAAR,QAAQ,CAAkB;QAR3B,gBAAW,GAAsB,aAAa,CAAC;QACrC,gBAAW,GAAG,IAAI,YAAY,EAAgC,CAAC;KAQ9E;IAEJ,QAAQ;QACN,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO;YAClG,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,+BAA+B,CAAC,CAAC;aAClF;iBAAM;gBACL,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,+BAA+B,CAAC,CAAC;aACrF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;YAC5B,KAAK,CACH,SAAS,CAAa,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,EAC3D,SAAS,CAAa,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAC7D;iBACE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC9B,SAAS,CAAC,CAAC,KAA8B;gBACxC,IAAI,CAAC,kBAAkB,CAAC,8BAA8B,CAAC,IAAI,CACzD,IAAI,4BAA4B,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAC1D,CAAC;aACH,CAAC,CAAC;SACN,CAAC,CAAC;KACJ;;oHAjCU,uBAAuB;wGAAvB,uBAAuB,6tBAFvB,CAAC,gBAAgB,CAAC,wDAbnB,6BAA6B;2FAe5B,uBAAuB;kBAlBnC,SAAS;mBAAC;oBACT,QAAQ,EAAE,sCAAsC;oBAChD,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,6BAA6B;oBACvC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,IAAI,EAAE;wBACJ,KAAK,EAAE,qBAAqB;wBAC5B,iCAAiC,EAAE,uBAAuB;wBAC1D,mCAAmC,EAAE,yBAAyB;wBAC9D,oCAAoC,EAAE,0BAA0B;wBAChE,kCAAkC,EAAE,wBAAwB;wBAC5D,sCAAsC,EAAE,4BAA4B;wBACpE,yCAAyC,EAAE,+BAA+B;wBAC1E,wCAAwC,EAAE,8BAA8B;wBACxE,qCAAqC,EAAE,2BAA2B;qBACnE;oBACD,SAAS,EAAE,CAAC,gBAAgB,CAAC;iBAC9B;2MAEU,WAAW;sBAAnB,KAAK;gBACa,WAAW;sBAA7B,MAAM;;;ACzDT;;;;MASa,wBAAwB,GAAwB;IAC3D,aAAa;IACb,UAAU;IACV,YAAY;IACZ,SAAS;IACT,QAAQ;IACR,OAAO;IACP,KAAK;IACL,MAAM;EACN;MAQW,wBAAwB;IANrC;QAOW,iBAAY,GAAwB,wBAAwB,CAAC;QACtE,eAAU,GAAG,IAAI,GAAG,CAAoB,IAAI,CAAC,YAAY,CAAC,CAAC;KAO5D;IALC,WAAW,CAAC,OAAsB;QAChC,IAAI,OAAO,CAAC,YAAY,EAAE;YACxB,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;SAC9D;KACF;;qHARU,wBAAwB;yGAAxB,wBAAwB,uJAHzB,4FAA4F;2FAG3F,wBAAwB;kBANpC,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,QAAQ,EAAE,iBAAiB;oBAC3B,QAAQ,EAAE,4FAA4F;oBACtG,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;8BAEU,YAAY;sBAApB,KAAK;;;AC3BR;;;;MAiBa,iBAAiB;;8GAAjB,iBAAiB;+GAAjB,iBAAiB,iBAHb,oBAAoB,EAAE,uBAAuB,EAAE,wBAAwB,aAD5E,YAAY,aAEZ,oBAAoB,EAAE,uBAAuB,EAAE,wBAAwB;+GAEtE,iBAAiB,YAJnB,CAAC,YAAY,CAAC;2FAIZ,iBAAiB;kBAL7B,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,oBAAoB,EAAE,uBAAuB,EAAE,wBAAwB,CAAC;oBACvF,OAAO,EAAE,CAAC,oBAAoB,EAAE,uBAAuB,EAAE,wBAAwB,CAAC;iBACnF;;;AChBD;;;;;ACAA;;;;;;"}