@ohif/app 3.12.0-beta.52 → 3.12.0-beta.54

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 (38) hide show
  1. package/dist/{1447.bundle.f58681b8a8c6746c3256.js → 1447.bundle.b15051ce6a9bcec1ac6a.js} +2 -2
  2. package/dist/{1919.bundle.b1390ab4c85106c069e2.js → 1919.bundle.7c1b4166b95e7dffe973.js} +1 -0
  3. package/dist/{2243.bundle.92d2afd8756bda5e2ca3.js → 2243.bundle.727d1f866dda05467f19.js} +1 -0
  4. package/dist/{2518.bundle.fbbfa351f8e8c446599b.js → 2518.bundle.57c229a14e22d23db384.js} +1 -0
  5. package/dist/{2974.bundle.ec95e58b346dbe30a362.js → 2974.bundle.a90a9df917b90bc02c69.js} +1 -0
  6. package/dist/{4019.bundle.c5b332003e3cd00868ce.js → 4019.bundle.13e7f662a9e489b74a27.js} +70 -3
  7. package/dist/{4759.bundle.8686abdd7bcf4aa7d107.js → 4759.bundle.c3bfca952eea20a0d6f9.js} +1 -0
  8. package/dist/{5674.bundle.24de237ef15879b25714.js → 5674.bundle.8c34228471ff9e53b8c3.js} +1 -0
  9. package/dist/{6991.bundle.d0c8eb5e352477b0d42e.js → 6991.bundle.48929c562b9d3012e468.js} +1 -0
  10. package/dist/{7412.bundle.80f68b38041e891c64a8.js → 7412.bundle.c7950ea929406915ba33.js} +342 -84
  11. package/dist/{8558.bundle.9ee1f10769f9cac46bb3.js → 8558.bundle.9f596952dd6a5fa6f629.js} +1 -0
  12. package/dist/{934.bundle.d028841173058da9793c.js → 934.bundle.cce2fe2754a928b8cd6d.js} +1 -0
  13. package/dist/{9819.bundle.f9a684737e748002f1c2.js → 9819.bundle.d029289c240373cfb898.js} +16 -6
  14. package/dist/{9856.bundle.8e21e8c0322a0837862b.js → 9856.bundle.9a1396fddc3af67dcaf4.js} +169 -14
  15. package/dist/{9892.bundle.83de6c11c8a9eb4bba25.js → 9892.bundle.14e773b29e191babc8e4.js} +326 -79
  16. package/dist/{app.bundle.7ea0ea630b0467e32f40.js → app.bundle.3759d6a4606059b97022.js} +11 -4
  17. package/dist/{compute.bundle.f176731b761d630f358c.js → compute.bundle.afdef7ac00941da4dd32.js} +1 -1
  18. package/dist/index.html +1 -1
  19. package/dist/{polySeg.bundle.1ab7dd310985596b4098.js → polySeg.bundle.ba4364ed21d03c7a9df1.js} +1 -1
  20. package/dist/sw.js +1 -1
  21. package/package.json +21 -21
  22. /package/dist/{1459.bundle.26bd313381a55ecd59f7.js → 1459.bundle.d4ef552f8dec2c8b15fc.js} +0 -0
  23. /package/dist/{1604.bundle.813a49f279de52122def.js → 1604.bundle.ba4b8c8f64d258a40850.js} +0 -0
  24. /package/dist/{1807.bundle.9609cc9a5502d3c5c4ba.js → 1807.bundle.ddc2996069271a8652a5.js} +0 -0
  25. /package/dist/{213.bundle.844009eea53b5e7b71bf.js → 213.bundle.d174db20fab2fdfed4f8.js} +0 -0
  26. /package/dist/{2424.bundle.d3c0fa7cda17e7a40fc9.js → 2424.bundle.132b9ea62e24599d01f7.js} +0 -0
  27. /package/dist/{3409.bundle.c756a8ccaa7faa1d9235.js → 3409.bundle.257f7edb1585ea06ba3c.js} +0 -0
  28. /package/dist/{4113.bundle.31fe4e2a2956ce6c5d2d.js → 4113.bundle.85916db39290d43aa53b.js} +0 -0
  29. /package/dist/{414.bundle.113bc87916aa22d4cccc.js → 414.bundle.6f9b2a00f06626f05c27.js} +0 -0
  30. /package/dist/{5457.bundle.1d6b074af89e69a54dde.js → 5457.bundle.51285f55e1389d654257.js} +0 -0
  31. /package/dist/{5485.bundle.ae87fca794a3248efdaa.js → 5485.bundle.371660cf6663e90cd622.js} +0 -0
  32. /package/dist/{6027.bundle.2b0e82eb38b6a028a255.js → 6027.bundle.f220a72a6e4232c38a87.js} +0 -0
  33. /package/dist/{6201.bundle.0d8aa2fba299a8cc92a9.js → 6201.bundle.40aca7bfb7513a6ebda7.js} +0 -0
  34. /package/dist/{7197.bundle.7cc9bb98050e4ae0294d.js → 7197.bundle.52da128e3f00a7ad7902.js} +0 -0
  35. /package/dist/{7639.bundle.fb8c61c6588c528d336f.js → 7639.bundle.1226ddb2bc46f5cae750.js} +0 -0
  36. /package/dist/{810.bundle.04da3bf08f7df9589091.js → 810.bundle.4f3a7ca74971239c1498.js} +0 -0
  37. /package/dist/{85.bundle.72ca9e62d8bcef003e42.js → 85.bundle.cc4e5b3a9acca13007a5.js} +0 -0
  38. /package/dist/{8815.bundle.c5c714fe2a3ff31aacad.js → 8815.bundle.525c88f93f5bd57e4980.js} +0 -0
@@ -6925,7 +6925,7 @@ var COLOR_LUT = __webpack_require__(93952);
6925
6925
 
6926
6926
 
6927
6927
  ;// ../../../node_modules/@cornerstonejs/tools/dist/esm/version.js
6928
- const version = '4.3.14';
6928
+ const version = '4.5.3';
6929
6929
 
6930
6930
  ;// ../../../node_modules/@cornerstonejs/tools/dist/esm/synchronizers/callbacks/cameraSyncCallback.js
6931
6931
 
@@ -7874,6 +7874,7 @@ var stackPrefetchUtils = __webpack_require__(94762);
7874
7874
 
7875
7875
 
7876
7876
 
7877
+
7877
7878
  const { imageRetrieveMetadataProvider } = esm.utilities;
7878
7879
  let configuration = {
7879
7880
  maxImagesToPrefetch: Infinity,
@@ -7933,6 +7934,13 @@ function prefetch(element) {
7933
7934
  console.log('prefetch done: %s', imageId);
7934
7935
  const imageIdIndex = stack.imageIds.indexOf(imageId);
7935
7936
  removeFromList(imageIdIndex);
7937
+ if (stackPrefetch.indicesToRequest.length === 0) {
7938
+ const eventDetail = {
7939
+ element: element,
7940
+ lastPrefetchedImageId: imageId,
7941
+ };
7942
+ (0,esm.triggerEvent)(esm.eventTarget, enums.Events.STACK_PREFETCH_COMPLETE, eventDetail);
7943
+ }
7936
7944
  }
7937
7945
  let lowerIndex = nearest.low;
7938
7946
  let higherIndex = nearest.high;
@@ -8035,6 +8043,7 @@ const stackPrefetch = { enable: stackPrefetch_enable, disable: stackPrefetch_dis
8035
8043
 
8036
8044
 
8037
8045
 
8046
+
8038
8047
  const { imageRetrieveMetadataProvider: stackContextPrefetch_imageRetrieveMetadataProvider } = esm.utilities;
8039
8048
  let stackContextPrefetch_configuration = {
8040
8049
  maxImagesToPrefetch: Infinity,
@@ -8139,6 +8148,13 @@ function stackContextPrefetch_prefetch(element, priority = 0) {
8139
8148
  }
8140
8149
  }
8141
8150
  }
8151
+ if (stackPrefetch.indicesToRequest.length === 0) {
8152
+ const eventDetail = {
8153
+ element: element,
8154
+ lastPrefetchedImageId: imageId,
8155
+ };
8156
+ (0,esm.triggerEvent)(esm.eventTarget, enums.Events.STACK_PREFETCH_COMPLETE, eventDetail);
8157
+ }
8142
8158
  }
8143
8159
  const requestFn = (imageId, options) => {
8144
8160
  const { retrieveOptions = {} } = esm.metaData.get(stackContextPrefetch_imageRetrieveMetadataProvider.IMAGE_RETRIEVE_CONFIGURATION, imageId, 'stack') || {};
@@ -10407,6 +10423,9 @@ var base = __webpack_require__(85817);
10407
10423
  class PanTool extends base/* BaseTool */.oS {
10408
10424
  constructor(toolProps = {}, defaultToolProps = {
10409
10425
  supportedInteractionTypes: ['Mouse', 'Touch'],
10426
+ configuration: {
10427
+ limitToViewport: false,
10428
+ },
10410
10429
  }) {
10411
10430
  super(toolProps, defaultToolProps);
10412
10431
  }
@@ -10416,17 +10435,77 @@ class PanTool extends base/* BaseTool */.oS {
10416
10435
  mouseDragCallback(evt) {
10417
10436
  this._dragCallback(evt);
10418
10437
  }
10438
+ _checkImageInViewport(viewport, deltaPointsCanvas) {
10439
+ const { canvas } = viewport;
10440
+ const ratio = window.devicePixelRatio;
10441
+ const viewportLeft = 0;
10442
+ const viewportRight = canvas.width / ratio;
10443
+ const viewportTop = 0;
10444
+ const viewportBottom = canvas.height / ratio;
10445
+ const defaultActor = viewport.getDefaultActor();
10446
+ const renderer = viewport.getRenderer();
10447
+ let bounds;
10448
+ if (defaultActor && esm.utilities.isImageActor(defaultActor)) {
10449
+ const imageData = defaultActor.actor.getMapper().getInputData();
10450
+ bounds = imageData.getBounds();
10451
+ }
10452
+ else {
10453
+ bounds = renderer.computeVisiblePropBounds();
10454
+ }
10455
+ const [imageLeft, imageTop] = viewport.worldToCanvas([
10456
+ bounds[0],
10457
+ bounds[2],
10458
+ bounds[4],
10459
+ ]);
10460
+ const [imageRight, imageBottom] = viewport.worldToCanvas([
10461
+ bounds[1],
10462
+ bounds[3],
10463
+ bounds[5],
10464
+ ]);
10465
+ const zoom = viewport.getZoom();
10466
+ if (zoom <= 1) {
10467
+ if ((imageLeft + deltaPointsCanvas[0] < viewportLeft &&
10468
+ deltaPointsCanvas[0] < 0) ||
10469
+ (imageRight + deltaPointsCanvas[0] > viewportRight &&
10470
+ deltaPointsCanvas[0] > 0) ||
10471
+ (imageTop + deltaPointsCanvas[1] < viewportTop &&
10472
+ deltaPointsCanvas[1] < 0) ||
10473
+ (imageBottom + deltaPointsCanvas[1] > viewportBottom &&
10474
+ deltaPointsCanvas[1] > 0)) {
10475
+ return false;
10476
+ }
10477
+ }
10478
+ else {
10479
+ if ((imageLeft + deltaPointsCanvas[0] > viewportLeft &&
10480
+ deltaPointsCanvas[0] > 0) ||
10481
+ (imageRight + deltaPointsCanvas[0] < viewportRight &&
10482
+ deltaPointsCanvas[0] < 0) ||
10483
+ (imageTop + deltaPointsCanvas[1] > viewportTop &&
10484
+ deltaPointsCanvas[1] > 0) ||
10485
+ (imageBottom + deltaPointsCanvas[1] < viewportBottom &&
10486
+ deltaPointsCanvas[1] < 0)) {
10487
+ return false;
10488
+ }
10489
+ }
10490
+ return true;
10491
+ }
10419
10492
  _dragCallback(evt) {
10420
10493
  const { element, deltaPoints } = evt.detail;
10421
10494
  const enabledElement = (0,esm.getEnabledElement)(element);
10422
10495
  const deltaPointsWorld = deltaPoints.world;
10496
+ const deltaPointsCanvas = deltaPoints.canvas;
10423
10497
  if (deltaPointsWorld[0] === 0 &&
10424
10498
  deltaPointsWorld[1] === 0 &&
10425
10499
  deltaPointsWorld[2] === 0) {
10426
10500
  return;
10427
10501
  }
10428
- const camera = enabledElement.viewport.getCamera();
10502
+ const viewport = enabledElement.viewport;
10503
+ const camera = viewport.getCamera();
10429
10504
  const { focalPoint, position } = camera;
10505
+ if (this.configuration.limitToViewport &&
10506
+ !this._checkImageInViewport(viewport, deltaPointsCanvas)) {
10507
+ return;
10508
+ }
10430
10509
  const updatedPosition = [
10431
10510
  position[0] - deltaPointsWorld[0],
10432
10511
  position[1] - deltaPointsWorld[1],
@@ -10437,11 +10516,11 @@ class PanTool extends base/* BaseTool */.oS {
10437
10516
  focalPoint[1] - deltaPointsWorld[1],
10438
10517
  focalPoint[2] - deltaPointsWorld[2],
10439
10518
  ];
10440
- enabledElement.viewport.setCamera({
10519
+ viewport.setCamera({
10441
10520
  focalPoint: updatedFocalPoint,
10442
10521
  position: updatedPosition,
10443
10522
  });
10444
- enabledElement.viewport.render();
10523
+ viewport.render();
10445
10524
  }
10446
10525
  }
10447
10526
  PanTool.toolName = 'Pan';
@@ -20271,68 +20350,79 @@ class EllipticalROITool extends base/* AnnotationTool */.EC {
20271
20350
  pos1Index[0] = Math.floor(pos1Index[0]);
20272
20351
  pos1Index[1] = Math.floor(pos1Index[1]);
20273
20352
  pos1Index[2] = Math.floor(pos1Index[2]);
20274
- const post2Index = EllipticalROITool_transformWorldToIndex(imageData, worldPos2);
20275
- post2Index[0] = Math.floor(post2Index[0]);
20276
- post2Index[1] = Math.floor(post2Index[1]);
20277
- post2Index[2] = Math.floor(post2Index[2]);
20278
- this.isHandleOutsideImage = !this._isInsideVolume(pos1Index, post2Index, dimensions);
20279
- const iMin = Math.min(pos1Index[0], post2Index[0]);
20280
- const iMax = Math.max(pos1Index[0], post2Index[0]);
20281
- const jMin = Math.min(pos1Index[1], post2Index[1]);
20282
- const jMax = Math.max(pos1Index[1], post2Index[1]);
20283
- const kMin = Math.min(pos1Index[2], post2Index[2]);
20284
- const kMax = Math.max(pos1Index[2], post2Index[2]);
20285
- const boundsIJK = [
20286
- [iMin, iMax],
20287
- [jMin, jMax],
20288
- [kMin, kMax],
20289
- ];
20290
- const center = [
20291
- (topLeftWorld[0] + bottomRightWorld[0]) / 2,
20292
- (topLeftWorld[1] + bottomRightWorld[1]) / 2,
20293
- (topLeftWorld[2] + bottomRightWorld[2]) / 2,
20294
- ];
20295
- const ellipseObj = {
20296
- center,
20297
- xRadius: Math.abs(topLeftWorld[0] - bottomRightWorld[0]) / 2,
20298
- yRadius: Math.abs(topLeftWorld[1] - bottomRightWorld[1]) / 2,
20299
- zRadius: Math.abs(topLeftWorld[2] - bottomRightWorld[2]) / 2,
20300
- };
20301
- const { worldWidth, worldHeight } = (0,getWorldWidthAndHeightFromTwoPoints/* default */.A)(viewPlaneNormal, viewUp, worldPos1, worldPos2);
20302
- const isEmptyArea = worldWidth === 0 && worldHeight === 0;
20303
- const handles = [pos1Index, post2Index];
20304
- const { scale, areaUnit } = (0,getCalibratedUnits/* getCalibratedLengthUnitsAndScale */.Op)(image, handles);
20305
- const area = Math.abs(Math.PI * (worldWidth / 2) * (worldHeight / 2)) /
20306
- scale /
20307
- scale;
20308
- const pixelUnitsOptions = {
20309
- isPreScaled: (0,isViewportPreScaled/* isViewportPreScaled */.u)(viewport, targetId),
20310
- isSuvScaled: this.isSuvScaled(viewport, targetId, annotation.metadata.referencedImageId),
20311
- };
20312
- const modalityUnit = (0,getPixelValueUnits/* getPixelValueUnits */.j)(metadata.Modality, annotation.metadata.referencedImageId, pixelUnitsOptions);
20313
- let pointsInShape;
20314
- if (voxelManager) {
20315
- const pointsInShape = voxelManager.forEach(this.configuration.statsCalculator.statsCallback, {
20316
- boundsIJK,
20317
- imageData,
20318
- isInObject: (pointLPS) => (0,ellipse.pointInEllipse)(ellipseObj, pointLPS, { fast: true }),
20319
- returnPoints: this.configuration.storePointData,
20320
- });
20353
+ const pos2Index = EllipticalROITool_transformWorldToIndex(imageData, worldPos2);
20354
+ pos2Index[0] = Math.floor(pos2Index[0]);
20355
+ pos2Index[1] = Math.floor(pos2Index[1]);
20356
+ pos2Index[2] = Math.floor(pos2Index[2]);
20357
+ if (this._isInsideVolume(pos1Index, pos2Index, dimensions)) {
20358
+ const iMin = Math.min(pos1Index[0], pos2Index[0]);
20359
+ const iMax = Math.max(pos1Index[0], pos2Index[0]);
20360
+ const jMin = Math.min(pos1Index[1], pos2Index[1]);
20361
+ const jMax = Math.max(pos1Index[1], pos2Index[1]);
20362
+ const kMin = Math.min(pos1Index[2], pos2Index[2]);
20363
+ const kMax = Math.max(pos1Index[2], pos2Index[2]);
20364
+ const boundsIJK = [
20365
+ [iMin, iMax],
20366
+ [jMin, jMax],
20367
+ [kMin, kMax],
20368
+ ];
20369
+ const center = [
20370
+ (topLeftWorld[0] + bottomRightWorld[0]) / 2,
20371
+ (topLeftWorld[1] + bottomRightWorld[1]) / 2,
20372
+ (topLeftWorld[2] + bottomRightWorld[2]) / 2,
20373
+ ];
20374
+ const xRadius = Math.abs(topLeftWorld[0] - bottomRightWorld[0]) / 2;
20375
+ const yRadius = Math.abs(topLeftWorld[1] - bottomRightWorld[1]) / 2;
20376
+ const zRadius = Math.abs(topLeftWorld[2] - bottomRightWorld[2]) / 2;
20377
+ const ellipseObj = {
20378
+ center,
20379
+ xRadius: xRadius < esm.EPSILON / 2 ? 0 : xRadius,
20380
+ yRadius: yRadius < esm.EPSILON / 2 ? 0 : yRadius,
20381
+ zRadius: zRadius < esm.EPSILON / 2 ? 0 : zRadius,
20382
+ };
20383
+ const { worldWidth, worldHeight } = (0,getWorldWidthAndHeightFromTwoPoints/* default */.A)(viewPlaneNormal, viewUp, worldPos1, worldPos2);
20384
+ const isEmptyArea = worldWidth === 0 && worldHeight === 0;
20385
+ const handles = [pos1Index, pos2Index];
20386
+ const { scale, unit, areaUnit } = (0,getCalibratedUnits/* getCalibratedLengthUnitsAndScale */.Op)(image, handles);
20387
+ const aspect = (0,getCalibratedUnits/* getCalibratedAspect */.CQ)(image);
20388
+ const area = Math.abs(Math.PI *
20389
+ (worldWidth / scale / 2) *
20390
+ (worldHeight / aspect / scale / 2));
20391
+ const pixelUnitsOptions = {
20392
+ isPreScaled: (0,isViewportPreScaled/* isViewportPreScaled */.u)(viewport, targetId),
20393
+ isSuvScaled: this.isSuvScaled(viewport, targetId, annotation.metadata.referencedImageId),
20394
+ };
20395
+ const modalityUnit = (0,getPixelValueUnits/* getPixelValueUnits */.j)(metadata.Modality, annotation.metadata.referencedImageId, pixelUnitsOptions);
20396
+ let pointsInShape;
20397
+ if (voxelManager) {
20398
+ pointsInShape = voxelManager.forEach(this.configuration.statsCalculator.statsCallback, {
20399
+ isInObject: (pointLPS) => (0,ellipse.pointInEllipse)(ellipseObj, pointLPS, { fast: true }),
20400
+ boundsIJK,
20401
+ imageData,
20402
+ returnPoints: this.configuration.storePointData,
20403
+ });
20404
+ }
20405
+ const stats = this.configuration.statsCalculator.getStatistics();
20406
+ cachedStats[targetId] = {
20407
+ Modality: metadata.Modality,
20408
+ area,
20409
+ mean: stats.mean?.value,
20410
+ max: stats.max?.value,
20411
+ min: stats.min?.value,
20412
+ stdDev: stats.stdDev?.value,
20413
+ statsArray: stats.array,
20414
+ pointsInShape,
20415
+ isEmptyArea,
20416
+ areaUnit,
20417
+ modalityUnit,
20418
+ };
20419
+ }
20420
+ else {
20421
+ this.isHandleOutsideImage = true;
20422
+ cachedStats[targetId] = {
20423
+ Modality: metadata.Modality,
20424
+ };
20321
20425
  }
20322
- const stats = this.configuration.statsCalculator.getStatistics();
20323
- cachedStats[targetId] = {
20324
- Modality: metadata.Modality,
20325
- area,
20326
- mean: stats.mean?.value,
20327
- max: stats.max?.value,
20328
- min: stats.min?.value,
20329
- stdDev: stats.stdDev?.value,
20330
- statsArray: stats.array,
20331
- pointsInShape,
20332
- isEmptyArea,
20333
- areaUnit,
20334
- modalityUnit,
20335
- };
20336
20426
  }
20337
20427
  const invalidated = annotation.invalidated;
20338
20428
  annotation.invalidated = false;
@@ -29054,6 +29144,7 @@ class LabelMapEditWithContourTool extends PlanarFreehandContourSegmentationTool/
29054
29144
  esm.eventTarget.addEventListener(enums.Events.ANNOTATION_COMPLETED, this.annotationCompleted);
29055
29145
  esm.eventTarget.addEventListener(enums.Events.TOOLGROUP_VIEWPORT_ADDED, this.onViewportAddedToToolGroupBinded);
29056
29146
  esm.eventTarget.addEventListener(enums.Events.SEGMENTATION_MODIFIED, this.onSegmentationModifiedBinded);
29147
+ esm.eventTarget.addEventListener(enums.Events.SEGMENTATION_REPRESENTATION_MODIFIED, this.onSegmentationModifiedBinded);
29057
29148
  }
29058
29149
  cleanUpListeners() {
29059
29150
  LabelMapEditWithContourTool.annotationsToViewportMap.clear();
@@ -29062,6 +29153,7 @@ class LabelMapEditWithContourTool extends PlanarFreehandContourSegmentationTool/
29062
29153
  esm.eventTarget.removeEventListener(enums.Events.ANNOTATION_COMPLETED, this.annotationCompleted);
29063
29154
  esm.eventTarget.removeEventListener(enums.Events.TOOLGROUP_VIEWPORT_ADDED, this.onViewportAddedToToolGroup.bind(this));
29064
29155
  esm.eventTarget.removeEventListener(enums.Events.SEGMENTATION_MODIFIED, this.onSegmentationModified.bind(this));
29156
+ esm.eventTarget.removeEventListener(enums.Events.SEGMENTATION_REPRESENTATION_MODIFIED, this.onSegmentationModified.bind(this));
29065
29157
  }
29066
29158
  async checkContourSegmentation(viewportId) {
29067
29159
  if (LabelMapEditWithContourTool.viewportIdsChecked.includes(viewportId)) {
@@ -36672,6 +36764,7 @@ class BrushTool extends _LabelmapBaseTool__WEBPACK_IMPORTED_MODULE_10__/* ["defa
36672
36764
  },
36673
36765
  }) {
36674
36766
  super(toolProps, defaultToolProps);
36767
+ this._lastDragInfo = null;
36675
36768
  this.onSetToolPassive = (evt) => {
36676
36769
  this.disableCursor();
36677
36770
  };
@@ -36683,14 +36776,24 @@ class BrushTool extends _LabelmapBaseTool__WEBPACK_IMPORTED_MODULE_10__/* ["defa
36683
36776
  };
36684
36777
  this.preMouseDownCallback = (evt) => {
36685
36778
  const eventData = evt.detail;
36686
- const { element } = eventData;
36779
+ const { element, currentPoints } = eventData;
36687
36780
  const enabledElement = (0,_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.getEnabledElement)(element);
36781
+ const { viewport } = enabledElement;
36688
36782
  this._editData = this.createEditData(element);
36689
36783
  this._activateDraw(element);
36690
36784
  (0,_cursors_elementCursor__WEBPACK_IMPORTED_MODULE_8__.hideElementCursor)(element);
36691
36785
  evt.preventDefault();
36692
36786
  this._previewData.isDrag = false;
36693
36787
  this._previewData.timerStart = Date.now();
36788
+ const canvasPoint = gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec2.clone */ .Zc.clone(currentPoints.canvas);
36789
+ const worldPoint = viewport.canvasToWorld([
36790
+ canvasPoint[0],
36791
+ canvasPoint[1],
36792
+ ]);
36793
+ this._lastDragInfo = {
36794
+ canvas: canvasPoint,
36795
+ world: gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.clone */ .eR.clone(worldPoint),
36796
+ };
36694
36797
  const hoverData = this._hoverData || this.createHoverData(element);
36695
36798
  (0,_utilities_triggerAnnotationRenderForViewportIds__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A)(hoverData.viewportIdsToRender);
36696
36799
  const operationData = this.getOperationData(element);
@@ -36765,6 +36868,7 @@ class BrushTool extends _LabelmapBaseTool__WEBPACK_IMPORTED_MODULE_10__/* ["defa
36765
36868
  const eventData = evt.detail;
36766
36869
  const { element, currentPoints } = eventData;
36767
36870
  const enabledElement = (0,_cornerstonejs_core__WEBPACK_IMPORTED_MODULE_0__.getEnabledElement)(element);
36871
+ const { viewport } = enabledElement;
36768
36872
  this.updateCursor(evt);
36769
36873
  const { viewportIdsToRender } = this._hoverData;
36770
36874
  (0,_utilities_triggerAnnotationRenderForViewportIds__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A)(viewportIdsToRender);
@@ -36779,11 +36883,39 @@ class BrushTool extends _LabelmapBaseTool__WEBPACK_IMPORTED_MODULE_10__/* ["defa
36779
36883
  window.clearTimeout(this._previewData.timer);
36780
36884
  this._previewData.timer = null;
36781
36885
  }
36782
- this._previewData.preview = this.applyActiveStrategy(enabledElement, this.getOperationData(element));
36886
+ if (!this._lastDragInfo) {
36887
+ const startCanvas = this._previewData.startPoint;
36888
+ const startWorld = viewport.canvasToWorld([
36889
+ startCanvas[0],
36890
+ startCanvas[1],
36891
+ ]);
36892
+ this._lastDragInfo = {
36893
+ canvas: gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec2.clone */ .Zc.clone(startCanvas),
36894
+ world: gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.clone */ .eR.clone(startWorld),
36895
+ };
36896
+ }
36897
+ const currentCanvas = currentPoints.canvas;
36898
+ const currentWorld = viewport.canvasToWorld([
36899
+ currentCanvas[0],
36900
+ currentCanvas[1],
36901
+ ]);
36902
+ this._hoverData = this.createHoverData(element, currentCanvas);
36903
+ this._calculateCursor(element, currentCanvas);
36904
+ const operationData = this.getOperationData(element);
36905
+ operationData.strokePointsWorld = [
36906
+ gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.clone */ .eR.clone(this._lastDragInfo.world),
36907
+ gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.clone */ .eR.clone(currentWorld),
36908
+ ];
36909
+ this._previewData.preview = this.applyActiveStrategy(enabledElement, operationData);
36910
+ const currentCanvasClone = gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec2.clone */ .Zc.clone(currentCanvas);
36911
+ this._lastDragInfo = {
36912
+ canvas: currentCanvasClone,
36913
+ world: gl_matrix__WEBPACK_IMPORTED_MODULE_1__/* .vec3.clone */ .eR.clone(currentWorld),
36914
+ };
36783
36915
  this._previewData.element = element;
36784
36916
  this._previewData.timerStart = Date.now() + dragTimeMs;
36785
36917
  this._previewData.isDrag = true;
36786
- this._previewData.startPoint = currentPoints.canvas;
36918
+ this._previewData.startPoint = currentCanvasClone;
36787
36919
  };
36788
36920
  this._endCallback = (evt) => {
36789
36921
  const eventData = evt.detail;
@@ -36798,6 +36930,7 @@ class BrushTool extends _LabelmapBaseTool__WEBPACK_IMPORTED_MODULE_10__/* ["defa
36798
36930
  (0,_cursors_elementCursor__WEBPACK_IMPORTED_MODULE_8__.resetElementCursor)(element);
36799
36931
  this.updateCursor(evt);
36800
36932
  this._editData = null;
36933
+ this._lastDragInfo = null;
36801
36934
  this.applyActiveStrategyCallback(enabledElement, operationData, _enums__WEBPACK_IMPORTED_MODULE_2__.StrategyCallbacks.OnInteractionEnd);
36802
36935
  if (!this._previewData.isDrag) {
36803
36936
  this.acceptPreview(element);
@@ -37384,7 +37517,7 @@ function lightenColor(r, g, b, a, factor = 0.4) {
37384
37517
  /* harmony export */ pB: () => (/* binding */ CIRCLE_STRATEGY),
37385
37518
  /* harmony export */ q: () => (/* binding */ thresholdInsideCircle)
37386
37519
  /* harmony export */ });
37387
- /* unused harmony exports fillOutsideCircle, CIRCLE_THRESHOLD_STRATEGY */
37520
+ /* unused harmony exports fillOutsideCircle, CIRCLE_THRESHOLD_STRATEGY, createPointInEllipse */
37388
37521
  /* harmony import */ var gl_matrix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3823);
37389
37522
  /* harmony import */ var _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15327);
37390
37523
  /* harmony import */ var _utilities_boundingBox__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(72282);
@@ -37399,7 +37532,7 @@ function lightenColor(r, g, b, a, factor = 0.4) {
37399
37532
 
37400
37533
 
37401
37534
 
37402
- const { transformWorldToIndex, isEqual } = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_1__.utilities;
37535
+ const { transformWorldToIndex, transformIndexToWorld, isEqual } = _cornerstonejs_core__WEBPACK_IMPORTED_MODULE_1__.utilities;
37403
37536
  function getEllipseCornersFromCanvasCoordinates(canvasCoordinates) {
37404
37537
  const [bottom, top, left, right] = canvasCoordinates;
37405
37538
  const topLeft = [left[0], top[1]];
@@ -37408,9 +37541,82 @@ function getEllipseCornersFromCanvasCoordinates(canvasCoordinates) {
37408
37541
  const topRight = [right[0], top[1]];
37409
37542
  return [topLeft, bottomRight, bottomLeft, topRight];
37410
37543
  }
37544
+ function createCircleCornersForCenter(center, viewUp, viewRight, radius) {
37545
+ const centerVec = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.fromValues */ .eR.fromValues(center[0], center[1], center[2]);
37546
+ const top = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.create */ .eR.create();
37547
+ gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.scaleAndAdd */ .eR.scaleAndAdd(top, centerVec, viewUp, radius);
37548
+ const bottom = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.create */ .eR.create();
37549
+ gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.scaleAndAdd */ .eR.scaleAndAdd(bottom, centerVec, viewUp, -radius);
37550
+ const right = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.create */ .eR.create();
37551
+ gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.scaleAndAdd */ .eR.scaleAndAdd(right, centerVec, viewRight, radius);
37552
+ const left = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.create */ .eR.create();
37553
+ gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.scaleAndAdd */ .eR.scaleAndAdd(left, centerVec, viewRight, -radius);
37554
+ return [
37555
+ bottom,
37556
+ top,
37557
+ left,
37558
+ right,
37559
+ ];
37560
+ }
37561
+ function createStrokePredicate(centers, radius) {
37562
+ if (!centers.length || radius <= 0) {
37563
+ return null;
37564
+ }
37565
+ const radiusSquared = radius * radius;
37566
+ const centerVecs = centers.map((point) => [point[0], point[1], point[2]]);
37567
+ const segments = [];
37568
+ for (let i = 1; i < centerVecs.length; i++) {
37569
+ const start = centerVecs[i - 1];
37570
+ const end = centerVecs[i];
37571
+ const dx = end[0] - start[0];
37572
+ const dy = end[1] - start[1];
37573
+ const dz = end[2] - start[2];
37574
+ const lengthSquared = dx * dx + dy * dy + dz * dz;
37575
+ segments.push({ start, vector: [dx, dy, dz], lengthSquared });
37576
+ }
37577
+ return (worldPoint) => {
37578
+ if (!worldPoint) {
37579
+ return false;
37580
+ }
37581
+ for (const centerVec of centerVecs) {
37582
+ const dx = worldPoint[0] - centerVec[0];
37583
+ const dy = worldPoint[1] - centerVec[1];
37584
+ const dz = worldPoint[2] - centerVec[2];
37585
+ if (dx * dx + dy * dy + dz * dz <= radiusSquared) {
37586
+ return true;
37587
+ }
37588
+ }
37589
+ for (const { start, vector, lengthSquared } of segments) {
37590
+ if (lengthSquared === 0) {
37591
+ const dx = worldPoint[0] - start[0];
37592
+ const dy = worldPoint[1] - start[1];
37593
+ const dz = worldPoint[2] - start[2];
37594
+ if (dx * dx + dy * dy + dz * dz <= radiusSquared) {
37595
+ return true;
37596
+ }
37597
+ continue;
37598
+ }
37599
+ const dx = worldPoint[0] - start[0];
37600
+ const dy = worldPoint[1] - start[1];
37601
+ const dz = worldPoint[2] - start[2];
37602
+ const dot = dx * vector[0] + dy * vector[1] + dz * vector[2];
37603
+ const t = Math.max(0, Math.min(1, dot / lengthSquared));
37604
+ const projX = start[0] + vector[0] * t;
37605
+ const projY = start[1] + vector[1] * t;
37606
+ const projZ = start[2] + vector[2] * t;
37607
+ const distX = worldPoint[0] - projX;
37608
+ const distY = worldPoint[1] - projY;
37609
+ const distZ = worldPoint[2] - projZ;
37610
+ if (distX * distX + distY * distY + distZ * distZ <= radiusSquared) {
37611
+ return true;
37612
+ }
37613
+ }
37614
+ return false;
37615
+ };
37616
+ }
37411
37617
  const initializeCircle = {
37412
37618
  [_enums__WEBPACK_IMPORTED_MODULE_4__.StrategyCallbacks.Initialize]: (operationData) => {
37413
- const { points, viewport, segmentationImageData, } = operationData;
37619
+ const { points, viewport, segmentationImageData, viewUp, viewPlaneNormal, } = operationData;
37414
37620
  if (!points) {
37415
37621
  return;
37416
37622
  }
@@ -37424,18 +37630,35 @@ const initializeCircle = {
37424
37630
  }
37425
37631
  operationData.centerWorld = center;
37426
37632
  operationData.centerIJK = transformWorldToIndex(segmentationImageData, center);
37633
+ const brushRadius = points.length >= 2 ? gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.distance */ .eR.distance(points[0], points[1]) / 2 : 0;
37427
37634
  const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p));
37428
37635
  const corners = getEllipseCornersFromCanvasCoordinates(canvasCoordinates);
37429
37636
  const cornersInWorld = corners.map((corner) => viewport.canvasToWorld(corner));
37430
- const circleCornersIJK = points.map((world) => {
37431
- return transformWorldToIndex(segmentationImageData, world);
37432
- });
37637
+ const normalizedViewUp = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.fromValues */ .eR.fromValues(viewUp[0], viewUp[1], viewUp[2]);
37638
+ gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.normalize */ .eR.normalize(normalizedViewUp, normalizedViewUp);
37639
+ const normalizedPlaneNormal = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.fromValues */ .eR.fromValues(viewPlaneNormal[0], viewPlaneNormal[1], viewPlaneNormal[2]);
37640
+ gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.normalize */ .eR.normalize(normalizedPlaneNormal, normalizedPlaneNormal);
37641
+ const viewRight = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.create */ .eR.create();
37642
+ gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.cross */ .eR.cross(viewRight, normalizedViewUp, normalizedPlaneNormal);
37643
+ gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.normalize */ .eR.normalize(viewRight, viewRight);
37644
+ const strokeCentersSource = operationData.strokePointsWorld &&
37645
+ operationData.strokePointsWorld.length > 0
37646
+ ? operationData.strokePointsWorld
37647
+ : [operationData.centerWorld];
37648
+ const strokeCenters = strokeCentersSource.map((point) => gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.clone */ .eR.clone(point));
37649
+ const strokeCornersWorld = strokeCenters.flatMap((centerPoint) => createCircleCornersForCenter(centerPoint, normalizedViewUp, viewRight, brushRadius));
37650
+ const circleCornersIJK = strokeCornersWorld.map((world) => transformWorldToIndex(segmentationImageData, world));
37433
37651
  const boundsIJK = (0,_utilities_boundingBox__WEBPACK_IMPORTED_MODULE_2__.getBoundingBoxAroundShapeIJK)(circleCornersIJK, segmentationImageData.getDimensions());
37434
- operationData.isInObject = createPointInEllipse(cornersInWorld);
37652
+ operationData.strokePointsWorld = strokeCenters;
37653
+ operationData.isInObject = createPointInEllipse(cornersInWorld, {
37654
+ strokePointsWorld: strokeCenters,
37655
+ segmentationImageData,
37656
+ radius: brushRadius,
37657
+ });
37435
37658
  operationData.isInObjectBoundsIJK = boundsIJK;
37436
37659
  },
37437
37660
  };
37438
- function createPointInEllipse(cornersInWorld = []) {
37661
+ function createPointInEllipse(cornersInWorld = [], options = {}) {
37439
37662
  if (!cornersInWorld || cornersInWorld.length !== 4) {
37440
37663
  throw new Error('createPointInEllipse: cornersInWorld must have 4 points');
37441
37664
  }
@@ -37454,6 +37677,8 @@ function createPointInEllipse(cornersInWorld = []) {
37454
37677
  const normal = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.create */ .eR.create();
37455
37678
  gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.cross */ .eR.cross(normal, majorAxisVec, minorAxisVec);
37456
37679
  gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.normalize */ .eR.normalize(normal, normal);
37680
+ const radiusForStroke = options.radius ?? Math.max(xRadius, yRadius);
37681
+ const strokePredicate = createStrokePredicate(options.strokePointsWorld || [], radiusForStroke);
37457
37682
  if (isEqual(xRadius, yRadius)) {
37458
37683
  const radius = xRadius;
37459
37684
  const sphereObj = {
@@ -37461,11 +37686,33 @@ function createPointInEllipse(cornersInWorld = []) {
37461
37686
  radius,
37462
37687
  radius2: radius * radius,
37463
37688
  };
37464
- return (pointLPS) => (0,_utilities_math_sphere__WEBPACK_IMPORTED_MODULE_6__/* .pointInSphere */ .d)(sphereObj, pointLPS);
37689
+ return (pointLPS, pointIJK) => {
37690
+ let worldPoint = pointLPS;
37691
+ if (!worldPoint && pointIJK && options.segmentationImageData) {
37692
+ worldPoint = transformIndexToWorld(options.segmentationImageData, pointIJK);
37693
+ }
37694
+ if (!worldPoint) {
37695
+ return false;
37696
+ }
37697
+ if (strokePredicate?.(worldPoint)) {
37698
+ return true;
37699
+ }
37700
+ return (0,_utilities_math_sphere__WEBPACK_IMPORTED_MODULE_6__/* .pointInSphere */ .d)(sphereObj, worldPoint);
37701
+ };
37465
37702
  }
37466
- return (pointLPS) => {
37703
+ return (pointLPS, pointIJK) => {
37704
+ let worldPoint = pointLPS;
37705
+ if (!worldPoint && pointIJK && options.segmentationImageData) {
37706
+ worldPoint = transformIndexToWorld(options.segmentationImageData, pointIJK);
37707
+ }
37708
+ if (!worldPoint) {
37709
+ return false;
37710
+ }
37711
+ if (strokePredicate?.(worldPoint)) {
37712
+ return true;
37713
+ }
37467
37714
  const pointVec = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.create */ .eR.create();
37468
- gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.subtract */ .eR.subtract(pointVec, pointLPS, center);
37715
+ gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.subtract */ .eR.subtract(pointVec, worldPoint, center);
37469
37716
  const distToPlane = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.dot */ .eR.dot(pointVec, normal);
37470
37717
  const proj = gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.create */ .eR.create();
37471
37718
  gl_matrix__WEBPACK_IMPORTED_MODULE_0__/* .vec3.scaleAndAdd */ .eR.scaleAndAdd(proj, pointVec, normal, -distToPlane);
@@ -44223,7 +44223,7 @@ function toLowHighRange(windowWidth, windowCenter, voiLUTFunction = _enums_VOILU
44223
44223
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
44224
44224
  /* harmony export */ r: () => (/* binding */ version)
44225
44225
  /* harmony export */ });
44226
- const version = '4.3.14';
44226
+ const version = '4.5.3';
44227
44227
 
44228
44228
 
44229
44229
  /***/ }),
@@ -48335,8 +48335,15 @@ function metaDataProvider_metaDataProvider(type, imageId) {
48335
48335
  return getTransferSyntax(imageId, metaData);
48336
48336
  }
48337
48337
  if (type === MetadataModules.PET_SERIES) {
48338
+ let correctedImageData = metaData['00280051'];
48339
+ let correctedImage = metaData_getValue(metaData['00280051']);
48340
+ if (correctedImageData &&
48341
+ correctedImageData.Value &&
48342
+ Array.isArray(correctedImageData.Value)) {
48343
+ correctedImage = correctedImageData.Value.join('\\');
48344
+ }
48338
48345
  return {
48339
- correctedImage: metaData_getValue(metaData['00280051']),
48346
+ correctedImage,
48340
48347
  units: metaData_getValue(metaData['00541001']),
48341
48348
  decayCorrection: metaData_getValue(metaData['00541102']),
48342
48349
  };
@@ -135421,7 +135428,7 @@ const detectionOptions = {
135421
135428
  }
135422
135429
  });
135423
135430
  ;// ../../i18n/package.json
135424
- const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"3.12.0-beta.51"}');
135431
+ const package_namespaceObject = /*#__PURE__*/JSON.parse('{"rE":"3.12.0-beta.53"}');
135425
135432
  ;// ../../i18n/src/utils.js
135426
135433
  const languagesMap = {
135427
135434
  ar: 'Arabic',
@@ -386133,7 +386140,7 @@ function __rewriteRelativeImportExtension(path, preserveJsx) {
386133
386140
  /******/ // This function allow to reference async chunks
386134
386141
  /******/ __webpack_require__.u = (chunkId) => {
386135
386142
  /******/ // return url for filenames based on template
386136
- /******/ return "" + ({"572":"polySeg","2007":"interpolation","3054":"histogram-worker","3694":"compute"}[chunkId] || chunkId) + ".bundle." + {"85":"72ca9e62d8bcef003e42","147":"30b16832e09898deaf32","213":"844009eea53b5e7b71bf","319":"fc959064ddf2f6978b54","414":"113bc87916aa22d4cccc","572":"1ab7dd310985596b4098","732":"6978ac30a1e36abf06db","810":"04da3bf08f7df9589091","934":"d028841173058da9793c","1447":"f58681b8a8c6746c3256","1459":"26bd313381a55ecd59f7","1604":"813a49f279de52122def","1807":"9609cc9a5502d3c5c4ba","1919":"b1390ab4c85106c069e2","1927":"8941122be98d6aea153c","2007":"f58dd6d3d25dd22cfefd","2108":"e84aa8d858d8c4f2413e","2243":"92d2afd8756bda5e2ca3","2345":"839224623fb00f805981","2424":"d3c0fa7cda17e7a40fc9","2518":"fbbfa351f8e8c446599b","2701":"3c34bd7d28cb2d095a5c","2974":"ec95e58b346dbe30a362","3054":"b7bb02c6cd9273c422f5","3409":"c756a8ccaa7faa1d9235","3694":"f176731b761d630f358c","4019":"c5b332003e3cd00868ce","4113":"31fe4e2a2956ce6c5d2d","4202":"1cef28d8aec1155d35d1","4759":"8686abdd7bcf4aa7d107","5261":"6e1a017f8f1027557f5b","5349":"44217fe4d4ce9a3a9be3","5457":"1d6b074af89e69a54dde","5485":"ae87fca794a3248efdaa","5674":"24de237ef15879b25714","5802":"48b958ebd8d250156814","6027":"2b0e82eb38b6a028a255","6201":"0d8aa2fba299a8cc92a9","6939":"41fbdef87597b5172ec6","6991":"d0c8eb5e352477b0d42e","7159":"122cd4e6d8fd1287d07f","7197":"7cc9bb98050e4ae0294d","7412":"80f68b38041e891c64a8","7431":"f6ee76ae243ffe1c811a","7639":"fb8c61c6588c528d336f","8094":"5c44190a325ac23e3e5c","8402":"edb924cd47cd168f621c","8558":"9ee1f10769f9cac46bb3","8740":"39b40ee21a873e824ce8","8815":"c5c714fe2a3ff31aacad","9862":"1133b0f6bd2b035c85bd"}[chunkId] + ".js";
386143
+ /******/ return "" + ({"572":"polySeg","2007":"interpolation","3054":"histogram-worker","3694":"compute"}[chunkId] || chunkId) + ".bundle." + {"85":"cc4e5b3a9acca13007a5","147":"30b16832e09898deaf32","213":"d174db20fab2fdfed4f8","319":"fc959064ddf2f6978b54","414":"6f9b2a00f06626f05c27","572":"ba4364ed21d03c7a9df1","732":"6978ac30a1e36abf06db","810":"4f3a7ca74971239c1498","934":"cce2fe2754a928b8cd6d","1447":"b15051ce6a9bcec1ac6a","1459":"d4ef552f8dec2c8b15fc","1604":"ba4b8c8f64d258a40850","1807":"ddc2996069271a8652a5","1919":"7c1b4166b95e7dffe973","1927":"8941122be98d6aea153c","2007":"f58dd6d3d25dd22cfefd","2108":"e84aa8d858d8c4f2413e","2243":"727d1f866dda05467f19","2345":"839224623fb00f805981","2424":"132b9ea62e24599d01f7","2518":"57c229a14e22d23db384","2701":"3c34bd7d28cb2d095a5c","2974":"a90a9df917b90bc02c69","3054":"b7bb02c6cd9273c422f5","3409":"257f7edb1585ea06ba3c","3694":"afdef7ac00941da4dd32","4019":"13e7f662a9e489b74a27","4113":"85916db39290d43aa53b","4202":"1cef28d8aec1155d35d1","4759":"c3bfca952eea20a0d6f9","5261":"6e1a017f8f1027557f5b","5349":"44217fe4d4ce9a3a9be3","5457":"51285f55e1389d654257","5485":"371660cf6663e90cd622","5674":"8c34228471ff9e53b8c3","5802":"48b958ebd8d250156814","6027":"f220a72a6e4232c38a87","6201":"40aca7bfb7513a6ebda7","6939":"41fbdef87597b5172ec6","6991":"48929c562b9d3012e468","7159":"122cd4e6d8fd1287d07f","7197":"52da128e3f00a7ad7902","7412":"c7950ea929406915ba33","7431":"f6ee76ae243ffe1c811a","7639":"1226ddb2bc46f5cae750","8094":"5c44190a325ac23e3e5c","8402":"edb924cd47cd168f621c","8558":"9f596952dd6a5fa6f629","8740":"39b40ee21a873e824ce8","8815":"525c88f93f5bd57e4980","9862":"1133b0f6bd2b035c85bd"}[chunkId] + ".js";
386137
386144
  /******/ };
386138
386145
  /******/ })();
386139
386146
  /******/