@ohif/app 3.8.0-beta.25 → 3.8.0-beta.27

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.
Files changed (30) hide show
  1. package/dist/{170.bundle.ba2b6bb9a1910e348f9c.js → 170.bundle.80ad57e16afc8855b0fc.js} +9 -9
  2. package/dist/{181.bundle.8bbcaf31270dd56cad1f.js → 181.bundle.87f1df4f401b8023cfd1.js} +4 -4
  3. package/dist/{185.bundle.4a026a3eda76e8d34517.js → 185.bundle.2d7c72ca2f461d711df9.js} +2 -2
  4. package/dist/{199.bundle.d8b92b7ec7c7dd91d160.js → 199.bundle.30893a2f3da90d37b0d9.js} +2 -2
  5. package/dist/{202.bundle.07442d396db3161ee7f3.js → 202.bundle.a607e9ab460999d8c0c8.js} +4 -3
  6. package/dist/{250.bundle.de8df38690c1305b2f8a.js → 250.bundle.5634282a01bd6e15b70d.js} +2 -2
  7. package/dist/{544.bundle.b2b65dd140e9854cb129.js → 26.bundle.c92012465cee00a2a708.js} +8919 -7195
  8. package/dist/{420.bundle.d2a09d89c3e8177bc0d9.js → 420.bundle.208f94f15dcc2be09dc0.js} +7 -7
  9. package/dist/{466.bundle.fd2557fe99960d7ee96b.js → 466.bundle.be8d38922b545c9657dd.js} +4 -4
  10. package/dist/{483.bundle.067bce093473b53dd0f7.js → 483.bundle.4866c3396b19964a0010.js} +4 -4
  11. package/dist/{613.bundle.40f071699be75c012842.js → 613.bundle.b3839caf45bff66f2667.js} +5 -2
  12. package/dist/{738.bundle.5b64bfcded95e22063af.js → 738.bundle.a9dd630892da1e5dcabf.js} +7 -3
  13. package/dist/{822.bundle.1f4c9e059e87914fc12a.js → 822.bundle.775a62e1f79c403f3aed.js} +2 -2
  14. package/dist/{47.bundle.3217b1b873983a6aaa43.js → 95.bundle.db9d2d504abc5dd4fdfa.js} +8 -142
  15. package/dist/{965.bundle.9b78983e1a5791031169.js → 965.bundle.fc770e33fa48b72621cc.js} +9 -0
  16. package/dist/{app.bundle.2406c53a19408fc29486.js → app.bundle.25093dca29b89b580c6b.js} +471 -85
  17. package/dist/cornerstoneDICOMImageLoader.min.js +1 -1
  18. package/dist/cornerstoneDICOMImageLoader.min.js.map +1 -1
  19. package/dist/index.html +1 -1
  20. package/dist/serve.json +12 -0
  21. package/dist/sw.js +1 -1
  22. package/package.json +19 -19
  23. /package/dist/{12.bundle.37529fdf74d10cccda3d.js → 12.bundle.56b9d54b9c0af71af1d7.js} +0 -0
  24. /package/dist/{19.bundle.706b1020e6d744b4a772.js → 19.bundle.3dd19edbc75a5aebd1de.js} +0 -0
  25. /package/dist/{281.bundle.bfa24595c2dcbcfc227a.js → 281.bundle.fc5d5a58827c8ba054b0.js} +0 -0
  26. /package/dist/{359.bundle.eabc596f016eb73fa622.js → 359.bundle.644102e1339a5769fe43.js} +0 -0
  27. /package/dist/{410.bundle.1736835db3336e98c495.js → 410.bundle.089c191e6500a09de5f5.js} +0 -0
  28. /package/dist/{506.bundle.ca89ebd941bebab77590.js → 506.bundle.9fbbe1b884e79e06a3f6.js} +0 -0
  29. /package/dist/{687.bundle.2ac3cd797e3d5be5f053.js → 687.bundle.bc44675be7433cd8670b.js} +0 -0
  30. /package/dist/{814.bundle.1328537fe47b9a202135.js → 814.bundle.b5267cf0fefd476ea55d.js} +0 -0
@@ -989,8 +989,8 @@ function WorkList(_ref) {
989
989
  };
990
990
  });
991
991
  const hasStudies = numOfStudies > 0;
992
- const versionNumber = "3.8.0-beta.25";
993
- const commitHash = "924affa7b5d420c2f91522a075cecbb3c78e8f52";
992
+ const versionNumber = "3.8.0-beta.27";
993
+ const commitHash = "6651008fbb35dabd5991c7f61128e6ef324012df";
994
994
  const menuOptions = [{
995
995
  title: t('Header:About'),
996
996
  icon: 'info',
@@ -1947,19 +1947,19 @@ async function loadModule(module) {
1947
1947
  return imported.default;
1948
1948
  }
1949
1949
  if (module === "@ohif/extension-cornerstone") {
1950
- const imported = await Promise.all(/* import() */[__webpack_require__.e(544), __webpack_require__.e(661), __webpack_require__.e(47), __webpack_require__.e(420)]).then(__webpack_require__.bind(__webpack_require__, 41420));
1950
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(26), __webpack_require__.e(661), __webpack_require__.e(95), __webpack_require__.e(420)]).then(__webpack_require__.bind(__webpack_require__, 41420));
1951
1951
  return imported.default;
1952
1952
  }
1953
1953
  if (module === "@ohif/extension-measurement-tracking") {
1954
- const imported = await Promise.all(/* import() */[__webpack_require__.e(544), __webpack_require__.e(661), __webpack_require__.e(202), __webpack_require__.e(417), __webpack_require__.e(530), __webpack_require__.e(738), __webpack_require__.e(170), __webpack_require__.e(19)]).then(__webpack_require__.bind(__webpack_require__, 28030));
1954
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(26), __webpack_require__.e(661), __webpack_require__.e(202), __webpack_require__.e(417), __webpack_require__.e(530), __webpack_require__.e(738), __webpack_require__.e(170), __webpack_require__.e(19)]).then(__webpack_require__.bind(__webpack_require__, 28030));
1955
1955
  return imported.default;
1956
1956
  }
1957
1957
  if (module === "@ohif/extension-cornerstone-dicom-sr") {
1958
- const imported = await Promise.all(/* import() */[__webpack_require__.e(544), __webpack_require__.e(202), __webpack_require__.e(170)]).then(__webpack_require__.bind(__webpack_require__, 42170));
1958
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(26), __webpack_require__.e(202), __webpack_require__.e(170)]).then(__webpack_require__.bind(__webpack_require__, 42170));
1959
1959
  return imported.default;
1960
1960
  }
1961
1961
  if (module === "@ohif/extension-cornerstone-dicom-seg") {
1962
- const imported = await Promise.all(/* import() */[__webpack_require__.e(544), __webpack_require__.e(661), __webpack_require__.e(202), __webpack_require__.e(417), __webpack_require__.e(485), __webpack_require__.e(738), __webpack_require__.e(466)]).then(__webpack_require__.bind(__webpack_require__, 9943));
1962
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(26), __webpack_require__.e(661), __webpack_require__.e(202), __webpack_require__.e(417), __webpack_require__.e(485), __webpack_require__.e(738), __webpack_require__.e(466)]).then(__webpack_require__.bind(__webpack_require__, 9943));
1963
1963
  return imported.default;
1964
1964
  }
1965
1965
  if (module === "@ohif/extension-dicom-microscopy") {
@@ -1975,7 +1975,7 @@ async function loadModule(module) {
1975
1975
  return imported.default;
1976
1976
  }
1977
1977
  if (module === "@ohif/extension-tmtv") {
1978
- const imported = await Promise.all(/* import() */[__webpack_require__.e(544), __webpack_require__.e(202), __webpack_require__.e(483)]).then(__webpack_require__.bind(__webpack_require__, 4483));
1978
+ const imported = await Promise.all(/* import() */[__webpack_require__.e(26), __webpack_require__.e(202), __webpack_require__.e(483)]).then(__webpack_require__.bind(__webpack_require__, 4483));
1979
1979
  return imported.default;
1980
1980
  }
1981
1981
  if (module === "@ohif/extension-test") {
@@ -3020,7 +3020,7 @@ function OpenIdConnectRoutes(_ref) {
3020
3020
  pathname,
3021
3021
  search
3022
3022
  } = location;
3023
- const redirect_uri = new URL(userManager.settings._redirect_uri).pathname; //.replace(routerBasename,'')
3023
+ const redirect_uri = new URL(userManager.settings._redirect_uri).pathname.replace(routerBasename !== '/' ? routerBasename : '', '');
3024
3024
  const silent_refresh_uri = new URL(userManager.settings._silent_redirect_uri).pathname; //.replace(routerBasename,'')
3025
3025
  const post_logout_redirect_uri = new URL(userManager.settings._post_logout_redirect_uri).pathname; //.replace(routerBasename,'');
3026
3026
 
@@ -3032,9 +3032,7 @@ function OpenIdConnectRoutes(_ref) {
3032
3032
  search
3033
3033
  }));
3034
3034
  }
3035
- return /*#__PURE__*/react.createElement(react_router_dist/* Routes */.Z5, {
3036
- basename: routerBasename
3037
- }, /*#__PURE__*/react.createElement(react_router_dist/* Route */.AW, {
3035
+ return /*#__PURE__*/react.createElement(react_router_dist/* Routes */.Z5, null, /*#__PURE__*/react.createElement(react_router_dist/* Route */.AW, {
3038
3036
  path: silent_refresh_uri,
3039
3037
  onEnter: window.location.reload
3040
3038
  }), /*#__PURE__*/react.createElement(react_router_dist/* Route */.AW, {
@@ -6476,7 +6474,7 @@ const detectionOptions = {
6476
6474
  }
6477
6475
  });
6478
6476
  ;// CONCATENATED MODULE: ../../i18n/package.json
6479
- const package_namespaceObject = JSON.parse('{"i8":"3.8.0-beta.24"}');
6477
+ const package_namespaceObject = JSON.parse('{"i8":"3.8.0-beta.26"}');
6480
6478
  ;// CONCATENATED MODULE: ../../i18n/src/utils.js
6481
6479
  const languagesMap = {
6482
6480
  ar: 'Arabic',
@@ -6665,7 +6663,7 @@ const en_US_DatePicker_namespaceObject = JSON.parse('{"Clear dates":"Clear dates
6665
6663
  ;// CONCATENATED MODULE: ../../i18n/src/locales/en-US/Header.json
6666
6664
  const en_US_Header_namespaceObject = JSON.parse('{"About":"About","Back to Viewer":"Back to Viewer","INVESTIGATIONAL USE ONLY":"INVESTIGATIONAL USE ONLY","Options":"Options","Preferences":"Preferences","Study list":"Study list","Logout":"Logout"}');
6667
6665
  ;// CONCATENATED MODULE: ../../i18n/src/locales/en-US/MeasurementTable.json
6668
- const en_US_MeasurementTable_namespaceObject = JSON.parse('{"Criteria nonconformities":"Criteria nonconformities","Delete":"Delete","Description":"Description","MAX":"MAX","NonTargets":"NonTargets","Relabel":"Relabel","Targets":"Targets"}');
6666
+ const en_US_MeasurementTable_namespaceObject = JSON.parse('{"Criteria nonconformities":"Criteria nonconformities","Delete":"Delete","Description":"Description","MAX":"MAX","NonTargets":"NonTargets","Relabel":"Relabel","Targets":"Targets","Measurements":"Measurements"}');
6669
6667
  ;// CONCATENATED MODULE: ../../i18n/src/locales/en-US/SidePanel.json
6670
6668
  const SidePanel_namespaceObject = JSON.parse('{"Measurements":"Measurements","Studies":"Studies"}');
6671
6669
  ;// CONCATENATED MODULE: ../../i18n/src/locales/en-US/StudyBrowser.json
@@ -58531,7 +58529,7 @@ webpackContext.id = 84179;
58531
58529
 
58532
58530
  /***/ }),
58533
58531
 
58534
- /***/ 63442:
58532
+ /***/ 56959:
58535
58533
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58536
58534
 
58537
58535
  "use strict";
@@ -58553,6 +58551,7 @@ __webpack_require__.d(__webpack_exports__, {
58553
58551
  Viewport: () => (/* reexport */ RenderingEngine_Viewport),
58554
58552
  VolumeViewport: () => (/* reexport */ RenderingEngine_VolumeViewport),
58555
58553
  VolumeViewport3D: () => (/* reexport */ RenderingEngine_VolumeViewport3D),
58554
+ addImageSlicesToViewports: () => (/* reexport */ helpers_addImageSlicesToViewports),
58556
58555
  addVolumesToViewports: () => (/* reexport */ helpers_addVolumesToViewports),
58557
58556
  cache: () => (/* reexport */ esm_cache),
58558
58557
  createVolumeActor: () => (/* reexport */ helpers_createVolumeActor),
@@ -58667,6 +58666,9 @@ __webpack_require__.d(imageLoader_namespaceObject, {
58667
58666
  cancelLoadAll: () => (cancelLoadAll),
58668
58667
  cancelLoadImage: () => (cancelLoadImage),
58669
58668
  cancelLoadImages: () => (cancelLoadImages),
58669
+ createAndCacheDerivedImage: () => (createAndCacheDerivedImage),
58670
+ createAndCacheDerivedImages: () => (createAndCacheDerivedImages),
58671
+ createAndCacheLocalImage: () => (createAndCacheLocalImage),
58670
58672
  loadAndCacheImage: () => (loadAndCacheImage),
58671
58673
  loadAndCacheImages: () => (loadAndCacheImages),
58672
58674
  loadImage: () => (loadImage),
@@ -58730,6 +58732,8 @@ __webpack_require__.d(utilities_namespaceObject, {
58730
58732
  decimate: () => (decimate),
58731
58733
  deepMerge: () => (utilities_deepMerge),
58732
58734
  eventListener: () => (eventListener_namespaceObject),
58735
+ genericMetadataProvider: () => (genericMetadataProvider),
58736
+ getBufferConfiguration: () => (getBufferConfiguration),
58733
58737
  getClosestImageId: () => (getClosestImageId),
58734
58738
  getClosestStackImageIndexForPoint: () => (getClosestStackImageIndexForPoint),
58735
58739
  getImageLegacy: () => (utilities_getImageLegacy),
@@ -58760,17 +58764,21 @@ __webpack_require__.d(utilities_namespaceObject, {
58760
58764
  isImageActor: () => (isImageActor),
58761
58765
  isOpposite: () => (isOpposite),
58762
58766
  isPTPrescaledWithSUV: () => (utilities_isPTPrescaledWithSUV),
58767
+ isValidVolume: () => (isValidVolume),
58763
58768
  isVideoTransferSyntax: () => (isVideoTransferSyntax),
58764
58769
  loadImageToCanvas: () => (loadImageToCanvas),
58770
+ makeVolumeMetadata: () => (makeVolumeMetadata),
58765
58771
  planar: () => (planar_namespaceObject),
58766
58772
  renderToCanvasCPU: () => (renderToCanvasCPU),
58767
58773
  renderToCanvasGPU: () => (renderToCanvasGPU),
58768
58774
  scaleRgbTransferFunction: () => (scaleRGBTransferFunction),
58769
58775
  snapFocalPointToSlice: () => (snapFocalPointToSlice),
58776
+ sortImageIdsAndGetSpacing: () => (sortImageIdsAndGetSpacing),
58770
58777
  spatialRegistrationMetadataProvider: () => (utilities_spatialRegistrationMetadataProvider),
58771
58778
  transferFunctionUtils: () => (transferFunctionUtils_namespaceObject),
58772
58779
  transformWorldToIndex: () => (transformWorldToIndex),
58773
58780
  triggerEvent: () => (triggerEvent),
58781
+ updateVTKImageDataWithCornerstoneImage: () => (updateVTKImageDataWithCornerstoneImage),
58774
58782
  uuidv4: () => (uuidv4),
58775
58783
  windowLevel: () => (windowLevel_namespaceObject),
58776
58784
  worldToImageCoords: () => (utilities_worldToImageCoords)
@@ -61823,7 +61831,7 @@ class RequestPoolManager {
61823
61831
  else if (requestDetails) {
61824
61832
  this.numRequests[type]++;
61825
61833
  this.awake = true;
61826
- requestDetails.requestFn().finally(() => {
61834
+ requestDetails.requestFn()?.finally(() => {
61827
61835
  this.numRequests[type]--;
61828
61836
  this.startAgain();
61829
61837
  });
@@ -62329,6 +62337,17 @@ class Cache {
62329
62337
  cachedGeometry.timeStamp = Date.now();
62330
62338
  return cachedGeometry.geometry;
62331
62339
  };
62340
+ this.getImage = (imageId) => {
62341
+ if (imageId === undefined) {
62342
+ throw new Error('getImage: imageId must not be undefined');
62343
+ }
62344
+ const cachedImage = this._imageCache.get(imageId);
62345
+ if (cachedImage === undefined) {
62346
+ return;
62347
+ }
62348
+ cachedImage.timeStamp = Date.now();
62349
+ return cachedImage.image;
62350
+ };
62332
62351
  this.getVolume = (volumeId) => {
62333
62352
  if (volumeId === undefined) {
62334
62353
  throw new Error('getVolume: volumeId must not be undefined');
@@ -84767,33 +84786,11 @@ async function createAndCacheDerivedVolume(referencedVolumeId, options) {
84767
84786
  const { metadata, dimensions, spacing, origin, direction } = referencedVolume;
84768
84787
  const scalarData = referencedVolume.getScalarData();
84769
84788
  const scalarLength = scalarData.length;
84770
- let numBytes, TypedArray;
84771
84789
  const { useNorm16Texture } = getConfiguration().rendering;
84772
- if (targetBuffer) {
84773
- if (targetBuffer.type === 'Float32Array') {
84774
- numBytes = scalarLength * 4;
84775
- TypedArray = Float32Array;
84776
- }
84777
- else if (targetBuffer.type === 'Uint8Array') {
84778
- numBytes = scalarLength;
84779
- TypedArray = Uint8Array;
84780
- }
84781
- else if (useNorm16Texture && targetBuffer.type === 'Uint16Array') {
84782
- numBytes = scalarLength * 2;
84783
- TypedArray = Uint16Array;
84784
- }
84785
- else if (useNorm16Texture && targetBuffer.type === 'Int16Array') {
84786
- numBytes = scalarLength * 2;
84787
- TypedArray = Uint16Array;
84788
- }
84789
- else {
84790
- throw new Error('TargetBuffer should be Float32Array or Uint8Array');
84791
- }
84792
- }
84793
- else {
84794
- numBytes = scalarLength * 4;
84795
- TypedArray = Float32Array;
84796
- }
84790
+ const { TypedArrayConstructor, numBytes } = getBufferConfiguration(targetBuffer?.type, scalarLength, {
84791
+ use16BitTexture: useNorm16Texture,
84792
+ isVolumeBuffer: true,
84793
+ });
84797
84794
  const isCacheable = esm_cache_cache.isCacheable(numBytes);
84798
84795
  if (!isCacheable) {
84799
84796
  throw new Error(enums_Events.CACHE_SIZE_EXCEEDED);
@@ -84801,10 +84798,10 @@ async function createAndCacheDerivedVolume(referencedVolumeId, options) {
84801
84798
  let volumeScalarData;
84802
84799
  if (targetBuffer?.sharedArrayBuffer) {
84803
84800
  const buffer = new SharedArrayBuffer(numBytes);
84804
- volumeScalarData = new TypedArray(buffer);
84801
+ volumeScalarData = new TypedArrayConstructor(buffer);
84805
84802
  }
84806
84803
  else {
84807
- volumeScalarData = new TypedArray(scalarLength);
84804
+ volumeScalarData = new TypedArrayConstructor(scalarLength);
84808
84805
  }
84809
84806
  const scalarArray = DataArray/* default.newInstance */.ZP.newInstance({
84810
84807
  name: 'Pixels',
@@ -84908,7 +84905,7 @@ function registerUnknownVolumeLoader(volumeLoader) {
84908
84905
  const EPSILON_PART = 1 + epsilon;
84909
84906
  const startsWith = (str, starts) => starts === str.substring(0, Math.min(str.length, starts.length));
84910
84907
  const isPrimaryVolume = (volume) => !!getVolumeLoaderSchemes().find((scheme) => startsWith(volume.volumeId, scheme));
84911
- function getTargetVolumeAndSpacingInNormalDir(viewport, camera, targetVolumeId) {
84908
+ function getTargetVolumeAndSpacingInNormalDir(viewport, camera, targetVolumeId, useSlabThickness = false) {
84912
84909
  const { viewPlaneNormal } = camera;
84913
84910
  const volumeActors = viewport.getActors();
84914
84911
  if (!volumeActors || !volumeActors.length) {
@@ -84928,7 +84925,7 @@ function getTargetVolumeAndSpacingInNormalDir(viewport, camera, targetVolumeId)
84928
84925
  const imageVolumeIndex = imageVolumes.findIndex((iv) => iv.volumeId === targetVolumeId);
84929
84926
  const imageVolume = imageVolumes[imageVolumeIndex];
84930
84927
  const { uid: actorUID } = volumeActors[imageVolumeIndex];
84931
- const spacingInNormalDirection = getSpacingInNormal(imageVolume, viewPlaneNormal, viewport);
84928
+ const spacingInNormalDirection = getSpacingInNormal(imageVolume, viewPlaneNormal, viewport, useSlabThickness);
84932
84929
  return { imageVolume, spacingInNormalDirection, actorUID };
84933
84930
  }
84934
84931
  if (!imageVolumes.length) {
@@ -84959,10 +84956,10 @@ function getTargetVolumeAndSpacingInNormalDir(viewport, camera, targetVolumeId)
84959
84956
  }
84960
84957
  return smallest;
84961
84958
  }
84962
- function getSpacingInNormal(imageVolume, viewPlaneNormal, viewport) {
84959
+ function getSpacingInNormal(imageVolume, viewPlaneNormal, viewport, useSlabThickness = false) {
84963
84960
  const { slabThickness } = viewport.getProperties();
84964
84961
  let spacingInNormalDirection = slabThickness;
84965
- if (!slabThickness) {
84962
+ if (!slabThickness || useSlabThickness === false) {
84966
84963
  spacingInNormalDirection = getSpacingInNormalDirection(imageVolume, viewPlaneNormal);
84967
84964
  }
84968
84965
  return spacingInNormalDirection;
@@ -85069,6 +85066,7 @@ imageLoadPoolManager.setMaxSimultaneousRequests(enums_RequestType.Prefetch, 1000
85069
85066
 
85070
85067
 
85071
85068
 
85069
+
85072
85070
  const imageLoaders = {};
85073
85071
  let unknownImageLoader;
85074
85072
  function loadImageFromImageLoader(imageId, options) {
@@ -85139,6 +85137,98 @@ function loadAndCacheImages(imageIds, options = { priority: 0, requestType: 'pre
85139
85137
  });
85140
85138
  return allPromises;
85141
85139
  }
85140
+ function createAndCacheDerivedImage(referencedImageId, options = {}, preventCache = false) {
85141
+ if (referencedImageId === undefined) {
85142
+ throw new Error('createAndCacheDerivedImage: parameter imageId must not be undefined');
85143
+ }
85144
+ if (options.imageId === undefined) {
85145
+ options.imageId = `derived:${uuidv4()}`;
85146
+ }
85147
+ const imagePlaneModule = getMetaData('imagePlaneModule', referencedImageId);
85148
+ const length = imagePlaneModule.rows * imagePlaneModule.columns;
85149
+ const { TypedArrayConstructor } = getBufferConfiguration(options.targetBufferType, length);
85150
+ const imageScalarData = new TypedArrayConstructor(length);
85151
+ const derivedImageId = options.imageId;
85152
+ ['imagePixelModule', 'imagePlaneModule', 'generalSeriesModule'].forEach((type) => {
85153
+ genericMetadataProvider.add(derivedImageId, {
85154
+ type,
85155
+ metadata: getMetaData(type, referencedImageId),
85156
+ });
85157
+ });
85158
+ const localImage = createAndCacheLocalImage({ scalarData: imageScalarData }, options.imageId, true);
85159
+ const imageLoadObject = {
85160
+ promise: Promise.resolve(localImage),
85161
+ };
85162
+ if (!preventCache) {
85163
+ esm_cache_cache.putImageLoadObject(derivedImageId, imageLoadObject);
85164
+ }
85165
+ return imageLoadObject.promise;
85166
+ }
85167
+ function createAndCacheDerivedImages(referencedImageIds, getDerivedImageId) {
85168
+ if (referencedImageIds?.length === 0) {
85169
+ throw new Error('createAndCacheDerivedImages: parameter imageIds must be list of image Ids');
85170
+ }
85171
+ const derivedImageIds = [];
85172
+ const allPromises = referencedImageIds.map((referencedImageId, index) => {
85173
+ const options = {
85174
+ imageId: getDerivedImageId
85175
+ ? getDerivedImageId(referencedImageId)
85176
+ : `derived:${uuidv4()}`,
85177
+ };
85178
+ derivedImageIds.push(options.imageId);
85179
+ return createAndCacheDerivedImage(referencedImageId, options);
85180
+ });
85181
+ return { imageIds: derivedImageIds, promises: allPromises };
85182
+ }
85183
+ function createAndCacheLocalImage(options, imageId, preventCache = false) {
85184
+ const imagePlaneModule = getMetaData('imagePlaneModule', imageId);
85185
+ const length = imagePlaneModule.rows * imagePlaneModule.columns;
85186
+ const image = {
85187
+ imageId: imageId,
85188
+ intercept: 0,
85189
+ windowCenter: 0,
85190
+ windowWidth: 0,
85191
+ color: false,
85192
+ numComps: 1,
85193
+ slope: 1,
85194
+ minPixelValue: 0,
85195
+ maxPixelValue: 255,
85196
+ voiLUTFunction: undefined,
85197
+ rows: imagePlaneModule.rows,
85198
+ columns: imagePlaneModule.columns,
85199
+ getCanvas: undefined,
85200
+ height: imagePlaneModule.rows,
85201
+ width: imagePlaneModule.columns,
85202
+ rgba: undefined,
85203
+ columnPixelSpacing: imagePlaneModule.columnPixelSpacing,
85204
+ rowPixelSpacing: imagePlaneModule.rowPixelSpacing,
85205
+ invert: false,
85206
+ };
85207
+ if (options.scalarData) {
85208
+ const imageScalarData = options.scalarData;
85209
+ if (!(imageScalarData instanceof Uint8Array ||
85210
+ imageScalarData instanceof Float32Array ||
85211
+ imageScalarData instanceof Uint16Array ||
85212
+ imageScalarData instanceof Int16Array)) {
85213
+ throw new Error('To use createLocalVolume you should pass scalarData of type Uint8Array, Uint16Array, Int16Array or Float32Array');
85214
+ }
85215
+ image.sizeInBytes = imageScalarData.byteLength;
85216
+ image.getPixelData = () => imageScalarData;
85217
+ }
85218
+ else {
85219
+ const { numBytes, TypedArrayConstructor } = getBufferConfiguration(options.targetBufferType, length);
85220
+ const imageScalarData = new TypedArrayConstructor(length);
85221
+ image.sizeInBytes = numBytes;
85222
+ image.getPixelData = () => imageScalarData;
85223
+ }
85224
+ const imageLoadObject = {
85225
+ promise: Promise.resolve(image),
85226
+ };
85227
+ if (!preventCache) {
85228
+ esm_cache_cache.putImageLoadObject(image.imageId, imageLoadObject);
85229
+ }
85230
+ return image;
85231
+ }
85142
85232
  function cancelLoadImage(imageId) {
85143
85233
  const filterFunction = ({ additionalDetails }) => {
85144
85234
  if (additionalDetails.imageId) {
@@ -87124,10 +87214,10 @@ function getSliceRange(volumeActor, viewPlaneNormal, focalPoint) {
87124
87214
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/getVolumeSliceRangeInfo.js
87125
87215
 
87126
87216
 
87127
- function getVolumeSliceRangeInfo(viewport, volumeId) {
87217
+ function getVolumeSliceRangeInfo(viewport, volumeId, useSlabThickness = false) {
87128
87218
  const camera = viewport.getCamera();
87129
87219
  const { focalPoint, viewPlaneNormal } = camera;
87130
- const { spacingInNormalDirection, actorUID } = getTargetVolumeAndSpacingInNormalDir(viewport, camera, volumeId);
87220
+ const { spacingInNormalDirection, actorUID } = getTargetVolumeAndSpacingInNormalDir(viewport, camera, volumeId, useSlabThickness);
87131
87221
  if (!actorUID) {
87132
87222
  throw new Error(`Could not find image volume with id ${volumeId} in the viewport`);
87133
87223
  }
@@ -87148,8 +87238,8 @@ function getVolumeSliceRangeInfo(viewport, volumeId) {
87148
87238
 
87149
87239
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/getVolumeViewportScrollInfo.js
87150
87240
 
87151
- function getVolumeViewportScrollInfo(viewport, volumeId) {
87152
- const { sliceRange, spacingInNormalDirection, camera } = utilities_getVolumeSliceRangeInfo(viewport, volumeId);
87241
+ function getVolumeViewportScrollInfo(viewport, volumeId, useSlabThickness = false) {
87242
+ const { sliceRange, spacingInNormalDirection, camera } = utilities_getVolumeSliceRangeInfo(viewport, volumeId, useSlabThickness);
87153
87243
  const { min, max, current } = sliceRange;
87154
87244
  const numScrollSteps = Math.round((max - min) / spacingInNormalDirection);
87155
87245
  const fraction = (current - min) / (max - min);
@@ -87594,7 +87684,7 @@ const defaultArrayMerge = (target, source, optionsArgument) => {
87594
87684
  destination[i] = deepMerge(target[i], e, optionsArgument);
87595
87685
  }
87596
87686
  else if (target.indexOf(e) === -1) {
87597
- destination.push(cloneIfNecessary(e, optionsArgument));
87687
+ destination[i] = cloneIfNecessary(e, optionsArgument);
87598
87688
  }
87599
87689
  });
87600
87690
  return destination;
@@ -87730,6 +87820,215 @@ function getImageLegacy(element) {
87730
87820
  }
87731
87821
  /* harmony default export */ const utilities_getImageLegacy = (getImageLegacy);
87732
87822
 
87823
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/sortImageIdsAndGetSpacing.js
87824
+
87825
+
87826
+ function sortImageIdsAndGetSpacing(imageIds, scanAxisNormal) {
87827
+ const { imagePositionPatient: referenceImagePositionPatient, imageOrientationPatient, } = getMetaData('imagePlaneModule', imageIds[0]);
87828
+ if (!scanAxisNormal) {
87829
+ const rowCosineVec = esm/* vec3.fromValues */.R3.fromValues(imageOrientationPatient[0], imageOrientationPatient[1], imageOrientationPatient[2]);
87830
+ const colCosineVec = esm/* vec3.fromValues */.R3.fromValues(imageOrientationPatient[3], imageOrientationPatient[4], imageOrientationPatient[5]);
87831
+ scanAxisNormal = esm/* vec3.create */.R3.create();
87832
+ esm/* vec3.cross */.R3.cross(scanAxisNormal, rowCosineVec, colCosineVec);
87833
+ }
87834
+ const refIppVec = esm/* vec3.create */.R3.create();
87835
+ const usingWadoUri = imageIds[0].split(':')[0] === 'wadouri';
87836
+ esm/* vec3.set */.R3.set(refIppVec, referenceImagePositionPatient[0], referenceImagePositionPatient[1], referenceImagePositionPatient[2]);
87837
+ let sortedImageIds;
87838
+ let zSpacing;
87839
+ function getDistance(imageId) {
87840
+ const { imagePositionPatient } = getMetaData('imagePlaneModule', imageId);
87841
+ const positionVector = esm/* vec3.create */.R3.create();
87842
+ esm/* vec3.sub */.R3.sub(positionVector, referenceImagePositionPatient, imagePositionPatient);
87843
+ return esm/* vec3.dot */.R3.dot(positionVector, scanAxisNormal);
87844
+ }
87845
+ if (!usingWadoUri) {
87846
+ const distanceImagePairs = imageIds.map((imageId) => {
87847
+ const distance = getDistance(imageId);
87848
+ return {
87849
+ distance,
87850
+ imageId,
87851
+ };
87852
+ });
87853
+ distanceImagePairs.sort((a, b) => b.distance - a.distance);
87854
+ sortedImageIds = distanceImagePairs.map((a) => a.imageId);
87855
+ const numImages = distanceImagePairs.length;
87856
+ zSpacing =
87857
+ Math.abs(distanceImagePairs[numImages - 1].distance -
87858
+ distanceImagePairs[0].distance) /
87859
+ (numImages - 1);
87860
+ }
87861
+ else {
87862
+ const prefetchedImageIds = [
87863
+ imageIds[0],
87864
+ imageIds[Math.floor(imageIds.length / 2)],
87865
+ ];
87866
+ sortedImageIds = imageIds;
87867
+ const firstImageDistance = getDistance(prefetchedImageIds[0]);
87868
+ const middleImageDistance = getDistance(prefetchedImageIds[1]);
87869
+ if (firstImageDistance - middleImageDistance < 0) {
87870
+ sortedImageIds.reverse();
87871
+ }
87872
+ const metadataForMiddleImage = getMetaData('imagePlaneModule', prefetchedImageIds[1]);
87873
+ if (!metadataForMiddleImage) {
87874
+ throw new Error('Incomplete metadata required for volume construction.');
87875
+ }
87876
+ const positionVector = esm/* vec3.create */.R3.create();
87877
+ esm/* vec3.sub */.R3.sub(positionVector, referenceImagePositionPatient, metadataForMiddleImage.imagePositionPatient);
87878
+ const distanceBetweenFirstAndMiddleImages = esm/* vec3.dot */.R3.dot(positionVector, scanAxisNormal);
87879
+ zSpacing =
87880
+ Math.abs(distanceBetweenFirstAndMiddleImages) /
87881
+ Math.floor(imageIds.length / 2);
87882
+ }
87883
+ const { imagePositionPatient: origin, sliceThickness } = getMetaData('imagePlaneModule', sortedImageIds[0]);
87884
+ const { strictZSpacingForVolumeViewport } = getConfiguration().rendering;
87885
+ if (zSpacing === 0 && !strictZSpacingForVolumeViewport) {
87886
+ if (sliceThickness) {
87887
+ console.log('Could not calculate zSpacing. Using sliceThickness');
87888
+ zSpacing = sliceThickness;
87889
+ }
87890
+ else {
87891
+ console.log('Could not calculate zSpacing. The VolumeViewport visualization is compromised. Setting zSpacing to 1 to render');
87892
+ zSpacing = 1;
87893
+ }
87894
+ }
87895
+ const result = {
87896
+ zSpacing,
87897
+ origin,
87898
+ sortedImageIds,
87899
+ };
87900
+ return result;
87901
+ }
87902
+
87903
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/makeVolumeMetadata.js
87904
+
87905
+ function makeVolumeMetadata(imageIds) {
87906
+ const imageId0 = imageIds[0];
87907
+ const { pixelRepresentation, bitsAllocated, bitsStored, highBit, photometricInterpretation, samplesPerPixel, } = getMetaData('imagePixelModule', imageId0);
87908
+ const voiLut = [];
87909
+ const voiLutModule = getMetaData('voiLutModule', imageId0);
87910
+ let voiLUTFunction;
87911
+ if (voiLutModule) {
87912
+ const { windowWidth, windowCenter } = voiLutModule;
87913
+ voiLUTFunction = voiLutModule?.voiLUTFunction;
87914
+ if (Array.isArray(windowWidth)) {
87915
+ for (let i = 0; i < windowWidth.length; i++) {
87916
+ voiLut.push({
87917
+ windowWidth: windowWidth[i],
87918
+ windowCenter: windowCenter[i],
87919
+ });
87920
+ }
87921
+ }
87922
+ else {
87923
+ voiLut.push({
87924
+ windowWidth: windowWidth,
87925
+ windowCenter: windowCenter,
87926
+ });
87927
+ }
87928
+ }
87929
+ else {
87930
+ voiLut.push({
87931
+ windowWidth: undefined,
87932
+ windowCenter: undefined,
87933
+ });
87934
+ }
87935
+ const { modality, seriesInstanceUID } = getMetaData('generalSeriesModule', imageId0);
87936
+ const { imageOrientationPatient, pixelSpacing, frameOfReferenceUID, columns, rows, } = getMetaData('imagePlaneModule', imageId0);
87937
+ return {
87938
+ BitsAllocated: bitsAllocated,
87939
+ BitsStored: bitsStored,
87940
+ SamplesPerPixel: samplesPerPixel,
87941
+ HighBit: highBit,
87942
+ PhotometricInterpretation: photometricInterpretation,
87943
+ PixelRepresentation: pixelRepresentation,
87944
+ Modality: modality,
87945
+ ImageOrientationPatient: imageOrientationPatient,
87946
+ PixelSpacing: pixelSpacing,
87947
+ FrameOfReferenceUID: frameOfReferenceUID,
87948
+ Columns: columns,
87949
+ Rows: rows,
87950
+ voiLut,
87951
+ VOILUTFunction: voiLUTFunction,
87952
+ SeriesInstanceUID: seriesInstanceUID,
87953
+ };
87954
+ }
87955
+
87956
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/genericMetadataProvider.js
87957
+
87958
+ let genericMetadataProvider_state = {};
87959
+ const genericMetadataProvider_metadataProvider = {
87960
+ add: (imageId, payload) => {
87961
+ const type = payload.type;
87962
+ if (!genericMetadataProvider_state[imageId]) {
87963
+ genericMetadataProvider_state[imageId] = {};
87964
+ }
87965
+ genericMetadataProvider_state[imageId][type] = JSON.parse(JSON.stringify(payload.metadata));
87966
+ },
87967
+ get: (type, imageId) => {
87968
+ return genericMetadataProvider_state[imageId]?.[type];
87969
+ },
87970
+ clear: () => {
87971
+ genericMetadataProvider_state = {};
87972
+ },
87973
+ };
87974
+ addProvider(genericMetadataProvider_metadataProvider.get);
87975
+ /* harmony default export */ const genericMetadataProvider = (genericMetadataProvider_metadataProvider);
87976
+
87977
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/isValidVolume.js
87978
+
87979
+
87980
+ function isValidVolume(imageIds) {
87981
+ const imageId0 = imageIds[0];
87982
+ const { modality, seriesInstanceUID } = getMetaData('generalSeriesModule', imageId0);
87983
+ const { imageOrientationPatient, pixelSpacing, frameOfReferenceUID, columns, rows, } = getMetaData('imagePlaneModule', imageId0);
87984
+ const baseMetadata = {
87985
+ modality,
87986
+ imageOrientationPatient,
87987
+ pixelSpacing,
87988
+ frameOfReferenceUID,
87989
+ columns,
87990
+ rows,
87991
+ seriesInstanceUID,
87992
+ };
87993
+ const validVolume = imageIds.every((imageId) => {
87994
+ const { modality, seriesInstanceUID } = getMetaData('generalSeriesModule', imageId);
87995
+ const { imageOrientationPatient, pixelSpacing, columns, rows } = getMetaData('imagePlaneModule', imageId);
87996
+ return (seriesInstanceUID === baseMetadata.seriesInstanceUID &&
87997
+ modality === baseMetadata.modality &&
87998
+ columns === baseMetadata.columns &&
87999
+ rows === baseMetadata.rows &&
88000
+ isEqual(imageOrientationPatient, baseMetadata.imageOrientationPatient) &&
88001
+ isEqual(pixelSpacing, baseMetadata.pixelSpacing));
88002
+ });
88003
+ return validVolume;
88004
+ }
88005
+
88006
+
88007
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/updateVTKImageDataWithCornerstoneImage.js
88008
+ function updateVTKImageDataWithCornerstoneImage(sourceImageData, image) {
88009
+ const pixelData = image.getPixelData();
88010
+ const scalarData = sourceImageData
88011
+ .getPointData()
88012
+ .getScalars()
88013
+ .getData();
88014
+ if (image.color && image.rgba) {
88015
+ const newPixelData = new Uint8Array(image.columns * image.rows * 3);
88016
+ for (let i = 0; i < image.columns * image.rows; i++) {
88017
+ newPixelData[i * 3] = pixelData[i * 4];
88018
+ newPixelData[i * 3 + 1] = pixelData[i * 4 + 1];
88019
+ newPixelData[i * 3 + 2] = pixelData[i * 4 + 2];
88020
+ }
88021
+ image.rgba = false;
88022
+ image.getPixelData = () => newPixelData;
88023
+ scalarData.set(newPixelData);
88024
+ }
88025
+ else {
88026
+ scalarData.set(pixelData);
88027
+ }
88028
+ sourceImageData.modified();
88029
+ }
88030
+
88031
+
87733
88032
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/ProgressiveIterator.js
87734
88033
  class PromiseIterator extends (/* unused pure expression or super */ null && (Promise)) {
87735
88034
  }
@@ -87930,6 +88229,51 @@ function isVideoTransferSyntax(uidOrUids) {
87930
88229
  return uids.find((uid) => videoUIDs.has(uid));
87931
88230
  }
87932
88231
 
88232
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/getBufferConfiguration.js
88233
+ function getBufferConfiguration(targetBufferType, length, options = {}) {
88234
+ const { use16BitTexture = false, isVolumeBuffer = false } = options;
88235
+ switch (targetBufferType) {
88236
+ case 'Float32Array':
88237
+ return { numBytes: length * 4, TypedArrayConstructor: Float32Array };
88238
+ case 'Uint8Array':
88239
+ return { numBytes: length, TypedArrayConstructor: Uint8Array };
88240
+ case 'Uint16Array':
88241
+ if (!isVolumeBuffer) {
88242
+ return { numBytes: length * 2, TypedArrayConstructor: Uint16Array };
88243
+ }
88244
+ else {
88245
+ if (use16BitTexture) {
88246
+ return { numBytes: length * 2, TypedArrayConstructor: Uint16Array };
88247
+ }
88248
+ else {
88249
+ console.warn('Uint16Array is not supported for volume rendering, switching back to Float32Array');
88250
+ return { numBytes: length * 4, TypedArrayConstructor: Float32Array };
88251
+ }
88252
+ }
88253
+ case 'Int16Array':
88254
+ if (!isVolumeBuffer) {
88255
+ return { numBytes: length * 2, TypedArrayConstructor: Int16Array };
88256
+ }
88257
+ else {
88258
+ if (use16BitTexture) {
88259
+ return { numBytes: length * 2, TypedArrayConstructor: Int16Array };
88260
+ }
88261
+ else {
88262
+ console.warn('Int16Array is not supported for volume rendering, switching back to Float32Array');
88263
+ return { numBytes: length * 4, TypedArrayConstructor: Float32Array };
88264
+ }
88265
+ }
88266
+ default:
88267
+ if (targetBufferType) {
88268
+ throw new Error('TargetBuffer should be Float32Array, Uint8Array, Uint16Array, or Int16Array');
88269
+ }
88270
+ else {
88271
+ return { numBytes: length * 4, TypedArrayConstructor: Float32Array };
88272
+ }
88273
+ }
88274
+ }
88275
+
88276
+
87933
88277
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/utilities/planar.js
87934
88278
 
87935
88279
  function linePlaneIntersection(p0, p1, plane) {
@@ -88076,6 +88420,12 @@ function setTransferFunctionNodes(transferFunction, nodes) {
88076
88420
 
88077
88421
 
88078
88422
 
88423
+
88424
+
88425
+
88426
+
88427
+
88428
+
88079
88429
 
88080
88430
 
88081
88431
 
@@ -103354,6 +103704,27 @@ function volumeNewImageEventDispatcher(cameraEvent) {
103354
103704
  }
103355
103705
  /* harmony default export */ const helpers_volumeNewImageEventDispatcher = (volumeNewImageEventDispatcher);
103356
103706
 
103707
+ ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/addImageSlicesToViewports.js
103708
+
103709
+ async function addImageSlicesToViewports(renderingEngine, stackInputs, viewportIds, immediateRender = false, suppressEvents = false) {
103710
+ for (const viewportId of viewportIds) {
103711
+ const viewport = renderingEngine.getViewport(viewportId);
103712
+ if (!viewport) {
103713
+ throw new Error(`Viewport with Id ${viewportId} does not exist`);
103714
+ }
103715
+ if (!(viewport instanceof RenderingEngine_StackViewport)) {
103716
+ console.warn(`Viewport with Id ${viewportId} is not a StackViewport. Cannot add image segmentation to this viewport.`);
103717
+ return;
103718
+ }
103719
+ }
103720
+ const addStackPromises = viewportIds.map(async (viewportId) => {
103721
+ const viewport = renderingEngine.getViewport(viewportId);
103722
+ return viewport.addImages(stackInputs, immediateRender, suppressEvents);
103723
+ });
103724
+ await Promise.all(addStackPromises);
103725
+ }
103726
+ /* harmony default export */ const helpers_addImageSlicesToViewports = (addImageSlicesToViewports);
103727
+
103357
103728
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/helpers/index.js
103358
103729
 
103359
103730
 
@@ -103363,6 +103734,7 @@ function volumeNewImageEventDispatcher(cameraEvent) {
103363
103734
 
103364
103735
 
103365
103736
 
103737
+
103366
103738
  ;// CONCATENATED MODULE: ../../../node_modules/@cornerstonejs/core/dist/esm/RenderingEngine/Viewport.js
103367
103739
 
103368
103740
 
@@ -107466,7 +107838,7 @@ class StackViewport extends RenderingEngine_Viewport {
107466
107838
  }
107467
107839
  return numberOfComponents;
107468
107840
  }
107469
- _getImageDataMetadata(image) {
107841
+ getImageDataMetadata(image) {
107470
107842
  const { imagePlaneModule, imagePixelModule } = this.buildMetadata(image);
107471
107843
  let rowCosines, columnCosines;
107472
107844
  rowCosines = imagePlaneModule.rowCosines;
@@ -107515,19 +107887,30 @@ class StackViewport extends RenderingEngine_Viewport {
107515
107887
  viewUp: [viewUp[0], viewUp[1], viewUp[2]],
107516
107888
  };
107517
107889
  }
107518
- _createVTKImageData({ origin, direction, dimensions, spacing, numComps, pixelArray, }) {
107890
+ createVTKImageData({ origin, direction, dimensions, spacing, numComps, pixelArray, }) {
107519
107891
  const values = new pixelArray.constructor(pixelArray.length);
107520
107892
  const scalarArray = DataArray/* default.newInstance */.ZP.newInstance({
107521
107893
  name: 'Pixels',
107522
107894
  numberOfComponents: numComps,
107523
107895
  values: values,
107524
107896
  });
107525
- this._imageData = ImageData/* default.newInstance */.ZP.newInstance();
107526
- this._imageData.setDimensions(dimensions);
107527
- this._imageData.setSpacing(spacing);
107528
- this._imageData.setDirection(direction);
107529
- this._imageData.setOrigin(origin);
107530
- this._imageData.getPointData().setScalars(scalarArray);
107897
+ const imageData = ImageData/* default.newInstance */.ZP.newInstance();
107898
+ imageData.setDimensions(dimensions);
107899
+ imageData.setSpacing(spacing);
107900
+ imageData.setDirection(direction);
107901
+ imageData.setOrigin(origin);
107902
+ imageData.getPointData().setScalars(scalarArray);
107903
+ return imageData;
107904
+ }
107905
+ _createVTKImageData({ origin, direction, dimensions, spacing, numComps, pixelArray, }) {
107906
+ this._imageData = this.createVTKImageData({
107907
+ origin,
107908
+ direction,
107909
+ dimensions,
107910
+ spacing,
107911
+ numComps,
107912
+ pixelArray,
107913
+ });
107531
107914
  }
107532
107915
  async setStack(imageIds, currentImageIdIndex = 0) {
107533
107916
  this._throwIfDestroyed();
@@ -107598,27 +107981,7 @@ class StackViewport extends RenderingEngine_Viewport {
107598
107981
  origin = [0, 0, 0];
107599
107982
  }
107600
107983
  this._imageData.setOrigin(origin);
107601
- this._updatePixelData(image);
107602
- }
107603
- _updatePixelData(image) {
107604
- const pixelData = image.getPixelData();
107605
- const scalars = this._imageData.getPointData().getScalars();
107606
- const scalarData = scalars.getData();
107607
- if (image.color && image.rgba) {
107608
- const newPixelData = new Uint8Array(image.columns * image.rows * 3);
107609
- for (let i = 0; i < image.columns * image.rows; i++) {
107610
- newPixelData[i * 3] = pixelData[i * 4];
107611
- newPixelData[i * 3 + 1] = pixelData[i * 4 + 1];
107612
- newPixelData[i * 3 + 2] = pixelData[i * 4 + 2];
107613
- }
107614
- image.rgba = false;
107615
- image.getPixelData = () => newPixelData;
107616
- scalarData.set(newPixelData);
107617
- }
107618
- else {
107619
- scalarData.set(pixelData);
107620
- }
107621
- this._imageData.modified();
107984
+ updateVTKImageDataWithCornerstoneImage(this._imageData, image);
107622
107985
  }
107623
107986
  _loadAndDisplayImage(imageId, imageIdIndex) {
107624
107987
  return this.useCPURendering
@@ -107800,7 +108163,7 @@ class StackViewport extends RenderingEngine_Viewport {
107800
108163
  });
107801
108164
  }
107802
108165
  _updateToDisplayImageCPU(image) {
107803
- const metadata = this._getImageDataMetadata(image);
108166
+ const metadata = this.getImageDataMetadata(image);
107804
108167
  const viewport = getDefaultViewport(this.canvas, image, this.modality, this._cpuFallbackEnabledElement.viewport.colormap);
107805
108168
  const { windowCenter, windowWidth } = viewport.voi;
107806
108169
  this.voiRange = toLowHighRange(windowWidth, windowCenter);
@@ -107817,6 +108180,29 @@ class StackViewport extends RenderingEngine_Viewport {
107817
108180
  this.cpuRenderingInvalidated = true;
107818
108181
  this._cpuFallbackEnabledElement.transform = calculateTransform(this._cpuFallbackEnabledElement);
107819
108182
  }
108183
+ async addImages(stackInputs) {
108184
+ const actors = this.getActors();
108185
+ stackInputs.forEach((stackInput) => {
108186
+ const image = esm_cache.getImage(stackInput.imageId);
108187
+ const { origin, dimensions, direction, spacing, numComps } = this.getImageDataMetadata(image);
108188
+ const imagedata = this.createVTKImageData({
108189
+ origin,
108190
+ dimensions,
108191
+ direction,
108192
+ spacing,
108193
+ numComps,
108194
+ pixelArray: image.getPixelData(),
108195
+ });
108196
+ const imageActor = this.createActorMapper(imagedata);
108197
+ if (imageActor) {
108198
+ actors.push({ uid: stackInput.actorUID, actor: imageActor });
108199
+ if (stackInput.callback) {
108200
+ stackInput.callback({ imageActor, imageId: stackInput.imageId });
108201
+ }
108202
+ }
108203
+ });
108204
+ this.setActors(actors);
108205
+ }
107820
108206
  _updateActorToDisplayImageId(image) {
107821
108207
  const sameImageData = this._checkVTKImageDataMatchesCornerstoneImage(image, this._imageData);
107822
108208
  const activeCamera = this.getRenderer().getActiveCamera();
@@ -107838,7 +108224,7 @@ class StackViewport extends RenderingEngine_Viewport {
107838
108224
  this._setPropertiesFromCache();
107839
108225
  return;
107840
108226
  }
107841
- const { origin, direction, dimensions, spacing, numComps, imagePixelModule, } = this._getImageDataMetadata(image);
108227
+ const { origin, direction, dimensions, spacing, numComps, imagePixelModule, } = this.getImageDataMetadata(image);
107842
108228
  this._createVTKImageData({
107843
108229
  origin,
107844
108230
  direction,
@@ -117345,7 +117731,7 @@ async function createAndCacheGeometry(geometryId, options) {
117345
117731
  /***/ 61539:
117346
117732
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
117347
117733
 
117348
- !function(e,t){ true?module.exports=t(__webpack_require__(63442),__webpack_require__(56660)):0}(this,((e,t)=>(()=>{"use strict";var r={578:(e,t,r)=>{const n=r(823),a=r(187),o=r(592),i=r(604),s=r(249),l=r(968),c=Object.prototype.toString,{Z_NO_FLUSH:u,Z_FINISH:d,Z_OK:f,Z_STREAM_END:m,Z_NEED_DICT:g,Z_STREAM_ERROR:h,Z_DATA_ERROR:p,Z_MEM_ERROR:b}=r(684);function x(e){this.options=a.assign({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;let r=n.inflateInit2(this.strm,t.windowBits);if(r!==f)throw new Error(i[r]);if(this.header=new l,n.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=o.string2buf(t.dictionary):"[object ArrayBuffer]"===c.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(r=n.inflateSetDictionary(this.strm,t.dictionary),r!==f)))throw new Error(i[r])}function w(e,t){const r=new x(t);if(r.push(e),r.err)throw r.msg||i[r.err];return r.result}x.prototype.push=function(e,t){const r=this.strm,a=this.options.chunkSize,i=this.options.dictionary;let s,l,x;if(this.ended)return!1;for(l=t===~~t?t:!0===t?d:u,"[object ArrayBuffer]"===c.call(e)?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;;){for(0===r.avail_out&&(r.output=new Uint8Array(a),r.next_out=0,r.avail_out=a),s=n.inflate(r,l),s===g&&i&&(s=n.inflateSetDictionary(r,i),s===f?s=n.inflate(r,l):s===p&&(s=g));r.avail_in>0&&s===m&&r.state.wrap>0&&0!==e[r.next_in];)n.inflateReset(r),s=n.inflate(r,l);switch(s){case h:case p:case g:case b:return this.onEnd(s),this.ended=!0,!1}if(x=r.avail_out,r.next_out&&(0===r.avail_out||s===m))if("string"===this.options.to){let e=o.utf8border(r.output,r.next_out),t=r.next_out-e,n=o.buf2string(r.output,e);r.next_out=t,r.avail_out=a-t,t&&r.output.set(r.output.subarray(e,e+t),0),this.onData(n)}else this.onData(r.output.length===r.next_out?r.output:r.output.subarray(0,r.next_out));if(s!==f||0!==x){if(s===m)return s=n.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===r.avail_in)break}}return!0},x.prototype.onData=function(e){this.chunks.push(e)},x.prototype.onEnd=function(e){e===f&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=a.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},e.exports.Hq=function(e,t){return(t=t||{}).raw=!0,w(e,t)},r(684)},187:e=>{const t=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);e.exports.assign=function(e){const r=Array.prototype.slice.call(arguments,1);for(;r.length;){const n=r.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(const r in n)t(n,r)&&(e[r]=n[r])}}return e},e.exports.flattenChunks=e=>{let t=0;for(let r=0,n=e.length;r<n;r++)t+=e[r].length;const r=new Uint8Array(t);for(let t=0,n=0,a=e.length;t<a;t++){let a=e[t];r.set(a,n),n+=a.length}return r}},592:e=>{let t=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){t=!1}const r=new Uint8Array(256);for(let e=0;e<256;e++)r[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;r[254]=r[254]=1,e.exports.string2buf=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,r,n,a,o,i=e.length,s=0;for(a=0;a<i;a++)r=e.charCodeAt(a),55296==(64512&r)&&a+1<i&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),a++)),s+=r<128?1:r<2048?2:r<65536?3:4;for(t=new Uint8Array(s),o=0,a=0;o<s;a++)r=e.charCodeAt(a),55296==(64512&r)&&a+1<i&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),a++)),r<128?t[o++]=r:r<2048?(t[o++]=192|r>>>6,t[o++]=128|63&r):r<65536?(t[o++]=224|r>>>12,t[o++]=128|r>>>6&63,t[o++]=128|63&r):(t[o++]=240|r>>>18,t[o++]=128|r>>>12&63,t[o++]=128|r>>>6&63,t[o++]=128|63&r);return t};e.exports.buf2string=(e,n)=>{const a=n||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,n));let o,i;const s=new Array(2*a);for(i=0,o=0;o<a;){let t=e[o++];if(t<128){s[i++]=t;continue}let n=r[t];if(n>4)s[i++]=65533,o+=n-1;else{for(t&=2===n?31:3===n?15:7;n>1&&o<a;)t=t<<6|63&e[o++],n--;n>1?s[i++]=65533:t<65536?s[i++]=t:(t-=65536,s[i++]=55296|t>>10&1023,s[i++]=56320|1023&t)}}return((e,r)=>{if(r<65534&&e.subarray&&t)return String.fromCharCode.apply(null,e.length===r?e:e.subarray(0,r));let n="";for(let t=0;t<r;t++)n+=String.fromCharCode(e[t]);return n})(s,i)},e.exports.utf8border=(e,t)=>{(t=t||e.length)>e.length&&(t=e.length);let n=t-1;for(;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+r[e[n]]>t?n:t}},693:e=>{e.exports=(e,t,r,n)=>{let a=65535&e|0,o=e>>>16&65535|0,i=0;for(;0!==r;){i=r>2e3?2e3:r,r-=i;do{a=a+t[n++]|0,o=o+a|0}while(--i);a%=65521,o%=65521}return a|o<<16|0}},684:e=>{e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},863:e=>{const t=new Uint32Array((()=>{let e,t=[];for(var r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t})());e.exports=(e,r,n,a)=>{const o=t,i=a+n;e^=-1;for(let t=a;t<i;t++)e=e>>>8^o[255&(e^r[t])];return-1^e}},968:e=>{e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},365:e=>{const t=16209;e.exports=function(e,r){let n,a,o,i,s,l,c,u,d,f,m,g,h,p,b,x,w,y,k,v,S,D,T,P;const I=e.state;n=e.next_in,T=e.input,a=n+(e.avail_in-5),o=e.next_out,P=e.output,i=o-(r-e.avail_out),s=o+(e.avail_out-257),l=I.dmax,c=I.wsize,u=I.whave,d=I.wnext,f=I.window,m=I.hold,g=I.bits,h=I.lencode,p=I.distcode,b=(1<<I.lenbits)-1,x=(1<<I.distbits)-1;e:do{g<15&&(m+=T[n++]<<g,g+=8,m+=T[n++]<<g,g+=8),w=h[m&b];t:for(;;){if(y=w>>>24,m>>>=y,g-=y,y=w>>>16&255,0===y)P[o++]=65535&w;else{if(!(16&y)){if(0==(64&y)){w=h[(65535&w)+(m&(1<<y)-1)];continue t}if(32&y){I.mode=16191;break e}e.msg="invalid literal/length code",I.mode=t;break e}k=65535&w,y&=15,y&&(g<y&&(m+=T[n++]<<g,g+=8),k+=m&(1<<y)-1,m>>>=y,g-=y),g<15&&(m+=T[n++]<<g,g+=8,m+=T[n++]<<g,g+=8),w=p[m&x];r:for(;;){if(y=w>>>24,m>>>=y,g-=y,y=w>>>16&255,!(16&y)){if(0==(64&y)){w=p[(65535&w)+(m&(1<<y)-1)];continue r}e.msg="invalid distance code",I.mode=t;break e}if(v=65535&w,y&=15,g<y&&(m+=T[n++]<<g,g+=8,g<y&&(m+=T[n++]<<g,g+=8)),v+=m&(1<<y)-1,v>l){e.msg="invalid distance too far back",I.mode=t;break e}if(m>>>=y,g-=y,y=o-i,v>y){if(y=v-y,y>u&&I.sane){e.msg="invalid distance too far back",I.mode=t;break e}if(S=0,D=f,0===d){if(S+=c-y,y<k){k-=y;do{P[o++]=f[S++]}while(--y);S=o-v,D=P}}else if(d<y){if(S+=c+d-y,y-=d,y<k){k-=y;do{P[o++]=f[S++]}while(--y);if(S=0,d<k){y=d,k-=y;do{P[o++]=f[S++]}while(--y);S=o-v,D=P}}}else if(S+=d-y,y<k){k-=y;do{P[o++]=f[S++]}while(--y);S=o-v,D=P}for(;k>2;)P[o++]=D[S++],P[o++]=D[S++],P[o++]=D[S++],k-=3;k&&(P[o++]=D[S++],k>1&&(P[o++]=D[S++]))}else{S=o-v;do{P[o++]=P[S++],P[o++]=P[S++],P[o++]=P[S++],k-=3}while(k>2);k&&(P[o++]=P[S++],k>1&&(P[o++]=P[S++]))}break}}break}}while(n<a&&o<s);k=g>>3,n-=k,g-=k<<3,m&=(1<<g)-1,e.next_in=n,e.next_out=o,e.avail_in=n<a?a-n+5:5-(n-a),e.avail_out=o<s?s-o+257:257-(o-s),I.hold=m,I.bits=g}},823:(e,t,r)=>{const n=r(693),a=r(863),o=r(365),i=r(446),{Z_FINISH:s,Z_BLOCK:l,Z_TREES:c,Z_OK:u,Z_STREAM_END:d,Z_NEED_DICT:f,Z_STREAM_ERROR:m,Z_DATA_ERROR:g,Z_MEM_ERROR:h,Z_BUF_ERROR:p,Z_DEFLATED:b}=r(684),x=16180,w=16190,y=16191,k=16192,v=16194,S=16199,D=16200,T=16206,P=16209,I=16210,C=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function L(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const _=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode<x||t.mode>16211?1:0},A=e=>{if(_(e))return m;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=x,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,u},E=e=>{if(_(e))return m;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,A(e)},M=(e,t)=>{let r;if(_(e))return m;const n=e.state;return t<0?(r=0,t=-t):(r=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?m:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,E(e))},O=(e,t)=>{if(!e)return m;const r=new L;e.state=r,r.strm=e,r.window=null,r.mode=x;const n=M(e,t);return n!==u&&(e.state=null),n};let R,F,B=!0;const U=e=>{if(B){R=new Int32Array(512),F=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(i(1,e.lens,0,288,R,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;i(2,e.lens,0,32,F,0,e.work,{bits:5}),B=!1}e.lencode=R,e.lenbits=9,e.distcode=F,e.distbits=5},N=(e,t,r,n)=>{let a;const o=e.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new Uint8Array(o.wsize)),n>=o.wsize?(o.window.set(t.subarray(r-o.wsize,r),0),o.wnext=0,o.whave=o.wsize):(a=o.wsize-o.wnext,a>n&&(a=n),o.window.set(t.subarray(r-n,r-n+a),o.wnext),(n-=a)?(o.window.set(t.subarray(r-n,r),0),o.wnext=n,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=a))),0};e.exports.inflateReset=E,e.exports.inflateReset2=M,e.exports.inflateResetKeep=A,e.exports.inflateInit=e=>O(e,15),e.exports.inflateInit2=O,e.exports.inflate=(e,t)=>{let r,L,A,E,M,O,R,F,B,j,$,W,Z,q,G,V,z,H,Y,Q,K,J,X=0;const ee=new Uint8Array(4);let te,re;const ne=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(_(e)||!e.output||!e.input&&0!==e.avail_in)return m;r=e.state,r.mode===y&&(r.mode=k),M=e.next_out,A=e.output,R=e.avail_out,E=e.next_in,L=e.input,O=e.avail_in,F=r.hold,B=r.bits,j=O,$=R,J=u;e:for(;;)switch(r.mode){case x:if(0===r.wrap){r.mode=k;break}for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(2&r.wrap&&35615===F){0===r.wbits&&(r.wbits=15),r.check=0,ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0),F=0,B=0,r.mode=16181;break}if(r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&F)<<8)+(F>>8))%31){e.msg="incorrect header check",r.mode=P;break}if((15&F)!==b){e.msg="unknown compression method",r.mode=P;break}if(F>>>=4,B-=4,K=8+(15&F),0===r.wbits&&(r.wbits=K),K>15||K>r.wbits){e.msg="invalid window size",r.mode=P;break}r.dmax=1<<r.wbits,r.flags=0,e.adler=r.check=1,r.mode=512&F?16189:y,F=0,B=0;break;case 16181:for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(r.flags=F,(255&r.flags)!==b){e.msg="unknown compression method",r.mode=P;break}if(57344&r.flags){e.msg="unknown header flags set",r.mode=P;break}r.head&&(r.head.text=F>>8&1),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0,r.mode=16182;case 16182:for(;B<32;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.head&&(r.head.time=F),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,ee[2]=F>>>16&255,ee[3]=F>>>24&255,r.check=a(r.check,ee,4,0)),F=0,B=0,r.mode=16183;case 16183:for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.head&&(r.head.xflags=255&F,r.head.os=F>>8),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0,r.mode=16184;case 16184:if(1024&r.flags){for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.length=F,r.head&&(r.head.extra_len=F),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0}else r.head&&(r.head.extra=null);r.mode=16185;case 16185:if(1024&r.flags&&(W=r.length,W>O&&(W=O),W&&(r.head&&(K=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(L.subarray(E,E+W),K)),512&r.flags&&4&r.wrap&&(r.check=a(r.check,L,W,E)),O-=W,E+=W,r.length-=W),r.length))break e;r.length=0,r.mode=16186;case 16186:if(2048&r.flags){if(0===O)break e;W=0;do{K=L[E+W++],r.head&&K&&r.length<65536&&(r.head.name+=String.fromCharCode(K))}while(K&&W<O);if(512&r.flags&&4&r.wrap&&(r.check=a(r.check,L,W,E)),O-=W,E+=W,K)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=16187;case 16187:if(4096&r.flags){if(0===O)break e;W=0;do{K=L[E+W++],r.head&&K&&r.length<65536&&(r.head.comment+=String.fromCharCode(K))}while(K&&W<O);if(512&r.flags&&4&r.wrap&&(r.check=a(r.check,L,W,E)),O-=W,E+=W,K)break e}else r.head&&(r.head.comment=null);r.mode=16188;case 16188:if(512&r.flags){for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(4&r.wrap&&F!==(65535&r.check)){e.msg="header crc mismatch",r.mode=P;break}F=0,B=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=y;break;case 16189:for(;B<32;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}e.adler=r.check=C(F),F=0,B=0,r.mode=w;case w:if(0===r.havedict)return e.next_out=M,e.avail_out=R,e.next_in=E,e.avail_in=O,r.hold=F,r.bits=B,f;e.adler=r.check=1,r.mode=y;case y:if(t===l||t===c)break e;case k:if(r.last){F>>>=7&B,B-=7&B,r.mode=T;break}for(;B<3;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}switch(r.last=1&F,F>>>=1,B-=1,3&F){case 0:r.mode=16193;break;case 1:if(U(r),r.mode=S,t===c){F>>>=2,B-=2;break e}break;case 2:r.mode=16196;break;case 3:e.msg="invalid block type",r.mode=P}F>>>=2,B-=2;break;case 16193:for(F>>>=7&B,B-=7&B;B<32;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if((65535&F)!=(F>>>16^65535)){e.msg="invalid stored block lengths",r.mode=P;break}if(r.length=65535&F,F=0,B=0,r.mode=v,t===c)break e;case v:r.mode=16195;case 16195:if(W=r.length,W){if(W>O&&(W=O),W>R&&(W=R),0===W)break e;A.set(L.subarray(E,E+W),M),O-=W,E+=W,R-=W,M+=W,r.length-=W;break}r.mode=y;break;case 16196:for(;B<14;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(r.nlen=257+(31&F),F>>>=5,B-=5,r.ndist=1+(31&F),F>>>=5,B-=5,r.ncode=4+(15&F),F>>>=4,B-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=P;break}r.have=0,r.mode=16197;case 16197:for(;r.have<r.ncode;){for(;B<3;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.lens[ne[r.have++]]=7&F,F>>>=3,B-=3}for(;r.have<19;)r.lens[ne[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,te={bits:r.lenbits},J=i(0,r.lens,0,19,r.lencode,0,r.work,te),r.lenbits=te.bits,J){e.msg="invalid code lengths set",r.mode=P;break}r.have=0,r.mode=16198;case 16198:for(;r.have<r.nlen+r.ndist;){for(;X=r.lencode[F&(1<<r.lenbits)-1],G=X>>>24,V=X>>>16&255,z=65535&X,!(G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(z<16)F>>>=G,B-=G,r.lens[r.have++]=z;else{if(16===z){for(re=G+2;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(F>>>=G,B-=G,0===r.have){e.msg="invalid bit length repeat",r.mode=P;break}K=r.lens[r.have-1],W=3+(3&F),F>>>=2,B-=2}else if(17===z){for(re=G+3;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}F>>>=G,B-=G,K=0,W=3+(7&F),F>>>=3,B-=3}else{for(re=G+7;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}F>>>=G,B-=G,K=0,W=11+(127&F),F>>>=7,B-=7}if(r.have+W>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=P;break}for(;W--;)r.lens[r.have++]=K}}if(r.mode===P)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=P;break}if(r.lenbits=9,te={bits:r.lenbits},J=i(1,r.lens,0,r.nlen,r.lencode,0,r.work,te),r.lenbits=te.bits,J){e.msg="invalid literal/lengths set",r.mode=P;break}if(r.distbits=6,r.distcode=r.distdyn,te={bits:r.distbits},J=i(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,te),r.distbits=te.bits,J){e.msg="invalid distances set",r.mode=P;break}if(r.mode=S,t===c)break e;case S:r.mode=D;case D:if(O>=6&&R>=258){e.next_out=M,e.avail_out=R,e.next_in=E,e.avail_in=O,r.hold=F,r.bits=B,o(e,$),M=e.next_out,A=e.output,R=e.avail_out,E=e.next_in,L=e.input,O=e.avail_in,F=r.hold,B=r.bits,r.mode===y&&(r.back=-1);break}for(r.back=0;X=r.lencode[F&(1<<r.lenbits)-1],G=X>>>24,V=X>>>16&255,z=65535&X,!(G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(V&&0==(240&V)){for(H=G,Y=V,Q=z;X=r.lencode[Q+((F&(1<<H+Y)-1)>>H)],G=X>>>24,V=X>>>16&255,z=65535&X,!(H+G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}F>>>=H,B-=H,r.back+=H}if(F>>>=G,B-=G,r.back+=G,r.length=z,0===V){r.mode=16205;break}if(32&V){r.back=-1,r.mode=y;break}if(64&V){e.msg="invalid literal/length code",r.mode=P;break}r.extra=15&V,r.mode=16201;case 16201:if(r.extra){for(re=r.extra;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.length+=F&(1<<r.extra)-1,F>>>=r.extra,B-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=16202;case 16202:for(;X=r.distcode[F&(1<<r.distbits)-1],G=X>>>24,V=X>>>16&255,z=65535&X,!(G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(0==(240&V)){for(H=G,Y=V,Q=z;X=r.distcode[Q+((F&(1<<H+Y)-1)>>H)],G=X>>>24,V=X>>>16&255,z=65535&X,!(H+G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}F>>>=H,B-=H,r.back+=H}if(F>>>=G,B-=G,r.back+=G,64&V){e.msg="invalid distance code",r.mode=P;break}r.offset=z,r.extra=15&V,r.mode=16203;case 16203:if(r.extra){for(re=r.extra;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.offset+=F&(1<<r.extra)-1,F>>>=r.extra,B-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=P;break}r.mode=16204;case 16204:if(0===R)break e;if(W=$-R,r.offset>W){if(W=r.offset-W,W>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=P;break}W>r.wnext?(W-=r.wnext,Z=r.wsize-W):Z=r.wnext-W,W>r.length&&(W=r.length),q=r.window}else q=A,Z=M-r.offset,W=r.length;W>R&&(W=R),R-=W,r.length-=W;do{A[M++]=q[Z++]}while(--W);0===r.length&&(r.mode=D);break;case 16205:if(0===R)break e;A[M++]=r.length,R--,r.mode=D;break;case T:if(r.wrap){for(;B<32;){if(0===O)break e;O--,F|=L[E++]<<B,B+=8}if($-=R,e.total_out+=$,r.total+=$,4&r.wrap&&$&&(e.adler=r.check=r.flags?a(r.check,A,$,M-$):n(r.check,A,$,M-$)),$=R,4&r.wrap&&(r.flags?F:C(F))!==r.check){e.msg="incorrect data check",r.mode=P;break}F=0,B=0}r.mode=16207;case 16207:if(r.wrap&&r.flags){for(;B<32;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(4&r.wrap&&F!==(4294967295&r.total)){e.msg="incorrect length check",r.mode=P;break}F=0,B=0}r.mode=16208;case 16208:J=d;break e;case P:J=g;break e;case I:return h;default:return m}return e.next_out=M,e.avail_out=R,e.next_in=E,e.avail_in=O,r.hold=F,r.bits=B,(r.wsize||$!==e.avail_out&&r.mode<P&&(r.mode<T||t!==s))&&N(e,e.output,e.next_out,$-e.avail_out)?(r.mode=I,h):(j-=e.avail_in,$-=e.avail_out,e.total_in+=j,e.total_out+=$,r.total+=$,4&r.wrap&&$&&(e.adler=r.check=r.flags?a(r.check,A,$,e.next_out-$):n(r.check,A,$,e.next_out-$)),e.data_type=r.bits+(r.last?64:0)+(r.mode===y?128:0)+(r.mode===S||r.mode===v?256:0),(0===j&&0===$||t===s)&&J===u&&(J=p),J)},e.exports.inflateEnd=e=>{if(_(e))return m;let t=e.state;return t.window&&(t.window=null),e.state=null,u},e.exports.inflateGetHeader=(e,t)=>{if(_(e))return m;const r=e.state;return 0==(2&r.wrap)?m:(r.head=t,t.done=!1,u)},e.exports.inflateSetDictionary=(e,t)=>{const r=t.length;let a,o,i;return _(e)?m:(a=e.state,0!==a.wrap&&a.mode!==w?m:a.mode===w&&(o=1,o=n(o,t,r,0),o!==a.check)?g:(i=N(e,t,r,r),i?(a.mode=I,h):(a.havedict=1,u)))},e.exports.inflateInfo="pako inflate (from Nodeca project)"},446:e=>{const t=15,r=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),n=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),a=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),o=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);e.exports=(e,i,s,l,c,u,d,f)=>{const m=f.bits;let g,h,p,b,x,w,y=0,k=0,v=0,S=0,D=0,T=0,P=0,I=0,C=0,L=0,_=null;const A=new Uint16Array(16),E=new Uint16Array(16);let M,O,R,F=null;for(y=0;y<=t;y++)A[y]=0;for(k=0;k<l;k++)A[i[s+k]]++;for(D=m,S=t;S>=1&&0===A[S];S--);if(D>S&&(D=S),0===S)return c[u++]=20971520,c[u++]=20971520,f.bits=1,0;for(v=1;v<S&&0===A[v];v++);for(D<v&&(D=v),I=1,y=1;y<=t;y++)if(I<<=1,I-=A[y],I<0)return-1;if(I>0&&(0===e||1!==S))return-1;for(E[1]=0,y=1;y<t;y++)E[y+1]=E[y]+A[y];for(k=0;k<l;k++)0!==i[s+k]&&(d[E[i[s+k]]++]=k);if(0===e?(_=F=d,w=20):1===e?(_=r,F=n,w=257):(_=a,F=o,w=0),L=0,k=0,y=v,x=u,T=D,P=0,p=-1,C=1<<D,b=C-1,1===e&&C>852||2===e&&C>592)return 1;for(;;){M=y-P,d[k]+1<w?(O=0,R=d[k]):d[k]>=w?(O=F[d[k]-w],R=_[d[k]-w]):(O=96,R=0),g=1<<y-P,h=1<<T,v=h;do{h-=g,c[x+(L>>P)+h]=M<<24|O<<16|R|0}while(0!==h);for(g=1<<y-1;L&g;)g>>=1;if(0!==g?(L&=g-1,L+=g):L=0,k++,0==--A[y]){if(y===S)break;y=i[s+d[k]]}if(y>D&&(L&b)!==p){for(0===P&&(P=D),x+=v,T=y-P,I=1<<T;T+P<S&&(I-=A[T+P],!(I<=0));)T++,I<<=1;if(C+=1<<T,1===e&&C>852||2===e&&C>592)return 1;p=L&b,c[p]=D<<24|T<<16|x-u|0}}return 0!==L&&(c[x+L]=y-P<<24|64<<16|0),f.bits=D,0}},604:e=>{e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},249:e=>{e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},464:t=>{t.exports=e},713:e=>{e.exports=t}},n={};function a(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,a),o.exports}a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&!e;)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})();var o={};return(()=>{function e(e,t,r){if(void 0===e)throw new Error("decodeRGB: rgbBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: rgbBuffer length must be divisible by 3");const n=e.length/3;let a=0,o=0;if(r)for(let r=0;r<n;r++)t[o++]=e[a++],t[o++]=e[a++],t[o++]=e[a++],t[o++]=255;else t.set(e)}function t(e,t,r){if(void 0===e)throw new Error("decodeRGB: rgbBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: rgbBuffer length must be divisible by 3");const n=e.length/3;let a=0,o=0,i=n,s=2*n;if(r)for(let r=0;r<n;r++)t[a++]=e[o++],t[a++]=e[i++],t[a++]=e[s++],t[a++]=255;else for(let r=0;r<n;r++)t[a++]=e[o++],t[a++]=e[i++],t[a++]=e[s++]}function r(e,t,r){if(void 0===e)throw new Error("decodeRGB: ybrBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: ybrBuffer length must be divisble by 3");const n=e.length/3;let a=0,o=0;if(r)for(let r=0;r<n;r++){const r=e[a++],n=e[a++],i=e[a++];t[o++]=r+1.402*(i-128),t[o++]=r-.34414*(n-128)-.71414*(i-128),t[o++]=r+1.772*(n-128),t[o++]=255}else for(let r=0;r<n;r++){const r=e[a++],n=e[a++],i=e[a++];t[o++]=r+1.402*(i-128),t[o++]=r-.34414*(n-128)-.71414*(i-128),t[o++]=r+1.772*(n-128)}}function n(e,t,r){if(void 0===e)throw new Error("decodeRGB: ybrBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: ybrBuffer length must be divisble by 3");const n=e.length/3;let a=0,o=0,i=n,s=2*n;if(r)for(let r=0;r<n;r++){const r=e[o++],n=e[i++],l=e[s++];t[a++]=r+1.402*(l-128),t[a++]=r-.34414*(n-128)-.71414*(l-128),t[a++]=r+1.772*(n-128),t[a++]=255}else for(let r=0;r<n;r++){const r=e[o++],n=e[i++],l=e[s++];t[a++]=r+1.402*(l-128),t[a++]=r-.34414*(n-128)-.71414*(l-128),t[a++]=r+1.772*(n-128)}}a.r(o),a.d(o,{configure:()=>xt,convertColorSpace:()=>H,convertPALETTECOLOR:()=>bt,convertRGBColorByPixel:()=>e,convertRGBColorByPlane:()=>t,convertYBRFullByPixel:()=>r,convertYBRFullByPlane:()=>n,createImage:()=>xe,decodeImageFrame:()=>fe,decodeJPEGBaseline8BitColor:()=>Q,default:()=>yt,external:()=>ht,getImageFrame:()=>me,getMinMax:()=>V,getPixelData:()=>G,internal:()=>R,isColorImage:()=>ge,isJPEGBaseline8BitColor:()=>wt,wadors:()=>Te,wadouri:()=>ut,webWorkerManager:()=>ce});const i=function(e,t,r){return t=t||0,e&&e.Value?e.Value.length<=t?r:e.Value[t]:r};const s=function(e,t,r){const n=i(e,t,r);if(void 0!==n)return parseFloat(n)};const l=function(e,t){const r=i(e,t);if(void 0!==r)return parseFloat(r)};const c=function(e,t){if(!e)return;if(!e.Value)return;if(!Array.isArray(e.Value))return;if(t&&e.Value.length<t)return;const r=[];for(let t=0;t<e.Value.length;t++)r.push(parseFloat(e.Value[t]));return r};function u(e){const t=e.indexOf(":");return e.substring(t+1)}function d(e,t=!0){return e&&e.Value?e.Value[0]&&t?e.Value[0]:e.Value:e}function f(e,t,r){return{shared:(t?Object.values(t[0]):[]).map((e=>e[0])).filter((e=>void 0!==e&&"object"==typeof e)),perFrame:(e?Object.values(e[r-1]):[]).map((e=>e.Value[0])).filter((e=>void 0!==e&&"object"==typeof e))}}function m(e){let{52009230:t,52009229:r,"00280008":n,...a}=e;return t=d(t,!1),r=d(r,!1),n=d(n),{PerFrameFunctionalGroupsSequence:t,SharedFunctionalGroupsSequence:r,NumberOfFrames:n,rest:a}}function g(e){const t=e.indexOf("/frames/")+8,r=e.slice(0,t),n=parseInt(e.slice(t),10);return{metadata:p[`${r}1`],frame:n}}const h={_retrieveMultiframeMetadata:g,retrieveMultiframeMetadata:function(e){return g(u(e))},isMultiframe:function(e){const t=i(e["00280008"]);return t&&t>1}};let p=[],b={};const x={add:function(e,t){const r=u(e);t.isMultiframe=h.isMultiframe(t),p[r]=t},get:function(e){const t=u(e),r=p[t];if(r&&!r?.isMultiframe)return r;const n=b[t];if(n)return n;const a=h._retrieveMultiframeMetadata(t);if(!a||!a.metadata)return;const{metadata:o,frame:i}=a;if(o){const e=function(e,t){const{PerFrameFunctionalGroupsSequence:r,SharedFunctionalGroupsSequence:n,NumberOfFrames:a,rest:o}=m(t);if(r||a>1){const{shared:i,perFrame:s}=f(r,n,e),l=Object.assign(t,{frameNumber:e});return[...i,...s].forEach((e=>{Object.entries(e).forEach((([e,t])=>{l[e]=t}))})),Object.assign(o,{"00280008":a},l)}return t}(i,o);return b[t]=e,e}},remove:function(e){const t=u(e);p[t]=void 0,b[t]=void 0},purge:function(){p=[],b={}}};function w(e){return"RECON TOMO"===e||"RECON GATED TOMO"===e}function y(e){return i(e["00080060"]).includes("NM")}function k(e,t){const r=d(e["00080008"],!1);if(r)return r[t]}function v(e){let t=c(e["00200037"],6);return!t&&y(e)&&(t=function(e){let t;const r=k(e,2);if(r&&w(r)){const r=d(e["00540022"]);r&&(t=c(r["00200037"],6))}return t}(e)),t}function S(e){let t=c(e["00200032"],3);return!t&&y(e)&&(t=function(e){let t;const r=k(e,2);if(r&&w(r)){const r=d(e["00540022"]);r&&(t=c(r["00200032"],3))}return t}(e)),t}function D(e,t,r){const n={};for(const a of r)try{const r=t(a,e);if(r){const e={};for(const t in r)if(t in r){e[T(t)]=r[t]}Object.assign(n,e)}}catch(e){console.error(`Error retrieving ${a} data:`,e)}return n}const T=e=>e.charAt(0).toUpperCase()+e.slice(1),P=["multiframeModule","generalSeriesModule","patientStudyModule","imagePlaneModule","nmMultiframeGeometryModule","imagePixelModule","modalityLutModule","voiLutModule","sopCommonModule","petIsotopeModule","overlayPlaneModule","transferSyntax","petSeriesModule","petImageModule"];function I(e,t){return{transferSyntaxUID:i(t["00020010"])||i(t["00083002"])}}const C=function e(t,r){const{MetadataModules:n}=ht.cornerstone.Enums;if(t===n.MULTIFRAME){const{metadata:e,frame:t}=h.retrieveMultiframeMetadata(r);if(!e)return;const{PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,NumberOfFrames:o}=m(e);if(n||o>1){const{shared:e,perFrame:r}=f(n,a,t);return{NumberOfFrames:o,PerFrameFunctionalInformation:r,SharedFunctionalInformation:e}}return{NumberOfFrames:o}}const{dicomParser:a}=ht,o=x.get(r);if(o){if(t===n.GENERAL_SERIES)return{modality:i(o["00080060"]),seriesInstanceUID:i(o["0020000E"]),seriesNumber:l(o["00200011"]),studyInstanceUID:i(o["0020000D"]),seriesDate:a.parseDA(i(o["00080021"])),seriesTime:a.parseTM(i(o["00080031"],0,"")),acquisitionDate:a.parseDA(i(o["00080022"]),""),acquisitionTime:a.parseTM(i(o["00080032"],0,""))};if(t===n.PATIENT_STUDY)return{patientAge:l(o["00101010"]),patientSize:l(o["00101020"]),patientSex:i(o["00100040"]),patientWeight:l(o["00101030"])};if(t===n.NM_MULTIFRAME_GEOMETRY){const e=i(o["00080060"]),t=k(o,2);return{modality:e,imageType:i(o["00080008"]),imageSubType:t,imageOrientationPatient:v(o),imagePositionPatient:S(o),sliceThickness:l(o["00180050"]),pixelSpacing:c(o["00280030"],2),numberOfFrames:l(o["00280008"]),isNMReconstructable:w(t)&&e.includes("NM")}}if(t===n.IMAGE_PLANE){const e=v(o),t=S(o),r=c(o["00280030"],2);let n=null,a=null;r&&(a=r[0],n=r[1]);let s=null,u=null;return e&&(s=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],u=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:i(o["00200052"]),rows:l(o["00280010"]),columns:l(o["00280011"]),imageOrientationPatient:e,rowCosines:s,columnCosines:u,imagePositionPatient:t,sliceThickness:l(o["00180050"]),sliceLocation:l(o["00201041"]),pixelSpacing:r,rowPixelSpacing:a,columnPixelSpacing:n}}if(t===n.IMAGE_URL)return function(e,t){const{transferSyntaxUID:r}=I(e,t),n=ht.cornerstone.utilities.isVideoTransferSyntax(r),a=e.substring(7),o=a.replace("/frames/","/thumbnail/");let i=a.replace("/frames/","/rendered/");n&&(i=i.replace("/rendered/1","/rendered"));return{isVideo:n,rendered:i,thumbnail:o}}(r,o);if(t===n.CINE)return function(e,t){const r=i(t["00180040"]);return{cineRate:r,numberOfFrames:l(t["00280008"])}}(0,o);if("imagePixelModule"===t)return{samplesPerPixel:l(o["00280002"]),photometricInterpretation:i(o["00280004"]),rows:l(o["00280010"]),columns:l(o["00280011"]),bitsAllocated:l(o["00280100"]),bitsStored:l(o["00280101"]),highBit:i(o["00280102"]),pixelRepresentation:l(o["00280103"]),planarConfiguration:l(o["00280006"]),pixelAspectRatio:i(o["00280034"]),smallestPixelValue:l(o["00280106"]),largestPixelValue:l(o["00280107"]),redPaletteColorLookupTableDescriptor:c(o["00281101"]),greenPaletteColorLookupTableDescriptor:c(o["00281102"]),bluePaletteColorLookupTableDescriptor:c(o["00281103"]),redPaletteColorLookupTableData:c(o["00281201"]),greenPaletteColorLookupTableData:c(o["00281202"]),bluePaletteColorLookupTableData:c(o["00281203"])};if("voiLutModule"===t)return{windowCenter:c(o["00281050"],1),windowWidth:c(o["00281051"],1)};if("modalityLutModule"===t)return{rescaleIntercept:l(o["00281052"]),rescaleSlope:l(o["00281053"]),rescaleType:i(o["00281054"])};if("sopCommonModule"===t)return{sopClassUID:i(o["00080016"]),sopInstanceUID:i(o["00080018"])};if("petIsotopeModule"===t){const e=i(o["00540016"]);if(void 0===e)return;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:a.parseTM(i(e["00181072"],0,"")),radiopharmaceuticalStartDateTime:i(e["00181078"],0,""),radionuclideTotalDose:l(e["00181074"]),radionuclideHalfLife:l(e["00181075"])}}}return"overlayPlaneModule"===t?function(e){const t=[];for(let r=0;r<=30;r+=2){let n=`x60${r.toString(16)}`;4===n.length&&(n=`x600${r.toString(16)}`);const a=i(e[`${n}3000`]);if(!a)continue;const o=[];for(let t=0;t<a.length;t++)for(let r=0;r<8;r++){const n=e.Value[a.dataOffset+t];o[8*t+r]=n>>r&1}t.push({rows:l(e[`${n}0010`]),columns:l(e[`${n}0011`]),type:i(e[`${n}0040`]),x:l(e[`${n}0050`],1)-1,y:l(e[`${n}0050`],0)-1,pixelData:o,description:i(e[`${n}0022`]),label:i(e[`${n}1500`]),roiArea:i(e[`${n}1301`]),roiMean:i(e[`${n}1302`]),roiStandardDeviation:i(e[`${n}1303`])})}return{overlays:t}}(o):"transferSyntax"===t?I(r,o):"petSeriesModule"===t?{correctedImage:i(o["00280051"]),units:i(o["00541001"]),decayCorrection:i(o["00541102"])}:"petImageModule"===t?{frameReferenceTime:l(o["00541300"]),actualFrameDuration:l(o["00181242"])}:"instance"===t?D(r,e,P):void 0}};function L(e,t,r){if(r+e.length>t.length)return!1;let n=r;for(let r=0;r<e.length;r++)if(e[r]!==t[n++])return!1;return!0}const _=function(e,t,r){r=r||0;const n=function(e){const t=new Uint8Array(e.length);for(let r=0,n=e.length;r<n;r++)t[r]=e.charCodeAt(r);return t}(t);for(let t=r;t<e.length;t++)if(n[0]===e[t]&&L(n,e,t))return t;return-1};let A={open(e,t){e.open("get",t,!0)},beforeSend(){},beforeProcessing:e=>Promise.resolve(e.response),imageCreated(){}};function E(e){A=Object.assign(A,e)}function M(){return A}const O=function(e,t,r={},n={}){const{cornerstone:a}=ht,o=M(),i=e=>{if("function"==typeof o.errorInterceptor){const t=new Error("request failed");t.request=e,t.response=e.response,t.status=e.status,o.errorInterceptor(t)}},s=new XMLHttpRequest,l=new Promise(((l,c)=>{o.open(s,e,r,n);const u=o.beforeSend(s,t,r,n);s.responseType="arraybuffer";const d=Object.assign({},r,u);Object.keys(d).forEach((function(t){null!==d[t]&&("Accept"===t&&-1!==e.indexOf("accept=")||s.setRequestHeader(t,d[t]))})),n.deferred={resolve:l,reject:c},n.url=e,n.imageId=t,s.onloadstart=function(r){o.onloadstart&&o.onloadstart(r,n);const i={url:e,imageId:t};a.triggerEvent(a.events,"cornerstoneimageloadstart",i)},s.onloadend=function(r){o.onloadend&&o.onloadend(r,n);const i={url:e,imageId:t};a.triggerEvent(a.events,"cornerstoneimageloadend",i)},s.onreadystatechange=function(e){o.onreadystatechange?o.onreadystatechange(e,n):4===s.readyState&&(200===s.status||206===s.status?o.beforeProcessing(s).then(l).catch((()=>{i(s),c(s)})):(i(s),c(s)))},s.onprogress=function(e){const t=e.loaded;let r,a;e.lengthComputable&&(r=e.total,a=Math.round(t/r*100)),o.onprogress&&o.onprogress(e,n)},s.onerror=function(){i(s),c(s)},s.onabort=function(){i(s),c(s)},s.send()}));return l.xhr=s,l},R={xhrRequest:O,setOptions:E,getOptions:M};var F=a(464);const{ImageQualityStatus:B}=F.Enums;function U(e,t,r){r||={};const n=new Uint8Array(t),a=!!r?.isPartial;if(-1===e.indexOf("multipart"))return{contentType:e,imageQualityStatus:a?B.SUBRESOLUTION:B.FULL_RESOLUTION,pixelData:n};let{tokenIndex:o,responseHeaders:i,boundary:s,multipartContentType:l}=r;if(o||=_(n,"\r\n\r\n"),-1===o)throw new Error("invalid response - no multipart mime header");if(!s){const e=function(e,t,r){t=t||0,r=r||e.length-t;let n="";for(let a=t;a<t+r;a++)n+=String.fromCharCode(e[a]);return n}(n,0,o);if(i=e.split("\r\n"),s=function(e){for(let t=0;t<e.length;t++)if("--"===e[t].substr(0,2))return e[t]}(i),!s)throw new Error("invalid response - no boundary marker")}const c=o+4,u=_(n,s,c);if(-1===u&&!a)throw new Error("invalid response - terminating boundary not found");return l||=function(e){for(let t=0;t<e.length;t++)if("Content-Type:"===e[t].substr(0,13))return e[t].substr(13).trim()}(i),r.tokenIndex=o,r.boundary=s,r.responseHeaders=i,r.multipartContentType=l,r.isPartial=-1===u,{contentType:l,extractDone:!a||-1!==u,tokenIndex:o,responseHeaders:i,boundary:s,multipartContentType:l,pixelData:t.slice(c,u-2)}}const{ImageQualityStatus:N}=F.Enums;function j(e,t=!0){return t?e.imageQualityStatus??N.FULL_RESOLUTION:N.SUBRESOLUTION}const{ProgressiveIterator:$}=F.utilities;function W(e,t,r={},n={}){const a=M(),{retrieveOptions:o={},streamingData:i={}}=n,s=o.minChunkSize||131072,l=new $("streamRequest");return l.generate((async(n,l)=>{const c=Object.assign({},r);Object.keys(c).forEach((function(t){null===c[t]&&(c[t]=void 0),"Accept"===t&&-1!==e.indexOf("accept=")&&(c[t]=void 0)}));try{const a=await fetch(e,{headers:r,signal:void 0});if(200!==a.status)throw new Error(`Couldn't retrieve ${e} got status ${a.status}`);const l=a.body.getReader(),c=a.headers,u=c.get("content-type"),d=Number(c.get("Content-Length"));let f=!1,m=i.encodedData,g=i.lastSize||0;for(i.isPartial=!0;!f;){const{done:r,value:a}=await l.read();if(m=Z(m,a),!m){if(f)throw new Error(`Done but no image frame available ${t}`);continue}if(f=r||m.byteLength===d,!f&&m.length<g+s)continue;g=m.length,i.isPartial=!r;const c=U(u,m,i),h=j(o,f),p={url:e,imageId:t,...c,percentComplete:r?100:100*c.pixelData?.length/d,imageQualityStatus:h,done:f};n.add(p,f)}}catch(e){(e=>{if("function"==typeof a.errorInterceptor){const e=new Error("request failed");a.errorInterceptor(e)}})(),console.error(e),l(e)}})),l.getNextPromise()}function Z(e,t){if(!e)return t;if(!t)return e;const r=new Uint8Array(e.length+t.length);return r.set(e,0),r.set(t,e.length),r}function q(e,t,r={},n={}){const a=M(),{retrieveOptions:o={},streamingData:i}=n,s=i.chunkSize||function(e,t,r){const n=t[r];if("function"!=typeof n)return n;const a=x.get(e);return n(a,e)}(t,o,"chunkSize")||65536,l=new Promise((async(t,n)=>{const l=Object.assign({},r);Object.keys(l).forEach((function(e){null!==l[e]&&void 0!==l[e]||delete l[e]}));try{i.encodedData||(i.chunkSize=s,i.rangesFetched=0);const r=function(e,t){const{totalBytes:r,encodedData:n,chunkSize:a=65536}=e,{rangeIndex:o=0}=t;if(!(-1!==o||r&&n))return[0,""];if(-1===o||n?.byteLength>r-a)return[n?.byteLength||0,""];return[n?.byteLength||0,a*(o+1)-1]}(i,o),{encodedData:n,responseHeaders:a}=await async function(e,t,r,n){r&&(t=Object.assign(t,{Range:`bytes=${r[0]}-${r[1]}`}));let{encodedData:a}=n;if(r[1]&&a?.byteLength>r[1])return n;const o=await fetch(e,{headers:t,signal:void 0}),i=await o.arrayBuffer(),s=new Uint8Array(i),{status:l}=o;let c;a?(c=new Uint8Array(a.length+s.length),c.set(a,0),c.set(s,a.length),n.rangesFetched=1):(c=new Uint8Array(s.length),c.set(s,0),n.rangesFetched++);n.encodedData=a=c,n.responseHeaders=o.headers;const u=o.headers.get("Content-Range");u?n.totalBytes=Number(u.split("/")[1]):206===l&&r?""===r[1]||a?.length<r[1]?n.totalBytes=a.byteLength:n.totalBytes=Number.MAX_SAFE_INTEGER:n.totalBytes=a?.byteLength;return n}(e,l,r,i),c=a.get("content-type"),{totalBytes:u}=i,d=u===n.byteLength,f=U(c,n,{isPartial:!0}),m=j(o,d||f.extractDone);t({...f,imageQualityStatus:m,percentComplete:f.extractDone?100:100*s/u})}catch(e){(e=>{if("function"==typeof a.errorInterceptor){const e=new Error("request failed");a.errorInterceptor(e)}else console.warn("rangeRequest:Caught",e)})(e),console.error(e),n(e)}}));return l}const G=function(e,t,r="application/octet-stream",n){const{streamingData:a,retrieveOptions:o={}}=n||{},i={Accept:r};let s=o.urlArguments?`${e}${-1===e.indexOf("?")?"?":"&"}${o.urlArguments}`:e;if(o.framesPath&&(s=s.replace("/frames/",o.framesPath)),a?.url!==s&&(n.streamingData={url:s}),void 0!==o.rangeIndex)return q(s,t,i,n);if(!1!==o.streaming)return W(s,t,i,n);const l=O(s,t,i),{xhr:c}=l;return l.then((function(e){const t=U(c.getResponseHeader("Content-Type")||"application/octet-stream",new Uint8Array(e));return t.imageQualityStatus=j(o,!0),t}))};const V=function(e){let t,r=e[0],n=e[0];const a=e.length;for(let o=1;o<a;o++)t=e[o],r=Math.min(r,t),n=Math.max(n,t);return{min:r,max:n}};function z(r,n,a){0===r.planarConfiguration?e(r.pixelData,n,a):t(r.pixelData,n,a)}function H(e,t,a){if("RGB"===e.photometricInterpretation)z(e,t,a);else if("YBR_RCT"===e.photometricInterpretation)z(e,t,a);else if("YBR_ICT"===e.photometricInterpretation)z(e,t,a);else if("PALETTE COLOR"===e.photometricInterpretation)bt(e,t,a);else if("YBR_FULL_422"===e.photometricInterpretation)!function(e,t,r){if(void 0===e)throw new Error("decodeRGB: ybrBuffer must not be undefined");if(e.length%2!=0)throw new Error("decodeRGB: ybrBuffer length must be divisble by 3");const n=e.length/2;let a=0,o=0;if(r)for(let r=0;r<n;r+=2){const r=e[a++],n=e[a++],i=e[a++],s=e[a++];t[o++]=r+1.402*(s-128),t[o++]=r-.34414*(i-128)-.71414*(s-128),t[o++]=r+1.772*(i-128),t[o++]=255,t[o++]=n+1.402*(s-128),t[o++]=n-.34414*(i-128)-.71414*(s-128),t[o++]=n+1.772*(i-128),t[o++]=255}else for(let r=0;r<n;r+=2){const r=e[a++],n=e[a++],i=e[a++],s=e[a++];t[o++]=r+1.402*(s-128),t[o++]=r-.34414*(i-128)-.71414*(s-128),t[o++]=r+1.772*(i-128),t[o++]=n+1.402*(s-128),t[o++]=n-.34414*(i-128)-.71414*(s-128),t[o++]=n+1.772*(i-128)}}(e.pixelData,t,a);else{if("YBR_FULL"!==e.photometricInterpretation)throw new Error(`No color space conversion for photometric interpretation ${e.photometricInterpretation}`);!function(e,t,a){0===e.planarConfiguration?r(e.pixelData,t,a):n(e.pixelData,t,a)}(e,t,a)}}function Y(e){return function(e){let t;try{return decodeURIComponent(escape(e))}catch(r){if(t=r,t instanceof URIError)return e;throw t}}(String.fromCharCode.apply(null,Array.prototype.slice.apply(new Uint8Array(e))))}const Q=function(e,t,r){const n=(new Date).getTime(),a=new Blob([t],{type:"image/jpeg"});return new Promise(((t,o)=>{const i=new FileReader;void 0===i.readAsBinaryString?i.readAsArrayBuffer(a):i.readAsBinaryString(a),i.onload=function(){const a=new Image;a.onload=function(){r.height=a.height,r.width=a.width,e.rows=a.height,e.columns=a.width;const o=r.getContext("2d");o.drawImage(this,0,0);const i=o.getImageData(0,0,a.width,a.height),s=(new Date).getTime();e.pixelData=new Uint8Array(i.data.buffer),e.imageData=i,e.decodeTimeInMS=s-n;const l=V(e.pixelData);e.smallestPixelValue=l.min,e.largestPixelValue=l.max,e.pixelDataLength=e.pixelData.length,t(e)},a.onerror=function(e){o(e)},void 0===i.readAsBinaryString?a.src=`data:image/jpeg;base64,${window.btoa(Y(i.result))}`:a.src=`data:image/jpeg;base64,${window.btoa(i.result)}`},i.onerror=e=>{o(e)}}))};function K(){return new Worker(a.p+"index.worker.64c896c4316fcd506666.worker.js")}let J=0;const X=[],ee=[],te=M(),re={maxWebWorkers:navigator.hardwareConcurrency||1,startWebWorkersOnDemand:!0,webWorkerTaskPaths:[],taskConfiguration:{decodeTask:{initializeCodecsOnStartup:!1,strict:te.strict}}};let ne;const ae={maxWebWorkers:0,numWebWorkers:0,numTasksQueued:0,numTasksExecuting:0,numTasksCompleted:0,totalTaskTimeInMS:0,totalTimeDelayedInMS:0};function oe(){if(X.length){for(let e=0;e<ee.length;e++)if("ready"===ee[e].status){ee[e].status="busy";const t=X.shift();t.start=(new Date).getTime();const r=(new Date).getTime();return ae.totalTimeDelayedInMS+=r-t.added,ee[e].task=t,ee[e].worker.postMessage({taskType:t.taskType,workerIndex:e,data:t.data},t.transferList),void ae.numTasksExecuting++}ee.length<ne.maxWebWorkers&&se()}}function ie(e){if("initialize"===e.data.taskType)ee[e.data.workerIndex].status="ready",oe();else{const t=ee[e.data.workerIndex].task.start,r="success"===e.data.status?"resolve":"reject";try{ee[e.data.workerIndex].task.deferred[r](e.data.result)}catch(e){console.warn("Caught error delivering response",e)}ee[e.data.workerIndex].task=void 0,ae.numTasksExecuting--,ee[e.data.workerIndex].status="ready",ae.numTasksCompleted++;const n=(new Date).getTime();ae.totalTaskTimeInMS+=n-t,oe()}}function se(){if(ee.length>=ne.maxWebWorkers)return;const e=new K;ee.push({worker:e,status:"initializing"}),e.addEventListener("message",ie),e.postMessage({taskType:"initialize",workerIndex:ee.length-1,config:ne})}function le(e){if(ne=e=e||re,ne.maxWebWorkers=ne.maxWebWorkers||navigator.hardwareConcurrency||1,!ne.startWebWorkersOnDemand)for(let e=0;e<ne.maxWebWorkers;e++)se()}const ce={initialize:le,loadWebWorkerTask:function(e,t){ne.webWorkerTaskPaths.push(e),t&&(ne.taskConfiguration=Object.assign(ne.taskConfiguration,t));for(let t=0;t<ee.length;t++)ee[t].worker.postMessage({taskType:"loadWebWorkerTask",workerIndex:ee.length-1,sourcePath:e,config:ne})},addTask:function(e,t,r=0,n){ne||le();let a={resolve:void 0,reject:void 0};const o=new Promise(((e,t)=>{a={resolve:e,reject:t}}));let i;for(i=0;i<X.length&&!(X[i].priority<r);i++);const s=J++;return X.splice(i,0,{taskId:s,taskType:e,status:"ready",added:(new Date).getTime(),data:t,deferred:a,priority:r,transferList:n}),oe(),{taskId:s,promise:o}},getStatistics:function(){return ae.maxWebWorkers=ne.maxWebWorkers,ae.numWebWorkers=ee.length,ae.numTasksQueued=X.length,ae},setTaskPriority:function(e,t=0){for(let r=0;r<X.length;r++)if(X[r].taskId===e){const e=X.splice(r,1)[0];for(e.priority=t,r=0;r<X.length&&!(X[r].priority<t);r++);return X.splice(r,0,e),!0}return!1},cancelTask:function(e,t){for(let r=0;r<X.length;r++)if(X[r].taskId===e){return X.splice(r,1).deferred.reject(t),!0}return!1},webWorkers:ee,terminate:function(){for(let e=0;e<ee.length;e++)ee[e].worker.terminate();ee.length=0,ne=void 0}};var ue=a(578);function de(e,t,r,n,a){const o={...n};delete o.loader,delete o.streamingData;const i=o.priority||void 0,s=o.transferPixelData?[r.buffer]:void 0;return ce.addTask("decodeTask",{imageFrame:e,transferSyntax:t,pixelData:r,options:o,decodeConfig:a},i,s).promise}window.pako={inflateRaw:ue.Hq};const fe=function(e,t,r,n,a={},o){switch(t){case"1.2.840.10008.1.2":case"1.2.840.10008.1.2.1":case"1.2.840.10008.1.2.2":case"1.2.840.10008.1.2.1.99":case"1.2.840.10008.1.2.5":case"1.2.840.10008.1.2.4.51":case"1.2.840.10008.1.2.4.57":case"1.2.840.10008.1.2.4.70":case"1.2.840.10008.1.2.4.80":case"1.2.840.10008.1.2.4.81":case"1.2.840.10008.1.2.4.90":case"1.2.840.10008.1.2.4.91":case"3.2.840.10008.1.2.4.96":case"1.2.840.10008.1.2.4.201":case"1.2.840.10008.1.2.4.202":case"1.2.840.10008.1.2.4.203":return de(e,t,r,a,o);case"1.2.840.10008.1.2.4.50":return 8!==e.bitsAllocated||3!==e.samplesPerPixel&&4!==e.samplesPerPixel?de(e,t,r,a,o):Q(e,r,n)}return Promise.reject(new Error(`No decoder for transfer syntax ${t}`))};const me=function(e){const{cornerstone:t}=ht,r=t.metaData.get("imagePixelModule",e);return{samplesPerPixel:r.samplesPerPixel,photometricInterpretation:r.photometricInterpretation,planarConfiguration:r.planarConfiguration,rows:r.rows,columns:r.columns,bitsAllocated:r.bitsAllocated,bitsStored:r.bitsStored,pixelRepresentation:r.pixelRepresentation,smallestPixelValue:r.smallestPixelValue,largestPixelValue:r.largestPixelValue,redPaletteColorLookupTableDescriptor:r.redPaletteColorLookupTableDescriptor,greenPaletteColorLookupTableDescriptor:r.greenPaletteColorLookupTableDescriptor,bluePaletteColorLookupTableDescriptor:r.bluePaletteColorLookupTableDescriptor,redPaletteColorLookupTableData:r.redPaletteColorLookupTableData,greenPaletteColorLookupTableData:r.greenPaletteColorLookupTableData,bluePaletteColorLookupTableData:r.bluePaletteColorLookupTableData,pixelData:void 0,imageId:e}};function ge(e){return"RGB"===e||"PALETTE COLOR"===e||"YBR_FULL"===e||"YBR_FULL_422"===e||"YBR_PARTIAL_422"===e||"YBR_PARTIAL_420"===e||"YBR_RCT"===e||"YBR_ICT"===e}const he={"1.2.840.10008.1.2.1":"application/octet-stream","1.2.840.10008.1.2":"application/octet-stream","1.2.840.10008.1.2.2":"application/octet-stream","1.2.840.10008.1.2.5":"image/dicom-rle"};let pe="";function be(e){const t=function(e,t){let r;return Number.isInteger(e)&&Number.isInteger(t)&&(e>=0?t<=255?r=Uint8Array:t<=65535&&(r=Uint16Array):e>=-128&&t<=127?r=Int8Array:e>=-32768&&t<=32767&&(r=Int16Array)),r||Float32Array}(e.smallestPixelValue,e.largestPixelValue);if(!t)throw new Error("Could not apply a typed array to the pixel data");{const r=new t(e.pixelData);e.pixelData=r}}const xe=function(e,t,r,n={}){const a=n.useRGBA;if(n.preScale={enabled:!(!n.preScale||void 0===n.preScale.enabled)&&n.preScale.enabled},!t?.length)return Promise.reject(new Error("The pixel data is missing"));const{cornerstone:o}=ht,i=document.createElement("canvas"),s=me(e);if(s.decodeLevel=n.decodeLevel,n.preScale.enabled){const t=function(e,t){const r=e.get("modalityLutModule",t)||{},n=e.get("generalSeriesModule",t)||{},{modality:a}=n,o={rescaleSlope:r.rescaleSlope,rescaleIntercept:r.rescaleIntercept,modality:a},i=e.get("scalingModule",t)||{};return{...o,..."PT"===a&&{suvbw:i.suvbw}}}(o.metaData,e);t&&(n.preScale={...n.preScale,scalingParameters:t})}n.isSharedArrayBuffer=n.targetBuffer?.arrayBuffer&&n.targetBuffer.arrayBuffer instanceof SharedArrayBuffer;const{decodeConfig:l}=M(),c=fe(s,r,t,i,n,l),{use16BitDataType:u}=l,d=ge(s.photometricInterpretation);return new Promise(((t,s)=>{c.then((function(s){if(n.skipCreateImage)return t(s);let l=!1;if(n.targetBuffer&&n.targetBuffer.type&&!d){const{arrayBuffer:e,type:t,offset:r=0,length:a}=n.targetBuffer,o=s.pixelDataLength,i=r,c=null!=a?a:o-i,d={Uint8Array,Uint16Array:u?Uint16Array:void 0,Int16Array:u?Int16Array:void 0,Float32Array};if(c!==s.pixelDataLength)throw new Error(`target array for image does not have the same length (${c}) as the decoded image length (${s.pixelDataLength}).`);const f=d[t],m=e?new f(e,i,c):new f(s.pixelData);if(c!==s.pixelDataLength)throw new Error("target array for image does not have the same length as the decoded image length.");s.pixelData=m,l=!0}l||be(s);const c=o.metaData.get("imagePlaneModule",e)||{},f=o.metaData.get("voiLutModule",e)||{},m=o.metaData.get("modalityLutModule",e)||{},g=o.metaData.get("sopCommonModule",e)||{};if(d){const{rows:e,columns:t}=s;if(he[r]){i.height=s.rows,i.width=s.columns;const e=i.getContext("2d").createImageData(s.columns,s.rows);H(s,e.data,a),s.imageData=e,s.pixelData=e.data,s.pixelDataLength=e.data.length}else if(!a&&s.pixelDataLength===4*e*t){const e=new Uint8Array(s.pixelData.length/4*3);s.pixelData=function(e,t){const r=e.length/4;let n=0,a=0;for(let o=0;o<r;o++)t[a++]=e[n++],t[a++]=e[n++],t[a++]=e[n++],n++;return t}(s.pixelData,e),s.pixelDataLength=s.pixelData.length}const n=V(s.pixelData);s.smallestPixelValue=n.min,s.largestPixelValue=n.max}const h={imageId:e,color:d,columnPixelSpacing:c.columnPixelSpacing,columns:s.columns,height:s.rows,preScale:s.preScale,intercept:m.rescaleIntercept?m.rescaleIntercept:0,slope:m.rescaleSlope?m.rescaleSlope:1,invert:"MONOCHROME1"===s.photometricInterpretation,minPixelValue:s.smallestPixelValue,maxPixelValue:s.largestPixelValue,rowPixelSpacing:c.rowPixelSpacing,rows:s.rows,sizeInBytes:s.pixelData.byteLength,width:s.columns,windowCenter:f.windowCenter?f.windowCenter[0]:void 0,windowWidth:f.windowWidth?f.windowWidth[0]:void 0,voiLUTFunction:f.voiLUTFunction?f.voiLUTFunction:void 0,decodeTimeInMS:s.decodeTimeInMS,floatPixelData:void 0,imageFrame:s,rgba:d&&a,getPixelData:()=>s.pixelData,getCanvas:void 0,numComps:void 0};var p;if(window.image=h,h.color&&(h.getCanvas=function(){if(pe===e)return i;const t=h.columns,r=h.rows;i.height=r,i.width=t;const n=i.getContext("2d"),a=n.createImageData(t,r),o=s.pixelData;if(o.length===t*r*4)for(let e=0;e<o.length;e++)a.data[e]=o[e];else if(o.length===t*r*3){let e=0;for(let t=0;t<o.length;t+=3)a.data[e++]=o[t],a.data[e++]=o[t+1],a.data[e++]=o[t+2],a.data[e++]=255}return s.pixelData=a.data,s.pixelDataLength=a.data.length,s.imageData=a,n.putImageData(s.imageData,0,0),pe=e,i}),m.modalityLUTSequence&&m.modalityLUTSequence.length>0&&("1.2.840.10008.5.1.4.1.1.12.1"!==(p=g.sopClassUID)&&"1.2.840.10008.5.1.4.1.1.12.2.1"!==p)&&(h.modalityLUT=m.modalityLUTSequence[0]),f.voiLUTSequence&&f.voiLUTSequence.length>0&&(h.voiLUT=f.voiLUTSequence[0]),h.color&&(h.windowWidth=256,h.windowCenter=128),void 0===h.windowCenter||void 0===h.windowWidth){const e=h.imageFrame.minAfterScale,t=h.imageFrame.maxAfterScale;h.windowWidth=t-e,h.windowCenter=(t+e)/2}t(h)}),s)}))},{ProgressiveIterator:we}=F.utilities,{ImageQualityStatus:ye}=F.Enums,ke=new Set(["3.2.840.10008.1.2.4.96","1.2.840.10008.1.2.4.202","1.2.840.10008.1.2.4.203"]);function ve(e){const t="1.2.840.10008.1.2";if(!e)return t;const r=e.split(";"),n={};r.forEach((e=>{const t=e.split("=");if(2!==t.length)return;const r=t[1].trim().replace(/"/g,"");n[t[0].trim()]=r}));const a={"image/jpeg":"1.2.840.10008.1.2.4.50","image/x-dicom-rle":"1.2.840.10008.1.2.5","image/x-jls":"1.2.840.10008.1.2.4.80","image/jls":"1.2.840.10008.1.2.4.80","image/jll":"1.2.840.10008.1.2.4.70","image/jp2":"1.2.840.10008.1.2.4.90","image/jpx":"1.2.840.10008.1.2.4.92","image/jphc":"3.2.840.10008.1.2.4.96","image/jxl":"1.2.840.10008.1.2.4.140"};return n["transfer-syntax"]?n["transfer-syntax"]:e&&!Object.keys(n).length&&a[e]?a[e]:n.type&&a[n.type]?a[n.type]:a[e]?a[e]:t}function Se(e,t=4){const r=e/100-.02;return r>1/4?Math.min(t,0):r>1/16?Math.min(t,1):r>1/64?Math.min(t,2):Math.min(t,3)}const De=function(e,t={}){const r=ht.cornerstone.imageRetrievalPoolManager,n=(new Date).getTime(),a=new we("decompress"),o=t.requestType||"interaction",i=t.additionalDetails||{imageId:e},s=void 0===t.priority?5:t.priority,l=t.addToBeginning||!1,c=e.substring(7);return r.addRequest(async function(e,r,o){a.generate((async a=>{const i=we.as(G(e,r,o,t));let s=10;for await(const e of i){const{pixelData:o,imageQualityStatus:i=ye.FULL_RESOLUTION,percentComplete:l,done:c=!0,extractDone:u=!0}=e,d=ve(e.contentType);if(!u&&!ke.has(d))continue;const f=e.decodeLevel??(i===ye.FULL_RESOLUTION?0:Se(l,t.retrieveOptions?.decodeLevel));if(c||!(s<=f))try{const e={...t,decodeLevel:f},l=await xe(r,o,d,e),u=(new Date).getTime();l.loadTimeInMS=u-n,l.transferSyntaxUID=d,l.imageQualityStatus=i,a.add(l,c),s=f}catch(e){if(u)throw console.warn("Couldn't decode",e),e}}}))}.bind(this,c,e,"multipart/related; type=application/octet-stream; transfer-syntax=*"),o,i,s,l),{promise:a.getDonePromise(),cancelFn:void 0}};const Te={metaData:{getNumberString:s,getNumberValue:l,getNumberValues:c,getValue:i,metaDataProvider:C},findIndexOfString:_,getPixelData:G,loadImage:De,metaDataManager:x,register:function(e){e.registerImageLoader("wadors",De),e.metaData.addProvider(C)}};function Pe(e,t){if(e.elements[t]&&6===e.elements[t].length)return[e.uint16(t,0),e.uint16(t,1),e.uint16(t,2)]}function Ie(e,t,r){const n=[],a=e.elements[t];for(let o=0;o<r[0];o++)16===r[2]?n[o]=e.uint16(t,o):n[o]=e.byteArray[o+a.dataOffset];return n}const Ce=function(e){const t={samplesPerPixel:e.uint16("x00280002"),photometricInterpretation:e.string("x00280004"),rows:e.uint16("x00280010"),columns:e.uint16("x00280011"),bitsAllocated:e.uint16("x00280100"),bitsStored:e.uint16("x00280101"),highBit:e.uint16("x00280102"),pixelRepresentation:e.uint16("x00280103"),planarConfiguration:e.uint16("x00280006"),pixelAspectRatio:e.string("x00280034")};return function(e,t){0===e.uint16("x00280103")?(t.smallestPixelValue=e.uint16("x00280106"),t.largestPixelValue=e.uint16("x00280107")):(t.smallestPixelValue=e.int16("x00280106"),t.largestPixelValue=e.int16("x00280107"))}(e,t),"PALETTE COLOR"===t.photometricInterpretation&&e.elements.x00281101&&function(e,t){t.redPaletteColorLookupTableDescriptor=Pe(e,"x00281101"),t.greenPaletteColorLookupTableDescriptor=Pe(e,"x00281102"),t.bluePaletteColorLookupTableDescriptor=Pe(e,"x00281103"),0===t.redPaletteColorLookupTableDescriptor[0]&&(t.redPaletteColorLookupTableDescriptor[0]=65536,t.greenPaletteColorLookupTableDescriptor[0]=65536,t.bluePaletteColorLookupTableDescriptor[0]=65536);const r=t.redPaletteColorLookupTableDescriptor[0],n=e.elements.x00281201.length===r?8:16;t.redPaletteColorLookupTableDescriptor[2]!==n&&(t.redPaletteColorLookupTableDescriptor[2]=n,t.greenPaletteColorLookupTableDescriptor[2]=n,t.bluePaletteColorLookupTableDescriptor[2]=n),t.redPaletteColorLookupTableData=Ie(e,"x00281201",t.redPaletteColorLookupTableDescriptor),t.greenPaletteColorLookupTableData=Ie(e,"x00281202",t.greenPaletteColorLookupTableDescriptor),t.bluePaletteColorLookupTableData=Ie(e,"x00281203",t.bluePaletteColorLookupTableDescriptor)}(e,t),t};function Le(e,t){let r=t.uint16("x00283002",0);0===r&&(r=65535);let n=0;n=0===e?t.uint16("x00283002",1):t.int16("x00283002",1);const a={id:"1",firstValueMapped:n,numBitsPerEntry:t.uint16("x00283002",2),lut:[]};for(let n=0;n<r;n++)a.lut[n]=0===e?t.uint16("x00283006",n):t.int16("x00283006",n);return a}const _e=function(e,t){if(!t||!t.items||!t.items.length)return;const r=[];for(let n=0;n<t.items.length;n++){const a=Le(e,t.items[n].dataSet);a&&r.push(a)}return r};const Ae=function(e){const t=e.string("x00080016");if("1.2.840.10008.5.1.4.1.1.2"===t||"1.2.840.10008.5.1.4.1.1.2.1"===t)return 1;const r=e.floatString("x00281052"),n=e.floatString("x00281053");if(void 0!==r&&void 0!==n){const t=function(e){const t=e.uint16("x00280103"),r=e.uint16("x00280101");return 0===t?0:-1<<r-1}(e);return t*n+r<0?1:0}return e.elements.x00283000&&e.elements.x00283000.length>0?0:e.uint16("x00280103")};const Ee=function(e,t,r){const n=[],a=e.string(t);if(!a)return;const o=a.split("\\");if(!(r&&o.length<r)){for(let e=0;e<o.length;e++)n.push(parseFloat(o[e]));return n}};const Me=function(e){const t=e.indexOf(":");let r=e.substring(t+1);const n=r.indexOf("frame=");let a;if(-1!==n){const e=r.substring(n+6);a=parseInt(e,10),r=r.substring(0,n-1)}return{scheme:e.substring(0,t),url:r,frame:a,pixelDataFrame:void 0!==a?a-1:void 0}};function Oe(e){const{dicomParser:t}=ht;let r,n=t.parseDicom(e,{untilTag:"x7fe00010"});n.elements.x7fe00010||console.warn("Pixel data not found!");try{r=t.parseDicom(e)}catch(e){console.error(e),console.log("pixel data dataset:",e.dataSet),r=e.dataSet}return n.elements.x7fe00010=r.elements.x7fe00010,n=function(e){const t=e.elements.x7fe00010.fragments,r=e.byteArray.length;for(const e of t){const{position:t,length:n}=e;n>r-t&&(console.log(`Truncated fragment, changing fragment length from ${e.length} to ${r-t}`),e.length=r-t)}return e}(n),n}async function Re(e,t,r){const n=Oe(e),{uri:a,imageId:o,fileTotalLength:i}=r;return n.fetchMore=async function(s){const l=Object.assign({uri:a,imageId:o,fetchedLength:e.length,lengthToFetch:i-e.length},s),{fetchedLength:c,lengthToFetch:u}=l,{arrayBuffer:d}=await t(a,o,{byteRange:`${c}-${c+u}`}),f=new Uint8Array(d),m=new Uint8Array(n.byteArray.length+f.length);return m.set(n.byteArray),m.set(f,n.byteArray.length),Re(m,t,r)},n}function Fe(e,t,r){const n={};(t?Object.values(t.items[0].dataSet.elements):[]).map((e=>n[e.tag]=e));const a={};return(e?Object.values(e.items[r-1].dataSet.elements):[]).map((e=>a[e.tag]=e)),{shared:n,perFrame:a}}function Be(e){if(!e)return;const{elements:t,...r}=e,{x52009230:n,x52009229:a,...o}=t;return{NumberOfFrames:e.intString("x00280008"),PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,otherElements:o,otherAttributtes:r}}function Ue(e){if(We[e])return We[e]}function Ne(e){if(!e)return!1;const t=e.intString("x00280008");return t&&t>1}const je={_get:Ue,generateMultiframeWADOURIs:function(e){const t=[],r=Ue(e);if(Ne(r)){const n=r.intString("x00280008");for(let r=1;r<=n;r++)t.push(`${e}&frame=${r}`)}else t.push(e);return t},retrieveMultiframeDataset:function(e){const t=function(e){return e.indexOf("&frame=")}(e),r=-1===t?e:e.slice(0,t),n=parseInt(e.slice(t+7),10)||1;let a;return a=We[r]?We[r].dataSet:void 0,{dataSet:a,frame:n}},isMultiframeDataset:function(e){return Ne(Ue(e))}};let $e=0,We={},Ze={};function qe(){return{cacheSizeInBytes:$e,numberOfDataSetsCached:Object.keys(We).length}}const Ge={isLoaded:function(e){return void 0!==We[e]},load:function(e,t=O,r){const{cornerstone:n,dicomParser:a}=ht;if(We[e])return new Promise((t=>{We[e].cacheCount++,t(We[e].dataSet)}));if(Ze[e])return Ze[e].cacheCount++,Ze[e];const o=t(e,r),i=new Promise(((s,l)=>{o.then((async function(o){const c={isPartialContent:!1,fileTotalLength:null};if(!(o instanceof ArrayBuffer)){if(!o.arrayBuffer)return l(new Error("If not returning ArrayBuffer, must return object with `arrayBuffer` parameter"));c.isPartialContent=o.flags.isPartialContent,c.fileTotalLength=o.flags.fileTotalLength,o=o.arrayBuffer}const u=new Uint8Array(o);let d;try{d=c.isPartialContent?await Re(u,t,{uri:e,imageId:r,fileTotalLength:c.fileTotalLength}):a.parseDicom(u)}catch(e){return l(e)}We[e]={dataSet:d,cacheCount:i.cacheCount},$e+=d.byteArray.length,s(d),n.triggerEvent(n.events,"datasetscachechanged",{uri:e,action:"loaded",cacheInfo:qe()})}),l).then((()=>{delete Ze[e]}),(()=>{delete Ze[e]}))}));return i.cacheCount=1,Ze[e]=i,i},unload:function(e){const{cornerstone:t}=ht;We[e]&&(We[e].cacheCount--,0===We[e].cacheCount&&($e-=We[e].dataSet.byteArray.length,delete We[e],t.triggerEvent(t.events,"datasetscachechanged",{uri:e,action:"unloaded",cacheInfo:qe()})))},getInfo:qe,purge:function(){We={},Ze={},$e=0},get:function(e){let t;if(e.includes("&frame=")){const{frame:r,dataSet:n}=je.retrieveMultiframeDataset(e);t=function(e,t){if(!t)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,otherElements:o}=Be(t);if(n||r>1){const{shared:r,perFrame:i}=Fe(n,a,e),s={elements:{...o,...r,...i}},l=Object.create(t);return Object.assign(l,s)}return t}(r,n)}else We[e]&&(t=We[e].dataSet);return t},update:function(e,t){const r=We[e];r?($e-=r.dataSet.byteArray.length,r.dataSet=t,$e+=t.byteArray.length,ht.cornerstone.triggerEvent(ht.cornerstone.events,"datasetscachechanged",{uri:e,action:"updated",cacheInfo:qe()})):console.error(`No loaded dataSet for uri ${e}`)}};function Ve(e,t){const r=e.string("x00080008");if(r){const e=r.split("\\");if(e.length>t)return e[t]}}function ze(e){let t=Ee(e,"x00200037",6);return!t&&e.elements.x00209116&&(t=Ee(e.elements.x00209116.items[0].dataSet,"x00200037",6)),t||(t=function(e){let t;if(e.string("x00080060").includes("NM")){const r=Ve(e,2);r&&w(r)&&e.elements.x00540022&&(t=Ee(e.elements.x00540022.items[0].dataSet,"x00200037",6))}return t}(e)),t}function He(e){let t=Ee(e,"x00200032",3);return!t&&e.elements.x00209113&&(t=Ee(e.elements.x00209113.items[0].dataSet,"x00200032",3)),t||(t=function(e){let t;if(e.string("x00080060").includes("NM")){const r=Ve(e,2);r&&w(r)&&e.elements.x00540022&&(t=Ee(e.elements.x00540022.items[0].dataSet,"x00200032",3))}return t}(e)),t}function Ye(e){let t=Ee(e,"x00280030",2);return!t&&e.elements.x00289110&&(t=Ee(e.elements.x00289110.items[0].dataSet,"x00280030",2)),t}function Qe(e){let t;return e.elements.x00180050?t=e.floatString("x00180050"):e.elements.x00289110&&e.elements.x00289110.items.length&&e.elements.x00289110.items[0].dataSet.elements.x00180050&&(t=e.elements.x00289110.items[0].dataSet.floatString("x00180050")),t}const Ke=function e(t,r){const{dicomParser:n}=ht;if(Array.isArray(r))return;const a=Me(r);if("multiframeModule"===t){const e=je.retrieveMultiframeDataset(a.url);if(!e.dataSet)return;const t=function(e,t){if(!e)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a}=Be(e);if(n||r>1){const{shared:e,perFrame:o}=Fe(n,a,t);return{NumberOfFrames:r,PerFrameFunctionalInformation:o,SharedFunctionalInformation:e}}return{NumberOfFrames:r}}(e.dataSet,e.frame);return t}let o=a.url;a.frame&&(o=`${o}&frame=${a.frame}`);const i=Ge.get(o);if(i){if("generalSeriesModule"===t)return{modality:i.string("x00080060"),seriesInstanceUID:i.string("x0020000e"),seriesNumber:i.intString("x00200011"),studyInstanceUID:i.string("x0020000d"),seriesDate:n.parseDA(i.string("x00080021")),seriesTime:n.parseTM(i.string("x00080031")||""),acquisitionDate:n.parseDA(i.string("x00080022")||""),acquisitionTime:n.parseTM(i.string("x00080032")||"")};if("patientStudyModule"===t)return{patientAge:i.intString("x00101010"),patientSize:i.floatString("x00101020"),patientWeight:i.floatString("x00101030")};if("imagePlaneModule"===t){const e=ze(i),t=He(i),r=Ye(i);let n;i.elements.x00200052&&(n=i.string("x00200052"));const a=Qe(i);let o;i.elements.x00201041&&(o=i.floatString("x00201041"));let s=null,l=null;r&&(l=r[0],s=r[1]);let c=null,u=null;return e&&(c=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],u=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:n,rows:i.uint16("x00280010"),columns:i.uint16("x00280011"),imageOrientationPatient:e,rowCosines:c,columnCosines:u,imagePositionPatient:t,sliceThickness:a,sliceLocation:o,pixelSpacing:r,rowPixelSpacing:l,columnPixelSpacing:s}}if("nmMultiframeGeometryModule"===t){const e=i.string("x00080060"),t=Ve(i,2);return{modality:e,imageType:i.string("x00080008"),imageSubType:t,imageOrientationPatient:ze(i),imagePositionPatient:He(i),sliceThickness:Qe(i),pixelSpacing:Ye(i),numberOfFrames:i.uint16("x00280008"),isNMReconstructable:w(t)&&e.includes("NM")}}if("imagePixelModule"===t)return Ce(i);if("modalityLutModule"===t)return{rescaleIntercept:i.floatString("x00281052"),rescaleSlope:i.floatString("x00281053"),rescaleType:i.string("x00281054"),modalityLUTSequence:_e(i.uint16("x00280103"),i.elements.x00283000)};if("voiLutModule"===t){const e=Ae(i);return{windowCenter:Ee(i,"x00281050",1),windowWidth:Ee(i,"x00281051",1),voiLUTSequence:_e(e,i.elements.x00283010)}}if("sopCommonModule"===t)return{sopClassUID:i.string("x00080016"),sopInstanceUID:i.string("x00080018")};if("petIsotopeModule"===t){const e=i.elements.x00540016;if(void 0===e)return;const t=e.items[0].dataSet;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:n.parseTM(t.string("x00181072")||""),radionuclideTotalDose:t.floatString("x00181074"),radionuclideHalfLife:t.floatString("x00181075")}}}return"overlayPlaneModule"===t?function(e){const t=[];for(let r=0;r<=30;r+=2){let n=`x60${r.toString(16)}`;4===n.length&&(n=`x600${r.toString(16)}`);const a=e.elements[`${n}3000`];if(!a)continue;const o=[];for(let t=0;t<a.length;t++)for(let r=0;r<8;r++){const n=e.byteArray[a.dataOffset+t];o[8*t+r]=n>>r&1}t.push({rows:e.uint16(`${n}0010`),columns:e.uint16(`${n}0011`),type:e.string(`${n}0040`),x:e.int16(`${n}0050`,1)-1,y:e.int16(`${n}0050`,0)-1,pixelData:o,description:e.string(`${n}0022`),label:e.string(`${n}1500`),roiArea:e.string(`${n}1301`),roiMean:e.string(`${n}1302`),roiStandardDeviation:e.string(`${n}1303`)})}return{overlays:t}}(i):"transferSyntax"===t?{transferSyntaxUID:i.string("x00020010")}:"petSeriesModule"===t?{correctedImage:i.string("x00280051"),units:i.string("x00541001"),decayCorrection:i.string("x00541102")}:"petImageModule"===t?{frameReferenceTime:i.floatString(i.string("x00541300")||""),actualFrameDuration:i.intString(i.string("x00181242"))}:"instance"===t?D(r,e,P):void 0}};let Je=[];const Xe={add:function(e){return"dicomfile:"+(Je.push(e)-1)},get:function(e){return Je[e]},remove:function(e){Je[e]=void 0},purge:function(){Je=[]}};var et=a(713);function tt(e,t){const{dicomParser:r}=ht;if(e.elements.x7fe00010&&e.elements.x7fe00010.basicOffsetTable.length)return r.readEncapsulatedImageFrame(e,e.elements.x7fe00010,t);if(function(e){return e.intString("x00280008")!==e.elements.x7fe00010.fragments.length}(e)){const n=r.createJPEGBasicOffsetTable(e,e.elements.x7fe00010);return r.readEncapsulatedImageFrame(e,e.elements.x7fe00010,t,n)}const n=e.elements.x7fe00010.fragments,a=new et.ByteStream(e.byteArrayParser,e.byteArray,e.elements.x7fe00010.dataOffset),o=(0,et.readSequenceItem)(a);if("xfffee000"!==o.tag)throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000";a.seek(o.length);const i=a.position;if(t+1>n.length)throw"dicomParser.readEncapsulatedPixelData: frame exceeds number of fragments";const s=i+n[t].offset+8,l=n[t].length;return new Uint8Array(a.byteArray.buffer.slice(a.byteArray.byteOffset+s,a.byteArray.byteOffset+s+l))}function rt(e,t){return e&1<<t}const nt=function(e,t,r){const n=new Uint8Array(r);for(let a=0;a<r;a++){const r=e[Math.floor(a/8)+t],o=a%8;n[a]=rt(r,o)?1:0}return n};const at=function(e,t){const r=e.elements.x7fe00010||e.elements.x7fe00008,n=e.uint16("x00280100"),a=e.uint16("x00280010"),o=e.uint16("x00280011");let i=e.uint16("x00280002");"YBR_FULL_422"===e.string("x00280004")&&(i=2,console.warn("Using SamplesPerPixel of 2 for YBR_FULL_422 photometric interpretation.\n See http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.3.html for more information."));const s=r.dataOffset,l=a*o*i;let c;if(8===n){if(c=s+t*l,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+l))}if(16===n){if(c=s+t*l*2,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+2*l))}if(1===n){if(c=s+t*l*.125,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return nt(e.byteArray,c,l)}if(32===n){if(c=s+t*l*4,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+4*l))}throw new Error("unsupported pixel format")};const ot=function(e){const t=Me(e),r=parseInt(t.url,10),n=Xe.get(r);return new Promise(((e,t)=>{const r=new FileReader;r.onload=t=>{const r=t.target.result;e(r)},r.onerror=t,r.readAsArrayBuffer(n)}))};const it=function(e,t=0){const r=e.elements.x7fe00010||e.elements.x7fe00008;return r?r.encapsulatedPixelData?tt(e,t):at(e,t):null};function st(e,t,r=0,n,a,o){const i=(new Date).getTime(),s={cancelFn:void 0,promise:void 0};return s.promise=new Promise(((l,c)=>{e.then((e=>{const u=it(e,r),d=e.string("x00020010"),f=(new Date).getTime(),m=xe(t,u,d,a);!function(e,t){e.decache=function(){const e=Me(t);Ge.unload(e.url)}}(s,t),m.then((t=>{t.data=e,t.sharedCacheKey=n;const r=(new Date).getTime();t.loadTimeInMS=f-i,t.totalTimeInMS=r-i,void 0!==o&&void 0!==o.imageDoneCallback&&o.imageDoneCallback(t),l(t)}),(function(t){c({error:t,dataSet:e})}))}),(function(e){c({error:e})}))})),s}function lt(e){return"dicomweb"===e||"wadouri"===e?O:"dicomfile"===e?ot:void 0}function ct(e,t={}){const r=Me(e);let n=(t=Object.assign({},t)).loader;if(void 0===n?n=lt(r.scheme):delete t.loader,Ge.isLoaded(r.url)){return function(e,t,r=0,n,a){const o=(new Date).getTime();return{promise:new Promise(((i,s)=>{const l=(new Date).getTime();let c;try{const n=it(e,r),o=e.string("x00020010");c=xe(t,n,o,a)}catch(t){return void s({error:t,dataSet:e})}c.then((t=>{t.data=e,t.sharedCacheKey=n;const r=(new Date).getTime();t.loadTimeInMS=l-o,t.totalTimeInMS=r-o,i(t)}),s)})),cancelFn:void 0}}(Ge.get(r.url,n,e),e,r.pixelDataFrame,r.url,t)}return st(Ge.load(r.url,n,e),e,r.frame,r.url,t)}const ut={metaData:{getImagePixelModule:Ce,getLUTs:_e,getModalityLUTOutputPixelRepresentation:Ae,getNumberValues:Ee,metaDataProvider:Ke},dataSetCacheManager:Ge,fileManager:Xe,getEncapsulatedImageFrame:tt,getUncompressedImageFrame:at,loadFileRequest:ot,loadImageFromPromise:st,getLoaderForScheme:lt,loadImage:ct,parseImageId:Me,unpackBinaryFrame:nt,register:function(e){e.registerImageLoader("dicomweb",ct),e.registerImageLoader("wadouri",ct),e.registerImageLoader("dicomfile",ct),e.metaData.addProvider(Ke)}};const dt=function(e){Te.register(e),ut.register(e)};let ft,mt;const gt={set cornerstone(e){ft=e,dt(ft)},get cornerstone(){if(!ft){if(ft=window&&window.cornerstone,!ft)throw new Error("cornerstoneDICOMImageLoader requires a copy of Cornerstone to work properly. Please add cornerstoneDICOMImageLoader.external.cornerstone = cornerstone; to your application.");dt(ft)}return ft},set dicomParser(e){mt=e},get dicomParser(){if(!mt){if(!window||!window.dicomParser)throw new Error("cornerstoneDICOMImageLoader requires a copy of dicomParser to work properly. Please add cornerstoneDICOMImageLoader.external.dicomParser = dicomParser; to your application.");mt=window.dicomParser}return mt}},ht=gt;function pt(e,t){const r=e.length,n=new Uint8ClampedArray(r);for(let a=0;a<r;++a)n[a]=e[a]>>t;return n}function bt(e,t,r){const n=e.columns*e.rows,a=e.pixelData;let o=e.redPaletteColorLookupTableData;o||(o=ht.cornerstone.metaData.get("imagePixelModule",e.imageId)?.redPaletteColorLookupTableData);let i=e.greenPaletteColorLookupTableData;i||(i=ht.cornerstone.metaData.get("imagePixelModule",e.imageId)?.greenPaletteColorLookupTableData);let s=e.bluePaletteColorLookupTableData;if(s||(s=ht.cornerstone.metaData.get("imagePixelModule",e.imageId)?.bluePaletteColorLookupTableData),!o||!i||!s)throw new Error("The image does not have a complete color palette. R, G, and B palette data are required.");const l=e.redPaletteColorLookupTableData.length;let c=0,u=0;const d=e.redPaletteColorLookupTableDescriptor[1],f=8===e.redPaletteColorLookupTableDescriptor[2]?0:8,m=pt(o,f),g=pt(i,f),h=pt(s,f);if(r)for(let e=0;e<n;++e){let e=a[c++];e<d?e=0:e>d+l-1?e=l-1:e-=d,t[u++]=m[e],t[u++]=g[e],t[u++]=h[e],t[u++]=255}else for(let e=0;e<n;++e){let e=a[c++];e<d?e=0:e>d+l-1?e=l-1:e-=d,t[u++]=m[e],t[u++]=g[e],t[u++]=h[e]}}const xt=function(e){E(e)};const wt=function(e,t){if(t=t||e.transferSyntax,8===e.bitsAllocated&&"1.2.840.10008.1.2.4.50"===t&&(3===e.samplesPerPixel||4===e.samplesPerPixel))return!0},yt={convertRGBColorByPixel:e,convertRGBColorByPlane:t,convertYBRFullByPixel:r,convertYBRFullByPlane:n,convertPALETTECOLOR:bt,wadouri:ut,wadors:Te,configure:xt,convertColorSpace:H,createImage:xe,decodeImageFrame:fe,decodeJPEGBaseline8BitColor:Q,getImageFrame:me,getPixelData:G,getMinMax:V,isColorImage:ge,isJPEGBaseline8BitColor:wt,webWorkerManager:ce,internal:R,external:gt}})(),o})()));
117734
+ !function(e,t){ true?module.exports=t(__webpack_require__(56959),__webpack_require__(56660)):0}(this,((e,t)=>(()=>{"use strict";var r={578:(e,t,r)=>{const n=r(823),a=r(187),o=r(592),i=r(604),s=r(249),l=r(968),c=Object.prototype.toString,{Z_NO_FLUSH:u,Z_FINISH:d,Z_OK:f,Z_STREAM_END:m,Z_NEED_DICT:g,Z_STREAM_ERROR:h,Z_DATA_ERROR:p,Z_MEM_ERROR:b}=r(684);function x(e){this.options=a.assign({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;let r=n.inflateInit2(this.strm,t.windowBits);if(r!==f)throw new Error(i[r]);if(this.header=new l,n.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=o.string2buf(t.dictionary):"[object ArrayBuffer]"===c.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(r=n.inflateSetDictionary(this.strm,t.dictionary),r!==f)))throw new Error(i[r])}function w(e,t){const r=new x(t);if(r.push(e),r.err)throw r.msg||i[r.err];return r.result}x.prototype.push=function(e,t){const r=this.strm,a=this.options.chunkSize,i=this.options.dictionary;let s,l,x;if(this.ended)return!1;for(l=t===~~t?t:!0===t?d:u,"[object ArrayBuffer]"===c.call(e)?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;;){for(0===r.avail_out&&(r.output=new Uint8Array(a),r.next_out=0,r.avail_out=a),s=n.inflate(r,l),s===g&&i&&(s=n.inflateSetDictionary(r,i),s===f?s=n.inflate(r,l):s===p&&(s=g));r.avail_in>0&&s===m&&r.state.wrap>0&&0!==e[r.next_in];)n.inflateReset(r),s=n.inflate(r,l);switch(s){case h:case p:case g:case b:return this.onEnd(s),this.ended=!0,!1}if(x=r.avail_out,r.next_out&&(0===r.avail_out||s===m))if("string"===this.options.to){let e=o.utf8border(r.output,r.next_out),t=r.next_out-e,n=o.buf2string(r.output,e);r.next_out=t,r.avail_out=a-t,t&&r.output.set(r.output.subarray(e,e+t),0),this.onData(n)}else this.onData(r.output.length===r.next_out?r.output:r.output.subarray(0,r.next_out));if(s!==f||0!==x){if(s===m)return s=n.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===r.avail_in)break}}return!0},x.prototype.onData=function(e){this.chunks.push(e)},x.prototype.onEnd=function(e){e===f&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=a.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},e.exports.Hq=function(e,t){return(t=t||{}).raw=!0,w(e,t)},r(684)},187:e=>{const t=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);e.exports.assign=function(e){const r=Array.prototype.slice.call(arguments,1);for(;r.length;){const n=r.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(const r in n)t(n,r)&&(e[r]=n[r])}}return e},e.exports.flattenChunks=e=>{let t=0;for(let r=0,n=e.length;r<n;r++)t+=e[r].length;const r=new Uint8Array(t);for(let t=0,n=0,a=e.length;t<a;t++){let a=e[t];r.set(a,n),n+=a.length}return r}},592:e=>{let t=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){t=!1}const r=new Uint8Array(256);for(let e=0;e<256;e++)r[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;r[254]=r[254]=1,e.exports.string2buf=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,r,n,a,o,i=e.length,s=0;for(a=0;a<i;a++)r=e.charCodeAt(a),55296==(64512&r)&&a+1<i&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),a++)),s+=r<128?1:r<2048?2:r<65536?3:4;for(t=new Uint8Array(s),o=0,a=0;o<s;a++)r=e.charCodeAt(a),55296==(64512&r)&&a+1<i&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),a++)),r<128?t[o++]=r:r<2048?(t[o++]=192|r>>>6,t[o++]=128|63&r):r<65536?(t[o++]=224|r>>>12,t[o++]=128|r>>>6&63,t[o++]=128|63&r):(t[o++]=240|r>>>18,t[o++]=128|r>>>12&63,t[o++]=128|r>>>6&63,t[o++]=128|63&r);return t};e.exports.buf2string=(e,n)=>{const a=n||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,n));let o,i;const s=new Array(2*a);for(i=0,o=0;o<a;){let t=e[o++];if(t<128){s[i++]=t;continue}let n=r[t];if(n>4)s[i++]=65533,o+=n-1;else{for(t&=2===n?31:3===n?15:7;n>1&&o<a;)t=t<<6|63&e[o++],n--;n>1?s[i++]=65533:t<65536?s[i++]=t:(t-=65536,s[i++]=55296|t>>10&1023,s[i++]=56320|1023&t)}}return((e,r)=>{if(r<65534&&e.subarray&&t)return String.fromCharCode.apply(null,e.length===r?e:e.subarray(0,r));let n="";for(let t=0;t<r;t++)n+=String.fromCharCode(e[t]);return n})(s,i)},e.exports.utf8border=(e,t)=>{(t=t||e.length)>e.length&&(t=e.length);let n=t-1;for(;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+r[e[n]]>t?n:t}},693:e=>{e.exports=(e,t,r,n)=>{let a=65535&e|0,o=e>>>16&65535|0,i=0;for(;0!==r;){i=r>2e3?2e3:r,r-=i;do{a=a+t[n++]|0,o=o+a|0}while(--i);a%=65521,o%=65521}return a|o<<16|0}},684:e=>{e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},863:e=>{const t=new Uint32Array((()=>{let e,t=[];for(var r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t})());e.exports=(e,r,n,a)=>{const o=t,i=a+n;e^=-1;for(let t=a;t<i;t++)e=e>>>8^o[255&(e^r[t])];return-1^e}},968:e=>{e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},365:e=>{const t=16209;e.exports=function(e,r){let n,a,o,i,s,l,c,u,d,f,m,g,h,p,b,x,w,y,k,v,S,D,T,P;const I=e.state;n=e.next_in,T=e.input,a=n+(e.avail_in-5),o=e.next_out,P=e.output,i=o-(r-e.avail_out),s=o+(e.avail_out-257),l=I.dmax,c=I.wsize,u=I.whave,d=I.wnext,f=I.window,m=I.hold,g=I.bits,h=I.lencode,p=I.distcode,b=(1<<I.lenbits)-1,x=(1<<I.distbits)-1;e:do{g<15&&(m+=T[n++]<<g,g+=8,m+=T[n++]<<g,g+=8),w=h[m&b];t:for(;;){if(y=w>>>24,m>>>=y,g-=y,y=w>>>16&255,0===y)P[o++]=65535&w;else{if(!(16&y)){if(0==(64&y)){w=h[(65535&w)+(m&(1<<y)-1)];continue t}if(32&y){I.mode=16191;break e}e.msg="invalid literal/length code",I.mode=t;break e}k=65535&w,y&=15,y&&(g<y&&(m+=T[n++]<<g,g+=8),k+=m&(1<<y)-1,m>>>=y,g-=y),g<15&&(m+=T[n++]<<g,g+=8,m+=T[n++]<<g,g+=8),w=p[m&x];r:for(;;){if(y=w>>>24,m>>>=y,g-=y,y=w>>>16&255,!(16&y)){if(0==(64&y)){w=p[(65535&w)+(m&(1<<y)-1)];continue r}e.msg="invalid distance code",I.mode=t;break e}if(v=65535&w,y&=15,g<y&&(m+=T[n++]<<g,g+=8,g<y&&(m+=T[n++]<<g,g+=8)),v+=m&(1<<y)-1,v>l){e.msg="invalid distance too far back",I.mode=t;break e}if(m>>>=y,g-=y,y=o-i,v>y){if(y=v-y,y>u&&I.sane){e.msg="invalid distance too far back",I.mode=t;break e}if(S=0,D=f,0===d){if(S+=c-y,y<k){k-=y;do{P[o++]=f[S++]}while(--y);S=o-v,D=P}}else if(d<y){if(S+=c+d-y,y-=d,y<k){k-=y;do{P[o++]=f[S++]}while(--y);if(S=0,d<k){y=d,k-=y;do{P[o++]=f[S++]}while(--y);S=o-v,D=P}}}else if(S+=d-y,y<k){k-=y;do{P[o++]=f[S++]}while(--y);S=o-v,D=P}for(;k>2;)P[o++]=D[S++],P[o++]=D[S++],P[o++]=D[S++],k-=3;k&&(P[o++]=D[S++],k>1&&(P[o++]=D[S++]))}else{S=o-v;do{P[o++]=P[S++],P[o++]=P[S++],P[o++]=P[S++],k-=3}while(k>2);k&&(P[o++]=P[S++],k>1&&(P[o++]=P[S++]))}break}}break}}while(n<a&&o<s);k=g>>3,n-=k,g-=k<<3,m&=(1<<g)-1,e.next_in=n,e.next_out=o,e.avail_in=n<a?a-n+5:5-(n-a),e.avail_out=o<s?s-o+257:257-(o-s),I.hold=m,I.bits=g}},823:(e,t,r)=>{const n=r(693),a=r(863),o=r(365),i=r(446),{Z_FINISH:s,Z_BLOCK:l,Z_TREES:c,Z_OK:u,Z_STREAM_END:d,Z_NEED_DICT:f,Z_STREAM_ERROR:m,Z_DATA_ERROR:g,Z_MEM_ERROR:h,Z_BUF_ERROR:p,Z_DEFLATED:b}=r(684),x=16180,w=16190,y=16191,k=16192,v=16194,S=16199,D=16200,T=16206,P=16209,I=16210,C=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function L(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const _=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode<x||t.mode>16211?1:0},A=e=>{if(_(e))return m;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=x,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,u},E=e=>{if(_(e))return m;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,A(e)},M=(e,t)=>{let r;if(_(e))return m;const n=e.state;return t<0?(r=0,t=-t):(r=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?m:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,E(e))},O=(e,t)=>{if(!e)return m;const r=new L;e.state=r,r.strm=e,r.window=null,r.mode=x;const n=M(e,t);return n!==u&&(e.state=null),n};let R,F,B=!0;const U=e=>{if(B){R=new Int32Array(512),F=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(i(1,e.lens,0,288,R,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;i(2,e.lens,0,32,F,0,e.work,{bits:5}),B=!1}e.lencode=R,e.lenbits=9,e.distcode=F,e.distbits=5},N=(e,t,r,n)=>{let a;const o=e.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new Uint8Array(o.wsize)),n>=o.wsize?(o.window.set(t.subarray(r-o.wsize,r),0),o.wnext=0,o.whave=o.wsize):(a=o.wsize-o.wnext,a>n&&(a=n),o.window.set(t.subarray(r-n,r-n+a),o.wnext),(n-=a)?(o.window.set(t.subarray(r-n,r),0),o.wnext=n,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=a))),0};e.exports.inflateReset=E,e.exports.inflateReset2=M,e.exports.inflateResetKeep=A,e.exports.inflateInit=e=>O(e,15),e.exports.inflateInit2=O,e.exports.inflate=(e,t)=>{let r,L,A,E,M,O,R,F,B,j,$,W,Z,q,G,V,z,H,Y,Q,K,J,X=0;const ee=new Uint8Array(4);let te,re;const ne=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(_(e)||!e.output||!e.input&&0!==e.avail_in)return m;r=e.state,r.mode===y&&(r.mode=k),M=e.next_out,A=e.output,R=e.avail_out,E=e.next_in,L=e.input,O=e.avail_in,F=r.hold,B=r.bits,j=O,$=R,J=u;e:for(;;)switch(r.mode){case x:if(0===r.wrap){r.mode=k;break}for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(2&r.wrap&&35615===F){0===r.wbits&&(r.wbits=15),r.check=0,ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0),F=0,B=0,r.mode=16181;break}if(r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&F)<<8)+(F>>8))%31){e.msg="incorrect header check",r.mode=P;break}if((15&F)!==b){e.msg="unknown compression method",r.mode=P;break}if(F>>>=4,B-=4,K=8+(15&F),0===r.wbits&&(r.wbits=K),K>15||K>r.wbits){e.msg="invalid window size",r.mode=P;break}r.dmax=1<<r.wbits,r.flags=0,e.adler=r.check=1,r.mode=512&F?16189:y,F=0,B=0;break;case 16181:for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(r.flags=F,(255&r.flags)!==b){e.msg="unknown compression method",r.mode=P;break}if(57344&r.flags){e.msg="unknown header flags set",r.mode=P;break}r.head&&(r.head.text=F>>8&1),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0,r.mode=16182;case 16182:for(;B<32;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.head&&(r.head.time=F),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,ee[2]=F>>>16&255,ee[3]=F>>>24&255,r.check=a(r.check,ee,4,0)),F=0,B=0,r.mode=16183;case 16183:for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.head&&(r.head.xflags=255&F,r.head.os=F>>8),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0,r.mode=16184;case 16184:if(1024&r.flags){for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.length=F,r.head&&(r.head.extra_len=F),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0}else r.head&&(r.head.extra=null);r.mode=16185;case 16185:if(1024&r.flags&&(W=r.length,W>O&&(W=O),W&&(r.head&&(K=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(L.subarray(E,E+W),K)),512&r.flags&&4&r.wrap&&(r.check=a(r.check,L,W,E)),O-=W,E+=W,r.length-=W),r.length))break e;r.length=0,r.mode=16186;case 16186:if(2048&r.flags){if(0===O)break e;W=0;do{K=L[E+W++],r.head&&K&&r.length<65536&&(r.head.name+=String.fromCharCode(K))}while(K&&W<O);if(512&r.flags&&4&r.wrap&&(r.check=a(r.check,L,W,E)),O-=W,E+=W,K)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=16187;case 16187:if(4096&r.flags){if(0===O)break e;W=0;do{K=L[E+W++],r.head&&K&&r.length<65536&&(r.head.comment+=String.fromCharCode(K))}while(K&&W<O);if(512&r.flags&&4&r.wrap&&(r.check=a(r.check,L,W,E)),O-=W,E+=W,K)break e}else r.head&&(r.head.comment=null);r.mode=16188;case 16188:if(512&r.flags){for(;B<16;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(4&r.wrap&&F!==(65535&r.check)){e.msg="header crc mismatch",r.mode=P;break}F=0,B=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=y;break;case 16189:for(;B<32;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}e.adler=r.check=C(F),F=0,B=0,r.mode=w;case w:if(0===r.havedict)return e.next_out=M,e.avail_out=R,e.next_in=E,e.avail_in=O,r.hold=F,r.bits=B,f;e.adler=r.check=1,r.mode=y;case y:if(t===l||t===c)break e;case k:if(r.last){F>>>=7&B,B-=7&B,r.mode=T;break}for(;B<3;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}switch(r.last=1&F,F>>>=1,B-=1,3&F){case 0:r.mode=16193;break;case 1:if(U(r),r.mode=S,t===c){F>>>=2,B-=2;break e}break;case 2:r.mode=16196;break;case 3:e.msg="invalid block type",r.mode=P}F>>>=2,B-=2;break;case 16193:for(F>>>=7&B,B-=7&B;B<32;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if((65535&F)!=(F>>>16^65535)){e.msg="invalid stored block lengths",r.mode=P;break}if(r.length=65535&F,F=0,B=0,r.mode=v,t===c)break e;case v:r.mode=16195;case 16195:if(W=r.length,W){if(W>O&&(W=O),W>R&&(W=R),0===W)break e;A.set(L.subarray(E,E+W),M),O-=W,E+=W,R-=W,M+=W,r.length-=W;break}r.mode=y;break;case 16196:for(;B<14;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(r.nlen=257+(31&F),F>>>=5,B-=5,r.ndist=1+(31&F),F>>>=5,B-=5,r.ncode=4+(15&F),F>>>=4,B-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=P;break}r.have=0,r.mode=16197;case 16197:for(;r.have<r.ncode;){for(;B<3;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.lens[ne[r.have++]]=7&F,F>>>=3,B-=3}for(;r.have<19;)r.lens[ne[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,te={bits:r.lenbits},J=i(0,r.lens,0,19,r.lencode,0,r.work,te),r.lenbits=te.bits,J){e.msg="invalid code lengths set",r.mode=P;break}r.have=0,r.mode=16198;case 16198:for(;r.have<r.nlen+r.ndist;){for(;X=r.lencode[F&(1<<r.lenbits)-1],G=X>>>24,V=X>>>16&255,z=65535&X,!(G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(z<16)F>>>=G,B-=G,r.lens[r.have++]=z;else{if(16===z){for(re=G+2;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(F>>>=G,B-=G,0===r.have){e.msg="invalid bit length repeat",r.mode=P;break}K=r.lens[r.have-1],W=3+(3&F),F>>>=2,B-=2}else if(17===z){for(re=G+3;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}F>>>=G,B-=G,K=0,W=3+(7&F),F>>>=3,B-=3}else{for(re=G+7;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}F>>>=G,B-=G,K=0,W=11+(127&F),F>>>=7,B-=7}if(r.have+W>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=P;break}for(;W--;)r.lens[r.have++]=K}}if(r.mode===P)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=P;break}if(r.lenbits=9,te={bits:r.lenbits},J=i(1,r.lens,0,r.nlen,r.lencode,0,r.work,te),r.lenbits=te.bits,J){e.msg="invalid literal/lengths set",r.mode=P;break}if(r.distbits=6,r.distcode=r.distdyn,te={bits:r.distbits},J=i(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,te),r.distbits=te.bits,J){e.msg="invalid distances set",r.mode=P;break}if(r.mode=S,t===c)break e;case S:r.mode=D;case D:if(O>=6&&R>=258){e.next_out=M,e.avail_out=R,e.next_in=E,e.avail_in=O,r.hold=F,r.bits=B,o(e,$),M=e.next_out,A=e.output,R=e.avail_out,E=e.next_in,L=e.input,O=e.avail_in,F=r.hold,B=r.bits,r.mode===y&&(r.back=-1);break}for(r.back=0;X=r.lencode[F&(1<<r.lenbits)-1],G=X>>>24,V=X>>>16&255,z=65535&X,!(G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(V&&0==(240&V)){for(H=G,Y=V,Q=z;X=r.lencode[Q+((F&(1<<H+Y)-1)>>H)],G=X>>>24,V=X>>>16&255,z=65535&X,!(H+G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}F>>>=H,B-=H,r.back+=H}if(F>>>=G,B-=G,r.back+=G,r.length=z,0===V){r.mode=16205;break}if(32&V){r.back=-1,r.mode=y;break}if(64&V){e.msg="invalid literal/length code",r.mode=P;break}r.extra=15&V,r.mode=16201;case 16201:if(r.extra){for(re=r.extra;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.length+=F&(1<<r.extra)-1,F>>>=r.extra,B-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=16202;case 16202:for(;X=r.distcode[F&(1<<r.distbits)-1],G=X>>>24,V=X>>>16&255,z=65535&X,!(G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(0==(240&V)){for(H=G,Y=V,Q=z;X=r.distcode[Q+((F&(1<<H+Y)-1)>>H)],G=X>>>24,V=X>>>16&255,z=65535&X,!(H+G<=B);){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}F>>>=H,B-=H,r.back+=H}if(F>>>=G,B-=G,r.back+=G,64&V){e.msg="invalid distance code",r.mode=P;break}r.offset=z,r.extra=15&V,r.mode=16203;case 16203:if(r.extra){for(re=r.extra;B<re;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}r.offset+=F&(1<<r.extra)-1,F>>>=r.extra,B-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=P;break}r.mode=16204;case 16204:if(0===R)break e;if(W=$-R,r.offset>W){if(W=r.offset-W,W>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=P;break}W>r.wnext?(W-=r.wnext,Z=r.wsize-W):Z=r.wnext-W,W>r.length&&(W=r.length),q=r.window}else q=A,Z=M-r.offset,W=r.length;W>R&&(W=R),R-=W,r.length-=W;do{A[M++]=q[Z++]}while(--W);0===r.length&&(r.mode=D);break;case 16205:if(0===R)break e;A[M++]=r.length,R--,r.mode=D;break;case T:if(r.wrap){for(;B<32;){if(0===O)break e;O--,F|=L[E++]<<B,B+=8}if($-=R,e.total_out+=$,r.total+=$,4&r.wrap&&$&&(e.adler=r.check=r.flags?a(r.check,A,$,M-$):n(r.check,A,$,M-$)),$=R,4&r.wrap&&(r.flags?F:C(F))!==r.check){e.msg="incorrect data check",r.mode=P;break}F=0,B=0}r.mode=16207;case 16207:if(r.wrap&&r.flags){for(;B<32;){if(0===O)break e;O--,F+=L[E++]<<B,B+=8}if(4&r.wrap&&F!==(4294967295&r.total)){e.msg="incorrect length check",r.mode=P;break}F=0,B=0}r.mode=16208;case 16208:J=d;break e;case P:J=g;break e;case I:return h;default:return m}return e.next_out=M,e.avail_out=R,e.next_in=E,e.avail_in=O,r.hold=F,r.bits=B,(r.wsize||$!==e.avail_out&&r.mode<P&&(r.mode<T||t!==s))&&N(e,e.output,e.next_out,$-e.avail_out)?(r.mode=I,h):(j-=e.avail_in,$-=e.avail_out,e.total_in+=j,e.total_out+=$,r.total+=$,4&r.wrap&&$&&(e.adler=r.check=r.flags?a(r.check,A,$,e.next_out-$):n(r.check,A,$,e.next_out-$)),e.data_type=r.bits+(r.last?64:0)+(r.mode===y?128:0)+(r.mode===S||r.mode===v?256:0),(0===j&&0===$||t===s)&&J===u&&(J=p),J)},e.exports.inflateEnd=e=>{if(_(e))return m;let t=e.state;return t.window&&(t.window=null),e.state=null,u},e.exports.inflateGetHeader=(e,t)=>{if(_(e))return m;const r=e.state;return 0==(2&r.wrap)?m:(r.head=t,t.done=!1,u)},e.exports.inflateSetDictionary=(e,t)=>{const r=t.length;let a,o,i;return _(e)?m:(a=e.state,0!==a.wrap&&a.mode!==w?m:a.mode===w&&(o=1,o=n(o,t,r,0),o!==a.check)?g:(i=N(e,t,r,r),i?(a.mode=I,h):(a.havedict=1,u)))},e.exports.inflateInfo="pako inflate (from Nodeca project)"},446:e=>{const t=15,r=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),n=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),a=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),o=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);e.exports=(e,i,s,l,c,u,d,f)=>{const m=f.bits;let g,h,p,b,x,w,y=0,k=0,v=0,S=0,D=0,T=0,P=0,I=0,C=0,L=0,_=null;const A=new Uint16Array(16),E=new Uint16Array(16);let M,O,R,F=null;for(y=0;y<=t;y++)A[y]=0;for(k=0;k<l;k++)A[i[s+k]]++;for(D=m,S=t;S>=1&&0===A[S];S--);if(D>S&&(D=S),0===S)return c[u++]=20971520,c[u++]=20971520,f.bits=1,0;for(v=1;v<S&&0===A[v];v++);for(D<v&&(D=v),I=1,y=1;y<=t;y++)if(I<<=1,I-=A[y],I<0)return-1;if(I>0&&(0===e||1!==S))return-1;for(E[1]=0,y=1;y<t;y++)E[y+1]=E[y]+A[y];for(k=0;k<l;k++)0!==i[s+k]&&(d[E[i[s+k]]++]=k);if(0===e?(_=F=d,w=20):1===e?(_=r,F=n,w=257):(_=a,F=o,w=0),L=0,k=0,y=v,x=u,T=D,P=0,p=-1,C=1<<D,b=C-1,1===e&&C>852||2===e&&C>592)return 1;for(;;){M=y-P,d[k]+1<w?(O=0,R=d[k]):d[k]>=w?(O=F[d[k]-w],R=_[d[k]-w]):(O=96,R=0),g=1<<y-P,h=1<<T,v=h;do{h-=g,c[x+(L>>P)+h]=M<<24|O<<16|R|0}while(0!==h);for(g=1<<y-1;L&g;)g>>=1;if(0!==g?(L&=g-1,L+=g):L=0,k++,0==--A[y]){if(y===S)break;y=i[s+d[k]]}if(y>D&&(L&b)!==p){for(0===P&&(P=D),x+=v,T=y-P,I=1<<T;T+P<S&&(I-=A[T+P],!(I<=0));)T++,I<<=1;if(C+=1<<T,1===e&&C>852||2===e&&C>592)return 1;p=L&b,c[p]=D<<24|T<<16|x-u|0}}return 0!==L&&(c[x+L]=y-P<<24|64<<16|0),f.bits=D,0}},604:e=>{e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},249:e=>{e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},464:t=>{t.exports=e},713:e=>{e.exports=t}},n={};function a(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,a),o.exports}a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&!e;)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})();var o={};return(()=>{function e(e,t,r){if(void 0===e)throw new Error("decodeRGB: rgbBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: rgbBuffer length must be divisible by 3");const n=e.length/3;let a=0,o=0;if(r)for(let r=0;r<n;r++)t[o++]=e[a++],t[o++]=e[a++],t[o++]=e[a++],t[o++]=255;else t.set(e)}function t(e,t,r){if(void 0===e)throw new Error("decodeRGB: rgbBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: rgbBuffer length must be divisible by 3");const n=e.length/3;let a=0,o=0,i=n,s=2*n;if(r)for(let r=0;r<n;r++)t[a++]=e[o++],t[a++]=e[i++],t[a++]=e[s++],t[a++]=255;else for(let r=0;r<n;r++)t[a++]=e[o++],t[a++]=e[i++],t[a++]=e[s++]}function r(e,t,r){if(void 0===e)throw new Error("decodeRGB: ybrBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: ybrBuffer length must be divisble by 3");const n=e.length/3;let a=0,o=0;if(r)for(let r=0;r<n;r++){const r=e[a++],n=e[a++],i=e[a++];t[o++]=r+1.402*(i-128),t[o++]=r-.34414*(n-128)-.71414*(i-128),t[o++]=r+1.772*(n-128),t[o++]=255}else for(let r=0;r<n;r++){const r=e[a++],n=e[a++],i=e[a++];t[o++]=r+1.402*(i-128),t[o++]=r-.34414*(n-128)-.71414*(i-128),t[o++]=r+1.772*(n-128)}}function n(e,t,r){if(void 0===e)throw new Error("decodeRGB: ybrBuffer must not be undefined");if(e.length%3!=0)throw new Error("decodeRGB: ybrBuffer length must be divisble by 3");const n=e.length/3;let a=0,o=0,i=n,s=2*n;if(r)for(let r=0;r<n;r++){const r=e[o++],n=e[i++],l=e[s++];t[a++]=r+1.402*(l-128),t[a++]=r-.34414*(n-128)-.71414*(l-128),t[a++]=r+1.772*(n-128),t[a++]=255}else for(let r=0;r<n;r++){const r=e[o++],n=e[i++],l=e[s++];t[a++]=r+1.402*(l-128),t[a++]=r-.34414*(n-128)-.71414*(l-128),t[a++]=r+1.772*(n-128)}}a.r(o),a.d(o,{configure:()=>xt,convertColorSpace:()=>H,convertPALETTECOLOR:()=>bt,convertRGBColorByPixel:()=>e,convertRGBColorByPlane:()=>t,convertYBRFullByPixel:()=>r,convertYBRFullByPlane:()=>n,createImage:()=>xe,decodeImageFrame:()=>fe,decodeJPEGBaseline8BitColor:()=>Q,default:()=>yt,external:()=>ht,getImageFrame:()=>me,getMinMax:()=>V,getPixelData:()=>G,internal:()=>R,isColorImage:()=>ge,isJPEGBaseline8BitColor:()=>wt,wadors:()=>Te,wadouri:()=>ut,webWorkerManager:()=>ce});const i=function(e,t,r){return t=t||0,e&&e.Value?e.Value.length<=t?r:e.Value[t]:r};const s=function(e,t,r){const n=i(e,t,r);if(void 0!==n)return parseFloat(n)};const l=function(e,t){const r=i(e,t);if(void 0!==r)return parseFloat(r)};const c=function(e,t){if(!e)return;if(!e.Value)return;if(!Array.isArray(e.Value))return;if(t&&e.Value.length<t)return;const r=[];for(let t=0;t<e.Value.length;t++)r.push(parseFloat(e.Value[t]));return r};function u(e){const t=e.indexOf(":");return e.substring(t+1)}function d(e,t=!0){return e&&e.Value?e.Value[0]&&t?e.Value[0]:e.Value:e}function f(e,t,r){return{shared:(t?Object.values(t[0]):[]).map((e=>e[0])).filter((e=>void 0!==e&&"object"==typeof e)),perFrame:(e?Object.values(e[r-1]):[]).map((e=>e.Value[0])).filter((e=>void 0!==e&&"object"==typeof e))}}function m(e){let{52009230:t,52009229:r,"00280008":n,...a}=e;return t=d(t,!1),r=d(r,!1),n=d(n),{PerFrameFunctionalGroupsSequence:t,SharedFunctionalGroupsSequence:r,NumberOfFrames:n,rest:a}}function g(e){const t=e.indexOf("/frames/")+8,r=e.slice(0,t),n=parseInt(e.slice(t),10);return{metadata:p[`${r}1`],frame:n}}const h={_retrieveMultiframeMetadata:g,retrieveMultiframeMetadata:function(e){return g(u(e))},isMultiframe:function(e){const t=i(e["00280008"]);return t&&t>1}};let p=[],b={};const x={add:function(e,t){const r=u(e);t.isMultiframe=h.isMultiframe(t),p[r]=t},get:function(e){const t=u(e),r=p[t];if(r&&!r?.isMultiframe)return r;const n=b[t];if(n)return n;const a=h._retrieveMultiframeMetadata(t);if(!a||!a.metadata)return;const{metadata:o,frame:i}=a;if(o){const e=function(e,t){const{PerFrameFunctionalGroupsSequence:r,SharedFunctionalGroupsSequence:n,NumberOfFrames:a,rest:o}=m(t);if(r||a>1){const{shared:i,perFrame:s}=f(r,n,e),l=Object.assign(t,{frameNumber:e});return[...i,...s].forEach((e=>{Object.entries(e).forEach((([e,t])=>{l[e]=t}))})),Object.assign(o,{"00280008":a},l)}return t}(i,o);return b[t]=e,e}},remove:function(e){const t=u(e);p[t]=void 0,b[t]=void 0},purge:function(){p=[],b={}}};function w(e){return"RECON TOMO"===e||"RECON GATED TOMO"===e}function y(e){return i(e["00080060"]).includes("NM")}function k(e,t){const r=d(e["00080008"],!1);if(r)return r[t]}function v(e){let t=c(e["00200037"],6);return!t&&y(e)&&(t=function(e){let t;const r=k(e,2);if(r&&w(r)){const r=d(e["00540022"]);r&&(t=c(r["00200037"],6))}return t}(e)),t}function S(e){let t=c(e["00200032"],3);return!t&&y(e)&&(t=function(e){let t;const r=k(e,2);if(r&&w(r)){const r=d(e["00540022"]);r&&(t=c(r["00200032"],3))}return t}(e)),t}function D(e,t,r){const n={};for(const a of r)try{const r=t(a,e);if(r){const e={};for(const t in r)if(t in r){e[T(t)]=r[t]}Object.assign(n,e)}}catch(e){console.error(`Error retrieving ${a} data:`,e)}return n}const T=e=>e.charAt(0).toUpperCase()+e.slice(1),P=["multiframeModule","generalSeriesModule","patientStudyModule","imagePlaneModule","nmMultiframeGeometryModule","imagePixelModule","modalityLutModule","voiLutModule","sopCommonModule","petIsotopeModule","overlayPlaneModule","transferSyntax","petSeriesModule","petImageModule"];function I(e,t){return{transferSyntaxUID:i(t["00020010"])||i(t["00083002"])}}const C=function e(t,r){const{MetadataModules:n}=ht.cornerstone.Enums;if(t===n.MULTIFRAME){const{metadata:e,frame:t}=h.retrieveMultiframeMetadata(r);if(!e)return;const{PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,NumberOfFrames:o}=m(e);if(n||o>1){const{shared:e,perFrame:r}=f(n,a,t);return{NumberOfFrames:o,PerFrameFunctionalInformation:r,SharedFunctionalInformation:e}}return{NumberOfFrames:o}}const{dicomParser:a}=ht,o=x.get(r);if(o){if(t===n.GENERAL_SERIES)return{modality:i(o["00080060"]),seriesInstanceUID:i(o["0020000E"]),seriesNumber:l(o["00200011"]),studyInstanceUID:i(o["0020000D"]),seriesDate:a.parseDA(i(o["00080021"])),seriesTime:a.parseTM(i(o["00080031"],0,"")),acquisitionDate:a.parseDA(i(o["00080022"]),""),acquisitionTime:a.parseTM(i(o["00080032"],0,""))};if(t===n.PATIENT_STUDY)return{patientAge:l(o["00101010"]),patientSize:l(o["00101020"]),patientSex:i(o["00100040"]),patientWeight:l(o["00101030"])};if(t===n.NM_MULTIFRAME_GEOMETRY){const e=i(o["00080060"]),t=k(o,2);return{modality:e,imageType:i(o["00080008"]),imageSubType:t,imageOrientationPatient:v(o),imagePositionPatient:S(o),sliceThickness:l(o["00180050"]),pixelSpacing:c(o["00280030"],2),numberOfFrames:l(o["00280008"]),isNMReconstructable:w(t)&&e.includes("NM")}}if(t===n.IMAGE_PLANE){const e=v(o),t=S(o),r=c(o["00280030"],2);let n=null,a=null;r&&(a=r[0],n=r[1]);let s=null,u=null;return e&&(s=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],u=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:i(o["00200052"]),rows:l(o["00280010"]),columns:l(o["00280011"]),imageOrientationPatient:e,rowCosines:s,columnCosines:u,imagePositionPatient:t,sliceThickness:l(o["00180050"]),sliceLocation:l(o["00201041"]),pixelSpacing:r,rowPixelSpacing:a,columnPixelSpacing:n}}if(t===n.IMAGE_URL)return function(e,t){const{transferSyntaxUID:r}=I(e,t),n=ht.cornerstone.utilities.isVideoTransferSyntax(r),a=e.substring(7),o=a.replace("/frames/","/thumbnail/");let i=a.replace("/frames/","/rendered/");n&&(i=i.replace("/rendered/1","/rendered"));return{isVideo:n,rendered:i,thumbnail:o}}(r,o);if(t===n.CINE)return function(e,t){const r=i(t["00180040"]);return{cineRate:r,numberOfFrames:l(t["00280008"])}}(0,o);if("imagePixelModule"===t)return{samplesPerPixel:l(o["00280002"]),photometricInterpretation:i(o["00280004"]),rows:l(o["00280010"]),columns:l(o["00280011"]),bitsAllocated:l(o["00280100"]),bitsStored:l(o["00280101"]),highBit:i(o["00280102"]),pixelRepresentation:l(o["00280103"]),planarConfiguration:l(o["00280006"]),pixelAspectRatio:i(o["00280034"]),smallestPixelValue:l(o["00280106"]),largestPixelValue:l(o["00280107"]),redPaletteColorLookupTableDescriptor:c(o["00281101"]),greenPaletteColorLookupTableDescriptor:c(o["00281102"]),bluePaletteColorLookupTableDescriptor:c(o["00281103"]),redPaletteColorLookupTableData:c(o["00281201"]),greenPaletteColorLookupTableData:c(o["00281202"]),bluePaletteColorLookupTableData:c(o["00281203"])};if("voiLutModule"===t)return{windowCenter:c(o["00281050"],1),windowWidth:c(o["00281051"],1)};if("modalityLutModule"===t)return{rescaleIntercept:l(o["00281052"]),rescaleSlope:l(o["00281053"]),rescaleType:i(o["00281054"])};if("sopCommonModule"===t)return{sopClassUID:i(o["00080016"]),sopInstanceUID:i(o["00080018"])};if("petIsotopeModule"===t){const e=i(o["00540016"]);if(void 0===e)return;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:a.parseTM(i(e["00181072"],0,"")),radiopharmaceuticalStartDateTime:i(e["00181078"],0,""),radionuclideTotalDose:l(e["00181074"]),radionuclideHalfLife:l(e["00181075"])}}}return"overlayPlaneModule"===t?function(e){const t=[];for(let r=0;r<=30;r+=2){let n=`x60${r.toString(16)}`;4===n.length&&(n=`x600${r.toString(16)}`);const a=i(e[`${n}3000`]);if(!a)continue;const o=[];for(let t=0;t<a.length;t++)for(let r=0;r<8;r++){const n=e.Value[a.dataOffset+t];o[8*t+r]=n>>r&1}t.push({rows:l(e[`${n}0010`]),columns:l(e[`${n}0011`]),type:i(e[`${n}0040`]),x:l(e[`${n}0050`],1)-1,y:l(e[`${n}0050`],0)-1,pixelData:o,description:i(e[`${n}0022`]),label:i(e[`${n}1500`]),roiArea:i(e[`${n}1301`]),roiMean:i(e[`${n}1302`]),roiStandardDeviation:i(e[`${n}1303`])})}return{overlays:t}}(o):"transferSyntax"===t?I(r,o):"petSeriesModule"===t?{correctedImage:i(o["00280051"]),units:i(o["00541001"]),decayCorrection:i(o["00541102"])}:"petImageModule"===t?{frameReferenceTime:l(o["00541300"]),actualFrameDuration:l(o["00181242"])}:"instance"===t?D(r,e,P):void 0}};function L(e,t,r){if(r+e.length>t.length)return!1;let n=r;for(let r=0;r<e.length;r++)if(e[r]!==t[n++])return!1;return!0}const _=function(e,t,r){r=r||0;const n=function(e){const t=new Uint8Array(e.length);for(let r=0,n=e.length;r<n;r++)t[r]=e.charCodeAt(r);return t}(t);for(let t=r;t<e.length;t++)if(n[0]===e[t]&&L(n,e,t))return t;return-1};let A={open(e,t){e.open("get",t,!0)},beforeSend(){},beforeProcessing:e=>Promise.resolve(e.response),imageCreated(){},strict:!1,decodeConfig:{convertFloatPixelDataToInt:!0,use16BitDataType:!1}};function E(e){A=Object.assign(A,e)}function M(){return A}const O=function(e,t,r={},n={}){const{cornerstone:a}=ht,o=M(),i=e=>{if("function"==typeof o.errorInterceptor){const t=new Error("request failed");t.request=e,t.response=e.response,t.status=e.status,o.errorInterceptor(t)}},s=new XMLHttpRequest,l=new Promise(((l,c)=>{o.open(s,e,r,n);const u=o.beforeSend(s,t,r,n);s.responseType="arraybuffer";const d=Object.assign({},r,u);Object.keys(d).forEach((function(t){null!==d[t]&&("Accept"===t&&-1!==e.indexOf("accept=")||s.setRequestHeader(t,d[t]))})),n.deferred={resolve:l,reject:c},n.url=e,n.imageId=t,s.onloadstart=function(r){o.onloadstart&&o.onloadstart(r,n);const i={url:e,imageId:t};a.triggerEvent(a.events,"cornerstoneimageloadstart",i)},s.onloadend=function(r){o.onloadend&&o.onloadend(r,n);const i={url:e,imageId:t};a.triggerEvent(a.events,"cornerstoneimageloadend",i)},s.onreadystatechange=function(e){o.onreadystatechange?o.onreadystatechange(e,n):4===s.readyState&&(200===s.status||206===s.status?o.beforeProcessing(s).then(l).catch((()=>{i(s),c(s)})):(i(s),c(s)))},s.onprogress=function(e){const t=e.loaded;let r,a;e.lengthComputable&&(r=e.total,a=Math.round(t/r*100)),o.onprogress&&o.onprogress(e,n)},s.onerror=function(){i(s),c(s)},s.onabort=function(){i(s),c(s)},s.send()}));return l.xhr=s,l},R={xhrRequest:O,setOptions:E,getOptions:M};var F=a(464);const{ImageQualityStatus:B}=F.Enums;function U(e,t,r){r||={};const n=new Uint8Array(t),a=!!r?.isPartial;if(-1===e.indexOf("multipart"))return{contentType:e,imageQualityStatus:a?B.SUBRESOLUTION:B.FULL_RESOLUTION,pixelData:n};let{tokenIndex:o,responseHeaders:i,boundary:s,multipartContentType:l}=r;if(o||=_(n,"\r\n\r\n"),-1===o)throw new Error("invalid response - no multipart mime header");if(!s){const e=function(e,t,r){t=t||0,r=r||e.length-t;let n="";for(let a=t;a<t+r;a++)n+=String.fromCharCode(e[a]);return n}(n,0,o);if(i=e.split("\r\n"),s=function(e){for(let t=0;t<e.length;t++)if("--"===e[t].substr(0,2))return e[t]}(i),!s)throw new Error("invalid response - no boundary marker")}const c=o+4,u=_(n,s,c);if(-1===u&&!a)throw new Error("invalid response - terminating boundary not found");return l||=function(e){for(let t=0;t<e.length;t++)if("Content-Type:"===e[t].substr(0,13))return e[t].substr(13).trim()}(i),r.tokenIndex=o,r.boundary=s,r.responseHeaders=i,r.multipartContentType=l,r.isPartial=-1===u,{contentType:l,extractDone:!a||-1!==u,tokenIndex:o,responseHeaders:i,boundary:s,multipartContentType:l,pixelData:t.slice(c,u-2)}}const{ImageQualityStatus:N}=F.Enums;function j(e,t=!0){return t?e.imageQualityStatus??N.FULL_RESOLUTION:N.SUBRESOLUTION}const{ProgressiveIterator:$}=F.utilities;function W(e,t,r={},n={}){const a=M(),{retrieveOptions:o={},streamingData:i={}}=n,s=o.minChunkSize||131072,l=new $("streamRequest");return l.generate((async(n,l)=>{const c=Object.assign({},r);Object.keys(c).forEach((function(t){null===c[t]&&(c[t]=void 0),"Accept"===t&&-1!==e.indexOf("accept=")&&(c[t]=void 0)}));try{const a=await fetch(e,{headers:r,signal:void 0});if(200!==a.status)throw new Error(`Couldn't retrieve ${e} got status ${a.status}`);const l=a.body.getReader(),c=a.headers,u=c.get("content-type"),d=Number(c.get("Content-Length"));let f=!1,m=i.encodedData,g=i.lastSize||0;for(i.isPartial=!0;!f;){const{done:r,value:a}=await l.read();if(m=Z(m,a),!m){if(f)throw new Error(`Done but no image frame available ${t}`);continue}if(f=r||m.byteLength===d,!f&&m.length<g+s)continue;g=m.length,i.isPartial=!r;const c=U(u,m,i),h=j(o,f),p={url:e,imageId:t,...c,percentComplete:r?100:100*c.pixelData?.length/d,imageQualityStatus:h,done:f};n.add(p,f)}}catch(e){(e=>{if("function"==typeof a.errorInterceptor){const e=new Error("request failed");a.errorInterceptor(e)}})(),console.error(e),l(e)}})),l.getNextPromise()}function Z(e,t){if(!e)return t;if(!t)return e;const r=new Uint8Array(e.length+t.length);return r.set(e,0),r.set(t,e.length),r}function q(e,t,r={},n={}){const a=M(),{retrieveOptions:o={},streamingData:i}=n,s=i.chunkSize||function(e,t,r){const n=t[r];if("function"!=typeof n)return n;const a=x.get(e);return n(a,e)}(t,o,"chunkSize")||65536,l=new Promise((async(t,n)=>{const l=Object.assign({},r);Object.keys(l).forEach((function(e){null!==l[e]&&void 0!==l[e]||delete l[e]}));try{i.encodedData||(i.chunkSize=s,i.rangesFetched=0);const r=function(e,t){const{totalBytes:r,encodedData:n,chunkSize:a=65536}=e,{rangeIndex:o=0}=t;if(!(-1!==o||r&&n))return[0,""];if(-1===o||n?.byteLength>r-a)return[n?.byteLength||0,""];return[n?.byteLength||0,a*(o+1)-1]}(i,o),{encodedData:n,responseHeaders:a}=await async function(e,t,r,n){r&&(t=Object.assign(t,{Range:`bytes=${r[0]}-${r[1]}`}));let{encodedData:a}=n;if(r[1]&&a?.byteLength>r[1])return n;const o=await fetch(e,{headers:t,signal:void 0}),i=await o.arrayBuffer(),s=new Uint8Array(i),{status:l}=o;let c;a?(c=new Uint8Array(a.length+s.length),c.set(a,0),c.set(s,a.length),n.rangesFetched=1):(c=new Uint8Array(s.length),c.set(s,0),n.rangesFetched++);n.encodedData=a=c,n.responseHeaders=o.headers;const u=o.headers.get("Content-Range");u?n.totalBytes=Number(u.split("/")[1]):206===l&&r?""===r[1]||a?.length<r[1]?n.totalBytes=a.byteLength:n.totalBytes=Number.MAX_SAFE_INTEGER:n.totalBytes=a?.byteLength;return n}(e,l,r,i),c=a.get("content-type"),{totalBytes:u}=i,d=u===n.byteLength,f=U(c,n,{isPartial:!0}),m=j(o,d||f.extractDone);t({...f,imageQualityStatus:m,percentComplete:f.extractDone?100:100*s/u})}catch(e){(e=>{if("function"==typeof a.errorInterceptor){const e=new Error("request failed");a.errorInterceptor(e)}else console.warn("rangeRequest:Caught",e)})(e),console.error(e),n(e)}}));return l}const G=function(e,t,r="application/octet-stream",n){const{streamingData:a,retrieveOptions:o={}}=n||{},i={Accept:r};let s=o.urlArguments?`${e}${-1===e.indexOf("?")?"?":"&"}${o.urlArguments}`:e;if(o.framesPath&&(s=s.replace("/frames/",o.framesPath)),a?.url!==s&&(n.streamingData={url:s}),void 0!==o.rangeIndex)return q(s,t,i,n);if(void 0!==o.streaming)return W(s,t,i,n);const l=O(s,t,i),{xhr:c}=l;return l.then((function(e){const t=U(c.getResponseHeader("Content-Type")||"application/octet-stream",new Uint8Array(e));return t.imageQualityStatus=j(o,!0),t}))};const V=function(e){let t,r=e[0],n=e[0];const a=e.length;for(let o=1;o<a;o++)t=e[o],r=Math.min(r,t),n=Math.max(n,t);return{min:r,max:n}};function z(r,n,a){0===r.planarConfiguration?e(r.pixelData,n,a):t(r.pixelData,n,a)}function H(e,t,a){if("RGB"===e.photometricInterpretation)z(e,t,a);else if("YBR_RCT"===e.photometricInterpretation)z(e,t,a);else if("YBR_ICT"===e.photometricInterpretation)z(e,t,a);else if("PALETTE COLOR"===e.photometricInterpretation)bt(e,t,a);else if("YBR_FULL_422"===e.photometricInterpretation)!function(e,t,r){if(void 0===e)throw new Error("decodeRGB: ybrBuffer must not be undefined");if(e.length%2!=0)throw new Error("decodeRGB: ybrBuffer length must be divisble by 3");const n=e.length/2;let a=0,o=0;if(r)for(let r=0;r<n;r+=2){const r=e[a++],n=e[a++],i=e[a++],s=e[a++];t[o++]=r+1.402*(s-128),t[o++]=r-.34414*(i-128)-.71414*(s-128),t[o++]=r+1.772*(i-128),t[o++]=255,t[o++]=n+1.402*(s-128),t[o++]=n-.34414*(i-128)-.71414*(s-128),t[o++]=n+1.772*(i-128),t[o++]=255}else for(let r=0;r<n;r+=2){const r=e[a++],n=e[a++],i=e[a++],s=e[a++];t[o++]=r+1.402*(s-128),t[o++]=r-.34414*(i-128)-.71414*(s-128),t[o++]=r+1.772*(i-128),t[o++]=n+1.402*(s-128),t[o++]=n-.34414*(i-128)-.71414*(s-128),t[o++]=n+1.772*(i-128)}}(e.pixelData,t,a);else{if("YBR_FULL"!==e.photometricInterpretation)throw new Error(`No color space conversion for photometric interpretation ${e.photometricInterpretation}`);!function(e,t,a){0===e.planarConfiguration?r(e.pixelData,t,a):n(e.pixelData,t,a)}(e,t,a)}}function Y(e){return function(e){let t;try{return decodeURIComponent(escape(e))}catch(r){if(t=r,t instanceof URIError)return e;throw t}}(String.fromCharCode.apply(null,Array.prototype.slice.apply(new Uint8Array(e))))}const Q=function(e,t,r){const n=(new Date).getTime(),a=new Blob([t],{type:"image/jpeg"});return new Promise(((t,o)=>{const i=new FileReader;void 0===i.readAsBinaryString?i.readAsArrayBuffer(a):i.readAsBinaryString(a),i.onload=function(){const a=new Image;a.onload=function(){r.height=a.height,r.width=a.width,e.rows=a.height,e.columns=a.width;const o=r.getContext("2d");o.drawImage(this,0,0);const i=o.getImageData(0,0,a.width,a.height),s=(new Date).getTime();e.pixelData=new Uint8Array(i.data.buffer),e.imageData=i,e.decodeTimeInMS=s-n;const l=V(e.pixelData);e.smallestPixelValue=l.min,e.largestPixelValue=l.max,e.pixelDataLength=e.pixelData.length,t(e)},a.onerror=function(e){o(e)},void 0===i.readAsBinaryString?a.src=`data:image/jpeg;base64,${window.btoa(Y(i.result))}`:a.src=`data:image/jpeg;base64,${window.btoa(i.result)}`},i.onerror=e=>{o(e)}}))};function K(){return new Worker(a.p+"index.worker.64c896c4316fcd506666.worker.js")}let J=0;const X=[],ee=[],te=M(),re={maxWebWorkers:navigator.hardwareConcurrency||1,startWebWorkersOnDemand:!0,webWorkerTaskPaths:[],taskConfiguration:{decodeTask:{initializeCodecsOnStartup:!1,strict:te.strict}}};let ne;const ae={maxWebWorkers:0,numWebWorkers:0,numTasksQueued:0,numTasksExecuting:0,numTasksCompleted:0,totalTaskTimeInMS:0,totalTimeDelayedInMS:0};function oe(){if(X.length){for(let e=0;e<ee.length;e++)if("ready"===ee[e].status){ee[e].status="busy";const t=X.shift();t.start=(new Date).getTime();const r=(new Date).getTime();return ae.totalTimeDelayedInMS+=r-t.added,ee[e].task=t,ee[e].worker.postMessage({taskType:t.taskType,workerIndex:e,data:t.data},t.transferList),void ae.numTasksExecuting++}ee.length<ne.maxWebWorkers&&se()}}function ie(e){if("initialize"===e.data.taskType)ee[e.data.workerIndex].status="ready",oe();else{const t=ee[e.data.workerIndex].task.start,r="success"===e.data.status?"resolve":"reject";try{ee[e.data.workerIndex].task.deferred[r](e.data.result)}catch(e){console.warn("Caught error delivering response",e)}ee[e.data.workerIndex].task=void 0,ae.numTasksExecuting--,ee[e.data.workerIndex].status="ready",ae.numTasksCompleted++;const n=(new Date).getTime();ae.totalTaskTimeInMS+=n-t,oe()}}function se(){if(ee.length>=ne.maxWebWorkers)return;const e=new K;ee.push({worker:e,status:"initializing"}),e.addEventListener("message",ie),e.postMessage({taskType:"initialize",workerIndex:ee.length-1,config:ne})}function le(e){if(ne=e=e||re,ne.maxWebWorkers=ne.maxWebWorkers||navigator.hardwareConcurrency||1,!ne.startWebWorkersOnDemand)for(let e=0;e<ne.maxWebWorkers;e++)se()}const ce={initialize:le,loadWebWorkerTask:function(e,t){ne.webWorkerTaskPaths.push(e),t&&(ne.taskConfiguration=Object.assign(ne.taskConfiguration,t));for(let t=0;t<ee.length;t++)ee[t].worker.postMessage({taskType:"loadWebWorkerTask",workerIndex:ee.length-1,sourcePath:e,config:ne})},addTask:function(e,t,r=0,n){ne||le();let a={resolve:void 0,reject:void 0};const o=new Promise(((e,t)=>{a={resolve:e,reject:t}}));let i;for(i=0;i<X.length&&!(X[i].priority<r);i++);const s=J++;return X.splice(i,0,{taskId:s,taskType:e,status:"ready",added:(new Date).getTime(),data:t,deferred:a,priority:r,transferList:n}),oe(),{taskId:s,promise:o}},getStatistics:function(){return ae.maxWebWorkers=ne.maxWebWorkers,ae.numWebWorkers=ee.length,ae.numTasksQueued=X.length,ae},setTaskPriority:function(e,t=0){for(let r=0;r<X.length;r++)if(X[r].taskId===e){const e=X.splice(r,1)[0];for(e.priority=t,r=0;r<X.length&&!(X[r].priority<t);r++);return X.splice(r,0,e),!0}return!1},cancelTask:function(e,t){for(let r=0;r<X.length;r++)if(X[r].taskId===e){return X.splice(r,1).deferred.reject(t),!0}return!1},webWorkers:ee,terminate:function(){for(let e=0;e<ee.length;e++)ee[e].worker.terminate();ee.length=0,ne=void 0}};var ue=a(578);function de(e,t,r,n,a){const o={...n};delete o.loader,delete o.streamingData;const i=o.priority||void 0,s=o.transferPixelData?[r.buffer]:void 0;return ce.addTask("decodeTask",{imageFrame:e,transferSyntax:t,pixelData:r,options:o,decodeConfig:a},i,s).promise}window.pako={inflateRaw:ue.Hq};const fe=function(e,t,r,n,a={},o){switch(t){case"1.2.840.10008.1.2":case"1.2.840.10008.1.2.1":case"1.2.840.10008.1.2.2":case"1.2.840.10008.1.2.1.99":case"1.2.840.10008.1.2.5":case"1.2.840.10008.1.2.4.51":case"1.2.840.10008.1.2.4.57":case"1.2.840.10008.1.2.4.70":case"1.2.840.10008.1.2.4.80":case"1.2.840.10008.1.2.4.81":case"1.2.840.10008.1.2.4.90":case"1.2.840.10008.1.2.4.91":case"3.2.840.10008.1.2.4.96":case"1.2.840.10008.1.2.4.201":case"1.2.840.10008.1.2.4.202":case"1.2.840.10008.1.2.4.203":return de(e,t,r,a,o);case"1.2.840.10008.1.2.4.50":return 8!==e.bitsAllocated||3!==e.samplesPerPixel&&4!==e.samplesPerPixel?de(e,t,r,a,o):Q(e,r,n)}return Promise.reject(new Error(`No decoder for transfer syntax ${t}`))};const me=function(e){const{cornerstone:t}=ht,r=t.metaData.get("imagePixelModule",e);return{samplesPerPixel:r.samplesPerPixel,photometricInterpretation:r.photometricInterpretation,planarConfiguration:r.planarConfiguration,rows:r.rows,columns:r.columns,bitsAllocated:r.bitsAllocated,bitsStored:r.bitsStored,pixelRepresentation:r.pixelRepresentation,smallestPixelValue:r.smallestPixelValue,largestPixelValue:r.largestPixelValue,redPaletteColorLookupTableDescriptor:r.redPaletteColorLookupTableDescriptor,greenPaletteColorLookupTableDescriptor:r.greenPaletteColorLookupTableDescriptor,bluePaletteColorLookupTableDescriptor:r.bluePaletteColorLookupTableDescriptor,redPaletteColorLookupTableData:r.redPaletteColorLookupTableData,greenPaletteColorLookupTableData:r.greenPaletteColorLookupTableData,bluePaletteColorLookupTableData:r.bluePaletteColorLookupTableData,pixelData:void 0,imageId:e}};function ge(e){return"RGB"===e||"PALETTE COLOR"===e||"YBR_FULL"===e||"YBR_FULL_422"===e||"YBR_PARTIAL_422"===e||"YBR_PARTIAL_420"===e||"YBR_RCT"===e||"YBR_ICT"===e}const he={"1.2.840.10008.1.2.1":"application/octet-stream","1.2.840.10008.1.2":"application/octet-stream","1.2.840.10008.1.2.2":"application/octet-stream","1.2.840.10008.1.2.5":"image/dicom-rle"};let pe="";function be(e){const t=function(e,t){let r;return Number.isInteger(e)&&Number.isInteger(t)&&(e>=0?t<=255?r=Uint8Array:t<=65535&&(r=Uint16Array):e>=-128&&t<=127?r=Int8Array:e>=-32768&&t<=32767&&(r=Int16Array)),r||Float32Array}(e.smallestPixelValue,e.largestPixelValue);if(!t)throw new Error("Could not apply a typed array to the pixel data");{const r=new t(e.pixelData);e.pixelData=r}}const xe=function(e,t,r,n={}){const a=n.useRGBA;if(n.preScale={enabled:!(!n.preScale||void 0===n.preScale.enabled)&&n.preScale.enabled},!t?.length)return Promise.reject(new Error("The pixel data is missing"));const{cornerstone:o}=ht,i=document.createElement("canvas"),s=me(e);if(s.decodeLevel=n.decodeLevel,n.preScale.enabled){const t=function(e,t){const r=e.get("modalityLutModule",t)||{},n=e.get("generalSeriesModule",t)||{},{modality:a}=n,o={rescaleSlope:r.rescaleSlope,rescaleIntercept:r.rescaleIntercept,modality:a},i=e.get("scalingModule",t)||{};return{...o,..."PT"===a&&{suvbw:i.suvbw}}}(o.metaData,e);t&&(n.preScale={...n.preScale,scalingParameters:t})}n.isSharedArrayBuffer=n.targetBuffer?.arrayBuffer&&n.targetBuffer.arrayBuffer instanceof SharedArrayBuffer;const{decodeConfig:l}=M(),c=fe(s,r,t,i,n,l),{use16BitDataType:u}=l,d=ge(s.photometricInterpretation);return new Promise(((t,s)=>{c.then((function(s){if(n.skipCreateImage)return t(s);let l=!1;if(n.targetBuffer&&n.targetBuffer.type&&!d){const{arrayBuffer:e,type:t,offset:r=0,length:a}=n.targetBuffer,o=s.pixelDataLength,i=r,c=null!=a?a:o-i,d={Uint8Array,Uint16Array:u?Uint16Array:void 0,Int16Array:u?Int16Array:void 0,Float32Array};if(c!==s.pixelDataLength)throw new Error(`target array for image does not have the same length (${c}) as the decoded image length (${s.pixelDataLength}).`);const f=d[t],m=e?new f(e,i,c):new f(s.pixelData);if(c!==s.pixelDataLength)throw new Error("target array for image does not have the same length as the decoded image length.");s.pixelData=m,l=!0}l||be(s);const c=o.metaData.get("imagePlaneModule",e)||{},f=o.metaData.get("voiLutModule",e)||{},m=o.metaData.get("modalityLutModule",e)||{},g=o.metaData.get("sopCommonModule",e)||{};if(d){const{rows:e,columns:t}=s;if(he[r]){i.height=s.rows,i.width=s.columns;const e=i.getContext("2d").createImageData(s.columns,s.rows);H(s,e.data,a),s.imageData=e,s.pixelData=e.data,s.pixelDataLength=e.data.length}else if(!a&&s.pixelDataLength===4*e*t){const e=new Uint8Array(s.pixelData.length/4*3);s.pixelData=function(e,t){const r=e.length/4;let n=0,a=0;for(let o=0;o<r;o++)t[a++]=e[n++],t[a++]=e[n++],t[a++]=e[n++],n++;return t}(s.pixelData,e),s.pixelDataLength=s.pixelData.length}const n=V(s.pixelData);s.smallestPixelValue=n.min,s.largestPixelValue=n.max}const h={imageId:e,color:d,columnPixelSpacing:c.columnPixelSpacing,columns:s.columns,height:s.rows,preScale:s.preScale,intercept:m.rescaleIntercept?m.rescaleIntercept:0,slope:m.rescaleSlope?m.rescaleSlope:1,invert:"MONOCHROME1"===s.photometricInterpretation,minPixelValue:s.smallestPixelValue,maxPixelValue:s.largestPixelValue,rowPixelSpacing:c.rowPixelSpacing,rows:s.rows,sizeInBytes:s.pixelData.byteLength,width:s.columns,windowCenter:f.windowCenter?f.windowCenter[0]:void 0,windowWidth:f.windowWidth?f.windowWidth[0]:void 0,voiLUTFunction:f.voiLUTFunction?f.voiLUTFunction:void 0,decodeTimeInMS:s.decodeTimeInMS,floatPixelData:void 0,imageFrame:s,rgba:d&&a,getPixelData:()=>s.pixelData,getCanvas:void 0,numComps:void 0};var p;if(window.image=h,h.color&&(h.getCanvas=function(){if(pe===e)return i;const t=h.columns,r=h.rows;i.height=r,i.width=t;const n=i.getContext("2d"),a=n.createImageData(t,r),o=s.pixelData;if(o.length===t*r*4)for(let e=0;e<o.length;e++)a.data[e]=o[e];else if(o.length===t*r*3){let e=0;for(let t=0;t<o.length;t+=3)a.data[e++]=o[t],a.data[e++]=o[t+1],a.data[e++]=o[t+2],a.data[e++]=255}return s.pixelData=a.data,s.pixelDataLength=a.data.length,s.imageData=a,n.putImageData(s.imageData,0,0),pe=e,i}),m.modalityLUTSequence&&m.modalityLUTSequence.length>0&&("1.2.840.10008.5.1.4.1.1.12.1"!==(p=g.sopClassUID)&&"1.2.840.10008.5.1.4.1.1.12.2.1"!==p)&&(h.modalityLUT=m.modalityLUTSequence[0]),f.voiLUTSequence&&f.voiLUTSequence.length>0&&(h.voiLUT=f.voiLUTSequence[0]),h.color&&(h.windowWidth=256,h.windowCenter=128),void 0===h.windowCenter||void 0===h.windowWidth){const e=h.imageFrame.minAfterScale,t=h.imageFrame.maxAfterScale;h.windowWidth=t-e,h.windowCenter=(t+e)/2}t(h)}),s)}))},{ProgressiveIterator:we}=F.utilities,{ImageQualityStatus:ye}=F.Enums,ke=new Set(["3.2.840.10008.1.2.4.96","1.2.840.10008.1.2.4.202","1.2.840.10008.1.2.4.203"]);function ve(e){const t="1.2.840.10008.1.2";if(!e)return t;const r=e.split(";"),n={};r.forEach((e=>{const t=e.split("=");if(2!==t.length)return;const r=t[1].trim().replace(/"/g,"");n[t[0].trim()]=r}));const a={"image/jpeg":"1.2.840.10008.1.2.4.50","image/x-dicom-rle":"1.2.840.10008.1.2.5","image/x-jls":"1.2.840.10008.1.2.4.80","image/jls":"1.2.840.10008.1.2.4.80","image/jll":"1.2.840.10008.1.2.4.70","image/jp2":"1.2.840.10008.1.2.4.90","image/jpx":"1.2.840.10008.1.2.4.92","image/jphc":"3.2.840.10008.1.2.4.96","image/jxl":"1.2.840.10008.1.2.4.140"};return n["transfer-syntax"]?n["transfer-syntax"]:e&&!Object.keys(n).length&&a[e]?a[e]:n.type&&a[n.type]?a[n.type]:a[e]?a[e]:t}function Se(e,t=4){const r=e/100-.02;return r>1/4?Math.min(t,0):r>1/16?Math.min(t,1):r>1/64?Math.min(t,2):Math.min(t,3)}const De=function(e,t={}){const r=ht.cornerstone.imageRetrievalPoolManager,n=(new Date).getTime(),a=new we("decompress"),o=t.requestType||"interaction",i=t.additionalDetails||{imageId:e},s=void 0===t.priority?5:t.priority,l=t.addToBeginning||!1,c=e.substring(7);return r.addRequest(async function(e,r,o){a.generate((async a=>{const i=we.as(G(e,r,o,t));let s=10;for await(const e of i){const{pixelData:o,imageQualityStatus:i=ye.FULL_RESOLUTION,percentComplete:l,done:c=!0,extractDone:u=!0}=e,d=ve(e.contentType);if(!u&&!ke.has(d))continue;const f=e.decodeLevel??(i===ye.FULL_RESOLUTION?0:Se(l,t.retrieveOptions?.decodeLevel));if(c||!(s<=f))try{const e={...t,decodeLevel:f},l=await xe(r,o,d,e),u=(new Date).getTime();l.loadTimeInMS=u-n,l.transferSyntaxUID=d,l.imageQualityStatus=i,a.add(l,c),s=f}catch(e){if(u)throw console.warn("Couldn't decode",e),e}}}))}.bind(this,c,e,"multipart/related; type=application/octet-stream; transfer-syntax=*"),o,i,s,l),{promise:a.getDonePromise(),cancelFn:void 0}};const Te={metaData:{getNumberString:s,getNumberValue:l,getNumberValues:c,getValue:i,metaDataProvider:C},findIndexOfString:_,getPixelData:G,loadImage:De,metaDataManager:x,register:function(e){e.registerImageLoader("wadors",De),e.metaData.addProvider(C)}};function Pe(e,t){if(e.elements[t]&&6===e.elements[t].length)return[e.uint16(t,0),e.uint16(t,1),e.uint16(t,2)]}function Ie(e,t,r){const n=[],a=e.elements[t];for(let o=0;o<r[0];o++)16===r[2]?n[o]=e.uint16(t,o):n[o]=e.byteArray[o+a.dataOffset];return n}const Ce=function(e){const t={samplesPerPixel:e.uint16("x00280002"),photometricInterpretation:e.string("x00280004"),rows:e.uint16("x00280010"),columns:e.uint16("x00280011"),bitsAllocated:e.uint16("x00280100"),bitsStored:e.uint16("x00280101"),highBit:e.uint16("x00280102"),pixelRepresentation:e.uint16("x00280103"),planarConfiguration:e.uint16("x00280006"),pixelAspectRatio:e.string("x00280034")};return function(e,t){0===e.uint16("x00280103")?(t.smallestPixelValue=e.uint16("x00280106"),t.largestPixelValue=e.uint16("x00280107")):(t.smallestPixelValue=e.int16("x00280106"),t.largestPixelValue=e.int16("x00280107"))}(e,t),"PALETTE COLOR"===t.photometricInterpretation&&e.elements.x00281101&&function(e,t){t.redPaletteColorLookupTableDescriptor=Pe(e,"x00281101"),t.greenPaletteColorLookupTableDescriptor=Pe(e,"x00281102"),t.bluePaletteColorLookupTableDescriptor=Pe(e,"x00281103"),0===t.redPaletteColorLookupTableDescriptor[0]&&(t.redPaletteColorLookupTableDescriptor[0]=65536,t.greenPaletteColorLookupTableDescriptor[0]=65536,t.bluePaletteColorLookupTableDescriptor[0]=65536);const r=t.redPaletteColorLookupTableDescriptor[0],n=e.elements.x00281201.length===r?8:16;t.redPaletteColorLookupTableDescriptor[2]!==n&&(t.redPaletteColorLookupTableDescriptor[2]=n,t.greenPaletteColorLookupTableDescriptor[2]=n,t.bluePaletteColorLookupTableDescriptor[2]=n),t.redPaletteColorLookupTableData=Ie(e,"x00281201",t.redPaletteColorLookupTableDescriptor),t.greenPaletteColorLookupTableData=Ie(e,"x00281202",t.greenPaletteColorLookupTableDescriptor),t.bluePaletteColorLookupTableData=Ie(e,"x00281203",t.bluePaletteColorLookupTableDescriptor)}(e,t),t};function Le(e,t){let r=t.uint16("x00283002",0);0===r&&(r=65535);let n=0;n=0===e?t.uint16("x00283002",1):t.int16("x00283002",1);const a={id:"1",firstValueMapped:n,numBitsPerEntry:t.uint16("x00283002",2),lut:[]};for(let n=0;n<r;n++)a.lut[n]=0===e?t.uint16("x00283006",n):t.int16("x00283006",n);return a}const _e=function(e,t){if(!t||!t.items||!t.items.length)return;const r=[];for(let n=0;n<t.items.length;n++){const a=Le(e,t.items[n].dataSet);a&&r.push(a)}return r};const Ae=function(e){const t=e.string("x00080016");if("1.2.840.10008.5.1.4.1.1.2"===t||"1.2.840.10008.5.1.4.1.1.2.1"===t)return 1;const r=e.floatString("x00281052"),n=e.floatString("x00281053");if(void 0!==r&&void 0!==n){const t=function(e){const t=e.uint16("x00280103"),r=e.uint16("x00280101");return 0===t?0:-1<<r-1}(e);return t*n+r<0?1:0}return e.elements.x00283000&&e.elements.x00283000.length>0?0:e.uint16("x00280103")};const Ee=function(e,t,r){const n=[],a=e.string(t);if(!a)return;const o=a.split("\\");if(!(r&&o.length<r)){for(let e=0;e<o.length;e++)n.push(parseFloat(o[e]));return n}};const Me=function(e){const t=e.indexOf(":");let r=e.substring(t+1);const n=r.indexOf("frame=");let a;if(-1!==n){const e=r.substring(n+6);a=parseInt(e,10),r=r.substring(0,n-1)}return{scheme:e.substring(0,t),url:r,frame:a,pixelDataFrame:void 0!==a?a-1:void 0}};function Oe(e){const{dicomParser:t}=ht;let r,n=t.parseDicom(e,{untilTag:"x7fe00010"});n.elements.x7fe00010||console.warn("Pixel data not found!");try{r=t.parseDicom(e)}catch(e){console.error(e),console.log("pixel data dataset:",e.dataSet),r=e.dataSet}return n.elements.x7fe00010=r.elements.x7fe00010,n=function(e){const t=e.elements.x7fe00010.fragments,r=e.byteArray.length;for(const e of t){const{position:t,length:n}=e;n>r-t&&(console.log(`Truncated fragment, changing fragment length from ${e.length} to ${r-t}`),e.length=r-t)}return e}(n),n}async function Re(e,t,r){const n=Oe(e),{uri:a,imageId:o,fileTotalLength:i}=r;return n.fetchMore=async function(s){const l=Object.assign({uri:a,imageId:o,fetchedLength:e.length,lengthToFetch:i-e.length},s),{fetchedLength:c,lengthToFetch:u}=l,{arrayBuffer:d}=await t(a,o,{byteRange:`${c}-${c+u}`}),f=new Uint8Array(d),m=new Uint8Array(n.byteArray.length+f.length);return m.set(n.byteArray),m.set(f,n.byteArray.length),Re(m,t,r)},n}function Fe(e,t,r){const n={};(t?Object.values(t.items[0].dataSet.elements):[]).map((e=>n[e.tag]=e));const a={};return(e?Object.values(e.items[r-1].dataSet.elements):[]).map((e=>a[e.tag]=e)),{shared:n,perFrame:a}}function Be(e){if(!e)return;const{elements:t,...r}=e,{x52009230:n,x52009229:a,...o}=t;return{NumberOfFrames:e.intString("x00280008"),PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,otherElements:o,otherAttributtes:r}}function Ue(e){if(We[e])return We[e]}function Ne(e){if(!e)return!1;const t=e.intString("x00280008");return t&&t>1}const je={_get:Ue,generateMultiframeWADOURIs:function(e){const t=[],r=Ue(e);if(Ne(r)){const n=r.intString("x00280008");for(let r=1;r<=n;r++)t.push(`${e}&frame=${r}`)}else t.push(e);return t},retrieveMultiframeDataset:function(e){const t=function(e){return e.indexOf("&frame=")}(e),r=-1===t?e:e.slice(0,t),n=parseInt(e.slice(t+7),10)||1;let a;return a=We[r]?We[r].dataSet:void 0,{dataSet:a,frame:n}},isMultiframeDataset:function(e){return Ne(Ue(e))}};let $e=0,We={},Ze={};function qe(){return{cacheSizeInBytes:$e,numberOfDataSetsCached:Object.keys(We).length}}const Ge={isLoaded:function(e){return void 0!==We[e]},load:function(e,t=O,r){const{cornerstone:n,dicomParser:a}=ht;if(We[e])return new Promise((t=>{We[e].cacheCount++,t(We[e].dataSet)}));if(Ze[e])return Ze[e].cacheCount++,Ze[e];const o=t(e,r),i=new Promise(((s,l)=>{o.then((async function(o){const c={isPartialContent:!1,fileTotalLength:null};if(!(o instanceof ArrayBuffer)){if(!o.arrayBuffer)return l(new Error("If not returning ArrayBuffer, must return object with `arrayBuffer` parameter"));c.isPartialContent=o.flags.isPartialContent,c.fileTotalLength=o.flags.fileTotalLength,o=o.arrayBuffer}const u=new Uint8Array(o);let d;try{d=c.isPartialContent?await Re(u,t,{uri:e,imageId:r,fileTotalLength:c.fileTotalLength}):a.parseDicom(u)}catch(e){return l(e)}We[e]={dataSet:d,cacheCount:i.cacheCount},$e+=d.byteArray.length,s(d),n.triggerEvent(n.events,"datasetscachechanged",{uri:e,action:"loaded",cacheInfo:qe()})}),l).then((()=>{delete Ze[e]}),(()=>{delete Ze[e]}))}));return i.cacheCount=1,Ze[e]=i,i},unload:function(e){const{cornerstone:t}=ht;We[e]&&(We[e].cacheCount--,0===We[e].cacheCount&&($e-=We[e].dataSet.byteArray.length,delete We[e],t.triggerEvent(t.events,"datasetscachechanged",{uri:e,action:"unloaded",cacheInfo:qe()})))},getInfo:qe,purge:function(){We={},Ze={},$e=0},get:function(e){let t;if(e.includes("&frame=")){const{frame:r,dataSet:n}=je.retrieveMultiframeDataset(e);t=function(e,t){if(!t)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,otherElements:o}=Be(t);if(n||r>1){const{shared:r,perFrame:i}=Fe(n,a,e),s={elements:{...o,...r,...i}},l=Object.create(t);return Object.assign(l,s)}return t}(r,n)}else We[e]&&(t=We[e].dataSet);return t},update:function(e,t){const r=We[e];r?($e-=r.dataSet.byteArray.length,r.dataSet=t,$e+=t.byteArray.length,ht.cornerstone.triggerEvent(ht.cornerstone.events,"datasetscachechanged",{uri:e,action:"updated",cacheInfo:qe()})):console.error(`No loaded dataSet for uri ${e}`)}};function Ve(e,t){const r=e.string("x00080008");if(r){const e=r.split("\\");if(e.length>t)return e[t]}}function ze(e){let t=Ee(e,"x00200037",6);return!t&&e.elements.x00209116&&(t=Ee(e.elements.x00209116.items[0].dataSet,"x00200037",6)),t||(t=function(e){let t;if(e.string("x00080060").includes("NM")){const r=Ve(e,2);r&&w(r)&&e.elements.x00540022&&(t=Ee(e.elements.x00540022.items[0].dataSet,"x00200037",6))}return t}(e)),t}function He(e){let t=Ee(e,"x00200032",3);return!t&&e.elements.x00209113&&(t=Ee(e.elements.x00209113.items[0].dataSet,"x00200032",3)),t||(t=function(e){let t;if(e.string("x00080060").includes("NM")){const r=Ve(e,2);r&&w(r)&&e.elements.x00540022&&(t=Ee(e.elements.x00540022.items[0].dataSet,"x00200032",3))}return t}(e)),t}function Ye(e){let t=Ee(e,"x00280030",2);return!t&&e.elements.x00289110&&(t=Ee(e.elements.x00289110.items[0].dataSet,"x00280030",2)),t}function Qe(e){let t;return e.elements.x00180050?t=e.floatString("x00180050"):e.elements.x00289110&&e.elements.x00289110.items.length&&e.elements.x00289110.items[0].dataSet.elements.x00180050&&(t=e.elements.x00289110.items[0].dataSet.floatString("x00180050")),t}const Ke=function e(t,r){const{dicomParser:n}=ht;if(Array.isArray(r))return;const a=Me(r);if("multiframeModule"===t){const e=je.retrieveMultiframeDataset(a.url);if(!e.dataSet)return;const t=function(e,t){if(!e)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a}=Be(e);if(n||r>1){const{shared:e,perFrame:o}=Fe(n,a,t);return{NumberOfFrames:r,PerFrameFunctionalInformation:o,SharedFunctionalInformation:e}}return{NumberOfFrames:r}}(e.dataSet,e.frame);return t}let o=a.url;a.frame&&(o=`${o}&frame=${a.frame}`);const i=Ge.get(o);if(i){if("generalSeriesModule"===t)return{modality:i.string("x00080060"),seriesInstanceUID:i.string("x0020000e"),seriesNumber:i.intString("x00200011"),studyInstanceUID:i.string("x0020000d"),seriesDate:n.parseDA(i.string("x00080021")),seriesTime:n.parseTM(i.string("x00080031")||""),acquisitionDate:n.parseDA(i.string("x00080022")||""),acquisitionTime:n.parseTM(i.string("x00080032")||"")};if("patientStudyModule"===t)return{patientAge:i.intString("x00101010"),patientSize:i.floatString("x00101020"),patientWeight:i.floatString("x00101030")};if("imagePlaneModule"===t){const e=ze(i),t=He(i),r=Ye(i);let n;i.elements.x00200052&&(n=i.string("x00200052"));const a=Qe(i);let o;i.elements.x00201041&&(o=i.floatString("x00201041"));let s=null,l=null;r&&(l=r[0],s=r[1]);let c=null,u=null;return e&&(c=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],u=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:n,rows:i.uint16("x00280010"),columns:i.uint16("x00280011"),imageOrientationPatient:e,rowCosines:c,columnCosines:u,imagePositionPatient:t,sliceThickness:a,sliceLocation:o,pixelSpacing:r,rowPixelSpacing:l,columnPixelSpacing:s}}if("nmMultiframeGeometryModule"===t){const e=i.string("x00080060"),t=Ve(i,2);return{modality:e,imageType:i.string("x00080008"),imageSubType:t,imageOrientationPatient:ze(i),imagePositionPatient:He(i),sliceThickness:Qe(i),pixelSpacing:Ye(i),numberOfFrames:i.uint16("x00280008"),isNMReconstructable:w(t)&&e.includes("NM")}}if("imagePixelModule"===t)return Ce(i);if("modalityLutModule"===t)return{rescaleIntercept:i.floatString("x00281052"),rescaleSlope:i.floatString("x00281053"),rescaleType:i.string("x00281054"),modalityLUTSequence:_e(i.uint16("x00280103"),i.elements.x00283000)};if("voiLutModule"===t){const e=Ae(i);return{windowCenter:Ee(i,"x00281050",1),windowWidth:Ee(i,"x00281051",1),voiLUTSequence:_e(e,i.elements.x00283010)}}if("sopCommonModule"===t)return{sopClassUID:i.string("x00080016"),sopInstanceUID:i.string("x00080018")};if("petIsotopeModule"===t){const e=i.elements.x00540016;if(void 0===e)return;const t=e.items[0].dataSet;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:n.parseTM(t.string("x00181072")||""),radionuclideTotalDose:t.floatString("x00181074"),radionuclideHalfLife:t.floatString("x00181075")}}}return"overlayPlaneModule"===t?function(e){const t=[];for(let r=0;r<=30;r+=2){let n=`x60${r.toString(16)}`;4===n.length&&(n=`x600${r.toString(16)}`);const a=e.elements[`${n}3000`];if(!a)continue;const o=[];for(let t=0;t<a.length;t++)for(let r=0;r<8;r++){const n=e.byteArray[a.dataOffset+t];o[8*t+r]=n>>r&1}t.push({rows:e.uint16(`${n}0010`),columns:e.uint16(`${n}0011`),type:e.string(`${n}0040`),x:e.int16(`${n}0050`,1)-1,y:e.int16(`${n}0050`,0)-1,pixelData:o,description:e.string(`${n}0022`),label:e.string(`${n}1500`),roiArea:e.string(`${n}1301`),roiMean:e.string(`${n}1302`),roiStandardDeviation:e.string(`${n}1303`)})}return{overlays:t}}(i):"transferSyntax"===t?{transferSyntaxUID:i.string("x00020010")}:"petSeriesModule"===t?{correctedImage:i.string("x00280051"),units:i.string("x00541001"),decayCorrection:i.string("x00541102")}:"petImageModule"===t?{frameReferenceTime:i.floatString(i.string("x00541300")||""),actualFrameDuration:i.intString(i.string("x00181242"))}:"instance"===t?D(r,e,P):void 0}};let Je=[];const Xe={add:function(e){return"dicomfile:"+(Je.push(e)-1)},get:function(e){return Je[e]},remove:function(e){Je[e]=void 0},purge:function(){Je=[]}};var et=a(713);function tt(e,t){const{dicomParser:r}=ht;if(e.elements.x7fe00010&&e.elements.x7fe00010.basicOffsetTable.length)return r.readEncapsulatedImageFrame(e,e.elements.x7fe00010,t);if(function(e){return e.intString("x00280008")!==e.elements.x7fe00010.fragments.length}(e)){const n=r.createJPEGBasicOffsetTable(e,e.elements.x7fe00010);return r.readEncapsulatedImageFrame(e,e.elements.x7fe00010,t,n)}const n=e.elements.x7fe00010.fragments,a=new et.ByteStream(e.byteArrayParser,e.byteArray,e.elements.x7fe00010.dataOffset),o=(0,et.readSequenceItem)(a);if("xfffee000"!==o.tag)throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000";a.seek(o.length);const i=a.position;if(t+1>n.length)throw"dicomParser.readEncapsulatedPixelData: frame exceeds number of fragments";const s=i+n[t].offset+8,l=n[t].length;return new Uint8Array(a.byteArray.buffer.slice(a.byteArray.byteOffset+s,a.byteArray.byteOffset+s+l))}function rt(e,t){return e&1<<t}const nt=function(e,t,r){const n=new Uint8Array(r);for(let a=0;a<r;a++){const r=e[Math.floor(a/8)+t],o=a%8;n[a]=rt(r,o)?1:0}return n};const at=function(e,t){const r=e.elements.x7fe00010||e.elements.x7fe00008,n=e.uint16("x00280100"),a=e.uint16("x00280010"),o=e.uint16("x00280011");let i=e.uint16("x00280002");"YBR_FULL_422"===e.string("x00280004")&&(i=2,console.warn("Using SamplesPerPixel of 2 for YBR_FULL_422 photometric interpretation.\n See http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.3.html for more information."));const s=r.dataOffset,l=a*o*i;let c;if(8===n){if(c=s+t*l,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+l))}if(16===n){if(c=s+t*l*2,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+2*l))}if(1===n){if(c=s+t*l*.125,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return nt(e.byteArray,c,l)}if(32===n){if(c=s+t*l*4,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return new Uint8Array(e.byteArray.buffer.slice(c,c+4*l))}throw new Error("unsupported pixel format")};const ot=function(e){const t=Me(e),r=parseInt(t.url,10),n=Xe.get(r);return new Promise(((e,t)=>{const r=new FileReader;r.onload=t=>{const r=t.target.result;e(r)},r.onerror=t,r.readAsArrayBuffer(n)}))};const it=function(e,t=0){const r=e.elements.x7fe00010||e.elements.x7fe00008;return r?r.encapsulatedPixelData?tt(e,t):at(e,t):null};function st(e,t,r=0,n,a,o){const i=(new Date).getTime(),s={cancelFn:void 0,promise:void 0};return s.promise=new Promise(((l,c)=>{e.then((e=>{const u=it(e,r),d=e.string("x00020010"),f=(new Date).getTime(),m=xe(t,u,d,a);!function(e,t){e.decache=function(){const e=Me(t);Ge.unload(e.url)}}(s,t),m.then((t=>{t.data=e,t.sharedCacheKey=n;const r=(new Date).getTime();t.loadTimeInMS=f-i,t.totalTimeInMS=r-i,void 0!==o&&void 0!==o.imageDoneCallback&&o.imageDoneCallback(t),l(t)}),(function(t){c({error:t,dataSet:e})}))}),(function(e){c({error:e})}))})),s}function lt(e){return"dicomweb"===e||"wadouri"===e?O:"dicomfile"===e?ot:void 0}function ct(e,t={}){const r=Me(e);let n=(t=Object.assign({},t)).loader;if(void 0===n?n=lt(r.scheme):delete t.loader,Ge.isLoaded(r.url)){return function(e,t,r=0,n,a){const o=(new Date).getTime();return{promise:new Promise(((i,s)=>{const l=(new Date).getTime();let c;try{const n=it(e,r),o=e.string("x00020010");c=xe(t,n,o,a)}catch(t){return void s({error:t,dataSet:e})}c.then((t=>{t.data=e,t.sharedCacheKey=n;const r=(new Date).getTime();t.loadTimeInMS=l-o,t.totalTimeInMS=r-o,i(t)}),s)})),cancelFn:void 0}}(Ge.get(r.url,n,e),e,r.pixelDataFrame,r.url,t)}return st(Ge.load(r.url,n,e),e,r.frame,r.url,t)}const ut={metaData:{getImagePixelModule:Ce,getLUTs:_e,getModalityLUTOutputPixelRepresentation:Ae,getNumberValues:Ee,metaDataProvider:Ke},dataSetCacheManager:Ge,fileManager:Xe,getEncapsulatedImageFrame:tt,getUncompressedImageFrame:at,loadFileRequest:ot,loadImageFromPromise:st,getLoaderForScheme:lt,loadImage:ct,parseImageId:Me,unpackBinaryFrame:nt,register:function(e){e.registerImageLoader("dicomweb",ct),e.registerImageLoader("wadouri",ct),e.registerImageLoader("dicomfile",ct),e.metaData.addProvider(Ke)}};const dt=function(e){Te.register(e),ut.register(e)};let ft,mt;const gt={set cornerstone(e){ft=e,dt(ft)},get cornerstone(){if(!ft){if(ft=window&&window.cornerstone,!ft)throw new Error("cornerstoneDICOMImageLoader requires a copy of Cornerstone to work properly. Please add cornerstoneDICOMImageLoader.external.cornerstone = cornerstone; to your application.");dt(ft)}return ft},set dicomParser(e){mt=e},get dicomParser(){if(!mt){if(!window||!window.dicomParser)throw new Error("cornerstoneDICOMImageLoader requires a copy of dicomParser to work properly. Please add cornerstoneDICOMImageLoader.external.dicomParser = dicomParser; to your application.");mt=window.dicomParser}return mt}},ht=gt;function pt(e,t){const r=e.length,n=new Uint8ClampedArray(r);for(let a=0;a<r;++a)n[a]=e[a]>>t;return n}function bt(e,t,r){const n=e.columns*e.rows,a=e.pixelData;let o=e.redPaletteColorLookupTableData;o||(o=ht.cornerstone.metaData.get("imagePixelModule",e.imageId)?.redPaletteColorLookupTableData);let i=e.greenPaletteColorLookupTableData;i||(i=ht.cornerstone.metaData.get("imagePixelModule",e.imageId)?.greenPaletteColorLookupTableData);let s=e.bluePaletteColorLookupTableData;if(s||(s=ht.cornerstone.metaData.get("imagePixelModule",e.imageId)?.bluePaletteColorLookupTableData),!o||!i||!s)throw new Error("The image does not have a complete color palette. R, G, and B palette data are required.");const l=e.redPaletteColorLookupTableData.length;let c=0,u=0;const d=e.redPaletteColorLookupTableDescriptor[1],f=8===e.redPaletteColorLookupTableDescriptor[2]?0:8,m=pt(o,f),g=pt(i,f),h=pt(s,f);if(r)for(let e=0;e<n;++e){let e=a[c++];e<d?e=0:e>d+l-1?e=l-1:e-=d,t[u++]=m[e],t[u++]=g[e],t[u++]=h[e],t[u++]=255}else for(let e=0;e<n;++e){let e=a[c++];e<d?e=0:e>d+l-1?e=l-1:e-=d,t[u++]=m[e],t[u++]=g[e],t[u++]=h[e]}}const xt=function(e){E(e)};const wt=function(e,t){if(t=t||e.transferSyntax,8===e.bitsAllocated&&"1.2.840.10008.1.2.4.50"===t&&(3===e.samplesPerPixel||4===e.samplesPerPixel))return!0},yt={convertRGBColorByPixel:e,convertRGBColorByPlane:t,convertYBRFullByPixel:r,convertYBRFullByPlane:n,convertPALETTECOLOR:bt,wadouri:ut,wadors:Te,configure:xt,convertColorSpace:H,createImage:xe,decodeImageFrame:fe,decodeJPEGBaseline8BitColor:Q,getImageFrame:me,getPixelData:G,getMinMax:V,isColorImage:ge,isJPEGBaseline8BitColor:wt,webWorkerManager:ce,internal:R,external:gt}})(),o})()));
117349
117735
 
117350
117736
 
117351
117737
  /***/ }),
@@ -241376,7 +241762,7 @@ var selectOrdinal = function selectOrdinal() {
241376
241762
  /******/ // This function allow to reference async chunks
241377
241763
  /******/ __webpack_require__.u = (chunkId) => {
241378
241764
  /******/ // return url for filenames based on template
241379
- /******/ return "" + (chunkId === 18 ? "dicom-microscopy-viewer" : chunkId) + ".bundle." + {"12":"37529fdf74d10cccda3d","18":"2c146384eb9466d02ff8","19":"706b1020e6d744b4a772","23":"e008ad788170f2ed5569","47":"3217b1b873983a6aaa43","125":"253395f320b72180da63","170":"ba2b6bb9a1910e348f9c","181":"8bbcaf31270dd56cad1f","185":"4a026a3eda76e8d34517","199":"d8b92b7ec7c7dd91d160","202":"07442d396db3161ee7f3","220":"f7e1c96c94245e70f2be","250":"de8df38690c1305b2f8a","281":"bfa24595c2dcbcfc227a","359":"eabc596f016eb73fa622","410":"1736835db3336e98c495","417":"af0a207c29b109f84159","420":"d2a09d89c3e8177bc0d9","451":"57c21db5d003c75e9d61","466":"fd2557fe99960d7ee96b","471":"49c8d281adbae4a2c4df","483":"067bce093473b53dd0f7","485":"8667a696ac2eaf99e4fa","506":"ca89ebd941bebab77590","530":"a03b6f942ace3e1baa1e","544":"b2b65dd140e9854cb129","579":"8fc434a0c13d3f662d42","613":"40f071699be75c012842","661":"65dd579322b265c6e321","686":"dccef1f36e4bc79bcc48","687":"2ac3cd797e3d5be5f053","738":"5b64bfcded95e22063af","814":"1328537fe47b9a202135","822":"1f4c9e059e87914fc12a","886":"c8dd3ecc42a4253de278","965":"9b78983e1a5791031169"}[chunkId] + ".js";
241765
+ /******/ return "" + (chunkId === 18 ? "dicom-microscopy-viewer" : chunkId) + ".bundle." + {"12":"56b9d54b9c0af71af1d7","18":"2c146384eb9466d02ff8","19":"3dd19edbc75a5aebd1de","23":"e008ad788170f2ed5569","26":"c92012465cee00a2a708","95":"db9d2d504abc5dd4fdfa","125":"253395f320b72180da63","170":"80ad57e16afc8855b0fc","181":"87f1df4f401b8023cfd1","185":"2d7c72ca2f461d711df9","199":"30893a2f3da90d37b0d9","202":"a607e9ab460999d8c0c8","220":"f7e1c96c94245e70f2be","250":"5634282a01bd6e15b70d","281":"fc5d5a58827c8ba054b0","359":"644102e1339a5769fe43","410":"089c191e6500a09de5f5","417":"af0a207c29b109f84159","420":"208f94f15dcc2be09dc0","451":"57c21db5d003c75e9d61","466":"be8d38922b545c9657dd","471":"49c8d281adbae4a2c4df","483":"4866c3396b19964a0010","485":"8667a696ac2eaf99e4fa","506":"9fbbe1b884e79e06a3f6","530":"a03b6f942ace3e1baa1e","579":"8fc434a0c13d3f662d42","613":"b3839caf45bff66f2667","661":"65dd579322b265c6e321","686":"dccef1f36e4bc79bcc48","687":"bc44675be7433cd8670b","738":"a9dd630892da1e5dcabf","814":"b5267cf0fefd476ea55d","822":"775a62e1f79c403f3aed","886":"c8dd3ecc42a4253de278","965":"fc770e33fa48b72621cc"}[chunkId] + ".js";
241380
241766
  /******/ };
241381
241767
  /******/ })();
241382
241768
  /******/