{"version":3,"file":"daffodil-design-article.mjs","sources":["../../../libs/design/article/src/article-copy-button/copy-button/copy-button.component.ts","../../../libs/design/article/src/article-copy-button/copy-button/copy-button.component.html","../../../libs/design/article/src/article-copy-button/service/copy-button.service.ts","../../../libs/design/article/src/article-heading-link/heading-link/heading-link.component.ts","../../../libs/design/article/src/article-heading-link/heading-link/heading-link.component.html","../../../libs/design/article/src/article-heading-link/service/heading-link.service.ts","../../../libs/design/article/src/article/article.component.ts","../../../libs/design/article/src/article-meta/article-meta.directive.ts","../../../libs/design/article/src/article.module.ts","../../../libs/design/article/src/article.ts","../../../libs/design/article/src/daffodil-design-article.ts"],"sourcesContent":["import {\n  Component,\n  NgZone,\n  ChangeDetectionStrategy,\n  input,\n  signal,\n  OnDestroy,\n  inject,\n} from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport {\n  faCheck,\n  faCopy,\n} from '@fortawesome/free-solid-svg-icons';\n\nimport { DAFF_ICON_BUTTON_COMPONENTS } from '@daffodil/design/button';\n\n/**\n * DaffArticleCopyButtonComponent is a button that copies text content to the clipboard.\n * It provides visual feedback by changing the icon when content is successfully copied.\n *\n * @example\n * ```html\n * <daff-article-copy-button [content]=\"codeSnippet\" />\n * ```\n */\n@Component({\n  selector: 'daff-article-copy-button',\n  templateUrl: './copy-button.component.html',\n  styleUrl: './copy-button.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    FaIconComponent,\n    DAFF_ICON_BUTTON_COMPONENTS,\n  ],\n})\nexport class DaffArticleCopyButtonComponent implements OnDestroy {\n  private timeoutId?: ReturnType<typeof setTimeout>;\n\n  // Content to be copied to clipboard\n  content = input.required<string>();\n\n  protected copied = signal(false);\n\n  protected readonly faCopy = faCopy; // default copy icon\n  protected readonly faCheck = faCheck; // check icon for copied state\n  private _ngZone = inject(NgZone);\n\n  ngOnDestroy() {\n    if (this.timeoutId) {\n      clearTimeout(this.timeoutId);\n    }\n  }\n\n  async copyToClipboard(): Promise<void> {\n    try {\n      // Write content to clipboard\n      await navigator.clipboard.writeText(this.content());\n      this.copied.set(true);\n      clearTimeout(this.timeoutId);\n      this._ngZone.runOutsideAngular(() => {\n        this.timeoutId = setTimeout(() => {\n          this._ngZone.run(() => this.copied.set(false));\n        }, 1500);\n      });\n    } catch (err) {\n      console.error('Failed to copy text: ', err);\n    }\n  }\n\n  get ariaLabel() {\n    return this.copied() ? 'Copied to clipboard' : 'Copy to clipboard';\n  }\n}\n","<button\n  daff-icon-button\n  class=\"daff-article__copy-button\"\n  size=\"sm\"\n  type=\"button\"\n  [attr.aria-label]=\"ariaLabel\"\n  (click)=\"copyToClipboard()\">\n  @if (copied()) {\n    <fa-icon [icon]=\"faCheck\" />\n  } @else {\n    <fa-icon [icon]=\"faCopy\" />\n  }\n</button>\n","import {\n  Injectable,\n  ComponentRef,\n  ViewContainerRef,\n} from '@angular/core';\n\nimport { DaffArticleCopyButtonComponent } from '../copy-button/copy-button.component';\n\ninterface ButtonEntry {\n  buttonRef: ComponentRef<DaffArticleCopyButtonComponent>;\n  preElement: HTMLPreElement;\n}\n\n@Injectable()\nexport class DaffArticleCopyButtonService {\n  private buttons: Array<ButtonEntry> = [];\n\n  /**\n   * Finds all code blocks and adds copy buttons to them.\n   * Skips code blocks with the `nocopy` attribute.\n   * @param hostElement - The host element to search for code blocks.\n   * @param viewContainerRef - The view container to create the copy button components.\n   */\n  addCopyButtonsToCodeBlocks(\n    hostElement: HTMLElement,\n    viewContainerRef: ViewContainerRef,\n  ): void {\n    const codeBlocks = hostElement.querySelectorAll('pre');\n    const encapsulatedElements = Array.from(hostElement.querySelectorAll('.daff-ae'));\n\n    codeBlocks.forEach((pre: HTMLPreElement) => {\n      const code = pre.querySelector('code');\n      if (!code) {\n        return;\n      }\n\n      // Skip if nocopy attribute is present\n      if (pre.hasAttribute('nocopy')) {\n        return;\n      }\n\n      // Skip if inside an article-encapsulated component\n      if (encapsulatedElements.some(ee => ee.contains(pre))) {\n        return;\n      }\n\n      // Skip if already has a copy button\n      if (pre.querySelector('daff-article-copy-button')) {\n        return;\n      }\n\n      const textContent = code.textContent || '';\n\n      // Create the copy button component\n      const buttonRef = viewContainerRef.createComponent(DaffArticleCopyButtonComponent);\n      buttonRef.setInput('content', textContent);\n\n      // Insert button into pre before the code element\n      pre.insertBefore(buttonRef.location.nativeElement, code);\n\n      this.buttons.push({\n        buttonRef,\n        preElement: pre,\n      });\n    });\n  }\n\n  /**\n   * Cleanup copy button references\n   */\n  cleanup(): void {\n    this.buttons.forEach(({ buttonRef }) => {\n      buttonRef.destroy();\n    });\n    this.buttons = [];\n  }\n}\n","import {\n  DOCUMENT,\n  isPlatformBrowser,\n} from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  inject,\n  input,\n  NgZone,\n  OnDestroy,\n  signal,\n  PLATFORM_ID,\n} from '@angular/core';\nimport {\n  Router,\n  RouterLink,\n} from '@angular/router';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport {\n  faLink,\n  faCheck,\n} from '@fortawesome/free-solid-svg-icons';\n\nimport { DaffArticleEncapsulatedDirective } from '@daffodil/design';\nimport { DAFF_ICON_BUTTON_COMPONENTS } from '@daffodil/design/button';\n\n@Component({\n  selector: 'daff-article-heading-link',\n  templateUrl: './heading-link.component.html',\n  styleUrl: './heading-link.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  hostDirectives: [\n    { directive: DaffArticleEncapsulatedDirective },\n  ],\n  imports: [\n    RouterLink,\n    FaIconComponent,\n    DAFF_ICON_BUTTON_COMPONENTS,\n  ],\n})\nexport class DaffArticleHeadingLinkComponent implements OnDestroy {\n  fragment = input.required<string>();\n  label = input.required<string>();\n\n  private timeoutId?: ReturnType<typeof setTimeout>;\n\n  protected copied = signal(false);\n\n  protected readonly faLink = faLink; // default link icon\n  protected readonly faCheck = faCheck; // check icon for copied state\n  private _ngZone = inject(NgZone);\n  private _router = inject(Router);\n  private _platformId = inject(PLATFORM_ID);\n  private _document = inject(DOCUMENT);\n\n  ngOnDestroy() {\n    if (this.timeoutId) {\n      clearTimeout(this.timeoutId);\n    }\n  }\n\n  async copyLink(): Promise<void> {\n    if (!isPlatformBrowser(this._platformId)) {\n      return;\n    }\n\n    try {\n      // Get the URL to fragment\n      const currentUrl = this._router.url.split('#')[0]; // Remove existing fragment if any\n      const fullUrl = `${this._document.defaultView?.location.origin || ''}${currentUrl}#${this.fragment()}`;\n\n      // Write full URL to clipboard\n      await navigator.clipboard.writeText(fullUrl);\n      this.copied.set(true);\n      clearTimeout(this.timeoutId);\n      this._ngZone.runOutsideAngular(() => {\n        this.timeoutId = setTimeout(() => {\n          this._ngZone.run(() => this.copied.set(false));\n        }, 1500);\n      });\n    } catch (err) {\n      console.error('Failed to copy text: ', err);\n    }\n  }\n\n  get ariaLabel() {\n    return this.copied() ? 'Copied link to clipboard' : 'Copy link to clipboard';\n  }\n}\n","<a class=\"daff-article-heading-link__anchor\" routerLink=\".\" [fragment]=\"fragment()\" queryParamsHandling=\"preserve\">\n\t{{ label() }}\n</a>\n<button class=\"daff-article-heading-link__button\" [attr.aria-label]=\"ariaLabel\" (click)=\"copyLink()\">\n\t@if (copied()) {\n\t\t<fa-icon [icon]=\"faCheck\"></fa-icon>\n\t} @else {\n\t\t<fa-icon [icon]=\"faLink\"></fa-icon>\n\t}\n</button>\n","import {\n  Injectable,\n  ComponentRef,\n  ViewContainerRef,\n} from '@angular/core';\n\nimport { DaffArticleHeadingLinkComponent } from '../heading-link/heading-link.component';\n\ninterface LinkEntry {\n  linkRef: ComponentRef<DaffArticleHeadingLinkComponent>;\n  headingElement: HTMLHeadingElement;\n}\n\n@Injectable()\nexport class DaffArticleHeadingLinkService {\n  private links: Array<LinkEntry> = [];\n\n  /**\n   * Finds all h2, h3, and h4 elements and wraps their text content with heading link components.\n   * @param hostElement - The host element to search for heading elements.\n   * @param viewContainerRef - The view container to create the heading link components.\n   */\n  addLinksToHeadings(\n    hostElement: HTMLElement,\n    viewContainerRef: ViewContainerRef,\n  ): void {\n    const headings = hostElement.querySelectorAll('h2, h3, h4');\n    const encapsulatedElements = Array.from(hostElement.querySelectorAll('.daff-ae'));\n\n    headings.forEach((heading: HTMLHeadingElement) => {\n      if (heading.querySelector('daff-article-heading-link')) {\n        return;\n      }\n\n      // Skip if nolink attribute is present\n      if (heading.hasAttribute('nolink')) {\n        return;\n      }\n\n      // Skip if inside an article-encapsulated component\n      if (encapsulatedElements.some(ee => ee.contains(heading))) {\n        return;\n      }\n\n      const textContent = heading.textContent?.trim() || '';\n      const fragment = heading.id || this.generateFragment(textContent);\n\n      // Set the id on the heading if it doesn't have one\n      if (!heading.id) {\n        heading.id = fragment;\n      }\n\n      // Create the heading link component and set its inputs\n      const linkRef = viewContainerRef.createComponent(DaffArticleHeadingLinkComponent);\n      linkRef.setInput('fragment', fragment);\n      linkRef.setInput('label', textContent);\n\n      // Clear the heading's content and append the link component\n      heading.innerHTML = '';\n      heading.appendChild(linkRef.location.nativeElement);\n\n      this.links.push({\n        linkRef,\n        headingElement: heading,\n      });\n    });\n  }\n\n  /**\n   * Cleanup heading link references\n   */\n  cleanup(): void {\n    this.links.forEach(({ linkRef }) => {\n      linkRef.destroy();\n    });\n    this.links = [];\n  }\n\n  /**\n   * Generates a URL-friendly fragment from heading text\n   */\n  private generateFragment(text: string): string {\n    return text\n      .toLowerCase()\n      .replace(/[^\\w\\s-]/g, '')\n      .replace(/\\s+/g, '-')\n      .replace(/-+/g, '-')\n      .trim();\n  }\n}\n","import {\n  Component,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  ElementRef,\n  ViewContainerRef,\n  inject,\n  DestroyRef,\n  afterEveryRender,\n} from '@angular/core';\n\nimport { DaffArticleCopyButtonService } from '../article-copy-button/service/copy-button.service';\nimport { DaffArticleHeadingLinkService } from '../article-heading-link/service/heading-link.service';\n\n/**\n * A component for creating articles within your page.\n */\n@Component({\n  selector: 'daff-article',\n  template: '<ng-content></ng-content>',\n  styleUrl: './article.component.scss',\n  host: {\n    class: 'daff-article',\n    role: 'article',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    DaffArticleCopyButtonService,\n    DaffArticleHeadingLinkService,\n  ],\n})\nexport class DaffArticleComponent {\n  constructor(\n    private copyButtonService: DaffArticleCopyButtonService,\n    private headingLinkService: DaffArticleHeadingLinkService,\n  ) {\n    const elementRef = inject(ElementRef<HTMLElement>);\n    const viewContainerRef = inject(ViewContainerRef);\n\n    afterEveryRender({\n      write: () => {\n        this.copyButtonService.addCopyButtonsToCodeBlocks(elementRef.nativeElement, viewContainerRef);\n        this.headingLinkService.addLinksToHeadings(elementRef.nativeElement, viewContainerRef);\n      },\n    });\n\n    const destroyRef = inject(DestroyRef);\n    destroyRef.onDestroy(() => {\n      this.copyButtonService.cleanup();\n      this.headingLinkService.cleanup();\n    });\n  }\n}\n","/* eslint-disable quote-props */\nimport { Directive } from '@angular/core';\n\n@Directive({\n  selector: '[daffArticleMeta]',\n  host: {\n    'class': 'daff-article__meta',\n  },\n})\nexport class DaffArticleMetaDirective {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffArticleComponent } from './article/article.component';\nimport { DaffArticleMetaDirective } from './article-meta/article-meta.directive';\n\n/**\n * @deprecated in favor of {@link DAFF_ARTICLE_COMPONENTS}. Deprecated in version 0.78.0. Will be removed in version 1.0.0.\n */\n@NgModule({\n  imports: [\n    CommonModule,\n    DaffArticleComponent,\n    DaffArticleMetaDirective,\n  ],\n  exports: [\n    DaffArticleComponent,\n    DaffArticleMetaDirective,\n  ],\n})\nexport class DaffArticleModule { }\n","import { DaffArticleComponent } from './article/article.component';\nimport { DaffArticleMetaDirective } from './article-meta/article-meta.directive';\n\n/**\n * @docs-private\n */\nexport const DAFF_ARTICLE_COMPONENTS = <const> [\n  DaffArticleComponent,\n  DaffArticleMetaDirective,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.DaffArticleCopyButtonService","i2.DaffArticleHeadingLinkService"],"mappings":";;;;;;;;;;;AAiBA;;;;;;;;AAQG;MAWU,8BAA8B,CAAA;AAV3C,IAAA,WAAA,GAAA;;AAcE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAU;AAExB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;AAEb,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC;AAChB,QAAA,IAAA,CAAA,OAAO,GAAG,OAAO,CAAC;AAC7B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AA2BjC,IAAA;IAzBC,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9B;IACF;AAEA,IAAA,MAAM,eAAe,GAAA;AACnB,QAAA,IAAI;;YAEF,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACnD,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5B,YAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;AAClC,gBAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,MAAK;AAC/B,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAChD,CAAC,EAAE,IAAI,CAAC;AACV,YAAA,CAAC,CAAC;QACJ;QAAE,OAAO,GAAG,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC;QAC7C;IACF;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,qBAAqB,GAAG,mBAAmB;IACpE;iIApCW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpC3C,qSAaA,EAAA,MAAA,EAAA,CAAA,4EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDmBI,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIN,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAV1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,eAAA,EAGnB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,eAAe;wBACf,2BAA2B;AAC5B,qBAAA,EAAA,QAAA,EAAA,qSAAA,EAAA,MAAA,EAAA,CAAA,4EAAA,CAAA,EAAA;;;MEpBU,4BAA4B,CAAA;AADzC,IAAA,WAAA,GAAA;QAEU,IAAA,CAAA,OAAO,GAAuB,EAAE;AA6DzC,IAAA;AA3DC;;;;;AAKG;IACH,0BAA0B,CACxB,WAAwB,EACxB,gBAAkC,EAAA;QAElC,MAAM,UAAU,GAAG,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACtD,QAAA,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAEjF,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,GAAmB,KAAI;YACzC,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC;YACtC,IAAI,CAAC,IAAI,EAAE;gBACT;YACF;;AAGA,YAAA,IAAI,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;gBAC9B;YACF;;AAGA,YAAA,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;gBACrD;YACF;;AAGA,YAAA,IAAI,GAAG,CAAC,aAAa,CAAC,0BAA0B,CAAC,EAAE;gBACjD;YACF;AAEA,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE;;YAG1C,MAAM,SAAS,GAAG,gBAAgB,CAAC,eAAe,CAAC,8BAA8B,CAAC;AAClF,YAAA,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;;YAG1C,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC;AAExD,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChB,SAAS;AACT,gBAAA,UAAU,EAAE,GAAG;AAChB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACH,OAAO,GAAA;QACL,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,KAAI;YACrC,SAAS,CAAC,OAAO,EAAE;AACrB,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;IACnB;iIA7DW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qIAA5B,4BAA4B,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC;;;MC4BY,+BAA+B,CAAA;AAd5C,IAAA,WAAA,GAAA;AAeE,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,8EAAU;AACnC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAItB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;AAEb,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC;AAChB,QAAA,IAAA,CAAA,OAAO,GAAG,OAAO,CAAC;AAC7B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAmCrC,IAAA;IAjCC,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9B;IACF;AAEA,IAAA,MAAM,QAAQ,GAAA;QACZ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACxC;QACF;AAEA,QAAA,IAAI;;AAEF,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE,GAAG,UAAU,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,EAAE,CAAA,CAAE;;YAGtG,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC;AAC5C,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5B,YAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;AAClC,gBAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,MAAK;AAC/B,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAChD,CAAC,EAAE,IAAI,CAAC;AACV,YAAA,CAAC,CAAC;QACJ;QAAE,OAAO,GAAG,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC;QAC7C;IACF;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,0BAA0B,GAAG,wBAAwB;IAC9E;iIA/CW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,gCAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzC5C,2YAUA,EAAA,MAAA,EAAA,CAAA,+dAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED0BI,UAAU,oOACV,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIN,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAd3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,eAAA,EAGpB,uBAAuB,CAAC,MAAM,EAAA,cAAA,EAC/B;wBACd,EAAE,SAAS,EAAE,gCAAgC,EAAE;qBAChD,EAAA,OAAA,EACQ;wBACP,UAAU;wBACV,eAAe;wBACf,2BAA2B;AAC5B,qBAAA,EAAA,QAAA,EAAA,2YAAA,EAAA,MAAA,EAAA,CAAA,+dAAA,CAAA,EAAA;;;MEzBU,6BAA6B,CAAA;AAD1C,IAAA,WAAA,GAAA;QAEU,IAAA,CAAA,KAAK,GAAqB,EAAE;AA0ErC,IAAA;AAxEC;;;;AAIG;IACH,kBAAkB,CAChB,WAAwB,EACxB,gBAAkC,EAAA;QAElC,MAAM,QAAQ,GAAG,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC;AAC3D,QAAA,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAEjF,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,OAA2B,KAAI;AAC/C,YAAA,IAAI,OAAO,CAAC,aAAa,CAAC,2BAA2B,CAAC,EAAE;gBACtD;YACF;;AAGA,YAAA,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;gBAClC;YACF;;AAGA,YAAA,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE;gBACzD;YACF;YAEA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;AACrD,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;;AAGjE,YAAA,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE;AACf,gBAAA,OAAO,CAAC,EAAE,GAAG,QAAQ;YACvB;;YAGA,MAAM,OAAO,GAAG,gBAAgB,CAAC,eAAe,CAAC,+BAA+B,CAAC;AACjF,YAAA,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;AACtC,YAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;;AAGtC,YAAA,OAAO,CAAC,SAAS,GAAG,EAAE;YACtB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;AAEnD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACd,OAAO;AACP,gBAAA,cAAc,EAAE,OAAO;AACxB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACH,OAAO,GAAA;QACL,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,KAAI;YACjC,OAAO,CAAC,OAAO,EAAE;AACnB,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;IACjB;AAEA;;AAEG;AACK,IAAA,gBAAgB,CAAC,IAAY,EAAA;AACnC,QAAA,OAAO;AACJ,aAAA,WAAW;AACX,aAAA,OAAO,CAAC,WAAW,EAAE,EAAE;AACvB,aAAA,OAAO,CAAC,MAAM,EAAE,GAAG;AACnB,aAAA,OAAO,CAAC,KAAK,EAAE,GAAG;AAClB,aAAA,IAAI,EAAE;IACX;iIA1EW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qIAA7B,6BAA6B,EAAA,CAAA,CAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC;;;ACCD;;AAEG;MAgBU,oBAAoB,CAAA;IAC/B,WAAA,CACU,iBAA+C,EAC/C,kBAAiD,EAAA;QADjD,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAE1B,MAAM,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC;AAClD,QAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEjD,QAAA,gBAAgB,CAAC;YACf,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,UAAU,CAAC,aAAa,EAAE,gBAAgB,CAAC;gBAC7F,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,UAAU,CAAC,aAAa,EAAE,gBAAgB,CAAC;YACxF,CAAC;AACF,SAAA,CAAC;AAEF,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,QAAA,UAAU,CAAC,SAAS,CAAC,MAAK;AACxB,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE;AAChC,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;AACnC,QAAA,CAAC,CAAC;IACJ;iIApBW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EALpB;YACT,4BAA4B;YAC5B,6BAA6B;AAC9B,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXS,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,w6GAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAa1B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAfhC,SAAS;+BACE,cAAc,EAAA,QAAA,EACd,2BAA2B,EAAA,IAAA,EAE/B;AACJ,wBAAA,KAAK,EAAE,cAAc;AACrB,wBAAA,IAAI,EAAE,SAAS;AAChB,qBAAA,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;wBACT,4BAA4B;wBAC5B,6BAA6B;AAC9B,qBAAA,EAAA,MAAA,EAAA,CAAA,w6GAAA,CAAA,EAAA;;;AC9BH;MASa,wBAAwB,CAAA;iIAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,oBAAoB;AAC9B,qBAAA;AACF,iBAAA;;;ACFD;;AAEG;MAYU,iBAAiB,CAAA;iIAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAT1B,YAAY;YACZ,oBAAoB;AACpB,YAAA,wBAAwB,aAGxB,oBAAoB;YACpB,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAGf,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAT1B,YAAY,CAAA,EAAA,CAAA,CAAA;;2FASH,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAX7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,oBAAoB;wBACpB,wBAAwB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,wBAAwB;AACzB,qBAAA;AACF,iBAAA;;;AChBD;;AAEG;AACI,MAAM,uBAAuB,GAAW;IAC7C,oBAAoB;IACpB,wBAAwB;;;ACR1B;;AAEG;;;;"}