{"version":3,"file":"worker-engine-BQY-0w-0.cjs","sources":["../src/lib/webworker/engine.ts","../src/lib/pdfium/web/worker-engine.ts"],"sourcesContent":["import {\n  FormFieldValue,\n  PdfAttachmentObject,\n  PdfFile,\n  PdfMetadataObject,\n  PdfSignatureObject,\n  PdfTextRectObject,\n  PdfWidgetAnnoObject,\n  Task,\n  Logger,\n  NoopLogger,\n  PdfAnnotationObject,\n  PdfBookmarksObject,\n  PdfDocumentObject,\n  PdfEngine,\n  PdfPageObject,\n  Rect,\n  PdfErrorCode,\n  PdfErrorReason,\n  PdfPageFlattenResult,\n  SearchAllPagesResult,\n  PdfFileUrl,\n  PdfGlyphObject,\n  PdfPageGeometry,\n  PageTextSlice,\n  AnnotationCreateContext,\n  PdfEngineMethodArgs,\n  PdfEngineMethodName,\n  PdfPageSearchProgress,\n  PdfRenderThumbnailOptions,\n  PdfSearchAllPagesOptions,\n  PdfFlattenPageOptions,\n  PdfRedactTextOptions,\n  PdfRenderPageAnnotationOptions,\n  PdfRenderPageOptions,\n  PdfOpenDocumentUrlOptions,\n  PdfOpenDocumentBufferOptions,\n  PdfAnnotationsProgress,\n  PdfPrintOptions,\n  PdfBookmarkObject,\n  PdfAddAttachmentParams,\n} from '@kopjra/embedpdf-models';\nimport { ExecuteRequest, Response, SpecificExecuteRequest } from './runner';\n\nconst LOG_SOURCE = 'WebWorkerEngine';\nconst LOG_CATEGORY = 'Engine';\n\n/**\n * Create a request for the webworker\n * @param id - id of the request\n * @param name - name of the method\n * @param args - arguments of the method\n * @returns request\n */\nfunction createRequest<M extends PdfEngineMethodName>(\n  id: string,\n  name: M,\n  args: PdfEngineMethodArgs<M>,\n): SpecificExecuteRequest<M> {\n  return {\n    id,\n    type: 'ExecuteRequest',\n    data: {\n      name,\n      args,\n    },\n  };\n}\n\n/**\n * Task that executed by webworker\n */\nexport class WorkerTask<R, P = unknown> extends Task<R, PdfErrorReason, P> {\n  /**\n   * Create a task that bind to web worker with specified message id\n   * @param worker - web worker instance\n   * @param messageId - id of message\n   *\n   * @public\n   */\n  constructor(\n    public worker: Worker,\n    private messageId: string,\n  ) {\n    super();\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!Task.abort}\n   *\n   * @override\n   */\n  abort(e: PdfErrorReason) {\n    super.abort(e);\n\n    this.worker.postMessage({\n      id: this.messageId,\n      type: 'AbortRequest',\n    });\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!Task.progress}\n   *\n   * @override\n   */\n  progress(p: P) {\n    super.progress(p);\n  }\n}\n\n/**\n * PDF engine that runs within webworker\n */\nexport class WebWorkerEngine implements PdfEngine {\n  static readyTaskId = '0';\n  /**\n   * Task that represent the state of preparation\n   */\n  readyTask: WorkerTask<boolean>;\n  /**\n   * All the tasks that is executing\n   */\n  tasks: Map<string, WorkerTask<any>> = new Map();\n\n  /**\n   * Create an instance of WebWorkerEngine, it will create a worker with\n   * specified url.\n   * @param worker - webworker instance, this worker needs to contains the running instance of {@link EngineRunner}\n   * @param logger - logger instance\n   *\n   * @public\n   */\n  constructor(\n    private worker: Worker,\n    private logger: Logger = new NoopLogger(),\n  ) {\n    this.worker.addEventListener('message', this.handle);\n\n    this.readyTask = new WorkerTask<boolean>(this.worker, WebWorkerEngine.readyTaskId);\n    this.tasks.set(WebWorkerEngine.readyTaskId, this.readyTask);\n  }\n\n  /**\n   * Handle event from web worker. There are 2 kinds of event\n   * 1. ReadyResponse: web worker is ready\n   * 2. ExecuteResponse: result of execution\n   * @param evt - message event from web worker\n   * @returns\n   *\n   * @private\n   */\n  handle = (evt: MessageEvent<any>) => {\n    this.logger.debug(\n      LOG_SOURCE,\n      LOG_CATEGORY,\n      'webworker engine start handling message: ',\n      evt.data,\n    );\n    try {\n      const response = evt.data as Response;\n      const task = this.tasks.get(response.id);\n      if (!task) {\n        return;\n      }\n\n      switch (response.type) {\n        case 'ReadyResponse':\n          this.readyTask.resolve(true);\n          break;\n        case 'ExecuteProgress':\n          task.progress(response.data);\n          break;\n        case 'ExecuteResponse':\n          {\n            switch (response.data.type) {\n              case 'result':\n                task.resolve(response.data.value);\n                break;\n              case 'error':\n                task.reject(response.data.value.reason);\n                break;\n            }\n            this.tasks.delete(response.id);\n          }\n          break;\n      }\n    } catch (e) {\n      this.logger.error(LOG_SOURCE, LOG_CATEGORY, 'webworker met error when handling message: ', e);\n    }\n  };\n\n  /**\n   * Generate a unique message id\n   * @returns message id\n   *\n   * @private\n   */\n  generateRequestId(id: string) {\n    return `${id}.${Date.now()}.${Math.random()}`;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.initialize}\n   *\n   * @public\n   */\n  initialize() {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'initialize');\n    const requestId = this.generateRequestId('General');\n    const task = new WorkerTask<boolean>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'initialize', []);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.destroy}\n   *\n   * @public\n   */\n  destroy() {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'destroy');\n    const requestId = this.generateRequestId('General');\n    const task = new WorkerTask<boolean>(this.worker, requestId);\n\n    const finish = () => {\n      this.worker.removeEventListener('message', this.handle);\n      this.worker.terminate();\n    };\n\n    task.wait(finish, finish);\n\n    const request: ExecuteRequest = createRequest(requestId, 'destroy', []);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.openDocumentUrl}\n   *\n   * @public\n   */\n  openDocumentUrl(file: PdfFileUrl, options?: PdfOpenDocumentUrlOptions) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentUrl', file.url, options);\n    const requestId = this.generateRequestId(file.id);\n    const task = new WorkerTask<PdfDocumentObject>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'openDocumentUrl', [file, options]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.openDocument}\n   *\n   * @public\n   */\n  openDocumentBuffer(file: PdfFile, options?: PdfOpenDocumentBufferOptions) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'openDocumentBuffer', file, options);\n    const requestId = this.generateRequestId(file.id);\n    const task = new WorkerTask<PdfDocumentObject>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'openDocumentBuffer', [file, options]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.getMetadata}\n   *\n   * @public\n   */\n  getMetadata(doc: PdfDocumentObject) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getMetadata', doc);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<PdfMetadataObject>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'getMetadata', [doc]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.setMetadata}\n   *\n   * @public\n   */\n  setMetadata(doc: PdfDocumentObject, metadata: Partial<PdfMetadataObject>) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'setMetadata', doc, metadata);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<boolean>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'setMetadata', [doc, metadata]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.getDocPermissions}\n   *\n   * @public\n   */\n  getDocPermissions(doc: PdfDocumentObject) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getDocPermissions', doc);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<number>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'getDocPermissions', [doc]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.getDocUserPermissions}\n   *\n   * @public\n   */\n  getDocUserPermissions(doc: PdfDocumentObject) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getDocUserPermissions', doc);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<number>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'getDocUserPermissions', [doc]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.getBookmarks}\n   *\n   * @public\n   */\n  getBookmarks(doc: PdfDocumentObject) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getBookmarks', doc);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<PdfBookmarksObject>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'getBookmarks', [doc]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.setBookmarks}\n   *\n   * @public\n   */\n  setBookmarks(doc: PdfDocumentObject, payload: PdfBookmarkObject[]) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'setBookmarks', doc, payload);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<boolean>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'setBookmarks', [doc, payload]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.deleteBookmarks}\n   *\n   * @public\n   */\n  deleteBookmarks(doc: PdfDocumentObject) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'deleteBookmarks', doc);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<boolean>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'deleteBookmarks', [doc]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.getSignatures}\n   *\n   * @public\n   */\n  getSignatures(doc: PdfDocumentObject) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getSignatures', doc);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<PdfSignatureObject[]>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'getSignatures', [doc]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.renderPage}\n   *\n   * @public\n   */\n  renderPage(doc: PdfDocumentObject, page: PdfPageObject, options?: PdfRenderPageOptions) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPage', doc, page, options);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<Blob>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'renderPage', [doc, page, options]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.renderPageRect}\n   *\n   * @public\n   */\n  renderPageRect(\n    doc: PdfDocumentObject,\n    page: PdfPageObject,\n    rect: Rect,\n    options?: PdfRenderPageOptions,\n  ) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderPageRect', doc, page, rect, options);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<Blob>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'renderPageRect', [\n      doc,\n      page,\n      rect,\n      options,\n    ]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.renderAnnotation}\n   *\n   * @public\n   */\n  renderPageAnnotation(\n    doc: PdfDocumentObject,\n    page: PdfPageObject,\n    annotation: PdfAnnotationObject,\n    options?: PdfRenderPageAnnotationOptions,\n  ) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderAnnotation', doc, page, annotation, options);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<Blob>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'renderPageAnnotation', [\n      doc,\n      page,\n      annotation,\n      options,\n    ]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.getAllAnnotations}\n   *\n   * @public\n   */\n  getAllAnnotations(doc: PdfDocumentObject) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getAllAnnotations', doc);\n    const requestId = this.generateRequestId(doc.id);\n\n    const task = new WorkerTask<Record<number, PdfAnnotationObject[]>, PdfAnnotationsProgress>(\n      this.worker,\n      requestId,\n    );\n\n    const request: ExecuteRequest = createRequest(requestId, 'getAllAnnotations', [doc]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.getPageAnnotations}\n   *\n   * @public\n   */\n  getPageAnnotations(doc: PdfDocumentObject, page: PdfPageObject) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageAnnotations', doc, page);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<PdfAnnotationObject[]>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'getPageAnnotations', [doc, page]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.createPageAnnotation}\n   *\n   * @public\n   */\n  createPageAnnotation<A extends PdfAnnotationObject>(\n    doc: PdfDocumentObject,\n    page: PdfPageObject,\n    annotation: A,\n    context?: AnnotationCreateContext<A>,\n  ) {\n    this.logger.debug(\n      LOG_SOURCE,\n      LOG_CATEGORY,\n      'createPageAnnotations',\n      doc,\n      page,\n      annotation,\n      context,\n    );\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<string>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'createPageAnnotation', [\n      doc,\n      page,\n      annotation,\n      context,\n    ] as PdfEngineMethodArgs<'createPageAnnotation'>);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  updatePageAnnotation(\n    doc: PdfDocumentObject,\n    page: PdfPageObject,\n    annotation: PdfAnnotationObject,\n  ) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'updatePageAnnotation', doc, page, annotation);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<boolean>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'updatePageAnnotation', [\n      doc,\n      page,\n      annotation,\n    ]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.removePageAnnotation}\n   *\n   * @public\n   */\n  removePageAnnotation(\n    doc: PdfDocumentObject,\n    page: PdfPageObject,\n    annotation: PdfAnnotationObject,\n  ) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'removePageAnnotations', doc, page, annotation);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<boolean>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'removePageAnnotation', [\n      doc,\n      page,\n      annotation,\n    ]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.getPageTextRects}\n   *\n   * @public\n   */\n  getPageTextRects(doc: PdfDocumentObject, page: PdfPageObject) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageTextRects', doc, page);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<PdfTextRectObject[]>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'getPageTextRects', [doc, page]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.renderThumbnail}\n   *\n   * @public\n   */\n  renderThumbnail(\n    doc: PdfDocumentObject,\n    page: PdfPageObject,\n    options?: PdfRenderThumbnailOptions,\n  ) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'renderThumbnail', doc, page, options);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<Blob>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'renderThumbnail', [\n      doc,\n      page,\n      options,\n    ]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.searchAllPages}\n   *\n   * @public\n   */\n  searchAllPages(doc: PdfDocumentObject, keyword: string, options?: PdfSearchAllPagesOptions) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'searchAllPages', doc, keyword, options);\n\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<SearchAllPagesResult, PdfPageSearchProgress>(\n      this.worker,\n      requestId,\n    );\n\n    const request: ExecuteRequest = createRequest(requestId, 'searchAllPages', [\n      doc,\n      keyword,\n      options,\n    ]);\n\n    this.proxy(task, request);\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.saveAsCopy}\n   *\n   * @public\n   */\n  saveAsCopy(doc: PdfDocumentObject) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'saveAsCopy', doc);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'saveAsCopy', [doc]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.getAttachments}\n   *\n   * @public\n   */\n  getAttachments(doc: PdfDocumentObject) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getAttachments', doc);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<PdfAttachmentObject[]>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'getAttachments', [doc]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.addAttachment}\n   *\n   * @public\n   */\n  addAttachment(doc: PdfDocumentObject, params: PdfAddAttachmentParams) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'addAttachment', doc, params);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<boolean>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'addAttachment', [doc, params]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.removeAttachment}\n   *\n   * @public\n   */\n  removeAttachment(doc: PdfDocumentObject, attachment: PdfAttachmentObject) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'removeAttachment', doc, attachment);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<boolean>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'removeAttachment', [doc, attachment]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.readAttachmentContent}\n   *\n   * @public\n   */\n  readAttachmentContent(doc: PdfDocumentObject, attachment: PdfAttachmentObject) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'readAttachmentContent', doc, attachment);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'readAttachmentContent', [\n      doc,\n      attachment,\n    ]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.setFormFieldValue}\n   *\n   * @public\n   */\n  setFormFieldValue(\n    doc: PdfDocumentObject,\n    page: PdfPageObject,\n    annotation: PdfWidgetAnnoObject,\n    value: FormFieldValue,\n  ) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'setFormFieldValue', doc, annotation, value);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<boolean>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'setFormFieldValue', [\n      doc,\n      page,\n      annotation,\n      value,\n    ]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.flattenPage}\n   *\n   * @public\n   */\n  flattenPage(doc: PdfDocumentObject, page: PdfPageObject, options?: PdfFlattenPageOptions) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'flattenPage', doc, page, options);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<PdfPageFlattenResult>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'flattenPage', [doc, page, options]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.extractPages}\n   *\n   * @public\n   */\n  extractPages(doc: PdfDocumentObject, pageIndexes: number[]) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'extractPages', doc);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'extractPages', [doc, pageIndexes]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.redactTextInQuads}\n   *\n   * @public\n   */\n  redactTextInRects(\n    doc: PdfDocumentObject,\n    page: PdfPageObject,\n    rects: Rect[],\n    options?: PdfRedactTextOptions,\n  ) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'redactTextInRects', doc, page, rects, options);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<boolean>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'redactTextInRects', [\n      doc,\n      page,\n      rects,\n      options,\n    ]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.extractText}\n   *\n   * @public\n   */\n  extractText(doc: PdfDocumentObject, pageIndexes: number[]) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'extractText', doc);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<string>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'extractText', [doc, pageIndexes]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.getTextSlices}\n   *\n   * @public\n   */\n  getTextSlices(doc: PdfDocumentObject, slices: PageTextSlice[]) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getTextSlices', doc, slices);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<string[]>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'getTextSlices', [doc, slices]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.getPageGlyphs}\n   *\n   * @public\n   */\n  getPageGlyphs(doc: PdfDocumentObject, page: PdfPageObject) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageGlyphs', doc, page);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<PdfGlyphObject[]>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'getPageGlyphs', [doc, page]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.getPageGeometry}\n   *\n   * @public\n   */\n  getPageGeometry(doc: PdfDocumentObject, page: PdfPageObject) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'getPageGeometry', doc, page);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<PdfPageGeometry>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'getPageGeometry', [doc, page]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.merge}\n   *\n   * @public\n   */\n  merge(files: PdfFile[]) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'merge', files);\n    const fileIds = files.map((file) => file.id).join('.');\n    const requestId = this.generateRequestId(fileIds);\n    const task = new WorkerTask<PdfFile>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'merge', [files]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.mergePages}\n   *\n   * @public\n   */\n  mergePages(mergeConfigs: Array<{ docId: string; pageIndices: number[] }>) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'mergePages', mergeConfigs);\n    const requestId = this.generateRequestId(mergeConfigs.map((config) => config.docId).join('.'));\n    const task = new WorkerTask<PdfFile>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'mergePages', [mergeConfigs]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.preparePrintDocument}\n   *\n   * @public\n   */\n  preparePrintDocument(doc: PdfDocumentObject, options?: PdfPrintOptions) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'preparePrintDocument', doc, options);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<ArrayBuffer>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'preparePrintDocument', [\n      doc,\n      options,\n    ]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.closeDocument}\n   *\n   * @public\n   */\n  closeDocument(doc: PdfDocumentObject) {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'closeDocument', doc);\n    const requestId = this.generateRequestId(doc.id);\n    const task = new WorkerTask<boolean>(this.worker, requestId);\n\n    const request: ExecuteRequest = createRequest(requestId, 'closeDocument', [doc]);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * {@inheritDoc @kopjra/embedpdf-models!PdfEngine.closeAllDocuments}\n   *\n   * @public\n   */\n  closeAllDocuments() {\n    this.logger.debug(LOG_SOURCE, LOG_CATEGORY, 'closeAllDocuments');\n    const requestId = this.generateRequestId('closeAllDocuments');\n    const task = new WorkerTask<boolean>(this.worker, requestId);\n    const request: ExecuteRequest = createRequest(requestId, 'closeAllDocuments', []);\n    this.proxy(task, request);\n\n    return task;\n  }\n\n  /**\n   * Send the request to webworker inside and register the task\n   * @param task - task that waiting for the response\n   * @param request - request that needs send to web worker\n   * @param transferables - transferables that need to transfer to webworker\n   * @returns\n   *\n   * @internal\n   */\n  proxy<R>(task: WorkerTask<R>, request: ExecuteRequest, transferables: any[] = []) {\n    this.logger.debug(\n      LOG_SOURCE,\n      LOG_CATEGORY,\n      'send request to worker',\n      task,\n      request,\n      transferables,\n    );\n    this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'Begin', request.id);\n    this.readyTask.wait(\n      () => {\n        this.worker.postMessage(request, transferables);\n        task.wait(\n          () => {\n            this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);\n          },\n          () => {\n            this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);\n          },\n        );\n        this.tasks.set(request.id, task);\n      },\n      () => {\n        this.logger.perf(LOG_SOURCE, LOG_CATEGORY, `${request.data.name}`, 'End', request.id);\n        task.reject({\n          code: PdfErrorCode.Initialization,\n          message: 'worker initialization failed',\n        });\n      },\n    );\n  }\n}\n","import { Logger, serializeLogger } from '@kopjra/embedpdf-models';\n\nimport { WebWorkerEngine } from '../../webworker/engine';\n\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n// @ts-ignore injected at build time\ndeclare const __WEBWORKER_BODY__: string;\n\n/**\n * Zero-config helper:\n *   const engine = createDefaultWorkerEngine('/wasm/pdfium.wasm');\n */\nexport function createPdfiumEngine(wasmUrl: string, logger?: Logger) {\n  const worker = new Worker(\n    URL.createObjectURL(new Blob([__WEBWORKER_BODY__], { type: 'application/javascript' })),\n    {\n      type: 'module',\n    },\n  );\n\n  // Send initialization message with WASM URL\n  worker.postMessage({\n    type: 'wasmInit',\n    wasmUrl,\n    logger: logger ? serializeLogger(logger) : undefined,\n  });\n\n  return new WebWorkerEngine(worker, logger);\n}\n"],"names":["LOG_SOURCE","LOG_CATEGORY","createRequest","id","name","args","type","data","WorkerTask","Task","constructor","worker","messageId","super","this","abort","e","postMessage","progress","p","_WebWorkerEngine","logger","NoopLogger","tasks","Map","handle","evt","debug","response","task","get","readyTask","resolve","value","reject","reason","delete","error","addEventListener","readyTaskId","set","generateRequestId","Date","now","Math","random","initialize","requestId","request","proxy","destroy","finish","removeEventListener","terminate","wait","openDocumentUrl","file","options","url","openDocumentBuffer","getMetadata","doc","setMetadata","metadata","getDocPermissions","getDocUserPermissions","getBookmarks","setBookmarks","payload","deleteBookmarks","getSignatures","renderPage","page","renderPageRect","rect","renderPageAnnotation","annotation","getAllAnnotations","getPageAnnotations","createPageAnnotation","context","updatePageAnnotation","removePageAnnotation","getPageTextRects","renderThumbnail","searchAllPages","keyword","saveAsCopy","getAttachments","addAttachment","params","removeAttachment","attachment","readAttachmentContent","setFormFieldValue","flattenPage","extractPages","pageIndexes","redactTextInRects","rects","extractText","getTextSlices","slices","getPageGlyphs","getPageGeometry","merge","files","fileIds","map","join","mergePages","mergeConfigs","config","docId","preparePrintDocument","closeDocument","closeAllDocuments","transferables","perf","code","PdfErrorCode","Initialization","message","WebWorkerEngine","wasmUrl","Worker","URL","createObjectURL","Blob","__WEBWORKER_BODY__","serializeLogger"],"mappings":"wHA4CMA,EAAa,kBACbC,EAAe,SASrB,SAASC,EACPC,EACAC,EACAC,GAEA,MAAO,CACLF,KACAG,KAAM,iBACNC,KAAM,CACJH,OACAC,QAGN,CAKO,MAAMG,UAAmCC,EAAAA,KAQ9C,WAAAC,CACSC,EACCC,GAERC,QAHOC,KAAAH,OAAAA,EACCG,KAAAF,UAAAA,CAGV,CAOA,KAAAG,CAAMC,GACJH,MAAME,MAAMC,GAEZF,KAAKH,OAAOM,YAAY,CACtBd,GAAIW,KAAKF,UACTN,KAAM,gBAEV,CAOA,QAAAY,CAASC,GACPN,MAAMK,SAASC,EACjB,EAMK,MAAMC,EAAN,MAAMA,EAmBX,WAAAV,CACUC,EACAU,EAAiB,IAAIC,EAAAA,YADrBR,KAAAH,OAAAA,EACAG,KAAAO,OAAAA,EAZVP,KAAAS,UAA0CC,IA6B1CV,KAAAW,OAAUC,IACRZ,KAAKO,OAAOM,MACV3B,EACAC,EACA,4CACAyB,EAAInB,MAEN,IACE,MAAMqB,EAAWF,EAAInB,KACfsB,EAAOf,KAAKS,MAAMO,IAAIF,EAASzB,IACrC,IAAK0B,EACH,OAGF,OAAQD,EAAStB,MACf,IAAK,gBACHQ,KAAKiB,UAAUC,SAAQ,GACvB,MACF,IAAK,kBACHH,EAAKX,SAASU,EAASrB,MACvB,MACF,IAAK,kBAED,OAAQqB,EAASrB,KAAKD,MACpB,IAAK,SACHuB,EAAKG,QAAQJ,EAASrB,KAAK0B,OAC3B,MACF,IAAK,QACHJ,EAAKK,OAAON,EAASrB,KAAK0B,MAAME,QAGpCrB,KAAKS,MAAMa,OAAOR,EAASzB,IAInC,OAASa,GACPF,KAAKO,OAAOgB,MAAMrC,EAAYC,EAAc,8CAA+Ce,EAC7F,GApDAF,KAAKH,OAAO2B,iBAAiB,UAAWxB,KAAKW,QAE7CX,KAAKiB,UAAY,IAAIvB,EAAoBM,KAAKH,OAAQS,EAAgBmB,aACtEzB,KAAKS,MAAMiB,IAAIpB,EAAgBmB,YAAazB,KAAKiB,UACnD,CAyDA,iBAAAU,CAAkBtC,GAChB,MAAO,GAAGA,KAAMuC,KAAKC,SAASC,KAAKC,UACrC,CAOA,UAAAC,GACEhC,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,cAC5C,MAAM8C,EAAYjC,KAAK2B,kBAAkB,WACnCZ,EAAO,IAAIrB,EAAoBM,KAAKH,OAAQoC,GAE5CC,EAA0B9C,EAAc6C,EAAW,aAAc,IAGvE,OAFAjC,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,OAAAqB,GACEpC,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,WAC5C,MAAM8C,EAAYjC,KAAK2B,kBAAkB,WACnCZ,EAAO,IAAIrB,EAAoBM,KAAKH,OAAQoC,GAE5CI,EAAS,KACbrC,KAAKH,OAAOyC,oBAAoB,UAAWtC,KAAKW,QAChDX,KAAKH,OAAO0C,aAGdxB,EAAKyB,KAAKH,EAAQA,GAElB,MAAMH,EAA0B9C,EAAc6C,EAAW,UAAW,IAGpE,OAFAjC,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,eAAA0B,CAAgBC,EAAkBC,GAChC3C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,kBAAmBuD,EAAKE,IAAKD,GACzE,MAAMV,EAAYjC,KAAK2B,kBAAkBe,EAAKrD,IACxC0B,EAAO,IAAIrB,EAA8BM,KAAKH,OAAQoC,GAEtDC,EAA0B9C,EAAc6C,EAAW,kBAAmB,CAACS,EAAMC,IAGnF,OAFA3C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,kBAAA8B,CAAmBH,EAAeC,GAChC3C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,qBAAsBuD,EAAMC,GACxE,MAAMV,EAAYjC,KAAK2B,kBAAkBe,EAAKrD,IACxC0B,EAAO,IAAIrB,EAA8BM,KAAKH,OAAQoC,GAEtDC,EAA0B9C,EAAc6C,EAAW,qBAAsB,CAACS,EAAMC,IAGtF,OAFA3C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,WAAA+B,CAAYC,GACV/C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,cAAe4D,GAC3D,MAAMd,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAA8BM,KAAKH,OAAQoC,GAEtDC,EAA0B9C,EAAc6C,EAAW,cAAe,CAACc,IAGzE,OAFA/C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,WAAAiC,CAAYD,EAAwBE,GAClCjD,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,cAAe4D,EAAKE,GAChE,MAAMhB,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAoBM,KAAKH,OAAQoC,GAE5CC,EAA0B9C,EAAc6C,EAAW,cAAe,CAACc,EAAKE,IAG9E,OAFAjD,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,iBAAAmC,CAAkBH,GAChB/C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,oBAAqB4D,GACjE,MAAMd,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAmBM,KAAKH,OAAQoC,GAE3CC,EAA0B9C,EAAc6C,EAAW,oBAAqB,CAACc,IAG/E,OAFA/C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,qBAAAoC,CAAsBJ,GACpB/C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,wBAAyB4D,GACrE,MAAMd,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAmBM,KAAKH,OAAQoC,GAE3CC,EAA0B9C,EAAc6C,EAAW,wBAAyB,CAACc,IAGnF,OAFA/C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,YAAAqC,CAAaL,GACX/C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,eAAgB4D,GAC5D,MAAMd,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAA+BM,KAAKH,OAAQoC,GAEvDC,EAA0B9C,EAAc6C,EAAW,eAAgB,CAACc,IAG1E,OAFA/C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,YAAAsC,CAAaN,EAAwBO,GACnCtD,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,eAAgB4D,EAAKO,GACjE,MAAMrB,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAoBM,KAAKH,OAAQoC,GAE5CC,EAA0B9C,EAAc6C,EAAW,eAAgB,CAACc,EAAKO,IAG/E,OAFAtD,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,eAAAwC,CAAgBR,GACd/C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,kBAAmB4D,GAC/D,MAAMd,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAoBM,KAAKH,OAAQoC,GAE5CC,EAA0B9C,EAAc6C,EAAW,kBAAmB,CAACc,IAG7E,OAFA/C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,aAAAyC,CAAcT,GACZ/C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,gBAAiB4D,GAC7D,MAAMd,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAiCM,KAAKH,OAAQoC,GAEzDC,EAA0B9C,EAAc6C,EAAW,gBAAiB,CAACc,IAG3E,OAFA/C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,UAAA0C,CAAWV,EAAwBW,EAAqBf,GACtD3C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,aAAc4D,EAAKW,EAAMf,GACrE,MAAMV,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAiBM,KAAKH,OAAQoC,GAEzCC,EAA0B9C,EAAc6C,EAAW,aAAc,CAACc,EAAKW,EAAMf,IAGnF,OAFA3C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,cAAA4C,CACEZ,EACAW,EACAE,EACAjB,GAEA3C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,iBAAkB4D,EAAKW,EAAME,EAAMjB,GAC/E,MAAMV,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAiBM,KAAKH,OAAQoC,GAEzCC,EAA0B9C,EAAc6C,EAAW,iBAAkB,CACzEc,EACAW,EACAE,EACAjB,IAIF,OAFA3C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,oBAAA8C,CACEd,EACAW,EACAI,EACAnB,GAEA3C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,mBAAoB4D,EAAKW,EAAMI,EAAYnB,GACvF,MAAMV,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAiBM,KAAKH,OAAQoC,GAEzCC,EAA0B9C,EAAc6C,EAAW,uBAAwB,CAC/Ec,EACAW,EACAI,EACAnB,IAIF,OAFA3C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,iBAAAgD,CAAkBhB,GAChB/C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,oBAAqB4D,GACjE,MAAMd,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IAEvC0B,EAAO,IAAIrB,EACfM,KAAKH,OACLoC,GAGIC,EAA0B9C,EAAc6C,EAAW,oBAAqB,CAACc,IAG/E,OAFA/C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,kBAAAiD,CAAmBjB,EAAwBW,GACzC1D,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,qBAAsB4D,EAAKW,GACvE,MAAMzB,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAkCM,KAAKH,OAAQoC,GAE1DC,EAA0B9C,EAAc6C,EAAW,qBAAsB,CAACc,EAAKW,IAGrF,OAFA1D,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,oBAAAkD,CACElB,EACAW,EACAI,EACAI,GAEAlE,KAAKO,OAAOM,MACV3B,EACAC,EACA,wBACA4D,EACAW,EACAI,EACAI,GAEF,MAAMjC,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAmBM,KAAKH,OAAQoC,GAE3CC,EAA0B9C,EAAc6C,EAAW,uBAAwB,CAC/Ec,EACAW,EACAI,EACAI,IAIF,OAFAlE,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAEA,oBAAAoD,CACEpB,EACAW,EACAI,GAEA9D,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,uBAAwB4D,EAAKW,EAAMI,GAC/E,MAAM7B,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAoBM,KAAKH,OAAQoC,GAE5CC,EAA0B9C,EAAc6C,EAAW,uBAAwB,CAC/Ec,EACAW,EACAI,IAIF,OAFA9D,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,oBAAAqD,CACErB,EACAW,EACAI,GAEA9D,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,wBAAyB4D,EAAKW,EAAMI,GAChF,MAAM7B,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAoBM,KAAKH,OAAQoC,GAE5CC,EAA0B9C,EAAc6C,EAAW,uBAAwB,CAC/Ec,EACAW,EACAI,IAIF,OAFA9D,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,gBAAAsD,CAAiBtB,EAAwBW,GACvC1D,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,mBAAoB4D,EAAKW,GACrE,MAAMzB,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAgCM,KAAKH,OAAQoC,GAExDC,EAA0B9C,EAAc6C,EAAW,mBAAoB,CAACc,EAAKW,IAGnF,OAFA1D,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,eAAAuD,CACEvB,EACAW,EACAf,GAEA3C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,kBAAmB4D,EAAKW,EAAMf,GAC1E,MAAMV,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAiBM,KAAKH,OAAQoC,GAEzCC,EAA0B9C,EAAc6C,EAAW,kBAAmB,CAC1Ec,EACAW,EACAf,IAIF,OAFA3C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,cAAAwD,CAAexB,EAAwByB,EAAiB7B,GACtD3C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,iBAAkB4D,EAAKyB,EAAS7B,GAE5E,MAAMV,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EACfM,KAAKH,OACLoC,GAGIC,EAA0B9C,EAAc6C,EAAW,iBAAkB,CACzEc,EACAyB,EACA7B,IAIF,OADA3C,KAAKmC,MAAMpB,EAAMmB,GACVnB,CACT,CAOA,UAAA0D,CAAW1B,GACT/C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,aAAc4D,GAC1D,MAAMd,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAwBM,KAAKH,OAAQoC,GAEhDC,EAA0B9C,EAAc6C,EAAW,aAAc,CAACc,IAGxE,OAFA/C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,cAAA2D,CAAe3B,GACb/C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,iBAAkB4D,GAC9D,MAAMd,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAkCM,KAAKH,OAAQoC,GAE1DC,EAA0B9C,EAAc6C,EAAW,iBAAkB,CAACc,IAG5E,OAFA/C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,aAAA4D,CAAc5B,EAAwB6B,GACpC5E,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,gBAAiB4D,EAAK6B,GAClE,MAAM3C,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAoBM,KAAKH,OAAQoC,GAE5CC,EAA0B9C,EAAc6C,EAAW,gBAAiB,CAACc,EAAK6B,IAGhF,OAFA5E,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,gBAAA8D,CAAiB9B,EAAwB+B,GACvC9E,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,mBAAoB4D,EAAK+B,GACrE,MAAM7C,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAoBM,KAAKH,OAAQoC,GAE5CC,EAA0B9C,EAAc6C,EAAW,mBAAoB,CAACc,EAAK+B,IAGnF,OAFA9E,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,qBAAAgE,CAAsBhC,EAAwB+B,GAC5C9E,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,wBAAyB4D,EAAK+B,GAC1E,MAAM7C,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAwBM,KAAKH,OAAQoC,GAEhDC,EAA0B9C,EAAc6C,EAAW,wBAAyB,CAChFc,EACA+B,IAIF,OAFA9E,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,iBAAAiE,CACEjC,EACAW,EACAI,EACA3C,GAEAnB,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,oBAAqB4D,EAAKe,EAAY3C,GAClF,MAAMc,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAoBM,KAAKH,OAAQoC,GAE5CC,EAA0B9C,EAAc6C,EAAW,oBAAqB,CAC5Ec,EACAW,EACAI,EACA3C,IAIF,OAFAnB,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,WAAAkE,CAAYlC,EAAwBW,EAAqBf,GACvD3C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,cAAe4D,EAAKW,EAAMf,GACtE,MAAMV,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAiCM,KAAKH,OAAQoC,GAEzDC,EAA0B9C,EAAc6C,EAAW,cAAe,CAACc,EAAKW,EAAMf,IAGpF,OAFA3C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,YAAAmE,CAAanC,EAAwBoC,GACnCnF,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,eAAgB4D,GAC5D,MAAMd,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAwBM,KAAKH,OAAQoC,GAEhDC,EAA0B9C,EAAc6C,EAAW,eAAgB,CAACc,EAAKoC,IAG/E,OAFAnF,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,iBAAAqE,CACErC,EACAW,EACA2B,EACA1C,GAEA3C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,oBAAqB4D,EAAKW,EAAM2B,EAAO1C,GACnF,MAAMV,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAoBM,KAAKH,OAAQoC,GAE5CC,EAA0B9C,EAAc6C,EAAW,oBAAqB,CAC5Ec,EACAW,EACA2B,EACA1C,IAIF,OAFA3C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,WAAAuE,CAAYvC,EAAwBoC,GAClCnF,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,cAAe4D,GAC3D,MAAMd,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAmBM,KAAKH,OAAQoC,GAE3CC,EAA0B9C,EAAc6C,EAAW,cAAe,CAACc,EAAKoC,IAG9E,OAFAnF,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,aAAAwE,CAAcxC,EAAwByC,GACpCxF,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,gBAAiB4D,EAAKyC,GAClE,MAAMvD,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAqBM,KAAKH,OAAQoC,GAE7CC,EAA0B9C,EAAc6C,EAAW,gBAAiB,CAACc,EAAKyC,IAGhF,OAFAxF,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,aAAA0E,CAAc1C,EAAwBW,GACpC1D,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,gBAAiB4D,EAAKW,GAClE,MAAMzB,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAA6BM,KAAKH,OAAQoC,GAErDC,EAA0B9C,EAAc6C,EAAW,gBAAiB,CAACc,EAAKW,IAGhF,OAFA1D,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,eAAA2E,CAAgB3C,EAAwBW,GACtC1D,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,kBAAmB4D,EAAKW,GACpE,MAAMzB,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAA4BM,KAAKH,OAAQoC,GAEpDC,EAA0B9C,EAAc6C,EAAW,kBAAmB,CAACc,EAAKW,IAGlF,OAFA1D,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,KAAA4E,CAAMC,GACJ5F,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,QAASyG,GACrD,MAAMC,EAAUD,EAAME,IAAKpD,GAASA,EAAKrD,IAAI0G,KAAK,KAC5C9D,EAAYjC,KAAK2B,kBAAkBkE,GACnC9E,EAAO,IAAIrB,EAAoBM,KAAKH,OAAQoC,GAE5CC,EAA0B9C,EAAc6C,EAAW,QAAS,CAAC2D,IAGnE,OAFA5F,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,UAAAiF,CAAWC,GACTjG,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,aAAc8G,GAC1D,MAAMhE,EAAYjC,KAAK2B,kBAAkBsE,EAAaH,IAAKI,GAAWA,EAAOC,OAAOJ,KAAK,MACnFhF,EAAO,IAAIrB,EAAoBM,KAAKH,OAAQoC,GAE5CC,EAA0B9C,EAAc6C,EAAW,aAAc,CAACgE,IAGxE,OAFAjG,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,oBAAAqF,CAAqBrD,EAAwBJ,GAC3C3C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,uBAAwB4D,EAAKJ,GACzE,MAAMV,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAwBM,KAAKH,OAAQoC,GAEhDC,EAA0B9C,EAAc6C,EAAW,uBAAwB,CAC/Ec,EACAJ,IAIF,OAFA3C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,aAAAsF,CAActD,GACZ/C,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,gBAAiB4D,GAC7D,MAAMd,EAAYjC,KAAK2B,kBAAkBoB,EAAI1D,IACvC0B,EAAO,IAAIrB,EAAoBM,KAAKH,OAAQoC,GAE5CC,EAA0B9C,EAAc6C,EAAW,gBAAiB,CAACc,IAG3E,OAFA/C,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAOA,iBAAAuF,GACEtG,KAAKO,OAAOM,MAAM3B,EAAYC,EAAc,qBAC5C,MAAM8C,EAAYjC,KAAK2B,kBAAkB,qBACnCZ,EAAO,IAAIrB,EAAoBM,KAAKH,OAAQoC,GAC5CC,EAA0B9C,EAAc6C,EAAW,oBAAqB,IAG9E,OAFAjC,KAAKmC,MAAMpB,EAAMmB,GAEVnB,CACT,CAWA,KAAAoB,CAASpB,EAAqBmB,EAAyBqE,EAAuB,IAC5EvG,KAAKO,OAAOM,MACV3B,EACAC,EACA,yBACA4B,EACAmB,EACAqE,GAEFvG,KAAKO,OAAOiG,KAAKtH,EAAYC,EAAc,GAAG+C,EAAQzC,KAAKH,OAAQ,QAAS4C,EAAQ7C,IACpFW,KAAKiB,UAAUuB,KACb,KACExC,KAAKH,OAAOM,YAAY+B,EAASqE,GACjCxF,EAAKyB,KACH,KACExC,KAAKO,OAAOiG,KAAKtH,EAAYC,EAAc,GAAG+C,EAAQzC,KAAKH,OAAQ,MAAO4C,EAAQ7C,KAEpF,KACEW,KAAKO,OAAOiG,KAAKtH,EAAYC,EAAc,GAAG+C,EAAQzC,KAAKH,OAAQ,MAAO4C,EAAQ7C,MAGtFW,KAAKS,MAAMiB,IAAIQ,EAAQ7C,GAAI0B,IAE7B,KACEf,KAAKO,OAAOiG,KAAKtH,EAAYC,EAAc,GAAG+C,EAAQzC,KAAKH,OAAQ,MAAO4C,EAAQ7C,IAClF0B,EAAKK,OAAO,CACVqF,KAAMC,EAAAA,aAAaC,eACnBC,QAAS,kCAIjB,GAr3BAtG,EAAOmB,YAAc,IADhB,IAAMoF,EAANvG,6BCtGA,SAA4BwG,EAAiBvG,GAClD,MAAMV,EAAS,IAAIkH,OACjBC,IAAIC,gBAAgB,IAAIC,KAAK,CAACC,oBAAqB,CAAE3H,KAAM,4BAC3D,CACEA,KAAM,WAWV,OANAK,EAAOM,YAAY,CACjBX,KAAM,WACNsH,UACAvG,OAAQA,EAAS6G,kBAAgB7G,QAAU,IAGtC,IAAIsG,EAAgBhH,EAAQU,EACrC"}