{"version":3,"file":"water-wave.mjs","sources":["../../../../packages/chart/water-wave/water-wave.component.ts","../../../../packages/chart/water-wave/water-wave.component.html","../../../../packages/chart/water-wave/water-wave.module.ts","../../../../packages/chart/water-wave/water-wave.ts"],"sourcesContent":["import { Platform } from '@angular/cdk/platform';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n  booleanAttribute,\n  inject,\n  numberAttribute\n} from '@angular/core';\nimport { fromEvent, Subscription, debounceTime } from 'rxjs';\n\nimport { NzStringTemplateOutletDirective } from 'ng-zorro-antd/core/outlet';\n\n@Component({\n  selector: 'g2-water-wave',\n  exportAs: 'g2WaterWave',\n  templateUrl: './water-wave.component.html',\n  host: { '[class.g2-water-wave]': 'true' },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  imports: [NzStringTemplateOutletDirective]\n})\nexport class G2WaterWaveComponent implements OnDestroy, OnChanges, OnInit {\n  private readonly el: HTMLElement = inject(ElementRef).nativeElement;\n  private readonly renderer = inject(Renderer2);\n  private readonly ngZone = inject(NgZone);\n  private readonly cdr = inject(ChangeDetectorRef);\n  private readonly platform = inject(Platform);\n\n  private resize$: Subscription | null = null;\n  @ViewChild('container', { static: true }) private node!: ElementRef;\n  private timer!: number;\n\n  // #region fields\n\n  @Input({ transform: booleanAttribute }) animate = true;\n  @Input({ transform: numberAttribute }) delay = 0;\n  @Input() title?: string | TemplateRef<void> | null;\n  @Input() color = '#1890FF';\n  @Input({ transform: numberAttribute }) height = 160;\n  @Input({ transform: numberAttribute }) percent?: number;\n\n  // #endregion\n\n  private renderChart(isUpdate: boolean): void {\n    if (!this.resize$) return;\n\n    this.updateRadio();\n\n    const { percent, color, node, animate } = this;\n\n    const data = Math.min(Math.max(percent! / 100, 0), 100);\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const self = this;\n    cancelAnimationFrame(this.timer);\n\n    const canvas = node.nativeElement as HTMLCanvasElement;\n    const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n    const canvasWidth = canvas.width;\n    const canvasHeight = canvas.height;\n    const radius = canvasWidth / 2;\n    const lineWidth = 2;\n    const cR = radius - lineWidth;\n\n    ctx.beginPath();\n    ctx.lineWidth = lineWidth * 2;\n\n    const axisLength = canvasWidth - lineWidth;\n    const unit = axisLength / 8;\n    const xOffset = lineWidth;\n    let sp = 0; // 周期偏移量\n    const range = 0.2; // 振幅\n    let currRange = range;\n    let currData = 0;\n    const waveupsp = animate ? 0.005 : 0.015; // 水波上涨速度\n\n    let arcStack: [[number, number]?] | null = [];\n    const bR = radius - lineWidth;\n    const circleOffset = -(Math.PI / 2);\n    let circleLock = true;\n\n    for (let i = circleOffset; i < circleOffset + 2 * Math.PI; i += 1 / (8 * Math.PI)) {\n      arcStack.push([radius + bR * Math.cos(i), radius + bR * Math.sin(i)]);\n    }\n\n    const cStartPoint = arcStack.shift() as [number, number];\n    ctx.strokeStyle = color;\n    ctx.moveTo(cStartPoint[0], cStartPoint[1]);\n\n    function drawSin(): void {\n      ctx.beginPath();\n      ctx.save();\n\n      const sinStack: [[number, number]?] = [];\n      for (let i = xOffset; i <= xOffset + axisLength; i += 20 / axisLength) {\n        const x = sp + (xOffset + i) / unit;\n        const y = Math.sin(x) * currRange;\n        const dx = i;\n        const dy = 2 * cR * (1 - currData) + (radius - cR) - unit * y;\n\n        ctx.lineTo(dx, dy);\n        sinStack.push([dx, dy]);\n      }\n\n      const startPoint = sinStack.shift() as [number, number];\n\n      ctx.lineTo(xOffset + axisLength, canvasHeight);\n      ctx.lineTo(xOffset, canvasHeight);\n      ctx.lineTo(startPoint[0], startPoint[1]);\n\n      const gradient = ctx.createLinearGradient(0, 0, 0, canvasHeight);\n      gradient.addColorStop(0, '#ffffff');\n      gradient.addColorStop(1, color);\n      ctx.fillStyle = gradient;\n      ctx.fill();\n      ctx.restore();\n    }\n\n    function render(): void {\n      ctx.clearRect(0, 0, canvasWidth, canvasHeight);\n      if (circleLock && !isUpdate) {\n        if (arcStack!.length) {\n          if (animate) {\n            const temp = arcStack!.shift() as [number, number];\n            ctx.lineTo(temp[0], temp[1]);\n            ctx.stroke();\n          } else {\n            for (const temp of arcStack!) {\n              ctx.lineTo(temp![0], temp![1]);\n              ctx.stroke();\n            }\n            arcStack = [];\n          }\n        } else {\n          circleLock = false;\n          ctx.lineTo(cStartPoint[0], cStartPoint[1]);\n          ctx.stroke();\n          arcStack = null;\n\n          ctx.globalCompositeOperation = 'destination-over';\n          ctx.beginPath();\n          ctx.lineWidth = lineWidth;\n          ctx.arc(radius, radius, bR, 0, 2 * Math.PI, true);\n\n          ctx.beginPath();\n          ctx.save();\n          ctx.arc(radius, radius, radius - 3 * lineWidth, 0, 2 * Math.PI, true);\n\n          ctx.restore();\n          ctx.clip();\n          ctx.fillStyle = color;\n        }\n      } else {\n        if (data >= 0.85) {\n          if (currRange > range / 4) {\n            const t = range * 0.01;\n            currRange -= t;\n          }\n        } else if (data <= 0.1) {\n          if (currRange < range * 1.5) {\n            const t = range * 0.01;\n            currRange += t;\n          }\n        } else {\n          if (currRange <= range) {\n            const t = range * 0.01;\n            currRange += t;\n          }\n          if (currRange >= range) {\n            const t = range * 0.01;\n            currRange -= t;\n          }\n        }\n        if (data - currData > 0) {\n          currData += waveupsp;\n        }\n        if (data - currData < 0) {\n          currData -= waveupsp;\n        }\n\n        sp += 0.07;\n        drawSin();\n      }\n      self.timer = requestAnimationFrame(render);\n    }\n\n    render();\n    // drawSin();\n  }\n\n  private updateRadio(): void {\n    const { offsetWidth } = this.el.parentNode! as HTMLElement;\n    const radio = offsetWidth < this.height ? offsetWidth / this.height : 1;\n    this.renderer.setStyle(this.el, 'transform', `scale(${radio})`);\n  }\n\n  render(): void {\n    this.renderChart(false);\n  }\n\n  private installResizeEvent(): void {\n    this.resize$ = fromEvent(window, 'resize')\n      .pipe(debounceTime(200))\n      .subscribe(() => this.updateRadio());\n  }\n\n  ngOnInit(): void {\n    if (!this.platform.isBrowser) {\n      return;\n    }\n    this.installResizeEvent();\n    this.ngZone.runOutsideAngular(() => setTimeout(() => this.render(), this.delay));\n  }\n\n  ngOnChanges(): void {\n    this.ngZone.runOutsideAngular(() => this.renderChart(true));\n    this.cdr.detectChanges();\n  }\n\n  ngOnDestroy(): void {\n    if (this.timer) {\n      cancelAnimationFrame(this.timer);\n    }\n    if (this.resize$) {\n      this.resize$.unsubscribe();\n    }\n  }\n}\n","<div [style]=\"{ height: height + 'px', width: height + 'px', overflow: 'hidden' }\">\n  <canvas #container class=\"g2-water-wave__canvas\" [attr.width]=\"height * 2\" [attr.height]=\"height * 2\"></canvas>\n</div>\n<div class=\"g2-water-wave__desc\" [style]=\"{ width: height + 'px' }\">\n  @if (title) {\n    <span class=\"g2-water-wave__desc-title\">\n      <ng-container *nzStringTemplateOutlet=\"title\">{{ title }}</ng-container>\n    </span>\n  }\n  <h4 class=\"g2-water-wave__desc-percent\">{{ percent }}%</h4>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\n\nimport { G2WaterWaveComponent } from './water-wave.component';\n\nconst COMPONENTS = [G2WaterWaveComponent];\n\n@NgModule({\n  imports: [CommonModule, NzOutletModule, ...COMPONENTS],\n  exports: COMPONENTS\n})\nexport class G2WaterWaveModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;MAgCa,oBAAoB,CAAA;AACd,IAAA,EAAE,GAAgB,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa;AAClD,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEpC,OAAO,GAAwB,IAAI;AACO,IAAA,IAAI;AAC9C,IAAA,KAAK;;IAI2B,OAAO,GAAG,IAAI;IACf,KAAK,GAAG,CAAC;AACvC,IAAA,KAAK;IACL,KAAK,GAAG,SAAS;IACa,MAAM,GAAG,GAAG;AACZ,IAAA,OAAO;;AAItC,IAAA,WAAW,CAAC,QAAiB,EAAA;QACnC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;QAEnB,IAAI,CAAC,WAAW,EAAE;QAElB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;AAE9C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;;QAEvD,MAAM,IAAI,GAAG,IAAI;AACjB,QAAA,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;AAEhC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAkC;QACtD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAA6B;AAC/D,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK;AAChC,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM;AAClC,QAAA,MAAM,MAAM,GAAG,WAAW,GAAG,CAAC;QAC9B,MAAM,SAAS,GAAG,CAAC;AACnB,QAAA,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS;QAE7B,GAAG,CAAC,SAAS,EAAE;AACf,QAAA,GAAG,CAAC,SAAS,GAAG,SAAS,GAAG,CAAC;AAE7B,QAAA,MAAM,UAAU,GAAG,WAAW,GAAG,SAAS;AAC1C,QAAA,MAAM,IAAI,GAAG,UAAU,GAAG,CAAC;QAC3B,MAAM,OAAO,GAAG,SAAS;AACzB,QAAA,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC;QAClB,IAAI,SAAS,GAAG,KAAK;QACrB,IAAI,QAAQ,GAAG,CAAC;AAChB,QAAA,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;QAEzC,IAAI,QAAQ,GAA+B,EAAE;AAC7C,QAAA,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS;QAC7B,MAAM,YAAY,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACnC,IAAI,UAAU,GAAG,IAAI;QAErB,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE;YACjF,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE;AAEA,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAsB;AACxD,QAAA,GAAG,CAAC,WAAW,GAAG,KAAK;AACvB,QAAA,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AAE1C,QAAA,SAAS,OAAO,GAAA;YACd,GAAG,CAAC,SAAS,EAAE;YACf,GAAG,CAAC,IAAI,EAAE;YAEV,MAAM,QAAQ,GAAwB,EAAE;AACxC,YAAA,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,UAAU,EAAE;gBACrE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,IAAI;gBACnC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS;gBACjC,MAAM,EAAE,GAAG,CAAC;gBACZ,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC;AAE7D,gBAAA,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC;gBAClB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACzB;AAEA,YAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAsB;YAEvD,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,UAAU,EAAE,YAAY,CAAC;AAC9C,YAAA,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC;AACjC,YAAA,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AAExC,YAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC;AAChE,YAAA,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC;AACnC,YAAA,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC;AAC/B,YAAA,GAAG,CAAC,SAAS,GAAG,QAAQ;YACxB,GAAG,CAAC,IAAI,EAAE;YACV,GAAG,CAAC,OAAO,EAAE;QACf;AAEA,QAAA,SAAS,MAAM,GAAA;YACb,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC;AAC9C,YAAA,IAAI,UAAU,IAAI,CAAC,QAAQ,EAAE;AAC3B,gBAAA,IAAI,QAAS,CAAC,MAAM,EAAE;oBACpB,IAAI,OAAO,EAAE;AACX,wBAAA,MAAM,IAAI,GAAG,QAAS,CAAC,KAAK,EAAsB;AAClD,wBAAA,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;wBAC5B,GAAG,CAAC,MAAM,EAAE;oBACd;yBAAO;AACL,wBAAA,KAAK,MAAM,IAAI,IAAI,QAAS,EAAE;AAC5B,4BAAA,GAAG,CAAC,MAAM,CAAC,IAAK,CAAC,CAAC,CAAC,EAAE,IAAK,CAAC,CAAC,CAAC,CAAC;4BAC9B,GAAG,CAAC,MAAM,EAAE;wBACd;wBACA,QAAQ,GAAG,EAAE;oBACf;gBACF;qBAAO;oBACL,UAAU,GAAG,KAAK;AAClB,oBAAA,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;oBAC1C,GAAG,CAAC,MAAM,EAAE;oBACZ,QAAQ,GAAG,IAAI;AAEf,oBAAA,GAAG,CAAC,wBAAwB,GAAG,kBAAkB;oBACjD,GAAG,CAAC,SAAS,EAAE;AACf,oBAAA,GAAG,CAAC,SAAS,GAAG,SAAS;AACzB,oBAAA,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;oBAEjD,GAAG,CAAC,SAAS,EAAE;oBACf,GAAG,CAAC,IAAI,EAAE;oBACV,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;oBAErE,GAAG,CAAC,OAAO,EAAE;oBACb,GAAG,CAAC,IAAI,EAAE;AACV,oBAAA,GAAG,CAAC,SAAS,GAAG,KAAK;gBACvB;YACF;iBAAO;AACL,gBAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,oBAAA,IAAI,SAAS,GAAG,KAAK,GAAG,CAAC,EAAE;AACzB,wBAAA,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI;wBACtB,SAAS,IAAI,CAAC;oBAChB;gBACF;AAAO,qBAAA,IAAI,IAAI,IAAI,GAAG,EAAE;AACtB,oBAAA,IAAI,SAAS,GAAG,KAAK,GAAG,GAAG,EAAE;AAC3B,wBAAA,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI;wBACtB,SAAS,IAAI,CAAC;oBAChB;gBACF;qBAAO;AACL,oBAAA,IAAI,SAAS,IAAI,KAAK,EAAE;AACtB,wBAAA,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI;wBACtB,SAAS,IAAI,CAAC;oBAChB;AACA,oBAAA,IAAI,SAAS,IAAI,KAAK,EAAE;AACtB,wBAAA,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI;wBACtB,SAAS,IAAI,CAAC;oBAChB;gBACF;AACA,gBAAA,IAAI,IAAI,GAAG,QAAQ,GAAG,CAAC,EAAE;oBACvB,QAAQ,IAAI,QAAQ;gBACtB;AACA,gBAAA,IAAI,IAAI,GAAG,QAAQ,GAAG,CAAC,EAAE;oBACvB,QAAQ,IAAI,QAAQ;gBACtB;gBAEA,EAAE,IAAI,IAAI;AACV,gBAAA,OAAO,EAAE;YACX;AACA,YAAA,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC;QAC5C;AAEA,QAAA,MAAM,EAAE;;IAEV;IAEQ,WAAW,GAAA;QACjB,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,UAA0B;AAC1D,QAAA,MAAM,KAAK,GAAG,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;AACvE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,CAAA,MAAA,EAAS,KAAK,CAAA,CAAA,CAAG,CAAC;IACjE;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACzB;IAEQ,kBAAkB,GAAA;QACxB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ;AACtC,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;aACtB,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IACxC;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC5B;QACF;QACA,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAClF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC;AACA,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;QAC5B;IACF;wGA5MW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAaX,gBAAgB,CAAA,EAAA,KAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAChB,eAAe,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAGf,eAAe,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EACf,eAAe,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClDrC,khBAWA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDmBY,+BAA+B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,EAAA,wBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAE9B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAThC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,YACf,aAAa,EAAA,IAAA,EAEjB,EAAE,uBAAuB,EAAE,MAAM,EAAE,EAAA,eAAA,EACxB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,CAAC,+BAA+B,CAAC,EAAA,QAAA,EAAA,khBAAA,EAAA;;sBAUzC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAKvC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACrC,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;;sBACpC;;sBACA;;sBACA,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;;sBACpC,KAAK;uBAAC,EAAE,SAAS,EAAE,eAAe,EAAE;;;AE3CvC,MAAM,UAAU,GAAG,CAAC,oBAAoB,CAAC;MAM5B,iBAAiB,CAAA;wGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAHlB,YAAY,EAAE,cAAc,EAHpB,oBAAoB,aAApB,oBAAoB,CAAA,EAAA,CAAA;yGAM3B,iBAAiB,EAAA,OAAA,EAAA,CAHlB,YAAY,EAAE,cAAc,CAAA,EAAA,CAAA;;4FAG3B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC;AACtD,oBAAA,OAAO,EAAE;AACV,iBAAA;;;ACZD;;AAEG;;;;"}