@wawjs/ngx-prime 22.0.2 → 22.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"wawjs-ngx-prime-fileupload.mjs","sources":["../../src/fileupload/style/fileuploadstyle.ts","../../src/fileupload/nativefileupload.ts","../../src/fileupload/fileupload.ts","../../src/fileupload/wawjs-ngx-prime-fileupload.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style } from '@wawjs/css-prime-styles/fileupload';\nimport { BaseStyle } from '@wawjs/ngx-prime/base';\n\nconst nativeStyle = `\ninput[pFileUpload] { cursor: pointer; }\ninput[pFileUpload].p-invalid { outline: 1px solid dt('fileupload.invalid.border.color'); outline-offset: 2px; }\ninput[pFileUpload]:disabled { cursor: default; opacity: .6; }\n`;\n\nconst classes = {\n input: 'p-fileupload-input p-component',\n root: ({ instance }) => `p-fileupload p-fileupload-${instance.mode()} p-component`,\n header: 'p-fileupload-header',\n pcChooseButton: 'p-fileupload-choose-button',\n pcUploadButton: 'p-fileupload-upload-button',\n pcCancelButton: 'p-fileupload-cancel-button',\n content: 'p-fileupload-content',\n fileList: 'p-fileupload-file-list',\n file: 'p-fileupload-file',\n fileThumbnail: 'p-fileupload-file-thumbnail',\n fileInfo: 'p-fileupload-file-info',\n fileName: 'p-fileupload-file-name',\n fileSize: 'p-fileupload-file-size',\n pcFileBadge: 'p-fileupload-file-badge',\n fileActions: 'p-fileupload-file-actions',\n pcFileRemoveButton: 'p-fileupload-file-remove-button',\n basicContent: 'p-fileupload-basic-content'\n};\n\n@Injectable()\nexport class FileUploadStyle extends BaseStyle {\n name = 'fileupload';\n\n style = `${style}\\n${nativeStyle}`;\n\n classes = classes;\n}\n\n/**\n *\n * FileUpload is an advanced uploader with dragdrop support, multi file uploads, auto uploading, progress tracking and validations.\n *\n * [Live Demo](https://www.ngx-prime.org/fileupload/)\n *\n * @module fileuploadstyle\n *\n */\n\nexport enum FileUploadClasses {\n /**\n * Class name of the root element\n */\n root = 'p-fileupload',\n /**\n * Class name of the header element\n */\n header = 'p-fileupload-header',\n /**\n * Class name of the choose button element\n */\n pcChooseButton = 'p-fileupload-choose-button',\n /**\n * Class name of the upload button element\n */\n pcUploadButton = 'p-fileupload-upload-button',\n /**\n * Class name of the cancel button element\n */\n pcCancelButton = 'p-fileupload-cancel-button',\n /**\n * Class name of the content element\n */\n content = 'p-fileupload-content',\n /**\n * Class name of the file list element\n */\n fileList = 'p-fileupload-file-list',\n /**\n * Class name of the file element\n */\n file = 'p-fileupload-file',\n /**\n * Class name of the file thumbnail element\n */\n fileThumbnail = 'p-fileupload-file-thumbnail',\n /**\n * Class name of the file info element\n */\n fileInfo = 'p-fileupload-file-info',\n /**\n * Class name of the file name element\n */\n fileName = 'p-fileupload-file-name',\n /**\n * Class name of the file size element\n */\n fileSize = 'p-fileupload-file-size',\n /**\n * Class name of the file badge element\n */\n pcFileBadge = 'p-fileupload-file-badge',\n /**\n * Class name of the file actions element\n */\n fileActions = 'p-fileupload-file-actions',\n /**\n * Class name of the file remove button element\n */\n pcFileRemoveButton = 'p-fileupload-file-remove-button',\n /**\n * Class name of the content in basic mode\n */\n basicContent = 'p-fileupload-basic-content'\n}\n","import { booleanAttribute, DestroyRef, Directive, ElementRef, inject, input, model, numberAttribute, OnInit, output } from '@angular/core';\nimport { BaseModelHolder } from '@wawjs/ngx-prime/basemodelholder';\nimport { Bind } from '@wawjs/ngx-prime/bind';\nimport type { FileSelectEvent, FileUploadPassThrough, NativeFileUploadValidationErrorEvent } from '@wawjs/ngx-prime/types/fileupload';\nimport { FileUploadStyle } from './style/fileuploadstyle';\n\n/**\n * Adds Prime state attributes to a native file input and emits its selected files.\n * The browser remains responsible for file selection and form integration.\n *\n * @group Components\n */\n@Directive({\n selector: \"input[type='file'][pFileUpload]\",\n standalone: true,\n host: {\n '[class]': \"cx('input')\",\n '[class.p-invalid]': 'invalid()',\n '[attr.data-pc-name]': \"'fileupload'\",\n '[attr.data-pc-section]': \"'input'\",\n '[attr.data-p-invalid]': 'invalid() || null',\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.aria-labelledby]': 'ariaLabelledBy() || null',\n '[attr.aria-describedby]': 'ariaDescribedBy() || null',\n '[attr.id]': 'inputId() || null',\n '[attr.name]': 'name() || null',\n '[attr.accept]': 'accept() || null',\n '[multiple]': 'multiple()',\n '[attr.capture]': 'capture() || null',\n '[attr.webkitdirectory]': 'webkitdirectory() || null',\n '[attr.tabindex]': 'tabindex() ?? null',\n '[autofocus]': 'autofocus()',\n '[disabled]': 'disabled()',\n '[required]': 'required()',\n '(change)': 'onChange($event)',\n '(focus)': 'onFocus.emit($event)',\n '(blur)': 'onInputBlur($event)'\n },\n providers: [FileUploadStyle],\n hostDirectives: [Bind],\n exportAs: 'pFileUpload'\n})\nexport class FileUploadDirective extends BaseModelHolder<FileUploadPassThrough> {\n componentName = 'FileUpload';\n\n private readonly element = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n private readonly bindDirectiveInstance = inject(Bind, { self: true });\n\n _componentStyle = inject(FileUploadStyle);\n\n invalid = input(false, { transform: booleanAttribute });\n disabled = input(false, { transform: booleanAttribute });\n required = input(false, { transform: booleanAttribute });\n accept = input<string>();\n multiple = input(false, { transform: booleanAttribute });\n capture = input<string>();\n webkitdirectory = input(false, { transform: booleanAttribute });\n inputId = input<string>();\n name = input<string>();\n tabindex = input<number, unknown>(undefined, { transform: numberAttribute });\n autofocus = input(false, { transform: booleanAttribute });\n ariaLabel = input<string>();\n ariaLabelledBy = input<string>();\n ariaDescribedBy = input<string>();\n maxFileSize = input<number, unknown>(undefined, { transform: numberAttribute });\n fileLimit = input<number, unknown>(undefined, { transform: numberAttribute });\n allowDuplicate = input(false, { transform: booleanAttribute });\n /** Signal Forms value contract. Browsers only permit this value to be set by user selection. */\n value = model<File[]>([]);\n touch = output<void>();\n filesSelected = output<File[]>();\n onSelect = output<FileSelectEvent>();\n onError = output<NativeFileUploadValidationErrorEvent>();\n onClear = output<void>();\n onFocus = output<FocusEvent>();\n onBlur = output<FocusEvent>();\n\n onAfterViewChecked() {\n this.bindDirectiveInstance.setAttrs(this.ptm('input'));\n }\n\n onChange(event: Event) {\n const files = Array.from(this.element.nativeElement.files ?? []);\n const validationError = this.getValidationError(files);\n\n if (validationError) {\n this.element.nativeElement.value = '';\n this.value.set([]);\n this.writeModelValue([]);\n this.onError.emit({ originalEvent: event, files, reason: validationError });\n\n return;\n }\n\n this.value.set(files);\n this.filesSelected.emit(files);\n this.writeModelValue(files);\n this.onSelect.emit({ originalEvent: event, files, currentFiles: files });\n }\n\n clear() {\n if (this.disabled()) return;\n\n this.element.nativeElement.value = '';\n this.value.set([]);\n this.writeModelValue([]);\n this.filesSelected.emit([]);\n this.onClear.emit();\n }\n\n focus(options?: FocusOptions) {\n this.element.nativeElement.focus(options);\n }\n\n choose() {\n if (!this.disabled()) this.element.nativeElement.click();\n }\n\n onInputBlur(event: FocusEvent) {\n this.touch.emit();\n this.onBlur.emit(event);\n }\n\n private getValidationError(files: File[]): NativeFileUploadValidationErrorEvent['reason'] | undefined {\n const fileLimit = this.fileLimit();\n const maxFileSize = this.maxFileSize();\n\n if (fileLimit !== undefined && files.length > fileLimit) return 'fileLimit';\n if (maxFileSize !== undefined && files.some((file) => file.size > maxFileSize)) return 'maxFileSize';\n if (!this.allowDuplicate() && new Set(files.map((file) => `${file.name}:${file.size}:${file.lastModified}`)).size !== files.length) return 'duplicate';\n\n return undefined;\n }\n}\n\n/** Clears the selected files of a native `pFileUpload` input. */\n@Directive({\n selector: 'button[pFileUploadClear]',\n standalone: true,\n host: {\n type: 'button',\n '[disabled]': 'uploader().disabled()',\n '(click)': 'uploader().clear()'\n }\n})\nexport class FileUploadClearDirective {\n uploader = input.required<FileUploadDirective>({ alias: 'pFileUploadClear' });\n}\n\n/** Holds an explicit native upload queue and optionally sends it with XMLHttpRequest. */\n@Directive({ selector: '[pFileUploadQueue]', standalone: true, exportAs: 'pFileUploadQueue', host: { '[attr.data-pc-name]': \"'fileupload'\", '[attr.data-pc-section]': \"'queue'\", '[attr.aria-busy]': 'uploading() || null' } })\nexport class FileUploadQueueDirective implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n private request?: XMLHttpRequest;\n uploader = input.required<FileUploadDirective>({ alias: 'pFileUploadQueue' });\n url = input<string>();\n method = input<'post' | 'put'>('post');\n name = input('files');\n headers = input<Record<string, string>>({});\n withCredentials = input(false, { transform: booleanAttribute });\n auto = input(false, { transform: booleanAttribute });\n disabled = input(false, { transform: booleanAttribute });\n files = model<File[]>([]);\n uploadedFiles = model<File[]>([]);\n progress = model(0);\n uploading = model(false);\n onSelect = output<File[]>();\n onBeforeUpload = output<FormData>();\n onSend = output<{ originalEvent: Event; formData: FormData }>();\n onProgress = output<{ originalEvent: ProgressEvent; progress: number }>();\n onUpload = output<{ originalEvent: Event; files: File[] }>();\n onError = output<{ originalEvent?: Event; files: File[]; error?: unknown }>();\n onRemove = output<{ originalEvent?: Event; file: File }>();\n onClear = output<void>();\n ngOnInit() {\n const subscription = this.uploader().filesSelected.subscribe((files) => this.add(files));\n\n this.destroyRef.onDestroy(() => subscription.unsubscribe());\n }\n add(files: File[]) {\n if (this.disabled()) return;\n const next = [...this.files()];\n\n for (const file of files) if (!next.some((item) => item.name === file.name && item.size === file.size && item.lastModified === file.lastModified)) next.push(file);\n this.files.set(next);\n this.onSelect.emit(next);\n if (this.auto() && next.length) this.upload();\n }\n remove(file: File, event?: Event) {\n this.files.set(this.files().filter((item) => item !== file));\n this.onRemove.emit({ originalEvent: event, file });\n }\n clear() {\n if (this.uploading()) this.cancel();\n this.files.set([]);\n this.progress.set(0);\n this.uploader().clear();\n this.onClear.emit();\n }\n choose() {\n this.uploader().choose();\n }\n cancel() {\n this.request?.abort();\n this.request = undefined;\n this.uploading.set(false);\n this.progress.set(0);\n }\n upload() {\n const files = this.files(),\n url = this.url();\n\n if (!files.length || !url || this.disabled() || this.uploading()) return;\n const formData = new FormData();\n\n files.forEach((file) => formData.append(this.name(), file, file.name));\n this.onBeforeUpload.emit(formData);\n const request = (this.request = new XMLHttpRequest());\n\n request.open(this.method().toUpperCase(), url);\n request.withCredentials = this.withCredentials();\n Object.entries(this.headers()).forEach(([key, value]) => request.setRequestHeader(key, value));\n\n request.upload.onprogress = (event) => {\n const progress = event.lengthComputable ? Math.round((event.loaded * 100) / event.total) : 0;\n\n this.progress.set(progress);\n this.onProgress.emit({ originalEvent: event, progress });\n };\n\n request.onload = () => {\n this.uploading.set(false);\n if (request.status >= 200 && request.status < 300) {\n this.uploadedFiles.set([...this.uploadedFiles(), ...files]);\n this.files.set([]);\n this.onUpload.emit({ originalEvent: new Event('load'), files });\n } else this.onError.emit({ originalEvent: new Event('error'), files });\n this.progress.set(0);\n this.request = undefined;\n };\n\n request.onerror = () => {\n this.uploading.set(false);\n this.onError.emit({ originalEvent: new Event('error'), files });\n this.request = undefined;\n };\n\n this.uploading.set(true);\n request.send(formData);\n this.onSend.emit({ originalEvent: new Event('send'), formData });\n }\n}\n@Directive({ selector: 'button[pFileUploadChoose]', standalone: true, host: { type: 'button', '(click)': 'queue().choose()' } })\nexport class FileUploadChooseDirective {\n queue = input.required<FileUploadQueueDirective>({ alias: 'pFileUploadChoose' });\n}\n@Directive({ selector: 'button[pFileUploadUpload]', standalone: true, host: { type: 'button', '[disabled]': 'queue().uploading() || !queue().files().length', '(click)': 'queue().upload()' } })\nexport class FileUploadUploadDirective {\n queue = input.required<FileUploadQueueDirective>({ alias: 'pFileUploadUpload' });\n}\n@Directive({ selector: 'button[pFileUploadCancel]', standalone: true, host: { type: 'button', '[disabled]': '!queue().uploading()', '(click)': 'queue().cancel()' } })\nexport class FileUploadCancelDirective {\n queue = input.required<FileUploadQueueDirective>({ alias: 'pFileUploadCancel' });\n}\n@Directive({ selector: '[pFileUploadDropZone]', standalone: true, host: { '(dragover)': 'onDragOver($event)', '(drop)': 'onDrop($event)' } })\nexport class FileUploadDropZoneDirective {\n queue = input.required<FileUploadQueueDirective>({ alias: 'pFileUploadDropZone' });\n onDragOver(event: DragEvent) {\n event.preventDefault();\n }\n onDrop(event: DragEvent) {\n event.preventDefault();\n this.queue().add(Array.from(event.dataTransfer?.files ?? []));\n }\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { HttpClient, HttpEvent, HttpEventType, HttpHeaders } from '@angular/common/http';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n input,\n isDevMode,\n NgModule,\n NgZone,\n numberAttribute,\n output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n contentChild,\n viewChild,\n contentChildren\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { addClass, removeClass } from '@wawjs/css-prime-utils';\nimport { BlockableUI, PrimeTemplate, SharedModule, TranslationKeys } from '@wawjs/ngx-prime/api';\nimport { Badge } from '@wawjs/ngx-prime/badge';\nimport { BaseComponent, PARENT_INSTANCE } from '@wawjs/ngx-prime/basecomponent';\nimport { Bind } from '@wawjs/ngx-prime/bind';\nimport { Button, ButtonProps } from '@wawjs/ngx-prime/button';\nimport { PlusIcon, TimesIcon, UploadIcon } from '@wawjs/ngx-prime/icons';\nimport { Message } from '@wawjs/ngx-prime/message';\nimport { ProgressBar } from '@wawjs/ngx-prime/progressbar';\nimport { VoidListener } from '@wawjs/ngx-prime/ts-helpers';\nimport {\n FileBeforeUploadEvent,\n FileProgressEvent,\n FileRemoveEvent,\n FileSelectEvent,\n FileSendEvent,\n FileUploadContentTemplateContext,\n FileUploadErrorEvent,\n FileUploadEvent,\n FileUploadFileLabelTemplateContext,\n FileUploadHandlerEvent,\n FileUploadHeaderTemplateContext,\n FileUploadPassThrough,\n RemoveUploadedFileEvent\n} from '@wawjs/ngx-prime/types/fileupload';\nimport { Subscription } from 'rxjs';\nimport { FileUploadStyle } from './style/fileuploadstyle';\nimport { FileUploadCancelDirective, FileUploadChooseDirective, FileUploadClearDirective, FileUploadDirective, FileUploadDropZoneDirective, FileUploadQueueDirective, FileUploadUploadDirective } from './nativefileupload';\n\nconst FILEUPLOAD_INSTANCE = new InjectionToken<FileUpload>('FILEUPLOAD_INSTANCE');\n\n@Component({\n selector: '[pFileContent]',\n standalone: true,\n template: `@for (file of files(); track file?.name + '-' + $index; let index = $index) {\n <div [class]=\"cx('file')\" [pBind]=\"$pcFileUpload.ptm('file')\">\n <img role=\"presentation\" [class]=\"cx('fileThumbnail')\" [attr.alt]=\"file.name\" [src]=\"file.objectURL\" [width]=\"previewWidth()\" [pBind]=\"$pcFileUpload.ptm('fileThumbnail')\" />\n <div [class]=\"cx('fileInfo')\" [pBind]=\"$pcFileUpload.ptm('fileInfo')\">\n <div [class]=\"cx('fileName')\" [pBind]=\"$pcFileUpload.ptm('fileName')\">{{ file.name }}</div>\n <span [class]=\"cx('fileSize')\" [pBind]=\"$pcFileUpload.ptm('fileSize')\">{{ formatSize(file.size) }}</span>\n </div>\n <p-badge [value]=\"badgeValue()\" [severity]=\"badgeSeverity()\" [class]=\"cx('pcFileBadge')\" [pt]=\"$pcFileUpload.ptm('pcFileBadge')\" [unstyled]=\"unstyled()\" />\n <div [class]=\"cx('fileActions')\" [pBind]=\"$pcFileUpload.ptm('fileActions')\">\n <p-button (onClick)=\"onRemoveClick($event, index)\" [styleClass]=\"cx('pcFileRemoveButton')\" text rounded severity=\"danger\" [pt]=\"$pcFileUpload.ptm('pcFileRemoveButton')\" [unstyled]=\"unstyled()\">\n <ng-template #icon let-iconClass=\"class\">\n @if (fileRemoveIconTemplate()) {\n <ng-template *ngTemplateOutlet=\"fileRemoveIconTemplate(); context: { class: iconClass, file: file, index: index }\"></ng-template>\n } @else {\n <svg data-p-icon=\"times\" [class]=\"iconClass\" [attr.aria-hidden]=\"true\" />\n }\n </ng-template>\n </p-button>\n </div>\n </div>\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [FileUploadStyle],\n imports: [CommonModule, Badge, Button, TimesIcon, Bind]\n})\nexport class FileContent extends BaseComponent {\n _componentStyle = inject(FileUploadStyle);\n\n $pcFileUpload = inject(FILEUPLOAD_INSTANCE);\n\n onRemove = output<any>();\n\n files = input<any>();\n\n badgeSeverity = input<'secondary' | 'info' | 'success' | 'warn' | 'danger' | 'contrast'>('warn');\n\n badgeValue = input<string>();\n\n previewWidth = input<number>(50);\n\n fileRemoveIconTemplate = input<any>();\n\n onRemoveClick(event: any, index: number) {\n this.onRemove.emit({ event, index });\n }\n\n formatSize(bytes: number) {\n const k = 1024;\n const dm = 3;\n const sizes = this.config.getTranslation(TranslationKeys.FILE_SIZE_TYPES);\n\n if (bytes === 0) {\n return `0 ${sizes[0]}`;\n }\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n const formattedSize = (bytes / Math.pow(k, i)).toFixed(dm);\n\n return `${formattedSize} ${sizes[i]}`;\n }\n}\n/**\n * FileUpload is an advanced uploader with dragdrop support, multi file uploads, auto uploading, progress tracking and validations.\n *\n * @deprecated since v22. Compose `pFileUpload`, `pFileUploadQueue`, and its companion directives instead. This component remains available through v22 for compatibility.\n * @group Components\n */\n@Component({\n selector: 'p-fileupload, p-fileUpload',\n standalone: true,\n imports: [CommonModule, Button, ProgressBar, Message, PlusIcon, UploadIcon, TimesIcon, SharedModule, FileContent, Bind],\n template: `\n @if (mode() === 'advanced') {\n <div [class]=\"cn(cx('root'), styleClass())\" [ngStyle]=\"style()\" [pBind]=\"ptm('root')\">\n <input\n [attr.aria-label]=\"browseFilesLabel\"\n #advancedfileinput\n type=\"file\"\n (change)=\"onFileSelect($event)\"\n [multiple]=\"multiple()\"\n [accept]=\"accept()\"\n [disabled]=\"disabled() || isChooseDisabled()\"\n [attr.title]=\"''\"\n [pBind]=\"ptm('input')\"\n />\n <div [class]=\"cx('header')\" [pBind]=\"ptm('header')\">\n @if (!headerTemplate() && !_headerTemplate) {\n <p-button\n [styleClass]=\"cn(cx('pcChooseButton'), chooseStyleClass())\"\n [disabled]=\"disabled() || isChooseDisabled()\"\n (focus)=\"onFocus()\"\n [label]=\"chooseButtonLabel\"\n (blur)=\"onBlur()\"\n (onClick)=\"choose()\"\n (keydown.enter)=\"choose()\"\n [buttonProps]=\"chooseButtonProps()\"\n [pt]=\"ptm('pcChooseButton')\"\n [unstyled]=\"unstyled()\"\n >\n <input\n [attr.aria-label]=\"browseFilesLabel\"\n #advancedfileinput\n type=\"file\"\n (change)=\"onFileSelect($event)\"\n [multiple]=\"multiple()\"\n [accept]=\"accept()\"\n [disabled]=\"disabled() || isChooseDisabled()\"\n [attr.title]=\"''\"\n [pBind]=\"ptm('input')\"\n />\n <ng-template #icon>\n @if (chooseIcon()) {\n <span [class]=\"chooseIcon()\" [attr.aria-label]=\"true\" [pBind]=\"ptm('pcChooseButton')?.icon\"></span>\n }\n @if (!chooseIcon()) {\n <ng-container>\n @if (!chooseIconTemplate && !_chooseIconTemplate) {\n <svg data-p-icon=\"plus\" [attr.aria-label]=\"true\" [pBind]=\"ptm('pcChooseButton')?.icon\" />\n }\n @if (chooseIconTemplate || _chooseIconTemplate) {\n <span [attr.aria-label]=\"true\" [pBind]=\"ptm('pcChooseButton')?.icon\">\n <ng-template *ngTemplateOutlet=\"chooseIconTemplate || _chooseIconTemplate\"></ng-template>\n </span>\n }\n </ng-container>\n }\n </ng-template>\n </p-button>\n\n @if (!auto() && showUploadButton()) {\n <p-button\n [label]=\"uploadButtonLabel\"\n (onClick)=\"upload()\"\n [disabled]=\"!hasFiles() || isFileLimitExceeded()\"\n [styleClass]=\"cn(cx('pcUploadButton'), uploadStyleClass())\"\n [buttonProps]=\"uploadButtonProps()\"\n [pt]=\"ptm('pcUploadButton')\"\n [unstyled]=\"unstyled()\"\n >\n <ng-template #icon>\n @if (uploadIcon()) {\n <span [ngClass]=\"uploadIcon()\" [attr.aria-hidden]=\"true\" [pBind]=\"ptm('pcUploadButton')?.icon\"></span>\n }\n @if (!uploadIcon()) {\n <ng-container>\n @if (!uploadIconTemplate && !_uploadIconTemplate) {\n <svg data-p-icon=\"upload\" [pBind]=\"ptm('pcUploadButton')?.icon\" />\n }\n @if (uploadIconTemplate || _uploadIconTemplate) {\n <span [attr.aria-hidden]=\"true\" [pBind]=\"ptm('pcUploadButton')?.icon\">\n <ng-template *ngTemplateOutlet=\"uploadIconTemplate || _uploadIconTemplate\"></ng-template>\n </span>\n }\n </ng-container>\n }\n </ng-template>\n </p-button>\n }\n @if (!auto() && showCancelButton()) {\n <p-button\n [label]=\"cancelButtonLabel\"\n (onClick)=\"clear()\"\n [disabled]=\"!hasFiles() || uploading\"\n [styleClass]=\"cn(cx('pcCancelButton'), cancelStyleClass())\"\n [buttonProps]=\"cancelButtonProps()\"\n [pt]=\"ptm('pcCancelButton')\"\n [unstyled]=\"unstyled()\"\n >\n <ng-template #icon>\n @if (cancelIcon()) {\n <span [ngClass]=\"cancelIcon()\"></span>\n }\n @if (!cancelIcon()) {\n <ng-container>\n @if (!cancelIconTemplate && !_cancelIconTemplate) {\n <svg data-p-icon=\"times\" [attr.aria-hidden]=\"true\" />\n }\n @if (cancelIconTemplate || _cancelIconTemplate) {\n <span [attr.aria-hidden]=\"true\">\n <ng-template *ngTemplateOutlet=\"cancelIconTemplate || _cancelIconTemplate\"></ng-template>\n </span>\n }\n </ng-container>\n }\n </ng-template>\n </p-button>\n }\n }\n <ng-container\n *ngTemplateOutlet=\"\n headerTemplate() || _headerTemplate;\n context: {\n $implicit: files,\n uploadedFiles: uploadedFiles,\n chooseCallback: choose.bind(this),\n clearCallback: clear.bind(this),\n uploadCallback: upload.bind(this)\n }\n \"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarTemplate() || _toolbarTemplate\"></ng-container>\n </div>\n <div #content [class]=\"cx('content')\" (dragenter)=\"onDragEnter($event)\" (dragleave)=\"onDragLeave($event)\" (drop)=\"onDrop($event)\" [pBind]=\"ptm('content')\">\n @if (contentTemplate || _contentTemplate) {\n <ng-container\n *ngTemplateOutlet=\"\n contentTemplate || _contentTemplate;\n context: {\n $implicit: files,\n uploadedFiles: uploadedFiles,\n chooseCallback: choose.bind(this),\n clearCallback: clear.bind(this),\n removeUploadedFileCallback: removeUploadedFile.bind(this),\n removeFileCallback: remove.bind(this),\n progress: progress,\n messages: msgs\n }\n \"\n ></ng-container>\n } @else {\n @if (hasFiles()) {\n <p-progressbar [value]=\"progress\" [showValue]=\"false\" [pt]=\"ptm('pcProgressBar')\"></p-progressbar>\n }\n @for (message of msgs; track message) {\n <p-message [severity]=\"message.severity\" [text]=\"message.text\" [pt]=\"ptm('pcMessage')\" [unstyled]=\"unstyled()\"></p-message>\n }\n\n @if (hasFiles()) {\n <div [class]=\"cx('fileList')\" [pBind]=\"ptm('fileList')\">\n @for (file of files; track file) {\n <ng-container *ngTemplateOutlet=\"fileTemplate() || _fileTemplate; context: { $implicit: file }\"></ng-container>\n }\n @if (!fileTemplate() && !_fileTemplate) {\n <div\n pFileContent\n [unstyled]=\"unstyled()\"\n [files]=\"files\"\n (onRemove)=\"onRemoveClick($event)\"\n [badgeValue]=\"pendingLabel\"\n [previewWidth]=\"previewWidth()\"\n [fileRemoveIconTemplate]=\"cancelIconTemplate || _cancelIconTemplate\"\n ></div>\n }\n </div>\n }\n @if (hasUploadedFiles()) {\n <div [class]=\"cx('fileList')\" [pBind]=\"ptm('fileList')\">\n @for (file of uploadedFiles; track file) {\n <ng-container *ngTemplateOutlet=\"fileTemplate() || _fileTemplate; context: { $implicit: file }\"></ng-container>\n }\n @if (!fileTemplate() && !_fileTemplate) {\n <div\n pFileContent\n [unstyled]=\"unstyled()\"\n [files]=\"uploadedFiles\"\n (onRemove)=\"onRemoveUploadedFileClick($event)\"\n [badgeValue]=\"completedLabel()\"\n badgeSeverity=\"success\"\n [previewWidth]=\"previewWidth()\"\n [fileRemoveIconTemplate]=\"cancelIconTemplate || _cancelIconTemplate\"\n ></div>\n }\n </div>\n }\n }\n @if ((emptyTemplate || _emptyTemplate) && !hasFiles() && !hasUploadedFiles()) {\n <ng-container *ngTemplateOutlet=\"emptyTemplate || _emptyTemplate\" [pBind]=\"ptm('empty')\"></ng-container>\n }\n </div>\n </div>\n }\n @if (mode() === 'basic') {\n <div [class]=\"cn(cx('root'), styleClass())\" [pBind]=\"ptm('root')\">\n @for (message of msgs; track message) {\n <p-message [severity]=\"message.severity\" [text]=\"message.text\" [pt]=\"ptm('pcMessage')\" [unstyled]=\"unstyled()\"></p-message>\n }\n\n <div [class]=\"cx('basicContent')\" [pBind]=\"ptm('basicContent')\">\n <p-button\n [styleClass]=\"cn(cx('pcChooseButton'), chooseStyleClass())\"\n [disabled]=\"disabled()\"\n [label]=\"chooseButtonLabel\"\n [style]=\"style()\"\n (onClick)=\"onBasicUploaderClick()\"\n (keydown)=\"onBasicKeydown($event)\"\n [buttonProps]=\"chooseButtonProps()\"\n [pt]=\"ptm('pcChooseButton')\"\n [unstyled]=\"unstyled()\"\n >\n <ng-template #icon>\n @if (hasFiles() && !auto()) {\n @if (uploadIcon()) {\n <span class=\"p-button-icon p-button-icon-left\" [ngClass]=\"uploadIcon()\" [pBind]=\"ptm('pcChooseButton')?.icon\"></span>\n }\n @if (!uploadIcon()) {\n <ng-container>\n @if (!uploadIconTemplate && !_uploadIconTemplate) {\n <svg data-p-icon=\"upload\" [class]=\"'p-button-icon p-button-icon-left'\" [pBind]=\"ptm('pcChooseButton')?.icon\" />\n }\n @if (_uploadIconTemplate || uploadIconTemplate) {\n <span class=\"p-button-icon p-button-icon-left\" [pBind]=\"ptm('pcChooseButton')?.icon\">\n <ng-template *ngTemplateOutlet=\"_uploadIconTemplate || uploadIconTemplate\"></ng-template>\n </span>\n }\n </ng-container>\n }\n } @else {\n @if (chooseIcon()) {\n <span class=\"p-button-icon p-button-icon-left pi\" [ngClass]=\"chooseIcon()\" [pBind]=\"ptm('pcChooseButton')?.icon\"></span>\n }\n @if (!chooseIcon()) {\n <ng-container>\n @if (!chooseIconTemplate && !_chooseIconTemplate) {\n <svg data-p-icon=\"plus\" [pBind]=\"ptm('pcChooseButton')?.icon\" />\n }\n <ng-template *ngTemplateOutlet=\"chooseIconTemplate || _chooseIconTemplate\"></ng-template>\n </ng-container>\n }\n }\n </ng-template>\n <input\n [attr.aria-label]=\"browseFilesLabel\"\n #basicfileinput\n type=\"file\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"disabled()\"\n (change)=\"onFileSelect($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n [pBind]=\"ptm('input')\"\n />\n </p-button>\n @if (!auto()) {\n @if (!fileLabelTemplate() && !_fileLabelTemplate) {\n <span>\n {{ basicFileChosenLabel() }}\n </span>\n } @else {\n <ng-container *ngTemplateOutlet=\"fileLabelTemplate() || _fileLabelTemplate; context: { $implicit: files }\"></ng-container>\n }\n }\n </div>\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [FileUploadStyle, { provide: FILEUPLOAD_INSTANCE, useExisting: FileUpload }, { provide: PARENT_INSTANCE, useExisting: FileUpload }],\n hostDirectives: [Bind]\n})\nexport class FileUpload extends BaseComponent<FileUploadPassThrough> implements BlockableUI {\n componentName = 'FileUpload';\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptm('host'));\n }\n\n constructor() {\n super();\n\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('`<p-fileupload>` is deprecated and will be removed in a future major version. ' + 'Compose `pFileUpload`, `pFileUploadQueue`, and its companion directives instead.');\n }\n }\n\n /**\n * Name of the request parameter to identify the files at backend.\n * @group Props\n */\n name = input<string>();\n /**\n * Remote url to upload the files.\n * @group Props\n */\n url = input<string>();\n /**\n * HTTP method to send the files to the url such as \"post\" and \"put\".\n * @group Props\n */\n method = input<'post' | 'put' | undefined>('post');\n /**\n * Used to select multiple files at once from file dialog.\n * @group Props\n */\n multiple = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n /**\n * Comma-separated list of pattern to restrict the allowed file types. Can be any combination of either the MIME types (such as \"image/*\") or the file extensions (such as \".jpg\").\n * @group Props\n */\n accept = input<string>();\n /**\n * Disables the upload functionality.\n * @group Props\n */\n disabled = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n /**\n * When enabled, upload begins automatically after selection is completed.\n * @group Props\n */\n auto = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n /**\n * Cross-site Access-Control requests should be made using credentials such as cookies, authorization headers or TLS client certificates.\n * @group Props\n */\n withCredentials = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n /**\n * Maximum file size allowed in bytes.\n * @group Props\n */\n maxFileSize = input<number, unknown>(undefined, { transform: numberAttribute });\n /**\n * Summary message of the invalid file size.\n * @group Props\n */\n invalidFileSizeMessageSummary = input<string>('{0}: Invalid file size, ');\n /**\n * Detail message of the invalid file size.\n * @group Props\n */\n invalidFileSizeMessageDetail = input<string>('maximum upload size is {0}.');\n /**\n * Summary message of the invalid file type.\n * @group Props\n */\n invalidFileTypeMessageSummary = input<string>('{0}: Invalid file type, ');\n /**\n * Detail message of the invalid file type.\n * @group Props\n */\n invalidFileTypeMessageDetail = input<string>('allowed file types: {0}.');\n /**\n * Detail message of the invalid file type.\n * @group Props\n */\n invalidFileLimitMessageDetail = input<string>('limit is {0} at most.');\n /**\n * Summary message of the invalid file type.\n * @group Props\n */\n invalidFileLimitMessageSummary = input<string>('Maximum number of files exceeded, ');\n /**\n * Inline style of the element.\n * @group Props\n */\n style = input<{ [klass: string]: any } | null | undefined>();\n /**\n * Class of the element.\n * @group Props\n */\n styleClass = input<string>();\n /**\n * Width of the image thumbnail in pixels.\n * @group Props\n */\n previewWidth = input<number, unknown>(50, { transform: numberAttribute });\n /**\n * Label of the choose button. Defaults to ngx-prime Locale configuration.\n * @group Props\n */\n chooseLabel = input<string>();\n /**\n * Label of the upload button. Defaults to ngx-prime Locale configuration.\n * @group Props\n */\n uploadLabel = input<string>();\n /**\n * Label of the cancel button. Defaults to ngx-prime Locale configuration.\n * @group Props\n */\n cancelLabel = input<string>();\n /**\n * Icon of the choose button.\n * @group Props\n */\n chooseIcon = input<string>();\n /**\n * Icon of the upload button.\n * @group Props\n */\n uploadIcon = input<string>();\n /**\n * Icon of the cancel button.\n * @group Props\n */\n cancelIcon = input<string>();\n /**\n * Whether to show the upload button.\n * @group Props\n */\n showUploadButton = input(true, { transform: booleanAttribute });\n /**\n * Whether to show the cancel button.\n * @group Props\n */\n showCancelButton = input(true, { transform: booleanAttribute });\n /**\n * Defines the UI of the component.\n * @group Props\n */\n mode = input<'advanced' | 'basic' | undefined>('advanced');\n /**\n * HttpHeaders class represents the header configuration options for an HTTP request.\n * @group Props\n */\n headers = input<HttpHeaders>();\n /**\n * Whether to use the default upload or a manual implementation defined in uploadHandler callback. Defaults to ngx-prime Locale configuration.\n * @group Props\n */\n customUpload = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n /**\n * Maximum number of files that can be uploaded.\n * @group Props\n */\n fileLimit = input<number | undefined, unknown>(undefined, { transform: (value: unknown) => numberAttribute(value, undefined) });\n /**\n * Style class of the upload button.\n * @group Props\n */\n uploadStyleClass = input<string>();\n /**\n * Style class of the cancel button.\n * @group Props\n */\n cancelStyleClass = input<string>();\n /**\n * Style class of the remove button.\n * @group Props\n */\n removeStyleClass = input<string>();\n /**\n * Style class of the choose button.\n * @group Props\n */\n chooseStyleClass = input<string>();\n /**\n * Used to pass all properties of the ButtonProps to the choose button inside the component.\n * @group Props\n */\n chooseButtonProps = input<ButtonProps>();\n /**\n * Used to pass all properties of the ButtonProps to the upload button inside the component.\n * @group Props\n */\n uploadButtonProps = input<ButtonProps>({ severity: 'secondary' });\n /**\n * Used to pass all properties of the ButtonProps to the cancel button inside the component.\n * @group Props\n */\n cancelButtonProps = input<ButtonProps>({ severity: 'secondary' });\n /**\n * Callback to invoke before file upload is initialized.\n * @param {FileBeforeUploadEvent} event - Custom upload event.\n * @group Emits\n */\n onBeforeUpload = output<FileBeforeUploadEvent>();\n /**\n * An event indicating that the request was sent to the server. Useful when a request may be retried multiple times, to distinguish between retries on the final event stream.\n * @param {FileSendEvent} event - Custom send event.\n * @group Emits\n */\n onSend = output<FileSendEvent>();\n /**\n * Callback to invoke when file upload is complete.\n * @param {FileUploadEvent} event - Custom upload event.\n * @group Emits\n */\n onUpload = output<FileUploadEvent>();\n /**\n * Callback to invoke if file upload fails.\n * @param {FileUploadErrorEvent} event - Custom error event.\n * @group Emits\n */\n onError = output<FileUploadErrorEvent>();\n /**\n * Callback to invoke when files in queue are removed without uploading using clear all button.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onClear = output<Event | undefined>();\n /**\n * Callback to invoke when a file is removed without uploading using clear button of a file.\n * @param {FileRemoveEvent} event - Remove event.\n * @group Emits\n */\n onRemove = output<FileRemoveEvent>();\n /**\n * Callback to invoke when files are selected.\n * @param {FileSelectEvent} event - Select event.\n * @group Emits\n */\n onSelect = output<FileSelectEvent>();\n /**\n * Callback to invoke when files are being uploaded.\n * @param {FileProgressEvent} event - Progress event.\n * @group Emits\n */\n onProgress = output<FileProgressEvent>();\n /**\n * Callback to invoke in custom upload mode to upload the files manually.\n * @param {FileUploadHandlerEvent} event - Upload handler event.\n * @group Emits\n */\n uploadHandler = output<FileUploadHandlerEvent>();\n /**\n * This event is triggered if an error occurs while loading an image file.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onImageError = output<Event>();\n /**\n * This event is triggered if an error occurs while loading an image file.\n * @param {RemoveUploadedFileEvent} event - Remove event.\n * @group Emits\n */\n onRemoveUploadedFile = output<RemoveUploadedFileEvent>();\n\n /**\n * Custom file template.\n * @group Templates\n */\n readonly fileTemplate = contentChild<TemplateRef<void>>('file', { descendants: false });\n\n /**\n * Custom header template.\n * @param {FileUploadHeaderTemplateContext} context - header template context.\n * @group Templates\n */\n readonly headerTemplate = contentChild<TemplateRef<FileUploadHeaderTemplateContext>>('header', { descendants: false });\n\n /**\n * Custom content template.\n * @param {FileUploadContentTemplateContext} context - content template context.\n * @group Templates\n */\n @ContentChild('content', { descendants: false }) contentTemplate: TemplateRef<FileUploadContentTemplateContext> | undefined;\n\n /**\n * Custom toolbar template.\n * @group Templates\n */\n readonly toolbarTemplate = contentChild<TemplateRef<void>>('toolbar', { descendants: false });\n\n /**\n * Custom choose icon template.\n * @group Templates\n */\n @ContentChild('chooseicon', { descendants: false }) chooseIconTemplate: TemplateRef<void> | undefined;\n\n /**\n * Custom file label template.\n * @param {FileUploadFileLabelTemplateContext} context - file label template context.\n * @group Templates\n */\n readonly fileLabelTemplate = contentChild<TemplateRef<FileUploadFileLabelTemplateContext>>('filelabel', { descendants: false });\n\n /**\n * Custom upload icon template.\n * @group Templates\n */\n @ContentChild('uploadicon', { descendants: false }) uploadIconTemplate: TemplateRef<void> | undefined;\n\n /**\n * Custom cancel icon template.\n * @group Templates\n */\n @ContentChild('cancelicon', { descendants: false }) cancelIconTemplate: TemplateRef<void> | undefined;\n\n /**\n * Custom empty state template.\n * @group Templates\n */\n @ContentChild('empty', { descendants: false }) emptyTemplate: TemplateRef<void> | undefined;\n\n @ViewChild('advancedfileinput') advancedFileInput: ElementRef | undefined | any;\n\n readonly basicFileInput = viewChild<ElementRef>('basicfileinput');\n\n readonly content = viewChild<ElementRef>('content');\n\n /**\n * Accepts the public `files` binding without giving up the mutable queue\n * maintained by FileUpload itself. The queue is deliberately kept behind\n * the `files` accessor: selecting, removing and clearing files are local\n * operations, whereas a bound input replaces the complete queue.\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly inputFiles = input<File[] | undefined>(undefined, { alias: 'files' });\n\n private readonly syncInputFiles = effect(() => {\n const files = this.inputFiles();\n\n if (files !== undefined) {\n this.files = files;\n }\n });\n\n set files(files: File[]) {\n this._files = [];\n\n for (let i = 0; i < files.length; i++) {\n let file = files[i];\n\n if (this.validate(file)) {\n if (this.isImage(file)) {\n (<any>file).objectURL = this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(files[i]));\n }\n\n this._files.push(files[i]);\n }\n }\n }\n\n get files(): File[] {\n return this._files;\n }\n\n public get basicButtonLabel(): string {\n if (this.auto() || !this.hasFiles()) {\n return this.chooseLabel() as string;\n }\n\n return this.uploadLabel() ?? this.files[0]!.name;\n }\n\n public _files: File[] = [];\n\n public progress: number = 0;\n\n public dragHighlight: boolean | undefined;\n\n public msgs: any[] | undefined;\n\n public uploadedFileCount: number = 0;\n\n focus: boolean | undefined;\n\n uploading: boolean | undefined;\n\n duplicateIEEvent: boolean | undefined; // flag to recognize duplicate onchange event for file input\n\n translationSubscription: Subscription | undefined;\n\n dragOverListener: VoidListener;\n\n public uploadedFiles: File[] = [];\n\n sanitizer: DomSanitizer = inject(DomSanitizer);\n\n zone: NgZone = inject(NgZone);\n\n http: HttpClient = inject(HttpClient);\n\n _componentStyle = inject(FileUploadStyle);\n\n onInit() {\n this.translationSubscription = this.config.translationObserver.subscribe(() => {\n this.cd.markForCheck();\n });\n }\n\n onAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.mode() === 'advanced') {\n this.zone.runOutsideAngular(() => {\n const content = this.content();\n\n if (content) {\n this.dragOverListener = this.renderer.listen(content.nativeElement, 'dragover', this.onDragOver.bind(this));\n }\n });\n }\n }\n }\n\n _headerTemplate: TemplateRef<FileUploadHeaderTemplateContext> | undefined;\n\n _contentTemplate: TemplateRef<FileUploadContentTemplateContext> | undefined;\n\n _toolbarTemplate: TemplateRef<void> | undefined;\n\n _chooseIconTemplate: TemplateRef<void> | undefined;\n\n _uploadIconTemplate: TemplateRef<void> | undefined;\n\n _cancelIconTemplate: TemplateRef<void> | undefined;\n\n _emptyTemplate: TemplateRef<void> | undefined;\n\n _fileTemplate: TemplateRef<void> | undefined;\n\n _fileLabelTemplate: TemplateRef<FileUploadFileLabelTemplateContext> | undefined;\n\n readonly templates = contentChildren(PrimeTemplate);\n\n onAfterContentInit() {\n this.templates()?.forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this._headerTemplate = item.template;\n break;\n\n case 'file':\n this._fileTemplate = item.template;\n break;\n\n case 'content':\n this._contentTemplate = item.template;\n break;\n\n case 'toolbar':\n this._toolbarTemplate = item.template;\n break;\n\n case 'chooseicon':\n this._chooseIconTemplate = item.template;\n break;\n\n case 'uploadicon':\n this._uploadIconTemplate = item.template;\n break;\n\n case 'cancelicon':\n this._cancelIconTemplate = item.template;\n break;\n\n case 'empty':\n this._emptyTemplate = item.template;\n break;\n\n case 'filelabel':\n this._fileLabelTemplate = item.template;\n break;\n\n default:\n this._fileTemplate = item.template;\n break;\n }\n });\n }\n\n basicFileChosenLabel() {\n if (this.auto()) return this.chooseButtonLabel;\n else if (this.hasFiles()) {\n if (this.files && this.files.length === 1) return this.files[0].name;\n\n return this.config.getTranslation('fileChosenMessage')?.replace('{0}', this.files.length);\n }\n\n return this.config.getTranslation('noFileChosenMessage') || '';\n }\n\n completedLabel() {\n return this.config.getTranslation('completed') || '';\n }\n\n getTranslation(option: string) {\n return this.config.getTranslation(option);\n }\n\n choose() {\n this.advancedFileInput?.nativeElement.click();\n }\n\n onFileSelect(event: any) {\n if (event.type !== 'drop' && this.isIE11() && this.duplicateIEEvent) {\n this.duplicateIEEvent = false;\n\n return;\n }\n\n if (!this.multiple()) {\n this.files = [];\n }\n\n this.msgs = [];\n this.files = this.files || [];\n let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n\n for (let i = 0; i < files.length; i++) {\n let file = files[i];\n\n if (!this.isFileSelected(file)) {\n if (this.validate(file)) {\n if (this.isImage(file)) {\n file.objectURL = this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(files[i]));\n }\n\n this.files.push(files[i]);\n }\n }\n }\n\n this.onSelect.emit({ originalEvent: event, files: files, currentFiles: this.files });\n\n // this will check the fileLimit with the uploaded files\n this.checkFileLimit(files);\n\n if (this.hasFiles() && this.auto() && (this.mode() !== 'advanced' || !this.isFileLimitExceeded())) {\n this.upload();\n }\n\n if (event.type !== 'drop' && this.isIE11()) {\n this.clearIEInput();\n } else {\n this.clearInputElement();\n }\n }\n\n isFileSelected(file: File): boolean {\n for (let sFile of this.files) {\n if (sFile.name + sFile.type + sFile.size === file.name + file.type + file.size) {\n return true;\n }\n }\n\n return false;\n }\n\n isIE11() {\n if (isPlatformBrowser(this.platformId)) {\n return !!(this.document.defaultView as any)['MSInputMethodContext'] && !!(this.document as any)['documentMode'];\n }\n }\n\n validate(file: File): boolean {\n this.msgs = this.msgs || [];\n\n const accept = this.accept();\n\n if (accept && !this.isFileTypeValid(file)) {\n const text = `${this.invalidFileTypeMessageSummary().replace('{0}', file.name)} ${this.invalidFileTypeMessageDetail().replace('{0}', accept)}`;\n\n this.msgs.push({\n severity: 'error',\n text: text\n });\n\n return false;\n }\n\n const maxFileSize = this.maxFileSize();\n\n if (maxFileSize && file.size > maxFileSize) {\n const text = `${this.invalidFileSizeMessageSummary().replace('{0}', file.name)} ${this.invalidFileSizeMessageDetail().replace('{0}', this.formatSize(maxFileSize))}`;\n\n this.msgs.push({\n severity: 'error',\n text: text\n });\n\n return false;\n }\n\n return true;\n }\n\n private isFileTypeValid(file: File): boolean {\n let acceptableTypes = this.accept()\n ?.split(',')\n .map((type) => type.trim());\n\n for (let type of acceptableTypes!) {\n let acceptable = this.isWildcard(type) ? this.getTypeClass(file.type) === this.getTypeClass(type) : file.type == type || this.getFileExtension(file).toLowerCase() === type.toLowerCase();\n\n if (acceptable) {\n return true;\n }\n }\n\n return false;\n }\n\n getTypeClass(fileType: string): string {\n return fileType.substring(0, fileType.indexOf('/'));\n }\n\n isWildcard(fileType: string): boolean {\n return fileType.indexOf('*') !== -1;\n }\n\n getFileExtension(file: File): string {\n return '.' + file.name.split('.').pop();\n }\n\n isImage(file: File): boolean {\n return /^image\\//.test(file.type);\n }\n\n onImageLoad(img: any) {\n window.URL.revokeObjectURL(img.src);\n }\n /**\n * Uploads the selected files.\n * @group Method\n */\n uploader() {\n if (this.customUpload()) {\n if (this.fileLimit()) {\n this.uploadedFileCount += this.files.length;\n }\n\n this.uploadHandler.emit({\n files: this.files\n });\n\n this.cd.markForCheck();\n } else {\n this.uploading = true;\n this.msgs = [];\n let formData = new FormData();\n\n this.onBeforeUpload.emit({\n formData: formData\n });\n\n for (let i = 0; i < this.files.length; i++) {\n formData.append(this.name()!, this.files[i], this.files[i].name);\n }\n\n this.http\n .request(<string>this.method(), this.url() as string, {\n body: formData,\n headers: this.headers(),\n reportProgress: true,\n observe: 'events',\n withCredentials: this.withCredentials()\n })\n .subscribe(\n (event: HttpEvent<any>) => {\n switch (event.type) {\n case HttpEventType.Sent:\n this.onSend.emit({\n originalEvent: event,\n formData: formData\n });\n break;\n case HttpEventType.Response:\n this.uploading = false;\n this.progress = 0;\n\n if (event['status'] >= 200 && event['status'] < 300) {\n if (this.fileLimit()) {\n this.uploadedFileCount += this.files.length;\n }\n\n this.onUpload.emit({ originalEvent: event, files: this.files });\n } else {\n this.onError.emit({ files: this.files });\n }\n\n this.uploadedFiles = [...this.uploadedFiles, ...this.files];\n this.clear();\n break;\n\n case HttpEventType.UploadProgress: {\n if (event['loaded']) {\n this.progress = Math.round((event['loaded'] * 100) / event['total']!);\n }\n\n this.onProgress.emit({ originalEvent: event, progress: this.progress });\n break;\n }\n }\n\n this.cd.markForCheck();\n },\n (error: ErrorEvent) => {\n this.uploading = false;\n this.onError.emit({ files: this.files, error: error });\n }\n );\n }\n }\n onRemoveClick(e: any) {\n const { event, index } = e;\n\n if (this.hasFiles()) {\n this.remove(event, index);\n }\n }\n onRemoveUploadedFileClick(e: any) {\n const { index } = e;\n\n if (this.hasUploadedFiles()) {\n this.removeUploadedFile(index);\n }\n }\n /**\n * Clears the files list.\n * @group Method\n */\n clear() {\n this.files = [];\n this.onClear.emit(undefined);\n this.clearInputElement();\n this.msgs = [];\n this.cd.markForCheck();\n }\n /**\n * Removes a single file.\n * @param {Event} event - Browser event.\n * @param {Number} index - Index of the file.\n * @group Method\n */\n remove(event: Event, index: number) {\n this.clearInputElement();\n this.onRemove.emit({ originalEvent: event, file: this.files[index] });\n this.files.splice(index, 1);\n this.checkFileLimit(this.files);\n }\n /**\n * Removes uploaded file.\n * @param {Number} index - Index of the file to be removed.\n * @group Method\n */\n removeUploadedFile(index: number) {\n let removedFile = this.uploadedFiles.splice(index, 1)[0];\n\n this.uploadedFiles = [...this.uploadedFiles];\n this.onRemoveUploadedFile.emit({ file: removedFile, files: this.uploadedFiles });\n }\n\n isFileLimitExceeded() {\n const isAutoMode = this.auto();\n const totalFileCount = isAutoMode ? this.files.length : this.files.length + this.uploadedFileCount;\n\n const fileLimit = this.fileLimit();\n\n if (fileLimit && fileLimit <= totalFileCount && this.focus) {\n this.focus = false;\n }\n\n return fileLimit && fileLimit < totalFileCount;\n }\n\n isChooseDisabled() {\n const fileLimit = this.fileLimit();\n\n if (this.auto()) {\n return fileLimit && fileLimit <= this.files.length;\n } else {\n return fileLimit && fileLimit <= this.files.length + this.uploadedFileCount;\n }\n }\n\n checkFileLimit(files: File[]) {\n this.msgs ??= [];\n const fileLimit = this.fileLimit();\n const hasExistingValidationMessages = this.msgs.length > 0 && fileLimit && fileLimit < files.length;\n\n if (this.isFileLimitExceeded() || hasExistingValidationMessages) {\n const text = `${this.invalidFileLimitMessageSummary().replace('{0}', (this.fileLimit() as number).toString())} ${this.invalidFileLimitMessageDetail().replace('{0}', (this.fileLimit() as number).toString())}`;\n\n this.msgs.push({\n severity: 'error',\n text: text\n });\n } else {\n this.msgs = this.msgs.filter((msg) => !msg.text.includes(this.invalidFileLimitMessageSummary()));\n }\n }\n\n clearInputElement() {\n if (this.advancedFileInput && this.advancedFileInput.nativeElement) {\n this.advancedFileInput.nativeElement.value = '';\n }\n\n const basicFileInput = this.basicFileInput();\n\n if (basicFileInput && basicFileInput.nativeElement) {\n basicFileInput.nativeElement.value = '';\n }\n }\n\n clearIEInput() {\n if (this.advancedFileInput && this.advancedFileInput.nativeElement) {\n this.duplicateIEEvent = true; //IE11 fix to prevent onFileChange trigger again\n this.advancedFileInput.nativeElement.value = '';\n }\n }\n\n hasFiles(): boolean {\n return this.files && this.files.length > 0;\n }\n\n hasUploadedFiles() {\n return this.uploadedFiles && this.uploadedFiles.length > 0;\n }\n\n onDragEnter(e: DragEvent) {\n if (!this.disabled()) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n onDragOver(e: DragEvent) {\n if (!this.disabled()) {\n !this.$unstyled() && addClass(this.content()?.nativeElement, 'p-fileupload-highlight');\n this.content()?.nativeElement.setAttribute('data-p-highlight', true);\n this.dragHighlight = true;\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n onDragLeave() {\n if (!this.disabled()) {\n !this.$unstyled() && removeClass(this.content()?.nativeElement, 'p-fileupload-highlight');\n this.content()?.nativeElement.setAttribute('data-p-highlight', false);\n }\n }\n\n onDrop(event: any) {\n if (!this.disabled()) {\n !this.$unstyled() && removeClass(this.content()?.nativeElement, 'p-fileupload-highlight');\n this.content()?.nativeElement.setAttribute('data-p-highlight', false);\n event.stopPropagation();\n event.preventDefault();\n\n let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n let allowDrop = this.multiple() || (files && files.length === 1);\n\n if (allowDrop) {\n this.onFileSelect(event);\n }\n }\n }\n\n onFocus() {\n this.focus = true;\n }\n\n onBlur() {\n this.focus = false;\n }\n\n formatSize(bytes: number) {\n const k = 1024;\n const dm = 3;\n const sizes = this.getTranslation(TranslationKeys.FILE_SIZE_TYPES);\n\n if (bytes === 0) {\n return `0 ${sizes[0]}`;\n }\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n const formattedSize = (bytes / Math.pow(k, i)).toFixed(dm);\n\n return `${formattedSize} ${sizes[i]}`;\n }\n\n upload() {\n if (this.hasFiles()) this.uploader();\n }\n\n onBasicUploaderClick() {\n this.basicFileInput()?.nativeElement.click();\n }\n\n onBasicKeydown(event: KeyboardEvent) {\n switch (event.code) {\n case 'Space':\n case 'Enter':\n this.onBasicUploaderClick();\n\n event.preventDefault();\n break;\n }\n }\n\n imageError(event: Event) {\n this.onImageError.emit(event);\n }\n\n getBlockableElement(): HTMLElement {\n return this.el.nativeElement.children[0];\n }\n\n get chooseButtonLabel(): string {\n return this.chooseLabel() || this.config.getTranslation(TranslationKeys.CHOOSE);\n }\n\n get uploadButtonLabel(): string {\n return this.uploadLabel() || this.config.getTranslation(TranslationKeys.UPLOAD);\n }\n\n get cancelButtonLabel(): string {\n return this.cancelLabel() || this.config.getTranslation(TranslationKeys.CANCEL);\n }\n\n get browseFilesLabel(): string {\n return this.config.getTranslation(TranslationKeys.ARIA)[TranslationKeys.BROWSE_FILES];\n }\n\n get pendingLabel() {\n return this.config.getTranslation(TranslationKeys.PENDING);\n }\n\n onDestroy() {\n const content = this.content();\n\n if (content && content.nativeElement) {\n if (this.dragOverListener) {\n this.dragOverListener();\n this.dragOverListener = null;\n }\n }\n\n if (this.translationSubscription) {\n this.translationSubscription.unsubscribe();\n }\n }\n}\n\n@NgModule({\n imports: [FileUpload, FileUploadDirective, FileUploadClearDirective, FileUploadQueueDirective, FileUploadChooseDirective, FileUploadUploadDirective, FileUploadCancelDirective, FileUploadDropZoneDirective, SharedModule],\n exports: [FileUpload, FileUploadDirective, FileUploadClearDirective, FileUploadQueueDirective, FileUploadChooseDirective, FileUploadUploadDirective, FileUploadCancelDirective, FileUploadDropZoneDirective, SharedModule]\n})\nexport class FileUploadModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i1"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIA,MAAM,WAAW,GAAG;;;;CAInB;AAED,MAAM,OAAO,GAAG;AACZ,IAAA,KAAK,EAAE,gCAAgC;AACvC,IAAA,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAA,0BAAA,EAA6B,QAAQ,CAAC,IAAI,EAAE,CAAA,YAAA,CAAc;AAClF,IAAA,MAAM,EAAE,qBAAqB;AAC7B,IAAA,cAAc,EAAE,4BAA4B;AAC5C,IAAA,cAAc,EAAE,4BAA4B;AAC5C,IAAA,cAAc,EAAE,4BAA4B;AAC5C,IAAA,OAAO,EAAE,sBAAsB;AAC/B,IAAA,QAAQ,EAAE,wBAAwB;AAClC,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,aAAa,EAAE,6BAA6B;AAC5C,IAAA,QAAQ,EAAE,wBAAwB;AAClC,IAAA,QAAQ,EAAE,wBAAwB;AAClC,IAAA,QAAQ,EAAE,wBAAwB;AAClC,IAAA,WAAW,EAAE,yBAAyB;AACtC,IAAA,WAAW,EAAE,2BAA2B;AACxC,IAAA,kBAAkB,EAAE,iCAAiC;AACrD,IAAA,YAAY,EAAE;CACjB;AAGK,MAAO,eAAgB,SAAQ,SAAS,CAAA;IAC1C,IAAI,GAAG,YAAY;AAEnB,IAAA,KAAK,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,EAAK,WAAW,EAAE;IAElC,OAAO,GAAG,OAAO;uGALR,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAf,eAAe,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;AASD;;;;;;;;AAQG;IAES;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AACzB;;AAEG;AACH,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,cAAqB;AACrB;;AAEG;AACH,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,qBAA8B;AAC9B;;AAEG;AACH,IAAA,iBAAA,CAAA,gBAAA,CAAA,GAAA,4BAA6C;AAC7C;;AAEG;AACH,IAAA,iBAAA,CAAA,gBAAA,CAAA,GAAA,4BAA6C;AAC7C;;AAEG;AACH,IAAA,iBAAA,CAAA,gBAAA,CAAA,GAAA,4BAA6C;AAC7C;;AAEG;AACH,IAAA,iBAAA,CAAA,SAAA,CAAA,GAAA,sBAAgC;AAChC;;AAEG;AACH,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,wBAAmC;AACnC;;AAEG;AACH,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,mBAA0B;AAC1B;;AAEG;AACH,IAAA,iBAAA,CAAA,eAAA,CAAA,GAAA,6BAA6C;AAC7C;;AAEG;AACH,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,wBAAmC;AACnC;;AAEG;AACH,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,wBAAmC;AACnC;;AAEG;AACH,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,wBAAmC;AACnC;;AAEG;AACH,IAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,yBAAuC;AACvC;;AAEG;AACH,IAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,2BAAyC;AACzC;;AAEG;AACH,IAAA,iBAAA,CAAA,oBAAA,CAAA,GAAA,iCAAsD;AACtD;;AAEG;AACH,IAAA,iBAAA,CAAA,cAAA,CAAA,GAAA,4BAA2C;AAC/C,CAAC,EAjEW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;;AC3C7B;;;;;AAKG;AA+BG,MAAO,mBAAoB,SAAQ,eAAsC,CAAA;IAC3E,aAAa,GAAG,YAAY;AAEX,IAAA,OAAO,GAAG,MAAM,CAA+B,UAAU,CAAC;IAE1D,qBAAqB,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAErE,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAEzC,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACvD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,IAAA,MAAM,GAAG,KAAK;0FAAU;IACxB,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,IAAA,OAAO,GAAG,KAAK;2FAAU;IACzB,eAAe,GAAG,KAAK,CAAC,KAAK,uFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC/D,IAAA,OAAO,GAAG,KAAK;2FAAU;AACzB,IAAA,IAAI,GAAG,KAAK;wFAAU;IACtB,QAAQ,GAAG,KAAK,CAAkB,SAAS,gFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;IAC5E,SAAS,GAAG,KAAK,CAAC,KAAK,iFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACzD,IAAA,SAAS,GAAG,KAAK;6FAAU;AAC3B,IAAA,cAAc,GAAG,KAAK;kGAAU;AAChC,IAAA,eAAe,GAAG,KAAK;mGAAU;IACjC,WAAW,GAAG,KAAK,CAAkB,SAAS,mFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;IAC/E,SAAS,GAAG,KAAK,CAAkB,SAAS,iFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;IAC7E,cAAc,GAAG,KAAK,CAAC,KAAK,sFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;IAE9D,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;IACzB,KAAK,GAAG,MAAM,EAAQ;IACtB,aAAa,GAAG,MAAM,EAAU;IAChC,QAAQ,GAAG,MAAM,EAAmB;IACpC,OAAO,GAAG,MAAM,EAAwC;IACxD,OAAO,GAAG,MAAM,EAAQ;IACxB,OAAO,GAAG,MAAM,EAAc;IAC9B,MAAM,GAAG,MAAM,EAAc;IAE7B,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1D;AAEA,IAAA,QAAQ,CAAC,KAAY,EAAA;AACjB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC;QAChE,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAEtD,IAAI,eAAe,EAAE;YACjB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACrC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;YAE3E;QACJ;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IAC5E;IAEA,KAAK,GAAA;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;QAErB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACvB;AAEA,IAAA,KAAK,CAAC,OAAsB,EAAA;QACxB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;IAC7C;IAEA,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;IAC5D;AAEA,IAAA,WAAW,CAAC,KAAiB,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B;AAEQ,IAAA,kBAAkB,CAAC,KAAa,EAAA;AACpC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;QAEtC,IAAI,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS;AAAE,YAAA,OAAO,WAAW;AAC3E,QAAA,IAAI,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;AAAE,YAAA,OAAO,aAAa;AACpG,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAA,CAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM;AAAE,YAAA,OAAO,WAAW;AAEtJ,QAAA,OAAO,SAAS;IACpB;uGA3FS,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAJjB,CAAC,eAAe,CAAC,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAInB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA9B/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,mBAAmB,EAAE,WAAW;AAChC,wBAAA,qBAAqB,EAAE,cAAc;AACrC,wBAAA,wBAAwB,EAAE,SAAS;AACnC,wBAAA,uBAAuB,EAAE,mBAAmB;AAC5C,wBAAA,mBAAmB,EAAE,qBAAqB;AAC1C,wBAAA,wBAAwB,EAAE,0BAA0B;AACpD,wBAAA,yBAAyB,EAAE,2BAA2B;AACtD,wBAAA,WAAW,EAAE,mBAAmB;AAChC,wBAAA,aAAa,EAAE,gBAAgB;AAC/B,wBAAA,eAAe,EAAE,kBAAkB;AACnC,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,gBAAgB,EAAE,mBAAmB;AACrC,wBAAA,wBAAwB,EAAE,2BAA2B;AACrD,wBAAA,iBAAiB,EAAE,oBAAoB;AACvC,wBAAA,aAAa,EAAE,aAAa;AAC5B,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,UAAU,EAAE,kBAAkB;AAC9B,wBAAA,SAAS,EAAE,sBAAsB;AACjC,wBAAA,QAAQ,EAAE;AACb,qBAAA;oBACD,SAAS,EAAE,CAAC,eAAe,CAAC;oBAC5B,cAAc,EAAE,CAAC,IAAI,CAAC;AACtB,oBAAA,QAAQ,EAAE;AACb,iBAAA;;AA+FD;MAUa,wBAAwB,CAAA;IACjC,QAAQ,GAAG,KAAK,CAAC,QAAQ,+EAAwB,KAAK,EAAE,kBAAkB,EAAA,CAAG;uGADpE,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBATpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,YAAY,EAAE,uBAAuB;AACrC,wBAAA,SAAS,EAAE;AACd;AACJ,iBAAA;;AAKD;MAEa,wBAAwB,CAAA;AAChB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACxC,IAAA,OAAO;IACf,QAAQ,GAAG,KAAK,CAAC,QAAQ,+EAAwB,KAAK,EAAE,kBAAkB,EAAA,CAAG;AAC7E,IAAA,GAAG,GAAG,KAAK;uFAAU;IACrB,MAAM,GAAG,KAAK,CAAiB,MAAM;+EAAC;IACtC,IAAI,GAAG,KAAK,CAAC,OAAO;6EAAC;IACrB,OAAO,GAAG,KAAK,CAAyB,EAAE;gFAAC;IAC3C,eAAe,GAAG,KAAK,CAAC,KAAK,uFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC/D,IAAI,GAAG,KAAK,CAAC,KAAK,4EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACpD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;IACzB,aAAa,GAAG,KAAK,CAAS,EAAE;sFAAC;IACjC,QAAQ,GAAG,KAAK,CAAC,CAAC;iFAAC;IACnB,SAAS,GAAG,KAAK,CAAC,KAAK;kFAAC;IACxB,QAAQ,GAAG,MAAM,EAAU;IAC3B,cAAc,GAAG,MAAM,EAAY;IACnC,MAAM,GAAG,MAAM,EAAgD;IAC/D,UAAU,GAAG,MAAM,EAAsD;IACzE,QAAQ,GAAG,MAAM,EAA2C;IAC5D,OAAO,GAAG,MAAM,EAA6D;IAC7E,QAAQ,GAAG,MAAM,EAAyC;IAC1D,OAAO,GAAG,MAAM,EAAQ;IACxB,QAAQ,GAAA;QACJ,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAExF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;IAC/D;AACA,IAAA,GAAG,CAAC,KAAa,EAAA;QACb,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;QACrB,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAE9B,KAAK,MAAM,IAAI,IAAI,KAAK;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,CAAC;AAAE,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAClK,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,EAAE;IACjD;IACA,MAAM,CAAC,IAAU,EAAE,KAAa,EAAA;QAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACtD;IACA,KAAK,GAAA;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE,IAAI,CAAC,MAAM,EAAE;AACnC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACvB;IACA,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE;IAC5B;IACA,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB;IACA,MAAM,GAAA;AACF,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EACtB,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AAEpB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE;AAClE,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClC,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;AAErD,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC;AAC9C,QAAA,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAChD,QAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE9F,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,KAAK,KAAI;AAClC,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAE5F,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC5D,QAAA,CAAC;AAED,QAAA,OAAO,CAAC,MAAM,GAAG,MAAK;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE;AAC/C,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC;AAC3D,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;YACnE;;AAAO,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;AACtE,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS;AAC5B,QAAA,CAAC;AAED,QAAA,OAAO,CAAC,OAAO,GAAG,MAAK;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;AAC/D,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS;AAC5B,QAAA,CAAC;AAED,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpE;uGAnGS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,SAAS;mBAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,qBAAqB,EAAE,cAAc,EAAE,wBAAwB,EAAE,SAAS,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,EAAE;;MAuGjN,yBAAyB,CAAA;IAClC,KAAK,GAAG,KAAK,CAAC,QAAQ,4EAA6B,KAAK,EAAE,mBAAmB,EAAA,CAAG;uGADvE,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,2BAA2B,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE;;MAKlH,yBAAyB,CAAA;IAClC,KAAK,GAAG,KAAK,CAAC,QAAQ,4EAA6B,KAAK,EAAE,mBAAmB,EAAA,CAAG;uGADvE,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,gDAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,SAAS;mBAAC,EAAE,QAAQ,EAAE,2BAA2B,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,gDAAgD,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE;;MAKlL,yBAAyB,CAAA;IAClC,KAAK,GAAG,KAAK,CAAC,QAAQ,4EAA6B,KAAK,EAAE,mBAAmB,EAAA,CAAG;uGADvE,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,SAAS;mBAAC,EAAE,QAAQ,EAAE,2BAA2B,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,sBAAsB,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE;;MAKxJ,2BAA2B,CAAA;IACpC,KAAK,GAAG,KAAK,CAAC,QAAQ,4EAA6B,KAAK,EAAE,qBAAqB,EAAA,CAAG;AAClF,IAAA,UAAU,CAAC,KAAgB,EAAA;QACvB,KAAK,CAAC,cAAc,EAAE;IAC1B;AACA,IAAA,MAAM,CAAC,KAAgB,EAAA;QACnB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IACjE;uGARS,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,uBAAuB,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,oBAAoB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE;;;ACnN5I,MAAM,mBAAmB,GAAG,IAAI,cAAc,CAAa,qBAAqB,CAAC;AA8B3E,MAAO,WAAY,SAAQ,aAAa,CAAA;AAC1C,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAEzC,IAAA,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;IAE3C,QAAQ,GAAG,MAAM,EAAO;AAExB,IAAA,KAAK,GAAG,KAAK;yFAAO;IAEpB,aAAa,GAAG,KAAK,CAAoE,MAAM;sFAAC;AAEhG,IAAA,UAAU,GAAG,KAAK;8FAAU;IAE5B,YAAY,GAAG,KAAK,CAAS,EAAE;qFAAC;AAEhC,IAAA,sBAAsB,GAAG,KAAK;0GAAO;IAErC,aAAa,CAAC,KAAU,EAAE,KAAa,EAAA;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACxC;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;QACpB,MAAM,CAAC,GAAG,IAAI;QACd,MAAM,EAAE,GAAG,CAAC;AACZ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,eAAe,CAAC;AAEzE,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACb,YAAA,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;QAC1B;QAEA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnD,QAAA,MAAM,aAAa,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;QAE1D,OAAO,CAAA,EAAG,aAAa,CAAA,CAAA,EAAI,KAAK,CAAC,CAAC,CAAC,EAAE;IACzC;uGAlCS,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAHT,CAAC,eAAe,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtBlB,CAAA;;;;;;;;;;;;;;;;;;;;MAoBR,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGQ,YAAY,wMAAE,KAAK,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,oEAAE,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAE7C,WAAW,EAAA,UAAA,EAAA,CAAA;kBA5BvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;AAoBR,KAAA,CAAA;oBACF,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,SAAS,EAAE,CAAC,eAAe,CAAC;oBAC5B,OAAO,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI;AACzD,iBAAA;;AAqCD;;;;;AAKG;AA6RG,MAAO,UAAW,SAAQ,aAAoC,CAAA;IAChE,aAAa,GAAG,YAAY;IAE5B,qBAAqB,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEpD,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzD;AAEA,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QAEP,IAAI,SAAS,EAAE,EAAE;;AAEb,YAAA,OAAO,CAAC,IAAI,CAAC,gFAAgF,GAAG,kFAAkF,CAAC;QACvL;IACJ;AAEA;;;AAGG;AACH,IAAA,IAAI,GAAG,KAAK;wFAAU;AACtB;;;AAGG;AACH,IAAA,GAAG,GAAG,KAAK;uFAAU;AACrB;;;AAGG;IACH,MAAM,GAAG,KAAK,CAA6B,MAAM;+EAAC;AAClD;;;AAGG;IACH,QAAQ,GAAG,KAAK,CAAmB,SAAS,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC9E;;;AAGG;AACH,IAAA,MAAM,GAAG,KAAK;0FAAU;AACxB;;;AAGG;IACH,QAAQ,GAAG,KAAK,CAAmB,SAAS,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC9E;;;AAGG;IACH,IAAI,GAAG,KAAK,CAAmB,SAAS,4EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC1E;;;AAGG;IACH,eAAe,GAAG,KAAK,CAAmB,SAAS,uFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACrF;;;AAGG;IACH,WAAW,GAAG,KAAK,CAAkB,SAAS,mFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAC/E;;;AAGG;IACH,6BAA6B,GAAG,KAAK,CAAS,0BAA0B;sGAAC;AACzE;;;AAGG;IACH,4BAA4B,GAAG,KAAK,CAAS,6BAA6B;qGAAC;AAC3E;;;AAGG;IACH,6BAA6B,GAAG,KAAK,CAAS,0BAA0B;sGAAC;AACzE;;;AAGG;IACH,4BAA4B,GAAG,KAAK,CAAS,0BAA0B;qGAAC;AACxE;;;AAGG;IACH,6BAA6B,GAAG,KAAK,CAAS,uBAAuB;sGAAC;AACtE;;;AAGG;IACH,8BAA8B,GAAG,KAAK,CAAS,oCAAoC;uGAAC;AACpF;;;AAGG;AACH,IAAA,KAAK,GAAG,KAAK;yFAA+C;AAC5D;;;AAGG;AACH,IAAA,UAAU,GAAG,KAAK;8FAAU;AAC5B;;;AAGG;IACH,YAAY,GAAG,KAAK,CAAkB,EAAE,oFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AACzE;;;AAGG;AACH,IAAA,WAAW,GAAG,KAAK;+FAAU;AAC7B;;;AAGG;AACH,IAAA,WAAW,GAAG,KAAK;+FAAU;AAC7B;;;AAGG;AACH,IAAA,WAAW,GAAG,KAAK;+FAAU;AAC7B;;;AAGG;AACH,IAAA,UAAU,GAAG,KAAK;8FAAU;AAC5B;;;AAGG;AACH,IAAA,UAAU,GAAG,KAAK;8FAAU;AAC5B;;;AAGG;AACH,IAAA,UAAU,GAAG,KAAK;8FAAU;AAC5B;;;AAGG;IACH,gBAAgB,GAAG,KAAK,CAAC,IAAI,wFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC/D;;;AAGG;IACH,gBAAgB,GAAG,KAAK,CAAC,IAAI,wFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC/D;;;AAGG;IACH,IAAI,GAAG,KAAK,CAAmC,UAAU;6EAAC;AAC1D;;;AAGG;AACH,IAAA,OAAO,GAAG,KAAK;2FAAe;AAC9B;;;AAGG;IACH,YAAY,GAAG,KAAK,CAAmB,SAAS,oFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAClF;;;AAGG;AACH,IAAA,SAAS,GAAG,KAAK,CAA8B,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,CAAC,KAAc,KAAK,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG;AAC/H;;;AAGG;AACH,IAAA,gBAAgB,GAAG,KAAK;oGAAU;AAClC;;;AAGG;AACH,IAAA,gBAAgB,GAAG,KAAK;oGAAU;AAClC;;;AAGG;AACH,IAAA,gBAAgB,GAAG,KAAK;oGAAU;AAClC;;;AAGG;AACH,IAAA,gBAAgB,GAAG,KAAK;oGAAU;AAClC;;;AAGG;AACH,IAAA,iBAAiB,GAAG,KAAK;qGAAe;AACxC;;;AAGG;AACH,IAAA,iBAAiB,GAAG,KAAK,CAAc,EAAE,QAAQ,EAAE,WAAW,EAAE;0FAAC;AACjE;;;AAGG;AACH,IAAA,iBAAiB,GAAG,KAAK,CAAc,EAAE,QAAQ,EAAE,WAAW,EAAE;0FAAC;AACjE;;;;AAIG;IACH,cAAc,GAAG,MAAM,EAAyB;AAChD;;;;AAIG;IACH,MAAM,GAAG,MAAM,EAAiB;AAChC;;;;AAIG;IACH,QAAQ,GAAG,MAAM,EAAmB;AACpC;;;;AAIG;IACH,OAAO,GAAG,MAAM,EAAwB;AACxC;;;;AAIG;IACH,OAAO,GAAG,MAAM,EAAqB;AACrC;;;;AAIG;IACH,QAAQ,GAAG,MAAM,EAAmB;AACpC;;;;AAIG;IACH,QAAQ,GAAG,MAAM,EAAmB;AACpC;;;;AAIG;IACH,UAAU,GAAG,MAAM,EAAqB;AACxC;;;;AAIG;IACH,aAAa,GAAG,MAAM,EAA0B;AAChD;;;;AAIG;IACH,YAAY,GAAG,MAAM,EAAS;AAC9B;;;;AAIG;IACH,oBAAoB,GAAG,MAAM,EAA2B;AAExD;;;AAGG;IACM,YAAY,GAAG,YAAY,CAAoB,MAAM,oFAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAEvF;;;;AAIG;IACM,cAAc,GAAG,YAAY,CAA+C,QAAQ,sFAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAEtH;;;;AAIG;AAC8C,IAAA,eAAe;AAEhE;;;AAGG;IACM,eAAe,GAAG,YAAY,CAAoB,SAAS,uFAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAE7F;;;AAGG;AACiD,IAAA,kBAAkB;AAEtE;;;;AAIG;IACM,iBAAiB,GAAG,YAAY,CAAkD,WAAW,yFAAI,WAAW,EAAE,KAAK,EAAA,CAAG;AAE/H;;;AAGG;AACiD,IAAA,kBAAkB;AAEtE;;;AAGG;AACiD,IAAA,kBAAkB;AAEtE;;;AAGG;AAC4C,IAAA,aAAa;AAE5B,IAAA,iBAAiB;IAExC,cAAc,GAAG,SAAS,CAAa,gBAAgB;uFAAC;IAExD,OAAO,GAAG,SAAS,CAAa,SAAS;gFAAC;AAEnD;;;;;AAKG;;IAEM,UAAU,GAAG,KAAK,CAAqB,SAAS,kFAAI,KAAK,EAAE,OAAO,EAAA,CAAG;AAE7D,IAAA,cAAc,GAAG,MAAM,CAAC,MAAK;AAC1C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAE/B,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QACtB;IACJ,CAAC;uFAAC;IAEF,IAAI,KAAK,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAEhB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,YAAA,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AAEnB,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACrB,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACd,IAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvG;gBAEA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B;QACJ;IACJ;AAEA,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM;IACtB;AAEA,IAAA,IAAW,gBAAgB,GAAA;QACvB,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACjC,YAAA,OAAO,IAAI,CAAC,WAAW,EAAY;QACvC;AAEA,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI;IACpD;IAEO,MAAM,GAAW,EAAE;IAEnB,QAAQ,GAAW,CAAC;AAEpB,IAAA,aAAa;AAEb,IAAA,IAAI;IAEJ,iBAAiB,GAAW,CAAC;AAEpC,IAAA,KAAK;AAEL,IAAA,SAAS;IAET,gBAAgB,CAAsB;AAEtC,IAAA,uBAAuB;AAEvB,IAAA,gBAAgB;IAET,aAAa,GAAW,EAAE;AAEjC,IAAA,SAAS,GAAiB,MAAM,CAAC,YAAY,CAAC;AAE9C,IAAA,IAAI,GAAW,MAAM,CAAC,MAAM,CAAC;AAE7B,IAAA,IAAI,GAAe,MAAM,CAAC,UAAU,CAAC;AAErC,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAEzC,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,MAAK;AAC1E,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;AAC1B,QAAA,CAAC,CAAC;IACN;IAEA,eAAe,GAAA;AACX,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACpC,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,EAAE;AAC5B,gBAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAC7B,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;oBAE9B,IAAI,OAAO,EAAE;wBACT,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/G;AACJ,gBAAA,CAAC,CAAC;YACN;QACJ;IACJ;AAEA,IAAA,eAAe;AAEf,IAAA,gBAAgB;AAEhB,IAAA,gBAAgB;AAEhB,IAAA,mBAAmB;AAEnB,IAAA,mBAAmB;AAEnB,IAAA,mBAAmB;AAEnB,IAAA,cAAc;AAEd,IAAA,aAAa;AAEb,IAAA,kBAAkB;IAET,SAAS,GAAG,eAAe,CAAC,aAAa;kFAAC;IAEnD,kBAAkB,GAAA;QACd,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,KAAI;AAC/B,YAAA,QAAQ,IAAI,CAAC,OAAO,EAAE;AAClB,gBAAA,KAAK,QAAQ;AACT,oBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ;oBACpC;AAEJ,gBAAA,KAAK,MAAM;AACP,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ;oBAClC;AAEJ,gBAAA,KAAK,SAAS;AACV,oBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ;oBACrC;AAEJ,gBAAA,KAAK,SAAS;AACV,oBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ;oBACrC;AAEJ,gBAAA,KAAK,YAAY;AACb,oBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,QAAQ;oBACxC;AAEJ,gBAAA,KAAK,YAAY;AACb,oBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,QAAQ;oBACxC;AAEJ,gBAAA,KAAK,YAAY;AACb,oBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,QAAQ;oBACxC;AAEJ,gBAAA,KAAK,OAAO;AACR,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ;oBACnC;AAEJ,gBAAA,KAAK,WAAW;AACZ,oBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ;oBACvC;AAEJ,gBAAA;AACI,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ;oBAClC;;AAEZ,QAAA,CAAC,CAAC;IACN;IAEA,oBAAoB,GAAA;QAChB,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC,iBAAiB;AACzC,aAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACtB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;AAEpE,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAC7F;QAEA,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,EAAE;IAClE;IAEA,cAAc,GAAA;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE;IACxD;AAEA,IAAA,cAAc,CAAC,MAAc,EAAA;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;IAC7C;IAEA,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,KAAK,EAAE;IACjD;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACjE,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;YAE7B;QACJ;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;QACnB;AAEA,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE;QACd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;QAC7B,IAAI,KAAK,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;AAE9E,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,YAAA,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;YAEnB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AAC5B,gBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACrB,oBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;wBACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChG;oBAEA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC7B;YACJ;QACJ;QAEA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;;AAGpF,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAE1B,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE;YAC/F,IAAI,CAAC,MAAM,EAAE;QACjB;QAEA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACxC,IAAI,CAAC,YAAY,EAAE;QACvB;aAAO;YACH,IAAI,CAAC,iBAAiB,EAAE;QAC5B;IACJ;AAEA,IAAA,cAAc,CAAC,IAAU,EAAA;AACrB,QAAA,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;YAC1B,IAAI,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AAC5E,gBAAA,OAAO,IAAI;YACf;QACJ;AAEA,QAAA,OAAO,KAAK;IAChB;IAEA,MAAM,GAAA;AACF,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACpC,YAAA,OAAO,CAAC,CAAE,IAAI,CAAC,QAAQ,CAAC,WAAmB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAE,IAAI,CAAC,QAAgB,CAAC,cAAc,CAAC;QACnH;IACJ;AAEA,IAAA,QAAQ,CAAC,IAAU,EAAA;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE;AAE3B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAE5B,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;AACvC,YAAA,MAAM,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,6BAA6B,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;AAE9I,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACX,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,IAAI,EAAE;AACT,aAAA,CAAC;AAEF,YAAA,OAAO,KAAK;QAChB;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;QAEtC,IAAI,WAAW,IAAI,IAAI,CAAC,IAAI,GAAG,WAAW,EAAE;AACxC,YAAA,MAAM,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,6BAA6B,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE;AAEpK,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACX,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,IAAI,EAAE;AACT,aAAA,CAAC;AAEF,YAAA,OAAO,KAAK;QAChB;AAEA,QAAA,OAAO,IAAI;IACf;AAEQ,IAAA,eAAe,CAAC,IAAU,EAAA;AAC9B,QAAA,IAAI,eAAe,GAAG,IAAI,CAAC,MAAM;cAC3B,KAAK,CAAC,GAAG;aACV,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;AAE/B,QAAA,KAAK,IAAI,IAAI,IAAI,eAAgB,EAAE;YAC/B,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE;YAEzL,IAAI,UAAU,EAAE;AACZ,gBAAA,OAAO,IAAI;YACf;QACJ;AAEA,QAAA,OAAO,KAAK;IAChB;AAEA,IAAA,YAAY,CAAC,QAAgB,EAAA;AACzB,QAAA,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvD;AAEA,IAAA,UAAU,CAAC,QAAgB,EAAA;QACvB,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvC;AAEA,IAAA,gBAAgB,CAAC,IAAU,EAAA;AACvB,QAAA,OAAO,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;IAC3C;AAEA,IAAA,OAAO,CAAC,IAAU,EAAA;QACd,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACrC;AAEA,IAAA,WAAW,CAAC,GAAQ,EAAA;QAChB,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC;AACA;;;AAGG;IACH,QAAQ,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACrB,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBAClB,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;YAC/C;AAEA,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACpB,KAAK,EAAE,IAAI,CAAC;AACf,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;QAC1B;aAAO;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,IAAI,GAAG,EAAE;AACd,YAAA,IAAI,QAAQ,GAAG,IAAI,QAAQ,EAAE;AAE7B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACrB,gBAAA,QAAQ,EAAE;AACb,aAAA,CAAC;AAEF,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACpE;AAEA,YAAA,IAAI,CAAC;iBACA,OAAO,CAAS,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,GAAG,EAAY,EAAE;AAClD,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,eAAe,EAAE,IAAI,CAAC,eAAe;aACxC;AACA,iBAAA,SAAS,CACN,CAAC,KAAqB,KAAI;AACtB,gBAAA,QAAQ,KAAK,CAAC,IAAI;oBACd,KAAK,aAAa,CAAC,IAAI;AACnB,wBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,4BAAA,aAAa,EAAE,KAAK;AACpB,4BAAA,QAAQ,EAAE;AACb,yBAAA,CAAC;wBACF;oBACJ,KAAK,aAAa,CAAC,QAAQ;AACvB,wBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,wBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;AAEjB,wBAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE;AACjD,4BAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gCAClB,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;4BAC/C;AAEA,4BAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;wBACnE;6BAAO;AACH,4BAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;wBAC5C;AAEA,wBAAA,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;wBAC3D,IAAI,CAAC,KAAK,EAAE;wBACZ;AAEJ,oBAAA,KAAK,aAAa,CAAC,cAAc,EAAE;AAC/B,wBAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;4BACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAE,CAAC;wBACzE;AAEA,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACvE;oBACJ;;AAGJ,gBAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;AAC1B,YAAA,CAAC,EACD,CAAC,KAAiB,KAAI;AAClB,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1D,YAAA,CAAC,CACJ;QACT;IACJ;AACA,IAAA,aAAa,CAAC,CAAM,EAAA;AAChB,QAAA,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;AAE1B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;QAC7B;IACJ;AACA,IAAA,yBAAyB,CAAC,CAAM,EAAA;AAC5B,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC;AAEnB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAClC;IACJ;AACA;;;AAGG;IACH,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5B,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE;AACd,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;IAC1B;AACA;;;;;AAKG;IACH,MAAM,CAAC,KAAY,EAAE,KAAa,EAAA;QAC9B,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACrE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC;AACA;;;;AAIG;AACH,IAAA,kBAAkB,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAExD,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;AAC5C,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;IACpF;IAEA,mBAAmB,GAAA;AACf,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE;QAC9B,MAAM,cAAc,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB;AAElG,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAElC,IAAI,SAAS,IAAI,SAAS,IAAI,cAAc,IAAI,IAAI,CAAC,KAAK,EAAE;AACxD,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QACtB;AAEA,QAAA,OAAO,SAAS,IAAI,SAAS,GAAG,cAAc;IAClD;IAEA,gBAAgB,GAAA;AACZ,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAElC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YACb,OAAO,SAAS,IAAI,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;QACtD;aAAO;AACH,YAAA,OAAO,SAAS,IAAI,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB;QAC/E;IACJ;AAEA,IAAA,cAAc,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,KAAK,EAAE;AAChB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,MAAM,6BAA6B,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM;AAEnG,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,IAAI,6BAA6B,EAAE;AAC7D,YAAA,MAAM,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,8BAA8B,EAAE,CAAC,OAAO,CAAC,KAAK,EAAG,IAAI,CAAC,SAAS,EAAa,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,6BAA6B,EAAE,CAAC,OAAO,CAAC,KAAK,EAAG,IAAI,CAAC,SAAS,EAAa,CAAC,QAAQ,EAAE,CAAC,EAAE;AAE/M,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACX,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,IAAI,EAAE;AACT,aAAA,CAAC;QACN;aAAO;YACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC,CAAC;QACpG;IACJ;IAEA,iBAAiB,GAAA;QACb,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;YAChE,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;QACnD;AAEA,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AAE5C,QAAA,IAAI,cAAc,IAAI,cAAc,CAAC,aAAa,EAAE;AAChD,YAAA,cAAc,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;QAC3C;IACJ;IAEA,YAAY,GAAA;QACR,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAChE,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;QACnD;IACJ;IAEA,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;IAC9C;IAEA,gBAAgB,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;IAC9D;AAEA,IAAA,WAAW,CAAC,CAAY,EAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YAClB,CAAC,CAAC,eAAe,EAAE;YACnB,CAAC,CAAC,cAAc,EAAE;QACtB;IACJ;AAEA,IAAA,UAAU,CAAC,CAAY,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AAClB,YAAA,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,wBAAwB,CAAC;AACtF,YAAA,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC;AACpE,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;YACzB,CAAC,CAAC,eAAe,EAAE;YACnB,CAAC,CAAC,cAAc,EAAE;QACtB;IACJ;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AAClB,YAAA,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,wBAAwB,CAAC;AACzF,YAAA,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,kBAAkB,EAAE,KAAK,CAAC;QACzE;IACJ;AAEA,IAAA,MAAM,CAAC,KAAU,EAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AAClB,YAAA,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,wBAAwB,CAAC;AACzF,YAAA,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,kBAAkB,EAAE,KAAK,CAAC;YACrE,KAAK,CAAC,eAAe,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE;YAEtB,IAAI,KAAK,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;AAC9E,YAAA,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;YAEhE,IAAI,SAAS,EAAE;AACX,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC5B;QACJ;IACJ;IAEA,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;IACrB;IAEA,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACtB;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;QACpB,MAAM,CAAC,GAAG,IAAI;QACd,MAAM,EAAE,GAAG,CAAC;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,eAAe,CAAC;AAElE,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACb,YAAA,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE;QAC1B;QAEA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnD,QAAA,MAAM,aAAa,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;QAE1D,OAAO,CAAA,EAAG,aAAa,CAAA,CAAA,EAAI,KAAK,CAAC,CAAC,CAAC,EAAE;IACzC;IAEA,MAAM,GAAA;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE,IAAI,CAAC,QAAQ,EAAE;IACxC;IAEA,oBAAoB,GAAA;QAChB,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;IAChD;AAEA,IAAA,cAAc,CAAC,KAAoB,EAAA;AAC/B,QAAA,QAAQ,KAAK,CAAC,IAAI;AACd,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,OAAO;gBACR,IAAI,CAAC,oBAAoB,EAAE;gBAE3B,KAAK,CAAC,cAAc,EAAE;gBACtB;;IAEZ;AAEA,IAAA,UAAU,CAAC,KAAY,EAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC;IAEA,mBAAmB,GAAA;QACf,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5C;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC;IACnF;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC;IACnF;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC;IACnF;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC;IACzF;AAEA,IAAA,IAAI,YAAY,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC;IAC9D;IAEA,SAAS,GAAA;AACL,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAE9B,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE;AAClC,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACvB,IAAI,CAAC,gBAAgB,EAAE;AACvB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;YAChC;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE;QAC9C;IACJ;uGAt8BS,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,6BAAA,EAAA,EAAA,iBAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,4BAAA,EAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,6BAAA,EAAA,EAAA,iBAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,4BAAA,EAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,6BAAA,EAAA,EAAA,iBAAA,EAAA,+BAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,8BAAA,EAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,SAAA,EAHR,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAiczG,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAttBxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkRT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAnRS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,sZAAE,WAAW,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,qEAAE,SAAS,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA7C1F,WAAW,8KA6C8F,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAyR7G,UAAU,EAAA,UAAA,EAAA,CAAA;kBA5RtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC;AACvH,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkRT,IAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,SAAS,EAAE,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAA,UAAY,EAAE,CAAC;oBAC9I,cAAc,EAAE,CAAC,IAAI;AACxB,iBAAA;AAmR2D,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,MAAM,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAOD,QAAQ,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA;sBAOpH,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;AAMY,aAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,SAAS,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA;sBAM3F,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;AAOyC,aAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,WAAW,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA;sBAM7H,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;;sBAMjD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;;sBAMjD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;;sBAE5C,SAAS;uBAAC,mBAAmB;8DAEkB,gBAAgB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAEvB,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAmHb,aAAa,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;MA+gBzC,gBAAgB,CAAA;uGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,OAAA,EAAA,CA78BhB,UAAU,EA08BG,mBAAmB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,YAAY,CAAA,EAAA,OAAA,EAAA,CA18BhN,UAAU,EA28BG,mBAAmB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,YAAY,CAAA,EAAA,CAAA;AAEhN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,OAAA,EAAA,CAHf,UAAU,EAAyL,YAAY,EACZ,YAAY,CAAA,EAAA,CAAA;;2FAEhN,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,UAAU,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,YAAY,CAAC;AAC1N,oBAAA,OAAO,EAAE,CAAC,UAAU,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,YAAY;AAC5N,iBAAA;;;ACt2CD;;AAEG;;;;"}
1
+ {"version":3,"file":"wawjs-ngx-prime-fileupload.mjs","sources":["../../src/fileupload/style/fileuploadstyle.ts","../../src/fileupload/nativefileupload.ts","../../src/fileupload/fileupload.ts","../../src/fileupload/wawjs-ngx-prime-fileupload.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style } from '@wawjs/css-prime-styles/fileupload';\nimport { BaseStyle } from '@wawjs/ngx-prime/base';\n\nconst nativeStyle = `\ninput[pFileUpload] { cursor: pointer; }\ninput[pFileUpload].p-invalid { outline: 1px solid dt('fileupload.invalid.border.color'); outline-offset: 2px; }\ninput[pFileUpload]:disabled { cursor: default; opacity: .6; }\n`;\n\nconst classes = {\n input: 'p-fileupload-input p-component',\n root: ({ instance }) => `p-fileupload p-fileupload-${instance.mode()} p-component`,\n header: 'p-fileupload-header',\n pcChooseButton: 'p-fileupload-choose-button',\n pcUploadButton: 'p-fileupload-upload-button',\n pcCancelButton: 'p-fileupload-cancel-button',\n content: 'p-fileupload-content',\n fileList: 'p-fileupload-file-list',\n file: 'p-fileupload-file',\n fileThumbnail: 'p-fileupload-file-thumbnail',\n fileInfo: 'p-fileupload-file-info',\n fileName: 'p-fileupload-file-name',\n fileSize: 'p-fileupload-file-size',\n pcFileBadge: 'p-fileupload-file-badge',\n fileActions: 'p-fileupload-file-actions',\n pcFileRemoveButton: 'p-fileupload-file-remove-button',\n basicContent: 'p-fileupload-basic-content'\n};\n\n@Injectable()\nexport class FileUploadStyle extends BaseStyle {\n name = 'fileupload';\n\n style = `${style}\\n${nativeStyle}`;\n\n classes = classes;\n}\n\n/**\n *\n * FileUpload is an advanced uploader with dragdrop support, multi file uploads, auto uploading, progress tracking and validations.\n *\n * [Live Demo](https://www.ngx-prime.org/fileupload/)\n *\n * @module fileuploadstyle\n *\n */\n\nexport enum FileUploadClasses {\n /**\n * Class name of the root element\n */\n root = 'p-fileupload',\n /**\n * Class name of the header element\n */\n header = 'p-fileupload-header',\n /**\n * Class name of the choose button element\n */\n pcChooseButton = 'p-fileupload-choose-button',\n /**\n * Class name of the upload button element\n */\n pcUploadButton = 'p-fileupload-upload-button',\n /**\n * Class name of the cancel button element\n */\n pcCancelButton = 'p-fileupload-cancel-button',\n /**\n * Class name of the content element\n */\n content = 'p-fileupload-content',\n /**\n * Class name of the file list element\n */\n fileList = 'p-fileupload-file-list',\n /**\n * Class name of the file element\n */\n file = 'p-fileupload-file',\n /**\n * Class name of the file thumbnail element\n */\n fileThumbnail = 'p-fileupload-file-thumbnail',\n /**\n * Class name of the file info element\n */\n fileInfo = 'p-fileupload-file-info',\n /**\n * Class name of the file name element\n */\n fileName = 'p-fileupload-file-name',\n /**\n * Class name of the file size element\n */\n fileSize = 'p-fileupload-file-size',\n /**\n * Class name of the file badge element\n */\n pcFileBadge = 'p-fileupload-file-badge',\n /**\n * Class name of the file actions element\n */\n fileActions = 'p-fileupload-file-actions',\n /**\n * Class name of the file remove button element\n */\n pcFileRemoveButton = 'p-fileupload-file-remove-button',\n /**\n * Class name of the content in basic mode\n */\n basicContent = 'p-fileupload-basic-content'\n}\n","import { booleanAttribute, DestroyRef, Directive, ElementRef, inject, input, model, numberAttribute, OnInit, output } from '@angular/core';\nimport { BaseModelHolder } from '@wawjs/ngx-prime/basemodelholder';\nimport { Bind } from '@wawjs/ngx-prime/bind';\nimport type { FileSelectEvent, FileUploadPassThrough, NativeFileUploadValidationErrorEvent } from '@wawjs/ngx-prime/types/fileupload';\nimport { FileUploadStyle } from './style/fileuploadstyle';\n\n/**\n * Adds Prime state attributes to a native file input and emits its selected files.\n * The browser remains responsible for file selection and form integration.\n *\n * @group Components\n */\n@Directive({\n selector: \"input[type='file'][pFileUpload]\",\n standalone: true,\n host: {\n '[class]': \"cx('input')\",\n '[class.p-invalid]': 'invalid()',\n '[attr.data-pc-name]': \"'fileupload'\",\n '[attr.data-pc-section]': \"'input'\",\n '[attr.data-p-invalid]': 'invalid() || null',\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.aria-labelledby]': 'ariaLabelledBy() || null',\n '[attr.aria-describedby]': 'ariaDescribedBy() || null',\n '[attr.id]': 'inputId() || null',\n '[attr.name]': 'name() || null',\n '[attr.accept]': 'accept() || null',\n '[multiple]': 'multiple()',\n '[attr.capture]': 'capture() || null',\n '[attr.webkitdirectory]': 'webkitdirectory() || null',\n '[attr.tabindex]': 'tabindex() ?? null',\n '[autofocus]': 'autofocus()',\n '[disabled]': 'disabled()',\n '[required]': 'required()',\n '(change)': 'onChange($event)',\n '(focus)': 'onFocus.emit($event)',\n '(blur)': 'onInputBlur($event)'\n },\n providers: [FileUploadStyle],\n hostDirectives: [Bind],\n exportAs: 'pFileUpload'\n})\nexport class FileUploadDirective extends BaseModelHolder<FileUploadPassThrough> {\n componentName = 'FileUpload';\n\n private readonly element = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n private readonly bindDirectiveInstance = inject(Bind, { self: true });\n\n _componentStyle = inject(FileUploadStyle);\n\n invalid = input(false, { transform: booleanAttribute });\n disabled = input(false, { transform: booleanAttribute });\n required = input(false, { transform: booleanAttribute });\n accept = input<string>();\n multiple = input(false, { transform: booleanAttribute });\n capture = input<string>();\n webkitdirectory = input(false, { transform: booleanAttribute });\n inputId = input<string>();\n name = input<string>();\n tabindex = input<number, unknown>(undefined, { transform: numberAttribute });\n autofocus = input(false, { transform: booleanAttribute });\n ariaLabel = input<string>();\n ariaLabelledBy = input<string>();\n ariaDescribedBy = input<string>();\n maxFileSize = input<number, unknown>(undefined, { transform: numberAttribute });\n fileLimit = input<number, unknown>(undefined, { transform: numberAttribute });\n allowDuplicate = input(false, { transform: booleanAttribute });\n /** Signal Forms value contract. Browsers only permit this value to be set by user selection. */\n value = model<File[]>([]);\n touch = output<void>();\n filesSelected = output<File[]>();\n onSelect = output<FileSelectEvent>();\n onError = output<NativeFileUploadValidationErrorEvent>();\n onClear = output<void>();\n onFocus = output<FocusEvent>();\n onBlur = output<FocusEvent>();\n\n onAfterViewChecked() {\n this.bindDirectiveInstance.setAttrs(this.ptm('input'));\n }\n\n onChange(event: Event) {\n const files = Array.from(this.element.nativeElement.files ?? []);\n const validationError = this.getValidationError(files);\n\n if (validationError) {\n this.element.nativeElement.value = '';\n this.value.set([]);\n this.writeModelValue([]);\n this.onError.emit({ originalEvent: event, files, reason: validationError });\n\n return;\n }\n\n this.value.set(files);\n this.filesSelected.emit(files);\n this.writeModelValue(files);\n this.onSelect.emit({ originalEvent: event, files, currentFiles: files });\n }\n\n clear() {\n if (this.disabled()) return;\n\n this.element.nativeElement.value = '';\n this.value.set([]);\n this.writeModelValue([]);\n this.filesSelected.emit([]);\n this.onClear.emit();\n }\n\n focus(options?: FocusOptions) {\n this.element.nativeElement.focus(options);\n }\n\n choose() {\n if (!this.disabled()) this.element.nativeElement.click();\n }\n\n onInputBlur(event: FocusEvent) {\n this.touch.emit();\n this.onBlur.emit(event);\n }\n\n private getValidationError(files: File[]): NativeFileUploadValidationErrorEvent['reason'] | undefined {\n const fileLimit = this.fileLimit();\n const maxFileSize = this.maxFileSize();\n\n if (fileLimit !== undefined && files.length > fileLimit) return 'fileLimit';\n if (maxFileSize !== undefined && files.some((file) => file.size > maxFileSize)) return 'maxFileSize';\n if (!this.allowDuplicate() && new Set(files.map((file) => `${file.name}:${file.size}:${file.lastModified}`)).size !== files.length) return 'duplicate';\n\n return undefined;\n }\n}\n\n/** Clears the selected files of a native `pFileUpload` input. */\n@Directive({\n selector: 'button[pFileUploadClear]',\n standalone: true,\n host: {\n type: 'button',\n '[disabled]': 'uploader().disabled()',\n '(click)': 'uploader().clear()'\n }\n})\nexport class FileUploadClearDirective {\n uploader = input.required<FileUploadDirective>({ alias: 'pFileUploadClear' });\n}\n\n/** Holds an explicit native upload queue and optionally sends it with XMLHttpRequest. */\n@Directive({ selector: '[pFileUploadQueue]', standalone: true, exportAs: 'pFileUploadQueue', host: { '[attr.data-pc-name]': \"'fileupload'\", '[attr.data-pc-section]': \"'queue'\", '[attr.aria-busy]': 'uploading() || null' } })\nexport class FileUploadQueueDirective implements OnInit {\n private readonly destroyRef = inject(DestroyRef);\n private request?: XMLHttpRequest;\n uploader = input.required<FileUploadDirective>({ alias: 'pFileUploadQueue' });\n url = input<string>();\n method = input<'post' | 'put'>('post');\n name = input('files');\n headers = input<Record<string, string>>({});\n withCredentials = input(false, { transform: booleanAttribute });\n auto = input(false, { transform: booleanAttribute });\n disabled = input(false, { transform: booleanAttribute });\n files = model<File[]>([]);\n uploadedFiles = model<File[]>([]);\n progress = model(0);\n uploading = model(false);\n onSelect = output<File[]>();\n onBeforeUpload = output<FormData>();\n onSend = output<{ originalEvent: Event; formData: FormData }>();\n onProgress = output<{ originalEvent: ProgressEvent; progress: number }>();\n onUpload = output<{ originalEvent: Event; files: File[] }>();\n onError = output<{ originalEvent?: Event; files: File[]; error?: unknown }>();\n onRemove = output<{ originalEvent?: Event; file: File }>();\n onClear = output<void>();\n ngOnInit() {\n const subscription = this.uploader().filesSelected.subscribe((files) => this.add(files));\n\n this.destroyRef.onDestroy(() => subscription.unsubscribe());\n }\n add(files: File[]) {\n if (this.disabled()) return;\n const next = [...this.files()];\n\n for (const file of files) if (!next.some((item) => item.name === file.name && item.size === file.size && item.lastModified === file.lastModified)) next.push(file);\n this.files.set(next);\n this.onSelect.emit(next);\n if (this.auto() && next.length) this.upload();\n }\n remove(file: File, event?: Event) {\n this.files.set(this.files().filter((item) => item !== file));\n this.onRemove.emit({ originalEvent: event, file });\n }\n clear() {\n if (this.uploading()) this.cancel();\n this.files.set([]);\n this.progress.set(0);\n this.uploader().clear();\n this.onClear.emit();\n }\n choose() {\n this.uploader().choose();\n }\n cancel() {\n this.request?.abort();\n this.request = undefined;\n this.uploading.set(false);\n this.progress.set(0);\n }\n upload() {\n const files = this.files(),\n url = this.url();\n\n if (!files.length || !url || this.disabled() || this.uploading()) return;\n const formData = new FormData();\n\n files.forEach((file) => formData.append(this.name(), file, file.name));\n this.onBeforeUpload.emit(formData);\n const request = (this.request = new XMLHttpRequest());\n\n request.open(this.method().toUpperCase(), url);\n request.withCredentials = this.withCredentials();\n Object.entries(this.headers()).forEach(([key, value]) => request.setRequestHeader(key, value));\n\n request.upload.onprogress = (event) => {\n const progress = event.lengthComputable ? Math.round((event.loaded * 100) / event.total) : 0;\n\n this.progress.set(progress);\n this.onProgress.emit({ originalEvent: event, progress });\n };\n\n request.onload = () => {\n this.uploading.set(false);\n if (request.status >= 200 && request.status < 300) {\n this.uploadedFiles.set([...this.uploadedFiles(), ...files]);\n this.files.set([]);\n this.onUpload.emit({ originalEvent: new Event('load'), files });\n } else this.onError.emit({ originalEvent: new Event('error'), files });\n this.progress.set(0);\n this.request = undefined;\n };\n\n request.onerror = () => {\n this.uploading.set(false);\n this.onError.emit({ originalEvent: new Event('error'), files });\n this.request = undefined;\n };\n\n this.uploading.set(true);\n request.send(formData);\n this.onSend.emit({ originalEvent: new Event('send'), formData });\n }\n}\n@Directive({ selector: 'button[pFileUploadChoose]', standalone: true, host: { type: 'button', '(click)': 'queue().choose()' } })\nexport class FileUploadChooseDirective {\n queue = input.required<FileUploadQueueDirective>({ alias: 'pFileUploadChoose' });\n}\n@Directive({ selector: 'button[pFileUploadUpload]', standalone: true, host: { type: 'button', '[disabled]': 'queue().uploading() || !queue().files().length', '(click)': 'queue().upload()' } })\nexport class FileUploadUploadDirective {\n queue = input.required<FileUploadQueueDirective>({ alias: 'pFileUploadUpload' });\n}\n@Directive({ selector: 'button[pFileUploadCancel]', standalone: true, host: { type: 'button', '[disabled]': '!queue().uploading()', '(click)': 'queue().cancel()' } })\nexport class FileUploadCancelDirective {\n queue = input.required<FileUploadQueueDirective>({ alias: 'pFileUploadCancel' });\n}\n@Directive({ selector: '[pFileUploadDropZone]', standalone: true, host: { '(dragover)': 'onDragOver($event)', '(drop)': 'onDrop($event)' } })\nexport class FileUploadDropZoneDirective {\n queue = input.required<FileUploadQueueDirective>({ alias: 'pFileUploadDropZone' });\n onDragOver(event: DragEvent) {\n event.preventDefault();\n }\n onDrop(event: DragEvent) {\n event.preventDefault();\n this.queue().add(Array.from(event.dataTransfer?.files ?? []));\n }\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { HttpClient, HttpEvent, HttpEventType, HttpHeaders } from '@angular/common/http';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n input,\n isDevMode,\n NgModule,\n NgZone,\n numberAttribute,\n output,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n contentChild,\n viewChild,\n contentChildren\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { addClass, removeClass } from '@wawjs/css-prime-utils';\nimport { BlockableUI, PrimeTemplate, SharedModule, TranslationKeys } from '@wawjs/ngx-prime/api';\nimport { Badge } from '@wawjs/ngx-prime/badge';\nimport { BaseComponent, PARENT_INSTANCE } from '@wawjs/ngx-prime/basecomponent';\nimport { Bind } from '@wawjs/ngx-prime/bind';\nimport { Button, ButtonProps } from '@wawjs/ngx-prime/button';\nimport { PlusIcon, TimesIcon, UploadIcon } from '@wawjs/ngx-prime/icons';\nimport { Message } from '@wawjs/ngx-prime/message';\nimport { ProgressBar } from '@wawjs/ngx-prime/progressbar';\nimport { VoidListener } from '@wawjs/ngx-prime/ts-helpers';\nimport {\n FileBeforeUploadEvent,\n FileProgressEvent,\n FileRemoveEvent,\n FileSelectEvent,\n FileSendEvent,\n FileUploadContentTemplateContext,\n FileUploadErrorEvent,\n FileUploadEvent,\n FileUploadFileLabelTemplateContext,\n FileUploadHandlerEvent,\n FileUploadHeaderTemplateContext,\n FileUploadPassThrough,\n RemoveUploadedFileEvent\n} from '@wawjs/ngx-prime/types/fileupload';\nimport { Subscription } from 'rxjs';\nimport { FileUploadStyle } from './style/fileuploadstyle';\nimport { FileUploadCancelDirective, FileUploadChooseDirective, FileUploadClearDirective, FileUploadDirective, FileUploadDropZoneDirective, FileUploadQueueDirective, FileUploadUploadDirective } from './nativefileupload';\n\nconst FILEUPLOAD_INSTANCE = new InjectionToken<FileUpload>('FILEUPLOAD_INSTANCE');\n\n@Component({\n selector: '[pFileContent]',\n standalone: true,\n template: `@for (file of files(); track file?.name + '-' + $index; let index = $index) {\n <div [class]=\"cx('file')\" [pBind]=\"$pcFileUpload.ptm('file')\">\n <img role=\"presentation\" [class]=\"cx('fileThumbnail')\" [attr.alt]=\"file.name\" [src]=\"file.objectURL\" [width]=\"previewWidth()\" [pBind]=\"$pcFileUpload.ptm('fileThumbnail')\" />\n <div [class]=\"cx('fileInfo')\" [pBind]=\"$pcFileUpload.ptm('fileInfo')\">\n <div [class]=\"cx('fileName')\" [pBind]=\"$pcFileUpload.ptm('fileName')\">{{ file.name }}</div>\n <span [class]=\"cx('fileSize')\" [pBind]=\"$pcFileUpload.ptm('fileSize')\">{{ formatSize(file.size) }}</span>\n </div>\n <p-badge [value]=\"badgeValue()\" [severity]=\"badgeSeverity()\" [class]=\"cx('pcFileBadge')\" [pt]=\"$pcFileUpload.ptm('pcFileBadge')\" [unstyled]=\"unstyled()\" />\n <div [class]=\"cx('fileActions')\" [pBind]=\"$pcFileUpload.ptm('fileActions')\">\n <p-button (onClick)=\"onRemoveClick($event, index)\" [styleClass]=\"cx('pcFileRemoveButton')\" text rounded severity=\"danger\" [pt]=\"$pcFileUpload.ptm('pcFileRemoveButton')\" [unstyled]=\"unstyled()\">\n <ng-template #icon let-iconClass=\"class\">\n @if (fileRemoveIconTemplate()) {\n <ng-template *ngTemplateOutlet=\"fileRemoveIconTemplate(); context: { class: iconClass, file: file, index: index }\"></ng-template>\n } @else {\n <svg data-p-icon=\"times\" [class]=\"iconClass\" [attr.aria-hidden]=\"true\" />\n }\n </ng-template>\n </p-button>\n </div>\n </div>\n }`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [FileUploadStyle],\n imports: [CommonModule, Badge, Button, TimesIcon, Bind]\n})\nexport class FileContent extends BaseComponent {\n _componentStyle = inject(FileUploadStyle);\n\n $pcFileUpload = inject(FILEUPLOAD_INSTANCE);\n\n onRemove = output<any>();\n\n files = input<any>();\n\n badgeSeverity = input<'secondary' | 'info' | 'success' | 'warn' | 'danger' | 'contrast'>('warn');\n\n badgeValue = input<string>();\n\n previewWidth = input<number>(50);\n\n fileRemoveIconTemplate = input<any>();\n\n onRemoveClick(event: any, index: number) {\n this.onRemove.emit({ event, index });\n }\n\n formatSize(bytes: number) {\n const k = 1024;\n const dm = 3;\n const sizes = this.config.getTranslation(TranslationKeys.FILE_SIZE_TYPES);\n\n if (bytes === 0) {\n return `0 ${sizes[0]}`;\n }\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n const formattedSize = (bytes / Math.pow(k, i)).toFixed(dm);\n\n return `${formattedSize} ${sizes[i]}`;\n }\n}\n/**\n * FileUpload is an advanced uploader with dragdrop support, multi file uploads, auto uploading, progress tracking and validations.\n *\n * @deprecated since v22. Compose `pFileUpload`, `pFileUploadQueue`, and its companion directives instead. This component remains available through v22 for compatibility.\n * @group Components\n */\n@Component({\n selector: 'p-fileupload, p-fileUpload',\n standalone: true,\n imports: [CommonModule, Button, ProgressBar, Message, PlusIcon, UploadIcon, TimesIcon, SharedModule, FileContent, Bind],\n template: `\n @if (mode() === 'advanced') {\n <div [class]=\"cn(cx('root'), styleClass())\" [ngStyle]=\"style()\" [pBind]=\"ptm('root')\">\n <input\n [attr.aria-label]=\"browseFilesLabel\"\n #advancedfileinput\n type=\"file\"\n (change)=\"onFileSelect($event)\"\n [multiple]=\"multiple()\"\n [accept]=\"accept()\"\n [disabled]=\"disabled() || isChooseDisabled()\"\n [attr.title]=\"''\"\n [pBind]=\"ptm('input')\"\n />\n <div [class]=\"cx('header')\" [pBind]=\"ptm('header')\">\n @if (!headerTemplate() && !_headerTemplate) {\n <p-button\n [styleClass]=\"cn(cx('pcChooseButton'), chooseStyleClass())\"\n [disabled]=\"disabled() || isChooseDisabled()\"\n (focus)=\"onFocus()\"\n [label]=\"chooseButtonLabel\"\n (blur)=\"onBlur()\"\n (onClick)=\"choose()\"\n (keydown.enter)=\"choose()\"\n [buttonProps]=\"chooseButtonProps()\"\n [pt]=\"ptm('pcChooseButton')\"\n [unstyled]=\"unstyled()\"\n >\n <input\n [attr.aria-label]=\"browseFilesLabel\"\n #advancedfileinput\n type=\"file\"\n (change)=\"onFileSelect($event)\"\n [multiple]=\"multiple()\"\n [accept]=\"accept()\"\n [disabled]=\"disabled() || isChooseDisabled()\"\n [attr.title]=\"''\"\n [pBind]=\"ptm('input')\"\n />\n <ng-template #icon>\n @if (chooseIcon()) {\n <span [class]=\"chooseIcon()\" [attr.aria-label]=\"true\" [pBind]=\"ptm('pcChooseButton')?.icon\"></span>\n }\n @if (!chooseIcon()) {\n <ng-container>\n @if (!chooseIconTemplate && !_chooseIconTemplate) {\n <svg data-p-icon=\"plus\" [attr.aria-label]=\"true\" [pBind]=\"ptm('pcChooseButton')?.icon\" />\n }\n @if (chooseIconTemplate || _chooseIconTemplate) {\n <span [attr.aria-label]=\"true\" [pBind]=\"ptm('pcChooseButton')?.icon\">\n <ng-template *ngTemplateOutlet=\"chooseIconTemplate || _chooseIconTemplate\"></ng-template>\n </span>\n }\n </ng-container>\n }\n </ng-template>\n </p-button>\n\n @if (!auto() && showUploadButton()) {\n <p-button\n [label]=\"uploadButtonLabel\"\n (onClick)=\"upload()\"\n [disabled]=\"!hasFiles() || isFileLimitExceeded()\"\n [styleClass]=\"cn(cx('pcUploadButton'), uploadStyleClass())\"\n [buttonProps]=\"uploadButtonProps()\"\n [pt]=\"ptm('pcUploadButton')\"\n [unstyled]=\"unstyled()\"\n >\n <ng-template #icon>\n @if (uploadIcon()) {\n <span [ngClass]=\"uploadIcon()\" [attr.aria-hidden]=\"true\" [pBind]=\"ptm('pcUploadButton')?.icon\"></span>\n }\n @if (!uploadIcon()) {\n <ng-container>\n @if (!uploadIconTemplate && !_uploadIconTemplate) {\n <svg data-p-icon=\"upload\" [pBind]=\"ptm('pcUploadButton')?.icon\" />\n }\n @if (uploadIconTemplate || _uploadIconTemplate) {\n <span [attr.aria-hidden]=\"true\" [pBind]=\"ptm('pcUploadButton')?.icon\">\n <ng-template *ngTemplateOutlet=\"uploadIconTemplate || _uploadIconTemplate\"></ng-template>\n </span>\n }\n </ng-container>\n }\n </ng-template>\n </p-button>\n }\n @if (!auto() && showCancelButton()) {\n <p-button\n [label]=\"cancelButtonLabel\"\n (onClick)=\"clear()\"\n [disabled]=\"!hasFiles() || uploading\"\n [styleClass]=\"cn(cx('pcCancelButton'), cancelStyleClass())\"\n [buttonProps]=\"cancelButtonProps()\"\n [pt]=\"ptm('pcCancelButton')\"\n [unstyled]=\"unstyled()\"\n >\n <ng-template #icon>\n @if (cancelIcon()) {\n <span [ngClass]=\"cancelIcon()\"></span>\n }\n @if (!cancelIcon()) {\n <ng-container>\n @if (!cancelIconTemplate && !_cancelIconTemplate) {\n <svg data-p-icon=\"times\" [attr.aria-hidden]=\"true\" />\n }\n @if (cancelIconTemplate || _cancelIconTemplate) {\n <span [attr.aria-hidden]=\"true\">\n <ng-template *ngTemplateOutlet=\"cancelIconTemplate || _cancelIconTemplate\"></ng-template>\n </span>\n }\n </ng-container>\n }\n </ng-template>\n </p-button>\n }\n }\n <ng-container\n *ngTemplateOutlet=\"\n headerTemplate() || _headerTemplate;\n context: {\n $implicit: files,\n uploadedFiles: uploadedFiles,\n chooseCallback: choose.bind(this),\n clearCallback: clear.bind(this),\n uploadCallback: upload.bind(this)\n }\n \"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarTemplate() || _toolbarTemplate\"></ng-container>\n </div>\n <div #content [class]=\"cx('content')\" (dragenter)=\"onDragEnter($event)\" (dragleave)=\"onDragLeave($event)\" (drop)=\"onDrop($event)\" [pBind]=\"ptm('content')\">\n @if (contentTemplate || _contentTemplate) {\n <ng-container\n *ngTemplateOutlet=\"\n contentTemplate || _contentTemplate;\n context: {\n $implicit: files,\n uploadedFiles: uploadedFiles,\n chooseCallback: choose.bind(this),\n clearCallback: clear.bind(this),\n removeUploadedFileCallback: removeUploadedFile.bind(this),\n removeFileCallback: remove.bind(this),\n progress: progress,\n messages: msgs\n }\n \"\n ></ng-container>\n } @else {\n @if (hasFiles()) {\n <p-progressbar [value]=\"progress\" [showValue]=\"false\" [pt]=\"ptm('pcProgressBar')\"></p-progressbar>\n }\n @for (message of msgs; track message) {\n <p-message [severity]=\"message.severity\" [text]=\"message.text\" [pt]=\"ptm('pcMessage')\" [unstyled]=\"unstyled()\"></p-message>\n }\n\n @if (hasFiles()) {\n <div [class]=\"cx('fileList')\" [pBind]=\"ptm('fileList')\">\n @for (file of files; track file) {\n <ng-container *ngTemplateOutlet=\"fileTemplate() || _fileTemplate; context: { $implicit: file }\"></ng-container>\n }\n @if (!fileTemplate() && !_fileTemplate) {\n <div\n pFileContent\n [unstyled]=\"unstyled()\"\n [files]=\"files\"\n (onRemove)=\"onRemoveClick($event)\"\n [badgeValue]=\"pendingLabel\"\n [previewWidth]=\"previewWidth()\"\n [fileRemoveIconTemplate]=\"cancelIconTemplate || _cancelIconTemplate\"\n ></div>\n }\n </div>\n }\n @if (hasUploadedFiles()) {\n <div [class]=\"cx('fileList')\" [pBind]=\"ptm('fileList')\">\n @for (file of uploadedFiles; track file) {\n <ng-container *ngTemplateOutlet=\"fileTemplate() || _fileTemplate; context: { $implicit: file }\"></ng-container>\n }\n @if (!fileTemplate() && !_fileTemplate) {\n <div\n pFileContent\n [unstyled]=\"unstyled()\"\n [files]=\"uploadedFiles\"\n (onRemove)=\"onRemoveUploadedFileClick($event)\"\n [badgeValue]=\"completedLabel()\"\n badgeSeverity=\"success\"\n [previewWidth]=\"previewWidth()\"\n [fileRemoveIconTemplate]=\"cancelIconTemplate || _cancelIconTemplate\"\n ></div>\n }\n </div>\n }\n }\n @if ((emptyTemplate || _emptyTemplate) && !hasFiles() && !hasUploadedFiles()) {\n <ng-container *ngTemplateOutlet=\"emptyTemplate || _emptyTemplate\" [pBind]=\"ptm('empty')\"></ng-container>\n }\n </div>\n </div>\n }\n @if (mode() === 'basic') {\n <div [class]=\"cn(cx('root'), styleClass())\" [pBind]=\"ptm('root')\">\n @for (message of msgs; track message) {\n <p-message [severity]=\"message.severity\" [text]=\"message.text\" [pt]=\"ptm('pcMessage')\" [unstyled]=\"unstyled()\"></p-message>\n }\n\n <div [class]=\"cx('basicContent')\" [pBind]=\"ptm('basicContent')\">\n <p-button\n [styleClass]=\"cn(cx('pcChooseButton'), chooseStyleClass())\"\n [disabled]=\"disabled()\"\n [label]=\"chooseButtonLabel\"\n [style]=\"style()\"\n (onClick)=\"onBasicUploaderClick()\"\n (keydown)=\"onBasicKeydown($event)\"\n [buttonProps]=\"chooseButtonProps()\"\n [pt]=\"ptm('pcChooseButton')\"\n [unstyled]=\"unstyled()\"\n >\n <ng-template #icon>\n @if (hasFiles() && !auto()) {\n @if (uploadIcon()) {\n <span class=\"p-button-icon p-button-icon-left\" [ngClass]=\"uploadIcon()\" [pBind]=\"ptm('pcChooseButton')?.icon\"></span>\n }\n @if (!uploadIcon()) {\n <ng-container>\n @if (!uploadIconTemplate && !_uploadIconTemplate) {\n <svg data-p-icon=\"upload\" [class]=\"'p-button-icon p-button-icon-left'\" [pBind]=\"ptm('pcChooseButton')?.icon\" />\n }\n @if (_uploadIconTemplate || uploadIconTemplate) {\n <span class=\"p-button-icon p-button-icon-left\" [pBind]=\"ptm('pcChooseButton')?.icon\">\n <ng-template *ngTemplateOutlet=\"_uploadIconTemplate || uploadIconTemplate\"></ng-template>\n </span>\n }\n </ng-container>\n }\n } @else {\n @if (chooseIcon()) {\n <span class=\"p-button-icon p-button-icon-left pi\" [ngClass]=\"chooseIcon()\" [pBind]=\"ptm('pcChooseButton')?.icon\"></span>\n }\n @if (!chooseIcon()) {\n <ng-container>\n @if (!chooseIconTemplate && !_chooseIconTemplate) {\n <svg data-p-icon=\"plus\" [pBind]=\"ptm('pcChooseButton')?.icon\" />\n }\n <ng-template *ngTemplateOutlet=\"chooseIconTemplate || _chooseIconTemplate\"></ng-template>\n </ng-container>\n }\n }\n </ng-template>\n <input\n [attr.aria-label]=\"browseFilesLabel\"\n #basicfileinput\n type=\"file\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"disabled()\"\n (change)=\"onFileSelect($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n [pBind]=\"ptm('input')\"\n />\n </p-button>\n @if (!auto()) {\n @if (!fileLabelTemplate() && !_fileLabelTemplate) {\n <span>\n {{ basicFileChosenLabel() }}\n </span>\n } @else {\n <ng-container *ngTemplateOutlet=\"fileLabelTemplate() || _fileLabelTemplate; context: { $implicit: files }\"></ng-container>\n }\n }\n </div>\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [FileUploadStyle, { provide: FILEUPLOAD_INSTANCE, useExisting: FileUpload }, { provide: PARENT_INSTANCE, useExisting: FileUpload }],\n hostDirectives: [Bind]\n})\nexport class FileUpload extends BaseComponent<FileUploadPassThrough> implements BlockableUI {\n componentName = 'FileUpload';\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptm('host'));\n }\n\n constructor() {\n super();\n\n if (isDevMode()) {\n // eslint-disable-next-line no-console\n console.warn('`<p-fileupload>` is deprecated and will be removed in a future major version. ' + 'Compose `pFileUpload`, `pFileUploadQueue`, and its companion directives instead.');\n }\n }\n\n /**\n * Name of the request parameter to identify the files at backend.\n * @group Props\n */\n name = input<string>();\n /**\n * Remote url to upload the files.\n * @group Props\n */\n url = input<string>();\n /**\n * HTTP method to send the files to the url such as \"post\" and \"put\".\n * @group Props\n */\n method = input<'post' | 'put' | undefined>('post');\n /**\n * Used to select multiple files at once from file dialog.\n * @group Props\n */\n multiple = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n /**\n * Comma-separated list of pattern to restrict the allowed file types. Can be any combination of either the MIME types (such as \"image/*\") or the file extensions (such as \".jpg\").\n * @group Props\n */\n accept = input<string>();\n /**\n * Disables the upload functionality.\n * @group Props\n */\n disabled = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n /**\n * When enabled, upload begins automatically after selection is completed.\n * @group Props\n */\n auto = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n /**\n * Cross-site Access-Control requests should be made using credentials such as cookies, authorization headers or TLS client certificates.\n * @group Props\n */\n withCredentials = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n /**\n * Maximum file size allowed in bytes.\n * @group Props\n */\n maxFileSize = input<number, unknown>(undefined, { transform: numberAttribute });\n /**\n * Summary message of the invalid file size.\n * @group Props\n */\n invalidFileSizeMessageSummary = input<string>('{0}: Invalid file size, ');\n /**\n * Detail message of the invalid file size.\n * @group Props\n */\n invalidFileSizeMessageDetail = input<string>('maximum upload size is {0}.');\n /**\n * Summary message of the invalid file type.\n * @group Props\n */\n invalidFileTypeMessageSummary = input<string>('{0}: Invalid file type, ');\n /**\n * Detail message of the invalid file type.\n * @group Props\n */\n invalidFileTypeMessageDetail = input<string>('allowed file types: {0}.');\n /**\n * Detail message of the invalid file type.\n * @group Props\n */\n invalidFileLimitMessageDetail = input<string>('limit is {0} at most.');\n /**\n * Summary message of the invalid file type.\n * @group Props\n */\n invalidFileLimitMessageSummary = input<string>('Maximum number of files exceeded, ');\n /**\n * Inline style of the element.\n * @group Props\n */\n style = input<{ [klass: string]: any } | null | undefined>();\n /**\n * Class of the element.\n * @group Props\n */\n styleClass = input<string>();\n /**\n * Width of the image thumbnail in pixels.\n * @group Props\n */\n previewWidth = input<number, unknown>(50, { transform: numberAttribute });\n /**\n * Label of the choose button. Defaults to ngx-prime Locale configuration.\n * @group Props\n */\n chooseLabel = input<string>();\n /**\n * Label of the upload button. Defaults to ngx-prime Locale configuration.\n * @group Props\n */\n uploadLabel = input<string>();\n /**\n * Label of the cancel button. Defaults to ngx-prime Locale configuration.\n * @group Props\n */\n cancelLabel = input<string>();\n /**\n * Icon of the choose button.\n * @group Props\n */\n chooseIcon = input<string>();\n /**\n * Icon of the upload button.\n * @group Props\n */\n uploadIcon = input<string>();\n /**\n * Icon of the cancel button.\n * @group Props\n */\n cancelIcon = input<string>();\n /**\n * Whether to show the upload button.\n * @group Props\n */\n showUploadButton = input(true, { transform: booleanAttribute });\n /**\n * Whether to show the cancel button.\n * @group Props\n */\n showCancelButton = input(true, { transform: booleanAttribute });\n /**\n * Defines the UI of the component.\n * @group Props\n */\n mode = input<'advanced' | 'basic' | undefined>('advanced');\n /**\n * HttpHeaders class represents the header configuration options for an HTTP request.\n * @group Props\n */\n headers = input<HttpHeaders>();\n /**\n * Whether to use the default upload or a manual implementation defined in uploadHandler callback. Defaults to ngx-prime Locale configuration.\n * @group Props\n */\n customUpload = input<boolean, unknown>(undefined, { transform: booleanAttribute });\n /**\n * Maximum number of files that can be uploaded.\n * @group Props\n */\n fileLimit = input<number | undefined, unknown>(undefined, { transform: (value: unknown) => numberAttribute(value, undefined) });\n /**\n * Style class of the upload button.\n * @group Props\n */\n uploadStyleClass = input<string>();\n /**\n * Style class of the cancel button.\n * @group Props\n */\n cancelStyleClass = input<string>();\n /**\n * Style class of the remove button.\n * @group Props\n */\n removeStyleClass = input<string>();\n /**\n * Style class of the choose button.\n * @group Props\n */\n chooseStyleClass = input<string>();\n /**\n * Used to pass all properties of the ButtonProps to the choose button inside the component.\n * @group Props\n */\n chooseButtonProps = input<ButtonProps>();\n /**\n * Used to pass all properties of the ButtonProps to the upload button inside the component.\n * @group Props\n */\n uploadButtonProps = input<ButtonProps>({ severity: 'secondary' });\n /**\n * Used to pass all properties of the ButtonProps to the cancel button inside the component.\n * @group Props\n */\n cancelButtonProps = input<ButtonProps>({ severity: 'secondary' });\n /**\n * Callback to invoke before file upload is initialized.\n * @param {FileBeforeUploadEvent} event - Custom upload event.\n * @group Emits\n */\n onBeforeUpload = output<FileBeforeUploadEvent>();\n /**\n * An event indicating that the request was sent to the server. Useful when a request may be retried multiple times, to distinguish between retries on the final event stream.\n * @param {FileSendEvent} event - Custom send event.\n * @group Emits\n */\n onSend = output<FileSendEvent>();\n /**\n * Callback to invoke when file upload is complete.\n * @param {FileUploadEvent} event - Custom upload event.\n * @group Emits\n */\n onUpload = output<FileUploadEvent>();\n /**\n * Callback to invoke if file upload fails.\n * @param {FileUploadErrorEvent} event - Custom error event.\n * @group Emits\n */\n onError = output<FileUploadErrorEvent>();\n /**\n * Callback to invoke when files in queue are removed without uploading using clear all button.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onClear = output<Event | undefined>();\n /**\n * Callback to invoke when a file is removed without uploading using clear button of a file.\n * @param {FileRemoveEvent} event - Remove event.\n * @group Emits\n */\n onRemove = output<FileRemoveEvent>();\n /**\n * Callback to invoke when files are selected.\n * @param {FileSelectEvent} event - Select event.\n * @group Emits\n */\n onSelect = output<FileSelectEvent>();\n /**\n * Callback to invoke when files are being uploaded.\n * @param {FileProgressEvent} event - Progress event.\n * @group Emits\n */\n onProgress = output<FileProgressEvent>();\n /**\n * Callback to invoke in custom upload mode to upload the files manually.\n * @param {FileUploadHandlerEvent} event - Upload handler event.\n * @group Emits\n */\n uploadHandler = output<FileUploadHandlerEvent>();\n /**\n * This event is triggered if an error occurs while loading an image file.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onImageError = output<Event>();\n /**\n * This event is triggered if an error occurs while loading an image file.\n * @param {RemoveUploadedFileEvent} event - Remove event.\n * @group Emits\n */\n onRemoveUploadedFile = output<RemoveUploadedFileEvent>();\n\n /**\n * Custom file template.\n * @group Templates\n */\n readonly fileTemplate = contentChild<TemplateRef<void>>('file', { descendants: false });\n\n /**\n * Custom header template.\n * @param {FileUploadHeaderTemplateContext} context - header template context.\n * @group Templates\n */\n readonly headerTemplate = contentChild<TemplateRef<FileUploadHeaderTemplateContext>>('header', { descendants: false });\n\n /**\n * Custom content template.\n * @param {FileUploadContentTemplateContext} context - content template context.\n * @group Templates\n */\n @ContentChild('content', { descendants: false }) contentTemplate: TemplateRef<FileUploadContentTemplateContext> | undefined;\n\n /**\n * Custom toolbar template.\n * @group Templates\n */\n readonly toolbarTemplate = contentChild<TemplateRef<void>>('toolbar', { descendants: false });\n\n /**\n * Custom choose icon template.\n * @group Templates\n */\n @ContentChild('chooseicon', { descendants: false }) chooseIconTemplate: TemplateRef<void> | undefined;\n\n /**\n * Custom file label template.\n * @param {FileUploadFileLabelTemplateContext} context - file label template context.\n * @group Templates\n */\n readonly fileLabelTemplate = contentChild<TemplateRef<FileUploadFileLabelTemplateContext>>('filelabel', { descendants: false });\n\n /**\n * Custom upload icon template.\n * @group Templates\n */\n @ContentChild('uploadicon', { descendants: false }) uploadIconTemplate: TemplateRef<void> | undefined;\n\n /**\n * Custom cancel icon template.\n * @group Templates\n */\n @ContentChild('cancelicon', { descendants: false }) cancelIconTemplate: TemplateRef<void> | undefined;\n\n /**\n * Custom empty state template.\n * @group Templates\n */\n @ContentChild('empty', { descendants: false }) emptyTemplate: TemplateRef<void> | undefined;\n\n @ViewChild('advancedfileinput') advancedFileInput: ElementRef | undefined | any;\n\n readonly basicFileInput = viewChild<ElementRef>('basicfileinput');\n\n readonly content = viewChild<ElementRef>('content');\n\n /**\n * Accepts the public `files` binding without giving up the mutable queue\n * maintained by FileUpload itself. The queue is deliberately kept behind\n * the `files` accessor: selecting, removing and clearing files are local\n * operations, whereas a bound input replaces the complete queue.\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n readonly inputFiles = input<File[] | undefined>(undefined, { alias: 'files' });\n\n private readonly syncInputFiles = effect(() => {\n const files = this.inputFiles();\n\n if (files !== undefined) {\n this.files = files;\n }\n });\n\n set files(files: File[]) {\n this._files = [];\n\n for (let i = 0; i < files.length; i++) {\n let file = files[i];\n\n if (this.validate(file)) {\n if (this.isImage(file) && isPlatformBrowser(this.platformId)) {\n (<any>file).objectURL = this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(files[i]));\n }\n\n this._files.push(files[i]);\n }\n }\n }\n\n get files(): File[] {\n return this._files;\n }\n\n public get basicButtonLabel(): string {\n if (this.auto() || !this.hasFiles()) {\n return this.chooseLabel() as string;\n }\n\n return this.uploadLabel() ?? this.files[0]!.name;\n }\n\n public _files: File[] = [];\n\n public progress: number = 0;\n\n public dragHighlight: boolean | undefined;\n\n public msgs: any[] | undefined;\n\n public uploadedFileCount: number = 0;\n\n focus: boolean | undefined;\n\n uploading: boolean | undefined;\n\n duplicateIEEvent: boolean | undefined; // flag to recognize duplicate onchange event for file input\n\n translationSubscription: Subscription | undefined;\n\n dragOverListener: VoidListener;\n\n public uploadedFiles: File[] = [];\n\n sanitizer: DomSanitizer = inject(DomSanitizer);\n\n zone: NgZone = inject(NgZone);\n\n http: HttpClient = inject(HttpClient);\n\n _componentStyle = inject(FileUploadStyle);\n\n onInit() {\n this.translationSubscription = this.config.translationObserver.subscribe(() => {\n this.cd.markForCheck();\n });\n }\n\n onAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.mode() === 'advanced') {\n this.zone.runOutsideAngular(() => {\n const content = this.content();\n\n if (content) {\n this.dragOverListener = this.renderer.listen(content.nativeElement, 'dragover', this.onDragOver.bind(this));\n }\n });\n }\n }\n }\n\n _headerTemplate: TemplateRef<FileUploadHeaderTemplateContext> | undefined;\n\n _contentTemplate: TemplateRef<FileUploadContentTemplateContext> | undefined;\n\n _toolbarTemplate: TemplateRef<void> | undefined;\n\n _chooseIconTemplate: TemplateRef<void> | undefined;\n\n _uploadIconTemplate: TemplateRef<void> | undefined;\n\n _cancelIconTemplate: TemplateRef<void> | undefined;\n\n _emptyTemplate: TemplateRef<void> | undefined;\n\n _fileTemplate: TemplateRef<void> | undefined;\n\n _fileLabelTemplate: TemplateRef<FileUploadFileLabelTemplateContext> | undefined;\n\n readonly templates = contentChildren(PrimeTemplate);\n\n onAfterContentInit() {\n this.templates()?.forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this._headerTemplate = item.template;\n break;\n\n case 'file':\n this._fileTemplate = item.template;\n break;\n\n case 'content':\n this._contentTemplate = item.template;\n break;\n\n case 'toolbar':\n this._toolbarTemplate = item.template;\n break;\n\n case 'chooseicon':\n this._chooseIconTemplate = item.template;\n break;\n\n case 'uploadicon':\n this._uploadIconTemplate = item.template;\n break;\n\n case 'cancelicon':\n this._cancelIconTemplate = item.template;\n break;\n\n case 'empty':\n this._emptyTemplate = item.template;\n break;\n\n case 'filelabel':\n this._fileLabelTemplate = item.template;\n break;\n\n default:\n this._fileTemplate = item.template;\n break;\n }\n });\n }\n\n basicFileChosenLabel() {\n if (this.auto()) return this.chooseButtonLabel;\n else if (this.hasFiles()) {\n if (this.files && this.files.length === 1) return this.files[0].name;\n\n return this.config.getTranslation('fileChosenMessage')?.replace('{0}', this.files.length);\n }\n\n return this.config.getTranslation('noFileChosenMessage') || '';\n }\n\n completedLabel() {\n return this.config.getTranslation('completed') || '';\n }\n\n getTranslation(option: string) {\n return this.config.getTranslation(option);\n }\n\n choose() {\n this.advancedFileInput?.nativeElement.click();\n }\n\n onFileSelect(event: any) {\n if (event.type !== 'drop' && this.isIE11() && this.duplicateIEEvent) {\n this.duplicateIEEvent = false;\n\n return;\n }\n\n if (!this.multiple()) {\n this.files = [];\n }\n\n this.msgs = [];\n this.files = this.files || [];\n let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n\n for (let i = 0; i < files.length; i++) {\n let file = files[i];\n\n if (!this.isFileSelected(file)) {\n if (this.validate(file)) {\n if (this.isImage(file)) {\n file.objectURL = this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(files[i]));\n }\n\n this.files.push(files[i]);\n }\n }\n }\n\n this.onSelect.emit({ originalEvent: event, files: files, currentFiles: this.files });\n\n // this will check the fileLimit with the uploaded files\n this.checkFileLimit(files);\n\n if (this.hasFiles() && this.auto() && (this.mode() !== 'advanced' || !this.isFileLimitExceeded())) {\n this.upload();\n }\n\n if (event.type !== 'drop' && this.isIE11()) {\n this.clearIEInput();\n } else {\n this.clearInputElement();\n }\n }\n\n isFileSelected(file: File): boolean {\n for (let sFile of this.files) {\n if (sFile.name + sFile.type + sFile.size === file.name + file.type + file.size) {\n return true;\n }\n }\n\n return false;\n }\n\n isIE11() {\n if (isPlatformBrowser(this.platformId)) {\n return !!(this.document.defaultView as any)['MSInputMethodContext'] && !!(this.document as any)['documentMode'];\n }\n }\n\n validate(file: File): boolean {\n this.msgs = this.msgs || [];\n\n const accept = this.accept();\n\n if (accept && !this.isFileTypeValid(file)) {\n const text = `${this.invalidFileTypeMessageSummary().replace('{0}', file.name)} ${this.invalidFileTypeMessageDetail().replace('{0}', accept)}`;\n\n this.msgs.push({\n severity: 'error',\n text: text\n });\n\n return false;\n }\n\n const maxFileSize = this.maxFileSize();\n\n if (maxFileSize && file.size > maxFileSize) {\n const text = `${this.invalidFileSizeMessageSummary().replace('{0}', file.name)} ${this.invalidFileSizeMessageDetail().replace('{0}', this.formatSize(maxFileSize))}`;\n\n this.msgs.push({\n severity: 'error',\n text: text\n });\n\n return false;\n }\n\n return true;\n }\n\n private isFileTypeValid(file: File): boolean {\n let acceptableTypes = this.accept()\n ?.split(',')\n .map((type) => type.trim());\n\n for (let type of acceptableTypes!) {\n let acceptable = this.isWildcard(type) ? this.getTypeClass(file.type) === this.getTypeClass(type) : file.type == type || this.getFileExtension(file).toLowerCase() === type.toLowerCase();\n\n if (acceptable) {\n return true;\n }\n }\n\n return false;\n }\n\n getTypeClass(fileType: string): string {\n return fileType.substring(0, fileType.indexOf('/'));\n }\n\n isWildcard(fileType: string): boolean {\n return fileType.indexOf('*') !== -1;\n }\n\n getFileExtension(file: File): string {\n return '.' + file.name.split('.').pop();\n }\n\n isImage(file: File): boolean {\n return /^image\\//.test(file.type);\n }\n\n onImageLoad(img: any) {\n window.URL.revokeObjectURL(img.src);\n }\n /**\n * Uploads the selected files.\n * @group Method\n */\n uploader() {\n if (this.customUpload()) {\n if (this.fileLimit()) {\n this.uploadedFileCount += this.files.length;\n }\n\n this.uploadHandler.emit({\n files: this.files\n });\n\n this.cd.markForCheck();\n } else {\n this.uploading = true;\n this.msgs = [];\n let formData = new FormData();\n\n this.onBeforeUpload.emit({\n formData: formData\n });\n\n for (let i = 0; i < this.files.length; i++) {\n formData.append(this.name()!, this.files[i], this.files[i].name);\n }\n\n this.http\n .request(<string>this.method(), this.url() as string, {\n body: formData,\n headers: this.headers(),\n reportProgress: true,\n observe: 'events',\n withCredentials: this.withCredentials()\n })\n .subscribe(\n (event: HttpEvent<any>) => {\n switch (event.type) {\n case HttpEventType.Sent:\n this.onSend.emit({\n originalEvent: event,\n formData: formData\n });\n break;\n case HttpEventType.Response:\n this.uploading = false;\n this.progress = 0;\n\n if (event['status'] >= 200 && event['status'] < 300) {\n if (this.fileLimit()) {\n this.uploadedFileCount += this.files.length;\n }\n\n this.onUpload.emit({ originalEvent: event, files: this.files });\n } else {\n this.onError.emit({ files: this.files });\n }\n\n this.uploadedFiles = [...this.uploadedFiles, ...this.files];\n this.clear();\n break;\n\n case HttpEventType.UploadProgress: {\n if (event['loaded']) {\n this.progress = Math.round((event['loaded'] * 100) / event['total']!);\n }\n\n this.onProgress.emit({ originalEvent: event, progress: this.progress });\n break;\n }\n }\n\n this.cd.markForCheck();\n },\n (error: ErrorEvent) => {\n this.uploading = false;\n this.onError.emit({ files: this.files, error: error });\n }\n );\n }\n }\n onRemoveClick(e: any) {\n const { event, index } = e;\n\n if (this.hasFiles()) {\n this.remove(event, index);\n }\n }\n onRemoveUploadedFileClick(e: any) {\n const { index } = e;\n\n if (this.hasUploadedFiles()) {\n this.removeUploadedFile(index);\n }\n }\n /**\n * Clears the files list.\n * @group Method\n */\n clear() {\n this.files = [];\n this.onClear.emit(undefined);\n this.clearInputElement();\n this.msgs = [];\n this.cd.markForCheck();\n }\n /**\n * Removes a single file.\n * @param {Event} event - Browser event.\n * @param {Number} index - Index of the file.\n * @group Method\n */\n remove(event: Event, index: number) {\n this.clearInputElement();\n this.onRemove.emit({ originalEvent: event, file: this.files[index] });\n this.files.splice(index, 1);\n this.checkFileLimit(this.files);\n }\n /**\n * Removes uploaded file.\n * @param {Number} index - Index of the file to be removed.\n * @group Method\n */\n removeUploadedFile(index: number) {\n let removedFile = this.uploadedFiles.splice(index, 1)[0];\n\n this.uploadedFiles = [...this.uploadedFiles];\n this.onRemoveUploadedFile.emit({ file: removedFile, files: this.uploadedFiles });\n }\n\n isFileLimitExceeded() {\n const isAutoMode = this.auto();\n const totalFileCount = isAutoMode ? this.files.length : this.files.length + this.uploadedFileCount;\n\n const fileLimit = this.fileLimit();\n\n if (fileLimit && fileLimit <= totalFileCount && this.focus) {\n this.focus = false;\n }\n\n return fileLimit && fileLimit < totalFileCount;\n }\n\n isChooseDisabled() {\n const fileLimit = this.fileLimit();\n\n if (this.auto()) {\n return fileLimit && fileLimit <= this.files.length;\n } else {\n return fileLimit && fileLimit <= this.files.length + this.uploadedFileCount;\n }\n }\n\n checkFileLimit(files: File[]) {\n this.msgs ??= [];\n const fileLimit = this.fileLimit();\n const hasExistingValidationMessages = this.msgs.length > 0 && fileLimit && fileLimit < files.length;\n\n if (this.isFileLimitExceeded() || hasExistingValidationMessages) {\n const text = `${this.invalidFileLimitMessageSummary().replace('{0}', (this.fileLimit() as number).toString())} ${this.invalidFileLimitMessageDetail().replace('{0}', (this.fileLimit() as number).toString())}`;\n\n this.msgs.push({\n severity: 'error',\n text: text\n });\n } else {\n this.msgs = this.msgs.filter((msg) => !msg.text.includes(this.invalidFileLimitMessageSummary()));\n }\n }\n\n clearInputElement() {\n if (this.advancedFileInput && this.advancedFileInput.nativeElement) {\n this.advancedFileInput.nativeElement.value = '';\n }\n\n const basicFileInput = this.basicFileInput();\n\n if (basicFileInput && basicFileInput.nativeElement) {\n basicFileInput.nativeElement.value = '';\n }\n }\n\n clearIEInput() {\n if (this.advancedFileInput && this.advancedFileInput.nativeElement) {\n this.duplicateIEEvent = true; //IE11 fix to prevent onFileChange trigger again\n this.advancedFileInput.nativeElement.value = '';\n }\n }\n\n hasFiles(): boolean {\n return this.files && this.files.length > 0;\n }\n\n hasUploadedFiles() {\n return this.uploadedFiles && this.uploadedFiles.length > 0;\n }\n\n onDragEnter(e: DragEvent) {\n if (!this.disabled()) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n onDragOver(e: DragEvent) {\n if (!this.disabled()) {\n !this.$unstyled() && addClass(this.content()?.nativeElement, 'p-fileupload-highlight');\n this.content()?.nativeElement.setAttribute('data-p-highlight', true);\n this.dragHighlight = true;\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n onDragLeave() {\n if (!this.disabled()) {\n !this.$unstyled() && removeClass(this.content()?.nativeElement, 'p-fileupload-highlight');\n this.content()?.nativeElement.setAttribute('data-p-highlight', false);\n }\n }\n\n onDrop(event: any) {\n if (!this.disabled()) {\n !this.$unstyled() && removeClass(this.content()?.nativeElement, 'p-fileupload-highlight');\n this.content()?.nativeElement.setAttribute('data-p-highlight', false);\n event.stopPropagation();\n event.preventDefault();\n\n let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n let allowDrop = this.multiple() || (files && files.length === 1);\n\n if (allowDrop) {\n this.onFileSelect(event);\n }\n }\n }\n\n onFocus() {\n this.focus = true;\n }\n\n onBlur() {\n this.focus = false;\n }\n\n formatSize(bytes: number) {\n const k = 1024;\n const dm = 3;\n const sizes = this.getTranslation(TranslationKeys.FILE_SIZE_TYPES);\n\n if (bytes === 0) {\n return `0 ${sizes[0]}`;\n }\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n const formattedSize = (bytes / Math.pow(k, i)).toFixed(dm);\n\n return `${formattedSize} ${sizes[i]}`;\n }\n\n upload() {\n if (this.hasFiles()) this.uploader();\n }\n\n onBasicUploaderClick() {\n this.basicFileInput()?.nativeElement.click();\n }\n\n onBasicKeydown(event: KeyboardEvent) {\n switch (event.code) {\n case 'Space':\n case 'Enter':\n this.onBasicUploaderClick();\n\n event.preventDefault();\n break;\n }\n }\n\n imageError(event: Event) {\n this.onImageError.emit(event);\n }\n\n getBlockableElement(): HTMLElement {\n return this.el.nativeElement.children[0];\n }\n\n get chooseButtonLabel(): string {\n return this.chooseLabel() || this.config.getTranslation(TranslationKeys.CHOOSE);\n }\n\n get uploadButtonLabel(): string {\n return this.uploadLabel() || this.config.getTranslation(TranslationKeys.UPLOAD);\n }\n\n get cancelButtonLabel(): string {\n return this.cancelLabel() || this.config.getTranslation(TranslationKeys.CANCEL);\n }\n\n get browseFilesLabel(): string {\n return this.config.getTranslation(TranslationKeys.ARIA)[TranslationKeys.BROWSE_FILES];\n }\n\n get pendingLabel() {\n return this.config.getTranslation(TranslationKeys.PENDING);\n }\n\n onDestroy() {\n const content = this.content();\n\n if (content && content.nativeElement) {\n if (this.dragOverListener) {\n this.dragOverListener();\n this.dragOverListener = null;\n }\n }\n\n if (this.translationSubscription) {\n this.translationSubscription.unsubscribe();\n }\n }\n}\n\n@NgModule({\n imports: [FileUpload, FileUploadDirective, FileUploadClearDirective, FileUploadQueueDirective, FileUploadChooseDirective, FileUploadUploadDirective, FileUploadCancelDirective, FileUploadDropZoneDirective, SharedModule],\n exports: [FileUpload, FileUploadDirective, FileUploadClearDirective, FileUploadQueueDirective, FileUploadChooseDirective, FileUploadUploadDirective, FileUploadCancelDirective, FileUploadDropZoneDirective, SharedModule]\n})\nexport class FileUploadModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i1"],"mappings":"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"}