cod-dicomweb-server 1.3.11 → 1.3.12

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.
@@ -7,7 +7,7 @@ declare class CodDicomWebServer {
7
7
  private metadataManager;
8
8
  private seriesUidFileUrls;
9
9
  constructor(args?: {
10
- maxWorkerFetchSize?: number;
10
+ maxCacheSize?: number;
11
11
  domain?: string;
12
12
  disableWorker?: boolean;
13
13
  enableLocalCache?: boolean;
@@ -11,7 +11,7 @@ import { download, getDirectoryHandle } from '../fileAccessSystemUtils';
11
11
  class CodDicomWebServer {
12
12
  filePromises = {};
13
13
  options = {
14
- maxWorkerFetchSize: Infinity,
14
+ maxCacheSize: 4 * 1024 * 1024 * 1024,
15
15
  domain: constants.url.DOMAIN,
16
16
  enableLocalCache: false
17
17
  };
@@ -19,19 +19,19 @@ class CodDicomWebServer {
19
19
  metadataManager;
20
20
  seriesUidFileUrls = {};
21
21
  constructor(args = {}) {
22
- const { maxWorkerFetchSize, domain, disableWorker, enableLocalCache } = args;
23
- this.options.maxWorkerFetchSize = maxWorkerFetchSize || this.options.maxWorkerFetchSize;
22
+ const { maxCacheSize, domain, disableWorker, enableLocalCache } = args;
23
+ this.options.maxCacheSize = maxCacheSize || this.options.maxCacheSize;
24
24
  this.options.domain = domain || this.options.domain;
25
25
  this.options.enableLocalCache = !!enableLocalCache;
26
26
  const fileStreamingScriptName = constants.dataRetrieval.FILE_STREAMING_WORKER_NAME;
27
27
  const filePartialScriptName = constants.dataRetrieval.FILE_PARTIAL_WORKER_NAME;
28
- this.fileManager = new FileManager({ fileStreamingScriptName });
28
+ this.fileManager = new FileManager();
29
29
  this.metadataManager = new MetadataManager();
30
30
  if (disableWorker) {
31
31
  const dataRetrievalManager = getDataRetrievalManager();
32
32
  dataRetrievalManager.setDataRetrieverMode(Enums.DataRetrieveMode.REQUEST);
33
33
  }
34
- register({ fileStreamingScriptName, filePartialScriptName }, this.options.maxWorkerFetchSize);
34
+ register({ fileStreamingScriptName, filePartialScriptName });
35
35
  }
36
36
  setOptions = (newOptions) => {
37
37
  Object.keys(newOptions).forEach((key) => {
@@ -163,15 +163,11 @@ class CodDicomWebServer {
163
163
  });
164
164
  }
165
165
  const directoryHandle = this.options.enableLocalCache && (await getDirectoryHandle());
166
- const { maxWorkerFetchSize } = this.getOptions();
167
166
  const dataRetrievalManager = getDataRetrievalManager();
168
- const { FILE_STREAMING_WORKER_NAME, FILE_PARTIAL_WORKER_NAME, THRESHOLD } = constants.dataRetrieval;
167
+ const { FILE_STREAMING_WORKER_NAME, FILE_PARTIAL_WORKER_NAME } = constants.dataRetrieval;
169
168
  let tarPromise;
170
169
  if (!this.filePromises[fileUrl]) {
171
170
  tarPromise = new Promise((resolveFile, rejectFile) => {
172
- if (this.fileManager.getTotalSize() + THRESHOLD > maxWorkerFetchSize) {
173
- throw new CustomError(`CodDicomWebServer.ts: Maximum size(${maxWorkerFetchSize}) for fetching files reached`);
174
- }
175
171
  const FetchTypeEnum = constants.Enums.FetchType;
176
172
  if (fetchType === FetchTypeEnum.API_OPTIMIZED) {
177
173
  const handleFirstChunk = (evt) => {
@@ -251,7 +247,7 @@ class CodDicomWebServer {
251
247
  rejectRequest(evt.message);
252
248
  throw evt.error;
253
249
  }
254
- const { url, position, chunk, isAppending } = evt.data;
250
+ const { url, position, chunk, totalLength, isAppending } = evt.data;
255
251
  if (isAppending) {
256
252
  if (chunk) {
257
253
  this.fileManager.append(url, chunk, position);
@@ -260,6 +256,14 @@ class CodDicomWebServer {
260
256
  this.fileManager.setPosition(url, position);
261
257
  }
262
258
  }
259
+ else {
260
+ // The full empty file including with first chunk have been stored to fileManager
261
+ // by the worker listener in the file promise.
262
+ // So, we check whether the cache exceeded the limit here.
263
+ if (this.fileManager.getTotalSize() > this.options.maxCacheSize) {
264
+ this.fileManager.decacheNecessaryBytes(url, totalLength);
265
+ }
266
+ }
263
267
  if (!requestResolved && url === fileUrl && offsets && position > offsets.endByte) {
264
268
  try {
265
269
  const file = this.fileManager.get(url, offsets);
@@ -11,6 +11,7 @@ export declare class CustomMessageEvent extends MessageEvent<{
11
11
  chunk?: Uint8Array;
12
12
  isAppending?: boolean;
13
13
  fileArraybuffer?: Uint8Array;
14
+ totalLength: number;
14
15
  offsets?: {
15
16
  startByte: number;
16
17
  endByte: number;
@@ -1,4 +1,4 @@
1
1
  export declare function register(workerNames: {
2
2
  fileStreamingScriptName: string;
3
3
  filePartialScriptName: string;
4
- }, maxFetchSize: number): void;
4
+ }): void;
@@ -2,7 +2,7 @@ import { Enums } from '../constants';
2
2
  import { getDataRetrievalManager } from './dataRetrievalManager';
3
3
  import filePartial from './scripts/filePartial';
4
4
  import fileStreaming from './scripts/fileStreaming';
5
- export function register(workerNames, maxFetchSize) {
5
+ export function register(workerNames) {
6
6
  const { fileStreamingScriptName, filePartialScriptName } = workerNames;
7
7
  const dataRetrievalManager = getDataRetrievalManager();
8
8
  if (dataRetrievalManager.getDataRetrieverMode() === Enums.DataRetrieveMode.REQUEST) {
@@ -21,5 +21,4 @@ export function register(workerNames, maxFetchSize) {
21
21
  });
22
22
  dataRetrievalManager.register(filePartialScriptName, partialWorkerFn);
23
23
  }
24
- dataRetrievalManager.executeTask(fileStreamingScriptName, 'setMaxFetchSize', maxFetchSize);
25
24
  }
@@ -1,8 +1,4 @@
1
1
  declare const fileStreaming: {
2
- maxFetchSize: number;
3
- fetchedSize: number;
4
- setMaxFetchSize(size: number): void;
5
- decreaseFetchedSize(size: number): void;
6
2
  stream(args: {
7
3
  url: string;
8
4
  headers?: Record<string, string>;
@@ -14,6 +10,7 @@ declare const fileStreaming: {
14
10
  isAppending?: boolean;
15
11
  fileArraybuffer?: Uint8Array;
16
12
  chunk?: Uint8Array;
13
+ totalLength: number;
17
14
  }) => void): Promise<Uint8Array | void>;
18
15
  };
19
16
  export default fileStreaming;
@@ -1,18 +1,6 @@
1
1
  import { CustomError } from '../../classes/customClasses';
2
2
  import { createStreamingFileName, readFile, writeFile } from '../../fileAccessSystemUtils';
3
3
  const fileStreaming = {
4
- maxFetchSize: 4 * 1024 * 1024 * 1024,
5
- fetchedSize: 0,
6
- setMaxFetchSize(size) {
7
- if (size > 0) {
8
- this.maxFetchSize = size;
9
- }
10
- },
11
- decreaseFetchedSize(size) {
12
- if (size > 0 && size <= this.fetchedSize) {
13
- this.fetchedSize -= size;
14
- }
15
- },
16
4
  async stream(args, callBack) {
17
5
  const { url, headers, useSharedArrayBuffer, directoryHandle } = args;
18
6
  const controller = new AbortController();
@@ -23,7 +11,8 @@ const fileStreaming = {
23
11
  if (directoryHandle) {
24
12
  const file = (await readFile(directoryHandle, fileName, { isJson: false }));
25
13
  if (file) {
26
- callBack({ url, position: file.byteLength, fileArraybuffer: new Uint8Array(file) });
14
+ const totalLength = file.byteLength;
15
+ callBack({ url, position: totalLength, fileArraybuffer: new Uint8Array(file), totalLength });
27
16
  return;
28
17
  }
29
18
  }
@@ -48,11 +37,6 @@ const fileStreaming = {
48
37
  }
49
38
  if (!completed) {
50
39
  let position = firstChunk.value.length;
51
- if (this.fetchedSize + position > this.maxFetchSize) {
52
- controller.abort();
53
- throw new CustomError(`Maximum size(${this.maxFetchSize}) for fetching files reached`);
54
- }
55
- this.fetchedSize += position;
56
40
  if (useSharedArrayBuffer) {
57
41
  sharedArraybuffer = new SharedArrayBuffer(totalLength);
58
42
  fileArraybuffer = new Uint8Array(sharedArraybuffer);
@@ -61,7 +45,7 @@ const fileStreaming = {
61
45
  fileArraybuffer = new Uint8Array(totalLength);
62
46
  }
63
47
  fileArraybuffer.set(firstChunk.value);
64
- callBack({ url, position, fileArraybuffer });
48
+ callBack({ url, position, fileArraybuffer, totalLength });
65
49
  while (!completed) {
66
50
  result = await reader.read();
67
51
  if (result.done) {
@@ -69,20 +53,14 @@ const fileStreaming = {
69
53
  continue;
70
54
  }
71
55
  const chunk = result.value;
72
- if (this.fetchedSize + chunk.length > this.maxFetchSize) {
73
- sharedArraybuffer = null;
74
- fileArraybuffer = null;
75
- controller.abort();
76
- throw new CustomError(`Maximum size(${this.maxFetchSize}) for fetching files reached`);
77
- }
78
- this.fetchedSize += chunk.length;
79
56
  fileArraybuffer.set(chunk, position);
80
57
  position += chunk.length;
81
58
  callBack({
82
59
  isAppending: true,
83
60
  url,
84
61
  position: position,
85
- chunk: !useSharedArrayBuffer ? chunk : undefined
62
+ chunk: !useSharedArrayBuffer ? chunk : undefined,
63
+ totalLength
86
64
  });
87
65
  }
88
66
  if (directoryHandle) {
@@ -1,12 +1,7 @@
1
- import type { FileManagerOptions } from './types';
1
+ import type { FileManagerFile } from './types';
2
2
  declare class FileManager {
3
3
  private files;
4
- private fileStreamingScriptName;
5
- constructor({ fileStreamingScriptName }: FileManagerOptions);
6
- set(url: string, file: {
7
- data: Uint8Array;
8
- position: number;
9
- }): void;
4
+ set(url: string, file: Omit<FileManagerFile, 'lastModified'>): void;
10
5
  get(url: string, offsets?: {
11
6
  startByte: number;
12
7
  endByte: number;
@@ -17,5 +12,6 @@ declare class FileManager {
17
12
  getTotalSize(): number;
18
13
  remove(url: string): void;
19
14
  purge(): void;
15
+ decacheNecessaryBytes(url: string, bytesNeeded: number): number;
20
16
  }
21
17
  export default FileManager;
@@ -1,12 +1,7 @@
1
- import { getDataRetrievalManager } from './dataRetrieval/dataRetrievalManager';
2
1
  class FileManager {
3
2
  files = {};
4
- fileStreamingScriptName;
5
- constructor({ fileStreamingScriptName }) {
6
- this.fileStreamingScriptName = fileStreamingScriptName;
7
- }
8
3
  set(url, file) {
9
- this.files[url] = file;
4
+ this.files[url] = { ...file, lastModified: Date.now() };
10
5
  }
11
6
  get(url, offsets) {
12
7
  if (!this.files[url] || (offsets && this.files[url].position <= offsets.endByte)) {
@@ -17,6 +12,7 @@ class FileManager {
17
12
  setPosition(url, position) {
18
13
  if (this.files[url]) {
19
14
  this.files[url].position = position;
15
+ this.files[url].lastModified = Date.now();
20
16
  }
21
17
  }
22
18
  getPosition(url) {
@@ -29,24 +25,40 @@ class FileManager {
29
25
  }
30
26
  }
31
27
  getTotalSize() {
32
- return Object.entries(this.files).reduce((total, [url, { position }]) => {
33
- return url.includes('?bytes=') ? total : total + position;
28
+ return Object.values(this.files).reduce((total, { data }) => {
29
+ return total + data.byteLength;
34
30
  }, 0);
35
31
  }
36
32
  remove(url) {
37
- const removedSize = this.getPosition(url);
38
- delete this.files[url];
39
- if (url.includes('?bytes=')) {
40
- return;
33
+ try {
34
+ delete this.files[url];
35
+ console.log(`Removed ${url} from CodDicomwebServer cache`);
36
+ }
37
+ catch (error) {
38
+ console.warn(`Error removing ${url} from CodDicomwebServer cache:`, error);
41
39
  }
42
- const retrievalManager = getDataRetrievalManager();
43
- retrievalManager.executeTask(this.fileStreamingScriptName, 'decreaseFetchedSize', removedSize);
44
40
  }
45
41
  purge() {
42
+ const fileURLs = Object.keys(this.files);
43
+ const totalSize = this.getTotalSize();
44
+ fileURLs.forEach((url) => this.remove(url));
45
+ console.log(`Purged ${totalSize - this.getTotalSize()} bytes from CodDicomwebServer cache`);
46
+ }
47
+ decacheNecessaryBytes(url, bytesNeeded) {
46
48
  const totalSize = this.getTotalSize();
47
- this.files = {};
48
- const retrievalManager = getDataRetrievalManager();
49
- retrievalManager.executeTask(this.fileStreamingScriptName, 'decreaseFetchedSize', totalSize);
49
+ const filesToDelete = [];
50
+ let collectiveSize = 0;
51
+ Object.entries(this.files)
52
+ .sort(([, a], [, b]) => a.lastModified - b.lastModified)
53
+ .forEach(([key, file]) => {
54
+ if (collectiveSize < bytesNeeded && key !== url) {
55
+ filesToDelete.push(key);
56
+ collectiveSize += file.data.byteLength;
57
+ }
58
+ });
59
+ filesToDelete.forEach((key) => this.remove(key));
60
+ console.log(`Decached ${totalSize - this.getTotalSize()} bytes`);
61
+ return collectiveSize;
50
62
  }
51
63
  }
52
64
  export default FileManager;
@@ -1,6 +1,6 @@
1
1
  type CodDicomWebServerOptions = {
2
2
  [key: string]: number | string | boolean;
3
- maxWorkerFetchSize: number;
3
+ maxCacheSize: number;
4
4
  domain: string;
5
5
  enableLocalCache: boolean;
6
6
  };
@@ -0,0 +1,6 @@
1
+ type FileManagerFile = {
2
+ data: Uint8Array;
3
+ position: number;
4
+ lastModified: number;
5
+ };
6
+ export type { FileManagerFile };
@@ -1,5 +1,5 @@
1
1
  export * from './codDicomWebServerOptions';
2
- export * from './fileManagerOptions';
2
+ export * from './fileManagerFile';
3
3
  export * from './metadata';
4
4
  export * from './metadataUrlCreationParams';
5
5
  export * from './parsedWadoRsUrlDetails';
@@ -1,5 +1,5 @@
1
1
  export * from './codDicomWebServerOptions';
2
- export * from './fileManagerOptions';
2
+ export * from './fileManagerFile';
3
3
  export * from './metadata';
4
4
  export * from './metadataUrlCreationParams';
5
5
  export * from './parsedWadoRsUrlDetails';
package/dist/umd/563.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  *
3
- * cod-dicomweb-server v1.3.11
3
+ * cod-dicomweb-server v1.3.12
4
4
  * git+https://github.com/gradienthealth/cod-dicomweb-server.git
5
5
  *
6
6
  * Copyright (c) Adithyan Dinesh and project contributors.
@@ -1 +1 @@
1
- {"version":3,"file":"563.js","mappings":";;;;;;;;;;;CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,EACvE,CACA,CATD,CASGC,MAAM,IACT,M;;;;;;ACLA,MAAMC,EAAcC,OAAO,iBACrBC,EAAiBD,OAAO,oBACxBE,EAAeF,OAAO,wBACtBG,EAAYH,OAAO,qBACnBI,EAAcJ,OAAO,kBACrBK,EAAYC,GAAwB,iBAARA,GAA4B,OAARA,GAAgC,mBAARA,EAIxEC,EAAuB,CACzBC,UAAYF,GAAQD,EAASC,IAAQA,EAAIP,GACzC,SAAAU,CAAUC,GACN,MAAM,MAAEC,EAAK,MAAEC,GAAU,IAAIC,eAE7B,OADAC,EAAOJ,EAAKC,GACL,CAACC,EAAO,CAACA,GACpB,EACAG,YAAYC,IACRA,EAAKC,QAgJb,SAAcC,EAAIC,GACd,MAAMC,EAAmB,IAAIC,IAiB7B,OAhBAH,EAAGI,iBAAiB,WAAW,SAAuBC,GAClD,MAAM,KAAEC,GAASD,EACjB,IAAKC,IAASA,EAAKC,GACf,OAEJ,MAAMC,EAAWN,EAAiBO,IAAIH,EAAKC,IAC3C,GAAKC,EAGL,IACIA,EAASF,EACb,CACA,QACIJ,EAAiBQ,OAAOJ,EAAKC,GACjC,CACJ,IACOI,EAAYX,EAAIE,EAAkB,GAAID,EACjD,CAlKeW,CAAKd,KAmCde,EAAmB,IAAIV,IAAI,CAC7B,CAAC,QAASd,GACV,CAAC,QA/BwB,CACzBC,UAAYwB,GAAU3B,EAAS2B,IAAU5B,KAAe4B,EACxD,SAAAvB,EAAU,MAAEuB,IACR,IAAIC,EAcJ,OAZIA,EADAD,aAAiBE,MACJ,CACTC,SAAS,EACTH,MAAO,CACHI,QAASJ,EAAMI,QACfC,KAAML,EAAMK,KACZC,MAAON,EAAMM,QAKR,CAAEH,SAAS,EAAOH,SAE5B,CAACC,EAAY,GACxB,EACA,WAAAlB,CAAYkB,GACR,GAAIA,EAAWE,QACX,MAAMI,OAAOC,OAAO,IAAIN,MAAMD,EAAWD,MAAMI,SAAUH,EAAWD,OAExE,MAAMC,EAAWD,KACrB,MAoBJ,SAASlB,EAAOJ,EAAKQ,EAAKuB,WAAYC,EAAiB,CAAC,MACpDxB,EAAGI,iBAAiB,WAAW,SAASqB,EAASpB,GAC7C,IAAKA,IAAOA,EAAGC,KACX,OAEJ,IAhBR,SAAyBkB,EAAgBE,GACrC,IAAK,MAAMC,KAAiBH,EAAgB,CACxC,GAAIE,IAAWC,GAAmC,MAAlBA,EAC5B,OAAO,EAEX,GAAIA,aAAyBC,QAAUD,EAAcE,KAAKH,GACtD,OAAO,CAEf,CACA,OAAO,CACX,CAMaI,CAAgBN,EAAgBnB,EAAGqB,QAEpC,YADAK,QAAQC,KAAK,mBAAmB3B,EAAGqB,6BAGvC,MAAM,GAAEnB,EAAE,KAAE0B,EAAI,KAAEC,GAASb,OAAOC,OAAO,CAAEY,KAAM,IAAM7B,EAAGC,MACpD6B,GAAgB9B,EAAGC,KAAK6B,cAAgB,IAAIC,IAAIC,GACtD,IAAIC,EACJ,IACI,MAAMC,EAASL,EAAKM,MAAM,GAAI,GAAGC,QAAO,CAACjD,EAAKkD,IAASlD,EAAIkD,IAAOlD,GAC5DmD,EAAWT,EAAKO,QAAO,CAACjD,EAAKkD,IAASlD,EAAIkD,IAAOlD,GACvD,OAAQyC,GACJ,IAAK,MAEGK,EAAcK,EAElB,MACJ,IAAK,MAEGJ,EAAOL,EAAKM,OAAO,GAAG,IAAMH,EAAchC,EAAGC,KAAKQ,OAClDwB,GAAc,EAElB,MACJ,IAAK,QAEGA,EAAcK,EAASC,MAAML,EAAQJ,GAEzC,MACJ,IAAK,YAGGG,EA+LxB,SAAe9C,GACX,OAAO6B,OAAOC,OAAO9B,EAAK,CAAE,CAACX,IAAc,GAC/C,CAjMsCgE,CADA,IAAIF,KAAYR,IAGlC,MACJ,IAAK,WACD,CACI,MAAM,MAAE1C,EAAK,MAAEC,GAAU,IAAIC,eAC7BC,EAAOJ,EAAKE,GACZ4C,EAoLxB,SAAkB9C,EAAKsD,GAEnB,OADAC,EAAcC,IAAIxD,EAAKsD,GAChBtD,CACX,CAvLsCyD,CAASxD,EAAO,CAACA,GACnC,CACA,MACJ,IAAK,UAEG6C,OAAcY,EAElB,MACJ,QACI,OAEZ,CACA,MAAOpC,GACHwB,EAAc,CAAExB,QAAO,CAAC5B,GAAc,EAC1C,CACAiE,QAAQC,QAAQd,GACXe,OAAOvC,IACD,CAAEA,QAAO,CAAC5B,GAAc,MAE9BoE,MAAMhB,IACP,MAAOiB,EAAWC,GAAiBC,EAAYnB,GAC/CtC,EAAG0D,YAAYrC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGiC,GAAY,CAAEhD,OAAOiD,GACvD,YAATvB,IAEAjC,EAAG2D,oBAAoB,UAAWlC,GAClCmC,EAAc5D,GACVf,KAAaO,GAAiC,mBAAnBA,EAAIP,IAC/BO,EAAIP,KAEZ,IAECoE,OAAOQ,IAER,MAAON,EAAWC,GAAiBC,EAAY,CAC3C3C,MAAO,IAAIgD,UAAU,+BACrB,CAAC5E,GAAc,IAEnBc,EAAG0D,YAAYrC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGiC,GAAY,CAAEhD,OAAOiD,EAAc,GAE1F,IACIxD,EAAGD,OACHC,EAAGD,OAEX,CAIA,SAAS6D,EAAcG,IAHvB,SAAuBA,GACnB,MAAqC,gBAA9BA,EAASC,YAAY7C,IAChC,EAEQ8C,CAAcF,IACdA,EAASG,OACjB,CAqBA,SAASC,EAAqBC,GAC1B,GAAIA,EACA,MAAM,IAAIpD,MAAM,6CAExB,CACA,SAASqD,EAAgBrE,GACrB,OAAOsE,EAAuBtE,EAAI,IAAIG,IAAO,CACzC8B,KAAM,YACPqB,MAAK,KACJM,EAAc5D,EAAG,GAEzB,CACA,MAAMuE,EAAe,IAAIC,QACnBC,EAAkB,yBAA0BlD,YAC9C,IAAImD,sBAAsB1E,IACtB,MAAM2E,GAAYJ,EAAa9D,IAAIT,IAAO,GAAK,EAC/CuE,EAAavB,IAAIhD,EAAI2E,GACJ,IAAbA,GACAN,EAAgBrE,EACpB,IAcR,SAASW,EAAYX,EAAIE,EAAkBgC,EAAO,GAAIjC,EAAS,WAAc,GACzE,IAAI2E,GAAkB,EACtB,MAAM/B,EAAQ,IAAIgC,MAAM5E,EAAQ,CAC5B,GAAAQ,CAAIqE,EAASpC,GAET,GADAyB,EAAqBS,GACjBlC,IAAS1D,EACT,MAAO,MAXvB,SAAyB6D,GACjB4B,GACAA,EAAgBM,WAAWlC,EAEnC,CAQoBmC,CAAgBnC,GAChBwB,EAAgBrE,GAChBE,EAAiB+E,QACjBL,GAAkB,CAAI,EAG9B,GAAa,SAATlC,EAAiB,CACjB,GAAoB,IAAhBR,EAAKgD,OACL,MAAO,CAAE5B,KAAM,IAAMT,GAEzB,MAAMsC,EAAIb,EAAuBtE,EAAIE,EAAkB,CACnD+B,KAAM,MACNC,KAAMA,EAAKE,KAAKgD,GAAMA,EAAEC,eACzB/B,KAAKjB,GACR,OAAO8C,EAAE7B,KAAKgC,KAAKH,EACvB,CACA,OAAOxE,EAAYX,EAAIE,EAAkB,IAAIgC,EAAMQ,GACvD,EACA,GAAAM,CAAI8B,EAASpC,EAAMC,GACfwB,EAAqBS,GAGrB,MAAO9D,EAAO0C,GAAiBC,EAAYd,GAC3C,OAAO2B,EAAuBtE,EAAIE,EAAkB,CAChD+B,KAAM,MACNC,KAAM,IAAIA,EAAMQ,GAAMN,KAAKgD,GAAMA,EAAEC,aACnCvE,SACD0C,GAAeF,KAAKjB,EAC3B,EACA,KAAAO,CAAMkC,EAASS,EAAUC,GACrBrB,EAAqBS,GACrB,MAAMa,EAAOvD,EAAKA,EAAKgD,OAAS,GAChC,GAAIO,IAAS1G,EACT,OAAOuF,EAAuBtE,EAAIE,EAAkB,CAChD+B,KAAM,aACPqB,KAAKjB,GAGZ,GAAa,SAAToD,EACA,OAAO9E,EAAYX,EAAIE,EAAkBgC,EAAKM,MAAM,GAAI,IAE5D,MAAOL,EAAcqB,GAAiBkC,EAAiBF,GACvD,OAAOlB,EAAuBtE,EAAIE,EAAkB,CAChD+B,KAAM,QACNC,KAAMA,EAAKE,KAAKgD,GAAMA,EAAEC,aACxBlD,gBACDqB,GAAeF,KAAKjB,EAC3B,EACA,SAAAsD,CAAUb,EAASU,GACfrB,EAAqBS,GACrB,MAAOzC,EAAcqB,GAAiBkC,EAAiBF,GACvD,OAAOlB,EAAuBtE,EAAIE,EAAkB,CAChD+B,KAAM,YACNC,KAAMA,EAAKE,KAAKgD,GAAMA,EAAEC,aACxBlD,gBACDqB,GAAeF,KAAKjB,EAC3B,IAGJ,OA9EJ,SAAuBQ,EAAO7C,GAC1B,MAAM2E,GAAYJ,EAAa9D,IAAIT,IAAO,GAAK,EAC/CuE,EAAavB,IAAIhD,EAAI2E,GACjBF,GACAA,EAAgBmB,SAAS/C,EAAO7C,EAAI6C,EAE5C,CAuEIgD,CAAchD,EAAO7C,GACd6C,CACX,CAIA,SAAS6C,EAAiBvD,GACtB,MAAM2D,EAAY3D,EAAaC,IAAIqB,GACnC,MAAO,CAACqC,EAAU1D,KAAK2D,GAAMA,EAAE,MALnBC,EAK+BF,EAAU1D,KAAK2D,GAAMA,EAAE,KAJ3DE,MAAMC,UAAUC,OAAOvD,MAAM,GAAIoD,KAD5C,IAAgBA,CAMhB,CACA,MAAMjD,EAAgB,IAAIyB,QAe1B,SAASf,EAAY3C,GACjB,IAAK,MAAOK,EAAMiF,KAAYvF,EAC1B,GAAIuF,EAAQ9G,UAAUwB,GAAQ,CAC1B,MAAOuF,EAAiB7C,GAAiB4C,EAAQ7G,UAAUuB,GAC3D,MAAO,CACH,CACImB,KAAM,UACNd,OACAL,MAAOuF,GAEX7C,EAER,CAEJ,MAAO,CACH,CACIvB,KAAM,MACNnB,SAEJiC,EAActC,IAAIK,IAAU,GAEpC,CACA,SAASuB,EAAcvB,GACnB,OAAQA,EAAMmB,MACV,IAAK,UACD,OAAOpB,EAAiBJ,IAAIK,EAAMK,MAAMtB,YAAYiB,EAAMA,OAC9D,IAAK,MACD,OAAOA,EAAMA,MAEzB,CACA,SAASwD,EAAuBtE,EAAIE,EAAkBoG,EAAKxD,GACvD,OAAO,IAAIK,SAASC,IAChB,MAAM7C,EASH,IAAI0F,MAAM,GACZM,KAAK,GACLnE,KAAI,IAAMoE,KAAKC,MAAMD,KAAKE,SAAWC,OAAOC,kBAAkBvB,SAAS,MACvEwB,KAAK,KAXN3G,EAAiB8C,IAAIzC,EAAI6C,GACrBpD,EAAGD,OACHC,EAAGD,QAEPC,EAAG0D,YAAYrC,OAAOC,OAAO,CAAEf,MAAM+F,GAAMxD,EAAU,GAE7D,C,woFC5VO,IAAMgE,EAAW,SAAAC,GAAA,SAAAD,IAAA,OAAAE,EAAA,KAAAF,GAAAG,EAAA,KAAAH,EAAAI,UAAA,QAAAC,EAAAL,EAAAC,GAAAK,EAAAN,EAAA,EAAAO,EAASrG,QCOpBsG,EACF,U,uYCPXC,EAAA,kBAAAC,CAAA,MAAAC,EAAAD,EAAA,GAAArC,EAAA9D,OAAA6E,UAAAwB,EAAAvC,EAAAwC,eAAAC,EAAAvG,OAAAwG,gBAAA,SAAAJ,EAAAD,EAAArC,GAAAsC,EAAAD,GAAArC,EAAArE,KAAA,EAAAnC,EAAA,mBAAAG,OAAAA,OAAA,GAAAJ,EAAAC,EAAAmJ,UAAA,aAAAC,EAAApJ,EAAAqJ,eAAA,kBAAAC,EAAAtJ,EAAAuJ,aAAA,yBAAA1J,EAAAiJ,EAAAD,EAAArC,GAAA,OAAA9D,OAAAwG,eAAAJ,EAAAD,EAAA,CAAA1G,MAAAqE,EAAAgD,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAZ,EAAAD,EAAA,KAAAhJ,EAAA,aAAAiJ,GAAAjJ,EAAA,SAAAiJ,EAAAD,EAAArC,GAAA,OAAAsC,EAAAD,GAAArC,CAAA,WAAAvE,EAAA6G,EAAAD,EAAArC,EAAAuC,GAAA,IAAA/I,EAAA6I,GAAAA,EAAAtB,qBAAAoC,EAAAd,EAAAc,EAAA5J,EAAA2C,OAAAkH,OAAA5J,EAAAuH,WAAA6B,EAAA,IAAAS,EAAAd,GAAA,WAAAE,EAAAlJ,EAAA,WAAAoC,MAAA2H,EAAAhB,EAAAtC,EAAA4C,KAAArJ,CAAA,UAAAgK,EAAAjB,EAAAD,EAAArC,GAAA,WAAAlD,KAAA,SAAA0G,IAAAlB,EAAAmB,KAAApB,EAAArC,GAAA,OAAAsC,GAAA,OAAAxF,KAAA,QAAA0G,IAAAlB,EAAA,EAAAD,EAAA5G,KAAAA,EAAA,IAAAiI,EAAA,iBAAAC,EAAA,iBAAAC,EAAA,YAAAC,EAAA,YAAAC,EAAA,YAAAX,IAAA,UAAAY,IAAA,UAAAC,IAAA,KAAA/D,EAAA,GAAA5G,EAAA4G,EAAA1G,GAAA,8BAAA0K,EAAA/H,OAAAgI,eAAAtD,EAAAqD,GAAAA,EAAAA,EAAAE,EAAA,MAAAvD,GAAAA,IAAAZ,GAAAuC,EAAAkB,KAAA7C,EAAArH,KAAA0G,EAAAW,GAAA,IAAAwD,EAAAJ,EAAAjD,UAAAoC,EAAApC,UAAA7E,OAAAkH,OAAAnD,GAAA,SAAAoE,EAAA/B,GAAA,0BAAAgC,SAAA,SAAAjC,GAAAhJ,EAAAiJ,EAAAD,GAAA,SAAAC,GAAA,YAAAiC,QAAAlC,EAAAC,EAAA,gBAAAkC,EAAAlC,EAAAD,GAAA,SAAAoC,EAAAzE,EAAAyC,EAAAjJ,EAAAD,GAAA,IAAAqJ,EAAAW,EAAAjB,EAAAtC,GAAAsC,EAAAG,GAAA,aAAAG,EAAA9F,KAAA,KAAAgG,EAAAF,EAAAY,IAAAE,EAAAZ,EAAAnH,MAAA,OAAA+H,GAAA,UAAAgB,EAAAhB,IAAAnB,EAAAkB,KAAAC,EAAA,WAAArB,EAAApE,QAAAyF,EAAAiB,SAAAxG,MAAA,SAAAmE,GAAAmC,EAAA,OAAAnC,EAAA9I,EAAAD,EAAA,aAAA+I,GAAAmC,EAAA,QAAAnC,EAAA9I,EAAAD,EAAA,IAAA8I,EAAApE,QAAAyF,GAAAvF,MAAA,SAAAmE,GAAAQ,EAAAnH,MAAA2G,EAAA9I,EAAAsJ,EAAA,aAAAR,GAAA,OAAAmC,EAAA,QAAAnC,EAAA9I,EAAAD,EAAA,IAAAA,EAAAqJ,EAAAY,IAAA,KAAAxD,EAAAyC,EAAA,gBAAA9G,MAAA,SAAA2G,EAAAC,GAAA,SAAAqC,IAAA,WAAAvC,GAAA,SAAAA,EAAArC,GAAAyE,EAAAnC,EAAAC,EAAAF,EAAArC,EAAA,WAAAA,EAAAA,EAAAA,EAAA7B,KAAAyG,EAAAA,GAAAA,GAAA,aAAAtB,EAAAjB,EAAArC,EAAAuC,GAAA,IAAAE,EAAAiB,EAAA,gBAAAlK,EAAAD,GAAA,GAAAkJ,IAAAmB,EAAA,MAAA/H,MAAA,mCAAA4G,IAAAoB,EAAA,cAAArK,EAAA,MAAAD,EAAA,OAAAoC,MAAA2G,EAAAuC,MAAA,OAAAtC,EAAAuC,OAAAtL,EAAA+I,EAAAiB,IAAAjK,IAAA,KAAAqJ,EAAAL,EAAAwC,SAAA,GAAAnC,EAAA,KAAAE,EAAAkC,EAAApC,EAAAL,GAAA,GAAAO,EAAA,IAAAA,IAAAgB,EAAA,gBAAAhB,CAAA,cAAAP,EAAAuC,OAAAvC,EAAA0C,KAAA1C,EAAA2C,MAAA3C,EAAAiB,SAAA,aAAAjB,EAAAuC,OAAA,IAAArC,IAAAiB,EAAA,MAAAjB,EAAAoB,EAAAtB,EAAAiB,IAAAjB,EAAA4C,kBAAA5C,EAAAiB,IAAA,gBAAAjB,EAAAuC,QAAAvC,EAAA6C,OAAA,SAAA7C,EAAAiB,KAAAf,EAAAmB,EAAA,IAAA3D,EAAAsD,EAAAlB,EAAArC,EAAAuC,GAAA,cAAAtC,EAAAnD,KAAA,IAAA2F,EAAAF,EAAAsC,KAAAhB,EAAAF,EAAA1D,EAAAuD,MAAAM,EAAA,gBAAAnI,MAAAsE,EAAAuD,IAAAqB,KAAAtC,EAAAsC,KAAA,WAAA5E,EAAAnD,OAAA2F,EAAAoB,EAAAtB,EAAAuC,OAAA,QAAAvC,EAAAiB,IAAAvD,EAAAuD,IAAA,YAAAwB,EAAA3C,EAAArC,GAAA,IAAAuC,EAAAvC,EAAA8E,OAAArC,EAAAJ,EAAAM,SAAAJ,GAAA,GAAAE,IAAAH,EAAA,OAAAtC,EAAA+E,SAAA,eAAAxC,GAAAF,EAAAM,SAAA,SAAA3C,EAAA8E,OAAA,SAAA9E,EAAAwD,IAAAlB,EAAA0C,EAAA3C,EAAArC,GAAA,UAAAA,EAAA8E,SAAA,WAAAvC,IAAAvC,EAAA8E,OAAA,QAAA9E,EAAAwD,IAAA,IAAA7E,UAAA,oCAAA4D,EAAA,aAAAuB,EAAA,IAAAtK,EAAA+J,EAAAd,EAAAJ,EAAAM,SAAA3C,EAAAwD,KAAA,aAAAhK,EAAAsD,KAAA,OAAAkD,EAAA8E,OAAA,QAAA9E,EAAAwD,IAAAhK,EAAAgK,IAAAxD,EAAA+E,SAAA,KAAAjB,EAAA,IAAAvK,EAAAC,EAAAgK,IAAA,OAAAjK,EAAAA,EAAAsL,MAAA7E,EAAAqC,EAAAgD,YAAA9L,EAAAoC,MAAAqE,EAAAsF,KAAAjD,EAAAkD,QAAA,WAAAvF,EAAA8E,SAAA9E,EAAA8E,OAAA,OAAA9E,EAAAwD,IAAAlB,GAAAtC,EAAA+E,SAAA,KAAAjB,GAAAvK,GAAAyG,EAAA8E,OAAA,QAAA9E,EAAAwD,IAAA,IAAA7E,UAAA,oCAAAqB,EAAA+E,SAAA,KAAAjB,EAAA,UAAA0B,EAAAlD,GAAA,IAAAD,EAAA,CAAAoD,OAAAnD,EAAA,SAAAA,IAAAD,EAAAqD,SAAApD,EAAA,SAAAA,IAAAD,EAAAsD,WAAArD,EAAA,GAAAD,EAAAuD,SAAAtD,EAAA,SAAAuD,WAAAC,KAAAzD,EAAA,UAAA0D,EAAAzD,GAAA,IAAAD,EAAAC,EAAA0D,YAAA,GAAA3D,EAAAvF,KAAA,gBAAAuF,EAAAmB,IAAAlB,EAAA0D,WAAA3D,CAAA,UAAAgB,EAAAf,GAAA,KAAAuD,WAAA,EAAAJ,OAAA,SAAAnD,EAAAgC,QAAAkB,EAAA,WAAAS,OAAA,YAAA9B,EAAA9B,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAArC,EAAAqC,EAAA9I,GAAA,GAAAyG,EAAA,OAAAA,EAAAyD,KAAApB,GAAA,sBAAAA,EAAAiD,KAAA,OAAAjD,EAAA,IAAA6D,MAAA7D,EAAAtC,QAAA,KAAA0C,GAAA,EAAAjJ,EAAA,SAAA8L,IAAA,OAAA7C,EAAAJ,EAAAtC,QAAA,GAAAwC,EAAAkB,KAAApB,EAAAI,GAAA,OAAA6C,EAAA3J,MAAA0G,EAAAI,GAAA6C,EAAAT,MAAA,EAAAS,EAAA,OAAAA,EAAA3J,MAAA2G,EAAAgD,EAAAT,MAAA,EAAAS,CAAA,SAAA9L,EAAA8L,KAAA9L,CAAA,YAAAmF,UAAA+F,EAAArC,GAAA,2BAAA0B,EAAAhD,UAAAiD,EAAAvB,EAAA2B,EAAA,eAAAzI,MAAAqI,EAAAf,cAAA,IAAAR,EAAAuB,EAAA,eAAArI,MAAAoI,EAAAd,cAAA,IAAAc,EAAAoC,YAAA9M,EAAA2K,EAAAlB,EAAA,qBAAAT,EAAA+D,oBAAA,SAAA9D,GAAA,IAAAD,EAAA,mBAAAC,GAAAA,EAAAzD,YAAA,QAAAwD,IAAAA,IAAA0B,GAAA,uBAAA1B,EAAA8D,aAAA9D,EAAArG,MAAA,EAAAqG,EAAAgE,KAAA,SAAA/D,GAAA,OAAApG,OAAAoK,eAAApK,OAAAoK,eAAAhE,EAAA0B,IAAA1B,EAAAiE,UAAAvC,EAAA3K,EAAAiJ,EAAAQ,EAAA,sBAAAR,EAAAvB,UAAA7E,OAAAkH,OAAAgB,GAAA9B,CAAA,EAAAD,EAAAmE,MAAA,SAAAlE,GAAA,OAAAqC,QAAArC,EAAA,EAAA+B,EAAAG,EAAAzD,WAAA1H,EAAAmL,EAAAzD,UAAA6B,GAAA,0BAAAP,EAAAmC,cAAAA,EAAAnC,EAAAoE,MAAA,SAAAnE,EAAAtC,EAAAuC,EAAAE,EAAAjJ,QAAA,IAAAA,IAAAA,EAAAwE,SAAA,IAAAzE,EAAA,IAAAiL,EAAA/I,EAAA6G,EAAAtC,EAAAuC,EAAAE,GAAAjJ,GAAA,OAAA6I,EAAA+D,oBAAApG,GAAAzG,EAAAA,EAAA+L,OAAAnH,MAAA,SAAAmE,GAAA,OAAAA,EAAAuC,KAAAvC,EAAA3G,MAAApC,EAAA+L,MAAA,KAAAjB,EAAAD,GAAA/K,EAAA+K,EAAAtB,EAAA,aAAAzJ,EAAA+K,EAAA7K,GAAA,0BAAAF,EAAA+K,EAAA,qDAAA/B,EAAAqE,KAAA,SAAApE,GAAA,IAAAD,EAAAnG,OAAAoG,GAAAtC,EAAA,WAAAuC,KAAAF,EAAArC,EAAA8F,KAAAvD,GAAA,OAAAvC,EAAA2G,UAAA,SAAArB,IAAA,KAAAtF,EAAAD,QAAA,KAAAuC,EAAAtC,EAAA4G,MAAA,GAAAtE,KAAAD,EAAA,OAAAiD,EAAA3J,MAAA2G,EAAAgD,EAAAT,MAAA,EAAAS,CAAA,QAAAA,EAAAT,MAAA,EAAAS,CAAA,GAAAjD,EAAA8B,OAAAA,EAAAd,EAAAtC,UAAA,CAAAlC,YAAAwE,EAAA4C,MAAA,SAAA5D,GAAA,QAAAwE,KAAA,OAAAvB,KAAA,OAAAL,KAAA,KAAAC,MAAA5C,EAAA,KAAAuC,MAAA,OAAAE,SAAA,UAAAD,OAAA,YAAAtB,IAAAlB,EAAA,KAAAuD,WAAAvB,QAAAyB,IAAA1D,EAAA,QAAArC,KAAA,WAAAA,EAAA8G,OAAA,IAAAvE,EAAAkB,KAAA,KAAAzD,KAAAkG,OAAAlG,EAAA3C,MAAA,WAAA2C,GAAAsC,EAAA,EAAAyE,KAAA,gBAAAlC,MAAA,MAAAvC,EAAA,KAAAuD,WAAA,GAAAG,WAAA,aAAA1D,EAAAxF,KAAA,MAAAwF,EAAAkB,IAAA,YAAAwD,IAAA,EAAA7B,kBAAA,SAAA9C,GAAA,QAAAwC,KAAA,MAAAxC,EAAA,IAAArC,EAAA,cAAAiH,EAAA1E,EAAAE,GAAA,OAAAlJ,EAAAuD,KAAA,QAAAvD,EAAAiK,IAAAnB,EAAArC,EAAAsF,KAAA/C,EAAAE,IAAAzC,EAAA8E,OAAA,OAAA9E,EAAAwD,IAAAlB,KAAAG,CAAA,SAAAA,EAAA,KAAAoD,WAAA9F,OAAA,EAAA0C,GAAA,IAAAA,EAAA,KAAAjJ,EAAA,KAAAqM,WAAApD,GAAAlJ,EAAAC,EAAAwM,WAAA,YAAAxM,EAAAiM,OAAA,OAAAwB,EAAA,UAAAzN,EAAAiM,QAAA,KAAAoB,KAAA,KAAAjE,EAAAL,EAAAkB,KAAAjK,EAAA,YAAAsJ,EAAAP,EAAAkB,KAAAjK,EAAA,iBAAAoJ,GAAAE,EAAA,SAAA+D,KAAArN,EAAAkM,SAAA,OAAAuB,EAAAzN,EAAAkM,UAAA,WAAAmB,KAAArN,EAAAmM,WAAA,OAAAsB,EAAAzN,EAAAmM,WAAA,SAAA/C,GAAA,QAAAiE,KAAArN,EAAAkM,SAAA,OAAAuB,EAAAzN,EAAAkM,UAAA,YAAA5C,EAAA,MAAAjH,MAAA,kDAAAgL,KAAArN,EAAAmM,WAAA,OAAAsB,EAAAzN,EAAAmM,WAAA,KAAAP,OAAA,SAAA9C,EAAAD,GAAA,QAAArC,EAAA,KAAA6F,WAAA9F,OAAA,EAAAC,GAAA,IAAAA,EAAA,KAAAyC,EAAA,KAAAoD,WAAA7F,GAAA,GAAAyC,EAAAgD,QAAA,KAAAoB,MAAAtE,EAAAkB,KAAAhB,EAAA,oBAAAoE,KAAApE,EAAAkD,WAAA,KAAAnM,EAAAiJ,EAAA,OAAAjJ,IAAA,UAAA8I,GAAA,aAAAA,IAAA9I,EAAAiM,QAAApD,GAAAA,GAAA7I,EAAAmM,aAAAnM,EAAA,UAAAD,EAAAC,EAAAA,EAAAwM,WAAA,UAAAzM,EAAAuD,KAAAwF,EAAA/I,EAAAiK,IAAAnB,EAAA7I,GAAA,KAAAsL,OAAA,YAAAQ,KAAA9L,EAAAmM,WAAA7B,GAAA,KAAAoD,SAAA3N,EAAA,EAAA2N,SAAA,SAAA5E,EAAAD,GAAA,aAAAC,EAAAxF,KAAA,MAAAwF,EAAAkB,IAAA,gBAAAlB,EAAAxF,MAAA,aAAAwF,EAAAxF,KAAA,KAAAwI,KAAAhD,EAAAkB,IAAA,WAAAlB,EAAAxF,MAAA,KAAAkK,KAAA,KAAAxD,IAAAlB,EAAAkB,IAAA,KAAAsB,OAAA,cAAAQ,KAAA,kBAAAhD,EAAAxF,MAAAuF,IAAA,KAAAiD,KAAAjD,GAAAyB,CAAA,EAAAqD,OAAA,SAAA7E,GAAA,QAAAD,EAAA,KAAAwD,WAAA9F,OAAA,EAAAsC,GAAA,IAAAA,EAAA,KAAArC,EAAA,KAAA6F,WAAAxD,GAAA,GAAArC,EAAA2F,aAAArD,EAAA,YAAA4E,SAAAlH,EAAAgG,WAAAhG,EAAA4F,UAAAG,EAAA/F,GAAA8D,CAAA,kBAAAxB,GAAA,QAAAD,EAAA,KAAAwD,WAAA9F,OAAA,EAAAsC,GAAA,IAAAA,EAAA,KAAArC,EAAA,KAAA6F,WAAAxD,GAAA,GAAArC,EAAAyF,SAAAnD,EAAA,KAAAC,EAAAvC,EAAAgG,WAAA,aAAAzD,EAAAzF,KAAA,KAAA2F,EAAAF,EAAAiB,IAAAuC,EAAA/F,EAAA,QAAAyC,CAAA,QAAA5G,MAAA,0BAAAuL,cAAA,SAAA/E,EAAArC,EAAAuC,GAAA,YAAAwC,SAAA,CAAApC,SAAAwB,EAAA9B,GAAAgD,WAAArF,EAAAuF,QAAAhD,GAAA,cAAAuC,SAAA,KAAAtB,IAAAlB,GAAAwB,CAAA,GAAAzB,CAAA,UAAAgF,EAAArH,EAAAqC,GAAA,gBAAArC,GAAA,GAAAc,MAAAwG,QAAAtH,GAAA,OAAAA,CAAA,CAAAuH,CAAAvH,IAAA,SAAAA,EAAA2D,GAAA,IAAArB,EAAA,MAAAtC,EAAA,yBAAArG,QAAAqG,EAAArG,OAAAgJ,WAAA3C,EAAA,uBAAAsC,EAAA,KAAAD,EAAAE,EAAA/I,EAAAsJ,EAAAvJ,EAAA,GAAAqK,GAAA,EAAAnB,GAAA,SAAAjJ,GAAA8I,EAAAA,EAAAmB,KAAAzD,IAAAsF,KAAA,IAAA3B,EAAA,IAAAzH,OAAAoG,KAAAA,EAAA,OAAAsB,GAAA,cAAAA,GAAAvB,EAAA7I,EAAAiK,KAAAnB,IAAAuC,QAAAtL,EAAAuM,KAAAzD,EAAA1G,OAAApC,EAAAwG,SAAA4D,GAAAC,GAAA,UAAA5D,GAAAyC,GAAA,EAAAF,EAAAvC,CAAA,iBAAA4D,GAAA,MAAAtB,EAAA,SAAAQ,EAAAR,EAAA,SAAApG,OAAA4G,KAAAA,GAAA,kBAAAL,EAAA,MAAAF,CAAA,SAAAhJ,CAAA,EAAAiO,CAAAxH,EAAAqC,IAAA,SAAArC,EAAAzG,GAAA,GAAAyG,EAAA,qBAAAA,EAAA,OAAAyH,EAAAzH,EAAAzG,GAAA,IAAA+I,EAAA,GAAApC,SAAAuD,KAAAzD,GAAA3C,MAAA,uBAAAiF,GAAAtC,EAAAnB,cAAAyD,EAAAtC,EAAAnB,YAAA7C,MAAA,QAAAsG,GAAA,QAAAA,EAAAxB,MAAA4G,KAAA1H,GAAA,cAAAsC,GAAA,2CAAA5F,KAAA4F,GAAAmF,EAAAzH,EAAAzG,QAAA,GAAAoO,CAAA3H,EAAAqC,IAAA,qBAAA1D,UAAA,6IAAAiJ,EAAA,UAAAH,EAAAzH,EAAAzG,IAAA,MAAAA,GAAAA,EAAAyG,EAAAD,UAAAxG,EAAAyG,EAAAD,QAAA,QAAAsC,EAAA,EAAAE,EAAAzB,MAAAvH,GAAA8I,EAAA9I,EAAA8I,IAAAE,EAAAF,GAAArC,EAAAqC,GAAA,OAAAE,CAAA,UAAAsF,EAAAtF,EAAAD,EAAAD,EAAArC,EAAAyC,EAAAlJ,EAAAqJ,GAAA,QAAApJ,EAAA+I,EAAAhJ,GAAAqJ,GAAAE,EAAAtJ,EAAAmC,KAAA,OAAA4G,GAAA,YAAAF,EAAAE,EAAA,CAAA/I,EAAAqL,KAAAvC,EAAAQ,GAAA9E,QAAAC,QAAA6E,GAAA3E,KAAA6B,EAAAyC,EAAA,UAAAqF,EAAAvF,GAAA,sBAAAD,EAAA,KAAAD,EAAAN,UAAA,WAAA/D,SAAA,SAAAgC,EAAAyC,GAAA,IAAAlJ,EAAAgJ,EAAA9E,MAAA6E,EAAAD,GAAA,SAAA0F,EAAAxF,GAAAsF,EAAAtO,EAAAyG,EAAAyC,EAAAsF,EAAAC,EAAA,OAAAzF,EAAA,UAAAyF,EAAAzF,GAAAsF,EAAAtO,EAAAyG,EAAAyC,EAAAsF,EAAAC,EAAA,QAAAzF,EAAA,CAAAwF,OAAA,OAmBC,SAEcE,EAAYC,EAAAC,GAAA,OAAAC,EAAA3K,MAAC,KAADsE,UAAA,UAAAqG,IAU1B,OAV0BA,EAAAN,EAAA1F,IAAAiE,MAA3B,SAAAgC,EAA4BC,EAA4CtM,GAAY,OAAAoG,IAAA3G,MAAA,SAAA8M,GAAA,cAAAA,EAAA1B,KAAA0B,EAAAjD,MAAA,cAAAiD,EAAAjD,KAAA,EACrEgD,EACVE,cAAcxM,GACdmC,MAAK,SAACsK,GAAU,OACfA,EACGC,UACAvK,MAAK,SAACwK,GAAI,OAAKA,EAAKC,MAAM,IAC1BzK,MAAK,SAAC0K,GAAc,OAAKC,KAAKC,MAAMF,EAAe,GAAC,IACxD,OACM,kBAAY,IAAI,IAAC,cAAAN,EAAAnD,OAAA,SAAAmD,EAAAtD,MAAA,wBAAAsD,EAAAxB,OAAA,GAAAsB,EAAA,KAC3BD,EAAA3K,MAAA,KAAAsE,UAAA,UAEciH,EAAmBC,EAAAC,GAAA,OAAAC,EAAA1L,MAAC,KAADsE,UAAA,UAAAoH,IAKjC,OALiCA,EAAArB,EAAA1F,IAAAiE,MAAlC,SAAA+C,EAAmCd,EAA4CtM,GAAY,OAAAoG,IAAA3G,MAAA,SAAA4N,GAAA,cAAAA,EAAAxC,KAAAwC,EAAA/D,MAAA,cAAA+D,EAAA/D,KAAA,EAC5EgD,EACVE,cAAcxM,GACdmC,MAAK,SAACsK,GAAU,OAAKA,EAAWC,UAAUvK,MAAK,SAACwK,GAAI,OAAKA,EAAKW,aAAa,GAAC,IAAC,OACvE,kBAAY,IAAI,IAAC,cAAAD,EAAAjE,OAAA,SAAAiE,EAAApE,MAAA,wBAAAoE,EAAAtC,OAAA,GAAAqC,EAAA,KAC3BD,EAAA1L,MAAA,KAAAsE,UAAA,CAEM,SAAewH,EAAQC,EAAAC,GAAA,OAAAC,EAAAjM,MAAC,KAADsE,UAAA,CAgD7B,SAAA2H,IAAA,OAAAA,EAAA5B,EAAA1F,IAAAiE,MAhDM,SAAAsD,EACLrB,EACAtM,GAAY,IAAA4N,EAAAC,EAAAC,EAAAtQ,EAAAuQ,EAAAC,EAAAjI,UAAA,OAAAK,IAAA3G,MAAA,SAAAwO,GAAA,cAAAA,EAAApD,KAAAoD,EAAA3E,MAAA,OACwE,GAApFsE,EAA+EI,EAAAjK,OAAA,QAAAhC,IAAAiM,EAAA,GAAAA,EAAA,GAAG,CAAC,EAE9EhO,EAAM,CAAFiO,EAAA3E,KAAA,eAAA2E,EAAA7E,OAAA,iBAIHyE,EAAY7N,EAAKkO,MAAM,KACzBJ,EAAaxB,EAAe2B,EAAApD,KAAA,EAGrBrN,EAAI,EAAC,YAAEA,EAAIqQ,EAAU9J,OAAS,GAAC,CAAAkK,EAAA3E,KAAA,gBAAA2E,EAAA3E,KAAA,GACnBwE,EAAWK,mBAAmBN,EAAUrQ,GAAI,CAAE4J,QAAQ,IAAO,QAAhF0G,EAAUG,EAAAhF,KAAA,QAD8BzL,IAAGyQ,EAAA3E,KAAA,gBAIZ,GAA3ByE,EAAWF,EAAUO,IAAI,IAE3BR,EAAQS,OAAQ,CAAFJ,EAAA3E,KAAA,gBAAA2E,EAAA7E,OAAA,SACT6C,EAAa6B,EAAYC,IAAS,eAAAE,EAAA7E,OAAA,SAElC4D,EAAoBc,EAAYC,GAAS,MAAMjC,EAAA1F,IAAAiE,MAAC,SAAAiE,IAAA,IAAAC,EAAAC,EAAAC,EAAA,OAAArI,IAAA3G,MAAA,SAAAiP,GAAA,cAAAA,EAAA7D,KAAA6D,EAAApF,MAAA,OACqC,GAA1F1I,QAAQC,KAAK,0BAADmE,OAA2BhF,EAAI,iDAEvC4N,EAAQe,UAAWd,EAAUe,SAASzI,GAA2B,CAAAuI,EAAApF,KAAA,SAAAoF,EAAA7D,KAAA,EAEjEgD,EAAUgB,OACRhB,EAAUiB,WAAU,SAACC,GAAI,OAAKA,IAAS5I,CAA0B,IACjE,GAEF2H,EAAaxB,EACJ9O,EAAI,EAAC,YAAEA,EAAIqQ,EAAU9J,OAAS,GAAC,CAAA2K,EAAApF,KAAA,gBAAAoF,EAAApF,KAAA,EACnBwE,EAAWK,mBAAmBN,EAAUrQ,GAAI,CAAE4J,QAAQ,IAAO,OAAhF0G,EAAUY,EAAAzF,KAAA,QAD8BzL,IAAGkR,EAAApF,KAAA,gBAIoB,OAA3DkF,EAAoBX,EAAUO,IAAI,GAAGF,MAAM,KAAK,GAAK,OAAMQ,EAAApF,KAAA,GACnC0D,EAAoBc,EAAYU,GAAkB,QAA3D,OAAfC,EAAeC,EAAAzF,KAAAyF,EAAAtF,OAAA,SACdqF,EAAgBpN,MAAMuM,EAAQe,QAAQK,UAAWpB,EAAQe,QAAQM,UAAQ,QAAAP,EAAA7D,KAAA,GAAA6D,EAAAQ,GAAAR,EAAA,SAEhF9N,QAAQC,KAAK,0BAADmE,OAA2BhF,EAAI,MAAAgF,OAAK0J,EAAAQ,GAAMnP,UAAW,yBAAA2O,EAAA3D,OAAA,GAAAuD,EAAA,qBAGrE,QAAAL,EAAA3E,KAAA,iBAAA2E,EAAApD,KAAA,GAAAoD,EAAAiB,GAAAjB,EAAA,SAGJrN,QAAQC,KAAK,0BAADmE,OAA2BhF,EAAI,MAAAgF,OAAKiJ,EAAAiB,GAAMnP,UAAW,yBAAAkO,EAAAlD,OAAA,GAAA4C,EAAA,mBAEpED,EAAAjM,MAAA,KAAAsE,UAAA,CAEM,SAAeoJ,EAASC,EAAAC,EAAAC,GAAA,OAAAC,EAAA9N,MAAC,KAADsE,UAAA,CA2B9B,SAAAwJ,IAAA,OAAAA,EAAAzD,EAAA1F,IAAAiE,MA3BM,SAAAmF,EACLlD,EACAtM,EACA2M,GAAgC,IAAA0B,EAAAR,EAAAC,EAAAtQ,EAAAuQ,EAAAtB,EAAAgD,EAAAC,EAAA3J,UAAA,OAAAK,IAAA3G,MAAA,SAAAkQ,GAAA,cAAAA,EAAA9E,KAAA8E,EAAArG,MAAA,OAChC+E,EAAMqB,EAAA3L,OAAA,QAAAhC,IAAA2N,EAAA,IAAAA,EAAA,GAAQC,EAAA9E,KAAA,EAGNgD,EAAY7N,EAAKkO,MAAM,KACzBJ,EAAaxB,EAER9O,EAAI,EAAC,YAAEA,EAAIqQ,EAAU9J,OAAS,GAAC,CAAA4L,EAAArG,KAAA,gBAAAqG,EAAArG,KAAA,EACnBwE,EAAWK,mBAAmBN,EAAUrQ,GAAI,CAAE4J,QAAQ,IAAO,OAAhF0G,EAAU6B,EAAA1G,KAAA,OAD8BzL,IAAGmS,EAAArG,KAAA,gBAIZ,OAA3ByE,EAAWF,EAAUO,IAAI,GAAEuB,EAAArG,KAAA,GACRwE,EAAWtB,cAAcuB,EAAU,CAAE3G,QAAQ,IAAO,QAA7D,OAAVqF,EAAUkD,EAAA1G,KAAA0G,EAAArG,KAAG,GAEQmD,EAAWmD,iBAAgB,QAApC,GAAZH,EAAYE,EAAA1G,MACdoF,EAAQ,CAAFsB,EAAArG,KAAA,gBAAAqG,EAAArG,KAAA,GACFmG,EAAaI,MAAM/C,KAAKgD,UAAUnD,IAAM,QAAAgD,EAAArG,KAAA,wBAAAqG,EAAArG,KAAA,GAExCmG,EAAaI,MAAMlD,GAAoB,eAAAgD,EAAArG,KAAA,GAEzCmG,EAAa1M,QAAO,QAAA4M,EAAArG,KAAA,iBAAAqG,EAAA9E,KAAA,GAAA8E,EAAAT,GAAAS,EAAA,SAE1B/O,QAAQC,KAAK,0BAADmE,OAA2BhF,EAAI,MAAAgF,OAAK2K,EAAAT,GAAMnP,UAAW,yBAAA4P,EAAA5E,OAAA,GAAAyE,EAAA,mBAEpED,EAAA9N,MAAA,KAAAsE,UAAA,CAyCM,SAASgK,EAAeC,GAC7B,IAAMC,EAAS,IAAIC,IAAIF,GACjBG,EAAaF,EAAOG,SAASC,MAAM,oBAAoB,GACgEC,EAAAjF,EAA5E4E,EAAOG,SAASC,MAAM,yCAAyC,GAAGnC,MAAM,KAAI,GAAtHqC,EAAgBD,EAAA,GAAKE,GAAFF,EAAA,GAAmBA,EAAA,IAC7C,MAAO,GAAPtL,OAAUmL,EAAU,KAAAnL,OAAIuL,EAAgB,KAAAvL,OAAIwL,EAC9C,CAMO,SAASC,EAAsBT,EAAarB,GACjD,IAAM6B,EAAoBR,EAAIK,MAAM,qBAAqB,GACnDK,EAAa,GAAH1L,OAAM2J,EAAU,IAAH3J,OAAO2J,aAAO,EAAPA,EAASK,UAAS,KAAAhK,OAAI2J,aAAO,EAAPA,EAASM,SAAY,IAC/E,MAAO,GAAPjK,OAAU+K,EAAeC,GAAI,KAAAhL,OAAImB,EAA0B,KAAAnB,OAAIwL,GAAiBxL,OAAG0L,EAAU,OAC/F,C,uYC7KAtK,EAAA,kBAAAC,CAAA,MAAAC,EAAAD,EAAA,GAAArC,EAAA9D,OAAA6E,UAAAwB,EAAAvC,EAAAwC,eAAAC,EAAAvG,OAAAwG,gBAAA,SAAAJ,EAAAD,EAAArC,GAAAsC,EAAAD,GAAArC,EAAArE,KAAA,EAAAnC,EAAA,mBAAAG,OAAAA,OAAA,GAAAJ,EAAAC,EAAAmJ,UAAA,aAAAC,EAAApJ,EAAAqJ,eAAA,kBAAAC,EAAAtJ,EAAAuJ,aAAA,yBAAA1J,EAAAiJ,EAAAD,EAAArC,GAAA,OAAA9D,OAAAwG,eAAAJ,EAAAD,EAAA,CAAA1G,MAAAqE,EAAAgD,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAZ,EAAAD,EAAA,KAAAhJ,EAAA,aAAAiJ,GAAAjJ,EAAA,SAAAiJ,EAAAD,EAAArC,GAAA,OAAAsC,EAAAD,GAAArC,CAAA,WAAAvE,EAAA6G,EAAAD,EAAArC,EAAAuC,GAAA,IAAA/I,EAAA6I,GAAAA,EAAAtB,qBAAAoC,EAAAd,EAAAc,EAAA5J,EAAA2C,OAAAkH,OAAA5J,EAAAuH,WAAA6B,EAAA,IAAAS,EAAAd,GAAA,WAAAE,EAAAlJ,EAAA,WAAAoC,MAAA2H,EAAAhB,EAAAtC,EAAA4C,KAAArJ,CAAA,UAAAgK,EAAAjB,EAAAD,EAAArC,GAAA,WAAAlD,KAAA,SAAA0G,IAAAlB,EAAAmB,KAAApB,EAAArC,GAAA,OAAAsC,GAAA,OAAAxF,KAAA,QAAA0G,IAAAlB,EAAA,EAAAD,EAAA5G,KAAAA,EAAA,IAAAiI,EAAA,iBAAAC,EAAA,iBAAAC,EAAA,YAAAC,EAAA,YAAAC,EAAA,YAAAX,IAAA,UAAAY,IAAA,UAAAC,IAAA,KAAA/D,EAAA,GAAA5G,EAAA4G,EAAA1G,GAAA,8BAAA0K,EAAA/H,OAAAgI,eAAAtD,EAAAqD,GAAAA,EAAAA,EAAAE,EAAA,MAAAvD,GAAAA,IAAAZ,GAAAuC,EAAAkB,KAAA7C,EAAArH,KAAA0G,EAAAW,GAAA,IAAAwD,EAAAJ,EAAAjD,UAAAoC,EAAApC,UAAA7E,OAAAkH,OAAAnD,GAAA,SAAAoE,EAAA/B,GAAA,0BAAAgC,SAAA,SAAAjC,GAAAhJ,EAAAiJ,EAAAD,GAAA,SAAAC,GAAA,YAAAiC,QAAAlC,EAAAC,EAAA,gBAAAkC,EAAAlC,EAAAD,GAAA,SAAAoC,EAAAzE,EAAAyC,EAAAjJ,EAAAD,GAAA,IAAAqJ,EAAAW,EAAAjB,EAAAtC,GAAAsC,EAAAG,GAAA,aAAAG,EAAA9F,KAAA,KAAAgG,EAAAF,EAAAY,IAAAE,EAAAZ,EAAAnH,MAAA,OAAA+H,GAAA,UAAAgB,EAAAhB,IAAAnB,EAAAkB,KAAAC,EAAA,WAAArB,EAAApE,QAAAyF,EAAAiB,SAAAxG,MAAA,SAAAmE,GAAAmC,EAAA,OAAAnC,EAAA9I,EAAAD,EAAA,aAAA+I,GAAAmC,EAAA,QAAAnC,EAAA9I,EAAAD,EAAA,IAAA8I,EAAApE,QAAAyF,GAAAvF,MAAA,SAAAmE,GAAAQ,EAAAnH,MAAA2G,EAAA9I,EAAAsJ,EAAA,aAAAR,GAAA,OAAAmC,EAAA,QAAAnC,EAAA9I,EAAAD,EAAA,IAAAA,EAAAqJ,EAAAY,IAAA,KAAAxD,EAAAyC,EAAA,gBAAA9G,MAAA,SAAA2G,EAAAC,GAAA,SAAAqC,IAAA,WAAAvC,GAAA,SAAAA,EAAArC,GAAAyE,EAAAnC,EAAAC,EAAAF,EAAArC,EAAA,WAAAA,EAAAA,EAAAA,EAAA7B,KAAAyG,EAAAA,GAAAA,GAAA,aAAAtB,EAAAjB,EAAArC,EAAAuC,GAAA,IAAAE,EAAAiB,EAAA,gBAAAlK,EAAAD,GAAA,GAAAkJ,IAAAmB,EAAA,MAAA/H,MAAA,mCAAA4G,IAAAoB,EAAA,cAAArK,EAAA,MAAAD,EAAA,OAAAoC,MAAA2G,EAAAuC,MAAA,OAAAtC,EAAAuC,OAAAtL,EAAA+I,EAAAiB,IAAAjK,IAAA,KAAAqJ,EAAAL,EAAAwC,SAAA,GAAAnC,EAAA,KAAAE,EAAAkC,EAAApC,EAAAL,GAAA,GAAAO,EAAA,IAAAA,IAAAgB,EAAA,gBAAAhB,CAAA,cAAAP,EAAAuC,OAAAvC,EAAA0C,KAAA1C,EAAA2C,MAAA3C,EAAAiB,SAAA,aAAAjB,EAAAuC,OAAA,IAAArC,IAAAiB,EAAA,MAAAjB,EAAAoB,EAAAtB,EAAAiB,IAAAjB,EAAA4C,kBAAA5C,EAAAiB,IAAA,gBAAAjB,EAAAuC,QAAAvC,EAAA6C,OAAA,SAAA7C,EAAAiB,KAAAf,EAAAmB,EAAA,IAAA3D,EAAAsD,EAAAlB,EAAArC,EAAAuC,GAAA,cAAAtC,EAAAnD,KAAA,IAAA2F,EAAAF,EAAAsC,KAAAhB,EAAAF,EAAA1D,EAAAuD,MAAAM,EAAA,gBAAAnI,MAAAsE,EAAAuD,IAAAqB,KAAAtC,EAAAsC,KAAA,WAAA5E,EAAAnD,OAAA2F,EAAAoB,EAAAtB,EAAAuC,OAAA,QAAAvC,EAAAiB,IAAAvD,EAAAuD,IAAA,YAAAwB,EAAA3C,EAAArC,GAAA,IAAAuC,EAAAvC,EAAA8E,OAAArC,EAAAJ,EAAAM,SAAAJ,GAAA,GAAAE,IAAAH,EAAA,OAAAtC,EAAA+E,SAAA,eAAAxC,GAAAF,EAAAM,SAAA,SAAA3C,EAAA8E,OAAA,SAAA9E,EAAAwD,IAAAlB,EAAA0C,EAAA3C,EAAArC,GAAA,UAAAA,EAAA8E,SAAA,WAAAvC,IAAAvC,EAAA8E,OAAA,QAAA9E,EAAAwD,IAAA,IAAA7E,UAAA,oCAAA4D,EAAA,aAAAuB,EAAA,IAAAtK,EAAA+J,EAAAd,EAAAJ,EAAAM,SAAA3C,EAAAwD,KAAA,aAAAhK,EAAAsD,KAAA,OAAAkD,EAAA8E,OAAA,QAAA9E,EAAAwD,IAAAhK,EAAAgK,IAAAxD,EAAA+E,SAAA,KAAAjB,EAAA,IAAAvK,EAAAC,EAAAgK,IAAA,OAAAjK,EAAAA,EAAAsL,MAAA7E,EAAAqC,EAAAgD,YAAA9L,EAAAoC,MAAAqE,EAAAsF,KAAAjD,EAAAkD,QAAA,WAAAvF,EAAA8E,SAAA9E,EAAA8E,OAAA,OAAA9E,EAAAwD,IAAAlB,GAAAtC,EAAA+E,SAAA,KAAAjB,GAAAvK,GAAAyG,EAAA8E,OAAA,QAAA9E,EAAAwD,IAAA,IAAA7E,UAAA,oCAAAqB,EAAA+E,SAAA,KAAAjB,EAAA,UAAA0B,EAAAlD,GAAA,IAAAD,EAAA,CAAAoD,OAAAnD,EAAA,SAAAA,IAAAD,EAAAqD,SAAApD,EAAA,SAAAA,IAAAD,EAAAsD,WAAArD,EAAA,GAAAD,EAAAuD,SAAAtD,EAAA,SAAAuD,WAAAC,KAAAzD,EAAA,UAAA0D,EAAAzD,GAAA,IAAAD,EAAAC,EAAA0D,YAAA,GAAA3D,EAAAvF,KAAA,gBAAAuF,EAAAmB,IAAAlB,EAAA0D,WAAA3D,CAAA,UAAAgB,EAAAf,GAAA,KAAAuD,WAAA,EAAAJ,OAAA,SAAAnD,EAAAgC,QAAAkB,EAAA,WAAAS,OAAA,YAAA9B,EAAA9B,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAArC,EAAAqC,EAAA9I,GAAA,GAAAyG,EAAA,OAAAA,EAAAyD,KAAApB,GAAA,sBAAAA,EAAAiD,KAAA,OAAAjD,EAAA,IAAA6D,MAAA7D,EAAAtC,QAAA,KAAA0C,GAAA,EAAAjJ,EAAA,SAAA8L,IAAA,OAAA7C,EAAAJ,EAAAtC,QAAA,GAAAwC,EAAAkB,KAAApB,EAAAI,GAAA,OAAA6C,EAAA3J,MAAA0G,EAAAI,GAAA6C,EAAAT,MAAA,EAAAS,EAAA,OAAAA,EAAA3J,MAAA2G,EAAAgD,EAAAT,MAAA,EAAAS,CAAA,SAAA9L,EAAA8L,KAAA9L,CAAA,YAAAmF,UAAA+F,EAAArC,GAAA,2BAAA0B,EAAAhD,UAAAiD,EAAAvB,EAAA2B,EAAA,eAAAzI,MAAAqI,EAAAf,cAAA,IAAAR,EAAAuB,EAAA,eAAArI,MAAAoI,EAAAd,cAAA,IAAAc,EAAAoC,YAAA9M,EAAA2K,EAAAlB,EAAA,qBAAAT,EAAA+D,oBAAA,SAAA9D,GAAA,IAAAD,EAAA,mBAAAC,GAAAA,EAAAzD,YAAA,QAAAwD,IAAAA,IAAA0B,GAAA,uBAAA1B,EAAA8D,aAAA9D,EAAArG,MAAA,EAAAqG,EAAAgE,KAAA,SAAA/D,GAAA,OAAApG,OAAAoK,eAAApK,OAAAoK,eAAAhE,EAAA0B,IAAA1B,EAAAiE,UAAAvC,EAAA3K,EAAAiJ,EAAAQ,EAAA,sBAAAR,EAAAvB,UAAA7E,OAAAkH,OAAAgB,GAAA9B,CAAA,EAAAD,EAAAmE,MAAA,SAAAlE,GAAA,OAAAqC,QAAArC,EAAA,EAAA+B,EAAAG,EAAAzD,WAAA1H,EAAAmL,EAAAzD,UAAA6B,GAAA,0BAAAP,EAAAmC,cAAAA,EAAAnC,EAAAoE,MAAA,SAAAnE,EAAAtC,EAAAuC,EAAAE,EAAAjJ,QAAA,IAAAA,IAAAA,EAAAwE,SAAA,IAAAzE,EAAA,IAAAiL,EAAA/I,EAAA6G,EAAAtC,EAAAuC,EAAAE,GAAAjJ,GAAA,OAAA6I,EAAA+D,oBAAApG,GAAAzG,EAAAA,EAAA+L,OAAAnH,MAAA,SAAAmE,GAAA,OAAAA,EAAAuC,KAAAvC,EAAA3G,MAAApC,EAAA+L,MAAA,KAAAjB,EAAAD,GAAA/K,EAAA+K,EAAAtB,EAAA,aAAAzJ,EAAA+K,EAAA7K,GAAA,0BAAAF,EAAA+K,EAAA,qDAAA/B,EAAAqE,KAAA,SAAApE,GAAA,IAAAD,EAAAnG,OAAAoG,GAAAtC,EAAA,WAAAuC,KAAAF,EAAArC,EAAA8F,KAAAvD,GAAA,OAAAvC,EAAA2G,UAAA,SAAArB,IAAA,KAAAtF,EAAAD,QAAA,KAAAuC,EAAAtC,EAAA4G,MAAA,GAAAtE,KAAAD,EAAA,OAAAiD,EAAA3J,MAAA2G,EAAAgD,EAAAT,MAAA,EAAAS,CAAA,QAAAA,EAAAT,MAAA,EAAAS,CAAA,GAAAjD,EAAA8B,OAAAA,EAAAd,EAAAtC,UAAA,CAAAlC,YAAAwE,EAAA4C,MAAA,SAAA5D,GAAA,QAAAwE,KAAA,OAAAvB,KAAA,OAAAL,KAAA,KAAAC,MAAA5C,EAAA,KAAAuC,MAAA,OAAAE,SAAA,UAAAD,OAAA,YAAAtB,IAAAlB,EAAA,KAAAuD,WAAAvB,QAAAyB,IAAA1D,EAAA,QAAArC,KAAA,WAAAA,EAAA8G,OAAA,IAAAvE,EAAAkB,KAAA,KAAAzD,KAAAkG,OAAAlG,EAAA3C,MAAA,WAAA2C,GAAAsC,EAAA,EAAAyE,KAAA,gBAAAlC,MAAA,MAAAvC,EAAA,KAAAuD,WAAA,GAAAG,WAAA,aAAA1D,EAAAxF,KAAA,MAAAwF,EAAAkB,IAAA,YAAAwD,IAAA,EAAA7B,kBAAA,SAAA9C,GAAA,QAAAwC,KAAA,MAAAxC,EAAA,IAAArC,EAAA,cAAAiH,EAAA1E,EAAAE,GAAA,OAAAlJ,EAAAuD,KAAA,QAAAvD,EAAAiK,IAAAnB,EAAArC,EAAAsF,KAAA/C,EAAAE,IAAAzC,EAAA8E,OAAA,OAAA9E,EAAAwD,IAAAlB,KAAAG,CAAA,SAAAA,EAAA,KAAAoD,WAAA9F,OAAA,EAAA0C,GAAA,IAAAA,EAAA,KAAAjJ,EAAA,KAAAqM,WAAApD,GAAAlJ,EAAAC,EAAAwM,WAAA,YAAAxM,EAAAiM,OAAA,OAAAwB,EAAA,UAAAzN,EAAAiM,QAAA,KAAAoB,KAAA,KAAAjE,EAAAL,EAAAkB,KAAAjK,EAAA,YAAAsJ,EAAAP,EAAAkB,KAAAjK,EAAA,iBAAAoJ,GAAAE,EAAA,SAAA+D,KAAArN,EAAAkM,SAAA,OAAAuB,EAAAzN,EAAAkM,UAAA,WAAAmB,KAAArN,EAAAmM,WAAA,OAAAsB,EAAAzN,EAAAmM,WAAA,SAAA/C,GAAA,QAAAiE,KAAArN,EAAAkM,SAAA,OAAAuB,EAAAzN,EAAAkM,UAAA,YAAA5C,EAAA,MAAAjH,MAAA,kDAAAgL,KAAArN,EAAAmM,WAAA,OAAAsB,EAAAzN,EAAAmM,WAAA,KAAAP,OAAA,SAAA9C,EAAAD,GAAA,QAAArC,EAAA,KAAA6F,WAAA9F,OAAA,EAAAC,GAAA,IAAAA,EAAA,KAAAyC,EAAA,KAAAoD,WAAA7F,GAAA,GAAAyC,EAAAgD,QAAA,KAAAoB,MAAAtE,EAAAkB,KAAAhB,EAAA,oBAAAoE,KAAApE,EAAAkD,WAAA,KAAAnM,EAAAiJ,EAAA,OAAAjJ,IAAA,UAAA8I,GAAA,aAAAA,IAAA9I,EAAAiM,QAAApD,GAAAA,GAAA7I,EAAAmM,aAAAnM,EAAA,UAAAD,EAAAC,EAAAA,EAAAwM,WAAA,UAAAzM,EAAAuD,KAAAwF,EAAA/I,EAAAiK,IAAAnB,EAAA7I,GAAA,KAAAsL,OAAA,YAAAQ,KAAA9L,EAAAmM,WAAA7B,GAAA,KAAAoD,SAAA3N,EAAA,EAAA2N,SAAA,SAAA5E,EAAAD,GAAA,aAAAC,EAAAxF,KAAA,MAAAwF,EAAAkB,IAAA,gBAAAlB,EAAAxF,MAAA,aAAAwF,EAAAxF,KAAA,KAAAwI,KAAAhD,EAAAkB,IAAA,WAAAlB,EAAAxF,MAAA,KAAAkK,KAAA,KAAAxD,IAAAlB,EAAAkB,IAAA,KAAAsB,OAAA,cAAAQ,KAAA,kBAAAhD,EAAAxF,MAAAuF,IAAA,KAAAiD,KAAAjD,GAAAyB,CAAA,EAAAqD,OAAA,SAAA7E,GAAA,QAAAD,EAAA,KAAAwD,WAAA9F,OAAA,EAAAsC,GAAA,IAAAA,EAAA,KAAArC,EAAA,KAAA6F,WAAAxD,GAAA,GAAArC,EAAA2F,aAAArD,EAAA,YAAA4E,SAAAlH,EAAAgG,WAAAhG,EAAA4F,UAAAG,EAAA/F,GAAA8D,CAAA,kBAAAxB,GAAA,QAAAD,EAAA,KAAAwD,WAAA9F,OAAA,EAAAsC,GAAA,IAAAA,EAAA,KAAArC,EAAA,KAAA6F,WAAAxD,GAAA,GAAArC,EAAAyF,SAAAnD,EAAA,KAAAC,EAAAvC,EAAAgG,WAAA,aAAAzD,EAAAzF,KAAA,KAAA2F,EAAAF,EAAAiB,IAAAuC,EAAA/F,EAAA,QAAAyC,CAAA,QAAA5G,MAAA,0BAAAuL,cAAA,SAAA/E,EAAArC,EAAAuC,GAAA,YAAAwC,SAAA,CAAApC,SAAAwB,EAAA9B,GAAAgD,WAAArF,EAAAuF,QAAAhD,GAAA,cAAAuC,SAAA,KAAAtB,IAAAlB,GAAAwB,CAAA,GAAAzB,CAAA,UAAAwF,EAAAtF,EAAAD,EAAAD,EAAArC,EAAAyC,EAAAlJ,EAAAqJ,GAAA,QAAApJ,EAAA+I,EAAAhJ,GAAAqJ,GAAAE,EAAAtJ,EAAAmC,KAAA,OAAA4G,GAAA,YAAAF,EAAAE,EAAA,CAAA/I,EAAAqL,KAAAvC,EAAAQ,GAAA9E,QAAAC,QAAA6E,GAAA3E,KAAA6B,EAAAyC,EAAA,CAEA,IAAMkK,EAAc,CACZC,QAAO,SACXC,EAMAC,GACuB,OAX3BvK,EAW2BH,IAAAiE,MAAA,SAAA0G,IAAA,IAAAf,EAAArB,EAAAqC,EAAA1E,EAAA2E,EAAAtE,EAAA,OAAAvG,IAAA3G,MAAA,SAAAyR,GAAA,cAAAA,EAAArG,KAAAqG,EAAA5H,MAAA,OAMgC,GAL/C0G,EAA2Ca,EAA3Cb,IAAKrB,EAAsCkC,EAAtClC,QAASqC,EAA6BH,EAA7BG,QAAS1E,EAAoBuE,EAApBvE,gBAC3BqC,SAAAA,EAASK,WAATL,MAAsBA,GAAAA,EAASM,UACjC+B,EAAe,MAAI,SAAHhM,OAAY2J,EAAQK,UAAS,KAAAhK,OAAI2J,EAAQM,QAAU,IAG/DgC,EAAcR,EAAsBT,EAAKrB,IAE3CrC,EAAiB,CAAF4E,EAAA5H,KAAA,gBAAA4H,EAAA5H,KAAA,EACGiE,EAASjB,EAAiB2E,EAAa,CAAEtC,QAAAA,EAASN,QAAQ,IAAQ,OAA5E,KAAJ1B,EAAIuE,EAAAjI,MACA,CAAFiI,EAAA5H,KAAA,SAC4D,OAAlEwH,EAAS,CAAEd,IAAAA,EAAKvB,gBAAiB,IAAI0C,WAAWxE,GAAOgC,QAAAA,IAAWuC,EAAA9H,OAAA,yBAAA8H,EAAA5H,KAAA,GAKhE8H,MAAMpB,EAAK,CAAEgB,QAAAA,IAChB7O,MAAK,SAACkP,GAAQ,OAAKA,EAAS/D,aAAa,IACzCnL,MAAK,SAAChD,GACL2R,EAAS,CAAEd,IAAAA,EAAKvB,gBAAiB,IAAI0C,WAAWhS,GAAOwP,QAAAA,IAEnDrC,GACF6C,EAAU7C,EAAiB2E,EAAa9R,EAE5C,IAAE,OACK,SAACuD,GACN,MAAM,IAAIiD,EAAY,8CAA+CjD,aAAK,EAALA,EAAO3C,SAC9E,IAAE,yBAAAmR,EAAAnG,OAAA,GAAAgG,EAAA,IAtCR,eAAAzK,EAAA,KAAAD,EAAAN,UAAA,WAAA/D,SAAA,SAAAgC,EAAAyC,GAAA,IAAAlJ,EAAAgJ,EAAA9E,MAAA6E,EAAAD,GAAA,SAAA0F,EAAAxF,GAAAsF,EAAAtO,EAAAyG,EAAAyC,EAAAsF,EAAAC,EAAA,OAAAzF,EAAA,UAAAyF,EAAAzF,GAAAsF,EAAAtO,EAAAyG,EAAAyC,EAAAsF,EAAAC,EAAA,QAAAzF,EAAA,CAAAwF,OAAA,cAAAxF,CAuCE,GAGF,U,yuCCnCA9H,EALuB6S,GAAAA,GAAA,GAClBX,GAAW,IACdC,QAAS,SAACC,GAAS,OAAKF,EAAYC,QAAQC,EAAMtO,YAAY,K,INKhE","sources":["webpack://cod-dicomweb-server/webpack/universalModuleDefinition","webpack://cod-dicomweb-server/./node_modules/comlink/dist/esm/comlink.mjs","webpack://cod-dicomweb-server/./src/classes/customClasses.ts","webpack://cod-dicomweb-server/./src/constants/dataRetrieval.ts","webpack://cod-dicomweb-server/./src/fileAccessSystemUtils.ts","webpack://cod-dicomweb-server/./src/dataRetrieval/scripts/filePartial.ts","webpack://cod-dicomweb-server/./src/dataRetrieval/workers/filePartialWorker.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, () => {\nreturn ","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nconst proxyMarker = Symbol(\"Comlink.proxy\");\nconst createEndpoint = Symbol(\"Comlink.endpoint\");\nconst releaseProxy = Symbol(\"Comlink.releaseProxy\");\nconst finalizer = Symbol(\"Comlink.finalizer\");\nconst throwMarker = Symbol(\"Comlink.thrown\");\nconst isObject = (val) => (typeof val === \"object\" && val !== null) || typeof val === \"function\";\n/**\n * Internal transfer handle to handle objects marked to proxy.\n */\nconst proxyTransferHandler = {\n canHandle: (val) => isObject(val) && val[proxyMarker],\n serialize(obj) {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port1);\n return [port2, [port2]];\n },\n deserialize(port) {\n port.start();\n return wrap(port);\n },\n};\n/**\n * Internal transfer handler to handle thrown exceptions.\n */\nconst throwTransferHandler = {\n canHandle: (value) => isObject(value) && throwMarker in value,\n serialize({ value }) {\n let serialized;\n if (value instanceof Error) {\n serialized = {\n isError: true,\n value: {\n message: value.message,\n name: value.name,\n stack: value.stack,\n },\n };\n }\n else {\n serialized = { isError: false, value };\n }\n return [serialized, []];\n },\n deserialize(serialized) {\n if (serialized.isError) {\n throw Object.assign(new Error(serialized.value.message), serialized.value);\n }\n throw serialized.value;\n },\n};\n/**\n * Allows customizing the serialization of certain values.\n */\nconst transferHandlers = new Map([\n [\"proxy\", proxyTransferHandler],\n [\"throw\", throwTransferHandler],\n]);\nfunction isAllowedOrigin(allowedOrigins, origin) {\n for (const allowedOrigin of allowedOrigins) {\n if (origin === allowedOrigin || allowedOrigin === \"*\") {\n return true;\n }\n if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) {\n return true;\n }\n }\n return false;\n}\nfunction expose(obj, ep = globalThis, allowedOrigins = [\"*\"]) {\n ep.addEventListener(\"message\", function callback(ev) {\n if (!ev || !ev.data) {\n return;\n }\n if (!isAllowedOrigin(allowedOrigins, ev.origin)) {\n console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);\n return;\n }\n const { id, type, path } = Object.assign({ path: [] }, ev.data);\n const argumentList = (ev.data.argumentList || []).map(fromWireValue);\n let returnValue;\n try {\n const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj);\n const rawValue = path.reduce((obj, prop) => obj[prop], obj);\n switch (type) {\n case \"GET\" /* MessageType.GET */:\n {\n returnValue = rawValue;\n }\n break;\n case \"SET\" /* MessageType.SET */:\n {\n parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);\n returnValue = true;\n }\n break;\n case \"APPLY\" /* MessageType.APPLY */:\n {\n returnValue = rawValue.apply(parent, argumentList);\n }\n break;\n case \"CONSTRUCT\" /* MessageType.CONSTRUCT */:\n {\n const value = new rawValue(...argumentList);\n returnValue = proxy(value);\n }\n break;\n case \"ENDPOINT\" /* MessageType.ENDPOINT */:\n {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port2);\n returnValue = transfer(port1, [port1]);\n }\n break;\n case \"RELEASE\" /* MessageType.RELEASE */:\n {\n returnValue = undefined;\n }\n break;\n default:\n return;\n }\n }\n catch (value) {\n returnValue = { value, [throwMarker]: 0 };\n }\n Promise.resolve(returnValue)\n .catch((value) => {\n return { value, [throwMarker]: 0 };\n })\n .then((returnValue) => {\n const [wireValue, transferables] = toWireValue(returnValue);\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n if (type === \"RELEASE\" /* MessageType.RELEASE */) {\n // detach and deactive after sending release response above.\n ep.removeEventListener(\"message\", callback);\n closeEndPoint(ep);\n if (finalizer in obj && typeof obj[finalizer] === \"function\") {\n obj[finalizer]();\n }\n }\n })\n .catch((error) => {\n // Send Serialization Error To Caller\n const [wireValue, transferables] = toWireValue({\n value: new TypeError(\"Unserializable return value\"),\n [throwMarker]: 0,\n });\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n });\n });\n if (ep.start) {\n ep.start();\n }\n}\nfunction isMessagePort(endpoint) {\n return endpoint.constructor.name === \"MessagePort\";\n}\nfunction closeEndPoint(endpoint) {\n if (isMessagePort(endpoint))\n endpoint.close();\n}\nfunction wrap(ep, target) {\n const pendingListeners = new Map();\n ep.addEventListener(\"message\", function handleMessage(ev) {\n const { data } = ev;\n if (!data || !data.id) {\n return;\n }\n const resolver = pendingListeners.get(data.id);\n if (!resolver) {\n return;\n }\n try {\n resolver(data);\n }\n finally {\n pendingListeners.delete(data.id);\n }\n });\n return createProxy(ep, pendingListeners, [], target);\n}\nfunction throwIfProxyReleased(isReleased) {\n if (isReleased) {\n throw new Error(\"Proxy has been released and is not useable\");\n }\n}\nfunction releaseEndpoint(ep) {\n return requestResponseMessage(ep, new Map(), {\n type: \"RELEASE\" /* MessageType.RELEASE */,\n }).then(() => {\n closeEndPoint(ep);\n });\n}\nconst proxyCounter = new WeakMap();\nconst proxyFinalizers = \"FinalizationRegistry\" in globalThis &&\n new FinalizationRegistry((ep) => {\n const newCount = (proxyCounter.get(ep) || 0) - 1;\n proxyCounter.set(ep, newCount);\n if (newCount === 0) {\n releaseEndpoint(ep);\n }\n });\nfunction registerProxy(proxy, ep) {\n const newCount = (proxyCounter.get(ep) || 0) + 1;\n proxyCounter.set(ep, newCount);\n if (proxyFinalizers) {\n proxyFinalizers.register(proxy, ep, proxy);\n }\n}\nfunction unregisterProxy(proxy) {\n if (proxyFinalizers) {\n proxyFinalizers.unregister(proxy);\n }\n}\nfunction createProxy(ep, pendingListeners, path = [], target = function () { }) {\n let isProxyReleased = false;\n const proxy = new Proxy(target, {\n get(_target, prop) {\n throwIfProxyReleased(isProxyReleased);\n if (prop === releaseProxy) {\n return () => {\n unregisterProxy(proxy);\n releaseEndpoint(ep);\n pendingListeners.clear();\n isProxyReleased = true;\n };\n }\n if (prop === \"then\") {\n if (path.length === 0) {\n return { then: () => proxy };\n }\n const r = requestResponseMessage(ep, pendingListeners, {\n type: \"GET\" /* MessageType.GET */,\n path: path.map((p) => p.toString()),\n }).then(fromWireValue);\n return r.then.bind(r);\n }\n return createProxy(ep, pendingListeners, [...path, prop]);\n },\n set(_target, prop, rawValue) {\n throwIfProxyReleased(isProxyReleased);\n // FIXME: ES6 Proxy Handler `set` methods are supposed to return a\n // boolean. To show good will, we return true asynchronously ¯\\_(ツ)_/¯\n const [value, transferables] = toWireValue(rawValue);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"SET\" /* MessageType.SET */,\n path: [...path, prop].map((p) => p.toString()),\n value,\n }, transferables).then(fromWireValue);\n },\n apply(_target, _thisArg, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const last = path[path.length - 1];\n if (last === createEndpoint) {\n return requestResponseMessage(ep, pendingListeners, {\n type: \"ENDPOINT\" /* MessageType.ENDPOINT */,\n }).then(fromWireValue);\n }\n // We just pretend that `bind()` didn’t happen.\n if (last === \"bind\") {\n return createProxy(ep, pendingListeners, path.slice(0, -1));\n }\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"APPLY\" /* MessageType.APPLY */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n construct(_target, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"CONSTRUCT\" /* MessageType.CONSTRUCT */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n });\n registerProxy(proxy, ep);\n return proxy;\n}\nfunction myFlat(arr) {\n return Array.prototype.concat.apply([], arr);\n}\nfunction processArguments(argumentList) {\n const processed = argumentList.map(toWireValue);\n return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];\n}\nconst transferCache = new WeakMap();\nfunction transfer(obj, transfers) {\n transferCache.set(obj, transfers);\n return obj;\n}\nfunction proxy(obj) {\n return Object.assign(obj, { [proxyMarker]: true });\n}\nfunction windowEndpoint(w, context = globalThis, targetOrigin = \"*\") {\n return {\n postMessage: (msg, transferables) => w.postMessage(msg, targetOrigin, transferables),\n addEventListener: context.addEventListener.bind(context),\n removeEventListener: context.removeEventListener.bind(context),\n };\n}\nfunction toWireValue(value) {\n for (const [name, handler] of transferHandlers) {\n if (handler.canHandle(value)) {\n const [serializedValue, transferables] = handler.serialize(value);\n return [\n {\n type: \"HANDLER\" /* WireValueType.HANDLER */,\n name,\n value: serializedValue,\n },\n transferables,\n ];\n }\n }\n return [\n {\n type: \"RAW\" /* WireValueType.RAW */,\n value,\n },\n transferCache.get(value) || [],\n ];\n}\nfunction fromWireValue(value) {\n switch (value.type) {\n case \"HANDLER\" /* WireValueType.HANDLER */:\n return transferHandlers.get(value.name).deserialize(value.value);\n case \"RAW\" /* WireValueType.RAW */:\n return value.value;\n }\n}\nfunction requestResponseMessage(ep, pendingListeners, msg, transfers) {\n return new Promise((resolve) => {\n const id = generateUUID();\n pendingListeners.set(id, resolve);\n if (ep.start) {\n ep.start();\n }\n ep.postMessage(Object.assign({ id }, msg), transfers);\n });\n}\nfunction generateUUID() {\n return new Array(4)\n .fill(0)\n .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16))\n .join(\"-\");\n}\n\nexport { createEndpoint, expose, finalizer, proxy, proxyMarker, releaseProxy, transfer, transferHandlers, windowEndpoint, wrap };\n//# sourceMappingURL=comlink.mjs.map\n","export class CustomError extends Error {}\n\nexport class CustomErrorEvent extends Event {\n error: CustomError;\n message: string;\n\n constructor(message: string, error: CustomError) {\n super(message);\n this.message = message;\n this.error = error;\n }\n}\n\nexport class CustomMessageEvent extends MessageEvent<{\n url: string;\n position: number;\n chunk?: Uint8Array;\n isAppending?: boolean;\n fileArraybuffer?: Uint8Array;\n offsets?: { startByte: number; endByte: number };\n}> {}\n","export const FILE_PARTIAL_WORKER_NAME = 'filePartial';\nexport const FILE_STREAMING_WORKER_NAME = 'fileStreaming';\n\nexport const THRESHOLD = 10000;\n\nexport const IDB_DIR_HANDLE_KEY = 'indexed_db_directory_handle_key';\n\nexport const FILE_SYSTEM_ROUTES = {\n Partial: 'partial'\n};\n","import { get } from 'idb-keyval';\nimport { FILE_SYSTEM_ROUTES, IDB_DIR_HANDLE_KEY } from './constants/dataRetrieval';\nimport { JsonMetadata } from './types';\n\nlet directoryHandle: FileSystemDirectoryHandle;\n\nexport async function getDirectoryHandle(): Promise<FileSystemDirectoryHandle> {\n try {\n if (!directoryHandle) {\n directoryHandle = (await get(IDB_DIR_HANDLE_KEY)) as FileSystemDirectoryHandle;\n }\n\n if (!directoryHandle) {\n directoryHandle = await navigator.storage.getDirectory();\n }\n\n return directoryHandle;\n } catch (error) {\n console.warn(`Error getting directoryhandle: ${error.message}`);\n }\n}\n\nasync function readJsonFile(directoryHandle: FileSystemDirectoryHandle, name: string): Promise<JsonMetadata> {\n return await directoryHandle\n .getFileHandle(name)\n .then((fileHandle) =>\n fileHandle\n .getFile()\n .then((file) => file.text())\n .then((metadataString) => JSON.parse(metadataString))\n )\n .catch((): null => null);\n}\n\nasync function readArrayBufferFile(directoryHandle: FileSystemDirectoryHandle, name: string): Promise<ArrayBuffer> {\n return await directoryHandle\n .getFileHandle(name)\n .then((fileHandle) => fileHandle.getFile().then((file) => file.arrayBuffer()))\n .catch((): null => null);\n}\n\nexport async function readFile(\n directoryHandle: FileSystemDirectoryHandle,\n name: string,\n options: { isJson?: boolean; offsets?: { startByte: number; endByte: number } } = {}\n): Promise<ArrayBuffer | JsonMetadata> {\n if (!name) {\n return;\n }\n\n const pathParts = name.split('/');\n let currentDir = directoryHandle;\n\n try {\n for (let i = 0; i < pathParts.length - 1; i++) {\n currentDir = await currentDir.getDirectoryHandle(pathParts[i], { create: true });\n }\n\n const fileName = pathParts.at(-1);\n\n if (options.isJson) {\n return readJsonFile(currentDir, fileName);\n } else {\n return readArrayBufferFile(currentDir, fileName).catch(async () => {\n console.warn(`Error reading the file ${name} from partial folder, trying from full file`);\n\n if (options.offsets && pathParts.includes(FILE_SYSTEM_ROUTES.Partial)) {\n try {\n pathParts.splice(\n pathParts.findIndex((part) => part === FILE_SYSTEM_ROUTES.Partial),\n 1\n );\n currentDir = directoryHandle;\n for (let i = 0; i < pathParts.length - 1; i++) {\n currentDir = await currentDir.getDirectoryHandle(pathParts[i], { create: true });\n }\n\n const convertedFileName = pathParts.at(-1).split('_')[0] + '.tar';\n const fileArraybuffer = await readArrayBufferFile(currentDir, convertedFileName);\n return fileArraybuffer.slice(options.offsets.startByte, options.offsets.endByte);\n } catch (error) {\n console.warn(`Error reading the file ${name}: ${error.message}`);\n }\n }\n });\n }\n } catch (error) {\n console.warn(`Error reading the file ${name}: ${error.message}`);\n }\n}\n\nexport async function writeFile(\n directoryHandle: FileSystemDirectoryHandle,\n name: string,\n file: ArrayBuffer | JsonMetadata,\n isJson = false\n): Promise<void> {\n try {\n const pathParts = name.split('/');\n let currentDir = directoryHandle;\n\n for (let i = 0; i < pathParts.length - 1; i++) {\n currentDir = await currentDir.getDirectoryHandle(pathParts[i], { create: true });\n }\n\n const fileName = pathParts.at(-1);\n const fileHandle = await currentDir.getFileHandle(fileName, { create: true });\n // @ts-ignore\n const fileWritable = await fileHandle.createWritable();\n if (isJson) {\n await fileWritable.write(JSON.stringify(file));\n } else {\n await fileWritable.write(file as ArrayBuffer);\n }\n await fileWritable.close();\n } catch (error) {\n console.warn(`Error writing the file ${name}: ${error.message}`);\n }\n}\n\nexport function download(fileName: string, file: ArrayBuffer): boolean {\n try {\n const blob = new Blob([file], { type: 'application/x-tar' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = fileName;\n a.click();\n URL.revokeObjectURL(url);\n\n return true;\n } catch (error) {\n console.warn(`Error downloading file - ${fileName}: ` + error.message);\n return false;\n }\n}\n\nexport async function clearPartialFiles(): Promise<void> {\n const removePartialFolder = async (dirHandle: FileSystemDirectoryHandle): Promise<void> => {\n // @ts-ignore\n for await (const [name, handle] of dirHandle.entries()) {\n if (handle.kind === 'directory') {\n if (name.toLowerCase() === FILE_SYSTEM_ROUTES.Partial) {\n await dirHandle.removeEntry(name, { recursive: true }).catch((e) => console.warn(`Failed to remove ${name}:`, e));\n } else {\n // Recurse into other directories\n await removePartialFolder(handle);\n }\n }\n }\n };\n\n try {\n await removePartialFolder(directoryHandle);\n } catch (error) {\n console.warn(`Error clearing partial files: ${error.message}`);\n }\n}\n\nexport function parseCachePath(url: string): string {\n const urlObj = new URL(url);\n const bucketPath = urlObj.pathname.match(/\\/(.*?)\\/studies/)[1];\n const [studyInstanceUID, _, seriesInstanceUID] = urlObj.pathname.match(/studies\\/(.*?)(\\.tar|\\/metadata.json)/)[1].split('/');\n return `${bucketPath}/${studyInstanceUID}/${seriesInstanceUID}`;\n}\n\nexport function createStreamingFileName(url: string): string {\n return `${parseCachePath(url)}/${url.split('series/')[1]}`;\n}\n\nexport function createPartialFileName(url: string, offsets?: { startByte: number; endByte: number }): string {\n const seriesInstanceUID = url.match(/series\\/(.*?).tar/)[1];\n const offsetPart = `${offsets ? `_${offsets?.startByte}_${offsets?.endByte}` : ''}`;\n return `${parseCachePath(url)}/${FILE_SYSTEM_ROUTES.Partial}/${seriesInstanceUID}${offsetPart}.dcm`;\n}\n\nexport function createMetadataFileName(url: string): string {\n return `${parseCachePath(url)}/metadata.json`;\n}\n","import { CustomError } from '../../classes/customClasses';\nimport { readFile, writeFile, createPartialFileName } from '../../fileAccessSystemUtils';\n\nconst filePartial = {\n async partial(\n args: {\n url: string;\n offsets?: { startByte: number; endByte: number };\n headers?: Record<string, string>;\n directoryHandle?: FileSystemDirectoryHandle;\n },\n callBack: (data: { url: string; fileArraybuffer: Uint8Array; offsets: { startByte: number; endByte: number } }) => void\n ): Promise<void | Error> {\n const { url, offsets, headers, directoryHandle } = args;\n if (offsets?.startByte && offsets?.endByte) {\n headers['Range'] = `bytes=${offsets.startByte}-${offsets.endByte - 1}`;\n }\n\n const storageName = createPartialFileName(url, offsets);\n\n if (directoryHandle) {\n const file = (await readFile(directoryHandle, storageName, { offsets, isJson: false })) as ArrayBuffer;\n if (file) {\n callBack({ url, fileArraybuffer: new Uint8Array(file), offsets });\n return;\n }\n }\n\n await fetch(url, { headers })\n .then((response) => response.arrayBuffer())\n .then((data) => {\n callBack({ url, fileArraybuffer: new Uint8Array(data), offsets });\n\n if (directoryHandle) {\n writeFile(directoryHandle, storageName, data);\n }\n })\n .catch((error) => {\n throw new CustomError('filePartial.ts: Error when fetching file: ' + error?.message);\n });\n }\n};\n\nexport default filePartial;\n","import { expose } from 'comlink';\nimport filePartial from '../scripts/filePartial';\n\nconst filePartialWorker = {\n ...filePartial,\n partial: (args: any) => filePartial.partial(args, postMessage)\n};\n\nexpose(filePartialWorker);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","proxyMarker","Symbol","createEndpoint","releaseProxy","finalizer","throwMarker","isObject","val","proxyTransferHandler","canHandle","serialize","obj","port1","port2","MessageChannel","expose","deserialize","port","start","ep","target","pendingListeners","Map","addEventListener","ev","data","id","resolver","get","delete","createProxy","wrap","transferHandlers","value","serialized","Error","isError","message","name","stack","Object","assign","globalThis","allowedOrigins","callback","origin","allowedOrigin","RegExp","test","isAllowedOrigin","console","warn","type","path","argumentList","map","fromWireValue","returnValue","parent","slice","reduce","prop","rawValue","apply","proxy","transfers","transferCache","set","transfer","undefined","Promise","resolve","catch","then","wireValue","transferables","toWireValue","postMessage","removeEventListener","closeEndPoint","error","TypeError","endpoint","constructor","isMessagePort","close","throwIfProxyReleased","isReleased","releaseEndpoint","requestResponseMessage","proxyCounter","WeakMap","proxyFinalizers","FinalizationRegistry","newCount","isProxyReleased","Proxy","_target","unregister","unregisterProxy","clear","length","r","p","toString","bind","_thisArg","rawArgumentList","last","processArguments","construct","register","registerProxy","processed","v","arr","Array","prototype","concat","handler","serializedValue","msg","fill","Math","floor","random","Number","MAX_SAFE_INTEGER","join","CustomError","_Error","_classCallCheck","_callSuper","arguments","_inherits","_createClass","_wrapNativeSuper","FILE_SYSTEM_ROUTES","_regeneratorRuntime","e","t","n","hasOwnProperty","o","defineProperty","iterator","c","asyncIterator","u","toStringTag","enumerable","configurable","writable","Generator","create","Context","makeInvokeMethod","tryCatch","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","d","getPrototypeOf","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","__await","callInvokeWithMethodAndArg","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","mark","setPrototypeOf","__proto__","awrap","async","keys","reverse","pop","prev","charAt","stop","rval","handle","complete","finish","delegateYield","_slicedToArray","isArray","_arrayWithHoles","_iterableToArrayLimit","_arrayLikeToArray","from","_unsupportedIterableToArray","_nonIterableRest","asyncGeneratorStep","_asyncToGenerator","_next","_throw","readJsonFile","_x","_x2","_readJsonFile","_callee2","directoryHandle","_context2","getFileHandle","fileHandle","getFile","file","text","metadataString","JSON","parse","readArrayBufferFile","_x3","_x4","_readArrayBufferFile","_callee3","_context3","arrayBuffer","readFile","_x5","_x6","_readFile","_callee5","options","pathParts","currentDir","fileName","_args5","_context5","split","getDirectoryHandle","at","isJson","_callee4","_i","convertedFileName","fileArraybuffer","_context4","offsets","includes","splice","findIndex","part","startByte","endByte","t0","writeFile","_x7","_x8","_x9","_writeFile","_callee6","fileWritable","_args6","_context6","createWritable","write","stringify","parseCachePath","url","urlObj","URL","bucketPath","pathname","match","_urlObj$pathname$matc2","studyInstanceUID","seriesInstanceUID","createPartialFileName","offsetPart","filePartial","partial","args","callBack","_callee","headers","storageName","_context","Uint8Array","fetch","response","_objectSpread"],"sourceRoot":""}
1
+ {"version":3,"file":"563.js","mappings":"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","sources":["webpack://cod-dicomweb-server/webpack/universalModuleDefinition","webpack://cod-dicomweb-server/./node_modules/comlink/dist/esm/comlink.mjs","webpack://cod-dicomweb-server/./src/classes/customClasses.ts","webpack://cod-dicomweb-server/./src/constants/dataRetrieval.ts","webpack://cod-dicomweb-server/./src/fileAccessSystemUtils.ts","webpack://cod-dicomweb-server/./src/dataRetrieval/scripts/filePartial.ts","webpack://cod-dicomweb-server/./src/dataRetrieval/workers/filePartialWorker.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, () => {\nreturn ","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nconst proxyMarker = Symbol(\"Comlink.proxy\");\nconst createEndpoint = Symbol(\"Comlink.endpoint\");\nconst releaseProxy = Symbol(\"Comlink.releaseProxy\");\nconst finalizer = Symbol(\"Comlink.finalizer\");\nconst throwMarker = Symbol(\"Comlink.thrown\");\nconst isObject = (val) => (typeof val === \"object\" && val !== null) || typeof val === \"function\";\n/**\n * Internal transfer handle to handle objects marked to proxy.\n */\nconst proxyTransferHandler = {\n canHandle: (val) => isObject(val) && val[proxyMarker],\n serialize(obj) {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port1);\n return [port2, [port2]];\n },\n deserialize(port) {\n port.start();\n return wrap(port);\n },\n};\n/**\n * Internal transfer handler to handle thrown exceptions.\n */\nconst throwTransferHandler = {\n canHandle: (value) => isObject(value) && throwMarker in value,\n serialize({ value }) {\n let serialized;\n if (value instanceof Error) {\n serialized = {\n isError: true,\n value: {\n message: value.message,\n name: value.name,\n stack: value.stack,\n },\n };\n }\n else {\n serialized = { isError: false, value };\n }\n return [serialized, []];\n },\n deserialize(serialized) {\n if (serialized.isError) {\n throw Object.assign(new Error(serialized.value.message), serialized.value);\n }\n throw serialized.value;\n },\n};\n/**\n * Allows customizing the serialization of certain values.\n */\nconst transferHandlers = new Map([\n [\"proxy\", proxyTransferHandler],\n [\"throw\", throwTransferHandler],\n]);\nfunction isAllowedOrigin(allowedOrigins, origin) {\n for (const allowedOrigin of allowedOrigins) {\n if (origin === allowedOrigin || allowedOrigin === \"*\") {\n return true;\n }\n if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) {\n return true;\n }\n }\n return false;\n}\nfunction expose(obj, ep = globalThis, allowedOrigins = [\"*\"]) {\n ep.addEventListener(\"message\", function callback(ev) {\n if (!ev || !ev.data) {\n return;\n }\n if (!isAllowedOrigin(allowedOrigins, ev.origin)) {\n console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);\n return;\n }\n const { id, type, path } = Object.assign({ path: [] }, ev.data);\n const argumentList = (ev.data.argumentList || []).map(fromWireValue);\n let returnValue;\n try {\n const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj);\n const rawValue = path.reduce((obj, prop) => obj[prop], obj);\n switch (type) {\n case \"GET\" /* MessageType.GET */:\n {\n returnValue = rawValue;\n }\n break;\n case \"SET\" /* MessageType.SET */:\n {\n parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);\n returnValue = true;\n }\n break;\n case \"APPLY\" /* MessageType.APPLY */:\n {\n returnValue = rawValue.apply(parent, argumentList);\n }\n break;\n case \"CONSTRUCT\" /* MessageType.CONSTRUCT */:\n {\n const value = new rawValue(...argumentList);\n returnValue = proxy(value);\n }\n break;\n case \"ENDPOINT\" /* MessageType.ENDPOINT */:\n {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port2);\n returnValue = transfer(port1, [port1]);\n }\n break;\n case \"RELEASE\" /* MessageType.RELEASE */:\n {\n returnValue = undefined;\n }\n break;\n default:\n return;\n }\n }\n catch (value) {\n returnValue = { value, [throwMarker]: 0 };\n }\n Promise.resolve(returnValue)\n .catch((value) => {\n return { value, [throwMarker]: 0 };\n })\n .then((returnValue) => {\n const [wireValue, transferables] = toWireValue(returnValue);\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n if (type === \"RELEASE\" /* MessageType.RELEASE */) {\n // detach and deactive after sending release response above.\n ep.removeEventListener(\"message\", callback);\n closeEndPoint(ep);\n if (finalizer in obj && typeof obj[finalizer] === \"function\") {\n obj[finalizer]();\n }\n }\n })\n .catch((error) => {\n // Send Serialization Error To Caller\n const [wireValue, transferables] = toWireValue({\n value: new TypeError(\"Unserializable return value\"),\n [throwMarker]: 0,\n });\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n });\n });\n if (ep.start) {\n ep.start();\n }\n}\nfunction isMessagePort(endpoint) {\n return endpoint.constructor.name === \"MessagePort\";\n}\nfunction closeEndPoint(endpoint) {\n if (isMessagePort(endpoint))\n endpoint.close();\n}\nfunction wrap(ep, target) {\n const pendingListeners = new Map();\n ep.addEventListener(\"message\", function handleMessage(ev) {\n const { data } = ev;\n if (!data || !data.id) {\n return;\n }\n const resolver = pendingListeners.get(data.id);\n if (!resolver) {\n return;\n }\n try {\n resolver(data);\n }\n finally {\n pendingListeners.delete(data.id);\n }\n });\n return createProxy(ep, pendingListeners, [], target);\n}\nfunction throwIfProxyReleased(isReleased) {\n if (isReleased) {\n throw new Error(\"Proxy has been released and is not useable\");\n }\n}\nfunction releaseEndpoint(ep) {\n return requestResponseMessage(ep, new Map(), {\n type: \"RELEASE\" /* MessageType.RELEASE */,\n }).then(() => {\n closeEndPoint(ep);\n });\n}\nconst proxyCounter = new WeakMap();\nconst proxyFinalizers = \"FinalizationRegistry\" in globalThis &&\n new FinalizationRegistry((ep) => {\n const newCount = (proxyCounter.get(ep) || 0) - 1;\n proxyCounter.set(ep, newCount);\n if (newCount === 0) {\n releaseEndpoint(ep);\n }\n });\nfunction registerProxy(proxy, ep) {\n const newCount = (proxyCounter.get(ep) || 0) + 1;\n proxyCounter.set(ep, newCount);\n if (proxyFinalizers) {\n proxyFinalizers.register(proxy, ep, proxy);\n }\n}\nfunction unregisterProxy(proxy) {\n if (proxyFinalizers) {\n proxyFinalizers.unregister(proxy);\n }\n}\nfunction createProxy(ep, pendingListeners, path = [], target = function () { }) {\n let isProxyReleased = false;\n const proxy = new Proxy(target, {\n get(_target, prop) {\n throwIfProxyReleased(isProxyReleased);\n if (prop === releaseProxy) {\n return () => {\n unregisterProxy(proxy);\n releaseEndpoint(ep);\n pendingListeners.clear();\n isProxyReleased = true;\n };\n }\n if (prop === \"then\") {\n if (path.length === 0) {\n return { then: () => proxy };\n }\n const r = requestResponseMessage(ep, pendingListeners, {\n type: \"GET\" /* MessageType.GET */,\n path: path.map((p) => p.toString()),\n }).then(fromWireValue);\n return r.then.bind(r);\n }\n return createProxy(ep, pendingListeners, [...path, prop]);\n },\n set(_target, prop, rawValue) {\n throwIfProxyReleased(isProxyReleased);\n // FIXME: ES6 Proxy Handler `set` methods are supposed to return a\n // boolean. To show good will, we return true asynchronously ¯\\_(ツ)_/¯\n const [value, transferables] = toWireValue(rawValue);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"SET\" /* MessageType.SET */,\n path: [...path, prop].map((p) => p.toString()),\n value,\n }, transferables).then(fromWireValue);\n },\n apply(_target, _thisArg, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const last = path[path.length - 1];\n if (last === createEndpoint) {\n return requestResponseMessage(ep, pendingListeners, {\n type: \"ENDPOINT\" /* MessageType.ENDPOINT */,\n }).then(fromWireValue);\n }\n // We just pretend that `bind()` didn’t happen.\n if (last === \"bind\") {\n return createProxy(ep, pendingListeners, path.slice(0, -1));\n }\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"APPLY\" /* MessageType.APPLY */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n construct(_target, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"CONSTRUCT\" /* MessageType.CONSTRUCT */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n });\n registerProxy(proxy, ep);\n return proxy;\n}\nfunction myFlat(arr) {\n return Array.prototype.concat.apply([], arr);\n}\nfunction processArguments(argumentList) {\n const processed = argumentList.map(toWireValue);\n return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];\n}\nconst transferCache = new WeakMap();\nfunction transfer(obj, transfers) {\n transferCache.set(obj, transfers);\n return obj;\n}\nfunction proxy(obj) {\n return Object.assign(obj, { [proxyMarker]: true });\n}\nfunction windowEndpoint(w, context = globalThis, targetOrigin = \"*\") {\n return {\n postMessage: (msg, transferables) => w.postMessage(msg, targetOrigin, transferables),\n addEventListener: context.addEventListener.bind(context),\n removeEventListener: context.removeEventListener.bind(context),\n };\n}\nfunction toWireValue(value) {\n for (const [name, handler] of transferHandlers) {\n if (handler.canHandle(value)) {\n const [serializedValue, transferables] = handler.serialize(value);\n return [\n {\n type: \"HANDLER\" /* WireValueType.HANDLER */,\n name,\n value: serializedValue,\n },\n transferables,\n ];\n }\n }\n return [\n {\n type: \"RAW\" /* WireValueType.RAW */,\n value,\n },\n transferCache.get(value) || [],\n ];\n}\nfunction fromWireValue(value) {\n switch (value.type) {\n case \"HANDLER\" /* WireValueType.HANDLER */:\n return transferHandlers.get(value.name).deserialize(value.value);\n case \"RAW\" /* WireValueType.RAW */:\n return value.value;\n }\n}\nfunction requestResponseMessage(ep, pendingListeners, msg, transfers) {\n return new Promise((resolve) => {\n const id = generateUUID();\n pendingListeners.set(id, resolve);\n if (ep.start) {\n ep.start();\n }\n ep.postMessage(Object.assign({ id }, msg), transfers);\n });\n}\nfunction generateUUID() {\n return new Array(4)\n .fill(0)\n .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16))\n .join(\"-\");\n}\n\nexport { createEndpoint, expose, finalizer, proxy, proxyMarker, releaseProxy, transfer, transferHandlers, windowEndpoint, wrap };\n//# sourceMappingURL=comlink.mjs.map\n","export class CustomError extends Error {}\n\nexport class CustomErrorEvent extends Event {\n error: CustomError;\n message: string;\n\n constructor(message: string, error: CustomError) {\n super(message);\n this.message = message;\n this.error = error;\n }\n}\n\nexport class CustomMessageEvent extends MessageEvent<{\n url: string;\n position: number;\n chunk?: Uint8Array;\n isAppending?: boolean;\n fileArraybuffer?: Uint8Array;\n totalLength: number;\n offsets?: { startByte: number; endByte: number };\n}> {}\n","export const FILE_PARTIAL_WORKER_NAME = 'filePartial';\nexport const FILE_STREAMING_WORKER_NAME = 'fileStreaming';\n\nexport const THRESHOLD = 10000;\n\nexport const IDB_DIR_HANDLE_KEY = 'indexed_db_directory_handle_key';\n\nexport const FILE_SYSTEM_ROUTES = {\n Partial: 'partial'\n};\n","import { get } from 'idb-keyval';\nimport { FILE_SYSTEM_ROUTES, IDB_DIR_HANDLE_KEY } from './constants/dataRetrieval';\nimport { JsonMetadata } from './types';\n\nlet directoryHandle: FileSystemDirectoryHandle;\n\nexport async function getDirectoryHandle(): Promise<FileSystemDirectoryHandle> {\n try {\n if (!directoryHandle) {\n directoryHandle = (await get(IDB_DIR_HANDLE_KEY)) as FileSystemDirectoryHandle;\n }\n\n if (!directoryHandle) {\n directoryHandle = await navigator.storage.getDirectory();\n }\n\n return directoryHandle;\n } catch (error) {\n console.warn(`Error getting directoryhandle: ${error.message}`);\n }\n}\n\nasync function readJsonFile(directoryHandle: FileSystemDirectoryHandle, name: string): Promise<JsonMetadata> {\n return await directoryHandle\n .getFileHandle(name)\n .then((fileHandle) =>\n fileHandle\n .getFile()\n .then((file) => file.text())\n .then((metadataString) => JSON.parse(metadataString))\n )\n .catch((): null => null);\n}\n\nasync function readArrayBufferFile(directoryHandle: FileSystemDirectoryHandle, name: string): Promise<ArrayBuffer> {\n return await directoryHandle\n .getFileHandle(name)\n .then((fileHandle) => fileHandle.getFile().then((file) => file.arrayBuffer()))\n .catch((): null => null);\n}\n\nexport async function readFile(\n directoryHandle: FileSystemDirectoryHandle,\n name: string,\n options: { isJson?: boolean; offsets?: { startByte: number; endByte: number } } = {}\n): Promise<ArrayBuffer | JsonMetadata> {\n if (!name) {\n return;\n }\n\n const pathParts = name.split('/');\n let currentDir = directoryHandle;\n\n try {\n for (let i = 0; i < pathParts.length - 1; i++) {\n currentDir = await currentDir.getDirectoryHandle(pathParts[i], { create: true });\n }\n\n const fileName = pathParts.at(-1);\n\n if (options.isJson) {\n return readJsonFile(currentDir, fileName);\n } else {\n return readArrayBufferFile(currentDir, fileName).catch(async () => {\n console.warn(`Error reading the file ${name} from partial folder, trying from full file`);\n\n if (options.offsets && pathParts.includes(FILE_SYSTEM_ROUTES.Partial)) {\n try {\n pathParts.splice(\n pathParts.findIndex((part) => part === FILE_SYSTEM_ROUTES.Partial),\n 1\n );\n currentDir = directoryHandle;\n for (let i = 0; i < pathParts.length - 1; i++) {\n currentDir = await currentDir.getDirectoryHandle(pathParts[i], { create: true });\n }\n\n const convertedFileName = pathParts.at(-1).split('_')[0] + '.tar';\n const fileArraybuffer = await readArrayBufferFile(currentDir, convertedFileName);\n return fileArraybuffer.slice(options.offsets.startByte, options.offsets.endByte);\n } catch (error) {\n console.warn(`Error reading the file ${name}: ${error.message}`);\n }\n }\n });\n }\n } catch (error) {\n console.warn(`Error reading the file ${name}: ${error.message}`);\n }\n}\n\nexport async function writeFile(\n directoryHandle: FileSystemDirectoryHandle,\n name: string,\n file: ArrayBuffer | JsonMetadata,\n isJson = false\n): Promise<void> {\n try {\n const pathParts = name.split('/');\n let currentDir = directoryHandle;\n\n for (let i = 0; i < pathParts.length - 1; i++) {\n currentDir = await currentDir.getDirectoryHandle(pathParts[i], { create: true });\n }\n\n const fileName = pathParts.at(-1);\n const fileHandle = await currentDir.getFileHandle(fileName, { create: true });\n // @ts-ignore\n const fileWritable = await fileHandle.createWritable();\n if (isJson) {\n await fileWritable.write(JSON.stringify(file));\n } else {\n await fileWritable.write(file as ArrayBuffer);\n }\n await fileWritable.close();\n } catch (error) {\n console.warn(`Error writing the file ${name}: ${error.message}`);\n }\n}\n\nexport function download(fileName: string, file: ArrayBuffer): boolean {\n try {\n const blob = new Blob([file], { type: 'application/x-tar' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = fileName;\n a.click();\n URL.revokeObjectURL(url);\n\n return true;\n } catch (error) {\n console.warn(`Error downloading file - ${fileName}: ` + error.message);\n return false;\n }\n}\n\nexport async function clearPartialFiles(): Promise<void> {\n const removePartialFolder = async (dirHandle: FileSystemDirectoryHandle): Promise<void> => {\n // @ts-ignore\n for await (const [name, handle] of dirHandle.entries()) {\n if (handle.kind === 'directory') {\n if (name.toLowerCase() === FILE_SYSTEM_ROUTES.Partial) {\n await dirHandle.removeEntry(name, { recursive: true }).catch((e) => console.warn(`Failed to remove ${name}:`, e));\n } else {\n // Recurse into other directories\n await removePartialFolder(handle);\n }\n }\n }\n };\n\n try {\n await removePartialFolder(directoryHandle);\n } catch (error) {\n console.warn(`Error clearing partial files: ${error.message}`);\n }\n}\n\nexport function parseCachePath(url: string): string {\n const urlObj = new URL(url);\n const bucketPath = urlObj.pathname.match(/\\/(.*?)\\/studies/)[1];\n const [studyInstanceUID, _, seriesInstanceUID] = urlObj.pathname.match(/studies\\/(.*?)(\\.tar|\\/metadata.json)/)[1].split('/');\n return `${bucketPath}/${studyInstanceUID}/${seriesInstanceUID}`;\n}\n\nexport function createStreamingFileName(url: string): string {\n return `${parseCachePath(url)}/${url.split('series/')[1]}`;\n}\n\nexport function createPartialFileName(url: string, offsets?: { startByte: number; endByte: number }): string {\n const seriesInstanceUID = url.match(/series\\/(.*?).tar/)[1];\n const offsetPart = `${offsets ? `_${offsets?.startByte}_${offsets?.endByte}` : ''}`;\n return `${parseCachePath(url)}/${FILE_SYSTEM_ROUTES.Partial}/${seriesInstanceUID}${offsetPart}.dcm`;\n}\n\nexport function createMetadataFileName(url: string): string {\n return `${parseCachePath(url)}/metadata.json`;\n}\n","import { CustomError } from '../../classes/customClasses';\nimport { readFile, writeFile, createPartialFileName } from '../../fileAccessSystemUtils';\n\nconst filePartial = {\n async partial(\n args: {\n url: string;\n offsets?: { startByte: number; endByte: number };\n headers?: Record<string, string>;\n directoryHandle?: FileSystemDirectoryHandle;\n },\n callBack: (data: { url: string; fileArraybuffer: Uint8Array; offsets: { startByte: number; endByte: number } }) => void\n ): Promise<void | Error> {\n const { url, offsets, headers, directoryHandle } = args;\n if (offsets?.startByte && offsets?.endByte) {\n headers['Range'] = `bytes=${offsets.startByte}-${offsets.endByte - 1}`;\n }\n\n const storageName = createPartialFileName(url, offsets);\n\n if (directoryHandle) {\n const file = (await readFile(directoryHandle, storageName, { offsets, isJson: false })) as ArrayBuffer;\n if (file) {\n callBack({ url, fileArraybuffer: new Uint8Array(file), offsets });\n return;\n }\n }\n\n await fetch(url, { headers })\n .then((response) => response.arrayBuffer())\n .then((data) => {\n callBack({ url, fileArraybuffer: new Uint8Array(data), offsets });\n\n if (directoryHandle) {\n writeFile(directoryHandle, storageName, data);\n }\n })\n .catch((error) => {\n throw new CustomError('filePartial.ts: Error when fetching file: ' + error?.message);\n });\n }\n};\n\nexport default filePartial;\n","import { expose } from 'comlink';\nimport filePartial from '../scripts/filePartial';\n\nconst filePartialWorker = {\n ...filePartial,\n partial: (args: any) => filePartial.partial(args, postMessage)\n};\n\nexpose(filePartialWorker);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","proxyMarker","Symbol","createEndpoint","releaseProxy","finalizer","throwMarker","isObject","val","proxyTransferHandler","canHandle","serialize","obj","port1","port2","MessageChannel","expose","deserialize","port","start","ep","target","pendingListeners","Map","addEventListener","ev","data","id","resolver","get","delete","createProxy","wrap","transferHandlers","value","serialized","Error","isError","message","name","stack","Object","assign","globalThis","allowedOrigins","callback","origin","allowedOrigin","RegExp","test","isAllowedOrigin","console","warn","type","path","argumentList","map","fromWireValue","returnValue","parent","slice","reduce","prop","rawValue","apply","proxy","transfers","transferCache","set","transfer","undefined","Promise","resolve","catch","then","wireValue","transferables","toWireValue","postMessage","removeEventListener","closeEndPoint","error","TypeError","endpoint","constructor","isMessagePort","close","throwIfProxyReleased","isReleased","releaseEndpoint","requestResponseMessage","proxyCounter","WeakMap","proxyFinalizers","FinalizationRegistry","newCount","isProxyReleased","Proxy","_target","unregister","unregisterProxy","clear","length","r","p","toString","bind","_thisArg","rawArgumentList","last","processArguments","construct","register","registerProxy","processed","v","arr","Array","prototype","concat","handler","serializedValue","msg","fill","Math","floor","random","Number","MAX_SAFE_INTEGER","join","CustomError","_Error","_classCallCheck","_callSuper","arguments","_inherits","_createClass","_wrapNativeSuper","FILE_SYSTEM_ROUTES","_regeneratorRuntime","e","t","n","hasOwnProperty","o","defineProperty","iterator","c","asyncIterator","u","toStringTag","enumerable","configurable","writable","Generator","create","Context","makeInvokeMethod","tryCatch","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","d","getPrototypeOf","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","__await","callInvokeWithMethodAndArg","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","mark","setPrototypeOf","__proto__","awrap","async","keys","reverse","pop","prev","charAt","stop","rval","handle","complete","finish","delegateYield","_slicedToArray","isArray","_arrayWithHoles","_iterableToArrayLimit","_arrayLikeToArray","from","_unsupportedIterableToArray","_nonIterableRest","asyncGeneratorStep","_asyncToGenerator","_next","_throw","readJsonFile","_x","_x2","_readJsonFile","_callee2","directoryHandle","_context2","getFileHandle","fileHandle","getFile","file","text","metadataString","JSON","parse","readArrayBufferFile","_x3","_x4","_readArrayBufferFile","_callee3","_context3","arrayBuffer","readFile","_x5","_x6","_readFile","_callee5","options","pathParts","currentDir","fileName","_args5","_context5","split","getDirectoryHandle","at","isJson","_callee4","_i","convertedFileName","fileArraybuffer","_context4","offsets","includes","splice","findIndex","part","startByte","endByte","t0","writeFile","_x7","_x8","_x9","_writeFile","_callee6","fileWritable","_args6","_context6","createWritable","write","stringify","parseCachePath","url","urlObj","URL","bucketPath","pathname","match","_urlObj$pathname$matc2","studyInstanceUID","seriesInstanceUID","createPartialFileName","offsetPart","filePartial","partial","args","callBack","_callee","headers","storageName","_context","Uint8Array","fetch","response","_objectSpread"],"sourceRoot":""}