@cornerstonejs/dicom-image-loader 2.0.0-beta.7 → 2.0.0

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 (245) hide show
  1. package/dist/dynamic-import/{65916ef3def695744bda.wasm → 031089e563a18ada8441.wasm} +0 -0
  2. package/dist/dynamic-import/54.min.js +2 -0
  3. package/dist/dynamic-import/54.min.js.map +1 -0
  4. package/dist/dynamic-import/548.min.js +2 -0
  5. package/dist/dynamic-import/548.min.js.map +1 -0
  6. package/dist/dynamic-import/918.min.js +2 -0
  7. package/dist/dynamic-import/918.min.js.map +1 -0
  8. package/dist/dynamic-import/958.min.js +3 -0
  9. package/dist/dynamic-import/958.min.js.LICENSE.txt +5 -0
  10. package/dist/dynamic-import/958.min.js.map +1 -0
  11. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js +1 -1
  12. package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js.map +1 -1
  13. package/dist/esm/codecs/jpeg.d.ts +1 -0
  14. package/dist/esm/codecs/jpeg.js +889 -0
  15. package/dist/esm/codecs/jpegLossless.d.ts +7 -0
  16. package/dist/esm/codecs/jpegLossless.js +1218 -0
  17. package/dist/esm/constants/index.d.ts +2 -0
  18. package/dist/esm/constants/index.js +2 -0
  19. package/dist/esm/constants/transferSyntaxes.d.ts +46 -0
  20. package/dist/esm/constants/transferSyntaxes.js +46 -0
  21. package/dist/esm/decodeImageFrameWorker.d.ts +1 -0
  22. package/dist/esm/decodeImageFrameWorker.js +263 -0
  23. package/dist/esm/imageLoader/colorSpaceConverters/convertPALETTECOLOR.d.ts +3 -0
  24. package/dist/esm/imageLoader/colorSpaceConverters/convertPALETTECOLOR.js +77 -0
  25. package/dist/esm/imageLoader/colorSpaceConverters/convertRGBColorByPixel.d.ts +2 -0
  26. package/dist/esm/imageLoader/colorSpaceConverters/convertRGBColorByPixel.js +21 -0
  27. package/dist/esm/imageLoader/colorSpaceConverters/convertRGBColorByPlane.d.ts +2 -0
  28. package/dist/esm/imageLoader/colorSpaceConverters/convertRGBColorByPlane.js +28 -0
  29. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.d.ts +2 -0
  30. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFull422ByPixel.js +44 -0
  31. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFullByPixel.d.ts +2 -0
  32. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFullByPixel.js +33 -0
  33. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFullByPlane.d.ts +2 -0
  34. package/dist/esm/imageLoader/colorSpaceConverters/convertYBRFullByPlane.js +35 -0
  35. package/dist/esm/imageLoader/colorSpaceConverters/index.d.ts +7 -0
  36. package/dist/esm/imageLoader/colorSpaceConverters/index.js +7 -0
  37. package/dist/esm/imageLoader/convertColorSpace.d.ts +1 -0
  38. package/dist/esm/imageLoader/convertColorSpace.js +40 -0
  39. package/dist/esm/imageLoader/createImage.d.ts +5 -0
  40. package/dist/esm/imageLoader/createImage.js +245 -0
  41. package/dist/esm/imageLoader/decodeImageFrame.d.ts +3 -0
  42. package/dist/esm/imageLoader/decodeImageFrame.js +63 -0
  43. package/dist/esm/imageLoader/decodeJPEGBaseline8BitColor.d.ts +4 -0
  44. package/dist/esm/imageLoader/decodeJPEGBaseline8BitColor.js +64 -0
  45. package/dist/esm/imageLoader/getImageFrame.d.ts +3 -0
  46. package/dist/esm/imageLoader/getImageFrame.js +25 -0
  47. package/dist/esm/imageLoader/getInstanceModule.d.ts +3 -0
  48. package/dist/esm/imageLoader/getInstanceModule.js +40 -0
  49. package/dist/esm/imageLoader/getMinMax.d.ts +4 -0
  50. package/dist/esm/imageLoader/getMinMax.js +15 -0
  51. package/dist/esm/imageLoader/getScalingParameters.d.ts +6 -0
  52. package/dist/esm/imageLoader/getScalingParameters.js +16 -0
  53. package/dist/esm/imageLoader/imageIdToURI.d.ts +1 -0
  54. package/dist/esm/imageLoader/imageIdToURI.js +4 -0
  55. package/dist/esm/imageLoader/index.d.ts +91 -0
  56. package/dist/esm/imageLoader/index.js +34 -0
  57. package/dist/esm/imageLoader/init.d.ts +3 -0
  58. package/dist/esm/imageLoader/init.js +23 -0
  59. package/dist/esm/imageLoader/internal/index.d.ts +10 -0
  60. package/dist/esm/imageLoader/internal/index.js +10 -0
  61. package/dist/esm/imageLoader/internal/options.d.ts +3 -0
  62. package/dist/esm/imageLoader/internal/options.js +19 -0
  63. package/dist/esm/imageLoader/internal/rangeRequest.d.ts +9 -0
  64. package/dist/esm/imageLoader/internal/rangeRequest.js +121 -0
  65. package/dist/esm/imageLoader/internal/streamRequest.d.ts +2 -0
  66. package/dist/esm/imageLoader/internal/streamRequest.js +93 -0
  67. package/dist/esm/imageLoader/internal/xhrRequest.d.ts +3 -0
  68. package/dist/esm/imageLoader/internal/xhrRequest.js +101 -0
  69. package/dist/esm/imageLoader/isColorConversionRequired.d.ts +1 -0
  70. package/dist/esm/imageLoader/isColorConversionRequired.js +22 -0
  71. package/dist/esm/imageLoader/isJPEGBaseline8BitColor.d.ts +3 -0
  72. package/dist/esm/imageLoader/isJPEGBaseline8BitColor.js +9 -0
  73. package/dist/esm/imageLoader/isNMReconstructable.d.ts +1 -0
  74. package/dist/esm/imageLoader/isNMReconstructable.js +3 -0
  75. package/dist/esm/imageLoader/registerLoaders.d.ts +2 -0
  76. package/dist/esm/imageLoader/registerLoaders.js +7 -0
  77. package/dist/esm/imageLoader/wadors/combineFrameInstance.d.ts +12 -0
  78. package/dist/esm/imageLoader/wadors/combineFrameInstance.js +44 -0
  79. package/dist/esm/imageLoader/wadors/extractMultipart.d.ts +23 -0
  80. package/dist/esm/imageLoader/wadors/extractMultipart.js +73 -0
  81. package/dist/esm/imageLoader/wadors/findIndexOfString.d.ts +2 -0
  82. package/dist/esm/imageLoader/wadors/findIndexOfString.js +32 -0
  83. package/dist/esm/imageLoader/wadors/getImageQualityStatus.d.ts +3 -0
  84. package/dist/esm/imageLoader/wadors/getImageQualityStatus.js +8 -0
  85. package/dist/esm/imageLoader/wadors/getPixelData.d.ts +26 -0
  86. package/dist/esm/imageLoader/wadors/getPixelData.js +35 -0
  87. package/dist/esm/imageLoader/wadors/getTagValue.d.ts +1 -0
  88. package/dist/esm/imageLoader/wadors/getTagValue.js +9 -0
  89. package/dist/esm/imageLoader/wadors/index.d.ts +29 -0
  90. package/dist/esm/imageLoader/wadors/index.js +25 -0
  91. package/dist/esm/imageLoader/wadors/loadImage.d.ts +25 -0
  92. package/dist/esm/imageLoader/wadors/loadImage.js +124 -0
  93. package/dist/esm/imageLoader/wadors/loadImage_test.d.ts +1 -0
  94. package/dist/esm/imageLoader/wadors/loadImage_test.js +41 -0
  95. package/dist/esm/imageLoader/wadors/metaData/NMHelpers.d.ts +5 -0
  96. package/dist/esm/imageLoader/wadors/metaData/NMHelpers.js +38 -0
  97. package/dist/esm/imageLoader/wadors/metaData/USHelpers.d.ts +19 -0
  98. package/dist/esm/imageLoader/wadors/metaData/USHelpers.js +46 -0
  99. package/dist/esm/imageLoader/wadors/metaData/extractPositioningFromMetadata.d.ts +3 -0
  100. package/dist/esm/imageLoader/wadors/metaData/extractPositioningFromMetadata.js +18 -0
  101. package/dist/esm/imageLoader/wadors/metaData/getFirstNumberValue.d.ts +2 -0
  102. package/dist/esm/imageLoader/wadors/metaData/getFirstNumberValue.js +6 -0
  103. package/dist/esm/imageLoader/wadors/metaData/getNumberString.d.ts +3 -0
  104. package/dist/esm/imageLoader/wadors/metaData/getNumberString.js +9 -0
  105. package/dist/esm/imageLoader/wadors/metaData/getNumberValue.d.ts +3 -0
  106. package/dist/esm/imageLoader/wadors/metaData/getNumberValue.js +9 -0
  107. package/dist/esm/imageLoader/wadors/metaData/getNumberValues.d.ts +3 -0
  108. package/dist/esm/imageLoader/wadors/metaData/getNumberValues.js +20 -0
  109. package/dist/esm/imageLoader/wadors/metaData/getOverlayPlaneModule.d.ts +4 -0
  110. package/dist/esm/imageLoader/wadors/metaData/getOverlayPlaneModule.js +38 -0
  111. package/dist/esm/imageLoader/wadors/metaData/getSequenceItems.d.ts +3 -0
  112. package/dist/esm/imageLoader/wadors/metaData/getSequenceItems.js +14 -0
  113. package/dist/esm/imageLoader/wadors/metaData/getValue.d.ts +3 -0
  114. package/dist/esm/imageLoader/wadors/metaData/getValue.js +14 -0
  115. package/dist/esm/imageLoader/wadors/metaData/index.d.ts +7 -0
  116. package/dist/esm/imageLoader/wadors/metaData/index.js +7 -0
  117. package/dist/esm/imageLoader/wadors/metaData/metaDataProvider.d.ts +14 -0
  118. package/dist/esm/imageLoader/wadors/metaData/metaDataProvider.js +277 -0
  119. package/dist/esm/imageLoader/wadors/metaDataManager.d.ts +19 -0
  120. package/dist/esm/imageLoader/wadors/metaDataManager.js +68 -0
  121. package/dist/esm/imageLoader/wadors/register.d.ts +1 -0
  122. package/dist/esm/imageLoader/wadors/register.js +7 -0
  123. package/dist/esm/imageLoader/wadouri/combineFrameInstanceDataset.d.ts +22 -0
  124. package/dist/esm/imageLoader/wadouri/combineFrameInstanceDataset.js +69 -0
  125. package/dist/esm/imageLoader/wadouri/dataSetCacheManager.d.ts +28 -0
  126. package/dist/esm/imageLoader/wadouri/dataSetCacheManager.js +141 -0
  127. package/dist/esm/imageLoader/wadouri/dataSetCacheManager_test.d.ts +1 -0
  128. package/dist/esm/imageLoader/wadouri/dataSetCacheManager_test.js +10 -0
  129. package/dist/esm/imageLoader/wadouri/dataset-from-partial-content.d.ts +6 -0
  130. package/dist/esm/imageLoader/wadouri/dataset-from-partial-content.js +55 -0
  131. package/dist/esm/imageLoader/wadouri/fileManager.d.ts +11 -0
  132. package/dist/esm/imageLoader/wadouri/fileManager.js +20 -0
  133. package/dist/esm/imageLoader/wadouri/getEncapsulatedImageFrame.d.ts +2 -0
  134. package/dist/esm/imageLoader/wadouri/getEncapsulatedImageFrame.js +31 -0
  135. package/dist/esm/imageLoader/wadouri/getPixelData.d.ts +3 -0
  136. package/dist/esm/imageLoader/wadouri/getPixelData.js +13 -0
  137. package/dist/esm/imageLoader/wadouri/getUncompressedImageFrame.d.ts +3 -0
  138. package/dist/esm/imageLoader/wadouri/getUncompressedImageFrame.js +47 -0
  139. package/dist/esm/imageLoader/wadouri/index.d.ts +45 -0
  140. package/dist/esm/imageLoader/wadouri/index.js +34 -0
  141. package/dist/esm/imageLoader/wadouri/loadFileRequest.d.ts +2 -0
  142. package/dist/esm/imageLoader/wadouri/loadFileRequest.js +17 -0
  143. package/dist/esm/imageLoader/wadouri/loadImage.d.ts +9 -0
  144. package/dist/esm/imageLoader/wadouri/loadImage.js +104 -0
  145. package/dist/esm/imageLoader/wadouri/loadedDataSets.d.ts +7 -0
  146. package/dist/esm/imageLoader/wadouri/loadedDataSets.js +5 -0
  147. package/dist/esm/imageLoader/wadouri/metaData/USHelpers.d.ts +2 -0
  148. package/dist/esm/imageLoader/wadouri/metaData/USHelpers.js +44 -0
  149. package/dist/esm/imageLoader/wadouri/metaData/extractPositioningFromDataset.d.ts +6 -0
  150. package/dist/esm/imageLoader/wadouri/metaData/extractPositioningFromDataset.js +80 -0
  151. package/dist/esm/imageLoader/wadouri/metaData/getImagePixelModule.d.ts +4 -0
  152. package/dist/esm/imageLoader/wadouri/metaData/getImagePixelModule.js +79 -0
  153. package/dist/esm/imageLoader/wadouri/metaData/getLUTs.d.ts +4 -0
  154. package/dist/esm/imageLoader/wadouri/metaData/getLUTs.js +44 -0
  155. package/dist/esm/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.d.ts +3 -0
  156. package/dist/esm/imageLoader/wadouri/metaData/getModalityLUTOutputPixelRepresentation.js +30 -0
  157. package/dist/esm/imageLoader/wadouri/metaData/getNumberValues.d.ts +3 -0
  158. package/dist/esm/imageLoader/wadouri/metaData/getNumberValues.js +16 -0
  159. package/dist/esm/imageLoader/wadouri/metaData/getOverlayPlaneModule.d.ts +4 -0
  160. package/dist/esm/imageLoader/wadouri/metaData/getOverlayPlaneModule.js +36 -0
  161. package/dist/esm/imageLoader/wadouri/metaData/index.d.ts +5 -0
  162. package/dist/esm/imageLoader/wadouri/metaData/index.js +5 -0
  163. package/dist/esm/imageLoader/wadouri/metaData/metaDataProvider.d.ts +4 -0
  164. package/dist/esm/imageLoader/wadouri/metaData/metaDataProvider.js +227 -0
  165. package/dist/esm/imageLoader/wadouri/parseImageId.d.ts +8 -0
  166. package/dist/esm/imageLoader/wadouri/parseImageId.js +20 -0
  167. package/dist/esm/imageLoader/wadouri/register.d.ts +1 -0
  168. package/dist/esm/imageLoader/wadouri/register.js +9 -0
  169. package/dist/esm/imageLoader/wadouri/retrieveMultiframeDataset.d.ts +17 -0
  170. package/dist/esm/imageLoader/wadouri/retrieveMultiframeDataset.js +57 -0
  171. package/dist/esm/imageLoader/wadouri/unpackBinaryFrame.d.ts +3 -0
  172. package/dist/esm/imageLoader/wadouri/unpackBinaryFrame.js +14 -0
  173. package/dist/esm/index.d.ts +95 -0
  174. package/dist/esm/index.js +36 -0
  175. package/dist/esm/shared/decoders/decodeBigEndian.d.ts +4 -0
  176. package/dist/esm/shared/decoders/decodeBigEndian.js +28 -0
  177. package/dist/esm/shared/decoders/decodeHTJ2K.d.ts +5 -0
  178. package/dist/esm/shared/decoders/decodeHTJ2K.js +109 -0
  179. package/dist/esm/shared/decoders/decodeJPEG2000.d.ts +5 -0
  180. package/dist/esm/shared/decoders/decodeJPEG2000.js +93 -0
  181. package/dist/esm/shared/decoders/decodeJPEGBaseline12Bit-js.d.ts +6 -0
  182. package/dist/esm/shared/decoders/decodeJPEGBaseline12Bit-js.js +34 -0
  183. package/dist/esm/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.d.ts +1 -0
  184. package/dist/esm/shared/decoders/decodeJPEGBaseline12Bit-wasm-not-yet-working.js +0 -0
  185. package/dist/esm/shared/decoders/decodeJPEGBaseline8Bit.d.ts +3 -0
  186. package/dist/esm/shared/decoders/decodeJPEGBaseline8Bit.js +62 -0
  187. package/dist/esm/shared/decoders/decodeJPEGLS.d.ts +5 -0
  188. package/dist/esm/shared/decoders/decodeJPEGLS.js +84 -0
  189. package/dist/esm/shared/decoders/decodeJPEGLossless.d.ts +6 -0
  190. package/dist/esm/shared/decoders/decodeJPEGLossless.js +39 -0
  191. package/dist/esm/shared/decoders/decodeLittleEndian.d.ts +4 -0
  192. package/dist/esm/shared/decoders/decodeLittleEndian.js +29 -0
  193. package/dist/esm/shared/decoders/decodeRLE.d.ts +4 -0
  194. package/dist/esm/shared/decoders/decodeRLE.js +128 -0
  195. package/dist/esm/shared/getMinMax.d.ts +6 -0
  196. package/dist/esm/shared/getMinMax.js +16 -0
  197. package/dist/esm/shared/getMinMax_test.d.ts +1 -0
  198. package/dist/esm/shared/getMinMax_test.js +9 -0
  199. package/dist/esm/shared/getPixelDataTypeFromMinMax.d.ts +2 -0
  200. package/dist/esm/shared/getPixelDataTypeFromMinMax.js +22 -0
  201. package/dist/esm/shared/isColorImage.d.ts +1 -0
  202. package/dist/esm/shared/isColorImage.js +10 -0
  203. package/dist/esm/shared/scaling/bilinear.d.ts +1 -0
  204. package/dist/esm/shared/scaling/bilinear.js +32 -0
  205. package/dist/esm/shared/scaling/replicate.d.ts +1 -0
  206. package/dist/esm/shared/scaling/replicate.js +20 -0
  207. package/dist/esm/shared/scaling/scaleArray.d.ts +2 -0
  208. package/dist/esm/shared/scaling/scaleArray.js +17 -0
  209. package/dist/esm/types/DICOMLoaderDataSetWithFetchMore.d.ts +9 -0
  210. package/dist/esm/types/DICOMLoaderDataSetWithFetchMore.js +0 -0
  211. package/dist/esm/types/DICOMLoaderIImage.d.ts +12 -0
  212. package/dist/esm/types/DICOMLoaderIImage.js +0 -0
  213. package/dist/esm/types/DICOMLoaderImageOptions.d.ts +23 -0
  214. package/dist/esm/types/DICOMLoaderImageOptions.js +0 -0
  215. package/dist/esm/types/LoadRequestFunction.d.ts +1 -0
  216. package/dist/esm/types/LoadRequestFunction.js +0 -0
  217. package/dist/esm/types/LoaderDecodeOptions.d.ts +2 -0
  218. package/dist/esm/types/LoaderDecodeOptions.js +0 -0
  219. package/dist/esm/types/LoaderOptions.d.ts +16 -0
  220. package/dist/esm/types/LoaderOptions.js +0 -0
  221. package/dist/esm/types/LutType.d.ts +6 -0
  222. package/dist/esm/types/LutType.js +0 -0
  223. package/dist/esm/types/WADORSMetaData.d.ts +4 -0
  224. package/dist/esm/types/WADORSMetaData.js +0 -0
  225. package/dist/esm/types/WebWorkerTypes.d.ts +64 -0
  226. package/dist/esm/types/WebWorkerTypes.js +0 -0
  227. package/dist/esm/types/XHRRequest.d.ts +16 -0
  228. package/dist/esm/types/XHRRequest.js +0 -0
  229. package/dist/esm/types/index.d.ts +11 -0
  230. package/dist/esm/types/index.js +0 -0
  231. package/dist/esm/version.d.ts +2 -0
  232. package/dist/esm/version.js +1 -0
  233. package/package.json +62 -18
  234. package/dist/cornerstoneDICOMImageLoader.bundle.min.js +0 -2
  235. package/dist/cornerstoneDICOMImageLoader.bundle.min.js.map +0 -1
  236. package/dist/cornerstoneDICOMImageLoaderNoWebWorkers.bundle.min.js +0 -2
  237. package/dist/cornerstoneDICOMImageLoaderNoWebWorkers.bundle.min.js.map +0 -1
  238. package/dist/dynamic-import/610.min.worker.js +0 -2
  239. package/dist/dynamic-import/610.min.worker.js.map +0 -1
  240. package/dist/dynamic-import/945.min.worker.js +0 -2
  241. package/dist/dynamic-import/945.min.worker.js.map +0 -1
  242. package/dist/dynamic-import/index.worker.f4bda803c15bc6359d5f.worker.js +0 -2
  243. package/dist/dynamic-import/index.worker.f4bda803c15bc6359d5f.worker.js.map +0 -1
  244. package/dist/index.worker.bundle.min.worker.js +0 -2
  245. package/dist/index.worker.bundle.min.worker.js.map +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={578:(e,t,r)=>{const n=r(823),a=r(187),o=r(592),i=r(604),s=r(249),l=r(968),c=Object.prototype.toString,{Z_NO_FLUSH:u,Z_FINISH:f,Z_OK:d,Z_STREAM_END:m,Z_NEED_DICT:g,Z_STREAM_ERROR:h,Z_DATA_ERROR:p,Z_MEM_ERROR:x}=r(684);function b(e){this.options=a.assign({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;let r=n.inflateInit2(this.strm,t.windowBits);if(r!==d)throw new Error(i[r]);if(this.header=new l,n.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=o.string2buf(t.dictionary):"[object ArrayBuffer]"===c.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(r=n.inflateSetDictionary(this.strm,t.dictionary),r!==d)))throw new Error(i[r])}function w(e,t){const r=new b(t);if(r.push(e),r.err)throw r.msg||i[r.err];return r.result}b.prototype.push=function(e,t){const r=this.strm,a=this.options.chunkSize,i=this.options.dictionary;let s,l,b;if(this.ended)return!1;for(l=t===~~t?t:!0===t?f:u,"[object ArrayBuffer]"===c.call(e)?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;;){for(0===r.avail_out&&(r.output=new Uint8Array(a),r.next_out=0,r.avail_out=a),s=n.inflate(r,l),s===g&&i&&(s=n.inflateSetDictionary(r,i),s===d?s=n.inflate(r,l):s===p&&(s=g));r.avail_in>0&&s===m&&r.state.wrap>0&&0!==e[r.next_in];)n.inflateReset(r),s=n.inflate(r,l);switch(s){case h:case p:case g:case x:return this.onEnd(s),this.ended=!0,!1}if(b=r.avail_out,r.next_out&&(0===r.avail_out||s===m))if("string"===this.options.to){let e=o.utf8border(r.output,r.next_out),t=r.next_out-e,n=o.buf2string(r.output,e);r.next_out=t,r.avail_out=a-t,t&&r.output.set(r.output.subarray(e,e+t),0),this.onData(n)}else this.onData(r.output.length===r.next_out?r.output:r.output.subarray(0,r.next_out));if(s!==d||0!==b){if(s===m)return s=n.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===r.avail_in)break}}return!0},b.prototype.onData=function(e){this.chunks.push(e)},b.prototype.onEnd=function(e){e===d&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=a.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},e.exports.Hq=function(e,t){return(t=t||{}).raw=!0,w(e,t)},r(684)},187:e=>{const t=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);e.exports.assign=function(e){const r=Array.prototype.slice.call(arguments,1);for(;r.length;){const n=r.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(const r in n)t(n,r)&&(e[r]=n[r])}}return e},e.exports.flattenChunks=e=>{let t=0;for(let r=0,n=e.length;r<n;r++)t+=e[r].length;const r=new Uint8Array(t);for(let t=0,n=0,a=e.length;t<a;t++){let a=e[t];r.set(a,n),n+=a.length}return r}},592:e=>{let t=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){t=!1}const r=new Uint8Array(256);for(let e=0;e<256;e++)r[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;r[254]=r[254]=1,e.exports.string2buf=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,r,n,a,o,i=e.length,s=0;for(a=0;a<i;a++)r=e.charCodeAt(a),55296==(64512&r)&&a+1<i&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),a++)),s+=r<128?1:r<2048?2:r<65536?3:4;for(t=new Uint8Array(s),o=0,a=0;o<s;a++)r=e.charCodeAt(a),55296==(64512&r)&&a+1<i&&(n=e.charCodeAt(a+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),a++)),r<128?t[o++]=r:r<2048?(t[o++]=192|r>>>6,t[o++]=128|63&r):r<65536?(t[o++]=224|r>>>12,t[o++]=128|r>>>6&63,t[o++]=128|63&r):(t[o++]=240|r>>>18,t[o++]=128|r>>>12&63,t[o++]=128|r>>>6&63,t[o++]=128|63&r);return t};e.exports.buf2string=(e,n)=>{const a=n||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,n));let o,i;const s=new Array(2*a);for(i=0,o=0;o<a;){let t=e[o++];if(t<128){s[i++]=t;continue}let n=r[t];if(n>4)s[i++]=65533,o+=n-1;else{for(t&=2===n?31:3===n?15:7;n>1&&o<a;)t=t<<6|63&e[o++],n--;n>1?s[i++]=65533:t<65536?s[i++]=t:(t-=65536,s[i++]=55296|t>>10&1023,s[i++]=56320|1023&t)}}return((e,r)=>{if(r<65534&&e.subarray&&t)return String.fromCharCode.apply(null,e.length===r?e:e.subarray(0,r));let n="";for(let t=0;t<r;t++)n+=String.fromCharCode(e[t]);return n})(s,i)},e.exports.utf8border=(e,t)=>{(t=t||e.length)>e.length&&(t=e.length);let n=t-1;for(;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+r[e[n]]>t?n:t}},693:e=>{e.exports=(e,t,r,n)=>{let a=65535&e|0,o=e>>>16&65535|0,i=0;for(;0!==r;){i=r>2e3?2e3:r,r-=i;do{a=a+t[n++]|0,o=o+a|0}while(--i);a%=65521,o%=65521}return a|o<<16|0}},684:e=>{e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},863:e=>{const t=new Uint32Array((()=>{let e,t=[];for(var r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t})());e.exports=(e,r,n,a)=>{const o=t,i=a+n;e^=-1;for(let t=a;t<i;t++)e=e>>>8^o[255&(e^r[t])];return-1^e}},968:e=>{e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},365:e=>{const t=16209;e.exports=function(e,r){let n,a,o,i,s,l,c,u,f,d,m,g,h,p,x,b,w,y,k,T,S,D,v,P;const I=e.state;n=e.next_in,v=e.input,a=n+(e.avail_in-5),o=e.next_out,P=e.output,i=o-(r-e.avail_out),s=o+(e.avail_out-257),l=I.dmax,c=I.wsize,u=I.whave,f=I.wnext,d=I.window,m=I.hold,g=I.bits,h=I.lencode,p=I.distcode,x=(1<<I.lenbits)-1,b=(1<<I.distbits)-1;e:do{g<15&&(m+=v[n++]<<g,g+=8,m+=v[n++]<<g,g+=8),w=h[m&x];t:for(;;){if(y=w>>>24,m>>>=y,g-=y,y=w>>>16&255,0===y)P[o++]=65535&w;else{if(!(16&y)){if(0==(64&y)){w=h[(65535&w)+(m&(1<<y)-1)];continue t}if(32&y){I.mode=16191;break e}e.msg="invalid literal/length code",I.mode=t;break e}k=65535&w,y&=15,y&&(g<y&&(m+=v[n++]<<g,g+=8),k+=m&(1<<y)-1,m>>>=y,g-=y),g<15&&(m+=v[n++]<<g,g+=8,m+=v[n++]<<g,g+=8),w=p[m&b];r:for(;;){if(y=w>>>24,m>>>=y,g-=y,y=w>>>16&255,!(16&y)){if(0==(64&y)){w=p[(65535&w)+(m&(1<<y)-1)];continue r}e.msg="invalid distance code",I.mode=t;break e}if(T=65535&w,y&=15,g<y&&(m+=v[n++]<<g,g+=8,g<y&&(m+=v[n++]<<g,g+=8)),T+=m&(1<<y)-1,T>l){e.msg="invalid distance too far back",I.mode=t;break e}if(m>>>=y,g-=y,y=o-i,T>y){if(y=T-y,y>u&&I.sane){e.msg="invalid distance too far back",I.mode=t;break e}if(S=0,D=d,0===f){if(S+=c-y,y<k){k-=y;do{P[o++]=d[S++]}while(--y);S=o-T,D=P}}else if(f<y){if(S+=c+f-y,y-=f,y<k){k-=y;do{P[o++]=d[S++]}while(--y);if(S=0,f<k){y=f,k-=y;do{P[o++]=d[S++]}while(--y);S=o-T,D=P}}}else if(S+=f-y,y<k){k-=y;do{P[o++]=d[S++]}while(--y);S=o-T,D=P}for(;k>2;)P[o++]=D[S++],P[o++]=D[S++],P[o++]=D[S++],k-=3;k&&(P[o++]=D[S++],k>1&&(P[o++]=D[S++]))}else{S=o-T;do{P[o++]=P[S++],P[o++]=P[S++],P[o++]=P[S++],k-=3}while(k>2);k&&(P[o++]=P[S++],k>1&&(P[o++]=P[S++]))}break}}break}}while(n<a&&o<s);k=g>>3,n-=k,g-=k<<3,m&=(1<<g)-1,e.next_in=n,e.next_out=o,e.avail_in=n<a?a-n+5:5-(n-a),e.avail_out=o<s?s-o+257:257-(o-s),I.hold=m,I.bits=g}},823:(e,t,r)=>{const n=r(693),a=r(863),o=r(365),i=r(446),{Z_FINISH:s,Z_BLOCK:l,Z_TREES:c,Z_OK:u,Z_STREAM_END:f,Z_NEED_DICT:d,Z_STREAM_ERROR:m,Z_DATA_ERROR:g,Z_MEM_ERROR:h,Z_BUF_ERROR:p,Z_DEFLATED:x}=r(684),b=16180,w=16190,y=16191,k=16192,T=16194,S=16199,D=16200,v=16206,P=16209,I=16210,E=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function A(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const _=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode<b||t.mode>16211?1:0},L=e=>{if(_(e))return m;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=b,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,u},C=e=>{if(_(e))return m;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,L(e)},O=(e,t)=>{let r;if(_(e))return m;const n=e.state;return t<0?(r=0,t=-t):(r=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?m:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,C(e))},M=(e,t)=>{if(!e)return m;const r=new A;e.state=r,r.strm=e,r.window=null,r.mode=b;const n=O(e,t);return n!==u&&(e.state=null),n};let R,F,B=!0;const U=e=>{if(B){R=new Int32Array(512),F=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(i(1,e.lens,0,288,R,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;i(2,e.lens,0,32,F,0,e.work,{bits:5}),B=!1}e.lencode=R,e.lenbits=9,e.distcode=F,e.distbits=5},N=(e,t,r,n)=>{let a;const o=e.state;return null===o.window&&(o.wsize=1<<o.wbits,o.wnext=0,o.whave=0,o.window=new Uint8Array(o.wsize)),n>=o.wsize?(o.window.set(t.subarray(r-o.wsize,r),0),o.wnext=0,o.whave=o.wsize):(a=o.wsize-o.wnext,a>n&&(a=n),o.window.set(t.subarray(r-n,r-n+a),o.wnext),(n-=a)?(o.window.set(t.subarray(r-n,r),0),o.wnext=n,o.whave=o.wsize):(o.wnext+=a,o.wnext===o.wsize&&(o.wnext=0),o.whave<o.wsize&&(o.whave+=a))),0};e.exports.inflateReset=C,e.exports.inflateReset2=O,e.exports.inflateResetKeep=L,e.exports.inflateInit=e=>M(e,15),e.exports.inflateInit2=M,e.exports.inflate=(e,t)=>{let r,A,L,C,O,M,R,F,B,j,$,G,V,W,q,Z,Y,z,H,Q,X,K,J=0;const ee=new Uint8Array(4);let te,re;const ne=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(_(e)||!e.output||!e.input&&0!==e.avail_in)return m;r=e.state,r.mode===y&&(r.mode=k),O=e.next_out,L=e.output,R=e.avail_out,C=e.next_in,A=e.input,M=e.avail_in,F=r.hold,B=r.bits,j=M,$=R,K=u;e:for(;;)switch(r.mode){case b:if(0===r.wrap){r.mode=k;break}for(;B<16;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(2&r.wrap&&35615===F){0===r.wbits&&(r.wbits=15),r.check=0,ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0),F=0,B=0,r.mode=16181;break}if(r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&F)<<8)+(F>>8))%31){e.msg="incorrect header check",r.mode=P;break}if((15&F)!==x){e.msg="unknown compression method",r.mode=P;break}if(F>>>=4,B-=4,X=8+(15&F),0===r.wbits&&(r.wbits=X),X>15||X>r.wbits){e.msg="invalid window size",r.mode=P;break}r.dmax=1<<r.wbits,r.flags=0,e.adler=r.check=1,r.mode=512&F?16189:y,F=0,B=0;break;case 16181:for(;B<16;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(r.flags=F,(255&r.flags)!==x){e.msg="unknown compression method",r.mode=P;break}if(57344&r.flags){e.msg="unknown header flags set",r.mode=P;break}r.head&&(r.head.text=F>>8&1),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0,r.mode=16182;case 16182:for(;B<32;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}r.head&&(r.head.time=F),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,ee[2]=F>>>16&255,ee[3]=F>>>24&255,r.check=a(r.check,ee,4,0)),F=0,B=0,r.mode=16183;case 16183:for(;B<16;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}r.head&&(r.head.xflags=255&F,r.head.os=F>>8),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0,r.mode=16184;case 16184:if(1024&r.flags){for(;B<16;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}r.length=F,r.head&&(r.head.extra_len=F),512&r.flags&&4&r.wrap&&(ee[0]=255&F,ee[1]=F>>>8&255,r.check=a(r.check,ee,2,0)),F=0,B=0}else r.head&&(r.head.extra=null);r.mode=16185;case 16185:if(1024&r.flags&&(G=r.length,G>M&&(G=M),G&&(r.head&&(X=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(A.subarray(C,C+G),X)),512&r.flags&&4&r.wrap&&(r.check=a(r.check,A,G,C)),M-=G,C+=G,r.length-=G),r.length))break e;r.length=0,r.mode=16186;case 16186:if(2048&r.flags){if(0===M)break e;G=0;do{X=A[C+G++],r.head&&X&&r.length<65536&&(r.head.name+=String.fromCharCode(X))}while(X&&G<M);if(512&r.flags&&4&r.wrap&&(r.check=a(r.check,A,G,C)),M-=G,C+=G,X)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=16187;case 16187:if(4096&r.flags){if(0===M)break e;G=0;do{X=A[C+G++],r.head&&X&&r.length<65536&&(r.head.comment+=String.fromCharCode(X))}while(X&&G<M);if(512&r.flags&&4&r.wrap&&(r.check=a(r.check,A,G,C)),M-=G,C+=G,X)break e}else r.head&&(r.head.comment=null);r.mode=16188;case 16188:if(512&r.flags){for(;B<16;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(4&r.wrap&&F!==(65535&r.check)){e.msg="header crc mismatch",r.mode=P;break}F=0,B=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=y;break;case 16189:for(;B<32;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}e.adler=r.check=E(F),F=0,B=0,r.mode=w;case w:if(0===r.havedict)return e.next_out=O,e.avail_out=R,e.next_in=C,e.avail_in=M,r.hold=F,r.bits=B,d;e.adler=r.check=1,r.mode=y;case y:if(t===l||t===c)break e;case k:if(r.last){F>>>=7&B,B-=7&B,r.mode=v;break}for(;B<3;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}switch(r.last=1&F,F>>>=1,B-=1,3&F){case 0:r.mode=16193;break;case 1:if(U(r),r.mode=S,t===c){F>>>=2,B-=2;break e}break;case 2:r.mode=16196;break;case 3:e.msg="invalid block type",r.mode=P}F>>>=2,B-=2;break;case 16193:for(F>>>=7&B,B-=7&B;B<32;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if((65535&F)!=(F>>>16^65535)){e.msg="invalid stored block lengths",r.mode=P;break}if(r.length=65535&F,F=0,B=0,r.mode=T,t===c)break e;case T:r.mode=16195;case 16195:if(G=r.length,G){if(G>M&&(G=M),G>R&&(G=R),0===G)break e;L.set(A.subarray(C,C+G),O),M-=G,C+=G,R-=G,O+=G,r.length-=G;break}r.mode=y;break;case 16196:for(;B<14;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(r.nlen=257+(31&F),F>>>=5,B-=5,r.ndist=1+(31&F),F>>>=5,B-=5,r.ncode=4+(15&F),F>>>=4,B-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=P;break}r.have=0,r.mode=16197;case 16197:for(;r.have<r.ncode;){for(;B<3;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}r.lens[ne[r.have++]]=7&F,F>>>=3,B-=3}for(;r.have<19;)r.lens[ne[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,te={bits:r.lenbits},K=i(0,r.lens,0,19,r.lencode,0,r.work,te),r.lenbits=te.bits,K){e.msg="invalid code lengths set",r.mode=P;break}r.have=0,r.mode=16198;case 16198:for(;r.have<r.nlen+r.ndist;){for(;J=r.lencode[F&(1<<r.lenbits)-1],q=J>>>24,Z=J>>>16&255,Y=65535&J,!(q<=B);){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(Y<16)F>>>=q,B-=q,r.lens[r.have++]=Y;else{if(16===Y){for(re=q+2;B<re;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(F>>>=q,B-=q,0===r.have){e.msg="invalid bit length repeat",r.mode=P;break}X=r.lens[r.have-1],G=3+(3&F),F>>>=2,B-=2}else if(17===Y){for(re=q+3;B<re;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}F>>>=q,B-=q,X=0,G=3+(7&F),F>>>=3,B-=3}else{for(re=q+7;B<re;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}F>>>=q,B-=q,X=0,G=11+(127&F),F>>>=7,B-=7}if(r.have+G>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=P;break}for(;G--;)r.lens[r.have++]=X}}if(r.mode===P)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=P;break}if(r.lenbits=9,te={bits:r.lenbits},K=i(1,r.lens,0,r.nlen,r.lencode,0,r.work,te),r.lenbits=te.bits,K){e.msg="invalid literal/lengths set",r.mode=P;break}if(r.distbits=6,r.distcode=r.distdyn,te={bits:r.distbits},K=i(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,te),r.distbits=te.bits,K){e.msg="invalid distances set",r.mode=P;break}if(r.mode=S,t===c)break e;case S:r.mode=D;case D:if(M>=6&&R>=258){e.next_out=O,e.avail_out=R,e.next_in=C,e.avail_in=M,r.hold=F,r.bits=B,o(e,$),O=e.next_out,L=e.output,R=e.avail_out,C=e.next_in,A=e.input,M=e.avail_in,F=r.hold,B=r.bits,r.mode===y&&(r.back=-1);break}for(r.back=0;J=r.lencode[F&(1<<r.lenbits)-1],q=J>>>24,Z=J>>>16&255,Y=65535&J,!(q<=B);){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(Z&&0==(240&Z)){for(z=q,H=Z,Q=Y;J=r.lencode[Q+((F&(1<<z+H)-1)>>z)],q=J>>>24,Z=J>>>16&255,Y=65535&J,!(z+q<=B);){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}F>>>=z,B-=z,r.back+=z}if(F>>>=q,B-=q,r.back+=q,r.length=Y,0===Z){r.mode=16205;break}if(32&Z){r.back=-1,r.mode=y;break}if(64&Z){e.msg="invalid literal/length code",r.mode=P;break}r.extra=15&Z,r.mode=16201;case 16201:if(r.extra){for(re=r.extra;B<re;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}r.length+=F&(1<<r.extra)-1,F>>>=r.extra,B-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=16202;case 16202:for(;J=r.distcode[F&(1<<r.distbits)-1],q=J>>>24,Z=J>>>16&255,Y=65535&J,!(q<=B);){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(0==(240&Z)){for(z=q,H=Z,Q=Y;J=r.distcode[Q+((F&(1<<z+H)-1)>>z)],q=J>>>24,Z=J>>>16&255,Y=65535&J,!(z+q<=B);){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}F>>>=z,B-=z,r.back+=z}if(F>>>=q,B-=q,r.back+=q,64&Z){e.msg="invalid distance code",r.mode=P;break}r.offset=Y,r.extra=15&Z,r.mode=16203;case 16203:if(r.extra){for(re=r.extra;B<re;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}r.offset+=F&(1<<r.extra)-1,F>>>=r.extra,B-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=P;break}r.mode=16204;case 16204:if(0===R)break e;if(G=$-R,r.offset>G){if(G=r.offset-G,G>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=P;break}G>r.wnext?(G-=r.wnext,V=r.wsize-G):V=r.wnext-G,G>r.length&&(G=r.length),W=r.window}else W=L,V=O-r.offset,G=r.length;G>R&&(G=R),R-=G,r.length-=G;do{L[O++]=W[V++]}while(--G);0===r.length&&(r.mode=D);break;case 16205:if(0===R)break e;L[O++]=r.length,R--,r.mode=D;break;case v:if(r.wrap){for(;B<32;){if(0===M)break e;M--,F|=A[C++]<<B,B+=8}if($-=R,e.total_out+=$,r.total+=$,4&r.wrap&&$&&(e.adler=r.check=r.flags?a(r.check,L,$,O-$):n(r.check,L,$,O-$)),$=R,4&r.wrap&&(r.flags?F:E(F))!==r.check){e.msg="incorrect data check",r.mode=P;break}F=0,B=0}r.mode=16207;case 16207:if(r.wrap&&r.flags){for(;B<32;){if(0===M)break e;M--,F+=A[C++]<<B,B+=8}if(4&r.wrap&&F!==(4294967295&r.total)){e.msg="incorrect length check",r.mode=P;break}F=0,B=0}r.mode=16208;case 16208:K=f;break e;case P:K=g;break e;case I:return h;default:return m}return e.next_out=O,e.avail_out=R,e.next_in=C,e.avail_in=M,r.hold=F,r.bits=B,(r.wsize||$!==e.avail_out&&r.mode<P&&(r.mode<v||t!==s))&&N(e,e.output,e.next_out,$-e.avail_out)?(r.mode=I,h):(j-=e.avail_in,$-=e.avail_out,e.total_in+=j,e.total_out+=$,r.total+=$,4&r.wrap&&$&&(e.adler=r.check=r.flags?a(r.check,L,$,e.next_out-$):n(r.check,L,$,e.next_out-$)),e.data_type=r.bits+(r.last?64:0)+(r.mode===y?128:0)+(r.mode===S||r.mode===T?256:0),(0===j&&0===$||t===s)&&K===u&&(K=p),K)},e.exports.inflateEnd=e=>{if(_(e))return m;let t=e.state;return t.window&&(t.window=null),e.state=null,u},e.exports.inflateGetHeader=(e,t)=>{if(_(e))return m;const r=e.state;return 0==(2&r.wrap)?m:(r.head=t,t.done=!1,u)},e.exports.inflateSetDictionary=(e,t)=>{const r=t.length;let a,o,i;return _(e)?m:(a=e.state,0!==a.wrap&&a.mode!==w?m:a.mode===w&&(o=1,o=n(o,t,r,0),o!==a.check)?g:(i=N(e,t,r,r),i?(a.mode=I,h):(a.havedict=1,u)))},e.exports.inflateInfo="pako inflate (from Nodeca project)"},446:e=>{const t=15,r=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),n=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),a=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),o=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);e.exports=(e,i,s,l,c,u,f,d)=>{const m=d.bits;let g,h,p,x,b,w,y=0,k=0,T=0,S=0,D=0,v=0,P=0,I=0,E=0,A=0,_=null;const L=new Uint16Array(16),C=new Uint16Array(16);let O,M,R,F=null;for(y=0;y<=t;y++)L[y]=0;for(k=0;k<l;k++)L[i[s+k]]++;for(D=m,S=t;S>=1&&0===L[S];S--);if(D>S&&(D=S),0===S)return c[u++]=20971520,c[u++]=20971520,d.bits=1,0;for(T=1;T<S&&0===L[T];T++);for(D<T&&(D=T),I=1,y=1;y<=t;y++)if(I<<=1,I-=L[y],I<0)return-1;if(I>0&&(0===e||1!==S))return-1;for(C[1]=0,y=1;y<t;y++)C[y+1]=C[y]+L[y];for(k=0;k<l;k++)0!==i[s+k]&&(f[C[i[s+k]]++]=k);if(0===e?(_=F=f,w=20):1===e?(_=r,F=n,w=257):(_=a,F=o,w=0),A=0,k=0,y=T,b=u,v=D,P=0,p=-1,E=1<<D,x=E-1,1===e&&E>852||2===e&&E>592)return 1;for(;;){O=y-P,f[k]+1<w?(M=0,R=f[k]):f[k]>=w?(M=F[f[k]-w],R=_[f[k]-w]):(M=96,R=0),g=1<<y-P,h=1<<v,T=h;do{h-=g,c[b+(A>>P)+h]=O<<24|M<<16|R|0}while(0!==h);for(g=1<<y-1;A&g;)g>>=1;if(0!==g?(A&=g-1,A+=g):A=0,k++,0==--L[y]){if(y===S)break;y=i[s+f[k]]}if(y>D&&(A&x)!==p){for(0===P&&(P=D),b+=T,v=y-P,I=1<<v;v+P<S&&(I-=L[v+P],!(I<=0));)v++,I<<=1;if(E+=1<<v,1===e&&E>852||2===e&&E>592)return 1;p=A&x,c[p]=D<<24|v<<16|b-u|0}}return 0!==A&&(c[b+A]=y-P<<24|64<<16|0),d.bits=D,0}},604:e=>{e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},249:e=>{e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},464:t=>{t.exports=e},713:e=>{e.exports=t}},n={};function a(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,a),o.exports}a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&!e;)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})();var o={};return(()=>{function e(e,t,r){if(void 0===e)throw new Error("decodeRGB: rgbBuffer must 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:()=>kt,convertColorSpace:()=>X,convertPALETTECOLOR:()=>yt,convertRGBColorByPixel:()=>e,convertRGBColorByPlane:()=>t,convertYBRFullByPixel:()=>r,convertYBRFullByPlane:()=>n,createImage:()=>ye,decodeImageFrame:()=>he,decodeJPEGBaseline8BitColor:()=>J,default:()=>St,external:()=>xt,getImageFrame:()=>pe,getMinMax:()=>H,getPixelData:()=>z,internal:()=>U,isColorImage:()=>xe,isJPEGBaseline8BitColor:()=>Tt,wadors:()=>Ie,wadouri:()=>dt,webWorkerManager:()=>de});const i=function(e,t,r){return t=t||0,e&&e.Value?e.Value.length<=t?r:e.Value[t]:r};const s=function(e,t,r){const n=i(e,t,r);if(void 0!==n)return parseFloat(n)};const l=function(e,t){const r=i(e,t);if(void 0!==r)return parseFloat(r)};const c=function(e,t){if(!e)return;if(!e.Value)return;if(!Array.isArray(e.Value))return;if(t&&e.Value.length<t)return;const r=[];for(let t=0;t<e.Value.length;t++)r.push(parseFloat(e.Value[t]));return r};function u(e){const t=e.indexOf(":");return e.substring(t+1)}function f(e,t=!0){return e&&e.Value?e.Value[0]&&t?e.Value[0]:e.Value:e}function d(e,t,r){return{shared:(t?Object.values(t[0]):[]).map((e=>e[0])).filter((e=>void 0!==e&&"object"==typeof e)),perFrame:(e?Object.values(e[r-1]):[]).map((e=>e.Value[0])).filter((e=>void 0!==e&&"object"==typeof e))}}function m(e){let{52009230:t,52009229:r,"00280008":n,...a}=e;return t=f(t,!1),r=f(r,!1),n=f(n),{PerFrameFunctionalGroupsSequence:t,SharedFunctionalGroupsSequence:r,NumberOfFrames:n,rest:a}}function g(e){const t=e.indexOf("/frames/")+8,r=e.slice(0,t),n=parseInt(e.slice(t),10);return{metadata:p[`${r}1`],frame:n}}const h={_retrieveMultiframeMetadata:g,retrieveMultiframeMetadata:function(e){return g(u(e))},isMultiframe:function(e){const t=i(e["00280008"]);return t&&t>1}};let p=[],x={};const b={add:function(e,t){const r=u(e);t.isMultiframe=h.isMultiframe(t),p[r]=t},get:function(e){const t=u(e),r=p[t];if(r&&!r?.isMultiframe)return r;const n=x[t];if(n)return n;const a=h._retrieveMultiframeMetadata(t);if(!a||!a.metadata)return;const{metadata:o,frame:i}=a;if(o){const e=function(e,t){const{PerFrameFunctionalGroupsSequence:r,SharedFunctionalGroupsSequence:n,NumberOfFrames:a,rest:o}=m(t);if(r||a>1){const{shared:i,perFrame:s}=d(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 x[t]=e,e}},remove:function(e){const t=u(e);p[t]=void 0,x[t]=void 0},purge:function(){p=[],x={}}};function w(e){return"RECON TOMO"===e||"RECON GATED TOMO"===e}function y(e){return i(e["00080060"]).includes("NM")}function k(e,t){const r=f(e["00080008"],!1);if(r)return r[t]}function T(e){let t=c(e["00200037"],6);return!t&&y(e)&&(t=function(e){let t;const r=k(e,2);if(r&&w(r)){const r=f(e["00540022"]);r&&(t=c(r["00200037"],6))}return t}(e)),t}function S(e){let t=c(e["00200032"],3);return!t&&y(e)&&(t=function(e){let t;const r=k(e,2);if(r&&w(r)){const r=f(e["00540022"]);r&&(t=c(r["00200032"],3))}return t}(e)),t}function D(e,t,r){const n={};for(const a of r)try{const r=t(a,e);if(r){const e={};for(const t in r)if(t in r){e[v(t)]=r[t]}Object.assign(n,e)}}catch(e){console.error(`Error retrieving ${a} data:`,e)}return n}const v=e=>e.charAt(0).toUpperCase()+e.slice(1),P=["multiframeModule","generalSeriesModule","patientStudyModule","imagePlaneModule","nmMultiframeGeometryModule","imagePixelModule","modalityLutModule","voiLutModule","sopCommonModule","petIsotopeModule","overlayPlaneModule","transferSyntax","petSeriesModule","petImageModule"];function I(e,t){const r=c(e[t]);return r?r[0]:null}const E=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 A(e){const t=E(e["00186011"]);if(!t||!t.length)return null;return t.map((e=>{const t=I(e,"0018602C"),r=I(e,"0018602E"),n=I(e,"00186024"),a=I(e,"00186026");return{regionLocationMinY0:I(e,"0018601A"),regionLocationMaxY1:I(e,"0018601E"),regionLocationMinX0:I(e,"00186018"),regionLocationMaxX1:I(e,"0018601C"),referencePixelX0:I(e,"00186020"),referencePixelY0:I(e,"00186022"),physicalDeltaX:t,physicalDeltaY:r,physicalUnitsXDirection:n,physicalUnitsYDirection:a,referencePhysicalPixelValueY:I(e,"0018602A"),referencePhysicalPixelValueX:I(e,"00186028"),regionSpatialFormat:I(e,"00186012"),regionDataType:I(e,"00186014"),regionFlags:I(e,"00186016"),transducerFrequency:I(e,"00186030")}}))}function _(e,t){return{transferSyntaxUID:i(t["00020010"])||i(t["00083002"])}}const L=function e(t,r){const{MetadataModules:n}=xt.cornerstone.Enums,{dicomParser:a}=xt;if(t===n.MULTIFRAME){const{metadata:e,frame:t}=h.retrieveMultiframeMetadata(r);if(!e)return;const{PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,NumberOfFrames:o}=m(e);if(n||o>1){const{shared:e,perFrame:r}=d(n,a,t);return{NumberOfFrames:o,PerFrameFunctionalInformation:r,SharedFunctionalInformation:e}}return{NumberOfFrames:o}}const o=b.get(r);if(o){if(t===n.GENERAL_STUDY)return{studyDescription:i(o["00081030"]),studyDate:a.parseDA(i(o["00080020"])),studyTime:a.parseTM(i(o["00080030"],0,"")),accessionNumber:i(o["00080050"])};if(t===n.GENERAL_SERIES)return{modality:i(o["00080060"]),seriesInstanceUID:i(o["0020000E"]),seriesNumber:l(o["00200011"]),studyInstanceUID:i(o["0020000D"]),seriesDate:a.parseDA(i(o["00080021"])),seriesTime:a.parseTM(i(o["00080031"],0,"")),acquisitionDate:a.parseDA(i(o["00080022"])),acquisitionTime:a.parseTM(i(o["00080032"],0,""))};if(t===n.GENERAL_IMAGE)return{sopInstanceUID:i(o["00080018"]),instanceNumber:l(o["00200013"]),lossyImageCompression:i(o["00282110"]),lossyImageCompressionRatio:l(o["00282112"]),lossyImageCompressionMethod:i(o["00282114"])};if(t===n.PATIENT)return{patientID:i(o["00100020"]),patientName:i(o["00100010"])};if(t===n.PATIENT_STUDY)return{patientAge:l(o["00101010"]),patientSize:l(o["00101020"]),patientSex:i(o["00100040"]),patientWeight:l(o["00101030"])};if(t===n.NM_MULTIFRAME_GEOMETRY){const e=i(o["00080060"]),t=k(o,2);return{modality:e,imageType:i(o["00080008"]),imageSubType:t,imageOrientationPatient:T(o),imagePositionPatient:S(o),sliceThickness:l(o["00180050"]),spacingBetweenSlices:l(o["00180088"]),pixelSpacing:c(o["00280030"],2),numberOfFrames:l(o["00280008"]),isNMReconstructable:w(t)&&e.includes("NM")}}if(t===n.IMAGE_PLANE){const e=T(o),t=S(o),r=c(o["00280030"],2);let n=null,a=null;r&&(a=r[0],n=r[1]);let s=null,u=null;return e&&(s=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],u=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:i(o["00200052"]),rows:l(o["00280010"]),columns:l(o["00280011"]),imageOrientationPatient:e,rowCosines:s,columnCosines:u,imagePositionPatient:t,sliceThickness:l(o["00180050"]),sliceLocation:l(o["00201041"]),pixelSpacing:r,rowPixelSpacing:a,columnPixelSpacing:n}}if(t===n.ULTRASOUND_ENHANCED_REGION)return A(o);if(t===n.CALIBRATION){if("US"===i(o["00080060"])){return{sequenceOfUltrasoundRegions:A(o)}}}if(t===n.IMAGE_URL)return function(e,t){const{transferSyntaxUID:r}=_(e,t),n=xt.cornerstone.utilities.isVideoTransferSyntax(r),a=e.substring(7),o=a.replace("/frames/","/thumbnail/");let i=a.replace("/frames/","/rendered/");n&&(i=i.replace("/rendered/1","/rendered"));return{isVideo:n,rendered:i,thumbnail:o}}(r,o);if(t===n.CINE)return function(e,t){const r=i(t["00180040"]);return{cineRate:r,numberOfFrames:l(t["00280008"])}}(0,o);if(t===n.IMAGE_PIXEL)return{samplesPerPixel:l(o["00280002"]),photometricInterpretation:i(o["00280004"]),rows:l(o["00280010"]),columns:l(o["00280011"]),bitsAllocated:l(o["00280100"]),bitsStored:l(o["00280101"]),highBit:i(o["00280102"]),pixelRepresentation:l(o["00280103"]),planarConfiguration:l(o["00280006"]),pixelAspectRatio:i(o["00280034"]),smallestPixelValue:l(o["00280106"]),largestPixelValue:l(o["00280107"]),redPaletteColorLookupTableDescriptor:c(o["00281101"]),greenPaletteColorLookupTableDescriptor:c(o["00281102"]),bluePaletteColorLookupTableDescriptor:c(o["00281103"]),redPaletteColorLookupTableData:c(o["00281201"]),greenPaletteColorLookupTableData:c(o["00281202"]),bluePaletteColorLookupTableData:c(o["00281203"])};if(t===n.VOI_LUT)return{windowCenter:c(o["00281050"],1),windowWidth:c(o["00281051"],1)};if(t===n.MODALITY_LUT)return{rescaleIntercept:l(o["00281052"]),rescaleSlope:l(o["00281053"]),rescaleType:i(o["00281054"])};if(t===n.SOP_COMMON)return{sopClassUID:i(o["00080016"]),sopInstanceUID:i(o["00080018"])};if(t===n.PET_ISOTOPE){const e=i(o["00540016"]);if(void 0===e)return;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:a.parseTM(i(e["00181072"],0,"")),radiopharmaceuticalStartDateTime:i(e["00181078"],0,""),radionuclideTotalDose:l(e["00181074"]),radionuclideHalfLife:l(e["00181075"])}}}return 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=i(e[`${n}3000`]);if(!a)continue;const o=[];for(let t=0;t<a.length;t++)for(let r=0;r<8;r++){const n=e.Value[a.dataOffset+t];o[8*t+r]=n>>r&1}t.push({rows:l(e[`${n}0010`]),columns:l(e[`${n}0011`]),type:i(e[`${n}0040`]),x:l(e[`${n}0050`],1)-1,y:l(e[`${n}0050`],0)-1,pixelData:o,description:i(e[`${n}0022`]),label:i(e[`${n}1500`]),roiArea:i(e[`${n}1301`]),roiMean:i(e[`${n}1302`]),roiStandardDeviation:i(e[`${n}1303`])})}return{overlays:t}}(o):"transferSyntax"===t?_(r,o):t===n.PET_SERIES?{correctedImage:i(o["00280051"]),units:i(o["00541001"]),decayCorrection:i(o["00541102"])}:t===n.PET_IMAGE?{frameReferenceTime:l(o["00541300"]),actualFrameDuration:l(o["00181242"])}:"instance"===t?D(r,e,P):void 0}};function C(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 O=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]&&C(n,e,t))return t;return-1};let M={open(e,t){e.open("get",t,!0)},beforeSend(){},beforeProcessing:e=>Promise.resolve(e.response),imageCreated(){},strict:!1,decodeConfig:{convertFloatPixelDataToInt:!0,use16BitDataType:!1}};function R(e){M=Object.assign(M,e)}function F(){return M}const B=function(e,t,r={},n={}){const{cornerstone:a}=xt,o=F(),i=e=>{if("function"==typeof o.errorInterceptor){const t=new Error("request failed");t.request=e,t.response=e.response,t.status=e.status,o.errorInterceptor(t)}},s=new XMLHttpRequest,l=new Promise(((l,c)=>{o.open(s,e,r,n);const u=o.beforeSend(s,t,r,n);s.responseType="arraybuffer";const 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 l.xhr=s,l},U={xhrRequest:B,setOptions:R,getOptions:F};var N=a(464);const{ImageQualityStatus:j}=N.Enums;function $(e,t,r){r||={};const n=new Uint8Array(t),a=!!r?.isPartial;if(-1===e.indexOf("multipart"))return{contentType:e,imageQualityStatus:a?j.SUBRESOLUTION:j.FULL_RESOLUTION,pixelData:n};let{tokenIndex:o,responseHeaders:i,boundary:s,multipartContentType:l}=r;if(o||=O(n,"\r\n\r\n"),-1===o)throw new Error("invalid response - no multipart mime header");if(!s){const e=function(e,t,r){t=t||0,r=r||e.length-t;let n="";for(let a=t;a<t+r;a++)n+=String.fromCharCode(e[a]);return n}(n,0,o);if(i=e.split("\r\n"),s=function(e){for(let t=0;t<e.length;t++)if("--"===e[t].substr(0,2))return e[t]}(i),!s)throw new Error("invalid response - no boundary marker")}const c=o+4,u=O(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:G}=N.Enums;function V(e,t=!0){return t?e.imageQualityStatus??G.FULL_RESOLUTION:G.SUBRESOLUTION}const{ProgressiveIterator:W}=N.utilities;function q(e,t,r={},n={}){const a=F(),{retrieveOptions:o={},streamingData:i={}}=n,s=o.minChunkSize||131072,l=new W("streamRequest");return l.generate((async(n,l)=>{const c=Object.assign({},r);Object.keys(c).forEach((function(t){null===c[t]&&(c[t]=void 0),"Accept"===t&&-1!==e.indexOf("accept=")&&(c[t]=void 0)}));try{const a=await fetch(e,{headers:r,signal:void 0});if(200!==a.status)throw new Error(`Couldn't retrieve ${e} got status ${a.status}`);const l=a.body.getReader(),c=a.headers,u=c.get("content-type"),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:a}=await l.read();if(m=Z(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<g+s)continue;g=m.length,i.isPartial=!r;const c=$(u,m,i),h=V(o,d),p={url:e,imageId:t,...c,percentComplete:r?100:100*c.pixelData?.length/f,imageQualityStatus:h,done:d};n.add(p,d)}}catch(e){(e=>{if("function"==typeof a.errorInterceptor){const e=new Error("request failed");a.errorInterceptor(e)}})(),console.error(e),l(e)}})),l.getNextPromise()}function Z(e,t){if(!e)return t;if(!t)return e;const r=new Uint8Array(e.length+t.length);return r.set(e,0),r.set(t,e.length),r}function Y(e,t,r={},n={}){const a=F(),{retrieveOptions:o={},streamingData:i}=n,s=i.chunkSize||function(e,t,r){const n=t[r];if("function"!=typeof n)return n;const a=b.get(e);return n(a,e)}(t,o,"chunkSize")||65536,l=new Promise((async(t,n)=>{const l=Object.assign({},r);Object.keys(l).forEach((function(e){null!==l[e]&&void 0!==l[e]||delete l[e]}));try{i.encodedData||(i.chunkSize=s,i.rangesFetched=0);const r=function(e,t){const{totalBytes:r,encodedData:n,chunkSize:a=65536}=e,{rangeIndex:o=0}=t;if(!(-1!==o||r&&n))return[0,""];if(-1===o||n?.byteLength>r-a)return[n?.byteLength||0,""];return[n?.byteLength||0,a*(o+1)-1]}(i,o),{encodedData:n,responseHeaders:a}=await async function(e,t,r,n){r&&(t=Object.assign(t,{Range:`bytes=${r[0]}-${r[1]}`}));let{encodedData:a}=n;if(r[1]&&a?.byteLength>r[1])return n;const o=await fetch(e,{headers:t,signal:void 0}),i=await o.arrayBuffer(),s=new Uint8Array(i),{status:l}=o;let c;a?(c=new Uint8Array(a.length+s.length),c.set(a,0),c.set(s,a.length),n.rangesFetched=1):(c=new Uint8Array(s.length),c.set(s,0),n.rangesFetched++);n.encodedData=a=c,n.responseHeaders=o.headers;const u=o.headers.get("Content-Range");u?n.totalBytes=Number(u.split("/")[1]):206===l&&r?""===r[1]||a?.length<r[1]?n.totalBytes=a.byteLength:n.totalBytes=Number.MAX_SAFE_INTEGER:n.totalBytes=a?.byteLength;return n}(e,l,r,i),c=a.get("content-type"),{totalBytes:u}=i,f=u===n.byteLength,d=$(c,n,{isPartial:!0}),m=V(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 l}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 Y(s,t,i,n);if(o.streaming)return q(s,t,i,n);const l=B(s,t,i),{xhr:c}=l;return l.then((function(e){const t=$(c.getResponseHeader("Content-Type")||"application/octet-stream",new Uint8Array(e));return t.imageQualityStatus=V(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 X(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)yt(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 J=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(){return new Worker(a.p+"index.worker.f4bda803c15bc6359d5f.worker.js")}let te=0;const re=[],ne=[],ae=F(),oe={maxWebWorkers:navigator.hardwareConcurrency||1,startWebWorkersOnDemand:!0,webWorkerTaskPaths:[],taskConfiguration:{decodeTask:{initializeCodecsOnStartup:!1,strict:ae.strict}}};let ie;const se={maxWebWorkers:0,numWebWorkers:0,numTasksQueued:0,numTasksExecuting:0,numTasksCompleted:0,totalTaskTimeInMS:0,totalTimeDelayedInMS:0};function le(){if(re.length){for(let e=0;e<ne.length;e++)if("ready"===ne[e].status){ne[e].status="busy";const t=re.shift();t.start=(new Date).getTime();const r=(new Date).getTime();return se.totalTimeDelayedInMS+=r-t.added,ne[e].task=t,ne[e].worker.postMessage({taskType:t.taskType,workerIndex:e,data:t.data},t.transferList),void se.numTasksExecuting++}ne.length<ie.maxWebWorkers&&ue()}}function ce(e){if("initialize"===e.data.taskType)ne[e.data.workerIndex].status="ready",le();else{const t=ne[e.data.workerIndex].task.start,r="success"===e.data.status?"resolve":"reject";try{ne[e.data.workerIndex].task.deferred[r](e.data.result)}catch(e){console.warn("Caught error delivering response",e)}ne[e.data.workerIndex].task=void 0,se.numTasksExecuting--,ne[e.data.workerIndex].status="ready",se.numTasksCompleted++;const n=(new Date).getTime();se.totalTaskTimeInMS+=n-t,le()}}function ue(){if(ne.length>=ie.maxWebWorkers)return;const e=new ee;ne.push({worker:e,status:"initializing"}),e.addEventListener("message",ce),e.postMessage({taskType:"initialize",workerIndex:ne.length-1,config:ie})}function fe(e){if(ie=e=e||oe,ie.maxWebWorkers=ie.maxWebWorkers||navigator.hardwareConcurrency||1,!ie.startWebWorkersOnDemand)for(let e=0;e<ie.maxWebWorkers;e++)ue()}const de={initialize:fe,loadWebWorkerTask:function(e,t){ie.webWorkerTaskPaths.push(e),t&&(ie.taskConfiguration=Object.assign(ie.taskConfiguration,t));for(let t=0;t<ne.length;t++)ne[t].worker.postMessage({taskType:"loadWebWorkerTask",workerIndex:ne.length-1,sourcePath:e,config:ie})},addTask:function(e,t,r=0,n){ie||fe();let a={resolve:void 0,reject:void 0};const o=new Promise(((e,t)=>{a={resolve:e,reject:t}}));let i;for(i=0;i<re.length&&!(re[i].priority<r);i++);const s=te++;return re.splice(i,0,{taskId:s,taskType:e,status:"ready",added:(new Date).getTime(),data:t,deferred:a,priority:r,transferList:n}),le(),{taskId:s,promise:o}},getStatistics:function(){return se.maxWebWorkers=ie.maxWebWorkers,se.numWebWorkers=ne.length,se.numTasksQueued=re.length,se},setTaskPriority:function(e,t=0){for(let r=0;r<re.length;r++)if(re[r].taskId===e){const e=re.splice(r,1)[0];for(e.priority=t,r=0;r<re.length&&!(re[r].priority<t);r++);return re.splice(r,0,e),!0}return!1},cancelTask:function(e,t){for(let r=0;r<re.length;r++)if(re[r].taskId===e){return re.splice(r,1).deferred.reject(t),!0}return!1},webWorkers:ne,terminate:function(){for(let e=0;e<ne.length;e++)ne[e].worker.terminate();ne.length=0,ie=void 0}};var me=a(578);function ge(e,t,r,n,a){const o={...n};delete o.loader,delete o.streamingData;const i=o.priority||void 0,s=o.transferPixelData?[r.buffer]:void 0;return de.addTask("decodeTask",{imageFrame:e,transferSyntax:t,pixelData:r,options:o,decodeConfig:a},i,s).promise}window.pako={inflateRaw:me.Hq};const he=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 ge(e,t,r,a,o);case"1.2.840.10008.1.2.4.50":return 8!==e.bitsAllocated||3!==e.samplesPerPixel&&4!==e.samplesPerPixel?ge(e,t,r,a,o):J(e,r,n)}return Promise.reject(new Error(`No decoder for transfer syntax ${t}`))};const pe=function(e){const{cornerstone:t}=xt,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 xe(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 be="";function we(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 ye=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}=xt,{MetadataModules:i}=o.Enums,s=document.createElement("canvas"),l=pe(e);if(l.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})}n.isSharedArrayBuffer=n.targetBuffer?.arrayBuffer&&n.targetBuffer.arrayBuffer instanceof SharedArrayBuffer;const{decodeConfig:c}=F();c.use16BitDataType=!!(n&&"Uint16Array"===n.targetBuffer?.type||"Int16Array"===n.targetBuffer?.type)||(n.useNativeDataType||c.use16BitDataType),Object.keys(l).forEach((e=>{("function"==typeof l[e]||l[e]instanceof Promise)&&delete l[e]}));const u=he(l,r,t,s,n,c),{use16BitDataType:f}=c,d=xe(l.photometricInterpretation);return new Promise(((t,r)=>{u.then((function(r){if(n.skipCreateImage)return t(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:f?Uint16Array:void 0,Int16Array:f?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 d=u[t],m=e?new d(e,s,c):new d(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||we(r);const c=o.metaData.get(i.IMAGE_PLANE,e)||{},u=o.metaData.get(i.VOI_LUT,e)||{},m=o.metaData.get(i.MODALITY_LUT,e)||{},g=o.metaData.get(i.SOP_COMMON,e)||{},h=o.metaData.get(i.CALIBRATION,e)||{},{rows:p,columns:x}=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)}),X(r,e.data,a),r.imageData=e,r.pixelData=e.data,r.pixelDataLength=e.data.length}else if(!a&&r.pixelDataLength===4*p*x){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 b={imageId:e,color:d,calibration:h,columnPixelSpacing:c.columnPixelSpacing,columns:r.columns,height:r.rows,preScale:r.preScale,intercept:m.rescaleIntercept?m.rescaleIntercept:0,slope:m.rescaleSlope?m.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,numComps:void 0};var w;if(b.color&&(b.getCanvas=function(){if(be===e)return s;const t=b.columns,n=b.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),be=e,s}),m.modalityLUTSequence&&m.modalityLUTSequence.length>0&&("1.2.840.10008.5.1.4.1.1.12.1"!==(w=g.sopClassUID)&&"1.2.840.10008.5.1.4.1.1.12.2.1"!==w)&&(b.modalityLUT=m.modalityLUTSequence[0]),u.voiLUTSequence&&u.voiLUTSequence.length>0&&(b.voiLUT=u.voiLUTSequence[0]),b.color&&(b.windowWidth=256,b.windowCenter=128),void 0===b.windowCenter||void 0===b.windowWidth){const e=b.imageFrame.minAfterScale,t=b.imageFrame.maxAfterScale;b.windowWidth=t-e,b.windowCenter=(t+e)/2}t(b)}),r)}))},{ProgressiveIterator:ke}=N.utilities,{ImageQualityStatus:Te}=N.Enums,Se=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 De(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 ve(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 Pe=function(e,t={}){const r=xt.cornerstone.imageRetrievalPoolManager,n=(new Date).getTime(),a=new ke("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=ke.as(z(e,r,o,t));let s=10;for await(const e of i){const{pixelData:o,imageQualityStatus:i=Te.FULL_RESOLUTION,percentComplete:l,done:c=!0,extractDone:u=!0}=e,f=De(e.contentType);if(!u&&!Se.has(f))continue;const d=e.decodeLevel??(i===Te.FULL_RESOLUTION?0:ve(l,t.retrieveOptions?.decodeLevel));if(c||!(s<=d))try{const e={...t,decodeLevel:d},l=await ye(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 Ie={metaData:{getNumberString:s,getNumberValue:l,getNumberValues:c,getValue:i,metaDataProvider:L},findIndexOfString:O,getPixelData:z,loadImage:Pe,metaDataManager:b,register:function(e){e.registerImageLoader("wadors",Pe),e.metaData.addProvider(L)}};function Ee(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 Ae(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 _e=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=Ee(e,"x00281101"),t.greenPaletteColorLookupTableDescriptor=Ee(e,"x00281102"),t.bluePaletteColorLookupTableDescriptor=Ee(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=Ae(e,"x00281201",t.redPaletteColorLookupTableDescriptor),t.greenPaletteColorLookupTableData=Ae(e,"x00281202",t.greenPaletteColorLookupTableDescriptor),t.bluePaletteColorLookupTableData=Ae(e,"x00281203",t.bluePaletteColorLookupTableDescriptor)}(e,t),t};function Le(e,t){let r=t.uint16("x00283002",0);0===r&&(r=65535);let n=0;n=0===e?t.uint16("x00283002",1):t.int16("x00283002",1);const a={id:"1",firstValueMapped:n,numBitsPerEntry:t.uint16("x00283002",2),lut:[]};for(let n=0;n<r;n++)a.lut[n]=0===e?t.uint16("x00283006",n):t.int16("x00283006",n);return a}const Ce=function(e,t){if(!t||!t.items||!t.items.length)return;const r=[];for(let n=0;n<t.items.length;n++){const a=Le(e,t.items[n].dataSet);a&&r.push(a)}return r};const Oe=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 Me=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 Re=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 Fe(e){const{dicomParser:t}=xt;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 Be(e,t,r){const n=Fe(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),Be(m,t,r)},n}function Ue(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 Ne(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 je(e){if(We[e])return We[e]}function $e(e){if(!e)return!1;const t=e.intString("x00280008");return t&&t>1}const Ge={_get:je,generateMultiframeWADOURIs:function(e){const t=[],r=je(e);if($e(r)){const n=r.intString("x00280008");for(let r=1;r<=n;r++)t.push(`${e}&frame=${r}`)}else t.push(e);return t},retrieveMultiframeDataset:function(e){const t=function(e){return e.indexOf("&frame=")}(e),r=-1===t?e:e.slice(0,t),n=parseInt(e.slice(t+7),10)||1;let a;return a=We[r]?We[r].dataSet:void 0,{dataSet:a,frame:n}},isMultiframeDataset:function(e){return $e(je(e))}};let Ve=0,We={},qe={};function Ze(){return{cacheSizeInBytes:Ve,numberOfDataSetsCached:Object.keys(We).length}}const Ye={isLoaded:function(e){return void 0!==We[e]},load:function(e,t=B,r){const{cornerstone:n,dicomParser:a}=xt;if(We[e])return new Promise((t=>{We[e].cacheCount++,t(We[e].dataSet)}));if(qe[e])return qe[e].cacheCount++,qe[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 Be(u,t,{uri:e,imageId:r,fileTotalLength:c.fileTotalLength}):a.parseDicom(u)}catch(e){return l(e)}We[e]={dataSet:f,cacheCount:i.cacheCount},Ve+=f.byteArray.length,s(f),n.triggerEvent(n.events,"datasetscachechanged",{uri:e,action:"loaded",cacheInfo:Ze()})}),l).then((()=>{delete qe[e]}),(()=>{delete qe[e]}))}));return i.cacheCount=1,qe[e]=i,i},unload:function(e){const{cornerstone:t}=xt;We[e]&&(We[e].cacheCount--,0===We[e].cacheCount&&(Ve-=We[e].dataSet.byteArray.length,delete We[e],t.triggerEvent(t.events,"datasetscachechanged",{uri:e,action:"unloaded",cacheInfo:Ze()})))},getInfo:Ze,purge:function(){We={},qe={},Ve=0},get:function(e){let t;if(e.includes("&frame=")){const{frame:r,dataSet:n}=Ge.retrieveMultiframeDataset(e);t=function(e,t){if(!t)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a,otherElements:o}=Ne(t);if(n||r>1){const{shared:r,perFrame:i}=Ue(n,a,e),s={elements:{...o,...r,...i}},l=Object.create(t);return Object.assign(l,s)}return t}(r,n)}else We[e]&&(t=We[e].dataSet);return t},update:function(e,t){const r=We[e];r?(Ve-=r.dataSet.byteArray.length,r.dataSet=t,Ve+=t.byteArray.length,xt.cornerstone.triggerEvent(xt.cornerstone.events,"datasetscachechanged",{uri:e,action:"updated",cacheInfo:Ze()})):console.error(`No loaded dataSet for uri ${e}`)}};function ze(e,t){const r=e.string("x00080008");if(r){const e=r.split("\\");if(e.length>t)return e[t]}}function He(e){let t=Me(e,"x00200037",6);return!t&&e.elements.x00209116&&(t=Me(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=ze(e,2);r&&w(r)&&e.elements.x00540022&&(t=Me(e.elements.x00540022.items[0].dataSet,"x00200037",6))}return t}(e)),t}function Qe(e){let t=Me(e,"x00200032",3);return!t&&e.elements.x00209113&&(t=Me(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=ze(e,2);r&&w(r)&&e.elements.x00540022&&(t=Me(e.elements.x00540022.items[0].dataSet,"x00200032",3))}return t}(e)),t}function Xe(e){let t=Me(e,"x00280030",2);return!t&&e.elements.x00289110&&(t=Me(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 Je=function e(t,r){const{MetadataModules:n}=xt.cornerstone.Enums,{dicomParser:a}=xt;if(Array.isArray(r))return;const o=Re(r);if(t===n.MULTIFRAME){const e=Ge.retrieveMultiframeDataset(o.url);if(!e.dataSet)return;const t=function(e,t){if(!e)return;const{NumberOfFrames:r,PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a}=Ne(e);if(n||r>1){const{shared:e,perFrame:o}=Ue(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=Ye.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=ze(s,2);return{modality:e,imageType:s.string("x00080008"),imageSubType:t,imageOrientationPatient:He(s),imagePositionPatient:Qe(s),sliceThickness:Ke(s),pixelSpacing:Xe(s),numberOfFrames:s.uint16("x00280008"),isNMReconstructable:w(t)&&e.includes("NM")}}if(t===n.IMAGE_PLANE){const e=He(s),t=Qe(s),r=Xe(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 _e(s);if(t===n.VOI_LUT){const e=Oe(s);return{windowCenter:Me(s,"x00281050",1),windowWidth:Me(s,"x00281051",1),voiLUTSequence:Ce(e,s.elements.x00283010)}}if(t===n.MODALITY_LUT)return{rescaleIntercept:s.floatString("x00281052"),rescaleSlope:s.floatString("x00281053"),rescaleType:s.string("x00281054"),modalityLUTSequence:Ce(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}}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?D(r,e,P):void 0}};let et=[];const tt={add:function(e){return"dicomfile:"+(et.push(e)-1)},get:function(e){return et[e]},remove:function(e){et[e]=void 0},purge:function(){et=[]}};var rt=a(713);function nt(e,t){const{dicomParser:r}=xt;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 rt.ByteStream(e.byteArrayParser,e.byteArray,e.elements.x7fe00010.dataOffset),o=(0,rt.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 at(e,t){return e&1<<t}const ot=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]=at(r,o)?1:0}return n};const it=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 ot(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 st=function(e){const t=Re(e),r=parseInt(t.url,10),n=tt.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 lt=function(e,t=0){const r=e.elements.x7fe00010||e.elements.x7fe00008;return r?r.encapsulatedPixelData?nt(e,t):it(e,t):null};function ct(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=lt(e,r),f=e.string("x00020010"),d=(new Date).getTime(),m=ye(t,u,f,a);!function(e,t){e.decache=function(){const e=Re(t);Ye.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 ut(e){return"dicomweb"===e||"wadouri"===e?B:"dicomfile"===e?st:void 0}function ft(e,t={}){const r=Re(e);delete(t=Object.assign({},t)).loader;const n=ut(r.scheme);if(Ye.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=lt(e,r),o=e.string("x00020010");c=ye(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}}(Ye.get(r.url,n,e),e,r.pixelDataFrame,r.url,t)}return ct(Ye.load(r.url,n,e),e,r.frame,r.url,t)}const dt={metaData:{getImagePixelModule:_e,getLUTs:Ce,getModalityLUTOutputPixelRepresentation:Oe,getNumberValues:Me,metaDataProvider:Je},dataSetCacheManager:Ye,fileManager:tt,getEncapsulatedImageFrame:nt,getUncompressedImageFrame:it,loadFileRequest:st,loadImageFromPromise:ct,getLoaderForScheme:ut,loadImage:ft,parseImageId:Re,unpackBinaryFrame:ot,register:function(e){e.registerImageLoader("dicomweb",ft),e.registerImageLoader("wadouri",ft),e.registerImageLoader("dicomfile",ft),e.metaData.addProvider(Je)}};const mt=function(e){Ie.register(e),dt.register(e)};let gt,ht;const pt={set cornerstone(e){gt=e,mt(gt)},get cornerstone(){if(!gt){if(gt=window&&window.cornerstone,!gt)throw new Error("cornerstoneDICOMImageLoader requires a copy of Cornerstone to work properly. Please add cornerstoneDICOMImageLoader.external.cornerstone = cornerstone; to your application.");mt(gt)}return gt},set dicomParser(e){ht=e},get dicomParser(){if(!ht){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.");ht=window.dicomParser}return ht}},xt=pt;function bt(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 wt(e,t,r){const n=e[`${t}PaletteColorLookupTableData`];if(n)return Promise.resolve(n);const a=xt.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 yt(e,t,r){const n=e.columns*e.rows,a=e.pixelData;Promise.all([wt(e,"red",null),wt(e,"green",null),wt(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=bt(o,d),g=bt(i,d),h=bt(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++]=h[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++]=h[e]}}))}const kt=function(e){R(e)};const Tt=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},St={convertRGBColorByPixel:e,convertRGBColorByPlane:t,convertYBRFullByPixel:r,convertYBRFullByPlane:n,convertPALETTECOLOR:yt,wadouri:dt,wadors:Ie,configure:kt,convertColorSpace:X,createImage:ye,decodeImageFrame:he,decodeJPEGBaseline8BitColor:J,getImageFrame:pe,getPixelData:z,getMinMax:H,isColorImage:xe,isJPEGBaseline8BitColor:Tt,webWorkerManager:de,internal:U,external:pt}})(),o})()));
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 n={464:t=>{t.exports=e},713:e=>{e.exports=t}},r={};function a(e){var t=r[e];if(void 0!==t)return t.exports;var o=r[e]={exports:{}};return n[e](o,o.exports,a),o.exports}a.m=n,a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},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 n=t.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&!e;)e=n[r--].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,n){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 r=e.length/3;let a=0,o=0;if(n)for(let n=0;n<r;n++)t[o++]=e[a++],t[o++]=e[a++],t[o++]=e[a++],t[o++]=255;else t.set(e)}function t(e,t,n){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 r=e.length/3;let a=0,o=0,i=r,s=2*r;if(n)for(let n=0;n<r;n++)t[a++]=e[o++],t[a++]=e[i++],t[a++]=e[s++],t[a++]=255;else for(let n=0;n<r;n++)t[a++]=e[o++],t[a++]=e[i++],t[a++]=e[s++]}function n(e,t,n){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 r=e.length/3;let a=0,o=0;if(n)for(let n=0;n<r;n++){const n=e[a++],r=e[a++],i=e[a++];t[o++]=n+1.402*(i-128),t[o++]=n-.34414*(r-128)-.71414*(i-128),t[o++]=n+1.772*(r-128),t[o++]=255}else for(let n=0;n<r;n++){const n=e[a++],r=e[a++],i=e[a++];t[o++]=n+1.402*(i-128),t[o++]=n-.34414*(r-128)-.71414*(i-128),t[o++]=n+1.772*(r-128)}}function r(e,t,n){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 r=e.length/3;let a=0,o=0,i=r,s=2*r;if(n)for(let n=0;n<r;n++){const n=e[o++],r=e[i++],l=e[s++];t[a++]=n+1.402*(l-128),t[a++]=n-.34414*(r-128)-.71414*(l-128),t[a++]=n+1.772*(r-128),t[a++]=255}else for(let n=0;n<r;n++){const n=e[o++],r=e[i++],l=e[s++];t[a++]=n+1.402*(l-128),t[a++]=n-.34414*(r-128)-.71414*(l-128),t[a++]=n+1.772*(r-128)}}a.r(o),a.d(o,{convertColorSpace:()=>me,convertPALETTECOLOR:()=>c,convertRGBColorByPixel:()=>e,convertRGBColorByPlane:()=>t,convertYBRFullByPixel:()=>n,convertYBRFullByPlane:()=>r,createImage:()=>we,decodeJPEGBaseline8BitColor:()=>he,default:()=>ft,getImageFrame:()=>be,getMinMax:()=>de,getPixelData:()=>Ke,init:()=>ct,internal:()=>O,isColorImage:()=>Pe,isJPEGBaseline8BitColor:()=>ut,wadors:()=>it,wadouri:()=>ve});var i=a(464);function s(e,t){const n=e.length,r=new Uint8ClampedArray(n);for(let a=0;a<n;++a)r[a]=e[a]>>t;return r}function l(e,t,n){const r=e[`${t}PaletteColorLookupTableData`];if(r)return Promise.resolve(r);const a=i.metaData.get("imagePixelModule",e.imageId);return a&&"function"==typeof a.then?a.then((e=>e?e[`${t}PaletteColorLookupTableData`]:n)):Promise.resolve(a?a[`${t}PaletteColorLookupTableData`]:n)}function c(e,t,n){const r=e.columns*e.rows,a=e.pixelData;Promise.all([l(e,"red",null),l(e,"green",null),l(e,"blue",null)]).then((([o,i,l])=>{if(!o||!i||!l)throw new Error("The image does not have a complete color palette. R, G, and B palette data are required.");const c=o.length;let u=0,f=0;const d=e.redPaletteColorLookupTableDescriptor[1],g=8===e.redPaletteColorLookupTableDescriptor[2]?0:8,m=s(o,g),p=s(i,g),h=s(l,g);if(n)for(let e=0;e<r;++e){let e=a[u++];e<d?e=0:e>d+c-1?e=c-1:e-=d,t[f++]=m[e],t[f++]=p[e],t[f++]=h[e],t[f++]=255}else for(let e=0;e<r;++e){let e=a[u++];e<d?e=0:e>d+c-1?e=c-1:e-=d,t[f++]=m[e],t[f++]=p[e],t[f++]=h[e]}}))}function u(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 f(e,t,n){const r=[],a=e.elements[t];for(let o=0;o<n[0];o++)16===n[2]?r[o]=e.uint16(t,o):r[o]=e.byteArray[o+a.dataOffset];return r}const d=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=u(e,"x00281101"),t.greenPaletteColorLookupTableDescriptor=u(e,"x00281102"),t.bluePaletteColorLookupTableDescriptor=u(e,"x00281103"),0===t.redPaletteColorLookupTableDescriptor[0]&&(t.redPaletteColorLookupTableDescriptor[0]=65536,t.greenPaletteColorLookupTableDescriptor[0]=65536,t.bluePaletteColorLookupTableDescriptor[0]=65536);const n=t.redPaletteColorLookupTableDescriptor[0],r=e.elements.x00281201.length===n?8:16;t.redPaletteColorLookupTableDescriptor[2]!==r&&(t.redPaletteColorLookupTableDescriptor[2]=r,t.greenPaletteColorLookupTableDescriptor[2]=r,t.bluePaletteColorLookupTableDescriptor[2]=r),t.redPaletteColorLookupTableData=f(e,"x00281201",t.redPaletteColorLookupTableDescriptor),t.greenPaletteColorLookupTableData=f(e,"x00281202",t.greenPaletteColorLookupTableDescriptor),t.bluePaletteColorLookupTableData=f(e,"x00281203",t.bluePaletteColorLookupTableDescriptor)}(e,t),t};function g(e,t){let n=t.uint16("x00283002",0);0===n&&(n=65535);let r=0;r=0===e?t.uint16("x00283002",1):t.int16("x00283002",1);const a={id:"1",firstValueMapped:r,numBitsPerEntry:t.uint16("x00283002",2),lut:[]};for(let r=0;r<n;r++)a.lut[r]=0===e?t.uint16("x00283006",r):t.int16("x00283006",r);return a}const m=function(e,t){if(!t||!t.items||!t.items.length)return;const n=[];for(let r=0;r<t.items.length;r++){const a=g(e,t.items[r].dataSet);a&&n.push(a)}return n};const p=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 n=e.floatString("x00281052"),r=e.floatString("x00281053");if(void 0!==n&&void 0!==r){const t=function(e){const t=e.uint16("x00280103"),n=e.uint16("x00280101");return 0===t?0:-1<<n-1}(e);return t*r+n<0?1:0}return e.elements.x00283000&&e.elements.x00283000.length>0?0:e.uint16("x00280103")};const h=function(e,t,n){const r=[],a=e.string(t);if(!a)return;const o=a.split("\\");if(!(n&&o.length<n)){for(let e=0;e<o.length;e++)r.push(parseFloat(o[e]));return r}};var x=a(713);const y=function(e){const t=e.indexOf(":");let n=e.substring(t+1);const r=n.indexOf("frame=");let a;if(-1!==r){const e=n.substring(r+6);a=parseInt(e,10),n=n.substring(0,r-1)}return{scheme:e.substring(0,t),url:n,frame:a,pixelDataFrame:void 0!==a?a-1:void 0}};let b={open(e,t){e.open("get",t,!0)},beforeSend(){},beforeProcessing:e=>Promise.resolve(e.response),imageCreated(){},strict:!1};function P(e){b=Object.assign(b,e)}function S(){return b}const D=function(e,t,n={},r={}){const a=S(),o=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,l=new Promise(((l,c)=>{a.open(s,e,n,r);const u=a.beforeSend(s,t,n,r);s.responseType="arraybuffer";const f=Object.assign({},n,u);Object.keys(f).forEach((function(t){null!==f[t]&&("Accept"===t&&-1!==e.indexOf("accept=")||s.setRequestHeader(t,f[t]))})),r.deferred={resolve:l,reject:c},r.url=e,r.imageId=t,s.onloadstart=function(n){a.onloadstart&&a.onloadstart(n,r);const o={url:e,imageId:t};(0,i.triggerEvent)(i.eventTarget,"cornerstoneimageloadstart",o)},s.onloadend=function(n){a.onloadend&&a.onloadend(n,r);const o={url:e,imageId:t};(0,i.triggerEvent)(i.eventTarget,"cornerstoneimageloadend",o)},s.onreadystatechange=function(e){a.onreadystatechange?a.onreadystatechange(e,r):4===s.readyState&&(200===s.status||206===s.status?a.beforeProcessing(s).then(l).catch((()=>{o(s),c(s)})):(o(s),c(s)))},s.onprogress=function(e){const t=e.loaded;let n,o;e.lengthComputable&&(n=e.total,o=Math.round(t/n*100)),a.onprogress&&a.onprogress(e,r)},s.onerror=function(){o(s),c(s)},s.onabort=function(){o(s),c(s)},s.send()}));return l.xhr=s,l};function w(e,t,n){if(n+e.length>t.length)return!1;let r=n;for(let n=0;n<e.length;n++)if(e[n]!==t[r++])return!1;return!0}const T=function(e,t,n){n=n||0;const r=function(e){const t=new Uint8Array(e.length);for(let n=0,r=e.length;n<r;n++)t[n]=e.charCodeAt(n);return t}(t);for(let t=n;t<e.length;t++)if(r[0]===e[t]&&w(r,e,t))return t;return-1},{ImageQualityStatus:I}=i.Enums;function L(e,t,n){n||={};const r=new Uint8Array(t),a=!!n?.isPartial;if(-1===e.indexOf("multipart"))return{contentType:e,imageQualityStatus:a?I.SUBRESOLUTION:I.FULL_RESOLUTION,pixelData:r};let{tokenIndex:o,responseHeaders:i,boundary:s,multipartContentType:l}=n;if(o||=T(r,"\r\n\r\n"),-1===o)throw new Error("invalid response - no multipart mime header");if(!s){const e=function(e,t,n){t=t||0,n=n||e.length-t;let r="";for(let a=t;a<t+n;a++)r+=String.fromCharCode(e[a]);return r}(r,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=T(r,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),n.tokenIndex=o,n.boundary=s,n.responseHeaders=i,n.multipartContentType=l,n.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:C}=i.Enums;function v(e,t=!0){return t?e.imageQualityStatus??C.FULL_RESOLUTION:C.SUBRESOLUTION}const{ProgressiveIterator:E}=i.utilities;function A(e,t,n={},r={}){const a=S(),{retrieveOptions:o={},streamingData:i={}}=r,s=o.minChunkSize||131072,l=new E("streamRequest");return l.generate((async(r,l)=>{const c=a.beforeSend?.(null,e,n,{}),u=Object.assign({},n,c);Object.keys(u).forEach((function(t){null===u[t]&&(u[t]=void 0),"Accept"===t&&-1!==e.indexOf("accept=")&&(u[t]=void 0)}));try{const n=await fetch(e,{headers:u,signal:void 0});if(200!==n.status)throw new Error(`Couldn't retrieve ${e} got status ${n.status}`);const a=n.body.getReader(),l=n.headers,c=l.get("content-type"),f=Number(l.get("Content-Length"));let d=!1,g=i.encodedData,m=i.lastSize||0;for(i.isPartial=!0;!d;){const{done:n,value:l}=await a.read();if(g=M(g,l),!g){if(d)throw new Error(`Done but no image frame available ${t}`);continue}if(d=n||g.byteLength===f,!d&&g.length<m+s)continue;m=g.length,i.isPartial=!n;const u=L(c,g,i),p=v(o,d),h={url:e,imageId:t,...u,percentComplete:n?100:100*u.pixelData?.length/f,imageQualityStatus:p,done:d};r.add(h,d)}}catch(e){(()=>{if("function"==typeof a.errorInterceptor){const e=new Error("request failed");a.errorInterceptor(e)}})(),console.error(e),l(e)}})),l.getNextPromise()}function M(e,t){if(!e)return t;if(!t)return e;const n=new Uint8Array(e.length+t.length);return n.set(e,0),n.set(t,e.length),n}const O={xhrRequest:D,streamRequest:A,setOptions:P,getOptions:S};function F(e){let t,n=x.parseDicom(e,{untilTag:"x7fe00010"});n.elements.x7fe00010||console.warn("Pixel data not found!");try{t=x.parseDicom(e)}catch(e){console.error(e),console.log("pixel data dataset:",e.dataSet),t=e.dataSet}return n.elements.x7fe00010=t.elements.x7fe00010,n=function(e){const t=e.elements.x7fe00010.fragments,n=e.byteArray.length;for(const e of t){const{position:t,length:r}=e;r>n-t&&(console.log(`Truncated fragment, changing fragment length from ${e.length} to ${n-t}`),e.length=n-t)}return e}(n),n}async function R(e,t,n){const r=F(e),{uri:a,imageId:o,fileTotalLength:i}=n;return r.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),g=new Uint8Array(r.byteArray.length+d.length);return g.set(r.byteArray),g.set(d,r.byteArray.length),R(g,t,n)},r}function U(e,t,n){const r={};(t?Object.values(t.items[0].dataSet.elements):[]).map((e=>r[e.tag]=e));const a={};return(e?Object.values(e.items[n-1].dataSet.elements):[]).map((e=>a[e.tag]=e)),{shared:r,perFrame:a}}function B(e){if(!e)return;const{elements:t,...n}=e,{x52009230:r,x52009229:a,...o}=t;return{NumberOfFrames:e.intString("x00280008"),PerFrameFunctionalGroupsSequence:r,SharedFunctionalGroupsSequence:a,otherElements:o,otherAttributtes:n}}let N={};function k(e){if(N[e])return N[e]}function _(e){if(!e)return!1;const t=e.intString("x00280008");return t&&t>1}const V={_get:k,generateMultiframeWADOURIs:function(e){const t=[],n=k(e);if(_(n)){const r=n.intString("x00280008");for(let n=1;n<=r;n++)t.push(`${e}&frame=${n}`)}else t.push(e);return t},retrieveMultiframeDataset:function(e){const t=function(e){return e.indexOf("&frame=")}(e),n=-1===t?e:e.slice(0,t),r=parseInt(e.slice(t+7),10)||1;let a;return a=N[n]?N[n].dataSet:void 0,{dataSet:a,frame:r}},isMultiframeDataset:function(e){return _(k(e))}};let $=0,j={};function G(){return{cacheSizeInBytes:$,numberOfDataSetsCached:Object.keys(N).length}}const q={isLoaded:function(e){return void 0!==N[e]},load:function(e,t=D,n){if(N[e])return new Promise((t=>{N[e].cacheCount++,t(N[e].dataSet)}));if(j[e])return j[e].cacheCount++,j[e];const r=t(e,n),a=new Promise(((o,s)=>{r.then((async function(r){const l={isPartialContent:!1,fileTotalLength:null};if(!(r instanceof ArrayBuffer)){if(!r.arrayBuffer)return s(new Error("If not returning ArrayBuffer, must return object with `arrayBuffer` parameter"));l.isPartialContent=r.flags.isPartialContent,l.fileTotalLength=r.flags.fileTotalLength,r=r.arrayBuffer}const c=new Uint8Array(r);let u;try{u=l.isPartialContent?await R(c,t,{uri:e,imageId:n,fileTotalLength:l.fileTotalLength}):x.parseDicom(c)}catch(e){return s(e)}N[e]={dataSet:u,cacheCount:a.cacheCount},$+=u.byteArray.length,o(u),(0,i.triggerEvent)(i.eventTarget,"datasetscachechanged",{uri:e,action:"loaded",cacheInfo:G()})}),s).then((()=>{delete j[e]}),(()=>{delete j[e]}))}));return a.cacheCount=1,j[e]=a,a},unload:function(e){N[e]&&(N[e].cacheCount--,0===N[e].cacheCount&&($-=N[e].dataSet.byteArray.length,delete N[e],(0,i.triggerEvent)(i.eventTarget,"datasetscachechanged",{uri:e,action:"unloaded",cacheInfo:G()})))},getInfo:G,purge:function(){N={},j={},$=0},get:function(e){let t;if(e.includes("&frame=")){const{frame:n,dataSet:r}=V.retrieveMultiframeDataset(e);t=function(e,t){if(!t)return;const{NumberOfFrames:n,PerFrameFunctionalGroupsSequence:r,SharedFunctionalGroupsSequence:a,otherElements:o}=B(t);if(r||n>1){const{shared:n,perFrame:i}=U(r,a,e),s={elements:{...o,...n,...i}},l=Object.create(t);return Object.assign(l,s)}return t}(n,r)}else N[e]&&(t=N[e].dataSet);return t},update:function(e,t){const n=N[e];n?($-=n.dataSet.byteArray.length,n.dataSet=t,$+=t.byteArray.length,(0,i.triggerEvent)(i.eventTarget,"datasetscachechanged",{uri:e,action:"updated",cacheInfo:G()})):console.error(`No loaded dataSet for uri ${e}`)}};function Y(e){return"RECON TOMO"===e||"RECON GATED TOMO"===e}function W(e,t){const n=e.string("x00080008");if(n){const e=n.split("\\");if(e.length>t)return e[t]}}function X(e){let t=h(e,"x00200037",6);return!t&&e.elements.x00209116&&(t=h(e.elements.x00209116.items[0].dataSet,"x00200037",6)),t||(t=function(e){let t;const n=e.string("x00080060");if(n?.includes("NM")){const n=W(e,2);n&&Y(n)&&e.elements.x00540022&&(t=h(e.elements.x00540022.items[0].dataSet,"x00200037",6))}return t}(e)),t}function z(e){let t=h(e,"x00200032",3);return!t&&e.elements.x00209113&&(t=h(e.elements.x00209113.items[0].dataSet,"x00200032",3)),t||(t=function(e){let t;const n=e.string("x00080060");if(n?.includes("NM")){const n=W(e,2);n&&Y(n)&&e.elements.x00540022&&(t=h(e.elements.x00540022.items[0].dataSet,"x00200032",3))}return t}(e)),t}function H(e){let t=h(e,"x00280030",2);return!t&&e.elements.x00289110&&(t=h(e.elements.x00289110.items[0].dataSet,"x00280030",2)),t}function Q(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 J(e,t,n){const r={};for(const a of n)try{const n=t(a,e);if(n){const e={};for(const t in n)if(t in n){e[K(t)]=n[t]}Object.assign(r,e)}}catch(e){console.error(`Error retrieving ${a} data:`,e)}return r}const K=e=>e.charAt(0).toUpperCase()+e.slice(1),Z=["multiframeModule","generalSeriesModule","patientStudyModule","imagePlaneModule","nmMultiframeGeometryModule","imagePixelModule","modalityLutModule","voiLutModule","sopCommonModule","petIsotopeModule","overlayPlaneModule","transferSyntax","petSeriesModule","petImageModule"];function ee(e){const t=e.elements.x00186011;if(!t||!t.items)return[];return t.items.map((e=>{const t=e.dataSet.double("x0018602c"),n=e.dataSet.double("x0018602e"),r=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:n,physicalUnitsXDirection:r,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")}}))}function te(e,t){const{MetadataModules:n}=i.Enums;if(Array.isArray(t))return;const r=y(t);if(e===n.MULTIFRAME){const e=V.retrieveMultiframeDataset(r.url);if(!e.dataSet)return;const t=function(e,t){if(!e)return;const{NumberOfFrames:n,PerFrameFunctionalGroupsSequence:r,SharedFunctionalGroupsSequence:a}=B(e);if(r||n>1){const{shared:e,perFrame:o}=U(r,a,t);return{NumberOfFrames:n,PerFrameFunctionalInformation:o,SharedFunctionalInformation:e}}return{NumberOfFrames:n}}(e.dataSet,e.frame);return t}let a=r.url;r.frame&&(a=`${a}&frame=${r.frame}`);const o=q.get(a);return o?ne(e,t,o):void 0}function ne(e,t,n){const{MetadataModules:r}=i.Enums;if(e===r.GENERAL_STUDY)return{studyDescription:n.string("x00081030"),studyDate:x.parseDA(n.string("x00080020")),studyTime:x.parseTM(n.string("x00080030")||""),accessionNumber:n.string("x00080050")};if(e===r.GENERAL_SERIES)return{modality:n.string("x00080060"),seriesInstanceUID:n.string("x0020000e"),seriesNumber:n.intString("x00200011"),studyInstanceUID:n.string("x0020000d"),seriesDate:x.parseDA(n.string("x00080021")),seriesTime:x.parseTM(n.string("x00080031")||""),acquisitionDate:x.parseDA(n.string("x00080022")),acquisitionTime:x.parseTM(n.string("x00080032")||"")};if(e===r.GENERAL_IMAGE)return{sopInstanceUID:n.string("x00080018"),instanceNumber:n.intString("x00200013"),lossyImageCompression:n.string("x00282110"),lossyImageCompressionRatio:n.floatString("x00282112"),lossyImageCompressionMethod:n.string("x00282114")};if(e===r.PATIENT)return{patientID:n.string("x00100020"),patientName:n.string("x00100010")};if(e===r.PATIENT_STUDY)return{patientAge:n.intString("x00101010"),patientSize:n.floatString("x00101020"),patientSex:n.string("x00100040"),patientWeight:n.floatString("x00101030")};if(e===r.NM_MULTIFRAME_GEOMETRY){const e=n.string("x00080060"),t=W(n,2);return{modality:e,imageType:n.string("x00080008"),imageSubType:t,imageOrientationPatient:X(n),imagePositionPatient:z(n),sliceThickness:Q(n),pixelSpacing:H(n),numberOfFrames:n.uint16("x00280008"),isNMReconstructable:Y(t)&&e.includes("NM")}}if(e===r.IMAGE_PLANE){const e=X(n),t=z(n),r=H(n),a=Q(n);let o=null,i=null;r&&(i=r[0],o=r[1]);let s=null,l=null;return e&&(s=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],l=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]),{frameOfReferenceUID:n.string("x00200052"),rows:n.uint16("x00280010"),columns:n.uint16("x00280011"),imageOrientationPatient:e,rowCosines:s,columnCosines:l,imagePositionPatient:t,sliceThickness:a,sliceLocation:n.floatString("x00201041"),pixelSpacing:r,rowPixelSpacing:i,columnPixelSpacing:o}}if(e===r.CINE)return{frameTime:n.floatString("x00181063")};if(e===r.IMAGE_PIXEL)return d(n);if(e===r.VOI_LUT){const e=p(n);return{windowCenter:h(n,"x00281050",1),windowWidth:h(n,"x00281051",1),voiLUTSequence:m(e,n.elements.x00283010)}}if(e===r.MODALITY_LUT)return{rescaleIntercept:n.floatString("x00281052"),rescaleSlope:n.floatString("x00281053"),rescaleType:n.string("x00281054"),modalityLUTSequence:m(n.uint16("x00280103"),n.elements.x00283000)};if(e===r.SOP_COMMON)return{sopClassUID:n.string("x00080016"),sopInstanceUID:n.string("x00080018")};if(e===r.PET_ISOTOPE){const e=n.elements.x00540016;if(void 0===e)return;const t=e.items[0].dataSet;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:x.parseTM(t.string("x00181072")||""),radionuclideTotalDose:t.floatString("x00181074"),radionuclideHalfLife:t.floatString("x00181075")}}}if(e===r.OVERLAY_PLANE)return function(e){const t=[];for(let n=0;n<=30;n+=2){let r=`x60${n.toString(16)}`;4===r.length&&(r=`x600${n.toString(16)}`);const a=e.elements[`${r}3000`];if(!a)continue;const o=[];for(let t=0;t<a.length;t++)for(let n=0;n<8;n++){const r=e.byteArray[a.dataOffset+t];o[8*t+n]=r>>n&1}t.push({rows:e.uint16(`${r}0010`),columns:e.uint16(`${r}0011`),type:e.string(`${r}0040`),x:e.int16(`${r}0050`,1)-1,y:e.int16(`${r}0050`,0)-1,pixelData:o,description:e.string(`${r}0022`),label:e.string(`${r}1500`),roiArea:e.string(`${r}1301`),roiMean:e.string(`${r}1302`),roiStandardDeviation:e.string(`${r}1303`)})}return{overlays:t}}(n);if("transferSyntax"===e){let e;try{e=n.string("x00020010")}catch(e){}return{transferSyntaxUID:e}}if(e===r.PET_SERIES)return{correctedImage:n.string("x00280051"),units:n.string("x00541001"),decayCorrection:n.string("x00541102")};if(e===r.PET_IMAGE)return{frameReferenceTime:n.floatString(n.string("x00541300")||""),actualFrameDuration:n.intString(n.string("x00181242"))};if(e===r.ULTRASOUND_ENHANCED_REGION)return ee(n);if(e===r.CALIBRATION){if("US"===n.string("x00080060")){return{sequenceOfUltrasoundRegions:ee(n)}}}return"instance"===e?J(t,te,Z):void 0}const re=te;let ae=[];const oe={add:function(e){return"dicomfile:"+(ae.push(e)-1)},get:function(e){return ae[e]},remove:function(e){ae[e]=void 0},purge:function(){ae=[]}};function ie(e,t){if(e.elements.x7fe00010&&e.elements.x7fe00010.basicOffsetTable.length)return(0,x.readEncapsulatedImageFrame)(e,e.elements.x7fe00010,t);if(function(e){return e.intString("x00280008")!==e.elements.x7fe00010.fragments.length}(e)){const n=(0,x.createJPEGBasicOffsetTable)(e,e.elements.x7fe00010);return(0,x.readEncapsulatedImageFrame)(e,e.elements.x7fe00010,t,n)}const n=e.elements.x7fe00010.fragments,r=new x.ByteStream(e.byteArrayParser,e.byteArray,e.elements.x7fe00010.dataOffset),a=(0,x.readSequenceItem)(r);if("xfffee000"!==a.tag)throw"dicomParser.readEncapsulatedPixelData: missing basic offset table xfffee000";r.seek(a.length);const o=r.position;if(t+1>n.length)throw"dicomParser.readEncapsulatedPixelData: frame exceeds number of fragments";const i=o+n[t].offset+8,s=n[t].length;return new Uint8Array(r.byteArray.buffer.slice(r.byteArray.byteOffset+i,r.byteArray.byteOffset+i+s))}function se(e,t){return e&1<<t}const le=function(e,t,n){const r=new Uint8Array(n);for(let a=0;a<n;a++){const n=e[Math.floor(a/8)+t],o=a%8;r[a]=se(n,o)?1:0}return r};const ce=function(e,t){const n=e.elements.x7fe00010||e.elements.x7fe00008,r=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=n.dataOffset,l=a*o*i;let c;if(8===r){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===r){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===r){if(c=s+t*l*.125,c>=e.byteArray.length)throw new Error("frame exceeds size of pixelData");return le(e.byteArray,c,l)}if(32===r){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 ue=function(e){const t=y(e),n=parseInt(t.url,10),r=oe.get(n);return new Promise(((e,t)=>{const n=new FileReader;n.onload=t=>{const n=t.target.result;e(n)},n.onerror=t,n.readAsArrayBuffer(r)}))};const fe=function(e,t=0){const n=e.elements.x7fe00010||e.elements.x7fe00008;return n?n.encapsulatedPixelData?ie(e,t):ce(e,t):null};const de=function(e){let t,n=e[0],r=e[0];const a=e.length;for(let o=1;o<a;o++)t=e[o],n=Math.min(n,t),r=Math.max(r,t);return{min:n,max:r}};function ge(n,r,a){0===n.planarConfiguration?e(n.pixelData,r,a):t(n.pixelData,r,a)}function me(e,t,a){if("RGB"===e.photometricInterpretation)ge(e,t,a);else if("YBR_RCT"===e.photometricInterpretation)ge(e,t,a);else if("YBR_ICT"===e.photometricInterpretation)ge(e,t,a);else if("PALETTE COLOR"===e.photometricInterpretation)c(e,t,a);else if("YBR_FULL_422"===e.photometricInterpretation)!function(e,t,n){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 r=e.length/2;let a=0,o=0;if(n)for(let n=0;n<r;n+=2){const n=e[a++],r=e[a++],i=e[a++],s=e[a++];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,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}else for(let n=0;n<r;n+=2){const n=e[a++],r=e[a++],i=e[a++],s=e[a++];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++]=r+1.402*(s-128),t[o++]=r-.34414*(i-128)-.71414*(s-128),t[o++]=r+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?n(e.pixelData,t,a):r(e.pixelData,t,a)}(e,t,a)}}function pe(e){return function(e){let t;try{return decodeURIComponent(escape(e))}catch(n){if(t=n,t instanceof URIError)return e;throw t}}(String.fromCharCode.apply(null,Array.prototype.slice.apply(new Uint8Array(e))))}const he=function(e,t,n){const r=(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(){n.height=a.height,n.width=a.width,e.rows=a.height,e.columns=a.width;const o=n.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-r;const l=de(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(pe(i.result))}`:a.src=`data:image/jpeg;base64,${window.btoa(i.result)}`},i.onerror=e=>{o(e)}}))};function xe(e,t,n,r,a){const o={...r};delete o.loader,delete o.streamingData;const s=(0,i.getWebWorkerManager)(),l=o.priority||void 0;o.transferPixelData&&n.buffer;return s.executeTask("dicomImageLoader","decodeTask",{imageFrame:e,transferSyntax:t,pixelData:n,options:o,decodeConfig:a},{priority:l,requestType:o?.requestType})}const ye=function(e,t,n,r,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 xe(e,t,n,a,o);case"1.2.840.10008.1.2.4.50":return 8!==e.bitsAllocated||3!==e.samplesPerPixel&&4!==e.samplesPerPixel?xe(e,t,n,a,o):he(e,n,r)}return Promise.reject(new Error(`No decoder for transfer syntax ${t}`))};const be=function(e){const t=i.metaData.get("imagePixelModule",e);return{samplesPerPixel:t.samplesPerPixel,photometricInterpretation:t.photometricInterpretation,planarConfiguration:t.planarConfiguration,rows:t.rows,columns:t.columns,bitsAllocated:t.bitsAllocated,bitsStored:t.bitsStored,pixelRepresentation:t.pixelRepresentation,smallestPixelValue:t.smallestPixelValue,largestPixelValue:t.largestPixelValue,redPaletteColorLookupTableDescriptor:t.redPaletteColorLookupTableDescriptor,greenPaletteColorLookupTableDescriptor:t.greenPaletteColorLookupTableDescriptor,bluePaletteColorLookupTableDescriptor:t.bluePaletteColorLookupTableDescriptor,redPaletteColorLookupTableData:t.redPaletteColorLookupTableData,greenPaletteColorLookupTableData:t.greenPaletteColorLookupTableData,bluePaletteColorLookupTableData:t.bluePaletteColorLookupTableData,pixelData:void 0,imageId:e}};function Pe(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 Se="";function De(e){const t=function(e,t){let n;return Number.isInteger(e)&&Number.isInteger(t)&&(e>=0?t<=255?n=Uint8Array:t<=65535&&(n=Uint16Array):e>=-128&&t<=127?n=Int8Array:e>=-32768&&t<=32767&&(n=Int16Array)),n||Float32Array}(e.smallestPixelValue,e.largestPixelValue);if(!t)throw new Error("Could not apply a typed array to the pixel data");{const n=new t(e.pixelData);e.pixelData=n}}const we=function(e,t,n,r={}){const a=r.useRGBA;if(r.preScale={enabled:!r.preScale||void 0===r.preScale.enabled||r.preScale.enabled},!t?.length)return Promise.reject(new Error("The pixel data is missing"));const{MetadataModules:o}=i.Enums,s=document.createElement("canvas"),l=be(e);if(l.decodeLevel=r.decodeLevel,r.allowFloatRendering=(0,i.canRenderFloatTextures)(),r.preScale.enabled){const t=function(e,t){const n=e.get("modalityLutModule",t)||{},r=e.get("generalSeriesModule",t)||{},{modality:a}=r,o={rescaleSlope:n.rescaleSlope,rescaleIntercept:n.rescaleIntercept,modality:a},i=e.get("scalingModule",t)||{};return{...o,..."PT"===a&&{suvbw:i.suvbw}}}(i.metaData,e);t&&(r.preScale={...r.preScale,scalingParameters:t})}const{decodeConfig:c}=S();Object.keys(l).forEach((e=>{("function"==typeof l[e]||l[e]instanceof Promise)&&delete l[e]}));const u=ye(l,n,t,s,r,c),f=Pe(l.photometricInterpretation);return new Promise(((t,n)=>{u.then((function(n){let l=!1;if(r.targetBuffer&&r.targetBuffer.type&&!f){const{arrayBuffer:e,type:t,offset:a=0,length:o}=r.targetBuffer,i=n.pixelDataLength,s=a,c=null!=o?o:i-s,u={Uint8Array,Uint16Array,Int16Array,Float32Array};if(c!==n.pixelDataLength)throw new Error(`target array for image does not have the same length (${c}) as the decoded image length (${n.pixelDataLength}).`);const f=u[t],d=e?new f(e,s,c):new f(n.pixelData);if(c!==n.pixelDataLength)throw new Error("target array for image does not have the same length as the decoded image length.");n.pixelData=d,l=!0}l||De(n);const c=i.metaData.get(o.IMAGE_PLANE,e)||{},u=i.metaData.get(o.VOI_LUT,e)||{},d=i.metaData.get(o.MODALITY_LUT,e)||{},g=i.metaData.get(o.SOP_COMMON,e)||{},m=i.metaData.get(o.CALIBRATION,e)||{},{rows:p,columns:h}=n;if(f){if(function(e){if(void 0===e)return!1;const{rows:t,columns:n,photometricInterpretation:r,pixelDataLength:a,planarConfiguration:o}=e;return a!==4*n*t&&(r.endsWith("420")?a===(3*Math.ceil(n/2)+Math.floor(n/2))*t:r.endsWith("422")?a===(3*Math.ceil(n/2)+Math.floor(n/2))*Math.ceil(t/2)+Math.floor(t/2)*n:"RGB"!==r||1===o)}(n)){s.height=n.rows,s.width=n.columns;let e=s.getContext("2d").createImageData(n.columns,n.rows);a||(e={...e,data:new Uint8ClampedArray(3*n.columns*n.rows)}),me(n,e.data,a),n.imageData=e,n.pixelData=e.data,n.pixelDataLength=e.data.length}else if(!a&&n.pixelDataLength===4*p*h){const e=new Uint8Array(n.pixelData.length/4*3);n.pixelData=function(e,t){const n=e.length/4;let r=0,a=0;for(let o=0;o<n;o++)t[a++]=e[r++],t[a++]=e[r++],t[a++]=e[r++],r++;return t}(n.pixelData,e),n.pixelDataLength=n.pixelData.length}const e=de(n.pixelData);n.smallestPixelValue=e.min,n.largestPixelValue=e.max}const x=i.utilities.VoxelManager.createImageVoxelManager({scalarData:n.pixelData,width:n.columns,height:n.rows,numberOfComponents:n.samplesPerPixel}),y={imageId:e,dataType:n.pixelData.constructor.name,color:f,calibration:m,columnPixelSpacing:c.columnPixelSpacing,columns:n.columns,height:n.rows,preScale:n.preScale,intercept:d.rescaleIntercept?d.rescaleIntercept:0,slope:d.rescaleSlope?d.rescaleSlope:1,invert:"MONOCHROME1"===n.photometricInterpretation,minPixelValue:n.smallestPixelValue,maxPixelValue:n.largestPixelValue,rowPixelSpacing:c.rowPixelSpacing,rows:n.rows,sizeInBytes:n.pixelData.byteLength,width:n.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:n.decodeTimeInMS,floatPixelData:void 0,imageFrame:n,voxelManager:x,rgba:f&&a,getPixelData:()=>n.pixelData,getCanvas:void 0,numberOfComponents:n.samplesPerPixel};var b;if(y.color&&(y.getCanvas=function(){if(Se===e)return s;const t=y.columns,r=y.rows;s.height=r,s.width=t;const a=s.getContext("2d"),o=a.createImageData(t,r),i=n.pixelData;if(i.length===t*r*4)for(let e=0;e<i.length;e++)o.data[e]=i[e];else if(i.length===t*r*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 n.pixelData=o.data,n.pixelDataLength=o.data.length,n.imageData=o,a.putImageData(n.imageData,0,0),Se=e,s}),d.modalityLUTSequence&&d.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=d.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.smallestPixelValue,t=y.imageFrame.largestPixelValue;y.windowWidth=t-e,y.windowCenter=(t+e)/2}t(y)}),n)}))};function Te(e,t,n=0,r,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=fe(e,n),f=e.string("x00020010"),d=(new Date).getTime(),g=we(t,u,f,a);!function(e,t){e.decache=function(){const e=y(t);q.unload(e.url)}}(s,t),g.then((t=>{t.data=e,t.sharedCacheKey=r;const n=(new Date).getTime();t.loadTimeInMS=d-i,t.totalTimeInMS=n-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 Ie(e){return"dicomweb"===e||"wadouri"===e?D:"dicomfile"===e?ue:void 0}function Le(e,t={}){const n=y(e);delete(t=Object.assign({},t)).loader;const r=Ie(n.scheme);if(q.isLoaded(n.url)){return function(e,t,n=0,r,a){const o=(new Date).getTime();return{promise:new Promise(((i,s)=>{const l=(new Date).getTime();let c;try{const r=fe(e,n),o=e.string("x00020010");c=we(t,r,o,a)}catch(t){return void s({error:t,dataSet:e})}c.then((t=>{t.data=e,t.sharedCacheKey=r;const n=(new Date).getTime();t.loadTimeInMS=l-o,t.totalTimeInMS=n-o,i(t)}),s)})),cancelFn:void 0}}(q.get(n.url,r,e),e,n.pixelDataFrame,n.url,t)}return Te(q.load(n.url,r,e),e,n.frame,n.url,t)}function Ce(){(0,i.registerImageLoader)("dicomweb",Le),(0,i.registerImageLoader)("wadouri",Le),(0,i.registerImageLoader)("dicomfile",Le),i.metaData.addProvider(re)}const ve={metaData:{getImagePixelModule:d,getLUTs:m,getModalityLUTOutputPixelRepresentation:p,getNumberValues:h,metaDataProvider:re,metadataForDataset:ne},dataSetCacheManager:q,fileManager:oe,getEncapsulatedImageFrame:ie,getUncompressedImageFrame:ce,loadFileRequest:ue,loadImageFromPromise:Te,getLoaderForScheme:Ie,getPixelData:fe,loadImage:Le,parseImageId:y,unpackBinaryFrame:le,register:Ce};const Ee=function(e,t,n){return t=t||0,e&&e.Value?Array.isArray(e.Value)&&e.Value.length<=t?n:e.Value[t]:n};const Ae=function(e,t,n){const r=Ee(e,t,n);if(void 0!==r)return parseFloat(String(r))};const Me=function(e,t){const n=Ee(e,t);if(void 0!==n)return parseFloat(n)};const Oe=function(e,t){if(!e)return;if(!e.Value)return;if(!Array.isArray(e.Value))return;if(t&&e.Value.length<t)return;const n=[];for(let t=0;t<e.Value.length;t++)n.push(parseFloat(e.Value[t]));return n};function Fe(e){const t=e.indexOf(":");return e.substring(t+1)}function Re(e,t=!0){return e&&e.Value?e.Value[0]&&t?e.Value[0]:e.Value:e}function Ue(e,t,n){return{shared:(t?Object.values(t[0]):[]).map((e=>e[0])).filter((e=>void 0!==e&&"object"==typeof e)),perFrame:(e?Object.values(e[n-1]):[]).map((e=>e.Value[0])).filter((e=>void 0!==e&&"object"==typeof e))}}function Be(e){let{52009230:t,52009229:n,"00280008":r,...a}=e;return t=Re(t,!1),n=Re(n,!1),r=Re(r),{PerFrameFunctionalGroupsSequence:t,SharedFunctionalGroupsSequence:n,NumberOfFrames:r,rest:a}}let Ne=[],ke={};function _e(e){const t=e.indexOf("/frames/")+8,n=e.slice(0,t),r=parseInt(e.slice(t),10);return{metadata:Ne[`${n}1`],frame:r}}function Ve(e){const t=Ee(e["00280008"]);return t&&t>1}const $e={add:function(e,t){const n=Fe(e);Object.defineProperty(t,"isMultiframe",{value:Ve(t),enumerable:!1}),Ne[n]=t},get:function(e){const t=Fe(e),n=Ne[t];if(n&&!n?.isMultiframe)return n;const r=ke[t];if(r)return r;const a=_e(t);if(!a||!a.metadata)return;const{metadata:o,frame:i}=a;if(o){const e=function(e,t){const{PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:r,NumberOfFrames:a,rest:o}=Be(t);if(n||a>1){const{shared:i,perFrame:s}=Ue(n,r,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 ke[t]=e,e}},remove:function(e){const t=Fe(e);Ne[t]=void 0,ke[t]=void 0},purge:function(){Ne=[],ke={}}};function je(e){return Ee(e["00080060"]).includes("NM")}function Ge(e,t){const n=Re(e["00080008"],!1);if(n)return n[t]}function qe(e){let t=Oe(e["00200037"],6);return!t&&je(e)&&(t=function(e){let t;const n=Ge(e,2);if(n&&Y(n)){const n=Re(e["00540022"]);n&&(t=Oe(n["00200037"],6))}return t}(e)),t}function Ye(e){let t=Oe(e["00200032"],3);return!t&&je(e)&&(t=function(e){let t;const n=Ge(e,2);if(n&&Y(n)){const n=Re(e["00540022"]);n&&(t=Oe(n["00200032"],3))}return t}(e)),t}function We(e,t){const n=Oe(e[t]);return n?n[0]:null}const Xe=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 ze(e){const t=Xe(e["00186011"]);if(!t||!t.length)return null;return t.map((e=>{const t=We(e,"0018602C"),n=We(e,"0018602E"),r=We(e,"00186024"),a=We(e,"00186026");return{regionLocationMinY0:We(e,"0018601A"),regionLocationMaxY1:We(e,"0018601E"),regionLocationMinX0:We(e,"00186018"),regionLocationMaxX1:We(e,"0018601C"),referencePixelX0:We(e,"00186020"),referencePixelY0:We(e,"00186022"),physicalDeltaX:t,physicalDeltaY:n,physicalUnitsXDirection:r,physicalUnitsYDirection:a,referencePhysicalPixelValueY:We(e,"0018602A"),referencePhysicalPixelValueX:We(e,"00186028"),regionSpatialFormat:We(e,"00186012"),regionDataType:We(e,"00186014"),regionFlags:We(e,"00186016"),transducerFrequency:We(e,"00186030")}}))}function He(e,t){return{transferSyntaxUID:Ee(t["00020010"])||Ee(t["00083002"])}}const Qe=function e(t,n){const{MetadataModules:r}=i.Enums;if(t===r.MULTIFRAME){const{metadata:e,frame:t}=function(e){return _e(Fe(e))}(n);if(!e)return;const{PerFrameFunctionalGroupsSequence:r,SharedFunctionalGroupsSequence:a,NumberOfFrames:o}=Be(e);if(r||o>1){const{shared:e,perFrame:n}=Ue(r,a,t);return{NumberOfFrames:o,PerFrameFunctionalInformation:n,SharedFunctionalInformation:e}}return{NumberOfFrames:o}}const a=$e.get(n);if(a){if(t===r.GENERAL_STUDY)return{studyDescription:Ee(a["00081030"]),studyDate:x.parseDA(Ee(a["00080020"])),studyTime:x.parseTM(Ee(a["00080030"],0,"")),accessionNumber:Ee(a["00080050"])};if(t===r.GENERAL_SERIES)return{modality:Ee(a["00080060"]),seriesInstanceUID:Ee(a["0020000E"]),seriesNumber:Me(a["00200011"]),studyInstanceUID:Ee(a["0020000D"]),seriesDate:x.parseDA(Ee(a["00080021"])),seriesTime:x.parseTM(Ee(a["00080031"],0,"")),acquisitionDate:x.parseDA(Ee(a["00080022"])),acquisitionTime:x.parseTM(Ee(a["00080032"],0,""))};if(t===r.GENERAL_IMAGE)return{sopInstanceUID:Ee(a["00080018"]),instanceNumber:Me(a["00200013"]),lossyImageCompression:Ee(a["00282110"]),lossyImageCompressionRatio:Me(a["00282112"]),lossyImageCompressionMethod:Ee(a["00282114"])};if(t===r.PATIENT)return{patientID:Ee(a["00100020"]),patientName:Ee(a["00100010"])};if(t===r.PATIENT_STUDY)return{patientAge:Me(a["00101010"]),patientSize:Me(a["00101020"]),patientSex:Ee(a["00100040"]),patientWeight:Me(a["00101030"])};if(t===r.NM_MULTIFRAME_GEOMETRY){const e=Ee(a["00080060"]),t=Ge(a,2);return{modality:e,imageType:Ee(a["00080008"]),imageSubType:t,imageOrientationPatient:qe(a),imagePositionPatient:Ye(a),sliceThickness:Me(a["00180050"]),spacingBetweenSlices:Me(a["00180088"]),pixelSpacing:Oe(a["00280030"],2),numberOfFrames:Me(a["00280008"]),isNMReconstructable:Y(t)&&e.includes("NM")}}if(t===r.IMAGE_PLANE){let e=qe(a),t=Ye(a);const n=Oe(a["00280030"],2);let r=null,o=null,i=null,s=null,l=!1;return n?(o=n[0],r=n[1]):(l=!0,o=1,r=1),e?(i=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])],s=[parseFloat(e[3]),parseFloat(e[4]),parseFloat(e[5])]):(i=[0,1,0],s=[0,0,-1],l=!0,e=[...i,...s]),t||(t=[0,0,0],l=!0),{frameOfReferenceUID:Ee(a["00200052"]),rows:Me(a["00280010"]),columns:Me(a["00280011"]),imageOrientationPatient:e,rowCosines:i,columnCosines:s,imagePositionPatient:t,sliceThickness:Me(a["00180050"]),sliceLocation:Me(a["00201041"]),pixelSpacing:n,rowPixelSpacing:o,columnPixelSpacing:r,usingDefaultValues:l}}if(t===r.ULTRASOUND_ENHANCED_REGION)return ze(a);if(t===r.CALIBRATION){if("US"===Ee(a["00080060"])){return{sequenceOfUltrasoundRegions:ze(a)}}}if(t===r.IMAGE_URL)return function(e,t){const{transferSyntaxUID:n}=He(e,t),r=i.utilities.isVideoTransferSyntax(n),a=e.substring(7),o=a.replace("/frames/","/thumbnail/");let s=a.replace("/frames/","/rendered/");r&&(s=s.replace("/rendered/1","/rendered"));return{isVideo:r,rendered:s,thumbnail:o}}(n,a);if(t===r.CINE)return function(e,t){const n=Ee(t["00180040"]);return{cineRate:n,numberOfFrames:Me(t["00280008"])}}(0,a);if(t===r.IMAGE_PIXEL)return{samplesPerPixel:Me(a["00280002"]),photometricInterpretation:Ee(a["00280004"]),rows:Me(a["00280010"]),columns:Me(a["00280011"]),bitsAllocated:Me(a["00280100"]),bitsStored:Me(a["00280101"]),highBit:Ee(a["00280102"]),pixelRepresentation:Me(a["00280103"]),planarConfiguration:Me(a["00280006"]),pixelAspectRatio:Ee(a["00280034"]),smallestPixelValue:Me(a["00280106"]),largestPixelValue:Me(a["00280107"]),redPaletteColorLookupTableDescriptor:Oe(a["00281101"]),greenPaletteColorLookupTableDescriptor:Oe(a["00281102"]),bluePaletteColorLookupTableDescriptor:Oe(a["00281103"]),redPaletteColorLookupTableData:Oe(a["00281201"]),greenPaletteColorLookupTableData:Oe(a["00281202"]),bluePaletteColorLookupTableData:Oe(a["00281203"])};if(t===r.VOI_LUT)return{windowCenter:Oe(a["00281050"],1),windowWidth:Oe(a["00281051"],1)};if(t===r.MODALITY_LUT)return{rescaleIntercept:Me(a["00281052"]),rescaleSlope:Me(a["00281053"]),rescaleType:Ee(a["00281054"])};if(t===r.SOP_COMMON)return{sopClassUID:Ee(a["00080016"]),sopInstanceUID:Ee(a["00080018"])};if(t===r.PET_ISOTOPE){const e=Ee(a["00540016"]);if(void 0===e)return;return{radiopharmaceuticalInfo:{radiopharmaceuticalStartTime:x.parseTM(Ee(e["00181072"],0,"")),radiopharmaceuticalStartDateTime:Ee(e["00181078"],0,""),radionuclideTotalDose:Me(e["00181074"]),radionuclideHalfLife:Me(e["00181075"])}}}return t===r.OVERLAY_PLANE?function(e){const t=[];for(let n=0;n<=30;n+=2){let r=`x60${n.toString(16)}`;4===r.length&&(r=`x600${n.toString(16)}`);const a=Ee(e[`${r}3000`]);if(!a)continue;const o=[];for(let t=0;t<a.length;t++)for(let n=0;n<8;n++){const r=e.Value[a.dataOffset+t];o[8*t+n]=r>>n&1}t.push({rows:Me(e[`${r}0010`]),columns:Me(e[`${r}0011`]),type:Ee(e[`${r}0040`]),x:Me(e[`${r}0050`],1)-1,y:Me(e[`${r}0050`],0)-1,pixelData:o,description:Ee(e[`${r}0022`]),label:Ee(e[`${r}1500`]),roiArea:Ee(e[`${r}1301`]),roiMean:Ee(e[`${r}1302`]),roiStandardDeviation:Ee(e[`${r}1303`])})}return{overlays:t}}(a):"transferSyntax"===t?He(n,a):t===r.PET_SERIES?{correctedImage:Ee(a["00280051"]),units:Ee(a["00541001"]),decayCorrection:Ee(a["00541102"])}:t===r.PET_IMAGE?{frameReferenceTime:Me(a["00541300"]),actualFrameDuration:Me(a["00181242"])}:"instance"===t?J(n,e,Z):void 0}};function Je(e,t,n={},r={}){const a=S(),{retrieveOptions:o={},streamingData:i}=r,s=i.chunkSize||function(e,t,n){const r=t[n];if("function"!=typeof r)return r;const a=$e.get(e);return r(a,e)}(t,o,"chunkSize")||65536,l=new Promise((async(t,r)=>{const l=Object.assign({},n);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 n=function(e,t){const{totalBytes:n,encodedData:r,chunkSize:a=65536}=e,{rangeIndex:o=0}=t;if(!(-1!==o||n&&r))return[0,""];if(-1===o||r?.byteLength>n-a)return[r?.byteLength||0,""];return[r?.byteLength||0,a*(o+1)-1]}(i,o),{encodedData:r,responseHeaders:a}=await async function(e,t,n,r){n&&(t=Object.assign(t,{Range:`bytes=${n[0]}-${n[1]}`}));let{encodedData:a}=r;if(n[1]&&a?.byteLength>n[1])return r;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),r.rangesFetched=1):(c=new Uint8Array(s.length),c.set(s,0),r.rangesFetched++);r.encodedData=a=c,r.responseHeaders=o.headers;const u=o.headers.get("Content-Range");u?r.totalBytes=Number(u.split("/")[1]):206===l&&n?""===n[1]||a?.length<n[1]?r.totalBytes=a.byteLength:r.totalBytes=Number.MAX_SAFE_INTEGER:r.totalBytes=a?.byteLength;return r}(e,l,n,i),c=a.get("content-type"),{totalBytes:u}=i,f=u===r.byteLength,d=L(c,r,{isPartial:!0}),g=v(o,f||d.extractDone);t({...d,imageQualityStatus:g,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),r(e)}}));return l}const Ke=function(e,t,n="application/octet-stream",r){const{streamingData:a,retrieveOptions:o={}}=r||{},i={Accept:n};let s=o.urlArguments?`${e}${-1===e.indexOf("?")?"?":"&"}${o.urlArguments}`:e;if(o.framesPath&&(s=s.replace("/frames/",o.framesPath)),a?.url!==s&&(r.streamingData={url:s}),void 0!==o.rangeIndex)return Je(s,t,i,r);if(o.streaming)return A(s,t,i,r);const l=D(s,t,i),{xhr:c}=l;return l.then((function(e){const t=L(c.getResponseHeader("Content-Type")||"application/octet-stream",new Uint8Array(e));return t.imageQualityStatus=v(o,!0),t}))},{ProgressiveIterator:Ze}=i.utilities,{ImageQualityStatus:et}=i.Enums,tt=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 nt(e){const t="1.2.840.10008.1.2";if(!e)return t;const n=e.split(";"),r={};n.forEach((e=>{const t=e.split("=");if(2!==t.length)return;const n=t[1].trim().replace(/"/g,"");r[t[0].trim()]=n}));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 r["transfer-syntax"]?r["transfer-syntax"]:e&&!Object.keys(r).length&&a[e]?a[e]:r.type&&a[r.type]?a[r.type]:a[e]?a[e]:t}function rt(e,t=4){const n=e/100-.02;return n>1/4?Math.min(t,0):n>1/16?Math.min(t,1):n>1/64?Math.min(t,2):Math.min(t,3)}const at=function(e,t={}){const n=i.imageRetrievalPoolManager,r=(new Date).getTime(),a=new Ze("decompress"),o=t.requestType||i.Enums.RequestType.Interaction,s=t.additionalDetails||{imageId:e},l=void 0===t.priority?5:t.priority,c=e.substring(7);return n.addRequest(async function(e,n,o){a.generate((async a=>{const i=Ze.as(Ke(e,n,o,t));let s=10;for await(const e of i){const{pixelData:o,imageQualityStatus:i=et.FULL_RESOLUTION,percentComplete:l,done:c=!0,extractDone:u=!0}=e,f=nt(e.contentType);if(!u&&!tt.has(f))continue;const d=e.decodeLevel??(i===et.FULL_RESOLUTION?0:rt(l,t.retrieveOptions?.decodeLevel));if(c||!(s<=d))try{const e={...t,decodeLevel:d},l=await we(n,o,f,e),u=(new Date).getTime();l.loadTimeInMS=u-r,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,s,l),{promise:a.getDonePromise(),cancelFn:void 0}};function ot(){(0,i.registerImageLoader)("wadors",at),i.metaData.addProvider(Qe)}const it={metaData:{getNumberString:Ae,getNumberValue:Me,getNumberValues:Oe,getValue:Ee,metaDataProvider:Qe},findIndexOfString:T,getPixelData:Ke,loadImage:at,metaDataManager:$e,register:ot};const st=function(){ot(),Ce()},lt=()=>new Worker(new URL(a.p+a.u(918),a.b),{type:void 0});const ct=function(e){P(e),st();const t=(0,i.getWebWorkerManager)(),n=e?.maxWebWorkers||function(){if("undefined"!=typeof navigator&&navigator.hardwareConcurrency)return Math.max(1,Math.floor(navigator.hardwareConcurrency/2));return 1}();t.registerWorker("dicomImageLoader",lt,{maxWorkerInstances:n})};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:n,convertYBRFullByPlane:r,convertPALETTECOLOR:c,wadouri:ve,wadors:it,init:ct,convertColorSpace:me,createImage:we,decodeJPEGBaseline8BitColor:he,getImageFrame:be,getPixelData:Ke,getMinMax:de,isColorImage:Pe,isJPEGBaseline8BitColor:ut,internal:O}})(),o})()));
2
2
  //# sourceMappingURL=cornerstoneDICOMImageLoader.min.js.map