{"version":3,"file":"fundamental-ngx-core-illustrated-message.mjs","sources":["../../../../libs/core/illustrated-message/components/illustrated-message-actions/illustrated-message-actions.component.ts","../../../../libs/core/illustrated-message/components/illustrated-message-figcaption/illustrated-message-figcaption.component.ts","../../../../libs/core/illustrated-message/directives/illustrated-message-text/illustrated-message-text.directive.ts","../../../../libs/core/illustrated-message/directives/illustrated-message-title/illustrated-message-title.directive.ts","../../../../libs/core/illustrated-message/illustrated-message.component.ts","../../../../libs/core/illustrated-message/illustrated-message.component.html","../../../../libs/core/illustrated-message/illustrated-message.module.ts","../../../../libs/core/illustrated-message/fundamental-ngx-core-illustrated-message.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Component representing the actions section of an illustrated message.\n * Typically contains buttons or links for user actions.\n */\n@Component({\n    selector: 'fd-illustrated-message-actions',\n    template: `<ng-content></ng-content>`,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'fd-illustrated-message__actions'\n    }\n})\nexport class IllustratedMessageActionsComponent {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Component representing the figcaption section of an illustrated message.\n * Contains title and text content slots.\n */\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: '[fd-illustrated-message-figcaption]',\n    template: `\n        <ng-content select=\"[fd-illustrated-message-title]\"></ng-content>\n        <ng-content select=\"[fd-illustrated-message-text]\"></ng-content>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'fd-illustrated-message__figcaption'\n    }\n})\nexport class IllustratedMessageFigcaptionComponent {}\n","import { Directive } from '@angular/core';\n\n/**\n * Directive for the text/description element within an illustrated message figcaption.\n */\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[fd-illustrated-message-text]',\n    host: {\n        class: 'fd-illustrated-message__text'\n    }\n})\nexport class IllustratedMessageTextDirective {}\n","import { Directive } from '@angular/core';\n\n/**\n * Directive for the title element within an illustrated message figcaption.\n */\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[fd-illustrated-message-title]',\n    host: {\n        class: 'fd-illustrated-message__title'\n    }\n})\nexport class IllustratedMessageTitleDirective {}\n","import {\n    afterNextRender,\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    effect,\n    ElementRef,\n    inject,\n    input,\n    signal,\n    ViewEncapsulation\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { HasElementRef, RequireOnlyOne } from '@fundamental-ngx/cdk/utils';\nimport { debounceTime, fromEvent } from 'rxjs';\n\n/**\n * Configuration for an SVG item in the illustrated message.\n */\nexport interface SvgItemConfig {\n    /** URL to the SVG sprite file */\n    url: string;\n    /** ID of the symbol within the SVG sprite */\n    id: string;\n    /** Inline SVG file content */\n    file: string;\n}\n\n/**\n * Configuration for different SVG sizes in the illustrated message.\n * Supports both modern (large, medium, small, xsmall) and legacy (scene, dialog, spot, dot) naming.\n */\nexport interface SvgConfig {\n    /** Configuration for large/scene size (>= 682px) */\n    large?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;\n    /** Configuration for medium/dialog size (361px - 681px) */\n    medium?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;\n    /** Configuration for small/spot size (261px - 360px) */\n    small?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;\n    /** Configuration for extra small/dot size (161px - 260px) */\n    xsmall?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;\n\n    /** @deprecated Use 'large' instead */\n    scene?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;\n    /** @deprecated Use 'medium' instead */\n    dialog?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;\n    /** @deprecated Use 'small' instead */\n    spot?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;\n    /** @deprecated Use 'xsmall' instead */\n    dot?: RequireOnlyOne<SvgItemConfig, 'url' | 'file'>;\n}\n\n/**\n * Type of illustrated message based on container width or explicit configuration.\n * Modern types: large, medium, small, xsmall, base\n * Legacy types: scene, dialog, spot, dot\n */\nexport type IllustratedMessageType =\n    | 'large'\n    | 'medium'\n    | 'small'\n    | 'xsmall'\n    | 'base'\n    | 'scene'\n    | 'dialog'\n    | 'spot'\n    | 'dot';\n\n/**\n * Enumeration of illustrated message types with their string values.\n */\nexport enum IllustratedMessageTypes {\n    LARGE = 'large',\n    MEDIUM = 'medium',\n    SMALL = 'small',\n    EXTRA_SMALL = 'xsmall',\n    BASE = 'base',\n    /** @deprecated Use LARGE instead */\n    SCENE = 'scene',\n    /** @deprecated Use MEDIUM instead */\n    DIALOG = 'dialog',\n    /** @deprecated Use SMALL instead */\n    SPOT = 'spot',\n    /** @deprecated Use EXTRA_SMALL instead */\n    DOT = 'dot'\n}\n\nlet illustratedMessageUniqueId = 0;\n\n/**\n * Component representing an illustrated message with responsive SVG illustration.\n *\n * The component automatically adjusts its illustration size based on container width:\n * - Large (>= 682px)\n * - Medium (361px - 681px)\n * - Small (261px - 360px)\n * - Extra Small (161px - 260px)\n * - Base (< 161px)\n *\n * Supports both URL-based SVG sprites and inline SVG content.\n *\n * @example\n * ```html\n * <div fd-illustrated-message [svgConfig]=\"svgConfig\">\n *   <figcaption fd-illustrated-message-figcaption>\n *     <h3>No Data Available</h3>\n *     <p>Please check back later</p>\n *   </figcaption>\n * </div>\n * ```\n */\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: '[fd-illustrated-message]',\n    templateUrl: './illustrated-message.component.html',\n    styleUrl: './illustrated-message.component.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [],\n    host: {\n        '[attr.id]': 'id()',\n        '[class]': 'cssClass()'\n    }\n})\nexport class IllustratedMessageComponent implements HasElementRef {\n    /**\n     * Explicitly set the illustration type. If not provided, type is determined by container width.\n     */\n    readonly type = input<IllustratedMessageType>();\n\n    /**\n     * Configuration for SVG illustrations at different sizes.\n     */\n    readonly svgConfig = input<SvgConfig>();\n\n    /**\n     * Accessible label for the SVG illustration.\n     */\n    readonly svgAriaLabel = input<string | null | undefined>(null);\n\n    /**\n     * When true, hides the SVG illustration entirely.\n     */\n    readonly noSvg = input(false, { transform: booleanAttribute });\n\n    /**\n     * Unique identifier for the illustrated message component.\n     */\n    readonly id = input<string>(`fd-illustrated-message-${++illustratedMessageUniqueId}`);\n\n    /**\n     * Reference to the host element.\n     */\n    readonly elementRef = inject(ElementRef);\n\n    /**\n     * Signal tracking container width for responsive behavior.\n     * @hidden\n     */\n    protected readonly containerWidth = signal<number>(0);\n\n    /**\n     * Normalized illustration type from explicit input or legacy names.\n     * @hidden\n     */\n    protected readonly normalizedInputType = computed(() => {\n        const explicitType = this.type();\n        return explicitType ? this._normalizeType(explicitType) : undefined;\n    });\n\n    /**\n     * Current illustration type based on explicit type or container width.\n     * @hidden\n     */\n    protected readonly currentType = computed(\n        () => this.normalizedInputType() || this._determineTypeByWidth(this.containerWidth())\n    );\n\n    /**\n     * Normalized SVG configuration with legacy keys mapped to modern keys.\n     * @hidden\n     */\n    protected readonly normalizedConfig = computed(() => {\n        const config = this.svgConfig();\n        return config ? this._normalizeSvgConfig(config) : null;\n    });\n\n    /**\n     * Inline SVG content for the current type.\n     * @hidden\n     */\n    protected readonly inlineSvg = computed(() => {\n        const config = this.normalizedConfig();\n        const type = this.currentType();\n        const inlineSvg = config?.[type]?.file;\n        return inlineSvg ? this._sanitizer.bypassSecurityTrustHtml(inlineSvg) : undefined;\n    });\n\n    /**\n     * SVG href attribute for the current type.\n     * @hidden\n     */\n    protected readonly href = computed(() => {\n        const config = this.normalizedConfig();\n        if (!config) {\n            return '';\n        }\n        return this._getHrefByType(this.currentType(), config);\n    });\n\n    /**\n     * Computed CSS class string for the component.\n     * @hidden\n     */\n    protected readonly cssClass = computed(() => {\n        const classes: string[] = ['fd-illustrated-message'];\n\n        const currentTypeValue = this.currentType();\n        if (currentTypeValue) {\n            classes.push(`fd-illustrated-message--${currentTypeValue}`);\n        }\n\n        return classes.join(' ');\n    });\n\n    /** @hidden */\n    private readonly _sanitizer = inject(DomSanitizer);\n\n    /** @hidden */\n    constructor() {\n        // Setup resize listener for responsive behavior with automatic cleanup\n        const resize$ = toSignal(fromEvent(window, 'resize').pipe(debounceTime(200)));\n\n        // Measure container width after render\n        afterNextRender(() => {\n            this._measureContainerWidth();\n        });\n\n        // React to resize events and input changes\n        effect(() => {\n            // Track resize events\n            resize$();\n            this.type();\n            this.svgConfig();\n\n            // Remeasure on changes\n            this._measureContainerWidth();\n        });\n    }\n\n    /**\n     * Measures and updates the container width.\n     * @private\n     */\n    private _measureContainerWidth(): void {\n        const width = this.elementRef.nativeElement.offsetWidth;\n\n        if (this.containerWidth() !== width) {\n            this.containerWidth.set(width);\n        }\n    }\n\n    /**\n     * Determines the illustration type based on container width.\n     * @param width - Container width in pixels\n     * @returns Appropriate illustration type\n     * @private\n     */\n    private _determineTypeByWidth(width: number): IllustratedMessageType {\n        if (width >= 682) {\n            return IllustratedMessageTypes.LARGE;\n        } else if (width >= 361) {\n            return IllustratedMessageTypes.MEDIUM;\n        } else if (width >= 261) {\n            return IllustratedMessageTypes.SMALL;\n        } else if (width >= 161) {\n            return IllustratedMessageTypes.EXTRA_SMALL;\n        }\n\n        return IllustratedMessageTypes.BASE;\n    }\n\n    /**\n     * Normalizes legacy type names to modern equivalents.\n     * @param type - Illustration type to normalize\n     * @returns Normalized illustration type\n     * @private\n     */\n    private _normalizeType(type: IllustratedMessageType): IllustratedMessageType {\n        switch (type) {\n            case 'scene':\n                return 'large';\n            case 'dialog':\n                return 'medium';\n            case 'spot':\n                return 'small';\n            case 'dot':\n                return 'xsmall';\n            default:\n                return type;\n        }\n    }\n\n    /**\n     * Normalizes SVG configuration, mapping legacy keys to modern keys.\n     * @param config - SVG configuration to normalize\n     * @returns Normalized SVG configuration\n     * @private\n     */\n    private _normalizeSvgConfig(config: SvgConfig): SvgConfig {\n        return {\n            large: config.large || config.scene,\n            medium: config.medium || config.dialog,\n            small: config.small || config.spot,\n            xsmall: config.xsmall || config.dot\n        };\n    }\n\n    /**\n     * Constructs the SVG href attribute value for the given type.\n     * @param type - Illustration type\n     * @param svgConfig - Normalized SVG configuration\n     * @returns SVG href string\n     * @private\n     */\n    private _getHrefByType(type: IllustratedMessageType, svgConfig: SvgConfig): string {\n        switch (type) {\n            case 'large':\n                return `${svgConfig.large?.url || ''}#${svgConfig.large?.id}`;\n            case 'medium':\n                return `${svgConfig.medium?.url || ''}#${svgConfig.medium?.id}`;\n            case 'small':\n                return `${svgConfig.small?.url || ''}#${svgConfig.small?.id}`;\n            case 'xsmall':\n                return `${svgConfig.xsmall?.url || ''}#${svgConfig.xsmall?.id}`;\n            default:\n                return '';\n        }\n    }\n}\n","<div class=\"fd-illustrated-message__container\">\n    @if (!noSvg()) {\n        <svg\n            class=\"fd-illustrated-message__illustration\"\n            [attr.aria-label]=\"svgAriaLabel()\"\n            preserveAspectRatio=\"xMidYMid meet\"\n        >\n            <use [attr.href]=\"href()\"></use>\n        </svg>\n    }\n    @if (inlineSvg()) {\n        <div [style.display]=\"'none'\" [innerHTML]=\"inlineSvg()\"></div>\n    }\n    <ng-content select=\"[fd-illustrated-message-figcaption]\"></ng-content>\n</div>\n<ng-content select=\"fd-illustrated-message-actions\"></ng-content>\n","import { NgModule } from '@angular/core';\n\nimport { IllustratedMessageActionsComponent } from './components/illustrated-message-actions/illustrated-message-actions.component';\nimport { IllustratedMessageComponent } from './illustrated-message.component';\n\nimport { IllustratedMessageFigcaptionComponent } from './components/illustrated-message-figcaption/illustrated-message-figcaption.component';\nimport { IllustratedMessageTextDirective } from './directives/illustrated-message-text/illustrated-message-text.directive';\nimport { IllustratedMessageTitleDirective } from './directives/illustrated-message-title/illustrated-message-title.directive';\n\nconst components = [\n    IllustratedMessageComponent,\n    IllustratedMessageActionsComponent,\n    IllustratedMessageFigcaptionComponent,\n    IllustratedMessageTextDirective,\n    IllustratedMessageTitleDirective\n];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [...components],\n    exports: [...components]\n})\nexport class IllustratedMessageModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAEA;;;AAGG;MASU,kCAAkC,CAAA;8GAAlC,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,uJANjC,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAM5B,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAR9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;;;ACXD;;;AAGG;MAaU,qCAAqC,CAAA;8GAArC,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qCAAqC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATpC;;;AAGT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAMQ,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAZjD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,QAAQ,EAAE;;;AAGT,IAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;;;ACfD;;AAEG;MAQU,+BAA+B,CAAA;8GAA/B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAP3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;;;ACTD;;AAEG;MAQU,gCAAgC,CAAA;8GAAhC,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAP5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;;;AC2DD;;AAEG;IACS;AAAZ,CAAA,UAAY,uBAAuB,EAAA;AAC/B,IAAA,uBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,uBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,uBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,uBAAA,CAAA,aAAA,CAAA,GAAA,QAAsB;AACtB,IAAA,uBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;;AAEb,IAAA,uBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;;AAEf,IAAA,uBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;;AAEjB,IAAA,uBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;;AAEb,IAAA,uBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACf,CAAC,EAdW,uBAAuB,KAAvB,uBAAuB,GAAA,EAAA,CAAA,CAAA;AAgBnC,IAAI,0BAA0B,GAAG,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;;AAqBG;MAcU,2BAA2B,CAAA;;AAyGpC,IAAA,WAAA,GAAA;AAxGA;;AAEG;QACM,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA0B;AAE/C;;AAEG;QACM,IAAA,CAAA,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAa;AAEvC;;AAEG;AACM,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAA4B,IAAI,wDAAC;AAE9D;;AAEG;QACM,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,KAAK,kDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE9D;;AAEG;QACM,IAAA,CAAA,EAAE,GAAG,KAAK,CAAS,CAAA,uBAAA,EAA0B,EAAE,0BAA0B,CAAA,CAAE,8CAAC;AAErF;;AAEG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAExC;;;AAGG;AACgB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAS,CAAC,0DAAC;AAErD;;;AAGG;AACgB,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AACnD,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE;AAChC,YAAA,OAAO,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,SAAS;AACvE,QAAA,CAAC,+DAAC;AAEF;;;AAGG;QACgB,IAAA,CAAA,WAAW,GAAG,QAAQ,CACrC,MAAM,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACxF;AAED;;;AAGG;AACgB,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAChD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AAC/B,YAAA,OAAO,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,IAAI;AAC3D,QAAA,CAAC,4DAAC;AAEF;;;AAGG;AACgB,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACzC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACtC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;YAC/B,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,IAAI;AACtC,YAAA,OAAO,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,SAAS;AACrF,QAAA,CAAC,qDAAC;AAEF;;;AAGG;AACgB,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AACpC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE;YACtC,IAAI,CAAC,MAAM,EAAE;AACT,gBAAA,OAAO,EAAE;YACb;YACA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC;AAC1D,QAAA,CAAC,gDAAC;AAEF;;;AAGG;AACgB,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACxC,YAAA,MAAM,OAAO,GAAa,CAAC,wBAAwB,CAAC;AAEpD,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE;YAC3C,IAAI,gBAAgB,EAAE;AAClB,gBAAA,OAAO,CAAC,IAAI,CAAC,2BAA2B,gBAAgB,CAAA,CAAE,CAAC;YAC/D;AAEA,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5B,QAAA,CAAC,oDAAC;;AAGe,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC;;AAK9C,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;;QAG7E,eAAe,CAAC,MAAK;YACjB,IAAI,CAAC,sBAAsB,EAAE;AACjC,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;;AAER,YAAA,OAAO,EAAE;YACT,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,SAAS,EAAE;;YAGhB,IAAI,CAAC,sBAAsB,EAAE;AACjC,QAAA,CAAC,CAAC;IACN;AAEA;;;AAGG;IACK,sBAAsB,GAAA;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW;AAEvD,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK,KAAK,EAAE;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;QAClC;IACJ;AAEA;;;;;AAKG;AACK,IAAA,qBAAqB,CAAC,KAAa,EAAA;AACvC,QAAA,IAAI,KAAK,IAAI,GAAG,EAAE;YACd,OAAO,uBAAuB,CAAC,KAAK;QACxC;AAAO,aAAA,IAAI,KAAK,IAAI,GAAG,EAAE;YACrB,OAAO,uBAAuB,CAAC,MAAM;QACzC;AAAO,aAAA,IAAI,KAAK,IAAI,GAAG,EAAE;YACrB,OAAO,uBAAuB,CAAC,KAAK;QACxC;AAAO,aAAA,IAAI,KAAK,IAAI,GAAG,EAAE;YACrB,OAAO,uBAAuB,CAAC,WAAW;QAC9C;QAEA,OAAO,uBAAuB,CAAC,IAAI;IACvC;AAEA;;;;;AAKG;AACK,IAAA,cAAc,CAAC,IAA4B,EAAA;QAC/C,QAAQ,IAAI;AACR,YAAA,KAAK,OAAO;AACR,gBAAA,OAAO,OAAO;AAClB,YAAA,KAAK,QAAQ;AACT,gBAAA,OAAO,QAAQ;AACnB,YAAA,KAAK,MAAM;AACP,gBAAA,OAAO,OAAO;AAClB,YAAA,KAAK,KAAK;AACN,gBAAA,OAAO,QAAQ;AACnB,YAAA;AACI,gBAAA,OAAO,IAAI;;IAEvB;AAEA;;;;;AAKG;AACK,IAAA,mBAAmB,CAAC,MAAiB,EAAA;QACzC,OAAO;AACH,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK;AACnC,YAAA,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM;AACtC,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI;AAClC,YAAA,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;SACnC;IACL;AAEA;;;;;;AAMG;IACK,cAAc,CAAC,IAA4B,EAAE,SAAoB,EAAA;QACrE,QAAQ,IAAI;AACR,YAAA,KAAK,OAAO;AACR,gBAAA,OAAO,CAAA,EAAG,SAAS,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE,CAAA,CAAA,EAAI,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE;AACjE,YAAA,KAAK,QAAQ;AACT,gBAAA,OAAO,CAAA,EAAG,SAAS,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,CAAA,CAAA,EAAI,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE;AACnE,YAAA,KAAK,OAAO;AACR,gBAAA,OAAO,CAAA,EAAG,SAAS,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE,CAAA,CAAA,EAAI,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE;AACjE,YAAA,KAAK,QAAQ;AACT,gBAAA,OAAO,CAAA,EAAG,SAAS,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,CAAA,CAAA,EAAI,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE;AACnE,YAAA;AACI,gBAAA,OAAO,EAAE;;IAErB;8GAtNS,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,ixBC9HxC,mlBAgBA,EAAA,MAAA,EAAA,CAAA,6yQAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FD8Ga,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAbvC,SAAS;+BAEI,0BAA0B,EAAA,aAAA,EAGrB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,EAAE,EAAA,IAAA,EACL;AACF,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,SAAS,EAAE;AACd,qBAAA,EAAA,QAAA,EAAA,mlBAAA,EAAA,MAAA,EAAA,CAAA,6yQAAA,CAAA,EAAA;;;AEnHL,MAAM,UAAU,GAAG;IACf,2BAA2B;IAC3B,kCAAkC;IAClC,qCAAqC;IACrC,+BAA+B;IAC/B;CACH;AAED;;;AAGG;MAKU,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,YAfjC,2BAA2B;YAC3B,kCAAkC;YAClC,qCAAqC;YACrC,+BAA+B;AAC/B,YAAA,gCAAgC,aAJhC,2BAA2B;YAC3B,kCAAkC;YAClC,qCAAqC;YACrC,+BAA+B;YAC/B,gCAAgC,CAAA,EAAA,CAAA,CAAA;+GAWvB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;AACxB,oBAAA,OAAO,EAAE,CAAC,GAAG,UAAU;AAC1B,iBAAA;;;ACxBD;;AAEG;;;;"}