@cornerstonejs/dicom-image-loader 2.0.0-beta.20 → 2.0.0-beta.21

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 (106) hide show
  1. package/dist/920.bundle.min.js +1 -1
  2. package/dist/920.bundle.min.js.map +1 -1
  3. package/dist/cornerstoneDICOMImageLoader.bundle.min.js +1 -1
  4. package/dist/cornerstoneDICOMImageLoader.bundle.min.js.map +1 -1
  5. package/dist/dynamic-import/918.min.js +1 -1
  6. package/dist/dynamic-import/918.min.js.map +1 -1
  7. package/dist/dynamic-import/958.min.js +1 -1
  8. package/dist/dynamic-import/958.min.js.map +1 -1
  9. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js +1 -1
  10. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js.map +1 -1
  11. package/dist/esm/codecs/jpeg.d.ts +1 -10
  12. package/dist/esm/codecs/jpeg.js +1 -1
  13. package/dist/esm/codecs/jpegLossless.js +1 -1
  14. package/dist/esm/src/decodeImageFrameWorker.js +6 -10
  15. package/dist/esm/src/imageLoader/colorSpaceConverters/convertPALETTECOLOR.d.ts +3 -3
  16. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPixel.d.ts +1 -1
  17. package/dist/esm/src/imageLoader/colorSpaceConverters/convertRGBColorByPlane.d.ts +1 -1
  18. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.d.ts +1 -1
  19. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPixel.d.ts +1 -1
  20. package/dist/esm/src/imageLoader/colorSpaceConverters/convertYBRFullByPlane.d.ts +1 -1
  21. package/dist/esm/src/imageLoader/configure.d.ts +1 -1
  22. package/dist/esm/src/imageLoader/createImage.d.ts +4 -3
  23. package/dist/esm/src/imageLoader/createImage.js +13 -20
  24. package/dist/esm/src/imageLoader/decodeImageFrame.d.ts +2 -2
  25. package/dist/esm/src/imageLoader/decodeJPEGBaseline8BitColor.d.ts +3 -3
  26. package/dist/esm/src/imageLoader/getImageFrame.d.ts +2 -2
  27. package/dist/esm/src/imageLoader/getInstanceModule.d.ts +1 -1
  28. package/dist/esm/src/imageLoader/getScalingParameters.js +2 -1
  29. package/dist/esm/src/imageLoader/index.d.ts +1 -1
  30. package/dist/esm/src/imageLoader/internal/index.d.ts +3 -1
  31. package/dist/esm/src/imageLoader/internal/index.js +3 -1
  32. package/dist/esm/src/imageLoader/internal/options.d.ts +1 -1
  33. package/dist/esm/src/imageLoader/internal/options.js +0 -4
  34. package/dist/esm/src/imageLoader/internal/rangeRequest.d.ts +3 -3
  35. package/dist/esm/src/imageLoader/internal/streamRequest.d.ts +1 -1
  36. package/dist/esm/src/imageLoader/internal/xhrRequest.d.ts +1 -1
  37. package/dist/esm/src/imageLoader/isJPEGBaseline8BitColor.d.ts +2 -2
  38. package/dist/esm/src/imageLoader/wadors/getImageQualityStatus.d.ts +2 -1
  39. package/dist/esm/src/imageLoader/wadors/getPixelData.d.ts +1 -1
  40. package/dist/esm/src/imageLoader/wadors/loadImage.d.ts +1 -1
  41. package/dist/esm/src/imageLoader/wadors/metaData/getFirstNumberValue.d.ts +1 -1
  42. package/dist/esm/src/imageLoader/wadors/metaData/getNumberString.d.ts +1 -1
  43. package/dist/esm/src/imageLoader/wadors/metaData/getNumberString.js +1 -1
  44. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValue.d.ts +1 -1
  45. package/dist/esm/src/imageLoader/wadors/metaData/getNumberValues.d.ts +1 -1
  46. package/dist/esm/src/imageLoader/wadors/metaData/getOverlayPlaneModule.d.ts +1 -1
  47. package/dist/esm/src/imageLoader/wadors/metaData/getSequenceItems.d.ts +1 -1
  48. package/dist/esm/src/imageLoader/wadors/metaData/getValue.d.ts +1 -1
  49. package/dist/esm/src/imageLoader/wadors/metaData/getValue.js +1 -1
  50. package/dist/esm/src/imageLoader/wadors/metaData/metaDataProvider.d.ts +1 -1
  51. package/dist/esm/src/imageLoader/wadors/metaDataManager.d.ts +1 -1
  52. package/dist/esm/src/imageLoader/wadors/metaDataManager.js +4 -1
  53. package/dist/esm/src/imageLoader/wadouri/combineFrameInstanceDataset.js +4 -2
  54. package/dist/esm/src/imageLoader/wadouri/dataSetCacheManager.d.ts +2 -2
  55. package/dist/esm/src/imageLoader/wadouri/dataset-from-partial-content.d.ts +1 -1
  56. package/dist/esm/src/imageLoader/wadouri/getEncapsulatedImageFrame.d.ts +1 -1
  57. package/dist/esm/src/imageLoader/wadouri/getPixelData.d.ts +1 -1
  58. package/dist/esm/src/imageLoader/wadouri/getUncompressedImageFrame.d.ts +1 -1
  59. package/dist/esm/src/imageLoader/wadouri/index.d.ts +0 -1
  60. package/dist/esm/src/imageLoader/wadouri/loadImage.d.ts +3 -3
  61. package/dist/esm/src/imageLoader/wadouri/metaData/USHelpers.d.ts +2 -0
  62. package/dist/esm/src/imageLoader/wadouri/metaData/USHelpers.js +44 -0
  63. package/dist/esm/src/imageLoader/wadouri/metaData/getImagePixelModule.d.ts +3 -3
  64. package/dist/esm/src/imageLoader/wadouri/metaData/getLUTs.d.ts +2 -2
  65. package/dist/esm/src/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.d.ts +1 -1
  66. package/dist/esm/src/imageLoader/wadouri/metaData/getNumberValues.d.ts +1 -1
  67. package/dist/esm/src/imageLoader/wadouri/metaData/getOverlayPlaneModule.d.ts +1 -1
  68. package/dist/esm/src/imageLoader/wadouri/metaData/metaDataProvider.d.ts +1 -1
  69. package/dist/esm/src/imageLoader/wadouri/metaData/metaDataProvider.js +13 -0
  70. package/dist/esm/src/imageLoader/wadouri/register.d.ts +1 -1
  71. package/dist/esm/src/imageLoader/wadouri/retrieveMultiframeDataset.d.ts +0 -1
  72. package/dist/esm/src/imageLoader/wadouri/unpackBinaryFrame.d.ts +1 -1
  73. package/dist/esm/src/shared/decoders/decodeBigEndian.d.ts +3 -3
  74. package/dist/esm/src/shared/decoders/decodeHTJ2K.d.ts +2 -2
  75. package/dist/esm/src/shared/decoders/decodeJPEG2000.d.ts +3 -2
  76. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-js.d.ts +4 -3
  77. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.d.ts +1 -0
  78. package/dist/esm/src/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.js +1 -1
  79. package/dist/esm/src/shared/decoders/decodeJPEGBaseline8Bit.d.ts +2 -2
  80. package/dist/esm/src/shared/decoders/decodeJPEGLS.d.ts +3 -2
  81. package/dist/esm/src/shared/decoders/decodeJPEGLossless.d.ts +4 -3
  82. package/dist/esm/src/shared/decoders/decodeLittleEndian.d.ts +3 -3
  83. package/dist/esm/src/shared/decoders/decodeRLE.d.ts +3 -3
  84. package/dist/esm/src/shared/getMinMax.d.ts +2 -2
  85. package/dist/esm/src/shared/getPixelDataTypeFromMinMax.d.ts +2 -2
  86. package/dist/esm/src/shared/scaling/scaleArray.d.ts +2 -2
  87. package/dist/esm/src/types/DICOMLoaderDataSetWithFetchMore.d.ts +1 -1
  88. package/dist/esm/src/types/DICOMLoaderIImage.d.ts +3 -4
  89. package/dist/esm/src/types/DICOMLoaderImageOptions.d.ts +4 -7
  90. package/dist/esm/src/types/LoadRequestFunction.d.ts +1 -1
  91. package/dist/esm/src/types/LoaderDecodeOptions.d.ts +0 -2
  92. package/dist/esm/src/types/LoaderOptions.d.ts +9 -9
  93. package/dist/esm/src/types/WebWorkerTypes.d.ts +8 -8
  94. package/dist/esm/src/types/XHRRequest.d.ts +2 -2
  95. package/dist/esm/src/types/index.d.ts +11 -14
  96. package/package.json +4 -9
  97. package/dist/esm/src/shared/calculateMinMax.d.ts +0 -2
  98. package/dist/esm/src/shared/calculateMinMax.js +0 -24
  99. package/dist/esm/src/shared/calculateMinMax_test.d.ts +0 -1
  100. package/dist/esm/src/shared/calculateMinMax_test.js +0 -38
  101. package/dist/esm/src/types/ImageFrame.d.ts +0 -43
  102. package/dist/esm/src/types/ImageFrame.js +0 -1
  103. package/dist/esm/src/types/MetadataModules.d.ts +0 -66
  104. package/dist/esm/src/types/MetadataModules.js +0 -1
  105. package/dist/esm/src/types/PixelDataTypedArray.d.ts +0 -2
  106. package/dist/esm/src/types/PixelDataTypedArray.js +0 -1
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@cornerstonejs/core"),require("dicom-parser")):"function"==typeof define&&define.amd?define("cornerstoneDICOMImageLoader",["@cornerstonejs/core","dicom-parser"],t):"object"==typeof exports?exports.cornerstoneDICOMImageLoader=t(require("@cornerstonejs/core"),require("dicom-parser")):e.cornerstoneDICOMImageLoader=t(e["@cornerstonejs/core"],e.dicomParser)}(this,((e,t)=>(()=>{"use strict";var r={464:t=>{t.exports=e},713:e=>{e.exports=t}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var a=n[e]={exports:{}};return r[e](a,a.exports,o),a.exports}o.m=r,o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.u=e=>e+".min.js",o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var t=o.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(/\/[^\/]+$/,"/"),o.p=e})(),o.b=document.baseURI||self.location.href;var a={};return(()=>{function e(e,t,r){if(void 0===e)throw new Error("decodeRGB: rgbBuffer must be defined");if(e.length%3!=0)throw new Error(`decodeRGB: rgbBuffer length ${e.length} must be divisible by 3`);const n=e.length/3;let o=0,a=0;if(r)for(let r=0;r<n;r++)t[a++]=e[o++],t[a++]=e[o++],t[a++]=e[o++],t[a++]=255;else t.set(e)}function t(e,t,r){if(void 0===e)throw new Error("decodeRGB: rgbBuffer must be defined");if(e.length%3!=0)throw new Error(`decodeRGB: rgbBuffer length ${e.length} must be divisible by 3`);const n=e.length/3;let o=0,a=0,i=n,s=2*n;if(r)for(let r=0;r<n;r++)t[o++]=e[a++],t[o++]=e[i++],t[o++]=e[s++],t[o++]=255;else for(let r=0;r<n;r++)t[o++]=e[a++],t[o++]=e[i++],t[o++]=e[s++]}function r(e,t,r){if(void 0===e)throw new Error("convertYBRFullByPixel: ybrBuffer must be defined");if(e.length%3!=0)throw new Error(`convertYBRFullByPixel: ybrBuffer length ${e.length} must be divisible by 3`);const n=e.length/3;let o=0,a=0;if(r)for(let r=0;r<n;r++){const r=e[o++],n=e[o++],i=e[o++];t[a++]=r+1.402*(i-128),t[a++]=r-.34414*(n-128)-.71414*(i-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[o++],i=e[o++];t[a++]=r+1.402*(i-128),t[a++]=r-.34414*(n-128)-.71414*(i-128),t[a++]=r+1.772*(n-128)}}function n(e,t,r){if(void 0===e)throw new Error("convertYBRFullByPlane: ybrBuffer must be defined");if(e.length%3!=0)throw new Error(`convertYBRFullByPlane: ybrBuffer length ${e.length} must be divisible by 3`);const n=e.length/3;let o=0,a=0,i=n,s=2*n;if(r)for(let r=0;r<n;r++){const r=e[a++],n=e[i++],l=e[s++];t[o++]=r+1.402*(l-128),t[o++]=r-.34414*(n-128)-.71414*(l-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[i++],l=e[s++];t[o++]=r+1.402*(l-128),t[o++]=r-.34414*(n-128)-.71414*(l-128),t[o++]=r+1.772*(n-128)}}o.r(a),o.d(a,{configure:()=>lt,convertColorSpace:()=>J,convertPALETTECOLOR:()=>st,convertRGBColorByPixel:()=>e,convertRGBColorByPlane:()=>t,convertYBRFullByPixel:()=>r,convertYBRFullByPlane:()=>n,createImage:()=>ie,decodeJPEGBaseline8BitColor:()=>Z,default:()=>ut,external:()=>ot,getImageFrame:()=>re,getMinMax:()=>Q,getPixelData:()=>H,internal:()=>u,isColorImage:()=>ne,isJPEGBaseline8BitColor:()=>ct,wadors:()=>me,wadouri:()=>Ke});let i={open(e,t){e.open("get",t,!0)},beforeSend(){},beforeProcessing:e=>Promise.resolve(e.response),imageCreated(){},strict:!1,decodeConfig:{convertFloatPixelDataToInt:!0,use16BitDataType:!1}};function s(e){i=Object.assign(i,e)}function l(){return i}const c=function(e,t,r={},n={}){const{cornerstone:o}=ot,a=l(),i=e=>{if("function"==typeof a.errorInterceptor){const t=new Error("request failed");t.request=e,t.response=e.response,t.status=e.status,a.errorInterceptor(t)}},s=new XMLHttpRequest,c=new Promise(((l,c)=>{a.open(s,e,r,n);const u=a.beforeSend(s,t,r,n);s.responseType="arraybuffer";const f=Object.assign({},r,u);Object.keys(f).forEach((function(t){null!==f[t]&&("Accept"===t&&-1!==e.indexOf("accept=")||s.setRequestHeader(t,f[t]))})),n.deferred={resolve:l,reject:c},n.url=e,n.imageId=t,s.onloadstart=function(r){a.onloadstart&&a.onloadstart(r,n);const i={url:e,imageId:t};o.triggerEvent(o.events,"cornerstoneimageloadstart",i)},s.onloadend=function(r){a.onloadend&&a.onloadend(r,n);const i={url:e,imageId:t};o.triggerEvent(o.events,"cornerstoneimageloadend",i)},s.onreadystatechange=function(e){a.onreadystatechange?a.onreadystatechange(e,n):4===s.readyState&&(200===s.status||206===s.status?a.beforeProcessing(s).then(l).catch((()=>{i(s),c(s)})):(i(s),c(s)))},s.onprogress=function(e){const t=e.loaded;let r,o;e.lengthComputable&&(r=e.total,o=Math.round(t/r*100)),a.onprogress&&a.onprogress(e,n)},s.onerror=function(){i(s),c(s)},s.onabort=function(){i(s),c(s)},s.send()}));return c.xhr=s,c},u={xhrRequest:c,setOptions:s,getOptions:l};const f=function(e,t,r){return t=t||0,e&&e.Value?e.Value.length<=t?r:e.Value[t]:r};const d=function(e,t,r){const n=f(e,t,r);if(void 0!==n)return parseFloat(n)};const m=function(e,t){const r=f(e,t);if(void 0!==r)return parseFloat(r)};const g=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 p(e){const t=e.indexOf(":");return e.substring(t+1)}function h(e,t=!0){return e&&e.Value?e.Value[0]&&t?e.Value[0]:e.Value:e}function x(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 y(e){let{52009230:t,52009229:r,"00280008":n,...o}=e;return t=h(t,!1),r=h(r,!1),n=h(n),{PerFrameFunctionalGroupsSequence:t,SharedFunctionalGroupsSequence:r,NumberOfFrames:n,rest:o}}function b(e){const t=e.indexOf("/frames/")+8,r=e.slice(0,t),n=parseInt(e.slice(t),10);return{metadata:w[`${r}1`],frame:n}}const P={_retrieveMultiframeMetadata:b,retrieveMultiframeMetadata:function(e){return b(p(e))},isMultiframe:function(e){const t=f(e["00280008"]);return t&&t>1}};let w=[],D={};const S={add:function(e,t){const r=p(e);t.isMultiframe=P.isMultiframe(t),w[r]=t},get:function(e){const t=p(e),r=w[t];if(r&&!r?.isMultiframe)return r;const n=D[t];if(n)return n;const o=P._retrieveMultiframeMetadata(t);if(!o||!o.metadata)return;const{metadata:a,frame:i}=o;if(a){const e=function(e,t){const{PerFrameFunctionalGroupsSequence:r,SharedFunctionalGroupsSequence:n,NumberOfFrames:o,rest:a}=y(t);if(r||o>1){const{shared:i,perFrame:s}=x(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(a,{"00280008":o},l)}return t}(i,a);return D[t]=e,e}},remove:function(e){const t=p(e);w[t]=void 0,D[t]=void 0},purge:function(){w=[],D={}}};function I(e){return"RECON TOMO"===e||"RECON GATED TOMO"===e}function T(e){return f(e["00080060"]).includes("NM")}function L(e,t){const r=h(e["00080008"],!1);if(r)return r[t]}function v(e){let t=g(e["00200037"],6);return!t&&T(e)&&(t=function(e){let t;const r=L(e,2);if(r&&I(r)){const r=h(e["00540022"]);r&&(t=g(r["00200037"],6))}return t}(e)),t}function C(e){let t=g(e["00200032"],3);return!t&&T(e)&&(t=function(e){let t;const r=L(e,2);if(r&&I(r)){const r=h(e["00540022"]);r&&(t=g(r["00200032"],3))}return t}(e)),t}function A(e,t,r){const n={};for(const o of r)try{const r=t(o,e);if(r){const e={};for(const t in r)if(t in r){e[E(t)]=r[t]}Object.assign(n,e)}}catch(e){console.error(`Error retrieving ${o} data:`,e)}return n}const E=e=>e.charAt(0).toUpperCase()+e.slice(1),M=["multiframeModule","generalSeriesModule","patientStudyModule","imagePlaneModule","nmMultiframeGeometryModule","imagePixelModule","modalityLutModule","voiLutModule","sopCommonModule","petIsotopeModule","overlayPlaneModule","transferSyntax","petSeriesModule","petImageModule"];function O(e,t){const r=g(e[t]);return r?r[0]:null}const F=function(e){return e?.Value?.length?Array.isArray(e.Value)?e.Value:"object"==typeof e.Value?(console.warn("Warning: Value should be an array, but an object was found. Encapsulating the object in an array."),[e.Value]):[]:[]};function B(e){const t=F(e["00186011"]);if(!t||!t.length)return null;return t.map((e=>{const t=O(e,"0018602C"),r=O(e,"0018602E"),n=O(e,"00186024"),o=O(e,"00186026");return{regionLocationMinY0:O(e,"0018601A"),regionLocationMaxY1:O(e,"0018601E"),regionLocationMinX0:O(e,"00186018"),regionLocationMaxX1:O(e,"0018601C"),referencePixelX0:O(e,"00186020"),referencePixelY0:O(e,"00186022"),physicalDeltaX:t,physicalDeltaY:r,physicalUnitsXDirection:n,physicalUnitsYDirection:o,referencePhysicalPixelValueY:O(e,"0018602A"),referencePhysicalPixelValueX:O(e,"00186028"),regionSpatialFormat:O(e,"00186012"),regionDataType:O(e,"00186014"),regionFlags:O(e,"00186016"),transducerFrequency:O(e,"00186030")}}))}function R(e,t){return{transferSyntaxUID:f(t["00020010"])||f(t["00083002"])}}const U=function e(t,r){const{MetadataModules:n}=ot.cornerstone.Enums,{dicomParser:o}=ot;if(t===n.MULTIFRAME){const{metadata:e,frame:t}=P.retrieveMultiframeMetadata(r);if(!e)return;const{PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:o,NumberOfFrames:a}=y(e);if(n||a>1){const{shared:e,perFrame:r}=x(n,o,t);return{NumberOfFrames:a,PerFrameFunctionalInformation:r,SharedFunctionalInformation:e}}return{NumberOfFrames:a}}const a=S.get(r);if(a){if(t===n.GENERAL_STUDY)return{studyDescription:f(a["00081030"]),studyDate:o.parseDA(f(a["00080020"])),studyTime:o.parseTM(f(a["00080030"],0,"")),accessionNumber:f(a["00080050"])};if(t===n.GENERAL_SERIES)return{modality:f(a["00080060"]),seriesInstanceUID:f(a["0020000E"]),seriesNumber:m(a["00200011"]),studyInstanceUID:f(a["0020000D"]),seriesDate:o.parseDA(f(a["00080021"])),seriesTime:o.parseTM(f(a["00080031"],0,"")),acquisitionDate:o.parseDA(f(a["00080022"])),acquisitionTime:o.parseTM(f(a["00080032"],0,""))};if(t===n.GENERAL_IMAGE)return{sopInstanceUID:f(a["00080018"]),instanceNumber:m(a["00200013"]),lossyImageCompression:f(a["00282110"]),lossyImageCompressionRatio:m(a["00282112"]),lossyImageCompressionMethod:f(a["00282114"])};if(t===n.PATIENT)return{patientID:f(a["00100020"]),patientName:f(a["00100010"])};if(t===n.PATIENT_STUDY)return{patientAge:m(a["00101010"]),patientSize:m(a["00101020"]),patientSex:f(a["00100040"]),patientWeight:m(a["00101030"])};if(t===n.NM_MULTIFRAME_GEOMETRY){const e=f(a["00080060"]),t=L(a,2);return{modality:e,imageType:f(a["00080008"]),imageSubType:t,imageOrientationPatient:v(a),imagePositionPatient:C(a),sliceThickness:m(a["00180050"]),spacingBetweenSlices:m(a["00180088"]),pixelSpacing:g(a["00280030"],2),numberOfFrames:m(a["00280008"]),isNMReconstructable:I(t)&&e.includes("NM")}}if(t===n.IMAGE_PLANE){const e=v(a),t=C(a),r=g(a["00280030"],2);let n=null,o=null;r&&(o=r[0],n=r[1]);let i=null,s=null;return e&&(i=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],s=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:f(a["00200052"]),rows:m(a["00280010"]),columns:m(a["00280011"]),imageOrientationPatient:e,rowCosines:i,columnCosines:s,imagePositionPatient:t,sliceThickness:m(a["00180050"]),sliceLocation:m(a["00201041"]),pixelSpacing:r,rowPixelSpacing:o,columnPixelSpacing:n}}if(t===n.ULTRASOUND_ENHANCED_REGION)return B(a);if(t===n.CALIBRATION){if("US"===f(a["00080060"])){return{sequenceOfUltrasoundRegions:B(a)}}}if(t===n.IMAGE_URL)return function(e,t){const{transferSyntaxUID:r}=R(e,t),n=ot.cornerstone.utilities.isVideoTransferSyntax(r),o=e.substring(7),a=o.replace("/frames/","/thumbnail/");let i=o.replace("/frames/","/rendered/");n&&(i=i.replace("/rendered/1","/rendered"));return{isVideo:n,rendered:i,thumbnail:a}}(r,a);if(t===n.CINE)return function(e,t){const r=f(t["00180040"]);return{cineRate:r,numberOfFrames:m(t["00280008"])}}(0,a);if(t===n.IMAGE_PIXEL)return{samplesPerPixel:m(a["00280002"]),photometricInterpretation:f(a["00280004"]),rows:m(a["00280010"]),columns:m(a["00280011"]),bitsAllocated:m(a["00280100"]),bitsStored:m(a["00280101"]),highBit:f(a["00280102"]),pixelRepresentation:m(a["00280103"]),planarConfiguration:m(a["00280006"]),pixelAspectRatio:f(a["00280034"]),smallestPixelValue:m(a["00280106"]),largestPixelValue:m(a["00280107"]),redPaletteColorLookupTableDescriptor:g(a["00281101"]),greenPaletteColorLookupTableDescriptor:g(a["00281102"]),bluePaletteColorLookupTableDescriptor:g(a["00281103"]),redPaletteColorLookupTableData:g(a["00281201"]),greenPaletteColorLookupTableData:g(a["00281202"]),bluePaletteColorLookupTableData:g(a["00281203"])};if(t===n.VOI_LUT)return{windowCenter:g(a["00281050"],1),windowWidth:g(a["00281051"],1)};if(t===n.MODALITY_LUT)return{rescaleIntercept:m(a["00281052"]),rescaleSlope:m(a["00281053"]),rescaleType:f(a["00281054"])};if(t===n.SOP_COMMON)return{sopClassUID:f(a["00080016"]),sopInstanceUID:f(a["00080018"])};if(t===n.PET_ISOTOPE){const e=f(a["00540016"]);if(void 0===e)return;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:o.parseTM(f(e["00181072"],0,"")),radiopharmaceuticalStartDateTime:f(e["00181078"],0,""),radionuclideTotalDose:m(e["00181074"]),radionuclideHalfLife:m(e["00181075"])}}}return t===n.OVERLAY_PLANE?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 o=f(e[`${n}3000`]);if(!o)continue;const a=[];for(let t=0;t<o.length;t++)for(let r=0;r<8;r++){const n=e.Value[o.dataOffset+t];a[8*t+r]=n>>r&1}t.push({rows:m(e[`${n}0010`]),columns:m(e[`${n}0011`]),type:f(e[`${n}0040`]),x:m(e[`${n}0050`],1)-1,y:m(e[`${n}0050`],0)-1,pixelData:a,description:f(e[`${n}0022`]),label:f(e[`${n}1500`]),roiArea:f(e[`${n}1301`]),roiMean:f(e[`${n}1302`]),roiStandardDeviation:f(e[`${n}1303`])})}return{overlays:t}}(a):"transferSyntax"===t?R(r,a):t===n.PET_SERIES?{correctedImage:f(a["00280051"]),units:f(a["00541001"]),decayCorrection:f(a["00541102"])}:t===n.PET_IMAGE?{frameReferenceTime:m(a["00541300"]),actualFrameDuration:m(a["00181242"])}:"instance"===t?A(r,e,M):void 0}};function N(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 k=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]&&N(n,e,t))return t;return-1};var _=o(464);const{ImageQualityStatus:$}=_.Enums;function j(e,t,r){r||={};const n=new Uint8Array(t),o=!!r?.isPartial;if(-1===e.indexOf("multipart"))return{contentType:e,imageQualityStatus:o?$.SUBRESOLUTION:$.FULL_RESOLUTION,pixelData:n};let{tokenIndex:a,responseHeaders:i,boundary:s,multipartContentType:l}=r;if(a||=k(n,"\r\n\r\n"),-1===a)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 o=t;o<t+r;o++)n+=String.fromCharCode(e[o]);return n}(n,0,a);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=a+4,u=k(n,s,c);if(-1===u&&!o)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=a,r.boundary=s,r.responseHeaders=i,r.multipartContentType=l,r.isPartial=-1===u,{contentType:l,extractDone:!o||-1!==u,tokenIndex:a,responseHeaders:i,boundary:s,multipartContentType:l,pixelData:t.slice(c,u-2)}}const{ImageQualityStatus:V}=_.Enums;function G(e,t=!0){return t?e.imageQualityStatus??V.FULL_RESOLUTION:V.SUBRESOLUTION}const{ProgressiveIterator:q}=_.utilities;function Y(e,t,r={},n={}){const o=l(),{retrieveOptions:a={},streamingData:i={}}=n,s=a.chunkSize||131072,c=new q("streamRequest");return c.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 o=await fetch(e,{headers:r,signal:void 0});if(200!==o.status)throw new Error(`Couldn't retrieve ${e} got status ${o.status}`);const l=o.body.getReader(),c=o.headers,u=c.get("content-type"),f=Number(c.get("Content-Length"));let d=!1,m=i.encodedData,g=i.lastSize||0;for(i.isPartial=!0;!d;){const{done:r,value:o}=await l.read();if(m=W(m,o),!m){if(d)throw new Error(`Done but no image frame available ${t}`);continue}if(d=r||m.byteLength===f,!d&&m.length<g+s)continue;g=m.length,i.isPartial=!r;const c=j(u,m,i),p=G(a,d),h={url:e,imageId:t,...c,percentComplete:r?100:100*c.pixelData?.length/f,imageQualityStatus:p,done:d};n.add(h,d)}}catch(e){(e=>{if("function"==typeof o.errorInterceptor){const e=new Error("request failed");o.errorInterceptor(e)}})(),console.error(e),l(e)}})),c.getNextPromise()}function W(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 z(e,t,r={},n={}){const o=l(),{retrieveOptions:a={},streamingData:i}=n,s=i.chunkSize||function(e,t,r){const n=t[r];if("function"!=typeof n)return n;const o=S.get(e);return n(o,e)}(t,a,"chunkSize")||65536,c=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:o=65536}=e,{rangeIndex:a=0}=t;if(!(-1!==a||r&&n))return[0,""];if(-1===a||n?.byteLength>r-o)return[n?.byteLength||0,""];return[n?.byteLength||0,o*(a+1)-1]}(i,a),{encodedData:n,responseHeaders:o}=await async function(e,t,r,n){r&&(t=Object.assign(t,{Range:`bytes=${r[0]}-${r[1]}`}));let{encodedData:o}=n;if(r[1]&&o?.byteLength>r[1])return n;const a=await fetch(e,{headers:t,signal:void 0}),i=await a.arrayBuffer(),s=new Uint8Array(i),{status:l}=a;let c;o?(c=new Uint8Array(o.length+s.length),c.set(o,0),c.set(s,o.length),n.rangesFetched=1):(c=new Uint8Array(s.length),c.set(s,0),n.rangesFetched++);n.encodedData=o=c,n.responseHeaders=a.headers;const u=a.headers.get("Content-Range");u?n.totalBytes=Number(u.split("/")[1]):206===l&&r?""===r[1]||o?.length<r[1]?n.totalBytes=o.byteLength:n.totalBytes=Number.MAX_SAFE_INTEGER:n.totalBytes=o?.byteLength;return n}(e,l,r,i),c=o.get("content-type"),{totalBytes:u}=i,f=u===n.byteLength,d=j(c,n,{isPartial:!0}),m=G(a,f||d.extractDone);t({...d,imageQualityStatus:m,percentComplete:d.extractDone?100:100*s/u})}catch(e){(e=>{if("function"==typeof o.errorInterceptor){const e=new Error("request failed");o.errorInterceptor(e)}else console.warn("rangeRequest:Caught",e)})(e),console.error(e),n(e)}}));return c}const H=function(e,t,r="application/octet-stream",n){const{streamingData:o,retrieveOptions:a={}}=n||{},i={Accept:r};let s=a.urlArguments?`${e}${-1===e.indexOf("?")?"?":"&"}${a.urlArguments}`:e;if(a.framesPath&&(s=s.replace("/frames/",a.framesPath)),o?.url!==s&&(n.streamingData={url:s}),void 0!==a.rangeIndex)return z(s,t,i,n);if(a.streaming)return Y(s,t,i,n);const l=c(s,t,i),{xhr:u}=l;return l.then((function(e){const t=j(u.getResponseHeader("Content-Type")||"application/octet-stream",new Uint8Array(e));return t.imageQualityStatus=G(a,!0),t}))};const Q=function(e){let t,r=e[0],n=e[0];const o=e.length;for(let a=1;a<o;a++)t=e[a],r=Math.min(r,t),n=Math.max(n,t);return{min:r,max:n}};function X(r,n,o){0===r.planarConfiguration?e(r.pixelData,n,o):t(r.pixelData,n,o)}function J(e,t,o){if("RGB"===e.photometricInterpretation)X(e,t,o);else if("YBR_RCT"===e.photometricInterpretation)X(e,t,o);else if("YBR_ICT"===e.photometricInterpretation)X(e,t,o);else if("PALETTE COLOR"===e.photometricInterpretation)st(e,t,o);else if("YBR_FULL_422"===e.photometricInterpretation)!function(e,t,r){if(void 0===e)throw new Error("convertYBRFull422ByPixel: ybrBuffer must be defined");if(e.length%2!=0)throw new Error(`convertYBRFull422ByPixel: ybrBuffer length ${e.length} must be divisible by 2`);const n=e.length/2;let o=0,a=0;if(r)for(let r=0;r<n;r+=2){const r=e[o++],n=e[o++],i=e[o++],s=e[o++];t[a++]=r+1.402*(s-128),t[a++]=r-.34414*(i-128)-.71414*(s-128),t[a++]=r+1.772*(i-128),t[a++]=255,t[a++]=n+1.402*(s-128),t[a++]=n-.34414*(i-128)-.71414*(s-128),t[a++]=n+1.772*(i-128),t[a++]=255}else for(let r=0;r<n;r+=2){const r=e[o++],n=e[o++],i=e[o++],s=e[o++];t[a++]=r+1.402*(s-128),t[a++]=r-.34414*(i-128)-.71414*(s-128),t[a++]=r+1.772*(i-128),t[a++]=n+1.402*(s-128),t[a++]=n-.34414*(i-128)-.71414*(s-128),t[a++]=n+1.772*(i-128)}}(e.pixelData,t,o);else{if("YBR_FULL"!==e.photometricInterpretation)throw new Error(`No color space conversion for photometric interpretation ${e.photometricInterpretation}`);!function(e,t,o){0===e.planarConfiguration?r(e.pixelData,t,o):n(e.pixelData,t,o)}(e,t,o)}}function K(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 Z=function(e,t,r){const n=(new Date).getTime(),o=new Blob([t],{type:"image/jpeg"});return new Promise(((t,a)=>{const i=new FileReader;void 0===i.readAsBinaryString?i.readAsArrayBuffer(o):i.readAsBinaryString(o),i.onload=function(){const o=new Image;o.onload=function(){r.height=o.height,r.width=o.width,e.rows=o.height,e.columns=o.width;const a=r.getContext("2d");a.drawImage(this,0,0);const i=a.getImageData(0,0,o.width,o.height),s=(new Date).getTime();e.pixelData=new Uint8Array(i.data.buffer),e.imageData=i,e.decodeTimeInMS=s-n;const l=Q(e.pixelData);e.smallestPixelValue=l.min,e.largestPixelValue=l.max,e.pixelDataLength=e.pixelData.length,t(e)},o.onerror=function(e){a(e)},void 0===i.readAsBinaryString?o.src=`data:image/jpeg;base64,${window.btoa(K(i.result))}`:o.src=`data:image/jpeg;base64,${window.btoa(i.result)}`},i.onerror=e=>{a(e)}}))};function ee(e,t,r,n,o){const a={...n};delete a.loader,delete a.streamingData;const i=ot.cornerstone.getWebWorkerManager(),s=a.priority||void 0;a.transferPixelData&&r.buffer;return i.executeTask("dicomImageLoader","decodeTask",{imageFrame:e,transferSyntax:t,pixelData:r,options:a,decodeConfig:o},{priority:s,requestType:a?.requestType})}const te=function(e,t,r,n,o={},a){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 ee(e,t,r,o,a);case"1.2.840.10008.1.2.4.50":return 8!==e.bitsAllocated||3!==e.samplesPerPixel&&4!==e.samplesPerPixel?ee(e,t,r,o,a):Z(e,r,n)}return Promise.reject(new Error(`No decoder for transfer syntax ${t}`))};const re=function(e){const{cornerstone:t}=ot,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 ne(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}let oe="";function ae(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 ie=function(e,t,r,n={}){const o=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:a}=ot,{MetadataModules:i}=a.Enums,s=document.createElement("canvas"),c=re(e);if(c.decodeLevel=n.decodeLevel,n.allowFloatRendering=a.canRenderFloatTextures(),n.preScale.enabled){const t=function(e,t){const r=e.get("modalityLutModule",t)||{},n=e.get("generalSeriesModule",t)||{},{modality:o}=n,a={rescaleSlope:r.rescaleSlope,rescaleIntercept:r.rescaleIntercept,modality:o},i=e.get("scalingModule",t)||{};return{...a,..."PT"===o&&{suvbw:i.suvbw}}}(a.metaData,e);t&&(n.preScale={...n.preScale,scalingParameters:t})}n.isSharedArrayBuffer=n.targetBuffer?.arrayBuffer&&n.targetBuffer.arrayBuffer instanceof SharedArrayBuffer;const{decodeConfig:u}=l();u.use16BitDataType=!!(n&&"Uint16Array"===n.targetBuffer?.type||"Int16Array"===n.targetBuffer?.type)||(n.useNativeDataType||u.use16BitDataType),Object.keys(c).forEach((e=>{("function"==typeof c[e]||c[e]instanceof Promise)&&delete c[e]}));const f=te(c,r,t,s,n,u),{use16BitDataType:d}=u,m=ne(c.photometricInterpretation);return new Promise(((t,r)=>{f.then((function(r){if(n.skipCreateImage)return t(r);let l=!1;if(n.targetBuffer&&n.targetBuffer.type&&!m){const{arrayBuffer:e,type:t,offset:o=0,length:a}=n.targetBuffer,i=r.pixelDataLength,s=o,c=null!=a?a:i-s,u={Uint8Array,Uint16Array:d?Uint16Array:void 0,Int16Array:d?Int16Array:void 0,Float32Array};if(c!==r.pixelDataLength)throw new Error(`target array for image does not have the same length (${c}) as the decoded image length (${r.pixelDataLength}).`);const f=u[t],m=e?new f(e,s,c):new f(r.pixelData);if(c!==r.pixelDataLength)throw new Error("target array for image does not have the same length as the decoded image length.");r.pixelData=m,l=!0}l||ae(r);const c=a.metaData.get(i.IMAGE_PLANE,e)||{},u=a.metaData.get(i.VOI_LUT,e)||{},f=a.metaData.get(i.MODALITY_LUT,e)||{},g=a.metaData.get(i.SOP_COMMON,e)||{},p=a.metaData.get(i.CALIBRATION,e)||{},{rows:h,columns:x}=r;if(m){if(function(e){if(void 0===e)return!1;const{rows:t,columns:r,photometricInterpretation:n,pixelDataLength:o}=e;return o!==4*r*t&&(n.endsWith("420")?o===(3*Math.ceil(r/2)+Math.floor(r/2))*t:n.endsWith("422")?o===(3*Math.ceil(r/2)+Math.floor(r/2))*Math.ceil(t/2)+Math.floor(t/2)*r:"RGB"!==n)}(r)){s.height=r.rows,s.width=r.columns;let e=s.getContext("2d").createImageData(r.columns,r.rows);o||(e={...e,data:new Uint8ClampedArray(r.samplesPerPixel*r.columns*r.rows)}),J(r,e.data,o),r.imageData=e,r.pixelData=e.data,r.pixelDataLength=e.data.length}else if(!o&&r.pixelDataLength===4*h*x){const e=new Uint8Array(r.pixelData.length/4*3);r.pixelData=function(e,t){const r=e.length/4;let n=0,o=0;for(let a=0;a<r;a++)t[o++]=e[n++],t[o++]=e[n++],t[o++]=e[n++],n++;return t}(r.pixelData,e),r.pixelDataLength=r.pixelData.length}const e=Q(r.pixelData);r.smallestPixelValue=e.min,r.largestPixelValue=e.max}const y={imageId:e,color:m,calibration:p,columnPixelSpacing:c.columnPixelSpacing,columns:r.columns,height:r.rows,preScale:r.preScale,intercept:f.rescaleIntercept?f.rescaleIntercept:0,slope:f.rescaleSlope?f.rescaleSlope:1,invert:"MONOCHROME1"===r.photometricInterpretation,minPixelValue:r.smallestPixelValue,maxPixelValue:r.largestPixelValue,rowPixelSpacing:c.rowPixelSpacing,rows:r.rows,sizeInBytes:r.pixelData.byteLength,width:r.columns,windowCenter:u.windowCenter?u.windowCenter[0]:void 0,windowWidth:u.windowWidth?u.windowWidth[0]:void 0,voiLUTFunction:u.voiLUTFunction?u.voiLUTFunction:void 0,decodeTimeInMS:r.decodeTimeInMS,floatPixelData:void 0,imageFrame:r,rgba:m&&o,getPixelData:()=>r.pixelData,getCanvas:void 0,numComps:void 0};var b;if(y.color&&(y.getCanvas=function(){if(oe===e)return s;const t=y.columns,n=y.rows;s.height=n,s.width=t;const o=s.getContext("2d"),a=o.createImageData(t,n),i=r.pixelData;if(i.length===t*n*4)for(let e=0;e<i.length;e++)a.data[e]=i[e];else if(i.length===t*n*3){let e=0;for(let t=0;t<i.length;t+=3)a.data[e++]=i[t],a.data[e++]=i[t+1],a.data[e++]=i[t+2],a.data[e++]=255}return r.pixelData=a.data,r.pixelDataLength=a.data.length,r.imageData=a,o.putImageData(r.imageData,0,0),oe=e,s}),f.modalityLUTSequence&&f.modalityLUTSequence.length>0&&("1.2.840.10008.5.1.4.1.1.12.1"!==(b=g.sopClassUID)&&"1.2.840.10008.5.1.4.1.1.12.2.1"!==b)&&(y.modalityLUT=f.modalityLUTSequence[0]),u.voiLUTSequence&&u.voiLUTSequence.length>0&&(y.voiLUT=u.voiLUTSequence[0]),y.color&&(y.windowWidth=256,y.windowCenter=128),void 0===y.windowCenter||void 0===y.windowWidth){const e=y.imageFrame.minAfterScale,t=y.imageFrame.maxAfterScale;y.windowWidth=t-e,y.windowCenter=(t+e)/2}t(y)}),r)}))},{ProgressiveIterator:se}=_.utilities,{ImageQualityStatus:le}=_.Enums,ce=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 ue(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 o={"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&&o[e]?o[e]:n.type&&o[n.type]?o[n.type]:o[e]?o[e]:t}function fe(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=ot.cornerstone.imageRetrievalPoolManager,n=(new Date).getTime(),o=new se("decompress"),a=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,a){o.generate((async o=>{const i=se.as(H(e,r,a,t));let s=10;for await(const e of i){const{pixelData:a,imageQualityStatus:i=le.FULL_RESOLUTION,percentComplete:l,done:c=!0,extractDone:u=!0}=e,f=ue(e.contentType);if(!u&&!ce.has(f))continue;const d=e.decodeLevel??(i===le.FULL_RESOLUTION?0:fe(l,t.retrieveOptions?.decodeLevel));if(c||!(s<=d))try{const e={...t,decodeLevel:d},l=await ie(r,a,f,e),u=(new Date).getTime();l.loadTimeInMS=u-n,l.transferSyntaxUID=f,l.imageQualityStatus=i,o.add(l,c),s=d}catch(e){if(u)throw console.warn("Couldn't decode",e),e}}}))}.bind(this,c,e,"multipart/related; type=application/octet-stream; transfer-syntax=*"),a,i,s,l),{promise:o.getDonePromise(),cancelFn:void 0}};const me={metaData:{getNumberString:d,getNumberValue:m,getNumberValues:g,getValue:f,metaDataProvider:U},findIndexOfString:k,getPixelData:H,loadImage:de,metaDataManager:S,register:function(e){e.registerImageLoader("wadors",de),e.metaData.addProvider(U)}};function ge(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 pe(e,t,r){const n=[],o=e.elements[t];for(let a=0;a<r[0];a++)16===r[2]?n[a]=e.uint16(t,a):n[a]=e.byteArray[a+o.dataOffset];return n}const he=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=ge(e,"x00281101"),t.greenPaletteColorLookupTableDescriptor=ge(e,"x00281102"),t.bluePaletteColorLookupTableDescriptor=ge(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=pe(e,"x00281201",t.redPaletteColorLookupTableDescriptor),t.greenPaletteColorLookupTableData=pe(e,"x00281202",t.greenPaletteColorLookupTableDescriptor),t.bluePaletteColorLookupTableData=pe(e,"x00281203",t.bluePaletteColorLookupTableDescriptor)}(e,t),t};function xe(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 o={id:"1",firstValueMapped:n,numBitsPerEntry:t.uint16("x00283002",2),lut:[]};for(let n=0;n<r;n++)o.lut[n]=0===e?t.uint16("x00283006",n):t.int16("x00283006",n);return o}const ye=function(e,t){if(!t||!t.items||!t.items.length)return;const r=[];for(let n=0;n<t.items.length;n++){const o=xe(e,t.items[n].dataSet);o&&r.push(o)}return r};const be=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 Pe=function(e,t,r){const n=[],o=e.string(t);if(!o)return;const a=o.split("\\");if(!(r&&a.length<r)){for(let e=0;e<a.length;e++)n.push(parseFloat(a[e]));return n}};const we=function(e){const t=e.indexOf(":");let r=e.substring(t+1);const n=r.indexOf("frame=");let o;if(-1!==n){const e=r.substring(n+6);o=parseInt(e,10),r=r.substring(0,n-1)}return{scheme:e.substring(0,t),url:r,frame:o,pixelDataFrame:void 0!==o?o-1:void 0}};function De(e){const{dicomParser:t}=ot;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 Se(e,t,r){const n=De(e),{uri:o,imageId:a,fileTotalLength:i}=r;return n.fetchMore=async function(s){const l=Object.assign({uri:o,imageId:a,fetchedLength:e.length,lengthToFetch:i-e.length},s),{fetchedLength:c,lengthToFetch:u}=l,{arrayBuffer:f}=await t(o,a,{byteRange:`${c}-${c+u}`}),d=new Uint8Array(f),m=new Uint8Array(n.byteArray.length+d.length);return m.set(n.byteArray),m.set(d,n.byteArray.length),Se(m,t,r)},n}function Ie(e,t,r){const n={};(t?Object.values(t.items[0].dataSet.elements):[]).map((e=>n[e.tag]=e));const o={};return(e?Object.values(e.items[r-1].dataSet.elements):[]).map((e=>o[e.tag]=e)),{shared:n,perFrame:o}}function Te(e){if(!e)return;const{elements:t,...r}=e,{x52009230:n,x52009229:o,...a}=t;return{NumberOfFrames:e.intString("x00280008"),PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:o,otherElements:a,otherAttributtes:r}}function Le(e){if(Ee[e])return Ee[e]}function ve(e){if(!e)return!1;const t=e.intString("x00280008");return t&&t>1}const Ce={_get:Le,generateMultiframeWADOURIs:function(e){const t=[],r=Le(e);if(ve(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 o;return o=Ee[r]?Ee[r].dataSet:void 0,{dataSet:o,frame:n}},isMultiframeDataset:function(e){return ve(Le(e))}};let Ae=0,Ee={},Me={};function Oe(){return{cacheSizeInBytes:Ae,numberOfDataSetsCached:Object.keys(Ee).length}}const Fe={isLoaded:function(e){return void 0!==Ee[e]},load:function(e,t=c,r){const{cornerstone:n,dicomParser:o}=ot;if(Ee[e])return new Promise((t=>{Ee[e].cacheCount++,t(Ee[e].dataSet)}));if(Me[e])return Me[e].cacheCount++,Me[e];const a=t(e,r),i=new Promise(((s,l)=>{a.then((async function(a){const c={isPartialContent:!1,fileTotalLength:null};if(!(a instanceof ArrayBuffer)){if(!a.arrayBuffer)return l(new Error("If not returning ArrayBuffer, must return object with `arrayBuffer` parameter"));c.isPartialContent=a.flags.isPartialContent,c.fileTotalLength=a.flags.fileTotalLength,a=a.arrayBuffer}const u=new Uint8Array(a);let f;try{f=c.isPartialContent?await Se(u,t,{uri:e,imageId:r,fileTotalLength:c.fileTotalLength}):o.parseDicom(u)}catch(e){return l(e)}Ee[e]={dataSet:f,cacheCount:i.cacheCount},Ae+=f.byteArray.length,s(f),n.triggerEvent(n.events,"datasetscachechanged",{uri:e,action:"loaded",cacheInfo:Oe()})}),l).then((()=>{delete Me[e]}),(()=>{delete Me[e]}))}));return i.cacheCount=1,Me[e]=i,i},unload:function(e){const{cornerstone:t}=ot;Ee[e]&&(Ee[e].cacheCount--,0===Ee[e].cacheCount&&(Ae-=Ee[e].dataSet.byteArray.length,delete Ee[e],t.triggerEvent(t.events,"datasetscachechanged",{uri:e,action:"unloaded",cacheInfo:Oe()})))},getInfo:Oe,purge:function(){Ee={},Me={},Ae=0},get:function(e){let t;if(e.includes("&frame=")){const{frame:r,dataSet:n}=Ce.retrieveMultiframeDataset(e);t=function(e,t){if(!t)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:o,otherElements:a}=Te(t);if(n||r>1){const{shared:r,perFrame:i}=Ie(n,o,e),s={elements:{...a,...r,...i}},l=Object.create(t);return Object.assign(l,s)}return t}(r,n)}else Ee[e]&&(t=Ee[e].dataSet);return t},update:function(e,t){const r=Ee[e];r?(Ae-=r.dataSet.byteArray.length,r.dataSet=t,Ae+=t.byteArray.length,ot.cornerstone.triggerEvent(ot.cornerstone.events,"datasetscachechanged",{uri:e,action:"updated",cacheInfo:Oe()})):console.error(`No loaded dataSet for uri ${e}`)}};function Be(e,t){const r=e.string("x00080008");if(r){const e=r.split("\\");if(e.length>t)return e[t]}}function Re(e){let t=Pe(e,"x00200037",6);return!t&&e.elements.x00209116&&(t=Pe(e.elements.x00209116.items[0].dataSet,"x00200037",6)),t||(t=function(e){let t;const r=e.string("x00080060");if(r?.includes("NM")){const r=Be(e,2);r&&I(r)&&e.elements.x00540022&&(t=Pe(e.elements.x00540022.items[0].dataSet,"x00200037",6))}return t}(e)),t}function Ue(e){let t=Pe(e,"x00200032",3);return!t&&e.elements.x00209113&&(t=Pe(e.elements.x00209113.items[0].dataSet,"x00200032",3)),t||(t=function(e){let t;const r=e.string("x00080060");if(r?.includes("NM")){const r=Be(e,2);r&&I(r)&&e.elements.x00540022&&(t=Pe(e.elements.x00540022.items[0].dataSet,"x00200032",3))}return t}(e)),t}function Ne(e){let t=Pe(e,"x00280030",2);return!t&&e.elements.x00289110&&(t=Pe(e.elements.x00289110.items[0].dataSet,"x00280030",2)),t}function ke(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 _e=function e(t,r){const{MetadataModules:n}=ot.cornerstone.Enums,{dicomParser:o}=ot;if(Array.isArray(r))return;const a=we(r);if(t===n.MULTIFRAME){const e=Ce.retrieveMultiframeDataset(a.url);if(!e.dataSet)return;const t=function(e,t){if(!e)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:o}=Te(e);if(n||r>1){const{shared:e,perFrame:a}=Ie(n,o,t);return{NumberOfFrames:r,PerFrameFunctionalInformation:a,SharedFunctionalInformation:e}}return{NumberOfFrames:r}}(e.dataSet,e.frame);return t}let i=a.url;a.frame&&(i=`${i}&frame=${a.frame}`);const s=Fe.get(i);if(s){if(t===n.GENERAL_STUDY)return{studyDescription:s.string("x00081030"),studyDate:o.parseDA(s.string("x00080020")),studyTime:o.parseTM(s.string("x00080030")||""),accessionNumber:s.string("x00080050")};if(t===n.GENERAL_SERIES)return{modality:s.string("x00080060"),seriesInstanceUID:s.string("x0020000e"),seriesNumber:s.intString("x00200011"),studyInstanceUID:s.string("x0020000d"),seriesDate:o.parseDA(s.string("x00080021")),seriesTime:o.parseTM(s.string("x00080031")||""),acquisitionDate:o.parseDA(s.string("x00080022")),acquisitionTime:o.parseTM(s.string("x00080032")||"")};if(t===n.GENERAL_IMAGE)return{sopInstanceUID:s.string("x00080018"),instanceNumber:s.intString("x00200013"),lossyImageCompression:s.string("x00282110"),lossyImageCompressionRatio:s.floatString("x00282112"),lossyImageCompressionMethod:s.string("x00282114")};if(t===n.PATIENT)return{patientID:s.string("x00100020"),patientName:s.string("x00100010")};if(t===n.PATIENT_STUDY)return{patientAge:s.intString("x00101010"),patientSize:s.floatString("x00101020"),patientSex:s.string("x00100040"),patientWeight:s.floatString("x00101030")};if(t===n.NM_MULTIFRAME_GEOMETRY){const e=s.string("x00080060"),t=Be(s,2);return{modality:e,imageType:s.string("x00080008"),imageSubType:t,imageOrientationPatient:Re(s),imagePositionPatient:Ue(s),sliceThickness:ke(s),pixelSpacing:Ne(s),numberOfFrames:s.uint16("x00280008"),isNMReconstructable:I(t)&&e.includes("NM")}}if(t===n.IMAGE_PLANE){const e=Re(s),t=Ue(s),r=Ne(s),n=ke(s);let o=null,a=null;r&&(a=r[0],o=r[1]);let i=null,l=null;return e&&(i=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],l=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:s.string("x00200052"),rows:s.uint16("x00280010"),columns:s.uint16("x00280011"),imageOrientationPatient:e,rowCosines:i,columnCosines:l,imagePositionPatient:t,sliceThickness:n,sliceLocation:s.floatString("x00201041"),pixelSpacing:r,rowPixelSpacing:a,columnPixelSpacing:o}}if(t===n.CINE)return{frameTime:s.floatString("x00181063")};if(t===n.IMAGE_PIXEL)return he(s);if(t===n.VOI_LUT){const e=be(s);return{windowCenter:Pe(s,"x00281050",1),windowWidth:Pe(s,"x00281051",1),voiLUTSequence:ye(e,s.elements.x00283010)}}if(t===n.MODALITY_LUT)return{rescaleIntercept:s.floatString("x00281052"),rescaleSlope:s.floatString("x00281053"),rescaleType:s.string("x00281054"),modalityLUTSequence:ye(s.uint16("x00280103"),s.elements.x00283000)};if(t===n.SOP_COMMON)return{sopClassUID:s.string("x00080016"),sopInstanceUID:s.string("x00080018")};if(t===n.PET_ISOTOPE){const e=s.elements.x00540016;if(void 0===e)return;const t=e.items[0].dataSet;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:o.parseTM(t.string("x00181072")||""),radionuclideTotalDose:t.floatString("x00181074"),radionuclideHalfLife:t.floatString("x00181075")}}}if(t===n.OVERLAY_PLANE)return 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 o=e.elements[`${n}3000`];if(!o)continue;const a=[];for(let t=0;t<o.length;t++)for(let r=0;r<8;r++){const n=e.byteArray[o.dataOffset+t];a[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:a,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}}(s);if("transferSyntax"===t){let e;try{e=s.string("x00020010")}catch(e){}return{transferSyntaxUID:e}}return t===n.PET_SERIES?{correctedImage:s.string("x00280051"),units:s.string("x00541001"),decayCorrection:s.string("x00541102")}:t===n.PET_IMAGE?{frameReferenceTime:s.floatString(s.string("x00541300")||""),actualFrameDuration:s.intString(s.string("x00181242"))}:"instance"===t?A(r,e,M):void 0}};let $e=[];const je={add:function(e){return"dicomfile:"+($e.push(e)-1)},get:function(e){return $e[e]},remove:function(e){$e[e]=void 0},purge:function(){$e=[]}};var Ve=o(713);function Ge(e,t){const{dicomParser:r}=ot;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,o=new Ve.ByteStream(e.byteArrayParser,e.byteArray,e.elements.x7fe00010.dataOffset),a=(0,Ve.readSequenceItem)(o);if("xfffee000"!==a.tag)throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000";o.seek(a.length);const i=o.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(o.byteArray.buffer.slice(o.byteArray.byteOffset+s,o.byteArray.byteOffset+s+l))}function qe(e,t){return e&1<<t}const Ye=function(e,t,r){const n=new Uint8Array(r);for(let o=0;o<r;o++){const r=e[Math.floor(o/8)+t],a=o%8;n[o]=qe(r,a)?1:0}return n};const We=function(e,t){const r=e.elements.x7fe00010||e.elements.x7fe00008,n=e.uint16("x00280100"),o=e.uint16("x00280010"),a=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=o*a*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 Ye(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 ze=function(e){const t=we(e),r=parseInt(t.url,10),n=je.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 He=function(e,t=0){const r=e.elements.x7fe00010||e.elements.x7fe00008;return r?r.encapsulatedPixelData?Ge(e,t):We(e,t):null};function Qe(e,t,r=0,n,o,a){const i=(new Date).getTime(),s={cancelFn:void 0,promise:void 0};return s.promise=new Promise(((l,c)=>{e.then((e=>{const u=He(e,r),f=e.string("x00020010"),d=(new Date).getTime(),m=ie(t,u,f,o);!function(e,t){e.decache=function(){const e=we(t);Fe.unload(e.url)}}(s,t),m.then((t=>{t.data=e,t.sharedCacheKey=n;const r=(new Date).getTime();t.loadTimeInMS=d-i,t.totalTimeInMS=r-i,void 0!==a&&void 0!==a.imageDoneCallback&&a.imageDoneCallback(t),l(t)}),(function(t){c({error:t,dataSet:e})}))}),(function(e){c({error:e})}))})),s}function Xe(e){return"dicomweb"===e||"wadouri"===e?c:"dicomfile"===e?ze:void 0}function Je(e,t={}){const r=we(e);delete(t=Object.assign({},t)).loader;const n=Xe(r.scheme);if(Fe.isLoaded(r.url)){return function(e,t,r=0,n,o){const a=(new Date).getTime();return{promise:new Promise(((i,s)=>{const l=(new Date).getTime();let c;try{const n=He(e,r),a=e.string("x00020010");c=ie(t,n,a,o)}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-a,t.totalTimeInMS=r-a,i(t)}),s)})),cancelFn:void 0}}(Fe.get(r.url,n,e),e,r.pixelDataFrame,r.url,t)}return Qe(Fe.load(r.url,n,e),e,r.frame,r.url,t)}const Ke={metaData:{getImagePixelModule:he,getLUTs:ye,getModalityLUTOutputPixelRepresentation:be,getNumberValues:Pe,metaDataProvider:_e},dataSetCacheManager:Fe,fileManager:je,getEncapsulatedImageFrame:Ge,getUncompressedImageFrame:We,loadFileRequest:ze,loadImageFromPromise:Qe,getLoaderForScheme:Xe,loadImage:Je,parseImageId:we,unpackBinaryFrame:Ye,register:function(e){e.registerImageLoader("dicomweb",Je),e.registerImageLoader("wadouri",Je),e.registerImageLoader("dicomfile",Je),e.metaData.addProvider(_e)}};const Ze=function(e){me.register(e),Ke.register(e)};let et,tt;const rt=()=>new Worker(new URL(o.p+o.u(918),o.b),{type:void 0}),nt={set cornerstone(e){et=e,Ze(et);const t=l();nt.cornerstone.getWebWorkerManager().registerWorker("dicomImageLoader",rt,{maxWorkerInstances:t.maxWebWorkers||1})},get cornerstone(){if(!et){if(et=window&&window.cornerstone,!et)throw new Error("cornerstoneDICOMImageLoader requires a copy of Cornerstone to work properly. Please add cornerstoneDICOMImageLoader.external.cornerstone = cornerstone; to your application.");Ze(et)}return et},set dicomParser(e){tt=e},get dicomParser(){if(!tt){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.");tt=window.dicomParser}return tt}},ot=nt;function at(e,t){const r=e.length,n=new Uint8ClampedArray(r);for(let o=0;o<r;++o)n[o]=e[o]>>t;return n}function it(e,t,r){const n=e[`${t}PaletteColorLookupTableData`];if(n)return Promise.resolve(n);const o=ot.cornerstone.metaData.get("imagePixelModule",e.imageId);return o&&"function"==typeof o.then?o.then((e=>e?e[`${t}PaletteColorLookupTableData`]:r)):Promise.resolve(o?o[`${t}PaletteColorLookupTableData`]:r)}function st(e,t,r){const n=e.columns*e.rows,o=e.pixelData;Promise.all([it(e,"red",null),it(e,"green",null),it(e,"blue",null)]).then((([a,i,s])=>{if(!a||!i||!s)throw new Error("The image does not have a complete color palette. R, G, and B palette data are required.");const l=a.length;let c=0,u=0;const f=e.redPaletteColorLookupTableDescriptor[1],d=8===e.redPaletteColorLookupTableDescriptor[2]?0:8,m=at(a,d),g=at(i,d),p=at(s,d);if(r)for(let e=0;e<n;++e){let e=o[c++];e<f?e=0:e>f+l-1?e=l-1:e-=f,t[u++]=m[e],t[u++]=g[e],t[u++]=p[e],t[u++]=255}else for(let e=0;e<n;++e){let e=o[c++];e<f?e=0:e>f+l-1?e=l-1:e-=f,t[u++]=m[e],t[u++]=g[e],t[u++]=p[e]}}))}const lt=function(e){if(!e.cornerstone||!e.dicomParser)throw new Error('cornerstoneWADOImageLoader.configure: Options object must contain the keys "cornerstone" and "dicomParser".');s(e),ot.cornerstone=e.cornerstone,ot.dicomParser=e.dicomParser};const ct=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},ut={convertRGBColorByPixel:e,convertRGBColorByPlane:t,convertYBRFullByPixel:r,convertYBRFullByPlane:n,convertPALETTECOLOR:st,wadouri:Ke,wadors:me,configure:lt,convertColorSpace:J,createImage:ie,decodeJPEGBaseline8BitColor:Z,getImageFrame:re,getPixelData:H,getMinMax:Q,isColorImage:ne,isJPEGBaseline8BitColor:ct,internal:u,external:nt}})(),a})()));
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@cornerstonejs/core"),require("dicom-parser")):"function"==typeof define&&define.amd?define("cornerstoneDICOMImageLoader",["@cornerstonejs/core","dicom-parser"],t):"object"==typeof exports?exports.cornerstoneDICOMImageLoader=t(require("@cornerstonejs/core"),require("dicom-parser")):e.cornerstoneDICOMImageLoader=t(e["@cornerstonejs/core"],e.dicomParser)}(this,((e,t)=>(()=>{"use strict";var r={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.m=r,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.u=e=>e+".min.js",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})(),a.b=document.baseURI||self.location.href;var o={};return(()=>{function e(e,t,r){if(void 0===e)throw new Error("decodeRGB: rgbBuffer must be defined");if(e.length%3!=0)throw new Error(`decodeRGB: rgbBuffer length ${e.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 be defined");if(e.length%3!=0)throw new Error(`decodeRGB: rgbBuffer length ${e.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("convertYBRFullByPixel: ybrBuffer must be defined");if(e.length%3!=0)throw new Error(`convertYBRFullByPixel: ybrBuffer length ${e.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++){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("convertYBRFullByPlane: ybrBuffer must be defined");if(e.length%3!=0)throw new Error(`convertYBRFullByPlane: ybrBuffer length ${e.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++){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:()=>ct,convertColorSpace:()=>J,convertPALETTECOLOR:()=>lt,convertRGBColorByPixel:()=>e,convertRGBColorByPlane:()=>t,convertYBRFullByPixel:()=>r,convertYBRFullByPlane:()=>n,createImage:()=>ie,decodeJPEGBaseline8BitColor:()=>Z,default:()=>ft,external:()=>ot,getImageFrame:()=>re,getMinMax:()=>H,getPixelData:()=>z,internal:()=>P,isColorImage:()=>ne,isJPEGBaseline8BitColor:()=>ut,wadors:()=>me,wadouri:()=>Ze});let i={open(e,t){e.open("get",t,!0)},beforeSend(){},beforeProcessing:e=>Promise.resolve(e.response),imageCreated(){},strict:!1};function s(e){i=Object.assign(i,e)}function l(){return i}const c=function(e,t,r={},n={}){const{cornerstone:a}=ot,o=l(),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,c=new Promise(((l,c)=>{o.open(s,e,r,n);const u=o.beforeSend(s,t,r,n);s.responseType="arraybuffer";const f=Object.assign({},r,u);Object.keys(f).forEach((function(t){null!==f[t]&&("Accept"===t&&-1!==e.indexOf("accept=")||s.setRequestHeader(t,f[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 c.xhr=s,c};var u=a(464);function f(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 d=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]&&f(n,e,t))return t;return-1},{ImageQualityStatus:m}=u.Enums;function g(e,t,r){r||={};const n=new Uint8Array(t),a=!!r?.isPartial;if(-1===e.indexOf("multipart"))return{contentType:e,imageQualityStatus:a?m.SUBRESOLUTION:m.FULL_RESOLUTION,pixelData:n};let{tokenIndex:o,responseHeaders:i,boundary:s,multipartContentType:l}=r;if(o||=d(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=d(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:p}=u.Enums;function h(e,t=!0){return t?e.imageQualityStatus??p.FULL_RESOLUTION:p.SUBRESOLUTION}const{ProgressiveIterator:x}=u.utilities;function y(e,t,r={},n={}){const a=l(),{retrieveOptions:o={},streamingData:i={}}=n,s=o.chunkSize||131072,c=new x("streamRequest");return c.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"),f=Number(c.get("Content-Length"));let d=!1,m=i.encodedData,p=i.lastSize||0;for(i.isPartial=!0;!d;){const{done:r,value:a}=await l.read();if(m=b(m,a),!m){if(d)throw new Error(`Done but no image frame available ${t}`);continue}if(d=r||m.byteLength===f,!d&&m.length<p+s)continue;p=m.length,i.isPartial=!r;const c=g(u,m,i),x=h(o,d),y={url:e,imageId:t,...c,percentComplete:r?100:100*c.pixelData?.length/f,imageQualityStatus:x,done:d};n.add(y,d)}}catch(e){(()=>{if("function"==typeof a.errorInterceptor){const e=new Error("request failed");a.errorInterceptor(e)}})(),console.error(e),l(e)}})),c.getNextPromise()}function b(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}const P={xhrRequest:c,streamRequest:y,setOptions:s,getOptions:l};const S=function(e,t,r){return t=t||0,e&&e.Value?Array.isArray(e.Value)&&e.Value.length<=t?r:e.Value[t]:r};const w=function(e,t,r){const n=S(e,t,r);if(void 0!==n)return parseFloat(String(n))};const D=function(e,t){const r=S(e,t);if(void 0!==r)return parseFloat(r)};const I=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 T(e){const t=e.indexOf(":");return e.substring(t+1)}function L(e,t=!0){return e&&e.Value?e.Value[0]&&t?e.Value[0]:e.Value:e}function C(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 v(e){let{52009230:t,52009229:r,"00280008":n,...a}=e;return t=L(t,!1),r=L(r,!1),n=L(n),{PerFrameFunctionalGroupsSequence:t,SharedFunctionalGroupsSequence:r,NumberOfFrames:n,rest:a}}function E(e){const t=e.indexOf("/frames/")+8,r=e.slice(0,t),n=parseInt(e.slice(t),10);return{metadata:M[`${r}1`],frame:n}}const A={_retrieveMultiframeMetadata:E,retrieveMultiframeMetadata:function(e){return E(T(e))},isMultiframe:function(e){const t=S(e["00280008"]);return t&&t>1}};let M=[],O={};const F={add:function(e,t){const r=T(e);Object.defineProperty(t,"isMultiframe",{value:A.isMultiframe(t),enumerable:!1}),M[r]=t},get:function(e){const t=T(e),r=M[t];if(r&&!r?.isMultiframe)return r;const n=O[t];if(n)return n;const a=A._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}=v(t);if(r||a>1){const{shared:i,perFrame:s}=C(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 O[t]=e,e}},remove:function(e){const t=T(e);M[t]=void 0,O[t]=void 0},purge:function(){M=[],O={}}};function R(e){return"RECON TOMO"===e||"RECON GATED TOMO"===e}function U(e){return S(e["00080060"]).includes("NM")}function B(e,t){const r=L(e["00080008"],!1);if(r)return r[t]}function N(e){let t=I(e["00200037"],6);return!t&&U(e)&&(t=function(e){let t;const r=B(e,2);if(r&&R(r)){const r=L(e["00540022"]);r&&(t=I(r["00200037"],6))}return t}(e)),t}function k(e){let t=I(e["00200032"],3);return!t&&U(e)&&(t=function(e){let t;const r=B(e,2);if(r&&R(r)){const r=L(e["00540022"]);r&&(t=I(r["00200032"],3))}return t}(e)),t}function _(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)]=r[t]}Object.assign(n,e)}}catch(e){console.error(`Error retrieving ${a} data:`,e)}return n}const $=e=>e.charAt(0).toUpperCase()+e.slice(1),j=["multiframeModule","generalSeriesModule","patientStudyModule","imagePlaneModule","nmMultiframeGeometryModule","imagePixelModule","modalityLutModule","voiLutModule","sopCommonModule","petIsotopeModule","overlayPlaneModule","transferSyntax","petSeriesModule","petImageModule"];function V(e,t){const r=I(e[t]);return r?r[0]:null}const G=function(e){return e?.Value?.length?Array.isArray(e.Value)?e.Value:"object"==typeof e.Value?(console.warn("Warning: Value should be an array, but an object was found. Encapsulating the object in an array."),[e.Value]):[]:[]};function q(e){const t=G(e["00186011"]);if(!t||!t.length)return null;return t.map((e=>{const t=V(e,"0018602C"),r=V(e,"0018602E"),n=V(e,"00186024"),a=V(e,"00186026");return{regionLocationMinY0:V(e,"0018601A"),regionLocationMaxY1:V(e,"0018601E"),regionLocationMinX0:V(e,"00186018"),regionLocationMaxX1:V(e,"0018601C"),referencePixelX0:V(e,"00186020"),referencePixelY0:V(e,"00186022"),physicalDeltaX:t,physicalDeltaY:r,physicalUnitsXDirection:n,physicalUnitsYDirection:a,referencePhysicalPixelValueY:V(e,"0018602A"),referencePhysicalPixelValueX:V(e,"00186028"),regionSpatialFormat:V(e,"00186012"),regionDataType:V(e,"00186014"),regionFlags:V(e,"00186016"),transducerFrequency:V(e,"00186030")}}))}function Y(e,t){return{transferSyntaxUID:S(t["00020010"])||S(t["00083002"])}}const W=function e(t,r){const{MetadataModules:n}=ot.cornerstone.Enums,{dicomParser:a}=ot;if(t===n.MULTIFRAME){const{metadata:e,frame:t}=A.retrieveMultiframeMetadata(r);if(!e)return;const{PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,NumberOfFrames:o}=v(e);if(n||o>1){const{shared:e,perFrame:r}=C(n,a,t);return{NumberOfFrames:o,PerFrameFunctionalInformation:r,SharedFunctionalInformation:e}}return{NumberOfFrames:o}}const o=F.get(r);if(o){if(t===n.GENERAL_STUDY)return{studyDescription:S(o["00081030"]),studyDate:a.parseDA(S(o["00080020"])),studyTime:a.parseTM(S(o["00080030"],0,"")),accessionNumber:S(o["00080050"])};if(t===n.GENERAL_SERIES)return{modality:S(o["00080060"]),seriesInstanceUID:S(o["0020000E"]),seriesNumber:D(o["00200011"]),studyInstanceUID:S(o["0020000D"]),seriesDate:a.parseDA(S(o["00080021"])),seriesTime:a.parseTM(S(o["00080031"],0,"")),acquisitionDate:a.parseDA(S(o["00080022"])),acquisitionTime:a.parseTM(S(o["00080032"],0,""))};if(t===n.GENERAL_IMAGE)return{sopInstanceUID:S(o["00080018"]),instanceNumber:D(o["00200013"]),lossyImageCompression:S(o["00282110"]),lossyImageCompressionRatio:D(o["00282112"]),lossyImageCompressionMethod:S(o["00282114"])};if(t===n.PATIENT)return{patientID:S(o["00100020"]),patientName:S(o["00100010"])};if(t===n.PATIENT_STUDY)return{patientAge:D(o["00101010"]),patientSize:D(o["00101020"]),patientSex:S(o["00100040"]),patientWeight:D(o["00101030"])};if(t===n.NM_MULTIFRAME_GEOMETRY){const e=S(o["00080060"]),t=B(o,2);return{modality:e,imageType:S(o["00080008"]),imageSubType:t,imageOrientationPatient:N(o),imagePositionPatient:k(o),sliceThickness:D(o["00180050"]),spacingBetweenSlices:D(o["00180088"]),pixelSpacing:I(o["00280030"],2),numberOfFrames:D(o["00280008"]),isNMReconstructable:R(t)&&e.includes("NM")}}if(t===n.IMAGE_PLANE){const e=N(o),t=k(o),r=I(o["00280030"],2);let n=null,a=null;r&&(a=r[0],n=r[1]);let i=null,s=null;return e&&(i=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],s=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:S(o["00200052"]),rows:D(o["00280010"]),columns:D(o["00280011"]),imageOrientationPatient:e,rowCosines:i,columnCosines:s,imagePositionPatient:t,sliceThickness:D(o["00180050"]),sliceLocation:D(o["00201041"]),pixelSpacing:r,rowPixelSpacing:a,columnPixelSpacing:n}}if(t===n.ULTRASOUND_ENHANCED_REGION)return q(o);if(t===n.CALIBRATION){if("US"===S(o["00080060"])){return{sequenceOfUltrasoundRegions:q(o)}}}if(t===n.IMAGE_URL)return function(e,t){const{transferSyntaxUID:r}=Y(e,t),n=ot.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=S(t["00180040"]);return{cineRate:r,numberOfFrames:D(t["00280008"])}}(0,o);if(t===n.IMAGE_PIXEL)return{samplesPerPixel:D(o["00280002"]),photometricInterpretation:S(o["00280004"]),rows:D(o["00280010"]),columns:D(o["00280011"]),bitsAllocated:D(o["00280100"]),bitsStored:D(o["00280101"]),highBit:S(o["00280102"]),pixelRepresentation:D(o["00280103"]),planarConfiguration:D(o["00280006"]),pixelAspectRatio:S(o["00280034"]),smallestPixelValue:D(o["00280106"]),largestPixelValue:D(o["00280107"]),redPaletteColorLookupTableDescriptor:I(o["00281101"]),greenPaletteColorLookupTableDescriptor:I(o["00281102"]),bluePaletteColorLookupTableDescriptor:I(o["00281103"]),redPaletteColorLookupTableData:I(o["00281201"]),greenPaletteColorLookupTableData:I(o["00281202"]),bluePaletteColorLookupTableData:I(o["00281203"])};if(t===n.VOI_LUT)return{windowCenter:I(o["00281050"],1),windowWidth:I(o["00281051"],1)};if(t===n.MODALITY_LUT)return{rescaleIntercept:D(o["00281052"]),rescaleSlope:D(o["00281053"]),rescaleType:S(o["00281054"])};if(t===n.SOP_COMMON)return{sopClassUID:S(o["00080016"]),sopInstanceUID:S(o["00080018"])};if(t===n.PET_ISOTOPE){const e=S(o["00540016"]);if(void 0===e)return;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:a.parseTM(S(e["00181072"],0,"")),radiopharmaceuticalStartDateTime:S(e["00181078"],0,""),radionuclideTotalDose:D(e["00181074"]),radionuclideHalfLife:D(e["00181075"])}}}return t===n.OVERLAY_PLANE?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=S(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:D(e[`${n}0010`]),columns:D(e[`${n}0011`]),type:S(e[`${n}0040`]),x:D(e[`${n}0050`],1)-1,y:D(e[`${n}0050`],0)-1,pixelData:o,description:S(e[`${n}0022`]),label:S(e[`${n}1500`]),roiArea:S(e[`${n}1301`]),roiMean:S(e[`${n}1302`]),roiStandardDeviation:S(e[`${n}1303`])})}return{overlays:t}}(o):"transferSyntax"===t?Y(r,o):t===n.PET_SERIES?{correctedImage:S(o["00280051"]),units:S(o["00541001"]),decayCorrection:S(o["00541102"])}:t===n.PET_IMAGE?{frameReferenceTime:D(o["00541300"]),actualFrameDuration:D(o["00181242"])}:"instance"===t?_(r,e,j):void 0}};function X(e,t,r={},n={}){const a=l(),{retrieveOptions:o={},streamingData:i}=n,s=i.chunkSize||function(e,t,r){const n=t[r];if("function"!=typeof n)return n;const a=F.get(e);return n(a,e)}(t,o,"chunkSize")||65536,c=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,f=u===n.byteLength,d=g(c,n,{isPartial:!0}),m=h(o,f||d.extractDone);t({...d,imageQualityStatus:m,percentComplete:d.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 c}const z=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 X(s,t,i,n);if(o.streaming)return y(s,t,i,n);const l=c(s,t,i),{xhr:u}=l;return l.then((function(e){const t=g(u.getResponseHeader("Content-Type")||"application/octet-stream",new Uint8Array(e));return t.imageQualityStatus=h(o,!0),t}))};const H=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 Q(r,n,a){0===r.planarConfiguration?e(r.pixelData,n,a):t(r.pixelData,n,a)}function J(e,t,a){if("RGB"===e.photometricInterpretation)Q(e,t,a);else if("YBR_RCT"===e.photometricInterpretation)Q(e,t,a);else if("YBR_ICT"===e.photometricInterpretation)Q(e,t,a);else if("PALETTE COLOR"===e.photometricInterpretation)lt(e,t,a);else if("YBR_FULL_422"===e.photometricInterpretation)!function(e,t,r){if(void 0===e)throw new Error("convertYBRFull422ByPixel: ybrBuffer must be defined");if(e.length%2!=0)throw new Error(`convertYBRFull422ByPixel: ybrBuffer length ${e.length} must be divisible by 2`);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 K(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 Z=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=H(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(K(i.result))}`:a.src=`data:image/jpeg;base64,${window.btoa(i.result)}`},i.onerror=e=>{o(e)}}))};function ee(e,t,r,n,a){const o={...n};delete o.loader,delete o.streamingData;const i=ot.cornerstone.getWebWorkerManager(),s=o.priority||void 0;o.transferPixelData&&r.buffer;return i.executeTask("dicomImageLoader","decodeTask",{imageFrame:e,transferSyntax:t,pixelData:r,options:o,decodeConfig:a},{priority:s,requestType:o?.requestType})}const te=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 ee(e,t,r,a,o);case"1.2.840.10008.1.2.4.50":return 8!==e.bitsAllocated||3!==e.samplesPerPixel&&4!==e.samplesPerPixel?ee(e,t,r,a,o):Z(e,r,n)}return Promise.reject(new Error(`No decoder for transfer syntax ${t}`))};const re=function(e){const{cornerstone:t}=ot,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 ne(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}let ae="";function oe(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 ie=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}=ot,{MetadataModules:i}=o.Enums,s=document.createElement("canvas"),c=re(e);if(c.decodeLevel=n.decodeLevel,n.allowFloatRendering=o.canRenderFloatTextures(),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})}const{decodeConfig:u}=l();Object.keys(c).forEach((e=>{("function"==typeof c[e]||c[e]instanceof Promise)&&delete c[e]}));const f=te(c,r,t,s,n,u),d=ne(c.photometricInterpretation);return new Promise(((t,r)=>{f.then((function(r){let l=!1;if(n.targetBuffer&&n.targetBuffer.type&&!d){const{arrayBuffer:e,type:t,offset:a=0,length:o}=n.targetBuffer,i=r.pixelDataLength,s=a,c=null!=o?o:i-s,u={Uint8Array,Uint16Array,Int16Array,Float32Array};if(c!==r.pixelDataLength)throw new Error(`target array for image does not have the same length (${c}) as the decoded image length (${r.pixelDataLength}).`);const f=u[t],d=e?new f(e,s,c):new f(r.pixelData);if(c!==r.pixelDataLength)throw new Error("target array for image does not have the same length as the decoded image length.");r.pixelData=d,l=!0}l||oe(r);const c=o.metaData.get(i.IMAGE_PLANE,e)||{},u=o.metaData.get(i.VOI_LUT,e)||{},f=o.metaData.get(i.MODALITY_LUT,e)||{},m=o.metaData.get(i.SOP_COMMON,e)||{},g=o.metaData.get(i.CALIBRATION,e)||{},{rows:p,columns:h}=r;if(d){if(function(e){if(void 0===e)return!1;const{rows:t,columns:r,photometricInterpretation:n,pixelDataLength:a}=e;return a!==4*r*t&&(n.endsWith("420")?a===(3*Math.ceil(r/2)+Math.floor(r/2))*t:n.endsWith("422")?a===(3*Math.ceil(r/2)+Math.floor(r/2))*Math.ceil(t/2)+Math.floor(t/2)*r:"RGB"!==n)}(r)){s.height=r.rows,s.width=r.columns;let e=s.getContext("2d").createImageData(r.columns,r.rows);a||(e={...e,data:new Uint8ClampedArray(r.samplesPerPixel*r.columns*r.rows)}),J(r,e.data,a),r.imageData=e,r.pixelData=e.data,r.pixelDataLength=e.data.length}else if(!a&&r.pixelDataLength===4*p*h){const e=new Uint8Array(r.pixelData.length/4*3);r.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}(r.pixelData,e),r.pixelDataLength=r.pixelData.length}const e=H(r.pixelData);r.smallestPixelValue=e.min,r.largestPixelValue=e.max}const x={imageId:e,dataType:r.pixelData.constructor.name,color:d,calibration:g,columnPixelSpacing:c.columnPixelSpacing,columns:r.columns,height:r.rows,preScale:r.preScale,intercept:f.rescaleIntercept?f.rescaleIntercept:0,slope:f.rescaleSlope?f.rescaleSlope:1,invert:"MONOCHROME1"===r.photometricInterpretation,minPixelValue:r.smallestPixelValue,maxPixelValue:r.largestPixelValue,rowPixelSpacing:c.rowPixelSpacing,rows:r.rows,sizeInBytes:r.pixelData.byteLength,width:r.columns,windowCenter:u.windowCenter?u.windowCenter[0]:void 0,windowWidth:u.windowWidth?u.windowWidth[0]:void 0,voiLUTFunction:u.voiLUTFunction?u.voiLUTFunction:void 0,decodeTimeInMS:r.decodeTimeInMS,floatPixelData:void 0,imageFrame:r,rgba:d&&a,getPixelData:()=>r.pixelData,getCanvas:void 0,numberOfComponents:r.samplesPerPixel};var y;if(x.color&&(x.getCanvas=function(){if(ae===e)return s;const t=x.columns,n=x.rows;s.height=n,s.width=t;const a=s.getContext("2d"),o=a.createImageData(t,n),i=r.pixelData;if(i.length===t*n*4)for(let e=0;e<i.length;e++)o.data[e]=i[e];else if(i.length===t*n*3){let e=0;for(let t=0;t<i.length;t+=3)o.data[e++]=i[t],o.data[e++]=i[t+1],o.data[e++]=i[t+2],o.data[e++]=255}return r.pixelData=o.data,r.pixelDataLength=o.data.length,r.imageData=o,a.putImageData(r.imageData,0,0),ae=e,s}),f.modalityLUTSequence&&f.modalityLUTSequence.length>0&&("1.2.840.10008.5.1.4.1.1.12.1"!==(y=m.sopClassUID)&&"1.2.840.10008.5.1.4.1.1.12.2.1"!==y)&&(x.modalityLUT=f.modalityLUTSequence[0]),u.voiLUTSequence&&u.voiLUTSequence.length>0&&(x.voiLUT=u.voiLUTSequence[0]),x.color&&(x.windowWidth=256,x.windowCenter=128),void 0===x.windowCenter||void 0===x.windowWidth){const e=x.imageFrame.smallestPixelValue,t=x.imageFrame.largestPixelValue;x.windowWidth=t-e,x.windowCenter=(t+e)/2}t(x)}),r)}))},{ProgressiveIterator:se}=u.utilities,{ImageQualityStatus:le}=u.Enums,ce=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 ue(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 fe(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=ot.cornerstone.imageRetrievalPoolManager,n=(new Date).getTime(),a=new se("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=se.as(z(e,r,o,t));let s=10;for await(const e of i){const{pixelData:o,imageQualityStatus:i=le.FULL_RESOLUTION,percentComplete:l,done:c=!0,extractDone:u=!0}=e,f=ue(e.contentType);if(!u&&!ce.has(f))continue;const d=e.decodeLevel??(i===le.FULL_RESOLUTION?0:fe(l,t.retrieveOptions?.decodeLevel));if(c||!(s<=d))try{const e={...t,decodeLevel:d},l=await ie(r,o,f,e),u=(new Date).getTime();l.loadTimeInMS=u-n,l.transferSyntaxUID=f,l.imageQualityStatus=i,a.add(l,c),s=d}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 me={metaData:{getNumberString:w,getNumberValue:D,getNumberValues:I,getValue:S,metaDataProvider:W},findIndexOfString:d,getPixelData:z,loadImage:de,metaDataManager:F,register:function(e){e.registerImageLoader("wadors",de),e.metaData.addProvider(W)}};function ge(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 pe(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 he=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=ge(e,"x00281101"),t.greenPaletteColorLookupTableDescriptor=ge(e,"x00281102"),t.bluePaletteColorLookupTableDescriptor=ge(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=pe(e,"x00281201",t.redPaletteColorLookupTableDescriptor),t.greenPaletteColorLookupTableData=pe(e,"x00281202",t.greenPaletteColorLookupTableDescriptor),t.bluePaletteColorLookupTableData=pe(e,"x00281203",t.bluePaletteColorLookupTableDescriptor)}(e,t),t};function xe(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 ye=function(e,t){if(!t||!t.items||!t.items.length)return;const r=[];for(let n=0;n<t.items.length;n++){const a=xe(e,t.items[n].dataSet);a&&r.push(a)}return r};const be=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 Pe=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 Se=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 we(e){const{dicomParser:t}=ot;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 De(e,t,r){const n=we(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:f}=await t(a,o,{byteRange:`${c}-${c+u}`}),d=new Uint8Array(f),m=new Uint8Array(n.byteArray.length+d.length);return m.set(n.byteArray),m.set(d,n.byteArray.length),De(m,t,r)},n}function Ie(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 Te(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 Le(e){if(Ae[e])return Ae[e]}function Ce(e){if(!e)return!1;const t=e.intString("x00280008");return t&&t>1}const ve={_get:Le,generateMultiframeWADOURIs:function(e){const t=[],r=Le(e);if(Ce(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=Ae[r]?Ae[r].dataSet:void 0,{dataSet:a,frame:n}},isMultiframeDataset:function(e){return Ce(Le(e))}};let Ee=0,Ae={},Me={};function Oe(){return{cacheSizeInBytes:Ee,numberOfDataSetsCached:Object.keys(Ae).length}}const Fe={isLoaded:function(e){return void 0!==Ae[e]},load:function(e,t=c,r){const{cornerstone:n,dicomParser:a}=ot;if(Ae[e])return new Promise((t=>{Ae[e].cacheCount++,t(Ae[e].dataSet)}));if(Me[e])return Me[e].cacheCount++,Me[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 f;try{f=c.isPartialContent?await De(u,t,{uri:e,imageId:r,fileTotalLength:c.fileTotalLength}):a.parseDicom(u)}catch(e){return l(e)}Ae[e]={dataSet:f,cacheCount:i.cacheCount},Ee+=f.byteArray.length,s(f),n.triggerEvent(n.events,"datasetscachechanged",{uri:e,action:"loaded",cacheInfo:Oe()})}),l).then((()=>{delete Me[e]}),(()=>{delete Me[e]}))}));return i.cacheCount=1,Me[e]=i,i},unload:function(e){const{cornerstone:t}=ot;Ae[e]&&(Ae[e].cacheCount--,0===Ae[e].cacheCount&&(Ee-=Ae[e].dataSet.byteArray.length,delete Ae[e],t.triggerEvent(t.events,"datasetscachechanged",{uri:e,action:"unloaded",cacheInfo:Oe()})))},getInfo:Oe,purge:function(){Ae={},Me={},Ee=0},get:function(e){let t;if(e.includes("&frame=")){const{frame:r,dataSet:n}=ve.retrieveMultiframeDataset(e);t=function(e,t){if(!t)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,otherElements:o}=Te(t);if(n||r>1){const{shared:r,perFrame:i}=Ie(n,a,e),s={elements:{...o,...r,...i}},l=Object.create(t);return Object.assign(l,s)}return t}(r,n)}else Ae[e]&&(t=Ae[e].dataSet);return t},update:function(e,t){const r=Ae[e];r?(Ee-=r.dataSet.byteArray.length,r.dataSet=t,Ee+=t.byteArray.length,ot.cornerstone.triggerEvent(ot.cornerstone.events,"datasetscachechanged",{uri:e,action:"updated",cacheInfo:Oe()})):console.error(`No loaded dataSet for uri ${e}`)}};function Re(e,t){const r=e.string("x00080008");if(r){const e=r.split("\\");if(e.length>t)return e[t]}}function Ue(e){let t=Pe(e,"x00200037",6);return!t&&e.elements.x00209116&&(t=Pe(e.elements.x00209116.items[0].dataSet,"x00200037",6)),t||(t=function(e){let t;const r=e.string("x00080060");if(r?.includes("NM")){const r=Re(e,2);r&&R(r)&&e.elements.x00540022&&(t=Pe(e.elements.x00540022.items[0].dataSet,"x00200037",6))}return t}(e)),t}function Be(e){let t=Pe(e,"x00200032",3);return!t&&e.elements.x00209113&&(t=Pe(e.elements.x00209113.items[0].dataSet,"x00200032",3)),t||(t=function(e){let t;const r=e.string("x00080060");if(r?.includes("NM")){const r=Re(e,2);r&&R(r)&&e.elements.x00540022&&(t=Pe(e.elements.x00540022.items[0].dataSet,"x00200032",3))}return t}(e)),t}function Ne(e){let t=Pe(e,"x00280030",2);return!t&&e.elements.x00289110&&(t=Pe(e.elements.x00289110.items[0].dataSet,"x00280030",2)),t}function ke(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}function _e(e){const t=e.elements.x00186011;if(!t||!t.items)return[];return t.items.map((e=>{const t=e.dataSet.double("x0018602c"),r=e.dataSet.double("x0018602e"),n=e.dataSet.uint16("x00186024"),a=e.dataSet.uint16("x00186026");return{regionLocationMinY0:e.dataSet.uint16("x0018601a"),regionLocationMaxY1:e.dataSet.uint16("x0018601e"),regionLocationMinX0:e.dataSet.uint16("x00186018"),regionLocationMaxX1:e.dataSet.uint16("x0018601c"),referencePixelX0:e.dataSet.int32("x00186020")||null,referencePixelY0:e.dataSet.int32("x00186022")||null,physicalDeltaX:t,physicalDeltaY:r,physicalUnitsXDirection:n,physicalUnitsYDirection:a,referencePhysicalPixelValueY:e.dataSet.uint16("x0018602a"),referencePhysicalPixelValueX:e.dataSet.uint16("x00186028"),regionSpatialFormat:e.dataSet.uint16("x00186012"),regionDataType:e.dataSet.uint16("x00186014"),regionFlags:e.dataSet.uint16("x00186016"),transducerFrequency:e.dataSet.uint16("x00186030")}}))}const $e=function e(t,r){const{MetadataModules:n}=ot.cornerstone.Enums,{dicomParser:a}=ot;if(Array.isArray(r))return;const o=Se(r);if(t===n.MULTIFRAME){const e=ve.retrieveMultiframeDataset(o.url);if(!e.dataSet)return;const t=function(e,t){if(!e)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a}=Te(e);if(n||r>1){const{shared:e,perFrame:o}=Ie(n,a,t);return{NumberOfFrames:r,PerFrameFunctionalInformation:o,SharedFunctionalInformation:e}}return{NumberOfFrames:r}}(e.dataSet,e.frame);return t}let i=o.url;o.frame&&(i=`${i}&frame=${o.frame}`);const s=Fe.get(i);if(s){if(t===n.GENERAL_STUDY)return{studyDescription:s.string("x00081030"),studyDate:a.parseDA(s.string("x00080020")),studyTime:a.parseTM(s.string("x00080030")||""),accessionNumber:s.string("x00080050")};if(t===n.GENERAL_SERIES)return{modality:s.string("x00080060"),seriesInstanceUID:s.string("x0020000e"),seriesNumber:s.intString("x00200011"),studyInstanceUID:s.string("x0020000d"),seriesDate:a.parseDA(s.string("x00080021")),seriesTime:a.parseTM(s.string("x00080031")||""),acquisitionDate:a.parseDA(s.string("x00080022")),acquisitionTime:a.parseTM(s.string("x00080032")||"")};if(t===n.GENERAL_IMAGE)return{sopInstanceUID:s.string("x00080018"),instanceNumber:s.intString("x00200013"),lossyImageCompression:s.string("x00282110"),lossyImageCompressionRatio:s.floatString("x00282112"),lossyImageCompressionMethod:s.string("x00282114")};if(t===n.PATIENT)return{patientID:s.string("x00100020"),patientName:s.string("x00100010")};if(t===n.PATIENT_STUDY)return{patientAge:s.intString("x00101010"),patientSize:s.floatString("x00101020"),patientSex:s.string("x00100040"),patientWeight:s.floatString("x00101030")};if(t===n.NM_MULTIFRAME_GEOMETRY){const e=s.string("x00080060"),t=Re(s,2);return{modality:e,imageType:s.string("x00080008"),imageSubType:t,imageOrientationPatient:Ue(s),imagePositionPatient:Be(s),sliceThickness:ke(s),pixelSpacing:Ne(s),numberOfFrames:s.uint16("x00280008"),isNMReconstructable:R(t)&&e.includes("NM")}}if(t===n.IMAGE_PLANE){const e=Ue(s),t=Be(s),r=Ne(s),n=ke(s);let a=null,o=null;r&&(o=r[0],a=r[1]);let i=null,l=null;return e&&(i=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],l=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:s.string("x00200052"),rows:s.uint16("x00280010"),columns:s.uint16("x00280011"),imageOrientationPatient:e,rowCosines:i,columnCosines:l,imagePositionPatient:t,sliceThickness:n,sliceLocation:s.floatString("x00201041"),pixelSpacing:r,rowPixelSpacing:o,columnPixelSpacing:a}}if(t===n.CINE)return{frameTime:s.floatString("x00181063")};if(t===n.IMAGE_PIXEL)return he(s);if(t===n.VOI_LUT){const e=be(s);return{windowCenter:Pe(s,"x00281050",1),windowWidth:Pe(s,"x00281051",1),voiLUTSequence:ye(e,s.elements.x00283010)}}if(t===n.MODALITY_LUT)return{rescaleIntercept:s.floatString("x00281052"),rescaleSlope:s.floatString("x00281053"),rescaleType:s.string("x00281054"),modalityLUTSequence:ye(s.uint16("x00280103"),s.elements.x00283000)};if(t===n.SOP_COMMON)return{sopClassUID:s.string("x00080016"),sopInstanceUID:s.string("x00080018")};if(t===n.PET_ISOTOPE){const e=s.elements.x00540016;if(void 0===e)return;const t=e.items[0].dataSet;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:a.parseTM(t.string("x00181072")||""),radionuclideTotalDose:t.floatString("x00181074"),radionuclideHalfLife:t.floatString("x00181075")}}}if(t===n.OVERLAY_PLANE)return 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}}(s);if("transferSyntax"===t){let e;try{e=s.string("x00020010")}catch(e){}return{transferSyntaxUID:e}}if(t===n.PET_SERIES)return{correctedImage:s.string("x00280051"),units:s.string("x00541001"),decayCorrection:s.string("x00541102")};if(t===n.PET_IMAGE)return{frameReferenceTime:s.floatString(s.string("x00541300")||""),actualFrameDuration:s.intString(s.string("x00181242"))};if(t===n.ULTRASOUND_ENHANCED_REGION)return _e(s);if(t===n.CALIBRATION){if("US"===s.string("x00080060")){return{sequenceOfUltrasoundRegions:_e(s)}}}return"instance"===t?_(r,e,j):void 0}};let je=[];const Ve={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 Ge=a(713);function qe(e,t){const{dicomParser:r}=ot;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 Ge.ByteStream(e.byteArrayParser,e.byteArray,e.elements.x7fe00010.dataOffset),o=(0,Ge.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 Ye(e,t){return e&1<<t}const We=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]=Ye(r,o)?1:0}return n};const Xe=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 We(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 ze=function(e){const t=Se(e),r=parseInt(t.url,10),n=Ve.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 He=function(e,t=0){const r=e.elements.x7fe00010||e.elements.x7fe00008;return r?r.encapsulatedPixelData?qe(e,t):Xe(e,t):null};function Qe(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=He(e,r),f=e.string("x00020010"),d=(new Date).getTime(),m=ie(t,u,f,a);!function(e,t){e.decache=function(){const e=Se(t);Fe.unload(e.url)}}(s,t),m.then((t=>{t.data=e,t.sharedCacheKey=n;const r=(new Date).getTime();t.loadTimeInMS=d-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 Je(e){return"dicomweb"===e||"wadouri"===e?c:"dicomfile"===e?ze:void 0}function Ke(e,t={}){const r=Se(e);delete(t=Object.assign({},t)).loader;const n=Je(r.scheme);if(Fe.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=He(e,r),o=e.string("x00020010");c=ie(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}}(Fe.get(r.url,n,e),e,r.pixelDataFrame,r.url,t)}return Qe(Fe.load(r.url,n,e),e,r.frame,r.url,t)}const Ze={metaData:{getImagePixelModule:he,getLUTs:ye,getModalityLUTOutputPixelRepresentation:be,getNumberValues:Pe,metaDataProvider:$e},dataSetCacheManager:Fe,fileManager:Ve,getEncapsulatedImageFrame:qe,getUncompressedImageFrame:Xe,loadFileRequest:ze,loadImageFromPromise:Qe,getLoaderForScheme:Je,loadImage:Ke,parseImageId:Se,unpackBinaryFrame:We,register:function(e){e.registerImageLoader("dicomweb",Ke),e.registerImageLoader("wadouri",Ke),e.registerImageLoader("dicomfile",Ke),e.metaData.addProvider($e)}};const et=function(e){me.register(e),Ze.register(e)};let tt,rt;const nt=()=>new Worker(new URL(a.p+a.u(918),a.b),{type:void 0}),at={set cornerstone(e){tt=e,et(tt);const t=l();at.cornerstone.getWebWorkerManager().registerWorker("dicomImageLoader",nt,{maxWorkerInstances:t.maxWebWorkers||1})},get cornerstone(){if(!tt){if(tt=window&&window.cornerstone,!tt)throw new Error("cornerstoneDICOMImageLoader requires a copy of Cornerstone to work properly. Please add cornerstoneDICOMImageLoader.external.cornerstone = cornerstone; to your application.");et(tt)}return tt},set dicomParser(e){rt=e},get dicomParser(){if(!rt){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.");rt=window.dicomParser}return rt}},ot=at;function it(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 st(e,t,r){const n=e[`${t}PaletteColorLookupTableData`];if(n)return Promise.resolve(n);const a=ot.cornerstone.metaData.get("imagePixelModule",e.imageId);return a&&"function"==typeof a.then?a.then((e=>e?e[`${t}PaletteColorLookupTableData`]:r)):Promise.resolve(a?a[`${t}PaletteColorLookupTableData`]:r)}function lt(e,t,r){const n=e.columns*e.rows,a=e.pixelData;Promise.all([st(e,"red",null),st(e,"green",null),st(e,"blue",null)]).then((([o,i,s])=>{if(!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=o.length;let c=0,u=0;const f=e.redPaletteColorLookupTableDescriptor[1],d=8===e.redPaletteColorLookupTableDescriptor[2]?0:8,m=it(o,d),g=it(i,d),p=it(s,d);if(r)for(let e=0;e<n;++e){let e=a[c++];e<f?e=0:e>f+l-1?e=l-1:e-=f,t[u++]=m[e],t[u++]=g[e],t[u++]=p[e],t[u++]=255}else for(let e=0;e<n;++e){let e=a[c++];e<f?e=0:e>f+l-1?e=l-1:e-=f,t[u++]=m[e],t[u++]=g[e],t[u++]=p[e]}}))}const ct=function(e){if(!e.cornerstone||!e.dicomParser)throw new Error('cornerstoneWADOImageLoader.configure: Options object must contain the keys "cornerstone" and "dicomParser".');s(e),ot.cornerstone=e.cornerstone,ot.dicomParser=e.dicomParser};const ut=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},ft={convertRGBColorByPixel:e,convertRGBColorByPlane:t,convertYBRFullByPixel:r,convertYBRFullByPlane:n,convertPALETTECOLOR:lt,wadouri:Ze,wadors:me,configure:ct,convertColorSpace:J,createImage:ie,decodeJPEGBaseline8BitColor:Z,getImageFrame:re,getPixelData:z,getMinMax:H,isColorImage:ne,isJPEGBaseline8BitColor:ut,internal:P,external:at}})(),o})()));
2
2
  //# sourceMappingURL=cornerstoneDICOMImageLoader.min.js.map